From 51044343d06894fda47846a8e6006d7f0e458c80 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 13:49:35 +0800 Subject: [PATCH 01/74] travis build test --- .gitignore | 2 + .travis.yml | 65 +++++++++++++++++ {Marlin => lib/Marlin}/Conditionals.h | 0 {Marlin => lib/Marlin}/Conditionals_LCD.h | 0 {Marlin => lib/Marlin}/Conditionals_post.h | 0 {Marlin => lib/Marlin}/Configuration.h | 0 {Marlin => lib/Marlin}/Configuration_adv.h | 0 {Marlin => lib/Marlin}/GroveColorSensor.cpp | 0 {Marlin => lib/Marlin}/GroveColorSensor.h | 0 {Marlin => lib/Marlin}/GroveRegisters.h | 0 {Marlin => lib/Marlin}/M100_Free_Mem_Chk.cpp | 0 {Marlin => lib/Marlin}/Makefile | 0 {Marlin => lib/Marlin}/Marlin.h | 0 {Marlin => lib/Marlin}/Marlin.ino | 0 {Marlin => lib/Marlin}/MarlinConfig.h | 0 {Marlin => lib/Marlin}/MarlinSerial.cpp | 0 {Marlin => lib/Marlin}/MarlinSerial.h | 0 {Marlin => lib/Marlin}/Marlin_main.cpp | 0 {Marlin => lib/Marlin}/SanityCheck.h | 0 {Marlin => lib/Marlin}/Sd2Card.cpp | 0 {Marlin => lib/Marlin}/Sd2Card.h | 0 {Marlin => lib/Marlin}/SdBaseFile.cpp | 0 {Marlin => lib/Marlin}/SdBaseFile.h | 0 {Marlin => lib/Marlin}/SdFatConfig.h | 0 {Marlin => lib/Marlin}/SdFatStructs.h | 0 {Marlin => lib/Marlin}/SdFatUtil.cpp | 0 {Marlin => lib/Marlin}/SdFatUtil.h | 0 {Marlin => lib/Marlin}/SdFile.cpp | 0 {Marlin => lib/Marlin}/SdFile.h | 0 {Marlin => lib/Marlin}/SdInfo.h | 0 {Marlin => lib/Marlin}/SdVolume.cpp | 0 {Marlin => lib/Marlin}/SdVolume.h | 0 {Marlin => lib/Marlin}/Ultrasonic.cpp | 0 {Marlin => lib/Marlin}/Ultrasonic.h | 0 {Marlin => lib/Marlin}/Version.h | 0 {Marlin => lib/Marlin}/X_IIC.cpp | 0 {Marlin => lib/Marlin}/X_IIC.h | 0 {Marlin => lib/Marlin}/Y_IIC.cpp | 0 {Marlin => lib/Marlin}/Y_IIC.h | 0 {Marlin => lib/Marlin}/Z_IIC.cpp | 0 {Marlin => lib/Marlin}/Z_IIC.h | 0 {Marlin => lib/Marlin}/blinkm.cpp | 0 {Marlin => lib/Marlin}/blinkm.h | 0 {Marlin => lib/Marlin}/boards.h | 0 {Marlin => lib/Marlin}/buzzer.h | 0 {Marlin => lib/Marlin}/cardreader.cpp | 0 {Marlin => lib/Marlin}/cardreader.h | 0 {Marlin => lib/Marlin}/circularqueue.h | 0 .../Marlin}/configuration_store.cpp | 0 {Marlin => lib/Marlin}/configuration_store.h | 0 {Marlin => lib/Marlin}/dac_mcp4728.cpp | 0 {Marlin => lib/Marlin}/dac_mcp4728.h | 0 {Marlin => lib/Marlin}/digipot_mcp4451.cpp | 0 {Marlin => lib/Marlin}/dogm_bitmaps.h | 0 .../Marlin}/dogm_font_data_6x9_marlin.h | 0 .../Marlin}/dogm_font_data_HD44780_C.h | 0 .../Marlin}/dogm_font_data_HD44780_J.h | 0 .../Marlin}/dogm_font_data_HD44780_W.h | 0 .../Marlin}/dogm_font_data_ISO10646_1.h | 0 .../dogm_font_data_ISO10646_5_Cyrillic.h | 0 .../Marlin}/dogm_font_data_ISO10646_CN.h | 0 .../Marlin}/dogm_font_data_ISO10646_Greek.h | 0 .../Marlin}/dogm_font_data_ISO10646_Kana.h | 0 .../Marlin}/dogm_font_data_Marlin_symbols.h | 0 {Marlin => lib/Marlin}/duration_t.h | 0 {Marlin => lib/Marlin}/endstops.cpp | 0 {Marlin => lib/Marlin}/endstops.h | 0 {Marlin => lib/Marlin}/enum.h | 0 .../Cartesio/Configuration.h | 0 .../Cartesio/Configuration_adv.h | 0 .../Cartesio/_Bootscreen.h | 0 .../Felix/Configuration.h | 0 .../Felix/Configuration_adv.h | 0 .../Felix/DUAL/Configuration.h | 0 .../example_configurations/Felix/README.md | 0 .../Hephestos/Configuration.h | 0 .../Hephestos/Configuration_adv.h | 0 .../Hephestos_2/Configuration.h | 0 .../Hephestos_2/Configuration_adv.h | 0 .../Hephestos_2/README.md | 0 .../Hephestos_2/_Bootscreen.h | 0 .../K8200/Configuration.h | 0 .../K8200/Configuration_adv.h | 0 .../example_configurations/K8200/README.md | 0 .../K8400/Configuration.h | 0 .../K8400/Configuration_adv.h | 0 .../K8400/Dual-head/Configuration.h | 0 .../example_configurations/K8400/README.md | 0 .../RepRapWorld/Megatronics/Configuration.h | 0 .../RigidBot/Configuration.h | 0 .../RigidBot/Configuration_adv.h | 0 .../SCARA/Configuration.h | 0 .../SCARA/Configuration_adv.h | 0 .../Swift/Configuration.h | 0 .../Swift/Configuration_adv.h | 0 .../TAZ4/Configuration.h | 0 .../TAZ4/Configuration_adv.h | 0 .../WITBOX/Configuration.h | 0 .../WITBOX/Configuration_adv.h | 0 .../adafruit/ST7565/Configuration.h | 0 .../delta/biv2.5/Configuration.h | 0 .../delta/biv2.5/Configuration_adv.h | 0 .../delta/generic/Configuration.h | 0 .../delta/generic/Configuration_adv.h | 0 .../delta/kossel_mini/Configuration.h | 0 .../delta/kossel_mini/Configuration_adv.h | 0 .../delta/kossel_pro/Configuration.h | 0 .../delta/kossel_pro/Configuration_adv.h | 0 .../delta/kossel_pro/README.md | 0 .../delta/kossel_xl/Configuration.h | 0 .../delta/kossel_xl/Configuration_adv.h | 0 .../delta/kossel_xl/README.md | 0 .../makibox/Configuration.h | 0 .../makibox/Configuration_adv.h | 0 .../tvrrug/Round2/Configuration.h | 0 .../tvrrug/Round2/Configuration_adv.h | 0 {Marlin => lib/Marlin}/fastio.h | 0 {Marlin => lib/Marlin}/language.h | 0 {Marlin => lib/Marlin}/language_an.h | 0 {Marlin => lib/Marlin}/language_bg.h | 0 {Marlin => lib/Marlin}/language_ca.h | 0 {Marlin => lib/Marlin}/language_cn.h | 0 {Marlin => lib/Marlin}/language_cz.h | 0 {Marlin => lib/Marlin}/language_da.h | 0 {Marlin => lib/Marlin}/language_de.h | 0 {Marlin => lib/Marlin}/language_el-gr.h | 0 {Marlin => lib/Marlin}/language_el.h | 0 {Marlin => lib/Marlin}/language_en.h | 0 {Marlin => lib/Marlin}/language_es.h | 0 {Marlin => lib/Marlin}/language_eu.h | 0 {Marlin => lib/Marlin}/language_fi.h | 0 {Marlin => lib/Marlin}/language_fr.h | 0 {Marlin => lib/Marlin}/language_gl.h | 0 {Marlin => lib/Marlin}/language_hr.h | 0 {Marlin => lib/Marlin}/language_it.h | 0 {Marlin => lib/Marlin}/language_kana.h | 0 {Marlin => lib/Marlin}/language_kana_utf8.h | 0 {Marlin => lib/Marlin}/language_nl.h | 0 {Marlin => lib/Marlin}/language_pl.h | 0 {Marlin => lib/Marlin}/language_pt-br.h | 0 {Marlin => lib/Marlin}/language_pt-br_utf8.h | 0 {Marlin => lib/Marlin}/language_pt.h | 0 {Marlin => lib/Marlin}/language_pt_utf8.h | 0 {Marlin => lib/Marlin}/language_ru.h | 0 {Marlin => lib/Marlin}/language_test.h | 0 {Marlin => lib/Marlin}/macros.h | 0 {Marlin => lib/Marlin}/mesh_bed_leveling.cpp | 0 {Marlin => lib/Marlin}/mesh_bed_leveling.h | 0 {Marlin => lib/Marlin}/nozzle.h | 0 {Marlin => lib/Marlin}/paj7620.cpp | 0 {Marlin => lib/Marlin}/paj7620.h | 0 {Marlin => lib/Marlin}/pins.h | 0 {Marlin => lib/Marlin}/pins_3DRAG.h | 0 {Marlin => lib/Marlin}/pins_5DPRINT.h | 0 {Marlin => lib/Marlin}/pins_99.h | 0 {Marlin => lib/Marlin}/pins_A4JP.h | 0 {Marlin => lib/Marlin}/pins_AZTEEG_X1.h | 0 {Marlin => lib/Marlin}/pins_AZTEEG_X3.h | 0 {Marlin => lib/Marlin}/pins_AZTEEG_X3_PRO.h | 0 {Marlin => lib/Marlin}/pins_BAM_DICE_DUE.h | 0 {Marlin => lib/Marlin}/pins_BQ_ZUM_MEGA_3D.h | 0 {Marlin => lib/Marlin}/pins_BRAINWAVE.h | 0 {Marlin => lib/Marlin}/pins_BRAINWAVE_PRO.h | 0 {Marlin => lib/Marlin}/pins_CHEAPTRONIC.h | 0 {Marlin => lib/Marlin}/pins_CNCONTROLS_11.h | 0 {Marlin => lib/Marlin}/pins_CNCONTROLS_12.h | 0 {Marlin => lib/Marlin}/pins_ELEFU_3.h | 0 {Marlin => lib/Marlin}/pins_FELIX2.h | 0 {Marlin => lib/Marlin}/pins_GEN3_MONOLITHIC.h | 0 {Marlin => lib/Marlin}/pins_GEN3_PLUS.h | 0 {Marlin => lib/Marlin}/pins_GEN6.h | 0 {Marlin => lib/Marlin}/pins_GEN6_DELUXE.h | 0 {Marlin => lib/Marlin}/pins_GEN7_12.h | 0 {Marlin => lib/Marlin}/pins_GEN7_13.h | 0 {Marlin => lib/Marlin}/pins_GEN7_14.h | 0 {Marlin => lib/Marlin}/pins_GEN7_CUSTOM.h | 0 {Marlin => lib/Marlin}/pins_K8200.h | 0 {Marlin => lib/Marlin}/pins_K8400.h | 0 {Marlin => lib/Marlin}/pins_LEAPFROG.h | 0 {Marlin => lib/Marlin}/pins_MEGACONTROLLER.h | 0 {Marlin => lib/Marlin}/pins_MEGATRONICS.h | 0 {Marlin => lib/Marlin}/pins_MEGATRONICS_2.h | 0 {Marlin => lib/Marlin}/pins_MEGATRONICS_3.h | 0 {Marlin => lib/Marlin}/pins_MELZI.h | 0 {Marlin => lib/Marlin}/pins_MELZI_MAKR3D.h | 0 {Marlin => lib/Marlin}/pins_MINIRAMBO.h | 0 {Marlin => lib/Marlin}/pins_MINITRONICS.h | 0 {Marlin => lib/Marlin}/pins_MKS_13.h | 0 {Marlin => lib/Marlin}/pins_MKS_BASE.h | 0 {Marlin => lib/Marlin}/pins_OMCA.h | 0 {Marlin => lib/Marlin}/pins_OMCA_A.h | 0 {Marlin => lib/Marlin}/pins_PRINTRBOARD.h | 0 .../Marlin}/pins_PRINTRBOARD_REVF.h | 0 {Marlin => lib/Marlin}/pins_RAMBO.h | 0 {Marlin => lib/Marlin}/pins_RAMPS.h | 0 {Marlin => lib/Marlin}/pins_RAMPS_13.h | 0 {Marlin => lib/Marlin}/pins_RAMPS_OLD.h | 0 {Marlin => lib/Marlin}/pins_RIGIDBOARD.h | 0 {Marlin => lib/Marlin}/pins_RIGIDBOARD_V2.h | 0 {Marlin => lib/Marlin}/pins_RUMBA.h | 0 {Marlin => lib/Marlin}/pins_SAINSMART_2IN1.h | 0 {Marlin => lib/Marlin}/pins_SANGUINOLOLU_11.h | 0 {Marlin => lib/Marlin}/pins_SANGUINOLOLU_12.h | 0 {Marlin => lib/Marlin}/pins_SAV_MKI.h | 0 {Marlin => lib/Marlin}/pins_SETHI.h | 0 {Marlin => lib/Marlin}/pins_STB_11.h | 0 {Marlin => lib/Marlin}/pins_Swift.h | 0 {Marlin => lib/Marlin}/pins_TEENSY2.h | 0 {Marlin => lib/Marlin}/pins_TEENSYLU.h | 0 {Marlin => lib/Marlin}/pins_ULTIMAIN_2.h | 0 {Marlin => lib/Marlin}/pins_ULTIMAKER.h | 0 {Marlin => lib/Marlin}/pins_ULTIMAKER_OLD.h | 0 {Marlin => lib/Marlin}/planner.cpp | 0 {Marlin => lib/Marlin}/planner.h | 0 {Marlin => lib/Marlin}/planner_bezier.cpp | 0 {Marlin => lib/Marlin}/planner_bezier.h | 0 {Marlin => lib/Marlin}/point_t.h | 0 {Marlin => lib/Marlin}/printcounter.cpp | 0 {Marlin => lib/Marlin}/printcounter.h | 0 {Marlin => lib/Marlin}/qr_solve.cpp | 0 {Marlin => lib/Marlin}/qr_solve.h | 0 {Marlin => lib/Marlin}/servo.cpp | 0 {Marlin => lib/Marlin}/servo.h | 0 {Marlin => lib/Marlin}/speed_lookuptable.h | 0 {Marlin => lib/Marlin}/stepper.cpp | 0 {Marlin => lib/Marlin}/stepper.h | 0 {Marlin => lib/Marlin}/stepper_dac.cpp | 0 {Marlin => lib/Marlin}/stepper_dac.h | 0 .../Marlin}/stepper_indirection.cpp | 0 {Marlin => lib/Marlin}/stepper_indirection.h | 0 {Marlin => lib/Marlin}/stopwatch.cpp | 0 {Marlin => lib/Marlin}/stopwatch.h | 0 {Marlin => lib/Marlin}/temperature.cpp | 0 {Marlin => lib/Marlin}/temperature.h | 0 {Marlin => lib/Marlin}/thermistornames.h | 0 {Marlin => lib/Marlin}/thermistortables.h | 0 {Marlin => lib/Marlin}/twibus.cpp | 0 {Marlin => lib/Marlin}/twibus.h | 0 {Marlin => lib/Marlin}/types.h | 0 {Marlin => lib/Marlin}/uArmAPI.cpp | 0 {Marlin => lib/Marlin}/uArmAPI.h | 0 {Marlin => lib/Marlin}/uArmButton.cpp | 0 {Marlin => lib/Marlin}/uArmButton.h | 0 {Marlin => lib/Marlin}/uArmBuzzer.cpp | 0 {Marlin => lib/Marlin}/uArmBuzzer.h | 0 {Marlin => lib/Marlin}/uArmCalibration.cpp | 0 {Marlin => lib/Marlin}/uArmCalibration.h | 0 {Marlin => lib/Marlin}/uArmDebug.cpp | 0 {Marlin => lib/Marlin}/uArmDebug.h | 0 {Marlin => lib/Marlin}/uArmGrove.cpp | 0 {Marlin => lib/Marlin}/uArmGrove.h | 0 {Marlin => lib/Marlin}/uArmIIC.cpp | 0 {Marlin => lib/Marlin}/uArmIIC.h | 0 {Marlin => lib/Marlin}/uArmLed.cpp | 0 {Marlin => lib/Marlin}/uArmLed.h | 0 {Marlin => lib/Marlin}/uArmParams.h | 0 {Marlin => lib/Marlin}/uArmPump.cpp | 0 {Marlin => lib/Marlin}/uArmPump.h | 0 {Marlin => lib/Marlin}/uArmRecorder.cpp | 0 {Marlin => lib/Marlin}/uArmRecorder.h | 0 {Marlin => lib/Marlin}/uArmReportService.cpp | 0 {Marlin => lib/Marlin}/uArmReportService.h | 0 {Marlin => lib/Marlin}/uArmSerial.cpp | 0 {Marlin => lib/Marlin}/uArmSerial.h | 0 {Marlin => lib/Marlin}/uArmService.cpp | 0 {Marlin => lib/Marlin}/uArmService.h | 0 {Marlin => lib/Marlin}/uArmSwift.cpp | 0 {Marlin => lib/Marlin}/uArmSwift.h | 0 {Marlin => lib/Marlin}/uArmUtils.cpp | 0 {Marlin => lib/Marlin}/uArmUtils.h | 0 {Marlin => lib/Marlin}/ultralcd.cpp | 0 {Marlin => lib/Marlin}/ultralcd.h | 0 {Marlin => lib/Marlin}/ultralcd_impl_DOGM.h | 0 .../Marlin}/ultralcd_impl_HD44780.h | 0 .../Marlin}/ultralcd_st7920_u8glib_rrd.h | 0 {Marlin => lib/Marlin}/utf_mapper.h | 0 {Marlin => lib/Marlin}/utility.cpp | 0 {Marlin => lib/Marlin}/utility.h | 0 {Marlin => lib/Marlin}/vector_3.cpp | 0 {Marlin => lib/Marlin}/vector_3.h | 0 {Marlin => lib/Marlin}/watchdog.cpp | 0 {Marlin => lib/Marlin}/watchdog.h | 0 lib/readme.txt | 36 +++++++++ platformio.ini | 14 ++++ src/Marlin.ino | 73 +++++++++++++++++++ 285 files changed, 190 insertions(+) create mode 100644 .travis.yml rename {Marlin => lib/Marlin}/Conditionals.h (100%) rename {Marlin => lib/Marlin}/Conditionals_LCD.h (100%) rename {Marlin => lib/Marlin}/Conditionals_post.h (100%) rename {Marlin => lib/Marlin}/Configuration.h (100%) rename {Marlin => lib/Marlin}/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/GroveColorSensor.cpp (100%) rename {Marlin => lib/Marlin}/GroveColorSensor.h (100%) rename {Marlin => lib/Marlin}/GroveRegisters.h (100%) rename {Marlin => lib/Marlin}/M100_Free_Mem_Chk.cpp (100%) rename {Marlin => lib/Marlin}/Makefile (100%) rename {Marlin => lib/Marlin}/Marlin.h (100%) rename {Marlin => lib/Marlin}/Marlin.ino (100%) rename {Marlin => lib/Marlin}/MarlinConfig.h (100%) rename {Marlin => lib/Marlin}/MarlinSerial.cpp (100%) rename {Marlin => lib/Marlin}/MarlinSerial.h (100%) rename {Marlin => lib/Marlin}/Marlin_main.cpp (100%) rename {Marlin => lib/Marlin}/SanityCheck.h (100%) rename {Marlin => lib/Marlin}/Sd2Card.cpp (100%) rename {Marlin => lib/Marlin}/Sd2Card.h (100%) rename {Marlin => lib/Marlin}/SdBaseFile.cpp (100%) rename {Marlin => lib/Marlin}/SdBaseFile.h (100%) rename {Marlin => lib/Marlin}/SdFatConfig.h (100%) rename {Marlin => lib/Marlin}/SdFatStructs.h (100%) rename {Marlin => lib/Marlin}/SdFatUtil.cpp (100%) rename {Marlin => lib/Marlin}/SdFatUtil.h (100%) rename {Marlin => lib/Marlin}/SdFile.cpp (100%) rename {Marlin => lib/Marlin}/SdFile.h (100%) rename {Marlin => lib/Marlin}/SdInfo.h (100%) rename {Marlin => lib/Marlin}/SdVolume.cpp (100%) rename {Marlin => lib/Marlin}/SdVolume.h (100%) rename {Marlin => lib/Marlin}/Ultrasonic.cpp (100%) rename {Marlin => lib/Marlin}/Ultrasonic.h (100%) rename {Marlin => lib/Marlin}/Version.h (100%) rename {Marlin => lib/Marlin}/X_IIC.cpp (100%) rename {Marlin => lib/Marlin}/X_IIC.h (100%) rename {Marlin => lib/Marlin}/Y_IIC.cpp (100%) rename {Marlin => lib/Marlin}/Y_IIC.h (100%) rename {Marlin => lib/Marlin}/Z_IIC.cpp (100%) rename {Marlin => lib/Marlin}/Z_IIC.h (100%) rename {Marlin => lib/Marlin}/blinkm.cpp (100%) rename {Marlin => lib/Marlin}/blinkm.h (100%) rename {Marlin => lib/Marlin}/boards.h (100%) rename {Marlin => lib/Marlin}/buzzer.h (100%) rename {Marlin => lib/Marlin}/cardreader.cpp (100%) rename {Marlin => lib/Marlin}/cardreader.h (100%) rename {Marlin => lib/Marlin}/circularqueue.h (100%) rename {Marlin => lib/Marlin}/configuration_store.cpp (100%) rename {Marlin => lib/Marlin}/configuration_store.h (100%) rename {Marlin => lib/Marlin}/dac_mcp4728.cpp (100%) rename {Marlin => lib/Marlin}/dac_mcp4728.h (100%) rename {Marlin => lib/Marlin}/digipot_mcp4451.cpp (100%) rename {Marlin => lib/Marlin}/dogm_bitmaps.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_6x9_marlin.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_HD44780_C.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_HD44780_J.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_HD44780_W.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_ISO10646_1.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_ISO10646_5_Cyrillic.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_ISO10646_CN.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_ISO10646_Greek.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_ISO10646_Kana.h (100%) rename {Marlin => lib/Marlin}/dogm_font_data_Marlin_symbols.h (100%) rename {Marlin => lib/Marlin}/duration_t.h (100%) rename {Marlin => lib/Marlin}/endstops.cpp (100%) rename {Marlin => lib/Marlin}/endstops.h (100%) rename {Marlin => lib/Marlin}/enum.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Cartesio/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Cartesio/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Cartesio/_Bootscreen.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Felix/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Felix/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Felix/DUAL/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Felix/README.md (100%) rename {Marlin => lib/Marlin}/example_configurations/Hephestos/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Hephestos/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Hephestos_2/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Hephestos_2/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Hephestos_2/README.md (100%) rename {Marlin => lib/Marlin}/example_configurations/Hephestos_2/_Bootscreen.h (100%) rename {Marlin => lib/Marlin}/example_configurations/K8200/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/K8200/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/K8200/README.md (100%) rename {Marlin => lib/Marlin}/example_configurations/K8400/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/K8400/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/K8400/Dual-head/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/K8400/README.md (100%) rename {Marlin => lib/Marlin}/example_configurations/RepRapWorld/Megatronics/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/RigidBot/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/RigidBot/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/SCARA/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/SCARA/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Swift/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/Swift/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/TAZ4/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/TAZ4/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/WITBOX/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/WITBOX/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/adafruit/ST7565/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/biv2.5/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/biv2.5/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/generic/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/generic/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/kossel_mini/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/kossel_mini/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/kossel_pro/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/kossel_pro/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/kossel_pro/README.md (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/kossel_xl/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/kossel_xl/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/delta/kossel_xl/README.md (100%) rename {Marlin => lib/Marlin}/example_configurations/makibox/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/makibox/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/example_configurations/tvrrug/Round2/Configuration.h (100%) rename {Marlin => lib/Marlin}/example_configurations/tvrrug/Round2/Configuration_adv.h (100%) rename {Marlin => lib/Marlin}/fastio.h (100%) rename {Marlin => lib/Marlin}/language.h (100%) rename {Marlin => lib/Marlin}/language_an.h (100%) rename {Marlin => lib/Marlin}/language_bg.h (100%) rename {Marlin => lib/Marlin}/language_ca.h (100%) rename {Marlin => lib/Marlin}/language_cn.h (100%) rename {Marlin => lib/Marlin}/language_cz.h (100%) rename {Marlin => lib/Marlin}/language_da.h (100%) rename {Marlin => lib/Marlin}/language_de.h (100%) rename {Marlin => lib/Marlin}/language_el-gr.h (100%) rename {Marlin => lib/Marlin}/language_el.h (100%) rename {Marlin => lib/Marlin}/language_en.h (100%) rename {Marlin => lib/Marlin}/language_es.h (100%) rename {Marlin => lib/Marlin}/language_eu.h (100%) rename {Marlin => lib/Marlin}/language_fi.h (100%) rename {Marlin => lib/Marlin}/language_fr.h (100%) rename {Marlin => lib/Marlin}/language_gl.h (100%) rename {Marlin => lib/Marlin}/language_hr.h (100%) rename {Marlin => lib/Marlin}/language_it.h (100%) rename {Marlin => lib/Marlin}/language_kana.h (100%) rename {Marlin => lib/Marlin}/language_kana_utf8.h (100%) rename {Marlin => lib/Marlin}/language_nl.h (100%) rename {Marlin => lib/Marlin}/language_pl.h (100%) rename {Marlin => lib/Marlin}/language_pt-br.h (100%) rename {Marlin => lib/Marlin}/language_pt-br_utf8.h (100%) rename {Marlin => lib/Marlin}/language_pt.h (100%) rename {Marlin => lib/Marlin}/language_pt_utf8.h (100%) rename {Marlin => lib/Marlin}/language_ru.h (100%) rename {Marlin => lib/Marlin}/language_test.h (100%) rename {Marlin => lib/Marlin}/macros.h (100%) rename {Marlin => lib/Marlin}/mesh_bed_leveling.cpp (100%) rename {Marlin => lib/Marlin}/mesh_bed_leveling.h (100%) rename {Marlin => lib/Marlin}/nozzle.h (100%) rename {Marlin => lib/Marlin}/paj7620.cpp (100%) rename {Marlin => lib/Marlin}/paj7620.h (100%) rename {Marlin => lib/Marlin}/pins.h (100%) rename {Marlin => lib/Marlin}/pins_3DRAG.h (100%) rename {Marlin => lib/Marlin}/pins_5DPRINT.h (100%) rename {Marlin => lib/Marlin}/pins_99.h (100%) rename {Marlin => lib/Marlin}/pins_A4JP.h (100%) rename {Marlin => lib/Marlin}/pins_AZTEEG_X1.h (100%) rename {Marlin => lib/Marlin}/pins_AZTEEG_X3.h (100%) rename {Marlin => lib/Marlin}/pins_AZTEEG_X3_PRO.h (100%) rename {Marlin => lib/Marlin}/pins_BAM_DICE_DUE.h (100%) rename {Marlin => lib/Marlin}/pins_BQ_ZUM_MEGA_3D.h (100%) rename {Marlin => lib/Marlin}/pins_BRAINWAVE.h (100%) rename {Marlin => lib/Marlin}/pins_BRAINWAVE_PRO.h (100%) rename {Marlin => lib/Marlin}/pins_CHEAPTRONIC.h (100%) rename {Marlin => lib/Marlin}/pins_CNCONTROLS_11.h (100%) rename {Marlin => lib/Marlin}/pins_CNCONTROLS_12.h (100%) rename {Marlin => lib/Marlin}/pins_ELEFU_3.h (100%) rename {Marlin => lib/Marlin}/pins_FELIX2.h (100%) rename {Marlin => lib/Marlin}/pins_GEN3_MONOLITHIC.h (100%) rename {Marlin => lib/Marlin}/pins_GEN3_PLUS.h (100%) rename {Marlin => lib/Marlin}/pins_GEN6.h (100%) rename {Marlin => lib/Marlin}/pins_GEN6_DELUXE.h (100%) rename {Marlin => lib/Marlin}/pins_GEN7_12.h (100%) rename {Marlin => lib/Marlin}/pins_GEN7_13.h (100%) rename {Marlin => lib/Marlin}/pins_GEN7_14.h (100%) rename {Marlin => lib/Marlin}/pins_GEN7_CUSTOM.h (100%) rename {Marlin => lib/Marlin}/pins_K8200.h (100%) rename {Marlin => lib/Marlin}/pins_K8400.h (100%) rename {Marlin => lib/Marlin}/pins_LEAPFROG.h (100%) rename {Marlin => lib/Marlin}/pins_MEGACONTROLLER.h (100%) rename {Marlin => lib/Marlin}/pins_MEGATRONICS.h (100%) rename {Marlin => lib/Marlin}/pins_MEGATRONICS_2.h (100%) rename {Marlin => lib/Marlin}/pins_MEGATRONICS_3.h (100%) rename {Marlin => lib/Marlin}/pins_MELZI.h (100%) rename {Marlin => lib/Marlin}/pins_MELZI_MAKR3D.h (100%) rename {Marlin => lib/Marlin}/pins_MINIRAMBO.h (100%) rename {Marlin => lib/Marlin}/pins_MINITRONICS.h (100%) rename {Marlin => lib/Marlin}/pins_MKS_13.h (100%) rename {Marlin => lib/Marlin}/pins_MKS_BASE.h (100%) rename {Marlin => lib/Marlin}/pins_OMCA.h (100%) rename {Marlin => lib/Marlin}/pins_OMCA_A.h (100%) rename {Marlin => lib/Marlin}/pins_PRINTRBOARD.h (100%) rename {Marlin => lib/Marlin}/pins_PRINTRBOARD_REVF.h (100%) rename {Marlin => lib/Marlin}/pins_RAMBO.h (100%) rename {Marlin => lib/Marlin}/pins_RAMPS.h (100%) rename {Marlin => lib/Marlin}/pins_RAMPS_13.h (100%) rename {Marlin => lib/Marlin}/pins_RAMPS_OLD.h (100%) rename {Marlin => lib/Marlin}/pins_RIGIDBOARD.h (100%) rename {Marlin => lib/Marlin}/pins_RIGIDBOARD_V2.h (100%) rename {Marlin => lib/Marlin}/pins_RUMBA.h (100%) rename {Marlin => lib/Marlin}/pins_SAINSMART_2IN1.h (100%) rename {Marlin => lib/Marlin}/pins_SANGUINOLOLU_11.h (100%) rename {Marlin => lib/Marlin}/pins_SANGUINOLOLU_12.h (100%) rename {Marlin => lib/Marlin}/pins_SAV_MKI.h (100%) rename {Marlin => lib/Marlin}/pins_SETHI.h (100%) rename {Marlin => lib/Marlin}/pins_STB_11.h (100%) rename {Marlin => lib/Marlin}/pins_Swift.h (100%) rename {Marlin => lib/Marlin}/pins_TEENSY2.h (100%) rename {Marlin => lib/Marlin}/pins_TEENSYLU.h (100%) rename {Marlin => lib/Marlin}/pins_ULTIMAIN_2.h (100%) rename {Marlin => lib/Marlin}/pins_ULTIMAKER.h (100%) rename {Marlin => lib/Marlin}/pins_ULTIMAKER_OLD.h (100%) rename {Marlin => lib/Marlin}/planner.cpp (100%) rename {Marlin => lib/Marlin}/planner.h (100%) rename {Marlin => lib/Marlin}/planner_bezier.cpp (100%) rename {Marlin => lib/Marlin}/planner_bezier.h (100%) rename {Marlin => lib/Marlin}/point_t.h (100%) rename {Marlin => lib/Marlin}/printcounter.cpp (100%) rename {Marlin => lib/Marlin}/printcounter.h (100%) rename {Marlin => lib/Marlin}/qr_solve.cpp (100%) rename {Marlin => lib/Marlin}/qr_solve.h (100%) rename {Marlin => lib/Marlin}/servo.cpp (100%) rename {Marlin => lib/Marlin}/servo.h (100%) rename {Marlin => lib/Marlin}/speed_lookuptable.h (100%) rename {Marlin => lib/Marlin}/stepper.cpp (100%) rename {Marlin => lib/Marlin}/stepper.h (100%) rename {Marlin => lib/Marlin}/stepper_dac.cpp (100%) rename {Marlin => lib/Marlin}/stepper_dac.h (100%) rename {Marlin => lib/Marlin}/stepper_indirection.cpp (100%) rename {Marlin => lib/Marlin}/stepper_indirection.h (100%) rename {Marlin => lib/Marlin}/stopwatch.cpp (100%) rename {Marlin => lib/Marlin}/stopwatch.h (100%) rename {Marlin => lib/Marlin}/temperature.cpp (100%) rename {Marlin => lib/Marlin}/temperature.h (100%) rename {Marlin => lib/Marlin}/thermistornames.h (100%) rename {Marlin => lib/Marlin}/thermistortables.h (100%) rename {Marlin => lib/Marlin}/twibus.cpp (100%) rename {Marlin => lib/Marlin}/twibus.h (100%) rename {Marlin => lib/Marlin}/types.h (100%) rename {Marlin => lib/Marlin}/uArmAPI.cpp (100%) rename {Marlin => lib/Marlin}/uArmAPI.h (100%) rename {Marlin => lib/Marlin}/uArmButton.cpp (100%) rename {Marlin => lib/Marlin}/uArmButton.h (100%) rename {Marlin => lib/Marlin}/uArmBuzzer.cpp (100%) rename {Marlin => lib/Marlin}/uArmBuzzer.h (100%) rename {Marlin => lib/Marlin}/uArmCalibration.cpp (100%) rename {Marlin => lib/Marlin}/uArmCalibration.h (100%) rename {Marlin => lib/Marlin}/uArmDebug.cpp (100%) rename {Marlin => lib/Marlin}/uArmDebug.h (100%) rename {Marlin => lib/Marlin}/uArmGrove.cpp (100%) rename {Marlin => lib/Marlin}/uArmGrove.h (100%) rename {Marlin => lib/Marlin}/uArmIIC.cpp (100%) rename {Marlin => lib/Marlin}/uArmIIC.h (100%) rename {Marlin => lib/Marlin}/uArmLed.cpp (100%) rename {Marlin => lib/Marlin}/uArmLed.h (100%) rename {Marlin => lib/Marlin}/uArmParams.h (100%) rename {Marlin => lib/Marlin}/uArmPump.cpp (100%) rename {Marlin => lib/Marlin}/uArmPump.h (100%) rename {Marlin => lib/Marlin}/uArmRecorder.cpp (100%) rename {Marlin => lib/Marlin}/uArmRecorder.h (100%) rename {Marlin => lib/Marlin}/uArmReportService.cpp (100%) rename {Marlin => lib/Marlin}/uArmReportService.h (100%) rename {Marlin => lib/Marlin}/uArmSerial.cpp (100%) rename {Marlin => lib/Marlin}/uArmSerial.h (100%) rename {Marlin => lib/Marlin}/uArmService.cpp (100%) rename {Marlin => lib/Marlin}/uArmService.h (100%) rename {Marlin => lib/Marlin}/uArmSwift.cpp (100%) rename {Marlin => lib/Marlin}/uArmSwift.h (100%) rename {Marlin => lib/Marlin}/uArmUtils.cpp (100%) rename {Marlin => lib/Marlin}/uArmUtils.h (100%) rename {Marlin => lib/Marlin}/ultralcd.cpp (100%) rename {Marlin => lib/Marlin}/ultralcd.h (100%) rename {Marlin => lib/Marlin}/ultralcd_impl_DOGM.h (100%) rename {Marlin => lib/Marlin}/ultralcd_impl_HD44780.h (100%) rename {Marlin => lib/Marlin}/ultralcd_st7920_u8glib_rrd.h (100%) rename {Marlin => lib/Marlin}/utf_mapper.h (100%) rename {Marlin => lib/Marlin}/utility.cpp (100%) rename {Marlin => lib/Marlin}/utility.h (100%) rename {Marlin => lib/Marlin}/vector_3.cpp (100%) rename {Marlin => lib/Marlin}/vector_3.h (100%) rename {Marlin => lib/Marlin}/watchdog.cpp (100%) rename {Marlin => lib/Marlin}/watchdog.h (100%) create mode 100644 lib/readme.txt create mode 100644 platformio.ini create mode 100644 src/Marlin.ino diff --git a/.gitignore b/.gitignore index 1e87012..3df3acb 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,5 @@ applet/ # Debug files *.dSYM/ *.su +.pioenvs +.piolibdeps diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..935e0ec --- /dev/null +++ b/.travis.yml @@ -0,0 +1,65 @@ +# Continuous Integration (CI) is the practice, in software +# engineering, of merging all developer working copies with a shared mainline +# several times a day < http://docs.platformio.org/page/ci/index.html > +# +# Documentation: +# +# * Travis CI Embedded Builds with PlatformIO +# < https://docs.travis-ci.com/user/integration/platformio/ > +# +# * PlatformIO integration with Travis CI +# < http://docs.platformio.org/page/ci/travis.html > +# +# * User Guide for `platformio ci` command +# < http://docs.platformio.org/page/userguide/cmd_ci.html > +# +# +# Please choice one of the following templates (proposed below) and uncomment +# it (remove "# " before each line) or use own configuration according to the +# Travis CI documentation (see above). +# + + +# +# Template #1: General project. Test it using existing `platformio.ini`. +# + +# language: python +# python: +# - "2.7" +# +# sudo: false +# cache: +# directories: +# - "~/.platformio" +# +# install: +# - pip install -U platformio +# +# script: +# - platformio run + + +# +# Template #2: The project is intended to by used as a library with examples +# + +language: python +python: + - "2.7" + +sudo: false +cache: + directories: + - "~/.platformio" + +# env: + # - PLATFORMIO_CI_SRC=path/to/test/file.c + # - PLATFORMIO_CI_SRC= + # - PLATFORMIO_CI_SRC=path/to/test/directory + +install: + - pip install -U platformio + +script: + - platformio ci --lib="." --board=megaatmega2560 diff --git a/Marlin/Conditionals.h b/lib/Marlin/Conditionals.h similarity index 100% rename from Marlin/Conditionals.h rename to lib/Marlin/Conditionals.h diff --git a/Marlin/Conditionals_LCD.h b/lib/Marlin/Conditionals_LCD.h similarity index 100% rename from Marlin/Conditionals_LCD.h rename to lib/Marlin/Conditionals_LCD.h diff --git a/Marlin/Conditionals_post.h b/lib/Marlin/Conditionals_post.h similarity index 100% rename from Marlin/Conditionals_post.h rename to lib/Marlin/Conditionals_post.h diff --git a/Marlin/Configuration.h b/lib/Marlin/Configuration.h similarity index 100% rename from Marlin/Configuration.h rename to lib/Marlin/Configuration.h diff --git a/Marlin/Configuration_adv.h b/lib/Marlin/Configuration_adv.h similarity index 100% rename from Marlin/Configuration_adv.h rename to lib/Marlin/Configuration_adv.h diff --git a/Marlin/GroveColorSensor.cpp b/lib/Marlin/GroveColorSensor.cpp similarity index 100% rename from Marlin/GroveColorSensor.cpp rename to lib/Marlin/GroveColorSensor.cpp diff --git a/Marlin/GroveColorSensor.h b/lib/Marlin/GroveColorSensor.h similarity index 100% rename from Marlin/GroveColorSensor.h rename to lib/Marlin/GroveColorSensor.h diff --git a/Marlin/GroveRegisters.h b/lib/Marlin/GroveRegisters.h similarity index 100% rename from Marlin/GroveRegisters.h rename to lib/Marlin/GroveRegisters.h diff --git a/Marlin/M100_Free_Mem_Chk.cpp b/lib/Marlin/M100_Free_Mem_Chk.cpp similarity index 100% rename from Marlin/M100_Free_Mem_Chk.cpp rename to lib/Marlin/M100_Free_Mem_Chk.cpp diff --git a/Marlin/Makefile b/lib/Marlin/Makefile similarity index 100% rename from Marlin/Makefile rename to lib/Marlin/Makefile diff --git a/Marlin/Marlin.h b/lib/Marlin/Marlin.h similarity index 100% rename from Marlin/Marlin.h rename to lib/Marlin/Marlin.h diff --git a/Marlin/Marlin.ino b/lib/Marlin/Marlin.ino similarity index 100% rename from Marlin/Marlin.ino rename to lib/Marlin/Marlin.ino diff --git a/Marlin/MarlinConfig.h b/lib/Marlin/MarlinConfig.h similarity index 100% rename from Marlin/MarlinConfig.h rename to lib/Marlin/MarlinConfig.h diff --git a/Marlin/MarlinSerial.cpp b/lib/Marlin/MarlinSerial.cpp similarity index 100% rename from Marlin/MarlinSerial.cpp rename to lib/Marlin/MarlinSerial.cpp diff --git a/Marlin/MarlinSerial.h b/lib/Marlin/MarlinSerial.h similarity index 100% rename from Marlin/MarlinSerial.h rename to lib/Marlin/MarlinSerial.h diff --git a/Marlin/Marlin_main.cpp b/lib/Marlin/Marlin_main.cpp similarity index 100% rename from Marlin/Marlin_main.cpp rename to lib/Marlin/Marlin_main.cpp diff --git a/Marlin/SanityCheck.h b/lib/Marlin/SanityCheck.h similarity index 100% rename from Marlin/SanityCheck.h rename to lib/Marlin/SanityCheck.h diff --git a/Marlin/Sd2Card.cpp b/lib/Marlin/Sd2Card.cpp similarity index 100% rename from Marlin/Sd2Card.cpp rename to lib/Marlin/Sd2Card.cpp diff --git a/Marlin/Sd2Card.h b/lib/Marlin/Sd2Card.h similarity index 100% rename from Marlin/Sd2Card.h rename to lib/Marlin/Sd2Card.h diff --git a/Marlin/SdBaseFile.cpp b/lib/Marlin/SdBaseFile.cpp similarity index 100% rename from Marlin/SdBaseFile.cpp rename to lib/Marlin/SdBaseFile.cpp diff --git a/Marlin/SdBaseFile.h b/lib/Marlin/SdBaseFile.h similarity index 100% rename from Marlin/SdBaseFile.h rename to lib/Marlin/SdBaseFile.h diff --git a/Marlin/SdFatConfig.h b/lib/Marlin/SdFatConfig.h similarity index 100% rename from Marlin/SdFatConfig.h rename to lib/Marlin/SdFatConfig.h diff --git a/Marlin/SdFatStructs.h b/lib/Marlin/SdFatStructs.h similarity index 100% rename from Marlin/SdFatStructs.h rename to lib/Marlin/SdFatStructs.h diff --git a/Marlin/SdFatUtil.cpp b/lib/Marlin/SdFatUtil.cpp similarity index 100% rename from Marlin/SdFatUtil.cpp rename to lib/Marlin/SdFatUtil.cpp diff --git a/Marlin/SdFatUtil.h b/lib/Marlin/SdFatUtil.h similarity index 100% rename from Marlin/SdFatUtil.h rename to lib/Marlin/SdFatUtil.h diff --git a/Marlin/SdFile.cpp b/lib/Marlin/SdFile.cpp similarity index 100% rename from Marlin/SdFile.cpp rename to lib/Marlin/SdFile.cpp diff --git a/Marlin/SdFile.h b/lib/Marlin/SdFile.h similarity index 100% rename from Marlin/SdFile.h rename to lib/Marlin/SdFile.h diff --git a/Marlin/SdInfo.h b/lib/Marlin/SdInfo.h similarity index 100% rename from Marlin/SdInfo.h rename to lib/Marlin/SdInfo.h diff --git a/Marlin/SdVolume.cpp b/lib/Marlin/SdVolume.cpp similarity index 100% rename from Marlin/SdVolume.cpp rename to lib/Marlin/SdVolume.cpp diff --git a/Marlin/SdVolume.h b/lib/Marlin/SdVolume.h similarity index 100% rename from Marlin/SdVolume.h rename to lib/Marlin/SdVolume.h diff --git a/Marlin/Ultrasonic.cpp b/lib/Marlin/Ultrasonic.cpp similarity index 100% rename from Marlin/Ultrasonic.cpp rename to lib/Marlin/Ultrasonic.cpp diff --git a/Marlin/Ultrasonic.h b/lib/Marlin/Ultrasonic.h similarity index 100% rename from Marlin/Ultrasonic.h rename to lib/Marlin/Ultrasonic.h diff --git a/Marlin/Version.h b/lib/Marlin/Version.h similarity index 100% rename from Marlin/Version.h rename to lib/Marlin/Version.h diff --git a/Marlin/X_IIC.cpp b/lib/Marlin/X_IIC.cpp similarity index 100% rename from Marlin/X_IIC.cpp rename to lib/Marlin/X_IIC.cpp diff --git a/Marlin/X_IIC.h b/lib/Marlin/X_IIC.h similarity index 100% rename from Marlin/X_IIC.h rename to lib/Marlin/X_IIC.h diff --git a/Marlin/Y_IIC.cpp b/lib/Marlin/Y_IIC.cpp similarity index 100% rename from Marlin/Y_IIC.cpp rename to lib/Marlin/Y_IIC.cpp diff --git a/Marlin/Y_IIC.h b/lib/Marlin/Y_IIC.h similarity index 100% rename from Marlin/Y_IIC.h rename to lib/Marlin/Y_IIC.h diff --git a/Marlin/Z_IIC.cpp b/lib/Marlin/Z_IIC.cpp similarity index 100% rename from Marlin/Z_IIC.cpp rename to lib/Marlin/Z_IIC.cpp diff --git a/Marlin/Z_IIC.h b/lib/Marlin/Z_IIC.h similarity index 100% rename from Marlin/Z_IIC.h rename to lib/Marlin/Z_IIC.h diff --git a/Marlin/blinkm.cpp b/lib/Marlin/blinkm.cpp similarity index 100% rename from Marlin/blinkm.cpp rename to lib/Marlin/blinkm.cpp diff --git a/Marlin/blinkm.h b/lib/Marlin/blinkm.h similarity index 100% rename from Marlin/blinkm.h rename to lib/Marlin/blinkm.h diff --git a/Marlin/boards.h b/lib/Marlin/boards.h similarity index 100% rename from Marlin/boards.h rename to lib/Marlin/boards.h diff --git a/Marlin/buzzer.h b/lib/Marlin/buzzer.h similarity index 100% rename from Marlin/buzzer.h rename to lib/Marlin/buzzer.h diff --git a/Marlin/cardreader.cpp b/lib/Marlin/cardreader.cpp similarity index 100% rename from Marlin/cardreader.cpp rename to lib/Marlin/cardreader.cpp diff --git a/Marlin/cardreader.h b/lib/Marlin/cardreader.h similarity index 100% rename from Marlin/cardreader.h rename to lib/Marlin/cardreader.h diff --git a/Marlin/circularqueue.h b/lib/Marlin/circularqueue.h similarity index 100% rename from Marlin/circularqueue.h rename to lib/Marlin/circularqueue.h diff --git a/Marlin/configuration_store.cpp b/lib/Marlin/configuration_store.cpp similarity index 100% rename from Marlin/configuration_store.cpp rename to lib/Marlin/configuration_store.cpp diff --git a/Marlin/configuration_store.h b/lib/Marlin/configuration_store.h similarity index 100% rename from Marlin/configuration_store.h rename to lib/Marlin/configuration_store.h diff --git a/Marlin/dac_mcp4728.cpp b/lib/Marlin/dac_mcp4728.cpp similarity index 100% rename from Marlin/dac_mcp4728.cpp rename to lib/Marlin/dac_mcp4728.cpp diff --git a/Marlin/dac_mcp4728.h b/lib/Marlin/dac_mcp4728.h similarity index 100% rename from Marlin/dac_mcp4728.h rename to lib/Marlin/dac_mcp4728.h diff --git a/Marlin/digipot_mcp4451.cpp b/lib/Marlin/digipot_mcp4451.cpp similarity index 100% rename from Marlin/digipot_mcp4451.cpp rename to lib/Marlin/digipot_mcp4451.cpp diff --git a/Marlin/dogm_bitmaps.h b/lib/Marlin/dogm_bitmaps.h similarity index 100% rename from Marlin/dogm_bitmaps.h rename to lib/Marlin/dogm_bitmaps.h diff --git a/Marlin/dogm_font_data_6x9_marlin.h b/lib/Marlin/dogm_font_data_6x9_marlin.h similarity index 100% rename from Marlin/dogm_font_data_6x9_marlin.h rename to lib/Marlin/dogm_font_data_6x9_marlin.h diff --git a/Marlin/dogm_font_data_HD44780_C.h b/lib/Marlin/dogm_font_data_HD44780_C.h similarity index 100% rename from Marlin/dogm_font_data_HD44780_C.h rename to lib/Marlin/dogm_font_data_HD44780_C.h diff --git a/Marlin/dogm_font_data_HD44780_J.h b/lib/Marlin/dogm_font_data_HD44780_J.h similarity index 100% rename from Marlin/dogm_font_data_HD44780_J.h rename to lib/Marlin/dogm_font_data_HD44780_J.h diff --git a/Marlin/dogm_font_data_HD44780_W.h b/lib/Marlin/dogm_font_data_HD44780_W.h similarity index 100% rename from Marlin/dogm_font_data_HD44780_W.h rename to lib/Marlin/dogm_font_data_HD44780_W.h diff --git a/Marlin/dogm_font_data_ISO10646_1.h b/lib/Marlin/dogm_font_data_ISO10646_1.h similarity index 100% rename from Marlin/dogm_font_data_ISO10646_1.h rename to lib/Marlin/dogm_font_data_ISO10646_1.h diff --git a/Marlin/dogm_font_data_ISO10646_5_Cyrillic.h b/lib/Marlin/dogm_font_data_ISO10646_5_Cyrillic.h similarity index 100% rename from Marlin/dogm_font_data_ISO10646_5_Cyrillic.h rename to lib/Marlin/dogm_font_data_ISO10646_5_Cyrillic.h diff --git a/Marlin/dogm_font_data_ISO10646_CN.h b/lib/Marlin/dogm_font_data_ISO10646_CN.h similarity index 100% rename from Marlin/dogm_font_data_ISO10646_CN.h rename to lib/Marlin/dogm_font_data_ISO10646_CN.h diff --git a/Marlin/dogm_font_data_ISO10646_Greek.h b/lib/Marlin/dogm_font_data_ISO10646_Greek.h similarity index 100% rename from Marlin/dogm_font_data_ISO10646_Greek.h rename to lib/Marlin/dogm_font_data_ISO10646_Greek.h diff --git a/Marlin/dogm_font_data_ISO10646_Kana.h b/lib/Marlin/dogm_font_data_ISO10646_Kana.h similarity index 100% rename from Marlin/dogm_font_data_ISO10646_Kana.h rename to lib/Marlin/dogm_font_data_ISO10646_Kana.h diff --git a/Marlin/dogm_font_data_Marlin_symbols.h b/lib/Marlin/dogm_font_data_Marlin_symbols.h similarity index 100% rename from Marlin/dogm_font_data_Marlin_symbols.h rename to lib/Marlin/dogm_font_data_Marlin_symbols.h diff --git a/Marlin/duration_t.h b/lib/Marlin/duration_t.h similarity index 100% rename from Marlin/duration_t.h rename to lib/Marlin/duration_t.h diff --git a/Marlin/endstops.cpp b/lib/Marlin/endstops.cpp similarity index 100% rename from Marlin/endstops.cpp rename to lib/Marlin/endstops.cpp diff --git a/Marlin/endstops.h b/lib/Marlin/endstops.h similarity index 100% rename from Marlin/endstops.h rename to lib/Marlin/endstops.h diff --git a/Marlin/enum.h b/lib/Marlin/enum.h similarity index 100% rename from Marlin/enum.h rename to lib/Marlin/enum.h diff --git a/Marlin/example_configurations/Cartesio/Configuration.h b/lib/Marlin/example_configurations/Cartesio/Configuration.h similarity index 100% rename from Marlin/example_configurations/Cartesio/Configuration.h rename to lib/Marlin/example_configurations/Cartesio/Configuration.h diff --git a/Marlin/example_configurations/Cartesio/Configuration_adv.h b/lib/Marlin/example_configurations/Cartesio/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/Cartesio/Configuration_adv.h rename to lib/Marlin/example_configurations/Cartesio/Configuration_adv.h diff --git a/Marlin/example_configurations/Cartesio/_Bootscreen.h b/lib/Marlin/example_configurations/Cartesio/_Bootscreen.h similarity index 100% rename from Marlin/example_configurations/Cartesio/_Bootscreen.h rename to lib/Marlin/example_configurations/Cartesio/_Bootscreen.h diff --git a/Marlin/example_configurations/Felix/Configuration.h b/lib/Marlin/example_configurations/Felix/Configuration.h similarity index 100% rename from Marlin/example_configurations/Felix/Configuration.h rename to lib/Marlin/example_configurations/Felix/Configuration.h diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/lib/Marlin/example_configurations/Felix/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/Felix/Configuration_adv.h rename to lib/Marlin/example_configurations/Felix/Configuration_adv.h diff --git a/Marlin/example_configurations/Felix/DUAL/Configuration.h b/lib/Marlin/example_configurations/Felix/DUAL/Configuration.h similarity index 100% rename from Marlin/example_configurations/Felix/DUAL/Configuration.h rename to lib/Marlin/example_configurations/Felix/DUAL/Configuration.h diff --git a/Marlin/example_configurations/Felix/README.md b/lib/Marlin/example_configurations/Felix/README.md similarity index 100% rename from Marlin/example_configurations/Felix/README.md rename to lib/Marlin/example_configurations/Felix/README.md diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/lib/Marlin/example_configurations/Hephestos/Configuration.h similarity index 100% rename from Marlin/example_configurations/Hephestos/Configuration.h rename to lib/Marlin/example_configurations/Hephestos/Configuration.h diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/lib/Marlin/example_configurations/Hephestos/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/Hephestos/Configuration_adv.h rename to lib/Marlin/example_configurations/Hephestos/Configuration_adv.h diff --git a/Marlin/example_configurations/Hephestos_2/Configuration.h b/lib/Marlin/example_configurations/Hephestos_2/Configuration.h similarity index 100% rename from Marlin/example_configurations/Hephestos_2/Configuration.h rename to lib/Marlin/example_configurations/Hephestos_2/Configuration.h diff --git a/Marlin/example_configurations/Hephestos_2/Configuration_adv.h b/lib/Marlin/example_configurations/Hephestos_2/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/Hephestos_2/Configuration_adv.h rename to lib/Marlin/example_configurations/Hephestos_2/Configuration_adv.h diff --git a/Marlin/example_configurations/Hephestos_2/README.md b/lib/Marlin/example_configurations/Hephestos_2/README.md similarity index 100% rename from Marlin/example_configurations/Hephestos_2/README.md rename to lib/Marlin/example_configurations/Hephestos_2/README.md diff --git a/Marlin/example_configurations/Hephestos_2/_Bootscreen.h b/lib/Marlin/example_configurations/Hephestos_2/_Bootscreen.h similarity index 100% rename from Marlin/example_configurations/Hephestos_2/_Bootscreen.h rename to lib/Marlin/example_configurations/Hephestos_2/_Bootscreen.h diff --git a/Marlin/example_configurations/K8200/Configuration.h b/lib/Marlin/example_configurations/K8200/Configuration.h similarity index 100% rename from Marlin/example_configurations/K8200/Configuration.h rename to lib/Marlin/example_configurations/K8200/Configuration.h diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/lib/Marlin/example_configurations/K8200/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/K8200/Configuration_adv.h rename to lib/Marlin/example_configurations/K8200/Configuration_adv.h diff --git a/Marlin/example_configurations/K8200/README.md b/lib/Marlin/example_configurations/K8200/README.md similarity index 100% rename from Marlin/example_configurations/K8200/README.md rename to lib/Marlin/example_configurations/K8200/README.md diff --git a/Marlin/example_configurations/K8400/Configuration.h b/lib/Marlin/example_configurations/K8400/Configuration.h similarity index 100% rename from Marlin/example_configurations/K8400/Configuration.h rename to lib/Marlin/example_configurations/K8400/Configuration.h diff --git a/Marlin/example_configurations/K8400/Configuration_adv.h b/lib/Marlin/example_configurations/K8400/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/K8400/Configuration_adv.h rename to lib/Marlin/example_configurations/K8400/Configuration_adv.h diff --git a/Marlin/example_configurations/K8400/Dual-head/Configuration.h b/lib/Marlin/example_configurations/K8400/Dual-head/Configuration.h similarity index 100% rename from Marlin/example_configurations/K8400/Dual-head/Configuration.h rename to lib/Marlin/example_configurations/K8400/Dual-head/Configuration.h diff --git a/Marlin/example_configurations/K8400/README.md b/lib/Marlin/example_configurations/K8400/README.md similarity index 100% rename from Marlin/example_configurations/K8400/README.md rename to lib/Marlin/example_configurations/K8400/README.md diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/lib/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h similarity index 100% rename from Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h rename to lib/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/lib/Marlin/example_configurations/RigidBot/Configuration.h similarity index 100% rename from Marlin/example_configurations/RigidBot/Configuration.h rename to lib/Marlin/example_configurations/RigidBot/Configuration.h diff --git a/Marlin/example_configurations/RigidBot/Configuration_adv.h b/lib/Marlin/example_configurations/RigidBot/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/RigidBot/Configuration_adv.h rename to lib/Marlin/example_configurations/RigidBot/Configuration_adv.h diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/lib/Marlin/example_configurations/SCARA/Configuration.h similarity index 100% rename from Marlin/example_configurations/SCARA/Configuration.h rename to lib/Marlin/example_configurations/SCARA/Configuration.h diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/lib/Marlin/example_configurations/SCARA/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/SCARA/Configuration_adv.h rename to lib/Marlin/example_configurations/SCARA/Configuration_adv.h diff --git a/Marlin/example_configurations/Swift/Configuration.h b/lib/Marlin/example_configurations/Swift/Configuration.h similarity index 100% rename from Marlin/example_configurations/Swift/Configuration.h rename to lib/Marlin/example_configurations/Swift/Configuration.h diff --git a/Marlin/example_configurations/Swift/Configuration_adv.h b/lib/Marlin/example_configurations/Swift/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/Swift/Configuration_adv.h rename to lib/Marlin/example_configurations/Swift/Configuration_adv.h diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/lib/Marlin/example_configurations/TAZ4/Configuration.h similarity index 100% rename from Marlin/example_configurations/TAZ4/Configuration.h rename to lib/Marlin/example_configurations/TAZ4/Configuration.h diff --git a/Marlin/example_configurations/TAZ4/Configuration_adv.h b/lib/Marlin/example_configurations/TAZ4/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/TAZ4/Configuration_adv.h rename to lib/Marlin/example_configurations/TAZ4/Configuration_adv.h diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/lib/Marlin/example_configurations/WITBOX/Configuration.h similarity index 100% rename from Marlin/example_configurations/WITBOX/Configuration.h rename to lib/Marlin/example_configurations/WITBOX/Configuration.h diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/lib/Marlin/example_configurations/WITBOX/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/WITBOX/Configuration_adv.h rename to lib/Marlin/example_configurations/WITBOX/Configuration_adv.h diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/lib/Marlin/example_configurations/adafruit/ST7565/Configuration.h similarity index 100% rename from Marlin/example_configurations/adafruit/ST7565/Configuration.h rename to lib/Marlin/example_configurations/adafruit/ST7565/Configuration.h diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/lib/Marlin/example_configurations/delta/biv2.5/Configuration.h similarity index 100% rename from Marlin/example_configurations/delta/biv2.5/Configuration.h rename to lib/Marlin/example_configurations/delta/biv2.5/Configuration.h diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h b/lib/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/delta/biv2.5/Configuration_adv.h rename to lib/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/lib/Marlin/example_configurations/delta/generic/Configuration.h similarity index 100% rename from Marlin/example_configurations/delta/generic/Configuration.h rename to lib/Marlin/example_configurations/delta/generic/Configuration.h diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/lib/Marlin/example_configurations/delta/generic/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/delta/generic/Configuration_adv.h rename to lib/Marlin/example_configurations/delta/generic/Configuration_adv.h diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/lib/Marlin/example_configurations/delta/kossel_mini/Configuration.h similarity index 100% rename from Marlin/example_configurations/delta/kossel_mini/Configuration.h rename to lib/Marlin/example_configurations/delta/kossel_mini/Configuration.h diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/lib/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h rename to lib/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/lib/Marlin/example_configurations/delta/kossel_pro/Configuration.h similarity index 100% rename from Marlin/example_configurations/delta/kossel_pro/Configuration.h rename to lib/Marlin/example_configurations/delta/kossel_pro/Configuration.h diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h b/lib/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h rename to lib/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h diff --git a/Marlin/example_configurations/delta/kossel_pro/README.md b/lib/Marlin/example_configurations/delta/kossel_pro/README.md similarity index 100% rename from Marlin/example_configurations/delta/kossel_pro/README.md rename to lib/Marlin/example_configurations/delta/kossel_pro/README.md diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/lib/Marlin/example_configurations/delta/kossel_xl/Configuration.h similarity index 100% rename from Marlin/example_configurations/delta/kossel_xl/Configuration.h rename to lib/Marlin/example_configurations/delta/kossel_xl/Configuration.h diff --git a/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h b/lib/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h rename to lib/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h diff --git a/Marlin/example_configurations/delta/kossel_xl/README.md b/lib/Marlin/example_configurations/delta/kossel_xl/README.md similarity index 100% rename from Marlin/example_configurations/delta/kossel_xl/README.md rename to lib/Marlin/example_configurations/delta/kossel_xl/README.md diff --git a/Marlin/example_configurations/makibox/Configuration.h b/lib/Marlin/example_configurations/makibox/Configuration.h similarity index 100% rename from Marlin/example_configurations/makibox/Configuration.h rename to lib/Marlin/example_configurations/makibox/Configuration.h diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/lib/Marlin/example_configurations/makibox/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/makibox/Configuration_adv.h rename to lib/Marlin/example_configurations/makibox/Configuration_adv.h diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/lib/Marlin/example_configurations/tvrrug/Round2/Configuration.h similarity index 100% rename from Marlin/example_configurations/tvrrug/Round2/Configuration.h rename to lib/Marlin/example_configurations/tvrrug/Round2/Configuration.h diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/lib/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h similarity index 100% rename from Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h rename to lib/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h diff --git a/Marlin/fastio.h b/lib/Marlin/fastio.h similarity index 100% rename from Marlin/fastio.h rename to lib/Marlin/fastio.h diff --git a/Marlin/language.h b/lib/Marlin/language.h similarity index 100% rename from Marlin/language.h rename to lib/Marlin/language.h diff --git a/Marlin/language_an.h b/lib/Marlin/language_an.h similarity index 100% rename from Marlin/language_an.h rename to lib/Marlin/language_an.h diff --git a/Marlin/language_bg.h b/lib/Marlin/language_bg.h similarity index 100% rename from Marlin/language_bg.h rename to lib/Marlin/language_bg.h diff --git a/Marlin/language_ca.h b/lib/Marlin/language_ca.h similarity index 100% rename from Marlin/language_ca.h rename to lib/Marlin/language_ca.h diff --git a/Marlin/language_cn.h b/lib/Marlin/language_cn.h similarity index 100% rename from Marlin/language_cn.h rename to lib/Marlin/language_cn.h diff --git a/Marlin/language_cz.h b/lib/Marlin/language_cz.h similarity index 100% rename from Marlin/language_cz.h rename to lib/Marlin/language_cz.h diff --git a/Marlin/language_da.h b/lib/Marlin/language_da.h similarity index 100% rename from Marlin/language_da.h rename to lib/Marlin/language_da.h diff --git a/Marlin/language_de.h b/lib/Marlin/language_de.h similarity index 100% rename from Marlin/language_de.h rename to lib/Marlin/language_de.h diff --git a/Marlin/language_el-gr.h b/lib/Marlin/language_el-gr.h similarity index 100% rename from Marlin/language_el-gr.h rename to lib/Marlin/language_el-gr.h diff --git a/Marlin/language_el.h b/lib/Marlin/language_el.h similarity index 100% rename from Marlin/language_el.h rename to lib/Marlin/language_el.h diff --git a/Marlin/language_en.h b/lib/Marlin/language_en.h similarity index 100% rename from Marlin/language_en.h rename to lib/Marlin/language_en.h diff --git a/Marlin/language_es.h b/lib/Marlin/language_es.h similarity index 100% rename from Marlin/language_es.h rename to lib/Marlin/language_es.h diff --git a/Marlin/language_eu.h b/lib/Marlin/language_eu.h similarity index 100% rename from Marlin/language_eu.h rename to lib/Marlin/language_eu.h diff --git a/Marlin/language_fi.h b/lib/Marlin/language_fi.h similarity index 100% rename from Marlin/language_fi.h rename to lib/Marlin/language_fi.h diff --git a/Marlin/language_fr.h b/lib/Marlin/language_fr.h similarity index 100% rename from Marlin/language_fr.h rename to lib/Marlin/language_fr.h diff --git a/Marlin/language_gl.h b/lib/Marlin/language_gl.h similarity index 100% rename from Marlin/language_gl.h rename to lib/Marlin/language_gl.h diff --git a/Marlin/language_hr.h b/lib/Marlin/language_hr.h similarity index 100% rename from Marlin/language_hr.h rename to lib/Marlin/language_hr.h diff --git a/Marlin/language_it.h b/lib/Marlin/language_it.h similarity index 100% rename from Marlin/language_it.h rename to lib/Marlin/language_it.h diff --git a/Marlin/language_kana.h b/lib/Marlin/language_kana.h similarity index 100% rename from Marlin/language_kana.h rename to lib/Marlin/language_kana.h diff --git a/Marlin/language_kana_utf8.h b/lib/Marlin/language_kana_utf8.h similarity index 100% rename from Marlin/language_kana_utf8.h rename to lib/Marlin/language_kana_utf8.h diff --git a/Marlin/language_nl.h b/lib/Marlin/language_nl.h similarity index 100% rename from Marlin/language_nl.h rename to lib/Marlin/language_nl.h diff --git a/Marlin/language_pl.h b/lib/Marlin/language_pl.h similarity index 100% rename from Marlin/language_pl.h rename to lib/Marlin/language_pl.h diff --git a/Marlin/language_pt-br.h b/lib/Marlin/language_pt-br.h similarity index 100% rename from Marlin/language_pt-br.h rename to lib/Marlin/language_pt-br.h diff --git a/Marlin/language_pt-br_utf8.h b/lib/Marlin/language_pt-br_utf8.h similarity index 100% rename from Marlin/language_pt-br_utf8.h rename to lib/Marlin/language_pt-br_utf8.h diff --git a/Marlin/language_pt.h b/lib/Marlin/language_pt.h similarity index 100% rename from Marlin/language_pt.h rename to lib/Marlin/language_pt.h diff --git a/Marlin/language_pt_utf8.h b/lib/Marlin/language_pt_utf8.h similarity index 100% rename from Marlin/language_pt_utf8.h rename to lib/Marlin/language_pt_utf8.h diff --git a/Marlin/language_ru.h b/lib/Marlin/language_ru.h similarity index 100% rename from Marlin/language_ru.h rename to lib/Marlin/language_ru.h diff --git a/Marlin/language_test.h b/lib/Marlin/language_test.h similarity index 100% rename from Marlin/language_test.h rename to lib/Marlin/language_test.h diff --git a/Marlin/macros.h b/lib/Marlin/macros.h similarity index 100% rename from Marlin/macros.h rename to lib/Marlin/macros.h diff --git a/Marlin/mesh_bed_leveling.cpp b/lib/Marlin/mesh_bed_leveling.cpp similarity index 100% rename from Marlin/mesh_bed_leveling.cpp rename to lib/Marlin/mesh_bed_leveling.cpp diff --git a/Marlin/mesh_bed_leveling.h b/lib/Marlin/mesh_bed_leveling.h similarity index 100% rename from Marlin/mesh_bed_leveling.h rename to lib/Marlin/mesh_bed_leveling.h diff --git a/Marlin/nozzle.h b/lib/Marlin/nozzle.h similarity index 100% rename from Marlin/nozzle.h rename to lib/Marlin/nozzle.h diff --git a/Marlin/paj7620.cpp b/lib/Marlin/paj7620.cpp similarity index 100% rename from Marlin/paj7620.cpp rename to lib/Marlin/paj7620.cpp diff --git a/Marlin/paj7620.h b/lib/Marlin/paj7620.h similarity index 100% rename from Marlin/paj7620.h rename to lib/Marlin/paj7620.h diff --git a/Marlin/pins.h b/lib/Marlin/pins.h similarity index 100% rename from Marlin/pins.h rename to lib/Marlin/pins.h diff --git a/Marlin/pins_3DRAG.h b/lib/Marlin/pins_3DRAG.h similarity index 100% rename from Marlin/pins_3DRAG.h rename to lib/Marlin/pins_3DRAG.h diff --git a/Marlin/pins_5DPRINT.h b/lib/Marlin/pins_5DPRINT.h similarity index 100% rename from Marlin/pins_5DPRINT.h rename to lib/Marlin/pins_5DPRINT.h diff --git a/Marlin/pins_99.h b/lib/Marlin/pins_99.h similarity index 100% rename from Marlin/pins_99.h rename to lib/Marlin/pins_99.h diff --git a/Marlin/pins_A4JP.h b/lib/Marlin/pins_A4JP.h similarity index 100% rename from Marlin/pins_A4JP.h rename to lib/Marlin/pins_A4JP.h diff --git a/Marlin/pins_AZTEEG_X1.h b/lib/Marlin/pins_AZTEEG_X1.h similarity index 100% rename from Marlin/pins_AZTEEG_X1.h rename to lib/Marlin/pins_AZTEEG_X1.h diff --git a/Marlin/pins_AZTEEG_X3.h b/lib/Marlin/pins_AZTEEG_X3.h similarity index 100% rename from Marlin/pins_AZTEEG_X3.h rename to lib/Marlin/pins_AZTEEG_X3.h diff --git a/Marlin/pins_AZTEEG_X3_PRO.h b/lib/Marlin/pins_AZTEEG_X3_PRO.h similarity index 100% rename from Marlin/pins_AZTEEG_X3_PRO.h rename to lib/Marlin/pins_AZTEEG_X3_PRO.h diff --git a/Marlin/pins_BAM_DICE_DUE.h b/lib/Marlin/pins_BAM_DICE_DUE.h similarity index 100% rename from Marlin/pins_BAM_DICE_DUE.h rename to lib/Marlin/pins_BAM_DICE_DUE.h diff --git a/Marlin/pins_BQ_ZUM_MEGA_3D.h b/lib/Marlin/pins_BQ_ZUM_MEGA_3D.h similarity index 100% rename from Marlin/pins_BQ_ZUM_MEGA_3D.h rename to lib/Marlin/pins_BQ_ZUM_MEGA_3D.h diff --git a/Marlin/pins_BRAINWAVE.h b/lib/Marlin/pins_BRAINWAVE.h similarity index 100% rename from Marlin/pins_BRAINWAVE.h rename to lib/Marlin/pins_BRAINWAVE.h diff --git a/Marlin/pins_BRAINWAVE_PRO.h b/lib/Marlin/pins_BRAINWAVE_PRO.h similarity index 100% rename from Marlin/pins_BRAINWAVE_PRO.h rename to lib/Marlin/pins_BRAINWAVE_PRO.h diff --git a/Marlin/pins_CHEAPTRONIC.h b/lib/Marlin/pins_CHEAPTRONIC.h similarity index 100% rename from Marlin/pins_CHEAPTRONIC.h rename to lib/Marlin/pins_CHEAPTRONIC.h diff --git a/Marlin/pins_CNCONTROLS_11.h b/lib/Marlin/pins_CNCONTROLS_11.h similarity index 100% rename from Marlin/pins_CNCONTROLS_11.h rename to lib/Marlin/pins_CNCONTROLS_11.h diff --git a/Marlin/pins_CNCONTROLS_12.h b/lib/Marlin/pins_CNCONTROLS_12.h similarity index 100% rename from Marlin/pins_CNCONTROLS_12.h rename to lib/Marlin/pins_CNCONTROLS_12.h diff --git a/Marlin/pins_ELEFU_3.h b/lib/Marlin/pins_ELEFU_3.h similarity index 100% rename from Marlin/pins_ELEFU_3.h rename to lib/Marlin/pins_ELEFU_3.h diff --git a/Marlin/pins_FELIX2.h b/lib/Marlin/pins_FELIX2.h similarity index 100% rename from Marlin/pins_FELIX2.h rename to lib/Marlin/pins_FELIX2.h diff --git a/Marlin/pins_GEN3_MONOLITHIC.h b/lib/Marlin/pins_GEN3_MONOLITHIC.h similarity index 100% rename from Marlin/pins_GEN3_MONOLITHIC.h rename to lib/Marlin/pins_GEN3_MONOLITHIC.h diff --git a/Marlin/pins_GEN3_PLUS.h b/lib/Marlin/pins_GEN3_PLUS.h similarity index 100% rename from Marlin/pins_GEN3_PLUS.h rename to lib/Marlin/pins_GEN3_PLUS.h diff --git a/Marlin/pins_GEN6.h b/lib/Marlin/pins_GEN6.h similarity index 100% rename from Marlin/pins_GEN6.h rename to lib/Marlin/pins_GEN6.h diff --git a/Marlin/pins_GEN6_DELUXE.h b/lib/Marlin/pins_GEN6_DELUXE.h similarity index 100% rename from Marlin/pins_GEN6_DELUXE.h rename to lib/Marlin/pins_GEN6_DELUXE.h diff --git a/Marlin/pins_GEN7_12.h b/lib/Marlin/pins_GEN7_12.h similarity index 100% rename from Marlin/pins_GEN7_12.h rename to lib/Marlin/pins_GEN7_12.h diff --git a/Marlin/pins_GEN7_13.h b/lib/Marlin/pins_GEN7_13.h similarity index 100% rename from Marlin/pins_GEN7_13.h rename to lib/Marlin/pins_GEN7_13.h diff --git a/Marlin/pins_GEN7_14.h b/lib/Marlin/pins_GEN7_14.h similarity index 100% rename from Marlin/pins_GEN7_14.h rename to lib/Marlin/pins_GEN7_14.h diff --git a/Marlin/pins_GEN7_CUSTOM.h b/lib/Marlin/pins_GEN7_CUSTOM.h similarity index 100% rename from Marlin/pins_GEN7_CUSTOM.h rename to lib/Marlin/pins_GEN7_CUSTOM.h diff --git a/Marlin/pins_K8200.h b/lib/Marlin/pins_K8200.h similarity index 100% rename from Marlin/pins_K8200.h rename to lib/Marlin/pins_K8200.h diff --git a/Marlin/pins_K8400.h b/lib/Marlin/pins_K8400.h similarity index 100% rename from Marlin/pins_K8400.h rename to lib/Marlin/pins_K8400.h diff --git a/Marlin/pins_LEAPFROG.h b/lib/Marlin/pins_LEAPFROG.h similarity index 100% rename from Marlin/pins_LEAPFROG.h rename to lib/Marlin/pins_LEAPFROG.h diff --git a/Marlin/pins_MEGACONTROLLER.h b/lib/Marlin/pins_MEGACONTROLLER.h similarity index 100% rename from Marlin/pins_MEGACONTROLLER.h rename to lib/Marlin/pins_MEGACONTROLLER.h diff --git a/Marlin/pins_MEGATRONICS.h b/lib/Marlin/pins_MEGATRONICS.h similarity index 100% rename from Marlin/pins_MEGATRONICS.h rename to lib/Marlin/pins_MEGATRONICS.h diff --git a/Marlin/pins_MEGATRONICS_2.h b/lib/Marlin/pins_MEGATRONICS_2.h similarity index 100% rename from Marlin/pins_MEGATRONICS_2.h rename to lib/Marlin/pins_MEGATRONICS_2.h diff --git a/Marlin/pins_MEGATRONICS_3.h b/lib/Marlin/pins_MEGATRONICS_3.h similarity index 100% rename from Marlin/pins_MEGATRONICS_3.h rename to lib/Marlin/pins_MEGATRONICS_3.h diff --git a/Marlin/pins_MELZI.h b/lib/Marlin/pins_MELZI.h similarity index 100% rename from Marlin/pins_MELZI.h rename to lib/Marlin/pins_MELZI.h diff --git a/Marlin/pins_MELZI_MAKR3D.h b/lib/Marlin/pins_MELZI_MAKR3D.h similarity index 100% rename from Marlin/pins_MELZI_MAKR3D.h rename to lib/Marlin/pins_MELZI_MAKR3D.h diff --git a/Marlin/pins_MINIRAMBO.h b/lib/Marlin/pins_MINIRAMBO.h similarity index 100% rename from Marlin/pins_MINIRAMBO.h rename to lib/Marlin/pins_MINIRAMBO.h diff --git a/Marlin/pins_MINITRONICS.h b/lib/Marlin/pins_MINITRONICS.h similarity index 100% rename from Marlin/pins_MINITRONICS.h rename to lib/Marlin/pins_MINITRONICS.h diff --git a/Marlin/pins_MKS_13.h b/lib/Marlin/pins_MKS_13.h similarity index 100% rename from Marlin/pins_MKS_13.h rename to lib/Marlin/pins_MKS_13.h diff --git a/Marlin/pins_MKS_BASE.h b/lib/Marlin/pins_MKS_BASE.h similarity index 100% rename from Marlin/pins_MKS_BASE.h rename to lib/Marlin/pins_MKS_BASE.h diff --git a/Marlin/pins_OMCA.h b/lib/Marlin/pins_OMCA.h similarity index 100% rename from Marlin/pins_OMCA.h rename to lib/Marlin/pins_OMCA.h diff --git a/Marlin/pins_OMCA_A.h b/lib/Marlin/pins_OMCA_A.h similarity index 100% rename from Marlin/pins_OMCA_A.h rename to lib/Marlin/pins_OMCA_A.h diff --git a/Marlin/pins_PRINTRBOARD.h b/lib/Marlin/pins_PRINTRBOARD.h similarity index 100% rename from Marlin/pins_PRINTRBOARD.h rename to lib/Marlin/pins_PRINTRBOARD.h diff --git a/Marlin/pins_PRINTRBOARD_REVF.h b/lib/Marlin/pins_PRINTRBOARD_REVF.h similarity index 100% rename from Marlin/pins_PRINTRBOARD_REVF.h rename to lib/Marlin/pins_PRINTRBOARD_REVF.h diff --git a/Marlin/pins_RAMBO.h b/lib/Marlin/pins_RAMBO.h similarity index 100% rename from Marlin/pins_RAMBO.h rename to lib/Marlin/pins_RAMBO.h diff --git a/Marlin/pins_RAMPS.h b/lib/Marlin/pins_RAMPS.h similarity index 100% rename from Marlin/pins_RAMPS.h rename to lib/Marlin/pins_RAMPS.h diff --git a/Marlin/pins_RAMPS_13.h b/lib/Marlin/pins_RAMPS_13.h similarity index 100% rename from Marlin/pins_RAMPS_13.h rename to lib/Marlin/pins_RAMPS_13.h diff --git a/Marlin/pins_RAMPS_OLD.h b/lib/Marlin/pins_RAMPS_OLD.h similarity index 100% rename from Marlin/pins_RAMPS_OLD.h rename to lib/Marlin/pins_RAMPS_OLD.h diff --git a/Marlin/pins_RIGIDBOARD.h b/lib/Marlin/pins_RIGIDBOARD.h similarity index 100% rename from Marlin/pins_RIGIDBOARD.h rename to lib/Marlin/pins_RIGIDBOARD.h diff --git a/Marlin/pins_RIGIDBOARD_V2.h b/lib/Marlin/pins_RIGIDBOARD_V2.h similarity index 100% rename from Marlin/pins_RIGIDBOARD_V2.h rename to lib/Marlin/pins_RIGIDBOARD_V2.h diff --git a/Marlin/pins_RUMBA.h b/lib/Marlin/pins_RUMBA.h similarity index 100% rename from Marlin/pins_RUMBA.h rename to lib/Marlin/pins_RUMBA.h diff --git a/Marlin/pins_SAINSMART_2IN1.h b/lib/Marlin/pins_SAINSMART_2IN1.h similarity index 100% rename from Marlin/pins_SAINSMART_2IN1.h rename to lib/Marlin/pins_SAINSMART_2IN1.h diff --git a/Marlin/pins_SANGUINOLOLU_11.h b/lib/Marlin/pins_SANGUINOLOLU_11.h similarity index 100% rename from Marlin/pins_SANGUINOLOLU_11.h rename to lib/Marlin/pins_SANGUINOLOLU_11.h diff --git a/Marlin/pins_SANGUINOLOLU_12.h b/lib/Marlin/pins_SANGUINOLOLU_12.h similarity index 100% rename from Marlin/pins_SANGUINOLOLU_12.h rename to lib/Marlin/pins_SANGUINOLOLU_12.h diff --git a/Marlin/pins_SAV_MKI.h b/lib/Marlin/pins_SAV_MKI.h similarity index 100% rename from Marlin/pins_SAV_MKI.h rename to lib/Marlin/pins_SAV_MKI.h diff --git a/Marlin/pins_SETHI.h b/lib/Marlin/pins_SETHI.h similarity index 100% rename from Marlin/pins_SETHI.h rename to lib/Marlin/pins_SETHI.h diff --git a/Marlin/pins_STB_11.h b/lib/Marlin/pins_STB_11.h similarity index 100% rename from Marlin/pins_STB_11.h rename to lib/Marlin/pins_STB_11.h diff --git a/Marlin/pins_Swift.h b/lib/Marlin/pins_Swift.h similarity index 100% rename from Marlin/pins_Swift.h rename to lib/Marlin/pins_Swift.h diff --git a/Marlin/pins_TEENSY2.h b/lib/Marlin/pins_TEENSY2.h similarity index 100% rename from Marlin/pins_TEENSY2.h rename to lib/Marlin/pins_TEENSY2.h diff --git a/Marlin/pins_TEENSYLU.h b/lib/Marlin/pins_TEENSYLU.h similarity index 100% rename from Marlin/pins_TEENSYLU.h rename to lib/Marlin/pins_TEENSYLU.h diff --git a/Marlin/pins_ULTIMAIN_2.h b/lib/Marlin/pins_ULTIMAIN_2.h similarity index 100% rename from Marlin/pins_ULTIMAIN_2.h rename to lib/Marlin/pins_ULTIMAIN_2.h diff --git a/Marlin/pins_ULTIMAKER.h b/lib/Marlin/pins_ULTIMAKER.h similarity index 100% rename from Marlin/pins_ULTIMAKER.h rename to lib/Marlin/pins_ULTIMAKER.h diff --git a/Marlin/pins_ULTIMAKER_OLD.h b/lib/Marlin/pins_ULTIMAKER_OLD.h similarity index 100% rename from Marlin/pins_ULTIMAKER_OLD.h rename to lib/Marlin/pins_ULTIMAKER_OLD.h diff --git a/Marlin/planner.cpp b/lib/Marlin/planner.cpp similarity index 100% rename from Marlin/planner.cpp rename to lib/Marlin/planner.cpp diff --git a/Marlin/planner.h b/lib/Marlin/planner.h similarity index 100% rename from Marlin/planner.h rename to lib/Marlin/planner.h diff --git a/Marlin/planner_bezier.cpp b/lib/Marlin/planner_bezier.cpp similarity index 100% rename from Marlin/planner_bezier.cpp rename to lib/Marlin/planner_bezier.cpp diff --git a/Marlin/planner_bezier.h b/lib/Marlin/planner_bezier.h similarity index 100% rename from Marlin/planner_bezier.h rename to lib/Marlin/planner_bezier.h diff --git a/Marlin/point_t.h b/lib/Marlin/point_t.h similarity index 100% rename from Marlin/point_t.h rename to lib/Marlin/point_t.h diff --git a/Marlin/printcounter.cpp b/lib/Marlin/printcounter.cpp similarity index 100% rename from Marlin/printcounter.cpp rename to lib/Marlin/printcounter.cpp diff --git a/Marlin/printcounter.h b/lib/Marlin/printcounter.h similarity index 100% rename from Marlin/printcounter.h rename to lib/Marlin/printcounter.h diff --git a/Marlin/qr_solve.cpp b/lib/Marlin/qr_solve.cpp similarity index 100% rename from Marlin/qr_solve.cpp rename to lib/Marlin/qr_solve.cpp diff --git a/Marlin/qr_solve.h b/lib/Marlin/qr_solve.h similarity index 100% rename from Marlin/qr_solve.h rename to lib/Marlin/qr_solve.h diff --git a/Marlin/servo.cpp b/lib/Marlin/servo.cpp similarity index 100% rename from Marlin/servo.cpp rename to lib/Marlin/servo.cpp diff --git a/Marlin/servo.h b/lib/Marlin/servo.h similarity index 100% rename from Marlin/servo.h rename to lib/Marlin/servo.h diff --git a/Marlin/speed_lookuptable.h b/lib/Marlin/speed_lookuptable.h similarity index 100% rename from Marlin/speed_lookuptable.h rename to lib/Marlin/speed_lookuptable.h diff --git a/Marlin/stepper.cpp b/lib/Marlin/stepper.cpp similarity index 100% rename from Marlin/stepper.cpp rename to lib/Marlin/stepper.cpp diff --git a/Marlin/stepper.h b/lib/Marlin/stepper.h similarity index 100% rename from Marlin/stepper.h rename to lib/Marlin/stepper.h diff --git a/Marlin/stepper_dac.cpp b/lib/Marlin/stepper_dac.cpp similarity index 100% rename from Marlin/stepper_dac.cpp rename to lib/Marlin/stepper_dac.cpp diff --git a/Marlin/stepper_dac.h b/lib/Marlin/stepper_dac.h similarity index 100% rename from Marlin/stepper_dac.h rename to lib/Marlin/stepper_dac.h diff --git a/Marlin/stepper_indirection.cpp b/lib/Marlin/stepper_indirection.cpp similarity index 100% rename from Marlin/stepper_indirection.cpp rename to lib/Marlin/stepper_indirection.cpp diff --git a/Marlin/stepper_indirection.h b/lib/Marlin/stepper_indirection.h similarity index 100% rename from Marlin/stepper_indirection.h rename to lib/Marlin/stepper_indirection.h diff --git a/Marlin/stopwatch.cpp b/lib/Marlin/stopwatch.cpp similarity index 100% rename from Marlin/stopwatch.cpp rename to lib/Marlin/stopwatch.cpp diff --git a/Marlin/stopwatch.h b/lib/Marlin/stopwatch.h similarity index 100% rename from Marlin/stopwatch.h rename to lib/Marlin/stopwatch.h diff --git a/Marlin/temperature.cpp b/lib/Marlin/temperature.cpp similarity index 100% rename from Marlin/temperature.cpp rename to lib/Marlin/temperature.cpp diff --git a/Marlin/temperature.h b/lib/Marlin/temperature.h similarity index 100% rename from Marlin/temperature.h rename to lib/Marlin/temperature.h diff --git a/Marlin/thermistornames.h b/lib/Marlin/thermistornames.h similarity index 100% rename from Marlin/thermistornames.h rename to lib/Marlin/thermistornames.h diff --git a/Marlin/thermistortables.h b/lib/Marlin/thermistortables.h similarity index 100% rename from Marlin/thermistortables.h rename to lib/Marlin/thermistortables.h diff --git a/Marlin/twibus.cpp b/lib/Marlin/twibus.cpp similarity index 100% rename from Marlin/twibus.cpp rename to lib/Marlin/twibus.cpp diff --git a/Marlin/twibus.h b/lib/Marlin/twibus.h similarity index 100% rename from Marlin/twibus.h rename to lib/Marlin/twibus.h diff --git a/Marlin/types.h b/lib/Marlin/types.h similarity index 100% rename from Marlin/types.h rename to lib/Marlin/types.h diff --git a/Marlin/uArmAPI.cpp b/lib/Marlin/uArmAPI.cpp similarity index 100% rename from Marlin/uArmAPI.cpp rename to lib/Marlin/uArmAPI.cpp diff --git a/Marlin/uArmAPI.h b/lib/Marlin/uArmAPI.h similarity index 100% rename from Marlin/uArmAPI.h rename to lib/Marlin/uArmAPI.h diff --git a/Marlin/uArmButton.cpp b/lib/Marlin/uArmButton.cpp similarity index 100% rename from Marlin/uArmButton.cpp rename to lib/Marlin/uArmButton.cpp diff --git a/Marlin/uArmButton.h b/lib/Marlin/uArmButton.h similarity index 100% rename from Marlin/uArmButton.h rename to lib/Marlin/uArmButton.h diff --git a/Marlin/uArmBuzzer.cpp b/lib/Marlin/uArmBuzzer.cpp similarity index 100% rename from Marlin/uArmBuzzer.cpp rename to lib/Marlin/uArmBuzzer.cpp diff --git a/Marlin/uArmBuzzer.h b/lib/Marlin/uArmBuzzer.h similarity index 100% rename from Marlin/uArmBuzzer.h rename to lib/Marlin/uArmBuzzer.h diff --git a/Marlin/uArmCalibration.cpp b/lib/Marlin/uArmCalibration.cpp similarity index 100% rename from Marlin/uArmCalibration.cpp rename to lib/Marlin/uArmCalibration.cpp diff --git a/Marlin/uArmCalibration.h b/lib/Marlin/uArmCalibration.h similarity index 100% rename from Marlin/uArmCalibration.h rename to lib/Marlin/uArmCalibration.h diff --git a/Marlin/uArmDebug.cpp b/lib/Marlin/uArmDebug.cpp similarity index 100% rename from Marlin/uArmDebug.cpp rename to lib/Marlin/uArmDebug.cpp diff --git a/Marlin/uArmDebug.h b/lib/Marlin/uArmDebug.h similarity index 100% rename from Marlin/uArmDebug.h rename to lib/Marlin/uArmDebug.h diff --git a/Marlin/uArmGrove.cpp b/lib/Marlin/uArmGrove.cpp similarity index 100% rename from Marlin/uArmGrove.cpp rename to lib/Marlin/uArmGrove.cpp diff --git a/Marlin/uArmGrove.h b/lib/Marlin/uArmGrove.h similarity index 100% rename from Marlin/uArmGrove.h rename to lib/Marlin/uArmGrove.h diff --git a/Marlin/uArmIIC.cpp b/lib/Marlin/uArmIIC.cpp similarity index 100% rename from Marlin/uArmIIC.cpp rename to lib/Marlin/uArmIIC.cpp diff --git a/Marlin/uArmIIC.h b/lib/Marlin/uArmIIC.h similarity index 100% rename from Marlin/uArmIIC.h rename to lib/Marlin/uArmIIC.h diff --git a/Marlin/uArmLed.cpp b/lib/Marlin/uArmLed.cpp similarity index 100% rename from Marlin/uArmLed.cpp rename to lib/Marlin/uArmLed.cpp diff --git a/Marlin/uArmLed.h b/lib/Marlin/uArmLed.h similarity index 100% rename from Marlin/uArmLed.h rename to lib/Marlin/uArmLed.h diff --git a/Marlin/uArmParams.h b/lib/Marlin/uArmParams.h similarity index 100% rename from Marlin/uArmParams.h rename to lib/Marlin/uArmParams.h diff --git a/Marlin/uArmPump.cpp b/lib/Marlin/uArmPump.cpp similarity index 100% rename from Marlin/uArmPump.cpp rename to lib/Marlin/uArmPump.cpp diff --git a/Marlin/uArmPump.h b/lib/Marlin/uArmPump.h similarity index 100% rename from Marlin/uArmPump.h rename to lib/Marlin/uArmPump.h diff --git a/Marlin/uArmRecorder.cpp b/lib/Marlin/uArmRecorder.cpp similarity index 100% rename from Marlin/uArmRecorder.cpp rename to lib/Marlin/uArmRecorder.cpp diff --git a/Marlin/uArmRecorder.h b/lib/Marlin/uArmRecorder.h similarity index 100% rename from Marlin/uArmRecorder.h rename to lib/Marlin/uArmRecorder.h diff --git a/Marlin/uArmReportService.cpp b/lib/Marlin/uArmReportService.cpp similarity index 100% rename from Marlin/uArmReportService.cpp rename to lib/Marlin/uArmReportService.cpp diff --git a/Marlin/uArmReportService.h b/lib/Marlin/uArmReportService.h similarity index 100% rename from Marlin/uArmReportService.h rename to lib/Marlin/uArmReportService.h diff --git a/Marlin/uArmSerial.cpp b/lib/Marlin/uArmSerial.cpp similarity index 100% rename from Marlin/uArmSerial.cpp rename to lib/Marlin/uArmSerial.cpp diff --git a/Marlin/uArmSerial.h b/lib/Marlin/uArmSerial.h similarity index 100% rename from Marlin/uArmSerial.h rename to lib/Marlin/uArmSerial.h diff --git a/Marlin/uArmService.cpp b/lib/Marlin/uArmService.cpp similarity index 100% rename from Marlin/uArmService.cpp rename to lib/Marlin/uArmService.cpp diff --git a/Marlin/uArmService.h b/lib/Marlin/uArmService.h similarity index 100% rename from Marlin/uArmService.h rename to lib/Marlin/uArmService.h diff --git a/Marlin/uArmSwift.cpp b/lib/Marlin/uArmSwift.cpp similarity index 100% rename from Marlin/uArmSwift.cpp rename to lib/Marlin/uArmSwift.cpp diff --git a/Marlin/uArmSwift.h b/lib/Marlin/uArmSwift.h similarity index 100% rename from Marlin/uArmSwift.h rename to lib/Marlin/uArmSwift.h diff --git a/Marlin/uArmUtils.cpp b/lib/Marlin/uArmUtils.cpp similarity index 100% rename from Marlin/uArmUtils.cpp rename to lib/Marlin/uArmUtils.cpp diff --git a/Marlin/uArmUtils.h b/lib/Marlin/uArmUtils.h similarity index 100% rename from Marlin/uArmUtils.h rename to lib/Marlin/uArmUtils.h diff --git a/Marlin/ultralcd.cpp b/lib/Marlin/ultralcd.cpp similarity index 100% rename from Marlin/ultralcd.cpp rename to lib/Marlin/ultralcd.cpp diff --git a/Marlin/ultralcd.h b/lib/Marlin/ultralcd.h similarity index 100% rename from Marlin/ultralcd.h rename to lib/Marlin/ultralcd.h diff --git a/Marlin/ultralcd_impl_DOGM.h b/lib/Marlin/ultralcd_impl_DOGM.h similarity index 100% rename from Marlin/ultralcd_impl_DOGM.h rename to lib/Marlin/ultralcd_impl_DOGM.h diff --git a/Marlin/ultralcd_impl_HD44780.h b/lib/Marlin/ultralcd_impl_HD44780.h similarity index 100% rename from Marlin/ultralcd_impl_HD44780.h rename to lib/Marlin/ultralcd_impl_HD44780.h diff --git a/Marlin/ultralcd_st7920_u8glib_rrd.h b/lib/Marlin/ultralcd_st7920_u8glib_rrd.h similarity index 100% rename from Marlin/ultralcd_st7920_u8glib_rrd.h rename to lib/Marlin/ultralcd_st7920_u8glib_rrd.h diff --git a/Marlin/utf_mapper.h b/lib/Marlin/utf_mapper.h similarity index 100% rename from Marlin/utf_mapper.h rename to lib/Marlin/utf_mapper.h diff --git a/Marlin/utility.cpp b/lib/Marlin/utility.cpp similarity index 100% rename from Marlin/utility.cpp rename to lib/Marlin/utility.cpp diff --git a/Marlin/utility.h b/lib/Marlin/utility.h similarity index 100% rename from Marlin/utility.h rename to lib/Marlin/utility.h diff --git a/Marlin/vector_3.cpp b/lib/Marlin/vector_3.cpp similarity index 100% rename from Marlin/vector_3.cpp rename to lib/Marlin/vector_3.cpp diff --git a/Marlin/vector_3.h b/lib/Marlin/vector_3.h similarity index 100% rename from Marlin/vector_3.h rename to lib/Marlin/vector_3.h diff --git a/Marlin/watchdog.cpp b/lib/Marlin/watchdog.cpp similarity index 100% rename from Marlin/watchdog.cpp rename to lib/Marlin/watchdog.cpp diff --git a/Marlin/watchdog.h b/lib/Marlin/watchdog.h similarity index 100% rename from Marlin/watchdog.h rename to lib/Marlin/watchdog.h diff --git a/lib/readme.txt b/lib/readme.txt new file mode 100644 index 0000000..dbadc3d --- /dev/null +++ b/lib/readme.txt @@ -0,0 +1,36 @@ + +This directory is intended for the project specific (private) libraries. +PlatformIO will compile them to static libraries and link to executable file. + +The source code of each library should be placed in separate directory, like +"lib/private_lib/[here are source files]". + +For example, see how can be organized `Foo` and `Bar` libraries: + +|--lib +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| |--Foo +| | |- Foo.c +| | |- Foo.h +| |- readme.txt --> THIS FILE +|- platformio.ini +|--src + |- main.c + +Then in `src/main.c` you should use: + +#include +#include + +// rest H/C/CPP code + +PlatformIO will find your libraries automatically, configure preprocessor's +include paths and build them. + +More information about PlatformIO Library Dependency Finder +- http://docs.platformio.org/page/librarymanager/ldf.html diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..8f7a295 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,14 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; http://docs.platformio.org/page/projectconf.html + +[env:megaatmega2560] +platform = atmelavr +board = megaatmega2560 +framework = arduino diff --git a/src/Marlin.ino b/src/Marlin.ino new file mode 100644 index 0000000..70fd8ad --- /dev/null +++ b/src/Marlin.ino @@ -0,0 +1,73 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * About Marlin + * + * This firmware is a mashup between Sprinter and grbl. + * - https://github.com/kliment/Sprinter + * - https://github.com/simen/grbl/tree + * + * It has preliminary support for Matthew Roberts advance algorithm + * - http://reprap.org/pipermail/reprap-dev/2011-May/003323.html + */ + +/* All the implementation is done in *.cpp files to get better compatibility with avr-gcc without the Arduino IDE */ +/* Use this file to help the Arduino IDE find which Arduino libraries are needed and to keep documentation on GCode */ + +#include "MarlinConfig.h" + +#if ENABLED(ULTRA_LCD) + #if ENABLED(LCD_I2C_TYPE_PCF8575) + #include + #include + #elif ENABLED(LCD_I2C_TYPE_MCP23017) || ENABLED(LCD_I2C_TYPE_MCP23008) + #include + #include + #elif ENABLED(LCM1602) + #include + #include + #include + #elif ENABLED(DOGLCD) + #include // library for graphics LCD by Oli Kraus (https://github.com/olikraus/U8glib_Arduino) + #else + #include // library for character LCD + #endif +#endif + +#if HAS_DIGIPOTSS + #include +#endif + +#if ENABLED(DIGIPOT_I2C) + #include +#endif + +#if ENABLED(HAVE_TMCDRIVER) + #include + #include +#endif + +#if ENABLED(HAVE_L6470DRIVER) + #include + #include +#endif From f9c764911d5b9a1507d75e132b35390cbc1fdf38 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 13:50:48 +0800 Subject: [PATCH 02/74] test travis --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 935e0ec..658d72c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,3 +63,6 @@ install: script: - platformio ci --lib="." --board=megaatmega2560 +branches: + only: + - travis From 1abdbbf9dc6dea05f0531e1ad9855fa390a582a2 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 13:52:45 +0800 Subject: [PATCH 03/74] test build --- .travis.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 658d72c..301a83c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,11 +53,6 @@ cache: directories: - "~/.platformio" -# env: - # - PLATFORMIO_CI_SRC=path/to/test/file.c - # - PLATFORMIO_CI_SRC= - # - PLATFORMIO_CI_SRC=path/to/test/directory - install: - pip install -U platformio From 6ab5b6d403588cc1014c18c7eb8ee05f4c9a3ed2 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 14:05:49 +0800 Subject: [PATCH 04/74] test build2 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 301a83c..a25dc10 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,7 +57,7 @@ install: - pip install -U platformio script: - - platformio ci --lib="." --board=megaatmega2560 + - platformio run branches: only: - travis From c588857d6af79435bbfe92fda43578d557874dca Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 14:21:46 +0800 Subject: [PATCH 05/74] update eeprom deps --- platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio.ini b/platformio.ini index 8f7a295..063e4ce 100644 --- a/platformio.ini +++ b/platformio.ini @@ -12,3 +12,4 @@ platform = atmelavr board = megaatmega2560 framework = arduino +lib_deps = EEPROM From 1e749f049e8e04b1cb5804b83f70bdef01ef5ff0 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 14:23:48 +0800 Subject: [PATCH 06/74] update script in travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a25dc10..309d871 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,7 +57,7 @@ install: - pip install -U platformio script: - - platformio run + - platformio ci --project-conf=platformio.ini branches: only: - travis From 493b4dbb264072a707b4bf849d780011d332a499 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 14:59:05 +0800 Subject: [PATCH 07/74] deploy firmware --- .travis.yml | 67 +++++++++++------------------------------------------ 1 file changed, 13 insertions(+), 54 deletions(-) diff --git a/.travis.yml b/.travis.yml index 309d871..ed172a2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,63 +1,22 @@ -# Continuous Integration (CI) is the practice, in software -# engineering, of merging all developer working copies with a shared mainline -# several times a day < http://docs.platformio.org/page/ci/index.html > -# -# Documentation: -# -# * Travis CI Embedded Builds with PlatformIO -# < https://docs.travis-ci.com/user/integration/platformio/ > -# -# * PlatformIO integration with Travis CI -# < http://docs.platformio.org/page/ci/travis.html > -# -# * User Guide for `platformio ci` command -# < http://docs.platformio.org/page/userguide/cmd_ci.html > -# -# -# Please choice one of the following templates (proposed below) and uncomment -# it (remove "# " before each line) or use own configuration according to the -# Travis CI documentation (see above). -# - - -# -# Template #1: General project. Test it using existing `platformio.ini`. -# - -# language: python -# python: -# - "2.7" -# -# sudo: false -# cache: -# directories: -# - "~/.platformio" -# -# install: -# - pip install -U platformio -# -# script: -# - platformio run - - -# -# Template #2: The project is intended to by used as a library with examples -# - language: python python: - - "2.7" - +- '2.7' sudo: false cache: - directories: - - "~/.platformio" - + directories: + - "~/.platformio" install: - - pip install -U platformio - +- pip install -U platformio script: - - platformio ci --project-conf=platformio.ini +- platformio ci --project-conf=platformio.ini . +deploy: + provider: releases + api_key: + secure: cldWYIBGnKpJg8bpcgul/omtBVDJOPN8n09aeOGRwu02tNYnIUWBtohi2FgwnfDhh6/2MTx+hX/8bYDLM3LOtaSKgVN3CUTbSsyu16wqS+VFOcsUddXPX4cJVhHLdN61uoAdIeKnuf5IKGF8+80Ft29RBgNFEceu0AR/7mPHfwlVSlPbqXBdwIvAs3Xene4FCXSWKPCoyVYU/ot7h/Q/sU2iC0ZRoNygUuBbARWJZ2eNjgHWzQDj3ooclcwCK4XixLjrzVvdlkY3QKTap4xLL8DHf8kIPAle9qltbWSbkL5Vfs+zI9lA7DN5pCcFTLwqLsUrYmDgLipId9qFuhCZFoZXndd1ky9CieKgPAW1CwjLXCulxlH9DJeEyxab8PmCjFH3HBfp1hR8QSru6LO5/yspLBztTd5R9nv3DdDCSPR6A07WsFimo+X5rg0Rp8FZUdEpb+3CCUSQADkmr5okKKY4a+3pWAb5ZcN5SRPegPzgji21RM6rE+WmzqyjeW12rpqRFyT6I4M48C06cpesKrWTTiBahWKTf6CajIlUDkC+n78LPt3xHgvxwI49UFakz1Q9mBGzpwoG46QHA78jiOD6+fPsM3BuzOEWs9RloA8gY8mnyryY0fT5L941fJXm4Sk+FQ9/OJoEL5GUU4F873PqBbUCrMRvV8QYiI73Cjc= + file: ".pioenvs/megaatmega2560/firmware.hex" + on: + repo: uArm-Developer/SwiftProForArduino + branch: travis branches: only: - travis From d0e6bba28eed417ffd6fc43b7fe30163f2cac541 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 15:02:00 +0800 Subject: [PATCH 08/74] use build env --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ed172a2..2d0b82b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ deploy: provider: releases api_key: secure: cldWYIBGnKpJg8bpcgul/omtBVDJOPN8n09aeOGRwu02tNYnIUWBtohi2FgwnfDhh6/2MTx+hX/8bYDLM3LOtaSKgVN3CUTbSsyu16wqS+VFOcsUddXPX4cJVhHLdN61uoAdIeKnuf5IKGF8+80Ft29RBgNFEceu0AR/7mPHfwlVSlPbqXBdwIvAs3Xene4FCXSWKPCoyVYU/ot7h/Q/sU2iC0ZRoNygUuBbARWJZ2eNjgHWzQDj3ooclcwCK4XixLjrzVvdlkY3QKTap4xLL8DHf8kIPAle9qltbWSbkL5Vfs+zI9lA7DN5pCcFTLwqLsUrYmDgLipId9qFuhCZFoZXndd1ky9CieKgPAW1CwjLXCulxlH9DJeEyxab8PmCjFH3HBfp1hR8QSru6LO5/yspLBztTd5R9nv3DdDCSPR6A07WsFimo+X5rg0Rp8FZUdEpb+3CCUSQADkmr5okKKY4a+3pWAb5ZcN5SRPegPzgji21RM6rE+WmzqyjeW12rpqRFyT6I4M48C06cpesKrWTTiBahWKTf6CajIlUDkC+n78LPt3xHgvxwI49UFakz1Q9mBGzpwoG46QHA78jiOD6+fPsM3BuzOEWs9RloA8gY8mnyryY0fT5L941fJXm4Sk+FQ9/OJoEL5GUU4F873PqBbUCrMRvV8QYiI73Cjc= - file: ".pioenvs/megaatmega2560/firmware.hex" + file: "$TRAVIS_BUILD_DIR/.pioenvs/megaatmega2560/firmware.hex" on: repo: uArm-Developer/SwiftProForArduino branch: travis From 0f532b89c2b231f4588377018c02d888c996d479 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 15:07:18 +0800 Subject: [PATCH 09/74] use platformio run --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2d0b82b..30516d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ cache: install: - pip install -U platformio script: -- platformio ci --project-conf=platformio.ini . +- platformio run --disable-auto-clean deploy: provider: releases api_key: From 87c2c5700585dd1e71f24071aa4e242732df182b Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 15:13:11 +0800 Subject: [PATCH 10/74] use /tmp/build for build output --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 30516d2..9ac1e6e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,12 +8,13 @@ cache: install: - pip install -U platformio script: -- platformio run --disable-auto-clean +- mkdir /tmp/build +- platformio ci --build-dir="/tmp/build" --keep-build-dir --project-conf=platformio.ini . deploy: provider: releases api_key: secure: cldWYIBGnKpJg8bpcgul/omtBVDJOPN8n09aeOGRwu02tNYnIUWBtohi2FgwnfDhh6/2MTx+hX/8bYDLM3LOtaSKgVN3CUTbSsyu16wqS+VFOcsUddXPX4cJVhHLdN61uoAdIeKnuf5IKGF8+80Ft29RBgNFEceu0AR/7mPHfwlVSlPbqXBdwIvAs3Xene4FCXSWKPCoyVYU/ot7h/Q/sU2iC0ZRoNygUuBbARWJZ2eNjgHWzQDj3ooclcwCK4XixLjrzVvdlkY3QKTap4xLL8DHf8kIPAle9qltbWSbkL5Vfs+zI9lA7DN5pCcFTLwqLsUrYmDgLipId9qFuhCZFoZXndd1ky9CieKgPAW1CwjLXCulxlH9DJeEyxab8PmCjFH3HBfp1hR8QSru6LO5/yspLBztTd5R9nv3DdDCSPR6A07WsFimo+X5rg0Rp8FZUdEpb+3CCUSQADkmr5okKKY4a+3pWAb5ZcN5SRPegPzgji21RM6rE+WmzqyjeW12rpqRFyT6I4M48C06cpesKrWTTiBahWKTf6CajIlUDkC+n78LPt3xHgvxwI49UFakz1Q9mBGzpwoG46QHA78jiOD6+fPsM3BuzOEWs9RloA8gY8mnyryY0fT5L941fJXm4Sk+FQ9/OJoEL5GUU4F873PqBbUCrMRvV8QYiI73Cjc= - file: "$TRAVIS_BUILD_DIR/.pioenvs/megaatmega2560/firmware.hex" + file: "/tmp/build/.pioenvs/megaatmega2560/firmware.hex" on: repo: uArm-Developer/SwiftProForArduino branch: travis From 8f75348e447429dcae8131d0162aaa72f744e373 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 15:15:50 +0800 Subject: [PATCH 11/74] build for v3.1.4 --- update.log | 1 + 1 file changed, 1 insertion(+) diff --git a/update.log b/update.log index 34dc0ab..82ea679 100644 --- a/update.log +++ b/update.log @@ -1,3 +1,4 @@ + v3.1.4 20170527 support grove ultrasonic(use D8 port) From 58939032212ae34fdc518ebdd46ad46a9275df4b Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2017 15:21:12 +0800 Subject: [PATCH 12/74] build for v3.1.4 --- update.log | 1 - 1 file changed, 1 deletion(-) diff --git a/update.log b/update.log index 82ea679..34dc0ab 100644 --- a/update.log +++ b/update.log @@ -1,4 +1,3 @@ - v3.1.4 20170527 support grove ultrasonic(use D8 port) From 80b49d82838862d1871089bf2e0890ca5d82563b Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 24 Jul 2017 12:04:59 +0800 Subject: [PATCH 13/74] update travis.yml --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9ac1e6e..afdd7a1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,6 @@ deploy: file: "/tmp/build/.pioenvs/megaatmega2560/firmware.hex" on: repo: uArm-Developer/SwiftProForArduino - branch: travis branches: only: - travis From e19ea460cdd70bbad0e8ae1bc349ed26dbcae967 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 24 Jul 2017 12:10:18 +0800 Subject: [PATCH 14/74] update travis for build develop --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index afdd7a1..a1ca50d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,3 +20,4 @@ deploy: branches: only: - travis + - develop From 8e83538de9fd95403e320eaba94cf3b1081868f7 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Thu, 31 May 2018 19:49:54 +0800 Subject: [PATCH 15/74] update --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5bf6530..eb60cc6 100644 --- a/README.md +++ b/README.md @@ -8,4 +8,7 @@ Visit http://www.ufactory.cc/#/en/support/ for more details. ## License -Swift Pro Firmware is published under the [GPL license](/LICENSE) \ No newline at end of file +Swift Pro Firmware is published under the [GPL license](/LICENSE) + + +# test From 37afe5b444745af1e9a34bf13f9df4179b71180c Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Thu, 31 May 2018 19:56:29 +0800 Subject: [PATCH 16/74] clear --- LICENSE | 677 -- README.md | 14 - buildroot/bin/build_marlin | 3 - .../bin/generate_version_header_for_marlin | 55 - buildroot/bin/opt_disable | 5 - buildroot/bin/opt_disable_adv | 5 - buildroot/bin/opt_enable | 5 - buildroot/bin/opt_enable_adv | 5 - buildroot/bin/opt_set | 3 - buildroot/bin/opt_set_adv | 3 - buildroot/bin/pins_set | 3 - buildroot/bin/restore_configs | 9 - buildroot/bin/use_example_configs | 7 - buildroot/etc/.astylerc | 23 - buildroot/share/fonts/HD44780_C.fon | Bin 4176 -> 0 bytes buildroot/share/fonts/HD44780_J.fon | Bin 4176 -> 0 bytes buildroot/share/fonts/HD44780_W.fon | Bin 4432 -> 0 bytes buildroot/share/fonts/ISO10646-1.fon | Bin 4192 -> 0 bytes buildroot/share/fonts/ISO10646-4_Greek.fon | Bin 4224 -> 0 bytes buildroot/share/fonts/ISO10646-5_Cyrillic.fon | Bin 4224 -> 0 bytes buildroot/share/fonts/ISO10646_CN.fon | Bin 6192 -> 0 bytes buildroot/share/fonts/ISO10646_Kana.fon | Bin 4208 -> 0 bytes buildroot/share/fonts/Marlin_symbols.fon | Bin 784 -> 0 bytes buildroot/share/fonts/README.md | 23 - buildroot/share/fonts/make_fonts.bat | 9 - buildroot/share/git/firstpush | 3 - buildroot/share/git/ghtp | 33 - buildroot/share/git/mfinfo | 40 - buildroot/share/git/mfinit | 8 - buildroot/share/git/mfnew | 23 - buildroot/share/git/mfpr | 40 - buildroot/share/git/mfprune | 22 - buildroot/share/git/mfrb | 21 - buildroot/share/git/mfup | 53 - buildroot/share/pixmaps/logo/SwiftPro.png | Bin 435912 -> 0 bytes buildroot/share/pixmaps/logo/marlin-1080.png | Bin 56379 -> 0 bytes buildroot/share/pixmaps/logo/marlin-250.png | Bin 10741 -> 0 bytes .../share/pixmaps/logo/marlin-old-250.png | Bin 4172 -> 0 bytes .../share/pixmaps/logo/marlin-old-627.png | Bin 39702 -> 0 bytes buildroot/share/pixmaps/logo/marlin-old.svg | 106 - buildroot/share/pixmaps/logo/marlin.svg | 131 - .../share/scripts/createSpeedLookupTable.py | 50 - .../scripts/createTemperatureLookupMarlin.py | 156 - .../share/scripts/findMissingTranslations.sh | 14 - buildroot/share/scripts/g29_auto.py | 186 - lib/Marlin/Conditionals.h | 27 - lib/Marlin/Conditionals_LCD.h | 319 - lib/Marlin/Conditionals_post.h | 663 -- lib/Marlin/Configuration.h | 1363 --- lib/Marlin/Configuration_adv.h | 799 -- lib/Marlin/GroveColorSensor.cpp | 270 - lib/Marlin/GroveColorSensor.h | 68 - lib/Marlin/GroveRegisters.h | 67 - lib/Marlin/M100_Free_Mem_Chk.cpp | 248 - lib/Marlin/Makefile | 521 - lib/Marlin/Marlin.h | 429 - lib/Marlin/Marlin.ino | 73 - lib/Marlin/MarlinConfig.h | 41 - lib/Marlin/MarlinSerial.cpp | 545 - lib/Marlin/MarlinSerial.h | 185 - lib/Marlin/Marlin_main.cpp | 9492 ----------------- lib/Marlin/SanityCheck.h | 736 -- lib/Marlin/Sd2Card.cpp | 719 -- lib/Marlin/Sd2Card.h | 251 - lib/Marlin/SdBaseFile.cpp | 1826 ---- lib/Marlin/SdBaseFile.h | 492 - lib/Marlin/SdFatConfig.h | 134 - lib/Marlin/SdFatStructs.h | 655 -- lib/Marlin/SdFatUtil.cpp | 91 - lib/Marlin/SdFatUtil.h | 57 - lib/Marlin/SdFile.cpp | 102 - lib/Marlin/SdFile.h | 63 - lib/Marlin/SdInfo.h | 289 - lib/Marlin/SdVolume.cpp | 420 - lib/Marlin/SdVolume.h | 227 - lib/Marlin/Ultrasonic.cpp | 60 - lib/Marlin/Ultrasonic.h | 37 - lib/Marlin/Version.h | 92 - lib/Marlin/X_IIC.cpp | 217 - lib/Marlin/X_IIC.h | 13 - lib/Marlin/Y_IIC.cpp | 202 - lib/Marlin/Y_IIC.h | 13 - lib/Marlin/Z_IIC.cpp | 213 - lib/Marlin/Z_IIC.h | 13 - lib/Marlin/blinkm.cpp | 46 - lib/Marlin/blinkm.h | 31 - lib/Marlin/boards.h | 102 - lib/Marlin/buzzer.h | 145 - lib/Marlin/cardreader.cpp | 624 -- lib/Marlin/cardreader.h | 129 - lib/Marlin/circularqueue.h | 145 - lib/Marlin/configuration_store.cpp | 994 -- lib/Marlin/configuration_store.h | 44 - lib/Marlin/dac_mcp4728.cpp | 138 - lib/Marlin/dac_mcp4728.h | 65 - lib/Marlin/digipot_mcp4451.cpp | 79 - lib/Marlin/dogm_bitmaps.h | 422 - lib/Marlin/dogm_font_data_6x9_marlin.h | 180 - lib/Marlin/dogm_font_data_HD44780_C.h | 194 - lib/Marlin/dogm_font_data_HD44780_J.h | 192 - lib/Marlin/dogm_font_data_HD44780_W.h | 226 - lib/Marlin/dogm_font_data_ISO10646_1.h | 198 - .../dogm_font_data_ISO10646_5_Cyrillic.h | 196 - lib/Marlin/dogm_font_data_ISO10646_CN.h | 293 - lib/Marlin/dogm_font_data_ISO10646_Greek.h | 206 - lib/Marlin/dogm_font_data_ISO10646_Kana.h | 192 - lib/Marlin/dogm_font_data_Marlin_symbols.h | 45 - lib/Marlin/duration_t.h | 155 - lib/Marlin/endstops.cpp | 382 - lib/Marlin/endstops.h | 95 - lib/Marlin/enum.h | 193 - .../Cartesio/Configuration.h | 1327 --- .../Cartesio/Configuration_adv.h | 799 -- .../Cartesio/_Bootscreen.h | 103 - .../Felix/Configuration.h | 1310 --- .../Felix/Configuration_adv.h | 799 -- .../Felix/DUAL/Configuration.h | 1308 --- .../example_configurations/Felix/README.md | 60 - .../Hephestos/Configuration.h | 1319 --- .../Hephestos/Configuration_adv.h | 799 -- .../Hephestos_2/Configuration.h | 1321 --- .../Hephestos_2/Configuration_adv.h | 799 -- .../Hephestos_2/README.md | 14 - .../Hephestos_2/_Bootscreen.h | 103 - .../K8200/Configuration.h | 1344 --- .../K8200/Configuration_adv.h | 805 -- .../example_configurations/K8200/README.md | 20 - .../K8400/Configuration.h | 1327 --- .../K8400/Configuration_adv.h | 799 -- .../K8400/Dual-head/Configuration.h | 1327 --- .../example_configurations/K8400/README.md | 15 - .../RepRapWorld/Megatronics/Configuration.h | 1327 --- .../RigidBot/Configuration.h | 1327 --- .../RigidBot/Configuration_adv.h | 799 -- .../SCARA/Configuration.h | 1335 --- .../SCARA/Configuration_adv.h | 799 -- .../Swift/Configuration.h | 1363 --- .../Swift/Configuration_adv.h | 799 -- .../TAZ4/Configuration.h | 1348 --- .../TAZ4/Configuration_adv.h | 807 -- .../WITBOX/Configuration.h | 1319 --- .../WITBOX/Configuration_adv.h | 799 -- .../adafruit/ST7565/Configuration.h | 1327 --- .../delta/biv2.5/Configuration.h | 1420 --- .../delta/biv2.5/Configuration_adv.h | 801 -- .../delta/generic/Configuration.h | 1414 --- .../delta/generic/Configuration_adv.h | 801 -- .../delta/kossel_mini/Configuration.h | 1417 --- .../delta/kossel_mini/Configuration_adv.h | 800 -- .../delta/kossel_pro/Configuration.h | 1417 --- .../delta/kossel_pro/Configuration_adv.h | 805 -- .../delta/kossel_pro/README.md | 5 - .../delta/kossel_xl/Configuration.h | 1420 --- .../delta/kossel_xl/Configuration_adv.h | 801 -- .../delta/kossel_xl/README.md | 21 - .../makibox/Configuration.h | 1330 --- .../makibox/Configuration_adv.h | 799 -- .../tvrrug/Round2/Configuration.h | 1321 --- .../tvrrug/Round2/Configuration_adv.h | 799 -- lib/Marlin/fastio.h | 4051 ------- lib/Marlin/language.h | 244 - lib/Marlin/language_an.h | 157 - lib/Marlin/language_bg.h | 159 - lib/Marlin/language_ca.h | 158 - lib/Marlin/language_cn.h | 162 - lib/Marlin/language_cz.h | 262 - lib/Marlin/language_da.h | 197 - lib/Marlin/language_de.h | 227 - lib/Marlin/language_el-gr.h | 198 - lib/Marlin/language_el.h | 254 - lib/Marlin/language_en.h | 688 -- lib/Marlin/language_es.h | 195 - lib/Marlin/language_eu.h | 157 - lib/Marlin/language_fi.h | 158 - lib/Marlin/language_fr.h | 171 - lib/Marlin/language_gl.h | 259 - lib/Marlin/language_hr.h | 197 - lib/Marlin/language_it.h | 238 - lib/Marlin/language_kana.h | 292 - lib/Marlin/language_kana_utf8.h | 226 - lib/Marlin/language_nl.h | 170 - lib/Marlin/language_pl.h | 193 - lib/Marlin/language_pt-br.h | 170 - lib/Marlin/language_pt-br_utf8.h | 170 - lib/Marlin/language_pt.h | 180 - lib/Marlin/language_pt_utf8.h | 180 - lib/Marlin/language_ru.h | 169 - lib/Marlin/language_test.h | 237 - lib/Marlin/macros.h | 121 - lib/Marlin/mesh_bed_leveling.cpp | 37 - lib/Marlin/mesh_bed_leveling.h | 105 - lib/Marlin/nozzle.h | 195 - lib/Marlin/paj7620.cpp | 396 - lib/Marlin/paj7620.h | 126 - lib/Marlin/pins.h | 474 - lib/Marlin/pins_3DRAG.h | 95 - lib/Marlin/pins_5DPRINT.h | 79 - lib/Marlin/pins_99.h | 53 - lib/Marlin/pins_A4JP.h | 141 - lib/Marlin/pins_AZTEEG_X1.h | 30 - lib/Marlin/pins_AZTEEG_X3.h | 56 - lib/Marlin/pins_AZTEEG_X3_PRO.h | 112 - lib/Marlin/pins_BAM_DICE_DUE.h | 38 - lib/Marlin/pins_BQ_ZUM_MEGA_3D.h | 69 - lib/Marlin/pins_BRAINWAVE.h | 66 - lib/Marlin/pins_BRAINWAVE_PRO.h | 77 - lib/Marlin/pins_CHEAPTRONIC.h | 87 - lib/Marlin/pins_CNCONTROLS_11.h | 101 - lib/Marlin/pins_CNCONTROLS_12.h | 105 - lib/Marlin/pins_ELEFU_3.h | 125 - lib/Marlin/pins_FELIX2.h | 47 - lib/Marlin/pins_GEN3_MONOLITHIC.h | 69 - lib/Marlin/pins_GEN3_PLUS.h | 60 - lib/Marlin/pins_GEN6.h | 75 - lib/Marlin/pins_GEN6_DELUXE.h | 29 - lib/Marlin/pins_GEN7_12.h | 87 - lib/Marlin/pins_GEN7_13.h | 30 - lib/Marlin/pins_GEN7_14.h | 71 - lib/Marlin/pins_GEN7_CUSTOM.h | 90 - lib/Marlin/pins_K8200.h | 32 - lib/Marlin/pins_K8400.h | 52 - lib/Marlin/pins_LEAPFROG.h | 73 - lib/Marlin/pins_MEGACONTROLLER.h | 123 - lib/Marlin/pins_MEGATRONICS.h | 97 - lib/Marlin/pins_MEGATRONICS_2.h | 104 - lib/Marlin/pins_MEGATRONICS_3.h | 147 - lib/Marlin/pins_MELZI.h | 34 - lib/Marlin/pins_MELZI_MAKR3D.h | 34 - lib/Marlin/pins_MINIRAMBO.h | 116 - lib/Marlin/pins_MINITRONICS.h | 109 - lib/Marlin/pins_MKS_13.h | 128 - lib/Marlin/pins_MKS_BASE.h | 36 - lib/Marlin/pins_OMCA.h | 107 - lib/Marlin/pins_OMCA_A.h | 92 - lib/Marlin/pins_PRINTRBOARD.h | 136 - lib/Marlin/pins_PRINTRBOARD_REVF.h | 137 - lib/Marlin/pins_RAMBO.h | 181 - lib/Marlin/pins_RAMPS.h | 344 - lib/Marlin/pins_RAMPS_13.h | 41 - lib/Marlin/pins_RAMPS_OLD.h | 80 - lib/Marlin/pins_RIGIDBOARD.h | 117 - lib/Marlin/pins_RIGIDBOARD_V2.h | 43 - lib/Marlin/pins_RUMBA.h | 126 - lib/Marlin/pins_SAINSMART_2IN1.h | 38 - lib/Marlin/pins_SANGUINOLOLU_11.h | 191 - lib/Marlin/pins_SANGUINOLOLU_12.h | 42 - lib/Marlin/pins_SAV_MKI.h | 119 - lib/Marlin/pins_SETHI.h | 86 - lib/Marlin/pins_STB_11.h | 34 - lib/Marlin/pins_Swift.h | 148 - lib/Marlin/pins_TEENSY2.h | 122 - lib/Marlin/pins_TEENSYLU.h | 93 - lib/Marlin/pins_ULTIMAIN_2.h | 94 - lib/Marlin/pins_ULTIMAKER.h | 119 - lib/Marlin/pins_ULTIMAKER_OLD.h | 74 - lib/Marlin/planner.cpp | 1222 --- lib/Marlin/planner.h | 342 - lib/Marlin/planner_bezier.cpp | 203 - lib/Marlin/planner_bezier.h | 43 - lib/Marlin/point_t.h | 77 - lib/Marlin/printcounter.cpp | 233 - lib/Marlin/printcounter.h | 175 - lib/Marlin/qr_solve.cpp | 1591 --- lib/Marlin/qr_solve.h | 44 - lib/Marlin/servo.cpp | 320 - lib/Marlin/servo.h | 161 - lib/Marlin/speed_lookuptable.h | 174 - lib/Marlin/stepper.cpp | 1260 --- lib/Marlin/stepper.h | 380 - lib/Marlin/stepper_dac.cpp | 114 - lib/Marlin/stepper_dac.h | 55 - lib/Marlin/stepper_indirection.cpp | 245 - lib/Marlin/stepper_indirection.h | 395 - lib/Marlin/stopwatch.cpp | 106 - lib/Marlin/stopwatch.h | 117 - lib/Marlin/temperature.cpp | 1873 ---- lib/Marlin/temperature.h | 465 - lib/Marlin/thermistornames.h | 95 - lib/Marlin/thermistortables.h | 1323 --- lib/Marlin/twibus.cpp | 118 - lib/Marlin/twibus.h | 137 - lib/Marlin/types.h | 28 - lib/Marlin/uArmAPI.cpp | 991 -- lib/Marlin/uArmAPI.h | 224 - lib/Marlin/uArmButton.cpp | 138 - lib/Marlin/uArmButton.h | 76 - lib/Marlin/uArmBuzzer.cpp | 62 - lib/Marlin/uArmBuzzer.h | 42 - lib/Marlin/uArmCalibration.cpp | 177 - lib/Marlin/uArmCalibration.h | 31 - lib/Marlin/uArmDebug.cpp | 203 - lib/Marlin/uArmDebug.h | 34 - lib/Marlin/uArmGrove.cpp | 214 - lib/Marlin/uArmGrove.h | 31 - lib/Marlin/uArmIIC.cpp | 187 - lib/Marlin/uArmIIC.h | 65 - lib/Marlin/uArmLed.cpp | 120 - lib/Marlin/uArmLed.h | 58 - lib/Marlin/uArmParams.h | 92 - lib/Marlin/uArmPump.cpp | 62 - lib/Marlin/uArmPump.h | 30 - lib/Marlin/uArmRecorder.cpp | 61 - lib/Marlin/uArmRecorder.h | 37 - lib/Marlin/uArmReportService.cpp | 115 - lib/Marlin/uArmReportService.h | 40 - lib/Marlin/uArmSerial.cpp | 72 - lib/Marlin/uArmSerial.h | 46 - lib/Marlin/uArmService.cpp | 876 -- lib/Marlin/uArmService.h | 78 - lib/Marlin/uArmSwift.cpp | 1260 --- lib/Marlin/uArmSwift.h | 121 - lib/Marlin/uArmUtils.cpp | 11 - lib/Marlin/uArmUtils.h | 17 - lib/Marlin/ultralcd.cpp | 3166 ------ lib/Marlin/ultralcd.h | 187 - lib/Marlin/ultralcd_impl_DOGM.h | 634 -- lib/Marlin/ultralcd_impl_HD44780.h | 978 -- lib/Marlin/ultralcd_st7920_u8glib_rrd.h | 191 - lib/Marlin/utf_mapper.h | 358 - lib/Marlin/utility.cpp | 34 - lib/Marlin/utility.h | 28 - lib/Marlin/vector_3.cpp | 160 - lib/Marlin/vector_3.h | 82 - lib/Marlin/watchdog.cpp | 56 - lib/Marlin/watchdog.h | 36 - lib/readme.txt | 36 - platformio.ini | 15 - src/Marlin.ino | 73 - update.log | 10 - 329 files changed, 113821 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 buildroot/bin/build_marlin delete mode 100644 buildroot/bin/generate_version_header_for_marlin delete mode 100644 buildroot/bin/opt_disable delete mode 100644 buildroot/bin/opt_disable_adv delete mode 100644 buildroot/bin/opt_enable delete mode 100644 buildroot/bin/opt_enable_adv delete mode 100644 buildroot/bin/opt_set delete mode 100644 buildroot/bin/opt_set_adv delete mode 100644 buildroot/bin/pins_set delete mode 100644 buildroot/bin/restore_configs delete mode 100644 buildroot/bin/use_example_configs delete mode 100644 buildroot/etc/.astylerc delete mode 100644 buildroot/share/fonts/HD44780_C.fon delete mode 100644 buildroot/share/fonts/HD44780_J.fon delete mode 100644 buildroot/share/fonts/HD44780_W.fon delete mode 100644 buildroot/share/fonts/ISO10646-1.fon delete mode 100644 buildroot/share/fonts/ISO10646-4_Greek.fon delete mode 100644 buildroot/share/fonts/ISO10646-5_Cyrillic.fon delete mode 100644 buildroot/share/fonts/ISO10646_CN.fon delete mode 100644 buildroot/share/fonts/ISO10646_Kana.fon delete mode 100644 buildroot/share/fonts/Marlin_symbols.fon delete mode 100644 buildroot/share/fonts/README.md delete mode 100644 buildroot/share/fonts/make_fonts.bat delete mode 100644 buildroot/share/git/firstpush delete mode 100644 buildroot/share/git/ghtp delete mode 100644 buildroot/share/git/mfinfo delete mode 100644 buildroot/share/git/mfinit delete mode 100644 buildroot/share/git/mfnew delete mode 100644 buildroot/share/git/mfpr delete mode 100644 buildroot/share/git/mfprune delete mode 100644 buildroot/share/git/mfrb delete mode 100644 buildroot/share/git/mfup delete mode 100644 buildroot/share/pixmaps/logo/SwiftPro.png delete mode 100644 buildroot/share/pixmaps/logo/marlin-1080.png delete mode 100644 buildroot/share/pixmaps/logo/marlin-250.png delete mode 100644 buildroot/share/pixmaps/logo/marlin-old-250.png delete mode 100644 buildroot/share/pixmaps/logo/marlin-old-627.png delete mode 100644 buildroot/share/pixmaps/logo/marlin-old.svg delete mode 100644 buildroot/share/pixmaps/logo/marlin.svg delete mode 100644 buildroot/share/scripts/createSpeedLookupTable.py delete mode 100644 buildroot/share/scripts/createTemperatureLookupMarlin.py delete mode 100644 buildroot/share/scripts/findMissingTranslations.sh delete mode 100644 buildroot/share/scripts/g29_auto.py delete mode 100644 lib/Marlin/Conditionals.h delete mode 100644 lib/Marlin/Conditionals_LCD.h delete mode 100644 lib/Marlin/Conditionals_post.h delete mode 100644 lib/Marlin/Configuration.h delete mode 100644 lib/Marlin/Configuration_adv.h delete mode 100644 lib/Marlin/GroveColorSensor.cpp delete mode 100644 lib/Marlin/GroveColorSensor.h delete mode 100644 lib/Marlin/GroveRegisters.h delete mode 100644 lib/Marlin/M100_Free_Mem_Chk.cpp delete mode 100644 lib/Marlin/Makefile delete mode 100644 lib/Marlin/Marlin.h delete mode 100644 lib/Marlin/Marlin.ino delete mode 100644 lib/Marlin/MarlinConfig.h delete mode 100644 lib/Marlin/MarlinSerial.cpp delete mode 100644 lib/Marlin/MarlinSerial.h delete mode 100644 lib/Marlin/Marlin_main.cpp delete mode 100644 lib/Marlin/SanityCheck.h delete mode 100644 lib/Marlin/Sd2Card.cpp delete mode 100644 lib/Marlin/Sd2Card.h delete mode 100644 lib/Marlin/SdBaseFile.cpp delete mode 100644 lib/Marlin/SdBaseFile.h delete mode 100644 lib/Marlin/SdFatConfig.h delete mode 100644 lib/Marlin/SdFatStructs.h delete mode 100644 lib/Marlin/SdFatUtil.cpp delete mode 100644 lib/Marlin/SdFatUtil.h delete mode 100644 lib/Marlin/SdFile.cpp delete mode 100644 lib/Marlin/SdFile.h delete mode 100644 lib/Marlin/SdInfo.h delete mode 100644 lib/Marlin/SdVolume.cpp delete mode 100644 lib/Marlin/SdVolume.h delete mode 100644 lib/Marlin/Ultrasonic.cpp delete mode 100644 lib/Marlin/Ultrasonic.h delete mode 100644 lib/Marlin/Version.h delete mode 100644 lib/Marlin/X_IIC.cpp delete mode 100644 lib/Marlin/X_IIC.h delete mode 100644 lib/Marlin/Y_IIC.cpp delete mode 100644 lib/Marlin/Y_IIC.h delete mode 100644 lib/Marlin/Z_IIC.cpp delete mode 100644 lib/Marlin/Z_IIC.h delete mode 100644 lib/Marlin/blinkm.cpp delete mode 100644 lib/Marlin/blinkm.h delete mode 100644 lib/Marlin/boards.h delete mode 100644 lib/Marlin/buzzer.h delete mode 100644 lib/Marlin/cardreader.cpp delete mode 100644 lib/Marlin/cardreader.h delete mode 100644 lib/Marlin/circularqueue.h delete mode 100644 lib/Marlin/configuration_store.cpp delete mode 100644 lib/Marlin/configuration_store.h delete mode 100644 lib/Marlin/dac_mcp4728.cpp delete mode 100644 lib/Marlin/dac_mcp4728.h delete mode 100644 lib/Marlin/digipot_mcp4451.cpp delete mode 100644 lib/Marlin/dogm_bitmaps.h delete mode 100644 lib/Marlin/dogm_font_data_6x9_marlin.h delete mode 100644 lib/Marlin/dogm_font_data_HD44780_C.h delete mode 100644 lib/Marlin/dogm_font_data_HD44780_J.h delete mode 100644 lib/Marlin/dogm_font_data_HD44780_W.h delete mode 100644 lib/Marlin/dogm_font_data_ISO10646_1.h delete mode 100644 lib/Marlin/dogm_font_data_ISO10646_5_Cyrillic.h delete mode 100644 lib/Marlin/dogm_font_data_ISO10646_CN.h delete mode 100644 lib/Marlin/dogm_font_data_ISO10646_Greek.h delete mode 100644 lib/Marlin/dogm_font_data_ISO10646_Kana.h delete mode 100644 lib/Marlin/dogm_font_data_Marlin_symbols.h delete mode 100644 lib/Marlin/duration_t.h delete mode 100644 lib/Marlin/endstops.cpp delete mode 100644 lib/Marlin/endstops.h delete mode 100644 lib/Marlin/enum.h delete mode 100644 lib/Marlin/example_configurations/Cartesio/Configuration.h delete mode 100644 lib/Marlin/example_configurations/Cartesio/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/Cartesio/_Bootscreen.h delete mode 100644 lib/Marlin/example_configurations/Felix/Configuration.h delete mode 100644 lib/Marlin/example_configurations/Felix/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/Felix/DUAL/Configuration.h delete mode 100644 lib/Marlin/example_configurations/Felix/README.md delete mode 100644 lib/Marlin/example_configurations/Hephestos/Configuration.h delete mode 100644 lib/Marlin/example_configurations/Hephestos/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/Hephestos_2/Configuration.h delete mode 100644 lib/Marlin/example_configurations/Hephestos_2/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/Hephestos_2/README.md delete mode 100644 lib/Marlin/example_configurations/Hephestos_2/_Bootscreen.h delete mode 100644 lib/Marlin/example_configurations/K8200/Configuration.h delete mode 100644 lib/Marlin/example_configurations/K8200/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/K8200/README.md delete mode 100644 lib/Marlin/example_configurations/K8400/Configuration.h delete mode 100644 lib/Marlin/example_configurations/K8400/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/K8400/Dual-head/Configuration.h delete mode 100644 lib/Marlin/example_configurations/K8400/README.md delete mode 100644 lib/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h delete mode 100644 lib/Marlin/example_configurations/RigidBot/Configuration.h delete mode 100644 lib/Marlin/example_configurations/RigidBot/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/SCARA/Configuration.h delete mode 100644 lib/Marlin/example_configurations/SCARA/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/Swift/Configuration.h delete mode 100644 lib/Marlin/example_configurations/Swift/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/TAZ4/Configuration.h delete mode 100644 lib/Marlin/example_configurations/TAZ4/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/WITBOX/Configuration.h delete mode 100644 lib/Marlin/example_configurations/WITBOX/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/adafruit/ST7565/Configuration.h delete mode 100644 lib/Marlin/example_configurations/delta/biv2.5/Configuration.h delete mode 100644 lib/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/delta/generic/Configuration.h delete mode 100644 lib/Marlin/example_configurations/delta/generic/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/delta/kossel_mini/Configuration.h delete mode 100644 lib/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/delta/kossel_pro/Configuration.h delete mode 100644 lib/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/delta/kossel_pro/README.md delete mode 100644 lib/Marlin/example_configurations/delta/kossel_xl/Configuration.h delete mode 100644 lib/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/delta/kossel_xl/README.md delete mode 100644 lib/Marlin/example_configurations/makibox/Configuration.h delete mode 100644 lib/Marlin/example_configurations/makibox/Configuration_adv.h delete mode 100644 lib/Marlin/example_configurations/tvrrug/Round2/Configuration.h delete mode 100644 lib/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h delete mode 100644 lib/Marlin/fastio.h delete mode 100644 lib/Marlin/language.h delete mode 100644 lib/Marlin/language_an.h delete mode 100644 lib/Marlin/language_bg.h delete mode 100644 lib/Marlin/language_ca.h delete mode 100644 lib/Marlin/language_cn.h delete mode 100644 lib/Marlin/language_cz.h delete mode 100644 lib/Marlin/language_da.h delete mode 100644 lib/Marlin/language_de.h delete mode 100644 lib/Marlin/language_el-gr.h delete mode 100644 lib/Marlin/language_el.h delete mode 100644 lib/Marlin/language_en.h delete mode 100644 lib/Marlin/language_es.h delete mode 100644 lib/Marlin/language_eu.h delete mode 100644 lib/Marlin/language_fi.h delete mode 100644 lib/Marlin/language_fr.h delete mode 100644 lib/Marlin/language_gl.h delete mode 100644 lib/Marlin/language_hr.h delete mode 100644 lib/Marlin/language_it.h delete mode 100644 lib/Marlin/language_kana.h delete mode 100644 lib/Marlin/language_kana_utf8.h delete mode 100644 lib/Marlin/language_nl.h delete mode 100644 lib/Marlin/language_pl.h delete mode 100644 lib/Marlin/language_pt-br.h delete mode 100644 lib/Marlin/language_pt-br_utf8.h delete mode 100644 lib/Marlin/language_pt.h delete mode 100644 lib/Marlin/language_pt_utf8.h delete mode 100644 lib/Marlin/language_ru.h delete mode 100644 lib/Marlin/language_test.h delete mode 100644 lib/Marlin/macros.h delete mode 100644 lib/Marlin/mesh_bed_leveling.cpp delete mode 100644 lib/Marlin/mesh_bed_leveling.h delete mode 100644 lib/Marlin/nozzle.h delete mode 100644 lib/Marlin/paj7620.cpp delete mode 100644 lib/Marlin/paj7620.h delete mode 100644 lib/Marlin/pins.h delete mode 100644 lib/Marlin/pins_3DRAG.h delete mode 100644 lib/Marlin/pins_5DPRINT.h delete mode 100644 lib/Marlin/pins_99.h delete mode 100644 lib/Marlin/pins_A4JP.h delete mode 100644 lib/Marlin/pins_AZTEEG_X1.h delete mode 100644 lib/Marlin/pins_AZTEEG_X3.h delete mode 100644 lib/Marlin/pins_AZTEEG_X3_PRO.h delete mode 100644 lib/Marlin/pins_BAM_DICE_DUE.h delete mode 100644 lib/Marlin/pins_BQ_ZUM_MEGA_3D.h delete mode 100644 lib/Marlin/pins_BRAINWAVE.h delete mode 100644 lib/Marlin/pins_BRAINWAVE_PRO.h delete mode 100644 lib/Marlin/pins_CHEAPTRONIC.h delete mode 100644 lib/Marlin/pins_CNCONTROLS_11.h delete mode 100644 lib/Marlin/pins_CNCONTROLS_12.h delete mode 100644 lib/Marlin/pins_ELEFU_3.h delete mode 100644 lib/Marlin/pins_FELIX2.h delete mode 100644 lib/Marlin/pins_GEN3_MONOLITHIC.h delete mode 100644 lib/Marlin/pins_GEN3_PLUS.h delete mode 100644 lib/Marlin/pins_GEN6.h delete mode 100644 lib/Marlin/pins_GEN6_DELUXE.h delete mode 100644 lib/Marlin/pins_GEN7_12.h delete mode 100644 lib/Marlin/pins_GEN7_13.h delete mode 100644 lib/Marlin/pins_GEN7_14.h delete mode 100644 lib/Marlin/pins_GEN7_CUSTOM.h delete mode 100644 lib/Marlin/pins_K8200.h delete mode 100644 lib/Marlin/pins_K8400.h delete mode 100644 lib/Marlin/pins_LEAPFROG.h delete mode 100644 lib/Marlin/pins_MEGACONTROLLER.h delete mode 100644 lib/Marlin/pins_MEGATRONICS.h delete mode 100644 lib/Marlin/pins_MEGATRONICS_2.h delete mode 100644 lib/Marlin/pins_MEGATRONICS_3.h delete mode 100644 lib/Marlin/pins_MELZI.h delete mode 100644 lib/Marlin/pins_MELZI_MAKR3D.h delete mode 100644 lib/Marlin/pins_MINIRAMBO.h delete mode 100644 lib/Marlin/pins_MINITRONICS.h delete mode 100644 lib/Marlin/pins_MKS_13.h delete mode 100644 lib/Marlin/pins_MKS_BASE.h delete mode 100644 lib/Marlin/pins_OMCA.h delete mode 100644 lib/Marlin/pins_OMCA_A.h delete mode 100644 lib/Marlin/pins_PRINTRBOARD.h delete mode 100644 lib/Marlin/pins_PRINTRBOARD_REVF.h delete mode 100644 lib/Marlin/pins_RAMBO.h delete mode 100644 lib/Marlin/pins_RAMPS.h delete mode 100644 lib/Marlin/pins_RAMPS_13.h delete mode 100644 lib/Marlin/pins_RAMPS_OLD.h delete mode 100644 lib/Marlin/pins_RIGIDBOARD.h delete mode 100644 lib/Marlin/pins_RIGIDBOARD_V2.h delete mode 100644 lib/Marlin/pins_RUMBA.h delete mode 100644 lib/Marlin/pins_SAINSMART_2IN1.h delete mode 100644 lib/Marlin/pins_SANGUINOLOLU_11.h delete mode 100644 lib/Marlin/pins_SANGUINOLOLU_12.h delete mode 100644 lib/Marlin/pins_SAV_MKI.h delete mode 100644 lib/Marlin/pins_SETHI.h delete mode 100644 lib/Marlin/pins_STB_11.h delete mode 100644 lib/Marlin/pins_Swift.h delete mode 100644 lib/Marlin/pins_TEENSY2.h delete mode 100644 lib/Marlin/pins_TEENSYLU.h delete mode 100644 lib/Marlin/pins_ULTIMAIN_2.h delete mode 100644 lib/Marlin/pins_ULTIMAKER.h delete mode 100644 lib/Marlin/pins_ULTIMAKER_OLD.h delete mode 100644 lib/Marlin/planner.cpp delete mode 100644 lib/Marlin/planner.h delete mode 100644 lib/Marlin/planner_bezier.cpp delete mode 100644 lib/Marlin/planner_bezier.h delete mode 100644 lib/Marlin/point_t.h delete mode 100644 lib/Marlin/printcounter.cpp delete mode 100644 lib/Marlin/printcounter.h delete mode 100644 lib/Marlin/qr_solve.cpp delete mode 100644 lib/Marlin/qr_solve.h delete mode 100644 lib/Marlin/servo.cpp delete mode 100644 lib/Marlin/servo.h delete mode 100644 lib/Marlin/speed_lookuptable.h delete mode 100644 lib/Marlin/stepper.cpp delete mode 100644 lib/Marlin/stepper.h delete mode 100644 lib/Marlin/stepper_dac.cpp delete mode 100644 lib/Marlin/stepper_dac.h delete mode 100644 lib/Marlin/stepper_indirection.cpp delete mode 100644 lib/Marlin/stepper_indirection.h delete mode 100644 lib/Marlin/stopwatch.cpp delete mode 100644 lib/Marlin/stopwatch.h delete mode 100644 lib/Marlin/temperature.cpp delete mode 100644 lib/Marlin/temperature.h delete mode 100644 lib/Marlin/thermistornames.h delete mode 100644 lib/Marlin/thermistortables.h delete mode 100644 lib/Marlin/twibus.cpp delete mode 100644 lib/Marlin/twibus.h delete mode 100644 lib/Marlin/types.h delete mode 100644 lib/Marlin/uArmAPI.cpp delete mode 100644 lib/Marlin/uArmAPI.h delete mode 100644 lib/Marlin/uArmButton.cpp delete mode 100644 lib/Marlin/uArmButton.h delete mode 100644 lib/Marlin/uArmBuzzer.cpp delete mode 100644 lib/Marlin/uArmBuzzer.h delete mode 100644 lib/Marlin/uArmCalibration.cpp delete mode 100644 lib/Marlin/uArmCalibration.h delete mode 100644 lib/Marlin/uArmDebug.cpp delete mode 100644 lib/Marlin/uArmDebug.h delete mode 100644 lib/Marlin/uArmGrove.cpp delete mode 100644 lib/Marlin/uArmGrove.h delete mode 100644 lib/Marlin/uArmIIC.cpp delete mode 100644 lib/Marlin/uArmIIC.h delete mode 100644 lib/Marlin/uArmLed.cpp delete mode 100644 lib/Marlin/uArmLed.h delete mode 100644 lib/Marlin/uArmParams.h delete mode 100644 lib/Marlin/uArmPump.cpp delete mode 100644 lib/Marlin/uArmPump.h delete mode 100644 lib/Marlin/uArmRecorder.cpp delete mode 100644 lib/Marlin/uArmRecorder.h delete mode 100644 lib/Marlin/uArmReportService.cpp delete mode 100644 lib/Marlin/uArmReportService.h delete mode 100644 lib/Marlin/uArmSerial.cpp delete mode 100644 lib/Marlin/uArmSerial.h delete mode 100644 lib/Marlin/uArmService.cpp delete mode 100644 lib/Marlin/uArmService.h delete mode 100644 lib/Marlin/uArmSwift.cpp delete mode 100644 lib/Marlin/uArmSwift.h delete mode 100644 lib/Marlin/uArmUtils.cpp delete mode 100644 lib/Marlin/uArmUtils.h delete mode 100644 lib/Marlin/ultralcd.cpp delete mode 100644 lib/Marlin/ultralcd.h delete mode 100644 lib/Marlin/ultralcd_impl_DOGM.h delete mode 100644 lib/Marlin/ultralcd_impl_HD44780.h delete mode 100644 lib/Marlin/ultralcd_st7920_u8glib_rrd.h delete mode 100644 lib/Marlin/utf_mapper.h delete mode 100644 lib/Marlin/utility.cpp delete mode 100644 lib/Marlin/utility.h delete mode 100644 lib/Marlin/vector_3.cpp delete mode 100644 lib/Marlin/vector_3.h delete mode 100644 lib/Marlin/watchdog.cpp delete mode 100644 lib/Marlin/watchdog.h delete mode 100644 lib/readme.txt delete mode 100644 platformio.ini delete mode 100644 src/Marlin.ino delete mode 100644 update.log diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f27031a..0000000 --- a/LICENSE +++ /dev/null @@ -1,677 +0,0 @@ - - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/README.md b/README.md deleted file mode 100644 index eb60cc6..0000000 --- a/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Swift Pro Firmware (Base on Marlin https://www.marlinfw.org/) - - - -## Document & Support - -Visit http://www.ufactory.cc/#/en/support/ for more details. - -## License - -Swift Pro Firmware is published under the [GPL license](/LICENSE) - - -# test diff --git a/buildroot/bin/build_marlin b/buildroot/bin/build_marlin deleted file mode 100644 index 12c3bd4..0000000 --- a/buildroot/bin/build_marlin +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -arduino --verify --board arduino:avr:mega:cpu=atmega2560 Marlin/Marlin.ino diff --git a/buildroot/bin/generate_version_header_for_marlin b/buildroot/bin/generate_version_header_for_marlin deleted file mode 100644 index 4310084..0000000 --- a/buildroot/bin/generate_version_header_for_marlin +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash -# generate_version_header_for_marlin - -DIR="${1}" - -BUILDATE=$(date '+%s') -DISTDATE=$(date '+%Y-%m-%d %H:%M') - -BRANCH=$(git -C "${DIR}" symbolic-ref -q --short HEAD) -VERSION=$(git -C "${DIR}" describe --tags --first-parent 2>/dev/null) - -if [ -z "${BRANCH}" ]; then - BRANCH=$(echo "${TRAVIS_BRANCH}") -fi - -if [ -z "${VERSION}" ]; then - VERSION=$(git -C "${DIR}" describe --tags --first-parent --always 2>/dev/null) -fi - -SHORT_BUILD_VERSION=$(echo "${BRANCH}") -DETAILED_BUILD_VERSION=$(echo "${BRANCH}-${VERSION}") - -# Gets some misc options from their defaults -DEFAULT_MACHINE_UUID=$(awk -F'"' \ - '/#define DEFAULT_MACHINE_UUID/{ print $2 }' < "${DIR}/Version.h") -MACHINE_NAME=$(awk -F'"' \ - '/#define MACHINE_NAME/{ print $2 }' < "${DIR}/Version.h") -PROTOCOL_VERSION=$(awk -F'"' \ - '/#define PROTOCOL_VERSION/{ print $2 }' < "${DIR}/Version.h") -SOURCE_CODE_URL=$(awk -F'"' \ - '/#define SOURCE_CODE_URL/{ print $2 }' < "${DIR}/Version.h") -WEBSITE_URL=$(awk -F'"' \ - '/#define WEBSITE_URL/{ print $2 }' < "${DIR}/Version.h") - -cat > "${DIR}/_Version.h" <rpB4N3PU~fZ^sf}S;VmicNLy-0+uJNwK-RWkN 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 Zb8Bk5A6-wSpz=9U)OEum?uTi0e*rCh@7@3a diff --git a/buildroot/share/fonts/ISO10646_CN.fon b/buildroot/share/fonts/ISO10646_CN.fon deleted file mode 100644 index 6c77eeccd8dea480f2759b0b987b777c34b48083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6192 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 EC&lG;=Kufz diff --git a/buildroot/share/fonts/Marlin_symbols.fon b/buildroot/share/fonts/Marlin_symbols.fon deleted file mode 100644 index 667ffd323a0695028e5d629f39d2d197da0268b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmcgqze@sf6o037{=lRlnu?y#AR%&w6h(tj3PGBv5VVx(nFs1!cNgY%5Xg;9ZT9_sPm3}fd++Y^efNHT-j~Z9e*gyn9`X){09|rYNiv)c1__5& z9z*cp?}xkGK|frqNg67ue6E%nsEQYtk}7JLk;Zo-#HM7%U z3;=xBlk?UIlO*WSA?l?>8B>>Ul*I;f~06*k{Q5Nuxe9OcuEOCaD?M)wMi+lU| zP^P5TrRIs&Zk)+=jRs>hlus2fE(p=B4f5bN78J28mFie<@~|qa=#)DBC~}m$J3(Mq z6-&BU!Iq@gFfBLR7>^}lo8PHZEgzf`9j^s99LGZdfG5iN=?9hPaf`_X#*u&L@sV#VRZtFh|6+EK?!>_+64z{*+Jfs(i=* diff --git a/buildroot/share/fonts/README.md b/buildroot/share/fonts/README.md deleted file mode 100644 index ee9d8e0..0000000 --- a/buildroot/share/fonts/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Marlin fonts - - -## Author and license -The original author of the following font files is [A. Hardtung](https://github.com/AnHardt). - -Any copyright is dedicated to the Public Domain. -http://creativecommons.org/publicdomain/zero/1.0/ - - - HD44780_C.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a)) - - HD44780_J.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a)) - - HD44780_W.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a)) - - ISO10646-1.fon ([be79235](https://github.com/MarlinFirmware/Marlin/commit/be79235ef255a5c42fd385820447ec351f23b9b1)) - - ISO10646_5_Cyrillic.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a)) - - ISO10646_CN.fon ([6b1b718](https://github.com/MarlinFirmware/Marlin/commit/6b1b71837c98ceab55db7433357a13cd829d1ede)) - - ISO10646_Kana.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a)) - - Marlin_symbols.fon ([fe2bd23](https://github.com/MarlinFirmware/Marlin/commit/fe2bd237d556439499dfdee852c1550c7a16430a)) - -Additional changes to the original font files being distritubted with Marlin are copyrighted under the terms of the [GPLv3](http://www.gnu.org/licenses/gpl-3.0.txt) license. - - -## Documentation -For detailed information about [adding new fonts](http://www.marlinfw.org/docs/development/fonts.html) to Marlin visit our documentation website. diff --git a/buildroot/share/fonts/make_fonts.bat b/buildroot/share/fonts/make_fonts.bat deleted file mode 100644 index c4df633..0000000 --- a/buildroot/share/fonts/make_fonts.bat +++ /dev/null @@ -1,9 +0,0 @@ -.\bdf2u8g.exe -b 1 -e 9 Marlin_symbols.bdf Marlin_symbols dogm_font_data_Marlin_symbols.h -.\bdf2u8g.exe -b 16 -e 255 HD44780_W.bdf HD44780_W_5x7 dogm_font_data_HD44780_W.h -.\bdf2u8g.exe -b 32 -e 255 HD44780_C.bdf HD44780_C_5x7 dogm_font_data_HD44780_C.h -.\bdf2u8g.exe -b 32 -e 255 HD44780_J.bdf HD44780_J_5x7 dogm_font_data_HD44780_J.h -.\bdf2u8g.exe -b 32 -e 255 ISO10646-1.bdf ISO10646_1_5x7 dogm_font_data_ISO10646_1.h -.\bdf2u8g.exe -b 32 -e 255 ISO10646_5_Cyrillic.bdf ISO10646_5_Cyrillic_5x7 dogm_font_data_ISO10646_5_Cyrillic.h -.\bdf2u8g.exe -b 32 -e 255 ISO10646_Kana.bdf ISO10646_Kana_5x7 dogm_font_data_ISO10646_Kana.h -.\bdf2u8g.exe -b 32 -e 255 ISO10646_CN.bdf ISO10646_CN dogm_font_data_ISO10646_CN.h -.\bdf2u8g.exe -b 32 -e 255 ISO10646_4_Greek.bdf ISO10646_Greek_5x7 dogm_font_data_ISO10646_Greek.h diff --git a/buildroot/share/git/firstpush b/buildroot/share/git/firstpush deleted file mode 100644 index e8eef06..0000000 --- a/buildroot/share/git/firstpush +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -git push --set-upstream origin `git branch | grep \* | sed 's/\* //g'` \ No newline at end of file diff --git a/buildroot/share/git/ghtp b/buildroot/share/git/ghtp deleted file mode 100644 index 83f461e..0000000 --- a/buildroot/share/git/ghtp +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash -# -# ghtp (GitHub Transport Protocol) -# -# Set all remotes in the current repo to HTTPS or SSH connection. -# Useful when switching environments, using public wifi, etc. -# - -GH_SSH="git@github\.com:" -GH_HTTPS="https:\/\/github\.com\/" - -case "$1" in - -[Hh]) TYPE=HTTPS ; MATCH="git@" ; FORMULA="$GH_SSH/$GH_HTTPS" ;; - -[Ss]) TYPE=SSH ; MATCH="https:" ; FORMULA="$GH_HTTPS/$GH_SSH" ;; - *) - echo "Usage: `basename $0` -h | -s" 1>&2 - echo -e " \e[0;92m-h\e[0m to switch to HTTPS" 1>&2 - echo -e " \e[0;92m-s\e[0m to switch to SSH" 1>&2 - exit 1 - ;; -esac - -REMOTES=$(git remote -v | egrep "\t$MATCH" | gawk '{print $1 " " $2}' | sort -u | sed "s/$FORMULA/") - -if [[ -z $REMOTES ]]; then - echo "Nothing to do." ; exit -fi - -echo "$REMOTES" | xargs -n2 git remote set-url - -echo -n "Remotes set to $TYPE: " -echo "$REMOTES" | gawk '{printf "%s ", $1}' -echo diff --git a/buildroot/share/git/mfinfo b/buildroot/share/git/mfinfo deleted file mode 100644 index 533b30a..0000000 --- a/buildroot/share/git/mfinfo +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash -# -# mfinfo -# -# Get the following helpful git info about the working directory: -# -# - Remote (upstream) Org name (MarlinFirmware) -# - Remote (origin) Org name (your Github username) -# - Repo Name (Marlin or MarlinDev) -# - Marlin Target branch (RCBugFix or dev) -# - Branch Name (the current branch or the one that was passed) -# - -REPO=$(git remote get-url upstream 2>/dev/null | sed -E 's/.*\/(.*)\.git/\1/') - -if [[ -z $REPO ]]; then - echo "`basename $0`: No 'upstream' remote found." 1>&2 ; exit 1 -fi - -ORG=$(git remote get-url upstream 2>/dev/null | sed -E 's/.*[\/:](.*)\/.*$/\1/') - -if [[ $ORG != MarlinFirmware ]]; then - echo "`basename $0`: Not a Marlin repository." - exit 1 -fi - -case "$REPO" in - Marlin ) TARG=RCBugFix ;; - MarlinDev ) TARG=dev ;; -esac - -FORK=$(git remote get-url origin 2>/dev/null | sed -E 's/.*[\/:](.*)\/.*$/\1/') - -case "$#" in - 0 ) BRANCH=$(git branch 2>/dev/null | grep ^* | sed 's/\* //g') ;; - 1 ) BRANCH=$1 ;; - * ) echo "Usage: `basename $0` [branch]" 1>&2 ; exit 1 ;; -esac - -echo "$ORG $FORK $REPO $TARG $BRANCH" diff --git a/buildroot/share/git/mfinit b/buildroot/share/git/mfinit deleted file mode 100644 index 5e2cbc0..0000000 --- a/buildroot/share/git/mfinit +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -# -# mfinit -# -# Create the upstream repository for Marlin -# - -git remote add upstream git@github.com:MarlinFirmware/Marlin.git diff --git a/buildroot/share/git/mfnew b/buildroot/share/git/mfnew deleted file mode 100644 index 0a07513..0000000 --- a/buildroot/share/git/mfnew +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash -# -# mfnew -# -# Create a new branch based on RCBugFix or dev a given branch name -# - -MFINFO=$(mfinfo) || exit -IFS=' ' read -a INFO <<< "$MFINFO" -TARG=${INFO[3]} - -if [[ ${INFO[4]} == "(no" ]]; then - echo "Branch is unavailable!" - exit 1 -fi - -case "$#" in - 0 ) BRANCH=pr_for_$TARG-$(date +"%G-%d-%m|%H:%M:%S") ;; - 1 ) BRANCH=$1 ;; - * ) echo "Usage: `basename $0` [branch]" 1>&2 ; exit 1 ;; -esac - -git checkout $TARG -b $BRANCH diff --git a/buildroot/share/git/mfpr b/buildroot/share/git/mfpr deleted file mode 100644 index 8eff484..0000000 --- a/buildroot/share/git/mfpr +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash -# -# mfpr -# -# Make a PR of the current branch against RCBugFix or dev -# - -MFINFO=$(mfinfo "$@") || exit - -IFS=' ' read -a INFO <<< "$MFINFO" - -ORG=${INFO[0]} -FORK=${INFO[1]} -REPO=${INFO[2]} -TARG=${INFO[3]} -BRANCH=${INFO[4]} - -if [[ $BRANCH == "(no" ]]; then - echo "Git is busy with merge, rebase, etc." - exit 1 -fi - -if [[ ! -z "$1" ]]; then { BRANCH=$1 ; git checkout $1 || exit 1; } fi - -if [[ $BRANCH == $TARG ]]; then - echo "Can't make a PR from $BRANCH" ; exit -fi - -if [ -z "$(git branch -vv | grep ^\* | grep \\[origin)" ]; then firstpush; fi - -TOOL=$(which gnome-open xdg-open open | awk '{ print $1 }') -URL="https://github.com/$ORG/$REPO/compare/$TARG...$FORK:$BRANCH?expand=1" - -if [ -z "$TOOL" ]; then - echo "Can't find a tool to open the URL:" - echo $URL -else - echo "Opening a New PR Form..." - "$TOOL" "$URL" -fi diff --git a/buildroot/share/git/mfprune b/buildroot/share/git/mfprune deleted file mode 100644 index 48fa9fd..0000000 --- a/buildroot/share/git/mfprune +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -# -# mfprune -# -# Prune all your merged branches and any branches whose remotes are gone -# Great way to clean up your branches after messing around a lot -# - -echo "Pruning Merged Branches..." -git branch --merged | egrep -v "^\*|RC|RCBugFix|dev" | xargs -n 1 git branch -d -echo - -echo "Pruning Remotely-deleted Branches..." -git branch -vv | egrep -v "^\*|RC|RCBugFix|dev" | grep ': gone]' | gawk '{print $1}' | xargs -n 1 git branch -D -echo - -echo "You may want to remove these remote tracking references..." -comm -23 \ - <(git branch --all | sed 's/^[\* ] //' | grep origin/ | grep -v "\->" | awk '{ print $1; }' | sed 's/remotes\/origin\///') \ - <(git branch --all | sed 's/^[\* ] //' | grep -v remotes/ | awk '{ print $1; }') \ - | awk '{ print "git branch -d -r origin/" $1; }' -echo diff --git a/buildroot/share/git/mfrb b/buildroot/share/git/mfrb deleted file mode 100644 index c1366f7..0000000 --- a/buildroot/share/git/mfrb +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -# -# mfrb -# -# Do "git rebase -i" against the "target" branch (RCBugFix or dev) -# - -MFINFO=$(mfinfo) || exit -IFS=' ' read -a INFO <<< "$MFINFO" - -if [[ ${INFO[4]} == "(no" ]]; then - echo "Branch is unavailable!" - exit 1 -fi - -case "$#" in - 0 ) ;; - * ) echo "Usage: `basename $0`" 1>&2 ; exit 1 ;; -esac - -git rebase -i ${INFO[3]} diff --git a/buildroot/share/git/mfup b/buildroot/share/git/mfup deleted file mode 100644 index ff19e0e..0000000 --- a/buildroot/share/git/mfup +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash -# -# mfup -# -# Fetch and merge upstream changes, optionally with a branch -# - -MFINFO=$(mfinfo) || exit - -IFS=' ' read -a INFO <<< "$MFINFO" - -ORG=${INFO[0]} -FORK=${INFO[1]} -REPO=${INFO[2]} -TARG=${INFO[3]} -OLDBRANCH=${INFO[4]} - -if [[ $OLDBRANCH == "(no" ]]; then - echo "Branch is unavailable!" - exit 1 -fi - -case "$#" in - 0 ) BRANCH=$OLDBRANCH ;; - 1 ) BRANCH=$1 ;; - * ) echo "Usage: `basename $0` [branch]" 1>&2 ; exit 1 ;; -esac - -set -e - -echo "Fetching upstream ($ORG/$REPO)..." -git fetch upstream - -echo ; echo "Bringing $TARG up to date..." -git checkout -q $TARG || git branch checkout upstream/$TARG -b $TARG && git push --set-upstream origin $TARG -git merge upstream/$TARG -git push origin - -if [[ $BRANCH != $TARG ]]; then - echo ; echo "Rebasing $BRANCH on $TARG..." - if git checkout $BRANCH; then - echo - if git rebase $TARG; then - git push -f ; echo - [[ $BRANCH != $OLDBRANCH ]] && git checkout $OLDBRANCH - else - echo "Looks like merge conflicts. Stopping here." - fi - else - echo "No such branch!" ; echo - git checkout $OLDBRANCH - fi -fi diff --git a/buildroot/share/pixmaps/logo/SwiftPro.png b/buildroot/share/pixmaps/logo/SwiftPro.png deleted file mode 100644 index 19d848334f17d4e5ca14588e75092867f5ae4d06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 435912 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

3*HaA{+DyQI{#+T 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

(=|_f)8|`V=BBXhEPC>S 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∾*Sd+if4P_baoomiVt9&)CF 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 z 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

?ya6p`Oe%3}kRf3YQ6^Rw- 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
w}$4W`&P0387&E0;ef4T6dz=S~YS;@=r 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 Hu0mjfOlL~f diff --git a/buildroot/share/pixmaps/logo/marlin-1080.png b/buildroot/share/pixmaps/logo/marlin-1080.png deleted file mode 100644 index b21d0ca80e8e2b2f101c481de3da91327b407092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56379 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 diff --git a/buildroot/share/pixmaps/logo/marlin-old-250.png b/buildroot/share/pixmaps/logo/marlin-old-250.png deleted file mode 100644 index 64f9902fde21167a9b50393277532c5e91f2e507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4172 zcmV-S5VP-zP)K4!X>x6MVRB_utr*|{000(rMObt} zb#!QNasWYSZDn*ILuG9sR8>+zPPUk&a{vGjhDk(0RCt{2ookRBRTY50nca=ak{AMs zyh#EPP#zKjVgP|4f(n$pLjgf7P##e%v_ugB<)r}%uy})52q?Jy z1OppFNJuu%O|seD@yD5FW+%Jd=XT$|-7|Z?s;+Ei@7#0yZl6B)an88~;xQhW3>*Qp z#;n5y!+~PfjqoI*3HWH%ji`4D24x2WQ-HI83F$P)1OU=A8TaRBqkl8CaY{zLXt+ zua*C^5Ez=yeS16uj&G75Wd~qx`9Bw@b;lmh0OfqLSMm~wD_;qjn{S!s9eX?jlncmM z(VG!BK7hXhi&DHw%mxf(!Iw}nvu9;SF*g%e*Iz+TAeq3Oh#6{2#jzjZ#Zx=@C#rj@IKIi z_z8C*>jX=IXMn4KNyPudHUWnK*8oo=)?#^CRy*>hTMos_UUvYS)W|9T-^G4F!MjMvuE!0U z=Vhj{uJaUiywse{_Kl~1G>WcO z&WjawttR`$y#jCxb*Sja<0e$^MMT*jbs%d46@LRydT12=pUS$fQq)yK;ykjZ0Nh5( zioOPWiarssfN3jUa4mBvYmKEo^7M~J(O*>7b)BNF5|xo*))awzNa^`4VsGfODR4h- zw=G<54YmRglAi}-prXywuYInwTzRji2ly&*UmBI$Jlx2*gXMe1Mmd0h}VWZEL$T(@q;mY ztDlT)8ES`+9=kNMqJ!wg6vPNmwpnrD#FAwGc`ashhWiN54L<^L7fd?e-+=5@hDGIV zgDixY#0~#0x=TDU(9F?iE9=@0$&?gzWow?ESkZ?fuA~}aYcYFEO+ega z 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 C@9QN1 diff --git a/buildroot/share/pixmaps/logo/marlin-old.svg b/buildroot/share/pixmaps/logo/marlin-old.svg deleted file mode 100644 index d621d3a..0000000 --- a/buildroot/share/pixmaps/logo/marlin-old.svg +++ /dev/null @@ -1,106 +0,0 @@ - - - - - Marlin Firmware - - - - - - image/svg+xml - - Marlin Firmware - - - Ahmet Cem TURAN - - - - - MarlinFirmware - - - - - João Brázio - - - marlin-logo-old - - - - - - - - - - - - - - diff --git a/buildroot/share/pixmaps/logo/marlin.svg b/buildroot/share/pixmaps/logo/marlin.svg deleted file mode 100644 index e608a7e..0000000 --- a/buildroot/share/pixmaps/logo/marlin.svg +++ /dev/null @@ -1,131 +0,0 @@ - - - -Marlin Firmware image/svg+xmlMarlin Firmware Ahmet Cem TURANJoão BrázioMarlinFirmwaremarlin-logo-new \ No newline at end of file diff --git a/buildroot/share/scripts/createSpeedLookupTable.py b/buildroot/share/scripts/createSpeedLookupTable.py deleted file mode 100644 index 13ed92d..0000000 --- a/buildroot/share/scripts/createSpeedLookupTable.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python - -""" Generate the stepper delay lookup table for Marlin firmware. """ - -import argparse - -__author__ = "Ben Gamari " -__copyright__ = "Copyright 2012, Ben Gamari" -__license__ = "GPL" - -parser = argparse.ArgumentParser(description=__doc__) -parser.add_argument('-f', '--cpu-freq', type=int, default=16, help='CPU clockrate in MHz (default=16)') -parser.add_argument('-d', '--divider', type=int, default=8, help='Timer/counter pre-scale divider (default=8)') -args = parser.parse_args() - -cpu_freq = args.cpu_freq * 1000000 -timer_freq = cpu_freq / args.divider - -print "#ifndef SPEED_LOOKUPTABLE_H" -print "#define SPEED_LOOKUPTABLE_H" -print -print '#include "Marlin.h"' -print - -print "const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {" -a = [ timer_freq / ((i*256)+(args.cpu_freq*2)) for i in range(256) ] -b = [ a[i] - a[i+1] for i in range(255) ] -b.append(b[-1]) -for i in range(32): - print " ", - for j in range(8): - print "{%d, %d}," % (a[8*i+j], b[8*i+j]), - print -print "};" -print - -print "const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {" -a = [ timer_freq / ((i*8)+(args.cpu_freq*2)) for i in range(256) ] -b = [ a[i] - a[i+1] for i in range(255) ] -b.append(b[-1]) -for i in range(32): - print " ", - for j in range(8): - print "{%d, %d}," % (a[8*i+j], b[8*i+j]), - print -print "};" -print - -print "#endif" - diff --git a/buildroot/share/scripts/createTemperatureLookupMarlin.py b/buildroot/share/scripts/createTemperatureLookupMarlin.py deleted file mode 100644 index 9859caa..0000000 --- a/buildroot/share/scripts/createTemperatureLookupMarlin.py +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/python -"""Thermistor Value Lookup Table Generator - -Generates lookup to temperature values for use in a microcontroller in C format based on: -http://en.wikipedia.org/wiki/Steinhart-Hart_equation - -The main use is for Arduino programs that read data from the circuit board described here: -http://reprap.org/wiki/Temperature_Sensor_v2.0 - -Usage: python createTemperatureLookup.py [options] - -Options: - -h, --help show this help - --rp=... pull-up resistor - --t1=ttt:rrr low temperature temperature:resistance point (around 25 degC) - --t2=ttt:rrr middle temperature temperature:resistance point (around 150 degC) - --t3=ttt:rrr high temperature temperature:resistance point (around 250 degC) - --num-temps=... the number of temperature points to calculate (default: 36) -""" - -from math import * -import sys -import getopt - -"Constants" -ZERO = 273.15 # zero point of Kelvin scale -VADC = 5 # ADC voltage -VCC = 5 # supply voltage -ARES = pow(2,10) # 10 Bit ADC resolution -VSTEP = VADC / ARES # ADC voltage resolution -TMIN = 0 # lowest temperature in table -TMAX = 350 # highest temperature in table - -class Thermistor: - "Class to do the thermistor maths" - def __init__(self, rp, t1, r1, t2, r2, t3, r3): - l1 = log(r1) - l2 = log(r2) - l3 = log(r3) - y1 = 1.0 / (t1 + ZERO) # adjust scale - y2 = 1.0 / (t2 + ZERO) - y3 = 1.0 / (t3 + ZERO) - x = (y2 - y1) / (l2 - l1) - y = (y3 - y1) / (l3 - l1) - c = (y - x) / ((l3 - l2) * (l1 + l2 + l3)) - b = x - c * (l1**2 + l2**2 + l1*l2) - a = y1 - (b + l1**2 *c)*l1 - - if c < 0: - print "//////////////////////////////////////////////////////////////////////////////////////" - print "// WARNING: negative coefficient 'c'! Something may be wrong with the measurements! //" - print "//////////////////////////////////////////////////////////////////////////////////////" - c = -c - self.c1 = a # Steinhart-Hart coefficients - self.c2 = b - self.c3 = c - self.rp = rp # pull-up resistance - - def resol(self, adc): - "Convert ADC reading into a resolution" - res = self.temp(adc)-self.temp(adc+1) - return res - - def voltage(self, adc): - "Convert ADC reading into a Voltage" - return adc * VSTEP # convert the 10 bit ADC value to a voltage - - def resist(self, adc): - "Convert ADC reading into a resistance in Ohms" - r = self.rp * self.voltage(adc) / (VCC - self.voltage(adc)) # resistance of thermistor - return r - - def temp(self, adc): - "Convert ADC reading into a temperature in Celcius" - l = log(self.resist(adc)) - Tinv = self.c1 + self.c2*l + self.c3* l**3 # inverse temperature - return (1/Tinv) - ZERO # temperature - - def adc(self, temp): - "Convert temperature into a ADC reading" - x = (self.c1 - (1.0 / (temp+ZERO))) / (2*self.c3) - y = sqrt((self.c2 / (3*self.c3))**3 + x**2) - r = exp((y-x)**(1.0/3) - (y+x)**(1.0/3)) - return (r / (self.rp + r)) * ARES - -def main(argv): - "Default values" - t1 = 25 # low temperature in Kelvin (25 degC) - r1 = 100000 # resistance at low temperature (10 kOhm) - t2 = 150 # middle temperature in Kelvin (150 degC) - r2 = 1641.9 # resistance at middle temperature (1.6 KOhm) - t3 = 250 # high temperature in Kelvin (250 degC) - r3 = 226.15 # resistance at high temperature (226.15 Ohm) - rp = 4700; # pull-up resistor (4.7 kOhm) - num_temps = 36; # number of entries for look-up table - - try: - opts, args = getopt.getopt(argv, "h", ["help", "rp=", "t1=", "t2=", "t3=", "num-temps="]) - except getopt.GetoptError as err: - print str(err) - usage() - sys.exit(2) - - for opt, arg in opts: - if opt in ("-h", "--help"): - usage() - sys.exit() - elif opt == "--rp": - rp = int(arg) - elif opt == "--t1": - arg = arg.split(':') - t1 = float(arg[0]) - r1 = float(arg[1]) - elif opt == "--t2": - arg = arg.split(':') - t2 = float(arg[0]) - r2 = float(arg[1]) - elif opt == "--t3": - arg = arg.split(':') - t3 = float(arg[0]) - r3 = float(arg[1]) - elif opt == "--num-temps": - num_temps = int(arg) - - t = Thermistor(rp, t1, r1, t2, r2, t3, r3) - increment = int((ARES-1)/(num_temps-1)); - step = (TMIN-TMAX) / (num_temps-1) - low_bound = t.temp(ARES-1); - up_bound = t.temp(1); - min_temp = int(TMIN if TMIN > low_bound else low_bound) - max_temp = int(TMAX if TMAX < up_bound else up_bound) - temps = range(max_temp, TMIN+step, step); - - print "// Thermistor lookup table for Marlin" - print "// ./createTemperatureLookupMarlin.py --rp=%s --t1=%s:%s --t2=%s:%s --t3=%s:%s --num-temps=%s" % (rp, t1, r1, t2, r2, t3, r3, num_temps) - print "// Steinhart-Hart Coefficients: a=%.15g, b=%.15g, c=%.15g " % (t.c1, t.c2, t.c3) - print "// Theoretical limits of termistor: %.2f to %.2f degC" % (low_bound, up_bound) - print - print "#define NUMTEMPS %s" % (len(temps)) - print "const short temptable[NUMTEMPS][2] PROGMEM = {" - - for temp in temps: - adc = t.adc(temp) - print " { (short) (%7.2f * OVERSAMPLENR ), %4s }%s // v=%.3f\tr=%.3f\tres=%.3f degC/count" % (adc , temp, \ - ',' if temp != temps[-1] else ' ', \ - t.voltage(adc), \ - t.resist( adc), \ - t.resol( adc) \ - ) - print "};" - -def usage(): - print __doc__ - -if __name__ == "__main__": - main(sys.argv[1:]) diff --git a/buildroot/share/scripts/findMissingTranslations.sh b/buildroot/share/scripts/findMissingTranslations.sh deleted file mode 100644 index b31c09d..0000000 --- a/buildroot/share/scripts/findMissingTranslations.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -IGNORE_DEFINES="LANGUAGE_EN_H MAPPER_NON SIMULATE_ROMFONT DISPLAY_CHARSET_ISO10646_1 MSG_H1 MSG_H2 MSG_H3 MSG_H4 MSG_MOVE_E1 MSG_MOVE_E2 MSG_MOVE_E3 MSG_MOVE_E4 MSG_N1 MSG_N2 MSG_N3 MSG_N4 MSG_DIAM_E1 MSG_DIAM_E2 MSG_DIAM_E3 MSG_DIAM_E4 MSG_E1 MSG_E2 MSG_E3 MSG_E4" - -for i in `awk '/#define/{print $2}' language_en.h`; do - for j in `ls language_*.h | grep -v language_en.h`; do - t=$(grep -c "${i}" ${j}) - if [ "$t" -eq 0 ]; then - for k in ${IGNORE_DEFINES}; do - [ "${k}" == "${i}" ] && continue 2; - done - echo "${j},${i}" - fi - done -done diff --git a/buildroot/share/scripts/g29_auto.py b/buildroot/share/scripts/g29_auto.py deleted file mode 100644 index 884e62b..0000000 --- a/buildroot/share/scripts/g29_auto.py +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/python3 - -# This file is for preprocessing gcode and the new G29 Autobedleveling from Marlin -# It will analyse the first 2 Layer and return the maximum size for this part -# After this it will replace with g29_keyword = ';MarlinG29Script' with the new G29 LRFB -# the new file will be created in the same folder. - -# your gcode-file/folder -folder = './' -my_file = 'test.gcode' - -# this is the minimum of G1 instructions which should be between 2 different heights -min_g1 = 3 - -# maximum number of lines to parse, I don't want to parse the complete file -# only the first plane is we are interested in -max_g1 = 100000000 - -# g29 keyword -g29_keyword = 'g29' -g29_keyword = g29_keyword.upper() - -# output filename -output_file = folder + 'g29_' + my_file -# input filename -input_file = folder + my_file - -# minimum scan size -min_size = 40 -probing_points = 3 # points x points - -# other stuff -min_x = 500 -min_y = min_x -max_x = -500 -max_y = max_x -last_z = 0.001 - -layer = 0 -lines_of_g1 = 0 - -gcode = [] - - -# return only g1-lines -def has_g1(line): - return line[:2].upper() == "G1" - - -# find position in g1 (x,y,z) -def find_axis(line, axis): - found = False - number = "" - for char in line: - if found: - if char == ".": - number += char - elif char == "-": - number += char - else: - try: - int(char) - number += char - except ValueError: - break - else: - found = char.upper() == axis.upper() - try: - return float(number) - except ValueError: - return None - - -# save the min or max-values for each axis -def set_mima(line): - global min_x, max_x, min_y, max_y, last_z - - current_x = find_axis(line, 'x') - current_y = find_axis(line, 'y') - - if current_x is not None: - min_x = min(current_x, min_x) - max_x = max(current_x, max_x) - if current_y is not None: - min_y = min(current_y, min_y) - max_y = max(current_y, max_y) - - return min_x, max_x, min_y, max_y - - -# find z in the code and return it -def find_z(gcode, start_at_line=0): - for i in range(start_at_line, len(gcode)): - my_z = find_axis(gcode[i], 'Z') - if my_z is not None: - return my_z, i - - -def z_parse(gcode, start_at_line=0, end_at_line=0): - i = start_at_line - all_z = [] - line_between_z = [] - z_at_line = [] - # last_z = 0 - last_i = -1 - - while len(gcode) > i: - try: - z, i = find_z(gcode, i + 1) - except TypeError: - break - - all_z.append(z) - z_at_line.append(i) - temp_line = i - last_i -1 - line_between_z.append(i - last_i - 1) - # last_z = z - last_i = i - if 0 < end_at_line <= i or temp_line >= min_g1: - # print('break at line {} at heigth {}'.format(i, z)) - break - - line_between_z = line_between_z[1:] - return all_z, line_between_z, z_at_line - - -# get the lines which should be the first layer -def get_lines(gcode, minimum): - i = 0 - all_z, line_between_z, z_at_line = z_parse(gcode, end_at_line=max_g1) - for count in line_between_z: - i += 1 - if count > minimum: - # print('layer: {}:{}'.format(z_at_line[i-1], z_at_line[i])) - return z_at_line[i - 1], z_at_line[i] - - -with open(input_file, 'r') as file: - lines = 0 - for line in file: - lines += 1 - if lines > 1000: - break - if has_g1(line): - gcode.append(line) -file.close() - -start, end = get_lines(gcode, min_g1) -for i in range(start, end): - set_mima(gcode[i]) - -print('x_min:{} x_max:{}\ny_min:{} y_max:{}'.format(min_x, max_x, min_y, max_y)) - -# resize min/max - values for minimum scan -if max_x - min_x < min_size: - offset_x = int((min_size - (max_x - min_x)) / 2 + 0.5) # int round up - # print('min_x! with {}'.format(int(max_x - min_x))) - min_x = int(min_x) - offset_x - max_x = int(max_x) + offset_x -if max_y - min_y < min_size: - offset_y = int((min_size - (max_y - min_y)) / 2 + 0.5) # int round up - # print('min_y! with {}'.format(int(max_y - min_y))) - min_y = int(min_y) - offset_y - max_y = int(max_y) + offset_y - - -new_command = 'G29 L{0} R{1} F{2} B{3} P{4}\n'.format(min_x, - max_x, - min_y, - max_y, - probing_points) - -out_file = open(output_file, 'w') -in_file = open(input_file, 'r') - -for line in in_file: - if line[:len(g29_keyword)].upper() == g29_keyword: - out_file.write(new_command) - print('write G29') - else: - out_file.write(line) - -file.close() -out_file.close() - -print('auto G29 finished') diff --git a/lib/Marlin/Conditionals.h b/lib/Marlin/Conditionals.h deleted file mode 100644 index ff6c6b1..0000000 --- a/lib/Marlin/Conditionals.h +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Conditionals.h - * OBSOLETE: Replaced by Conditionals_LCD.h and Conditionals_post.h - */ -#error "Old configurations? Please delete all #include lines from Configuration.h and Configuration_adv.h." diff --git a/lib/Marlin/Conditionals_LCD.h b/lib/Marlin/Conditionals_LCD.h deleted file mode 100644 index 29c67bf..0000000 --- a/lib/Marlin/Conditionals_LCD.h +++ /dev/null @@ -1,319 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Conditionals_LCD.h - * LCD Defines that depend on configuration but are not editable. - */ - -#ifndef CONDITIONALS_LCD_H // Get the LCD defines which are needed first -#define CONDITIONALS_LCD_H - - #define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT)) - - #if ENABLED(CARTESIO_UI) - #define DOGLCD - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 90 - #define LCD_CONTRAST_MIN 60 - #define LCD_CONTRAST_MAX 140 - #endif - - #if ENABLED(MAKRPANEL) || ENABLED(MINIPANEL) - #define DOGLCD - #define ULTIPANEL - #define NEWPANEL - #define DEFAULT_LCD_CONTRAST 17 - #endif - - #if ENABLED(miniVIKI) || ENABLED(VIKI2) || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) - #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. - - #if ENABLED(miniVIKI) - #define LCD_CONTRAST_MIN 75 - #define LCD_CONTRAST_MAX 115 - #define DEFAULT_LCD_CONTRAST 95 - #elif ENABLED(VIKI2) - #define DEFAULT_LCD_CONTRAST 40 - #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) - #define LCD_CONTRAST_MIN 90 - #define LCD_CONTRAST_MAX 130 - #define DEFAULT_LCD_CONTRAST 110 - #define U8GLIB_LM6059_AF - #define SD_DETECT_INVERTED - #endif - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - #endif - - // Generic support for SSD1306 / SH1106 OLED based LCDs. - #if ENABLED(U8GLIB_SSD1306) || ENABLED(U8GLIB_SH1106) - #define ULTRA_LCD //general LCD support, also 16x2 - #define DOGLCD // Support for I2C LCD 128x64 (Controller SSD1306 / SH1106 graphic Display Family) - #endif - - #if ENABLED(PANEL_ONE) || ENABLED(U8GLIB_SH1106) - #define ULTIMAKERCONTROLLER - #endif - - #if ENABLED(BQ_LCD_SMART_CONTROLLER) - #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - #ifndef LONG_FILENAME_HOST_SUPPORT - #define LONG_FILENAME_HOST_SUPPORT - #endif - #endif - - #if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) - #define DOGLCD - #define U8GLIB_ST7920 - #define REPRAP_DISCOUNT_SMART_CONTROLLER - #endif - - #if ENABLED(ULTIMAKERCONTROLLER) \ - || ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \ - || ENABLED(G3D_PANEL) \ - || ENABLED(RIGIDBOT_PANEL) \ - || ENABLED(REPRAPWORLD_KEYPAD) - #define ULTIPANEL - #define NEWPANEL - #endif - - #if ENABLED(RA_CONTROL_PANEL) - #define LCD_I2C_TYPE_PCA8574 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define ULTIPANEL - #define NEWPANEL - #endif - - #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) - #define DOGLCD - #define U8GLIB_ST7920 - #define ULTIPANEL - #define NEWPANEL - #endif - - /** - * I2C PANELS - */ - - #if ENABLED(LCD_I2C_SAINSMART_YWROBOT) - // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) - // Make sure it is placed in the Arduino libraries directory. - #define LCD_I2C_TYPE_PCF8575 - #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander - #define ULTIPANEL - #define NEWPANEL - #endif - - // PANELOLU2 LCD with status LEDs, separate encoder and click inputs - #if ENABLED(LCD_I2C_PANELOLU2) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 4 - #endif - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 1 - #endif - - #define ULTIPANEL - #define NEWPANEL - #endif - - // Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs - #if ENABLED(LCD_I2C_VIKI) - // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) - // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. - // Note: The pause/stop/resume LCD button pin should be connected to the Arduino - // BTN_ENC pin (or set BTN_ENC to -1 if not used) - #define LCD_I2C_TYPE_MCP23017 - #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander - #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) - #define ULTIPANEL - #define NEWPANEL - - #define ENCODER_FEEDRATE_DEADZONE 4 - - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 1 - #endif - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 2 - #endif - #endif - - // Shift register panels - // --------------------- - // 2 wire Non-latching LCD SR from: - // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection - - #if ENABLED(SAV_3DLCD) - #define SR_LCD_2W_NL // Non latching 2 wire shift register - #define ULTIPANEL - #define NEWPANEL - #endif - - #if ENABLED(DOGLCD) // Change number of lines to match the DOG graphic display - #ifndef LCD_WIDTH - #define LCD_WIDTH 22 - #endif - #ifndef LCD_HEIGHT - #define LCD_HEIGHT 5 - #endif - #endif - - #if ENABLED(ULTIPANEL) - #define NEWPANEL //enable this if you have a click-encoder panel - #define ULTRA_LCD - #ifndef LCD_WIDTH - #define LCD_WIDTH 20 - #endif - #ifndef LCD_HEIGHT - #define LCD_HEIGHT 4 - #endif - #else //no panel but just LCD - #if ENABLED(ULTRA_LCD) - #ifndef LCD_WIDTH - #define LCD_WIDTH 16 - #endif - #ifndef LCD_HEIGHT - #define LCD_HEIGHT 2 - #endif - #endif - #endif - - #if ENABLED(DOGLCD) - /* Custom characters defined in font dogm_font_data_Marlin_symbols.h / Marlin_symbols.fon */ - // \x00 intentionally skipped to avoid problems in strings - #define LCD_STR_REFRESH "\x01" - #define LCD_STR_FOLDER "\x02" - #define LCD_STR_ARROW_RIGHT "\x03" - #define LCD_STR_UPLEVEL "\x04" - #define LCD_STR_CLOCK "\x05" - #define LCD_STR_FEEDRATE "\x06" - #define LCD_STR_BEDTEMP "\x07" - #define LCD_STR_THERMOMETER "\x08" - #define LCD_STR_DEGREE "\x09" - - #define LCD_STR_SPECIAL_MAX '\x09' - // Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin. - // Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here. - #else - /* Custom characters defined in the first 8 characters of the LCD */ - #define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string! - #define LCD_STR_DEGREE "\x01" - #define LCD_STR_THERMOMETER "\x02" - #define LCD_STR_UPLEVEL "\x03" - #define LCD_STR_REFRESH "\x04" - #define LCD_STR_FOLDER "\x05" - #define LCD_STR_FEEDRATE "\x06" - #define LCD_STR_CLOCK "\x07" - #define LCD_STR_ARROW_RIGHT ">" /* from the default character set */ - #endif - - /** - * Default LCD contrast for dogm-like LCD displays - */ - #if ENABLED(DOGLCD) - - #define HAS_LCD_CONTRAST ( \ - ENABLED(MAKRPANEL) \ - || ENABLED(CARTESIO_UI) \ - || ENABLED(VIKI2) \ - || ENABLED(miniVIKI) \ - || ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \ - ) - - #if HAS_LCD_CONTRAST - #ifndef LCD_CONTRAST_MIN - #define LCD_CONTRAST_MIN 0 - #endif - #ifndef LCD_CONTRAST_MAX - #define LCD_CONTRAST_MAX 63 - #endif - #ifndef DEFAULT_LCD_CONTRAST - #define DEFAULT_LCD_CONTRAST 32 - #endif - #endif - #endif - - #ifndef BOOTSCREEN_TIMEOUT - #define BOOTSCREEN_TIMEOUT 2500 - #endif - - /** - * Extruders have some combination of stepper motors and hotends - * so we separate these concepts into the defines: - * - * EXTRUDERS - Number of Selectable Tools - * HOTENDS - Number of hotends, whether connected or separate - * E_STEPPERS - Number of actual E stepper motors - * TOOL_E_INDEX - Index to use when getting/setting the tool state - * - */ - #if ENABLED(SINGLENOZZLE) // One hotend, multi-extruder - #define HOTENDS 1 - #define E_STEPPERS EXTRUDERS - #define E_MANUAL EXTRUDERS - #define TOOL_E_INDEX current_block->active_extruder - #undef TEMP_SENSOR_1_AS_REDUNDANT - #undef HOTEND_OFFSET_X - #undef HOTEND_OFFSET_Y - #elif ENABLED(SWITCHING_EXTRUDER) // One E stepper, unified E axis, two hotends - #define HOTENDS EXTRUDERS - #define E_STEPPERS 1 - #define E_MANUAL 1 - #define TOOL_E_INDEX 0 - #ifndef HOTEND_OFFSET_Z - #define HOTEND_OFFSET_Z { 0 } - #endif - #elif ENABLED(MIXING_EXTRUDER) // Multi-stepper, unified E axis, one hotend - #define HOTENDS 1 - #define E_STEPPERS MIXING_STEPPERS - #define E_MANUAL 1 - #define TOOL_E_INDEX 0 - #else // One stepper, E axis, and hotend per tool - #define HOTENDS EXTRUDERS - #define E_STEPPERS EXTRUDERS - #define E_MANUAL EXTRUDERS - #define TOOL_E_INDEX current_block->active_extruder - #endif - -#endif //CONDITIONALS_LCD_H diff --git a/lib/Marlin/Conditionals_post.h b/lib/Marlin/Conditionals_post.h deleted file mode 100644 index aa6b28a..0000000 --- a/lib/Marlin/Conditionals_post.h +++ /dev/null @@ -1,663 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Conditionals_post.h - * Defines that depend on configuration but are not editable. - */ - -#ifndef CONDITIONALS_POST_H -#define CONDITIONALS_POST_H - - #if ENABLED(EMERGENCY_PARSER) - #define EMERGENCY_PARSER_CAPABILITIES " EMERGENCY_CODES:M108,M112,M410" - #else - #define EMERGENCY_PARSER_CAPABILITIES "" - #endif - - /** - * Set ENDSTOPPULLUPS for unused endstop switches - */ - #if ENABLED(ENDSTOPPULLUPS) - #if ENABLED(USE_XMAX_PLUG) - #define ENDSTOPPULLUP_XMAX - #endif - #if ENABLED(USE_YMAX_PLUG) - #define ENDSTOPPULLUP_YMAX - #endif - #if ENABLED(USE_ZMAX_PLUG) - #define ENDSTOPPULLUP_ZMAX - #endif - #if ENABLED(USE_XMIN_PLUG) - #define ENDSTOPPULLUP_XMIN - #endif - #if ENABLED(USE_YMIN_PLUG) - #define ENDSTOPPULLUP_YMIN - #endif - #if ENABLED(USE_ZMIN_PLUG) - #define ENDSTOPPULLUP_ZMIN - #endif - #if DISABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) - #define ENDSTOPPULLUP_ZMIN_PROBE - #endif - #endif - - /** - * Axis lengths - */ - #define X_MAX_LENGTH (X_MAX_POS - (X_MIN_POS)) - #define Y_MAX_LENGTH (Y_MAX_POS - (Y_MIN_POS)) - #define Z_MAX_LENGTH (Z_MAX_POS - (Z_MIN_POS)) - - /** - * CoreXY and CoreXZ - */ - #if ENABLED(COREXY) - #define CORE_AXIS_1 A_AXIS // XY from A + B - #define CORE_AXIS_2 B_AXIS - #define NORMAL_AXIS Z_AXIS - #elif ENABLED(COREXZ) - #define CORE_AXIS_1 A_AXIS // XZ from A + C - #define CORE_AXIS_2 C_AXIS - #define NORMAL_AXIS Y_AXIS - #elif ENABLED(COREYZ) - #define CORE_AXIS_1 B_AXIS // YZ from B + C - #define CORE_AXIS_2 C_AXIS - #define NORMAL_AXIS X_AXIS - #endif - - /** - * SCARA - */ - #if ENABLED(SCARA) - #undef SLOWDOWN - #define QUICK_HOME //SCARA needs Quickhome - #endif - - /** - * Set the home position based on settings or manual overrides - */ - #ifdef MANUAL_X_HOME_POS - #define X_HOME_POS MANUAL_X_HOME_POS - #elif ENABLED(BED_CENTER_AT_0_0) - #if ENABLED(DELTA) - #define X_HOME_POS 0 - #else - #define X_HOME_POS ((X_MAX_LENGTH) * (X_HOME_DIR) * 0.5) - #endif - #else - #if ENABLED(DELTA) - #define X_HOME_POS ((X_MAX_LENGTH) * 0.5) - #else - #define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS) - #endif - #endif - - #ifdef MANUAL_Y_HOME_POS - #define Y_HOME_POS MANUAL_Y_HOME_POS - #elif ENABLED(BED_CENTER_AT_0_0) - #if ENABLED(DELTA) - #define Y_HOME_POS 0 - #else - #define Y_HOME_POS ((Y_MAX_LENGTH) * (Y_HOME_DIR) * 0.5) - #endif - #else - #if ENABLED(DELTA) - #define Y_HOME_POS ((Y_MAX_LENGTH) * 0.5) - #else - #define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS) - #endif - #endif - - #ifdef MANUAL_Z_HOME_POS - #define Z_HOME_POS MANUAL_Z_HOME_POS - #else - #define Z_HOME_POS (Z_HOME_DIR < 0 ? Z_MIN_POS : Z_MAX_POS) - #endif - - /** - * The BLTouch Probe emulates a servo probe - */ - #if ENABLED(BLTOUCH) - #undef Z_ENDSTOP_SERVO_NR - #undef Z_SERVO_ANGLES - #define Z_ENDSTOP_SERVO_NR 0 - #define Z_SERVO_ANGLES {10,90} // For BLTouch 10=deploy, 90=retract - #undef DEACTIVATE_SERVOS_AFTER_MOVE - #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #undef Z_MIN_ENDSTOP_INVERTING - #define Z_MIN_ENDSTOP_INVERTING false - #endif - #endif - - /** - * Auto Bed Leveling and Z Probe Repeatability Test - */ - #define HAS_PROBING_PROCEDURE (ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)) - - // Boundaries for probing based on set limits - #define MIN_PROBE_X (max(X_MIN_POS, X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) - #define MAX_PROBE_X (min(X_MAX_POS, X_MAX_POS + X_PROBE_OFFSET_FROM_EXTRUDER)) - #define MIN_PROBE_Y (max(Y_MIN_POS, Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) - #define MAX_PROBE_Y (min(Y_MAX_POS, Y_MAX_POS + Y_PROBE_OFFSET_FROM_EXTRUDER)) - - #define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0) - - /** - * Z Sled Probe requires Z_SAFE_HOMING - */ - #if ENABLED(Z_PROBE_SLED) - #define Z_SAFE_HOMING - #endif - - /** - * DELTA should ignore Z_SAFE_HOMING - */ - #if ENABLED(DELTA) - #undef Z_SAFE_HOMING - #endif - - /** - * Safe Homing Options - */ - #if ENABLED(Z_SAFE_HOMING) - #ifndef Z_SAFE_HOMING_X_POINT - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) - #endif - #ifndef Z_SAFE_HOMING_Y_POINT - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) - #endif - #endif - - /** - * Host keep alive - */ - #ifndef DEFAULT_KEEPALIVE_INTERVAL - #define DEFAULT_KEEPALIVE_INTERVAL 2 - #endif - - /** - * MAX_STEP_FREQUENCY differs for TOSHIBA - */ - #if ENABLED(CONFIG_STEPPERS_TOSHIBA) - #define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers - #else - #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) - #endif - - // MS1 MS2 Stepper Driver Microstepping mode table - #define MICROSTEP1 LOW,LOW - #define MICROSTEP2 HIGH,LOW - #define MICROSTEP4 LOW,HIGH - #define MICROSTEP8 HIGH,HIGH - #define MICROSTEP16 HIGH,HIGH - - /** - * Advance calculated values - */ - #if ENABLED(ADVANCE) - #define EXTRUSION_AREA (0.25 * (D_FILAMENT) * (D_FILAMENT) * M_PI) - #define STEPS_PER_CUBIC_MM_E (axis_steps_per_mm[E_AXIS] / (EXTRUSION_AREA)) - #endif - - #if ENABLED(ULTIPANEL) && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER) - #undef SD_DETECT_INVERTED - #endif - - /** - * Set defaults for missing (newer) options - */ - #ifndef DISABLE_INACTIVE_X - #define DISABLE_INACTIVE_X DISABLE_X - #endif - #ifndef DISABLE_INACTIVE_Y - #define DISABLE_INACTIVE_Y DISABLE_Y - #endif - #ifndef DISABLE_INACTIVE_Z - #define DISABLE_INACTIVE_Z DISABLE_Z - #endif - #ifndef DISABLE_INACTIVE_E - #define DISABLE_INACTIVE_E DISABLE_E - #endif - - // Power Signal Control Definitions - // By default use ATX definition - #ifndef POWER_SUPPLY - #define POWER_SUPPLY 1 - #endif - #if (POWER_SUPPLY == 1) // 1 = ATX - #define PS_ON_AWAKE LOW - #define PS_ON_ASLEEP HIGH - #elif (POWER_SUPPLY == 2) // 2 = X-Box 360 203W - #define PS_ON_AWAKE HIGH - #define PS_ON_ASLEEP LOW - #endif - #define HAS_POWER_SWITCH (POWER_SUPPLY > 0 && PIN_EXISTS(PS_ON)) - - /** - * Temp Sensor defines - */ - #if TEMP_SENSOR_0 == -3 - #define HEATER_0_USES_MAX6675 - #define MAX6675_IS_MAX31855 - #elif TEMP_SENSOR_0 == -2 - #define HEATER_0_USES_MAX6675 - #elif TEMP_SENSOR_0 == -1 - #define HEATER_0_USES_AD595 - #elif TEMP_SENSOR_0 == 0 - #undef HEATER_0_MINTEMP - #undef HEATER_0_MAXTEMP - #elif TEMP_SENSOR_0 > 0 - #define THERMISTORHEATER_0 TEMP_SENSOR_0 - #define HEATER_0_USES_THERMISTOR - #endif - - #if TEMP_SENSOR_1 <= -2 - #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1" - #elif TEMP_SENSOR_1 == -1 - #define HEATER_1_USES_AD595 - #elif TEMP_SENSOR_1 == 0 - #undef HEATER_1_MINTEMP - #undef HEATER_1_MAXTEMP - #elif TEMP_SENSOR_1 > 0 - #define THERMISTORHEATER_1 TEMP_SENSOR_1 - #define HEATER_1_USES_THERMISTOR - #endif - - #if TEMP_SENSOR_2 <= -2 - #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2" - #elif TEMP_SENSOR_2 == -1 - #define HEATER_2_USES_AD595 - #elif TEMP_SENSOR_2 == 0 - #undef HEATER_2_MINTEMP - #undef HEATER_2_MAXTEMP - #elif TEMP_SENSOR_2 > 0 - #define THERMISTORHEATER_2 TEMP_SENSOR_2 - #define HEATER_2_USES_THERMISTOR - #endif - - #if TEMP_SENSOR_3 <= -2 - #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3" - #elif TEMP_SENSOR_3 == -1 - #define HEATER_3_USES_AD595 - #elif TEMP_SENSOR_3 == 0 - #undef HEATER_3_MINTEMP - #undef HEATER_3_MAXTEMP - #elif TEMP_SENSOR_3 > 0 - #define THERMISTORHEATER_3 TEMP_SENSOR_3 - #define HEATER_3_USES_THERMISTOR - #endif - - #if TEMP_SENSOR_BED <= -2 - #error "MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED" - #elif TEMP_SENSOR_BED == -1 - #define BED_USES_AD595 - #elif TEMP_SENSOR_BED == 0 - #undef BED_MINTEMP - #undef BED_MAXTEMP - #elif TEMP_SENSOR_BED > 0 - #define THERMISTORBED TEMP_SENSOR_BED - #define BED_USES_THERMISTOR - #endif - - /** - * Flags for PID handling - */ - #define HAS_PID_HEATING (ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED)) - #define HAS_PID_FOR_BOTH (ENABLED(PIDTEMP) && ENABLED(PIDTEMPBED)) - - /** - * Default hotend offsets, if not defined - */ - #if HOTENDS > 1 - #ifndef HOTEND_OFFSET_X - #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder - #endif - #ifndef HOTEND_OFFSET_Y - #define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder - #endif - #if !defined(HOTEND_OFFSET_Z) && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_EXTRUDER)) - #define HOTEND_OFFSET_Z { 0 } - #endif - #endif - - /** - * ARRAY_BY_EXTRUDERS based on EXTRUDERS - */ - #define ARRAY_BY_EXTRUDERS(args...) ARRAY_N(EXTRUDERS, args) - #define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1) - - /** - * ARRAY_BY_HOTENDS based on HOTENDS - */ - #define ARRAY_BY_HOTENDS(args...) ARRAY_N(HOTENDS, args) - #define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1) - - /** - * Z_DUAL_ENDSTOPS endstop reassignment - */ - #if ENABLED(Z_DUAL_ENDSTOPS) - #define _XMIN_ 100 - #define _YMIN_ 200 - #define _ZMIN_ 300 - #define _XMAX_ 101 - #define _YMAX_ 201 - #define _ZMAX_ 301 - #if Z2_USE_ENDSTOP == _XMAX_ - #define Z2_MAX_ENDSTOP_INVERTING X_MAX_ENDSTOP_INVERTING - #define Z2_MAX_PIN X_MAX_PIN - #undef USE_XMAX_PLUG - #elif Z2_USE_ENDSTOP == _YMAX_ - #define Z2_MAX_ENDSTOP_INVERTING Y_MAX_ENDSTOP_INVERTING - #define Z2_MAX_PIN Y_MAX_PIN - #undef USE_YMAX_PLUG - #elif Z2_USE_ENDSTOP == _ZMAX_ - #define Z2_MAX_ENDSTOP_INVERTING Z_MAX_ENDSTOP_INVERTING - #define Z2_MAX_PIN Z_MAX_PIN - #undef USE_ZMAX_PLUG - #elif Z2_USE_ENDSTOP == _XMIN_ - #define Z2_MAX_ENDSTOP_INVERTING X_MIN_ENDSTOP_INVERTING - #define Z2_MAX_PIN X_MIN_PIN - #undef USE_XMIN_PLUG - #elif Z2_USE_ENDSTOP == _YMIN_ - #define Z2_MAX_ENDSTOP_INVERTING Y_MIN_ENDSTOP_INVERTING - #define Z2_MAX_PIN Y_MIN_PIN - #undef USE_YMIN_PLUG - #elif Z2_USE_ENDSTOP == _ZMIN_ - #define Z2_MAX_ENDSTOP_INVERTING Z_MIN_ENDSTOP_INVERTING - #define Z2_MAX_PIN Z_MIN_PIN - #undef USE_ZMIN_PLUG - #else - #define Z2_MAX_ENDSTOP_INVERTING false - #endif - #endif - - /** - * Shorthand for pin tests, used wherever needed - */ - #define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2) - #define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2) - #define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2) - #define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2) - #define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2) - #define HAS_HEATER_0 (PIN_EXISTS(HEATER_0)) - #define HAS_HEATER_1 (PIN_EXISTS(HEATER_1)) - #define HAS_HEATER_2 (PIN_EXISTS(HEATER_2)) - #define HAS_HEATER_3 (PIN_EXISTS(HEATER_3)) - #define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED)) - #define HAS_AUTO_FAN_0 (PIN_EXISTS(EXTRUDER_0_AUTO_FAN)) - #define HAS_AUTO_FAN_1 (PIN_EXISTS(EXTRUDER_1_AUTO_FAN)) - #define HAS_AUTO_FAN_2 (PIN_EXISTS(EXTRUDER_2_AUTO_FAN)) - #define HAS_AUTO_FAN_3 (PIN_EXISTS(EXTRUDER_3_AUTO_FAN)) - #define HAS_AUTO_FAN (HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3) - #define HAS_FAN0 (PIN_EXISTS(FAN)) - #define HAS_FAN1 (PIN_EXISTS(FAN1) && CONTROLLERFAN_PIN != FAN1_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN1_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN1_PIN) - #define HAS_FAN2 (PIN_EXISTS(FAN2) && CONTROLLERFAN_PIN != FAN2_PIN && EXTRUDER_0_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_1_AUTO_FAN_PIN != FAN2_PIN && EXTRUDER_2_AUTO_FAN_PIN != FAN2_PIN) - #define HAS_CONTROLLERFAN (PIN_EXISTS(CONTROLLERFAN)) - #define HAS_SERVOS (defined(NUM_SERVOS) && NUM_SERVOS > 0) - #define HAS_SERVO_0 (PIN_EXISTS(SERVO0)) - #define HAS_SERVO_1 (PIN_EXISTS(SERVO1)) - #define HAS_SERVO_2 (PIN_EXISTS(SERVO2)) - #define HAS_SERVO_3 (PIN_EXISTS(SERVO3)) - #define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH)) - #define HAS_FIL_RUNOUT (PIN_EXISTS(FIL_RUNOUT)) - #define HAS_HOME (PIN_EXISTS(HOME)) - #define HAS_KILL (PIN_EXISTS(KILL)) - #define HAS_SUICIDE (PIN_EXISTS(SUICIDE)) - #define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH)) - #define HAS_X_MIN (PIN_EXISTS(X_MIN)) - #define HAS_X_MAX (PIN_EXISTS(X_MAX)) - #define HAS_Y_MIN (PIN_EXISTS(Y_MIN)) - #define HAS_Y_MAX (PIN_EXISTS(Y_MAX)) - #define HAS_Z_MIN (PIN_EXISTS(Z_MIN)) - #define HAS_Z_MAX (PIN_EXISTS(Z_MAX)) - #define HAS_Z2_MIN (PIN_EXISTS(Z2_MIN)) - #define HAS_Z2_MAX (PIN_EXISTS(Z2_MAX)) - #define HAS_Z_MIN_PROBE_PIN (PIN_EXISTS(Z_MIN_PROBE)) - #define HAS_SOLENOID_1 (PIN_EXISTS(SOL1)) - #define HAS_SOLENOID_2 (PIN_EXISTS(SOL2)) - #define HAS_SOLENOID_3 (PIN_EXISTS(SOL3)) - #define HAS_MICROSTEPS (PIN_EXISTS(X_MS1)) - #define HAS_MICROSTEPS_E0 (PIN_EXISTS(E0_MS1)) - #define HAS_MICROSTEPS_E1 (PIN_EXISTS(E1_MS1)) - #define HAS_MICROSTEPS_E2 (PIN_EXISTS(E2_MS1)) - #define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET)) - #define HAS_X_ENABLE (PIN_EXISTS(X_ENABLE)) - #define HAS_X2_ENABLE (PIN_EXISTS(X2_ENABLE)) - #define HAS_Y_ENABLE (PIN_EXISTS(Y_ENABLE)) - #define HAS_Y2_ENABLE (PIN_EXISTS(Y2_ENABLE)) - #define HAS_Z_ENABLE (PIN_EXISTS(Z_ENABLE)) - #define HAS_Z2_ENABLE (PIN_EXISTS(Z2_ENABLE)) - #define HAS_E0_ENABLE (PIN_EXISTS(E0_ENABLE)) - #define HAS_E1_ENABLE (PIN_EXISTS(E1_ENABLE)) - #define HAS_E2_ENABLE (PIN_EXISTS(E2_ENABLE)) - #define HAS_E3_ENABLE (PIN_EXISTS(E3_ENABLE)) - #define HAS_E4_ENABLE (PIN_EXISTS(E4_ENABLE)) - #define HAS_X_DIR (PIN_EXISTS(X_DIR)) - #define HAS_X2_DIR (PIN_EXISTS(X2_DIR)) - #define HAS_Y_DIR (PIN_EXISTS(Y_DIR)) - #define HAS_Y2_DIR (PIN_EXISTS(Y2_DIR)) - #define HAS_Z_DIR (PIN_EXISTS(Z_DIR)) - #define HAS_Z2_DIR (PIN_EXISTS(Z2_DIR)) - #define HAS_E0_DIR (PIN_EXISTS(E0_DIR)) - #define HAS_E1_DIR (PIN_EXISTS(E1_DIR)) - #define HAS_E2_DIR (PIN_EXISTS(E2_DIR)) - #define HAS_E3_DIR (PIN_EXISTS(E3_DIR)) - #define HAS_E4_DIR (PIN_EXISTS(E4_DIR)) - #define HAS_X_STEP (PIN_EXISTS(X_STEP)) - #define HAS_X2_STEP (PIN_EXISTS(X2_STEP)) - #define HAS_Y_STEP (PIN_EXISTS(Y_STEP)) - #define HAS_Y2_STEP (PIN_EXISTS(Y2_STEP)) - #define HAS_Z_STEP (PIN_EXISTS(Z_STEP)) - #define HAS_Z2_STEP (PIN_EXISTS(Z2_STEP)) - #define HAS_E0_STEP (PIN_EXISTS(E0_STEP)) - #define HAS_E1_STEP (PIN_EXISTS(E1_STEP)) - #define HAS_E2_STEP (PIN_EXISTS(E2_STEP)) - #define HAS_E3_STEP (PIN_EXISTS(E3_STEP)) - #define HAS_E4_STEP (PIN_EXISTS(E4_STEP)) - #define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS)) - #define HAS_BUZZER (PIN_EXISTS(BEEPER) || ENABLED(LCD_USE_I2C_BUZZER)) - - #define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E)) - - #define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675)) - - #define HAS_THERMALLY_PROTECTED_BED (HAS_TEMP_BED && HAS_HEATER_BED && ENABLED(THERMAL_PROTECTION_BED)) - - /** - * This value is used by M109 when trying to calculate a ballpark safe margin - * to prevent wait-forever situation. - */ - #ifndef EXTRUDE_MINTEMP - #define EXTRUDE_MINTEMP 170 - #endif - - /** - * Helper Macros for heaters and extruder fan - */ - #define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v) - #if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL) - #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v) - #if HOTENDS > 2 - #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v) - #if HOTENDS > 3 - #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v) - #endif - #endif - #endif - #if ENABLED(HEATERS_PARALLEL) - #define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); } - #else - #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v) - #endif - #if HAS_HEATER_BED - #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v) - #endif - - /** - * Up to 3 PWM fans - */ - #if HAS_FAN2 - #define FAN_COUNT 3 - #elif HAS_FAN1 - #define FAN_COUNT 2 - #elif HAS_FAN0 - #define FAN_COUNT 1 - #else - #define FAN_COUNT 0 - #endif - - #if HAS_FAN0 - #define WRITE_FAN(v) WRITE(FAN_PIN, v) - #define WRITE_FAN0(v) WRITE_FAN(v) - #endif - #if HAS_FAN1 - #define WRITE_FAN1(v) WRITE(FAN1_PIN, v) - #endif - #if HAS_FAN2 - #define WRITE_FAN2(v) WRITE(FAN2_PIN, v) - #endif - #define WRITE_FAN_N(n, v) WRITE_FAN##n(v) - - /** - * Servos and probes - */ - - #if HAS_SERVOS - #ifndef Z_ENDSTOP_SERVO_NR - #define Z_ENDSTOP_SERVO_NR -1 - #endif - #endif - - #define PROBE_SELECTED (ENABLED(FIX_MOUNTED_PROBE) || ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED)) - - #define PROBE_PIN_CONFIGURED (HAS_Z_MIN_PROBE_PIN || (HAS_Z_MIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN))) - - #define HAS_BED_PROBE (PROBE_SELECTED && PROBE_PIN_CONFIGURED) - - #if ENABLED(Z_PROBE_ALLEN_KEY) - #define PROBE_IS_TRIGGERED_WHEN_STOWED_TEST - #endif - - /** - * Bed Probe dependencies - */ - #if HAS_BED_PROBE - #ifndef Z_PROBE_OFFSET_RANGE_MIN - #define Z_PROBE_OFFSET_RANGE_MIN -20 - #endif - #ifndef Z_PROBE_OFFSET_RANGE_MAX - #define Z_PROBE_OFFSET_RANGE_MAX 20 - #endif - #ifndef XY_PROBE_SPEED - #ifdef HOMING_FEEDRATE_XY - #define XY_PROBE_SPEED HOMING_FEEDRATE_XY - #else - #define XY_PROBE_SPEED 4000 - #endif - #endif - #if Z_PROBE_TRAVEL_HEIGHT > Z_PROBE_DEPLOY_HEIGHT - #define _Z_PROBE_DEPLOY_HEIGHT Z_PROBE_TRAVEL_HEIGHT - #else - #define _Z_PROBE_DEPLOY_HEIGHT Z_PROBE_DEPLOY_HEIGHT - #endif - #else - #undef X_PROBE_OFFSET_FROM_EXTRUDER - #undef Y_PROBE_OFFSET_FROM_EXTRUDER - #undef Z_PROBE_OFFSET_FROM_EXTRUDER - #define X_PROBE_OFFSET_FROM_EXTRUDER 0 - #define Y_PROBE_OFFSET_FROM_EXTRUDER 0 - #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 - #endif - - /** - * Delta radius/rod trimmers - */ - #if ENABLED(DELTA) - #ifndef DELTA_RADIUS_TRIM_TOWER_1 - #define DELTA_RADIUS_TRIM_TOWER_1 0.0 - #endif - #ifndef DELTA_RADIUS_TRIM_TOWER_2 - #define DELTA_RADIUS_TRIM_TOWER_2 0.0 - #endif - #ifndef DELTA_RADIUS_TRIM_TOWER_3 - #define DELTA_RADIUS_TRIM_TOWER_3 0.0 - #endif - #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_1 - #define DELTA_DIAGONAL_ROD_TRIM_TOWER_1 0.0 - #endif - #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_2 - #define DELTA_DIAGONAL_ROD_TRIM_TOWER_2 0.0 - #endif - #ifndef DELTA_DIAGONAL_ROD_TRIM_TOWER_3 - #define DELTA_DIAGONAL_ROD_TRIM_TOWER_3 0.0 - #endif - #if ENABLED(AUTO_BED_LEVELING_GRID) - #define DELTA_BED_LEVELING_GRID - #endif - #endif - - /** - * When not using other bed leveling... - */ - #if ENABLED(AUTO_BED_LEVELING_FEATURE) && DISABLED(AUTO_BED_LEVELING_GRID) && DISABLED(DELTA_BED_LEVELING_GRID) - #define AUTO_BED_LEVELING_3POINT - #endif - - /** - * Buzzer/Speaker - */ - #if ENABLED(LCD_USE_I2C_BUZZER) - #ifndef LCD_FEEDBACK_FREQUENCY_HZ - #define LCD_FEEDBACK_FREQUENCY_HZ 1000 - #endif - #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 - #endif - #elif PIN_EXISTS(BEEPER) - #ifndef LCD_FEEDBACK_FREQUENCY_HZ - #define LCD_FEEDBACK_FREQUENCY_HZ 5000 - #endif - #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 - #endif - #else - #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS - #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 - #endif - #endif - - /** - * Z_HOMING_HEIGHT / Z_PROBE_TRAVEL_HEIGHT - */ - #ifndef Z_HOMING_HEIGHT - #ifndef Z_PROBE_TRAVEL_HEIGHT - #define Z_HOMING_HEIGHT 0 - #else - #define Z_HOMING_HEIGHT Z_PROBE_TRAVEL_HEIGHT - #endif - #endif - #ifndef Z_PROBE_TRAVEL_HEIGHT - #define Z_PROBE_TRAVEL_HEIGHT Z_HOMING_HEIGHT - #endif - -#endif // CONDITIONALS_POST_H diff --git a/lib/Marlin/Configuration.h b/lib/Marlin/Configuration.h deleted file mode 100644 index 38e0ded..0000000 --- a/lib/Marlin/Configuration.h +++ /dev/null @@ -1,1363 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 115200 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_SWIFT_10 -#endif - - -#define UARM_SWIFT - -//#define DEBUG -//#define SWIFT_TEST_MODE - -#define HW_VER "3.3" -#define SW_VER_BASE "3.1.4" - -#ifdef SWIFT_TEST_MODE -#define SW_VER SW_VER_BASE"_t" -#elif defined(DEBUG) -#define SW_VER SW_VER_BASE"_d" -#else -#define SW_VER SW_VER_BASE -#endif - -#define DEVICE_NAME "SwiftPro" - -#define SEGMENTS_PER_SECOND 160 - - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 2 // (seconds) -#define TEMP_HYSTERESIS 5 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -//#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} - -#define X_ENABLE_ON 1 -#define Y_ENABLE_ON 1 -#define Z_ENABLE_ON 1 -#define E_ENABLE_ON 0 // For all extruders - - - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. - -#define INVERT_X_DIR false -#define INVERT_Y_DIR false -#define INVERT_Z_DIR false - - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS -300 -#define Y_MIN_POS -300 -#define Z_MIN_POS -300 -#define X_MAX_POS 300 -#define Y_MAX_POS 300 -#define Z_MAX_POS 300 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings -#define DECELERATE_MULTIPLE (20.0f/36.0f) -#define MIROC 128 -#define GEAR_RATIO 4.5 -#define DEFAULT_AXIS_STEPS_PER_UNIT { DECELERATE_MULTIPLE*MIROC*GEAR_RATIO,\ - DECELERATE_MULTIPLE*MIROC*GEAR_RATIO,\ - DECELERATE_MULTIPLE*MIROC*GEAR_RATIO, 360/3.1415926/12*16/1.8} - - - -//#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,500} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {500, 500, 500, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {2000,2000,2000,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 25 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 25 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 100 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 1.0 // (mm/sec) -#define DEFAULT_ZJERK 1.0 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -//#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/Configuration_adv.h b/lib/Marlin/Configuration_adv.h deleted file mode 100644 index 2cafe11..0000000 --- a/lib/Marlin/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 120 -#define DISABLE_INACTIVE_X false -#define DISABLE_INACTIVE_Y false -#define DISABLE_INACTIVE_Z false // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E false - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -//#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/GroveColorSensor.cpp b/lib/Marlin/GroveColorSensor.cpp deleted file mode 100644 index a6f3e8b..0000000 --- a/lib/Marlin/GroveColorSensor.cpp +++ /dev/null @@ -1,270 +0,0 @@ -#include "GroveColorSensor.h" -#include -//#include - -// Default constructor -GroveColorSensor::GroveColorSensor() - : triggerMode_(INTEG_MODE_FREE | INTEG_PARAM_PULSE_COUNT1) - , interruptSource_(INT_SOURCE_CLEAR) - , interruptMode_(INTR_LEVEL | INTR_PERSIST_EVERY) - , gainAndPrescaler_(GAIN_1 | PRESCALER_1) - , sensorAddress_(COLOR_SENSOR_ADDR) -{ - -} - - -GroveColorSensor::init() -{ - GroveColorSensor::setTimingReg(); - GroveColorSensor::setInterruptSourceReg(); - GroveColorSensor::setInterruptControlReg(); - GroveColorSensor::setGain(); - GroveColorSensor::setEnableADC(); -} - -// Constructor with parameters -GroveColorSensor::GroveColorSensor( - const int& triggerMode - , const int& interruptSource - , const int& interruptMode - , const int& gainAndPrescaler - , const int& sensorAddress) - : triggerMode_(triggerMode) - , interruptSource_(interruptSource) - , interruptMode_(interruptMode) - , gainAndPrescaler_(gainAndPrescaler) - , sensorAddress_(sensorAddress) -{} - -void GroveColorSensor::setTimingReg() -{ - Wire.beginTransmission(sensorAddress_); - Wire.write(REG_TIMING); - Wire.write(triggerMode_); - Wire.endTransmission(); - delay(10); -} - -void GroveColorSensor::setInterruptSourceReg() -{ - Wire.beginTransmission(sensorAddress_); - Wire.write(REG_INT_SOURCE); - Wire.write(interruptSource_); - Wire.endTransmission(); - delay(10); -} - -void GroveColorSensor::setInterruptControlReg() -{ - Wire.beginTransmission(sensorAddress_); - Wire.write(REG_INT); - Wire.write(interruptMode_); - Wire.endTransmission(); - delay(10); -} - -void GroveColorSensor::setGain() -{ - Wire.beginTransmission(sensorAddress_); - Wire.write(REG_GAIN); - Wire.write(gainAndPrescaler_); - Wire.endTransmission(); -} - -void GroveColorSensor::setEnableADC() -{ - Wire.beginTransmission(sensorAddress_); - Wire.write(REG_CTL); - Wire.write(CTL_DAT_INIITIATE); - Wire.endTransmission(); - delay(10); -} - -void GroveColorSensor::clearInterrupt() -{ - Wire.beginTransmission(sensorAddress_); - Wire.write(CLR_INT); - Wire.endTransmission(); -} - -void GroveColorSensor::readRGB() -{ - Wire.beginTransmission(sensorAddress_); - Wire.write(REG_BLOCK_READ); - Wire.endTransmission(); - - Wire.beginTransmission(sensorAddress_); - Wire.requestFrom(sensorAddress_, 8); - delay(100); - - // if two bytes were received - if(8 <= Wire.available()) - { - int i; - for(i = 0; i < 8; ++i) - { - readingdata_[i] = Wire.read(); - Serial.println(readingdata_[i], BIN); - } - } - green_ = readingdata_[1] * 256 + readingdata_[0]; - red_ = readingdata_[3] * 256 + readingdata_[2]; - blue_ = readingdata_[5] * 256 + readingdata_[4]; - clear_ = readingdata_[7] * 256 + readingdata_[6]; - - Serial.print("The RGB value are: RGB( "); - Serial.print(red_,DEC); - Serial.print(", "); - Serial.print(green_,DEC); - Serial.print(", "); - Serial.print(blue_,DEC); - Serial.println(" )"); - Serial.print("The Clear channel value are: "); - Serial.println(clear_,DEC); -} - -void GroveColorSensor::readRGB(int *red, int *green, int *blue) -{ - Wire.beginTransmission(sensorAddress_); - Wire.write(REG_BLOCK_READ); - Wire.endTransmission(); - - Wire.beginTransmission(sensorAddress_); - Wire.requestFrom(sensorAddress_, 8); - delay(100); - - // if two bytes were received - if(8 <= Wire.available()) - { - int i; - for(i = 0; i < 8; ++i) - { - readingdata_[i] = Wire.read(); - //Serial.println(readingdata_[i], BIN); - } - } - green_ = readingdata_[1] * 256 + readingdata_[0]; - red_ = readingdata_[3] * 256 + readingdata_[2]; - blue_ = readingdata_[5] * 256 + readingdata_[4]; - clear_ = readingdata_[7] * 256 + readingdata_[6]; - - double tmp; - int maxColor; - - if ( ledStatus == 1 ) - { - red_ = red_ * 1.70; - blue_ = blue_ * 1.35; - - maxColor = max(red_, green_); - maxColor = max(maxColor, blue_); - - if(maxColor > 255) - { - tmp = 250.0/maxColor; - green_ *= tmp; - red_ *= tmp; - blue_ *= tmp; - } - } - if ( ledStatus == 0 ) - { - maxColor = max(red_, green_); - maxColor = max(maxColor, blue_); - - tmp = 250.0/maxColor; - green_ *= tmp; - red_ *= tmp; - blue_ *= tmp; - - } - - int minColor = min(red_, green_); - minColor = min(maxColor, blue_); - maxColor = max(red_, green_); - maxColor = max(maxColor, blue_); - - int greenTmp = green_; - int redTmp = red_; - int blueTmp = blue_; - -//when turn on LED, need to adjust the RGB data,otherwise it is almost the white color - if(red_ < 0.8*maxColor && red_ >= 0.6*maxColor) - { - red_ *= 0.4; - } - else if(red_ < 0.6*maxColor) - { - red_ *= 0.2; - } - - if(green_ < 0.8*maxColor && green_ >= 0.6*maxColor) - { - green_ *= 0.4; - } - else if(green_ < 0.6*maxColor) - { - if (maxColor == redTmp && greenTmp >= 2*blueTmp && greenTmp >= 0.2*redTmp) //orange - { - green_ *= 5; - } - green_ *= 0.2; - } - - if(blue_ < 0.8*maxColor && blue_ >= 0.6*maxColor) - { - blue_ *= 0.4; - } - else if(blue_ < 0.6*maxColor) - { - if (maxColor == redTmp && greenTmp >= 2*blueTmp && greenTmp >= 0.2*redTmp) //orange - { - blue_ *= 0.5; - } - if (maxColor == redTmp && greenTmp <= blueTmp && blueTmp >= 0.2*redTmp) //pink - { - blue_ *= 5; - } - blue_ *= 0.2; - } - - minColor = min(red_, green_); - minColor = min(maxColor, blue_); - if(maxColor == green_ && red_ >= 0.85*maxColor && minColor == blue_) //yellow - { - red_ = maxColor; - blue_ *= 0.4; - } - - *red = red_; - *green = green_; - *blue = blue_; -} - -void GroveColorSensor::calculateCoordinate() -{ - double X; - double Y; - double Z; - double x; - double y; - - X = (-0.14282) * red_ + (1.54924) * green_ + (-0.95641) * blue_; - Y = (-0.32466) * red_ + (1.57837) * green_ + (-0.73191) * blue_; - Z = (-0.68202) * red_ + (0.77073) * green_ + (0.563320) * blue_; - - x = X / (X + Y + Z); - y = Y / (X + Y + Z); - - if( (X > 0) && ( Y > 0) && ( Z > 0) ) - { - Serial.println("The x,y values are("); - Serial.print(x, 2); - Serial.print(" , "); - Serial.print(y, 2); - Serial.println(")"); - } - else - Serial.println("Error: overflow!"); -} \ No newline at end of file diff --git a/lib/Marlin/GroveColorSensor.h b/lib/Marlin/GroveColorSensor.h deleted file mode 100644 index 06b18d9..0000000 --- a/lib/Marlin/GroveColorSensor.h +++ /dev/null @@ -1,68 +0,0 @@ -/****************************************************************************/ -// Hardware: Grove - I2C Color Sensor -// Arduino IDE: Arduino-1.6 -// -// Refactored version of the library by FrankieChu - www.seeedstudio.com -// -/******************************************************************************/ - -#ifndef GROVECOLORSENSOR -#define GROVECOLORSENSOR - - -#include - -#include "GroveRegisters.h" - -class GroveColorSensor -{ -public: - - // Color Sensor LED Status - int ledStatus; - // Default constructor - GroveColorSensor(); - - init(); - // Constructor with parameters - GroveColorSensor( - const int& triggerMode - , const int& interruptSource - , const int& interruptMode - , const int& gainAndPrescaler - , const int& sensorAddress); - - void readRGB(); - void readRGB(int *red, int *green, int *blue); - void calculateCoordinate(); - void clearInterrupt(); - -private: - - // Set trigger mode. Including free mode, manually mode, single synchronization mode or so. - void setTimingReg(); - // Set interrupt source - void setInterruptSourceReg(); - // Set interrupt mode - void setInterruptControlReg(); - // Set gain value and pre-scaler value - void setGain(); - // Start ADC of the colour sensor - void setEnableADC(); - - // Used for storing the colour data - int readingdata_[8]; - int green_; - int red_; - int blue_; - int clear_; - - int triggerMode_; - int interruptSource_; - int interruptMode_; - int gainAndPrescaler_; - int sensorAddress_; - -}; - -#endif \ No newline at end of file diff --git a/lib/Marlin/GroveRegisters.h b/lib/Marlin/GroveRegisters.h deleted file mode 100644 index 13a28f2..0000000 --- a/lib/Marlin/GroveRegisters.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef GROVECOLORSENSORREG -#define GROVECOLORSENSORREG - -//the I2C address for the color sensor -#define COLOR_SENSOR_ADDR 0x39 -#define REG_CTL 0x80 -#define REG_TIMING 0x81 -#define REG_INT 0x82 -#define REG_INT_SOURCE 0x83 -#define REG_ID 0x84 -#define REG_GAIN 0x87 -#define REG_LOW_THRESH_LOW_BYTE 0x88 -#define REG_LOW_THRESH_HIGH_BYTE 0x89 -#define REG_HIGH_THRESH_LOW_BYTE 0x8A -#define REG_HIGH_THRESH_HIGH_BYTE 0x8B -//The REG_BLOCK_READ and REG_GREEN_LOW direction are the same -#define REG_BLOCK_READ 0xD0 -#define REG_GREEN_LOW 0xD0 -#define REG_GREEN_HIGH 0xD1 -#define REG_RED_LOW 0xD2 -#define REG_RED_HIGH 0xD3 -#define REG_BLUE_LOW 0xD4 -#define REG_BLUE_HIGH 0xD5 -#define REG_CLEAR_LOW 0xD6 -#define REG_CLEAR_HIGH 0xD7 -#define CTL_DAT_INIITIATE 0x03 -#define CLR_INT 0xE0 - -//Timing Register -#define SYNC_EDGE 0x40 -#define INTEG_MODE_FREE 0x00 -#define INTEG_MODE_MANUAL 0x10 -#define INTEG_MODE_SYN_SINGLE 0x20 -#define INTEG_MODE_SYN_MULTI 0x30 - -#define INTEG_PARAM_PULSE_COUNT1 0x00 -#define INTEG_PARAM_PULSE_COUNT2 0x01 -#define INTEG_PARAM_PULSE_COUNT4 0x02 -#define INTEG_PARAM_PULSE_COUNT8 0x03 - -//Interrupt Control Register -#define INTR_STOP 40 -#define INTR_DISABLE 0x00 -#define INTR_LEVEL 0x10 -#define INTR_PERSIST_EVERY 0x00 -#define INTR_PERSIST_SINGLE 0x01 - -//Interrupt Souce Register -#define INT_SOURCE_GREEN 0x00 -#define INT_SOURCE_RED 0x01 -#define INT_SOURCE_BLUE 0x10 -#define INT_SOURCE_CLEAR 0x03 - -//Gain Register -#define GAIN_1 0x00 -#define GAIN_4 0x10 -#define GAIN_16 0x20 -#define GANI_64 0x30 -#define PRESCALER_1 0x00 -#define PRESCALER_2 0x01 -#define PRESCALER_4 0x02 -#define PRESCALER_8 0x03 -#define PRESCALER_16 0x04 -#define PRESCALER_32 0x05 -#define PRESCALER_64 0x06 - -#endif \ No newline at end of file diff --git a/lib/Marlin/M100_Free_Mem_Chk.cpp b/lib/Marlin/M100_Free_Mem_Chk.cpp deleted file mode 100644 index 8268946..0000000 --- a/lib/Marlin/M100_Free_Mem_Chk.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * M100 Free Memory Watcher - * - * This code watches the free memory block between the bottom of the heap and the top of the stack. - * This memory block is initialized and watched via the M100 command. - * - * M100 I Initializes the free memory block and prints vitals statistics about the area - * M100 F Identifies how much of the free memory block remains free and unused. It also - * detects and reports any corruption within the free memory block that may have - * happened due to errant firmware. - * M100 D Does a hex display of the free memory block along with a flag for any errant - * data that does not match the expected value. - * M100 C x Corrupts x locations within the free memory block. This is useful to check the - * correctness of the M100 F and M100 D commands. - * - * Initial version by Roxy-3DPrintBoard - */ -#define M100_FREE_MEMORY_DUMPER // Comment out to remove Dump sub-command -#define M100_FREE_MEMORY_CORRUPTOR // Comment out to remove Corrupt sub-command - -#include "Marlin.h" - -#if ENABLED(M100_FREE_MEMORY_WATCHER) -extern char* __brkval; -extern size_t __heap_start, __heap_end, __flp; -extern char __bss_end; - -// -// Utility functions used by M100 to get its work done. -// - -char* top_of_stack(); -void prt_hex_nibble(unsigned int); -void prt_hex_byte(unsigned int); -void prt_hex_word(unsigned int); -int how_many_E5s_are_here(char*); - -void gcode_M100() { - static bool m100_not_initialized = true; - char* sp, *ptr; - int i, j, n; - // - // M100 D dumps the free memory block from __brkval to the stack pointer. - // malloc() eats memory from the start of the block and the stack grows - // up from the bottom of the block. Solid 0xE5's indicate nothing has - // used that memory yet. There should not be anything but 0xE5's within - // the block of 0xE5's. If there is, that would indicate memory corruption - // probably caused by bad pointers. Any unexpected values will be flagged in - // the right hand column to help spotting them. - // - #if ENABLED(M100_FREE_MEMORY_DUMPER) // Disable to remove Dump sub-command - if (code_seen('D')) { - ptr = __brkval ? __brkval : &__bss_end; - // - // We want to start and end the dump on a nice 16 byte boundry even though - // the values we are using are not 16 byte aligned. - // - SERIAL_ECHOPGM("\nbss_end : "); - prt_hex_word((unsigned int) ptr); - ptr = (char*)((unsigned long) ptr & 0xfff0); - sp = top_of_stack(); - SERIAL_ECHOPGM("\nStack Pointer : "); - prt_hex_word((unsigned int) sp); - SERIAL_EOL; - sp = (char*)((unsigned long) sp | 0x000f); - n = sp - ptr; - // - // This is the main loop of the Dump command. - // - while (ptr < sp) { - prt_hex_word((unsigned int) ptr); // Print the address - SERIAL_CHAR(':'); - for (i = 0; i < 16; i++) { // and 16 data bytes - prt_hex_byte(*(ptr + i)); - SERIAL_CHAR(' '); - } - SERIAL_CHAR('|'); // now show where non 0xE5's are - for (i = 0; i < 16; i++) { - if (*(ptr + i) == (char)0xe5) - SERIAL_CHAR(' '); - else - SERIAL_CHAR('?'); - } - SERIAL_EOL; - ptr += 16; - } - return; - } - #endif - // - // M100 F requests the code to return the number of free bytes in the memory pool along with - // other vital statistics that define the memory pool. - // - if (code_seen('F')) { - #if 0 - int max_addr = (int) __brkval ? __brkval : &__bss_end; - int max_cnt = 0; - #endif - int block_cnt = 0; - ptr = __brkval ? __brkval : &__bss_end; - sp = top_of_stack(); - n = sp - ptr; - // Scan through the range looking for the biggest block of 0xE5's we can find - for (i = 0; i < n; i++) { - if (*(ptr + i) == (char)0xe5) { - j = how_many_E5s_are_here(ptr + i); - if (j > 8) { - SERIAL_ECHOPAIR("Found ", j); - SERIAL_ECHOPGM(" bytes free at 0x"); - prt_hex_word((int) ptr + i); - SERIAL_EOL; - i += j; - block_cnt++; - } - #if 0 - if (j > max_cnt) { // We don't do anything with this information yet - max_cnt = j; // but we do know where the biggest free memory block is. - max_addr = (int) ptr + i; - } - #endif - } - } - if (block_cnt > 1) - SERIAL_ECHOLNPGM("\nMemory Corruption detected in free memory area."); - return; - } - // - // M100 C x Corrupts x locations in the free memory pool and reports the locations of the corruption. - // This is useful to check the correctness of the M100 D and the M100 F commands. - // - #if ENABLED(M100_FREE_MEMORY_CORRUPTOR) - if (code_seen('C')) { - int x = code_value_int(); // x gets the # of locations to corrupt within the memory pool - SERIAL_ECHOLNPGM("Corrupting free memory block.\n"); - ptr = __brkval ? __brkval : &__bss_end; - SERIAL_ECHOPAIR("\nbss_end : ", ptr); - ptr += 8; - sp = top_of_stack(); - SERIAL_ECHOPAIR("\nStack Pointer : ", sp); - SERIAL_ECHOLNPGM("\n"); - n = sp - ptr - 64; // -64 just to keep us from finding interrupt activity that - // has altered the stack. - j = n / (x + 1); - for (i = 1; i <= x; i++) { - *(ptr + (i * j)) = i; - SERIAL_ECHOPGM("\nCorrupting address: 0x"); - prt_hex_word((unsigned int)(ptr + (i * j))); - } - SERIAL_ECHOLNPGM("\n"); - return; - } - #endif - // - // M100 I Initializes the free memory pool so it can be watched and prints vital - // statistics that define the free memory pool. - // - if (m100_not_initialized || code_seen('I')) { // If no sub-command is specified, the first time - SERIAL_ECHOLNPGM("Initializing free memory block.\n"); // this happens, it will Initialize. - ptr = __brkval ? __brkval : &__bss_end; // Repeated M100 with no sub-command will not destroy the - SERIAL_ECHOPAIR("\nbss_end : ", ptr); // state of the initialized free memory pool. - ptr += 8; - sp = top_of_stack(); - SERIAL_ECHOPAIR("\nStack Pointer : ", sp); - SERIAL_ECHOLNPGM("\n"); - n = sp - ptr - 64; // -64 just to keep us from finding interrupt activity that - // has altered the stack. - SERIAL_ECHO(n); - SERIAL_ECHOLNPGM(" bytes of memory initialized.\n"); - for (i = 0; i < n; i++) - *(ptr + i) = (char)0xe5; - for (i = 0; i < n; i++) { - if (*(ptr + i) != (char)0xe5) { - SERIAL_ECHOPAIR("? address : ", ptr + i); - SERIAL_ECHOPAIR("=", *(ptr + i)); - SERIAL_ECHOLNPGM("\n"); - } - } - m100_not_initialized = false; - return; - } - return; -} - -// top_of_stack() returns the location of a variable on its stack frame. The value returned is above -// the stack once the function returns to the caller. - -char* top_of_stack() { - char x; - return &x + 1; // x is pulled on return; -} - -// -// 3 support routines to print hex numbers. We can print a nibble, byte and word -// - -void prt_hex_nibble(unsigned int n) { - if (n <= 9) - SERIAL_ECHO(n); - else - SERIAL_ECHO((char)('A' + n - 10)); -} - -void prt_hex_byte(unsigned int b) { - prt_hex_nibble((b & 0xf0) >> 4); - prt_hex_nibble(b & 0x0f); -} - -void prt_hex_word(unsigned int w) { - prt_hex_byte((w & 0xff00) >> 8); - prt_hex_byte(w & 0x0ff); -} - -// how_many_E5s_are_here() is a utility function to easily find out how many 0xE5's are -// at the specified location. Having this logic as a function simplifies the search code. -// -int how_many_E5s_are_here(char* p) { - int n; - for (n = 0; n < 32000; n++) { - if (*(p + n) != (char)0xe5) - return n - 1; - } - return -1; -} - -#endif - diff --git a/lib/Marlin/Makefile b/lib/Marlin/Makefile deleted file mode 100644 index 1328053..0000000 --- a/lib/Marlin/Makefile +++ /dev/null @@ -1,521 +0,0 @@ -# Sprinter Arduino Project Makefile -# -# Makefile Based on: -# Arduino 0011 Makefile -# Arduino adaptation by mellis, eighthave, oli.keller -# Marlin adaption by Daid -# -# This has been tested with Arduino 0022. -# -# This makefile allows you to build sketches from the command line -# without the Arduino environment (or Java). -# -# Detailed instructions for using the makefile: -# -# 1. Modify the line containing "ARDUINO_INSTALL_DIR" to point to the directory that -# contains the Arduino installation (for example, under Mac OS X, this -# might be /Applications/Arduino.app/Contents/Resources/Java). -# -# 2. Modify the line containing "UPLOAD_PORT" to refer to the filename -# representing the USB or serial connection to your Arduino board -# (e.g. UPLOAD_PORT = /dev/tty.USB0). If the exact name of this file -# changes, you can use * as a wild card (e.g. UPLOAD_PORT = /dev/tty.usb*). -# -# 3. Set the line containing "MCU" to match your board's processor. -# Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth -# or Diecimila have the atmega168. If you're using a LilyPad Arduino, -# change F_CPU to 8000000. If you are using Gen7 electronics, you -# probably need to use 20000000. Either way, you must regenerate -# the speed lookup table with create_speed_lookuptable.py. -# -# 4. Type "make" and press enter to compile/verify your program. -# -# 5. Type "make upload", reset your Arduino board, and press enter to -# upload your program to the Arduino board. -# -# Note that all settings are set with ?=, this means you can override them -# from the commandline with "make HARDWARE_MOTHERBOARD=71" for example - -# This defined the board you are compiling for (see boards.h for the options) -HARDWARE_MOTHERBOARD ?= 11 - -# Arduino source install directory, and version number -# On most linuxes this will be /usr/share/arduino -ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino -ARDUINO_VERSION ?= 106 - -# You can optionally set a path to the avr-gcc tools. Requires a trailing slash. (ex: /usr/local/avr-gcc/bin) -AVR_TOOLS_PATH ?= - -#Programmer configuration -UPLOAD_RATE ?= 57600 -AVRDUDE_PROGRAMMER ?= arduino -# on most linuxes this will be /dev/ttyACM0 or /dev/ttyACM1 -UPLOAD_PORT ?= /dev/ttyUSB0 - -#Directory used to build files in, contains all the build files, from object files to the final hex file -#on linux it is best to put an absolute path like /home/username/tmp . -BUILD_DIR ?= applet - -# This defines whether Liquid_TWI2 support will be built -LIQUID_TWI2 ?= 0 - -# this defines if Wire is needed -WIRE ?= 0 - -############################################################################ -# Below here nothing should be changed... - -# Here the Arduino variant is selected by the board type -# HARDWARE_VARIANT = "arduino", "Sanguino", "Gen7", ... -# MCU = "atmega1280", "Mega2560", "atmega2560", "atmega644p", ... - -#Gen7 -ifeq ($(HARDWARE_MOTHERBOARD),10) -HARDWARE_VARIANT ?= Gen7 -MCU ?= atmega644 -F_CPU ?= 20000000 -else ifeq ($(HARDWARE_MOTHERBOARD),11) -HARDWARE_VARIANT ?= Gen7 -MCU ?= atmega644p -F_CPU ?= 20000000 -else ifeq ($(HARDWARE_MOTHERBOARD),12) -HARDWARE_VARIANT ?= Gen7 -MCU ?= atmega644p -F_CPU ?= 20000000 -else ifeq ($(HARDWARE_MOTHERBOARD),13) -HARDWARE_VARIANT ?= Gen7 -MCU ?= atmega1284p -F_CPU ?= 20000000 - -#RAMPS -else ifeq ($(HARDWARE_MOTHERBOARD),3) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),33) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),34) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),35) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),36) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),38) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),43) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),44) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),45) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),46) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),48) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 - -#Gen6 -else ifeq ($(HARDWARE_MOTHERBOARD),5) -HARDWARE_VARIANT ?= Gen6 -MCU ?= atmega644p -else ifeq ($(HARDWARE_MOTHERBOARD),51) -HARDWARE_VARIANT ?= Gen6 -MCU ?= atmega644p - -#Sanguinololu -else ifeq ($(HARDWARE_MOTHERBOARD),6) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega644p -else ifeq ($(HARDWARE_MOTHERBOARD),62) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega644p -else ifeq ($(HARDWARE_MOTHERBOARD),63) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega644p -else ifeq ($(HARDWARE_MOTHERBOARD),65) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega1284p -else ifeq ($(HARDWARE_MOTHERBOARD),66) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega1284p -else ifeq ($(HARDWARE_MOTHERBOARD),69) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega1284p - -#Ultimaker -else ifeq ($(HARDWARE_MOTHERBOARD),7) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),71) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega1280 - -#Teensylu -else ifeq ($(HARDWARE_MOTHERBOARD),8) -HARDWARE_VARIANT ?= Teensy -MCU ?= at90usb1286 -else ifeq ($(HARDWARE_MOTHERBOARD),81) -HARDWARE_VARIANT ?= Teensy -MCU ?= at90usb1286 -else ifeq ($(HARDWARE_MOTHERBOARD),811) -HARDWARE_VARIANT ?= Teensy -MCU ?= at90usb1286 -else ifeq ($(HARDWARE_MOTHERBOARD),82) -HARDWARE_VARIANT ?= Teensy -MCU ?= at90usb646 -else ifeq ($(HARDWARE_MOTHERBOARD),83) -HARDWARE_VARIANT ?= Teensy -MCU ?= at90usb1286 -else ifeq ($(HARDWARE_MOTHERBOARD),84) -HARDWARE_VARIANT ?= Teensy -MCU ?= at90usb1286 - -#Gen3+ -else ifeq ($(HARDWARE_MOTHERBOARD),9) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega644p - -#Gen3 Monolithic Electronics -else ifeq ($(HARDWARE_MOTHERBOARD),22) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega644p - -#Megatronics -else ifeq ($(HARDWARE_MOTHERBOARD),70) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 - -#Alpha OMCA board -else ifeq ($(HARDWARE_MOTHERBOARD),90) -HARDWARE_VARIANT ?= SanguinoA -MCU ?= atmega644 - -#Final OMCA board -else ifeq ($(HARDWARE_MOTHERBOARD),91) -HARDWARE_VARIANT ?= Sanguino -MCU ?= atmega644p - -#Rambo -else ifeq ($(HARDWARE_MOTHERBOARD),301) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 - -# Azteeg -else ifeq ($(HARDWARE_MOTHERBOARD),67) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 -else ifeq ($(HARDWARE_MOTHERBOARD),68) -HARDWARE_VARIANT ?= arduino -MCU ?= atmega2560 - -endif - -# Be sure to regenerate speed_lookuptable.h with create_speed_lookuptable.py -# if you are setting this to something other than 16MHz -# Set to 16Mhz if not yet set. -F_CPU ?= 16000000 - -# Arduino contained the main source code for the Arduino -# Libraries, the "hardware variant" are for boards -# that derives from that, and their source are present in -# the main Marlin source directory -ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Sanguino)) -HARDWARE_DIR = $(ARDUINO_INSTALL_DIR)/hardware -else -ifeq ($(shell [ $(ARDUINO_VERSION) -ge 100 ] && echo true), true) -HARDWARE_DIR = ../ArduinoAddons/Arduino_1.x.x -else -HARDWARE_DIR = ../ArduinoAddons/Arduino_0.xx -endif -endif -HARDWARE_SRC = $(HARDWARE_DIR)/marlin/avr/cores/arduino - -TARGET = $(notdir $(CURDIR)) - -# VPATH tells make to look into these directory for source files, -# there is no need to specify explicit pathnames as long as the -# directory is added here - -VPATH = . -VPATH += $(BUILD_DIR) -VPATH += $(HARDWARE_SRC) -ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy Sanguino)) -VPATH += $(HARDWARE_DIR)/marlin/avr/libraries/LiquidCrystal/src -VPATH += $(HARDWARE_DIR)/marlin/avr/libraries/SPI -ifeq ($(LIQUID_TWI2), 1) -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2 -endif -ifeq ($(WIRE), 1) -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire -VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility -endif -else -VPATH += $(HARDWARE_DIR)/libraries/LiquidCrystal -VPATH += $(HARDWARE_DIR)/libraries/SPI -ifeq ($(LIQUID_TWI2), 1) -VPATH += $(HARDWARE_DIR)/libraries/Wire -VPATH += $(HARDWARE_DIR)/libraries/Wire/utility -VPATH += $(HARDWARE_DIR)/libraries/LiquidTWI2 -endif -ifeq ($(WIRE), 1) -VPATH += $(HARDWARE_DIR)/libraries/Wire -VPATH += $(HARDWARE_DIR)/libraries/Wire/utility -endif -endif -ifeq ($(HARDWARE_VARIANT), arduino) -HARDWARE_SUB_VARIANT ?= mega -VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/variants/$(HARDWARE_SUB_VARIANT) -else -ifeq ($(HARDWARE_VARIANT), Sanguino) -VPATH += $(HARDWARE_DIR)/marlin/avr/variants/sanguino -else -HARDWARE_SUB_VARIANT ?= standard -VPATH += $(HARDWARE_DIR)/$(HARDWARE_VARIANT)/variants/$(HARDWARE_SUB_VARIANT) -endif -endif -SRC = wiring.c \ - wiring_analog.c wiring_digital.c \ - wiring_pulse.c \ - wiring_shift.c WInterrupts.c hooks.c -ifeq ($(HARDWARE_VARIANT), Teensy) -SRC = wiring.c -VPATH += $(ARDUINO_INSTALL_DIR)/hardware/teensy/cores/teensy -endif -CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp \ - MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp \ - SdFile.cpp SdVolume.cpp planner.cpp stepper.cpp \ - temperature.cpp cardreader.cpp configuration_store.cpp \ - watchdog.cpp SPI.cpp servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \ - dac_mcp4728.cpp vector_3.cpp qr_solve.cpp buzzer.cpp -ifeq ($(LIQUID_TWI2), 0) -CXXSRC += LiquidCrystal.cpp -else -SRC += twi.c -CXXSRC += Wire.cpp LiquidTWI2.cpp -endif - -ifeq ($(WIRE), 1) -SRC += twi.c -CXXSRC += Wire.cpp -endif - -#Check for Arduino 1.0.0 or higher and use the correct source files for that version -ifeq ($(shell [ $(ARDUINO_VERSION) -ge 100 ] && echo true), true) -CXXSRC += main.cpp -else -SRC += pins_arduino.c main.c -endif - -FORMAT = ihex - -# Name of this Makefile (used for "make depend"). -MAKEFILE = Makefile - -# Debugging format. -# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2. -# AVR (extended) COFF requires stabs, plus an avr-objcopy run. -DEBUG = stabs - -OPT = s - -DEFINES ?= - -# Program settings -CC = $(AVR_TOOLS_PATH)avr-gcc -CXX = $(AVR_TOOLS_PATH)avr-g++ -OBJCOPY = $(AVR_TOOLS_PATH)avr-objcopy -OBJDUMP = $(AVR_TOOLS_PATH)avr-objdump -AR = $(AVR_TOOLS_PATH)avr-ar -SIZE = $(AVR_TOOLS_PATH)avr-size -NM = $(AVR_TOOLS_PATH)avr-nm -AVRDUDE = avrdude -REMOVE = rm -f -MV = mv -f - -# Place -D or -U options here -CDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)} -CXXDEFS = $(CDEFS) - -ifeq ($(HARDWARE_VARIANT), Teensy) -CDEFS += -DUSB_SERIAL -SRC += usb.c pins_teensy.c -CXXSRC += usb_api.cpp -endif - -# Add all the source directories as include directories too -CINCS = ${addprefix -I ,${VPATH}} -CXXINCS = ${addprefix -I ,${VPATH}} - -# Compiler flag to set the C Standard level. -# c89 - "ANSI" C -# gnu89 - c89 plus GCC extensions -# c99 - ISO C99 standard (not yet fully implemented) -# gnu99 - c99 plus GCC extensions -#CSTANDARD = -std=gnu99 -CDEBUG = -g$(DEBUG) -CWARN = -Wall -Wstrict-prototypes -CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct \ - -fshort-enums -w -ffunction-sections -fdata-sections \ - -DARDUINO=$(ARDUINO_VERSION) -ifneq ($(HARDWARE_MOTHERBOARD),) -CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD} -endif -#CEXTRA = -Wa,-adhlns=$(<:.c=.lst) -CEXTRA = -fno-use-cxa-atexit - -CFLAGS := $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CEXTRA) $(CTUNING) -CXXFLAGS := $(CDEFS) $(CINCS) -O$(OPT) -Wall $(CEXTRA) $(CTUNING) -#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs -LDFLAGS = -lm - - -# Programming support using avrdude. Settings and variables. -AVRDUDE_PORT = $(UPLOAD_PORT) -AVRDUDE_WRITE_FLASH = -Uflash:w:$(BUILD_DIR)/$(TARGET).hex:i -ifeq ($(shell uname -s), Linux) -AVRDUDE_CONF = /etc/avrdude/avrdude.conf -else -AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf -endif -AVRDUDE_FLAGS = -D -C$(AVRDUDE_CONF) \ - -p$(MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \ - -b$(UPLOAD_RATE) - -# Define all object files. -OBJ = ${patsubst %.c, $(BUILD_DIR)/%.o, ${SRC}} -OBJ += ${patsubst %.cpp, $(BUILD_DIR)/%.o, ${CXXSRC}} -OBJ += ${patsubst %.S, $(BUILD_DIR)/%.o, ${ASRC}} - -# Define all listing files. -LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst) - -# Combine all necessary flags and optional flags. -# Add target processor to flags. -ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) -ALL_CXXFLAGS = -mmcu=$(MCU) $(CXXFLAGS) -ALL_ASFLAGS = -mmcu=$(MCU) -x assembler-with-cpp $(ASFLAGS) - -# set V=1 (eg, "make V=1") to print the full commands etc. -ifneq ($V,1) - Pecho=@echo - P=@ -else - Pecho=@: - P= -endif - -# Default target. -all: sizeafter - -build: $(BUILD_DIR) elf hex - -# Creates the object directory -$(BUILD_DIR): - $P mkdir -p $(BUILD_DIR) - -elf: $(BUILD_DIR)/$(TARGET).elf -hex: $(BUILD_DIR)/$(TARGET).hex -eep: $(BUILD_DIR)/$(TARGET).eep -lss: $(BUILD_DIR)/$(TARGET).lss -sym: $(BUILD_DIR)/$(TARGET).sym - -# Program the device. -# Do not try to reset an Arduino if it's not one -upload: $(BUILD_DIR)/$(TARGET).hex -ifeq (${AVRDUDE_PROGRAMMER}, arduino) - stty hup < $(UPLOAD_PORT); true -endif - $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) -ifeq (${AVRDUDE_PROGRAMMER}, arduino) - stty -hup < $(UPLOAD_PORT); true -endif - - # Display size of file. -HEXSIZE = $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex -ELFSIZE = $(SIZE) --mcu=$(MCU) -C $(BUILD_DIR)/$(TARGET).elf; \ - $(SIZE) $(BUILD_DIR)/$(TARGET).elf -sizebefore: - $P if [ -f $(BUILD_DIR)/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi - -sizeafter: build - $P if [ -f $(BUILD_DIR)/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi - - -# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. -COFFCONVERT=$(OBJCOPY) --debugging \ - --change-section-address .data-0x800000 \ - --change-section-address .bss-0x800000 \ - --change-section-address .noinit-0x800000 \ - --change-section-address .eeprom-0x810000 - - -coff: $(BUILD_DIR)/$(TARGET).elf - $(COFFCONVERT) -O coff-avr $(BUILD_DIR)/$(TARGET).elf $(TARGET).cof - - -extcoff: $(TARGET).elf - $(COFFCONVERT) -O coff-ext-avr $(BUILD_DIR)/$(TARGET).elf $(TARGET).cof - - -.SUFFIXES: .elf .hex .eep .lss .sym -.PRECIOUS: .o - -.elf.hex: - $(Pecho) " COPY $@" - $P $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ - -.elf.eep: - -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ - --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ - -# Create extended listing file from ELF output file. -.elf.lss: - $(OBJDUMP) -h -S $< > $@ - -# Create a symbol table from ELF output file. -.elf.sym: - $(NM) -n $< > $@ - - # Link: create ELF output file from library. -$(BUILD_DIR)/$(TARGET).elf: $(OBJ) Configuration.h - $(Pecho) " CXX $@" - $P $(CC) $(ALL_CXXFLAGS) -Wl,--gc-sections -o $@ -L. $(OBJ) $(LDFLAGS) - -$(BUILD_DIR)/%.o: %.c Configuration.h Configuration_adv.h $(MAKEFILE) - $(Pecho) " CC $<" - $P $(CC) -MMD -c $(ALL_CFLAGS) $< -o $@ - -$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.cpp Configuration.h Configuration_adv.h $(MAKEFILE) - $(Pecho) " CXX $<" - $P $(CXX) -MMD -c $(ALL_CXXFLAGS) $< -o $@ - -$(BUILD_DIR)/%.o: %.cpp Configuration.h Configuration_adv.h $(MAKEFILE) - $(Pecho) " CXX $<" - $P $(CXX) -MMD -c $(ALL_CXXFLAGS) $< -o $@ - - -# Target: clean project. -clean: - $(Pecho) " RM $(BUILD_DIR)/*" - $P $(REMOVE) $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep $(BUILD_DIR)/$(TARGET).cof $(BUILD_DIR)/$(TARGET).elf \ - $(BUILD_DIR)/$(TARGET).map $(BUILD_DIR)/$(TARGET).sym $(BUILD_DIR)/$(TARGET).lss $(BUILD_DIR)/$(TARGET).cpp \ - $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d) - $(Pecho) " RMDIR $(BUILD_DIR)/" - $P rm -rf $(BUILD_DIR) - - -.PHONY: all build elf hex eep lss sym program coff extcoff clean depend sizebefore sizeafter - -# Automaticaly include the dependency files created by gcc --include ${wildcard $(BUILD_DIR)/*.d} diff --git a/lib/Marlin/Marlin.h b/lib/Marlin/Marlin.h deleted file mode 100644 index 7e3fd70..0000000 --- a/lib/Marlin/Marlin.h +++ /dev/null @@ -1,429 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#ifndef MARLIN_H -#define MARLIN_H - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "MarlinConfig.h" - -#include "enum.h" -#include "types.h" -#include "fastio.h" -#include "utility.h" - -#ifdef UARM_SWIFT -#include "uArmParams.h" -#include "uArmLed.h" -#include "uArmButton.h" -#include "uArmSerial.h" -#include "uArmAPI.h" -#include "uArmDebug.h" -#include "uArmIIC.h" -#include "X_IIC.h" -#include "Y_IIC.h" -#include "Z_IIC.h" -#include "uArmCalibration.h" -#include "uArmBuzzer.h" -#include "uArmUtils.h" -#include "uArmReportService.h" -#include "uArmService.h" -#include "uArmSwift.h" -#include "uArmGrove.h" -#include "uArmRecorder.h" -#include "uArmPump.h" -#endif - - -#ifdef UARM_SWIFT - #include "HardwareSerial.h" - #define MYSERIAL commSerial - -#else - -#ifdef USBCON - #include "HardwareSerial.h" - #if ENABLED(BLUETOOTH) - #define MYSERIAL bluetoothSerial - #else - #define MYSERIAL Serial - #endif // BLUETOOTH -#else - #include "MarlinSerial.h" - #define MYSERIAL customizedSerial -#endif - -#endif // UARM_SWIFT - -#include "WString.h" - -#if ENABLED(PRINTCOUNTER) - #include "printcounter.h" -#else - #include "stopwatch.h" -#endif - -#define SERIAL_CHAR(x) MYSERIAL.write(x) -#define SERIAL_EOL SERIAL_CHAR('\n') - -#define SERIAL_PROTOCOLCHAR(x) SERIAL_CHAR(x) -#define SERIAL_PROTOCOL(x) MYSERIAL.print(x) -#define SERIAL_PROTOCOL_F(x,y) MYSERIAL.print(x,y) -#define SERIAL_PROTOCOLPGM(x) serialprintPGM(PSTR(x)) -#define SERIAL_PROTOCOLLN(x) do{ MYSERIAL.print(x); SERIAL_EOL; }while(0) -#define SERIAL_PROTOCOLLNPGM(x) do{ serialprintPGM(PSTR(x "\n")); }while(0) - -#define SERIAL_PROTOCOLPAIR(name, value) SERIAL_ECHOPAIR(name, value) - -extern const char errormagic[] PROGMEM; -extern const char echomagic[] PROGMEM; - -#define SERIAL_ERROR_START serialprintPGM(errormagic) -#define SERIAL_ERROR(x) SERIAL_PROTOCOL(x) -#define SERIAL_ERRORPGM(x) SERIAL_PROTOCOLPGM(x) -#define SERIAL_ERRORLN(x) SERIAL_PROTOCOLLN(x) -#define SERIAL_ERRORLNPGM(x) SERIAL_PROTOCOLLNPGM(x) - -#define SERIAL_ECHO_START serialprintPGM(echomagic) -#define SERIAL_ECHO(x) SERIAL_PROTOCOL(x) -#define SERIAL_ECHOPGM(x) SERIAL_PROTOCOLPGM(x) -#define SERIAL_ECHOLN(x) SERIAL_PROTOCOLLN(x) -#define SERIAL_ECHOLNPGM(x) SERIAL_PROTOCOLLNPGM(x) - -#define SERIAL_ECHOPAIR(name,value) (serial_echopair_P(PSTR(name),(value))) - -void serial_echopair_P(const char* s_P, char v); -void serial_echopair_P(const char* s_P, int v); -void serial_echopair_P(const char* s_P, long v); -void serial_echopair_P(const char* s_P, float v); -void serial_echopair_P(const char* s_P, double v); -void serial_echopair_P(const char* s_P, unsigned long v); -FORCE_INLINE void serial_echopair_P(const char* s_P, uint8_t v) { serial_echopair_P(s_P, (int)v); } -FORCE_INLINE void serial_echopair_P(const char* s_P, uint16_t v) { serial_echopair_P(s_P, (int)v); } -FORCE_INLINE void serial_echopair_P(const char* s_P, bool v) { serial_echopair_P(s_P, (int)v); } -FORCE_INLINE void serial_echopair_P(const char* s_P, void *v) { serial_echopair_P(s_P, (unsigned long)v); } - -// Things to write to serial from Program memory. Saves 400 to 2k of RAM. -FORCE_INLINE void serialprintPGM(const char* str) { - char ch; - while ((ch = pgm_read_byte(str))) { - MYSERIAL.write(ch); - str++; - } -} - -void idle( - #if ENABLED(FILAMENT_CHANGE_FEATURE) - bool no_stepper_sleep = false // pass true to keep steppers from disabling on timeout - #endif -); - -void manage_inactivity(bool ignore_stepper_queue = false); - -#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) - extern bool extruder_duplication_enabled; -#endif - -#if HAS_X2_ENABLE - #define enable_x() do{ X_ENABLE_WRITE( X_ENABLE_ON); X2_ENABLE_WRITE( X_ENABLE_ON); }while(0) - #define disable_x() do{ X_ENABLE_WRITE(!X_ENABLE_ON); X2_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; }while(0) -#elif HAS_X_ENABLE - #define enable_x() X_ENABLE_WRITE( X_ENABLE_ON) - #define disable_x() do{ X_ENABLE_WRITE(!X_ENABLE_ON); axis_known_position[X_AXIS] = false; }while(0) -#else - #define enable_x() NOOP - #define disable_x() NOOP -#endif - -#if HAS_Y2_ENABLE - #define enable_y() do{ Y_ENABLE_WRITE( Y_ENABLE_ON); Y2_ENABLE_WRITE(Y_ENABLE_ON); }while(0) - #define disable_y() do{ Y_ENABLE_WRITE(!Y_ENABLE_ON); Y2_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }while(0) -#elif HAS_Y_ENABLE - #define enable_y() Y_ENABLE_WRITE( Y_ENABLE_ON) - #define disable_y() do{ Y_ENABLE_WRITE(!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; }while(0) -#else - #define enable_y() NOOP - #define disable_y() NOOP -#endif - -#if HAS_Z2_ENABLE - #define enable_z() do{ Z_ENABLE_WRITE( Z_ENABLE_ON); Z2_ENABLE_WRITE(Z_ENABLE_ON); }while(0) - #define disable_z() do{ Z_ENABLE_WRITE(!Z_ENABLE_ON); Z2_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }while(0) -#elif HAS_Z_ENABLE - #define enable_z() Z_ENABLE_WRITE( Z_ENABLE_ON) - #define disable_z() do{ Z_ENABLE_WRITE(!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }while(0) -#else - #define enable_z() NOOP - #define disable_z() NOOP -#endif - -#if ENABLED(MIXING_EXTRUDER) - - /** - * Mixing steppers synchronize their enable (and direction) together - */ - #if MIXING_STEPPERS > 3 - #define enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); E3_ENABLE_WRITE( E_ENABLE_ON); } - #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); E3_ENABLE_WRITE(!E_ENABLE_ON); } - #elif MIXING_STEPPERS > 2 - #define enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); E2_ENABLE_WRITE( E_ENABLE_ON); } - #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); E2_ENABLE_WRITE(!E_ENABLE_ON); } - #else - #define enable_e0() { E0_ENABLE_WRITE( E_ENABLE_ON); E1_ENABLE_WRITE( E_ENABLE_ON); } - #define disable_e0() { E0_ENABLE_WRITE(!E_ENABLE_ON); E1_ENABLE_WRITE(!E_ENABLE_ON); } - #endif - #define enable_e1() NOOP - #define disable_e1() NOOP - #define enable_e2() NOOP - #define disable_e2() NOOP - #define enable_e3() NOOP - #define disable_e3() NOOP - -#else // !MIXING_EXTRUDER - - #if HAS_E0_ENABLE - #define enable_e0() E0_ENABLE_WRITE( E_ENABLE_ON) - #define disable_e0() E0_ENABLE_WRITE(!E_ENABLE_ON) - #else - #define enable_e0() NOOP - #define disable_e0() NOOP - #endif - - #if E_STEPPERS > 1 && HAS_E1_ENABLE - #define enable_e1() E1_ENABLE_WRITE( E_ENABLE_ON) - #define disable_e1() E1_ENABLE_WRITE(!E_ENABLE_ON) - #else - #define enable_e1() NOOP - #define disable_e1() NOOP - #endif - - #if E_STEPPERS > 2 && HAS_E2_ENABLE - #define enable_e2() E2_ENABLE_WRITE( E_ENABLE_ON) - #define disable_e2() E2_ENABLE_WRITE(!E_ENABLE_ON) - #else - #define enable_e2() NOOP - #define disable_e2() NOOP - #endif - - #if E_STEPPERS > 3 && HAS_E3_ENABLE - #define enable_e3() E3_ENABLE_WRITE( E_ENABLE_ON) - #define disable_e3() E3_ENABLE_WRITE(!E_ENABLE_ON) - #else - #define enable_e3() NOOP - #define disable_e3() NOOP - #endif - -#endif // !MIXING_EXTRUDER - -/** - * The axis order in all axis related arrays is X, Y, Z, E - */ -#define _AXIS(AXIS) AXIS ##_AXIS - -void enable_all_steppers(); -void disable_all_steppers(); - -void FlushSerialRequestResend(); -void ok_to_send(); - -void reset_bed_level(); -void kill(const char*); - -void quickstop_stepper(); - -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - void handle_filament_runout(); -#endif - -extern uint8_t marlin_debug_flags; -#define DEBUGGING(F) (marlin_debug_flags & (DEBUG_## F)) - -extern bool Running; -inline bool IsRunning() { return Running; } -inline bool IsStopped() { return !Running; } - -bool enqueue_and_echo_command(const char* cmd, bool say_ok=false); //put a single ASCII command at the end of the current buffer or return false when it is full -void enqueue_and_echo_command_now(const char* cmd); // enqueue now, only return when the command has been enqueued -void enqueue_and_echo_commands_P(const char* cmd); //put one or many ASCII commands at the end of the current buffer, read from flash -void clear_command_queue(); - -void clamp_to_software_endstops(float target[3]); - -extern millis_t previous_cmd_ms; -inline void refresh_cmd_timeout() { previous_cmd_ms = millis(); } - -#if ENABLED(FAST_PWM_FAN) - void setPwmFrequency(uint8_t pin, int val); -#endif - -/** - * Feedrate scaling and conversion - */ -extern int feedrate_percentage; - -#define MMM_TO_MMS(MM_M) ((MM_M)/60.0) -#define MMS_TO_MMM(MM_S) ((MM_S)*60.0) -#define MMM_SCALED(MM_M) ((MM_M)*feedrate_percentage*0.01) -#define MMS_SCALED(MM_S) MMM_SCALED(MM_S) -#define MMM_TO_MMS_SCALED(MM_M) (MMS_SCALED(MMM_TO_MMS(MM_M))) - -extern bool axis_relative_modes[]; -extern bool volumetric_enabled; -extern int extruder_multiplier[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually -extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder. -extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner -extern bool axis_known_position[3]; // axis[n].is_known -extern bool axis_homed[3]; // axis[n].is_homed -extern volatile bool wait_for_heatup; - -extern float current_position[NUM_AXIS]; -extern float position_shift[3]; -extern float home_offset[3]; -extern float sw_endstop_min[3]; -extern float sw_endstop_max[3]; - -#define LOGICAL_POSITION(POS, AXIS) (POS + home_offset[AXIS] + position_shift[AXIS]) -#define RAW_POSITION(POS, AXIS) (POS - home_offset[AXIS] - position_shift[AXIS]) -#define LOGICAL_X_POSITION(POS) LOGICAL_POSITION(POS, X_AXIS) -#define LOGICAL_Y_POSITION(POS) LOGICAL_POSITION(POS, Y_AXIS) -#define LOGICAL_Z_POSITION(POS) LOGICAL_POSITION(POS, Z_AXIS) -#define RAW_X_POSITION(POS) RAW_POSITION(POS, X_AXIS) -#define RAW_Y_POSITION(POS) RAW_POSITION(POS, Y_AXIS) -#define RAW_Z_POSITION(POS) RAW_POSITION(POS, Z_AXIS) -#define RAW_CURRENT_POSITION(AXIS) RAW_POSITION(current_position[AXIS], AXIS) - -// GCode support for external objects -bool code_seen(char); -int code_value_int(); -float code_value_temp_abs(); -float code_value_temp_diff(); - -#if ENABLED(DELTA) - extern float delta[3]; - extern float endstop_adj[3]; // axis[n].endstop_adj - extern float delta_radius; - extern float delta_diagonal_rod; - extern float delta_segments_per_second; - extern float delta_diagonal_rod_trim_tower_1; - extern float delta_diagonal_rod_trim_tower_2; - extern float delta_diagonal_rod_trim_tower_3; - void inverse_kinematics(const float cartesian[3]); - void recalc_delta_settings(float radius, float diagonal_rod); - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - extern int delta_grid_spacing[2]; - void adjust_delta(float cartesian[3]); - #endif -#elif ENABLED(SCARA) - extern float delta[3]; - extern float axis_scaling[3]; // Build size scaling - void inverse_kinematics(const float cartesian[3]); - void forward_kinematics_SCARA(float f_scara[3]); -#endif - -#if ENABLED(Z_DUAL_ENDSTOPS) - extern float z_endstop_adj; -#endif - -#if HAS_BED_PROBE - extern float zprobe_zoffset; -#endif - -#if ENABLED(HOST_KEEPALIVE_FEATURE) - extern uint8_t host_keepalive_interval; -#endif - -#if FAN_COUNT > 0 - extern int fanSpeeds[FAN_COUNT]; -#endif - -#if ENABLED(BARICUDA) - extern int baricuda_valve_pressure; - extern int baricuda_e_to_p_pressure; -#endif - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - extern float filament_width_nominal; //holds the theoretical filament diameter i.e., 3.00 or 1.75 - extern bool filament_sensor; //indicates that filament sensor readings should control extrusion - extern float filament_width_meas; //holds the filament diameter as accurately measured - extern int8_t measurement_delay[]; //ring buffer to delay measurement - extern int filwidth_delay_index1, filwidth_delay_index2; //ring buffer index. used by planner, temperature, and main code - extern int meas_delay_cm; //delay distance -#endif - -#if ENABLED(FILAMENT_CHANGE_FEATURE) - extern FilamentChangeMenuResponse filament_change_menu_response; -#endif - -#if ENABLED(PID_EXTRUSION_SCALING) - extern int lpq_len; -#endif - -#if ENABLED(FWRETRACT) - extern bool autoretract_enabled; - extern bool retracted[EXTRUDERS]; // extruder[n].retracted - extern float retract_length, retract_length_swap, retract_feedrate_mm_s, retract_zlift; - extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate_mm_s; -#endif - -// Print job timer -#if ENABLED(PRINTCOUNTER) - extern PrintCounter print_job_timer; -#else - extern Stopwatch print_job_timer; -#endif - -// Handling multiple extruders pins -extern uint8_t active_extruder; - -#if HAS_TEMP_HOTEND || HAS_TEMP_BED - void print_heaterstates(); -#endif - -#if ENABLED(MIXING_EXTRUDER) - extern float mixing_factor[MIXING_STEPPERS]; -#endif - -void calculate_volumetric_multipliers(); - -// Buzzer -#if HAS_BUZZER && PIN_EXISTS(BEEPER) - #include "buzzer.h" -#endif - -/** - * Blocking movement and shorthand functions - */ -inline void do_blocking_move_to(float x, float y, float z, float fr_mm_m=0.0); -inline void do_blocking_move_to_x(float x, float fr_mm_m=0.0); -inline void do_blocking_move_to_z(float z, float fr_mm_m=0.0); -inline void do_blocking_move_to_xy(float x, float y, float fr_mm_m=0.0); - -#endif //MARLIN_H diff --git a/lib/Marlin/Marlin.ino b/lib/Marlin/Marlin.ino deleted file mode 100644 index 70fd8ad..0000000 --- a/lib/Marlin/Marlin.ino +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * About Marlin - * - * This firmware is a mashup between Sprinter and grbl. - * - https://github.com/kliment/Sprinter - * - https://github.com/simen/grbl/tree - * - * It has preliminary support for Matthew Roberts advance algorithm - * - http://reprap.org/pipermail/reprap-dev/2011-May/003323.html - */ - -/* All the implementation is done in *.cpp files to get better compatibility with avr-gcc without the Arduino IDE */ -/* Use this file to help the Arduino IDE find which Arduino libraries are needed and to keep documentation on GCode */ - -#include "MarlinConfig.h" - -#if ENABLED(ULTRA_LCD) - #if ENABLED(LCD_I2C_TYPE_PCF8575) - #include - #include - #elif ENABLED(LCD_I2C_TYPE_MCP23017) || ENABLED(LCD_I2C_TYPE_MCP23008) - #include - #include - #elif ENABLED(LCM1602) - #include - #include - #include - #elif ENABLED(DOGLCD) - #include // library for graphics LCD by Oli Kraus (https://github.com/olikraus/U8glib_Arduino) - #else - #include // library for character LCD - #endif -#endif - -#if HAS_DIGIPOTSS - #include -#endif - -#if ENABLED(DIGIPOT_I2C) - #include -#endif - -#if ENABLED(HAVE_TMCDRIVER) - #include - #include -#endif - -#if ENABLED(HAVE_L6470DRIVER) - #include - #include -#endif diff --git a/lib/Marlin/MarlinConfig.h b/lib/Marlin/MarlinConfig.h deleted file mode 100644 index c0202fa..0000000 --- a/lib/Marlin/MarlinConfig.h +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef MARLIN_CONFIG_H -#define MARLIN_CONFIG_H - -#include "fastio.h" -#include "macros.h" -#include "boards.h" -#include "Version.h" -#include "Configuration.h" -#include "Conditionals_LCD.h" -#include "Configuration_adv.h" -#include "pins.h" -#if !defined(USBCON) && !defined(UARM_SWIFT) - #define HardwareSerial_h // trick to disable the standard HWserial -#endif -#include "Arduino.h" -#include "Conditionals_post.h" -#include "SanityCheck.h" - -#endif // MARLIN_CONFIG_H diff --git a/lib/Marlin/MarlinSerial.cpp b/lib/Marlin/MarlinSerial.cpp deleted file mode 100644 index cb2205e..0000000 --- a/lib/Marlin/MarlinSerial.cpp +++ /dev/null @@ -1,545 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - MarlinSerial.cpp - Hardware serial library for Wiring - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - Modified 23 November 2006 by David A. Mellis - Modified 28 September 2010 by Mark Sproul - Modified 14 February 2016 by Andreas Hardtung (added tx buffer) -*/ - -#include "MarlinSerial.h" - -#include "stepper.h" - -#include "Marlin.h" - -#ifndef UARM_SWIFT - - -#ifndef USBCON -// this next line disables the entire HardwareSerial.cpp, -// this is so I can support Attiny series and any other chip without a UART -#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) - -#if UART_PRESENT(SERIAL_PORT) - ring_buffer_r rx_buffer = { { 0 }, 0, 0 }; - #if TX_BUFFER_SIZE > 0 - ring_buffer_t tx_buffer = { { 0 }, 0, 0 }; - static bool _written; - #endif -#endif - - -FORCE_INLINE void store_char(unsigned char c) { - CRITICAL_SECTION_START; - uint8_t h = rx_buffer.head; - uint8_t i = (uint8_t)(h + 1) & (RX_BUFFER_SIZE - 1); - - // if we should be storing the received character into the location - // just before the tail (meaning that the head would advance to the - // current location of the tail), we're about to overflow the buffer - // and so we don't write the character or advance the head. - if (i != rx_buffer.tail) { - rx_buffer.buffer[h] = c; - rx_buffer.head = i; - } - CRITICAL_SECTION_END; - - #if ENABLED(EMERGENCY_PARSER) - emergency_parser(c); - #endif -} - -#if TX_BUFFER_SIZE > 0 - FORCE_INLINE void _tx_udr_empty_irq(void) - { - // If interrupts are enabled, there must be more data in the output - // buffer. Send the next byte - uint8_t t = tx_buffer.tail; - uint8_t c = tx_buffer.buffer[t]; - tx_buffer.tail = (t + 1) & (TX_BUFFER_SIZE - 1); - - M_UDRx = c; - - // clear the TXC bit -- "can be cleared by writing a one to its bit - // location". This makes sure flush() won't return until the bytes - // actually got written - SBI(M_UCSRxA, M_TXCx); - - if (tx_buffer.head == tx_buffer.tail) { - // Buffer empty, so disable interrupts - CBI(M_UCSRxB, M_UDRIEx); - } - } - - #if defined(M_USARTx_UDRE_vect) - ISR(M_USARTx_UDRE_vect) { - _tx_udr_empty_irq(); - } - #endif - -#endif - -#if defined(M_USARTx_RX_vect) - ISR(M_USARTx_RX_vect) { - unsigned char c = M_UDRx; - store_char(c); - } -#endif - -// Constructors //////////////////////////////////////////////////////////////// - -MarlinSerial::MarlinSerial() { } - -// Public Methods ////////////////////////////////////////////////////////////// - -void MarlinSerial::begin(long baud) { - uint16_t baud_setting; - bool useU2X = true; - - #if F_CPU == 16000000UL && SERIAL_PORT == 0 - // hard-coded exception for compatibility with the bootloader shipped - // with the Duemilanove and previous boards and the firmware on the 8U2 - // on the Uno and Mega 2560. - if (baud == 57600) { - useU2X = false; - } - #endif - - if (useU2X) { - M_UCSRxA = _BV(M_U2Xx); - baud_setting = (F_CPU / 4 / baud - 1) / 2; - } - else { - M_UCSRxA = 0; - baud_setting = (F_CPU / 8 / baud - 1) / 2; - } - - // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) - M_UBRRxH = baud_setting >> 8; - M_UBRRxL = baud_setting; - - SBI(M_UCSRxB, M_RXENx); - SBI(M_UCSRxB, M_TXENx); - SBI(M_UCSRxB, M_RXCIEx); - #if TX_BUFFER_SIZE > 0 - CBI(M_UCSRxB, M_UDRIEx); - _written = false; - #endif -} - -void MarlinSerial::end() { - CBI(M_UCSRxB, M_RXENx); - CBI(M_UCSRxB, M_TXENx); - CBI(M_UCSRxB, M_RXCIEx); - CBI(M_UCSRxB, M_UDRIEx); -} - -void MarlinSerial::checkRx(void) { - if (TEST(M_UCSRxA, M_RXCx)) { - uint8_t c = M_UDRx; - store_char(c); - } -} - -int MarlinSerial::peek(void) { - int v; - CRITICAL_SECTION_START; - uint8_t t = rx_buffer.tail; - if (rx_buffer.head == t) { - v = -1; - } - else { - v = rx_buffer.buffer[t]; - } - CRITICAL_SECTION_END; - return v; -} - -int MarlinSerial::read(void) { - int v; - CRITICAL_SECTION_START; - uint8_t t = rx_buffer.tail; - if (rx_buffer.head == t) { - v = -1; - } - else { - v = rx_buffer.buffer[t]; - rx_buffer.tail = (uint8_t)(t + 1) & (RX_BUFFER_SIZE - 1); - } - CRITICAL_SECTION_END; - return v; -} - -uint8_t MarlinSerial::available(void) { - CRITICAL_SECTION_START; - uint8_t h = rx_buffer.head; - uint8_t t = rx_buffer.tail; - CRITICAL_SECTION_END; - return (uint8_t)(RX_BUFFER_SIZE + h - t) & (RX_BUFFER_SIZE - 1); -} - -void MarlinSerial::flush(void) { - // RX - // don't reverse this or there may be problems if the RX interrupt - // occurs after reading the value of rx_buffer_head but before writing - // the value to rx_buffer_tail; the previous value of rx_buffer_head - // may be written to rx_buffer_tail, making it appear as if the buffer - // were full, not empty. - CRITICAL_SECTION_START; - rx_buffer.head = rx_buffer.tail; - CRITICAL_SECTION_END; -} - -#if TX_BUFFER_SIZE > 0 - uint8_t MarlinSerial::availableForWrite(void) { - CRITICAL_SECTION_START; - uint8_t h = tx_buffer.head; - uint8_t t = tx_buffer.tail; - CRITICAL_SECTION_END; - return (uint8_t)(TX_BUFFER_SIZE + h - t) & (TX_BUFFER_SIZE - 1); - } - - void MarlinSerial::write(uint8_t c) { - _written = true; - CRITICAL_SECTION_START; - bool emty = (tx_buffer.head == tx_buffer.tail); - CRITICAL_SECTION_END; - // If the buffer and the data register is empty, just write the byte - // to the data register and be done. This shortcut helps - // significantly improve the effective datarate at high (> - // 500kbit/s) bitrates, where interrupt overhead becomes a slowdown. - if (emty && TEST(M_UCSRxA, M_UDREx)) { - CRITICAL_SECTION_START; - M_UDRx = c; - SBI(M_UCSRxA, M_TXCx); - CRITICAL_SECTION_END; - return; - } - uint8_t i = (tx_buffer.head + 1) & (TX_BUFFER_SIZE - 1); - - // If the output buffer is full, there's nothing for it other than to - // wait for the interrupt handler to empty it a bit - while (i == tx_buffer.tail) { - if (!TEST(SREG, SREG_I)) { - // Interrupts are disabled, so we'll have to poll the data - // register empty flag ourselves. If it is set, pretend an - // interrupt has happened and call the handler to free up - // space for us. - if (TEST(M_UCSRxA, M_UDREx)) - _tx_udr_empty_irq(); - } else { - // nop, the interrupt handler will free up space for us - } - } - - tx_buffer.buffer[tx_buffer.head] = c; - { CRITICAL_SECTION_START; - tx_buffer.head = i; - SBI(M_UCSRxB, M_UDRIEx); - CRITICAL_SECTION_END; - } - return; - } - - void MarlinSerial::flushTX(void) { - // TX - // If we have never written a byte, no need to flush. This special - // case is needed since there is no way to force the TXC (transmit - // complete) bit to 1 during initialization - if (!_written) - return; - - while (TEST(M_UCSRxB, M_UDRIEx) || !TEST(M_UCSRxA, M_TXCx)) { - if (!TEST(SREG, SREG_I) && TEST(M_UCSRxB, M_UDRIEx)) - // Interrupts are globally disabled, but the DR empty - // interrupt should be enabled, so poll the DR empty flag to - // prevent deadlock - if (TEST(M_UCSRxA, M_UDREx)) - _tx_udr_empty_irq(); - } - // If we get here, nothing is queued anymore (DRIE is disabled) and - // the hardware finished tranmission (TXC is set). -} - -#else - void MarlinSerial::write(uint8_t c) { - while (!TEST(M_UCSRxA, M_UDREx)) - ; - M_UDRx = c; - } -#endif - -// end NEW - -/// imports from print.h - - -void MarlinSerial::print(char c, int base) { - print((long) c, base); -} - -void MarlinSerial::print(unsigned char b, int base) { - print((unsigned long) b, base); -} - -void MarlinSerial::print(int n, int base) { - print((long) n, base); -} - -void MarlinSerial::print(unsigned int n, int base) { - print((unsigned long) n, base); -} - -void MarlinSerial::print(long n, int base) { - if (base == 0) { - write(n); - } - else if (base == 10) { - if (n < 0) { - print('-'); - n = -n; - } - printNumber(n, 10); - } - else { - printNumber(n, base); - } -} - -void MarlinSerial::print(unsigned long n, int base) { - if (base == 0) write(n); - else printNumber(n, base); -} - -void MarlinSerial::print(double n, int digits) { - printFloat(n, digits); -} - -void MarlinSerial::println(void) { - print('\r'); - print('\n'); -} - -void MarlinSerial::println(const String& s) { - print(s); - println(); -} - -void MarlinSerial::println(const char c[]) { - print(c); - println(); -} - -void MarlinSerial::println(char c, int base) { - print(c, base); - println(); -} - -void MarlinSerial::println(unsigned char b, int base) { - print(b, base); - println(); -} - -void MarlinSerial::println(int n, int base) { - print(n, base); - println(); -} - -void MarlinSerial::println(unsigned int n, int base) { - print(n, base); - println(); -} - -void MarlinSerial::println(long n, int base) { - print(n, base); - println(); -} - -void MarlinSerial::println(unsigned long n, int base) { - print(n, base); - println(); -} - -void MarlinSerial::println(double n, int digits) { - print(n, digits); - println(); -} - -// Private Methods ///////////////////////////////////////////////////////////// - -void MarlinSerial::printNumber(unsigned long n, uint8_t base) { - unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. - unsigned long i = 0; - - if (n == 0) { - print('0'); - return; - } - - while (n > 0) { - buf[i++] = n % base; - n /= base; - } - - for (; i > 0; i--) - print((char)(buf[i - 1] < 10 ? - '0' + buf[i - 1] : - 'A' + buf[i - 1] - 10)); -} - -void MarlinSerial::printFloat(double number, uint8_t digits) { - // Handle negative numbers - if (number < 0.0) { - print('-'); - number = -number; - } - - // Round correctly so that print(1.999, 2) prints as "2.00" - double rounding = 0.5; - for (uint8_t i = 0; i < digits; ++i) - rounding /= 10.0; - - number += rounding; - - // Extract the integer part of the number and print it - unsigned long int_part = (unsigned long)number; - double remainder = number - (double)int_part; - print(int_part); - - // Print the decimal point, but only if there are digits beyond - if (digits > 0) print('.'); - - // Extract digits from the remainder one at a time - while (digits-- > 0) { - remainder *= 10.0; - int toPrint = int(remainder); - print(toPrint); - remainder -= toPrint; - } -} -// Preinstantiate Objects ////////////////////////////////////////////////////// - - -MarlinSerial customizedSerial; - -#endif // whole file -#endif // !USBCON - -// For AT90USB targets use the UART for BT interfacing -#if defined(USBCON) && ENABLED(BLUETOOTH) - HardwareSerial bluetoothSerial; -#endif - -#if ENABLED(EMERGENCY_PARSER) - - // Currently looking for: M108, M112, M410 - // If you alter the parser please don't forget to update the capabilities in Conditionals_post.h - - FORCE_INLINE void emergency_parser(unsigned char c) { - - static e_parser_state state = state_RESET; - - switch (state) { - case state_RESET: - switch (c) { - case ' ': break; - case 'N': state = state_N; break; - case 'M': state = state_M; break; - default: state = state_IGNORE; - } - break; - - case state_N: - switch (c) { - case '0': case '1': case '2': - case '3': case '4': case '5': - case '6': case '7': case '8': - case '9': case '-': case ' ': break; - case 'M': state = state_M; break; - default: state = state_IGNORE; - } - break; - - case state_M: - switch (c) { - case ' ': break; - case '1': state = state_M1; break; - case '4': state = state_M4; break; - default: state = state_IGNORE; - } - break; - - case state_M1: - switch (c) { - case '0': state = state_M10; break; - case '1': state = state_M11; break; - default: state = state_IGNORE; - } - break; - - case state_M10: - state = (c == '8') ? state_M108 : state_IGNORE; - break; - - case state_M11: - state = (c == '2') ? state_M112 : state_IGNORE; - break; - - case state_M4: - state = (c == '1') ? state_M41 : state_IGNORE; - break; - - case state_M41: - state = (c == '0') ? state_M410 : state_IGNORE; - break; - - case state_IGNORE: - if (c == '\n') state = state_RESET; - break; - - default: - if (c == '\n') { - switch (state) { - case state_M108: - wait_for_heatup = false; - break; - case state_M112: - kill(PSTR(MSG_KILLED)); - break; - case state_M410: - quickstop_stepper(); - break; - default: - break; - } - state = state_RESET; - } - } - } -#endif - -#endif // UARM_SWIFT - diff --git a/lib/Marlin/MarlinSerial.h b/lib/Marlin/MarlinSerial.h deleted file mode 100644 index 58a6148..0000000 --- a/lib/Marlin/MarlinSerial.h +++ /dev/null @@ -1,185 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - MarlinSerial.h - Hardware serial library for Wiring - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - Modified 28 September 2010 by Mark Sproul - Modified 14 February 2016 by Andreas Hardtung (added tx buffer) - -*/ - -#ifndef MarlinSerial_h -#define MarlinSerial_h - -#ifndef UARM_SWIFT - -#include "MarlinConfig.h" - -#ifndef SERIAL_PORT - #define SERIAL_PORT 0 -#endif - -// The presence of the UBRRH register is used to detect a UART. -#define UART_PRESENT(port) ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \ - (port == 1 && defined(UBRR1H)) || (port == 2 && defined(UBRR2H)) || \ - (port == 3 && defined(UBRR3H))) - -// These are macros to build serial port register names for the selected SERIAL_PORT (C preprocessor -// requires two levels of indirection to expand macro values properly) -#define SERIAL_REGNAME(registerbase,number,suffix) SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) -#if SERIAL_PORT == 0 && (!defined(UBRR0H) || !defined(UDR0)) // use un-numbered registers if necessary - #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##suffix -#else - #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##number##suffix -#endif - -// Registers used by MarlinSerial class (these are expanded -// depending on selected serial port -#define M_UCSRxA SERIAL_REGNAME(UCSR,SERIAL_PORT,A) // defines M_UCSRxA to be UCSRnA where n is the serial port number -#define M_UCSRxB SERIAL_REGNAME(UCSR,SERIAL_PORT,B) -#define M_RXENx SERIAL_REGNAME(RXEN,SERIAL_PORT,) -#define M_TXENx SERIAL_REGNAME(TXEN,SERIAL_PORT,) -#define M_TXCx SERIAL_REGNAME(TXC,SERIAL_PORT,) -#define M_RXCIEx SERIAL_REGNAME(RXCIE,SERIAL_PORT,) -#define M_UDREx SERIAL_REGNAME(UDRE,SERIAL_PORT,) -#define M_UDRIEx SERIAL_REGNAME(UDRIE,SERIAL_PORT,) -#define M_UDRx SERIAL_REGNAME(UDR,SERIAL_PORT,) -#define M_UBRRxH SERIAL_REGNAME(UBRR,SERIAL_PORT,H) -#define M_UBRRxL SERIAL_REGNAME(UBRR,SERIAL_PORT,L) -#define M_RXCx SERIAL_REGNAME(RXC,SERIAL_PORT,) -#define M_USARTx_RX_vect SERIAL_REGNAME(USART,SERIAL_PORT,_RX_vect) -#define M_U2Xx SERIAL_REGNAME(U2X,SERIAL_PORT,) -#define M_USARTx_UDRE_vect SERIAL_REGNAME(USART,SERIAL_PORT,_UDRE_vect) - - -#define DEC 10 -#define HEX 16 -#define OCT 8 -#define BIN 2 -#define BYTE 0 - - -#ifndef USBCON -// Define constants and variables for buffering incoming serial data. We're -// using a ring buffer (I think), in which rx_buffer_head is the index of the -// location to which to write the next incoming character and rx_buffer_tail -// is the index of the location from which to read. -// 256 is the max limit due to uint8_t head and tail. Use only powers of 2. (...,16,32,64,128,256) -#ifndef RX_BUFFER_SIZE - #define RX_BUFFER_SIZE 128 -#endif -#ifndef TX_BUFFER_SIZE - #define TX_BUFFER_SIZE 32 -#endif -#if !((RX_BUFFER_SIZE == 256) ||(RX_BUFFER_SIZE == 128) ||(RX_BUFFER_SIZE == 64) ||(RX_BUFFER_SIZE == 32) ||(RX_BUFFER_SIZE == 16) ||(RX_BUFFER_SIZE == 8) ||(RX_BUFFER_SIZE == 4) ||(RX_BUFFER_SIZE == 2)) - #error "RX_BUFFER_SIZE has to be a power of 2 and >= 2" -#endif -#if !((TX_BUFFER_SIZE == 256) ||(TX_BUFFER_SIZE == 128) ||(TX_BUFFER_SIZE == 64) ||(TX_BUFFER_SIZE == 32) ||(TX_BUFFER_SIZE == 16) ||(TX_BUFFER_SIZE == 8) ||(TX_BUFFER_SIZE == 4) ||(TX_BUFFER_SIZE == 2) ||(TX_BUFFER_SIZE == 0)) - #error TX_BUFFER_SIZE has to be a power of 2 or 0 -#endif - -struct ring_buffer_r { - unsigned char buffer[RX_BUFFER_SIZE]; - volatile uint8_t head; - volatile uint8_t tail; -}; - -#if TX_BUFFER_SIZE > 0 - struct ring_buffer_t { - unsigned char buffer[TX_BUFFER_SIZE]; - volatile uint8_t head; - volatile uint8_t tail; - }; -#endif - -#if UART_PRESENT(SERIAL_PORT) - extern ring_buffer_r rx_buffer; - #if TX_BUFFER_SIZE > 0 - extern ring_buffer_t tx_buffer; - #endif -#endif - -#if ENABLED(EMERGENCY_PARSER) - #include "language.h" - void emergency_parser(unsigned char c); -#endif - -class MarlinSerial { //: public Stream - - public: - MarlinSerial(); - void begin(long); - void end(); - int peek(void); - int read(void); - void flush(void); - uint8_t available(void); - void checkRx(void); - void write(uint8_t c); - #if TX_BUFFER_SIZE > 0 - uint8_t availableForWrite(void); - void flushTX(void); - #endif - - private: - void printNumber(unsigned long, uint8_t); - void printFloat(double, uint8_t); - - public: - FORCE_INLINE void write(const char* str) { while (*str) write(*str++); } - FORCE_INLINE void write(const uint8_t* buffer, size_t size) { while (size--) write(*buffer++); } - FORCE_INLINE void print(const String& s) { for (int i = 0; i < (int)s.length(); i++) write(s[i]); } - FORCE_INLINE void print(const char* str) { write(str); } - - void print(char, int = BYTE); - void print(unsigned char, int = BYTE); - void print(int, int = DEC); - void print(unsigned int, int = DEC); - void print(long, int = DEC); - void print(unsigned long, int = DEC); - void print(double, int = 2); - - void println(const String& s); - void println(const char[]); - void println(char, int = BYTE); - void println(unsigned char, int = BYTE); - void println(int, int = DEC); - void println(unsigned int, int = DEC); - void println(long, int = DEC); - void println(unsigned long, int = DEC); - void println(double, int = 2); - void println(void); -}; - -extern MarlinSerial customizedSerial; -#endif // !USBCON - -// Use the UART for Bluetooth in AT90USB configurations -#if defined(USBCON) && ENABLED(BLUETOOTH) - extern HardwareSerial bluetoothSerial; -#endif - -#endif // UARM_SWIFT - -#endif diff --git a/lib/Marlin/Marlin_main.cpp b/lib/Marlin/Marlin_main.cpp deleted file mode 100644 index ac3908b..0000000 --- a/lib/Marlin/Marlin_main.cpp +++ /dev/null @@ -1,9492 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * - * About Marlin - * - * This firmware is a mashup between Sprinter and grbl. - * - https://github.com/kliment/Sprinter - * - https://github.com/simen/grbl/tree - * - * It has preliminary support for Matthew Roberts advance algorithm - * - http://reprap.org/pipermail/reprap-dev/2011-May/003323.html - */ - -#include "Marlin.h" - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - #include "vector_3.h" - #if ENABLED(AUTO_BED_LEVELING_GRID) - #include "qr_solve.h" - #endif -#endif // AUTO_BED_LEVELING_FEATURE - -#if ENABLED(MESH_BED_LEVELING) - #include "mesh_bed_leveling.h" -#endif - -#if ENABLED(BEZIER_CURVE_SUPPORT) - #include "planner_bezier.h" -#endif - -#include "ultralcd.h" -#include "planner.h" -#include "stepper.h" -#include "endstops.h" -#include "temperature.h" -#include "cardreader.h" -#include "configuration_store.h" -#include "language.h" -#include "pins_arduino.h" -#include "math.h" -#include "nozzle.h" -#include "duration_t.h" -#include "types.h" - -#if ENABLED(USE_WATCHDOG) - #include "watchdog.h" -#endif - -#if ENABLED(BLINKM) - #include "blinkm.h" - #include "Wire.h" -#endif - -#if HAS_SERVOS - #include "servo.h" -#endif - -#if HAS_DIGIPOTSS - #include -#endif - -#if ENABLED(DAC_STEPPER_CURRENT) - #include "stepper_dac.h" -#endif - -#if ENABLED(EXPERIMENTAL_I2CBUS) - #include "twibus.h" -#endif - - -#ifdef UARM_SWIFT - extern HardwareSerial* CommSerial; -#endif // UARM_SWIFT -/** - * Look here for descriptions of G-codes: - * - http://linuxcnc.org/handbook/gcode/g-code.html - * - http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes - * - * Help us document these G-codes online: - * - https://github.com/MarlinFirmware/Marlin/wiki/G-Code-in-Marlin - * - http://reprap.org/wiki/G-code - * - * ----------------- - * Implemented Codes - * ----------------- - * - * "G" Codes - * - * G0 -> G1 - * G1 - Coordinated Movement X Y Z E - * G2 - CW ARC - * G3 - CCW ARC - * G4 - Dwell S or P - * G5 - Cubic B-spline with XYZE destination and IJPQ offsets - * G10 - Retract filament according to settings of M207 - * G11 - Retract recover filament according to settings of M208 - * G12 - Clean tool - * G20 - Set input units to inches - * G21 - Set input units to millimeters - * G28 - Home one or more axes - * G29 - Detailed Z probe, probes the bed at 3 or more points. Will fail if you haven't homed yet. - * G30 - Single Z probe, probes bed at current XY location. - * G31 - Dock sled (Z_PROBE_SLED only) - * G32 - Undock sled (Z_PROBE_SLED only) - * G90 - Use Absolute Coordinates - * G91 - Use Relative Coordinates - * G92 - Set current position to coordinates given - * - * "M" Codes - * - * M0 - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled) - * M1 - Same as M0 - * M17 - Enable/Power all stepper motors - * M18 - Disable all stepper motors; same as M84 - * M20 - List SD card - * M21 - Init SD card - * M22 - Release SD card - * M23 - Select SD file (M23 filename.g) - * M24 - Start/resume SD print - * M25 - Pause SD print - * M26 - Set SD position in bytes (M26 S12345) - * M27 - Report SD print status - * M28 - Start SD write (M28 filename.g) - * M29 - Stop SD write - * M30 - Delete file from SD (M30 filename.g) - * M31 - Output time since last M109 or SD card start to serial - * M32 - Select file and start SD print (Can be used _while_ printing from SD card files): - * syntax "M32 /path/filename#", or "M32 S !filename#" - * Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include). - * The '#' is necessary when calling from within sd files, as it stops buffer prereading - * M33 - Get the longname version of a path - * M42 - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used. - * M48 - Measure Z_Probe repeatability. M48 [P # of points] [X position] [Y position] [V_erboseness #] [E_ngage Probe] [L # of legs of travel] - * M75 - Start the print job timer - * M76 - Pause the print job timer - * M77 - Stop the print job timer - * M78 - Show statistical information about the print jobs - * M80 - Turn on Power Supply - * M81 - Turn off Power Supply - * M82 - Set E codes absolute (default) - * M83 - Set E codes relative while in Absolute Coordinates (G90) mode - * M84 - Disable steppers until next move, - * or use S to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout. - * M85 - Set inactivity shutdown timer with parameter S. To disable set zero (default) - * M92 - Set planner.axis_steps_per_mm - same syntax as G92 - * M104 - Set extruder target temp - * M105 - Read current temp - * M106 - Fan on - * M107 - Fan off - * M108 - Stop the waiting for heaters in M109, M190, M303. Does not affect the target temperature. - * M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating - * Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling - * IF AUTOTEMP is enabled, S B F. Exit autotemp by any M109 without F - * M110 - Set the current line number - * M111 - Set debug flags with S. See flag bits defined in enum.h. - * M112 - Emergency stop - * M113 - Get or set the timeout interval for Host Keepalive "busy" messages - * M114 - Output current position to serial port - * M115 - Capabilities string - * M117 - Display a message on the controller screen - * M119 - Output Endstop status to serial port - * M120 - Enable endstop detection - * M121 - Disable endstop detection - * M126 - Solenoid Air Valve Open (BariCUDA support by jmil) - * M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil) - * M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil) - * M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil) - * M140 - Set bed target temp - * M145 - Set the heatup state H B F for S (0=PLA, 1=ABS) - * M149 - Set temperature units - * M150 - Set BlinkM Color Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work. - * M163 - Set a single proportion for a mixing extruder. Requires MIXING_EXTRUDER. - * M164 - Save the mix as a virtual extruder. Requires MIXING_EXTRUDER and MIXING_VIRTUAL_TOOLS. - * M165 - Set the proportions for a mixing extruder. Use parameters ABCDHI to set the mixing factors. Requires MIXING_EXTRUDER. - * M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating - * Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling - * M200 - Set filament diameter, D, setting E axis units to cubic. (Use S0 to revert to linear units.) - * M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) - * M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!! - * M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in units/sec - * M204 - Set default acceleration: P for Printing moves, R for Retract only (no X, Y, Z) moves and T for Travel (non printing) moves (ex. M204 P800 T3000 R9000) in units/sec^2 - * M205 - Set advanced settings. Current units apply: - S T minimum speeds - B - X, Z, E - * M206 - Set additional homing offset - * M207 - Set Retract Length: S, Feedrate: F, and Z lift: Z - * M208 - Set Recover (unretract) Additional (!) Length: S and Feedrate: F - * M209 - Turn Automatic Retract Detection on/off: S (For slicers that don't support G10/11). - Every normal extrude-only move will be classified as retract depending on the direction. - * M218 - Set a tool offset: T X Y - * M220 - Set Feedrate Percentage: S ("FR" on your LCD) - * M221 - Set Flow Percentage: S - * M226 - Wait until the specified pin reaches the state required: P S - * M240 - Trigger a camera to take a photograph - * M250 - Set LCD contrast C (value 0..63) - * M280 - Set servo position absolute. P: servo index, S: angle or microseconds - * M300 - Play beep sound S P - * M301 - Set PID parameters P I and D - * M302 - Allow cold extrudes, or set the minimum extrude S. - * M303 - PID relay autotune S sets the target temperature. (default target temperature = 150C) - * M304 - Set bed PID parameters P I and D - * M380 - Activate solenoid on active extruder - * M381 - Disable all solenoids - * M400 - Finish all moves - * M401 - Lower Z probe if present - * M402 - Raise Z probe if present - * M404 - Display or set the Nominal Filament Width: [ N ] - * M405 - Enable Filament Sensor extrusion control. Optional delay between sensor and extruder: D - * M406 - Disable Filament Sensor extrusion control - * M407 - Display measured filament diameter in millimeters - * M410 - Quickstop. Abort all the planned moves - * M420 - Enable/Disable Mesh Leveling (with current values) S1=enable S0=disable - * M421 - Set a single Z coordinate in the Mesh Leveling grid. X Y Z - * M428 - Set the home_offset logically based on the current_position - * M500 - Store parameters in EEPROM - * M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily). - * M502 - Revert to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. - * M503 - Print the current settings (from memory not from EEPROM). Use S0 to leave off headings. - * M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) - * M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] - * M665 - Set delta configurations: L R S - * M666 - Set delta endstop adjustment - * M605 - Set dual x-carriage movement mode: S [ X R ] - * M851 - Set Z probe's Z offset in current units. (Negative values apply to probes that extend below the nozzle.) - * M907 - Set digital trimpot motor current using axis codes. - * M908 - Control digital trimpot directly. - * M909 - DAC_STEPPER_CURRENT: Print digipot/DAC current value - * M910 - DAC_STEPPER_CURRENT: Commit digipot/DAC value to external EEPROM via I2C - * M350 - Set microstepping mode. - * M351 - Toggle MS1 MS2 pins directly. - * - * ************ SCARA Specific - This can change to suit future G-code regulations - * M360 - SCARA calibration: Move to cal-position ThetaA (0 deg calibration) - * M361 - SCARA calibration: Move to cal-position ThetaB (90 deg calibration - steps per degree) - * M362 - SCARA calibration: Move to cal-position PsiA (0 deg calibration) - * M363 - SCARA calibration: Move to cal-position PsiB (90 deg calibration - steps per degree) - * M364 - SCARA calibration: Move to cal-position PSIC (90 deg to Theta calibration position) - * M365 - SCARA calibration: Scaling factor, X, Y, Z axis - * ************* SCARA End *************** - * - * ************ Custom codes - This can change to suit future G-code regulations - * M100 - Watch Free Memory (For Debugging Only) - * M928 - Start SD logging (M928 filename.g) - ended by M29 - * M999 - Restart after being stopped by error - * - * "T" Codes - * - * T0-T3 - Select a tool by index (usually an extruder) [ F ] - * - */ - -#if ENABLED(M100_FREE_MEMORY_WATCHER) - void gcode_M100(); -#endif - -#if ENABLED(SDSUPPORT) - CardReader card; -#endif - -#if ENABLED(EXPERIMENTAL_I2CBUS) - TWIBus i2c; -#endif - -bool Running = true; - -uint8_t marlin_debug_flags = DEBUG_NONE; - -float current_position[NUM_AXIS] = { 0.0 }; - -#ifdef UARM_SWIFT -float destination[NUM_AXIS] = { 0.0 }; -const char polor_axis_codes[NUM_AXIS] = {'S', 'R', 'H', 'E'}; -float feedrate_mm_m = 1500.0, saved_feedrate_mm_m; - - -#else -static float destination[NUM_AXIS] = { 0.0 }; -static float feedrate_mm_m = 1500.0, saved_feedrate_mm_m; - -#endif -bool axis_known_position[3] = { false }; -bool axis_homed[3] = { false }; - -static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0; - -static char command_queue[BUFSIZE][MAX_CMD_SIZE]; -static char* current_command, *current_command_args; -static uint8_t cmd_queue_index_r = 0, - cmd_queue_index_w = 0, - commands_in_queue = 0; - -#if ENABLED(INCH_MODE_SUPPORT) - float linear_unit_factor = 1.0; - float volumetric_unit_factor = 1.0; -#endif -#if ENABLED(TEMPERATURE_UNITS_SUPPORT) - TempUnit input_temp_units = TEMPUNIT_C; -#endif - -/** - * Feed rates are often configured with mm/m - * but the planner and stepper like mm/s units. - */ -const float homing_feedrate_mm_m[] = { - #if ENABLED(DELTA) - HOMING_FEEDRATE_Z, HOMING_FEEDRATE_Z, - #else - HOMING_FEEDRATE_XY, HOMING_FEEDRATE_XY, - #endif - HOMING_FEEDRATE_Z, 0 -}; - -int feedrate_percentage = 100, saved_feedrate_percentage; - -bool axis_relative_modes[] = AXIS_RELATIVE_MODES; -int extruder_multiplier[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(100); -bool volumetric_enabled = false; -float filament_size[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(DEFAULT_NOMINAL_FILAMENT_DIA); -float volumetric_multiplier[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(1.0); - -// The distance that XYZ has been offset by G92. Reset by G28. -float position_shift[3] = { 0 }; - -// This offset is added to the configured home position. -// Set by M206, M428, or menu item. Saved to EEPROM. -float home_offset[3] = { 0 }; - -// Software Endstops. Default to configured limits. -float sw_endstop_min[3] = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS }; -float sw_endstop_max[3] = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS }; - -#if FAN_COUNT > 0 - int fanSpeeds[FAN_COUNT] = { 0 }; -#endif - -// The active extruder (tool). Set with T command. -uint8_t active_extruder = 0; - -// Relative Mode. Enable with G91, disable with G90. -static bool relative_mode = false; - -volatile bool wait_for_heatup = true; - -const char errormagic[] PROGMEM = "Error:"; -const char echomagic[] PROGMEM = "echo:"; -const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'}; - -static int serial_count = 0; - -// GCode parameter pointer used by code_seen(), code_value_float(), etc. -static char* seen_pointer; - -// Next Immediate GCode Command pointer. NULL if none. -const char* queued_commands_P = NULL; - -const int sensitive_pins[] = SENSITIVE_PINS; ///< Sensitive pin list for M42 - -// Inactivity shutdown -millis_t previous_cmd_ms = 0; -static millis_t max_inactive_time = 0; -static millis_t stepper_inactive_time = (DEFAULT_STEPPER_DEACTIVE_TIME) * 1000UL; - -// Print Job Timer -#if ENABLED(PRINTCOUNTER) - PrintCounter print_job_timer = PrintCounter(); -#else - Stopwatch print_job_timer = Stopwatch(); -#endif - -// Buzzer - I2C on the LCD or a BEEPER_PIN -#if ENABLED(LCD_USE_I2C_BUZZER) - #define BUZZ(d,f) lcd_buzz(d, f) -#elif HAS_BUZZER - Buzzer buzzer; - #define BUZZ(d,f) buzzer.tone(d, f) -#else - #define BUZZ(d,f) NOOP -#endif - -static uint8_t target_extruder; - -#if HAS_BED_PROBE - float zprobe_zoffset = Z_PROBE_OFFSET_FROM_EXTRUDER; -#endif - -#define PLANNER_XY_FEEDRATE() (min(planner.max_feedrate_mm_s[X_AXIS], planner.max_feedrate_mm_s[Y_AXIS])) - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - int xy_probe_feedrate_mm_m = XY_PROBE_SPEED; - bool bed_leveling_in_progress = false; - #define XY_PROBE_FEEDRATE_MM_M xy_probe_feedrate_mm_m -#elif defined(XY_PROBE_SPEED) - #define XY_PROBE_FEEDRATE_MM_M XY_PROBE_SPEED -#else - #define XY_PROBE_FEEDRATE_MM_M MMS_TO_MMM(PLANNER_XY_FEEDRATE()) -#endif - -#if ENABLED(Z_DUAL_ENDSTOPS) && DISABLED(DELTA) - float z_endstop_adj = 0; -#endif - -// Extruder offsets -#if HOTENDS > 1 - float hotend_offset[][HOTENDS] = { - HOTEND_OFFSET_X, - HOTEND_OFFSET_Y - #ifdef HOTEND_OFFSET_Z - , HOTEND_OFFSET_Z - #endif - }; -#endif - -#if HAS_Z_SERVO_ENDSTOP - const int z_servo_angle[2] = Z_SERVO_ANGLES; -#endif - -#if ENABLED(BARICUDA) - int baricuda_valve_pressure = 0; - int baricuda_e_to_p_pressure = 0; -#endif - -#if ENABLED(FWRETRACT) - - bool autoretract_enabled = false; - bool retracted[EXTRUDERS] = { false }; - bool retracted_swap[EXTRUDERS] = { false }; - - float retract_length = RETRACT_LENGTH; - float retract_length_swap = RETRACT_LENGTH_SWAP; - float retract_feedrate_mm_s = RETRACT_FEEDRATE; - float retract_zlift = RETRACT_ZLIFT; - float retract_recover_length = RETRACT_RECOVER_LENGTH; - float retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP; - float retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE; - -#endif // FWRETRACT - -#if ENABLED(ULTIPANEL) && HAS_POWER_SWITCH - bool powersupply = - #if ENABLED(PS_DEFAULT_OFF) - false - #else - true - #endif - ; -#endif - -#if ENABLED(DELTA) - - #define TOWER_1 X_AXIS - #define TOWER_2 Y_AXIS - #define TOWER_3 Z_AXIS - - float delta[3]; - float cartesian_position[3] = { 0 }; - #define SIN_60 0.8660254037844386 - #define COS_60 0.5 - float endstop_adj[3] = { 0 }; - // these are the default values, can be overriden with M665 - float delta_radius = DELTA_RADIUS; - float delta_tower1_x = -SIN_60 * (delta_radius + DELTA_RADIUS_TRIM_TOWER_1); // front left tower - float delta_tower1_y = -COS_60 * (delta_radius + DELTA_RADIUS_TRIM_TOWER_1); - float delta_tower2_x = SIN_60 * (delta_radius + DELTA_RADIUS_TRIM_TOWER_2); // front right tower - float delta_tower2_y = -COS_60 * (delta_radius + DELTA_RADIUS_TRIM_TOWER_2); - float delta_tower3_x = 0; // back middle tower - float delta_tower3_y = (delta_radius + DELTA_RADIUS_TRIM_TOWER_3); - float delta_diagonal_rod = DELTA_DIAGONAL_ROD; - float delta_diagonal_rod_trim_tower_1 = DELTA_DIAGONAL_ROD_TRIM_TOWER_1; - float delta_diagonal_rod_trim_tower_2 = DELTA_DIAGONAL_ROD_TRIM_TOWER_2; - float delta_diagonal_rod_trim_tower_3 = DELTA_DIAGONAL_ROD_TRIM_TOWER_3; - float delta_diagonal_rod_2_tower_1 = sq(delta_diagonal_rod + delta_diagonal_rod_trim_tower_1); - float delta_diagonal_rod_2_tower_2 = sq(delta_diagonal_rod + delta_diagonal_rod_trim_tower_2); - float delta_diagonal_rod_2_tower_3 = sq(delta_diagonal_rod + delta_diagonal_rod_trim_tower_3); - float delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND; - float delta_clip_start_height = Z_MAX_POS; - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - int delta_grid_spacing[2] = { 0, 0 }; - float bed_level[AUTO_BED_LEVELING_GRID_POINTS][AUTO_BED_LEVELING_GRID_POINTS]; - #endif - float delta_safe_distance_from_top(); -#else - static bool home_all_axis = true; -#endif - -#if ENABLED(SCARA) - float delta_segments_per_second = SCARA_SEGMENTS_PER_SECOND; - float delta[3]; - float axis_scaling[3] = { 1, 1, 1 }; // Build size scaling, default to 1 -#endif - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - //Variables for Filament Sensor input - float filament_width_nominal = DEFAULT_NOMINAL_FILAMENT_DIA; //Set nominal filament width, can be changed with M404 - bool filament_sensor = false; //M405 turns on filament_sensor control, M406 turns it off - float filament_width_meas = DEFAULT_MEASURED_FILAMENT_DIA; //Stores the measured filament diameter - int8_t measurement_delay[MAX_MEASUREMENT_DELAY + 1]; //ring buffer to delay measurement store extruder factor after subtracting 100 - int filwidth_delay_index1 = 0; //index into ring buffer - int filwidth_delay_index2 = -1; //index into ring buffer - set to -1 on startup to indicate ring buffer needs to be initialized - int meas_delay_cm = MEASUREMENT_DELAY_CM; //distance delay setting -#endif - -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - static bool filament_ran_out = false; -#endif - -#if ENABLED(FILAMENT_CHANGE_FEATURE) - FilamentChangeMenuResponse filament_change_menu_response; -#endif - -#if ENABLED(MIXING_EXTRUDER) - float mixing_factor[MIXING_STEPPERS]; - #if MIXING_VIRTUAL_TOOLS > 1 - float mixing_virtual_tool_mix[MIXING_VIRTUAL_TOOLS][MIXING_STEPPERS]; - #endif -#endif - -static bool send_ok[BUFSIZE]; - -#if HAS_SERVOS - Servo servo[NUM_SERVOS]; - #define MOVE_SERVO(I, P) servo[I].move(P) - #if HAS_Z_SERVO_ENDSTOP - #define DEPLOY_Z_SERVO() MOVE_SERVO(Z_ENDSTOP_SERVO_NR, z_servo_angle[0]) - #define STOW_Z_SERVO() MOVE_SERVO(Z_ENDSTOP_SERVO_NR, z_servo_angle[1]) - #endif -#endif - -#ifdef CHDK - millis_t chdkHigh = 0; - boolean chdkActive = false; -#endif - -#if ENABLED(PID_EXTRUSION_SCALING) - int lpq_len = 20; -#endif - -#if ENABLED(HOST_KEEPALIVE_FEATURE) - static MarlinBusyState busy_state = NOT_BUSY; - static millis_t next_busy_signal_ms = 0; - uint8_t host_keepalive_interval = DEFAULT_KEEPALIVE_INTERVAL; - #define KEEPALIVE_STATE(n) do{ busy_state = n; }while(0) -#else - #define host_keepalive() ; - #define KEEPALIVE_STATE(n) ; -#endif // HOST_KEEPALIVE_FEATURE - -/** - * *************************************************************************** - * ******************************** FUNCTIONS ******************************** - * *************************************************************************** - */ - -void stop(); - -void get_available_commands(); -void process_next_command(); -void prepare_move_to_destination(); -void set_current_from_steppers_for_axis(AxisEnum axis); - -#if ENABLED(ARC_SUPPORT) - void plan_arc(float target[NUM_AXIS], float* offset, uint8_t clockwise); -#endif - -#if ENABLED(BEZIER_CURVE_SUPPORT) - void plan_cubic_move(const float offset[4]); -#endif - -void serial_echopair_P(const char* s_P, char v) { serialprintPGM(s_P); SERIAL_CHAR(v); } -void serial_echopair_P(const char* s_P, int v) { serialprintPGM(s_P); SERIAL_ECHO(v); } -void serial_echopair_P(const char* s_P, long v) { serialprintPGM(s_P); SERIAL_ECHO(v); } -void serial_echopair_P(const char* s_P, float v) { serialprintPGM(s_P); SERIAL_ECHO(v); } -void serial_echopair_P(const char* s_P, double v) { serialprintPGM(s_P); SERIAL_ECHO(v); } -void serial_echopair_P(const char* s_P, unsigned long v) { serialprintPGM(s_P); SERIAL_ECHO(v); } - -void tool_change(const uint8_t tmp_extruder, const float fr_mm_m=0.0, bool no_move=false); -static void report_current_position(); - -#if ENABLED(DEBUG_LEVELING_FEATURE) - void print_xyz(const char* prefix, const char* suffix, const float x, const float y, const float z) { - serialprintPGM(prefix); - SERIAL_ECHOPAIR("(", x); - SERIAL_ECHOPAIR(", ", y); - SERIAL_ECHOPAIR(", ", z); - SERIAL_ECHOPGM(")"); - - if (suffix) serialprintPGM(suffix); - else SERIAL_EOL; - } - - void print_xyz(const char* prefix, const char* suffix, const float xyz[]) { - print_xyz(prefix, suffix, xyz[X_AXIS], xyz[Y_AXIS], xyz[Z_AXIS]); - } - - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - void print_xyz(const char* prefix, const char* suffix, const vector_3 &xyz) { - print_xyz(prefix, suffix, xyz.x, xyz.y, xyz.z); - } - #endif - - #define DEBUG_POS(SUFFIX,VAR) do { \ - print_xyz(PSTR(STRINGIFY(VAR) "="), PSTR(" : " SUFFIX "\n"), VAR); } while(0) -#endif - -/** - * sync_plan_position - * Set planner / stepper positions to the cartesian current_position. - * The stepper code translates these coordinates into step units. - * Allows translation between steps and millimeters for cartesian & core robots - */ -inline void sync_plan_position() { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("sync_plan_position", current_position); - #endif - planner.set_position_mm(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); -} -inline void sync_plan_position_e() { planner.set_e_position_mm(current_position[E_AXIS]); } - -#if ENABLED(DELTA) || ENABLED(SCARA) - inline void sync_plan_position_delta() { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("sync_plan_position_delta", current_position); - #endif - inverse_kinematics(current_position); - planner.set_position_mm(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]); - } - #define SYNC_PLAN_POSITION_KINEMATIC() sync_plan_position_delta() -#else - #define SYNC_PLAN_POSITION_KINEMATIC() sync_plan_position() -#endif - -#if ENABLED(SDSUPPORT) - #include "SdFatUtil.h" - int freeMemory() { return SdFatUtil::FreeRam(); } -#else -extern "C" { - extern unsigned int __bss_end; - extern unsigned int __heap_start; - extern void* __brkval; - - int freeMemory() { - int free_memory; - if ((int)__brkval == 0) - free_memory = ((int)&free_memory) - ((int)&__bss_end); - else - free_memory = ((int)&free_memory) - ((int)__brkval); - return free_memory; - } -} -#endif //!SDSUPPORT - -#if ENABLED(DIGIPOT_I2C) - extern void digipot_i2c_set_current(int channel, float current); - extern void digipot_i2c_init(); -#endif - -/** - * Inject the next "immediate" command, when possible. - * Return true if any immediate commands remain to inject. - */ -static bool drain_queued_commands_P() { - if (queued_commands_P != NULL) { - size_t i = 0; - char c, cmd[30]; - strncpy_P(cmd, queued_commands_P, sizeof(cmd) - 1); - cmd[sizeof(cmd) - 1] = '\0'; - while ((c = cmd[i]) && c != '\n') i++; // find the end of this gcode command - cmd[i] = '\0'; - if (enqueue_and_echo_command(cmd)) { // success? - if (c) // newline char? - queued_commands_P += i + 1; // advance to the next command - else - queued_commands_P = NULL; // nul char? no more commands - } - } - return (queued_commands_P != NULL); // return whether any more remain -} - -/** - * Record one or many commands to run from program memory. - * Aborts the current queue, if any. - * Note: drain_queued_commands_P() must be called repeatedly to drain the commands afterwards - */ -void enqueue_and_echo_commands_P(const char* pgcode) { - queued_commands_P = pgcode; - drain_queued_commands_P(); // first command executed asap (when possible) -} - -void clear_command_queue() { - cmd_queue_index_r = cmd_queue_index_w; - commands_in_queue = 0; -} - -/** - * Once a new command is in the ring buffer, call this to commit it - */ -inline void _commit_command(bool say_ok) { - send_ok[cmd_queue_index_w] = say_ok; - cmd_queue_index_w = (cmd_queue_index_w + 1) % BUFSIZE; - commands_in_queue++; -} - -/** - * Copy a command directly into the main command buffer, from RAM. - * Returns true if successfully adds the command - */ -inline bool _enqueuecommand(const char* cmd, bool say_ok=false) { - if (*cmd == ';' || commands_in_queue >= BUFSIZE) return false; - strcpy(command_queue[cmd_queue_index_w], cmd); - _commit_command(say_ok); - return true; -} - -void enqueue_and_echo_command_now(const char* cmd) { - while (!enqueue_and_echo_command(cmd)) idle(); -} - -/** - * Enqueue with Serial Echo - */ -bool enqueue_and_echo_command(const char* cmd, bool say_ok/*=false*/) { - if (_enqueuecommand(cmd, say_ok)) { - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_Enqueueing); - SERIAL_ECHO(cmd); - SERIAL_ECHOLNPGM("\""); - return true; - } - return false; -} - -void setup_killpin() { - #if HAS_KILL - SET_INPUT(KILL_PIN); - WRITE(KILL_PIN, HIGH); - #endif -} - -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - - void setup_filrunoutpin() { - pinMode(FIL_RUNOUT_PIN, INPUT); - #if ENABLED(ENDSTOPPULLUP_FIL_RUNOUT) - WRITE(FIL_RUNOUT_PIN, HIGH); - #endif - } - -#endif - -// Set home pin -void setup_homepin(void) { - #if HAS_HOME - SET_INPUT(HOME_PIN); - WRITE(HOME_PIN, HIGH); - #endif -} - - -void setup_photpin() { - #if HAS_PHOTOGRAPH - OUT_WRITE(PHOTOGRAPH_PIN, LOW); - #endif -} - -void setup_powerhold() { - #if HAS_SUICIDE - OUT_WRITE(SUICIDE_PIN, HIGH); - #endif - #if HAS_POWER_SWITCH - #if ENABLED(PS_DEFAULT_OFF) - OUT_WRITE(PS_ON_PIN, PS_ON_ASLEEP); - #else - OUT_WRITE(PS_ON_PIN, PS_ON_AWAKE); - #endif - #endif -} - -void suicide() { - #if HAS_SUICIDE - OUT_WRITE(SUICIDE_PIN, LOW); - #endif -} - -void servo_init() { - #if NUM_SERVOS >= 1 && HAS_SERVO_0 - servo[0].attach(SERVO0_PIN); - servo[0].detach(); // Just set up the pin. We don't have a position yet. Don't move to a random position. - #endif - #if NUM_SERVOS >= 2 && HAS_SERVO_1 - servo[1].attach(SERVO1_PIN); - servo[1].detach(); - #endif - #if NUM_SERVOS >= 3 && HAS_SERVO_2 - servo[2].attach(SERVO2_PIN); - servo[2].detach(); - #endif - #if NUM_SERVOS >= 4 && HAS_SERVO_3 - servo[3].attach(SERVO3_PIN); - servo[3].detach(); - #endif - - #if HAS_Z_SERVO_ENDSTOP - /** - * Set position of Z Servo Endstop - * - * The servo might be deployed and positioned too low to stow - * when starting up the machine or rebooting the board. - * There's no way to know where the nozzle is positioned until - * homing has been done - no homing with z-probe without init! - * - */ - STOW_Z_SERVO(); - #endif - - #if HAS_BED_PROBE - endstops.enable_z_probe(false); - #endif -} - -/** - * Stepper Reset (RigidBoard, et.al.) - */ -#if HAS_STEPPER_RESET - void disableStepperDrivers() { - pinMode(STEPPER_RESET_PIN, OUTPUT); - digitalWrite(STEPPER_RESET_PIN, LOW); // drive it down to hold in reset motor driver chips - } - void enableStepperDrivers() { pinMode(STEPPER_RESET_PIN, INPUT); } // set to input, which allows it to be pulled high by pullups -#endif - - - -/** - * Marlin entry-point: Set up before the program loop - * - Set up the kill pin, filament runout, power hold - * - Start the serial port - * - Print startup messages and diagnostics - * - Get EEPROM or default settings - * - Initialize managers for: - * �temperature - * �planner - * �watchdog - * �stepper - * �photo pin - * �servos - * �LCD controller - * �Digipot I2C - * �Z probe sled - * �status LEDs - */ -void setup() { - - #ifdef DISABLE_JTAG - // Disable JTAG on AT90USB chips to free up pins for IO - MCUCR = 0x80; - MCUCR = 0x80; - #endif - - #if ENABLED(FILAMENT_RUNOUT_SENSOR) - setup_filrunoutpin(); - #endif - - - setup_killpin(); - - setup_powerhold(); - - #if HAS_STEPPER_RESET - disableStepperDrivers(); - #endif - - MYSERIAL.begin(BAUDRATE); - SERIAL_PROTOCOLLNPGM("start"); - SERIAL_ECHO_START; - - - - - // Check startup - does nothing if bootloader sets MCUSR to 0 - byte mcu = MCUSR; - if (mcu & 1) SERIAL_ECHOLNPGM(MSG_POWERUP); - if (mcu & 2) SERIAL_ECHOLNPGM(MSG_EXTERNAL_RESET); - if (mcu & 4) SERIAL_ECHOLNPGM(MSG_BROWNOUT_RESET); - if (mcu & 8) SERIAL_ECHOLNPGM(MSG_WATCHDOG_RESET); - if (mcu & 32) SERIAL_ECHOLNPGM(MSG_SOFTWARE_RESET); - MCUSR = 0; - - SERIAL_ECHOPGM(MSG_MARLIN); - SERIAL_ECHOLNPGM(" " SHORT_BUILD_VERSION); - - #ifdef STRING_DISTRIBUTION_DATE - #ifdef STRING_CONFIG_H_AUTHOR - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_CONFIGURATION_VER); - SERIAL_ECHOPGM(STRING_DISTRIBUTION_DATE); - SERIAL_ECHOPGM(MSG_AUTHOR); - SERIAL_ECHOLNPGM(STRING_CONFIG_H_AUTHOR); - SERIAL_ECHOPGM("Compiled: "); - SERIAL_ECHOLNPGM(__DATE__); - #endif // STRING_CONFIG_H_AUTHOR - #endif // STRING_DISTRIBUTION_DATE - - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_FREE_MEMORY); - SERIAL_ECHO(freeMemory()); - SERIAL_ECHOPGM(MSG_PLANNER_BUFFER_BYTES); - SERIAL_ECHOLN((int)sizeof(block_t)*BLOCK_BUFFER_SIZE); - - // Send "ok" after commands by default - for (int8_t i = 0; i < BUFSIZE; i++) send_ok[i] = true; - - // Load data from EEPROM if available (or use defaults) - // This also updates variables in the planner, elsewhere - Config_RetrieveSettings(); - - // Initialize current position based on home_offset - memcpy(current_position, home_offset, sizeof(home_offset)); - - // Vital to init stepper/planner equivalent for current_position - SYNC_PLAN_POSITION_KINEMATIC(); - - thermalManager.init(); // Initialize temperature loop - - #if ENABLED(USE_WATCHDOG) - watchdog_init(); - #endif - - stepper.init(); // Initialize stepper, this enables interrupts! - setup_photpin(); - servo_init(); - - #if HAS_CONTROLLERFAN - SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan - #endif - - #if HAS_STEPPER_RESET - enableStepperDrivers(); - #endif - - #if ENABLED(DIGIPOT_I2C) - digipot_i2c_init(); - #endif - - #if ENABLED(DAC_STEPPER_CURRENT) - dac_init(); - #endif - - #if ENABLED(Z_PROBE_SLED) && PIN_EXISTS(SLED) - pinMode(SLED_PIN, OUTPUT); - digitalWrite(SLED_PIN, LOW); // turn it off - #endif // Z_PROBE_SLED - - setup_homepin(); - - #ifdef STAT_LED_RED - pinMode(STAT_LED_RED, OUTPUT); - digitalWrite(STAT_LED_RED, LOW); // turn it off - #endif - - #ifdef STAT_LED_BLUE - pinMode(STAT_LED_BLUE, OUTPUT); - digitalWrite(STAT_LED_BLUE, LOW); // turn it off - #endif - - lcd_init(); - #if ENABLED(SHOW_BOOTSCREEN) - #if ENABLED(DOGLCD) - safe_delay(BOOTSCREEN_TIMEOUT); - #elif ENABLED(ULTRA_LCD) - bootscreen(); - lcd_init(); - #endif - #endif - - #if ENABLED(MIXING_EXTRUDER) && MIXING_VIRTUAL_TOOLS > 1 - // Initialize mixing to 100% color 1 - for (uint8_t i = 0; i < MIXING_STEPPERS; i++) - mixing_factor[i] = (i == 0) ? 1 : 0; - for (uint8_t t = 0; t < MIXING_VIRTUAL_TOOLS; t++) - for (uint8_t i = 0; i < MIXING_STEPPERS; i++) - mixing_virtual_tool_mix[t][i] = mixing_factor[i]; - #endif - -#ifdef UARM_SWIFT - debugPrint("\r\nSWIFT DEBUG START\r\n"); - - swift_init(); - - -#endif // UARM_SWIFT -} - -/** - * The main Marlin program loop - * - * - Save or log commands to SD - * - Process available commands (if not saving) - * - Call heater manager - * - Call inactivity manager - * - Call endstop manager - * - Call LCD update - */ -void loop() { - if (commands_in_queue < BUFSIZE) get_available_commands(); - - #if ENABLED(SDSUPPORT) - card.checkautostart(false); - #endif - - if (commands_in_queue) { - - #if ENABLED(SDSUPPORT) - - if (card.saving) { - char* command = command_queue[cmd_queue_index_r]; - if (strstr_P(command, PSTR("M29"))) { - // M29 closes the file - card.closefile(); - SERIAL_PROTOCOLLNPGM(MSG_FILE_SAVED); - ok_to_send(); - } - else { - // Write the string from the read buffer to SD - card.write_command(command); - if (card.logging) - process_next_command(); // The card is saving because it's logging - else - ok_to_send(); - } - } - else - process_next_command(); - - #else - - process_next_command(); - - #endif // SDSUPPORT - - // The queue may be reset by a command handler or by code invoked by idle() within a handler - if (commands_in_queue) { - --commands_in_queue; - cmd_queue_index_r = (cmd_queue_index_r + 1) % BUFSIZE; - } - } - endstops.report_state(); - -#ifdef UARM_SWIFT - service.play(); -#endif // UARM_SWIFT - - idle(); -} - -void gcode_line_error(const char* err, bool doFlush = true) { - SERIAL_ERROR_START; - serialprintPGM(err); - SERIAL_ERRORLN(gcode_LastN); - //Serial.println(gcode_N); - if (doFlush) FlushSerialRequestResend(); - serial_count = 0; -} - -inline void get_serial_commands() { - static char serial_line_buffer[MAX_CMD_SIZE]; - static boolean serial_comment_mode = false; - - // If the command buffer is empty for too long, - // send "wait" to indicate Marlin is still waiting. - #if defined(NO_TIMEOUTS) && NO_TIMEOUTS > 0 - static millis_t last_command_time = 0; - millis_t ms = millis(); - if (commands_in_queue == 0 && !MYSERIAL.available() && ELAPSED(ms, last_command_time + NO_TIMEOUTS)) { - SERIAL_ECHOLNPGM(MSG_WAIT); - last_command_time = ms; - } - #endif - - /** - * Loop while serial characters are incoming and the queue is not full - */ - while (commands_in_queue < BUFSIZE && MYSERIAL.available() > 0) { - - char serial_char = MYSERIAL.read(); - - /** - * If the character ends the line - */ - if (serial_char == '\n' || serial_char == '\r') { - - serial_comment_mode = false; // end of line == end of comment - - if (!serial_count) continue; // skip empty lines - - serial_line_buffer[serial_count] = 0; // terminate string - serial_count = 0; //reset buffer - - char* command = serial_line_buffer; - - while (*command == ' ') command++; // skip any leading spaces - char* npos = (*command == 'N') ? command : NULL; // Require the N parameter to start the line - char* apos = strchr(command, '*'); - - if (npos) { - - boolean M110 = strstr_P(command, PSTR("M110")) != NULL; - - if (M110) { - char* n2pos = strchr(command + 4, 'N'); - if (n2pos) npos = n2pos; - } - - gcode_N = strtol(npos + 1, NULL, 10); - - if (gcode_N != gcode_LastN + 1 && !M110) { - gcode_line_error(PSTR(MSG_ERR_LINE_NO)); - return; - } - - if (apos) { - byte checksum = 0, count = 0; - while (command[count] != '*') checksum ^= command[count++]; - - if (strtol(apos + 1, NULL, 10) != checksum) { - gcode_line_error(PSTR(MSG_ERR_CHECKSUM_MISMATCH)); - return; - } - // if no errors, continue parsing - } - else { - gcode_line_error(PSTR(MSG_ERR_NO_CHECKSUM)); - return; - } - - gcode_LastN = gcode_N; - // if no errors, continue parsing - } - else if (apos) { // No '*' without 'N' - gcode_line_error(PSTR(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM), false); - return; - } - - // Movement commands alert when stopped - if (IsStopped()) { - char* gpos = strchr(command, 'G'); - if (gpos) { - int codenum = strtol(gpos + 1, NULL, 10); - switch (codenum) { - case 0: - case 1: - case 2: - case 3: - SERIAL_ERRORLNPGM(MSG_ERR_STOPPED); - LCD_MESSAGEPGM(MSG_STOPPED); - break; - } - } - } - - #if DISABLED(EMERGENCY_PARSER) - // If command was e-stop process now - if (strcmp(command, "M108") == 0) wait_for_heatup = false; - if (strcmp(command, "M112") == 0) kill(PSTR(MSG_KILLED)); - if (strcmp(command, "M410") == 0) { quickstop_stepper(); } - #endif - - #if defined(NO_TIMEOUTS) && NO_TIMEOUTS > 0 - last_command_time = ms; - #endif - - // Add the command to the queue - _enqueuecommand(serial_line_buffer, true); - } - else if (serial_count >= MAX_CMD_SIZE - 1) { - // Keep fetching, but ignore normal characters beyond the max length - // The command will be injected when EOL is reached - } - else if (serial_char == '\\') { // Handle escapes - if (MYSERIAL.available() > 0) { - // if we have one more character, copy it over - serial_char = MYSERIAL.read(); - if (!serial_comment_mode) serial_line_buffer[serial_count++] = serial_char; - } - // otherwise do nothing - } - else { // it's not a newline, carriage return or escape char - if (serial_char == ';') serial_comment_mode = true; - if (!serial_comment_mode) serial_line_buffer[serial_count++] = serial_char; - } - - } // queue has space, serial has data -} - -#if ENABLED(SDSUPPORT) - - inline void get_sdcard_commands() { - static bool stop_buffering = false, - sd_comment_mode = false; - - if (!card.sdprinting) return; - - /** - * '#' stops reading from SD to the buffer prematurely, so procedural - * macro calls are possible. If it occurs, stop_buffering is triggered - * and the buffer is run dry; this character _can_ occur in serial com - * due to checksums, however, no checksums are used in SD printing. - */ - - if (commands_in_queue == 0) stop_buffering = false; - - uint16_t sd_count = 0; - bool card_eof = card.eof(); - while (commands_in_queue < BUFSIZE && !card_eof && !stop_buffering) { - int16_t n = card.get(); - char sd_char = (char)n; - card_eof = card.eof(); - if (card_eof || n == -1 - || sd_char == '\n' || sd_char == '\r' - || ((sd_char == '#' || sd_char == ':') && !sd_comment_mode) - ) { - if (card_eof) { - SERIAL_PROTOCOLLNPGM(MSG_FILE_PRINTED); - card.printingHasFinished(); - card.checkautostart(true); - } - else if (n == -1) { - SERIAL_ERROR_START; - SERIAL_ECHOLNPGM(MSG_SD_ERR_READ); - } - if (sd_char == '#') stop_buffering = true; - - sd_comment_mode = false; //for new command - - if (!sd_count) continue; //skip empty lines - - command_queue[cmd_queue_index_w][sd_count] = '\0'; //terminate string - sd_count = 0; //clear buffer - - _commit_command(false); - } - else if (sd_count >= MAX_CMD_SIZE - 1) { - /** - * Keep fetching, but ignore normal characters beyond the max length - * The command will be injected when EOL is reached - */ - } - else { - if (sd_char == ';') sd_comment_mode = true; - if (!sd_comment_mode) command_queue[cmd_queue_index_w][sd_count++] = sd_char; - } - } - } - -#endif // SDSUPPORT - -/** - * Add to the circular command queue the next command from: - * - The command-injection queue (queued_commands_P) - * - The active serial input (usually USB) - * - The SD card file being actively printed - */ -void get_available_commands() { - - // if any immediate commands remain, don't get other commands yet - if (drain_queued_commands_P()) return; - - get_serial_commands(); - - #if ENABLED(SDSUPPORT) - get_sdcard_commands(); - #endif -} - -inline bool code_has_value() { - int i = 1; - char c = seen_pointer[i]; - while (c == ' ') c = seen_pointer[++i]; - if (c == '-' || c == '+') c = seen_pointer[++i]; - if (c == '.') c = seen_pointer[++i]; - return NUMERIC(c); -} - -inline float code_value_float() { - float ret; - char* e = strchr(seen_pointer, 'E'); - if (e) { - *e = 0; - ret = strtod(seen_pointer + 1, NULL); - *e = 'E'; - } - else - ret = strtod(seen_pointer + 1, NULL); - return ret; -} - -inline unsigned long code_value_ulong() { return strtoul(seen_pointer + 1, NULL, 10); } - -inline long code_value_long() { return strtol(seen_pointer + 1, NULL, 10); } - -inline int code_value_int() { return (int)strtol(seen_pointer + 1, NULL, 10); } - -inline uint16_t code_value_ushort() { return (uint16_t)strtoul(seen_pointer + 1, NULL, 10); } - -inline uint8_t code_value_byte() { return (uint8_t)(constrain(strtol(seen_pointer + 1, NULL, 10), 0, 255)); } - -inline bool code_value_bool() { return code_value_byte() > 0; } - -#if ENABLED(INCH_MODE_SUPPORT) - inline void set_input_linear_units(LinearUnit units) { - switch (units) { - case LINEARUNIT_INCH: - linear_unit_factor = 25.4; - break; - case LINEARUNIT_MM: - default: - linear_unit_factor = 1.0; - break; - } - volumetric_unit_factor = pow(linear_unit_factor, 3.0); - } - - inline float axis_unit_factor(int axis) { - return (axis == E_AXIS && volumetric_enabled ? volumetric_unit_factor : linear_unit_factor); - } - - inline float code_value_linear_units() { return code_value_float() * linear_unit_factor; } - inline float code_value_axis_units(int axis) { return code_value_float() * axis_unit_factor(axis); } - inline float code_value_per_axis_unit(int axis) { return code_value_float() / axis_unit_factor(axis); } - -#else - - inline float code_value_linear_units() { return code_value_float(); } - inline float code_value_axis_units(int axis) { UNUSED(axis); return code_value_float(); } - inline float code_value_per_axis_unit(int axis) { UNUSED(axis); return code_value_float(); } - -#endif - -#if ENABLED(TEMPERATURE_UNITS_SUPPORT) - inline void set_input_temp_units(TempUnit units) { input_temp_units = units; } - - float code_value_temp_abs() { - switch (input_temp_units) { - case TEMPUNIT_C: - return code_value_float(); - case TEMPUNIT_F: - return (code_value_float() - 32) * 0.5555555556; - case TEMPUNIT_K: - return code_value_float() - 272.15; - default: - return code_value_float(); - } - } - - float code_value_temp_diff() { - switch (input_temp_units) { - case TEMPUNIT_C: - case TEMPUNIT_K: - return code_value_float(); - case TEMPUNIT_F: - return code_value_float() * 0.5555555556; - default: - return code_value_float(); - } - } -#else - float code_value_temp_abs() { return code_value_float(); } - float code_value_temp_diff() { return code_value_float(); } -#endif - -FORCE_INLINE millis_t code_value_millis() { return code_value_ulong(); } -inline millis_t code_value_millis_from_seconds() { return code_value_float() * 1000; } - -bool code_seen(char code) { - seen_pointer = strchr(current_command_args, code); - return (seen_pointer != NULL); // Return TRUE if the code-letter was found -} - -/** - * Set target_extruder from the T parameter or the active_extruder - * - * Returns TRUE if the target is invalid - */ -bool get_target_extruder_from_command(int code) { - if (code_seen('T')) { - if (code_value_byte() >= EXTRUDERS) { - SERIAL_ECHO_START; - SERIAL_CHAR('M'); - SERIAL_ECHO(code); - SERIAL_ECHOPAIR(" " MSG_INVALID_EXTRUDER " ", code_value_byte()); - SERIAL_EOL; - return true; - } - target_extruder = code_value_byte(); - } - else - target_extruder = active_extruder; - - return false; -} - -#define DEFINE_PGM_READ_ANY(type, reader) \ - static inline type pgm_read_any(const type *p) \ - { return pgm_read_##reader##_near(p); } - -DEFINE_PGM_READ_ANY(float, float); -DEFINE_PGM_READ_ANY(signed char, byte); - -#define XYZ_CONSTS_FROM_CONFIG(type, array, CONFIG) \ - static const PROGMEM type array##_P[3] = \ - { X_##CONFIG, Y_##CONFIG, Z_##CONFIG }; \ - static inline type array(int axis) \ - { return pgm_read_any(&array##_P[axis]); } - -XYZ_CONSTS_FROM_CONFIG(float, base_min_pos, MIN_POS); -XYZ_CONSTS_FROM_CONFIG(float, base_max_pos, MAX_POS); -XYZ_CONSTS_FROM_CONFIG(float, base_home_pos, HOME_POS); -XYZ_CONSTS_FROM_CONFIG(float, max_length, MAX_LENGTH); -XYZ_CONSTS_FROM_CONFIG(float, home_bump_mm, HOME_BUMP_MM); -XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); - -#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) - bool extruder_duplication_enabled = false; // Used in Dual X mode 2 -#endif - -#if ENABLED(DUAL_X_CARRIAGE) - - #define DXC_FULL_CONTROL_MODE 0 - #define DXC_AUTO_PARK_MODE 1 - #define DXC_DUPLICATION_MODE 2 - - static int dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE; - - static float x_home_pos(int extruder) { - if (extruder == 0) - return LOGICAL_X_POSITION(base_home_pos(X_AXIS)); - else - /** - * In dual carriage mode the extruder offset provides an override of the - * second X-carriage offset when homed - otherwise X2_HOME_POS is used. - * This allow soft recalibration of the second extruder offset position - * without firmware reflash (through the M218 command). - */ - return (hotend_offset[X_AXIS][1] > 0) ? hotend_offset[X_AXIS][1] : X2_HOME_POS; - } - - static int x_home_dir(int extruder) { - return (extruder == 0) ? X_HOME_DIR : X2_HOME_DIR; - } - - static float inactive_extruder_x_pos = X2_MAX_POS; // used in mode 0 & 1 - static bool active_extruder_parked = false; // used in mode 1 & 2 - static float raised_parked_position[NUM_AXIS]; // used in mode 1 - static millis_t delayed_move_time = 0; // used in mode 1 - static float duplicate_extruder_x_offset = DEFAULT_DUPLICATION_X_OFFSET; // used in mode 2 - static float duplicate_extruder_temp_offset = 0; // used in mode 2 - -#endif //DUAL_X_CARRIAGE - -/** - * Software endstops can be used to monitor the open end of - * an axis that has a hardware endstop on the other end. Or - * they can prevent axes from moving past endstops and grinding. - * - * To keep doing their job as the coordinate system changes, - * the software endstop positions must be refreshed to remain - * at the same positions relative to the machine. - */ -static void update_software_endstops(AxisEnum axis) { - float offs = LOGICAL_POSITION(0, axis); - - #if ENABLED(DUAL_X_CARRIAGE) - if (axis == X_AXIS) { - float dual_max_x = max(hotend_offset[X_AXIS][1], X2_MAX_POS); - if (active_extruder != 0) { - sw_endstop_min[X_AXIS] = X2_MIN_POS + offs; - sw_endstop_max[X_AXIS] = dual_max_x + offs; - return; - } - else if (dual_x_carriage_mode == DXC_DUPLICATION_MODE) { - sw_endstop_min[X_AXIS] = base_min_pos(X_AXIS) + offs; - sw_endstop_max[X_AXIS] = min(base_max_pos(X_AXIS), dual_max_x - duplicate_extruder_x_offset) + offs; - return; - } - } - else - #endif - { - sw_endstop_min[axis] = base_min_pos(axis) + offs; - sw_endstop_max[axis] = base_max_pos(axis) + offs; - } - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("For ", axis_codes[axis]); - SERIAL_ECHOPAIR(" axis:\n home_offset = ", home_offset[axis]); - SERIAL_ECHOPAIR("\n position_shift = ", position_shift[axis]); - SERIAL_ECHOPAIR("\n sw_endstop_min = ", sw_endstop_min[axis]); - SERIAL_ECHOPAIR("\n sw_endstop_max = ", sw_endstop_max[axis]); - SERIAL_EOL; - } - #endif - - #if ENABLED(DELTA) - if (axis == Z_AXIS) { - delta_clip_start_height = sw_endstop_max[axis] - delta_safe_distance_from_top(); - } - #endif - -} - -/** - * Change the home offset for an axis, update the current - * position and the software endstops to retain the same - * relative distance to the new home. - * - * Since this changes the current_position, code should - * call sync_plan_position soon after this. - */ -static void set_home_offset(AxisEnum axis, float v) { - current_position[axis] += v - home_offset[axis]; - home_offset[axis] = v; - update_software_endstops(axis); -} - -static void set_axis_is_at_home(AxisEnum axis) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR(">>> set_axis_is_at_home(", axis); - SERIAL_ECHOLNPGM(")"); - } - #endif - - position_shift[axis] = 0; - - #if ENABLED(DUAL_X_CARRIAGE) - if (axis == X_AXIS && (active_extruder != 0 || dual_x_carriage_mode == DXC_DUPLICATION_MODE)) { - if (active_extruder != 0) - current_position[X_AXIS] = x_home_pos(active_extruder); - else - current_position[X_AXIS] = LOGICAL_X_POSITION(base_home_pos(X_AXIS)); - update_software_endstops(X_AXIS); - return; - } - #endif - - #if ENABLED(SCARA) - - if (axis == X_AXIS || axis == Y_AXIS) { - - float homeposition[3]; - LOOP_XYZ(i) homeposition[i] = LOGICAL_POSITION(base_home_pos(i), i); - - // SERIAL_ECHOPGM("homeposition[x]= "); SERIAL_ECHO(homeposition[0]); - // SERIAL_ECHOPGM("homeposition[y]= "); SERIAL_ECHOLN(homeposition[1]); - - /** - * Works out real Homeposition angles using inverse kinematics, - * and calculates homing offset using forward kinematics - */ - inverse_kinematics(homeposition); - forward_kinematics_SCARA(delta); - - // SERIAL_ECHOPAIR("Delta X=", delta[X_AXIS]); - // SERIAL_ECHOPGM(" Delta Y="); SERIAL_ECHOLN(delta[Y_AXIS]); - - current_position[axis] = LOGICAL_POSITION(delta[axis], axis); - - /** - * SCARA home positions are based on configuration since the actual - * limits are determined by the inverse kinematic transform. - */ - sw_endstop_min[axis] = base_min_pos(axis); // + (delta[axis] - base_home_pos(axis)); - sw_endstop_max[axis] = base_max_pos(axis); // + (delta[axis] - base_home_pos(axis)); - } - else - #endif - { - current_position[axis] = LOGICAL_POSITION(base_home_pos(axis), axis); - update_software_endstops(axis); - - #if HAS_BED_PROBE && Z_HOME_DIR < 0 && DISABLED(Z_MIN_PROBE_ENDSTOP) - if (axis == Z_AXIS) { - current_position[Z_AXIS] -= zprobe_zoffset; - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("> zprobe_zoffset = ", zprobe_zoffset); - SERIAL_EOL; - } - #endif - } - #endif - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("> home_offset[", axis_codes[axis]); - SERIAL_ECHOPAIR("] = ", home_offset[axis]); - SERIAL_EOL; - DEBUG_POS("", current_position); - } - #endif - } - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("<<< set_axis_is_at_home(", axis); - SERIAL_ECHOLNPGM(")"); - } - #endif -} - -/** - * Some planner shorthand inline functions - */ -inline float get_homing_bump_feedrate(AxisEnum axis) { - const int homing_bump_divisor[] = HOMING_BUMP_DIVISOR; - int hbd = homing_bump_divisor[axis]; - if (hbd < 1) { - hbd = 10; - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM("Warning: Homing Bump Divisor < 1"); - } - return homing_feedrate_mm_m[axis] / hbd; -} -// -// line_to_current_position -// Move the planner to the current position from wherever it last moved -// (or from wherever it has been told it is located). -// -inline void line_to_current_position() { - planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMM_TO_MMS(feedrate_mm_m), active_extruder); -} - -inline void line_to_z(float zPosition) { - planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], MMM_TO_MMS(feedrate_mm_m), active_extruder); -} - -inline void line_to_axis_pos(AxisEnum axis, float where, float fr_mm_m = 0.0) { - float old_feedrate_mm_m = feedrate_mm_m; - current_position[axis] = where; - feedrate_mm_m = (fr_mm_m != 0.0) ? fr_mm_m : homing_feedrate_mm_m[axis]; - planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMM_TO_MMS(feedrate_mm_m), active_extruder); - stepper.synchronize(); - feedrate_mm_m = old_feedrate_mm_m; -} - -// -// line_to_destination -// Move the planner, not necessarily synced with current_position -// - -#ifdef UARM_SWIFT - - - -float delta_angle[3]; -extern float angle_destination[NUM_AXIS]; -//extern float current_angle[NUM_AXIS]; -unsigned char inverse_kinematics(const float in_cartesian[3], float angle[3]); -inline void set_current_to_destination(); -inline void line_to_destination(); - -void get_current_pos_polor(float polor[], float pos[]) -{ - float angle[3]; - double x, y, z; - - x = pos[0]; - y = pos[1]; - z = pos[2]; - - inverse_kinematics(pos, angle); - - double stretch; - stretch = sqrt(x * x + y * y); - - polor[0] = stretch; - polor[1]= angle[0]; - polor[2] = z; -} - - -void get_pos_from_polor(float pos[], float polor[]) -{ - pos[2] = polor[2]; - pos[0] = polor[0] * sin(polor[1] / MATH_TRANS); - pos[1] = -polor[0] * cos(polor[1] / MATH_TRANS); - -} - - -void gcode_get_destination_polor() -{ - float polor_destination[NUM_AXIS]; - float current_polor[NUM_AXIS]; - - get_current_pos_polor(current_polor, current_position); - - debugPrint("cur polor:%f %f %f\r\n", current_polor[0], current_polor[1],current_polor[2]); - - LOOP_XYZE(i) { - if (code_seen(polor_axis_codes[i])) - { - - polor_destination[i] = code_value_float() + (axis_relative_modes[i] || relative_mode ? current_polor[i] : 0); - - } - else - polor_destination[i] = current_polor[i]; - } - - - debugPrint("des polor:%f %f %f\r\n", polor_destination[0], polor_destination[1],polor_destination[2]); - - - get_pos_from_polor(destination, polor_destination); - - - - - debugPrint("destination:%f %f %f\r\n", destination[0], destination[1], destination[2]); - - - if (code_seen('F') && code_value_linear_units() > 0.0) - feedrate_mm_m = code_value_linear_units(); - - - line_to_destination(); - - set_current_to_destination(); - - -} - -void gcode_get_destination_angle(uint8_t index) -{ - // get current angle - float current_angle[NUM_AXIS]; - - inverse_kinematics(current_position, current_angle); - - LOOP_XYZ(i) { - - angle_destination[i] = current_angle[i]; - } - - if (code_seen('V')) - { - - angle_destination[index] = code_value_float() + (axis_relative_modes[index] || relative_mode ? current_angle[index] : 0); - - } - - - - if (code_seen('F') && code_value_linear_units() > 0.0) - feedrate_mm_m = code_value_linear_units(); - -} - -void line_to_destination_angle() -{ - float target[NUM_AXIS]; - LOOP_XYZ(i) target[i] = angle_destination[i]; - - target[E_AXIS] = destination[E_AXIS]; - - debugPrint("target: %f, %f, %f\r\n", target[0], target[1], target[2]); - - - planner.buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], MMM_TO_MMS_SCALED(feedrate_mm_m), active_extruder); - - getXYZFromAngle(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], target[X_AXIS], target[Y_AXIS], target[Z_AXIS]); - - set_current_to_destination(); - -} - - -unsigned char inverse_kinematics(const float in_cartesian[3], float angle[3]) { - - float xIn = 0.0; - float zIn = 0.0; - float rightAll = 0.0; - float sqrtZX = 0.0; - float phi = 0.0; - - float x = in_cartesian[0]; - float y = in_cartesian[1]; - float z = in_cartesian[2]; - - float angleRot = 0; - float angleLeft = 0; - float angleRight = 0; - - z += get_height_offset(); - - zIn = (z - MATH_L1) / MATH_LOWER_ARM; - - if (x < 0.1) - { - x = 0.1; - } - - // Calculate value of theta 1: the rotation angle - if (y == 0) - { - angleRot = 90; - } - else - { - - if (y < 0) - { - angleRot = -atan(x / y) * MATH_TRANS;//angle tranfer 0-180 CCW ?????? - } - if (y > 0) - { - angleRot = 180 - atan(x / y) * MATH_TRANS;//angle tranfer 0-180 CCW - } - } - - xIn = (x / sin(angleRot / MATH_TRANS) - MATH_L2 - get_front_end_offset()) / MATH_LOWER_ARM;///(x / cos(angleRot / MATH_TRANS) - MATH_L2 - MATH_FRONT_HEADER) / MATH_LOWER_ARM; - - - - phi = atan(zIn / xIn) * MATH_TRANS;//phi is the angle of line (from joint 2 to joint 4) with the horizon - - sqrtZX = sqrt(zIn*zIn + xIn*xIn); // ??2???4??? - - rightAll = (sqrtZX*sqrtZX + MATH_UPPER_LOWER * MATH_UPPER_LOWER - 1) / (2 * MATH_UPPER_LOWER * sqrtZX);//cosin law - angleRight = acos(rightAll) * MATH_TRANS;//cosin law - - // Calculate value of theta 2 - rightAll = (sqrtZX*sqrtZX + 1 - MATH_UPPER_LOWER * MATH_UPPER_LOWER ) / (2 * sqrtZX);//cosin law - angleLeft = acos(rightAll) * MATH_TRANS;//cosin law - - angleLeft = angleLeft + phi; - angleRight = angleRight - phi; - - if(isnan(angleRot)||isnan(angleLeft)||isnan(angleRight)) - { - return -1; - } - - if (angleLeft > LOWER_ARM_MAX_ANGLE) - { - return -1; - } - else if (angleLeft < LOWER_ARM_MIN_ANGLE) - { - return -1; - } - - if (angleRight > UPPER_ARM_MAX_ANGLE) - { - return -1; - } - else if (angleRight < UPPER_ARM_MIN_ANGLE) - { - return -1; - } - - if (angleLeft + angleRight > (180 - LOWER_UPPER_MIN_ANGLE)) - { - //angleLeft = 180 - LOWER_UPPER_MIN_ANGLE - angleRight; - return -1; - } - - if ((180 - angleLeft - angleRight) > LOWER_UPPER_MAX_ANGLE) - { - //angleRight = 180 - LOWER_UPPER_MAX_ANGLE - angleLeft; - return -1; - } - - - angleRot = constrain(angleRot, 0.00, 180.00); - angleLeft = constrain(angleLeft, 0.00, 180.00); - angleRight = constrain(angleRight, 0.00, 180.00); - - - angle[0] = angleRot; - angle[1] = angleLeft; - angle[2] = angleRight; - - return 0; - -} - - -inline void line_to_destination(float fr_mm_m) { - - float target[NUM_AXIS]; - LOOP_XYZE(i) target[i] = destination[i]; - - - float difference[NUM_AXIS]; - LOOP_XYZE(i) difference[i] = target[i] - current_position[i]; - - - - float cartesian_mm = sqrt(sq(difference[X_AXIS]) + sq(difference[Y_AXIS]) + sq(difference[Z_AXIS])); - if (cartesian_mm < 0.000001) cartesian_mm = abs(difference[E_AXIS]); - if (cartesian_mm < 0.000001) return false; - float _feedrate_mm_s = MMM_TO_MMS_SCALED(feedrate_mm_m); - float seconds = cartesian_mm / _feedrate_mm_s; - int steps = max(1, int(SEGMENTS_PER_SECOND * seconds)); - float inv_steps = 1.0/steps; - - //SERIAL_ECHOPGM("mm="); SERIAL_ECHO(cartesian_mm); - //SERIAL_ECHOPGM(" seconds="); SERIAL_ECHO(seconds); - //SERIAL_ECHOPGM(" steps="); SERIAL_ECHOLN(steps); - - for (int s = 1; s <= steps; s++) { - - float fraction = float(s) * inv_steps; - - LOOP_XYZE(i) - target[i] = current_position[i] + difference[i] * fraction;\ - - - - if (inverse_kinematics(target, delta_angle) == 0) - { - - #if ENABLED(DELTA) && ENABLED(AUTO_BED_LEVELING_FEATURE) - if (!bed_leveling_in_progress) adjust_delta(target); - #endif - - //DEBUG_POS("target", target); - //DEBUG_POS("delta_angle", delta_angle); - - planner.buffer_line(delta_angle[X_AXIS], delta_angle[Y_AXIS], delta_angle[Z_AXIS], target[E_AXIS], _feedrate_mm_s, active_extruder); - } - - } -} -#else -inline void line_to_destination(float fr_mm_m) { - planner.buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], MMM_TO_MMS(fr_mm_m), active_extruder); -} -#endif -inline void line_to_destination() { line_to_destination(feedrate_mm_m); } - -inline void set_current_to_destination() { memcpy(current_position, destination, sizeof(current_position)); } -inline void set_destination_to_current() { memcpy(destination, current_position, sizeof(destination)); } - -#if ENABLED(DELTA) - /** - * Calculate delta, start a line, and set current_position to destination - */ - void prepare_move_to_destination_raw() { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("prepare_move_to_destination_raw", destination); - #endif - refresh_cmd_timeout(); - inverse_kinematics(destination); - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], MMM_TO_MMS_SCALED(feedrate_mm_m), active_extruder); - set_current_to_destination(); - } -#endif - -/** - * Plan a move to (X, Y, Z) and set the current_position - * The final current_position may not be the one that was requested - */ -void do_blocking_move_to(float x, float y, float z, float fr_mm_m /*=0.0*/) { - float old_feedrate_mm_m = feedrate_mm_m; - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) print_xyz(PSTR(">>> do_blocking_move_to"), NULL, x, y, z); - #endif - - #if ENABLED(DELTA) - - feedrate_mm_m = (fr_mm_m != 0.0) ? fr_mm_m : XY_PROBE_FEEDRATE_MM_M; - - set_destination_to_current(); // sync destination at the start - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("set_destination_to_current", destination); - #endif - - // when in the danger zone - if (current_position[Z_AXIS] > delta_clip_start_height) { - if (z > delta_clip_start_height) { // staying in the danger zone - destination[X_AXIS] = x; // move directly (uninterpolated) - destination[Y_AXIS] = y; - destination[Z_AXIS] = z; - prepare_move_to_destination_raw(); // set_current_to_destination - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("danger zone move", current_position); - #endif - return; - } - else { - destination[Z_AXIS] = delta_clip_start_height; - prepare_move_to_destination_raw(); // set_current_to_destination - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("zone border move", current_position); - #endif - } - } - - if (z > current_position[Z_AXIS]) { // raising? - destination[Z_AXIS] = z; - prepare_move_to_destination_raw(); // set_current_to_destination - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("z raise move", current_position); - #endif - } - - destination[X_AXIS] = x; - destination[Y_AXIS] = y; - prepare_move_to_destination(); // set_current_to_destination - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("xy move", current_position); - #endif - - if (z < current_position[Z_AXIS]) { // lowering? - destination[Z_AXIS] = z; - prepare_move_to_destination_raw(); // set_current_to_destination - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("z lower move", current_position); - #endif - } - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("<<< do_blocking_move_to"); - #endif - - #else - - // If Z needs to raise, do it before moving XY - if (current_position[Z_AXIS] < z) { - feedrate_mm_m = (fr_mm_m != 0.0) ? fr_mm_m : homing_feedrate_mm_m[Z_AXIS]; - current_position[Z_AXIS] = z; - line_to_current_position(); - } - - feedrate_mm_m = (fr_mm_m != 0.0) ? fr_mm_m : XY_PROBE_FEEDRATE_MM_M; - current_position[X_AXIS] = x; - current_position[Y_AXIS] = y; - line_to_current_position(); - - // If Z needs to lower, do it after moving XY - if (current_position[Z_AXIS] > z) { - feedrate_mm_m = (fr_mm_m != 0.0) ? fr_mm_m : homing_feedrate_mm_m[Z_AXIS]; - current_position[Z_AXIS] = z; - line_to_current_position(); - } - - #endif - - stepper.synchronize(); - - feedrate_mm_m = old_feedrate_mm_m; -} -void do_blocking_move_to_x(float x, float fr_mm_m/*=0.0*/) { - do_blocking_move_to(x, current_position[Y_AXIS], current_position[Z_AXIS], fr_mm_m); -} -void do_blocking_move_to_z(float z, float fr_mm_m/*=0.0*/) { - do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z, fr_mm_m); -} -void do_blocking_move_to_xy(float x, float y, float fr_mm_m/*=0.0*/) { - do_blocking_move_to(x, y, current_position[Z_AXIS], fr_mm_m); -} - -// -// Prepare to do endstop or probe moves -// with custom feedrates. -// -// - Save current feedrates -// - Reset the rate multiplier -// - Reset the command timeout -// - Enable the endstops (for endstop moves) -// -static void setup_for_endstop_or_probe_move() { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("setup_for_endstop_or_probe_move", current_position); - #endif - saved_feedrate_mm_m = feedrate_mm_m; - saved_feedrate_percentage = feedrate_percentage; - feedrate_percentage = 100; - refresh_cmd_timeout(); -} - -static void clean_up_after_endstop_or_probe_move() { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("clean_up_after_endstop_or_probe_move", current_position); - #endif - feedrate_mm_m = saved_feedrate_mm_m; - feedrate_percentage = saved_feedrate_percentage; - refresh_cmd_timeout(); -} - -#if HAS_BED_PROBE - /** - * Raise Z to a minimum height to make room for a probe to move - */ - inline void do_probe_raise(float z_raise) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("do_probe_raise(", z_raise); - SERIAL_ECHOLNPGM(")"); - } - #endif - float z_dest = LOGICAL_Z_POSITION(z_raise); - if (z_dest > current_position[Z_AXIS]) - do_blocking_move_to_z(z_dest); - } - -#endif //HAS_BED_PROBE - -#if ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED) || ENABLED(Z_SAFE_HOMING) || HAS_PROBING_PROCEDURE || HOTENDS > 1 || ENABLED(NOZZLE_CLEAN_FEATURE) || ENABLED(NOZZLE_PARK_FEATURE) - static bool axis_unhomed_error(const bool x, const bool y, const bool z) { - const bool xx = x && !axis_homed[X_AXIS], - yy = y && !axis_homed[Y_AXIS], - zz = z && !axis_homed[Z_AXIS]; - if (xx || yy || zz) { - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_HOME " "); - if (xx) SERIAL_ECHOPGM(MSG_X); - if (yy) SERIAL_ECHOPGM(MSG_Y); - if (zz) SERIAL_ECHOPGM(MSG_Z); - SERIAL_ECHOLNPGM(" " MSG_FIRST); - - #if ENABLED(ULTRA_LCD) - char message[3 * (LCD_WIDTH) + 1] = ""; // worst case is kana.utf with up to 3*LCD_WIDTH+1 - strcat_P(message, PSTR(MSG_HOME " ")); - if (xx) strcat_P(message, PSTR(MSG_X)); - if (yy) strcat_P(message, PSTR(MSG_Y)); - if (zz) strcat_P(message, PSTR(MSG_Z)); - strcat_P(message, PSTR(" " MSG_FIRST)); - lcd_setstatus(message); - #endif - return true; - } - return false; - } -#endif - -#if ENABLED(Z_PROBE_SLED) - - #ifndef SLED_DOCKING_OFFSET - #define SLED_DOCKING_OFFSET 0 - #endif - - /** - * Method to dock/undock a sled designed by Charles Bell. - * - * stow[in] If false, move to MAX_X and engage the solenoid - * If true, move to MAX_X and release the solenoid - */ - static void dock_sled(bool stow) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("dock_sled(", stow); - SERIAL_ECHOLNPGM(")"); - } - #endif - - // Dock sled a bit closer to ensure proper capturing - do_blocking_move_to_x(X_MAX_POS + SLED_DOCKING_OFFSET - ((stow) ? 1 : 0)); - - #if PIN_EXISTS(SLED) - digitalWrite(SLED_PIN, !stow); // switch solenoid - #endif - } - -#endif // Z_PROBE_SLED -#if ENABLED(Z_PROBE_ALLEN_KEY) - void run_deploy_moves_script() { - #if defined(Z_PROBE_ALLEN_KEY_DEPLOY_1_X) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_1_Y) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_1_Z) - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_1_X - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_1_Y - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_1_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_DEPLOY_1_X, Z_PROBE_ALLEN_KEY_DEPLOY_1_Y, Z_PROBE_ALLEN_KEY_DEPLOY_1_Z, Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE); - #endif - #if defined(Z_PROBE_ALLEN_KEY_DEPLOY_2_X) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_2_Y) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_2_Z) - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_2_X - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_2_Y - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_2_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_DEPLOY_2_X, Z_PROBE_ALLEN_KEY_DEPLOY_2_Y, Z_PROBE_ALLEN_KEY_DEPLOY_2_Z, Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE); - #endif - #if defined(Z_PROBE_ALLEN_KEY_DEPLOY_3_X) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_3_Y) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_3_Z) - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_3_X - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_3_Y - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_3_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_DEPLOY_3_X, Z_PROBE_ALLEN_KEY_DEPLOY_3_Y, Z_PROBE_ALLEN_KEY_DEPLOY_3_Z, Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE); - #endif - #if defined(Z_PROBE_ALLEN_KEY_DEPLOY_4_X) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_4_Y) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_4_Z) - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_4_X - #define Z_PROBE_ALLEN_KEY_DEPLOY_4_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_4_Y - #define Z_PROBE_ALLEN_KEY_DEPLOY_4_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_4_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_4_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_DEPLOY_4_X, Z_PROBE_ALLEN_KEY_DEPLOY_4_Y, Z_PROBE_ALLEN_KEY_DEPLOY_4_Z, Z_PROBE_ALLEN_KEY_DEPLOY_4_FEEDRATE); - #endif - #if defined(Z_PROBE_ALLEN_KEY_DEPLOY_5_X) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_5_Y) || defined(Z_PROBE_ALLEN_KEY_DEPLOY_5_Z) - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_5_X - #define Z_PROBE_ALLEN_KEY_DEPLOY_5_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_5_Y - #define Z_PROBE_ALLEN_KEY_DEPLOY_5_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_5_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_5_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE - #define Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_DEPLOY_5_X, Z_PROBE_ALLEN_KEY_DEPLOY_5_Y, Z_PROBE_ALLEN_KEY_DEPLOY_5_Z, Z_PROBE_ALLEN_KEY_DEPLOY_5_FEEDRATE); - #endif - } - void run_stow_moves_script() { - #if defined(Z_PROBE_ALLEN_KEY_STOW_1_X) || defined(Z_PROBE_ALLEN_KEY_STOW_1_Y) || defined(Z_PROBE_ALLEN_KEY_STOW_1_Z) - #ifndef Z_PROBE_ALLEN_KEY_STOW_1_X - #define Z_PROBE_ALLEN_KEY_STOW_1_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_1_Y - #define Z_PROBE_ALLEN_KEY_STOW_1_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_1_Z - #define Z_PROBE_ALLEN_KEY_STOW_1_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_STOW_1_X, Z_PROBE_ALLEN_KEY_STOW_1_Y, Z_PROBE_ALLEN_KEY_STOW_1_Z, Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE); - #endif - #if defined(Z_PROBE_ALLEN_KEY_STOW_2_X) || defined(Z_PROBE_ALLEN_KEY_STOW_2_Y) || defined(Z_PROBE_ALLEN_KEY_STOW_2_Z) - #ifndef Z_PROBE_ALLEN_KEY_STOW_2_X - #define Z_PROBE_ALLEN_KEY_STOW_2_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_2_Y - #define Z_PROBE_ALLEN_KEY_STOW_2_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_2_Z - #define Z_PROBE_ALLEN_KEY_STOW_2_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_STOW_2_X, Z_PROBE_ALLEN_KEY_STOW_2_Y, Z_PROBE_ALLEN_KEY_STOW_2_Z, Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE); - #endif - #if defined(Z_PROBE_ALLEN_KEY_STOW_3_X) || defined(Z_PROBE_ALLEN_KEY_STOW_3_Y) || defined(Z_PROBE_ALLEN_KEY_STOW_3_Z) - #ifndef Z_PROBE_ALLEN_KEY_STOW_3_X - #define Z_PROBE_ALLEN_KEY_STOW_3_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_3_Y - #define Z_PROBE_ALLEN_KEY_STOW_3_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_3_Z - #define Z_PROBE_ALLEN_KEY_STOW_3_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_STOW_3_X, Z_PROBE_ALLEN_KEY_STOW_3_Y, Z_PROBE_ALLEN_KEY_STOW_3_Z, Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE); - #endif - #if defined(Z_PROBE_ALLEN_KEY_STOW_4_X) || defined(Z_PROBE_ALLEN_KEY_STOW_4_Y) || defined(Z_PROBE_ALLEN_KEY_STOW_4_Z) - #ifndef Z_PROBE_ALLEN_KEY_STOW_4_X - #define Z_PROBE_ALLEN_KEY_STOW_4_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_4_Y - #define Z_PROBE_ALLEN_KEY_STOW_4_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_4_Z - #define Z_PROBE_ALLEN_KEY_STOW_4_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_STOW_4_X, Z_PROBE_ALLEN_KEY_STOW_4_Y, Z_PROBE_ALLEN_KEY_STOW_4_Z, Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE); - #endif - #if defined(Z_PROBE_ALLEN_KEY_STOW_5_X) || defined(Z_PROBE_ALLEN_KEY_STOW_5_Y) || defined(Z_PROBE_ALLEN_KEY_STOW_5_Z) - #ifndef Z_PROBE_ALLEN_KEY_STOW_5_X - #define Z_PROBE_ALLEN_KEY_STOW_5_X current_position[X_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_5_Y - #define Z_PROBE_ALLEN_KEY_STOW_5_Y current_position[Y_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_5_Z - #define Z_PROBE_ALLEN_KEY_STOW_5_Z current_position[Z_AXIS] - #endif - #ifndef Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE - #define Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE 0.0 - #endif - do_blocking_move_to(Z_PROBE_ALLEN_KEY_STOW_5_X, Z_PROBE_ALLEN_KEY_STOW_5_Y, Z_PROBE_ALLEN_KEY_STOW_5_Z, Z_PROBE_ALLEN_KEY_STOW_5_FEEDRATE); - #endif - } -#endif - -#if HAS_BED_PROBE - - // TRIGGERED_WHEN_STOWED_TEST can easily be extended to servo probes, ... if needed. - #if ENABLED(PROBE_IS_TRIGGERED_WHEN_STOWED_TEST) - #if ENABLED(Z_MIN_PROBE_ENDSTOP) - #define _TRIGGERED_WHEN_STOWED_TEST (READ(Z_MIN_PROBE_PIN) != Z_MIN_PROBE_ENDSTOP_INVERTING) - #else - #define _TRIGGERED_WHEN_STOWED_TEST (READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING) - #endif - #endif - - #define DEPLOY_PROBE() set_probe_deployed( true ) - #define STOW_PROBE() set_probe_deployed( false ) - - // returns false for ok and true for failure - static bool set_probe_deployed(bool deploy) { - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - DEBUG_POS("set_probe_deployed", current_position); - SERIAL_ECHOPAIR("deploy: ", deploy); - SERIAL_EOL; - } - #endif - - if (endstops.z_probe_enabled == deploy) return false; - - // Make room for probe - do_probe_raise(_Z_PROBE_DEPLOY_HEIGHT); - - #if ENABLED(Z_PROBE_SLED) - if (axis_unhomed_error(true, false, false)) { stop(); return true; } - #elif ENABLED(Z_PROBE_ALLEN_KEY) - if (axis_unhomed_error(true, true, true )) { stop(); return true; } - #endif - - float oldXpos = current_position[X_AXIS]; // save x position - float oldYpos = current_position[Y_AXIS]; // save y position - - #ifdef _TRIGGERED_WHEN_STOWED_TEST - // If endstop is already false, the Z probe is deployed - if (_TRIGGERED_WHEN_STOWED_TEST == deploy) { // closed after the probe specific actions. - // Would a goto be less ugly? - //while (!_TRIGGERED_WHEN_STOWED_TEST) { idle(); // would offer the opportunity - // for a triggered when stowed manual probe. - #endif - - #if ENABLED(Z_PROBE_SLED) - dock_sled(!deploy); - #elif HAS_Z_SERVO_ENDSTOP - servo[Z_ENDSTOP_SERVO_NR].move(z_servo_angle[((deploy) ? 0 : 1)]); - #elif ENABLED(Z_PROBE_ALLEN_KEY) - if (!deploy) run_stow_moves_script(); - else run_deploy_moves_script(); - #else - // Nothing to be done. Just enable_z_probe below... - #endif - - #ifdef _TRIGGERED_WHEN_STOWED_TEST - }; // opened before the probe specific actions - - if (_TRIGGERED_WHEN_STOWED_TEST == deploy) { - if (IsRunning()) { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM("Z-Probe failed"); - LCD_ALERTMESSAGEPGM("Err: ZPROBE"); - } - stop(); - return true; - } - #endif - - do_blocking_move_to(oldXpos, oldYpos, current_position[Z_AXIS]); // return to position before deploy - endstops.enable_z_probe( deploy ); - return false; - } - - // Do a single Z probe and return with current_position[Z_AXIS] - // at the height where the probe triggered. - static float run_z_probe() { - - // Prevent stepper_inactive_time from running out and EXTRUDER_RUNOUT_PREVENT from extruding - refresh_cmd_timeout(); - - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - planner.bed_level_matrix.set_to_identity(); - #endif - - #if ENABLED(PROBE_DOUBLE_TOUCH) - do_blocking_move_to_z(-(Z_MAX_LENGTH + 10), Z_PROBE_SPEED_FAST); - endstops.hit_on_purpose(); - set_current_from_steppers_for_axis(Z_AXIS); - SYNC_PLAN_POSITION_KINEMATIC(); - - // move up the retract distance - do_blocking_move_to_z(current_position[Z_AXIS] + home_bump_mm(Z_AXIS), Z_PROBE_SPEED_FAST); - #else - // move fast, close to the bed - do_blocking_move_to_z(home_bump_mm(Z_AXIS), Z_PROBE_SPEED_FAST); - #endif - - // move down slowly to find bed - do_blocking_move_to_z(current_position[Z_AXIS] -2.0*home_bump_mm(Z_AXIS), Z_PROBE_SPEED_SLOW); - endstops.hit_on_purpose(); - set_current_from_steppers_for_axis(Z_AXIS); - SYNC_PLAN_POSITION_KINEMATIC(); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("run_z_probe", current_position); - #endif - - return current_position[Z_AXIS]; - } - - // - // - Move to the given XY - // - Deploy the probe, if not already deployed - // - Probe the bed, get the Z position - // - Depending on the 'stow' flag - // - Stow the probe, or - // - Raise to the BETWEEN height - // - Return the probed Z position - // - static float probe_pt(float x, float y, bool stow = true, int verbose_level = 1) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR(">>> probe_pt(", x); - SERIAL_ECHOPAIR(", ", y); - SERIAL_ECHOPAIR(", ", stow ? "stow" : "no stow"); - SERIAL_ECHOLNPGM(")"); - DEBUG_POS("", current_position); - } - #endif - - float old_feedrate_mm_m = feedrate_mm_m; - - // Ensure a minimum height before moving the probe - do_probe_raise(Z_PROBE_TRAVEL_HEIGHT); - - // Move to the XY where we shall probe - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("> do_blocking_move_to_xy(", x - (X_PROBE_OFFSET_FROM_EXTRUDER)); - SERIAL_ECHOPAIR(", ", y - (Y_PROBE_OFFSET_FROM_EXTRUDER)); - SERIAL_ECHOLNPGM(")"); - } - #endif - feedrate_mm_m = XY_PROBE_FEEDRATE_MM_M; - do_blocking_move_to_xy(x - (X_PROBE_OFFSET_FROM_EXTRUDER), y - (Y_PROBE_OFFSET_FROM_EXTRUDER)); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOPGM("> "); - #endif - if (DEPLOY_PROBE()) return NAN; - - float measured_z = run_z_probe(); - - if (stow) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOPGM("> "); - #endif - if (STOW_PROBE()) return NAN; - } - else { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("> do_probe_raise"); - #endif - do_probe_raise(Z_PROBE_TRAVEL_HEIGHT); - } - - if (verbose_level > 2) { - SERIAL_PROTOCOLPGM("Bed X: "); - SERIAL_PROTOCOL_F(x, 3); - SERIAL_PROTOCOLPGM(" Y: "); - SERIAL_PROTOCOL_F(y, 3); - SERIAL_PROTOCOLPGM(" Z: "); - SERIAL_PROTOCOL_F(measured_z, 3); - SERIAL_EOL; - } - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("<<< probe_pt"); - #endif - - feedrate_mm_m = old_feedrate_mm_m; - - return measured_z; - } - -#endif // HAS_BED_PROBE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #if DISABLED(DELTA) - - static void set_bed_level_equation_lsq(double* plane_equation_coefficients) { - - //planner.bed_level_matrix.debug("bed level before"); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - planner.bed_level_matrix.set_to_identity(); - if (DEBUGGING(LEVELING)) { - vector_3 uncorrected_position = planner.adjusted_position(); - DEBUG_POS(">>> set_bed_level_equation_lsq", uncorrected_position); - DEBUG_POS(">>> set_bed_level_equation_lsq", current_position); - } - #endif - - vector_3 planeNormal = vector_3(-plane_equation_coefficients[0], -plane_equation_coefficients[1], 1); - planner.bed_level_matrix = matrix_3x3::create_look_at(planeNormal); - - vector_3 corrected_position = planner.adjusted_position(); - current_position[X_AXIS] = corrected_position.x; - current_position[Y_AXIS] = corrected_position.y; - current_position[Z_AXIS] = corrected_position.z; - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("<<< set_bed_level_equation_lsq", corrected_position); - #endif - - SYNC_PLAN_POSITION_KINEMATIC(); - } - - #endif // !DELTA - - #else // !AUTO_BED_LEVELING_GRID - - static void set_bed_level_equation_3pts(float z_at_pt_1, float z_at_pt_2, float z_at_pt_3) { - - planner.bed_level_matrix.set_to_identity(); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - vector_3 uncorrected_position = planner.adjusted_position(); - DEBUG_POS("set_bed_level_equation_3pts", uncorrected_position); - } - #endif - - vector_3 pt1 = vector_3(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, z_at_pt_1); - vector_3 pt2 = vector_3(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, z_at_pt_2); - vector_3 pt3 = vector_3(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, z_at_pt_3); - vector_3 planeNormal = vector_3::cross(pt1 - pt2, pt3 - pt2).get_normal(); - - if (planeNormal.z < 0) { - planeNormal.x = -planeNormal.x; - planeNormal.y = -planeNormal.y; - planeNormal.z = -planeNormal.z; - } - - planner.bed_level_matrix = matrix_3x3::create_look_at(planeNormal); - vector_3 corrected_position = planner.adjusted_position(); - - current_position[X_AXIS] = corrected_position.x; - current_position[Y_AXIS] = corrected_position.y; - current_position[Z_AXIS] = corrected_position.z; - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("set_bed_level_equation_3pts", corrected_position); - #endif - - SYNC_PLAN_POSITION_KINEMATIC(); - } - - #endif // !AUTO_BED_LEVELING_GRID - - #if ENABLED(DELTA) - - /** - * All DELTA leveling in the Marlin uses NONLINEAR_BED_LEVELING - */ - static void extrapolate_one_point(int x, int y, int xdir, int ydir) { - if (bed_level[x][y] != 0.0) { - return; // Don't overwrite good values. - } - float a = 2 * bed_level[x + xdir][y] - bed_level[x + xdir * 2][y]; // Left to right. - float b = 2 * bed_level[x][y + ydir] - bed_level[x][y + ydir * 2]; // Front to back. - float c = 2 * bed_level[x + xdir][y + ydir] - bed_level[x + xdir * 2][y + ydir * 2]; // Diagonal. - float median = c; // Median is robust (ignores outliers). - if (a < b) { - if (b < c) median = b; - if (c < a) median = a; - } - else { // b <= a - if (c < b) median = b; - if (a < c) median = a; - } - bed_level[x][y] = median; - } - - /** - * Fill in the unprobed points (corners of circular print surface) - * using linear extrapolation, away from the center. - */ - static void extrapolate_unprobed_bed_level() { - int half = (AUTO_BED_LEVELING_GRID_POINTS - 1) / 2; - for (int y = 0; y <= half; y++) { - for (int x = 0; x <= half; x++) { - if (x + y < 3) continue; - extrapolate_one_point(half - x, half - y, x > 1 ? +1 : 0, y > 1 ? +1 : 0); - extrapolate_one_point(half + x, half - y, x > 1 ? -1 : 0, y > 1 ? +1 : 0); - extrapolate_one_point(half - x, half + y, x > 1 ? +1 : 0, y > 1 ? -1 : 0); - extrapolate_one_point(half + x, half + y, x > 1 ? -1 : 0, y > 1 ? -1 : 0); - } - } - } - - /** - * Print calibration results for plotting or manual frame adjustment. - */ - static void print_bed_level() { - for (int y = 0; y < AUTO_BED_LEVELING_GRID_POINTS; y++) { - for (int x = 0; x < AUTO_BED_LEVELING_GRID_POINTS; x++) { - SERIAL_PROTOCOL_F(bed_level[x][y], 2); - SERIAL_PROTOCOLCHAR(' '); - } - SERIAL_EOL; - } - } - - /** - * Reset calibration results to zero. - */ - void reset_bed_level() { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("reset_bed_level"); - #endif - for (int y = 0; y < AUTO_BED_LEVELING_GRID_POINTS; y++) { - for (int x = 0; x < AUTO_BED_LEVELING_GRID_POINTS; x++) { - bed_level[x][y] = 0.0; - } - } - } - - #endif // DELTA - -#endif // AUTO_BED_LEVELING_FEATURE - -/** - * Home an individual axis - */ - -#define HOMEAXIS(LETTER) homeaxis(LETTER##_AXIS) - -static void homeaxis(AxisEnum axis) { - #define HOMEAXIS_DO(LETTER) \ - ((LETTER##_MIN_PIN > -1 && LETTER##_HOME_DIR==-1) || (LETTER##_MAX_PIN > -1 && LETTER##_HOME_DIR==1)) - - if (!(axis == X_AXIS ? HOMEAXIS_DO(X) : axis == Y_AXIS ? HOMEAXIS_DO(Y) : axis == Z_AXIS ? HOMEAXIS_DO(Z) : 0)) return; - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR(">>> homeaxis(", axis); - SERIAL_ECHOLNPGM(")"); - } - #endif - - int axis_home_dir = - #if ENABLED(DUAL_X_CARRIAGE) - (axis == X_AXIS) ? x_home_dir(active_extruder) : - #endif - home_dir(axis); - - // Homing Z towards the bed? Deploy the Z probe or endstop. - #if HAS_BED_PROBE && DISABLED(Z_MIN_PROBE_ENDSTOP) - if (axis == Z_AXIS && axis_home_dir < 0) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOPGM("> "); - #endif - if (DEPLOY_PROBE()) return; - } - #endif - - // Set the axis position as setup for the move - current_position[axis] = 0; - sync_plan_position(); - - // Set a flag for Z motor locking - #if ENABLED(Z_DUAL_ENDSTOPS) - if (axis == Z_AXIS) stepper.set_homing_flag(true); - #endif - - // Move towards the endstop until an endstop is triggered - line_to_axis_pos(axis, 1.5 * max_length(axis) * axis_home_dir); - - // Set the axis position as setup for the move - current_position[axis] = 0; - sync_plan_position(); - - // Move away from the endstop by the axis HOME_BUMP_MM - line_to_axis_pos(axis, -home_bump_mm(axis) * axis_home_dir); - - // Move slowly towards the endstop until triggered - line_to_axis_pos(axis, 2 * home_bump_mm(axis) * axis_home_dir, get_homing_bump_feedrate(axis)); - - // reset current_position to 0 to reflect hitting endpoint - current_position[axis] = 0; - sync_plan_position(); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> TRIGGER ENDSTOP", current_position); - #endif - - #if ENABLED(Z_DUAL_ENDSTOPS) - if (axis == Z_AXIS) { - float adj = fabs(z_endstop_adj); - bool lockZ1; - if (axis_home_dir > 0) { - adj = -adj; - lockZ1 = (z_endstop_adj > 0); - } - else - lockZ1 = (z_endstop_adj < 0); - - if (lockZ1) stepper.set_z_lock(true); else stepper.set_z2_lock(true); - - // Move to the adjusted endstop height - line_to_axis_pos(axis, adj); - - if (lockZ1) stepper.set_z_lock(false); else stepper.set_z2_lock(false); - stepper.set_homing_flag(false); - } // Z_AXIS - #endif - - #if ENABLED(DELTA) - // retrace by the amount specified in endstop_adj - if (endstop_adj[axis] * axis_home_dir < 0) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("> endstop_adj = ", endstop_adj[axis]); - DEBUG_POS("", current_position); - } - #endif - line_to_axis_pos(axis, endstop_adj[axis]); - } - #endif - - // Set the axis position to its home position (plus home offsets) - set_axis_is_at_home(axis); - - SYNC_PLAN_POSITION_KINEMATIC(); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> AFTER set_axis_is_at_home", current_position); - #endif - - destination[axis] = current_position[axis]; - endstops.hit_on_purpose(); // clear endstop hit flags - axis_known_position[axis] = true; - axis_homed[axis] = true; - - // Put away the Z probe - #if HAS_BED_PROBE && DISABLED(Z_MIN_PROBE_ENDSTOP) - if (axis == Z_AXIS && axis_home_dir < 0) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOPGM("> "); - #endif - if (STOW_PROBE()) return; - } - #endif - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("<<< homeaxis(", axis); - SERIAL_ECHOLNPGM(")"); - } - #endif -} - -#if ENABLED(FWRETRACT) - - void retract(bool retracting, bool swapping = false) { - - if (retracting == retracted[active_extruder]) return; - - float old_feedrate_mm_m = feedrate_mm_m; - - set_destination_to_current(); - - if (retracting) { - - feedrate_mm_m = MMS_TO_MMM(retract_feedrate_mm_s); - current_position[E_AXIS] += (swapping ? retract_length_swap : retract_length) / volumetric_multiplier[active_extruder]; - sync_plan_position_e(); - prepare_move_to_destination(); - - if (retract_zlift > 0.01) { - current_position[Z_AXIS] -= retract_zlift; - SYNC_PLAN_POSITION_KINEMATIC(); - prepare_move_to_destination(); - } - } - else { - - if (retract_zlift > 0.01) { - current_position[Z_AXIS] += retract_zlift; - SYNC_PLAN_POSITION_KINEMATIC(); - } - - feedrate_mm_m = MMS_TO_MMM(retract_recover_feedrate_mm_s); - float move_e = swapping ? retract_length_swap + retract_recover_length_swap : retract_length + retract_recover_length; - current_position[E_AXIS] -= move_e / volumetric_multiplier[active_extruder]; - sync_plan_position_e(); - prepare_move_to_destination(); - } - - feedrate_mm_m = old_feedrate_mm_m; - retracted[active_extruder] = retracting; - - } // retract() - -#endif // FWRETRACT - -#if ENABLED(MIXING_EXTRUDER) - - void normalize_mix() { - float mix_total = 0.0; - for (int i = 0; i < MIXING_STEPPERS; i++) { - float v = mixing_factor[i]; - if (v < 0) v = mixing_factor[i] = 0; - mix_total += v; - } - // Scale all values if they don't add up to ~1.0 - if (mix_total < 0.9999 || mix_total > 1.0001) { - SERIAL_PROTOCOLLNPGM("Warning: Mix factors must add up to 1.0. Scaling."); - float mix_scale = 1.0 / mix_total; - for (int i = 0; i < MIXING_STEPPERS; i++) - mixing_factor[i] *= mix_scale; - } - } - - #if ENABLED(DIRECT_MIXING_IN_G1) - // Get mixing parameters from the GCode - // Factors that are left out are set to 0 - // The total "must" be 1.0 (but it will be normalized) - void gcode_get_mix() { - const char* mixing_codes = "ABCDHI"; - for (int i = 0; i < MIXING_STEPPERS; i++) - mixing_factor[i] = code_seen(mixing_codes[i]) ? code_value_float() : 0; - - normalize_mix(); - } - #endif - -#endif - -/** - * *************************************************************************** - * ***************************** G-CODE HANDLING ***************************** - * *************************************************************************** - */ - -/** - * Set XYZE destination and feedrate from the current GCode command - * - * - Set destination from included axis codes - * - Set to current for missing axis codes - * - Set the feedrate, if included - */ -void gcode_get_destination() { - LOOP_XYZE(i) { - if (code_seen(axis_codes[i])) - { - destination[i] = code_value_axis_units(i) + (axis_relative_modes[i] || relative_mode ? current_position[i] : 0); - } - else - destination[i] = current_position[i]; - } - - if (code_seen('F') && code_value_linear_units() > 0.0) - feedrate_mm_m = code_value_linear_units(); - - #if ENABLED(PRINTCOUNTER) - if (!DEBUGGING(DRYRUN)) - print_job_timer.incFilamentUsed(destination[E_AXIS] - current_position[E_AXIS]); - #endif - - // Get ABCDHI mixing factors - #if ENABLED(MIXING_EXTRUDER) && ENABLED(DIRECT_MIXING_IN_G1) - gcode_get_mix(); - #endif -} - -void unknown_command_error() { - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_UNKNOWN_COMMAND); - SERIAL_ECHO(current_command); - SERIAL_ECHOLNPGM("\""); -} - -#if ENABLED(HOST_KEEPALIVE_FEATURE) - - /** - * Output a "busy" message at regular intervals - * while the machine is not accepting commands. - */ - void host_keepalive() { - millis_t ms = millis(); - if (host_keepalive_interval && busy_state != NOT_BUSY) { - if (PENDING(ms, next_busy_signal_ms)) return; - switch (busy_state) { - case IN_HANDLER: - case IN_PROCESS: - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_BUSY_PROCESSING); - break; - case PAUSED_FOR_USER: - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_BUSY_PAUSED_FOR_USER); - break; - case PAUSED_FOR_INPUT: - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_BUSY_PAUSED_FOR_INPUT); - break; - default: - break; - } - } - next_busy_signal_ms = ms + host_keepalive_interval * 1000UL; - } - -#endif //HOST_KEEPALIVE_FEATURE - -/** - * G0, G1: Coordinated movement of X Y Z E axes - */ -inline void gcode_G0_G1() { - if (IsRunning()) { - gcode_get_destination(); // For X Y Z E F - - #if ENABLED(FWRETRACT) - - if (autoretract_enabled && !(code_seen('X') || code_seen('Y') || code_seen('Z')) && code_seen('E')) { - float echange = destination[E_AXIS] - current_position[E_AXIS]; - // Is this move an attempt to retract or recover? - if ((echange < -MIN_RETRACT && !retracted[active_extruder]) || (echange > MIN_RETRACT && retracted[active_extruder])) { - current_position[E_AXIS] = destination[E_AXIS]; // hide the slicer-generated retract/recover from calculations - sync_plan_position_e(); // AND from the planner - retract(!retracted[active_extruder]); - return; - } - } - - #endif //FWRETRACT - - prepare_move_to_destination(); - } -} - -/** - * G2: Clockwise Arc - * G3: Counterclockwise Arc - */ -#if ENABLED(ARC_SUPPORT) - inline void gcode_G2_G3(bool clockwise) { - if (IsRunning()) { - - #if ENABLED(SF_ARC_FIX) - bool relative_mode_backup = relative_mode; - relative_mode = true; - #endif - - gcode_get_destination(); - - #if ENABLED(SF_ARC_FIX) - relative_mode = relative_mode_backup; - #endif - - // Center of arc as offset from current_position - float arc_offset[2] = { - code_seen('I') ? code_value_axis_units(X_AXIS) : 0, - code_seen('J') ? code_value_axis_units(Y_AXIS) : 0 - }; - - // Send an arc to the planner - plan_arc(destination, arc_offset, clockwise); - - refresh_cmd_timeout(); - } - } -#endif - -/** - * G4: Dwell S or P - */ -inline void gcode_G4() { - millis_t dwell_ms = 0; - - if (code_seen('P')) dwell_ms = code_value_millis(); // milliseconds to wait - if (code_seen('S')) dwell_ms = code_value_millis_from_seconds(); // seconds to wait - - stepper.synchronize(); - refresh_cmd_timeout(); - dwell_ms += previous_cmd_ms; // keep track of when we started waiting - - if (!lcd_hasstatus()) LCD_MESSAGEPGM(MSG_DWELL); - - while (PENDING(millis(), dwell_ms)) idle(); -} - -#if ENABLED(BEZIER_CURVE_SUPPORT) - - /** - * Parameters interpreted according to: - * http://linuxcnc.org/docs/2.6/html/gcode/gcode.html#sec:G5-Cubic-Spline - * However I, J omission is not supported at this point; all - * parameters can be omitted and default to zero. - */ - - /** - * G5: Cubic B-spline - */ - inline void gcode_G5() { - if (IsRunning()) { - - gcode_get_destination(); - - float offset[] = { - code_seen('I') ? code_value_axis_units(X_AXIS) : 0.0, - code_seen('J') ? code_value_axis_units(Y_AXIS) : 0.0, - code_seen('P') ? code_value_axis_units(X_AXIS) : 0.0, - code_seen('Q') ? code_value_axis_units(Y_AXIS) : 0.0 - }; - - plan_cubic_move(offset); - } - } - -#endif // BEZIER_CURVE_SUPPORT - -#if ENABLED(FWRETRACT) - - /** - * G10 - Retract filament according to settings of M207 - * G11 - Recover filament according to settings of M208 - */ - inline void gcode_G10_G11(bool doRetract=false) { - #if EXTRUDERS > 1 - if (doRetract) { - retracted_swap[active_extruder] = (code_seen('S') && code_value_bool()); // checks for swap retract argument - } - #endif - retract(doRetract - #if EXTRUDERS > 1 - , retracted_swap[active_extruder] - #endif - ); - } - -#endif //FWRETRACT - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - /** - * G12: Clean the nozzle - */ - inline void gcode_G12() { - // Don't allow nozzle cleaning without homing first - if (axis_unhomed_error(true, true, true)) { return; } - - uint8_t const pattern = code_seen('P') ? code_value_ushort() : 0; - uint8_t const strokes = code_seen('S') ? code_value_ushort() : NOZZLE_CLEAN_STROKES; - uint8_t const objects = code_seen('T') ? code_value_ushort() : 3; - - Nozzle::clean(pattern, strokes, objects); - } -#endif - -#if ENABLED(INCH_MODE_SUPPORT) - /** - * G20: Set input mode to inches - */ - inline void gcode_G20() { - set_input_linear_units(LINEARUNIT_INCH); - } - - /** - * G21: Set input mode to millimeters - */ - inline void gcode_G21() { - set_input_linear_units(LINEARUNIT_MM); - } -#endif - -#if ENABLED(NOZZLE_PARK_FEATURE) - /** - * G27: Park the nozzle - */ - inline void gcode_G27() { - // Don't allow nozzle parking without homing first - if (axis_unhomed_error(true, true, true)) { return; } - uint8_t const z_action = code_seen('P') ? code_value_ushort() : 0; - Nozzle::park(z_action); - } -#endif // NOZZLE_PARK_FEATURE - -#if ENABLED(QUICK_HOME) - - static void quick_home_xy() { - - // Pretend the current position is 0,0 - current_position[X_AXIS] = current_position[Y_AXIS] = 0.0; - sync_plan_position(); - - int x_axis_home_dir = - #if ENABLED(DUAL_X_CARRIAGE) - x_home_dir(active_extruder) - #else - home_dir(X_AXIS) - #endif - ; - - float mlx = max_length(X_AXIS), - mly = max_length(Y_AXIS), - mlratio = mlx > mly ? mly / mlx : mlx / mly, - fr_mm_m = min(homing_feedrate_mm_m[X_AXIS], homing_feedrate_mm_m[Y_AXIS]) * sqrt(sq(mlratio) + 1.0); - - do_blocking_move_to_xy(1.5 * mlx * x_axis_home_dir, 1.5 * mly * home_dir(Y_AXIS), fr_mm_m); - endstops.hit_on_purpose(); // clear endstop hit flags - current_position[X_AXIS] = current_position[Y_AXIS] = 0.0; - - } - -#endif // QUICK_HOME - -/** - * G28: Home all axes according to settings - * - * Parameters - * - * None Home to all axes with no parameters. - * With QUICK_HOME enabled XY will home together, then Z. - * - * Cartesian parameters - * - * X Home to the X endstop - * Y Home to the Y endstop - * Z Home to the Z endstop - * - */ -inline void gcode_G28() { - - #ifdef UARM_SWIFT - return; - #endif // UARM_SWIFT - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM(">>> gcode_G28"); - #endif - - // Wait for planner moves to finish! - stepper.synchronize(); - - // For auto bed leveling, clear the level matrix - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - planner.bed_level_matrix.set_to_identity(); - #if ENABLED(DELTA) - reset_bed_level(); - #endif - #endif - - // Always home with tool 0 active - #if HOTENDS > 1 - uint8_t old_tool_index = active_extruder; - tool_change(0, 0, true); - #endif - - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) - extruder_duplication_enabled = false; - #endif - - /** - * For mesh bed leveling deactivate the mesh calculations, will be turned - * on again when homing all axis - */ - #if ENABLED(MESH_BED_LEVELING) - float pre_home_z = MESH_HOME_SEARCH_Z; - if (mbl.active()) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("MBL was active"); - #endif - // Save known Z position if already homed - if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) { - pre_home_z = current_position[Z_AXIS]; - pre_home_z += mbl.get_z(RAW_CURRENT_POSITION(X_AXIS), RAW_CURRENT_POSITION(Y_AXIS)); - } - mbl.set_active(false); - current_position[Z_AXIS] = pre_home_z; - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("Set Z to pre_home_z", current_position); - #endif - } - #endif - - setup_for_endstop_or_probe_move(); - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("> endstops.enable(true)"); - #endif - endstops.enable(true); // Enable endstops for next homing move - - - #if ENABLED(DELTA) - /** - * A delta can only safely home all axes at the same time - */ - - // Pretend the current position is 0,0,0 - // This is like quick_home_xy() but for 3 towers. - current_position[X_AXIS] = current_position[Y_AXIS] = current_position[Z_AXIS] = 0.0; - sync_plan_position(); - - // Move all carriages up together until the first endstop is hit. - current_position[X_AXIS] = current_position[Y_AXIS] = current_position[Z_AXIS] = 3.0 * (Z_MAX_LENGTH); - feedrate_mm_m = 1.732 * homing_feedrate_mm_m[X_AXIS]; - line_to_current_position(); - stepper.synchronize(); - endstops.hit_on_purpose(); // clear endstop hit flags - current_position[X_AXIS] = current_position[Y_AXIS] = current_position[Z_AXIS] = 0.0; - - // take care of back off and rehome. Now one carriage is at the top. - HOMEAXIS(X); - HOMEAXIS(Y); - HOMEAXIS(Z); - - SYNC_PLAN_POSITION_KINEMATIC(); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("(DELTA)", current_position); - #endif - - #else // NOT DELTA - - bool homeX = code_seen('X'), homeY = code_seen('Y'), homeZ = code_seen('Z'); - - home_all_axis = (!homeX && !homeY && !homeZ) || (homeX && homeY && homeZ); - - set_destination_to_current(); - - #if Z_HOME_DIR > 0 // If homing away from BED do Z first - - if (home_all_axis || homeZ) { - HOMEAXIS(Z); - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> HOMEAXIS(Z)", current_position); - #endif - } - - #else - - if (home_all_axis || homeX || homeY) { - // Raise Z before homing any other axes and z is not already high enough (never lower z) - destination[Z_AXIS] = LOGICAL_Z_POSITION(Z_HOMING_HEIGHT); - if (destination[Z_AXIS] > current_position[Z_AXIS]) { - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("Raise Z (before homing) to ", destination[Z_AXIS]); - SERIAL_EOL; - } - #endif - - do_blocking_move_to_z(destination[Z_AXIS]); - } - } - - #endif - - #if ENABLED(QUICK_HOME) - - if (home_all_axis || (homeX && homeY)) quick_home_xy(); - - #endif - - #if ENABLED(HOME_Y_BEFORE_X) - - // Home Y - if (home_all_axis || homeY) { - HOMEAXIS(Y); - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> homeY", current_position); - #endif - } - - #endif - - // Home X - if (home_all_axis || homeX) { - #if ENABLED(DUAL_X_CARRIAGE) - int tmp_extruder = active_extruder; - active_extruder = !active_extruder; - HOMEAXIS(X); - inactive_extruder_x_pos = RAW_X_POSITION(current_position[X_AXIS]); - active_extruder = tmp_extruder; - HOMEAXIS(X); - // reset state used by the different modes - memcpy(raised_parked_position, current_position, sizeof(raised_parked_position)); - delayed_move_time = 0; - active_extruder_parked = true; - #else - HOMEAXIS(X); - #endif - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> homeX", current_position); - #endif - } - - #if DISABLED(HOME_Y_BEFORE_X) - // Home Y - if (home_all_axis || homeY) { - HOMEAXIS(Y); - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> homeY", current_position); - #endif - } - #endif - - // Home Z last if homing towards the bed - #if Z_HOME_DIR < 0 - - if (home_all_axis || homeZ) { - - #if ENABLED(Z_SAFE_HOMING) - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOLNPGM("> Z_SAFE_HOMING >>>"); - } - #endif - - if (home_all_axis) { - - /** - * At this point we already have Z at Z_HOMING_HEIGHT height - * No need to move Z any more as this height should already be safe - * enough to reach Z_SAFE_HOMING XY positions. - * Just make sure the planner is in sync. - */ - SYNC_PLAN_POSITION_KINEMATIC(); - - /** - * Move the Z probe (or just the nozzle) to the safe homing point - */ - 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] = current_position[Z_AXIS]; // Z is already at the right height - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - DEBUG_POS("> Z_SAFE_HOMING > home_all_axis", current_position); - DEBUG_POS("> Z_SAFE_HOMING > home_all_axis", destination); - } - #endif - - // Move in the XY plane - do_blocking_move_to_xy(destination[X_AXIS], destination[Y_AXIS]); - } - - // Let's see if X and Y are homed - if (axis_unhomed_error(true, true, false)) return; - - /** - * Make sure the Z probe is within the physical limits - * NOTE: This doesn't necessarily ensure the Z probe is also - * within the bed! - */ - float cpx = RAW_CURRENT_POSITION(X_AXIS), cpy = RAW_CURRENT_POSITION(Y_AXIS); - if ( cpx >= X_MIN_POS - (X_PROBE_OFFSET_FROM_EXTRUDER) - && cpx <= X_MAX_POS - (X_PROBE_OFFSET_FROM_EXTRUDER) - && cpy >= Y_MIN_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER) - && cpy <= Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER)) { - - // Home the Z axis - HOMEAXIS(Z); - } - else { - LCD_MESSAGEPGM(MSG_ZPROBE_OUT); - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_ZPROBE_OUT); - } - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOLNPGM("<<< Z_SAFE_HOMING"); - } - #endif - - #else // !Z_SAFE_HOMING - - HOMEAXIS(Z); - - #endif // !Z_SAFE_HOMING - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> (home_all_axis || homeZ) > final", current_position); - #endif - - } // home_all_axis || homeZ - - #endif // Z_HOME_DIR < 0 - - SYNC_PLAN_POSITION_KINEMATIC(); - - #endif // !DELTA (gcode_G28) - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("> endstops.not_homing()"); - #endif - endstops.not_homing(); - endstops.hit_on_purpose(); // clear endstop hit flags - - // Enable mesh leveling again - #if ENABLED(MESH_BED_LEVELING) - if (mbl.has_mesh()) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("MBL has mesh"); - #endif - if (home_all_axis || (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && homeZ)) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("MBL Z homing"); - #endif - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z - #if Z_HOME_DIR > 0 - + Z_MAX_POS - #endif - ; - SYNC_PLAN_POSITION_KINEMATIC(); - mbl.set_active(true); - #if ENABLED(MESH_G28_REST_ORIGIN) - current_position[Z_AXIS] = 0.0; - set_destination_to_current(); - feedrate_mm_m = homing_feedrate_mm_m[Z_AXIS]; - line_to_destination(); - stepper.synchronize(); - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("MBL Rest Origin", current_position); - #endif - #else - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z - - mbl.get_z(RAW_CURRENT_POSITION(X_AXIS), RAW_CURRENT_POSITION(Y_AXIS)) - #if Z_HOME_DIR > 0 - + Z_MAX_POS - #endif - ; - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("MBL adjusted MESH_HOME_SEARCH_Z", current_position); - #endif - #endif - } - else if ((axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) && (homeX || homeY)) { - current_position[Z_AXIS] = pre_home_z; - SYNC_PLAN_POSITION_KINEMATIC(); - mbl.set_active(true); - current_position[Z_AXIS] = pre_home_z - - mbl.get_z(RAW_CURRENT_POSITION(X_AXIS), RAW_CURRENT_POSITION(Y_AXIS)); - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("MBL Home X or Y", current_position); - #endif - } - } - #endif - - #if ENABLED(DELTA) - // move to a height where we can use the full xy-area - do_blocking_move_to_z(delta_clip_start_height); - #endif - - clean_up_after_endstop_or_probe_move(); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("<<< gcode_G28"); - #endif - - // Restore the active tool after homing - #if HOTENDS > 1 - tool_change(old_tool_index, 0, true); - #endif - - report_current_position(); -} - -#if HAS_PROBING_PROCEDURE - - void out_of_range_error(const char* p_edge) { - SERIAL_PROTOCOLPGM("?Probe "); - serialprintPGM(p_edge); - SERIAL_PROTOCOLLNPGM(" position out of range."); - } - -#endif - -#if ENABLED(MESH_BED_LEVELING) - inline void _mbl_goto_xy(float x, float y) { - float old_feedrate_mm_m = feedrate_mm_m; - feedrate_mm_m = homing_feedrate_mm_m[X_AXIS]; - - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z - #if Z_PROBE_TRAVEL_HEIGHT > Z_HOMING_HEIGHT - + Z_PROBE_TRAVEL_HEIGHT - #elif Z_HOMING_HEIGHT > 0 - + Z_HOMING_HEIGHT - #endif - ; - line_to_current_position(); - - current_position[X_AXIS] = LOGICAL_X_POSITION(x); - current_position[Y_AXIS] = LOGICAL_Y_POSITION(y); - line_to_current_position(); - - #if Z_PROBE_TRAVEL_HEIGHT > 0 || Z_HOMING_HEIGHT > 0 - current_position[Z_AXIS] = LOGICAL_Z_POSITION(MESH_HOME_SEARCH_Z); - line_to_current_position(); - #endif - - feedrate_mm_m = old_feedrate_mm_m; - stepper.synchronize(); - } - - /** - * G29: Mesh-based Z probe, probes a grid and produces a - * mesh to compensate for variable bed height - * - * Parameters With MESH_BED_LEVELING: - * - * S0 Produce a mesh report - * S1 Start probing mesh points - * S2 Probe the next mesh point - * S3 Xn Yn Zn.nn Manually modify a single point - * S4 Zn.nn Set z offset. Positive away from bed, negative closer to bed. - * S5 Reset and disable mesh - * - * The S0 report the points as below - * - * +----> X-axis 1-n - * | - * | - * v Y-axis 1-n - * - */ - inline void gcode_G29() { - - static int probe_point = -1; - MeshLevelingState state = code_seen('S') ? (MeshLevelingState)code_value_byte() : MeshReport; - if (state < 0 || state > 5) { - SERIAL_PROTOCOLLNPGM("S out of range (0-5)."); - return; - } - - int8_t px, py; - - switch (state) { - case MeshReport: - if (mbl.has_mesh()) { - SERIAL_PROTOCOLPAIR("State: ", mbl.active() ? "On" : "Off"); - SERIAL_PROTOCOLPAIR("\nNum X,Y: ", MESH_NUM_X_POINTS); - SERIAL_PROTOCOLCHAR(','); SERIAL_PROTOCOL(MESH_NUM_Y_POINTS); - SERIAL_PROTOCOLPAIR("\nZ search height: ", MESH_HOME_SEARCH_Z); - SERIAL_PROTOCOLPGM("\nZ offset: "); SERIAL_PROTOCOL_F(mbl.z_offset, 5); - SERIAL_PROTOCOLLNPGM("\nMeasured points:"); - for (py = 0; py < MESH_NUM_Y_POINTS; py++) { - for (px = 0; px < MESH_NUM_X_POINTS; px++) { - SERIAL_PROTOCOLPGM(" "); - SERIAL_PROTOCOL_F(mbl.z_values[py][px], 5); - } - SERIAL_EOL; - } - } - else - SERIAL_PROTOCOLLNPGM("Mesh bed leveling not active."); - break; - - case MeshStart: - mbl.reset(); - probe_point = 0; - enqueue_and_echo_commands_P(PSTR("G28\nG29 S2")); - break; - - case MeshNext: - if (probe_point < 0) { - SERIAL_PROTOCOLLNPGM("Start mesh probing with \"G29 S1\" first."); - return; - } - // For each G29 S2... - if (probe_point == 0) { - // For the initial G29 S2 make Z a positive value (e.g., 4.0) - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z - #if Z_HOME_DIR > 0 - + Z_MAX_POS - #endif - ; - SYNC_PLAN_POSITION_KINEMATIC(); - } - else { - // For G29 S2 after adjusting Z. - mbl.set_zigzag_z(probe_point - 1, current_position[Z_AXIS]); - } - // If there's another point to sample, move there with optional lift. - if (probe_point < (MESH_NUM_X_POINTS) * (MESH_NUM_Y_POINTS)) { - mbl.zigzag(probe_point, px, py); - _mbl_goto_xy(mbl.get_probe_x(px), mbl.get_probe_y(py)); - probe_point++; - } - else { - // One last "return to the bed" (as originally coded) at completion - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z - #if Z_PROBE_TRAVEL_HEIGHT > Z_HOMING_HEIGHT - + Z_PROBE_TRAVEL_HEIGHT - #elif Z_HOMING_HEIGHT > 0 - + Z_HOMING_HEIGHT - #endif - ; - line_to_current_position(); - stepper.synchronize(); - - // After recording the last point, activate the mbl and home - SERIAL_PROTOCOLLNPGM("Mesh probing done."); - probe_point = -1; - mbl.set_has_mesh(true); - enqueue_and_echo_commands_P(PSTR("G28")); - } - break; - - case MeshSet: - if (code_seen('X')) { - px = code_value_int() - 1; - if (px < 0 || px >= MESH_NUM_X_POINTS) { - SERIAL_PROTOCOLLNPGM("X out of range (1-" STRINGIFY(MESH_NUM_X_POINTS) ")."); - return; - } - } - else { - SERIAL_PROTOCOLLNPGM("X not entered."); - return; - } - if (code_seen('Y')) { - py = code_value_int() - 1; - if (py < 0 || py >= MESH_NUM_Y_POINTS) { - SERIAL_PROTOCOLLNPGM("Y out of range (1-" STRINGIFY(MESH_NUM_Y_POINTS) ")."); - return; - } - } - else { - SERIAL_PROTOCOLLNPGM("Y not entered."); - return; - } - if (code_seen('Z')) { - mbl.z_values[py][px] = code_value_axis_units(Z_AXIS); - } - else { - SERIAL_PROTOCOLLNPGM("Z not entered."); - return; - } - break; - - case MeshSetZOffset: - if (code_seen('Z')) { - mbl.z_offset = code_value_axis_units(Z_AXIS); - } - else { - SERIAL_PROTOCOLLNPGM("Z not entered."); - return; - } - break; - - case MeshReset: - if (mbl.active()) { - current_position[Z_AXIS] += - mbl.get_z(RAW_CURRENT_POSITION(X_AXIS), RAW_CURRENT_POSITION(Y_AXIS)) - MESH_HOME_SEARCH_Z; - mbl.reset(); - SYNC_PLAN_POSITION_KINEMATIC(); - } - else - mbl.reset(); - - } // switch(state) - - report_current_position(); - } - -#elif ENABLED(AUTO_BED_LEVELING_FEATURE) - - /** - * G29: Detailed Z probe, probes the bed at 3 or more points. - * Will fail if the printer has not been homed with G28. - * - * Enhanced G29 Auto Bed Leveling Probe Routine - * - * Parameters With AUTO_BED_LEVELING_GRID: - * - * P Set the size of the grid that will be probed (P x P points). - * Not supported by non-linear delta printer bed leveling. - * Example: "G29 P4" - * - * S Set the XY travel speed between probe points (in units/min) - * - * D Dry-Run mode. Just evaluate the bed Topology - Don't apply - * or clean the rotation Matrix. Useful to check the topology - * after a first run of G29. - * - * V Set the verbose level (0-4). Example: "G29 V3" - * - * T Generate a Bed Topology Report. Example: "G29 P5 T" for a detailed report. - * This is useful for manual bed leveling and finding flaws in the bed (to - * assist with part placement). - * Not supported by non-linear delta printer bed leveling. - * - * F Set the Front limit of the probing grid - * B Set the Back limit of the probing grid - * L Set the Left limit of the probing grid - * R Set the Right limit of the probing grid - * - * Global Parameters: - * - * E/e By default G29 will engage the Z probe, test the bed, then disengage. - * Include "E" to engage/disengage the Z probe for each sample. - * There's no extra effect if you have a fixed Z probe. - * Usage: "G29 E" or "G29 e" - * - */ - inline void gcode_G29() { - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOLNPGM(">>> gcode_G29"); - DEBUG_POS("", current_position); - } - #endif - - // Don't allow auto-leveling without homing first - if (axis_unhomed_error(true, true, true)) return; - - int verbose_level = code_seen('V') ? code_value_int() : 1; - if (verbose_level < 0 || verbose_level > 4) { - SERIAL_ECHOLNPGM("?(V)erbose Level is implausible (0-4)."); - return; - } - - bool dryrun = code_seen('D'); - bool stow_probe_after_each = code_seen('E'); - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #if DISABLED(DELTA) - bool do_topography_map = verbose_level > 2 || code_seen('T'); - #endif - - if (verbose_level > 0) { - SERIAL_PROTOCOLLNPGM("G29 Auto Bed Leveling"); - if (dryrun) SERIAL_PROTOCOLLNPGM("Running in DRY-RUN mode"); - } - - int auto_bed_leveling_grid_points = AUTO_BED_LEVELING_GRID_POINTS; - - #if DISABLED(DELTA) - if (code_seen('P')) auto_bed_leveling_grid_points = code_value_int(); - if (auto_bed_leveling_grid_points < 2) { - SERIAL_PROTOCOLLNPGM("?Number of probed (P)oints is implausible (2 minimum)."); - return; - } - #endif - - xy_probe_feedrate_mm_m = code_seen('S') ? (int)code_value_linear_units() : XY_PROBE_SPEED; - - int left_probe_bed_position = code_seen('L') ? (int)code_value_axis_units(X_AXIS) : LOGICAL_X_POSITION(LEFT_PROBE_BED_POSITION), - right_probe_bed_position = code_seen('R') ? (int)code_value_axis_units(X_AXIS) : LOGICAL_X_POSITION(RIGHT_PROBE_BED_POSITION), - front_probe_bed_position = code_seen('F') ? (int)code_value_axis_units(Y_AXIS) : LOGICAL_Y_POSITION(FRONT_PROBE_BED_POSITION), - back_probe_bed_position = code_seen('B') ? (int)code_value_axis_units(Y_AXIS) : LOGICAL_Y_POSITION(BACK_PROBE_BED_POSITION); - - bool left_out_l = left_probe_bed_position < LOGICAL_X_POSITION(MIN_PROBE_X), - left_out = left_out_l || left_probe_bed_position > right_probe_bed_position - (MIN_PROBE_EDGE), - right_out_r = right_probe_bed_position > LOGICAL_X_POSITION(MAX_PROBE_X), - right_out = right_out_r || right_probe_bed_position < left_probe_bed_position + MIN_PROBE_EDGE, - front_out_f = front_probe_bed_position < LOGICAL_Y_POSITION(MIN_PROBE_Y), - front_out = front_out_f || front_probe_bed_position > back_probe_bed_position - (MIN_PROBE_EDGE), - back_out_b = back_probe_bed_position > LOGICAL_Y_POSITION(MAX_PROBE_Y), - back_out = back_out_b || back_probe_bed_position < front_probe_bed_position + MIN_PROBE_EDGE; - - if (left_out || right_out || front_out || back_out) { - if (left_out) { - out_of_range_error(PSTR("(L)eft")); - left_probe_bed_position = left_out_l ? LOGICAL_X_POSITION(MIN_PROBE_X) : right_probe_bed_position - (MIN_PROBE_EDGE); - } - if (right_out) { - out_of_range_error(PSTR("(R)ight")); - right_probe_bed_position = right_out_r ? LOGICAL_Y_POSITION(MAX_PROBE_X) : left_probe_bed_position + MIN_PROBE_EDGE; - } - if (front_out) { - out_of_range_error(PSTR("(F)ront")); - front_probe_bed_position = front_out_f ? LOGICAL_Y_POSITION(MIN_PROBE_Y) : back_probe_bed_position - (MIN_PROBE_EDGE); - } - if (back_out) { - out_of_range_error(PSTR("(B)ack")); - back_probe_bed_position = back_out_b ? LOGICAL_Y_POSITION(MAX_PROBE_Y) : front_probe_bed_position + MIN_PROBE_EDGE; - } - return; - } - - #endif // AUTO_BED_LEVELING_GRID - - if (!dryrun) { - - #if ENABLED(DEBUG_LEVELING_FEATURE) && DISABLED(DELTA) - if (DEBUGGING(LEVELING)) { - vector_3 corrected_position = planner.adjusted_position(); - DEBUG_POS("BEFORE matrix.set_to_identity", corrected_position); - DEBUG_POS("BEFORE matrix.set_to_identity", current_position); - } - #endif - - // make sure the bed_level_rotation_matrix is identity or the planner will get it wrong - planner.bed_level_matrix.set_to_identity(); - - #if ENABLED(DELTA) - reset_bed_level(); - #else //!DELTA - - //vector_3 corrected_position = planner.adjusted_position(); - //corrected_position.debug("position before G29"); - vector_3 uncorrected_position = planner.adjusted_position(); - //uncorrected_position.debug("position during G29"); - current_position[X_AXIS] = uncorrected_position.x; - current_position[Y_AXIS] = uncorrected_position.y; - current_position[Z_AXIS] = uncorrected_position.z; - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("AFTER matrix.set_to_identity", uncorrected_position); - #endif - - SYNC_PLAN_POSITION_KINEMATIC(); - - #endif // !DELTA - } - - stepper.synchronize(); - - setup_for_endstop_or_probe_move(); - - // Deploy the probe. Probe will raise if needed. - if (DEPLOY_PROBE()) return; - - bed_leveling_in_progress = true; - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - // probe at the points of a lattice grid - const int xGridSpacing = (right_probe_bed_position - left_probe_bed_position) / (auto_bed_leveling_grid_points - 1), - yGridSpacing = (back_probe_bed_position - front_probe_bed_position) / (auto_bed_leveling_grid_points - 1); - - #if ENABLED(DELTA) - delta_grid_spacing[0] = xGridSpacing; - delta_grid_spacing[1] = yGridSpacing; - float zoffset = zprobe_zoffset; - if (code_seen('Z')) zoffset += code_value_axis_units(Z_AXIS); - #else // !DELTA - /** - * solve the plane equation ax + by + d = z - * A is the matrix with rows [x y 1] for all the probed points - * B is the vector of the Z positions - * the normal vector to the plane is formed by the coefficients of the - * plane equation in the standard form, which is Vx*x+Vy*y+Vz*z+d = 0 - * so Vx = -a Vy = -b Vz = 1 (we want the vector facing towards positive Z - */ - - int abl2 = sq(auto_bed_leveling_grid_points); - - double eqnAMatrix[abl2 * 3], // "A" matrix of the linear system of equations - eqnBVector[abl2], // "B" vector of Z points - mean = 0.0; - int8_t indexIntoAB[auto_bed_leveling_grid_points][auto_bed_leveling_grid_points]; - #endif // !DELTA - - int probePointCounter = 0; - bool zig = (auto_bed_leveling_grid_points & 1) ? true : false; //always end at [RIGHT_PROBE_BED_POSITION, BACK_PROBE_BED_POSITION] - - for (int yCount = 0; yCount < auto_bed_leveling_grid_points; yCount++) { - double yProbe = front_probe_bed_position + yGridSpacing * yCount; - int xStart, xStop, xInc; - - if (zig) { - xStart = 0; - xStop = auto_bed_leveling_grid_points; - xInc = 1; - } - else { - xStart = auto_bed_leveling_grid_points - 1; - xStop = -1; - xInc = -1; - } - - zig = !zig; - - for (int xCount = xStart; xCount != xStop; xCount += xInc) { - double xProbe = left_probe_bed_position + xGridSpacing * xCount; - - #if ENABLED(DELTA) - // Avoid probing the corners (outside the round or hexagon print surface) on a delta printer. - float distance_from_center = HYPOT(xProbe, yProbe); - if (distance_from_center > DELTA_PROBEABLE_RADIUS) continue; - #endif //DELTA - - float measured_z = probe_pt(xProbe, yProbe, stow_probe_after_each, verbose_level); - - #if DISABLED(DELTA) - mean += measured_z; - - eqnBVector[probePointCounter] = measured_z; - eqnAMatrix[probePointCounter + 0 * abl2] = xProbe; - eqnAMatrix[probePointCounter + 1 * abl2] = yProbe; - eqnAMatrix[probePointCounter + 2 * abl2] = 1; - indexIntoAB[xCount][yCount] = probePointCounter; - #else - bed_level[xCount][yCount] = measured_z + zoffset; - #endif - - probePointCounter++; - - idle(); - - } //xProbe - } //yProbe - - #else // !AUTO_BED_LEVELING_GRID - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("> 3-point Leveling"); - #endif - - // Probe at 3 arbitrary points - float z_at_pt_1 = probe_pt( LOGICAL_X_POSITION(ABL_PROBE_PT_1_X), - LOGICAL_Y_POSITION(ABL_PROBE_PT_1_Y), - stow_probe_after_each, verbose_level), - z_at_pt_2 = probe_pt( LOGICAL_X_POSITION(ABL_PROBE_PT_2_X), - LOGICAL_Y_POSITION(ABL_PROBE_PT_2_Y), - stow_probe_after_each, verbose_level), - z_at_pt_3 = probe_pt( LOGICAL_X_POSITION(ABL_PROBE_PT_3_X), - LOGICAL_Y_POSITION(ABL_PROBE_PT_3_Y), - stow_probe_after_each, verbose_level); - - if (!dryrun) set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3); - - #endif // !AUTO_BED_LEVELING_GRID - - // Raise to _Z_PROBE_DEPLOY_HEIGHT. Stow the probe. - if (STOW_PROBE()) return; - - // Restore state after probing - clean_up_after_endstop_or_probe_move(); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> probing complete", current_position); - #endif - - // Calculate leveling, print reports, correct the position - #if ENABLED(AUTO_BED_LEVELING_GRID) - #if ENABLED(DELTA) - - if (!dryrun) extrapolate_unprobed_bed_level(); - print_bed_level(); - - #else // !DELTA - - // solve lsq problem - double plane_equation_coefficients[3]; - qr_solve(plane_equation_coefficients, abl2, 3, eqnAMatrix, eqnBVector); - - mean /= abl2; - - if (verbose_level) { - SERIAL_PROTOCOLPGM("Eqn coefficients: a: "); - SERIAL_PROTOCOL_F(plane_equation_coefficients[0], 8); - SERIAL_PROTOCOLPGM(" b: "); - SERIAL_PROTOCOL_F(plane_equation_coefficients[1], 8); - SERIAL_PROTOCOLPGM(" d: "); - SERIAL_PROTOCOL_F(plane_equation_coefficients[2], 8); - SERIAL_EOL; - if (verbose_level > 2) { - SERIAL_PROTOCOLPGM("Mean of sampled points: "); - SERIAL_PROTOCOL_F(mean, 8); - SERIAL_EOL; - } - } - - if (!dryrun) set_bed_level_equation_lsq(plane_equation_coefficients); - - // Show the Topography map if enabled - if (do_topography_map) { - - SERIAL_PROTOCOLLNPGM("\nBed Height Topography:\n" - " +--- BACK --+\n" - " | |\n" - " L | (+) | R\n" - " E | | I\n" - " F | (-) N (+) | G\n" - " T | | H\n" - " | (-) | T\n" - " | |\n" - " O-- FRONT --+\n" - " (0,0)"); - - float min_diff = 999; - - for (int yy = auto_bed_leveling_grid_points - 1; yy >= 0; yy--) { - for (int xx = 0; xx < auto_bed_leveling_grid_points; xx++) { - int ind = indexIntoAB[xx][yy]; - float diff = eqnBVector[ind] - mean; - - float x_tmp = eqnAMatrix[ind + 0 * abl2], - y_tmp = eqnAMatrix[ind + 1 * abl2], - z_tmp = 0; - - apply_rotation_xyz(planner.bed_level_matrix, x_tmp, y_tmp, z_tmp); - - NOMORE(min_diff, eqnBVector[ind] - z_tmp); - - if (diff >= 0.0) - SERIAL_PROTOCOLPGM(" +"); // Include + for column alignment - else - SERIAL_PROTOCOLCHAR(' '); - SERIAL_PROTOCOL_F(diff, 5); - } // xx - SERIAL_EOL; - } // yy - SERIAL_EOL; - if (verbose_level > 3) { - SERIAL_PROTOCOLLNPGM("\nCorrected Bed Height vs. Bed Topology:"); - - for (int yy = auto_bed_leveling_grid_points - 1; yy >= 0; yy--) { - for (int xx = 0; xx < auto_bed_leveling_grid_points; xx++) { - int ind = indexIntoAB[xx][yy]; - float x_tmp = eqnAMatrix[ind + 0 * abl2], - y_tmp = eqnAMatrix[ind + 1 * abl2], - z_tmp = 0; - - apply_rotation_xyz(planner.bed_level_matrix, x_tmp, y_tmp, z_tmp); - - float diff = eqnBVector[ind] - z_tmp - min_diff; - if (diff >= 0.0) - SERIAL_PROTOCOLPGM(" +"); - // Include + for column alignment - else - SERIAL_PROTOCOLCHAR(' '); - SERIAL_PROTOCOL_F(diff, 5); - } // xx - SERIAL_EOL; - } // yy - SERIAL_EOL; - } - } //do_topography_map - #endif //!DELTA - #endif // AUTO_BED_LEVELING_GRID - - #if DISABLED(DELTA) - if (verbose_level > 0) - planner.bed_level_matrix.debug("\n\nBed Level Correction Matrix:"); - - if (!dryrun) { - /** - * Correct the Z height difference from Z probe position and nozzle tip position. - * The Z height on homing is measured by Z probe, but the Z probe is quite far - * from the nozzle. When the bed is uneven, this height must be corrected. - */ - float x_tmp = current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER, - y_tmp = current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER, - z_tmp = current_position[Z_AXIS], - stepper_z = stepper.get_axis_position_mm(Z_AXIS); //get the real Z (since planner.adjusted_position is now correcting the plane) - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("> BEFORE apply_rotation_xyz > stepper_z = ", stepper_z); - SERIAL_ECHOPAIR(" ... z_tmp = ", z_tmp); - SERIAL_EOL; - } - #endif - - // Apply the correction sending the Z probe offset - apply_rotation_xyz(planner.bed_level_matrix, x_tmp, y_tmp, z_tmp); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("> AFTER apply_rotation_xyz > z_tmp = ", z_tmp); - SERIAL_EOL; - } - #endif - - // Adjust the current Z and send it to the planner. - current_position[Z_AXIS] += z_tmp - stepper_z; - SYNC_PLAN_POSITION_KINEMATIC(); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("> corrected Z in G29", current_position); - #endif - } - #endif // !DELTA - - #ifdef Z_PROBE_END_SCRIPT - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPGM("Z Probe End Script: "); - SERIAL_ECHOLNPGM(Z_PROBE_END_SCRIPT); - } - #endif - enqueue_and_echo_commands_P(PSTR(Z_PROBE_END_SCRIPT)); - stepper.synchronize(); - #endif - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("<<< gcode_G29"); - #endif - - bed_leveling_in_progress = false; - - report_current_position(); - - KEEPALIVE_STATE(IN_HANDLER); - } - -#endif //AUTO_BED_LEVELING_FEATURE - -#if HAS_BED_PROBE - - /** - * G30: Do a single Z probe at the current XY - */ - inline void gcode_G30() { - - setup_for_endstop_or_probe_move(); - - // TODO: clear the leveling matrix or the planner will be set incorrectly - float measured_z = probe_pt(current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER, - current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER, - true, 1); - - SERIAL_PROTOCOLPGM("Bed X: "); - SERIAL_PROTOCOL(current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER + 0.0001); - SERIAL_PROTOCOLPGM(" Y: "); - SERIAL_PROTOCOL(current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER + 0.0001); - SERIAL_PROTOCOLPGM(" Z: "); - SERIAL_PROTOCOL(measured_z + 0.0001); - SERIAL_EOL; - - clean_up_after_endstop_or_probe_move(); - - report_current_position(); - } - - #if ENABLED(Z_PROBE_SLED) - - /** - * G31: Deploy the Z probe - */ - inline void gcode_G31() { DEPLOY_PROBE(); } - - /** - * G32: Stow the Z probe - */ - inline void gcode_G32() { STOW_PROBE(); } - - #endif // Z_PROBE_SLED - -#endif // HAS_BED_PROBE - -/** - * G92: Set current position to given X Y Z E - */ -inline void gcode_G92() { - bool didE = code_seen('E'); - - if (!didE) stepper.synchronize(); - - bool didXYZ = false; - LOOP_XYZE(i) { - if (code_seen(axis_codes[i])) { - float p = current_position[i], - v = code_value_axis_units(i); - - current_position[i] = v; - - if (i != E_AXIS) { - position_shift[i] += v - p; // Offset the coordinate space - update_software_endstops((AxisEnum)i); - didXYZ = true; - } - } - } - if (didXYZ) - SYNC_PLAN_POSITION_KINEMATIC(); - else if (didE) - sync_plan_position_e(); -} - -#if ENABLED(ULTIPANEL) - - /** - * M0: Unconditional stop - Wait for user button press on LCD - * M1: Conditional stop - Wait for user button press on LCD - */ - inline void gcode_M0_M1() { - char* args = current_command_args; - - millis_t codenum = 0; - bool hasP = false, hasS = false; - if (code_seen('P')) { - codenum = code_value_millis(); // milliseconds to wait - hasP = codenum > 0; - } - if (code_seen('S')) { - codenum = code_value_millis_from_seconds(); // seconds to wait - hasS = codenum > 0; - } - - if (!hasP && !hasS && *args != '\0') - lcd_setstatus(args, true); - else { - LCD_MESSAGEPGM(MSG_USERWAIT); - #if ENABLED(LCD_PROGRESS_BAR) && PROGRESS_MSG_EXPIRE > 0 - dontExpireStatus(); - #endif - } - - lcd_ignore_click(); - stepper.synchronize(); - refresh_cmd_timeout(); - if (codenum > 0) { - codenum += previous_cmd_ms; // wait until this time for a click - KEEPALIVE_STATE(PAUSED_FOR_USER); - while (PENDING(millis(), codenum) && !lcd_clicked()) idle(); - KEEPALIVE_STATE(IN_HANDLER); - lcd_ignore_click(false); - } - else { - if (!lcd_detected()) return; - KEEPALIVE_STATE(PAUSED_FOR_USER); - while (!lcd_clicked()) idle(); - KEEPALIVE_STATE(IN_HANDLER); - } - if (IS_SD_PRINTING) - LCD_MESSAGEPGM(MSG_RESUMING); - else - LCD_MESSAGEPGM(WELCOME_MSG); - } - -#endif // ULTIPANEL - -/** - * M17: Enable power on all stepper motors - */ -inline void gcode_M17() { - LCD_MESSAGEPGM(MSG_NO_MOVE); - enable_all_steppers(); - - #ifdef UARM_SWIFT - delay(1000); - update_current_pos(); - #endif -} - -#if ENABLED(SDSUPPORT) - - /** - * M20: List SD card to serial output - */ - inline void gcode_M20() { - SERIAL_PROTOCOLLNPGM(MSG_BEGIN_FILE_LIST); - card.ls(); - SERIAL_PROTOCOLLNPGM(MSG_END_FILE_LIST); - } - - /** - * M21: Init SD Card - */ - inline void gcode_M21() { - card.initsd(); - } - - /** - * M22: Release SD Card - */ - inline void gcode_M22() { - card.release(); - } - - /** - * M23: Open a file - */ - inline void gcode_M23() { - card.openFile(current_command_args, true); - } - - /** - * M24: Start SD Print - */ - inline void gcode_M24() { - card.startFileprint(); - print_job_timer.start(); - } - - /** - * M25: Pause SD Print - */ - inline void gcode_M25() { - card.pauseSDPrint(); - } - - /** - * M26: Set SD Card file index - */ - inline void gcode_M26() { - if (card.cardOK && code_seen('S')) - card.setIndex(code_value_long()); - } - - /** - * M27: Get SD Card status - */ - inline void gcode_M27() { - card.getStatus(); - } - - /** - * M28: Start SD Write - */ - inline void gcode_M28() { - card.openFile(current_command_args, false); - } - - /** - * M29: Stop SD Write - * Processed in write to file routine above - */ - inline void gcode_M29() { - // card.saving = false; - } - - /** - * M30 : Delete SD Card file - */ - inline void gcode_M30() { - if (card.cardOK) { - card.closefile(); - card.removeFile(current_command_args); - } - } - -#endif //SDSUPPORT - -/** - * M31: Get the time since the start of SD Print (or last M109) - */ -inline void gcode_M31() { - char buffer[21]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toString(buffer); - - lcd_setstatus(buffer); - - SERIAL_ECHO_START; - SERIAL_ECHOPGM("Print time: "); - SERIAL_ECHOLN(buffer); - - thermalManager.autotempShutdown(); -} - -#if ENABLED(SDSUPPORT) - - /** - * M32: Select file and start SD Print - */ - inline void gcode_M32() { - if (card.sdprinting) - stepper.synchronize(); - - char* namestartpos = strchr(current_command_args, '!'); // Find ! to indicate filename string start. - if (!namestartpos) - namestartpos = current_command_args; // Default name position, 4 letters after the M - else - namestartpos++; //to skip the '!' - - bool call_procedure = code_seen('P') && (seen_pointer < namestartpos); - - if (card.cardOK) { - card.openFile(namestartpos, true, call_procedure); - - if (code_seen('S') && seen_pointer < namestartpos) // "S" (must occur _before_ the filename!) - card.setIndex(code_value_long()); - - card.startFileprint(); - - // Procedure calls count as normal print time. - if (!call_procedure) print_job_timer.start(); - } - } - - #if ENABLED(LONG_FILENAME_HOST_SUPPORT) - - /** - * M33: Get the long full path of a file or folder - * - * Parameters: - * Case-insensitive DOS-style path to a file or folder - * - * Example: - * M33 miscel~1/armchair/armcha~1.gco - * - * Output: - * /Miscellaneous/Armchair/Armchair.gcode - */ - inline void gcode_M33() { - card.printLongPath(current_command_args); - } - - #endif - - /** - * M928: Start SD Write - */ - inline void gcode_M928() { - card.openLogFile(current_command_args); - } - -#endif // SDSUPPORT - -/** - * M42: Change pin status via GCode - * - * P Pin number (LED if omitted) - * S Pin status from 0 - 255 - */ -inline void gcode_M42() { - if (!code_seen('S')) return; - - int pin_status = code_value_int(); - if (pin_status < 0 || pin_status > 255) return; - - int pin_number = code_seen('P') ? code_value_int() : LED_PIN; - if (pin_number < 0) return; - - for (uint8_t i = 0; i < COUNT(sensitive_pins); i++) - if (pin_number == sensitive_pins[i]) return; - - pinMode(pin_number, OUTPUT); - digitalWrite(pin_number, pin_status); - analogWrite(pin_number, pin_status); - - #if FAN_COUNT > 0 - switch (pin_number) { - #if HAS_FAN0 - case FAN_PIN: fanSpeeds[0] = pin_status; break; - #endif - #if HAS_FAN1 - case FAN1_PIN: fanSpeeds[1] = pin_status; break; - #endif - #if HAS_FAN2 - case FAN2_PIN: fanSpeeds[2] = pin_status; break; - #endif - } - #endif -} - -#if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) - - /** - * M48: Z probe repeatability measurement function. - * - * Usage: - * M48 - * P = Number of sampled points (4-50, default 10) - * X = Sample X position - * Y = Sample Y position - * V = Verbose level (0-4, default=1) - * E = Engage Z probe for each reading - * L = Number of legs of movement before probe - * S = Schizoid (Or Star if you prefer) - * - * This function assumes the bed has been homed. Specifically, that a G28 command - * as been issued prior to invoking the M48 Z probe repeatability measurement function. - * Any information generated by a prior G29 Bed leveling command will be lost and need to be - * regenerated. - */ - inline void gcode_M48() { - - if (axis_unhomed_error(true, true, true)) return; - - int8_t verbose_level = code_seen('V') ? code_value_byte() : 1; - if (verbose_level < 0 || verbose_level > 4) { - SERIAL_PROTOCOLLNPGM("?Verbose Level not plausible (0-4)."); - return; - } - - if (verbose_level > 0) - SERIAL_PROTOCOLLNPGM("M48 Z-Probe Repeatability test"); - - int8_t n_samples = code_seen('P') ? code_value_byte() : 10; - if (n_samples < 4 || n_samples > 50) { - SERIAL_PROTOCOLLNPGM("?Sample size not plausible (4-50)."); - return; - } - - float X_current = current_position[X_AXIS], - Y_current = current_position[Y_AXIS]; - - bool stow_probe_after_each = code_seen('E'); - - float X_probe_location = code_seen('X') ? code_value_axis_units(X_AXIS) : X_current + X_PROBE_OFFSET_FROM_EXTRUDER; - #if DISABLED(DELTA) - if (X_probe_location < LOGICAL_X_POSITION(MIN_PROBE_X) || X_probe_location > LOGICAL_X_POSITION(MAX_PROBE_X)) { - out_of_range_error(PSTR("X")); - return; - } - #endif - - float Y_probe_location = code_seen('Y') ? code_value_axis_units(Y_AXIS) : Y_current + Y_PROBE_OFFSET_FROM_EXTRUDER; - #if DISABLED(DELTA) - if (Y_probe_location < LOGICAL_Y_POSITION(MIN_PROBE_Y) || Y_probe_location > LOGICAL_Y_POSITION(MAX_PROBE_Y)) { - out_of_range_error(PSTR("Y")); - return; - } - #else - if (HYPOT(RAW_X_POSITION(X_probe_location), RAW_Y_POSITION(Y_probe_location)) > DELTA_PROBEABLE_RADIUS) { - SERIAL_PROTOCOLLNPGM("? (X,Y) location outside of probeable radius."); - return; - } - #endif - - bool seen_L = code_seen('L'); - uint8_t n_legs = seen_L ? code_value_byte() : 0; - if (n_legs > 15) { - SERIAL_PROTOCOLLNPGM("?Number of legs in movement not plausible (0-15)."); - return; - } - if (n_legs == 1) n_legs = 2; - - bool schizoid_flag = code_seen('S'); - if (schizoid_flag && !seen_L) n_legs = 7; - - /** - * Now get everything to the specified probe point So we can safely do a - * probe to get us close to the bed. If the Z-Axis is far from the bed, - * we don't want to use that as a starting point for each probe. - */ - if (verbose_level > 2) - SERIAL_PROTOCOLLNPGM("Positioning the probe..."); - - #if ENABLED(DELTA) - // we don't do bed level correction in M48 because we want the raw data when we probe - reset_bed_level(); - #elif ENABLED(AUTO_BED_LEVELING_FEATURE) - // we don't do bed level correction in M48 because we want the raw data when we probe - planner.bed_level_matrix.set_to_identity(); - #endif - - setup_for_endstop_or_probe_move(); - - // Move to the first point, deploy, and probe - probe_pt(X_probe_location, Y_probe_location, stow_probe_after_each, verbose_level); - - randomSeed(millis()); - - double mean = 0, sigma = 0, sample_set[n_samples]; - for (uint8_t n = 0; n < n_samples; n++) { - if (n_legs) { - int dir = (random(0, 10) > 5.0) ? -1 : 1; // clockwise or counter clockwise - float angle = random(0.0, 360.0), - radius = random( - #if ENABLED(DELTA) - DELTA_PROBEABLE_RADIUS / 8, DELTA_PROBEABLE_RADIUS / 3 - #else - 5, X_MAX_LENGTH / 8 - #endif - ); - - if (verbose_level > 3) { - SERIAL_ECHOPAIR("Starting radius: ", radius); - SERIAL_ECHOPAIR(" angle: ", angle); - SERIAL_ECHOPGM(" Direction: "); - if (dir > 0) SERIAL_ECHOPGM("Counter-"); - SERIAL_ECHOLNPGM("Clockwise"); - } - - for (uint8_t l = 0; l < n_legs - 1; l++) { - double delta_angle; - - if (schizoid_flag) - // The points of a 5 point star are 72 degrees apart. We need to - // skip a point and go to the next one on the star. - delta_angle = dir * 2.0 * 72.0; - - else - // If we do this line, we are just trying to move further - // around the circle. - delta_angle = dir * (float) random(25, 45); - - angle += delta_angle; - - while (angle > 360.0) // We probably do not need to keep the angle between 0 and 2*PI, but the - angle -= 360.0; // Arduino documentation says the trig functions should not be given values - while (angle < 0.0) // outside of this range. It looks like they behave correctly with - angle += 360.0; // numbers outside of the range, but just to be safe we clamp them. - - X_current = X_probe_location - (X_PROBE_OFFSET_FROM_EXTRUDER) + cos(RADIANS(angle)) * radius; - Y_current = Y_probe_location - (Y_PROBE_OFFSET_FROM_EXTRUDER) + sin(RADIANS(angle)) * radius; - - #if DISABLED(DELTA) - X_current = constrain(X_current, X_MIN_POS, X_MAX_POS); - Y_current = constrain(Y_current, Y_MIN_POS, Y_MAX_POS); - #else - // If we have gone out too far, we can do a simple fix and scale the numbers - // back in closer to the origin. - while (HYPOT(X_current, Y_current) > DELTA_PROBEABLE_RADIUS) { - X_current /= 1.25; - Y_current /= 1.25; - if (verbose_level > 3) { - SERIAL_ECHOPAIR("Pulling point towards center:", X_current); - SERIAL_ECHOPAIR(", ", Y_current); - SERIAL_EOL; - } - } - #endif - if (verbose_level > 3) { - SERIAL_PROTOCOLPGM("Going to:"); - SERIAL_ECHOPAIR(" X", X_current); - SERIAL_ECHOPAIR(" Y", Y_current); - SERIAL_ECHOPAIR(" Z", current_position[Z_AXIS]); - SERIAL_EOL; - } - do_blocking_move_to_xy(X_current, Y_current); - } // n_legs loop - } // n_legs - - // Probe a single point - sample_set[n] = probe_pt(X_probe_location, Y_probe_location, stow_probe_after_each, verbose_level); - - /** - * Get the current mean for the data points we have so far - */ - double sum = 0.0; - for (uint8_t j = 0; j <= n; j++) sum += sample_set[j]; - mean = sum / (n + 1); - - /** - * Now, use that mean to calculate the standard deviation for the - * data points we have so far - */ - sum = 0.0; - for (uint8_t j = 0; j <= n; j++) - sum += sq(sample_set[j] - mean); - - sigma = sqrt(sum / (n + 1)); - if (verbose_level > 0) { - if (verbose_level > 1) { - SERIAL_PROTOCOL(n + 1); - SERIAL_PROTOCOLPGM(" of "); - SERIAL_PROTOCOL((int)n_samples); - SERIAL_PROTOCOLPGM(" z: "); - SERIAL_PROTOCOL_F(current_position[Z_AXIS], 6); - if (verbose_level > 2) { - SERIAL_PROTOCOLPGM(" mean: "); - SERIAL_PROTOCOL_F(mean, 6); - SERIAL_PROTOCOLPGM(" sigma: "); - SERIAL_PROTOCOL_F(sigma, 6); - } - } - SERIAL_EOL; - } - - } // End of probe loop - - if (STOW_PROBE()) return; - - if (verbose_level > 0) { - SERIAL_PROTOCOLPGM("Mean: "); - SERIAL_PROTOCOL_F(mean, 6); - SERIAL_EOL; - } - - SERIAL_PROTOCOLPGM("Standard Deviation: "); - SERIAL_PROTOCOL_F(sigma, 6); - SERIAL_EOL; SERIAL_EOL; - - clean_up_after_endstop_or_probe_move(); - - report_current_position(); - } - -#endif // Z_MIN_PROBE_REPEATABILITY_TEST - -/** - * M75: Start print timer - */ -inline void gcode_M75() { print_job_timer.start(); } - -/** - * M76: Pause print timer - */ -inline void gcode_M76() { print_job_timer.pause(); } - -/** - * M77: Stop print timer - */ -inline void gcode_M77() { print_job_timer.stop(); } - -#if ENABLED(PRINTCOUNTER) - /** - * M78: Show print statistics - */ - inline void gcode_M78() { - // "M78 S78" will reset the statistics - if (code_seen('S') && code_value_int() == 78) - print_job_timer.initStats(); - else print_job_timer.showStats(); - } -#endif - -/** - * M104: Set hot end temperature - */ -inline void gcode_M104() { - if (get_target_extruder_from_command(104)) return; - if (DEBUGGING(DRYRUN)) return; - - #if ENABLED(SINGLENOZZLE) - if (target_extruder != active_extruder) return; - #endif - - if (code_seen('S')) { - thermalManager.setTargetHotend(code_value_temp_abs(), target_extruder); - #if ENABLED(DUAL_X_CARRIAGE) - if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && target_extruder == 0) - thermalManager.setTargetHotend(code_value_temp_abs() == 0.0 ? 0.0 : code_value_temp_abs() + duplicate_extruder_temp_offset, 1); - #endif - - #if ENABLED(PRINTJOB_TIMER_AUTOSTART) - /** - * Stop the timer at the end of print, starting is managed by - * 'heat and wait' M109. - * We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot - * stand by mode, for instance in a dual extruder setup, without affecting - * the running print timer. - */ - if (code_value_temp_abs() <= (EXTRUDE_MINTEMP)/2) { - print_job_timer.stop(); - LCD_MESSAGEPGM(WELCOME_MSG); - } - #endif - - if (code_value_temp_abs() > thermalManager.degHotend(target_extruder)) LCD_MESSAGEPGM(MSG_HEATING); - } -} - -#if HAS_TEMP_HOTEND || HAS_TEMP_BED - - void print_heaterstates() { - #if HAS_TEMP_HOTEND - SERIAL_PROTOCOLPGM(" T:"); - SERIAL_PROTOCOL_F(thermalManager.degHotend(target_extruder), 1); - SERIAL_PROTOCOLPGM(" /"); - SERIAL_PROTOCOL_F(thermalManager.degTargetHotend(target_extruder), 1); - #if ENABLED(SHOW_TEMP_ADC_VALUES) - SERIAL_PROTOCOLPAIR(" (", thermalManager.current_temperature_raw[target_extruder] / OVERSAMPLENR); - SERIAL_CHAR(')'); - #endif - #endif - #if HAS_TEMP_BED - SERIAL_PROTOCOLPGM(" B:"); - SERIAL_PROTOCOL_F(thermalManager.degBed(), 1); - SERIAL_PROTOCOLPGM(" /"); - SERIAL_PROTOCOL_F(thermalManager.degTargetBed(), 1); - #if ENABLED(SHOW_TEMP_ADC_VALUES) - SERIAL_PROTOCOLPAIR(" (", thermalManager.current_temperature_bed_raw / OVERSAMPLENR); - SERIAL_CHAR(')'); - #endif - #endif - #if HOTENDS > 1 - HOTEND_LOOP() { - SERIAL_PROTOCOLPAIR(" T", e); - SERIAL_PROTOCOLCHAR(':'); - SERIAL_PROTOCOL_F(thermalManager.degHotend(e), 1); - SERIAL_PROTOCOLPGM(" /"); - SERIAL_PROTOCOL_F(thermalManager.degTargetHotend(e), 1); - #if ENABLED(SHOW_TEMP_ADC_VALUES) - SERIAL_PROTOCOLPAIR(" (", thermalManager.current_temperature_raw[e] / OVERSAMPLENR); - SERIAL_CHAR(')'); - #endif - } - #endif - SERIAL_PROTOCOLPGM(" @:"); - SERIAL_PROTOCOL(thermalManager.getHeaterPower(target_extruder)); - #if HAS_TEMP_BED - SERIAL_PROTOCOLPGM(" B@:"); - SERIAL_PROTOCOL(thermalManager.getHeaterPower(-1)); - #endif - #if HOTENDS > 1 - HOTEND_LOOP() { - SERIAL_PROTOCOLPAIR(" @", e); - SERIAL_PROTOCOLCHAR(':'); - SERIAL_PROTOCOL(thermalManager.getHeaterPower(e)); - } - #endif - } -#endif - -/** - * M105: Read hot end and bed temperature - */ -inline void gcode_M105() { - if (get_target_extruder_from_command(105)) return; - - #if HAS_TEMP_HOTEND || HAS_TEMP_BED - SERIAL_PROTOCOLPGM(MSG_OK); - print_heaterstates(); - #else // !HAS_TEMP_HOTEND && !HAS_TEMP_BED - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_NO_THERMISTORS); - #endif - - SERIAL_EOL; -} - -#if FAN_COUNT > 0 - - /** - * M106: Set Fan Speed - * - * S Speed between 0-255 - * P Fan index, if more than one fan - */ - inline void gcode_M106() { - uint16_t s = code_seen('S') ? code_value_ushort() : 255, - p = code_seen('P') ? code_value_ushort() : 0; - NOMORE(s, 255); - if (p < FAN_COUNT) fanSpeeds[p] = s; - } - - /** - * M107: Fan Off - */ - inline void gcode_M107() { - uint16_t p = code_seen('P') ? code_value_ushort() : 0; - if (p < FAN_COUNT) fanSpeeds[p] = 0; - } - -#endif // FAN_COUNT > 0 - -#if DISABLED(EMERGENCY_PARSER) - - /** - * M108: Stop the waiting for heaters in M109, M190, M303. Does not affect the target temperature. - */ - inline void gcode_M108() { wait_for_heatup = false; } - - - /** - * M112: Emergency Stop - */ - inline void gcode_M112() { kill(PSTR(MSG_KILLED)); } - - - /** - * M410: Quickstop - Abort all planned moves - * - * This will stop the carriages mid-move, so most likely they - * will be out of sync with the stepper position after this. - */ - inline void gcode_M410() { quickstop_stepper(); } - -#endif - - #ifndef MIN_COOLING_SLOPE_DEG - #define MIN_COOLING_SLOPE_DEG 1.50 - #endif - #ifndef MIN_COOLING_SLOPE_TIME - #define MIN_COOLING_SLOPE_TIME 60 - #endif - -/** - * M109: Sxxx Wait for extruder(s) to reach temperature. Waits only when heating. - * Rxxx Wait for extruder(s) to reach temperature. Waits when heating and cooling. - */ -inline void gcode_M109() { - - if (get_target_extruder_from_command(109)) return; - if (DEBUGGING(DRYRUN)) return; - - #if ENABLED(SINGLENOZZLE) - if (target_extruder != active_extruder) return; - #endif - - bool no_wait_for_cooling = code_seen('S'); - if (no_wait_for_cooling || code_seen('R')) { - thermalManager.setTargetHotend(code_value_temp_abs(), target_extruder); - #if ENABLED(DUAL_X_CARRIAGE) - if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && target_extruder == 0) - thermalManager.setTargetHotend(code_value_temp_abs() == 0.0 ? 0.0 : code_value_temp_abs() + duplicate_extruder_temp_offset, 1); - #endif - - #if ENABLED(PRINTJOB_TIMER_AUTOSTART) - /** - * We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot - * stand by mode, for instance in a dual extruder setup, without affecting - * the running print timer. - */ - if (code_value_temp_abs() <= (EXTRUDE_MINTEMP)/2) { - print_job_timer.stop(); - LCD_MESSAGEPGM(WELCOME_MSG); - } - /** - * We do not check if the timer is already running because this check will - * be done for us inside the Stopwatch::start() method thus a running timer - * will not restart. - */ - else print_job_timer.start(); - #endif - - if (thermalManager.isHeatingHotend(target_extruder)) LCD_MESSAGEPGM(MSG_HEATING); - } - - #if ENABLED(AUTOTEMP) - planner.autotemp_M109(); - #endif - - #if TEMP_RESIDENCY_TIME > 0 - millis_t residency_start_ms = 0; - // Loop until the temperature has stabilized - #define TEMP_CONDITIONS (!residency_start_ms || PENDING(now, residency_start_ms + (TEMP_RESIDENCY_TIME) * 1000UL)) - #else - // Loop until the temperature is very close target - #define TEMP_CONDITIONS (wants_to_cool ? thermalManager.isCoolingHotend(target_extruder) : thermalManager.isHeatingHotend(target_extruder)) - #endif //TEMP_RESIDENCY_TIME > 0 - - float theTarget = -1.0, old_temp = 9999.0; - bool wants_to_cool = false; - wait_for_heatup = true; - millis_t now, next_temp_ms = 0, next_cool_check_ms = 0; - - KEEPALIVE_STATE(NOT_BUSY); - - do { - // Target temperature might be changed during the loop - if (theTarget != thermalManager.degTargetHotend(target_extruder)) { - wants_to_cool = thermalManager.isCoolingHotend(target_extruder); - theTarget = thermalManager.degTargetHotend(target_extruder); - - // Exit if S, continue if S, R, or R - if (no_wait_for_cooling && wants_to_cool) break; - } - - now = millis(); - if (ELAPSED(now, next_temp_ms)) { //Print temp & remaining time every 1s while waiting - next_temp_ms = now + 1000UL; - print_heaterstates(); - #if TEMP_RESIDENCY_TIME > 0 - SERIAL_PROTOCOLPGM(" W:"); - if (residency_start_ms) { - long rem = (((TEMP_RESIDENCY_TIME) * 1000UL) - (now - residency_start_ms)) / 1000UL; - SERIAL_PROTOCOLLN(rem); - } - else { - SERIAL_PROTOCOLLNPGM("?"); - } - #else - SERIAL_EOL; - #endif - } - - idle(); - refresh_cmd_timeout(); // to prevent stepper_inactive_time from running out - - float temp = thermalManager.degHotend(target_extruder); - - #if TEMP_RESIDENCY_TIME > 0 - - float temp_diff = fabs(theTarget - temp); - - if (!residency_start_ms) { - // Start the TEMP_RESIDENCY_TIME timer when we reach target temp for the first time. - if (temp_diff < TEMP_WINDOW) residency_start_ms = now; - } - else if (temp_diff > TEMP_HYSTERESIS) { - // Restart the timer whenever the temperature falls outside the hysteresis. - residency_start_ms = now; - } - - #endif //TEMP_RESIDENCY_TIME > 0 - - // Prevent a wait-forever situation if R is misused i.e. M109 R0 - if (wants_to_cool) { - // break after MIN_COOLING_SLOPE_TIME seconds - // if the temperature did not drop at least MIN_COOLING_SLOPE_DEG - if (!next_cool_check_ms || ELAPSED(now, next_cool_check_ms)) { - if (old_temp - temp < MIN_COOLING_SLOPE_DEG) break; - next_cool_check_ms = now + 1000UL * MIN_COOLING_SLOPE_TIME; - old_temp = temp; - } - } - - } while (wait_for_heatup && TEMP_CONDITIONS); - - LCD_MESSAGEPGM(MSG_HEATING_COMPLETE); - KEEPALIVE_STATE(IN_HANDLER); -} - -#if HAS_TEMP_BED - - #ifndef MIN_COOLING_SLOPE_DEG_BED - #define MIN_COOLING_SLOPE_DEG_BED 1.50 - #endif - #ifndef MIN_COOLING_SLOPE_TIME_BED - #define MIN_COOLING_SLOPE_TIME_BED 60 - #endif - - /** - * M190: Sxxx Wait for bed current temp to reach target temp. Waits only when heating - * Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling - */ - inline void gcode_M190() { - if (DEBUGGING(DRYRUN)) return; - - LCD_MESSAGEPGM(MSG_BED_HEATING); - bool no_wait_for_cooling = code_seen('S'); - if (no_wait_for_cooling || code_seen('R')) { - thermalManager.setTargetBed(code_value_temp_abs()); - #if ENABLED(PRINTJOB_TIMER_AUTOSTART) - if (code_value_temp_abs() > BED_MINTEMP) { - /** - * We start the timer when 'heating and waiting' command arrives, LCD - * functions never wait. Cooling down managed by extruders. - * - * We do not check if the timer is already running because this check will - * be done for us inside the Stopwatch::start() method thus a running timer - * will not restart. - */ - print_job_timer.start(); - } - #endif - } - - #if TEMP_BED_RESIDENCY_TIME > 0 - millis_t residency_start_ms = 0; - // Loop until the temperature has stabilized - #define TEMP_BED_CONDITIONS (!residency_start_ms || PENDING(now, residency_start_ms + (TEMP_BED_RESIDENCY_TIME) * 1000UL)) - #else - // Loop until the temperature is very close target - #define TEMP_BED_CONDITIONS (wants_to_cool ? thermalManager.isCoolingBed() : thermalManager.isHeatingBed()) - #endif //TEMP_BED_RESIDENCY_TIME > 0 - - float theTarget = -1.0, old_temp = 9999.0; - bool wants_to_cool = false; - wait_for_heatup = true; - millis_t now, next_temp_ms = 0, next_cool_check_ms = 0; - - KEEPALIVE_STATE(NOT_BUSY); - - target_extruder = active_extruder; // for print_heaterstates - - do { - // Target temperature might be changed during the loop - if (theTarget != thermalManager.degTargetBed()) { - wants_to_cool = thermalManager.isCoolingBed(); - theTarget = thermalManager.degTargetBed(); - - // Exit if S, continue if S, R, or R - if (no_wait_for_cooling && wants_to_cool) break; - } - - now = millis(); - if (ELAPSED(now, next_temp_ms)) { //Print Temp Reading every 1 second while heating up. - next_temp_ms = now + 1000UL; - print_heaterstates(); - #if TEMP_BED_RESIDENCY_TIME > 0 - SERIAL_PROTOCOLPGM(" W:"); - if (residency_start_ms) { - long rem = (((TEMP_BED_RESIDENCY_TIME) * 1000UL) - (now - residency_start_ms)) / 1000UL; - SERIAL_PROTOCOLLN(rem); - } - else { - SERIAL_PROTOCOLLNPGM("?"); - } - #else - SERIAL_EOL; - #endif - } - - idle(); - refresh_cmd_timeout(); // to prevent stepper_inactive_time from running out - - float temp = thermalManager.degBed(); - - #if TEMP_BED_RESIDENCY_TIME > 0 - - float temp_diff = fabs(theTarget - temp); - - if (!residency_start_ms) { - // Start the TEMP_BED_RESIDENCY_TIME timer when we reach target temp for the first time. - if (temp_diff < TEMP_BED_WINDOW) residency_start_ms = now; - } - else if (temp_diff > TEMP_BED_HYSTERESIS) { - // Restart the timer whenever the temperature falls outside the hysteresis. - residency_start_ms = now; - } - - #endif //TEMP_BED_RESIDENCY_TIME > 0 - - // Prevent a wait-forever situation if R is misused i.e. M190 R0 - if (wants_to_cool) { - // break after MIN_COOLING_SLOPE_TIME_BED seconds - // if the temperature did not drop at least MIN_COOLING_SLOPE_DEG_BED - if (!next_cool_check_ms || ELAPSED(now, next_cool_check_ms)) { - if (old_temp - temp < MIN_COOLING_SLOPE_DEG_BED) break; - next_cool_check_ms = now + 1000UL * MIN_COOLING_SLOPE_TIME_BED; - old_temp = temp; - } - } - - } while (wait_for_heatup && TEMP_BED_CONDITIONS); - - LCD_MESSAGEPGM(MSG_BED_DONE); - KEEPALIVE_STATE(IN_HANDLER); - } - -#endif // HAS_TEMP_BED - -/** - * M110: Set Current Line Number - */ -inline void gcode_M110() { - if (code_seen('N')) gcode_N = code_value_long(); -} - -/** - * M111: Set the debug level - */ -inline void gcode_M111() { - marlin_debug_flags = code_seen('S') ? code_value_byte() : (uint8_t) DEBUG_NONE; - - const static char str_debug_1[] PROGMEM = MSG_DEBUG_ECHO; - const static char str_debug_2[] PROGMEM = MSG_DEBUG_INFO; - const static char str_debug_4[] PROGMEM = MSG_DEBUG_ERRORS; - const static char str_debug_8[] PROGMEM = MSG_DEBUG_DRYRUN; - const static char str_debug_16[] PROGMEM = MSG_DEBUG_COMMUNICATION; - #if ENABLED(DEBUG_LEVELING_FEATURE) - const static char str_debug_32[] PROGMEM = MSG_DEBUG_LEVELING; - #endif - - const static char* const debug_strings[] PROGMEM = { - str_debug_1, str_debug_2, str_debug_4, str_debug_8, str_debug_16, - #if ENABLED(DEBUG_LEVELING_FEATURE) - str_debug_32 - #endif - }; - - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_DEBUG_PREFIX); - if (marlin_debug_flags) { - uint8_t comma = 0; - for (uint8_t i = 0; i < COUNT(debug_strings); i++) { - if (TEST(marlin_debug_flags, i)) { - if (comma++) SERIAL_CHAR(','); - serialprintPGM((char*)pgm_read_word(&(debug_strings[i]))); - } - } - } - else { - SERIAL_ECHOPGM(MSG_DEBUG_OFF); - } - SERIAL_EOL; -} - -#if ENABLED(HOST_KEEPALIVE_FEATURE) - - /** - * M113: Get or set Host Keepalive interval (0 to disable) - * - * S Optional. Set the keepalive interval. - */ - inline void gcode_M113() { - if (code_seen('S')) { - host_keepalive_interval = code_value_byte(); - NOMORE(host_keepalive_interval, 60); - } - else { - SERIAL_ECHO_START; - SERIAL_ECHOPAIR("M113 S", (unsigned long)host_keepalive_interval); - SERIAL_EOL; - } - } - -#endif - -#if ENABLED(BARICUDA) - - #if HAS_HEATER_1 - /** - * M126: Heater 1 valve open - */ - inline void gcode_M126() { baricuda_valve_pressure = code_seen('S') ? code_value_byte() : 255; } - /** - * M127: Heater 1 valve close - */ - inline void gcode_M127() { baricuda_valve_pressure = 0; } - #endif - - #if HAS_HEATER_2 - /** - * M128: Heater 2 valve open - */ - inline void gcode_M128() { baricuda_e_to_p_pressure = code_seen('S') ? code_value_byte() : 255; } - /** - * M129: Heater 2 valve close - */ - inline void gcode_M129() { baricuda_e_to_p_pressure = 0; } - #endif - -#endif //BARICUDA - -/** - * M140: Set bed temperature - */ -inline void gcode_M140() { - if (DEBUGGING(DRYRUN)) return; - if (code_seen('S')) thermalManager.setTargetBed(code_value_temp_abs()); -} - -#if ENABLED(ULTIPANEL) - - /** - * M145: Set the heatup state for a material in the LCD menu - * S (0=PLA, 1=ABS) - * H - * B - * F - */ - inline void gcode_M145() { - int8_t material = code_seen('S') ? (int8_t)code_value_int() : 0; - if (material < 0 || material > 1) { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_MATERIAL_INDEX); - } - else { - int v; - switch (material) { - case 0: - if (code_seen('H')) { - v = code_value_int(); - preheatHotendTemp1 = constrain(v, EXTRUDE_MINTEMP, HEATER_0_MAXTEMP - 15); - } - if (code_seen('F')) { - v = code_value_int(); - preheatFanSpeed1 = constrain(v, 0, 255); - } - #if TEMP_SENSOR_BED != 0 - if (code_seen('B')) { - v = code_value_int(); - preheatBedTemp1 = constrain(v, BED_MINTEMP, BED_MAXTEMP - 15); - } - #endif - break; - case 1: - if (code_seen('H')) { - v = code_value_int(); - preheatHotendTemp2 = constrain(v, EXTRUDE_MINTEMP, HEATER_0_MAXTEMP - 15); - } - if (code_seen('F')) { - v = code_value_int(); - preheatFanSpeed2 = constrain(v, 0, 255); - } - #if TEMP_SENSOR_BED != 0 - if (code_seen('B')) { - v = code_value_int(); - preheatBedTemp2 = constrain(v, BED_MINTEMP, BED_MAXTEMP - 15); - } - #endif - break; - } - } - } - -#endif - -#if ENABLED(TEMPERATURE_UNITS_SUPPORT) - /** - * M149: Set temperature units - */ - inline void gcode_M149() { - if (code_seen('C')) { - set_input_temp_units(TEMPUNIT_C); - } else if (code_seen('K')) { - set_input_temp_units(TEMPUNIT_K); - } else if (code_seen('F')) { - set_input_temp_units(TEMPUNIT_F); - } - } -#endif - -#if HAS_POWER_SWITCH - - /** - * M80: Turn on Power Supply - */ - inline void gcode_M80() { - OUT_WRITE(PS_ON_PIN, PS_ON_AWAKE); //GND - - /** - * If you have a switch on suicide pin, this is useful - * if you want to start another print with suicide feature after - * a print without suicide... - */ - #if HAS_SUICIDE - OUT_WRITE(SUICIDE_PIN, HIGH); - #endif - - #if ENABLED(ULTIPANEL) - powersupply = true; - LCD_MESSAGEPGM(WELCOME_MSG); - lcd_update(); - #endif - } - -#endif // HAS_POWER_SWITCH - -/** - * M81: Turn off Power, including Power Supply, if there is one. - * - * This code should ALWAYS be available for EMERGENCY SHUTDOWN! - */ -inline void gcode_M81() { - thermalManager.disable_all_heaters(); - stepper.finish_and_disable(); - #if FAN_COUNT > 0 - #if FAN_COUNT > 1 - for (uint8_t i = 0; i < FAN_COUNT; i++) fanSpeeds[i] = 0; - #else - fanSpeeds[0] = 0; - #endif - #endif - delay(1000); // Wait 1 second before switching off - #if HAS_SUICIDE - stepper.synchronize(); - suicide(); - #elif HAS_POWER_SWITCH - OUT_WRITE(PS_ON_PIN, PS_ON_ASLEEP); - #endif - #if ENABLED(ULTIPANEL) - #if HAS_POWER_SWITCH - powersupply = false; - #endif - LCD_MESSAGEPGM(MACHINE_NAME " " MSG_OFF "."); - lcd_update(); - #endif -} - - -/** - * M82: Set E codes absolute (default) - */ -inline void gcode_M82() { axis_relative_modes[E_AXIS] = false; } - -/** - * M83: Set E codes relative while in Absolute Coordinates (G90) mode - */ -inline void gcode_M83() { axis_relative_modes[E_AXIS] = true; } - -/** - * M18, M84: Disable all stepper motors - */ -inline void gcode_M18_M84() { - if (code_seen('S')) { - stepper_inactive_time = code_value_millis_from_seconds(); - } - else { - bool all_axis = !((code_seen('X')) || (code_seen('Y')) || (code_seen('Z')) || (code_seen('E'))); - if (all_axis) { - stepper.finish_and_disable(); - } - else { - stepper.synchronize(); - if (code_seen('X')) disable_x(); - if (code_seen('Y')) disable_y(); - if (code_seen('Z')) disable_z(); - #if ((E0_ENABLE_PIN != X_ENABLE_PIN) && (E1_ENABLE_PIN != Y_ENABLE_PIN)) // Only enable on boards that have seperate ENABLE_PINS - if (code_seen('E')) { - disable_e0(); - disable_e1(); - disable_e2(); - disable_e3(); - } - #endif - } - } -} - -/** - * M85: Set inactivity shutdown timer with parameter S. To disable set zero (default) - */ -inline void gcode_M85() { - if (code_seen('S')) max_inactive_time = code_value_millis_from_seconds(); -} - -/** - * M92: Set axis steps-per-unit for one or more axes, X, Y, Z, and E. - * (Follows the same syntax as G92) - */ -inline void gcode_M92() { - LOOP_XYZE(i) { - if (code_seen(axis_codes[i])) { - if (i == E_AXIS) { - float value = code_value_per_axis_unit(i); - if (value < 20.0) { - float factor = planner.axis_steps_per_mm[i] / value; // increase e constants if M92 E14 is given for netfab. - planner.max_e_jerk *= factor; - planner.max_feedrate_mm_s[i] *= factor; - planner.max_acceleration_steps_per_s2[i] *= factor; - } - planner.axis_steps_per_mm[i] = value; - } - else { - planner.axis_steps_per_mm[i] = code_value_per_axis_unit(i); - } - } - } - planner.refresh_positioning(); -} - -/** - * Output the current position to serial - */ -static void report_current_position() { - SERIAL_PROTOCOLPGM("X:"); - SERIAL_PROTOCOL(current_position[X_AXIS]); - SERIAL_PROTOCOLPGM(" Y:"); - SERIAL_PROTOCOL(current_position[Y_AXIS]); - SERIAL_PROTOCOLPGM(" Z:"); - SERIAL_PROTOCOL(current_position[Z_AXIS]); - SERIAL_PROTOCOLPGM(" E:"); - SERIAL_PROTOCOL(current_position[E_AXIS]); - - stepper.report_positions(); - - #if ENABLED(SCARA) - SERIAL_PROTOCOLPGM("SCARA Theta:"); - SERIAL_PROTOCOL(delta[X_AXIS]); - SERIAL_PROTOCOLPGM(" Psi+Theta:"); - SERIAL_PROTOCOL(delta[Y_AXIS]); - SERIAL_EOL; - - SERIAL_PROTOCOLPGM("SCARA Cal - Theta:"); - SERIAL_PROTOCOL(delta[X_AXIS]); - SERIAL_PROTOCOLPGM(" Psi+Theta (90):"); - SERIAL_PROTOCOL(delta[Y_AXIS] - delta[X_AXIS] - 90); - SERIAL_EOL; - - SERIAL_PROTOCOLPGM("SCARA step Cal - Theta:"); - SERIAL_PROTOCOL(delta[X_AXIS] / 90 * planner.axis_steps_per_mm[X_AXIS]); - SERIAL_PROTOCOLPGM(" Psi+Theta:"); - SERIAL_PROTOCOL((delta[Y_AXIS] - delta[X_AXIS]) / 90 * planner.axis_steps_per_mm[Y_AXIS]); - SERIAL_EOL; SERIAL_EOL; - #endif -} - -/** - * M114: Output current position to serial port - */ -inline void gcode_M114() { report_current_position(); } - -/** - * M115: Capabilities string - */ -inline void gcode_M115() { - SERIAL_PROTOCOLPGM(MSG_M115_REPORT); -} - -/** - * M117: Set LCD Status Message - */ -inline void gcode_M117() { - lcd_setstatus(current_command_args); -} - -/** - * M119: Output endstop states to serial output - */ -inline void gcode_M119() { endstops.M119(); } - -/** - * M120: Enable endstops and set non-homing endstop state to "enabled" - */ -inline void gcode_M120() { endstops.enable_globally(true); } - -/** - * M121: Disable endstops and set non-homing endstop state to "disabled" - */ -inline void gcode_M121() { endstops.enable_globally(false); } - -#if ENABLED(BLINKM) - - /** - * M150: Set Status LED Color - Use R-U-B for R-G-B - */ - inline void gcode_M150() { - SendColors( - code_seen('R') ? code_value_byte() : 0, - code_seen('U') ? code_value_byte() : 0, - code_seen('B') ? code_value_byte() : 0 - ); - } - -#endif // BLINKM - -#if ENABLED(EXPERIMENTAL_I2CBUS) - - /** - * M155: Send data to a I2C slave device - * - * This is a PoC, the formating and arguments for the GCODE will - * change to be more compatible, the current proposal is: - * - * M155 A ; Sets the I2C slave address the data will be sent to - * - * M155 B - * M155 B - * M155 B - * - * M155 S1 ; Send the buffered data and reset the buffer - * M155 R1 ; Reset the buffer without sending data - * - */ - inline void gcode_M155() { - // Set the target address - if (code_seen('A')) - i2c.address(code_value_byte()); - - // Add a new byte to the buffer - else if (code_seen('B')) - i2c.addbyte(code_value_int()); - - // Flush the buffer to the bus - else if (code_seen('S')) i2c.send(); - - // Reset and rewind the buffer - else if (code_seen('R')) i2c.reset(); - } - - /** - * M156: Request X bytes from I2C slave device - * - * Usage: M156 A B - */ - inline void gcode_M156() { - uint8_t addr = code_seen('A') ? code_value_byte() : 0; - int bytes = code_seen('B') ? code_value_int() : 1; - - if (addr && bytes > 0 && bytes <= 32) { - i2c.address(addr); - i2c.reqbytes(bytes); - } - else { - SERIAL_ERROR_START; - SERIAL_ERRORLN("Bad i2c request"); - } - } - -#endif //EXPERIMENTAL_I2CBUS - -/** - * M200: Set filament diameter and set E axis units to cubic units - * - * T - Optional extruder number. Current extruder if omitted. - * D - Diameter of the filament. Use "D0" to switch back to linear units on the E axis. - */ -inline void gcode_M200() { - - if (get_target_extruder_from_command(200)) return; - - if (code_seen('D')) { - // setting any extruder filament size disables volumetric on the assumption that - // slicers either generate in extruder values as cubic mm or as as filament feeds - // for all extruders - volumetric_enabled = (code_value_linear_units() != 0.0); - if (volumetric_enabled) { - filament_size[target_extruder] = code_value_linear_units(); - // make sure all extruders have some sane value for the filament size - for (uint8_t i = 0; i < COUNT(filament_size); i++) - if (! filament_size[i]) filament_size[i] = DEFAULT_NOMINAL_FILAMENT_DIA; - } - } - else { - //reserved for setting filament diameter via UFID or filament measuring device - return; - } - calculate_volumetric_multipliers(); -} - -/** - * M201: Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) - */ -inline void gcode_M201() { - LOOP_XYZE(i) { - if (code_seen(axis_codes[i])) { - planner.max_acceleration_mm_per_s2[i] = code_value_axis_units(i); - } - } - // steps per sq second need to be updated to agree with the units per sq second (as they are what is used in the planner) - planner.reset_acceleration_rates(); -} - -#if 0 // Not used for Sprinter/grbl gen6 - inline void gcode_M202() { - LOOP_XYZE(i) { - if (code_seen(axis_codes[i])) axis_travel_steps_per_sqr_second[i] = code_value_axis_units(i) * planner.axis_steps_per_mm[i]; - } - } -#endif - - -/** - * M203: Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in units/sec - */ -inline void gcode_M203() { - LOOP_XYZE(i) - if (code_seen(axis_codes[i])) - planner.max_feedrate_mm_s[i] = code_value_axis_units(i); -} - -/** - * M204: Set Accelerations in units/sec^2 (M204 P1200 R3000 T3000) - * - * P = Printing moves - * R = Retract only (no X, Y, Z) moves - * T = Travel (non printing) moves - * - * Also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate - */ -inline void gcode_M204() { - if (code_seen('S')) { // Kept for legacy compatibility. Should NOT BE USED for new developments. - planner.travel_acceleration = planner.acceleration = code_value_linear_units(); - SERIAL_ECHOPAIR("Setting Print and Travel Acceleration: ", planner.acceleration); - SERIAL_EOL; - } - if (code_seen('P')) { - planner.acceleration = code_value_linear_units(); - SERIAL_ECHOPAIR("Setting Print Acceleration: ", planner.acceleration); - SERIAL_EOL; - } - if (code_seen('R')) { - planner.retract_acceleration = code_value_linear_units(); - SERIAL_ECHOPAIR("Setting Retract Acceleration: ", planner.retract_acceleration); - SERIAL_EOL; - } - if (code_seen('T')) { - planner.travel_acceleration = code_value_linear_units(); - SERIAL_ECHOPAIR("Setting Travel Acceleration: ", planner.travel_acceleration); - SERIAL_EOL; - } -} - -/** - * M205: Set Advanced Settings - * - * S = Min Feed Rate (units/s) - * T = Min Travel Feed Rate (units/s) - * B = Min Segment Time (µs) - * X = Max XY Jerk (units/sec^2) - * Z = Max Z Jerk (units/sec^2) - * E = Max E Jerk (units/sec^2) - */ -inline void gcode_M205() { - if (code_seen('S')) planner.min_feedrate_mm_s = code_value_linear_units(); - if (code_seen('T')) planner.min_travel_feedrate_mm_s = code_value_linear_units(); - if (code_seen('B')) planner.min_segment_time = code_value_millis(); - if (code_seen('X')) planner.max_xy_jerk = code_value_linear_units(); - if (code_seen('Z')) planner.max_z_jerk = code_value_axis_units(Z_AXIS); - if (code_seen('E')) planner.max_e_jerk = code_value_axis_units(E_AXIS); -} - -/** - * M206: Set Additional Homing Offset (X Y Z). SCARA aliases T=X, P=Y - */ -inline void gcode_M206() { - LOOP_XYZ(i) - if (code_seen(axis_codes[i])) - set_home_offset((AxisEnum)i, code_value_axis_units(i)); - - #if ENABLED(SCARA) - if (code_seen('T')) set_home_offset(X_AXIS, code_value_axis_units(X_AXIS)); // Theta - if (code_seen('P')) set_home_offset(Y_AXIS, code_value_axis_units(Y_AXIS)); // Psi - #endif - - SYNC_PLAN_POSITION_KINEMATIC(); - report_current_position(); -} - -#if ENABLED(DELTA) - /** - * M665: Set delta configurations - * - * L = diagonal rod - * R = delta radius - * S = segments per second - * A = Alpha (Tower 1) diagonal rod trim - * B = Beta (Tower 2) diagonal rod trim - * C = Gamma (Tower 3) diagonal rod trim - */ - inline void gcode_M665() { - if (code_seen('L')) delta_diagonal_rod = code_value_linear_units(); - if (code_seen('R')) delta_radius = code_value_linear_units(); - if (code_seen('S')) delta_segments_per_second = code_value_float(); - if (code_seen('A')) delta_diagonal_rod_trim_tower_1 = code_value_linear_units(); - if (code_seen('B')) delta_diagonal_rod_trim_tower_2 = code_value_linear_units(); - if (code_seen('C')) delta_diagonal_rod_trim_tower_3 = code_value_linear_units(); - recalc_delta_settings(delta_radius, delta_diagonal_rod); - } - /** - * M666: Set delta endstop adjustment - */ - inline void gcode_M666() { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOLNPGM(">>> gcode_M666"); - } - #endif - LOOP_XYZ(i) { - if (code_seen(axis_codes[i])) { - endstop_adj[i] = code_value_axis_units(i); - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPGM("endstop_adj["); - SERIAL_ECHO(axis_codes[i]); - SERIAL_ECHOPAIR("] = ", endstop_adj[i]); - SERIAL_EOL; - } - #endif - } - } - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOLNPGM("<<< gcode_M666"); - } - #endif - } - -#elif ENABLED(Z_DUAL_ENDSTOPS) // !DELTA && ENABLED(Z_DUAL_ENDSTOPS) - - /** - * M666: For Z Dual Endstop setup, set z axis offset to the z2 axis. - */ - inline void gcode_M666() { - if (code_seen('Z')) z_endstop_adj = code_value_axis_units(Z_AXIS); - SERIAL_ECHOPAIR("Z Endstop Adjustment set to (mm):", z_endstop_adj); - SERIAL_EOL; - } - -#endif // !DELTA && Z_DUAL_ENDSTOPS - -#if ENABLED(FWRETRACT) - - /** - * M207: Set firmware retraction values - * - * S[+units] retract_length - * W[+units] retract_length_swap (multi-extruder) - * F[units/min] retract_feedrate_mm_s - * Z[units] retract_zlift - */ - inline void gcode_M207() { - if (code_seen('S')) retract_length = code_value_axis_units(E_AXIS); - if (code_seen('F')) retract_feedrate_mm_s = MMM_TO_MMS(code_value_axis_units(E_AXIS)); - if (code_seen('Z')) retract_zlift = code_value_axis_units(Z_AXIS); - #if EXTRUDERS > 1 - if (code_seen('W')) retract_length_swap = code_value_axis_units(E_AXIS); - #endif - } - - /** - * M208: Set firmware un-retraction values - * - * S[+units] retract_recover_length (in addition to M207 S*) - * W[+units] retract_recover_length_swap (multi-extruder) - * F[units/min] retract_recover_feedrate_mm_s - */ - inline void gcode_M208() { - if (code_seen('S')) retract_recover_length = code_value_axis_units(E_AXIS); - if (code_seen('F')) retract_recover_feedrate_mm_s = MMM_TO_MMS(code_value_axis_units(E_AXIS)); - #if EXTRUDERS > 1 - if (code_seen('W')) retract_recover_length_swap = code_value_axis_units(E_AXIS); - #endif - } - - /** - * M209: Enable automatic retract (M209 S1) - * detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction. - */ - inline void gcode_M209() { - if (code_seen('S')) { - int t = code_value_int(); - switch (t) { - case 0: - autoretract_enabled = false; - break; - case 1: - autoretract_enabled = true; - break; - default: - unknown_command_error(); - return; - } - for (int i = 0; i < EXTRUDERS; i++) retracted[i] = false; - } - } - -#endif // FWRETRACT - -#if HOTENDS > 1 - - /** - * M218 - set hotend offset (in linear units) - * - * T - * X - * Y - * Z - Available with DUAL_X_CARRIAGE and SWITCHING_EXTRUDER - */ - inline void gcode_M218() { - if (get_target_extruder_from_command(218)) return; - - if (code_seen('X')) hotend_offset[X_AXIS][target_extruder] = code_value_axis_units(X_AXIS); - if (code_seen('Y')) hotend_offset[Y_AXIS][target_extruder] = code_value_axis_units(Y_AXIS); - - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_EXTRUDER) - if (code_seen('Z')) hotend_offset[Z_AXIS][target_extruder] = code_value_axis_units(Z_AXIS); - #endif - - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_HOTEND_OFFSET); - HOTEND_LOOP() { - SERIAL_CHAR(' '); - SERIAL_ECHO(hotend_offset[X_AXIS][e]); - SERIAL_CHAR(','); - SERIAL_ECHO(hotend_offset[Y_AXIS][e]); - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_EXTRUDER) - SERIAL_CHAR(','); - SERIAL_ECHO(hotend_offset[Z_AXIS][e]); - #endif - } - SERIAL_EOL; - } - -#endif // HOTENDS > 1 - -/** - * M220: Set speed percentage factor, aka "Feed Rate" (M220 S95) - */ -inline void gcode_M220() { - if (code_seen('S')) feedrate_percentage = code_value_int(); -} - -/** - * M221: Set extrusion percentage (M221 T0 S95) - */ -inline void gcode_M221() { - if (get_target_extruder_from_command(221)) return; - if (code_seen('S')) - extruder_multiplier[target_extruder] = code_value_int(); -} - -/** - * M226: Wait until the specified pin reaches the state required (M226 P S) - */ -inline void gcode_M226() { - if (code_seen('P')) { - int pin_number = code_value_int(); - - int pin_state = code_seen('S') ? code_value_int() : -1; // required pin state - default is inverted - - if (pin_state >= -1 && pin_state <= 1) { - - for (uint8_t i = 0; i < COUNT(sensitive_pins); i++) { - if (sensitive_pins[i] == pin_number) { - pin_number = -1; - break; - } - } - - if (pin_number > -1) { - int target = LOW; - - stepper.synchronize(); - - pinMode(pin_number, INPUT); - - switch (pin_state) { - case 1: - target = HIGH; - break; - - case 0: - target = LOW; - break; - - case -1: - target = !digitalRead(pin_number); - break; - } - - while (digitalRead(pin_number) != target) idle(); - - } // pin_number > -1 - } // pin_state -1 0 1 - } // code_seen('P') -} - -#if HAS_SERVOS - - /** - * M280: Get or set servo position. P [S] - */ - inline void gcode_M280() { - if (!code_seen('P')) return; - int servo_index = code_value_int(); - if (servo_index >= 0 && servo_index < NUM_SERVOS) { - if (code_seen('S')) - MOVE_SERVO(servo_index, code_value_int()); - else { - SERIAL_ECHO_START; - SERIAL_ECHOPGM(" Servo "); - SERIAL_ECHO(servo_index); - SERIAL_ECHOPGM(": "); - SERIAL_ECHOLN(servo[servo_index].read()); - } - } - else { - SERIAL_ERROR_START; - SERIAL_ERROR("Servo "); - SERIAL_ERROR(servo_index); - SERIAL_ERRORLN(" out of range"); - } - } - -#endif // HAS_SERVOS - -#if HAS_BUZZER - - /** - * M300: Play beep sound S P - */ - inline void gcode_M300() { - uint16_t const frequency = code_seen('S') ? code_value_ushort() : 260; - uint16_t duration = code_seen('P') ? code_value_ushort() : 1000; - - // Limits the tone duration to 0-5 seconds. - NOMORE(duration, 5000); -#ifdef UARM_SWIFT - swift_buzzer.tone(duration, frequency); -#else - BUZZ(duration, frequency); -#endif - } - -#endif // HAS_BUZZER - -#if ENABLED(PIDTEMP) - - /** - * M301: Set PID parameters P I D (and optionally C, L) - * - * P[float] Kp term - * I[float] Ki term (unscaled) - * D[float] Kd term (unscaled) - * - * With PID_EXTRUSION_SCALING: - * - * C[float] Kc term - * L[float] LPQ length - */ - inline void gcode_M301() { - - // multi-extruder PID patch: M301 updates or prints a single extruder's PID values - // default behaviour (omitting E parameter) is to update for extruder 0 only - int e = code_seen('E') ? code_value_int() : 0; // extruder being updated - - if (e < HOTENDS) { // catch bad input value - if (code_seen('P')) PID_PARAM(Kp, e) = code_value_float(); - if (code_seen('I')) PID_PARAM(Ki, e) = scalePID_i(code_value_float()); - if (code_seen('D')) PID_PARAM(Kd, e) = scalePID_d(code_value_float()); - #if ENABLED(PID_EXTRUSION_SCALING) - if (code_seen('C')) PID_PARAM(Kc, e) = code_value_float(); - if (code_seen('L')) lpq_len = code_value_float(); - NOMORE(lpq_len, LPQ_MAX_LEN); - #endif - - thermalManager.updatePID(); - SERIAL_ECHO_START; - #if ENABLED(PID_PARAMS_PER_HOTEND) - SERIAL_ECHOPGM(" e:"); // specify extruder in serial output - SERIAL_ECHO(e); - #endif // PID_PARAMS_PER_HOTEND - SERIAL_ECHOPGM(" p:"); - SERIAL_ECHO(PID_PARAM(Kp, e)); - SERIAL_ECHOPGM(" i:"); - SERIAL_ECHO(unscalePID_i(PID_PARAM(Ki, e))); - SERIAL_ECHOPGM(" d:"); - SERIAL_ECHO(unscalePID_d(PID_PARAM(Kd, e))); - #if ENABLED(PID_EXTRUSION_SCALING) - SERIAL_ECHOPGM(" c:"); - //Kc does not have scaling applied above, or in resetting defaults - SERIAL_ECHO(PID_PARAM(Kc, e)); - #endif - SERIAL_EOL; - } - else { - SERIAL_ERROR_START; - SERIAL_ERRORLN(MSG_INVALID_EXTRUDER); - } - } - -#endif // PIDTEMP - -#if ENABLED(PIDTEMPBED) - - inline void gcode_M304() { - if (code_seen('P')) thermalManager.bedKp = code_value_float(); - if (code_seen('I')) thermalManager.bedKi = scalePID_i(code_value_float()); - if (code_seen('D')) thermalManager.bedKd = scalePID_d(code_value_float()); - - thermalManager.updatePID(); - - SERIAL_ECHO_START; - SERIAL_ECHOPGM(" p:"); - SERIAL_ECHO(thermalManager.bedKp); - SERIAL_ECHOPGM(" i:"); - SERIAL_ECHO(unscalePID_i(thermalManager.bedKi)); - SERIAL_ECHOPGM(" d:"); - SERIAL_ECHOLN(unscalePID_d(thermalManager.bedKd)); - } - -#endif // PIDTEMPBED - -#if defined(CHDK) || HAS_PHOTOGRAPH - - /** - * M240: Trigger a camera by emulating a Canon RC-1 - * See http://www.doc-diy.net/photo/rc-1_hacked/ - */ - inline void gcode_M240() { - #ifdef CHDK - - OUT_WRITE(CHDK, HIGH); - chdkHigh = millis(); - chdkActive = true; - - #elif HAS_PHOTOGRAPH - - const uint8_t NUM_PULSES = 16; - const float PULSE_LENGTH = 0.01524; - for (int i = 0; i < NUM_PULSES; i++) { - WRITE(PHOTOGRAPH_PIN, HIGH); - _delay_ms(PULSE_LENGTH); - WRITE(PHOTOGRAPH_PIN, LOW); - _delay_ms(PULSE_LENGTH); - } - delay(7.33); - for (int i = 0; i < NUM_PULSES; i++) { - WRITE(PHOTOGRAPH_PIN, HIGH); - _delay_ms(PULSE_LENGTH); - WRITE(PHOTOGRAPH_PIN, LOW); - _delay_ms(PULSE_LENGTH); - } - - #endif // !CHDK && HAS_PHOTOGRAPH - } - -#endif // CHDK || PHOTOGRAPH_PIN - -#if HAS_LCD_CONTRAST - - /** - * M250: Read and optionally set the LCD contrast - */ - inline void gcode_M250() { - if (code_seen('C')) set_lcd_contrast(code_value_int()); - SERIAL_PROTOCOLPGM("lcd contrast value: "); - SERIAL_PROTOCOL(lcd_contrast); - SERIAL_EOL; - } - -#endif // HAS_LCD_CONTRAST - -#if ENABLED(PREVENT_DANGEROUS_EXTRUDE) - - /** - * M302: Allow cold extrudes, or set the minimum extrude temperature - * - * S sets the minimum extrude temperature - * P enables (1) or disables (0) cold extrusion - * - * Examples: - * - * M302 ; report current cold extrusion state - * M302 P0 ; enable cold extrusion checking - * M302 P1 ; disables cold extrusion checking - * M302 S0 ; always allow extrusion (disables checking) - * M302 S170 ; only allow extrusion above 170 - * M302 S170 P1 ; set min extrude temp to 170 but leave disabled - */ - inline void gcode_M302() { - bool seen_S = code_seen('S'); - if (seen_S) { - thermalManager.extrude_min_temp = code_value_temp_abs(); - thermalManager.allow_cold_extrude = (thermalManager.extrude_min_temp == 0); - } - - if (code_seen('P')) - thermalManager.allow_cold_extrude = (thermalManager.extrude_min_temp == 0) || code_value_bool(); - else if (!seen_S) { - // Report current state - SERIAL_ECHO_START; - SERIAL_ECHOPAIR("Cold extrudes are ", (thermalManager.allow_cold_extrude ? "en" : "dis")); - SERIAL_ECHOPAIR("abled (min temp ", int(thermalManager.extrude_min_temp + 0.5)); - SERIAL_ECHOLNPGM("C)"); - } - } - -#endif // PREVENT_DANGEROUS_EXTRUDE - -/** - * M303: PID relay autotune - * - * S sets the target temperature. (default 150C) - * E (-1 for the bed) (default 0) - * C - * U with a non-zero value will apply the result to current settings - */ -inline void gcode_M303() { - #if HAS_PID_HEATING - int e = code_seen('E') ? code_value_int() : 0; - int c = code_seen('C') ? code_value_int() : 5; - bool u = code_seen('U') && code_value_bool(); - - float temp = code_seen('S') ? code_value_temp_abs() : (e < 0 ? 70.0 : 150.0); - - if (e >= 0 && e < HOTENDS) - target_extruder = e; - - KEEPALIVE_STATE(NOT_BUSY); // don't send "busy: processing" messages during autotune output - - thermalManager.PID_autotune(temp, e, c, u); - - KEEPALIVE_STATE(IN_HANDLER); - #else - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_M303_DISABLED); - #endif -} - -#if ENABLED(SCARA) - bool SCARA_move_to_cal(uint8_t delta_x, uint8_t delta_y) { - //SoftEndsEnabled = false; // Ignore soft endstops during calibration - //SERIAL_ECHOLNPGM(" Soft endstops disabled"); - if (IsRunning()) { - //gcode_get_destination(); // For X Y Z E F - delta[X_AXIS] = delta_x; - delta[Y_AXIS] = delta_y; - forward_kinematics_SCARA(delta); - destination[X_AXIS] = delta[X_AXIS] / axis_scaling[X_AXIS]; - destination[Y_AXIS] = delta[Y_AXIS] / axis_scaling[Y_AXIS]; - prepare_move_to_destination(); - //ok_to_send(); - return true; - } - return false; - } - - /** - * M360: SCARA calibration: Move to cal-position ThetaA (0 deg calibration) - */ - inline bool gcode_M360() { - SERIAL_ECHOLNPGM(" Cal: Theta 0"); - return SCARA_move_to_cal(0, 120); - } - - /** - * M361: SCARA calibration: Move to cal-position ThetaB (90 deg calibration - steps per degree) - */ - inline bool gcode_M361() { - SERIAL_ECHOLNPGM(" Cal: Theta 90"); - return SCARA_move_to_cal(90, 130); - } - - /** - * M362: SCARA calibration: Move to cal-position PsiA (0 deg calibration) - */ - inline bool gcode_M362() { - SERIAL_ECHOLNPGM(" Cal: Psi 0"); - return SCARA_move_to_cal(60, 180); - } - - /** - * M363: SCARA calibration: Move to cal-position PsiB (90 deg calibration - steps per degree) - */ - inline bool gcode_M363() { - SERIAL_ECHOLNPGM(" Cal: Psi 90"); - return SCARA_move_to_cal(50, 90); - } - - /** - * M364: SCARA calibration: Move to cal-position PSIC (90 deg to Theta calibration position) - */ - inline bool gcode_M364() { - SERIAL_ECHOLNPGM(" Cal: Theta-Psi 90"); - return SCARA_move_to_cal(45, 135); - } - - /** - * M365: SCARA calibration: Scaling factor, X, Y, Z axis - */ - inline void gcode_M365() { - LOOP_XYZ(i) - if (code_seen(axis_codes[i])) - axis_scaling[i] = code_value_float(); - } - -#endif // SCARA - -#if ENABLED(EXT_SOLENOID) - - void enable_solenoid(uint8_t num) { - switch (num) { - case 0: - OUT_WRITE(SOL0_PIN, HIGH); - break; - #if HAS_SOLENOID_1 - case 1: - OUT_WRITE(SOL1_PIN, HIGH); - break; - #endif - #if HAS_SOLENOID_2 - case 2: - OUT_WRITE(SOL2_PIN, HIGH); - break; - #endif - #if HAS_SOLENOID_3 - case 3: - OUT_WRITE(SOL3_PIN, HIGH); - break; - #endif - default: - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_INVALID_SOLENOID); - break; - } - } - - void enable_solenoid_on_active_extruder() { enable_solenoid(active_extruder); } - - void disable_all_solenoids() { - OUT_WRITE(SOL0_PIN, LOW); - OUT_WRITE(SOL1_PIN, LOW); - OUT_WRITE(SOL2_PIN, LOW); - OUT_WRITE(SOL3_PIN, LOW); - } - - /** - * M380: Enable solenoid on the active extruder - */ - inline void gcode_M380() { enable_solenoid_on_active_extruder(); } - - /** - * M381: Disable all solenoids - */ - inline void gcode_M381() { disable_all_solenoids(); } - -#endif // EXT_SOLENOID - -/** - * M400: Finish all moves - */ -inline void gcode_M400() { stepper.synchronize(); } - -#if HAS_BED_PROBE - - /** - * M401: Engage Z Servo endstop if available - */ - inline void gcode_M401() { DEPLOY_PROBE(); } - - /** - * M402: Retract Z Servo endstop if enabled - */ - inline void gcode_M402() { STOW_PROBE(); } - -#endif // HAS_BED_PROBE - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - - /** - * M404: Display or set (in current units) the nominal filament width (3mm, 1.75mm ) W<3.0> - */ - inline void gcode_M404() { - if (code_seen('W')) { - filament_width_nominal = code_value_linear_units(); - } - else { - SERIAL_PROTOCOLPGM("Filament dia (nominal mm):"); - SERIAL_PROTOCOLLN(filament_width_nominal); - } - } - - /** - * M405: Turn on filament sensor for control - */ - inline void gcode_M405() { - // This is technically a linear measurement, but since it's quantized to centimeters and is a different unit than - // everything else, it uses code_value_int() instead of code_value_linear_units(). - if (code_seen('D')) meas_delay_cm = code_value_int(); - NOMORE(meas_delay_cm, MAX_MEASUREMENT_DELAY); - - if (filwidth_delay_index2 == -1) { // Initialize the ring buffer if not done since startup - int temp_ratio = thermalManager.widthFil_to_size_ratio(); - - for (uint8_t i = 0; i < COUNT(measurement_delay); ++i) - measurement_delay[i] = temp_ratio - 100; // Subtract 100 to scale within a signed byte - - filwidth_delay_index1 = filwidth_delay_index2 = 0; - } - - filament_sensor = true; - - //SERIAL_PROTOCOLPGM("Filament dia (measured mm):"); - //SERIAL_PROTOCOL(filament_width_meas); - //SERIAL_PROTOCOLPGM("Extrusion ratio(%):"); - //SERIAL_PROTOCOL(extruder_multiplier[active_extruder]); - } - - /** - * M406: Turn off filament sensor for control - */ - inline void gcode_M406() { filament_sensor = false; } - - /** - * M407: Get measured filament diameter on serial output - */ - inline void gcode_M407() { - SERIAL_PROTOCOLPGM("Filament dia (measured mm):"); - SERIAL_PROTOCOLLN(filament_width_meas); - } - -#endif // FILAMENT_WIDTH_SENSOR - -void quickstop_stepper() { - stepper.quick_stop(); - #if DISABLED(SCARA) - stepper.synchronize(); - LOOP_XYZ(i) set_current_from_steppers_for_axis((AxisEnum)i); - SYNC_PLAN_POSITION_KINEMATIC(); - #endif -} - -#if ENABLED(MESH_BED_LEVELING) - - /** - * M420: Enable/Disable Mesh Bed Leveling - */ - inline void gcode_M420() { if (code_seen('S') && code_has_value()) mbl.set_has_mesh(code_value_bool()); } - - /** - * M421: Set a single Mesh Bed Leveling Z coordinate - * Use either 'M421 X Y Z' or 'M421 I J Z' - */ - inline void gcode_M421() { - int8_t px = 0, py = 0; - float z = 0; - bool hasX, hasY, hasZ, hasI, hasJ; - if ((hasX = code_seen('X'))) px = mbl.probe_index_x(code_value_axis_units(X_AXIS)); - if ((hasY = code_seen('Y'))) py = mbl.probe_index_y(code_value_axis_units(Y_AXIS)); - if ((hasI = code_seen('I'))) px = code_value_axis_units(X_AXIS); - if ((hasJ = code_seen('J'))) py = code_value_axis_units(Y_AXIS); - if ((hasZ = code_seen('Z'))) z = code_value_axis_units(Z_AXIS); - - if (hasX && hasY && hasZ) { - - if (px >= 0 && py >= 0) - mbl.set_z(px, py, z); - else { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_MESH_XY); - } - } - else if (hasI && hasJ && hasZ) { - if (px >= 0 && px < MESH_NUM_X_POINTS && py >= 0 && py < MESH_NUM_Y_POINTS) - mbl.set_z(px, py, z); - else { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_MESH_XY); - } - } - else { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_M421_PARAMETERS); - } - } - -#endif - -/** - * M428: Set home_offset based on the distance between the - * current_position and the nearest "reference point." - * If an axis is past center its endstop position - * is the reference-point. Otherwise it uses 0. This allows - * the Z offset to be set near the bed when using a max endstop. - * - * M428 can't be used more than 2cm away from 0 or an endstop. - * - * Use M206 to set these values directly. - */ -inline void gcode_M428() { - bool err = false; - LOOP_XYZ(i) { - if (axis_homed[i]) { - float base = (current_position[i] > (sw_endstop_min[i] + sw_endstop_max[i]) * 0.5) ? base_home_pos(i) : 0, - diff = current_position[i] - LOGICAL_POSITION(base, i); - if (diff > -20 && diff < 20) { - set_home_offset((AxisEnum)i, home_offset[i] - diff); - } - else { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_M428_TOO_FAR); - LCD_ALERTMESSAGEPGM("Err: Too far!"); - BUZZ(200, 40); - err = true; - break; - } - } - } - - if (!err) { - SYNC_PLAN_POSITION_KINEMATIC(); - report_current_position(); - LCD_MESSAGEPGM(MSG_HOME_OFFSETS_APPLIED); - BUZZ(200, 659); - BUZZ(200, 698); - } -} - -/** - * M500: Store settings in EEPROM - */ -inline void gcode_M500() { - Config_StoreSettings(); -} - -/** - * M501: Read settings from EEPROM - */ -inline void gcode_M501() { - Config_RetrieveSettings(); -} - -/** - * M502: Revert to default settings - */ -inline void gcode_M502() { - Config_ResetDefault(); -} - -/** - * M503: print settings currently in memory - */ -inline void gcode_M503() { - Config_PrintSettings(code_seen('S') && !code_value_bool()); -} - -#if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) - - /** - * M540: Set whether SD card print should abort on endstop hit (M540 S<0|1>) - */ - inline void gcode_M540() { - if (code_seen('S')) stepper.abort_on_endstop_hit = code_value_bool(); - } - -#endif // ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#if HAS_BED_PROBE - - inline void gcode_M851() { - - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_ZPROBE_ZOFFSET); - SERIAL_CHAR(' '); - - if (code_seen('Z')) { - float value = code_value_axis_units(Z_AXIS); - if (Z_PROBE_OFFSET_RANGE_MIN <= value && value <= Z_PROBE_OFFSET_RANGE_MAX) { - zprobe_zoffset = value; - SERIAL_ECHO(zprobe_zoffset); - } - else { - SERIAL_ECHOPGM(MSG_Z_MIN); - SERIAL_ECHO(Z_PROBE_OFFSET_RANGE_MIN); - SERIAL_CHAR(' '); - SERIAL_ECHOPGM(MSG_Z_MAX); - SERIAL_ECHO(Z_PROBE_OFFSET_RANGE_MAX); - } - } - else { - SERIAL_ECHOPAIR(": ", zprobe_zoffset); - } - - SERIAL_EOL; - } - -#endif // HAS_BED_PROBE - -#if ENABLED(FILAMENT_CHANGE_FEATURE) - - /** - * M600: Pause for filament change - * - * E[distance] - Retract the filament this far (negative value) - * Z[distance] - Move the Z axis by this distance - * X[position] - Move to this X position, with Y - * Y[position] - Move to this Y position, with X - * L[distance] - Retract distance for removal (manual reload) - * - * Default values are used for omitted arguments. - * - */ - inline void gcode_M600() { - - if (thermalManager.tooColdToExtrude(active_extruder)) { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600); - return; - } - - // Show initial message and wait for synchronize steppers - lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INIT); - stepper.synchronize(); - - float lastpos[NUM_AXIS]; - - // Save current position of all axes - LOOP_XYZE(i) - lastpos[i] = destination[i] = current_position[i]; - - // Define runplan for move axes - #if ENABLED(DELTA) - #define RUNPLAN(RATE_MM_S) inverse_kinematics(destination); \ - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], RATE_MM_S, active_extruder); - #else - #define RUNPLAN(RATE_MM_S) line_to_destination(MMS_TO_MMM(RATE_MM_S)); - #endif - - KEEPALIVE_STATE(IN_HANDLER); - - // Initial retract before move to filament change position - if (code_seen('E')) destination[E_AXIS] += code_value_axis_units(E_AXIS); - #if defined(FILAMENT_CHANGE_RETRACT_LENGTH) && FILAMENT_CHANGE_RETRACT_LENGTH > 0 - else destination[E_AXIS] -= FILAMENT_CHANGE_RETRACT_LENGTH; - #endif - - RUNPLAN(FILAMENT_CHANGE_RETRACT_FEEDRATE); - - // Lift Z axis - float z_lift = code_seen('Z') ? code_value_axis_units(Z_AXIS) : - #if defined(FILAMENT_CHANGE_Z_ADD) && FILAMENT_CHANGE_Z_ADD > 0 - FILAMENT_CHANGE_Z_ADD - #else - 0 - #endif - ; - - if (z_lift > 0) { - destination[Z_AXIS] += z_lift; - NOMORE(destination[Z_AXIS], Z_MAX_POS); - RUNPLAN(FILAMENT_CHANGE_Z_FEEDRATE); - } - - // Move XY axes to filament exchange position - if (code_seen('X')) destination[X_AXIS] = code_value_axis_units(X_AXIS); - #ifdef FILAMENT_CHANGE_X_POS - else destination[X_AXIS] = FILAMENT_CHANGE_X_POS; - #endif - - if (code_seen('Y')) destination[Y_AXIS] = code_value_axis_units(Y_AXIS); - #ifdef FILAMENT_CHANGE_Y_POS - else destination[Y_AXIS] = FILAMENT_CHANGE_Y_POS; - #endif - - RUNPLAN(FILAMENT_CHANGE_XY_FEEDRATE); - - stepper.synchronize(); - lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_UNLOAD); - - // Unload filament - if (code_seen('L')) destination[E_AXIS] += code_value_axis_units(E_AXIS); - #if defined(FILAMENT_CHANGE_UNLOAD_LENGTH) && FILAMENT_CHANGE_UNLOAD_LENGTH > 0 - else destination[E_AXIS] -= FILAMENT_CHANGE_UNLOAD_LENGTH; - #endif - - RUNPLAN(FILAMENT_CHANGE_UNLOAD_FEEDRATE); - - // Synchronize steppers and then disable extruders steppers for manual filament changing - stepper.synchronize(); - disable_e0(); - disable_e1(); - disable_e2(); - disable_e3(); - delay(100); - - #if HAS_BUZZER - millis_t next_tick = 0; - #endif - - // Wait for filament insert by user and press button - lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_INSERT); - - while (!lcd_clicked()) { - #if HAS_BUZZER - millis_t ms = millis(); - if (ms >= next_tick) { - BUZZ(300, 2000); - next_tick = ms + 2500; // Beep every 2.5s while waiting - } - #endif - idle(true); - } - delay(100); - while (lcd_clicked()) idle(true); - delay(100); - - // Show load message - lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_LOAD); - - // Load filament - if (code_seen('L')) destination[E_AXIS] -= code_value_axis_units(E_AXIS); - #if defined(FILAMENT_CHANGE_LOAD_LENGTH) && FILAMENT_CHANGE_LOAD_LENGTH > 0 - else destination[E_AXIS] += FILAMENT_CHANGE_LOAD_LENGTH; - #endif - - RUNPLAN(FILAMENT_CHANGE_LOAD_FEEDRATE); - stepper.synchronize(); - - #if defined(FILAMENT_CHANGE_EXTRUDE_LENGTH) && FILAMENT_CHANGE_EXTRUDE_LENGTH > 0 - do { - // Extrude filament to get into hotend - lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_EXTRUDE); - destination[E_AXIS] += FILAMENT_CHANGE_EXTRUDE_LENGTH; - RUNPLAN(FILAMENT_CHANGE_EXTRUDE_FEEDRATE); - stepper.synchronize(); - // Ask user if more filament should be extruded - KEEPALIVE_STATE(PAUSED_FOR_USER); - lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_OPTION); - while (filament_change_menu_response == FILAMENT_CHANGE_RESPONSE_WAIT_FOR) idle(true); - KEEPALIVE_STATE(IN_HANDLER); - } while (filament_change_menu_response != FILAMENT_CHANGE_RESPONSE_RESUME_PRINT); - #endif - - lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_RESUME); - - KEEPALIVE_STATE(IN_HANDLER); - - // Set extruder to saved position - current_position[E_AXIS] = lastpos[E_AXIS]; - destination[E_AXIS] = lastpos[E_AXIS]; - planner.set_e_position_mm(current_position[E_AXIS]); - - #if ENABLED(DELTA) - // Move XYZ to starting position, then E - inverse_kinematics(lastpos); - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], FILAMENT_CHANGE_XY_FEEDRATE, active_extruder); - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], lastpos[E_AXIS], FILAMENT_CHANGE_XY_FEEDRATE, active_extruder); - #else - // Move XY to starting position, then Z, then E - destination[X_AXIS] = lastpos[X_AXIS]; - destination[Y_AXIS] = lastpos[Y_AXIS]; - RUNPLAN(FILAMENT_CHANGE_XY_FEEDRATE); - destination[Z_AXIS] = lastpos[Z_AXIS]; - RUNPLAN(FILAMENT_CHANGE_Z_FEEDRATE); - #endif - stepper.synchronize(); - - #if ENABLED(FILAMENT_RUNOUT_SENSOR) - filament_ran_out = false; - #endif - - // Show status screen - lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_STATUS); - } - -#endif // FILAMENT_CHANGE_FEATURE - -#if ENABLED(DUAL_X_CARRIAGE) - - /** - * M605: Set dual x-carriage movement mode - * - * M605 S0: Full control mode. The slicer has full control over x-carriage movement - * M605 S1: Auto-park mode. The inactive head will auto park/unpark without slicer involvement - * M605 S2 [Xnnn] [Rmmm]: Duplication mode. The second extruder will duplicate the first with nnn - * units x-offset and an optional differential hotend temperature of - * mmm degrees. E.g., with "M605 S2 X100 R2" the second extruder will duplicate - * the first with a spacing of 100mm in the x direction and 2 degrees hotter. - * - * Note: the X axis should be homed after changing dual x-carriage mode. - */ - inline void gcode_M605() { - stepper.synchronize(); - if (code_seen('S')) dual_x_carriage_mode = code_value_byte(); - switch (dual_x_carriage_mode) { - case DXC_DUPLICATION_MODE: - if (code_seen('X')) duplicate_extruder_x_offset = max(code_value_axis_units(X_AXIS), X2_MIN_POS - x_home_pos(0)); - if (code_seen('R')) duplicate_extruder_temp_offset = code_value_temp_diff(); - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_HOTEND_OFFSET); - SERIAL_CHAR(' '); - SERIAL_ECHO(hotend_offset[X_AXIS][0]); - SERIAL_CHAR(','); - SERIAL_ECHO(hotend_offset[Y_AXIS][0]); - SERIAL_CHAR(' '); - SERIAL_ECHO(duplicate_extruder_x_offset); - SERIAL_CHAR(','); - SERIAL_ECHOLN(hotend_offset[Y_AXIS][1]); - break; - case DXC_FULL_CONTROL_MODE: - case DXC_AUTO_PARK_MODE: - break; - default: - dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE; - break; - } - active_extruder_parked = false; - extruder_duplication_enabled = false; - delayed_move_time = 0; - } - -#elif ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) - - inline void gcode_M605() { - stepper.synchronize(); - extruder_duplication_enabled = code_seen('S') && code_value_int() == 2; - SERIAL_ECHO_START; - SERIAL_ECHOPAIR(MSG_DUPLICATION_MODE, extruder_duplication_enabled ? MSG_ON : MSG_OFF); - SERIAL_EOL; - } - -#endif // M605 - -#if ENABLED(LIN_ADVANCE) - /** - * M905: Set advance factor - */ - inline void gcode_M905() { - stepper.synchronize(); - stepper.advance_M905(code_seen('K') ? code_value_float() : -1.0); - } -#endif - -/** - * M907: Set digital trimpot motor current using axis codes X, Y, Z, E, B, S - */ -inline void gcode_M907() { - #if HAS_DIGIPOTSS - LOOP_XYZE(i) - if (code_seen(axis_codes[i])) stepper.digipot_current(i, code_value_int()); - if (code_seen('B')) stepper.digipot_current(4, code_value_int()); - if (code_seen('S')) for (int i = 0; i <= 4; i++) stepper.digipot_current(i, code_value_int()); - #endif - #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY) - if (code_seen('X')) stepper.digipot_current(0, code_value_int()); - #endif - #if PIN_EXISTS(MOTOR_CURRENT_PWM_Z) - if (code_seen('Z')) stepper.digipot_current(1, code_value_int()); - #endif - #if PIN_EXISTS(MOTOR_CURRENT_PWM_E) - if (code_seen('E')) stepper.digipot_current(2, code_value_int()); - #endif - #if ENABLED(DIGIPOT_I2C) - // this one uses actual amps in floating point - LOOP_XYZE(i) if (code_seen(axis_codes[i])) digipot_i2c_set_current(i, code_value_float()); - // for each additional extruder (named B,C,D,E..., channels 4,5,6,7...) - for (int i = NUM_AXIS; i < DIGIPOT_I2C_NUM_CHANNELS; i++) if (code_seen('B' + i - (NUM_AXIS))) digipot_i2c_set_current(i, code_value_float()); - #endif - #if ENABLED(DAC_STEPPER_CURRENT) - if (code_seen('S')) { - float dac_percent = code_value_float(); - for (uint8_t i = 0; i <= 4; i++) dac_current_percent(i, dac_percent); - } - LOOP_XYZE(i) if (code_seen(axis_codes[i])) dac_current_percent(i, code_value_float()); - #endif -} - -#if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT) - - /** - * M908: Control digital trimpot directly (M908 P S) - */ - inline void gcode_M908() { - #if HAS_DIGIPOTSS - stepper.digitalPotWrite( - code_seen('P') ? code_value_int() : 0, - code_seen('S') ? code_value_int() : 0 - ); - #endif - #ifdef DAC_STEPPER_CURRENT - dac_current_raw( - code_seen('P') ? code_value_byte() : -1, - code_seen('S') ? code_value_ushort() : 0 - ); - #endif - } - - #if ENABLED(DAC_STEPPER_CURRENT) // As with Printrbot RevF - - inline void gcode_M909() { dac_print_values(); } - - inline void gcode_M910() { dac_commit_eeprom(); } - - #endif - -#endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT - -#if HAS_MICROSTEPS - - // M350 Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. - inline void gcode_M350() { - if (code_seen('S')) for (int i = 0; i <= 4; i++) stepper.microstep_mode(i, code_value_byte()); - LOOP_XYZE(i) if (code_seen(axis_codes[i])) stepper.microstep_mode(i, code_value_byte()); - if (code_seen('B')) stepper.microstep_mode(4, code_value_byte()); - stepper.microstep_readings(); - } - - /** - * M351: Toggle MS1 MS2 pins directly with axis codes X Y Z E B - * S# determines MS1 or MS2, X# sets the pin high/low. - */ - inline void gcode_M351() { - if (code_seen('S')) switch (code_value_byte()) { - case 1: - LOOP_XYZE(i) if (code_seen(axis_codes[i])) stepper.microstep_ms(i, code_value_byte(), -1); - if (code_seen('B')) stepper.microstep_ms(4, code_value_byte(), -1); - break; - case 2: - LOOP_XYZE(i) if (code_seen(axis_codes[i])) stepper.microstep_ms(i, -1, code_value_byte()); - if (code_seen('B')) stepper.microstep_ms(4, -1, code_value_byte()); - break; - } - stepper.microstep_readings(); - } - -#endif // HAS_MICROSTEPS - -#if ENABLED(MIXING_EXTRUDER) - - /** - * M163: Set a single mix factor for a mixing extruder - * This is called "weight" by some systems. - * - * S[index] The channel index to set - * P[float] The mix value - * - */ - inline void gcode_M163() { - int mix_index = code_seen('S') ? code_value_int() : 0; - float mix_value = code_seen('P') ? code_value_float() : 0.0; - if (mix_index < MIXING_STEPPERS) mixing_factor[mix_index] = mix_value; - } - - #if MIXING_VIRTUAL_TOOLS > 1 - - /** - * M164: Store the current mix factors as a virtual tool. - * - * S[index] The virtual tool to store - * - */ - inline void gcode_M164() { - int tool_index = code_seen('S') ? code_value_int() : 0; - if (tool_index < MIXING_VIRTUAL_TOOLS) { - normalize_mix(); - for (uint8_t i = 0; i < MIXING_STEPPERS; i++) - mixing_virtual_tool_mix[tool_index][i] = mixing_factor[i]; - } - } - - #endif - - #if ENABLED(DIRECT_MIXING_IN_G1) - /** - * M165: Set multiple mix factors for a mixing extruder. - * Factors that are left out will be set to 0. - * All factors together must add up to 1.0. - * - * A[factor] Mix factor for extruder stepper 1 - * B[factor] Mix factor for extruder stepper 2 - * C[factor] Mix factor for extruder stepper 3 - * D[factor] Mix factor for extruder stepper 4 - * H[factor] Mix factor for extruder stepper 5 - * I[factor] Mix factor for extruder stepper 6 - * - */ - inline void gcode_M165() { gcode_get_mix(); } - #endif - -#endif // MIXING_EXTRUDER - -/** - * M999: Restart after being stopped - * - * Default behaviour is to flush the serial buffer and request - * a resend to the host starting on the last N line received. - * - * Sending "M999 S1" will resume printing without flushing the - * existing command buffer. - * - */ -inline void gcode_M999() { - Running = true; - lcd_reset_alert_level(); - - if (code_seen('S') && code_value_bool()) return; - - // gcode_LastN = Stopped_gcode_LastN; - FlushSerialRequestResend(); -} - -#if ENABLED(SWITCHING_EXTRUDER) - inline void move_extruder_servo(uint8_t e) { - const int angles[2] = SWITCHING_EXTRUDER_SERVO_ANGLES; - MOVE_SERVO(SWITCHING_EXTRUDER_SERVO_NR, angles[e]); - } -#endif - -inline void invalid_extruder_error(const uint8_t &e) { - SERIAL_ECHO_START; - SERIAL_CHAR('T'); - SERIAL_PROTOCOL_F(e, DEC); - SERIAL_ECHOLN(MSG_INVALID_EXTRUDER); -} - -void tool_change(const uint8_t tmp_extruder, const float fr_mm_m/*=0.0*/, bool no_move/*=false*/) { - #if ENABLED(MIXING_EXTRUDER) && MIXING_VIRTUAL_TOOLS > 1 - - if (tmp_extruder >= MIXING_VIRTUAL_TOOLS) { - invalid_extruder_error(tmp_extruder); - return; - } - - // T0-Tnnn: Switch virtual tool by changing the mix - for (uint8_t j = 0; j < MIXING_STEPPERS; j++) - mixing_factor[j] = mixing_virtual_tool_mix[tmp_extruder][j]; - - #else //!MIXING_EXTRUDER || MIXING_VIRTUAL_TOOLS <= 1 - - #if HOTENDS > 1 - - if (tmp_extruder >= EXTRUDERS) { - invalid_extruder_error(tmp_extruder); - return; - } - - float old_feedrate_mm_m = feedrate_mm_m; - - feedrate_mm_m = fr_mm_m > 0.0 ? (old_feedrate_mm_m = fr_mm_m) : XY_PROBE_FEEDRATE_MM_M; - - if (tmp_extruder != active_extruder) { - if (!no_move && axis_unhomed_error(true, true, true)) { - SERIAL_ECHOLNPGM("No move on toolchange"); - no_move = true; - } - - // Save current position to destination, for use later - set_destination_to_current(); - - #if ENABLED(DUAL_X_CARRIAGE) - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPGM("Dual X Carriage Mode "); - switch (dual_x_carriage_mode) { - case DXC_DUPLICATION_MODE: SERIAL_ECHOLNPGM("DXC_DUPLICATION_MODE"); break; - case DXC_AUTO_PARK_MODE: SERIAL_ECHOLNPGM("DXC_AUTO_PARK_MODE"); break; - case DXC_FULL_CONTROL_MODE: SERIAL_ECHOLNPGM("DXC_FULL_CONTROL_MODE"); break; - } - } - #endif - - if (dual_x_carriage_mode == DXC_AUTO_PARK_MODE && IsRunning() && - (delayed_move_time || current_position[X_AXIS] != x_home_pos(active_extruder)) - ) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("Raise to ", current_position[Z_AXIS] + TOOLCHANGE_PARK_ZLIFT); SERIAL_EOL; - SERIAL_ECHOPAIR("MoveX to ", x_home_pos(active_extruder)); SERIAL_EOL; - SERIAL_ECHOPAIR("Lower to ", current_position[Z_AXIS]); SERIAL_EOL; - } - #endif - // Park old head: 1) raise 2) move to park position 3) lower - for (uint8_t i = 0; i < 3; i++) - planner.buffer_line( - i == 0 ? current_position[X_AXIS] : x_home_pos(active_extruder), - current_position[Y_AXIS], - current_position[Z_AXIS] + (i == 2 ? 0 : TOOLCHANGE_PARK_ZLIFT), - current_position[E_AXIS], - planner.max_feedrate_mm_s[i == 1 ? X_AXIS : Z_AXIS], - active_extruder - ); - stepper.synchronize(); - } - - // apply Y & Z extruder offset (x offset is already used in determining home pos) - current_position[Y_AXIS] -= hotend_offset[Y_AXIS][active_extruder] - hotend_offset[Y_AXIS][tmp_extruder]; - current_position[Z_AXIS] -= hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder]; - active_extruder = tmp_extruder; - - // This function resets the max/min values - the current position may be overwritten below. - set_axis_is_at_home(X_AXIS); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("New Extruder", current_position); - #endif - - switch (dual_x_carriage_mode) { - case DXC_FULL_CONTROL_MODE: - current_position[X_AXIS] = LOGICAL_X_POSITION(inactive_extruder_x_pos); - inactive_extruder_x_pos = RAW_X_POSITION(destination[X_AXIS]); - break; - case DXC_DUPLICATION_MODE: - active_extruder_parked = (active_extruder == 0); // this triggers the second extruder to move into the duplication position - if (active_extruder_parked) - current_position[X_AXIS] = LOGICAL_X_POSITION(inactive_extruder_x_pos); - else - current_position[X_AXIS] = destination[X_AXIS] + duplicate_extruder_x_offset; - inactive_extruder_x_pos = RAW_X_POSITION(destination[X_AXIS]); - extruder_duplication_enabled = false; - break; - default: - // record raised toolhead position for use by unpark - memcpy(raised_parked_position, current_position, sizeof(raised_parked_position)); - raised_parked_position[Z_AXIS] += TOOLCHANGE_UNPARK_ZLIFT; - active_extruder_parked = true; - delayed_move_time = 0; - break; - } - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("Active extruder parked: ", active_extruder_parked ? "yes" : "no"); - SERIAL_EOL; - DEBUG_POS("New extruder (parked)", current_position); - } - #endif - - // No extra case for AUTO_BED_LEVELING_FEATURE in DUAL_X_CARRIAGE. Does that mean they don't work together? - #else // !DUAL_X_CARRIAGE - - #if ENABLED(SWITCHING_EXTRUDER) - // <0 if the new nozzle is higher, >0 if lower. A bigger raise when lower. - float z_diff = hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder], - z_raise = 0.3 + (z_diff > 0.0 ? z_diff : 0.0); - - // Always raise by some amount - planner.buffer_line( - current_position[X_AXIS], - current_position[Y_AXIS], - current_position[Z_AXIS] + z_raise, - current_position[E_AXIS], - planner.max_feedrate_mm_s[Z_AXIS], - active_extruder - ); - stepper.synchronize(); - - move_extruder_servo(active_extruder); - delay(500); - - // Move back down, if needed - if (z_raise != z_diff) { - planner.buffer_line( - current_position[X_AXIS], - current_position[Y_AXIS], - current_position[Z_AXIS] + z_diff, - current_position[E_AXIS], - planner.max_feedrate_mm_s[Z_AXIS], - active_extruder - ); - stepper.synchronize(); - } - #endif - - /** - * Set current_position to the position of the new nozzle. - * Offsets are based on linear distance, so we need to get - * the resulting position in coordinate space. - * - * - With grid or 3-point leveling, offset XYZ by a tilted vector - * - With mesh leveling, update Z for the new position - * - Otherwise, just use the raw linear distance - * - * Software endstops are altered here too. Consider a case where: - * E0 at X=0 ... E1 at X=10 - * When we switch to E1 now X=10, but E1 can't move left. - * To express this we apply the change in XY to the software endstops. - * E1 can move farther right than E0, so the right limit is extended. - * - * Note that we don't adjust the Z software endstops. Why not? - * Consider a case where Z=0 (here) and switching to E1 makes Z=1 - * because the bed is 1mm lower at the new position. As long as - * the first nozzle is out of the way, the carriage should be - * allowed to move 1mm lower. This technically "breaks" the - * Z software endstop. But this is technically correct (and - * there is no viable alternative). - */ - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - // Offset extruder, make sure to apply the bed level rotation matrix - vector_3 tmp_offset_vec = vector_3(hotend_offset[X_AXIS][tmp_extruder], - hotend_offset[Y_AXIS][tmp_extruder], - 0), - act_offset_vec = vector_3(hotend_offset[X_AXIS][active_extruder], - hotend_offset[Y_AXIS][active_extruder], - 0), - offset_vec = tmp_offset_vec - act_offset_vec; - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - tmp_offset_vec.debug("tmp_offset_vec"); - act_offset_vec.debug("act_offset_vec"); - offset_vec.debug("offset_vec (BEFORE)"); - } - #endif - - offset_vec.apply_rotation(planner.bed_level_matrix.transpose(planner.bed_level_matrix)); - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) offset_vec.debug("offset_vec (AFTER)"); - #endif - - // Adjustments to the current position - float xydiff[2] = { offset_vec.x, offset_vec.y }; - current_position[Z_AXIS] += offset_vec.z; - - #else // !AUTO_BED_LEVELING_FEATURE - - float xydiff[2] = { - hotend_offset[X_AXIS][tmp_extruder] - hotend_offset[X_AXIS][active_extruder], - hotend_offset[Y_AXIS][tmp_extruder] - hotend_offset[Y_AXIS][active_extruder] - }; - - #if ENABLED(MESH_BED_LEVELING) - - if (mbl.active()) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) SERIAL_ECHOPAIR("Z before MBL: ", current_position[Z_AXIS]); - #endif - float xpos = RAW_CURRENT_POSITION(X_AXIS), - ypos = RAW_CURRENT_POSITION(Y_AXIS); - current_position[Z_AXIS] += mbl.get_z(xpos + xydiff[X_AXIS], ypos + xydiff[Y_AXIS]) - mbl.get_z(xpos, ypos); - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR(" after: ", current_position[Z_AXIS]); - SERIAL_EOL; - } - #endif - } - - #endif // MESH_BED_LEVELING - - #endif // !AUTO_BED_LEVELING_FEATURE - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("Offset Tool XY by { ", xydiff[X_AXIS]); - SERIAL_ECHOPAIR(", ", xydiff[Y_AXIS]); - SERIAL_ECHOLNPGM(" }"); - } - #endif - - // The newly-selected extruder XY is actually at... - current_position[X_AXIS] += xydiff[X_AXIS]; - current_position[Y_AXIS] += xydiff[Y_AXIS]; - for (uint8_t i = X_AXIS; i <= Y_AXIS; i++) { - position_shift[i] += xydiff[i]; - update_software_endstops((AxisEnum)i); - } - - // Set the new active extruder - active_extruder = tmp_extruder; - - #endif // !DUAL_X_CARRIAGE - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("Sync After Toolchange", current_position); - #endif - - // Tell the planner the new "current position" - SYNC_PLAN_POSITION_KINEMATIC(); - - // Move to the "old position" (move the extruder into place) - if (!no_move && IsRunning()) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) DEBUG_POS("Move back", destination); - #endif - prepare_move_to_destination(); - } - - } // (tmp_extruder != active_extruder) - - stepper.synchronize(); - - #if ENABLED(EXT_SOLENOID) - disable_all_solenoids(); - enable_solenoid_on_active_extruder(); - #endif // EXT_SOLENOID - - feedrate_mm_m = old_feedrate_mm_m; - - #else // HOTENDS <= 1 - - // Set the new active extruder - active_extruder = tmp_extruder; - - UNUSED(fr_mm_m); - UNUSED(no_move); - - #endif // HOTENDS <= 1 - - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_ACTIVE_EXTRUDER); - SERIAL_PROTOCOLLN((int)active_extruder); - - #endif //!MIXING_EXTRUDER || MIXING_VIRTUAL_TOOLS <= 1 -} - -/** - * T0-T3: Switch tool, usually switching extruders - * - * F[units/min] Set the movement feedrate - * S1 Don't move the tool in XY after change - */ -inline void gcode_T(uint8_t tmp_extruder) { - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR(">>> gcode_T(", tmp_extruder); - SERIAL_ECHOLNPGM(")"); - DEBUG_POS("BEFORE", current_position); - } - #endif - - #if HOTENDS == 1 || (ENABLED(MIXING_EXTRUDER) && MIXING_VIRTUAL_TOOLS > 1) - - tool_change(tmp_extruder); - - #elif HOTENDS > 1 - - tool_change( - tmp_extruder, - code_seen('F') ? code_value_axis_units(X_AXIS) : 0.0, - (tmp_extruder == active_extruder) || (code_seen('S') && code_value_bool()) - ); - - #endif - - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - DEBUG_POS("AFTER", current_position); - SERIAL_ECHOLNPGM("<<< gcode_T"); - } - #endif -} - -/** - * Process a single command and dispatch it to its handler - * This is called from the main loop() - */ -void process_next_command() { - current_command = command_queue[cmd_queue_index_r]; - - if (DEBUGGING(ECHO)) { - SERIAL_ECHO_START; - SERIAL_ECHOLN(current_command); - } - - // Sanitize the current command: - // - Skip leading spaces - // - Bypass N[-0-9][0-9]*[ ]* - // - Overwrite * with nul to mark the end - while (*current_command == ' ') ++current_command; - -#ifdef UARM_SWIFT - uint32_t serialNum = 0; - - uint8_t needReply = 0; - char replyBuf[RESULT_BUFFER_SIZE]; - uint8_t result = 0; - char *pch; - - pch = strstr(current_command, "M2245 V"); - if (pch != NULL) - { - pch += strlen("M2245 V"); - int strLength = strlen(pch); - char btName[20]; - - if (strLength <= 0) - { - return ; - } - else if (strLength > BT_NAME_MAX_LEN) - { - strncpy(btName, pch, BT_NAME_MAX_LEN); - btName[BT_NAME_MAX_LEN] = '\0'; - } - else - { - strcpy(btName, pch); - } - - if (setBtName(btName)) - { - MYSERIAL.println(MSG_OK); - } - else - { - MYSERIAL.print("E25"); - } - - return; - } - - - - if (*current_command == '#') - { - // Get and skip the code number - current_command++; - do { - serialNum = (serialNum * 10) + (*current_command - '0'); - current_command++; - } while (NUMERIC(*current_command)); - - while (*current_command == ' ') ++current_command; - } - - debugPrint("serianNum = %d\r\n", serialNum); -#endif // UARM_SWIFT - - - - if (*current_command == 'N' && NUMERIC_SIGNED(current_command[1])) { - current_command += 2; // skip N[-0-9] - while (NUMERIC(*current_command)) ++current_command; // skip [0-9]* - while (*current_command == ' ') ++current_command; // skip [ ]* - } - char* starpos = strchr(current_command, '*'); // * should always be the last parameter - if (starpos) while (*starpos == ' ' || *starpos == '*') *starpos-- = '\0'; // nullify '*' and ' ' - - char *cmd_ptr = current_command; - - // Get the command code, which must be G, M, or T - char command_code = *cmd_ptr++; - - // Skip spaces to get the numeric part - while (*cmd_ptr == ' ') cmd_ptr++; - - uint16_t codenum = 0; // define ahead of goto - - // Bail early if there's no code - bool code_is_good = NUMERIC(*cmd_ptr); - if (!code_is_good) goto ExitUnknownCommand; - - // Get and skip the code number - do { - codenum = (codenum * 10) + (*cmd_ptr - '0'); - cmd_ptr++; - } while (NUMERIC(*cmd_ptr)); - - // Skip all spaces to get to the first argument, or nul - while (*cmd_ptr == ' ') cmd_ptr++; - - // The command's arguments (if any) start here, for sure! - current_command_args = cmd_ptr; - - KEEPALIVE_STATE(IN_HANDLER); - - // Handle a known G, M, or T - switch (command_code) { - case 'G': switch (codenum) { - - // G0, G1 - case 0: - #ifdef UARM_SWIFT - uarm_gcode_G0(); - #endif - gcode_G0_G1(); - break; - case 1: - #ifdef UARM_SWIFT - uarm_gcode_G1(); - #endif - gcode_G0_G1(); - break; - - // G2, G3 - #if ENABLED(ARC_SUPPORT) && DISABLED(SCARA) - case 2: // G2 - CW ARC - case 3: // G3 - CCW ARC - gcode_G2_G3(codenum == 2); - break; - #endif - - // G4 Dwell - case 4: - gcode_G4(); - break; - - #if ENABLED(BEZIER_CURVE_SUPPORT) - // G5 - case 5: // G5 - Cubic B_spline - gcode_G5(); - break; - #endif // BEZIER_CURVE_SUPPORT - - #if ENABLED(FWRETRACT) - case 10: // G10: retract - case 11: // G11: retract_recover - gcode_G10_G11(codenum == 10); - break; - #endif // FWRETRACT - - #if ENABLED(NOZZLE_CLEAN_FEATURE) - case 12: - gcode_G12(); // G12: Nozzle Clean - break; - #endif // NOZZLE_CLEAN_FEATURE - - #if ENABLED(INCH_MODE_SUPPORT) - case 20: //G20: Inch Mode - gcode_G20(); - break; - - case 21: //G21: MM Mode - gcode_G21(); - break; - #endif // INCH_MODE_SUPPORT - - #if ENABLED(NOZZLE_PARK_FEATURE) - case 27: // G27: Nozzle Park - gcode_G27(); - break; - #endif // NOZZLE_PARK_FEATURE - - case 28: // G28: Home all axes, one at a time - gcode_G28(); - break; - - #if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING) - case 29: // G29 Detailed Z probe, probes the bed at 3 or more points. - gcode_G29(); - break; - #endif // AUTO_BED_LEVELING_FEATURE - - #if HAS_BED_PROBE - - case 30: // G30 Single Z probe - gcode_G30(); - break; - - #if ENABLED(Z_PROBE_SLED) - - case 31: // G31: dock the sled - gcode_G31(); - break; - - case 32: // G32: undock the sled - gcode_G32(); - break; - - #endif // Z_PROBE_SLED - #endif // HAS_BED_PROBE - - case 90: // G90 - relative_mode = false; - break; - - case 91: // G91 - relative_mode = true; - break; - - case 92: // G92 - gcode_G92(); - break; - -#ifdef UARM_SWIFT - // G cmd - case 2004: - gcode_G4(); - break; - - case 2201: - gcode_get_destination_polor(); - break; - - // rotate stepper motor - case 2202: - - - if (code_seen('N')) - { - uint8_t index = code_value_byte(); - - if (index < 3) - { - - gcode_get_destination_angle(index); - line_to_destination_angle(); - } - else if (index == 3) - { - rotate_frontend_motor(); - - } - } - break; - - // stop - case 2203: - stepper.synchronize(); - refresh_cmd_timeout(); - break; - - // 2204 relative move use G90 G91 - case 2204: - relative_mode = true; - gcode_G0_G1(); - relative_mode = false; - break; - - case 2205: - relative_mode = true; - gcode_get_destination_polor(); - relative_mode = false; - break; - -#endif // UARM_SWIFT - - } - break; - - case 'M': switch (codenum) { - #if ENABLED(ULTIPANEL) - case 0: // M0 - Unconditional stop - Wait for user button press on LCD - case 1: // M1 - Conditional stop - Wait for user button press on LCD - gcode_M0_M1(); - break; - #endif // ULTIPANEL - - case 3: - uarm_gcode_G0(); - break; - - case 5: - uarm_gcode_G1(); - break; - - case 17: - gcode_M17(); - break; - - #if ENABLED(SDSUPPORT) - case 20: // M20 - list SD card - gcode_M20(); break; - case 21: // M21 - init SD card - gcode_M21(); break; - case 22: //M22 - release SD card - gcode_M22(); break; - case 23: //M23 - Select file - gcode_M23(); break; - case 24: //M24 - Start SD print - gcode_M24(); break; - case 25: //M25 - Pause SD print - gcode_M25(); break; - case 26: //M26 - Set SD index - gcode_M26(); break; - case 27: //M27 - Get SD status - gcode_M27(); break; - case 28: //M28 - Start SD write - gcode_M28(); break; - case 29: //M29 - Stop SD write - gcode_M29(); break; - case 30: //M30 Delete File - gcode_M30(); break; - case 32: //M32 - Select file and start SD print - gcode_M32(); break; - - #if ENABLED(LONG_FILENAME_HOST_SUPPORT) - case 33: //M33 - Get the long full path to a file or folder - gcode_M33(); break; - #endif // LONG_FILENAME_HOST_SUPPORT - - case 928: //M928 - Start SD write - gcode_M928(); break; - #endif //SDSUPPORT - - case 31: //M31 take time since the start of the SD print or an M109 command - gcode_M31(); - break; - - case 42: //M42 -Change pin status via gcode - gcode_M42(); - break; - - #if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) - case 48: // M48 Z probe repeatability - gcode_M48(); - break; - #endif // Z_MIN_PROBE_REPEATABILITY_TEST - - case 75: // Start print timer - gcode_M75(); - break; - - case 76: // Pause print timer - gcode_M76(); - break; - - case 77: // Stop print timer - gcode_M77(); - break; - - #if ENABLED(PRINTCOUNTER) - case 78: // Show print statistics - gcode_M78(); - break; - #endif - - #if ENABLED(M100_FREE_MEMORY_WATCHER) - case 100: - gcode_M100(); - break; - #endif - - case 104: // M104 - gcode_M104(); - break; - - case 110: // M110: Set Current Line Number - gcode_M110(); - break; - - case 111: // M111: Set debug level - gcode_M111(); - break; - - #if DISABLED(EMERGENCY_PARSER) - - case 108: // M108: Cancel Waiting - gcode_M108(); - break; - - case 112: // M112: Emergency Stop - gcode_M112(); - break; - - case 410: // M410 quickstop - Abort all the planned moves. - gcode_M410(); - break; - - #endif - - #if ENABLED(HOST_KEEPALIVE_FEATURE) - case 113: // M113: Set Host Keepalive interval - gcode_M113(); - break; - #endif - - case 140: // M140: Set bed temp - gcode_M140(); - break; - - case 105: // M105: Read current temperature - gcode_M105(); - KEEPALIVE_STATE(NOT_BUSY); - return; // "ok" already printed - - case 109: // M109: Wait for temperature - gcode_M109(); - break; - - #if HAS_TEMP_BED - case 190: // M190: Wait for bed heater to reach target - gcode_M190(); - break; - #endif // HAS_TEMP_BED - - #if FAN_COUNT > 0 - case 106: // M106: Fan On - gcode_M106(); - break; - case 107: // M107: Fan Off - gcode_M107(); - break; - #endif // FAN_COUNT > 0 - - #if ENABLED(BARICUDA) - // PWM for HEATER_1_PIN - #if HAS_HEATER_1 - case 126: // M126: valve open - gcode_M126(); - break; - case 127: // M127: valve closed - gcode_M127(); - break; - #endif // HAS_HEATER_1 - - // PWM for HEATER_2_PIN - #if HAS_HEATER_2 - case 128: // M128: valve open - gcode_M128(); - break; - case 129: // M129: valve closed - gcode_M129(); - break; - #endif // HAS_HEATER_2 - #endif // BARICUDA - - #if HAS_POWER_SWITCH - - case 80: // M80: Turn on Power Supply - gcode_M80(); - break; - - #endif // HAS_POWER_SWITCH - - case 81: // M81: Turn off Power, including Power Supply, if possible - gcode_M81(); - break; - - case 82: - gcode_M82(); - break; - case 83: - gcode_M83(); - break; - case 18: // (for compatibility) - case 84: // M84 - gcode_M18_M84(); - break; - case 85: // M85 - gcode_M85(); - break; - case 92: // M92: Set the steps-per-unit for one or more axes - gcode_M92(); - break; - case 115: // M115: Report capabilities - gcode_M115(); - break; - case 117: // M117: Set LCD message text, if possible - gcode_M117(); - break; - case 114: // M114: Report current position - gcode_M114(); - break; - case 120: // M120: Enable endstops - gcode_M120(); - break; - case 121: // M121: Disable endstops - gcode_M121(); - break; - case 119: // M119: Report endstop states - gcode_M119(); - break; - - #if ENABLED(ULTIPANEL) - - case 145: // M145: Set material heatup parameters - gcode_M145(); - break; - - #endif - - #if ENABLED(TEMPERATURE_UNITS_SUPPORT) - case 149: - gcode_M149(); - break; - #endif - - #if ENABLED(BLINKM) - - case 150: // M150 - gcode_M150(); - break; - - #endif //BLINKM - - #if ENABLED(EXPERIMENTAL_I2CBUS) - - case 155: - gcode_M155(); - break; - - case 156: - gcode_M156(); - break; - - #endif //EXPERIMENTAL_I2CBUS - - #if ENABLED(MIXING_EXTRUDER) - case 163: // M163 S P set weight for a mixing extruder - gcode_M163(); - break; - #if MIXING_VIRTUAL_TOOLS > 1 - case 164: // M164 S save current mix as a virtual extruder - gcode_M164(); - break; - #endif - #if ENABLED(DIRECT_MIXING_IN_G1) - case 165: // M165 [ABCDHI] set multiple mix weights - gcode_M165(); - break; - #endif - #endif - - case 200: // M200 D Set filament diameter and set E axis units to cubic. (Use S0 to revert to linear units.) - gcode_M200(); - break; - case 201: // M201 - gcode_M201(); - break; - #if 0 // Not used for Sprinter/grbl gen6 - case 202: // M202 - gcode_M202(); - break; - #endif - case 203: // M203 max feedrate units/sec - gcode_M203(); - break; - case 204: // M204 acclereration S normal moves T filmanent only moves - gcode_M204(); - break; - case 205: //M205 advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk - gcode_M205(); - break; - case 206: // M206 additional homing offset - gcode_M206(); - break; - - #if ENABLED(DELTA) - case 665: // M665 set delta configurations L R S - gcode_M665(); - break; - #endif - - #if ENABLED(DELTA) || ENABLED(Z_DUAL_ENDSTOPS) - case 666: // M666 set delta / dual endstop adjustment - gcode_M666(); - break; - #endif - - #if ENABLED(FWRETRACT) - case 207: // M207 - Set Retract Length: S, Feedrate: F, and Z lift: Z - gcode_M207(); - break; - case 208: // M208 - Set Recover (unretract) Additional (!) Length: S and Feedrate: F - gcode_M208(); - break; - case 209: // M209 - Turn Automatic Retract Detection on/off: S (For slicers that don't support G10/11). Every normal extrude-only move will be classified as retract depending on the direction. - gcode_M209(); - break; - #endif // FWRETRACT - - #if HOTENDS > 1 - case 218: // M218 - Set a tool offset: T X Y - gcode_M218(); - break; - #endif - - case 220: // M220 - Set Feedrate Percentage: S ("FR" on your LCD) - gcode_M220(); - break; - - case 221: // M221 - Set Flow Percentage: S - gcode_M221(); - break; - - case 226: // M226 P S- Wait until the specified pin reaches the state required - gcode_M226(); - break; - - #if HAS_SERVOS - case 280: // M280 - set servo position absolute. P: servo index, S: angle or microseconds - gcode_M280(); - break; - #endif // HAS_SERVOS - - #if HAS_BUZZER - case 300: // M300 - Play beep tone - gcode_M300(); - break; - #endif // HAS_BUZZER - - #if ENABLED(PIDTEMP) - case 301: // M301 - gcode_M301(); - break; - #endif // PIDTEMP - - #if ENABLED(PIDTEMPBED) - case 304: // M304 - gcode_M304(); - break; - #endif // PIDTEMPBED - - #if defined(CHDK) || HAS_PHOTOGRAPH - case 240: // M240 Triggers a camera by emulating a Canon RC-1 : http://www.doc-diy.net/photo/rc-1_hacked/ - gcode_M240(); - break; - #endif // CHDK || PHOTOGRAPH_PIN - - #if HAS_LCD_CONTRAST - case 250: // M250 Set LCD contrast value: C (value 0..63) - gcode_M250(); - break; - #endif // HAS_LCD_CONTRAST - - #if ENABLED(PREVENT_DANGEROUS_EXTRUDE) - case 302: // allow cold extrudes, or set the minimum extrude temperature - gcode_M302(); - break; - #endif // PREVENT_DANGEROUS_EXTRUDE - - case 303: // M303 PID autotune - gcode_M303(); - break; - - #if ENABLED(SCARA) - case 360: // M360 SCARA Theta pos1 - if (gcode_M360()) return; - break; - case 361: // M361 SCARA Theta pos2 - if (gcode_M361()) return; - break; - case 362: // M362 SCARA Psi pos1 - if (gcode_M362()) return; - break; - case 363: // M363 SCARA Psi pos2 - if (gcode_M363()) return; - break; - case 364: // M364 SCARA Psi pos3 (90 deg to Theta) - if (gcode_M364()) return; - break; - case 365: // M365 Set SCARA scaling for X Y Z - gcode_M365(); - break; - #endif // SCARA - - case 400: // M400 finish all moves - gcode_M400(); - break; - - #if HAS_BED_PROBE - case 401: - gcode_M401(); - break; - case 402: - gcode_M402(); - break; - #endif // HAS_BED_PROBE - - #if ENABLED(FILAMENT_WIDTH_SENSOR) - case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or display nominal filament width - gcode_M404(); - break; - case 405: //M405 Turn on filament sensor for control - gcode_M405(); - break; - case 406: //M406 Turn off filament sensor for control - gcode_M406(); - break; - case 407: //M407 Display measured filament diameter - gcode_M407(); - break; - #endif // ENABLED(FILAMENT_WIDTH_SENSOR) - - #if ENABLED(MESH_BED_LEVELING) - case 420: // M420 Enable/Disable Mesh Bed Leveling - gcode_M420(); - break; - case 421: // M421 Set a Mesh Bed Leveling Z coordinate - gcode_M421(); - break; - #endif - - case 428: // M428 Apply current_position to home_offset - gcode_M428(); - break; - - case 500: // M500 Store settings in EEPROM - gcode_M500(); - break; - case 501: // M501 Read settings from EEPROM - gcode_M501(); - break; - case 502: // M502 Revert to default settings - gcode_M502(); - break; - case 503: // M503 print settings currently in memory - gcode_M503(); - break; - - #if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) - case 540: - gcode_M540(); - break; - #endif - - #if HAS_BED_PROBE - case 851: - gcode_M851(); - break; - #endif // HAS_BED_PROBE - - #if ENABLED(FILAMENT_CHANGE_FEATURE) - case 600: //Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] - gcode_M600(); - break; - #endif // FILAMENT_CHANGE_FEATURE - - #if ENABLED(DUAL_X_CARRIAGE) - case 605: - gcode_M605(); - break; - #endif // DUAL_X_CARRIAGE - - #if ENABLED(LIN_ADVANCE) - case 905: // M905 Set advance factor. - gcode_M905(); - break; - #endif - - case 907: // M907 Set digital trimpot motor current using axis codes. - gcode_M907(); - break; - - #if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT) - - case 908: // M908 Control digital trimpot directly. - gcode_M908(); - break; - - #if ENABLED(DAC_STEPPER_CURRENT) // As with Printrbot RevF - - case 909: // M909 Print digipot/DAC current value - gcode_M909(); - break; - - case 910: // M910 Commit digipot/DAC value to external EEPROM - gcode_M910(); - break; - - #endif - - #endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT - - #if HAS_MICROSTEPS - - case 350: // M350 Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. - gcode_M350(); - break; - - case 351: // M351 Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low. - gcode_M351(); - break; - - #endif // HAS_MICROSTEPS - - case 999: // M999: Restart after being Stopped - gcode_M999(); - break; - -#ifdef UARM_SWIFT - // - - case 2019: - disable_all_steppers(); - break; - - case 2120: - uarm_gcode_M2120(); - break; - - case 2200: - needReply = 1; - result = uarm_gcode_M2200(replyBuf); - break; - - case 2201: - uarm_gcode_M2201(); - break; - - case 2202: - uarm_gcode_M2202(); - break; - - case 2203: - needReply = 1; - result = uarm_gcode_M2203(replyBuf); - break; - - case 2210: - uarm_gcode_M2210(); - break; - - case 2211: - needReply = 1; - result = uarm_gcode_M2211(replyBuf); - break; - - case 2212: - uarm_gcode_M2212(); - break; - - case 2213: - uarm_gcode_M2213(); - break; - - case 2220: - needReply = 1; - result = uarm_gcode_M2220(replyBuf); - break; - - case 2221: - needReply = 1; - result = uarm_gcode_M2221(replyBuf); - break; - - case 2222: - needReply = 1; - result = uarm_gcode_M2222(replyBuf); - break; - - case 2231: - uarm_gcode_M2231(); - break; - - - case 2232: - uarm_gcode_M2232(); - break; - - case 2233: - uarm_gcode_M2233(); - break; - - case 2234: - uarm_gcode_M2234(); - break; - - case 2300: - uarm_gcode_M2300(); - break; - - case 2301: - uarm_gcode_M2301(); - break; - - case 2240: - uarm_gcode_M2240(); - break; - - case 2400: - uarm_gcode_M2400(); - break; - - case 2401: - needReply = 1; - result = uarm_gcode_M2401(replyBuf); - break; - - case 2410: - uarm_gcode_M2410(); - break; - - case 2411: - uarm_gcode_M2411(); - break; - - -#endif //UARM_SWIFT - } - break; - - case 'T': - gcode_T(codenum); - break; - - case 'P': - switch (codenum) { - case 2200: - needReply = 1; - result = uarm_gcode_P2200(replyBuf); - break; - - case 2201: - needReply = 1; - result = uarm_gcode_P2201(replyBuf); - break; - - case 2202: - needReply = 1; - result = uarm_gcode_P2202(replyBuf); - break; - - case 2203: - needReply = 1; - result = uarm_gcode_P2203(replyBuf); - break; - - case 2204: - needReply = 1; - result = uarm_gcode_P2204(replyBuf); - break; - - case 2205: - needReply = 1; - result = uarm_gcode_P2205(replyBuf); - break; - - case 2206: - needReply = 1; - result = uarm_gcode_P2206(replyBuf); - break; - - case 2220: - needReply = 1; - result = uarm_gcode_P2220(replyBuf); - break; - - case 2221: - needReply = 1; - result = uarm_gcode_P2221(replyBuf); - break; - - case 2231: - needReply = 1; - result = uarm_gcode_P2231(replyBuf); - break; - - case 2232: - needReply = 1; - result = uarm_gcode_P2232(replyBuf); - break; - - case 2233: - needReply = 1; - result = uarm_gcode_P2233(replyBuf); - break; - - case 2234: - needReply = 1; - result = uarm_gcode_P2234(replyBuf); - break; - - case 2240: - needReply = 1; - result = uarm_gcode_P2240(replyBuf); - break; - - case 2241: - needReply = 1; - result = uarm_gcode_P2241(replyBuf); - break; - - case 2242: - needReply = 1; - result = uarm_gcode_P2242(replyBuf); - break; - - case 2245: - needReply = 1; - result = uarm_gcode_P2245(replyBuf); - break; - - case 2400: - needReply = 1; - result = uarm_gcode_P2400(replyBuf); - break; - -#ifdef SWIFT_TEST_MODE - case 2250: - needReply = 1; - result = uarm_gcode_P2250(replyBuf); - break; -#endif - } - break; - - default: code_is_good = false; - } - - KEEPALIVE_STATE(NOT_BUSY); - -ExitUnknownCommand: - - // Still unknown command? Throw an error - if (!code_is_good) unknown_command_error(); - -#ifdef UARM_SWIFT - if (code_is_good) - { - if (serialNum > 0) - { - MYSERIAL.print("$"); - MYSERIAL.print(serialNum); - MYSERIAL.print(" "); - - - } - - if (needReply) - { - if (result == E_OK) - { - MYSERIAL.print(MSG_OK); - MYSERIAL.print(" "); - MYSERIAL.println(replyBuf); - } - else - { - MYSERIAL.print("E"); - MYSERIAL.println(result); - } - } - else - { - ok_to_send(); - } - } - -#else - ok_to_send(); -#endif // UARM_SWIFT -} - -void FlushSerialRequestResend() { - //char command_queue[cmd_queue_index_r][100]="Resend:"; - MYSERIAL.flush(); - SERIAL_PROTOCOLPGM(MSG_RESEND); - SERIAL_PROTOCOLLN(gcode_LastN + 1); - ok_to_send(); -} - -void ok_to_send() { - refresh_cmd_timeout(); - if (!send_ok[cmd_queue_index_r]) return; - SERIAL_PROTOCOLPGM(MSG_OK); - #if ENABLED(ADVANCED_OK) - char* p = command_queue[cmd_queue_index_r]; - if (*p == 'N') { - SERIAL_PROTOCOL(' '); - SERIAL_ECHO(*p++); - while (NUMERIC_SIGNED(*p)) - SERIAL_ECHO(*p++); - } - SERIAL_PROTOCOLPGM(" P"); SERIAL_PROTOCOL(int(BLOCK_BUFFER_SIZE - planner.movesplanned() - 1)); - SERIAL_PROTOCOLPGM(" B"); SERIAL_PROTOCOL(BUFSIZE - commands_in_queue); - #endif - SERIAL_EOL; -} - -void clamp_to_software_endstops(float target[3]) { - if (min_software_endstops) { - NOLESS(target[X_AXIS], sw_endstop_min[X_AXIS]); - NOLESS(target[Y_AXIS], sw_endstop_min[Y_AXIS]); - NOLESS(target[Z_AXIS], sw_endstop_min[Z_AXIS]); - } - if (max_software_endstops) { - NOMORE(target[X_AXIS], sw_endstop_max[X_AXIS]); - NOMORE(target[Y_AXIS], sw_endstop_max[Y_AXIS]); - NOMORE(target[Z_AXIS], sw_endstop_max[Z_AXIS]); - } -} - -#if ENABLED(DELTA) - - void recalc_delta_settings(float radius, float diagonal_rod) { - delta_tower1_x = -SIN_60 * (radius + DELTA_RADIUS_TRIM_TOWER_1); // front left tower - delta_tower1_y = -COS_60 * (radius + DELTA_RADIUS_TRIM_TOWER_1); - delta_tower2_x = SIN_60 * (radius + DELTA_RADIUS_TRIM_TOWER_2); // front right tower - delta_tower2_y = -COS_60 * (radius + DELTA_RADIUS_TRIM_TOWER_2); - delta_tower3_x = 0.0; // back middle tower - delta_tower3_y = (radius + DELTA_RADIUS_TRIM_TOWER_3); - delta_diagonal_rod_2_tower_1 = sq(diagonal_rod + delta_diagonal_rod_trim_tower_1); - delta_diagonal_rod_2_tower_2 = sq(diagonal_rod + delta_diagonal_rod_trim_tower_2); - delta_diagonal_rod_2_tower_3 = sq(diagonal_rod + delta_diagonal_rod_trim_tower_3); - } - - void inverse_kinematics(const float in_cartesian[3]) { - - const float cartesian[3] = { - RAW_X_POSITION(in_cartesian[X_AXIS]), - RAW_Y_POSITION(in_cartesian[Y_AXIS]), - RAW_Z_POSITION(in_cartesian[Z_AXIS]) - }; - - delta[TOWER_1] = sqrt(delta_diagonal_rod_2_tower_1 - - sq(delta_tower1_x - cartesian[X_AXIS]) - - sq(delta_tower1_y - cartesian[Y_AXIS]) - ) + cartesian[Z_AXIS]; - delta[TOWER_2] = sqrt(delta_diagonal_rod_2_tower_2 - - sq(delta_tower2_x - cartesian[X_AXIS]) - - sq(delta_tower2_y - cartesian[Y_AXIS]) - ) + cartesian[Z_AXIS]; - delta[TOWER_3] = sqrt(delta_diagonal_rod_2_tower_3 - - sq(delta_tower3_x - cartesian[X_AXIS]) - - sq(delta_tower3_y - cartesian[Y_AXIS]) - ) + cartesian[Z_AXIS]; - /** - SERIAL_ECHOPGM("cartesian x="); SERIAL_ECHO(cartesian[X_AXIS]); - SERIAL_ECHOPGM(" y="); SERIAL_ECHO(cartesian[Y_AXIS]); - SERIAL_ECHOPGM(" z="); SERIAL_ECHOLN(cartesian[Z_AXIS]); - - SERIAL_ECHOPGM("delta a="); SERIAL_ECHO(delta[TOWER_1]); - SERIAL_ECHOPGM(" b="); SERIAL_ECHO(delta[TOWER_2]); - SERIAL_ECHOPGM(" c="); SERIAL_ECHOLN(delta[TOWER_3]); - */ - } - - float delta_safe_distance_from_top() { - float cartesian[3] = { - LOGICAL_X_POSITION(0), - LOGICAL_Y_POSITION(0), - LOGICAL_Z_POSITION(0) - }; - inverse_kinematics(cartesian); - float distance = delta[TOWER_3]; - cartesian[Y_AXIS] = LOGICAL_Y_POSITION(DELTA_PRINTABLE_RADIUS); - inverse_kinematics(cartesian); - return abs(distance - delta[TOWER_3]); - } - - void forward_kinematics_DELTA(float z1, float z2, float z3) { - //As discussed in Wikipedia "Trilateration" - //we are establishing a new coordinate - //system in the plane of the three carriage points. - //This system will have the origin at tower1 and - //tower2 is on the x axis. tower3 is in the X-Y - //plane with a Z component of zero. We will define unit - //vectors in this coordinate system in our original - //coordinate system. Then when we calculate the - //Xnew, Ynew and Znew values, we can translate back into - //the original system by moving along those unit vectors - //by the corresponding values. - // https://en.wikipedia.org/wiki/Trilateration - - // Variable names matched to Marlin, c-version - // and avoiding a vector library - // by Andreas Hardtung 2016-06-7 - // based on a Java function from - // "Delta Robot Kinematics by Steve Graves" V3 - - // Result is in cartesian_position[]. - - //Create a vector in old coordinates along x axis of new coordinate - float p12[3] = { delta_tower2_x - delta_tower1_x, delta_tower2_y - delta_tower1_y, z2 - z1 }; - - //Get the Magnitude of vector. - float d = sqrt( p12[0]*p12[0] + p12[1]*p12[1] + p12[2]*p12[2] ); - - //Create unit vector by dividing by magnitude. - float ex[3] = { p12[0]/d, p12[1]/d, p12[2]/d }; - - //Now find vector from the origin of the new system to the third point. - float p13[3] = { delta_tower3_x - delta_tower1_x, delta_tower3_y - delta_tower1_y, z3 - z1 }; - - //Now use dot product to find the component of this vector on the X axis. - float i = ex[0]*p13[0] + ex[1]*p13[1] + ex[2]*p13[2]; - - //Now create a vector along the x axis that represents the x component of p13. - float iex[3] = { ex[0]*i, ex[1]*i, ex[2]*i }; - - //Now subtract the X component away from the original vector leaving only the Y component. We use the - //variable that will be the unit vector after we scale it. - float ey[3] = { p13[0] - iex[0], p13[1] - iex[1], p13[2] - iex[2]}; - - //The magnitude of Y component - float j = sqrt(sq(ey[0]) + sq(ey[1]) + sq(ey[2])); - - //Now make vector a unit vector - ey[0] /= j; ey[1] /= j; ey[2] /= j; - - //The cross product of the unit x and y is the unit z - //float[] ez = vectorCrossProd(ex, ey); - float ez[3] = { ex[1]*ey[2] - ex[2]*ey[1], ex[2]*ey[0] - ex[0]*ey[2], ex[0]*ey[1] - ex[1]*ey[0] }; - - //Now we have the d, i and j values defined in Wikipedia. - //We can plug them into the equations defined in - //Wikipedia for Xnew, Ynew and Znew - float Xnew = (delta_diagonal_rod_2_tower_1 - delta_diagonal_rod_2_tower_2 + d*d)/(d*2); - float Ynew = ((delta_diagonal_rod_2_tower_1 - delta_diagonal_rod_2_tower_3 + i*i + j*j)/2 - i*Xnew) /j; - float Znew = sqrt(delta_diagonal_rod_2_tower_1 - Xnew*Xnew - Ynew*Ynew); - - //Now we can start from the origin in the old coords and - //add vectors in the old coords that represent the - //Xnew, Ynew and Znew to find the point in the old system - cartesian_position[X_AXIS] = delta_tower1_x + ex[0]*Xnew + ey[0]*Ynew - ez[0]*Znew; - cartesian_position[Y_AXIS] = delta_tower1_y + ex[1]*Xnew + ey[1]*Ynew - ez[1]*Znew; - cartesian_position[Z_AXIS] = z1 + ex[2]*Xnew + ey[2]*Ynew - ez[2]*Znew; - }; - - void forward_kinematics_DELTA(float point[3]) { - forward_kinematics_DELTA(point[X_AXIS], point[Y_AXIS], point[Z_AXIS]); - } - - void set_cartesian_from_steppers() { - forward_kinematics_DELTA(stepper.get_axis_position_mm(X_AXIS), - stepper.get_axis_position_mm(Y_AXIS), - stepper.get_axis_position_mm(Z_AXIS)); - } - - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // Adjust print surface height by linear interpolation over the bed_level array. - void adjust_delta(float cartesian[3]) { - if (delta_grid_spacing[0] == 0 || delta_grid_spacing[1] == 0) return; // G29 not done! - - int half = (AUTO_BED_LEVELING_GRID_POINTS - 1) / 2; - float h1 = 0.001 - half, h2 = half - 0.001, - grid_x = max(h1, min(h2, RAW_X_POSITION(cartesian[X_AXIS]) / delta_grid_spacing[0])), - grid_y = max(h1, min(h2, RAW_Y_POSITION(cartesian[Y_AXIS]) / delta_grid_spacing[1])); - int floor_x = floor(grid_x), floor_y = floor(grid_y); - float ratio_x = grid_x - floor_x, ratio_y = grid_y - floor_y, - z1 = bed_level[floor_x + half][floor_y + half], - z2 = bed_level[floor_x + half][floor_y + half + 1], - z3 = bed_level[floor_x + half + 1][floor_y + half], - z4 = bed_level[floor_x + half + 1][floor_y + half + 1], - left = (1 - ratio_y) * z1 + ratio_y * z2, - right = (1 - ratio_y) * z3 + ratio_y * z4, - offset = (1 - ratio_x) * left + ratio_x * right; - - delta[X_AXIS] += offset; - delta[Y_AXIS] += offset; - delta[Z_AXIS] += offset; - - /** - SERIAL_ECHOPGM("grid_x="); SERIAL_ECHO(grid_x); - SERIAL_ECHOPGM(" grid_y="); SERIAL_ECHO(grid_y); - SERIAL_ECHOPGM(" floor_x="); SERIAL_ECHO(floor_x); - SERIAL_ECHOPGM(" floor_y="); SERIAL_ECHO(floor_y); - SERIAL_ECHOPGM(" ratio_x="); SERIAL_ECHO(ratio_x); - SERIAL_ECHOPGM(" ratio_y="); SERIAL_ECHO(ratio_y); - SERIAL_ECHOPGM(" z1="); SERIAL_ECHO(z1); - SERIAL_ECHOPGM(" z2="); SERIAL_ECHO(z2); - SERIAL_ECHOPGM(" z3="); SERIAL_ECHO(z3); - SERIAL_ECHOPGM(" z4="); SERIAL_ECHO(z4); - SERIAL_ECHOPGM(" left="); SERIAL_ECHO(left); - SERIAL_ECHOPGM(" right="); SERIAL_ECHO(right); - SERIAL_ECHOPGM(" offset="); SERIAL_ECHOLN(offset); - */ - } - #endif // AUTO_BED_LEVELING_FEATURE - -#endif // DELTA - -void set_current_from_steppers_for_axis(AxisEnum axis) { - #if ENABLED(DELTA) - set_cartesian_from_steppers(); - current_position[axis] = LOGICAL_POSITION(cartesian_position[axis], axis); - #elif ENABLED(AUTO_BED_LEVELING_FEATURE) - vector_3 pos = planner.adjusted_position(); - current_position[axis] = axis == X_AXIS ? pos.x : axis == Y_AXIS ? pos.y : pos.z; - #else - current_position[axis] = stepper.get_axis_position_mm(axis); // CORE handled transparently - #endif -} - -#if ENABLED(MESH_BED_LEVELING) - -// This function is used to split lines on mesh borders so each segment is only part of one mesh area -void mesh_line_to_destination(float fr_mm_m, uint8_t x_splits = 0xff, uint8_t y_splits = 0xff) { - int cx1 = mbl.cell_index_x(RAW_CURRENT_POSITION(X_AXIS)), - cy1 = mbl.cell_index_y(RAW_CURRENT_POSITION(Y_AXIS)), - cx2 = mbl.cell_index_x(RAW_X_POSITION(destination[X_AXIS])), - cy2 = mbl.cell_index_y(RAW_Y_POSITION(destination[Y_AXIS])); - NOMORE(cx1, MESH_NUM_X_POINTS - 2); - NOMORE(cy1, MESH_NUM_Y_POINTS - 2); - NOMORE(cx2, MESH_NUM_X_POINTS - 2); - NOMORE(cy2, MESH_NUM_Y_POINTS - 2); - - if (cx1 == cx2 && cy1 == cy2) { - // Start and end on same mesh square - line_to_destination(fr_mm_m); - set_current_to_destination(); - return; - } - - #define MBL_SEGMENT_END(A) (current_position[A ##_AXIS] + (destination[A ##_AXIS] - current_position[A ##_AXIS]) * normalized_dist) - - float normalized_dist, end[NUM_AXIS]; - - // Split at the left/front border of the right/top square - int8_t gcx = max(cx1, cx2), gcy = max(cy1, cy2); - if (cx2 != cx1 && TEST(x_splits, gcx)) { - memcpy(end, destination, sizeof(end)); - destination[X_AXIS] = LOGICAL_X_POSITION(mbl.get_probe_x(gcx)); - normalized_dist = (destination[X_AXIS] - current_position[X_AXIS]) / (end[X_AXIS] - current_position[X_AXIS]); - destination[Y_AXIS] = MBL_SEGMENT_END(Y); - CBI(x_splits, gcx); - } - else if (cy2 != cy1 && TEST(y_splits, gcy)) { - memcpy(end, destination, sizeof(end)); - destination[Y_AXIS] = LOGICAL_Y_POSITION(mbl.get_probe_y(gcy)); - normalized_dist = (destination[Y_AXIS] - current_position[Y_AXIS]) / (end[Y_AXIS] - current_position[Y_AXIS]); - destination[X_AXIS] = MBL_SEGMENT_END(X); - CBI(y_splits, gcy); - } - else { - // Already split on a border - line_to_destination(fr_mm_m); - set_current_to_destination(); - return; - } - - destination[Z_AXIS] = MBL_SEGMENT_END(Z); - destination[E_AXIS] = MBL_SEGMENT_END(E); - - // Do the split and look for more borders - mesh_line_to_destination(fr_mm_m, x_splits, y_splits); - - // Restore destination from stack - memcpy(destination, end, sizeof(end)); - mesh_line_to_destination(fr_mm_m, x_splits, y_splits); -} -#endif // MESH_BED_LEVELING - -#if ENABLED(DELTA) || ENABLED(SCARA) - - inline bool prepare_kinematic_move_to(float target[NUM_AXIS]) { - float difference[NUM_AXIS]; - LOOP_XYZE(i) difference[i] = target[i] - current_position[i]; - - float cartesian_mm = sqrt(sq(difference[X_AXIS]) + sq(difference[Y_AXIS]) + sq(difference[Z_AXIS])); - if (cartesian_mm < 0.000001) cartesian_mm = abs(difference[E_AXIS]); - if (cartesian_mm < 0.000001) return false; - float _feedrate_mm_s = MMM_TO_MMS_SCALED(feedrate_mm_m); - float seconds = cartesian_mm / _feedrate_mm_s; - int steps = max(1, int(delta_segments_per_second * seconds)); - float inv_steps = 1.0/steps; - - // SERIAL_ECHOPGM("mm="); SERIAL_ECHO(cartesian_mm); - // SERIAL_ECHOPGM(" seconds="); SERIAL_ECHO(seconds); - // SERIAL_ECHOPGM(" steps="); SERIAL_ECHOLN(steps); - - for (int s = 1; s <= steps; s++) { - - float fraction = float(s) * inv_steps; - - LOOP_XYZE(i) - target[i] = current_position[i] + difference[i] * fraction; - - inverse_kinematics(target); - - #if ENABLED(DELTA) && ENABLED(AUTO_BED_LEVELING_FEATURE) - if (!bed_leveling_in_progress) adjust_delta(target); - #endif - - //DEBUG_POS("prepare_kinematic_move_to", target); - //DEBUG_POS("prepare_kinematic_move_to", delta); - - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], target[E_AXIS], _feedrate_mm_s, active_extruder); - } - return true; - } - -#endif // DELTA || SCARA - -#if ENABLED(DUAL_X_CARRIAGE) - - inline bool prepare_move_to_destination_dualx() { - if (active_extruder_parked) { - if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && active_extruder == 0) { - // move duplicate extruder into correct duplication position. - planner.set_position_mm( - LOGICAL_X_POSITION(inactive_extruder_x_pos), - current_position[Y_AXIS], - current_position[Z_AXIS], - current_position[E_AXIS] - ); - planner.buffer_line(current_position[X_AXIS] + duplicate_extruder_x_offset, - current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], planner.max_feedrate_mm_s[X_AXIS], 1); - SYNC_PLAN_POSITION_KINEMATIC(); - stepper.synchronize(); - extruder_duplication_enabled = true; - active_extruder_parked = false; - } - else if (dual_x_carriage_mode == DXC_AUTO_PARK_MODE) { // handle unparking of head - if (current_position[E_AXIS] == destination[E_AXIS]) { - // This is a travel move (with no extrusion) - // Skip it, but keep track of the current position - // (so it can be used as the start of the next non-travel move) - if (delayed_move_time != 0xFFFFFFFFUL) { - set_current_to_destination(); - NOLESS(raised_parked_position[Z_AXIS], destination[Z_AXIS]); - delayed_move_time = millis(); - return false; - } - } - delayed_move_time = 0; - // unpark extruder: 1) raise, 2) move into starting XY position, 3) lower - planner.buffer_line(raised_parked_position[X_AXIS], raised_parked_position[Y_AXIS], raised_parked_position[Z_AXIS], current_position[E_AXIS], planner.max_feedrate_mm_s[Z_AXIS], active_extruder); - planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], raised_parked_position[Z_AXIS], current_position[E_AXIS], PLANNER_XY_FEEDRATE(), active_extruder); - planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], planner.max_feedrate_mm_s[Z_AXIS], active_extruder); - active_extruder_parked = false; - } - } - return true; - } - -#endif // DUAL_X_CARRIAGE - -#if DISABLED(DELTA) && DISABLED(SCARA) - - inline bool prepare_move_to_destination_cartesian() { - // Do not use feedrate_percentage for E or Z only moves - if (current_position[X_AXIS] == destination[X_AXIS] && current_position[Y_AXIS] == destination[Y_AXIS]) { - line_to_destination(); - } - else { - #if ENABLED(MESH_BED_LEVELING) - if (mbl.active()) { - mesh_line_to_destination(MMM_SCALED(feedrate_mm_m)); - return false; - } - else - #endif - line_to_destination(MMM_SCALED(feedrate_mm_m)); - } - return true; - } - -#endif // !DELTA && !SCARA - -#if ENABLED(PREVENT_DANGEROUS_EXTRUDE) - - inline void prevent_dangerous_extrude(float& curr_e, float& dest_e) { - if (DEBUGGING(DRYRUN)) return; - float de = dest_e - curr_e; - if (de) { - if (thermalManager.tooColdToExtrude(active_extruder)) { - curr_e = dest_e; // Behave as if the move really took place, but ignore E part - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_ERR_COLD_EXTRUDE_STOP); - } - #if ENABLED(PREVENT_LENGTHY_EXTRUDE) - if (labs(de) > EXTRUDE_MAXLENGTH) { - curr_e = dest_e; // Behave as if the move really took place, but ignore E part - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_ERR_LONG_EXTRUDE_STOP); - } - #endif - } - } - -#endif // PREVENT_DANGEROUS_EXTRUDE - -/** - * Prepare a single move and get ready for the next one - * - * (This may call planner.buffer_line several times to put - * smaller moves into the planner for DELTA or SCARA.) - */ -void prepare_move_to_destination() { - clamp_to_software_endstops(destination); - refresh_cmd_timeout(); - - #if ENABLED(PREVENT_DANGEROUS_EXTRUDE) - prevent_dangerous_extrude(current_position[E_AXIS], destination[E_AXIS]); - #endif - - #if ENABLED(DELTA) || ENABLED(SCARA) - if (!prepare_kinematic_move_to(destination)) return; - #else - #if ENABLED(DUAL_X_CARRIAGE) - if (!prepare_move_to_destination_dualx()) return; - #endif - if (!prepare_move_to_destination_cartesian()) return; - #endif - - set_current_to_destination(); -} - -#if ENABLED(ARC_SUPPORT) - /** - * Plan an arc in 2 dimensions - * - * The arc is approximated by generating many small linear segments. - * The length of each segment is configured in MM_PER_ARC_SEGMENT (Default 1mm) - * Arcs should only be made relatively large (over 5mm), as larger arcs with - * larger segments will tend to be more efficient. Your slicer should have - * options for G2/G3 arc generation. In future these options may be GCode tunable. - */ - void plan_arc( - float target[NUM_AXIS], // Destination position - float* offset, // Center of rotation relative to current_position - uint8_t clockwise // Clockwise? - ) { - - float radius = HYPOT(offset[X_AXIS], offset[Y_AXIS]), - center_X = current_position[X_AXIS] + offset[X_AXIS], - center_Y = current_position[Y_AXIS] + offset[Y_AXIS], - linear_travel = target[Z_AXIS] - current_position[Z_AXIS], - extruder_travel = target[E_AXIS] - current_position[E_AXIS], - r_X = -offset[X_AXIS], // Radius vector from center to current location - r_Y = -offset[Y_AXIS], - rt_X = target[X_AXIS] - center_X, - rt_Y = target[Y_AXIS] - center_Y; - - // CCW angle of rotation between position and target from the circle center. Only one atan2() trig computation required. - float angular_travel = atan2(r_X * rt_Y - r_Y * rt_X, r_X * rt_X + r_Y * rt_Y); - if (angular_travel < 0) angular_travel += RADIANS(360); - if (clockwise) angular_travel -= RADIANS(360); - - // Make a circle if the angular rotation is 0 - if (angular_travel == 0 && current_position[X_AXIS] == target[X_AXIS] && current_position[Y_AXIS] == target[Y_AXIS]) - angular_travel += RADIANS(360); - - float mm_of_travel = HYPOT(angular_travel * radius, fabs(linear_travel)); - if (mm_of_travel < 0.001) return; - uint16_t segments = floor(mm_of_travel / (MM_PER_ARC_SEGMENT)); - if (segments == 0) segments = 1; - - float theta_per_segment = angular_travel / segments; - float linear_per_segment = linear_travel / segments; - float extruder_per_segment = extruder_travel / segments; - - /** - * Vector rotation by transformation matrix: r is the original vector, r_T is the rotated vector, - * and phi is the angle of rotation. Based on the solution approach by Jens Geisler. - * r_T = [cos(phi) -sin(phi); - * sin(phi) cos(phi] * r ; - * - * For arc generation, the center of the circle is the axis of rotation and the radius vector is - * defined from the circle center to the initial position. Each line segment is formed by successive - * vector rotations. This requires only two cos() and sin() computations to form the rotation - * matrix for the duration of the entire arc. Error may accumulate from numerical round-off, since - * all double numbers are single precision on the Arduino. (True double precision will not have - * round off issues for CNC applications.) Single precision error can accumulate to be greater than - * tool precision in some cases. Therefore, arc path correction is implemented. - * - * Small angle approximation may be used to reduce computation overhead further. This approximation - * holds for everything, but very small circles and large MM_PER_ARC_SEGMENT values. In other words, - * theta_per_segment would need to be greater than 0.1 rad and N_ARC_CORRECTION would need to be large - * to cause an appreciable drift error. N_ARC_CORRECTION~=25 is more than small enough to correct for - * numerical drift error. N_ARC_CORRECTION may be on the order a hundred(s) before error becomes an - * issue for CNC machines with the single precision Arduino calculations. - * - * This approximation also allows plan_arc to immediately insert a line segment into the planner - * without the initial overhead of computing cos() or sin(). By the time the arc needs to be applied - * a correction, the planner should have caught up to the lag caused by the initial plan_arc overhead. - * This is important when there are successive arc motions. - */ - // Vector rotation matrix values - float cos_T = 1 - 0.5 * sq(theta_per_segment); // Small angle approximation - float sin_T = theta_per_segment; - - float arc_target[NUM_AXIS]; - float sin_Ti, cos_Ti, r_new_Y; - uint16_t i; - int8_t count = 0; - - // Initialize the linear axis - arc_target[Z_AXIS] = current_position[Z_AXIS]; - - // Initialize the extruder axis - arc_target[E_AXIS] = current_position[E_AXIS]; - - float fr_mm_s = MMM_TO_MMS_SCALED(feedrate_mm_m); - - millis_t next_idle_ms = millis() + 200UL; - - for (i = 1; i < segments; i++) { // Iterate (segments-1) times - - thermalManager.manage_heater(); - millis_t now = millis(); - if (ELAPSED(now, next_idle_ms)) { - next_idle_ms = now + 200UL; - idle(); - } - - if (++count < N_ARC_CORRECTION) { - // Apply vector rotation matrix to previous r_X / 1 - r_new_Y = r_X * sin_T + r_Y * cos_T; - r_X = r_X * cos_T - r_Y * sin_T; - r_Y = r_new_Y; - } - else { - // Arc correction to radius vector. Computed only every N_ARC_CORRECTION increments. - // Compute exact location by applying transformation matrix from initial radius vector(=-offset). - // To reduce stuttering, the sin and cos could be computed at different times. - // For now, compute both at the same time. - cos_Ti = cos(i * theta_per_segment); - sin_Ti = sin(i * theta_per_segment); - r_X = -offset[X_AXIS] * cos_Ti + offset[Y_AXIS] * sin_Ti; - r_Y = -offset[X_AXIS] * sin_Ti - offset[Y_AXIS] * cos_Ti; - count = 0; - } - - // Update arc_target location - arc_target[X_AXIS] = center_X + r_X; - arc_target[Y_AXIS] = center_Y + r_Y; - arc_target[Z_AXIS] += linear_per_segment; - arc_target[E_AXIS] += extruder_per_segment; - - clamp_to_software_endstops(arc_target); - - #if ENABLED(DELTA) || ENABLED(SCARA) - inverse_kinematics(arc_target); - #if ENABLED(DELTA) && ENABLED(AUTO_BED_LEVELING_FEATURE) - adjust_delta(arc_target); - #endif - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], arc_target[E_AXIS], fr_mm_s, active_extruder); - #else - planner.buffer_line(arc_target[X_AXIS], arc_target[Y_AXIS], arc_target[Z_AXIS], arc_target[E_AXIS], fr_mm_s, active_extruder); - #endif - } - - // Ensure last segment arrives at target location. - #if ENABLED(DELTA) || ENABLED(SCARA) - inverse_kinematics(target); - #if ENABLED(DELTA) && ENABLED(AUTO_BED_LEVELING_FEATURE) - adjust_delta(target); - #endif - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], target[E_AXIS], fr_mm_s, active_extruder); - #else - planner.buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], fr_mm_s, active_extruder); - #endif - - // As far as the parser is concerned, the position is now == target. In reality the - // motion control system might still be processing the action and the real tool position - // in any intermediate location. - set_current_to_destination(); - } -#endif - -#if ENABLED(BEZIER_CURVE_SUPPORT) - - void plan_cubic_move(const float offset[4]) { - cubic_b_spline(current_position, destination, offset, MMM_TO_MMS_SCALED(feedrate_mm_m), active_extruder); - - // As far as the parser is concerned, the position is now == target. In reality the - // motion control system might still be processing the action and the real tool position - // in any intermediate location. - set_current_to_destination(); - } - -#endif // BEZIER_CURVE_SUPPORT - -#if HAS_CONTROLLERFAN - - void controllerFan() { - static millis_t lastMotorOn = 0; // Last time a motor was turned on - static millis_t nextMotorCheck = 0; // Last time the state was checked - millis_t ms = millis(); - if (ELAPSED(ms, nextMotorCheck)) { - nextMotorCheck = ms + 2500UL; // Not a time critical function, so only check every 2.5s - if (X_ENABLE_READ == X_ENABLE_ON || Y_ENABLE_READ == Y_ENABLE_ON || Z_ENABLE_READ == Z_ENABLE_ON || thermalManager.soft_pwm_bed > 0 - || E0_ENABLE_READ == E_ENABLE_ON // If any of the drivers are enabled... - #if E_STEPPERS > 1 - || E1_ENABLE_READ == E_ENABLE_ON - #if HAS_X2_ENABLE - || X2_ENABLE_READ == X_ENABLE_ON - #endif - #if E_STEPPERS > 2 - || E2_ENABLE_READ == E_ENABLE_ON - #if E_STEPPERS > 3 - || E3_ENABLE_READ == E_ENABLE_ON - #endif - #endif - #endif - ) { - lastMotorOn = ms; //... set time to NOW so the fan will turn on - } - - // Fan off if no steppers have been enabled for CONTROLLERFAN_SECS seconds - uint8_t speed = (!lastMotorOn || ELAPSED(ms, lastMotorOn + (CONTROLLERFAN_SECS) * 1000UL)) ? 0 : CONTROLLERFAN_SPEED; - - // allows digital or PWM fan output to be used (see M42 handling) - digitalWrite(CONTROLLERFAN_PIN, speed); - analogWrite(CONTROLLERFAN_PIN, speed); - } - } - -#endif // HAS_CONTROLLERFAN - -#if ENABLED(SCARA) - - void forward_kinematics_SCARA(float f_scara[3]) { - // Perform forward kinematics, and place results in delta[3] - // The maths and first version has been done by QHARLEY . Integrated into masterbranch 06/2014 and slightly restructured by Joachim Cerny in June 2014 - - float x_sin, x_cos, y_sin, y_cos; - - //SERIAL_ECHOPGM("f_delta x="); SERIAL_ECHO(f_scara[X_AXIS]); - //SERIAL_ECHOPGM(" y="); SERIAL_ECHO(f_scara[Y_AXIS]); - - x_sin = sin(f_scara[X_AXIS] / SCARA_RAD2DEG) * Linkage_1; - x_cos = cos(f_scara[X_AXIS] / SCARA_RAD2DEG) * Linkage_1; - y_sin = sin(f_scara[Y_AXIS] / SCARA_RAD2DEG) * Linkage_2; - y_cos = cos(f_scara[Y_AXIS] / SCARA_RAD2DEG) * Linkage_2; - - //SERIAL_ECHOPGM(" x_sin="); SERIAL_ECHO(x_sin); - //SERIAL_ECHOPGM(" x_cos="); SERIAL_ECHO(x_cos); - //SERIAL_ECHOPGM(" y_sin="); SERIAL_ECHO(y_sin); - //SERIAL_ECHOPGM(" y_cos="); SERIAL_ECHOLN(y_cos); - - delta[X_AXIS] = x_cos + y_cos + SCARA_offset_x; //theta - delta[Y_AXIS] = x_sin + y_sin + SCARA_offset_y; //theta+phi - - //SERIAL_ECHOPGM(" delta[X_AXIS]="); SERIAL_ECHO(delta[X_AXIS]); - //SERIAL_ECHOPGM(" delta[Y_AXIS]="); SERIAL_ECHOLN(delta[Y_AXIS]); - } - - void inverse_kinematics(const float cartesian[3]) { - // Inverse kinematics. - // Perform SCARA IK and place results in delta[3]. - // The maths and first version were done by QHARLEY. - // Integrated, tweaked by Joachim Cerny in June 2014. - - float SCARA_pos[2]; - static float SCARA_C2, SCARA_S2, SCARA_K1, SCARA_K2, SCARA_theta, SCARA_psi; - - SCARA_pos[X_AXIS] = RAW_X_POSITION(cartesian[X_AXIS]) * axis_scaling[X_AXIS] - SCARA_offset_x; //Translate SCARA to standard X Y - SCARA_pos[Y_AXIS] = RAW_Y_POSITION(cartesian[Y_AXIS]) * axis_scaling[Y_AXIS] - SCARA_offset_y; // With scaling factor. - - #if (Linkage_1 == Linkage_2) - SCARA_C2 = ((sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS])) / (2 * (float)L1_2)) - 1; - #else - SCARA_C2 = (sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) - (float)L1_2 - (float)L2_2) / 45000; - #endif - - SCARA_S2 = sqrt(1 - sq(SCARA_C2)); - - SCARA_K1 = Linkage_1 + Linkage_2 * SCARA_C2; - SCARA_K2 = Linkage_2 * SCARA_S2; - - SCARA_theta = (atan2(SCARA_pos[X_AXIS], SCARA_pos[Y_AXIS]) - atan2(SCARA_K1, SCARA_K2)) * -1; - SCARA_psi = atan2(SCARA_S2, SCARA_C2); - - delta[X_AXIS] = SCARA_theta * SCARA_RAD2DEG; // Multiply by 180/Pi - theta is support arm angle - delta[Y_AXIS] = (SCARA_theta + SCARA_psi) * SCARA_RAD2DEG; // - equal to sub arm angle (inverted motor) - delta[Z_AXIS] = RAW_Z_POSITION(cartesian[Z_AXIS]); - - /** - SERIAL_ECHOPGM("cartesian x="); SERIAL_ECHO(cartesian[X_AXIS]); - SERIAL_ECHOPGM(" y="); SERIAL_ECHO(cartesian[Y_AXIS]); - SERIAL_ECHOPGM(" z="); SERIAL_ECHOLN(cartesian[Z_AXIS]); - - SERIAL_ECHOPGM("scara x="); SERIAL_ECHO(SCARA_pos[X_AXIS]); - SERIAL_ECHOPGM(" y="); SERIAL_ECHOLN(SCARA_pos[Y_AXIS]); - - SERIAL_ECHOPGM("delta x="); SERIAL_ECHO(delta[X_AXIS]); - SERIAL_ECHOPGM(" y="); SERIAL_ECHO(delta[Y_AXIS]); - SERIAL_ECHOPGM(" z="); SERIAL_ECHOLN(delta[Z_AXIS]); - - SERIAL_ECHOPGM("C2="); SERIAL_ECHO(SCARA_C2); - SERIAL_ECHOPGM(" S2="); SERIAL_ECHO(SCARA_S2); - SERIAL_ECHOPGM(" Theta="); SERIAL_ECHO(SCARA_theta); - SERIAL_ECHOPGM(" Psi="); SERIAL_ECHOLN(SCARA_psi); - SERIAL_EOL; - */ - } - -#endif // SCARA - -#if ENABLED(TEMP_STAT_LEDS) - - static bool red_led = false; - static millis_t next_status_led_update_ms = 0; - - void handle_status_leds(void) { - float max_temp = 0.0; - if (ELAPSED(millis(), next_status_led_update_ms)) { - next_status_led_update_ms += 500; // Update every 0.5s - HOTEND_LOOP() { - max_temp = max(max(max_temp, thermalManager.degHotend(e)), thermalManager.degTargetHotend(e)); - } - #if HAS_TEMP_BED - max_temp = max(max(max_temp, thermalManager.degTargetBed()), thermalManager.degBed()); - #endif - bool new_led = (max_temp > 55.0) ? true : (max_temp < 54.0) ? false : red_led; - if (new_led != red_led) { - red_led = new_led; - digitalWrite(STAT_LED_RED, new_led ? HIGH : LOW); - digitalWrite(STAT_LED_BLUE, new_led ? LOW : HIGH); - } - } - } - -#endif - -void enable_all_steppers() { - enable_x(); - enable_y(); - enable_z(); - enable_e0(); - enable_e1(); - enable_e2(); - enable_e3(); -} - -void disable_all_steppers() { - disable_x(); - disable_y(); - disable_z(); - disable_e0(); - disable_e1(); - disable_e2(); - disable_e3(); -} - -/** - * Standard idle routine keeps the machine alive - */ -void idle( - #if ENABLED(FILAMENT_CHANGE_FEATURE) - bool no_stepper_sleep/*=false*/ - #endif -) { - lcd_update(); - host_keepalive(); - manage_inactivity( - #if ENABLED(FILAMENT_CHANGE_FEATURE) - no_stepper_sleep - #endif - ); - - thermalManager.manage_heater(); - - #if ENABLED(PRINTCOUNTER) - print_job_timer.tick(); - #endif - - #if HAS_BUZZER && PIN_EXISTS(BEEPER) - buzzer.tick(); - #endif - - #ifdef UARM_SWIFT - swift_run(); - #endif // UARM_SWIFT -} - -/** - * Manage several activities: - * - Check for Filament Runout - * - Keep the command buffer full - * - Check for maximum inactive time between commands - * - Check for maximum inactive time between stepper commands - * - Check if pin CHDK needs to go LOW - * - Check for KILL button held down - * - Check for HOME button held down - * - Check if cooling fan needs to be switched on - * - Check if an idle but hot extruder needs filament extruded (EXTRUDER_RUNOUT_PREVENT) - */ -void manage_inactivity(bool ignore_stepper_queue/*=false*/) { - - #if ENABLED(FILAMENT_RUNOUT_SENSOR) - if ((IS_SD_PRINTING || print_job_timer.isRunning()) && !(READ(FIL_RUNOUT_PIN) ^ FIL_RUNOUT_INVERTING)) - handle_filament_runout(); - #endif - - if (commands_in_queue < BUFSIZE) get_available_commands(); - - millis_t ms = millis(); - - if (max_inactive_time && ELAPSED(ms, previous_cmd_ms + max_inactive_time)) kill(PSTR(MSG_KILLED)); - - if (stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time) - && !ignore_stepper_queue && !planner.blocks_queued()) { - #if ENABLED(DISABLE_INACTIVE_X) - disable_x(); - #endif - #if ENABLED(DISABLE_INACTIVE_Y) - disable_y(); - #endif - #if ENABLED(DISABLE_INACTIVE_Z) - disable_z(); - #endif - #if ENABLED(DISABLE_INACTIVE_E) - disable_e0(); - disable_e1(); - disable_e2(); - disable_e3(); - #endif - } - - #ifdef CHDK // Check if pin should be set to LOW after M240 set it to HIGH - if (chdkActive && PENDING(ms, chdkHigh + CHDK_DELAY)) { - chdkActive = false; - WRITE(CHDK, LOW); - } - #endif - - #if HAS_KILL - - // Check if the kill button was pressed and wait just in case it was an accidental - // key kill key press - // ------------------------------------------------------------------------------- - static int killCount = 0; // make the inactivity button a bit less responsive - const int KILL_DELAY = 750; - if (!READ(KILL_PIN)) - killCount++; - else if (killCount > 0) - killCount--; - - // Exceeded threshold and we can confirm that it was not accidental - // KILL the machine - // ---------------------------------------------------------------- - if (killCount >= KILL_DELAY) kill(PSTR(MSG_KILLED)); - #endif - - #if HAS_HOME - // Check to see if we have to home, use poor man's debouncer - // --------------------------------------------------------- - static int homeDebounceCount = 0; // poor man's debouncing count - const int HOME_DEBOUNCE_DELAY = 2500; - if (!READ(HOME_PIN)) { - if (!homeDebounceCount) { - enqueue_and_echo_commands_P(PSTR("G28")); - LCD_MESSAGEPGM(MSG_AUTO_HOME); - } - if (homeDebounceCount < HOME_DEBOUNCE_DELAY) - homeDebounceCount++; - else - homeDebounceCount = 0; - } - #endif - - #if HAS_CONTROLLERFAN - controllerFan(); // Check if fan should be turned on to cool stepper drivers down - #endif - - #if ENABLED(EXTRUDER_RUNOUT_PREVENT) - if (ELAPSED(ms, previous_cmd_ms + (EXTRUDER_RUNOUT_SECONDS) * 1000UL) - && thermalManager.degHotend(active_extruder) > EXTRUDER_RUNOUT_MINTEMP) { - #if ENABLED(SWITCHING_EXTRUDER) - bool oldstatus = E0_ENABLE_READ; - enable_e0(); - #else // !SWITCHING_EXTRUDER - bool oldstatus; - switch (active_extruder) { - case 0: - oldstatus = E0_ENABLE_READ; - enable_e0(); - break; - #if E_STEPPERS > 1 - case 1: - oldstatus = E1_ENABLE_READ; - enable_e1(); - break; - #if E_STEPPERS > 2 - case 2: - oldstatus = E2_ENABLE_READ; - enable_e2(); - break; - #if E_STEPPERS > 3 - case 3: - oldstatus = E3_ENABLE_READ; - enable_e3(); - break; - #endif - #endif - #endif - } - #endif // !SWITCHING_EXTRUDER - - float oldepos = current_position[E_AXIS], oldedes = destination[E_AXIS]; - planner.buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], - destination[E_AXIS] + (EXTRUDER_RUNOUT_EXTRUDE) * (EXTRUDER_RUNOUT_ESTEPS) / planner.axis_steps_per_mm[E_AXIS], - MMM_TO_MMS(EXTRUDER_RUNOUT_SPEED) * (EXTRUDER_RUNOUT_ESTEPS) / planner.axis_steps_per_mm[E_AXIS], active_extruder); - current_position[E_AXIS] = oldepos; - destination[E_AXIS] = oldedes; - planner.set_e_position_mm(oldepos); - previous_cmd_ms = ms; // refresh_cmd_timeout() - stepper.synchronize(); - #if ENABLED(SWITCHING_EXTRUDER) - E0_ENABLE_WRITE(oldstatus); - #else - switch (active_extruder) { - case 0: - E0_ENABLE_WRITE(oldstatus); - break; - #if E_STEPPERS > 1 - case 1: - E1_ENABLE_WRITE(oldstatus); - break; - #if E_STEPPERS > 2 - case 2: - E2_ENABLE_WRITE(oldstatus); - break; - #if E_STEPPERS > 3 - case 3: - E3_ENABLE_WRITE(oldstatus); - break; - #endif - #endif - #endif - } - #endif // !SWITCHING_EXTRUDER - } - #endif // EXTRUDER_RUNOUT_PREVENT - - #if ENABLED(DUAL_X_CARRIAGE) - // handle delayed move timeout - if (delayed_move_time && ELAPSED(ms, delayed_move_time + 1000UL) && IsRunning()) { - // travel moves have been received so enact them - delayed_move_time = 0xFFFFFFFFUL; // force moves to be done - set_destination_to_current(); - prepare_move_to_destination(); - } - #endif - - #if ENABLED(TEMP_STAT_LEDS) - handle_status_leds(); - #endif - - planner.check_axes_activity(); -} - -void kill(const char* lcd_msg) { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_KILLED); - - #if ENABLED(ULTRA_LCD) - kill_screen(lcd_msg); - #else - UNUSED(lcd_msg); - #endif - - for (int i = 5; i--;) delay(100); // Wait a short time - - cli(); // Stop interrupts - thermalManager.disable_all_heaters(); - disable_all_steppers(); - - #if HAS_POWER_SWITCH - pinMode(PS_ON_PIN, INPUT); - #endif - - suicide(); - while (1) { - #if ENABLED(USE_WATCHDOG) - watchdog_reset(); - #endif - } // Wait for reset -} - -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - - void handle_filament_runout() { - if (!filament_ran_out) { - filament_ran_out = true; - enqueue_and_echo_commands_P(PSTR(FILAMENT_RUNOUT_SCRIPT)); - stepper.synchronize(); - } - } - -#endif // FILAMENT_RUNOUT_SENSOR - -#if ENABLED(FAST_PWM_FAN) - - void setPwmFrequency(uint8_t pin, int val) { - val &= 0x07; - switch (digitalPinToTimer(pin)) { - #if defined(TCCR0A) - case TIMER0A: - case TIMER0B: - // TCCR0B &= ~(_BV(CS00) | _BV(CS01) | _BV(CS02)); - // TCCR0B |= val; - break; - #endif - #if defined(TCCR1A) - case TIMER1A: - case TIMER1B: - // TCCR1B &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12)); - // TCCR1B |= val; - break; - #endif - #if defined(TCCR2) - case TIMER2: - case TIMER2: - TCCR2 &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12)); - TCCR2 |= val; - break; - #endif - #if defined(TCCR2A) - case TIMER2A: - case TIMER2B: - TCCR2B &= ~(_BV(CS20) | _BV(CS21) | _BV(CS22)); - TCCR2B |= val; - break; - #endif - #if defined(TCCR3A) - case TIMER3A: - case TIMER3B: - case TIMER3C: - TCCR3B &= ~(_BV(CS30) | _BV(CS31) | _BV(CS32)); - TCCR3B |= val; - break; - #endif - #if defined(TCCR4A) - case TIMER4A: - case TIMER4B: - case TIMER4C: - TCCR4B &= ~(_BV(CS40) | _BV(CS41) | _BV(CS42)); - TCCR4B |= val; - break; - #endif - #if defined(TCCR5A) - case TIMER5A: - case TIMER5B: - case TIMER5C: - TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52)); - TCCR5B |= val; - break; - #endif - } - } -#endif // FAST_PWM_FAN - -void stop() { - thermalManager.disable_all_heaters(); - if (IsRunning()) { - Running = false; - Stopped_gcode_LastN = gcode_LastN; // Save last g_code for restart - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_STOPPED); - LCD_MESSAGEPGM(MSG_STOPPED); - } -} - -float calculate_volumetric_multiplier(float diameter) { - if (!volumetric_enabled || diameter == 0) return 1.0; - float d2 = diameter * 0.5; - return 1.0 / (M_PI * d2 * d2); -} - -void calculate_volumetric_multipliers() { - for (uint8_t i = 0; i < COUNT(filament_size); i++) - volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]); -} diff --git a/lib/Marlin/SanityCheck.h b/lib/Marlin/SanityCheck.h deleted file mode 100644 index bec3d46..0000000 --- a/lib/Marlin/SanityCheck.h +++ /dev/null @@ -1,736 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * SanityCheck.h - * - * Test configuration values for errors at compile-time. - */ - -/** - * Due to the high number of issues related with old versions of Arduino IDE - * we now prevent Marlin from compiling with older toolkits. - */ -#if !defined(ARDUINO) || ARDUINO < 10600 - #error "Versions of Arduino IDE prior to 1.6.0 are no longer supported, please update your toolkit." -#endif - -/** - * We try our best to include sanity checks for all the changes configuration - * directives because people have a tendency to use outdated config files with - * the bleding edge source code, but sometimes this is not enough. This check - * will force a minimum config file revision, otherwise Marlin will not build. - */ -#if ! defined(CONFIGURATION_H_VERSION) || CONFIGURATION_H_VERSION < REQUIRED_CONFIGURATION_H_VERSION - #error "You are using an old Configuration.h file, update it before building Marlin." -#endif - -#if ! defined(CONFIGURATION_ADV_H_VERSION) || CONFIGURATION_ADV_H_VERSION < REQUIRED_CONFIGURATION_ADV_H_VERSION - #error "You are using an old Configuration_adv.h file, update it before building Marlin." -#endif - -/** - * Marlin release, version and default string - */ -#ifndef SHORT_BUILD_VERSION - #error "SHORT_BUILD_VERSION must be specified." -#elif !defined(DETAILED_BUILD_VERSION) - #error "BUILD_VERSION must be specified." -#elif !defined(STRING_DISTRIBUTION_DATE) - #error "STRING_DISTRIBUTION_DATE must be specified." -#elif !defined(PROTOCOL_VERSION) - #error "PROTOCOL_VERSION must be specified." -#elif !defined(MACHINE_NAME) - #error "MACHINE_NAME must be specified." -#elif !defined(SOURCE_CODE_URL) - #error "SOURCE_CODE_URL must be specified." -#elif !defined(DEFAULT_MACHINE_UUID) - #error "DEFAULT_MACHINE_UUID must be specified." -#elif !defined(WEBSITE_URL) - #error "WEBSITE_URL must be specified." -#endif - -/** - * Dual Stepper Drivers - */ -#if ENABLED(X_DUAL_STEPPER_DRIVERS) && ENABLED(DUAL_X_CARRIAGE) - #error "DUAL_X_CARRIAGE is not compatible with X_DUAL_STEPPER_DRIVERS." -#elif ENABLED(X_DUAL_STEPPER_DRIVERS) && (!HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR) - #error "X_DUAL_STEPPER_DRIVERS requires X2 pins (and an extra E plug)." -#elif ENABLED(Y_DUAL_STEPPER_DRIVERS) && (!HAS_Y2_ENABLE || !HAS_Y2_STEP || !HAS_Y2_DIR) - #error "Y_DUAL_STEPPER_DRIVERS requires Y2 pins (and an extra E plug)." -#elif ENABLED(Z_DUAL_STEPPER_DRIVERS) && (!HAS_Z2_ENABLE || !HAS_Z2_STEP || !HAS_Z2_DIR) - #error "Z_DUAL_STEPPER_DRIVERS requires Z2 pins (and an extra E plug)." -#endif - -/** - * Progress Bar - */ -#if ENABLED(LCD_PROGRESS_BAR) - #if DISABLED(SDSUPPORT) - #error "LCD_PROGRESS_BAR requires SDSUPPORT." - #endif - #if ENABLED(DOGLCD) - #error "LCD_PROGRESS_BAR does not apply to graphical displays." - #endif - #if ENABLED(FILAMENT_LCD_DISPLAY) - #error "LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both." - #endif -#endif - -/** - * Babystepping - */ -#if ENABLED(BABYSTEPPING) - #if DISABLED(ULTRA_LCD) - #error "BABYSTEPPING requires an LCD controller." - #endif - #if ENABLED(SCARA) - #error "BABYSTEPPING is not implemented for SCARA yet." - #endif - #if ENABLED(DELTA) && ENABLED(BABYSTEP_XY) - #error "BABYSTEPPING only implemented for Z axis on deltabots." - #endif -#endif - -/** - * Filament Runout needs a pin and either SD Support or Auto print start detection - */ -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - #if !HAS_FIL_RUNOUT - #error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN." - #elif DISABLED(SDSUPPORT) && DISABLED(PRINTJOB_TIMER_AUTOSTART) - #error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART." - #endif -#endif - -/** - * Filament Change with Extruder Runout Prevention - */ -#if ENABLED(FILAMENT_CHANGE_FEATURE) && ENABLED(EXTRUDER_RUNOUT_PREVENT) - #error "EXTRUDER_RUNOUT_PREVENT is incompatible with FILAMENT_CHANGE_FEATURE." -#endif - -/** - * Individual axis homing is useless for DELTAS - */ -#if ENABLED(INDIVIDUAL_AXIS_HOMING_MENU) && ENABLED(DELTA) - #error "INDIVIDUAL_AXIS_HOMING_MENU is incompatible with DELTA kinematics." -#endif - -/** - * Options only for EXTRUDERS > 1 - */ -#if EXTRUDERS > 1 - - #if EXTRUDERS > 4 - #error "The maximum number of EXTRUDERS in Marlin is 4." - #endif - - #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - #error "EXTRUDERS must be 1 with TEMP_SENSOR_1_AS_REDUNDANT." - #endif - - #if ENABLED(HEATERS_PARALLEL) - #error "EXTRUDERS must be 1 with HEATERS_PARALLEL." - #endif - -#elif ENABLED(SINGLENOZZLE) - #error "SINGLENOZZLE requires 2 or more EXTRUDERS." -#endif - -/** - * Only one type of extruder allowed - */ -#if (ENABLED(SWITCHING_EXTRUDER) && (ENABLED(SINGLENOZZLE) || ENABLED(MIXING_EXTRUDER))) \ - || (ENABLED(SINGLENOZZLE) && ENABLED(MIXING_EXTRUDER)) - #error "Please define only one type of extruder: SINGLENOZZLE, SWITCHING_EXTRUDER, or MIXING_EXTRUDER." -#endif - -/** - * Single Stepper Dual Extruder with switching servo - */ -#if ENABLED(SWITCHING_EXTRUDER) - #if ENABLED(DUAL_X_CARRIAGE) - #error "SWITCHING_EXTRUDER and DUAL_X_CARRIAGE are incompatible." - #elif EXTRUDERS != 2 - #error "SWITCHING_EXTRUDER requires exactly 2 EXTRUDERS." - #elif NUM_SERVOS < 1 - #error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1." - #endif -#endif - -/** - * Mixing Extruder requirements - */ -#if ENABLED(MIXING_EXTRUDER) - #if EXTRUDERS > 1 - #error "MIXING_EXTRUDER currently only supports one extruder." - #endif - #if MIXING_STEPPERS < 2 - #error "You must set MIXING_STEPPERS >= 2 for a mixing extruder." - #endif - #if ENABLED(FILAMENT_SENSOR) - #error "MIXING_EXTRUDER is incompatible with FILAMENT_SENSOR. Comment out this line to use it anyway." - #endif -#endif - -/** - * Limited number of servos - */ -#if defined(NUM_SERVOS) && NUM_SERVOS > 0 - #if NUM_SERVOS > 4 - #error "The maximum number of SERVOS in Marlin is 4." - #elif HAS_Z_SERVO_ENDSTOP && Z_ENDSTOP_SERVO_NR >= NUM_SERVOS - #error "Z_ENDSTOP_SERVO_NR must be smaller than NUM_SERVOS." - #endif -#endif - -/** - * Servo deactivation depends on servo endstops - */ -#if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) && !HAS_Z_SERVO_ENDSTOP - #error "Z_ENDSTOP_SERVO_NR is required for DEACTIVATE_SERVOS_AFTER_MOVE." -#endif - -/** - * Required LCD language - */ -#if DISABLED(DOGLCD) && ENABLED(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780) - #error "You must set DISPLAY_CHARSET_HD44780 to JAPANESE, WESTERN or CYRILLIC for your LCD controller." -#endif - -/** - * Bed Heating Options - PID vs Limit Switching - */ -#if ENABLED(PIDTEMPBED) && ENABLED(BED_LIMIT_SWITCHING) - #error "To use BED_LIMIT_SWITCHING you must disable PIDTEMPBED." -#endif - -/** - * Mesh Bed Leveling - */ -#if ENABLED(MESH_BED_LEVELING) - #if ENABLED(DELTA) - #error "MESH_BED_LEVELING does not yet support DELTA printers." - #elif ENABLED(AUTO_BED_LEVELING_FEATURE) - #error "Select AUTO_BED_LEVELING_FEATURE or MESH_BED_LEVELING, not both." - #elif MESH_NUM_X_POINTS > 9 || MESH_NUM_Y_POINTS > 9 - #error "MESH_NUM_X_POINTS and MESH_NUM_Y_POINTS must be less than 10." - #endif -#elif ENABLED(MANUAL_BED_LEVELING) - #error "MESH_BED_LEVELING is required for MANUAL_BED_LEVELING." -#endif - -/** - * Probes - */ - -#if PROBE_SELECTED - - #if ENABLED(Z_PROBE_SLED) && ENABLED(DELTA) - #error "You cannot use Z_PROBE_SLED with DELTA." - #endif - - /** - * NUM_SERVOS is required for a Z servo probe - */ - #if HAS_Z_SERVO_ENDSTOP - #ifndef NUM_SERVOS - #error "You must set NUM_SERVOS for a Z servo probe (Z_ENDSTOP_SERVO_NR)." - #elif Z_ENDSTOP_SERVO_NR >= NUM_SERVOS - #error "Z_ENDSTOP_SERVO_NR must be less than NUM_SERVOS." - #endif - #endif - - /** - * A probe needs a pin - */ - #if !PROBE_PIN_CONFIGURED - #error "A probe needs a pin! Use Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN." - #endif - - /** - * Require a Z min pin - */ - #if HAS_Z_MIN - // Z_MIN_PIN and Z_MIN_PROBE_PIN can't co-exist when Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - #if HAS_Z_MIN_PROBE_PIN && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #error "A probe cannot have more than one pin! Use Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN." - #endif - #elif !HAS_Z_MIN_PROBE_PIN || (DISABLED(Z_MIN_PROBE_ENDSTOP) || ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)) - // A pin was set for the Z probe, but not enabled. - #error "A probe requires a Z_MIN or Z_PROBE pin. Z_MIN_PIN or Z_MIN_PROBE_PIN must point to a valid hardware pin." - #endif - - /** - * Make sure the plug is enabled if it's used - */ - #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && DISABLED(USE_ZMIN_PLUG) - #error "You must enable USE_ZMIN_PLUG if any probe or endstop is connected to the ZMIN plug." - #endif - - /** - * Only allow one probe option to be defined - */ - #if (ENABLED(FIX_MOUNTED_PROBE) && (ENABLED(Z_PROBE_ALLEN_KEY) || HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))) \ - || (ENABLED(Z_PROBE_ALLEN_KEY) && (HAS_Z_SERVO_ENDSTOP || ENABLED(Z_PROBE_SLED))) \ - || (HAS_Z_SERVO_ENDSTOP && ENABLED(Z_PROBE_SLED)) - #error "Please define only one type of probe: Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." - #endif - - /** - * Don't allow nonsense probe-pin settings - */ - #if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && ENABLED(Z_MIN_PROBE_ENDSTOP) - #error "You can't enable both Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN and Z_MIN_PROBE_ENDSTOP." - #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) && ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) - #error "Don't enable DISABLE_Z_MIN_PROBE_ENDSTOP with Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN." - #elif ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) && DISABLED(Z_MIN_PROBE_ENDSTOP) - #error "DISABLE_Z_MIN_PROBE_ENDSTOP requires Z_MIN_PROBE_ENDSTOP to be set." - #endif - - /** - * Require a Z probe pin if Z_MIN_PROBE_ENDSTOP is enabled. - */ - #if ENABLED(Z_MIN_PROBE_ENDSTOP) - #if !HAS_Z_MIN_PROBE_PIN - #error "Z_MIN_PROBE_ENDSTOP requires a Z_MIN_PROBE_PIN in your board's pins_XXXX.h file." - #endif - // Forcing Servo definitions can break some hall effect sensor setups. Leaving these here for further comment. - //#ifndef NUM_SERVOS - // #error "You must have NUM_SERVOS defined and there must be at least 1 configured to use Z_MIN_PROBE_ENDSTOP." - //#endif - //#if defined(NUM_SERVOS) && NUM_SERVOS < 1 - // #error "You must have at least 1 servo defined for NUM_SERVOS to use Z_MIN_PROBE_ENDSTOP." - //#endif - //#if Z_ENDSTOP_SERVO_NR < 0 - // #error "You must have Z_ENDSTOP_SERVO_NR set to at least 0 or above to use Z_MIN_PROBE_ENDSTOP." - //#endif - //#ifndef Z_SERVO_ANGLES - // #error "You must have Z_SERVO_ANGLES defined for Z Extend and Retract to use Z_MIN_PROBE_ENDSTOP." - //#endif - #endif - - /** - * Make sure Z raise values are set - */ - #if !defined(Z_PROBE_DEPLOY_HEIGHT) - #error "You must set Z_PROBE_DEPLOY_HEIGHT in your configuration." - #elif !defined(Z_PROBE_TRAVEL_HEIGHT) - #error "You must set Z_PROBE_TRAVEL_HEIGHT in your configuration." - #elif Z_PROBE_DEPLOY_HEIGHT < 0 - #error "Probes need Z_PROBE_DEPLOY_HEIGHT >= 0." - #elif Z_PROBE_TRAVEL_HEIGHT < 0 - #error "Probes need Z_PROBE_TRAVEL_HEIGHT >= 0." - #endif - -#else - - /** - * Require some kind of probe for bed leveling and probe testing - */ - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - #error "AUTO_BED_LEVELING_FEATURE requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." - #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST) - #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE." - #endif - -#endif - -/** - * Make sure Z_SAFE_HOMING point is reachable - */ -#if ENABLED(Z_SAFE_HOMING) - #if Z_SAFE_HOMING_X_POINT < MIN_PROBE_X || Z_SAFE_HOMING_X_POINT > MAX_PROBE_X - #if HAS_BED_PROBE - #error "Z_SAFE_HOMING_X_POINT can't be reached by the Z probe." - #else - #error "Z_SAFE_HOMING_X_POINT can't be reached by the nozzle." - #endif - #elif Z_SAFE_HOMING_Y_POINT < MIN_PROBE_Y || Z_SAFE_HOMING_Y_POINT > MAX_PROBE_Y - #if HAS_BED_PROBE - #error "Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe." - #else - #error "Z_SAFE_HOMING_Y_POINT can't be reached by the nozzle." - #endif - #endif -#endif // Z_SAFE_HOMING - -/** - * Auto Bed Leveling - */ -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - /** - * Delta has limited bed leveling options - */ - #if ENABLED(DELTA) && DISABLED(AUTO_BED_LEVELING_GRID) - #error "You must use AUTO_BED_LEVELING_GRID for DELTA bed leveling." - #endif - - /** - * Check if Probe_Offset * Grid Points is greater than Probing Range - */ - #if ENABLED(AUTO_BED_LEVELING_GRID) - #ifndef DELTA_PROBEABLE_RADIUS - // Be sure points are in the right order - #if LEFT_PROBE_BED_POSITION > RIGHT_PROBE_BED_POSITION - #error "LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION." - #elif FRONT_PROBE_BED_POSITION > BACK_PROBE_BED_POSITION - #error "FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION." - #endif - // Make sure probing points are reachable - #if LEFT_PROBE_BED_POSITION < MIN_PROBE_X - #error "The given LEFT_PROBE_BED_POSITION can't be reached by the Z probe." - #elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X - #error "The given RIGHT_PROBE_BED_POSITION can't be reached by the Z probe." - #elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y - #error "The given FRONT_PROBE_BED_POSITION can't be reached by the Z probe." - #elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y - #error "The given BACK_PROBE_BED_POSITION can't be reached by the Z probe." - #endif - #endif - #else // !AUTO_BED_LEVELING_GRID - - // Check the triangulation points - #if ABL_PROBE_PT_1_X < MIN_PROBE_X || ABL_PROBE_PT_1_X > MAX_PROBE_X - #error "The given ABL_PROBE_PT_1_X can't be reached by the Z probe." - #elif ABL_PROBE_PT_2_X < MIN_PROBE_X || ABL_PROBE_PT_2_X > MAX_PROBE_X - #error "The given ABL_PROBE_PT_2_X can't be reached by the Z probe." - #elif ABL_PROBE_PT_3_X < MIN_PROBE_X || ABL_PROBE_PT_3_X > MAX_PROBE_X - #error "The given ABL_PROBE_PT_3_X can't be reached by the Z probe." - #elif ABL_PROBE_PT_1_Y < MIN_PROBE_Y || ABL_PROBE_PT_1_Y > MAX_PROBE_Y - #error "The given ABL_PROBE_PT_1_Y can't be reached by the Z probe." - #elif ABL_PROBE_PT_2_Y < MIN_PROBE_Y || ABL_PROBE_PT_2_Y > MAX_PROBE_Y - #error "The given ABL_PROBE_PT_2_Y can't be reached by the Z probe." - #elif ABL_PROBE_PT_3_Y < MIN_PROBE_Y || ABL_PROBE_PT_3_Y > MAX_PROBE_Y - #error "The given ABL_PROBE_PT_3_Y can't be reached by the Z probe." - #endif - - #endif // !AUTO_BED_LEVELING_GRID - -#endif // AUTO_BED_LEVELING_FEATURE - -/** - * Advance Extrusion - */ -#if ENABLED(ADVANCE) && ENABLED(LIN_ADVANCE) - #error "You can enable ADVANCE or LIN_ADVANCE, but not both." -#endif - -/** - * Filament Width Sensor - */ -#if ENABLED(FILAMENT_WIDTH_SENSOR) && !HAS_FILAMENT_WIDTH_SENSOR - #error "FILAMENT_WIDTH_SENSOR requires a FILWIDTH_PIN to be defined." -#endif - -/** - * ULTIPANEL encoder - */ -#if ENABLED(ULTIPANEL) && DISABLED(NEWPANEL) && DISABLED(SR_LCD_2W_NL) && !defined(SHIFT_CLK) - #error "ULTIPANEL requires some kind of encoder." -#endif - -#if ENCODER_PULSES_PER_STEP < 0 - #error "ENCODER_PULSES_PER_STEP should not be negative, use REVERSE_MENU_DIRECTION instead." -#endif - -/** - * SAV_3DGLCD display options - */ -#if ENABLED(U8GLIB_SSD1306) && ENABLED(U8GLIB_SH1106) - #error "Only enable one SAV_3DGLCD display type: U8GLIB_SSD1306 or U8GLIB_SH1106." -#endif - -/** - * Don't set more than one kinematic type - */ -#if (ENABLED(DELTA) && (ENABLED(SCARA) || ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ))) \ - || (ENABLED(SCARA) && (ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ))) \ - || (ENABLED(COREXY) && (ENABLED(COREXZ) || ENABLED(COREYZ))) \ - || (ENABLED(COREXZ) && ENABLED(COREYZ)) - #error "Please enable only one of DELTA, SCARA, COREXY, COREXZ, or COREYZ." -#endif - -/** - * Allen Key - * Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis. - */ -#if ENABLED(Z_PROBE_ALLEN_KEY) && (Z_HOME_DIR < 0) && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - #error "You can't home to a z min endstop with a Z_PROBE_ALLEN_KEY" -#endif - -/** - * Dual X Carriage requirements - */ -#if ENABLED(DUAL_X_CARRIAGE) - #if EXTRUDERS == 1 - #error "DUAL_X_CARRIAGE requires 2 (or more) extruders." - #elif ENABLED(COREXY) || ENABLED(COREXZ) - #error "DUAL_X_CARRIAGE cannot be used with COREXY or COREXZ." - #elif !HAS_X2_ENABLE || !HAS_X2_STEP || !HAS_X2_DIR - #error "DUAL_X_CARRIAGE requires X2 stepper pins to be defined." - #elif !HAS_X_MAX - #error "DUAL_X_CARRIAGE requires USE_XMAX_PLUG and an X Max Endstop." - #elif !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) - #error "DUAL_X_CARRIAGE requires X2_HOME_POS, X2_MIN_POS, and X2_MAX_POS." - #elif X_HOME_DIR != -1 || X2_HOME_DIR != 1 - #error "DUAL_X_CARRIAGE requires X_HOME_DIR -1 and X2_HOME_DIR 1." - #endif -#endif // DUAL_X_CARRIAGE - -/** - * Make sure auto fan pins don't conflict with the fan pin - */ -#if HAS_AUTO_FAN - #if HAS_FAN0 - #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN." - #elif EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN." - #elif EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN." - #elif EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN - #error "You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN." - #endif - #endif -#endif - -#if HAS_FAN0 && CONTROLLERFAN_PIN == FAN_PIN - #error "You cannot set CONTROLLERFAN_PIN equal to FAN_PIN." -#endif - -#if HAS_CONTROLLERFAN - #if EXTRUDER_0_AUTO_FAN_PIN == CONTROLLERFAN_PIN - #error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." - #elif EXTRUDER_1_AUTO_FAN_PIN == CONTROLLERFAN_PIN - #error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." - #elif EXTRUDER_2_AUTO_FAN_PIN == CONTROLLERFAN_PIN - #error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." - #elif EXTRUDER_3_AUTO_FAN_PIN == CONTROLLERFAN_PIN - #error "You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to CONTROLLERFAN_PIN." - #endif -#endif - -/** - * Test Heater, Temp Sensor, and Extruder Pins; Sensor Type must also be set. - */ -#if !HAS_HEATER_0 - #error "HEATER_0_PIN not defined for this board." -#elif !PIN_EXISTS(TEMP_0) - #error "TEMP_0_PIN not defined for this board." -#elif !PIN_EXISTS(E0_STEP) || !PIN_EXISTS(E0_DIR) || !PIN_EXISTS(E0_ENABLE) - #error "E0_STEP_PIN, E0_DIR_PIN, or E0_ENABLE_PIN not defined for this board." -#elif TEMP_SENSOR_0 == 0 - #error "TEMP_SENSOR_0 is required." -#endif - -#if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL) - #if !HAS_HEATER_1 - #error "HEATER_1_PIN not defined for this board." - #endif -#endif - -#if HOTENDS > 1 - #if TEMP_SENSOR_1 == 0 - #error "TEMP_SENSOR_1 is required with 2 or more HOTENDS." - #elif !PIN_EXISTS(TEMP_1) - #error "TEMP_1_PIN not defined for this board." - #endif - #if HOTENDS > 2 - #if TEMP_SENSOR_2 == 0 - #error "TEMP_SENSOR_2 is required with 3 or more HOTENDS." - #elif !HAS_HEATER_2 - #error "HEATER_2_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_2) - #error "TEMP_2_PIN not defined for this board." - #endif - #if HOTENDS > 3 - #if TEMP_SENSOR_3 == 0 - #error "TEMP_SENSOR_3 is required with 4 HOTENDS." - #elif !HAS_HEATER_3 - #error "HEATER_3_PIN not defined for this board." - #elif !PIN_EXISTS(TEMP_3) - #error "TEMP_3_PIN not defined for this board." - #endif - #elif TEMP_SENSOR_3 != 0 - #error "TEMP_SENSOR_3 shouldn't be set with only 3 extruders." - #endif - #elif TEMP_SENSOR_2 != 0 - #error "TEMP_SENSOR_2 shouldn't be set with only 2 extruders." - #elif TEMP_SENSOR_3 != 0 - #error "TEMP_SENSOR_3 shouldn't be set with only 2 extruders." - #endif -#elif TEMP_SENSOR_1 != 0 && DISABLED(TEMP_SENSOR_1_AS_REDUNDANT) - #error "TEMP_SENSOR_1 shouldn't be set with only 1 extruder." -#elif TEMP_SENSOR_2 != 0 - #error "TEMP_SENSOR_2 shouldn't be set with only 1 extruder." -#elif TEMP_SENSOR_3 != 0 - #error "TEMP_SENSOR_3 shouldn't be set with only 1 extruder." -#endif - -#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) && TEMP_SENSOR_1 == 0 - #error "TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT." -#endif - -/** - * Basic 2-nozzle duplication mode - */ -#if ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) - #if HOTENDS != 2 - #error "DUAL_NOZZLE_DUPLICATION_MODE requires exactly 2 hotends." - #elif ENABLED(DUAL_X_CARRIAGE) - #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with DUAL_X_CARRIAGE." - #elif ENABLED(SINGLENOZZLE) - #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SINGLENOZZLE." - #elif ENABLED(MIXING_EXTRUDER) - #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with MIXING_EXTRUDER." - #elif ENABLED(SWITCHING_EXTRUDER) - #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SWITCHING_EXTRUDER." - #endif -#endif - -/** - * Test Extruder Pins - */ -#if EXTRUDERS > 3 - #if !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE) - #error "E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board." - #endif -#elif EXTRUDERS > 2 - #if !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE) - #error "E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board." - #endif -#elif EXTRUDERS > 1 - #if !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE) - #error "E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board." - #endif -#endif - -/** - * Endstops - */ -#if DISABLED(USE_XMIN_PLUG) && DISABLED(USE_XMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _XMAX_ && Z2_USE_ENDSTOP <= _XMIN_) - #error "You must enable USE_XMIN_PLUG or USE_XMAX_PLUG" -#elif DISABLED(USE_YMIN_PLUG) && DISABLED(USE_YMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _YMAX_ && Z2_USE_ENDSTOP <= _YMIN_) - #error "You must enable USE_YMIN_PLUG or USE_YMAX_PLUG" -#elif DISABLED(USE_ZMIN_PLUG) && DISABLED(USE_ZMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _ZMAX_ && Z2_USE_ENDSTOP <= _ZMIN_) - #error "You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG" -#elif ENABLED(Z_DUAL_ENDSTOPS) && !Z2_USE_ENDSTOP - #error "You must set Z2_USE_ENDSTOP with Z_DUAL_ENDSTOPS" -#endif - -/** - * emergency-command parser - */ -#if ENABLED(EMERGENCY_PARSER) && ENABLED(USBCON) - #error "EMERGENCY_PARSER does not work on boards with AT90USB processors (USBCON)." -#endif - - /** - * Warnings for old configurations - */ -#if WATCH_TEMP_PERIOD > 500 - #error "WATCH_TEMP_PERIOD now uses seconds instead of milliseconds." -#elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD)) - #error "Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS." -#elif DISABLED(THERMAL_PROTECTION_BED) && defined(THERMAL_PROTECTION_BED_PERIOD) - #error "Thermal Runaway Protection for the bed is now enabled with THERMAL_PROTECTION_BED." -#elif ENABLED(COREXZ) && ENABLED(Z_LATE_ENABLE) - #error "Z_LATE_ENABLE can't be used with COREXZ." -#elif defined(X_HOME_RETRACT_MM) - #error "[XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM." -#elif defined(BEEPER) - #error "BEEPER is now BEEPER_PIN. Please update your pins definitions." -#elif defined(SDCARDDETECT) - #error "SDCARDDETECT is now SD_DETECT_PIN. Please update your pins definitions." -#elif defined(SDCARDDETECTINVERTED) - #error "SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration." -#elif defined(BTENABLED) - #error "BTENABLED is now BLUETOOTH. Please update your configuration." -#elif defined(CUSTOM_MENDEL_NAME) - #error "CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME. Please update your configuration." -#elif defined(HAS_AUTOMATIC_VERSIONING) - #error "HAS_AUTOMATIC_VERSIONING is now USE_AUTOMATIC_VERSIONING. Please update your configuration." -#elif defined(ENABLE_AUTO_BED_LEVELING) - #error "ENABLE_AUTO_BED_LEVELING is now AUTO_BED_LEVELING_FEATURE. Please update your configuration." -#elif defined(SDSLOW) - #error "SDSLOW deprecated. Set SPI_SPEED to SPI_HALF_SPEED instead." -#elif defined(SDEXTRASLOW) - #error "SDEXTRASLOW deprecated. Set SPI_SPEED to SPI_QUARTER_SPEED instead." -#elif defined(FILAMENT_SENSOR) - #error "FILAMENT_SENSOR is deprecated. Use FILAMENT_WIDTH_SENSOR instead." -#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS) - #error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead." -#elif ENABLED(Z_DUAL_ENDSTOPS) && !defined(Z2_USE_ENDSTOP) - #error "Z_DUAL_ENDSTOPS settings are simplified. Just set Z2_USE_ENDSTOP to the endstop you want to repurpose for Z2" -#elif defined(LANGUAGE_INCLUDE) - #error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE. Please update your configuration." -#elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y) - #error "EXTRUDER_OFFSET_[XY] is deprecated. Use HOTEND_OFFSET_[XY] instead." -#elif defined(PID_PARAMS_PER_EXTRUDER) - #error "PID_PARAMS_PER_EXTRUDER is deprecated. Use PID_PARAMS_PER_HOTEND instead." -#elif defined(EXTRUDER_WATTS) || defined(BED_WATTS) - #error "EXTRUDER_WATTS and BED_WATTS are deprecated. Remove them from your configuration." -#elif defined(SERVO_ENDSTOP_ANGLES) - #error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead." -#elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR) - #error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed." -#elif defined(XY_TRAVEL_SPEED) - #error "XY_TRAVEL_SPEED is deprecated. Use XY_PROBE_SPEED instead." -#elif defined(PROBE_SERVO_DEACTIVATION_DELAY) - #error "PROBE_SERVO_DEACTIVATION_DELAY is deprecated. Use DEACTIVATE_SERVOS_AFTER_MOVE instead." -#elif defined(SERVO_DEACTIVATION_DELAY) - #error "SERVO_DEACTIVATION_DELAY is deprecated. Use SERVO_DELAY instead." -#elif ENABLED(FILAMENTCHANGEENABLE) - #error "FILAMENTCHANGEENABLE is now FILAMENT_CHANGE_FEATURE. Please update your configuration." -#elif defined(PLA_PREHEAT_HOTEND_TEMP) - #error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND. Please update your configuration." -#elif defined(PLA_PREHEAT_HPB_TEMP) - #error "PLA_PREHEAT_HPB_TEMP is now PREHEAT_1_TEMP_BED. Please update your configuration." -#elif defined(PLA_PREHEAT_FAN_SPEED) - #error "PLA_PREHEAT_FAN_SPEED is now PREHEAT_1_FAN_SPEED. Please update your configuration." -#elif defined(ABS_PREHEAT_HOTEND_TEMP) - #error "ABS_PREHEAT_HOTEND_TEMP is now PREHEAT_2_TEMP_HOTEND. Please update your configuration." -#elif defined(ABS_PREHEAT_HPB_TEMP) - #error "ABS_PREHEAT_HPB_TEMP is now PREHEAT_2_TEMP_BED. Please update your configuration." -#elif defined(ABS_PREHEAT_FAN_SPEED) - #error "ABS_PREHEAT_FAN_SPEED is now PREHEAT_2_FAN_SPEED. Please update your configuration." -#elif defined(ENDSTOPS_ONLY_FOR_HOMING) - #error "ENDSTOPS_ONLY_FOR_HOMING is deprecated. Use (disable) ENDSTOPS_ALWAYS_ON_DEFAULT instead." -#elif defined(HOMING_FEEDRATE) - #error "HOMING_FEEDRATE is deprecated. Set individual rates with HOMING_FEEDRATE_(XY|Z|E) instead." -#elif defined(MANUAL_HOME_POSITIONS) - #error "MANUAL_HOME_POSITIONS is deprecated. Set MANUAL_[XYZ]_HOME_POS as-needed instead." -#elif defined(PID_ADD_EXTRUSION_RATE) - #error "PID_ADD_EXTRUSION_RATE is now PID_EXTRUSION_SCALING and is DISABLED by default. Are you sure you want to use this option? Please update your configuration." -#elif defined(Z_RAISE_BEFORE_HOMING) - #error "Z_RAISE_BEFORE_HOMING is now Z_HOMING_HEIGHT. Please update your configuration." -#elif defined(MIN_Z_HEIGHT_FOR_HOMING) - #error "MIN_Z_HEIGHT_FOR_HOMING is now Z_HOMING_HEIGHT. Please update your configuration." -#elif defined(Z_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING) - #error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_PROBE_DEPLOY_HEIGHT instead." -#elif defined(Z_RAISE_PROBE_DEPLOY_STOW) || defined(Z_RAISE_BETWEEN_PROBINGS) - #error "Z_RAISE_PROBE_DEPLOY_STOW and Z_RAISE_BETWEEN_PROBINGS are now Z_PROBE_DEPLOY_HEIGHT and Z_PROBE_TRAVEL_HEIGHT Please update your configuration." -#endif diff --git a/lib/Marlin/Sd2Card.cpp b/lib/Marlin/Sd2Card.cpp deleted file mode 100644 index 190e4ad..0000000 --- a/lib/Marlin/Sd2Card.cpp +++ /dev/null @@ -1,719 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino Sd2Card Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" - -#if ENABLED(SDSUPPORT) -#include "Sd2Card.h" - -//------------------------------------------------------------------------------ -#if DISABLED(SOFTWARE_SPI) - // functions for hardware SPI - //------------------------------------------------------------------------------ - // make sure SPCR rate is in expected bits - #if (SPR0 != 0 || SPR1 != 1) - #error "unexpected SPCR bits" - #endif - /** - * Initialize hardware SPI - * Set SCK rate to F_CPU/pow(2, 1 + spiRate) for spiRate [0,6] - */ - static void spiInit(uint8_t spiRate) { - // See avr processor documentation - SPCR = _BV(SPE) | _BV(MSTR) | (spiRate >> 1); - SPSR = spiRate & 1 || spiRate == 6 ? 0 : _BV(SPI2X); - } - //------------------------------------------------------------------------------ - /** SPI receive a byte */ - static uint8_t spiRec() { - SPDR = 0XFF; - while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ } - return SPDR; - } - //------------------------------------------------------------------------------ - /** SPI read data - only one call so force inline */ - static inline __attribute__((always_inline)) - void spiRead(uint8_t* buf, uint16_t nbyte) { - if (nbyte-- == 0) return; - SPDR = 0XFF; - for (uint16_t i = 0; i < nbyte; i++) { - while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ } - buf[i] = SPDR; - SPDR = 0XFF; - } - while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ } - buf[nbyte] = SPDR; - } - //------------------------------------------------------------------------------ - /** SPI send a byte */ - static void spiSend(uint8_t b) { - SPDR = b; - while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ } - } - //------------------------------------------------------------------------------ - /** SPI send block - only one call so force inline */ - static inline __attribute__((always_inline)) - void spiSendBlock(uint8_t token, const uint8_t* buf) { - SPDR = token; - for (uint16_t i = 0; i < 512; i += 2) { - while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ } - SPDR = buf[i]; - while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ } - SPDR = buf[i + 1]; - } - while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ } - } - //------------------------------------------------------------------------------ -#else // SOFTWARE_SPI - //------------------------------------------------------------------------------ - /** nop to tune soft SPI timing */ - #define nop asm volatile ("nop\n\t") - //------------------------------------------------------------------------------ - /** Soft SPI receive byte */ - static uint8_t spiRec() { - uint8_t data = 0; - // no interrupts during byte receive - about 8 us - cli(); - // output pin high - like sending 0XFF - WRITE(SPI_MOSI_PIN, HIGH); - - for (uint8_t i = 0; i < 8; i++) { - WRITE(SPI_SCK_PIN, HIGH); - - // adjust so SCK is nice - nop; - nop; - - data <<= 1; - - if (READ(SPI_MISO_PIN)) data |= 1; - - WRITE(SPI_SCK_PIN, LOW); - } - // enable interrupts - sei(); - return data; - } - //------------------------------------------------------------------------------ - /** Soft SPI read data */ - static void spiRead(uint8_t* buf, uint16_t nbyte) { - for (uint16_t i = 0; i < nbyte; i++) - buf[i] = spiRec(); - } - //------------------------------------------------------------------------------ - /** Soft SPI send byte */ - static void spiSend(uint8_t data) { - // no interrupts during byte send - about 8 us - cli(); - for (uint8_t i = 0; i < 8; i++) { - WRITE(SPI_SCK_PIN, LOW); - - WRITE(SPI_MOSI_PIN, data & 0X80); - - data <<= 1; - - WRITE(SPI_SCK_PIN, HIGH); - } - // hold SCK high for a few ns - nop; - nop; - nop; - nop; - - WRITE(SPI_SCK_PIN, LOW); - // enable interrupts - sei(); - } - //------------------------------------------------------------------------------ - /** Soft SPI send block */ - void spiSendBlock(uint8_t token, const uint8_t* buf) { - spiSend(token); - for (uint16_t i = 0; i < 512; i++) - spiSend(buf[i]); - } -#endif // SOFTWARE_SPI -//------------------------------------------------------------------------------ -// send command and return error code. Return zero for OK -uint8_t Sd2Card::cardCommand(uint8_t cmd, uint32_t arg) { - // select card - chipSelectLow(); - - // wait up to 300 ms if busy - waitNotBusy(300); - - // send command - spiSend(cmd | 0x40); - - // send argument - for (int8_t s = 24; s >= 0; s -= 8) spiSend(arg >> s); - - // send CRC - uint8_t crc = 0XFF; - if (cmd == CMD0) crc = 0X95; // correct crc for CMD0 with arg 0 - if (cmd == CMD8) crc = 0X87; // correct crc for CMD8 with arg 0X1AA - spiSend(crc); - - // skip stuff byte for stop read - if (cmd == CMD12) spiRec(); - - // wait for response - for (uint8_t i = 0; ((status_ = spiRec()) & 0X80) && i != 0XFF; i++) { /* Intentionally left empty */ } - return status_; -} -//------------------------------------------------------------------------------ -/** - * Determine the size of an SD flash memory card. - * - * \return The number of 512 byte data blocks in the card - * or zero if an error occurs. - */ -uint32_t Sd2Card::cardSize() { - csd_t csd; - if (!readCSD(&csd)) return 0; - if (csd.v1.csd_ver == 0) { - uint8_t read_bl_len = csd.v1.read_bl_len; - uint16_t c_size = (csd.v1.c_size_high << 10) - | (csd.v1.c_size_mid << 2) | csd.v1.c_size_low; - uint8_t c_size_mult = (csd.v1.c_size_mult_high << 1) - | csd.v1.c_size_mult_low; - return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); - } - else if (csd.v2.csd_ver == 1) { - uint32_t c_size = ((uint32_t)csd.v2.c_size_high << 16) - | (csd.v2.c_size_mid << 8) | csd.v2.c_size_low; - return (c_size + 1) << 10; - } - else { - error(SD_CARD_ERROR_BAD_CSD); - return 0; - } -} -//------------------------------------------------------------------------------ -void Sd2Card::chipSelectHigh() { - digitalWrite(chipSelectPin_, HIGH); -} -//------------------------------------------------------------------------------ -void Sd2Card::chipSelectLow() { - #if DISABLED(SOFTWARE_SPI) - spiInit(spiRate_); - #endif // SOFTWARE_SPI - digitalWrite(chipSelectPin_, LOW); -} -//------------------------------------------------------------------------------ -/** Erase a range of blocks. - * - * \param[in] firstBlock The address of the first block in the range. - * \param[in] lastBlock The address of the last block in the range. - * - * \note This function requests the SD card to do a flash erase for a - * range of blocks. The data on the card after an erase operation is - * either 0 or 1, depends on the card vendor. The card must support - * single block erase. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::erase(uint32_t firstBlock, uint32_t lastBlock) { - csd_t csd; - if (!readCSD(&csd)) goto fail; - // check for single block erase - if (!csd.v1.erase_blk_en) { - // erase size mask - uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; - if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) { - // error card can't erase specified area - error(SD_CARD_ERROR_ERASE_SINGLE_BLOCK); - goto fail; - } - } - if (type_ != SD_CARD_TYPE_SDHC) { - firstBlock <<= 9; - lastBlock <<= 9; - } - if (cardCommand(CMD32, firstBlock) - || cardCommand(CMD33, lastBlock) - || cardCommand(CMD38, 0)) { - error(SD_CARD_ERROR_ERASE); - goto fail; - } - if (!waitNotBusy(SD_ERASE_TIMEOUT)) { - error(SD_CARD_ERROR_ERASE_TIMEOUT); - goto fail; - } - chipSelectHigh(); - return true; -fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** Determine if card supports single block erase. - * - * \return The value one, true, is returned if single block erase is supported. - * The value zero, false, is returned if single block erase is not supported. - */ -bool Sd2Card::eraseSingleBlockEnable() { - csd_t csd; - return readCSD(&csd) ? csd.v1.erase_blk_en : false; -} -//------------------------------------------------------------------------------ -/** - * Initialize an SD flash memory card. - * - * \param[in] sckRateID SPI clock rate selector. See setSckRate(). - * \param[in] chipSelectPin SD chip select pin number. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. The reason for failure - * can be determined by calling errorCode() and errorData(). - */ -bool Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) { - errorCode_ = type_ = 0; - chipSelectPin_ = chipSelectPin; - // 16-bit init start time allows over a minute - uint16_t t0 = (uint16_t)millis(); - uint32_t arg; - - // set pin modes - pinMode(chipSelectPin_, OUTPUT); - chipSelectHigh(); - pinMode(SPI_MISO_PIN, INPUT); - pinMode(SPI_MOSI_PIN, OUTPUT); - pinMode(SPI_SCK_PIN, OUTPUT); - - #if DISABLED(SOFTWARE_SPI) - // SS must be in output mode even it is not chip select - pinMode(SS_PIN, OUTPUT); - // set SS high - may be chip select for another SPI device - #if SET_SPI_SS_HIGH - digitalWrite(SS_PIN, HIGH); - #endif // SET_SPI_SS_HIGH - // set SCK rate for initialization commands - spiRate_ = SPI_SD_INIT_RATE; - spiInit(spiRate_); - #endif // SOFTWARE_SPI - - // must supply min of 74 clock cycles with CS high. - for (uint8_t i = 0; i < 10; i++) spiSend(0XFF); - - // command to go idle in SPI mode - while ((status_ = cardCommand(CMD0, 0)) != R1_IDLE_STATE) { - if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) { - error(SD_CARD_ERROR_CMD0); - goto fail; - } - } - // check SD version - if ((cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) { - type(SD_CARD_TYPE_SD1); - } - else { - // only need last byte of r7 response - for (uint8_t i = 0; i < 4; i++) status_ = spiRec(); - if (status_ != 0XAA) { - error(SD_CARD_ERROR_CMD8); - goto fail; - } - type(SD_CARD_TYPE_SD2); - } - // initialize card and send host supports SDHC if SD2 - arg = type() == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; - - while ((status_ = cardAcmd(ACMD41, arg)) != R1_READY_STATE) { - // check for timeout - if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) { - error(SD_CARD_ERROR_ACMD41); - goto fail; - } - } - // if SD2 read OCR register to check for SDHC card - if (type() == SD_CARD_TYPE_SD2) { - if (cardCommand(CMD58, 0)) { - error(SD_CARD_ERROR_CMD58); - goto fail; - } - if ((spiRec() & 0XC0) == 0XC0) type(SD_CARD_TYPE_SDHC); - // discard rest of ocr - contains allowed voltage range - for (uint8_t i = 0; i < 3; i++) spiRec(); - } - chipSelectHigh(); - - #if DISABLED(SOFTWARE_SPI) - return setSckRate(sckRateID); - #else // SOFTWARE_SPI - UNUSED(sckRateID); - return true; - #endif // SOFTWARE_SPI - -fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** - * Read a 512 byte block from an SD card. - * - * \param[in] blockNumber Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::readBlock(uint32_t blockNumber, uint8_t* dst) { - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; - - #if ENABLED(SD_CHECK_AND_RETRY) - uint8_t retryCnt = 3; - do { - if (!cardCommand(CMD17, blockNumber)) { - if (readData(dst, 512)) return true; - } - else - error(SD_CARD_ERROR_CMD17); - - if (--retryCnt) break; - - chipSelectHigh(); - cardCommand(CMD12, 0); // Try sending a stop command, ignore the result. - errorCode_ = 0; - } while (true); - #else - if (cardCommand(CMD17, blockNumber)) - error(SD_CARD_ERROR_CMD17); - else - return readData(dst, 512); - #endif - - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** Read one data block in a multiple block read sequence - * - * \param[in] dst Pointer to the location for the data to be read. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::readData(uint8_t* dst) { - chipSelectLow(); - return readData(dst, 512); -} - -#if ENABLED(SD_CHECK_AND_RETRY) -static const uint16_t crctab[] PROGMEM = { - 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, - 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, - 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, - 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, - 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, - 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, - 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, - 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, - 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, - 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, - 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, - 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, - 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, - 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, - 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, - 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, - 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, - 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, - 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, - 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, - 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, - 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, - 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, - 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, - 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, - 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, - 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, - 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, - 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, - 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, - 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 -}; -static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { - uint16_t crc = 0; - for (size_t i = 0; i < n; i++) { - crc = pgm_read_word(&crctab[(crc >> 8 ^ data[i]) & 0XFF]) ^ (crc << 8); - } - return crc; -} -#endif - -//------------------------------------------------------------------------------ -bool Sd2Card::readData(uint8_t* dst, uint16_t count) { - // wait for start block token - uint16_t t0 = millis(); - while ((status_ = spiRec()) == 0XFF) { - if (((uint16_t)millis() - t0) > SD_READ_TIMEOUT) { - error(SD_CARD_ERROR_READ_TIMEOUT); - goto fail; - } - } - if (status_ != DATA_START_BLOCK) { - error(SD_CARD_ERROR_READ); - goto fail; - } - // transfer data - spiRead(dst, count); - -#if ENABLED(SD_CHECK_AND_RETRY) - { - uint16_t calcCrc = CRC_CCITT(dst, count); - uint16_t recvCrc = spiRec() << 8; - recvCrc |= spiRec(); - if (calcCrc != recvCrc) { - error(SD_CARD_ERROR_CRC); - goto fail; - } - } -#else - // discard CRC - spiRec(); - spiRec(); -#endif - chipSelectHigh(); - // Send an additional dummy byte, required by Toshiba Flash Air SD Card - spiSend(0XFF); - return true; -fail: - chipSelectHigh(); - // Send an additional dummy byte, required by Toshiba Flash Air SD Card - spiSend(0XFF); - return false; -} -//------------------------------------------------------------------------------ -/** read CID or CSR register */ -bool Sd2Card::readRegister(uint8_t cmd, void* buf) { - uint8_t* dst = reinterpret_cast(buf); - if (cardCommand(cmd, 0)) { - error(SD_CARD_ERROR_READ_REG); - goto fail; - } - return readData(dst, 16); -fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** Start a read multiple blocks sequence. - * - * \param[in] blockNumber Address of first block in sequence. - * - * \note This function is used with readData() and readStop() for optimized - * multiple block reads. SPI chipSelect must be low for the entire sequence. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::readStart(uint32_t blockNumber) { - if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; - if (cardCommand(CMD18, blockNumber)) { - error(SD_CARD_ERROR_CMD18); - goto fail; - } - chipSelectHigh(); - return true; -fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** End a read multiple blocks sequence. - * -* \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::readStop() { - chipSelectLow(); - if (cardCommand(CMD12, 0)) { - error(SD_CARD_ERROR_CMD12); - goto fail; - } - chipSelectHigh(); - return true; -fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** - * Set the SPI clock rate. - * - * \param[in] sckRateID A value in the range [0, 6]. - * - * The SPI clock will be set to F_CPU/pow(2, 1 + sckRateID). The maximum - * SPI rate is F_CPU/2 for \a sckRateID = 0 and the minimum rate is F_CPU/128 - * for \a scsRateID = 6. - * - * \return The value one, true, is returned for success and the value zero, - * false, is returned for an invalid value of \a sckRateID. - */ -bool Sd2Card::setSckRate(uint8_t sckRateID) { - if (sckRateID > 6) { - error(SD_CARD_ERROR_SCK_RATE); - return false; - } - spiRate_ = sckRateID; - return true; -} -//------------------------------------------------------------------------------ -// wait for card to go not busy -bool Sd2Card::waitNotBusy(uint16_t timeoutMillis) { - uint16_t t0 = millis(); - while (spiRec() != 0XFF) { - if (((uint16_t)millis() - t0) >= timeoutMillis) goto fail; - } - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -/** - * Writes a 512 byte block to an SD card. - * - * \param[in] blockNumber Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::writeBlock(uint32_t blockNumber, const uint8_t* src) { - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; - if (cardCommand(CMD24, blockNumber)) { - error(SD_CARD_ERROR_CMD24); - goto fail; - } - if (!writeData(DATA_START_BLOCK, src)) goto fail; - - // wait for flash programming to complete - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - error(SD_CARD_ERROR_WRITE_TIMEOUT); - goto fail; - } - // response is r2 so get and check two bytes for nonzero - if (cardCommand(CMD13, 0) || spiRec()) { - error(SD_CARD_ERROR_WRITE_PROGRAMMING); - goto fail; - } - chipSelectHigh(); - return true; -fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** Write one data block in a multiple block write sequence - * \param[in] src Pointer to the location of the data to be written. - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::writeData(const uint8_t* src) { - chipSelectLow(); - // wait for previous write to finish - if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail; - if (!writeData(WRITE_MULTIPLE_TOKEN, src)) goto fail; - chipSelectHigh(); - return true; -fail: - error(SD_CARD_ERROR_WRITE_MULTIPLE); - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -// send one block of data for write block or write multiple blocks -bool Sd2Card::writeData(uint8_t token, const uint8_t* src) { - spiSendBlock(token, src); - - spiSend(0xff); // dummy crc - spiSend(0xff); // dummy crc - - status_ = spiRec(); - if ((status_ & DATA_RES_MASK) != DATA_RES_ACCEPTED) { - error(SD_CARD_ERROR_WRITE); - goto fail; - } - return true; -fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** Start a write multiple blocks sequence. - * - * \param[in] blockNumber Address of first block in sequence. - * \param[in] eraseCount The number of blocks to be pre-erased. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::writeStart(uint32_t blockNumber, uint32_t eraseCount) { - // send pre-erase count - if (cardAcmd(ACMD23, eraseCount)) { - error(SD_CARD_ERROR_ACMD23); - goto fail; - } - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; - if (cardCommand(CMD25, blockNumber)) { - error(SD_CARD_ERROR_CMD25); - goto fail; - } - chipSelectHigh(); - return true; -fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** End a write multiple blocks sequence. - * -* \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool Sd2Card::writeStop() { - chipSelectLow(); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail; - spiSend(STOP_TRAN_TOKEN); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail; - chipSelectHigh(); - return true; -fail: - error(SD_CARD_ERROR_STOP_TRAN); - chipSelectHigh(); - return false; -} - -#endif diff --git a/lib/Marlin/Sd2Card.h b/lib/Marlin/Sd2Card.h deleted file mode 100644 index b1f442c..0000000 --- a/lib/Marlin/Sd2Card.h +++ /dev/null @@ -1,251 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino Sd2Card Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ - -#include "Marlin.h" -#if ENABLED(SDSUPPORT) - -#ifndef Sd2Card_h -#define Sd2Card_h -/** - * \file - * \brief Sd2Card class for V2 SD/SDHC cards - */ -#include "SdFatConfig.h" -#include "SdInfo.h" -//------------------------------------------------------------------------------ -// SPI speed is F_CPU/2^(1 + index), 0 <= index <= 6 -/** Set SCK to max rate of F_CPU/2. See Sd2Card::setSckRate(). */ -uint8_t const SPI_FULL_SPEED = 0; -/** Set SCK rate to F_CPU/4. See Sd2Card::setSckRate(). */ -uint8_t const SPI_HALF_SPEED = 1; -/** Set SCK rate to F_CPU/8. See Sd2Card::setSckRate(). */ -uint8_t const SPI_QUARTER_SPEED = 2; -/** Set SCK rate to F_CPU/16. See Sd2Card::setSckRate(). */ -uint8_t const SPI_EIGHTH_SPEED = 3; -/** Set SCK rate to F_CPU/32. See Sd2Card::setSckRate(). */ -uint8_t const SPI_SIXTEENTH_SPEED = 4; -//------------------------------------------------------------------------------ -/** init timeout ms */ -uint16_t const SD_INIT_TIMEOUT = 2000; -/** erase timeout ms */ -uint16_t const SD_ERASE_TIMEOUT = 10000; -/** read timeout ms */ -uint16_t const SD_READ_TIMEOUT = 300; -/** write time out ms */ -uint16_t const SD_WRITE_TIMEOUT = 600; -//------------------------------------------------------------------------------ -// SD card errors -/** timeout error for command CMD0 (initialize card in SPI mode) */ -uint8_t const SD_CARD_ERROR_CMD0 = 0X1; -/** CMD8 was not accepted - not a valid SD card*/ -uint8_t const SD_CARD_ERROR_CMD8 = 0X2; -/** card returned an error response for CMD12 (write stop) */ -uint8_t const SD_CARD_ERROR_CMD12 = 0X3; -/** card returned an error response for CMD17 (read block) */ -uint8_t const SD_CARD_ERROR_CMD17 = 0X4; -/** card returned an error response for CMD18 (read multiple block) */ -uint8_t const SD_CARD_ERROR_CMD18 = 0X5; -/** card returned an error response for CMD24 (write block) */ -uint8_t const SD_CARD_ERROR_CMD24 = 0X6; -/** WRITE_MULTIPLE_BLOCKS command failed */ -uint8_t const SD_CARD_ERROR_CMD25 = 0X7; -/** card returned an error response for CMD58 (read OCR) */ -uint8_t const SD_CARD_ERROR_CMD58 = 0X8; -/** SET_WR_BLK_ERASE_COUNT failed */ -uint8_t const SD_CARD_ERROR_ACMD23 = 0X9; -/** ACMD41 initialization process timeout */ -uint8_t const SD_CARD_ERROR_ACMD41 = 0XA; -/** card returned a bad CSR version field */ -uint8_t const SD_CARD_ERROR_BAD_CSD = 0XB; -/** erase block group command failed */ -uint8_t const SD_CARD_ERROR_ERASE = 0XC; -/** card not capable of single block erase */ -uint8_t const SD_CARD_ERROR_ERASE_SINGLE_BLOCK = 0XD; -/** Erase sequence timed out */ -uint8_t const SD_CARD_ERROR_ERASE_TIMEOUT = 0XE; -/** card returned an error token instead of read data */ -uint8_t const SD_CARD_ERROR_READ = 0XF; -/** read CID or CSD failed */ -uint8_t const SD_CARD_ERROR_READ_REG = 0X10; -/** timeout while waiting for start of read data */ -uint8_t const SD_CARD_ERROR_READ_TIMEOUT = 0X11; -/** card did not accept STOP_TRAN_TOKEN */ -uint8_t const SD_CARD_ERROR_STOP_TRAN = 0X12; -/** card returned an error token as a response to a write operation */ -uint8_t const SD_CARD_ERROR_WRITE = 0X13; -/** attempt to write protected block zero */ -uint8_t const SD_CARD_ERROR_WRITE_BLOCK_ZERO = 0X14; // REMOVE - not used -/** card did not go ready for a multiple block write */ -uint8_t const SD_CARD_ERROR_WRITE_MULTIPLE = 0X15; -/** card returned an error to a CMD13 status check after a write */ -uint8_t const SD_CARD_ERROR_WRITE_PROGRAMMING = 0X16; -/** timeout occurred during write programming */ -uint8_t const SD_CARD_ERROR_WRITE_TIMEOUT = 0X17; -/** incorrect rate selected */ -uint8_t const SD_CARD_ERROR_SCK_RATE = 0X18; -/** init() not called */ -uint8_t const SD_CARD_ERROR_INIT_NOT_CALLED = 0X19; -/** crc check error */ -uint8_t const SD_CARD_ERROR_CRC = 0X20; -//------------------------------------------------------------------------------ -// card types -/** Standard capacity V1 SD card */ -uint8_t const SD_CARD_TYPE_SD1 = 1; -/** Standard capacity V2 SD card */ -uint8_t const SD_CARD_TYPE_SD2 = 2; -/** High Capacity SD card */ -uint8_t const SD_CARD_TYPE_SDHC = 3; -/** - * define SOFTWARE_SPI to use bit-bang SPI - */ -//------------------------------------------------------------------------------ -#if MEGA_SOFT_SPI && (defined(__AVR_ATmega1280__)||defined(__AVR_ATmega2560__)) - #define SOFTWARE_SPI -#elif USE_SOFTWARE_SPI - #define SOFTWARE_SPI -#endif // MEGA_SOFT_SPI -//------------------------------------------------------------------------------ -// SPI pin definitions - do not edit here - change in SdFatConfig.h -// -#if DISABLED(SOFTWARE_SPI) - // hardware pin defs - /** The default chip select pin for the SD card is SS. */ - #define SD_CHIP_SELECT_PIN SS_PIN - // The following three pins must not be redefined for hardware SPI. - /** SPI Master Out Slave In pin */ - #define SPI_MOSI_PIN MOSI_PIN - /** SPI Master In Slave Out pin */ - #define SPI_MISO_PIN MISO_PIN - /** SPI Clock pin */ - #define SPI_SCK_PIN SCK_PIN - -#else // SOFTWARE_SPI - - /** SPI chip select pin */ - #define SD_CHIP_SELECT_PIN SOFT_SPI_CS_PIN - /** SPI Master Out Slave In pin */ - #define SPI_MOSI_PIN SOFT_SPI_MOSI_PIN - /** SPI Master In Slave Out pin */ - #define SPI_MISO_PIN SOFT_SPI_MISO_PIN - /** SPI Clock pin */ - #define SPI_SCK_PIN SOFT_SPI_SCK_PIN -#endif // SOFTWARE_SPI -//------------------------------------------------------------------------------ -/** - * \class Sd2Card - * \brief Raw access to SD and SDHC flash memory cards. - */ -class Sd2Card { - public: - /** Construct an instance of Sd2Card. */ - Sd2Card() : errorCode_(SD_CARD_ERROR_INIT_NOT_CALLED), type_(0) {} - uint32_t cardSize(); - bool erase(uint32_t firstBlock, uint32_t lastBlock); - bool eraseSingleBlockEnable(); - /** - * Set SD error code. - * \param[in] code value for error code. - */ - void error(uint8_t code) {errorCode_ = code;} - /** - * \return error code for last error. See Sd2Card.h for a list of error codes. - */ - int errorCode() const {return errorCode_;} - /** \return error data for last error. */ - int errorData() const {return status_;} - /** - * Initialize an SD flash memory card with default clock rate and chip - * select pin. See sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin). - * - * \return true for success or false for failure. - */ - bool init(uint8_t sckRateID = SPI_FULL_SPEED, - uint8_t chipSelectPin = SD_CHIP_SELECT_PIN); - bool readBlock(uint32_t block, uint8_t* dst); - /** - * Read a card's CID register. The CID contains card identification - * information such as Manufacturer ID, Product name, Product serial - * number and Manufacturing date. - * - * \param[out] cid pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCID(cid_t* cid) { - return readRegister(CMD10, cid); - } - /** - * Read a card's CSD register. The CSD contains Card-Specific Data that - * provides information regarding access to the card's contents. - * - * \param[out] csd pointer to area for returned data. - * - * \return true for success or false for failure. - */ - bool readCSD(csd_t* csd) { - return readRegister(CMD9, csd); - } - bool readData(uint8_t* dst); - bool readStart(uint32_t blockNumber); - bool readStop(); - bool setSckRate(uint8_t sckRateID); - /** Return the card type: SD V1, SD V2 or SDHC - * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC. - */ - int type() const {return type_;} - bool writeBlock(uint32_t blockNumber, const uint8_t* src); - bool writeData(const uint8_t* src); - bool writeStart(uint32_t blockNumber, uint32_t eraseCount); - bool writeStop(); - private: - //---------------------------------------------------------------------------- - uint8_t chipSelectPin_; - uint8_t errorCode_; - uint8_t spiRate_; - uint8_t status_; - uint8_t type_; - // private functions - uint8_t cardAcmd(uint8_t cmd, uint32_t arg) { - cardCommand(CMD55, 0); - return cardCommand(cmd, arg); - } - uint8_t cardCommand(uint8_t cmd, uint32_t arg); - - bool readData(uint8_t* dst, uint16_t count); - bool readRegister(uint8_t cmd, void* buf); - void chipSelectHigh(); - void chipSelectLow(); - void type(uint8_t value) {type_ = value;} - bool waitNotBusy(uint16_t timeoutMillis); - bool writeData(uint8_t token, const uint8_t* src); -}; -#endif // Sd2Card_h - - -#endif diff --git a/lib/Marlin/SdBaseFile.cpp b/lib/Marlin/SdBaseFile.cpp deleted file mode 100644 index 95765f9..0000000 --- a/lib/Marlin/SdBaseFile.cpp +++ /dev/null @@ -1,1826 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ - -#include "Marlin.h" -#if ENABLED(SDSUPPORT) - -#include "SdBaseFile.h" -//------------------------------------------------------------------------------ -// pointer to cwd directory -SdBaseFile* SdBaseFile::cwd_ = 0; -// callback function for date/time -void (*SdBaseFile::dateTime_)(uint16_t* date, uint16_t* time) = 0; -//------------------------------------------------------------------------------ -// add a cluster to a file -bool SdBaseFile::addCluster() { - if (!vol_->allocContiguous(1, &curCluster_)) goto fail; - - // if first cluster of file link to directory entry - if (firstCluster_ == 0) { - firstCluster_ = curCluster_; - flags_ |= F_FILE_DIR_DIRTY; - } - return true; - - fail: - return false; -} -//------------------------------------------------------------------------------ -// Add a cluster to a directory file and zero the cluster. -// return with first block of cluster in the cache -bool SdBaseFile::addDirCluster() { - uint32_t block; - // max folder size - if (fileSize_ / sizeof(dir_t) >= 0XFFFF) goto fail; - - if (!addCluster()) goto fail; - if (!vol_->cacheFlush()) goto fail; - - block = vol_->clusterStartBlock(curCluster_); - - // set cache to first block of cluster - vol_->cacheSetBlockNumber(block, true); - - // zero first block of cluster - memset(vol_->cacheBuffer_.data, 0, 512); - - // zero rest of cluster - for (uint8_t i = 1; i < vol_->blocksPerCluster_; i++) { - if (!vol_->writeBlock(block + i, vol_->cacheBuffer_.data)) goto fail; - } - // Increase directory file size by cluster size - fileSize_ += 512UL << vol_->clusterSizeShift_; - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -// cache a file's directory entry -// return pointer to cached entry or null for failure -dir_t* SdBaseFile::cacheDirEntry(uint8_t action) { - if (!vol_->cacheRawBlock(dirBlock_, action)) goto fail; - return vol_->cache()->dir + dirIndex_; -fail: - return 0; -} -//------------------------------------------------------------------------------ -/** Close a file and force cached data and directory information - * to be written to the storage device. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include no file is open or an I/O error. - */ -bool SdBaseFile::close() { - bool rtn = sync(); - type_ = FAT_FILE_TYPE_CLOSED; - return rtn; -} -//------------------------------------------------------------------------------ -/** Check for contiguous file and return its raw block range. - * - * \param[out] bgnBlock the first block address for the file. - * \param[out] endBlock the last block address for the file. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include file is not contiguous, file has zero length - * or an I/O error occurred. - */ -bool SdBaseFile::contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock) { - // error if no blocks - if (firstCluster_ == 0) goto fail; - - for (uint32_t c = firstCluster_; ; c++) { - uint32_t next; - if (!vol_->fatGet(c, &next)) goto fail; - - // check for contiguous - if (next != (c + 1)) { - // error if not end of chain - if (!vol_->isEOC(next)) goto fail; - *bgnBlock = vol_->clusterStartBlock(firstCluster_); - *endBlock = vol_->clusterStartBlock(c) - + vol_->blocksPerCluster_ - 1; - return true; - } - } - -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Create and open a new contiguous file of a specified size. - * - * \note This function only supports short DOS 8.3 names. - * See open() for more information. - * - * \param[in] dirFile The directory where the file will be created. - * \param[in] path A path with a valid DOS 8.3 file name. - * \param[in] size The desired file size. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include \a path contains - * an invalid DOS 8.3 file name, the FAT volume has not been initialized, - * a file is already open, the file already exists, the root - * directory is full or an I/O error. - * - */ -bool SdBaseFile::createContiguous(SdBaseFile* dirFile, - const char* path, uint32_t size) { - uint32_t count; - // don't allow zero length file - if (size == 0) goto fail; - if (!open(dirFile, path, O_CREAT | O_EXCL | O_RDWR)) goto fail; - - // calculate number of clusters needed - count = ((size - 1) >> (vol_->clusterSizeShift_ + 9)) + 1; - - // allocate clusters - if (!vol_->allocContiguous(count, &firstCluster_)) { - remove(); - goto fail; - } - fileSize_ = size; - - // insure sync() will update dir entry - flags_ |= F_FILE_DIR_DIRTY; - - return sync(); -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Return a file's directory entry. - * - * \param[out] dir Location for return of the file's directory entry. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::dirEntry(dir_t* dir) { - dir_t* p; - // make sure fields on SD are correct - if (!sync()) goto fail; - - // read entry - p = cacheDirEntry(SdVolume::CACHE_FOR_READ); - if (!p) goto fail; - - // copy to caller's struct - memcpy(dir, p, sizeof(dir_t)); - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Format the name field of \a dir into the 13 byte array - * \a name in standard 8.3 short name format. - * - * \param[in] dir The directory structure containing the name. - * \param[out] name A 13 byte char array for the formatted name. - */ -void SdBaseFile::dirName(const dir_t& dir, char* name) { - uint8_t j = 0; - for (uint8_t i = 0; i < 11; i++) { - if (dir.name[i] == ' ')continue; - if (i == 8) name[j++] = '.'; - name[j++] = dir.name[i]; - } - name[j] = 0; -} -//------------------------------------------------------------------------------ -/** Test for the existence of a file in a directory - * - * \param[in] name Name of the file to be tested for. - * - * The calling instance must be an open directory file. - * - * dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory - * dirFile. - * - * \return true if the file exists else false. - */ -bool SdBaseFile::exists(const char* name) { - SdBaseFile file; - return file.open(this, name, O_READ); -} -//------------------------------------------------------------------------------ -/** - * Get a string from a file. - * - * fgets() reads bytes from a file into the array pointed to by \a str, until - * \a num - 1 bytes are read, or a delimiter is read and transferred to \a str, - * or end-of-file is encountered. The string is then terminated - * with a null byte. - * - * fgets() deletes CR, '\\r', from the string. This insures only a '\\n' - * terminates the string for Windows text files which use CRLF for newline. - * - * \param[out] str Pointer to the array where the string is stored. - * \param[in] num Maximum number of characters to be read - * (including the final null byte). Usually the length - * of the array \a str is used. - * \param[in] delim Optional set of delimiters. The default is "\n". - * - * \return For success fgets() returns the length of the string in \a str. - * If no data is read, fgets() returns zero for EOF or -1 if an error occurred. - **/ -int16_t SdBaseFile::fgets(char* str, int16_t num, char* delim) { - char ch; - int16_t n = 0; - int16_t r = -1; - while ((n + 1) < num && (r = read(&ch, 1)) == 1) { - // delete CR - if (ch == '\r') continue; - str[n++] = ch; - if (!delim) { - if (ch == '\n') break; - } - else { - if (strchr(delim, ch)) break; - } - } - if (r < 0) { - // read error - return -1; - } - str[n] = '\0'; - return n; -} -//------------------------------------------------------------------------------ -/** Get a file's name - * - * \param[out] name An array of 13 characters for the file's name. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::getFilename(char* name) { - if (!isOpen()) return false; - - if (isRoot()) { - name[0] = '/'; - name[1] = '\0'; - return true; - } - // cache entry - dir_t* p = cacheDirEntry(SdVolume::CACHE_FOR_READ); - if (!p) return false; - - // format name - dirName(*p, name); - return true; -} -//------------------------------------------------------------------------------ -void SdBaseFile::getpos(filepos_t* pos) { - pos->position = curPosition_; - pos->cluster = curCluster_; -} - -//------------------------------------------------------------------------------ -/** List directory contents. - * - * \param[in] pr Print stream for list. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \param[in] indent Amount of space before file name. Used for recursive - * list to indicate subdirectory level. - */ -void SdBaseFile::ls(uint8_t flags, uint8_t indent) { - rewind(); - int8_t status; - while ((status = lsPrintNext(flags, indent))) { - if (status > 1 && (flags & LS_R)) { - uint16_t index = curPosition() / 32 - 1; - SdBaseFile s; - if (s.open(this, index, O_READ)) s.ls(flags, indent + 2); - seekSet(32 * (index + 1)); - } - } -} -//------------------------------------------------------------------------------ -// saves 32 bytes on stack for ls recursion -// return 0 - EOF, 1 - normal file, or 2 - directory -int8_t SdBaseFile::lsPrintNext(uint8_t flags, uint8_t indent) { - dir_t dir; - uint8_t w = 0; - - while (1) { - if (read(&dir, sizeof(dir)) != sizeof(dir)) return 0; - if (dir.name[0] == DIR_NAME_FREE) return 0; - - // skip deleted entry and entries for . and .. - if (dir.name[0] != DIR_NAME_DELETED && dir.name[0] != '.' - && DIR_IS_FILE_OR_SUBDIR(&dir)) break; - } - // indent for dir level - for (uint8_t i = 0; i < indent; i++) MYSERIAL.write(' '); - - // print name - for (uint8_t i = 0; i < 11; i++) { - if (dir.name[i] == ' ')continue; - if (i == 8) { - MYSERIAL.write('.'); - w++; - } - MYSERIAL.write(dir.name[i]); - w++; - } - if (DIR_IS_SUBDIR(&dir)) { - MYSERIAL.write('/'); - w++; - } - if (flags & (LS_DATE | LS_SIZE)) { - while (w++ < 14) MYSERIAL.write(' '); - } - // print modify date/time if requested - if (flags & LS_DATE) { - MYSERIAL.write(' '); - printFatDate(dir.lastWriteDate); - MYSERIAL.write(' '); - printFatTime(dir.lastWriteTime); - } - // print size if requested - if (!DIR_IS_SUBDIR(&dir) && (flags & LS_SIZE)) { - MYSERIAL.write(' '); - MYSERIAL.print(dir.fileSize); - } - MYSERIAL.println(); - return DIR_IS_FILE(&dir) ? 1 : 2; -} -//------------------------------------------------------------------------------ -// format directory name field from a 8.3 name string -bool SdBaseFile::make83Name(const char* str, uint8_t* name, const char** ptr) { - uint8_t c; - uint8_t n = 7; // max index for part before dot - uint8_t i = 0; - // blank fill name and extension - while (i < 11) name[i++] = ' '; - i = 0; - while (*str != '\0' && *str != '/') { - c = *str++; - if (c == '.') { - if (n == 10) goto fail; // only one dot allowed - n = 10; // max index for full 8.3 name - i = 8; // place for extension - } - else { - // illegal FAT characters - PGM_P p = PSTR("|<>^+=?/[];,*\"\\"); - uint8_t b; - while ((b = pgm_read_byte(p++))) if (b == c) goto fail; - // check size and only allow ASCII printable characters - if (i > n || c < 0x21 || c == 0x7F) goto fail; - // only upper case allowed in 8.3 names - convert lower to upper - name[i++] = (c < 'a' || c > 'z') ? (c) : (c + ('A' - 'a')); - } - } - *ptr = str; - // must have a file name, extension is optional - return name[0] != ' '; -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Make a new directory. - * - * \param[in] parent An open SdFat instance for the directory that will contain - * the new directory. - * - * \param[in] path A path with a valid 8.3 DOS name for the new directory. - * - * \param[in] pFlag Create missing parent directories if true. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include this file is already open, \a parent is not a - * directory, \a path is invalid or already exists in \a parent. - */ -bool SdBaseFile::mkdir(SdBaseFile* parent, const char* path, bool pFlag) { - uint8_t dname[11]; - SdBaseFile dir1, dir2; - SdBaseFile* sub = &dir1; - SdBaseFile* start = parent; - - if (!parent || isOpen()) goto fail; - - if (*path == '/') { - while (*path == '/') path++; - if (!parent->isRoot()) { - if (!dir2.openRoot(parent->vol_)) goto fail; - parent = &dir2; - } - } - while (1) { - if (!make83Name(path, dname, &path)) goto fail; - while (*path == '/') path++; - if (!*path) break; - if (!sub->open(parent, dname, O_READ)) { - if (!pFlag || !sub->mkdir(parent, dname)) { - goto fail; - } - } - if (parent != start) parent->close(); - parent = sub; - sub = parent != &dir1 ? &dir1 : &dir2; - } - return mkdir(parent, dname); -fail: - return false; -} -//------------------------------------------------------------------------------ -bool SdBaseFile::mkdir(SdBaseFile* parent, const uint8_t dname[11]) { - uint32_t block; - dir_t d; - dir_t* p; - - if (!parent->isDir()) goto fail; - - // create a normal file - if (!open(parent, dname, O_CREAT | O_EXCL | O_RDWR)) goto fail; - - // convert file to directory - flags_ = O_READ; - type_ = FAT_FILE_TYPE_SUBDIR; - - // allocate and zero first cluster - if (!addDirCluster())goto fail; - - // force entry to SD - if (!sync()) goto fail; - - // cache entry - should already be in cache due to sync() call - p = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!p) goto fail; - - // change directory entry attribute - p->attributes = DIR_ATT_DIRECTORY; - - // make entry for '.' - memcpy(&d, p, sizeof(d)); - d.name[0] = '.'; - for (uint8_t i = 1; i < 11; i++) d.name[i] = ' '; - - // cache block for '.' and '..' - block = vol_->clusterStartBlock(firstCluster_); - if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) goto fail; - - // copy '.' to block - memcpy(&vol_->cache()->dir[0], &d, sizeof(d)); - - // make entry for '..' - d.name[1] = '.'; - if (parent->isRoot()) { - d.firstClusterLow = 0; - d.firstClusterHigh = 0; - } - else { - d.firstClusterLow = parent->firstCluster_ & 0XFFFF; - d.firstClusterHigh = parent->firstCluster_ >> 16; - } - // copy '..' to block - memcpy(&vol_->cache()->dir[1], &d, sizeof(d)); - - // write first block - return vol_->cacheFlush(); -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Open a file in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t). - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::open(const char* path, uint8_t oflag) { - return open(cwd_, path, oflag); -} -//------------------------------------------------------------------------------ -/** Open a file or directory by name. - * - * \param[in] dirFile An open SdFat instance for the directory containing the - * file to be opened. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of flags from the following list - * - * O_READ - Open for reading. - * - * O_RDONLY - Same as O_READ. - * - * O_WRITE - Open for writing. - * - * O_WRONLY - Same as O_WRITE. - * - * O_RDWR - Open for reading and writing. - * - * O_APPEND - If set, the file offset shall be set to the end of the - * file prior to each write. - * - * O_AT_END - Set the initial position at the end of the file. - * - * O_CREAT - If the file exists, this flag has no effect except as noted - * under O_EXCL below. Otherwise, the file shall be created - * - * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists. - * - * O_SYNC - Call sync() after each write. This flag should not be used with - * write(uint8_t), write_P(PGM_P), writeln_P(PGM_P), or the Arduino Print class. - * These functions do character at a time writes so sync() will be called - * after each byte. - * - * O_TRUNC - If the file exists and is a regular file, and the file is - * successfully opened and is not read only, its length shall be truncated to 0. - * - * WARNING: A given file must not be opened by more than one SdBaseFile object - * of file corruption may occur. - * - * \note Directory files must be opened read only. Write and truncation is - * not allowed for directory files. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include this file is already open, \a dirFile is not - * a directory, \a path is invalid, the file does not exist - * or can't be opened in the access mode specified by oflag. - */ -bool SdBaseFile::open(SdBaseFile* dirFile, const char* path, uint8_t oflag) { - uint8_t dname[11]; - SdBaseFile dir1, dir2; - SdBaseFile* parent = dirFile; - SdBaseFile* sub = &dir1; - - if (!dirFile) goto fail; - - // error if already open - if (isOpen()) goto fail; - - if (*path == '/') { - while (*path == '/') path++; - if (!dirFile->isRoot()) { - if (!dir2.openRoot(dirFile->vol_)) goto fail; - parent = &dir2; - } - } - while (1) { - if (!make83Name(path, dname, &path)) goto fail; - while (*path == '/') path++; - if (!*path) break; - if (!sub->open(parent, dname, O_READ)) goto fail; - if (parent != dirFile) parent->close(); - parent = sub; - sub = parent != &dir1 ? &dir1 : &dir2; - } - return open(parent, dname, oflag); -fail: - return false; -} -//------------------------------------------------------------------------------ -// open with filename in dname -bool SdBaseFile::open(SdBaseFile* dirFile, - const uint8_t dname[11], uint8_t oflag) { - bool emptyFound = false; - bool fileFound = false; - uint8_t index; - dir_t* p; - - vol_ = dirFile->vol_; - - dirFile->rewind(); - // search for file - - while (dirFile->curPosition_ < dirFile->fileSize_) { - index = 0XF & (dirFile->curPosition_ >> 5); - p = dirFile->readDirCache(); - if (!p) goto fail; - - if (p->name[0] == DIR_NAME_FREE || p->name[0] == DIR_NAME_DELETED) { - // remember first empty slot - if (!emptyFound) { - dirBlock_ = dirFile->vol_->cacheBlockNumber(); - dirIndex_ = index; - emptyFound = true; - } - // done if no entries follow - if (p->name[0] == DIR_NAME_FREE) break; - } - else if (!memcmp(dname, p->name, 11)) { - fileFound = true; - break; - } - } - if (fileFound) { - // don't open existing file if O_EXCL - if (oflag & O_EXCL) goto fail; - } - else { - // don't create unless O_CREAT and O_WRITE - if (!(oflag & O_CREAT) || !(oflag & O_WRITE)) goto fail; - if (emptyFound) { - index = dirIndex_; - p = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!p) goto fail; - } - else { - if (dirFile->type_ == FAT_FILE_TYPE_ROOT_FIXED) goto fail; - - // add and zero cluster for dirFile - first cluster is in cache for write - if (!dirFile->addDirCluster()) goto fail; - - // use first entry in cluster - p = dirFile->vol_->cache()->dir; - index = 0; - } - // initialize as empty file - memset(p, 0, sizeof(dir_t)); - memcpy(p->name, dname, 11); - - // set timestamps - if (dateTime_) { - // call user date/time function - dateTime_(&p->creationDate, &p->creationTime); - } - else { - // use default date/time - p->creationDate = FAT_DEFAULT_DATE; - p->creationTime = FAT_DEFAULT_TIME; - } - p->lastAccessDate = p->creationDate; - p->lastWriteDate = p->creationDate; - p->lastWriteTime = p->creationTime; - - // write entry to SD - if (!dirFile->vol_->cacheFlush()) goto fail; - } - // open entry in cache - return openCachedEntry(index, oflag); -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Open a file by index. - * - * \param[in] dirFile An open SdFat instance for the directory. - * - * \param[in] index The \a index of the directory entry for the file to be - * opened. The value for \a index is (directory file position)/32. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. - * - * See open() by path for definition of flags. - * \return true for success or false for failure. - */ -bool SdBaseFile::open(SdBaseFile* dirFile, uint16_t index, uint8_t oflag) { - dir_t* p; - - vol_ = dirFile->vol_; - - // error if already open - if (isOpen() || !dirFile) goto fail; - - // don't open existing file if O_EXCL - user call error - if (oflag & O_EXCL) goto fail; - - // seek to location of entry - if (!dirFile->seekSet(32 * index)) goto fail; - - // read entry into cache - p = dirFile->readDirCache(); - if (!p) goto fail; - - // error if empty slot or '.' or '..' - if (p->name[0] == DIR_NAME_FREE || - p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') { - goto fail; - } - // open cached entry - return openCachedEntry(index & 0XF, oflag); -fail: - return false; -} -//------------------------------------------------------------------------------ -// open a cached directory entry. Assumes vol_ is initialized -bool SdBaseFile::openCachedEntry(uint8_t dirIndex, uint8_t oflag) { - // location of entry in cache - dir_t* p = &vol_->cache()->dir[dirIndex]; - - // write or truncate is an error for a directory or read-only file - if (p->attributes & (DIR_ATT_READ_ONLY | DIR_ATT_DIRECTORY)) { - if (oflag & (O_WRITE | O_TRUNC)) goto fail; - } - // remember location of directory entry on SD - dirBlock_ = vol_->cacheBlockNumber(); - dirIndex_ = dirIndex; - - // copy first cluster number for directory fields - firstCluster_ = (uint32_t)p->firstClusterHigh << 16; - firstCluster_ |= p->firstClusterLow; - - // make sure it is a normal file or subdirectory - if (DIR_IS_FILE(p)) { - fileSize_ = p->fileSize; - type_ = FAT_FILE_TYPE_NORMAL; - } - else if (DIR_IS_SUBDIR(p)) { - if (!vol_->chainSize(firstCluster_, &fileSize_)) goto fail; - type_ = FAT_FILE_TYPE_SUBDIR; - } - else { - goto fail; - } - // save open flags for read/write - flags_ = oflag & F_OFLAG; - - // set to start of file - curCluster_ = 0; - curPosition_ = 0; - if ((oflag & O_TRUNC) && !truncate(0)) return false; - return oflag & O_AT_END ? seekEnd(0) : true; -fail: - type_ = FAT_FILE_TYPE_CLOSED; - return false; -} -//------------------------------------------------------------------------------ -/** Open the next file or subdirectory in a directory. - * - * \param[in] dirFile An open SdFat instance for the directory containing the - * file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. - * - * See open() by path for definition of flags. - * \return true for success or false for failure. - */ -bool SdBaseFile::openNext(SdBaseFile* dirFile, uint8_t oflag) { - dir_t* p; - uint8_t index; - - if (!dirFile) goto fail; - - // error if already open - if (isOpen()) goto fail; - - vol_ = dirFile->vol_; - - while (1) { - index = 0XF & (dirFile->curPosition_ >> 5); - - // read entry into cache - p = dirFile->readDirCache(); - if (!p) goto fail; - - // done if last entry - if (p->name[0] == DIR_NAME_FREE) goto fail; - - // skip empty slot or '.' or '..' - if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') { - continue; - } - // must be file or dir - if (DIR_IS_FILE_OR_SUBDIR(p)) { - return openCachedEntry(index, oflag); - } - } -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Open a directory's parent directory. - * - * \param[in] dir Parent of this directory will be opened. Must not be root. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::openParent(SdBaseFile* dir) { - dir_t entry; - dir_t* p; - SdBaseFile file; - uint32_t c; - uint32_t cluster; - uint32_t lbn; - // error if already open or dir is root or dir is not a directory - if (isOpen() || !dir || dir->isRoot() || !dir->isDir()) goto fail; - vol_ = dir->vol_; - // position to '..' - if (!dir->seekSet(32)) goto fail; - // read '..' entry - if (dir->read(&entry, sizeof(entry)) != 32) goto fail; - // verify it is '..' - if (entry.name[0] != '.' || entry.name[1] != '.') goto fail; - // start cluster for '..' - cluster = entry.firstClusterLow; - cluster |= (uint32_t)entry.firstClusterHigh << 16; - if (cluster == 0) return openRoot(vol_); - // start block for '..' - lbn = vol_->clusterStartBlock(cluster); - // first block of parent dir - if (!vol_->cacheRawBlock(lbn, SdVolume::CACHE_FOR_READ)) { - goto fail; - } - p = &vol_->cacheBuffer_.dir[1]; - // verify name for '../..' - if (p->name[0] != '.' || p->name[1] != '.') goto fail; - // '..' is pointer to first cluster of parent. open '../..' to find parent - if (p->firstClusterHigh == 0 && p->firstClusterLow == 0) { - if (!file.openRoot(dir->volume())) goto fail; - } - else if (!file.openCachedEntry(1, O_READ)) { - goto fail; - } - // search for parent in '../..' - do { - if (file.readDir(&entry, NULL) != 32) goto fail; - c = entry.firstClusterLow; - c |= (uint32_t)entry.firstClusterHigh << 16; - } while (c != cluster); - // open parent - return open(&file, file.curPosition() / 32 - 1, O_READ); -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Open a volume's root directory. - * - * \param[in] vol The FAT volume containing the root directory to be opened. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include the file is already open, the FAT volume has - * not been initialized or it a FAT12 volume. - */ -bool SdBaseFile::openRoot(SdVolume* vol) { - // error if file is already open - if (isOpen()) goto fail; - - if (vol->fatType() == 16 || (FAT12_SUPPORT && vol->fatType() == 12)) { - type_ = FAT_FILE_TYPE_ROOT_FIXED; - firstCluster_ = 0; - fileSize_ = 32 * vol->rootDirEntryCount(); - } - else if (vol->fatType() == 32) { - type_ = FAT_FILE_TYPE_ROOT32; - firstCluster_ = vol->rootDirStart(); - if (!vol->chainSize(firstCluster_, &fileSize_)) goto fail; - } - else { - // volume is not initialized, invalid, or FAT12 without support - return false; - } - vol_ = vol; - // read only - flags_ = O_READ; - - // set to start of file - curCluster_ = 0; - curPosition_ = 0; - - // root has no directory entry - dirBlock_ = 0; - dirIndex_ = 0; - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Return the next available byte without consuming it. - * - * \return The byte if no error and not at eof else -1; - */ -int SdBaseFile::peek() { - filepos_t pos; - getpos(&pos); - int c = read(); - if (c >= 0) setpos(&pos); - return c; -} - -//------------------------------------------------------------------------------ -/** %Print the name field of a directory entry in 8.3 format. - * \param[in] pr Print stream for output. - * \param[in] dir The directory structure containing the name. - * \param[in] width Blank fill name if length is less than \a width. - * \param[in] printSlash Print '/' after directory names if true. - */ -void SdBaseFile::printDirName(const dir_t& dir, - uint8_t width, bool printSlash) { - uint8_t w = 0; - for (uint8_t i = 0; i < 11; i++) { - if (dir.name[i] == ' ')continue; - if (i == 8) { - MYSERIAL.write('.'); - w++; - } - MYSERIAL.write(dir.name[i]); - w++; - } - if (DIR_IS_SUBDIR(&dir) && printSlash) { - MYSERIAL.write('/'); - w++; - } - while (w < width) { - MYSERIAL.write(' '); - w++; - } -} -//------------------------------------------------------------------------------ -// print uint8_t with width 2 -static void print2u(uint8_t v) { - if (v < 10) MYSERIAL.write('0'); - MYSERIAL.print(v, DEC); -} -//------------------------------------------------------------------------------ -/** %Print a directory date field to Serial. - * - * Format is yyyy-mm-dd. - * - * \param[in] fatDate The date field from a directory entry. - */ - -//------------------------------------------------------------------------------ -/** %Print a directory date field. - * - * Format is yyyy-mm-dd. - * - * \param[in] pr Print stream for output. - * \param[in] fatDate The date field from a directory entry. - */ -void SdBaseFile::printFatDate(uint16_t fatDate) { - MYSERIAL.print(FAT_YEAR(fatDate)); - MYSERIAL.write('-'); - print2u(FAT_MONTH(fatDate)); - MYSERIAL.write('-'); - print2u(FAT_DAY(fatDate)); -} - -//------------------------------------------------------------------------------ -/** %Print a directory time field. - * - * Format is hh:mm:ss. - * - * \param[in] pr Print stream for output. - * \param[in] fatTime The time field from a directory entry. - */ -void SdBaseFile::printFatTime(uint16_t fatTime) { - print2u(FAT_HOUR(fatTime)); - MYSERIAL.write(':'); - print2u(FAT_MINUTE(fatTime)); - MYSERIAL.write(':'); - print2u(FAT_SECOND(fatTime)); -} -//------------------------------------------------------------------------------ -/** Print a file's name to Serial - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::printName() { - char name[FILENAME_LENGTH]; - if (!getFilename(name)) return false; - MYSERIAL.print(name); - return true; -} -//------------------------------------------------------------------------------ -/** Read the next byte from a file. - * - * \return For success read returns the next byte in the file as an int. - * If an error occurs or end of file is reached -1 is returned. - */ -int16_t SdBaseFile::read() { - uint8_t b; - return read(&b, 1) == 1 ? b : -1; -} -//------------------------------------------------------------------------------ -/** Read data from a file starting at the current position. - * - * \param[out] buf Pointer to the location that will receive the data. - * - * \param[in] nbyte Maximum number of bytes to read. - * - * \return For success read() returns the number of bytes read. - * A value less than \a nbyte, including zero, will be returned - * if end of file is reached. - * If an error occurs, read() returns -1. Possible errors include - * read() called before a file has been opened, corrupt file system - * or an I/O error occurred. - */ -int16_t SdBaseFile::read(void* buf, uint16_t nbyte) { - uint8_t* dst = reinterpret_cast(buf); - uint16_t offset; - uint16_t toRead; - uint32_t block; // raw device block number - - // error if not open or write only - if (!isOpen() || !(flags_ & O_READ)) goto fail; - - // max bytes left in file - NOMORE(nbyte, fileSize_ - curPosition_); - - // amount left to read - toRead = nbyte; - while (toRead > 0) { - offset = curPosition_ & 0X1FF; // offset in block - if (type_ == FAT_FILE_TYPE_ROOT_FIXED) { - block = vol_->rootDirStart() + (curPosition_ >> 9); - } - else { - uint8_t blockOfCluster = vol_->blockOfCluster(curPosition_); - if (offset == 0 && blockOfCluster == 0) { - // start of new cluster - if (curPosition_ == 0) { - // use first cluster in file - curCluster_ = firstCluster_; - } - else { - // get next cluster from FAT - if (!vol_->fatGet(curCluster_, &curCluster_)) goto fail; - } - } - block = vol_->clusterStartBlock(curCluster_) + blockOfCluster; - } - uint16_t n = toRead; - - // amount to be read from current block - NOMORE(n, 512 - offset); - - // no buffering needed if n == 512 - if (n == 512 && block != vol_->cacheBlockNumber()) { - if (!vol_->readBlock(block, dst)) goto fail; - } - else { - // read block to cache and copy data to caller - if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_READ)) goto fail; - uint8_t* src = vol_->cache()->data + offset; - memcpy(dst, src, n); - } - dst += n; - curPosition_ += n; - toRead -= n; - } - return nbyte; -fail: - return -1; -} - -/** - * Read the next entry in a directory. - * - * \param[out] dir The dir_t struct that will receive the data. - * - * \return For success readDir() returns the number of bytes read. - * A value of zero will be returned if end of file is reached. - * If an error occurs, readDir() returns -1. Possible errors include - * readDir() called before a directory has been opened, this is not - * a directory file or an I/O error occurred. - */ -int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { - int16_t n; - // if not a directory file or miss-positioned return an error - if (!isDir() || (0X1F & curPosition_)) return -1; - - //If we have a longFilename buffer, mark it as invalid. If we find a long filename it will be filled automaticly. - if (longFilename != NULL) longFilename[0] = '\0'; - - while (1) { - - n = read(dir, sizeof(dir_t)); - if (n != sizeof(dir_t)) return n == 0 ? 0 : -1; - - // last entry if DIR_NAME_FREE - if (dir->name[0] == DIR_NAME_FREE) return 0; - - // skip empty entries and entry for . and .. - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') continue; - - // Fill the long filename if we have a long filename entry. - // Long filename entries are stored before the short filename. - if (longFilename != NULL && DIR_IS_LONG_NAME(dir)) { - vfat_t* VFAT = (vfat_t*)dir; - // Sanity-check the VFAT entry. The first cluster is always set to zero. And the sequence number should be higher than 0 - if (VFAT->firstClusterLow == 0 && (VFAT->sequenceNumber & 0x1F) > 0 && (VFAT->sequenceNumber & 0x1F) <= MAX_VFAT_ENTRIES) { - // TODO: Store the filename checksum to verify if a none-long filename aware system modified the file table. - n = ((VFAT->sequenceNumber & 0x1F) - 1) * (FILENAME_LENGTH); - for (uint8_t i = 0; i < FILENAME_LENGTH; i++) - longFilename[n + i] = (i < 5) ? VFAT->name1[i] : (i < 11) ? VFAT->name2[i - 5] : VFAT->name3[i - 11]; - // If this VFAT entry is the last one, add a NUL terminator at the end of the string - if (VFAT->sequenceNumber & 0x40) longFilename[n + FILENAME_LENGTH] = '\0'; - } - } - // Return if normal file or subdirectory - if (DIR_IS_FILE_OR_SUBDIR(dir)) return n; - } -} - -//------------------------------------------------------------------------------ -// Read next directory entry into the cache -// Assumes file is correctly positioned -dir_t* SdBaseFile::readDirCache() { - uint8_t i; - // error if not directory - if (!isDir()) goto fail; - - // index of entry in cache - i = (curPosition_ >> 5) & 0XF; - - // use read to locate and cache block - if (read() < 0) goto fail; - - // advance to next entry - curPosition_ += 31; - - // return pointer to entry - return vol_->cache()->dir + i; -fail: - return 0; -} -//------------------------------------------------------------------------------ -/** Remove a file. - * - * The directory entry and all data for the file are deleted. - * - * \note This function should not be used to delete the 8.3 version of a - * file that has a long name. For example if a file has the long name - * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include the file read-only, is a directory, - * or an I/O error occurred. - */ -bool SdBaseFile::remove() { - dir_t* d; - // free any clusters - will fail if read-only or directory - if (!truncate(0)) goto fail; - - // cache directory entry - d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) goto fail; - - // mark entry deleted - d->name[0] = DIR_NAME_DELETED; - - // set this file closed - type_ = FAT_FILE_TYPE_CLOSED; - - // write entry to SD - return vol_->cacheFlush(); - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Remove a file. - * - * The directory entry and all data for the file are deleted. - * - * \param[in] dirFile The directory that contains the file. - * \param[in] path Path for the file to be removed. - * - * \note This function should not be used to delete the 8.3 version of a - * file that has a long name. For example if a file has the long name - * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include the file is a directory, is read only, - * \a dirFile is not a directory, \a path is not found - * or an I/O error occurred. - */ -bool SdBaseFile::remove(SdBaseFile* dirFile, const char* path) { - SdBaseFile file; - if (!file.open(dirFile, path, O_WRITE)) goto fail; - return file.remove(); -fail: - // can't set iostate - static function - return false; -} -//------------------------------------------------------------------------------ -/** Rename a file or subdirectory. - * - * \param[in] dirFile Directory for the new path. - * \param[in] newPath New path name for the file/directory. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include \a dirFile is not open or is not a directory - * file, newPath is invalid or already exists, or an I/O error occurs. - */ -bool SdBaseFile::rename(SdBaseFile* dirFile, const char* newPath) { - dir_t entry; - uint32_t dirCluster = 0; - SdBaseFile file; - dir_t* d; - - // must be an open file or subdirectory - if (!(isFile() || isSubDir())) goto fail; - - // can't move file - if (vol_ != dirFile->vol_) goto fail; - - // sync() and cache directory entry - sync(); - d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) goto fail; - - // save directory entry - memcpy(&entry, d, sizeof(entry)); - - // mark entry deleted - d->name[0] = DIR_NAME_DELETED; - - // make directory entry for new path - if (isFile()) { - if (!file.open(dirFile, newPath, O_CREAT | O_EXCL | O_WRITE)) { - goto restore; - } - } - else { - // don't create missing path prefix components - if (!file.mkdir(dirFile, newPath, false)) { - goto restore; - } - // save cluster containing new dot dot - dirCluster = file.firstCluster_; - } - // change to new directory entry - dirBlock_ = file.dirBlock_; - dirIndex_ = file.dirIndex_; - - // mark closed to avoid possible destructor close call - file.type_ = FAT_FILE_TYPE_CLOSED; - - // cache new directory entry - d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) goto fail; - - // copy all but name field to new directory entry - memcpy(&d->attributes, &entry.attributes, sizeof(entry) - sizeof(d->name)); - - // update dot dot if directory - if (dirCluster) { - // get new dot dot - uint32_t block = vol_->clusterStartBlock(dirCluster); - if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_READ)) goto fail; - memcpy(&entry, &vol_->cache()->dir[1], sizeof(entry)); - - // free unused cluster - if (!vol_->freeChain(dirCluster)) goto fail; - - // store new dot dot - block = vol_->clusterStartBlock(firstCluster_); - if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) goto fail; - memcpy(&vol_->cache()->dir[1], &entry, sizeof(entry)); - } - return vol_->cacheFlush(); - -restore: - d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) goto fail; - // restore entry - d->name[0] = entry.name[0]; - vol_->cacheFlush(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Remove a directory file. - * - * The directory file will be removed only if it is empty and is not the - * root directory. rmdir() follows DOS and Windows and ignores the - * read-only attribute for the directory. - * - * \note This function should not be used to delete the 8.3 version of a - * directory that has a long name. For example if a directory has the - * long name "New folder" you should not delete the 8.3 name "NEWFOL~1". - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include the file is not a directory, is the root - * directory, is not empty, or an I/O error occurred. - */ -bool SdBaseFile::rmdir() { - // must be open subdirectory - if (!isSubDir()) goto fail; - - rewind(); - - // make sure directory is empty - while (curPosition_ < fileSize_) { - dir_t* p = readDirCache(); - if (!p) goto fail; - // done if past last used entry - if (p->name[0] == DIR_NAME_FREE) break; - // skip empty slot, '.' or '..' - if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') continue; - // error not empty - if (DIR_IS_FILE_OR_SUBDIR(p)) goto fail; - } - // convert empty directory to normal file for remove - type_ = FAT_FILE_TYPE_NORMAL; - flags_ |= O_WRITE; - return remove(); -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Recursively delete a directory and all contained files. - * - * This is like the Unix/Linux 'rm -rf *' if called with the root directory - * hence the name. - * - * Warning - This will remove all contents of the directory including - * subdirectories. The directory will then be removed if it is not root. - * The read-only attribute for files will be ignored. - * - * \note This function should not be used to delete the 8.3 version of - * a directory that has a long name. See remove() and rmdir(). - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::rmRfStar() { - uint16_t index; - SdBaseFile f; - rewind(); - while (curPosition_ < fileSize_) { - // remember position - index = curPosition_ / 32; - - dir_t* p = readDirCache(); - if (!p) goto fail; - - // done if past last entry - if (p->name[0] == DIR_NAME_FREE) break; - - // skip empty slot or '.' or '..' - if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') continue; - - // skip if part of long file name or volume label in root - if (!DIR_IS_FILE_OR_SUBDIR(p)) continue; - - if (!f.open(this, index, O_READ)) goto fail; - if (f.isSubDir()) { - // recursively delete - if (!f.rmRfStar()) goto fail; - } - else { - // ignore read-only - f.flags_ |= O_WRITE; - if (!f.remove()) goto fail; - } - // position to next entry if required - if (curPosition_ != (32 * (index + 1))) { - if (!seekSet(32 * (index + 1))) goto fail; - } - } - // don't try to delete root - if (!isRoot()) { - if (!rmdir()) goto fail; - } - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Create a file object and open it in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t). - */ -SdBaseFile::SdBaseFile(const char* path, uint8_t oflag) { - type_ = FAT_FILE_TYPE_CLOSED; - writeError = false; - open(path, oflag); -} -//------------------------------------------------------------------------------ -/** Sets a file's position. - * - * \param[in] pos The new position in bytes from the beginning of the file. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::seekSet(uint32_t pos) { - uint32_t nCur; - uint32_t nNew; - // error if file not open or seek past end of file - if (!isOpen() || pos > fileSize_) goto fail; - - if (type_ == FAT_FILE_TYPE_ROOT_FIXED) { - curPosition_ = pos; - goto done; - } - if (pos == 0) { - // set position to start of file - curCluster_ = 0; - curPosition_ = 0; - goto done; - } - // calculate cluster index for cur and new position - nCur = (curPosition_ - 1) >> (vol_->clusterSizeShift_ + 9); - nNew = (pos - 1) >> (vol_->clusterSizeShift_ + 9); - - if (nNew < nCur || curPosition_ == 0) { - // must follow chain from first cluster - curCluster_ = firstCluster_; - } - else { - // advance from curPosition - nNew -= nCur; - } - while (nNew--) { - if (!vol_->fatGet(curCluster_, &curCluster_)) goto fail; - } - curPosition_ = pos; - -done: - return true; - -fail: - return false; -} -//------------------------------------------------------------------------------ -void SdBaseFile::setpos(filepos_t* pos) { - curPosition_ = pos->position; - curCluster_ = pos->cluster; -} -//------------------------------------------------------------------------------ -/** The sync() call causes all modified data and directory fields - * to be written to the storage device. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include a call to sync() before a file has been - * opened or an I/O error. - */ -bool SdBaseFile::sync() { - // only allow open files and directories - if (!isOpen()) goto fail; - - if (flags_ & F_FILE_DIR_DIRTY) { - dir_t* d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - // check for deleted by another open file object - if (!d || d->name[0] == DIR_NAME_DELETED) goto fail; - - // do not set filesize for dir files - if (!isDir()) d->fileSize = fileSize_; - - // update first cluster fields - d->firstClusterLow = firstCluster_ & 0XFFFF; - d->firstClusterHigh = firstCluster_ >> 16; - - // set modify time if user supplied a callback date/time function - if (dateTime_) { - dateTime_(&d->lastWriteDate, &d->lastWriteTime); - d->lastAccessDate = d->lastWriteDate; - } - // clear directory dirty - flags_ &= ~F_FILE_DIR_DIRTY; - } - return vol_->cacheFlush(); - -fail: - writeError = true; - return false; -} -//------------------------------------------------------------------------------ -/** Copy a file's timestamps - * - * \param[in] file File to copy timestamps from. - * - * \note - * Modify and access timestamps may be overwritten if a date time callback - * function has been set by dateTimeCallback(). - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::timestamp(SdBaseFile* file) { - dir_t* d; - dir_t dir; - - // get timestamps - if (!file->dirEntry(&dir)) goto fail; - - // update directory fields - if (!sync()) goto fail; - - d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) goto fail; - - // copy timestamps - d->lastAccessDate = dir.lastAccessDate; - d->creationDate = dir.creationDate; - d->creationTime = dir.creationTime; - d->creationTimeTenths = dir.creationTimeTenths; - d->lastWriteDate = dir.lastWriteDate; - d->lastWriteTime = dir.lastWriteTime; - - // write back entry - return vol_->cacheFlush(); - -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Set a file's timestamps in its directory entry. - * - * \param[in] flags Values for \a flags are constructed by a bitwise-inclusive - * OR of flags from the following list - * - * T_ACCESS - Set the file's last access date. - * - * T_CREATE - Set the file's creation date and time. - * - * T_WRITE - Set the file's last write/modification date and time. - * - * \param[in] year Valid range 1980 - 2107 inclusive. - * - * \param[in] month Valid range 1 - 12 inclusive. - * - * \param[in] day Valid range 1 - 31 inclusive. - * - * \param[in] hour Valid range 0 - 23 inclusive. - * - * \param[in] minute Valid range 0 - 59 inclusive. - * - * \param[in] second Valid range 0 - 59 inclusive - * - * \note It is possible to set an invalid date since there is no check for - * the number of days in a month. - * - * \note - * Modify and access timestamps may be overwritten if a date time callback - * function has been set by dateTimeCallback(). - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -bool SdBaseFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { - uint16_t dirDate; - uint16_t dirTime; - dir_t* d; - - if (!isOpen() - || year < 1980 - || year > 2107 - || month < 1 - || month > 12 - || day < 1 - || day > 31 - || hour > 23 - || minute > 59 - || second > 59) { - goto fail; - } - // update directory entry - if (!sync()) goto fail; - - d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) goto fail; - - dirDate = FAT_DATE(year, month, day); - dirTime = FAT_TIME(hour, minute, second); - if (flags & T_ACCESS) { - d->lastAccessDate = dirDate; - } - if (flags & T_CREATE) { - d->creationDate = dirDate; - d->creationTime = dirTime; - // seems to be units of 1/100 second not 1/10 as Microsoft states - d->creationTimeTenths = second & 1 ? 100 : 0; - } - if (flags & T_WRITE) { - d->lastWriteDate = dirDate; - d->lastWriteTime = dirTime; - } - return vol_->cacheFlush(); -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Truncate a file to a specified length. The current file position - * will be maintained if it is less than or equal to \a length otherwise - * it will be set to end of file. - * - * \param[in] length The desired length for the file. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include file is read only, file is a directory, - * \a length is greater than the current file size or an I/O error occurs. - */ -bool SdBaseFile::truncate(uint32_t length) { - uint32_t newPos; - // error if not a normal file or read-only - if (!isFile() || !(flags_ & O_WRITE)) goto fail; - - // error if length is greater than current size - if (length > fileSize_) goto fail; - - // fileSize and length are zero - nothing to do - if (fileSize_ == 0) return true; - - // remember position for seek after truncation - newPos = curPosition_ > length ? length : curPosition_; - - // position to last cluster in truncated file - if (!seekSet(length)) goto fail; - - if (length == 0) { - // free all clusters - if (!vol_->freeChain(firstCluster_)) goto fail; - firstCluster_ = 0; - } - else { - uint32_t toFree; - if (!vol_->fatGet(curCluster_, &toFree)) goto fail; - - if (!vol_->isEOC(toFree)) { - // free extra clusters - if (!vol_->freeChain(toFree)) goto fail; - - // current cluster is end of chain - if (!vol_->fatPutEOC(curCluster_)) goto fail; - } - } - fileSize_ = length; - - // need to update directory entry - flags_ |= F_FILE_DIR_DIRTY; - - if (!sync()) goto fail; - - // set file to correct position - return seekSet(newPos); - -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Write data to an open file. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] nbyte Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an I/O error. - * - */ -int16_t SdBaseFile::write(const void* buf, uint16_t nbyte) { - // convert void* to uint8_t* - must be before goto statements - const uint8_t* src = reinterpret_cast(buf); - - // number of bytes left to write - must be before goto statements - uint16_t nToWrite = nbyte; - - // error if not a normal file or is read-only - if (!isFile() || !(flags_ & O_WRITE)) goto fail; - - // seek to end of file if append flag - if ((flags_ & O_APPEND) && curPosition_ != fileSize_) { - if (!seekEnd()) goto fail; - } - - while (nToWrite > 0) { - uint8_t blockOfCluster = vol_->blockOfCluster(curPosition_); - uint16_t blockOffset = curPosition_ & 0X1FF; - if (blockOfCluster == 0 && blockOffset == 0) { - // start of new cluster - if (curCluster_ == 0) { - if (firstCluster_ == 0) { - // allocate first cluster of file - if (!addCluster()) goto fail; - } - else { - curCluster_ = firstCluster_; - } - } - else { - uint32_t next; - if (!vol_->fatGet(curCluster_, &next)) goto fail; - if (vol_->isEOC(next)) { - // add cluster if at end of chain - if (!addCluster()) goto fail; - } - else { - curCluster_ = next; - } - } - } - // max space in block - uint16_t n = 512 - blockOffset; - - // lesser of space and amount to write - NOMORE(n, nToWrite); - - // block for data write - uint32_t block = vol_->clusterStartBlock(curCluster_) + blockOfCluster; - if (n == 512) { - // full block - don't need to use cache - if (vol_->cacheBlockNumber() == block) { - // invalidate cache if block is in cache - vol_->cacheSetBlockNumber(0XFFFFFFFF, false); - } - if (!vol_->writeBlock(block, src)) goto fail; - } - else { - if (blockOffset == 0 && curPosition_ >= fileSize_) { - // start of new block don't need to read into cache - if (!vol_->cacheFlush()) goto fail; - // set cache dirty and SD address of block - vol_->cacheSetBlockNumber(block, true); - } - else { - // rewrite part of block - if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) goto fail; - } - uint8_t* dst = vol_->cache()->data + blockOffset; - memcpy(dst, src, n); - } - curPosition_ += n; - src += n; - nToWrite -= n; - } - if (curPosition_ > fileSize_) { - // update fileSize and insure sync will update dir entry - fileSize_ = curPosition_; - flags_ |= F_FILE_DIR_DIRTY; - } - else if (dateTime_ && nbyte) { - // insure sync will update modified date and time - flags_ |= F_FILE_DIR_DIRTY; - } - - if (flags_ & O_SYNC) { - if (!sync()) goto fail; - } - return nbyte; - -fail: - // return for write error - writeError = true; - return -1; -} -//------------------------------------------------------------------------------ -// suppress cpplint warnings with NOLINT comment -#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN) - void (*SdBaseFile::oldDateTime_)(uint16_t& date, uint16_t& time) = 0; // NOLINT -#endif // ALLOW_DEPRECATED_FUNCTIONS - - -#endif diff --git a/lib/Marlin/SdBaseFile.h b/lib/Marlin/SdBaseFile.h deleted file mode 100644 index 2b912d2..0000000 --- a/lib/Marlin/SdBaseFile.h +++ /dev/null @@ -1,492 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" -#if ENABLED(SDSUPPORT) - -#ifndef SdBaseFile_h -#define SdBaseFile_h -/** - * \file - * \brief SdBaseFile class - */ -#include "Marlin.h" -#include "SdFatConfig.h" -#include "SdVolume.h" -//------------------------------------------------------------------------------ -/** - * \struct filepos_t - * \brief internal type for istream - * do not use in user apps - */ -struct filepos_t { - /** stream position */ - uint32_t position; - /** cluster for position */ - uint32_t cluster; - filepos_t() : position(0), cluster(0) {} -}; - -// use the gnu style oflag in open() -/** open() oflag for reading */ -uint8_t const O_READ = 0X01; -/** open() oflag - same as O_IN */ -uint8_t const O_RDONLY = O_READ; -/** open() oflag for write */ -uint8_t const O_WRITE = 0X02; -/** open() oflag - same as O_WRITE */ -uint8_t const O_WRONLY = O_WRITE; -/** open() oflag for reading and writing */ -uint8_t const O_RDWR = (O_READ | O_WRITE); -/** open() oflag mask for access modes */ -uint8_t const O_ACCMODE = (O_READ | O_WRITE); -/** The file offset shall be set to the end of the file prior to each write. */ -uint8_t const O_APPEND = 0X04; -/** synchronous writes - call sync() after each write */ -uint8_t const O_SYNC = 0X08; -/** truncate the file to zero length */ -uint8_t const O_TRUNC = 0X10; -/** set the initial position at the end of the file */ -uint8_t const O_AT_END = 0X20; -/** create the file if nonexistent */ -uint8_t const O_CREAT = 0X40; -/** If O_CREAT and O_EXCL are set, open() shall fail if the file exists */ -uint8_t const O_EXCL = 0X80; - -// SdBaseFile class static and const definitions -// flags for ls() -/** ls() flag to print modify date */ -uint8_t const LS_DATE = 1; -/** ls() flag to print file size */ -uint8_t const LS_SIZE = 2; -/** ls() flag for recursive list of subdirectories */ -uint8_t const LS_R = 4; - - -// flags for timestamp -/** set the file's last access date */ -uint8_t const T_ACCESS = 1; -/** set the file's creation date and time */ -uint8_t const T_CREATE = 2; -/** Set the file's write date and time */ -uint8_t const T_WRITE = 4; -// values for type_ -/** This file has not been opened. */ -uint8_t const FAT_FILE_TYPE_CLOSED = 0; -/** A normal file */ -uint8_t const FAT_FILE_TYPE_NORMAL = 1; -/** A FAT12 or FAT16 root directory */ -uint8_t const FAT_FILE_TYPE_ROOT_FIXED = 2; -/** A FAT32 root directory */ -uint8_t const FAT_FILE_TYPE_ROOT32 = 3; -/** A subdirectory file*/ -uint8_t const FAT_FILE_TYPE_SUBDIR = 4; -/** Test value for directory type */ -uint8_t const FAT_FILE_TYPE_MIN_DIR = FAT_FILE_TYPE_ROOT_FIXED; - -/** date field for FAT directory entry - * \param[in] year [1980,2107] - * \param[in] month [1,12] - * \param[in] day [1,31] - * - * \return Packed date for dir_t entry. - */ -static inline uint16_t FAT_DATE(uint16_t year, uint8_t month, uint8_t day) { - return (year - 1980) << 9 | month << 5 | day; -} -/** year part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted year [1980,2107] - */ -static inline uint16_t FAT_YEAR(uint16_t fatDate) { - return 1980 + (fatDate >> 9); -} -/** month part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted month [1,12] - */ -static inline uint8_t FAT_MONTH(uint16_t fatDate) { - return (fatDate >> 5) & 0XF; -} -/** day part of FAT directory date field - * \param[in] fatDate Date in packed dir format. - * - * \return Extracted day [1,31] - */ -static inline uint8_t FAT_DAY(uint16_t fatDate) { - return fatDate & 0X1F; -} -/** time field for FAT directory entry - * \param[in] hour [0,23] - * \param[in] minute [0,59] - * \param[in] second [0,59] - * - * \return Packed time for dir_t entry. - */ -static inline uint16_t FAT_TIME(uint8_t hour, uint8_t minute, uint8_t second) { - return hour << 11 | minute << 5 | second >> 1; -} -/** hour part of FAT directory time field - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted hour [0,23] - */ -static inline uint8_t FAT_HOUR(uint16_t fatTime) { - return fatTime >> 11; -} -/** minute part of FAT directory time field - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted minute [0,59] - */ -static inline uint8_t FAT_MINUTE(uint16_t fatTime) { - return (fatTime >> 5) & 0X3F; -} -/** second part of FAT directory time field - * Note second/2 is stored in packed time. - * - * \param[in] fatTime Time in packed dir format. - * - * \return Extracted second [0,58] - */ -static inline uint8_t FAT_SECOND(uint16_t fatTime) { - return 2 * (fatTime & 0X1F); -} -/** Default date for file timestamps is 1 Jan 2000 */ -uint16_t const FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1; -/** Default time for file timestamp is 1 am */ -uint16_t const FAT_DEFAULT_TIME = (1 << 11); -//------------------------------------------------------------------------------ -/** - * \class SdBaseFile - * \brief Base class for SdFile with Print and C++ streams. - */ -class SdBaseFile { - public: - /** Create an instance. */ - SdBaseFile() : writeError(false), type_(FAT_FILE_TYPE_CLOSED) {} - SdBaseFile(const char* path, uint8_t oflag); - ~SdBaseFile() {if (isOpen()) close();} - /** - * writeError is set to true if an error occurs during a write(). - * Set writeError to false before calling print() and/or write() and check - * for true after calls to print() and/or write(). - */ - bool writeError; - //---------------------------------------------------------------------------- - // helpers for stream classes - /** get position for streams - * \param[out] pos struct to receive position - */ - void getpos(filepos_t* pos); - /** set position for streams - * \param[out] pos struct with value for new position - */ - void setpos(filepos_t* pos); - //---------------------------------------------------------------------------- - bool close(); - bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock); - bool createContiguous(SdBaseFile* dirFile, - const char* path, uint32_t size); - /** \return The current cluster number for a file or directory. */ - uint32_t curCluster() const {return curCluster_;} - /** \return The current position for a file or directory. */ - uint32_t curPosition() const {return curPosition_;} - /** \return Current working directory */ - static SdBaseFile* cwd() {return cwd_;} - /** Set the date/time callback function - * - * \param[in] dateTime The user's call back function. The callback - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here - * - * // return date using FAT_DATE macro to format fields - * *date = FAT_DATE(year, month, day); - * - * // return time using FAT_TIME macro to format fields - * *time = FAT_TIME(hour, minute, second); - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - * See the timestamp() function. - */ - static void dateTimeCallback( - void (*dateTime)(uint16_t* date, uint16_t* time)) { - dateTime_ = dateTime; - } - /** Cancel the date/time callback function. */ - static void dateTimeCallbackCancel() {dateTime_ = 0;} - bool dirEntry(dir_t* dir); - static void dirName(const dir_t& dir, char* name); - bool exists(const char* name); - int16_t fgets(char* str, int16_t num, char* delim = 0); - /** \return The total number of bytes in a file or directory. */ - uint32_t fileSize() const {return fileSize_;} - /** \return The first cluster number for a file or directory. */ - uint32_t firstCluster() const {return firstCluster_;} - bool getFilename(char* name); - /** \return True if this is a directory else false. */ - bool isDir() const {return type_ >= FAT_FILE_TYPE_MIN_DIR;} - /** \return True if this is a normal file else false. */ - bool isFile() const {return type_ == FAT_FILE_TYPE_NORMAL;} - /** \return True if this is an open file/directory else false. */ - bool isOpen() const {return type_ != FAT_FILE_TYPE_CLOSED;} - /** \return True if this is a subdirectory else false. */ - bool isSubDir() const {return type_ == FAT_FILE_TYPE_SUBDIR;} - /** \return True if this is the root directory. */ - bool isRoot() const { - return type_ == FAT_FILE_TYPE_ROOT_FIXED || type_ == FAT_FILE_TYPE_ROOT32; - } - void ls(uint8_t flags = 0, uint8_t indent = 0); - bool mkdir(SdBaseFile* dir, const char* path, bool pFlag = true); - // alias for backward compactability - bool makeDir(SdBaseFile* dir, const char* path) { - return mkdir(dir, path, false); - } - bool open(SdBaseFile* dirFile, uint16_t index, uint8_t oflag); - bool open(SdBaseFile* dirFile, const char* path, uint8_t oflag); - bool open(const char* path, uint8_t oflag = O_READ); - bool openNext(SdBaseFile* dirFile, uint8_t oflag); - bool openRoot(SdVolume* vol); - int peek(); - static void printFatDate(uint16_t fatDate); - static void printFatTime(uint16_t fatTime); - bool printName(); - int16_t read(); - int16_t read(void* buf, uint16_t nbyte); - int8_t readDir(dir_t* dir, char* longFilename); - static bool remove(SdBaseFile* dirFile, const char* path); - bool remove(); - /** Set the file's current position to zero. */ - void rewind() {seekSet(0);} - bool rename(SdBaseFile* dirFile, const char* newPath); - bool rmdir(); - // for backward compatibility - bool rmDir() {return rmdir();} - bool rmRfStar(); - /** Set the files position to current position + \a pos. See seekSet(). - * \param[in] offset The new position in bytes from the current position. - * \return true for success or false for failure. - */ - bool seekCur(int32_t offset) { - return seekSet(curPosition_ + offset); - } - /** Set the files position to end-of-file + \a offset. See seekSet(). - * \param[in] offset The new position in bytes from end-of-file. - * \return true for success or false for failure. - */ - bool seekEnd(int32_t offset = 0) {return seekSet(fileSize_ + offset);} - bool seekSet(uint32_t pos); - bool sync(); - bool timestamp(SdBaseFile* file); - bool timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day, - uint8_t hour, uint8_t minute, uint8_t second); - /** Type of file. You should use isFile() or isDir() instead of type() - * if possible. - * - * \return The file or directory type. - */ - uint8_t type() const {return type_;} - bool truncate(uint32_t size); - /** \return SdVolume that contains this file. */ - SdVolume* volume() const {return vol_;} - int16_t write(const void* buf, uint16_t nbyte); - //------------------------------------------------------------------------------ - private: - // allow SdFat to set cwd_ - friend class SdFat; - // global pointer to cwd dir - static SdBaseFile* cwd_; - // data time callback function - static void (*dateTime_)(uint16_t* date, uint16_t* time); - // bits defined in flags_ - // should be 0X0F - static uint8_t const F_OFLAG = (O_ACCMODE | O_APPEND | O_SYNC); - // sync of directory entry required - static uint8_t const F_FILE_DIR_DIRTY = 0X80; - - // private data - uint8_t flags_; // See above for definition of flags_ bits - uint8_t fstate_; // error and eof indicator - uint8_t type_; // type of file see above for values - uint32_t curCluster_; // cluster for current file position - uint32_t curPosition_; // current file position in bytes from beginning - uint32_t dirBlock_; // block for this files directory entry - uint8_t dirIndex_; // index of directory entry in dirBlock - uint32_t fileSize_; // file size in bytes - uint32_t firstCluster_; // first cluster of file - SdVolume* vol_; // volume where file is located - - /** experimental don't use */ - bool openParent(SdBaseFile* dir); - // private functions - bool addCluster(); - bool addDirCluster(); - dir_t* cacheDirEntry(uint8_t action); - int8_t lsPrintNext(uint8_t flags, uint8_t indent); - static bool make83Name(const char* str, uint8_t* name, const char** ptr); - bool mkdir(SdBaseFile* parent, const uint8_t dname[11]); - bool open(SdBaseFile* dirFile, const uint8_t dname[11], uint8_t oflag); - bool openCachedEntry(uint8_t cacheIndex, uint8_t oflags); - dir_t* readDirCache(); - //------------------------------------------------------------------------------ - // to be deleted - static void printDirName(const dir_t& dir, - uint8_t width, bool printSlash); - //------------------------------------------------------------------------------ - // Deprecated functions - suppress cpplint warnings with NOLINT comment -#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN) - public: - /** \deprecated Use: - * bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock); - * \param[out] bgnBlock the first block address for the file. - * \param[out] endBlock the last block address for the file. - * \return true for success or false for failure. - */ - bool contiguousRange(uint32_t& bgnBlock, uint32_t& endBlock) { // NOLINT - return contiguousRange(&bgnBlock, &endBlock); - } - /** \deprecated Use: - * bool createContiguous(SdBaseFile* dirFile, - * const char* path, uint32_t size) - * \param[in] dirFile The directory where the file will be created. - * \param[in] path A path with a valid DOS 8.3 file name. - * \param[in] size The desired file size. - * \return true for success or false for failure. - */ - bool createContiguous(SdBaseFile& dirFile, // NOLINT - const char* path, uint32_t size) { - return createContiguous(&dirFile, path, size); - } - /** \deprecated Use: - * static void dateTimeCallback( - * void (*dateTime)(uint16_t* date, uint16_t* time)); - * \param[in] dateTime The user's call back function. - */ - static void dateTimeCallback( - void (*dateTime)(uint16_t& date, uint16_t& time)) { // NOLINT - oldDateTime_ = dateTime; - dateTime_ = dateTime ? oldToNew : 0; - } - /** \deprecated Use: bool dirEntry(dir_t* dir); - * \param[out] dir Location for return of the file's directory entry. - * \return true for success or false for failure. - */ - bool dirEntry(dir_t& dir) {return dirEntry(&dir);} // NOLINT - /** \deprecated Use: - * bool mkdir(SdBaseFile* dir, const char* path); - * \param[in] dir An open SdFat instance for the directory that will contain - * the new directory. - * \param[in] path A path with a valid 8.3 DOS name for the new directory. - * \return true for success or false for failure. - */ - bool mkdir(SdBaseFile& dir, const char* path) { // NOLINT - return mkdir(&dir, path); - } - /** \deprecated Use: - * bool open(SdBaseFile* dirFile, const char* path, uint8_t oflag); - * \param[in] dirFile An open SdFat instance for the directory containing the - * file to be opened. - * \param[in] path A path with a valid 8.3 DOS name for the file. - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. - * \return true for success or false for failure. - */ - bool open(SdBaseFile& dirFile, // NOLINT - const char* path, uint8_t oflag) { - return open(&dirFile, path, oflag); - } - /** \deprecated Do not use in new apps - * \param[in] dirFile An open SdFat instance for the directory containing the - * file to be opened. - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * \return true for success or false for failure. - */ - bool open(SdBaseFile& dirFile, const char* path) { // NOLINT - return open(dirFile, path, O_RDWR); - } - /** \deprecated Use: - * bool open(SdBaseFile* dirFile, uint16_t index, uint8_t oflag); - * \param[in] dirFile An open SdFat instance for the directory. - * \param[in] index The \a index of the directory entry for the file to be - * opened. The value for \a index is (directory file position)/32. - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. - * \return true for success or false for failure. - */ - bool open(SdBaseFile& dirFile, uint16_t index, uint8_t oflag) { // NOLINT - return open(&dirFile, index, oflag); - } - /** \deprecated Use: bool openRoot(SdVolume* vol); - * \param[in] vol The FAT volume containing the root directory to be opened. - * \return true for success or false for failure. - */ - bool openRoot(SdVolume& vol) {return openRoot(&vol);} // NOLINT - /** \deprecated Use: int8_t readDir(dir_t* dir); - * \param[out] dir The dir_t struct that will receive the data. - * \return bytes read for success zero for eof or -1 for failure. - */ - int8_t readDir(dir_t& dir, char* longFilename) {return readDir(&dir, longFilename);} // NOLINT - /** \deprecated Use: - * static uint8_t remove(SdBaseFile* dirFile, const char* path); - * \param[in] dirFile The directory that contains the file. - * \param[in] path The name of the file to be removed. - * \return true for success or false for failure. - */ - static bool remove(SdBaseFile& dirFile, const char* path) { // NOLINT - return remove(&dirFile, path); - } - //------------------------------------------------------------------------------ - // rest are private - private: - static void (*oldDateTime_)(uint16_t& date, uint16_t& time); // NOLINT - static void oldToNew(uint16_t* date, uint16_t* time) { - uint16_t d; - uint16_t t; - oldDateTime_(d, t); - *date = d; - *time = t; - } -#endif // ALLOW_DEPRECATED_FUNCTIONS -}; - -#endif // SdBaseFile_h -#endif diff --git a/lib/Marlin/SdFatConfig.h b/lib/Marlin/SdFatConfig.h deleted file mode 100644 index d3406a0..0000000 --- a/lib/Marlin/SdFatConfig.h +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -/** - * \file - * \brief configuration definitions - */ -#include "Marlin.h" -#if ENABLED(SDSUPPORT) - -#ifndef SdFatConfig_h - #define SdFatConfig_h - #include - //------------------------------------------------------------------------------ - /** - * To use multiple SD cards set USE_MULTIPLE_CARDS nonzero. - * - * Using multiple cards costs 400 - 500 bytes of flash. - * - * Each card requires about 550 bytes of SRAM so use of a Mega is recommended. - */ - #define USE_MULTIPLE_CARDS 0 - //------------------------------------------------------------------------------ - /** - * Call flush for endl if ENDL_CALLS_FLUSH is nonzero - * - * The standard for iostreams is to call flush. This is very costly for - * SdFat. Each call to flush causes 2048 bytes of I/O to the SD. - * - * SdFat has a single 512 byte buffer for SD I/O so it must write the current - * data block to the SD, read the directory block from the SD, update the - * directory entry, write the directory block to the SD and read the data - * block back into the buffer. - * - * The SD flash memory controller is not designed for this many rewrites - * so performance may be reduced by more than a factor of 100. - * - * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force - * all data to be written to the SD. - */ - #define ENDL_CALLS_FLUSH 0 - //------------------------------------------------------------------------------ - /** - * Allow use of deprecated functions if ALLOW_DEPRECATED_FUNCTIONS is nonzero - */ - #define ALLOW_DEPRECATED_FUNCTIONS 1 - //------------------------------------------------------------------------------ - /** - * Allow FAT12 volumes if FAT12_SUPPORT is nonzero. - * FAT12 has not been well tested. - */ - #define FAT12_SUPPORT 0 - //------------------------------------------------------------------------------ - /** - * SPI init rate for SD initialization commands. Must be 5 (F_CPU/64) - * or 6 (F_CPU/128). - */ - #define SPI_SD_INIT_RATE 5 - //------------------------------------------------------------------------------ - /** - * Set the SS pin high for hardware SPI. If SS is chip select for another SPI - * device this will disable that device during the SD init phase. - */ - #define SET_SPI_SS_HIGH 1 - //------------------------------------------------------------------------------ - /** - * Define MEGA_SOFT_SPI nonzero to use software SPI on Mega Arduinos. - * Pins used are SS 10, MOSI 11, MISO 12, and SCK 13. - * - * MEGA_SOFT_SPI allows an unmodified Adafruit GPS Shield to be used - * on Mega Arduinos. Software SPI works well with GPS Shield V1.1 - * but many SD cards will fail with GPS Shield V1.0. - */ - #define MEGA_SOFT_SPI 0 - //------------------------------------------------------------------------------ - /** - * Set USE_SOFTWARE_SPI nonzero to always use software SPI. - */ - #define USE_SOFTWARE_SPI 0 - // define software SPI pins so Mega can use unmodified 168/328 shields - /** Software SPI chip select pin for the SD */ - #define SOFT_SPI_CS_PIN 10 - /** Software SPI Master Out Slave In pin */ - #define SOFT_SPI_MOSI_PIN 11 - /** Software SPI Master In Slave Out pin */ - #define SOFT_SPI_MISO_PIN 12 - /** Software SPI Clock pin */ - #define SOFT_SPI_SCK_PIN 13 - //------------------------------------------------------------------------------ - /** - * The __cxa_pure_virtual function is an error handler that is invoked when - * a pure virtual function is called. - */ - #define USE_CXA_PURE_VIRTUAL 1 - - /** Number of UTF-16 characters per entry */ - #define FILENAME_LENGTH 13 - - /** - * Defines for long (vfat) filenames - */ - /** Number of VFAT entries used. Every entry has 13 UTF-16 characters */ - #define MAX_VFAT_ENTRIES (2) - /** Total size of the buffer used to store the long filenames */ - #define LONG_FILENAME_LENGTH (FILENAME_LENGTH*MAX_VFAT_ENTRIES+1) -#endif // SdFatConfig_h - - -#endif diff --git a/lib/Marlin/SdFatStructs.h b/lib/Marlin/SdFatStructs.h deleted file mode 100644 index 3e989de..0000000 --- a/lib/Marlin/SdFatStructs.h +++ /dev/null @@ -1,655 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" -#if ENABLED(SDSUPPORT) - -#ifndef SdFatStructs_h -#define SdFatStructs_h - -#define PACKED __attribute__((__packed__)) -/** - * \file - * \brief FAT file structures - */ -/** - * mostly from Microsoft document fatgen103.doc - * http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx - */ -//------------------------------------------------------------------------------ -/** Value for byte 510 of boot block or MBR */ -uint8_t const BOOTSIG0 = 0X55; -/** Value for byte 511 of boot block or MBR */ -uint8_t const BOOTSIG1 = 0XAA; -/** Value for bootSignature field int FAT/FAT32 boot sector */ -uint8_t const EXTENDED_BOOT_SIG = 0X29; -//------------------------------------------------------------------------------ -/** - * \struct partitionTable - * \brief MBR partition table entry - * - * A partition table entry for a MBR formatted storage device. - * The MBR partition table has four entries. - */ -struct partitionTable { - /** - * Boot Indicator . Indicates whether the volume is the active - * partition. Legal values include: 0X00. Do not use for booting. - * 0X80 Active partition. - */ - uint8_t boot; - /** - * Head part of Cylinder-head-sector address of the first block in - * the partition. Legal values are 0-255. Only used in old PC BIOS. - */ - uint8_t beginHead; - /** - * Sector part of Cylinder-head-sector address of the first block in - * the partition. Legal values are 1-63. Only used in old PC BIOS. - */ - unsigned beginSector : 6; - /** High bits cylinder for first block in partition. */ - unsigned beginCylinderHigh : 2; - /** - * Combine beginCylinderLow with beginCylinderHigh. Legal values - * are 0-1023. Only used in old PC BIOS. - */ - uint8_t beginCylinderLow; - /** - * Partition type. See defines that begin with PART_TYPE_ for - * some Microsoft partition types. - */ - uint8_t type; - /** - * head part of cylinder-head-sector address of the last sector in the - * partition. Legal values are 0-255. Only used in old PC BIOS. - */ - uint8_t endHead; - /** - * Sector part of cylinder-head-sector address of the last sector in - * the partition. Legal values are 1-63. Only used in old PC BIOS. - */ - unsigned endSector : 6; - /** High bits of end cylinder */ - unsigned endCylinderHigh : 2; - /** - * Combine endCylinderLow with endCylinderHigh. Legal values - * are 0-1023. Only used in old PC BIOS. - */ - uint8_t endCylinderLow; - /** Logical block address of the first block in the partition. */ - uint32_t firstSector; - /** Length of the partition, in blocks. */ - uint32_t totalSectors; -} PACKED; -/** Type name for partitionTable */ -typedef struct partitionTable part_t; -//------------------------------------------------------------------------------ -/** - * \struct masterBootRecord - * - * \brief Master Boot Record - * - * The first block of a storage device that is formatted with a MBR. - */ -struct masterBootRecord { - /** Code Area for master boot program. */ - uint8_t codeArea[440]; - /** Optional Windows NT disk signature. May contain boot code. */ - uint32_t diskSignature; - /** Usually zero but may be more boot code. */ - uint16_t usuallyZero; - /** Partition tables. */ - part_t part[4]; - /** First MBR signature byte. Must be 0X55 */ - uint8_t mbrSig0; - /** Second MBR signature byte. Must be 0XAA */ - uint8_t mbrSig1; -} PACKED; -/** Type name for masterBootRecord */ -typedef struct masterBootRecord mbr_t; -//------------------------------------------------------------------------------ -/** - * \struct fat_boot - * - * \brief Boot sector for a FAT12/FAT16 volume. - * - */ -struct fat_boot { - /** - * The first three bytes of the boot sector must be valid, - * executable x 86-based CPU instructions. This includes a - * jump instruction that skips the next nonexecutable bytes. - */ - uint8_t jump[3]; - /** - * This is typically a string of characters that identifies - * the operating system that formatted the volume. - */ - char oemId[8]; - /** - * The size of a hardware sector. Valid decimal values for this - * field are 512, 1024, 2048, and 4096. For most disks used in - * the United States, the value of this field is 512. - */ - uint16_t bytesPerSector; - /** - * Number of sectors per allocation unit. This value must be a - * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided. - */ - uint8_t sectorsPerCluster; - /** - * The number of sectors preceding the start of the first FAT, - * including the boot sector. The value of this field is always 1. - */ - uint16_t reservedSectorCount; - /** - * The number of copies of the FAT on the volume. - * The value of this field is always 2. - */ - uint8_t fatCount; - /** - * For FAT12 and FAT16 volumes, this field contains the count of - * 32-byte directory entries in the root directory. For FAT32 volumes, - * this field must be set to 0. For FAT12 and FAT16 volumes, this - * value should always specify a count that when multiplied by 32 - * results in a multiple of bytesPerSector. FAT16 volumes should - * use the value 512. - */ - uint16_t rootDirEntryCount; - /** - * This field is the old 16-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then totalSectors32 - * must be nonzero. For FAT32 volumes, this field must be 0. For - * FAT12 and FAT16 volumes, this field contains the sector count, and - * totalSectors32 is 0 if the total sector count fits - * (is less than 0x10000). - */ - uint16_t totalSectors16; - /** - * This dates back to the old MS-DOS 1.x media determination and is - * no longer usually used for anything. 0xF8 is the standard value - * for fixed (nonremovable) media. For removable media, 0xF0 is - * frequently used. Legal values are 0xF0 or 0xF8-0xFF. - */ - uint8_t mediaType; - /** - * Count of sectors occupied by one FAT on FAT12/FAT16 volumes. - * On FAT32 volumes this field must be 0, and sectorsPerFat32 - * contains the FAT size count. - */ - uint16_t sectorsPerFat16; - /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrack; - /** Number of heads for interrupt 0x13. Not used otherwise. */ - uint16_t headCount; - /** - * Count of hidden sectors preceding the partition that contains this - * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. - */ - uint32_t hidddenSectors; - /** - * This field is the new 32-bit total count of sectors on the volume. - * This count includes the count of all sectors in all four regions - * of the volume. This field can be 0; if it is 0, then - * totalSectors16 must be nonzero. - */ - uint32_t totalSectors32; - /** - * Related to the BIOS physical drive number. Floppy drives are - * identified as 0x00 and physical hard disks are identified as - * 0x80, regardless of the number of physical disk drives. - * Typically, this value is set prior to issuing an INT 13h BIOS - * call to specify the device to access. The value is only - * relevant if the device is a boot device. - */ - uint8_t driveNumber; - /** used by Windows NT - should be zero for FAT */ - uint8_t reserved1; - /** 0X29 if next three fields are valid */ - uint8_t bootSignature; - /** - * A random serial number created when formatting a disk, - * which helps to distinguish between disks. - * Usually generated by combining date and time. - */ - uint32_t volumeSerialNumber; - /** - * A field once used to store the volume label. The volume label - * is now stored as a special file in the root directory. - */ - char volumeLabel[11]; - /** - * A field with a value of either FAT, FAT12 or FAT16, - * depending on the disk format. - */ - char fileSystemType[8]; - /** X86 boot code */ - uint8_t bootCode[448]; - /** must be 0X55 */ - uint8_t bootSectorSig0; - /** must be 0XAA */ - uint8_t bootSectorSig1; -} PACKED; -/** Type name for FAT Boot Sector */ -typedef struct fat_boot fat_boot_t; -//------------------------------------------------------------------------------ -/** - * \struct fat32_boot - * - * \brief Boot sector for a FAT32 volume. - * - */ -struct fat32_boot { - /** - * The first three bytes of the boot sector must be valid, - * executable x 86-based CPU instructions. This includes a - * jump instruction that skips the next nonexecutable bytes. - */ - uint8_t jump[3]; - /** - * This is typically a string of characters that identifies - * the operating system that formatted the volume. - */ - char oemId[8]; - /** - * The size of a hardware sector. Valid decimal values for this - * field are 512, 1024, 2048, and 4096. For most disks used in - * the United States, the value of this field is 512. - */ - uint16_t bytesPerSector; - /** - * Number of sectors per allocation unit. This value must be a - * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided. - */ - uint8_t sectorsPerCluster; - /** - * The number of sectors preceding the start of the first FAT, - * including the boot sector. Must not be zero - */ - uint16_t reservedSectorCount; - /** - * The number of copies of the FAT on the volume. - * The value of this field is always 2. - */ - uint8_t fatCount; - /** - * FAT12/FAT16 only. For FAT32 volumes, this field must be set to 0. - */ - uint16_t rootDirEntryCount; - /** - * For FAT32 volumes, this field must be 0. - */ - uint16_t totalSectors16; - /** - * This dates back to the old MS-DOS 1.x media determination and is - * no longer usually used for anything. 0xF8 is the standard value - * for fixed (nonremovable) media. For removable media, 0xF0 is - * frequently used. Legal values are 0xF0 or 0xF8-0xFF. - */ - uint8_t mediaType; - /** - * On FAT32 volumes this field must be 0, and sectorsPerFat32 - * contains the FAT size count. - */ - uint16_t sectorsPerFat16; - /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrack; - /** Number of heads for interrupt 0x13. Not used otherwise. */ - uint16_t headCount; - /** - * Count of hidden sectors preceding the partition that contains this - * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. - */ - uint32_t hidddenSectors; - /** - * Contains the total number of sectors in the FAT32 volume. - */ - uint32_t totalSectors32; - /** - * Count of sectors occupied by one FAT on FAT32 volumes. - */ - uint32_t sectorsPerFat32; - /** - * This field is only defined for FAT32 media and does not exist on - * FAT12 and FAT16 media. - * Bits 0-3 -- Zero-based number of active FAT. - * Only valid if mirroring is disabled. - * Bits 4-6 -- Reserved. - * Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs. - * -- 1 means only one FAT is active; it is the one referenced - * in bits 0-3. - * Bits 8-15 -- Reserved. - */ - uint16_t fat32Flags; - /** - * FAT32 version. High byte is major revision number. - * Low byte is minor revision number. Only 0.0 define. - */ - uint16_t fat32Version; - /** - * Cluster number of the first cluster of the root directory for FAT32. - * This usually 2 but not required to be 2. - */ - uint32_t fat32RootCluster; - /** - * Sector number of FSINFO structure in the reserved area of the - * FAT32 volume. Usually 1. - */ - uint16_t fat32FSInfo; - /** - * If nonzero, indicates the sector number in the reserved area - * of the volume of a copy of the boot record. Usually 6. - * No value other than 6 is recommended. - */ - uint16_t fat32BackBootBlock; - /** - * Reserved for future expansion. Code that formats FAT32 volumes - * should always set all of the bytes of this field to 0. - */ - uint8_t fat32Reserved[12]; - /** - * Related to the BIOS physical drive number. Floppy drives are - * identified as 0x00 and physical hard disks are identified as - * 0x80, regardless of the number of physical disk drives. - * Typically, this value is set prior to issuing an INT 13h BIOS - * call to specify the device to access. The value is only - * relevant if the device is a boot device. - */ - uint8_t driveNumber; - /** used by Windows NT - should be zero for FAT */ - uint8_t reserved1; - /** 0X29 if next three fields are valid */ - uint8_t bootSignature; - /** - * A random serial number created when formatting a disk, - * which helps to distinguish between disks. - * Usually generated by combining date and time. - */ - uint32_t volumeSerialNumber; - /** - * A field once used to store the volume label. The volume label - * is now stored as a special file in the root directory. - */ - char volumeLabel[11]; - /** - * A text field with a value of FAT32. - */ - char fileSystemType[8]; - /** X86 boot code */ - uint8_t bootCode[420]; - /** must be 0X55 */ - uint8_t bootSectorSig0; - /** must be 0XAA */ - uint8_t bootSectorSig1; -} PACKED; -/** Type name for FAT32 Boot Sector */ -typedef struct fat32_boot fat32_boot_t; -//------------------------------------------------------------------------------ -/** Lead signature for a FSINFO sector */ -uint32_t const FSINFO_LEAD_SIG = 0x41615252; -/** Struct signature for a FSINFO sector */ -uint32_t const FSINFO_STRUCT_SIG = 0x61417272; -/** - * \struct fat32_fsinfo - * - * \brief FSINFO sector for a FAT32 volume. - * - */ -struct fat32_fsinfo { - /** must be 0X52, 0X52, 0X61, 0X41 */ - uint32_t leadSignature; - /** must be zero */ - uint8_t reserved1[480]; - /** must be 0X72, 0X72, 0X41, 0X61 */ - uint32_t structSignature; - /** - * Contains the last known free cluster count on the volume. - * If the value is 0xFFFFFFFF, then the free count is unknown - * and must be computed. Any other value can be used, but is - * not necessarily correct. It should be range checked at least - * to make sure it is <= volume cluster count. - */ - uint32_t freeCount; - /** - * This is a hint for the FAT driver. It indicates the cluster - * number at which the driver should start looking for free clusters. - * If the value is 0xFFFFFFFF, then there is no hint and the driver - * should start looking at cluster 2. - */ - uint32_t nextFree; - /** must be zero */ - uint8_t reserved2[12]; - /** must be 0X00, 0X00, 0X55, 0XAA */ - uint8_t tailSignature[4]; -} PACKED; -/** Type name for FAT32 FSINFO Sector */ -typedef struct fat32_fsinfo fat32_fsinfo_t; -//------------------------------------------------------------------------------ -// End Of Chain values for FAT entries -/** FAT12 end of chain value used by Microsoft. */ -uint16_t const FAT12EOC = 0XFFF; -/** Minimum value for FAT12 EOC. Use to test for EOC. */ -uint16_t const FAT12EOC_MIN = 0XFF8; -/** FAT16 end of chain value used by Microsoft. */ -uint16_t const FAT16EOC = 0XFFFF; -/** Minimum value for FAT16 EOC. Use to test for EOC. */ -uint16_t const FAT16EOC_MIN = 0XFFF8; -/** FAT32 end of chain value used by Microsoft. */ -uint32_t const FAT32EOC = 0X0FFFFFFF; -/** Minimum value for FAT32 EOC. Use to test for EOC. */ -uint32_t const FAT32EOC_MIN = 0X0FFFFFF8; -/** Mask a for FAT32 entry. Entries are 28 bits. */ -uint32_t const FAT32MASK = 0X0FFFFFFF; -//------------------------------------------------------------------------------ -/** - * \struct directoryEntry - * \brief FAT short directory entry - * - * Short means short 8.3 name, not the entry size. - * - * Date Format. A FAT directory entry date stamp is a 16-bit field that is - * basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the - * format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the - * 16-bit word): - * - * Bits 9-15: Count of years from 1980, valid value range 0-127 - * inclusive (1980-2107). - * - * Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive. - * - * Bits 0-4: Day of month, valid value range 1-31 inclusive. - * - * Time Format. A FAT directory entry time stamp is a 16-bit field that has - * a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the - * 16-bit word, bit 15 is the MSB of the 16-bit word). - * - * Bits 11-15: Hours, valid value range 0-23 inclusive. - * - * Bits 5-10: Minutes, valid value range 0-59 inclusive. - * - * Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds). - * - * The valid time range is from Midnight 00:00:00 to 23:59:58. - */ -struct directoryEntry { - /** Short 8.3 name. - * - * The first eight bytes contain the file name with blank fill. - * The last three bytes contain the file extension with blank fill. - */ - uint8_t name[11]; - /** Entry attributes. - * - * The upper two bits of the attribute byte are reserved and should - * always be set to 0 when a file is created and never modified or - * looked at after that. See defines that begin with DIR_ATT_. - */ - uint8_t attributes; - /** - * Reserved for use by Windows NT. Set value to 0 when a file is - * created and never modify or look at it after that. - */ - uint8_t reservedNT; - /** - * The granularity of the seconds part of creationTime is 2 seconds - * so this field is a count of tenths of a second and its valid - * value range is 0-199 inclusive. (WHG note - seems to be hundredths) - */ - uint8_t creationTimeTenths; - /** Time file was created. */ - uint16_t creationTime; - /** Date file was created. */ - uint16_t creationDate; - /** - * Last access date. Note that there is no last access time, only - * a date. This is the date of last read or write. In the case of - * a write, this should be set to the same date as lastWriteDate. - */ - uint16_t lastAccessDate; - /** - * High word of this entry's first cluster number (always 0 for a - * FAT12 or FAT16 volume). - */ - uint16_t firstClusterHigh; - /** Time of last write. File creation is considered a write. */ - uint16_t lastWriteTime; - /** Date of last write. File creation is considered a write. */ - uint16_t lastWriteDate; - /** Low word of this entry's first cluster number. */ - uint16_t firstClusterLow; - /** 32-bit unsigned holding this file's size in bytes. */ - uint32_t fileSize; -} PACKED; -/** - * \struct directoryVFATEntry - * \brief VFAT long filename directory entry - * - * directoryVFATEntries are found in the same list as normal directoryEntry. - * But have the attribute field set to DIR_ATT_LONG_NAME. - * - * Long filenames are saved in multiple directoryVFATEntries. - * Each entry containing 13 UTF-16 characters. - */ -struct directoryVFATEntry { - /** - * Sequence number. Consists of 2 parts: - * bit 6: indicates first long filename block for the next file - * bit 0-4: the position of this long filename block (first block is 1) - */ - uint8_t sequenceNumber; - /** First set of UTF-16 characters */ - uint16_t name1[5];//UTF-16 - /** attributes (at the same location as in directoryEntry), always 0x0F */ - uint8_t attributes; - /** Reserved for use by Windows NT. Always 0. */ - uint8_t reservedNT; - /** Checksum of the short 8.3 filename, can be used to checked if the file system as modified by a not-long-filename aware implementation. */ - uint8_t checksum; - /** Second set of UTF-16 characters */ - uint16_t name2[6];//UTF-16 - /** firstClusterLow is always zero for longFilenames */ - uint16_t firstClusterLow; - /** Third set of UTF-16 characters */ - uint16_t name3[2];//UTF-16 -} PACKED; -//------------------------------------------------------------------------------ -// Definitions for directory entries -// -/** Type name for directoryEntry */ -typedef struct directoryEntry dir_t; -/** Type name for directoryVFATEntry */ -typedef struct directoryVFATEntry vfat_t; -/** escape for name[0] = 0XE5 */ -uint8_t const DIR_NAME_0XE5 = 0X05; -/** name[0] value for entry that is free after being "deleted" */ -uint8_t const DIR_NAME_DELETED = 0XE5; -/** name[0] value for entry that is free and no allocated entries follow */ -uint8_t const DIR_NAME_FREE = 0X00; -/** file is read-only */ -uint8_t const DIR_ATT_READ_ONLY = 0X01; -/** File should hidden in directory listings */ -uint8_t const DIR_ATT_HIDDEN = 0X02; -/** Entry is for a system file */ -uint8_t const DIR_ATT_SYSTEM = 0X04; -/** Directory entry contains the volume label */ -uint8_t const DIR_ATT_VOLUME_ID = 0X08; -/** Entry is for a directory */ -uint8_t const DIR_ATT_DIRECTORY = 0X10; -/** Old DOS archive bit for backup support */ -uint8_t const DIR_ATT_ARCHIVE = 0X20; -/** Test value for long name entry. Test is - (d->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME. */ -uint8_t const DIR_ATT_LONG_NAME = 0X0F; -/** Test mask for long name entry */ -uint8_t const DIR_ATT_LONG_NAME_MASK = 0X3F; -/** defined attribute bits */ -uint8_t const DIR_ATT_DEFINED_BITS = 0X3F; -/** Directory entry is part of a long name - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for part of a long name else false. - */ -static inline uint8_t DIR_IS_LONG_NAME(const dir_t* dir) { - return (dir->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME; -} -/** Mask for file/subdirectory tests */ -uint8_t const DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY); -/** Directory entry is for a file - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a normal file else false. - */ -static inline uint8_t DIR_IS_FILE(const dir_t* dir) { - return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == 0; -} -/** Directory entry is for a subdirectory - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a subdirectory else false. - */ -static inline uint8_t DIR_IS_SUBDIR(const dir_t* dir) { - return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == DIR_ATT_DIRECTORY; -} -/** Directory entry is for a file or subdirectory - * \param[in] dir Pointer to a directory entry. - * - * \return true if the entry is for a normal file or subdirectory else false. - */ -static inline uint8_t DIR_IS_FILE_OR_SUBDIR(const dir_t* dir) { - return (dir->attributes & DIR_ATT_VOLUME_ID) == 0; -} -#endif // SdFatStructs_h - - -#endif diff --git a/lib/Marlin/SdFatUtil.cpp b/lib/Marlin/SdFatUtil.cpp deleted file mode 100644 index 48d91df..0000000 --- a/lib/Marlin/SdFatUtil.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2008 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" - -#if ENABLED(SDSUPPORT) -#include "SdFatUtil.h" - -//------------------------------------------------------------------------------ -/** Amount of free RAM - * \return The number of free bytes. - */ -#ifdef __arm__ -extern "C" char* sbrk(int incr); -int SdFatUtil::FreeRam() { - char top; - return &top - reinterpret_cast(sbrk(0)); -} -#else // __arm__ -extern char* __brkval; -extern char __bss_end; -/** Amount of free RAM - * \return The number of free bytes. - */ -int SdFatUtil::FreeRam() { - char top; - return __brkval ? &top - __brkval : &top - &__bss_end; -} -#endif // __arm - -//------------------------------------------------------------------------------ -/** %Print a string in flash memory. - * - * \param[in] pr Print object for output. - * \param[in] str Pointer to string stored in flash memory. - */ -void SdFatUtil::print_P(PGM_P str) { - for (uint8_t c; (c = pgm_read_byte(str)); str++) MYSERIAL.write(c); -} -//------------------------------------------------------------------------------ -/** %Print a string in flash memory followed by a CR/LF. - * - * \param[in] pr Print object for output. - * \param[in] str Pointer to string stored in flash memory. - */ -void SdFatUtil::println_P(PGM_P str) { - print_P(str); - MYSERIAL.println(); -} -//------------------------------------------------------------------------------ -/** %Print a string in flash memory to Serial. - * - * \param[in] str Pointer to string stored in flash memory. - */ -void SdFatUtil::SerialPrint_P(PGM_P str) { - print_P(str); -} -//------------------------------------------------------------------------------ -/** %Print a string in flash memory to Serial followed by a CR/LF. - * - * \param[in] str Pointer to string stored in flash memory. - */ -void SdFatUtil::SerialPrintln_P(PGM_P str) { - println_P(str); -} -#endif diff --git a/lib/Marlin/SdFatUtil.h b/lib/Marlin/SdFatUtil.h deleted file mode 100644 index 9db81ac..0000000 --- a/lib/Marlin/SdFatUtil.h +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2008 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" -#if ENABLED(SDSUPPORT) - -#ifndef SdFatUtil_h -#define SdFatUtil_h -/** - * \file - * \brief Useful utility functions. - */ -#include "Marlin.h" -#include "MarlinSerial.h" -/** Store and print a string in flash memory.*/ -#define PgmPrint(x) SerialPrint_P(PSTR(x)) -/** Store and print a string in flash memory followed by a CR/LF.*/ -#define PgmPrintln(x) SerialPrintln_P(PSTR(x)) - -namespace SdFatUtil { - int FreeRam(); - void print_P(PGM_P str); - void println_P(PGM_P str); - void SerialPrint_P(PGM_P str); - void SerialPrintln_P(PGM_P str); -} - -using namespace SdFatUtil; // NOLINT -#endif //#define SdFatUtil_h - - -#endif diff --git a/lib/Marlin/SdFile.cpp b/lib/Marlin/SdFile.cpp deleted file mode 100644 index fc66f41..0000000 --- a/lib/Marlin/SdFile.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" - -#if ENABLED(SDSUPPORT) -#include "SdFile.h" -/** Create a file object and open it in the current working directory. - * - * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t). - */ -SdFile::SdFile(const char* path, uint8_t oflag) : SdBaseFile(path, oflag) { -} -//------------------------------------------------------------------------------ -/** Write data to an open file. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] nbyte Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an I/O error. - * - */ -int16_t SdFile::write(const void* buf, uint16_t nbyte) { - return SdBaseFile::write(buf, nbyte); -} -//------------------------------------------------------------------------------ -/** Write a byte to a file. Required by the Arduino Print class. - * \param[in] b the byte to be written. - * Use writeError to check for errors. - */ -#if ARDUINO >= 100 - size_t SdFile::write(uint8_t b) { - return SdBaseFile::write(&b, 1); - } -#else - void SdFile::write(uint8_t b) { - SdBaseFile::write(&b, 1); - } -#endif -//------------------------------------------------------------------------------ -/** Write a string to a file. Used by the Arduino Print class. - * \param[in] str Pointer to the string. - * Use writeError to check for errors. - */ -void SdFile::write(const char* str) { - SdBaseFile::write(str, strlen(str)); -} -//------------------------------------------------------------------------------ -/** Write a PROGMEM string to a file. - * \param[in] str Pointer to the PROGMEM string. - * Use writeError to check for errors. - */ -void SdFile::write_P(PGM_P str) { - for (uint8_t c; (c = pgm_read_byte(str)); str++) write(c); -} -//------------------------------------------------------------------------------ -/** Write a PROGMEM string followed by CR/LF to a file. - * \param[in] str Pointer to the PROGMEM string. - * Use writeError to check for errors. - */ -void SdFile::writeln_P(PGM_P str) { - write_P(str); - write_P(PSTR("\r\n")); -} - - -#endif diff --git a/lib/Marlin/SdFile.h b/lib/Marlin/SdFile.h deleted file mode 100644 index 53f3825..0000000 --- a/lib/Marlin/SdFile.h +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -/** - * \file - * \brief SdFile class - */ -#include "Marlin.h" - -#if ENABLED(SDSUPPORT) -#include "SdBaseFile.h" -#include -#ifndef SdFile_h -#define SdFile_h -//------------------------------------------------------------------------------ -/** - * \class SdFile - * \brief SdBaseFile with Print. - */ -class SdFile : public SdBaseFile, public Print { - public: - SdFile() {} - SdFile(const char* name, uint8_t oflag); - #if ARDUINO >= 100 - size_t write(uint8_t b); - #else - void write(uint8_t b); - #endif - - int16_t write(const void* buf, uint16_t nbyte); - void write(const char* str); - void write_P(PGM_P str); - void writeln_P(PGM_P str); -}; -#endif // SdFile_h - - -#endif diff --git a/lib/Marlin/SdInfo.h b/lib/Marlin/SdInfo.h deleted file mode 100644 index f4b36b7..0000000 --- a/lib/Marlin/SdInfo.h +++ /dev/null @@ -1,289 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino Sd2Card Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" -#if ENABLED(SDSUPPORT) - -#ifndef SdInfo_h -#define SdInfo_h -#include -// Based on the document: -// -// SD Specifications -// Part 1 -// Physical Layer -// Simplified Specification -// Version 3.01 -// May 18, 2010 -// -// http://www.sdcard.org/developers/tech/sdcard/pls/simplified_specs -//------------------------------------------------------------------------------ -// SD card commands -/** GO_IDLE_STATE - init card in spi mode if CS low */ -uint8_t const CMD0 = 0X00; -/** SEND_IF_COND - verify SD Memory Card interface operating condition.*/ -uint8_t const CMD8 = 0X08; -/** SEND_CSD - read the Card Specific Data (CSD register) */ -uint8_t const CMD9 = 0X09; -/** SEND_CID - read the card identification information (CID register) */ -uint8_t const CMD10 = 0X0A; -/** STOP_TRANSMISSION - end multiple block read sequence */ -uint8_t const CMD12 = 0X0C; -/** SEND_STATUS - read the card status register */ -uint8_t const CMD13 = 0X0D; -/** READ_SINGLE_BLOCK - read a single data block from the card */ -uint8_t const CMD17 = 0X11; -/** READ_MULTIPLE_BLOCK - read a multiple data blocks from the card */ -uint8_t const CMD18 = 0X12; -/** WRITE_BLOCK - write a single data block to the card */ -uint8_t const CMD24 = 0X18; -/** WRITE_MULTIPLE_BLOCK - write blocks of data until a STOP_TRANSMISSION */ -uint8_t const CMD25 = 0X19; -/** ERASE_WR_BLK_START - sets the address of the first block to be erased */ -uint8_t const CMD32 = 0X20; -/** ERASE_WR_BLK_END - sets the address of the last block of the continuous - range to be erased*/ -uint8_t const CMD33 = 0X21; -/** ERASE - erase all previously selected blocks */ -uint8_t const CMD38 = 0X26; -/** APP_CMD - escape for application specific command */ -uint8_t const CMD55 = 0X37; -/** READ_OCR - read the OCR register of a card */ -uint8_t const CMD58 = 0X3A; -/** SET_WR_BLK_ERASE_COUNT - Set the number of write blocks to be - pre-erased before writing */ -uint8_t const ACMD23 = 0X17; -/** SD_SEND_OP_COMD - Sends host capacity support information and - activates the card's initialization process */ -uint8_t const ACMD41 = 0X29; -//------------------------------------------------------------------------------ -/** status for card in the ready state */ -uint8_t const R1_READY_STATE = 0X00; -/** status for card in the idle state */ -uint8_t const R1_IDLE_STATE = 0X01; -/** status bit for illegal command */ -uint8_t const R1_ILLEGAL_COMMAND = 0X04; -/** start data token for read or write single block*/ -uint8_t const DATA_START_BLOCK = 0XFE; -/** stop token for write multiple blocks*/ -uint8_t const STOP_TRAN_TOKEN = 0XFD; -/** start data token for write multiple blocks*/ -uint8_t const WRITE_MULTIPLE_TOKEN = 0XFC; -/** mask for data response tokens after a write block operation */ -uint8_t const DATA_RES_MASK = 0X1F; -/** write data accepted token */ -uint8_t const DATA_RES_ACCEPTED = 0X05; -//------------------------------------------------------------------------------ -/** Card IDentification (CID) register */ -typedef struct CID { - // byte 0 - /** Manufacturer ID */ - unsigned char mid; - // byte 1-2 - /** OEM/Application ID */ - char oid[2]; - // byte 3-7 - /** Product name */ - char pnm[5]; - // byte 8 - /** Product revision least significant digit */ - unsigned char prv_m : 4; - /** Product revision most significant digit */ - unsigned char prv_n : 4; - // byte 9-12 - /** Product serial number */ - uint32_t psn; - // byte 13 - /** Manufacturing date year low digit */ - unsigned char mdt_year_high : 4; - /** not used */ - unsigned char reserved : 4; - // byte 14 - /** Manufacturing date month */ - unsigned char mdt_month : 4; - /** Manufacturing date year low digit */ - unsigned char mdt_year_low : 4; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** CRC7 checksum */ - unsigned char crc : 7; -} cid_t; -//------------------------------------------------------------------------------ -/** CSD for version 1.00 cards */ -typedef struct CSDV1 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - unsigned char taac; - // byte 2 - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - unsigned char c_size_high : 2; - unsigned char reserved2 : 2; - unsigned char dsr_imp : 1; - unsigned char read_blk_misalign : 1; - unsigned char write_blk_misalign : 1; - unsigned char read_bl_partial : 1; - // byte 7 - unsigned char c_size_mid; - // byte 8 - unsigned char vdd_r_curr_max : 3; - unsigned char vdd_r_curr_min : 3; - unsigned char c_size_low : 2; - // byte 9 - unsigned char c_size_mult_high : 2; - unsigned char vdd_w_cur_max : 3; - unsigned char vdd_w_curr_min : 3; - // byte 10 - unsigned char sector_size_high : 6; - unsigned char erase_blk_en : 1; - unsigned char c_size_mult_low : 1; - // byte 11 - unsigned char wp_grp_size : 7; - unsigned char sector_size_low : 1; - // byte 12 - unsigned char write_bl_len_high : 2; - unsigned char r2w_factor : 3; - unsigned char reserved3 : 2; - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved4 : 5; - unsigned char write_partial : 1; - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved5: 2; - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Indicates the file format on the card */ - unsigned char file_format_grp : 1; - // byte 15 - unsigned char always1 : 1; - unsigned char crc : 7; -} csd1_t; -//------------------------------------------------------------------------------ -/** CSD for version 2.00 cards */ -typedef struct CSDV2 { - // byte 0 - unsigned char reserved1 : 6; - unsigned char csd_ver : 2; - // byte 1 - /** fixed to 0X0E */ - unsigned char taac; - // byte 2 - /** fixed to 0 */ - unsigned char nsac; - // byte 3 - unsigned char tran_speed; - // byte 4 - unsigned char ccc_high; - // byte 5 - /** This field is fixed to 9h, which indicates READ_BL_LEN=512 Byte */ - unsigned char read_bl_len : 4; - unsigned char ccc_low : 4; - // byte 6 - /** not used */ - unsigned char reserved2 : 4; - unsigned char dsr_imp : 1; - /** fixed to 0 */ - unsigned char read_blk_misalign : 1; - /** fixed to 0 */ - unsigned char write_blk_misalign : 1; - /** fixed to 0 - no partial read */ - unsigned char read_bl_partial : 1; - // byte 7 - /** not used */ - unsigned char reserved3 : 2; - /** high part of card size */ - unsigned char c_size_high : 6; - // byte 8 - /** middle part of card size */ - unsigned char c_size_mid; - // byte 9 - /** low part of card size */ - unsigned char c_size_low; - // byte 10 - /** sector size is fixed at 64 KB */ - unsigned char sector_size_high : 6; - /** fixed to 1 - erase single is supported */ - unsigned char erase_blk_en : 1; - /** not used */ - unsigned char reserved4 : 1; - // byte 11 - unsigned char wp_grp_size : 7; - /** sector size is fixed at 64 KB */ - unsigned char sector_size_low : 1; - // byte 12 - /** write_bl_len fixed for 512 byte blocks */ - unsigned char write_bl_len_high : 2; - /** fixed value of 2 */ - unsigned char r2w_factor : 3; - /** not used */ - unsigned char reserved5 : 2; - /** fixed value of 0 - no write protect groups */ - unsigned char wp_grp_enable : 1; - // byte 13 - unsigned char reserved6 : 5; - /** always zero - no partial block read*/ - unsigned char write_partial : 1; - /** write_bl_len fixed for 512 byte blocks */ - unsigned char write_bl_len_low : 2; - // byte 14 - unsigned char reserved7: 2; - /** Do not use always 0 */ - unsigned char file_format : 2; - unsigned char tmp_write_protect : 1; - unsigned char perm_write_protect : 1; - unsigned char copy : 1; - /** Do not use always 0 */ - unsigned char file_format_grp : 1; - // byte 15 - /** not used always 1 */ - unsigned char always1 : 1; - /** checksum */ - unsigned char crc : 7; -} csd2_t; -//------------------------------------------------------------------------------ -/** union of old and new style CSD register */ -union csd_t { - csd1_t v1; - csd2_t v2; -}; -#endif // SdInfo_h - -#endif diff --git a/lib/Marlin/SdVolume.cpp b/lib/Marlin/SdVolume.cpp deleted file mode 100644 index 4166c06..0000000 --- a/lib/Marlin/SdVolume.cpp +++ /dev/null @@ -1,420 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" -#if ENABLED(SDSUPPORT) - -#include "SdVolume.h" -//------------------------------------------------------------------------------ -#if !USE_MULTIPLE_CARDS - // raw block cache - uint32_t SdVolume::cacheBlockNumber_; // current block number - cache_t SdVolume::cacheBuffer_; // 512 byte cache for Sd2Card - Sd2Card* SdVolume::sdCard_; // pointer to SD card object - bool SdVolume::cacheDirty_; // cacheFlush() will write block if true - uint32_t SdVolume::cacheMirrorBlock_; // mirror block for second FAT -#endif // USE_MULTIPLE_CARDS -//------------------------------------------------------------------------------ -// find a contiguous group of clusters -bool SdVolume::allocContiguous(uint32_t count, uint32_t* curCluster) { - // start of group - uint32_t bgnCluster; - // end of group - uint32_t endCluster; - // last cluster of FAT - uint32_t fatEnd = clusterCount_ + 1; - - // flag to save place to start next search - bool setStart; - - // set search start cluster - if (*curCluster) { - // try to make file contiguous - bgnCluster = *curCluster + 1; - - // don't save new start location - setStart = false; - } - else { - // start at likely place for free cluster - bgnCluster = allocSearchStart_; - - // save next search start if one cluster - setStart = count == 1; - } - // end of group - endCluster = bgnCluster; - - // search the FAT for free clusters - for (uint32_t n = 0;; n++, endCluster++) { - // can't find space checked all clusters - if (n >= clusterCount_) goto fail; - - // past end - start from beginning of FAT - if (endCluster > fatEnd) { - bgnCluster = endCluster = 2; - } - uint32_t f; - if (!fatGet(endCluster, &f)) goto fail; - - if (f != 0) { - // cluster in use try next cluster as bgnCluster - bgnCluster = endCluster + 1; - } - else if ((endCluster - bgnCluster + 1) == count) { - // done - found space - break; - } - } - // mark end of chain - if (!fatPutEOC(endCluster)) goto fail; - - // link clusters - while (endCluster > bgnCluster) { - if (!fatPut(endCluster - 1, endCluster)) goto fail; - endCluster--; - } - if (*curCluster != 0) { - // connect chains - if (!fatPut(*curCluster, bgnCluster)) goto fail; - } - // return first cluster number to caller - *curCluster = bgnCluster; - - // remember possible next free cluster - if (setStart) allocSearchStart_ = bgnCluster + 1; - - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -bool SdVolume::cacheFlush() { - if (cacheDirty_) { - if (!sdCard_->writeBlock(cacheBlockNumber_, cacheBuffer_.data)) { - goto fail; - } - // mirror FAT tables - if (cacheMirrorBlock_) { - if (!sdCard_->writeBlock(cacheMirrorBlock_, cacheBuffer_.data)) { - goto fail; - } - cacheMirrorBlock_ = 0; - } - cacheDirty_ = 0; - } - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -bool SdVolume::cacheRawBlock(uint32_t blockNumber, bool dirty) { - if (cacheBlockNumber_ != blockNumber) { - if (!cacheFlush()) goto fail; - if (!sdCard_->readBlock(blockNumber, cacheBuffer_.data)) goto fail; - cacheBlockNumber_ = blockNumber; - } - if (dirty) cacheDirty_ = true; - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -// return the size in bytes of a cluster chain -bool SdVolume::chainSize(uint32_t cluster, uint32_t* size) { - uint32_t s = 0; - do { - if (!fatGet(cluster, &cluster)) goto fail; - s += 512UL << clusterSizeShift_; - } while (!isEOC(cluster)); - *size = s; - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -// Fetch a FAT entry -bool SdVolume::fatGet(uint32_t cluster, uint32_t* value) { - uint32_t lba; - if (cluster > (clusterCount_ + 1)) goto fail; - if (FAT12_SUPPORT && fatType_ == 12) { - uint16_t index = cluster; - index += index >> 1; - lba = fatStartBlock_ + (index >> 9); - if (!cacheRawBlock(lba, CACHE_FOR_READ)) goto fail; - index &= 0X1FF; - uint16_t tmp = cacheBuffer_.data[index]; - index++; - if (index == 512) { - if (!cacheRawBlock(lba + 1, CACHE_FOR_READ)) goto fail; - index = 0; - } - tmp |= cacheBuffer_.data[index] << 8; - *value = cluster & 1 ? tmp >> 4 : tmp & 0XFFF; - return true; - } - if (fatType_ == 16) { - lba = fatStartBlock_ + (cluster >> 8); - } - else if (fatType_ == 32) { - lba = fatStartBlock_ + (cluster >> 7); - } - else { - goto fail; - } - if (lba != cacheBlockNumber_) { - if (!cacheRawBlock(lba, CACHE_FOR_READ)) goto fail; - } - if (fatType_ == 16) { - *value = cacheBuffer_.fat16[cluster & 0XFF]; - } - else { - *value = cacheBuffer_.fat32[cluster & 0X7F] & FAT32MASK; - } - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -// Store a FAT entry -bool SdVolume::fatPut(uint32_t cluster, uint32_t value) { - uint32_t lba; - // error if reserved cluster - if (cluster < 2) goto fail; - - // error if not in FAT - if (cluster > (clusterCount_ + 1)) goto fail; - - if (FAT12_SUPPORT && fatType_ == 12) { - uint16_t index = cluster; - index += index >> 1; - lba = fatStartBlock_ + (index >> 9); - if (!cacheRawBlock(lba, CACHE_FOR_WRITE)) goto fail; - // mirror second FAT - if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_; - index &= 0X1FF; - uint8_t tmp = value; - if (cluster & 1) { - tmp = (cacheBuffer_.data[index] & 0XF) | tmp << 4; - } - cacheBuffer_.data[index] = tmp; - index++; - if (index == 512) { - lba++; - index = 0; - if (!cacheRawBlock(lba, CACHE_FOR_WRITE)) goto fail; - // mirror second FAT - if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_; - } - tmp = value >> 4; - if (!(cluster & 1)) { - tmp = ((cacheBuffer_.data[index] & 0XF0)) | tmp >> 4; - } - cacheBuffer_.data[index] = tmp; - return true; - } - if (fatType_ == 16) { - lba = fatStartBlock_ + (cluster >> 8); - } - else if (fatType_ == 32) { - lba = fatStartBlock_ + (cluster >> 7); - } - else { - goto fail; - } - if (!cacheRawBlock(lba, CACHE_FOR_WRITE)) goto fail; - // store entry - if (fatType_ == 16) { - cacheBuffer_.fat16[cluster & 0XFF] = value; - } - else { - cacheBuffer_.fat32[cluster & 0X7F] = value; - } - // mirror second FAT - if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_; - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -// free a cluster chain -bool SdVolume::freeChain(uint32_t cluster) { - uint32_t next; - - // clear free cluster location - allocSearchStart_ = 2; - - do { - if (!fatGet(cluster, &next)) goto fail; - - // free cluster - if (!fatPut(cluster, 0)) goto fail; - - cluster = next; - } while (!isEOC(cluster)); - - return true; -fail: - return false; -} -//------------------------------------------------------------------------------ -/** Volume free space in clusters. - * - * \return Count of free clusters for success or -1 if an error occurs. - */ -int32_t SdVolume::freeClusterCount() { - uint32_t free = 0; - uint16_t n; - uint32_t todo = clusterCount_ + 2; - - if (fatType_ == 16) { - n = 256; - } - else if (fatType_ == 32) { - n = 128; - } - else { - // put FAT12 here - return -1; - } - - for (uint32_t lba = fatStartBlock_; todo; todo -= n, lba++) { - if (!cacheRawBlock(lba, CACHE_FOR_READ)) return -1; - NOMORE(n, todo); - if (fatType_ == 16) { - for (uint16_t i = 0; i < n; i++) { - if (cacheBuffer_.fat16[i] == 0) free++; - } - } - else { - for (uint16_t i = 0; i < n; i++) { - if (cacheBuffer_.fat32[i] == 0) free++; - } - } - } - return free; -} -//------------------------------------------------------------------------------ -/** Initialize a FAT volume. - * - * \param[in] dev The SD card where the volume is located. - * - * \param[in] part The partition to be used. Legal values for \a part are - * 1-4 to use the corresponding partition on a device formatted with - * a MBR, Master Boot Record, or zero if the device is formatted as - * a super floppy with the FAT boot sector in block zero. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. Reasons for - * failure include not finding a valid partition, not finding a valid - * FAT file system in the specified partition or an I/O error. - */ -bool SdVolume::init(Sd2Card* dev, uint8_t part) { - uint32_t totalBlocks; - uint32_t volumeStartBlock = 0; - fat32_boot_t* fbs; - - sdCard_ = dev; - fatType_ = 0; - allocSearchStart_ = 2; - cacheDirty_ = 0; // cacheFlush() will write block if true - cacheMirrorBlock_ = 0; - cacheBlockNumber_ = 0XFFFFFFFF; - - // if part == 0 assume super floppy with FAT boot sector in block zero - // if part > 0 assume mbr volume with partition table - if (part) { - if (part > 4)goto fail; - if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) goto fail; - part_t* p = &cacheBuffer_.mbr.part[part - 1]; - if ((p->boot & 0X7F) != 0 || - p->totalSectors < 100 || - p->firstSector == 0) { - // not a valid partition - goto fail; - } - volumeStartBlock = p->firstSector; - } - if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) goto fail; - fbs = &cacheBuffer_.fbs32; - if (fbs->bytesPerSector != 512 || - fbs->fatCount == 0 || - fbs->reservedSectorCount == 0 || - fbs->sectorsPerCluster == 0) { - // not valid FAT volume - goto fail; - } - fatCount_ = fbs->fatCount; - blocksPerCluster_ = fbs->sectorsPerCluster; - // determine shift that is same as multiply by blocksPerCluster_ - clusterSizeShift_ = 0; - while (blocksPerCluster_ != _BV(clusterSizeShift_)) { - // error if not power of 2 - if (clusterSizeShift_++ > 7) goto fail; - } - blocksPerFat_ = fbs->sectorsPerFat16 ? - fbs->sectorsPerFat16 : fbs->sectorsPerFat32; - - fatStartBlock_ = volumeStartBlock + fbs->reservedSectorCount; - - // count for FAT16 zero for FAT32 - rootDirEntryCount_ = fbs->rootDirEntryCount; - - // directory start for FAT16 dataStart for FAT32 - rootDirStart_ = fatStartBlock_ + fbs->fatCount * blocksPerFat_; - - // data start for FAT16 and FAT32 - dataStartBlock_ = rootDirStart_ + ((32 * fbs->rootDirEntryCount + 511) / 512); - - // total blocks for FAT16 or FAT32 - totalBlocks = fbs->totalSectors16 ? - fbs->totalSectors16 : fbs->totalSectors32; - - // total data blocks - clusterCount_ = totalBlocks - (dataStartBlock_ - volumeStartBlock); - - // divide by cluster size to get cluster count - clusterCount_ >>= clusterSizeShift_; - - // FAT type is determined by cluster count - if (clusterCount_ < 4085) { - fatType_ = 12; - if (!FAT12_SUPPORT) goto fail; - } - else if (clusterCount_ < 65525) { - fatType_ = 16; - } - else { - rootDirStart_ = fbs->fat32RootCluster; - fatType_ = 32; - } - return true; -fail: - return false; -} -#endif diff --git a/lib/Marlin/SdVolume.h b/lib/Marlin/SdVolume.h deleted file mode 100644 index 990248d..0000000 --- a/lib/Marlin/SdVolume.h +++ /dev/null @@ -1,227 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - */ -#include "Marlin.h" -#if ENABLED(SDSUPPORT) -#ifndef SdVolume_h -#define SdVolume_h -/** - * \file - * \brief SdVolume class - */ -#include "SdFatConfig.h" -#include "Sd2Card.h" -#include "SdFatStructs.h" - -//============================================================================== -// SdVolume class -/** - * \brief Cache for an SD data block - */ -union cache_t { - /** Used to access cached file data blocks. */ - uint8_t data[512]; - /** Used to access cached FAT16 entries. */ - uint16_t fat16[256]; - /** Used to access cached FAT32 entries. */ - uint32_t fat32[128]; - /** Used to access cached directory entries. */ - dir_t dir[16]; - /** Used to access a cached Master Boot Record. */ - mbr_t mbr; - /** Used to access to a cached FAT boot sector. */ - fat_boot_t fbs; - /** Used to access to a cached FAT32 boot sector. */ - fat32_boot_t fbs32; - /** Used to access to a cached FAT32 FSINFO sector. */ - fat32_fsinfo_t fsinfo; -}; -//------------------------------------------------------------------------------ -/** - * \class SdVolume - * \brief Access FAT16 and FAT32 volumes on SD and SDHC cards. - */ -class SdVolume { - public: - /** Create an instance of SdVolume */ - SdVolume() : fatType_(0) {} - /** Clear the cache and returns a pointer to the cache. Used by the WaveRP - * recorder to do raw write to the SD card. Not for normal apps. - * \return A pointer to the cache buffer or zero if an error occurs. - */ - cache_t* cacheClear() { - if (!cacheFlush()) return 0; - cacheBlockNumber_ = 0XFFFFFFFF; - return &cacheBuffer_; - } - /** Initialize a FAT volume. Try partition one first then try super - * floppy format. - * - * \param[in] dev The Sd2Card where the volume is located. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. Reasons for - * failure include not finding a valid partition, not finding a valid - * FAT file system or an I/O error. - */ - bool init(Sd2Card* dev) { return init(dev, 1) ? true : init(dev, 0);} - bool init(Sd2Card* dev, uint8_t part); - - // inline functions that return volume info - /** \return The volume's cluster size in blocks. */ - uint8_t blocksPerCluster() const {return blocksPerCluster_;} - /** \return The number of blocks in one FAT. */ - uint32_t blocksPerFat() const {return blocksPerFat_;} - /** \return The total number of clusters in the volume. */ - uint32_t clusterCount() const {return clusterCount_;} - /** \return The shift count required to multiply by blocksPerCluster. */ - uint8_t clusterSizeShift() const {return clusterSizeShift_;} - /** \return The logical block number for the start of file data. */ - uint32_t dataStartBlock() const {return dataStartBlock_;} - /** \return The number of FAT structures on the volume. */ - uint8_t fatCount() const {return fatCount_;} - /** \return The logical block number for the start of the first FAT. */ - uint32_t fatStartBlock() const {return fatStartBlock_;} - /** \return The FAT type of the volume. Values are 12, 16 or 32. */ - uint8_t fatType() const {return fatType_;} - int32_t freeClusterCount(); - /** \return The number of entries in the root directory for FAT16 volumes. */ - uint32_t rootDirEntryCount() const {return rootDirEntryCount_;} - /** \return The logical block number for the start of the root directory - on FAT16 volumes or the first cluster number on FAT32 volumes. */ - uint32_t rootDirStart() const {return rootDirStart_;} - /** Sd2Card object for this volume - * \return pointer to Sd2Card object. - */ - Sd2Card* sdCard() {return sdCard_;} - /** Debug access to FAT table - * - * \param[in] n cluster number. - * \param[out] v value of entry - * \return true for success or false for failure - */ - bool dbgFat(uint32_t n, uint32_t* v) {return fatGet(n, v);} - //------------------------------------------------------------------------------ - private: - // Allow SdBaseFile access to SdVolume private data. - friend class SdBaseFile; - - // value for dirty argument in cacheRawBlock to indicate read from cache - static bool const CACHE_FOR_READ = false; - // value for dirty argument in cacheRawBlock to indicate write to cache - static bool const CACHE_FOR_WRITE = true; - -#if USE_MULTIPLE_CARDS - cache_t cacheBuffer_; // 512 byte cache for device blocks - uint32_t cacheBlockNumber_; // Logical number of block in the cache - Sd2Card* sdCard_; // Sd2Card object for cache - bool cacheDirty_; // cacheFlush() will write block if true - uint32_t cacheMirrorBlock_; // block number for mirror FAT -#else // USE_MULTIPLE_CARDS - static cache_t cacheBuffer_; // 512 byte cache for device blocks - static uint32_t cacheBlockNumber_; // Logical number of block in the cache - static Sd2Card* sdCard_; // Sd2Card object for cache - static bool cacheDirty_; // cacheFlush() will write block if true - static uint32_t cacheMirrorBlock_; // block number for mirror FAT -#endif // USE_MULTIPLE_CARDS - uint32_t allocSearchStart_; // start cluster for alloc search - uint8_t blocksPerCluster_; // cluster size in blocks - uint32_t blocksPerFat_; // FAT size in blocks - uint32_t clusterCount_; // clusters in one FAT - uint8_t clusterSizeShift_; // shift to convert cluster count to block count - uint32_t dataStartBlock_; // first data block number - uint8_t fatCount_; // number of FATs on volume - uint32_t fatStartBlock_; // start block for first FAT - uint8_t fatType_; // volume type (12, 16, OR 32) - uint16_t rootDirEntryCount_; // number of entries in FAT16 root dir - uint32_t rootDirStart_; // root start block for FAT16, cluster for FAT32 - //---------------------------------------------------------------------------- - bool allocContiguous(uint32_t count, uint32_t* curCluster); - uint8_t blockOfCluster(uint32_t position) const { - return (position >> 9) & (blocksPerCluster_ - 1); - } - uint32_t clusterStartBlock(uint32_t cluster) const { - return dataStartBlock_ + ((cluster - 2) << clusterSizeShift_); - } - uint32_t blockNumber(uint32_t cluster, uint32_t position) const { - return clusterStartBlock(cluster) + blockOfCluster(position); - } - cache_t* cache() {return &cacheBuffer_;} - uint32_t cacheBlockNumber() {return cacheBlockNumber_;} -#if USE_MULTIPLE_CARDS - bool cacheFlush(); - bool cacheRawBlock(uint32_t blockNumber, bool dirty); -#else // USE_MULTIPLE_CARDS - static bool cacheFlush(); - static bool cacheRawBlock(uint32_t blockNumber, bool dirty); -#endif // USE_MULTIPLE_CARDS - // used by SdBaseFile write to assign cache to SD location - void cacheSetBlockNumber(uint32_t blockNumber, bool dirty) { - cacheDirty_ = dirty; - cacheBlockNumber_ = blockNumber; - } - void cacheSetDirty() {cacheDirty_ |= CACHE_FOR_WRITE;} - bool chainSize(uint32_t beginCluster, uint32_t* size); - bool fatGet(uint32_t cluster, uint32_t* value); - bool fatPut(uint32_t cluster, uint32_t value); - bool fatPutEOC(uint32_t cluster) { - return fatPut(cluster, 0x0FFFFFFF); - } - bool freeChain(uint32_t cluster); - bool isEOC(uint32_t cluster) const { - if (FAT12_SUPPORT && fatType_ == 12) return cluster >= FAT12EOC_MIN; - if (fatType_ == 16) return cluster >= FAT16EOC_MIN; - return cluster >= FAT32EOC_MIN; - } - bool readBlock(uint32_t block, uint8_t* dst) { - return sdCard_->readBlock(block, dst); - } - bool writeBlock(uint32_t block, const uint8_t* dst) { - return sdCard_->writeBlock(block, dst); - } - //------------------------------------------------------------------------------ - // Deprecated functions - suppress cpplint warnings with NOLINT comment -#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN) - public: - /** \deprecated Use: bool SdVolume::init(Sd2Card* dev); - * \param[in] dev The SD card where the volume is located. - * \return true for success or false for failure. - */ - bool init(Sd2Card& dev) {return init(&dev);} // NOLINT - /** \deprecated Use: bool SdVolume::init(Sd2Card* dev, uint8_t vol); - * \param[in] dev The SD card where the volume is located. - * \param[in] part The partition to be used. - * \return true for success or false for failure. - */ - bool init(Sd2Card& dev, uint8_t part) { // NOLINT - return init(&dev, part); - } -#endif // ALLOW_DEPRECATED_FUNCTIONS -}; -#endif // SdVolume -#endif diff --git a/lib/Marlin/Ultrasonic.cpp b/lib/Marlin/Ultrasonic.cpp deleted file mode 100644 index 0387771..0000000 --- a/lib/Marlin/Ultrasonic.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - Ultrasonic.h - Ultrasonic driver Library - 2011 Copyright (c) Seeed Technology Inc. All right reserved. - For Ultrasonic v1.0 firmware. - - Original Author: LG - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include -#include -#include -#include "Ultrasonic.h" - -#if defined(ARDUINO) && ARDUINO >= 100 -#include "Arduino.h" -#else -#include "WProgram.h" -#endif - -Ultrasonic::Ultrasonic(int pin) -{ - _pin = pin; -} -void Ultrasonic::MeasureInCentimeters(void) -{ - pinMode(_pin, OUTPUT); - digitalWrite(_pin, LOW); - delayMicroseconds(2); - digitalWrite(_pin, HIGH); - delayMicroseconds(5); - digitalWrite(_pin,LOW); - pinMode(_pin,INPUT); - duration = pulseIn(_pin,HIGH); - RangeInCentimeters = duration/29/2; -} -void Ultrasonic::MeasureInInches(void) -{ - pinMode(_pin, OUTPUT); - digitalWrite(_pin, LOW); - delayMicroseconds(2); - digitalWrite(_pin, HIGH); - delayMicroseconds(5); - digitalWrite(_pin,LOW); - pinMode(_pin,INPUT); - duration = pulseIn(_pin,HIGH); - RangeInInches = duration/74/2; -} \ No newline at end of file diff --git a/lib/Marlin/Ultrasonic.h b/lib/Marlin/Ultrasonic.h deleted file mode 100644 index 9006a41..0000000 --- a/lib/Marlin/Ultrasonic.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - Ultrasonic.h - Ultrasonic driver Library - 2011 Copyright (c) Seeed Technology Inc. All right reserved. - For Ultrasonic v1.0 firmware. - - Original Author: LG - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#ifndef Ultrasonic_H -#define Ultrasonic_H - -class Ultrasonic -{ - public: - Ultrasonic(int pin); - long RangeInCentimeters; - long RangeInInches; - long duration; - void MeasureInCentimeters(void); - void MeasureInInches(void); - private: - int _pin; -}; -#endif diff --git a/lib/Marlin/Version.h b/lib/Marlin/Version.h deleted file mode 100644 index 520835e..0000000 --- a/lib/Marlin/Version.h +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * This file is the standard Marlin version identifier file, all fields can be - * overriden by the ones defined on _Version.h by using the Configuration.h - * directive USE_AUTOMATIC_VERSIONING. - */ - -#if ENABLED(USE_AUTOMATIC_VERSIONING) - - #include "_Version.h" - -#else - - /** - * Marlin release version identifier - */ - #define SHORT_BUILD_VERSION "1.1.0-RC7" - - /** - * Verbose version identifier which should contain a reference to the location - * from where the binary was downloaded or the source code was compiled. - */ - #define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (Github)" - - /** - * The STRING_DISTRIBUTION_DATE represents when the binary file was built, - * here we define this default string as the date where the latest release - * version was tagged. - */ - #define STRING_DISTRIBUTION_DATE "2016-07-31 12:00" - - /** - * Required minimum Configuration.h and Configuration_adv.h file versions. - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option on - * the configuration files. - */ - #define REQUIRED_CONFIGURATION_H_VERSION 010100 - #define REQUIRED_CONFIGURATION_ADV_H_VERSION 010100 - - /** - * @todo: Missing documentation block - */ - #define PROTOCOL_VERSION "1.0" - - /** - * Defines a generic printer name to be output to the LCD after booting Marlin. - */ - #define MACHINE_NAME "3D Printer" - - /** - * The SOURCE_CODE_URL is the location where users will find the Marlin Source - * Code which is installed on the device. In most cases —unless the manufacturer - * has a distinct Github fork— the Source Code URL should just be the main - * Marlin repository. - */ - #define SOURCE_CODE_URL "https://github.com/MarlinFirmware/Marlin" - - /** - * Default generic printer UUID. - */ - #define DEFAULT_MACHINE_UUID "cede2a2f-41a2-4748-9b12-c55c62f367ff" - - /** - * The WEBSITE_URL is the location where users can get more information such as - * documentation about a specific Marlin release. - */ - #define WEBSITE_URL "http://marlinfw.org" - -#endif // USE_AUTOMATIC_VERSIONING diff --git a/lib/Marlin/X_IIC.cpp b/lib/Marlin/X_IIC.cpp deleted file mode 100644 index 74969f6..0000000 --- a/lib/Marlin/X_IIC.cpp +++ /dev/null @@ -1,217 +0,0 @@ -#include "X_IIC.h" - -#define X_SDA_SET PORTD |= 0x20 -#define X_SDA_CLEAR PORTD &= 0xDF -#define X_SCL_SET PORTD |= 0x40 -#define X_SCL_CLEAR PORTD &= 0xBF - -#define X_SDA_INPUT DDRD &= 0xDF -#define X_SDA_OUTPUT DDRD |= 0x20 - -#define X_SCL_INPUT DDRD &= 0xBF -#define X_SCL_OUTPUT DDRD |= 0x40 - -#define X_SDA_READ PIND & 0x20 - -#define X_PORT_DDR DDRD - - -#define X_SCK_H {X_SCL_SET; } -#define X_SCK_L {X_SCL_CLEAR; } -#define X_SDA_H {X_SDA_OUTPUT;X_SDA_SET; } -#define X_SDA_L {X_SDA_OUTPUT;X_SDA_CLEAR; } - -#define X_READ_SDA X_SDA_READ - -#define AS5600_DEFAULT_ADDRESS 0x36 - - - - -void X_IIC_Init(void) -{ - -X_SDA_OUTPUT; -X_SCL_OUTPUT; -X_SDA_SET; -X_SCL_SET; -} - - -void X_IIC_Start(void) -{ - X_SDA_H; - X_SCK_H; - delayMicroseconds(5); - X_SDA_L; - delayMicroseconds(5); - - X_SCK_L; - delayMicroseconds(2); - -} - - -void X_IIC_Stop(void) -{ - X_SCK_L; - X_SDA_L; - delayMicroseconds(5); - X_SCK_H; - delayMicroseconds(5); - X_SDA_H; - delayMicroseconds(5); - - -} - - -u8 X_IIC_Wait_Ack(void) -{ - u8 ucErrTime=0; - X_SDA_H;delayMicroseconds(2); - X_SCK_H;delayMicroseconds(2); - - - X_SDA_INPUT; - - while(X_READ_SDA) - { - ucErrTime++; - if(ucErrTime>250) - { - X_IIC_Stop(); - return 1; - } - } - - X_SCK_L; - delayMicroseconds(2); - return 0; -} - - -void X_IIC_Ack(void) -{ - X_SCK_L; - X_SDA_L; - delayMicroseconds(2); - X_SCK_H; - delayMicroseconds(5); - - X_SCK_L; - delayMicroseconds(2); - X_SDA_H; - delayMicroseconds(2); -} - - -void X_IIC_Nack(void) -{ - X_SCK_L; - X_SDA_H; - delayMicroseconds(2); - X_SCK_H; - delayMicroseconds(5); - - X_SCK_L; - delayMicroseconds(2); - X_SDA_H; - delayMicroseconds(2); -} - - -void X_IIC_SendByte(u8 Txdata) -{ - u8 i; - for(i=0;i<8;i++) - { - X_SCK_L; - if(Txdata&0x80) - X_SDA_H - else - X_SDA_L - delayMicroseconds(5); - X_SCK_H; - delayMicroseconds(5); - X_SCK_L; - Txdata<<=1; - delayMicroseconds(5); - } - - delayMicroseconds(2); - X_SDA_H; - delayMicroseconds(2); -} - -u8 X_IIC_ReadByte(u8 ack) -{ - u8 i,receive=0; - - delayMicroseconds(2); - X_SDA_H; - delayMicroseconds(2); - - for(i=0;i<8;i++) - { - X_SCK_L; - delayMicroseconds(5); - X_SCK_H; - receive<<=1; - delayMicroseconds(5); - X_SDA_INPUT; - - if(X_READ_SDA) - receive|=0x01; - else - receive&=0xfe; - delayMicroseconds(5); - } - if(!ack) - X_IIC_Nack(); - else - X_IIC_Ack(); - - X_SCK_L; - delayMicroseconds(2); - - return receive; -} - -void X_IIC_Write_OneByte(u8 deviceaddr,u8 writeaddr,u8 writedata) -{ - X_IIC_Start(); - X_IIC_SendByte(deviceaddr&0xfe); - X_IIC_Wait_Ack(); - X_IIC_SendByte(writeaddr); - X_IIC_Wait_Ack(); - X_IIC_SendByte(writedata); - X_IIC_Wait_Ack(); - X_IIC_Stop(); - delay(10); -} - - - -u8 X_IIC_Read_OneByte(u8 deviceaddr,u8 readaddr) -{ - u8 temp; - X_IIC_Start(); - X_IIC_SendByte(deviceaddr&0xfe); - X_IIC_Wait_Ack(); - X_IIC_SendByte(readaddr); - X_IIC_Wait_Ack(); - - X_IIC_Start(); - X_IIC_SendByte(deviceaddr|0x01); - X_IIC_Wait_Ack(); - temp=X_IIC_ReadByte(0); - X_IIC_Stop(); - return temp; -} - - - - - - diff --git a/lib/Marlin/X_IIC.h b/lib/Marlin/X_IIC.h deleted file mode 100644 index b56a030..0000000 --- a/lib/Marlin/X_IIC.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _X_IIC_H -#define _X_IIC_H - -#include - -void X_IIC_Init(void); - -void X_IIC_Write_OneByte(u8 deviceaddr,u8 writeaddr,u8 writedata); - -u8 X_IIC_Read_OneByte(u8 deviceaddr,u8 readaddr); - - -#endif // _X_IIC_H \ No newline at end of file diff --git a/lib/Marlin/Y_IIC.cpp b/lib/Marlin/Y_IIC.cpp deleted file mode 100644 index 39d2342..0000000 --- a/lib/Marlin/Y_IIC.cpp +++ /dev/null @@ -1,202 +0,0 @@ - -#include "Y_IIC.h" - -#define Y_SCK_PIN 34 -#define Y_SDA_PIN 36 -#define Y_SCK_H {digitalWrite(Y_SCK_PIN,1); } -#define Y_SCK_L {digitalWrite(Y_SCK_PIN,0); } -#define Y_SDA_H {pinMode(Y_SDA_PIN,OUTPUT);digitalWrite(Y_SDA_PIN,1); } -#define Y_SDA_L {pinMode(Y_SDA_PIN,OUTPUT);digitalWrite(Y_SDA_PIN,0); } - -#define Y_READ_SDA digitalRead(Y_SDA_PIN) - -#define AS5600_DEFAULT_ADDRESS 0x36 - - - - - - -void Y_IIC_Init(void) -{ - pinMode(Y_SCK_PIN, OUTPUT); - pinMode(Y_SDA_PIN, OUTPUT);//INPUT, - digitalWrite(Y_SCK_PIN,1); - digitalWrite(Y_SDA_PIN,1);//digitalRead() -} - - -void Y_IIC_Start(void) -{ - Y_SDA_H; - Y_SCK_H; - delayMicroseconds(5); - Y_SDA_L; - delayMicroseconds(5); - - Y_SCK_L; - delayMicroseconds(2); - -} - - -void Y_IIC_Stop(void) -{ - Y_SCK_L; - Y_SDA_L; - delayMicroseconds(5); - Y_SCK_H; - delayMicroseconds(5); - Y_SDA_H; - delayMicroseconds(5); - - -} - - -u8 Y_IIC_Wait_Ack(void) -{ - u8 ucErrTime=0; - Y_SDA_H;delayMicroseconds(2); - Y_SCK_H;delayMicroseconds(2); - - pinMode(Y_SDA_PIN, INPUT); - while(Y_READ_SDA) - { - ucErrTime++; - if(ucErrTime>250) - { - Y_IIC_Stop(); - return 1; - } - } - - Y_SCK_L; - delayMicroseconds(2); - return 0; -} - - -void Y_IIC_Ack(void) -{ - Y_SCK_L; - Y_SDA_L; - delayMicroseconds(2); - Y_SCK_H; - delayMicroseconds(5); - - Y_SCK_L; - delayMicroseconds(2); - Y_SDA_H; - delayMicroseconds(2); -} - - -void Y_IIC_Nack(void) -{ - Y_SCK_L; - Y_SDA_H; - delayMicroseconds(2); - Y_SCK_H; - delayMicroseconds(5); - - Y_SCK_L; - delayMicroseconds(2); - Y_SDA_H; - delayMicroseconds(2); -} - - -void Y_IIC_SendByte(u8 Txdata) -{ - u8 i; - for(i=0;i<8;i++) - { - Y_SCK_L; - if(Txdata&0x80) - Y_SDA_H - else - Y_SDA_L - delayMicroseconds(5); - Y_SCK_H; - delayMicroseconds(5); - Y_SCK_L; - Txdata<<=1; - delayMicroseconds(5); - } - - delayMicroseconds(2); - Y_SDA_H; - delayMicroseconds(2); -} - -u8 Y_IIC_ReadByte(u8 ack) -{ - u8 i,receive=0; - - delayMicroseconds(2); - Y_SDA_H; - delayMicroseconds(2); - - for(i=0;i<8;i++) - { - Y_SCK_L; - delayMicroseconds(5); - Y_SCK_H; - receive<<=1; - delayMicroseconds(5); - pinMode(Y_SDA_PIN, INPUT); - if(Y_READ_SDA) - receive|=0x01; - else - receive&=0xfe; - delayMicroseconds(5); - } - if(!ack) - Y_IIC_Nack(); - else - Y_IIC_Ack(); - - Y_SCK_L; - delayMicroseconds(2); - - return receive; -} - -void Y_IIC_Write_OneByte(u8 deviceaddr,u8 writeaddr,u8 writedata) -{ - Y_IIC_Start(); - Y_IIC_SendByte(deviceaddr&0xfe); - Y_IIC_Wait_Ack(); - Y_IIC_SendByte(writeaddr); - Y_IIC_Wait_Ack(); - Y_IIC_SendByte(writedata); - Y_IIC_Wait_Ack(); - Y_IIC_Stop(); - delay(10); -} - - -//res1 = Y_IIC_Read_OneByte((0x36<<1),0x0f); -u8 Y_IIC_Read_OneByte(u8 deviceaddr,u8 readaddr) -{ - u8 temp; - Y_IIC_Start(); - Y_IIC_SendByte(deviceaddr&0xfe); - Y_IIC_Wait_Ack(); - Y_IIC_SendByte(readaddr); - Y_IIC_Wait_Ack(); - - Y_IIC_Start(); - Y_IIC_SendByte(deviceaddr|0x01); - Y_IIC_Wait_Ack(); - temp=Y_IIC_ReadByte(0); - Y_IIC_Stop(); - return temp; -} - - - - - - diff --git a/lib/Marlin/Y_IIC.h b/lib/Marlin/Y_IIC.h deleted file mode 100644 index 300f27c..0000000 --- a/lib/Marlin/Y_IIC.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _Y_IIC_H -#define _Y_IIC_H - -#include - -void Y_IIC_Init(void); - -void Y_IIC_Write_OneByte(u8 deviceaddr,u8 writeaddr,u8 writedata); - -u8 Y_IIC_Read_OneByte(u8 deviceaddr,u8 readaddr); - - -#endif // _Y_IIC_H \ No newline at end of file diff --git a/lib/Marlin/Z_IIC.cpp b/lib/Marlin/Z_IIC.cpp deleted file mode 100644 index dbc6222..0000000 --- a/lib/Marlin/Z_IIC.cpp +++ /dev/null @@ -1,213 +0,0 @@ -#include "Z_IIC.h" - -#define Z_SDA_SET PORTH |= 0x04 -#define Z_SDA_CLEAR PORTH &= 0xFB -#define Z_SCL_SET PORTH |= 0x80 -#define Z_SCL_CLEAR PORTH &= 0x7F - -#define Z_SDA_INPUT DDRH &= 0xFB -#define Z_SDA_OUTPUT DDRH |= 0x04 - -#define Z_SCL_INPUT DDRH &= 0x7F -#define Z_SCL_OUTPUT DDRH |= 0x80 - -#define Z_SDA_READ PINH & 0x04 - -#define Z_PORT_DDR DDRH - -#define Z_SCK_H {Z_SCL_SET; } -#define Z_SCK_L {Z_SCL_CLEAR; } -#define Z_SDA_H {Z_SDA_OUTPUT;Z_SDA_SET; } -#define Z_SDA_L {Z_SDA_OUTPUT;Z_SDA_CLEAR; } - -#define Z_READ_SDA Z_SDA_READ - -#define AS5600_DEFAULT_ADDRESS 0x36 - - -void Z_IIC_Init(void) -{ - Z_SDA_OUTPUT; - Z_SCL_OUTPUT; - Z_SDA_SET; - Z_SCL_SET; -} - - -void Z_IIC_Start(void) -{ - Z_SDA_H; - Z_SCK_H; - delayMicroseconds(5); - Z_SDA_L; - delayMicroseconds(5); - - Z_SCK_L; - delayMicroseconds(2); - -} - - -void Z_IIC_Stop(void) -{ - Z_SCK_L; - Z_SDA_L; - delayMicroseconds(5); - Z_SCK_H; - delayMicroseconds(5); - Z_SDA_H; - delayMicroseconds(5); - - -} - - -u8 Z_IIC_Wait_Ack(void) -{ - u8 ucErrTime=0; - Z_SDA_H;delayMicroseconds(2); - Z_SCK_H;delayMicroseconds(2); - - - Z_SDA_INPUT; - - while(Z_READ_SDA) - { - ucErrTime++; - if(ucErrTime>250) - { - Z_IIC_Stop(); - return 1; - } - } - - Z_SCK_L; - delayMicroseconds(2); - return 0; -} - - -void Z_IIC_Ack(void) -{ - Z_SCK_L; - Z_SDA_L; - delayMicroseconds(2); - Z_SCK_H; - delayMicroseconds(5); - - Z_SCK_L; - delayMicroseconds(2); - Z_SDA_H; - delayMicroseconds(2); -} - - -void Z_IIC_Nack(void) -{ - Z_SCK_L; - Z_SDA_H; - delayMicroseconds(2); - Z_SCK_H; - delayMicroseconds(5); - - Z_SCK_L; - delayMicroseconds(2); - Z_SDA_H; - delayMicroseconds(2); -} - - -void Z_IIC_SendByte(u8 Txdata) -{ - u8 i; - for(i=0;i<8;i++) - { - Z_SCK_L; - if(Txdata&0x80) - Z_SDA_H - else - Z_SDA_L - delayMicroseconds(5); - Z_SCK_H; - delayMicroseconds(5); - Z_SCK_L; - Txdata<<=1; - delayMicroseconds(5); - } - - delayMicroseconds(2); - Z_SDA_H; - delayMicroseconds(2); -} - -u8 Z_IIC_ReadByte(u8 ack) -{ - u8 i,receive=0; - - delayMicroseconds(2); - Z_SDA_H; - delayMicroseconds(2); - - for(i=0;i<8;i++) - { - Z_SCK_L; - delayMicroseconds(5); - Z_SCK_H; - receive<<=1; - delayMicroseconds(5); - Z_SDA_INPUT; - - if(Z_READ_SDA) - receive|=0x01; - else - receive&=0xfe; - delayMicroseconds(5); - } - if(!ack) - Z_IIC_Nack(); - else - Z_IIC_Ack(); - - Z_SCK_L; - delayMicroseconds(2); - - return receive; -} - -void Z_IIC_Write_OneByte(u8 deviceaddr,u8 writeaddr,u8 writedata) -{ - Z_IIC_Start(); - Z_IIC_SendByte(deviceaddr&0xfe); - Z_IIC_Wait_Ack(); - Z_IIC_SendByte(writeaddr); - Z_IIC_Wait_Ack(); - Z_IIC_SendByte(writedata); - Z_IIC_Wait_Ack(); - Z_IIC_Stop(); - delay(10); -} - - - -u8 Z_IIC_Read_OneByte(u8 deviceaddr,u8 readaddr) -{ - u8 temp; - Z_IIC_Start(); - Z_IIC_SendByte(deviceaddr&0xfe); - Z_IIC_Wait_Ack(); - Z_IIC_SendByte(readaddr); - Z_IIC_Wait_Ack(); - - Z_IIC_Start(); - Z_IIC_SendByte(deviceaddr|0x01); - Z_IIC_Wait_Ack(); - temp=Z_IIC_ReadByte(0); - Z_IIC_Stop(); - return temp; -} - - - - - - diff --git a/lib/Marlin/Z_IIC.h b/lib/Marlin/Z_IIC.h deleted file mode 100644 index 2846424..0000000 --- a/lib/Marlin/Z_IIC.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _Z_IIC_H -#define _Z_IIC_H - -#include - -void Z_IIC_Init(void); - -void Z_IIC_Write_OneByte(u8 deviceaddr,u8 writeaddr,u8 writedata); - -u8 Z_IIC_Read_OneByte(u8 deviceaddr,u8 readaddr); - - -#endif // _Z_IIC_H \ No newline at end of file diff --git a/lib/Marlin/blinkm.cpp b/lib/Marlin/blinkm.cpp deleted file mode 100644 index c495a5d..0000000 --- a/lib/Marlin/blinkm.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * blinkm.cpp - Library for controlling a BlinkM over i2c - * Created by Tim Koster, August 21 2013. - */ - -#include "Marlin.h" - -#if ENABLED(BLINKM) - -#include "blinkm.h" - -void SendColors(byte red, byte grn, byte blu) { - Wire.begin(); - Wire.beginTransmission(0x09); - Wire.write('o'); //to disable ongoing script, only needs to be used once - Wire.write('n'); - Wire.write(red); - Wire.write(grn); - Wire.write(blu); - Wire.endTransmission(); -} - -#endif //BLINKM - diff --git a/lib/Marlin/blinkm.h b/lib/Marlin/blinkm.h deleted file mode 100644 index ed2ad79..0000000 --- a/lib/Marlin/blinkm.h +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * blinkm.h - Library for controlling a BlinkM over i2c - * Created by Tim Koster, August 21 2013. - */ - -#include "Arduino.h" -#include "Wire.h" - -void SendColors(byte red, byte grn, byte blu); diff --git a/lib/Marlin/boards.h b/lib/Marlin/boards.h deleted file mode 100644 index dae3a1c..0000000 --- a/lib/Marlin/boards.h +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef BOARDS_H -#define BOARDS_H - -#define BOARD_UNKNOWN -1 - -#define BOARD_GEN7_CUSTOM 10 // Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics" -#define BOARD_GEN7_12 11 // Gen7 v1.1, v1.2 -#define BOARD_GEN7_13 12 // Gen7 v1.3 -#define BOARD_GEN7_14 13 // Gen7 v1.4 -#define BOARD_CNCONTROLS_11 111 // Cartesio CN Controls V11 -#define BOARD_CNCONTROLS_12 112 // Cartesio CN Controls V12 -#define BOARD_CHEAPTRONIC 2 // Cheaptronic v1.0 -#define BOARD_SETHI 20 // Sethi 3D_1 -#define BOARD_RAMPS_OLD 3 // MEGA/RAMPS up to 1.2 -#define BOARD_RAMPS_13_EFB 33 // RAMPS 1.3 (Power outputs: Hotend, Fan, Bed) -#define BOARD_RAMPS_13_EEB 34 // RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Bed) -#define BOARD_RAMPS_13_EFF 35 // RAMPS 1.3 (Power outputs: Hotend, Fan0, Fan1) -#define BOARD_RAMPS_13_EEF 36 // RAMPS 1.3 (Power outputs: Hotend0, Hotend1, Fan) -#define BOARD_RAMPS_13_SF 38 // RAMPS 1.3 (Power outputs: Spindle, Controller Fan) -#define BOARD_FELIX2 37 // Felix 2.0+ Electronics Board (RAMPS like) -#define BOARD_RIGIDBOARD 42 // Invent-A-Part RigidBoard -#define BOARD_RIGIDBOARD_V2 52 // Invent-A-Part RigidBoard V2 -#define BOARD_RAMPS_14_EFB 43 // RAMPS 1.4 (Power outputs: Hotend, Fan, Bed) -#define BOARD_RAMPS_14_EEB 44 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Bed) -#define BOARD_RAMPS_14_EFF 45 // RAMPS 1.4 (Power outputs: Hotend, Fan0, Fan1) -#define BOARD_RAMPS_14_EEF 46 // RAMPS 1.4 (Power outputs: Hotend0, Hotend1, Fan) -#define BOARD_RAMPS_14_SF 48 // RAMPS 1.4 (Power outputs: Spindle, Controller Fan) -#define BOARD_GEN6 5 // Gen6 -#define BOARD_GEN6_DELUXE 51 // Gen6 deluxe -#define BOARD_SANGUINOLOLU_11 6 // Sanguinololu < 1.2 -#define BOARD_SANGUINOLOLU_12 62 // Sanguinololu 1.2 and above -#define BOARD_MELZI 63 // Melzi -#define BOARD_STB_11 64 // STB V1.1 -#define BOARD_AZTEEG_X1 65 // Azteeg X1 -#define BOARD_MELZI_MAKR3D 66 // Melzi with ATmega1284 (MaKr3d version) -#define BOARD_AZTEEG_X3 67 // Azteeg X3 -#define BOARD_AZTEEG_X3_PRO 68 // Azteeg X3 Pro -#define BOARD_ULTIMAKER 7 // Ultimaker -#define BOARD_ULTIMAKER_OLD 71 // Ultimaker (Older electronics. Pre 1.5.4. This is rare) -#define BOARD_ULTIMAIN_2 72 // Ultimainboard 2.x (Uses TEMP_SENSOR 20) -#define BOARD_3DRAG 77 // 3Drag Controller -#define BOARD_K8200 78 // Velleman K8200 Controller (derived from 3Drag Controller) -#define BOARD_K8400 79 // Velleman K8400 Controller (derived from 3Drag Controller) -#define BOARD_TEENSYLU 8 // Teensylu -#define BOARD_RUMBA 80 // Rumba -#define BOARD_PRINTRBOARD 81 // Printrboard (AT90USB1286) -#define BOARD_PRINTRBOARD_REVF 811 // Printrboard Revision F (AT90USB1286) -#define BOARD_BRAINWAVE 82 // Brainwave (AT90USB646) -#define BOARD_SAV_MKI 83 // SAV Mk-I (AT90USB1286) -#define BOARD_TEENSY2 84 // Teensy++2.0 (AT90USB1286) - CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make -#define BOARD_BRAINWAVE_PRO 85 // Brainwave Pro (AT90USB1286) -#define BOARD_GEN3_PLUS 9 // Gen3+ -#define BOARD_GEN3_MONOLITHIC 22 // Gen3 Monolithic Electronics -#define BOARD_MEGATRONICS 70 // Megatronics -#define BOARD_MEGATRONICS_2 701 // Megatronics v2.0 -#define BOARD_MINITRONICS 702 // Minitronics v1.0/1.1 -#define BOARD_MEGATRONICS_3 703 // Megatronics v3.0 -#define BOARD_OMCA_A 90 // Alpha OMCA board -#define BOARD_OMCA 91 // Final OMCA board -#define BOARD_RAMBO 301 // Rambo -#define BOARD_MINIRAMBO 302 // Mini-Rambo -#define BOARD_AJ4P 303 // AJ4P -#define BOARD_MEGACONTROLLER 310 // Mega controller -#define BOARD_ELEFU_3 21 // Elefu Ra Board (v3) -#define BOARD_5DPRINT 88 // 5DPrint D8 Driver Board -#define BOARD_LEAPFROG 999 // Leapfrog -#define BOARD_MKS_BASE 40 // MKS BASE 1.0 -#define BOARD_MKS_13 47 // MKS v1.3 or 1.4 (maybe higher) -#define BOARD_SAINSMART_2IN1 49 // Sainsmart 2-in-1 board -#define BOARD_BAM_DICE 401 // 2PrintBeta BAM&DICE with STK drivers -#define BOARD_BAM_DICE_DUE 402 // 2PrintBeta BAM&DICE Due with STK drivers -#define BOARD_BQ_ZUM_MEGA_3D 503 // bq ZUM Mega 3D - -#define BOARD_SWIFT_10 510 // Swift - -#define BOARD_99 99 // This is in pins.h but...? - -#define MB(board) (MOTHERBOARD==BOARD_##board) - -#endif //__BOARDS_H diff --git a/lib/Marlin/buzzer.h b/lib/Marlin/buzzer.h deleted file mode 100644 index 199d64e..0000000 --- a/lib/Marlin/buzzer.h +++ /dev/null @@ -1,145 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __BUZZER_H__ -#define __BUZZER_H__ - -#include "types.h" -#include "fastio.h" -#include "circularqueue.h" -#include "temperature.h" - -#include "MarlinConfig.h" - -#define TONE_QUEUE_LENGTH 4 - -/** - * @brief Tone structure - * @details Simple abstraction of a tone based on a duration and a frequency. - */ -struct tone_t { - uint16_t duration; - uint16_t frequency; -}; - -/** - * @brief Buzzer class - */ -class Buzzer { - private: - struct state_t { - tone_t tone; - uint32_t endtime; - } state; - - protected: - CircularQueue buffer; - - /** - * @brief Inverts the sate of a digital PIN - * @details This will invert the current state of an digital IO pin. - */ - void invert() { - TOGGLE(BEEPER_PIN); - } - - /** - * @brief Turn off a digital PIN - * @details Alias of digitalWrite(PIN, LOW) using FastIO - */ - void off() { - WRITE(BEEPER_PIN, LOW); - } - - /** - * @brief Turn on a digital PIN - * @details Alias of digitalWrite(PIN, HIGH) using FastIO - */ - void on() { - WRITE(BEEPER_PIN, HIGH); - } - - /** - * @brief Resets the state of the class - * @details Brings the class state to a known one. - */ - void reset() { - this->off(); - this->state.endtime = 0; - } - - public: - /** - * @brief Class constructor - */ - Buzzer() { - SET_OUTPUT(BEEPER_PIN); - this->reset(); - } - - /** - * @brief Add a tone to the queue - * @details Adds a tone_t structure to the ring buffer, will block IO if the - * queue is full waiting for one slot to get available. - * - * @param duration Duration of the tone in milliseconds - * @param frequency Frequency of the tone in hertz - */ - void tone(uint16_t const &duration, uint16_t const &frequency = 0) { - while (buffer.isFull()) { - this->tick(); - thermalManager.manage_heater(); - } - this->buffer.enqueue((tone_t) { duration, frequency }); - } - - /** - * @brief Loop function - * @details This function should be called at loop, it will take care of - * playing the tones in the queue. - */ - virtual void tick() { - const millis_t now = millis(); - - if (!this->state.endtime) { - if (this->buffer.isEmpty()) return; - - this->state.tone = this->buffer.dequeue(); - this->state.endtime = now + this->state.tone.duration; - - if (this->state.tone.frequency > 0) { - #if ENABLED(SPEAKER) - CRITICAL_SECTION_START; - ::tone(BEEPER_PIN, this->state.tone.frequency, this->state.tone.duration); - CRITICAL_SECTION_END; - #else - this->on(); - #endif - } - } - else if (ELAPSED(now, this->state.endtime)) this->reset(); - } -}; - -extern Buzzer buzzer; - -#endif diff --git a/lib/Marlin/cardreader.cpp b/lib/Marlin/cardreader.cpp deleted file mode 100644 index 65b4093..0000000 --- a/lib/Marlin/cardreader.cpp +++ /dev/null @@ -1,624 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "cardreader.h" - -#include "ultralcd.h" -#include "stepper.h" -#include "temperature.h" -#include "language.h" - -#include "Marlin.h" - -#if ENABLED(SDSUPPORT) - -CardReader::CardReader() { - filesize = 0; - sdpos = 0; - sdprinting = false; - cardOK = false; - saving = false; - logging = false; - workDirDepth = 0; - file_subcall_ctr = 0; - memset(workDirParents, 0, sizeof(workDirParents)); - - autostart_stilltocheck = true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software. - autostart_index = 0; - - //power to SD reader - #if SDPOWER > -1 - OUT_WRITE(SDPOWER, HIGH); - #endif //SDPOWER - - next_autostart_ms = millis() + 5000; -} - -char *createFilename(char *buffer, const dir_t &p) { //buffer > 12characters - char *pos = buffer; - for (uint8_t i = 0; i < 11; i++) { - if (p.name[i] == ' ') continue; - if (i == 8) *pos++ = '.'; - *pos++ = p.name[i]; - } - *pos++ = 0; - return buffer; -} - -/** - * Dive into a folder and recurse depth-first to perform a pre-set operation lsAction: - * LS_Count - Add +1 to nrFiles for every file within the parent - * LS_GetFilename - Get the filename of the file indexed by nrFiles - * LS_SerialPrint - Print the full path of each file to serial output - */ -void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) { - dir_t p; - uint8_t cnt = 0; - - // Read the next entry from a directory - while (parent.readDir(p, longFilename) > 0) { - - // If the entry is a directory and the action is LS_SerialPrint - if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { - - // Get the short name for the item, which we know is a folder - char lfilename[FILENAME_LENGTH]; - createFilename(lfilename, p); - - // Allocate enough stack space for the full path to a folder, trailing slash, and nul - boolean prepend_is_empty = (prepend[0] == '\0'); - int len = (prepend_is_empty ? 1 : strlen(prepend)) + strlen(lfilename) + 1 + 1; - char path[len]; - - // Append the FOLDERNAME12/ to the passed string. - // It contains the full path to the "parent" argument. - // We now have the full path to the item in this folder. - strcpy(path, prepend_is_empty ? "/" : prepend); // root slash if prepend is empty - strcat(path, lfilename); // FILENAME_LENGTH-1 characters maximum - strcat(path, "/"); // 1 character - - // Serial.print(path); - - // Get a new directory object using the full path - // and dive recursively into it. - SdFile dir; - if (!dir.open(parent, lfilename, O_READ)) { - if (lsAction == LS_SerialPrint) { - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_SD_CANT_OPEN_SUBDIR); - SERIAL_ECHOLN(lfilename); - } - } - lsDive(path, dir); - // close() is done automatically by destructor of SdFile - } - else { - uint8_t pn0 = p.name[0]; - if (pn0 == DIR_NAME_FREE) break; - if (pn0 == DIR_NAME_DELETED || pn0 == '.') continue; - if (longFilename[0] == '.') continue; - - if (!DIR_IS_FILE_OR_SUBDIR(&p)) continue; - - filenameIsDir = DIR_IS_SUBDIR(&p); - - if (!filenameIsDir && (p.name[8] != 'G' || p.name[9] == '~')) continue; - - switch (lsAction) { - case LS_Count: - nrFiles++; - break; - case LS_SerialPrint: - createFilename(filename, p); - SERIAL_PROTOCOL(prepend); - SERIAL_PROTOCOLLN(filename); - break; - case LS_GetFilename: - createFilename(filename, p); - if (match != NULL) { - if (strcasecmp(match, filename) == 0) return; - } - else if (cnt == nrFiles) return; - cnt++; - break; - } - - } - } // while readDir -} - -void CardReader::ls() { - lsAction = LS_SerialPrint; - root.rewind(); - lsDive("", root); -} - -#if ENABLED(LONG_FILENAME_HOST_SUPPORT) - - /** - * Get a long pretty path based on a DOS 8.3 path - */ - void CardReader::printLongPath(char *path) { - lsAction = LS_GetFilename; - - int i, pathLen = strlen(path); - - // SERIAL_ECHOPGM("Full Path: "); SERIAL_ECHOLN(path); - - // Zero out slashes to make segments - for (i = 0; i < pathLen; i++) if (path[i] == '/') path[i] = '\0'; - - SdFile diveDir = root; // start from the root for segment 1 - for (i = 0; i < pathLen;) { - - if (path[i] == '\0') i++; // move past a single nul - - char *segment = &path[i]; // The segment after most slashes - - // If a segment is empty (extra-slash) then exit - if (!*segment) break; - - // Go to the next segment - while (path[++i]) { } - - // SERIAL_ECHOPGM("Looking for segment: "); SERIAL_ECHOLN(segment); - - // Find the item, setting the long filename - diveDir.rewind(); - lsDive("", diveDir, segment); - - // Print /LongNamePart to serial output - SERIAL_PROTOCOLCHAR('/'); - SERIAL_PROTOCOL(longFilename[0] ? longFilename : "???"); - - // If the filename was printed then that's it - if (!filenameIsDir) break; - - // SERIAL_ECHOPGM("Opening dir: "); SERIAL_ECHOLN(segment); - - // Open the sub-item as the new dive parent - SdFile dir; - if (!dir.open(diveDir, segment, O_READ)) { - SERIAL_EOL; - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_SD_CANT_OPEN_SUBDIR); - SERIAL_ECHO(segment); - break; - } - - diveDir.close(); - diveDir = dir; - - } // while i SD_PROCEDURE_DEPTH - 1) { - SERIAL_ERROR_START; - SERIAL_ERRORPGM("trying to call sub-gcode files with too many levels. MAX level is:"); - SERIAL_ERRORLN(SD_PROCEDURE_DEPTH); - kill(PSTR(MSG_KILLED)); - return; - } - - SERIAL_ECHO_START; - SERIAL_ECHOPGM("SUBROUTINE CALL target:\""); - SERIAL_ECHO(name); - SERIAL_ECHOPGM("\" parent:\""); - - //store current filename and position - getAbsFilename(proc_filenames[file_subcall_ctr]); - - SERIAL_ECHO(proc_filenames[file_subcall_ctr]); - SERIAL_ECHOPGM("\" pos"); - SERIAL_ECHOLN(sdpos); - filespos[file_subcall_ctr] = sdpos; - file_subcall_ctr++; - } - else { - SERIAL_ECHO_START; - SERIAL_ECHOPGM("Now doing file: "); - SERIAL_ECHOLN(name); - } - file.close(); - } - else { //opening fresh file - file_subcall_ctr = 0; //resetting procedure depth in case user cancels print while in procedure - SERIAL_ECHO_START; - SERIAL_ECHOPGM("Now fresh file: "); - SERIAL_ECHOLN(name); - } - sdprinting = false; - - SdFile myDir; - curDir = &root; - char *fname = name; - - char *dirname_start, *dirname_end; - if (name[0] == '/') { - dirname_start = &name[1]; - while (dirname_start != NULL) { - dirname_end = strchr(dirname_start, '/'); - //SERIAL_ECHOPGM("start:");SERIAL_ECHOLN((int)(dirname_start - name)); - //SERIAL_ECHOPGM("end :");SERIAL_ECHOLN((int)(dirname_end - name)); - if (dirname_end != NULL && dirname_end > dirname_start) { - char subdirname[FILENAME_LENGTH]; - strncpy(subdirname, dirname_start, dirname_end - dirname_start); - subdirname[dirname_end - dirname_start] = 0; - SERIAL_ECHOLN(subdirname); - if (!myDir.open(curDir, subdirname, O_READ)) { - SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL); - SERIAL_PROTOCOL(subdirname); - SERIAL_PROTOCOLCHAR('.'); - return; - } - else { - //SERIAL_ECHOLNPGM("dive ok"); - } - - curDir = &myDir; - dirname_start = dirname_end + 1; - } - else { // the remainder after all /fsa/fdsa/ is the filename - fname = dirname_start; - //SERIAL_ECHOLNPGM("remainder"); - //SERIAL_ECHOLN(fname); - break; - } - } - } - else { //relative path - curDir = &workDir; - } - - if (read) { - if (file.open(curDir, fname, O_READ)) { - filesize = file.fileSize(); - SERIAL_PROTOCOLPAIR(MSG_SD_FILE_OPENED, fname); - SERIAL_PROTOCOLPAIR(MSG_SD_SIZE, filesize); - SERIAL_EOL; - sdpos = 0; - - SERIAL_PROTOCOLLNPGM(MSG_SD_FILE_SELECTED); - getfilename(0, fname); - lcd_setstatus(longFilename[0] ? longFilename : fname); - } - else { - SERIAL_PROTOCOLPAIR(MSG_SD_OPEN_FILE_FAIL, fname); - SERIAL_PROTOCOLCHAR('.'); - SERIAL_EOL; - } - } - else { //write - if (!file.open(curDir, fname, O_CREAT | O_APPEND | O_WRITE | O_TRUNC)) { - SERIAL_PROTOCOLPAIR(MSG_SD_OPEN_FILE_FAIL, fname); - SERIAL_PROTOCOLCHAR('.'); - SERIAL_EOL; - } - else { - saving = true; - SERIAL_PROTOCOLPAIR(MSG_SD_WRITE_TO_FILE, name); - SERIAL_EOL; - lcd_setstatus(fname); - } - } -} - -void CardReader::removeFile(char* name) { - if (!cardOK) return; - - file.close(); - sdprinting = false; - - SdFile myDir; - curDir = &root; - char *fname = name; - - char *dirname_start, *dirname_end; - if (name[0] == '/') { - dirname_start = strchr(name, '/') + 1; - while (dirname_start != NULL) { - dirname_end = strchr(dirname_start, '/'); - //SERIAL_ECHOPGM("start:");SERIAL_ECHOLN((int)(dirname_start - name)); - //SERIAL_ECHOPGM("end :");SERIAL_ECHOLN((int)(dirname_end - name)); - if (dirname_end != NULL && dirname_end > dirname_start) { - char subdirname[FILENAME_LENGTH]; - strncpy(subdirname, dirname_start, dirname_end - dirname_start); - subdirname[dirname_end - dirname_start] = 0; - SERIAL_ECHOLN(subdirname); - if (!myDir.open(curDir, subdirname, O_READ)) { - SERIAL_PROTOCOLPAIR("open failed, File: ", subdirname); - SERIAL_PROTOCOLCHAR('.'); - return; - } - else { - //SERIAL_ECHOLNPGM("dive ok"); - } - - curDir = &myDir; - dirname_start = dirname_end + 1; - } - else { // the remainder after all /fsa/fdsa/ is the filename - fname = dirname_start; - //SERIAL_ECHOLNPGM("remainder"); - //SERIAL_ECHOLN(fname); - break; - } - } - } - else { // relative path - curDir = &workDir; - } - - if (file.remove(curDir, fname)) { - SERIAL_PROTOCOLPGM("File deleted:"); - SERIAL_PROTOCOLLN(fname); - sdpos = 0; - } - else { - SERIAL_PROTOCOLPGM("Deletion failed, File: "); - SERIAL_PROTOCOL(fname); - SERIAL_PROTOCOLCHAR('.'); - } -} - -void CardReader::getStatus() { - if (cardOK) { - SERIAL_PROTOCOLPGM(MSG_SD_PRINTING_BYTE); - SERIAL_PROTOCOL(sdpos); - SERIAL_PROTOCOLCHAR('/'); - SERIAL_PROTOCOLLN(filesize); - } - else { - SERIAL_PROTOCOLLNPGM(MSG_SD_NOT_PRINTING); - } -} - -void CardReader::write_command(char *buf) { - char* begin = buf; - char* npos = 0; - char* end = buf + strlen(buf) - 1; - - file.writeError = false; - if ((npos = strchr(buf, 'N')) != NULL) { - begin = strchr(npos, ' ') + 1; - end = strchr(npos, '*') - 1; - } - end[1] = '\r'; - end[2] = '\n'; - end[3] = '\0'; - file.write(begin); - if (file.writeError) { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_SD_ERR_WRITE_TO_FILE); - } -} - -void CardReader::checkautostart(bool force) { - if (!force && (!autostart_stilltocheck || ELAPSED(millis(), next_autostart_ms))) - return; - - autostart_stilltocheck = false; - - if (!cardOK) { - initsd(); - if (!cardOK) return; // fail - } - - char autoname[10]; - sprintf_P(autoname, PSTR("auto%i.g"), autostart_index); - for (int8_t i = 0; i < (int8_t)strlen(autoname); i++) autoname[i] = tolower(autoname[i]); - - dir_t p; - - root.rewind(); - - bool found = false; - while (root.readDir(p, NULL) > 0) { - for (int8_t i = 0; i < (int8_t)strlen((char*)p.name); i++) p.name[i] = tolower(p.name[i]); - if (p.name[9] != '~' && strncmp((char*)p.name, autoname, 5) == 0) { - openAndPrintFile(autoname); - found = true; - } - } - if (!found) - autostart_index = -1; - else - autostart_index++; -} - -void CardReader::closefile(bool store_location) { - file.sync(); - file.close(); - saving = logging = false; - - if (store_location) { - //future: store printer state, filename and position for continuing a stopped print - // so one can unplug the printer and continue printing the next day. - } -} - -/** - * Get the name of a file in the current directory by index - */ -void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) { - curDir = &workDir; - lsAction = LS_GetFilename; - nrFiles = nr; - curDir->rewind(); - lsDive("", *curDir, match); -} - -uint16_t CardReader::getnrfilenames() { - curDir = &workDir; - lsAction = LS_Count; - nrFiles = 0; - curDir->rewind(); - lsDive("", *curDir); - //SERIAL_ECHOLN(nrFiles); - return nrFiles; -} - -void CardReader::chdir(const char * relpath) { - SdFile newfile; - SdFile *parent = &root; - - if (workDir.isOpen()) parent = &workDir; - - if (!newfile.open(*parent, relpath, O_READ)) { - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_SD_CANT_ENTER_SUBDIR); - SERIAL_ECHOLN(relpath); - } - else { - if (workDirDepth < MAX_DIR_DEPTH) - workDirParents[workDirDepth++] = *parent; - workDir = newfile; - } -} - -void CardReader::updir() { - if (workDirDepth > 0) - workDir = workDirParents[--workDirDepth]; -} - -void CardReader::printingHasFinished() { - stepper.synchronize(); - file.close(); - if (file_subcall_ctr > 0) { // Heading up to a parent file that called current as a procedure. - file_subcall_ctr--; - openFile(proc_filenames[file_subcall_ctr], true, true); - setIndex(filespos[file_subcall_ctr]); - startFileprint(); - } - else { - sdprinting = false; - if (SD_FINISHED_STEPPERRELEASE) - enqueue_and_echo_commands_P(PSTR(SD_FINISHED_RELEASECOMMAND)); - print_job_timer.stop(); - if (print_job_timer.duration() > 60) - enqueue_and_echo_commands_P(PSTR("M31")); - } -} - -#endif //SDSUPPORT diff --git a/lib/Marlin/cardreader.h b/lib/Marlin/cardreader.h deleted file mode 100644 index 8c22e58..0000000 --- a/lib/Marlin/cardreader.h +++ /dev/null @@ -1,129 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef CARDREADER_H -#define CARDREADER_H - -#include "MarlinConfig.h" - -#if ENABLED(SDSUPPORT) - -#define MAX_DIR_DEPTH 10 // Maximum folder depth - -#include "SdFile.h" - -#include "types.h" -#include "enum.h" - -class CardReader { -public: - CardReader(); - - void initsd(); - void write_command(char *buf); - //files auto[0-9].g on the sd card are performed in a row - //this is to delay autostart and hence the initialisaiton of the sd card to some seconds after the normal init, so the device is available quick after a reset - - void checkautostart(bool x); - void openFile(char* name, bool read, bool push_current=false); - void openLogFile(char* name); - void removeFile(char* name); - void closefile(bool store_location=false); - void release(); - void openAndPrintFile(const char *name); - void startFileprint(); - void pauseSDPrint(); - void stopSDPrint(); - void getStatus(); - void printingHasFinished(); - - #if ENABLED(LONG_FILENAME_HOST_SUPPORT) - void printLongPath(char *path); - #endif - - void getfilename(uint16_t nr, const char* const match=NULL); - uint16_t getnrfilenames(); - - void getAbsFilename(char *t); - - void ls(); - void chdir(const char *relpath); - void updir(); - void setroot(); - - FORCE_INLINE bool isFileOpen() { return file.isOpen(); } - FORCE_INLINE bool eof() { return sdpos >= filesize; } - FORCE_INLINE int16_t get() { sdpos = file.curPosition(); return (int16_t)file.read(); } - FORCE_INLINE void setIndex(long index) { sdpos = index; file.seekSet(index); } - FORCE_INLINE uint8_t percentDone() { return (isFileOpen() && filesize) ? sdpos / ((filesize + 99) / 100) : 0; } - FORCE_INLINE char* getWorkDirName() { workDir.getFilename(filename); return filename; } - -public: - bool saving, logging, sdprinting, cardOK, filenameIsDir; - char filename[FILENAME_LENGTH], longFilename[LONG_FILENAME_LENGTH]; - int autostart_index; -private: - SdFile root, *curDir, workDir, workDirParents[MAX_DIR_DEPTH]; - uint8_t workDirDepth; - Sd2Card card; - SdVolume volume; - SdFile file; - - #define SD_PROCEDURE_DEPTH 1 - #define MAXPATHNAMELENGTH (FILENAME_LENGTH*MAX_DIR_DEPTH + MAX_DIR_DEPTH + 1) - uint8_t file_subcall_ctr; - uint32_t filespos[SD_PROCEDURE_DEPTH]; - char proc_filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH]; - uint32_t filesize; - uint32_t sdpos; - - millis_t next_autostart_ms; - bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware. - - LsAction lsAction; //stored for recursion. - uint16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory. - char* diveDirName; - void lsDive(const char *prepend, SdFile parent, const char * const match=NULL); -}; - -extern CardReader card; - -#define IS_SD_PRINTING (card.sdprinting) - -#if PIN_EXISTS(SD_DETECT) - #if ENABLED(SD_DETECT_INVERTED) - #define IS_SD_INSERTED (READ(SD_DETECT_PIN) != 0) - #else - #define IS_SD_INSERTED (READ(SD_DETECT_PIN) == 0) - #endif -#else - //No card detect line? Assume the card is inserted. - #define IS_SD_INSERTED true -#endif - -#else - -#define IS_SD_PRINTING (false) - -#endif //SDSUPPORT - -#endif //__CARDREADER_H diff --git a/lib/Marlin/circularqueue.h b/lib/Marlin/circularqueue.h deleted file mode 100644 index 9aafb99..0000000 --- a/lib/Marlin/circularqueue.h +++ /dev/null @@ -1,145 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __CIRCULARQUEUE_H__ -#define __CIRCULARQUEUE_H__ - -#include - -/** - * @brief Circular Queue class - * @details Implementation of the classic ring buffer data structure - */ -template -class CircularQueue { - private: - - /** - * @brief Buffer structure - * @details This structure consolidates all the overhead required to handle - * a circular queue such as the pointers and the buffer vector. - */ - struct buffer_t { - uint8_t head; - uint8_t tail; - uint8_t count; - uint8_t size; - T queue[N]; - } buffer; - - public: - /** - * @brief Class constructor - * @details This class requires two template parameters, T defines the type - * of item this queue will handle and N defines the maximum number of - * items that can be stored on the queue. - */ - CircularQueue() { - this->buffer.size = N; - this->buffer.count = this->buffer.head = this->buffer.tail = 0; - } - - /** - * @brief Removes and returns a item from the queue - * @details Removes the oldest item on the queue, pointed to by the - * buffer_t head field. The item is returned to the caller. - * @return type T item - */ - T dequeue() { - if (this->isEmpty()) return T(); - - uint8_t index = this->buffer.head; - - --this->buffer.count; - if (++this->buffer.head == this->buffer.size) - this->buffer.head = 0; - - return this->buffer.queue[index]; - } - - /** - * @brief Adds an item to the queue - * @details Adds an item to the queue on the location pointed by the buffer_t - * tail variable. Returns false if no queue space is available. - * @param item Item to be added to the queue - * @return true if the operation was successful - */ - bool enqueue(T const &item) { - if (this->isFull()) return false; - - this->buffer.queue[this->buffer.tail] = item; - - ++this->buffer.count; - if (++this->buffer.tail == this->buffer.size) - this->buffer.tail = 0; - - return true; - } - - /** - * @brief Checks if the queue has no items - * @details Returns true if there are no items on the queue, false otherwise. - * @return true if queue is empty - */ - bool isEmpty() { - return this->buffer.count == 0; - } - - /** - * @brief Checks if the queue is full - * @details Returns true if the queue is full, false otherwise. - * @return true if queue is full - */ - bool isFull() { - return this->buffer.count == this->buffer.size; - } - - /** - * @brief Gets the queue size - * @details Returns the maximum number of items a queue can have. - * @return the queue size - */ - uint8_t size() { - return this->buffer.size; - } - - /** - * @brief Gets the next item from the queue without removing it - * @details Returns the next item in the queue without removing it - * or updating the pointers. - * @return first item in the queue - */ - T peek() { - return this->buffer.queue[this->buffer.head]; - } - - /** - * @brief Gets the number of items on the queue - * @details Returns the current number of items stored on the queue. - * @return number of items in the queue - */ - uint8_t count() { - return this->buffer.count; - } -}; - -#endif diff --git a/lib/Marlin/configuration_store.cpp b/lib/Marlin/configuration_store.cpp deleted file mode 100644 index db10bba..0000000 --- a/lib/Marlin/configuration_store.cpp +++ /dev/null @@ -1,994 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * configuration_store.cpp - * - * Configuration and EEPROM storage - * - * IMPORTANT: Whenever there are changes made to the variables stored in EEPROM - * in the functions below, also increment the version number. This makes sure that - * the default values are used whenever there is a change to the data, to prevent - * wrong data being written to the variables. - * - * ALSO: Variables in the Store and Retrieve sections must be in the same order. - * If a feature is disabled, some data must still be written that, when read, - * either sets a Sane Default, or results in No Change to the existing value. - * - */ - -#define EEPROM_VERSION "V24" - -// Change EEPROM version if these are changed: -#define EEPROM_OFFSET 100 -#define MAX_EXTRUDERS 4 - -/** - * V24 EEPROM Layout: - * - * 100 Version (char x4) - * 104 EEPROM Checksum (uint16_t) - * - * 106 M92 XYZE planner.axis_steps_per_mm (float x4) - * 122 M203 XYZE planner.max_feedrate_mm_s (float x4) - * 138 M201 XYZE planner.max_acceleration_mm_per_s2 (uint32_t x4) - * 154 M204 P planner.acceleration (float) - * 158 M204 R planner.retract_acceleration (float) - * 162 M204 T planner.travel_acceleration (float) - * 166 M205 S planner.min_feedrate_mm_s (float) - * 170 M205 T planner.min_travel_feedrate_mm_s (float) - * 174 M205 B planner.min_segment_time (ulong) - * 178 M205 X planner.max_xy_jerk (float) - * 182 M205 Z planner.max_z_jerk (float) - * 186 M205 E planner.max_e_jerk (float) - * 190 M206 XYZ home_offset (float x3) - * - * Mesh bed leveling: - * 202 M420 S status (uint8) - * 203 z_offset (float) - * 207 mesh_num_x (uint8 as set in firmware) - * 208 mesh_num_y (uint8 as set in firmware) - * 209 G29 S3 XYZ z_values[][] (float x9, by default, up to float x 81) - * - * AUTO BED LEVELING - * 245 M851 zprobe_zoffset (float) - * - * DELTA: - * 249 M666 XYZ endstop_adj (float x3) - * 261 M665 R delta_radius (float) - * 265 M665 L delta_diagonal_rod (float) - * 269 M665 S delta_segments_per_second (float) - * 273 M665 A delta_diagonal_rod_trim_tower_1 (float) - * 277 M665 B delta_diagonal_rod_trim_tower_2 (float) - * 281 M665 C delta_diagonal_rod_trim_tower_3 (float) - * - * Z_DUAL_ENDSTOPS: - * 285 M666 Z z_endstop_adj (float) - * - * ULTIPANEL: - * 289 M145 S0 H preheatHotendTemp1 (int) - * 291 M145 S0 B preheatBedTemp1 (int) - * 293 M145 S0 F preheatFanSpeed1 (int) - * 295 M145 S1 H preheatHotendTemp2 (int) - * 297 M145 S1 B preheatBedTemp2 (int) - * 299 M145 S1 F preheatFanSpeed2 (int) - * - * PIDTEMP: - * 301 M301 E0 PIDC Kp[0], Ki[0], Kd[0], Kc[0] (float x4) - * 317 M301 E1 PIDC Kp[1], Ki[1], Kd[1], Kc[1] (float x4) - * 333 M301 E2 PIDC Kp[2], Ki[2], Kd[2], Kc[2] (float x4) - * 349 M301 E3 PIDC Kp[3], Ki[3], Kd[3], Kc[3] (float x4) - * 365 M301 L lpq_len (int) - * - * PIDTEMPBED: - * 367 M304 PID thermalManager.bedKp, thermalManager.bedKi, thermalManager.bedKd (float x3) - * - * DOGLCD: - * 379 M250 C lcd_contrast (int) - * - * SCARA: - * 381 M365 XYZ axis_scaling (float x3) - * - * FWRETRACT: - * 393 M209 S autoretract_enabled (bool) - * 394 M207 S retract_length (float) - * 398 M207 W retract_length_swap (float) - * 402 M207 F retract_feedrate_mm_s (float) - * 406 M207 Z retract_zlift (float) - * 410 M208 S retract_recover_length (float) - * 414 M208 W retract_recover_length_swap (float) - * 418 M208 F retract_recover_feedrate_mm_s (float) - * - * Volumetric Extrusion: - * 422 M200 D volumetric_enabled (bool) - * 423 M200 T D filament_size (float x4) (T0..3) - * - * 439 This Slot is Available! - * - */ -#include "Marlin.h" -#include "language.h" -#include "endstops.h" -#include "planner.h" -#include "temperature.h" -#include "ultralcd.h" -#include "configuration_store.h" - -#if ENABLED(MESH_BED_LEVELING) - #include "mesh_bed_leveling.h" -#endif - -uint16_t eeprom_checksum; -const char version[4] = EEPROM_VERSION; - -void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) { - uint8_t c; - while (size--) { - eeprom_write_byte((unsigned char*)pos, *value); - c = eeprom_read_byte((unsigned char*)pos); - if (c != *value) { - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE); - } - eeprom_checksum += c; - pos++; - value++; - }; -} -void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) { - do { - uint8_t c = eeprom_read_byte((unsigned char*)pos); - *value = c; - eeprom_checksum += c; - pos++; - value++; - } while (--size); -} - -/** - * Post-process after Retrieve or Reset - */ -void Config_Postprocess() { - // steps per s2 needs to be updated to agree with units per s2 - planner.reset_acceleration_rates(); - - // Make sure delta kinematics are updated before refreshing the - // planner position so the stepper counts will be set correctly. - #if ENABLED(DELTA) - recalc_delta_settings(delta_radius, delta_diagonal_rod); - #endif - - // Refresh steps_to_mm with the reciprocal of axis_steps_per_mm - // and init stepper.count[], planner.position[] with current_position - planner.refresh_positioning(); - - #if ENABLED(PIDTEMP) - thermalManager.updatePID(); - #endif - - calculate_volumetric_multipliers(); -} - -#if ENABLED(EEPROM_SETTINGS) - - #define DUMMY_PID_VALUE 3000.0f - #define EEPROM_START() int eeprom_index = EEPROM_OFFSET - #define EEPROM_SKIP(VAR) eeprom_index += sizeof(VAR) - #define EEPROM_WRITE(VAR) _EEPROM_writeData(eeprom_index, (uint8_t*)&VAR, sizeof(VAR)) - #define EEPROM_READ(VAR) _EEPROM_readData(eeprom_index, (uint8_t*)&VAR, sizeof(VAR)) - -/** - * M500 - Store Configuration - */ -void Config_StoreSettings() { - float dummy = 0.0f; - char ver[4] = "000"; - - EEPROM_START(); - - EEPROM_WRITE(ver); // invalidate data first - EEPROM_SKIP(eeprom_checksum); // Skip the checksum slot - - eeprom_checksum = 0; // clear before first "real data" - - EEPROM_WRITE(planner.axis_steps_per_mm); - EEPROM_WRITE(planner.max_feedrate_mm_s); - EEPROM_WRITE(planner.max_acceleration_mm_per_s2); - EEPROM_WRITE(planner.acceleration); - EEPROM_WRITE(planner.retract_acceleration); - EEPROM_WRITE(planner.travel_acceleration); - EEPROM_WRITE(planner.min_feedrate_mm_s); - EEPROM_WRITE(planner.min_travel_feedrate_mm_s); - EEPROM_WRITE(planner.min_segment_time); - EEPROM_WRITE(planner.max_xy_jerk); - EEPROM_WRITE(planner.max_z_jerk); - EEPROM_WRITE(planner.max_e_jerk); - EEPROM_WRITE(home_offset); - - #if ENABLED(MESH_BED_LEVELING) - // Compile time test that sizeof(mbl.z_values) is as expected - typedef char c_assert[(sizeof(mbl.z_values) == (MESH_NUM_X_POINTS) * (MESH_NUM_Y_POINTS) * sizeof(dummy)) ? 1 : -1]; - uint8_t mesh_num_x = MESH_NUM_X_POINTS, - mesh_num_y = MESH_NUM_Y_POINTS, - dummy_uint8 = mbl.status & _BV(MBL_STATUS_HAS_MESH_BIT); - EEPROM_WRITE(dummy_uint8); - EEPROM_WRITE(mbl.z_offset); - EEPROM_WRITE(mesh_num_x); - EEPROM_WRITE(mesh_num_y); - EEPROM_WRITE(mbl.z_values); - #else - // For disabled MBL write a default mesh - uint8_t mesh_num_x = 3, - mesh_num_y = 3, - dummy_uint8 = 0; - dummy = 0.0f; - EEPROM_WRITE(dummy_uint8); - EEPROM_WRITE(dummy); - EEPROM_WRITE(mesh_num_x); - EEPROM_WRITE(mesh_num_y); - for (uint8_t q = 0; q < mesh_num_x * mesh_num_y; q++) EEPROM_WRITE(dummy); - #endif // MESH_BED_LEVELING - - #if !HAS_BED_PROBE - float zprobe_zoffset = 0; - #endif - EEPROM_WRITE(zprobe_zoffset); - - // 9 floats for DELTA / Z_DUAL_ENDSTOPS - #if ENABLED(DELTA) - EEPROM_WRITE(endstop_adj); // 3 floats - EEPROM_WRITE(delta_radius); // 1 float - EEPROM_WRITE(delta_diagonal_rod); // 1 float - EEPROM_WRITE(delta_segments_per_second); // 1 float - EEPROM_WRITE(delta_diagonal_rod_trim_tower_1); // 1 float - EEPROM_WRITE(delta_diagonal_rod_trim_tower_2); // 1 float - EEPROM_WRITE(delta_diagonal_rod_trim_tower_3); // 1 float - #elif ENABLED(Z_DUAL_ENDSTOPS) - EEPROM_WRITE(z_endstop_adj); // 1 float - dummy = 0.0f; - for (uint8_t q = 8; q--;) EEPROM_WRITE(dummy); - #else - dummy = 0.0f; - for (uint8_t q = 9; q--;) EEPROM_WRITE(dummy); - #endif - - #if DISABLED(ULTIPANEL) - int preheatHotendTemp1 = PREHEAT_1_TEMP_HOTEND, preheatBedTemp1 = PREHEAT_1_TEMP_BED, preheatFanSpeed1 = PREHEAT_1_FAN_SPEED, - preheatHotendTemp2 = PREHEAT_2_TEMP_HOTEND, preheatBedTemp2 = PREHEAT_2_TEMP_BED, preheatFanSpeed2 = PREHEAT_2_FAN_SPEED; - #endif // !ULTIPANEL - - EEPROM_WRITE(preheatHotendTemp1); - EEPROM_WRITE(preheatBedTemp1); - EEPROM_WRITE(preheatFanSpeed1); - EEPROM_WRITE(preheatHotendTemp2); - EEPROM_WRITE(preheatBedTemp2); - EEPROM_WRITE(preheatFanSpeed2); - - for (uint8_t e = 0; e < MAX_EXTRUDERS; e++) { - - #if ENABLED(PIDTEMP) - if (e < HOTENDS) { - EEPROM_WRITE(PID_PARAM(Kp, e)); - EEPROM_WRITE(PID_PARAM(Ki, e)); - EEPROM_WRITE(PID_PARAM(Kd, e)); - #if ENABLED(PID_EXTRUSION_SCALING) - EEPROM_WRITE(PID_PARAM(Kc, e)); - #else - dummy = 1.0f; // 1.0 = default kc - EEPROM_WRITE(dummy); - #endif - } - else - #endif // !PIDTEMP - { - dummy = DUMMY_PID_VALUE; // When read, will not change the existing value - EEPROM_WRITE(dummy); // Kp - dummy = 0.0f; - for (uint8_t q = 3; q--;) EEPROM_WRITE(dummy); // Ki, Kd, Kc - } - - } // Hotends Loop - - #if DISABLED(PID_EXTRUSION_SCALING) - int lpq_len = 20; - #endif - EEPROM_WRITE(lpq_len); - - #if DISABLED(PIDTEMPBED) - dummy = DUMMY_PID_VALUE; - for (uint8_t q = 3; q--;) EEPROM_WRITE(dummy); - #else - EEPROM_WRITE(thermalManager.bedKp); - EEPROM_WRITE(thermalManager.bedKi); - EEPROM_WRITE(thermalManager.bedKd); - #endif - - #if !HAS_LCD_CONTRAST - const int lcd_contrast = 32; - #endif - EEPROM_WRITE(lcd_contrast); - - #if ENABLED(SCARA) - EEPROM_WRITE(axis_scaling); // 3 floats - #else - dummy = 1.0f; - EEPROM_WRITE(dummy); - #endif - - #if ENABLED(FWRETRACT) - EEPROM_WRITE(autoretract_enabled); - EEPROM_WRITE(retract_length); - #if EXTRUDERS > 1 - EEPROM_WRITE(retract_length_swap); - #else - dummy = 0.0f; - EEPROM_WRITE(dummy); - #endif - EEPROM_WRITE(retract_feedrate_mm_s); - EEPROM_WRITE(retract_zlift); - EEPROM_WRITE(retract_recover_length); - #if EXTRUDERS > 1 - EEPROM_WRITE(retract_recover_length_swap); - #else - dummy = 0.0f; - EEPROM_WRITE(dummy); - #endif - EEPROM_WRITE(retract_recover_feedrate_mm_s); - #endif // FWRETRACT - - EEPROM_WRITE(volumetric_enabled); - - // Save filament sizes - for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) { - if (q < COUNT(filament_size)) dummy = filament_size[q]; - EEPROM_WRITE(dummy); - } - - uint16_t final_checksum = eeprom_checksum, - eeprom_size = eeprom_index; - - eeprom_index = EEPROM_OFFSET; - EEPROM_WRITE(version); - EEPROM_WRITE(final_checksum); - - // Report storage size - SERIAL_ECHO_START; - SERIAL_ECHOPAIR("Settings Stored (", eeprom_size); - SERIAL_ECHOLNPGM(" bytes)"); -} - -/** - * M501 - Retrieve Configuration - */ -void Config_RetrieveSettings() { - - EEPROM_START(); - - char stored_ver[4]; - EEPROM_READ(stored_ver); - - uint16_t stored_checksum; - EEPROM_READ(stored_checksum); - - // SERIAL_ECHOPAIR("Version: [", ver); - // SERIAL_ECHOPAIR("] Stored version: [", stored_ver); - // SERIAL_ECHOLNPGM("]"); - - if (strncmp(version, stored_ver, 3) != 0) { - Config_ResetDefault(); - } - else { - float dummy = 0; - - eeprom_checksum = 0; // clear before reading first "real data" - - // version number match - EEPROM_READ(planner.axis_steps_per_mm); - EEPROM_READ(planner.max_feedrate_mm_s); - EEPROM_READ(planner.max_acceleration_mm_per_s2); - - EEPROM_READ(planner.acceleration); - EEPROM_READ(planner.retract_acceleration); - EEPROM_READ(planner.travel_acceleration); - EEPROM_READ(planner.min_feedrate_mm_s); - EEPROM_READ(planner.min_travel_feedrate_mm_s); - EEPROM_READ(planner.min_segment_time); - EEPROM_READ(planner.max_xy_jerk); - EEPROM_READ(planner.max_z_jerk); - EEPROM_READ(planner.max_e_jerk); - EEPROM_READ(home_offset); - - uint8_t dummy_uint8 = 0, mesh_num_x = 0, mesh_num_y = 0; - EEPROM_READ(dummy_uint8); - EEPROM_READ(dummy); - EEPROM_READ(mesh_num_x); - EEPROM_READ(mesh_num_y); - #if ENABLED(MESH_BED_LEVELING) - mbl.status = dummy_uint8; - mbl.z_offset = dummy; - if (mesh_num_x == MESH_NUM_X_POINTS && mesh_num_y == MESH_NUM_Y_POINTS) { - // EEPROM data fits the current mesh - EEPROM_READ(mbl.z_values); - } - else { - // EEPROM data is stale - mbl.reset(); - for (uint8_t q = 0; q < mesh_num_x * mesh_num_y; q++) EEPROM_READ(dummy); - } - #else - // MBL is disabled - skip the stored data - for (uint8_t q = 0; q < mesh_num_x * mesh_num_y; q++) EEPROM_READ(dummy); - #endif // MESH_BED_LEVELING - - #if !HAS_BED_PROBE - float zprobe_zoffset = 0; - #endif - EEPROM_READ(zprobe_zoffset); - - #if ENABLED(DELTA) - EEPROM_READ(endstop_adj); // 3 floats - EEPROM_READ(delta_radius); // 1 float - EEPROM_READ(delta_diagonal_rod); // 1 float - EEPROM_READ(delta_segments_per_second); // 1 float - EEPROM_READ(delta_diagonal_rod_trim_tower_1); // 1 float - EEPROM_READ(delta_diagonal_rod_trim_tower_2); // 1 float - EEPROM_READ(delta_diagonal_rod_trim_tower_3); // 1 float - #elif ENABLED(Z_DUAL_ENDSTOPS) - EEPROM_READ(z_endstop_adj); - dummy = 0.0f; - for (uint8_t q=8; q--;) EEPROM_READ(dummy); - #else - dummy = 0.0f; - for (uint8_t q=9; q--;) EEPROM_READ(dummy); - #endif - - #if DISABLED(ULTIPANEL) - int preheatHotendTemp1, preheatBedTemp1, preheatFanSpeed1, - preheatHotendTemp2, preheatBedTemp2, preheatFanSpeed2; - #endif - - EEPROM_READ(preheatHotendTemp1); - EEPROM_READ(preheatBedTemp1); - EEPROM_READ(preheatFanSpeed1); - EEPROM_READ(preheatHotendTemp2); - EEPROM_READ(preheatBedTemp2); - EEPROM_READ(preheatFanSpeed2); - - #if ENABLED(PIDTEMP) - for (uint8_t e = 0; e < MAX_EXTRUDERS; e++) { - EEPROM_READ(dummy); // Kp - if (e < HOTENDS && dummy != DUMMY_PID_VALUE) { - // do not need to scale PID values as the values in EEPROM are already scaled - PID_PARAM(Kp, e) = dummy; - EEPROM_READ(PID_PARAM(Ki, e)); - EEPROM_READ(PID_PARAM(Kd, e)); - #if ENABLED(PID_EXTRUSION_SCALING) - EEPROM_READ(PID_PARAM(Kc, e)); - #else - EEPROM_READ(dummy); - #endif - } - else { - for (uint8_t q=3; q--;) EEPROM_READ(dummy); // Ki, Kd, Kc - } - } - #else // !PIDTEMP - // 4 x 4 = 16 slots for PID parameters - for (uint8_t q = MAX_EXTRUDERS * 4; q--;) EEPROM_READ(dummy); // Kp, Ki, Kd, Kc - #endif // !PIDTEMP - - #if DISABLED(PID_EXTRUSION_SCALING) - int lpq_len; - #endif - EEPROM_READ(lpq_len); - - #if ENABLED(PIDTEMPBED) - EEPROM_READ(dummy); // bedKp - if (dummy != DUMMY_PID_VALUE) { - thermalManager.bedKp = dummy; - EEPROM_READ(thermalManager.bedKi); - EEPROM_READ(thermalManager.bedKd); - } - #else - for (uint8_t q=3; q--;) EEPROM_READ(dummy); // bedKp, bedKi, bedKd - #endif - - #if !HAS_LCD_CONTRAST - int lcd_contrast; - #endif - EEPROM_READ(lcd_contrast); - - #if ENABLED(SCARA) - EEPROM_READ(axis_scaling); // 3 floats - #else - EEPROM_READ(dummy); - #endif - - #if ENABLED(FWRETRACT) - EEPROM_READ(autoretract_enabled); - EEPROM_READ(retract_length); - #if EXTRUDERS > 1 - EEPROM_READ(retract_length_swap); - #else - EEPROM_READ(dummy); - #endif - EEPROM_READ(retract_feedrate_mm_s); - EEPROM_READ(retract_zlift); - EEPROM_READ(retract_recover_length); - #if EXTRUDERS > 1 - EEPROM_READ(retract_recover_length_swap); - #else - EEPROM_READ(dummy); - #endif - EEPROM_READ(retract_recover_feedrate_mm_s); - #endif // FWRETRACT - - EEPROM_READ(volumetric_enabled); - - for (uint8_t q = 0; q < MAX_EXTRUDERS; q++) { - EEPROM_READ(dummy); - if (q < COUNT(filament_size)) filament_size[q] = dummy; - } - - if (eeprom_checksum == stored_checksum) { - Config_Postprocess(); - SERIAL_ECHO_START; - SERIAL_ECHO(version); - SERIAL_ECHOPAIR(" stored settings retrieved (", eeprom_index); - SERIAL_ECHOLNPGM(" bytes)"); - } - else { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM("EEPROM checksum mismatch"); - Config_ResetDefault(); - } - } - - #if ENABLED(EEPROM_CHITCHAT) - Config_PrintSettings(); - #endif -} - -#endif // EEPROM_SETTINGS - -/** - * M502 - Reset Configuration - */ -void Config_ResetDefault() { - float tmp1[] = DEFAULT_AXIS_STEPS_PER_UNIT; - float tmp2[] = DEFAULT_MAX_FEEDRATE; - long tmp3[] = DEFAULT_MAX_ACCELERATION; - LOOP_XYZE(i) { - planner.axis_steps_per_mm[i] = tmp1[i]; - planner.max_feedrate_mm_s[i] = tmp2[i]; - planner.max_acceleration_mm_per_s2[i] = tmp3[i]; - #if ENABLED(SCARA) - if (i < COUNT(axis_scaling)) - axis_scaling[i] = 1; - #endif - } - - planner.acceleration = DEFAULT_ACCELERATION; - planner.retract_acceleration = DEFAULT_RETRACT_ACCELERATION; - planner.travel_acceleration = DEFAULT_TRAVEL_ACCELERATION; - planner.min_feedrate_mm_s = DEFAULT_MINIMUMFEEDRATE; - planner.min_segment_time = DEFAULT_MINSEGMENTTIME; - planner.min_travel_feedrate_mm_s = DEFAULT_MINTRAVELFEEDRATE; - planner.max_xy_jerk = DEFAULT_XYJERK; - planner.max_z_jerk = DEFAULT_ZJERK; - planner.max_e_jerk = DEFAULT_EJERK; - home_offset[X_AXIS] = home_offset[Y_AXIS] = home_offset[Z_AXIS] = 0; - - #if ENABLED(MESH_BED_LEVELING) - mbl.reset(); - #endif - - #if HAS_BED_PROBE - zprobe_zoffset = Z_PROBE_OFFSET_FROM_EXTRUDER; - #endif - - #if ENABLED(DELTA) - endstop_adj[X_AXIS] = endstop_adj[Y_AXIS] = endstop_adj[Z_AXIS] = 0; - delta_radius = DELTA_RADIUS; - delta_diagonal_rod = DELTA_DIAGONAL_ROD; - delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND; - delta_diagonal_rod_trim_tower_1 = DELTA_DIAGONAL_ROD_TRIM_TOWER_1; - delta_diagonal_rod_trim_tower_2 = DELTA_DIAGONAL_ROD_TRIM_TOWER_2; - delta_diagonal_rod_trim_tower_3 = DELTA_DIAGONAL_ROD_TRIM_TOWER_3; - #elif ENABLED(Z_DUAL_ENDSTOPS) - z_endstop_adj = 0; - #endif - - #if ENABLED(ULTIPANEL) - preheatHotendTemp1 = PREHEAT_1_TEMP_HOTEND; - preheatBedTemp1 = PREHEAT_1_TEMP_BED; - preheatFanSpeed1 = PREHEAT_1_FAN_SPEED; - preheatHotendTemp2 = PREHEAT_2_TEMP_HOTEND; - preheatBedTemp2 = PREHEAT_2_TEMP_BED; - preheatFanSpeed2 = PREHEAT_2_FAN_SPEED; - #endif - - #if HAS_LCD_CONTRAST - lcd_contrast = DEFAULT_LCD_CONTRAST; - #endif - - #if ENABLED(PIDTEMP) - #if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1 - HOTEND_LOOP() - #else - int e = 0; UNUSED(e); // only need to write once - #endif - { - PID_PARAM(Kp, e) = DEFAULT_Kp; - PID_PARAM(Ki, e) = scalePID_i(DEFAULT_Ki); - PID_PARAM(Kd, e) = scalePID_d(DEFAULT_Kd); - #if ENABLED(PID_EXTRUSION_SCALING) - PID_PARAM(Kc, e) = DEFAULT_Kc; - #endif - } - #if ENABLED(PID_EXTRUSION_SCALING) - lpq_len = 20; // default last-position-queue size - #endif - #endif // PIDTEMP - - #if ENABLED(PIDTEMPBED) - thermalManager.bedKp = DEFAULT_bedKp; - thermalManager.bedKi = scalePID_i(DEFAULT_bedKi); - thermalManager.bedKd = scalePID_d(DEFAULT_bedKd); - #endif - - #if ENABLED(FWRETRACT) - autoretract_enabled = false; - retract_length = RETRACT_LENGTH; - #if EXTRUDERS > 1 - retract_length_swap = RETRACT_LENGTH_SWAP; - #endif - retract_feedrate_mm_s = RETRACT_FEEDRATE; - retract_zlift = RETRACT_ZLIFT; - retract_recover_length = RETRACT_RECOVER_LENGTH; - #if EXTRUDERS > 1 - retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP; - #endif - retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE; - #endif - - volumetric_enabled = false; - for (uint8_t q = 0; q < COUNT(filament_size); q++) - filament_size[q] = DEFAULT_NOMINAL_FILAMENT_DIA; - - endstops.enable_globally( - #if ENABLED(ENDSTOPS_ALWAYS_ON_DEFAULT) - (true) - #else - (false) - #endif - ); - - Config_Postprocess(); - - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded"); -} - -#if DISABLED(DISABLE_M503) - -#define CONFIG_ECHO_START do{ if (!forReplay) SERIAL_ECHO_START; }while(0) - -/** - * M503 - Print Configuration - */ -void Config_PrintSettings(bool forReplay) { - // Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown - - CONFIG_ECHO_START; - - if (!forReplay) { - SERIAL_ECHOLNPGM("Steps per unit:"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M92 X", planner.axis_steps_per_mm[X_AXIS]); - SERIAL_ECHOPAIR(" Y", planner.axis_steps_per_mm[Y_AXIS]); - SERIAL_ECHOPAIR(" Z", planner.axis_steps_per_mm[Z_AXIS]); - SERIAL_ECHOPAIR(" E", planner.axis_steps_per_mm[E_AXIS]); - SERIAL_EOL; - - CONFIG_ECHO_START; - - #if ENABLED(SCARA) - if (!forReplay) { - SERIAL_ECHOLNPGM("Scaling factors:"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M365 X", axis_scaling[X_AXIS]); - SERIAL_ECHOPAIR(" Y", axis_scaling[Y_AXIS]); - SERIAL_ECHOPAIR(" Z", axis_scaling[Z_AXIS]); - SERIAL_EOL; - CONFIG_ECHO_START; - #endif // SCARA - - if (!forReplay) { - SERIAL_ECHOLNPGM("Maximum feedrates (mm/s):"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M203 X", planner.max_feedrate_mm_s[X_AXIS]); - SERIAL_ECHOPAIR(" Y", planner.max_feedrate_mm_s[Y_AXIS]); - SERIAL_ECHOPAIR(" Z", planner.max_feedrate_mm_s[Z_AXIS]); - SERIAL_ECHOPAIR(" E", planner.max_feedrate_mm_s[E_AXIS]); - SERIAL_EOL; - - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Maximum Acceleration (mm/s2):"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M201 X", planner.max_acceleration_mm_per_s2[X_AXIS]); - SERIAL_ECHOPAIR(" Y", planner.max_acceleration_mm_per_s2[Y_AXIS]); - SERIAL_ECHOPAIR(" Z", planner.max_acceleration_mm_per_s2[Z_AXIS]); - SERIAL_ECHOPAIR(" E", planner.max_acceleration_mm_per_s2[E_AXIS]); - SERIAL_EOL; - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Accelerations: P=printing, R=retract and T=travel"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M204 P", planner.acceleration); - SERIAL_ECHOPAIR(" R", planner.retract_acceleration); - SERIAL_ECHOPAIR(" T", planner.travel_acceleration); - SERIAL_EOL; - - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M205 S", planner.min_feedrate_mm_s); - SERIAL_ECHOPAIR(" T", planner.min_travel_feedrate_mm_s); - SERIAL_ECHOPAIR(" B", planner.min_segment_time); - SERIAL_ECHOPAIR(" X", planner.max_xy_jerk); - SERIAL_ECHOPAIR(" Z", planner.max_z_jerk); - SERIAL_ECHOPAIR(" E", planner.max_e_jerk); - SERIAL_EOL; - - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Home offset (mm)"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M206 X", home_offset[X_AXIS]); - SERIAL_ECHOPAIR(" Y", home_offset[Y_AXIS]); - SERIAL_ECHOPAIR(" Z", home_offset[Z_AXIS]); - SERIAL_EOL; - - #if ENABLED(MESH_BED_LEVELING) - if (!forReplay) { - SERIAL_ECHOLNPGM("Mesh bed leveling:"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M420 S", mbl.has_mesh() ? 1 : 0); - SERIAL_ECHOPAIR(" X", MESH_NUM_X_POINTS); - SERIAL_ECHOPAIR(" Y", MESH_NUM_Y_POINTS); - SERIAL_EOL; - for (uint8_t py = 1; py <= MESH_NUM_Y_POINTS; py++) { - for (uint8_t px = 1; px <= MESH_NUM_X_POINTS; px++) { - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" G29 S3 X", px); - SERIAL_ECHOPAIR(" Y", py); - SERIAL_ECHOPGM(" Z"); - SERIAL_PROTOCOL_F(mbl.z_values[py-1][px-1], 5); - SERIAL_EOL; - } - } - #endif - - #if ENABLED(DELTA) - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Endstop adjustment (mm):"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M666 X", endstop_adj[X_AXIS]); - SERIAL_ECHOPAIR(" Y", endstop_adj[Y_AXIS]); - SERIAL_ECHOPAIR(" Z", endstop_adj[Z_AXIS]); - SERIAL_EOL; - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Delta settings: L=diagonal_rod, R=radius, S=segments_per_second, ABC=diagonal_rod_trim_tower_[123]"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M665 L", delta_diagonal_rod); - SERIAL_ECHOPAIR(" R", delta_radius); - SERIAL_ECHOPAIR(" S", delta_segments_per_second); - SERIAL_ECHOPAIR(" A", delta_diagonal_rod_trim_tower_1); - SERIAL_ECHOPAIR(" B", delta_diagonal_rod_trim_tower_2); - SERIAL_ECHOPAIR(" C", delta_diagonal_rod_trim_tower_3); - SERIAL_EOL; - #elif ENABLED(Z_DUAL_ENDSTOPS) - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Z2 Endstop adjustment (mm):"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M666 Z", z_endstop_adj); - SERIAL_EOL; - #endif // DELTA - - #if ENABLED(ULTIPANEL) - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Material heatup parameters:"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M145 S0 H", preheatHotendTemp1); - SERIAL_ECHOPAIR(" B", preheatBedTemp1); - SERIAL_ECHOPAIR(" F", preheatFanSpeed1); - SERIAL_EOL; - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M145 S1 H", preheatHotendTemp2); - SERIAL_ECHOPAIR(" B", preheatBedTemp2); - SERIAL_ECHOPAIR(" F", preheatFanSpeed2); - SERIAL_EOL; - #endif // ULTIPANEL - - #if HAS_PID_HEATING - - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("PID settings:"); - } - #if ENABLED(PIDTEMP) - #if HOTENDS > 1 - if (forReplay) { - HOTEND_LOOP() { - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M301 E", e); - SERIAL_ECHOPAIR(" P", PID_PARAM(Kp, e)); - SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, e))); - SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, e))); - #if ENABLED(PID_EXTRUSION_SCALING) - SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, e)); - if (e == 0) SERIAL_ECHOPAIR(" L", lpq_len); - #endif - SERIAL_EOL; - } - } - else - #endif // HOTENDS > 1 - // !forReplay || HOTENDS == 1 - { - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M301 P", PID_PARAM(Kp, 0)); // for compatibility with hosts, only echo values for E0 - SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, 0))); - SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0))); - #if ENABLED(PID_EXTRUSION_SCALING) - SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, 0)); - SERIAL_ECHOPAIR(" L", lpq_len); - #endif - SERIAL_EOL; - } - #endif // PIDTEMP - - #if ENABLED(PIDTEMPBED) - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M304 P", thermalManager.bedKp); - SERIAL_ECHOPAIR(" I", unscalePID_i(thermalManager.bedKi)); - SERIAL_ECHOPAIR(" D", unscalePID_d(thermalManager.bedKd)); - SERIAL_EOL; - #endif - - #endif // PIDTEMP || PIDTEMPBED - - #if HAS_LCD_CONTRAST - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("LCD Contrast:"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M250 C", lcd_contrast); - SERIAL_EOL; - #endif - - #if ENABLED(FWRETRACT) - - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M207 S", retract_length); - #if EXTRUDERS > 1 - SERIAL_ECHOPAIR(" W", retract_length_swap); - #endif - SERIAL_ECHOPAIR(" F", MMS_TO_MMM(retract_feedrate_mm_s)); - SERIAL_ECHOPAIR(" Z", retract_zlift); - SERIAL_EOL; - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Recover: S=Extra length (mm) F:Speed (mm/m)"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M208 S", retract_recover_length); - #if EXTRUDERS > 1 - SERIAL_ECHOPAIR(" W", retract_recover_length_swap); - #endif - SERIAL_ECHOPAIR(" F", MMS_TO_MMM(retract_recover_feedrate_mm_s)); - SERIAL_EOL; - CONFIG_ECHO_START; - if (!forReplay) { - SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries"); - CONFIG_ECHO_START; - } - SERIAL_ECHOPAIR(" M209 S", autoretract_enabled ? 1 : 0); - SERIAL_EOL; - - #endif // FWRETRACT - - /** - * Volumetric extrusion M200 - */ - if (!forReplay) { - CONFIG_ECHO_START; - SERIAL_ECHOPGM("Filament settings:"); - if (volumetric_enabled) - SERIAL_EOL; - else - SERIAL_ECHOLNPGM(" Disabled"); - } - - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M200 D", filament_size[0]); - SERIAL_EOL; - #if EXTRUDERS > 1 - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M200 T1 D", filament_size[1]); - SERIAL_EOL; - #if EXTRUDERS > 2 - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M200 T2 D", filament_size[2]); - SERIAL_EOL; - #if EXTRUDERS > 3 - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M200 T3 D", filament_size[3]); - SERIAL_EOL; - #endif - #endif - #endif - - if (!volumetric_enabled) { - CONFIG_ECHO_START; - SERIAL_ECHOLNPGM(" M200 D0"); - } - - /** - * Auto Bed Leveling - */ - #if HAS_BED_PROBE - if (!forReplay) { - CONFIG_ECHO_START; - SERIAL_ECHOLNPGM("Z-Probe Offset (mm):"); - } - CONFIG_ECHO_START; - SERIAL_ECHOPAIR(" M851 Z", zprobe_zoffset); - SERIAL_EOL; - #endif -} - -#endif // !DISABLE_M503 diff --git a/lib/Marlin/configuration_store.h b/lib/Marlin/configuration_store.h deleted file mode 100644 index 891f19f..0000000 --- a/lib/Marlin/configuration_store.h +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef CONFIGURATION_STORE_H -#define CONFIGURATION_STORE_H - -#include "MarlinConfig.h" - -void Config_ResetDefault(); - -#if DISABLED(DISABLE_M503) - void Config_PrintSettings(bool forReplay=false); -#else - FORCE_INLINE void Config_PrintSettings(bool forReplay=false) {} -#endif - -#if ENABLED(EEPROM_SETTINGS) - void Config_StoreSettings(); - void Config_RetrieveSettings(); -#else - FORCE_INLINE void Config_StoreSettings() {} - FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); } -#endif - -#endif //CONFIGURATION_STORE_H diff --git a/lib/Marlin/dac_mcp4728.cpp b/lib/Marlin/dac_mcp4728.cpp deleted file mode 100644 index 01e38ed..0000000 --- a/lib/Marlin/dac_mcp4728.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * mcp4728.cpp - Arduino library for MicroChip MCP4728 I2C D/A converter - * - * For implementation details, please take a look at the datasheet: - * http://ww1.microchip.com/downloads/en/DeviceDoc/22187a.pdf - * - * For discussion and feedback, please go to: - * http://arduino.cc/forum/index.php/topic,51842.0.html - */ - -#include "dac_mcp4728.h" - -#if ENABLED(DAC_STEPPER_CURRENT) - -uint16_t mcp4728_values[4]; - -/** - * Begin I2C, get current values (input register and eeprom) of mcp4728 - */ -void mcp4728_init() { - Wire.begin(); - Wire.requestFrom(int(DAC_DEV_ADDRESS), 24); - while(Wire.available()) { - int deviceID = Wire.read(); - int hiByte = Wire.read(); - int loByte = Wire.read(); - - int isEEPROM = (deviceID & 0B00001000) >> 3; - int channel = (deviceID & 0B00110000) >> 4; - if (isEEPROM != 1) { - mcp4728_values[channel] = word((hiByte & 0B00001111), loByte); - } - } -} - -/** - * Write input resister value to specified channel using fastwrite method. - * Channel : 0-3, Values : 0-4095 - */ -uint8_t mcp4728_analogWrite(uint8_t channel, uint16_t value) { - mcp4728_values[channel] = value; - return mcp4728_fastWrite(); -} -/** - * Write all input resistor values to EEPROM using SequencialWrite method. - * This will update both input register and EEPROM value - * This will also write current Vref, PowerDown, Gain settings to EEPROM - */ -uint8_t mcp4728_eepromWrite() { - Wire.beginTransmission(DAC_DEV_ADDRESS); - Wire.write(SEQWRITE); - for (uint8_t channel=0; channel <= 3; channel++) { - Wire.write(DAC_STEPPER_VREF << 7 | 0 << 5 | DAC_STEPPER_GAIN << 4 | highByte(mcp4728_values[channel])); - Wire.write(lowByte(mcp4728_values[channel])); - } - return Wire.endTransmission(); -} - -/** - * Write Voltage reference setting to all input regiters - */ -uint8_t mcp4728_setVref_all(uint8_t value) { - Wire.beginTransmission(DAC_DEV_ADDRESS); - Wire.write(VREFWRITE | value << 3 | value << 2 | value << 1 | value); - return Wire.endTransmission(); -} -/** - * Write Gain setting to all input regiters - */ -uint8_t mcp4728_setGain_all(uint8_t value) { - Wire.beginTransmission(DAC_DEV_ADDRESS); - Wire.write(GAINWRITE | value << 3 | value << 2 | value << 1 | value); - return Wire.endTransmission(); -} - -/** - * Return Input Regiter value - */ -uint16_t mcp4728_getValue(uint8_t channel) { return mcp4728_values[channel]; } - -/** - * Steph: Might be useful in the future - * Return Vout - * -uint16_t mcp4728_getVout(uint8_t channel) { - uint32_t vref = 2048; - uint32_t vOut = (vref * mcp4728_values[channel] * (_DAC_STEPPER_GAIN + 1)) / 4096; - if (vOut > defaultVDD) vOut = defaultVDD; - return vOut; -} -*/ - -/** - * FastWrite input register values - All DAC ouput update. refer to DATASHEET 5.6.1 - * DAC Input and PowerDown bits update. - * No EEPROM update - */ -uint8_t mcp4728_fastWrite() { - Wire.beginTransmission(DAC_DEV_ADDRESS); - for (uint8_t channel=0; channel <= 3; channel++) { - Wire.write(highByte(mcp4728_values[channel])); - Wire.write(lowByte(mcp4728_values[channel])); - } - return Wire.endTransmission(); -} - -/** - * Common function for simple general commands - */ -uint8_t mcp4728_simpleCommand(byte simpleCommand) { - Wire.beginTransmission(GENERALCALL); - Wire.write(simpleCommand); - return Wire.endTransmission(); -} - -#endif // DAC_STEPPER_CURRENT diff --git a/lib/Marlin/dac_mcp4728.h b/lib/Marlin/dac_mcp4728.h deleted file mode 100644 index c096c85..0000000 --- a/lib/Marlin/dac_mcp4728.h +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino library for MicroChip MCP4728 I2C D/A converter. - */ - -#ifndef mcp4728_h -#define mcp4728_h - -#include "MarlinConfig.h" - -#if ENABLED(DAC_STEPPER_CURRENT) -#include "Wire.h" - -#define defaultVDD 5000 -#define BASE_ADDR 0x60 -#define RESET 0B00000110 -#define WAKE 0B00001001 -#define UPDATE 0B00001000 -#define MULTIWRITE 0B01000000 -#define SINGLEWRITE 0B01011000 -#define SEQWRITE 0B01010000 -#define VREFWRITE 0B10000000 -#define GAINWRITE 0B11000000 -#define POWERDOWNWRITE 0B10100000 -#define GENERALCALL 0B00000000 -#define GAINWRITE 0B11000000 - -// This is taken from the original lib, makes it easy to edit if needed -// DAC_OR_ADDRESS defined in pins_BOARD.h file -#define DAC_DEV_ADDRESS (BASE_ADDR | DAC_OR_ADDRESS) - - -void mcp4728_init(); -uint8_t mcp4728_analogWrite(uint8_t channel, uint16_t value); -uint8_t mcp4728_eepromWrite(); -uint8_t mcp4728_setVref_all(uint8_t value); -uint8_t mcp4728_setGain_all(uint8_t value); -uint16_t mcp4728_getValue(uint8_t channel); -uint8_t mcp4728_fastWrite(); -uint8_t mcp4728_simpleCommand(byte simpleCommand); - -#endif -#endif - diff --git a/lib/Marlin/digipot_mcp4451.cpp b/lib/Marlin/digipot_mcp4451.cpp deleted file mode 100644 index c6a0191..0000000 --- a/lib/Marlin/digipot_mcp4451.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "MarlinConfig.h" - -#if ENABLED(DIGIPOT_I2C) - -#include "Stream.h" -#include "utility/twi.h" -#include "Wire.h" - -// Settings for the I2C based DIGIPOT (MCP4451) on Azteeg X3 Pro -#if MB(5DPRINT) - #define DIGIPOT_I2C_FACTOR 117.96 - #define DIGIPOT_I2C_MAX_CURRENT 1.736 -#else - #define DIGIPOT_I2C_FACTOR 106.7 - #define DIGIPOT_I2C_MAX_CURRENT 2.5 -#endif - -static byte current_to_wiper(float current) { - return byte(ceil(float((DIGIPOT_I2C_FACTOR * current)))); -} - -static void i2c_send(byte addr, byte a, byte b) { - Wire.beginTransmission(addr); - Wire.write(a); - Wire.write(b); - Wire.endTransmission(); -} - -// This is for the MCP4451 I2C based digipot -void digipot_i2c_set_current(int channel, float current) { - current = min((float) max(current, 0.0f), DIGIPOT_I2C_MAX_CURRENT); - // these addresses are specific to Azteeg X3 Pro, can be set to others, - // In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1 - byte addr = 0x2C; // channel 0-3 - if (channel >= 4) { - addr = 0x2E; // channel 4-7 - channel -= 4; - } - - // Initial setup - i2c_send(addr, 0x40, 0xff); - i2c_send(addr, 0xA0, 0xff); - - // Set actual wiper value - byte addresses[4] = { 0x00, 0x10, 0x60, 0x70 }; - i2c_send(addr, addresses[channel], current_to_wiper(current)); -} - -void digipot_i2c_init() { - const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS; - Wire.begin(); - // setup initial currents as defined in Configuration_adv.h - for (int i = 0; i < COUNT(digipot_motor_current); i++) - digipot_i2c_set_current(i, digipot_motor_current[i]); -} - -#endif //DIGIPOT_I2C diff --git a/lib/Marlin/dogm_bitmaps.h b/lib/Marlin/dogm_bitmaps.h deleted file mode 100644 index e020d24..0000000 --- a/lib/Marlin/dogm_bitmaps.h +++ /dev/null @@ -1,422 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Standard Marlin Bitmap for splashscreen - * - * You may use one of the following tools to generate the C++ bitmap array from - * a black and white image: - * - * - http://www.marlinfw.org/tools/u8glib/converter.html - * - http://www.digole.com/tools/PicturetoC_Hex_converter.php - * - * Please note that using the high-res version takes 402Bytes of PROGMEM. - */ - -//#define START_BMPHIGH - -#if ENABLED(SHOW_BOOTSCREEN) - #if ENABLED(START_BMPHIGH) - #define START_BMPWIDTH 112 - #define START_BMPHEIGHT 38 - #define START_BMPBYTEWIDTH 14 - #define START_BMPBYTES 532 // START_BMPWIDTH * START_BMPHEIGHT / 8 - - const unsigned char start_bmp[START_BMPBYTES] PROGMEM = { - 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, - 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3F, 0xFF, - 0xC0, 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x00, 0x1F, 0xFF, - 0xC0, 0x3F, 0xE1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x0F, 0xFF, - 0xC0, 0x7F, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x07, 0xFF, - 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xFF, - 0xC1, 0xF8, 0x7F, 0x87, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xFF, - 0xC1, 0xF0, 0x3F, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xFF, - 0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x00, 0x03, 0xE0, 0x78, 0x3C, 0x03, 0xF0, 0x7F, - 0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x7F, 0xC0, 0x0F, 0xF8, 0x78, 0x3C, 0x07, 0xFC, 0x3F, - 0xC1, 0xE0, 0x1E, 0x01, 0xE1, 0xFF, 0xE0, 0x1F, 0xFC, 0x78, 0x3C, 0x0F, 0xFE, 0x1F, - 0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xFF, 0xF0, 0x3F, 0xFE, 0x78, 0x3C, 0x1F, 0xFE, 0x0F, - 0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xF3, 0xF8, 0x3F, 0x3E, 0x78, 0x3C, 0x3F, 0x3F, 0x07, - 0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xE0, 0xFC, 0x7C, 0x1F, 0x78, 0x3C, 0x3E, 0x1F, 0x07, - 0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xC0, 0x7C, 0x7C, 0x0F, 0x78, 0x3C, 0x3C, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x7C, 0x78, 0x0F, 0x78, 0x3C, 0x3C, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0x80, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE7, 0xC0, 0x3C, 0x78, 0x00, 0x78, 0x3C, 0x3C, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xE0, 0x3C, 0x78, 0x00, 0x7C, 0x3C, 0x3C, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE3, 0xFF, 0x3F, 0xF8, 0x00, 0x7F, 0xBC, 0x3C, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE1, 0xFF, 0x3F, 0xF8, 0x00, 0x3F, 0xBF, 0xFC, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0xFF, 0x3F, 0xF8, 0x00, 0x1F, 0xBF, 0xFC, 0x0F, 0x03, - 0xC1, 0xE0, 0x1E, 0x01, 0xE0, 0x7F, 0x3F, 0xF8, 0x00, 0x0F, 0xBF, 0xFC, 0x0F, 0x03, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80 }; - #else - #define START_BMPWIDTH 56 - #define START_BMPHEIGHT 19 - #define START_BMPBYTEWIDTH 7 - #define START_BMPBYTES 133 // START_BMPWIDTH * START_BMPHEIGHT / 8 - - const unsigned char start_bmp[START_BMPBYTES] PROGMEM = { - 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, - 0x83, 0xCF, 0x00, 0x00, 0x0C, 0x30, 0x3F, - 0x87, 0xFF, 0x80, 0x00, 0x0C, 0x30, 0x1F, - 0x86, 0x79, 0x80, 0x00, 0x0C, 0x00, 0x0F, - 0x8C, 0x30, 0xC7, 0x83, 0x8C, 0x30, 0xE7, - 0x8C, 0x30, 0xCF, 0xC7, 0xCC, 0x31, 0xF3, - 0x8C, 0x30, 0xDC, 0xEC, 0xEC, 0x33, 0xB9, - 0x8C, 0x30, 0xD8, 0x6C, 0x6C, 0x33, 0x19, - 0x8C, 0x30, 0xD0, 0x6C, 0x0C, 0x33, 0x19, - 0x8C, 0x30, 0xD8, 0x6C, 0x0C, 0x33, 0x19, - 0x8C, 0x30, 0xDC, 0x6C, 0x0E, 0x3B, 0x19, - 0x8C, 0x30, 0xCF, 0x7C, 0x07, 0x9F, 0x19, - 0x8C, 0x30, 0xC7, 0x7C, 0x03, 0x8F, 0x19, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8 }; - #endif -#endif - -// Here comes a compile-time operation to match the extruder symbols -// on the info screen to the set number of extruders in configuration.h -// -// When only one extruder is selected, the "1" on the symbol will not -// be displayed. - -#if HAS_TEMP_BED - #if HOTENDS == 1 - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00 - }; - - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00 - }; - #elif HOTENDS == 2 - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20, - 0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20, - 0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20, - 0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20, - 0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0, - 0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0, - 0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20, - 0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60, - 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00 - }; - - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0, - 0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0, - 0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0, - 0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0, - 0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0, - 0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20, - 0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20, - 0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60, - 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00 - }; - #else - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20, - 0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20, - 0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x40, 0xF0, 0x20, - 0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x40, 0x60, 0x20, - 0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x82, 0x08, 0x00, 0x5E, 0x07, 0xA0, - 0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x01, 0x04, 0x10, 0x00, 0x5F, 0x0F, 0xA0, - 0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x01, 0x04, 0x10, 0x00, 0x4F, 0x0F, 0x20, - 0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x82, 0x08, 0x00, 0x47, 0x0E, 0x20, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x63, 0x0C, 0x60, - 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00 - }; - - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0, - 0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0, - 0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x20, 0x82, 0x00, 0x5E, 0xF7, 0xA0, - 0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x5C, 0x63, 0xA0, - 0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x82, 0x08, 0x00, 0x58, 0x01, 0xA0, - 0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x01, 0x04, 0x10, 0x00, 0x40, 0x60, 0x20, - 0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x01, 0x04, 0x10, 0x00, 0x40, 0xF0, 0x20, - 0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x82, 0x08, 0x00, 0x41, 0xF8, 0x20, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x41, 0x04, 0x00, 0x61, 0xF8, 0x60, - 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00 - }; - #endif // Extruders -#else - #if HOTENDS == 1 - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - #elif HOTENDS == 2 - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0, - 0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0, - 0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0, - 0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0, - 0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - #else - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x07, 0xA0, - 0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x0F, 0xA0, - 0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x0F, 0x20, - 0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0E, 0x20, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x0C, 0x60, - 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - #define STATUS_SCREENWIDTH 115 //Width in pixels - #define STATUS_SCREENHEIGHT 19 //Height in pixels - #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes - const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0, - 0xFB, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0, - 0xF3, 0xC0, 0x00, 0x76, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF7, 0xA0, - 0xEB, 0xC0, 0x00, 0x7E, 0xE0, 0x00, 0x7E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x63, 0xA0, - 0x7B, 0x80, 0x00, 0x3D, 0xC0, 0x00, 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xA0, - 0x7B, 0x80, 0x00, 0x3B, 0xC0, 0x00, 0x3E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, - 0xFB, 0xC0, 0x00, 0x77, 0xE0, 0x00, 0x76, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0xF0, 0x20, - 0xFB, 0xC0, 0x00, 0x70, 0xE0, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF8, 0x20, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x61, 0xF8, 0x60, - 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0, - 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - #endif // Extruders -#endif // HAS_TEMP_BED diff --git a/lib/Marlin/dogm_font_data_6x9_marlin.h b/lib/Marlin/dogm_font_data_6x9_marlin.h deleted file mode 100644 index f298a6a..0000000 --- a/lib/Marlin/dogm_font_data_6x9_marlin.h +++ /dev/null @@ -1,180 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: -Misc-Fixed-Medium-R-Normal--9-90-75-75-C-60-ISO10646-1 - Copyright: Public domain font. Share and enjoy. - Capital A Height: 6, '1' Height: 6 - Calculated Max Values w= 6 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 7 len= 9 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 - Pure Font ascent = 6 descent=-2 - X Font ascent = 6 descent=-2 - Max Font ascent = 7 descent=-2 -*/ -#include -const u8g_fntpgm_uint8_t u8g_font_6x9[2300] U8G_SECTION(".progmem.u8g_font_6x9") = { - 0, 6, 9, 0, 254, 6, 1, 137, 2, 254, 32, 255, 254, 7, 254, 6, - 254, 0, 0, 0, 6, 0, 7, 1, 6, 6, 6, 2, 0, 128, 128, 128, - 128, 0, 128, 3, 3, 3, 6, 1, 3, 160, 160, 160, 5, 7, 7, 6, - 0, 255, 80, 80, 248, 80, 248, 80, 80, 5, 9, 9, 6, 0, 254, 32, - 112, 168, 160, 112, 40, 168, 112, 32, 6, 8, 8, 6, 0, 255, 64, 168, - 72, 16, 32, 72, 84, 8, 5, 7, 7, 6, 0, 255, 96, 144, 144, 96, - 152, 144, 104, 1, 3, 3, 6, 2, 3, 128, 128, 128, 2, 7, 7, 6, - 2, 255, 64, 128, 128, 128, 128, 128, 64, 2, 7, 7, 6, 2, 255, 128, - 64, 64, 64, 64, 64, 128, 5, 5, 5, 6, 0, 0, 136, 80, 248, 80, - 136, 5, 5, 5, 6, 0, 0, 32, 32, 248, 32, 32, 2, 4, 4, 6, - 2, 254, 192, 64, 64, 128, 5, 1, 1, 6, 0, 2, 248, 2, 2, 2, - 6, 2, 0, 192, 192, 4, 6, 6, 6, 1, 0, 16, 16, 32, 64, 128, - 128, 4, 6, 6, 6, 1, 0, 96, 144, 144, 144, 144, 96, 3, 6, 6, - 6, 1, 0, 64, 192, 64, 64, 64, 224, 4, 6, 6, 6, 1, 0, 96, - 144, 16, 32, 64, 240, 4, 6, 6, 6, 1, 0, 240, 32, 96, 16, 16, - 224, 5, 6, 6, 6, 0, 0, 16, 48, 80, 144, 248, 16, 4, 6, 6, - 6, 1, 0, 240, 128, 224, 16, 16, 224, 4, 6, 6, 6, 1, 0, 96, - 128, 224, 144, 144, 96, 4, 6, 6, 6, 1, 0, 240, 16, 16, 32, 64, - 64, 4, 6, 6, 6, 1, 0, 96, 144, 96, 144, 144, 96, 4, 6, 6, - 6, 1, 0, 96, 144, 144, 112, 16, 96, 2, 5, 5, 6, 2, 0, 192, - 192, 0, 192, 192, 2, 7, 7, 6, 2, 254, 192, 192, 0, 192, 64, 64, - 128, 5, 5, 5, 6, 0, 0, 24, 96, 128, 96, 24, 5, 3, 3, 6, - 0, 1, 248, 0, 248, 5, 5, 5, 6, 0, 0, 192, 48, 8, 48, 192, - 4, 7, 7, 6, 1, 0, 96, 144, 16, 96, 64, 0, 64, 5, 6, 6, - 6, 0, 0, 112, 144, 168, 176, 128, 112, 5, 6, 6, 6, 0, 0, 32, - 80, 136, 248, 136, 136, 5, 6, 6, 6, 0, 0, 240, 136, 240, 136, 136, - 240, 4, 6, 6, 6, 1, 0, 96, 144, 128, 128, 144, 96, 4, 6, 6, - 6, 1, 0, 224, 144, 144, 144, 144, 224, 4, 6, 6, 6, 1, 0, 240, - 128, 224, 128, 128, 240, 4, 6, 6, 6, 1, 0, 240, 128, 224, 128, 128, - 128, 4, 6, 6, 6, 1, 0, 96, 144, 128, 176, 144, 96, 4, 6, 6, - 6, 1, 0, 144, 144, 240, 144, 144, 144, 3, 6, 6, 6, 1, 0, 224, - 64, 64, 64, 64, 224, 5, 6, 6, 6, 0, 0, 56, 16, 16, 16, 144, - 96, 4, 6, 6, 6, 1, 0, 144, 160, 192, 160, 144, 144, 4, 6, 6, - 6, 1, 0, 128, 128, 128, 128, 128, 240, 5, 6, 6, 6, 0, 0, 136, - 216, 168, 168, 136, 136, 4, 6, 6, 6, 1, 0, 144, 208, 176, 144, 144, - 144, 5, 6, 6, 6, 0, 0, 112, 136, 136, 136, 136, 112, 4, 6, 6, - 6, 1, 0, 224, 144, 144, 224, 128, 128, 4, 7, 7, 6, 1, 255, 96, - 144, 144, 208, 176, 96, 16, 4, 6, 6, 6, 1, 0, 224, 144, 144, 224, - 144, 144, 4, 6, 6, 6, 1, 0, 96, 144, 64, 32, 144, 96, 5, 6, - 6, 6, 0, 0, 248, 32, 32, 32, 32, 32, 4, 6, 6, 6, 1, 0, - 144, 144, 144, 144, 144, 96, 4, 6, 6, 6, 1, 0, 144, 144, 144, 240, - 96, 96, 5, 6, 6, 6, 0, 0, 136, 136, 168, 168, 216, 136, 5, 6, - 6, 6, 0, 0, 136, 80, 32, 32, 80, 136, 5, 6, 6, 6, 0, 0, - 136, 136, 80, 32, 32, 32, 4, 6, 6, 6, 1, 0, 240, 16, 32, 64, - 128, 240, 3, 6, 6, 6, 1, 0, 224, 128, 128, 128, 128, 224, 4, 6, - 6, 6, 1, 0, 128, 128, 64, 32, 16, 16, 3, 6, 6, 6, 1, 0, - 224, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 3, 32, 80, 136, 5, - 1, 1, 6, 0, 254, 248, 2, 2, 2, 6, 2, 4, 128, 64, 4, 4, - 4, 6, 1, 0, 112, 144, 144, 112, 4, 6, 6, 6, 1, 0, 128, 128, - 224, 144, 144, 224, 4, 4, 4, 6, 1, 0, 112, 128, 128, 112, 4, 6, - 6, 6, 1, 0, 16, 16, 112, 144, 144, 112, 4, 4, 4, 6, 1, 0, - 96, 176, 192, 112, 4, 6, 6, 6, 1, 0, 32, 80, 64, 224, 64, 64, - 4, 6, 6, 6, 1, 254, 96, 144, 144, 112, 16, 96, 4, 6, 6, 6, - 1, 0, 128, 128, 224, 144, 144, 144, 3, 6, 6, 6, 1, 0, 64, 0, - 192, 64, 64, 224, 3, 8, 8, 6, 1, 254, 32, 0, 96, 32, 32, 32, - 160, 64, 4, 6, 6, 6, 1, 0, 128, 128, 160, 192, 160, 144, 3, 6, - 6, 6, 1, 0, 192, 64, 64, 64, 64, 224, 5, 4, 4, 6, 0, 0, - 208, 168, 168, 136, 4, 4, 4, 6, 1, 0, 224, 144, 144, 144, 4, 4, - 4, 6, 1, 0, 96, 144, 144, 96, 4, 6, 6, 6, 1, 254, 224, 144, - 144, 224, 128, 128, 4, 6, 6, 6, 1, 254, 112, 144, 144, 112, 16, 16, - 4, 4, 4, 6, 1, 0, 160, 208, 128, 128, 4, 4, 4, 6, 1, 0, - 112, 192, 48, 224, 4, 6, 6, 6, 1, 0, 64, 64, 224, 64, 80, 32, - 4, 4, 4, 6, 1, 0, 144, 144, 144, 112, 4, 4, 4, 6, 1, 0, - 144, 144, 96, 96, 5, 4, 4, 6, 0, 0, 136, 168, 168, 80, 4, 4, - 4, 6, 1, 0, 144, 96, 96, 144, 4, 6, 6, 6, 1, 254, 144, 144, - 144, 112, 144, 96, 4, 4, 4, 6, 1, 0, 240, 32, 64, 240, 3, 7, - 7, 6, 1, 0, 32, 64, 64, 128, 64, 64, 32, 1, 7, 7, 6, 2, - 255, 128, 128, 128, 128, 128, 128, 128, 3, 7, 7, 6, 1, 0, 128, 64, - 64, 32, 64, 64, 128, 4, 2, 2, 6, 1, 3, 80, 160, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, - 0, 6, 0, 7, 1, 6, 6, 6, 2, 0, 128, 0, 128, 128, 128, 128, - 4, 6, 6, 6, 1, 255, 32, 112, 160, 160, 112, 32, 5, 7, 7, 6, - 0, 255, 48, 72, 64, 240, 64, 64, 248, 5, 5, 5, 6, 0, 0, 168, - 80, 136, 80, 168, 5, 6, 6, 6, 0, 0, 136, 80, 248, 32, 248, 32, - 1, 7, 7, 6, 2, 255, 128, 128, 128, 0, 128, 128, 128, 4, 7, 7, - 6, 1, 255, 112, 128, 96, 144, 96, 16, 224, 3, 1, 1, 6, 1, 5, - 160, 6, 7, 7, 6, 0, 0, 120, 132, 148, 164, 148, 132, 120, 3, 5, - 5, 6, 1, 1, 96, 160, 96, 0, 224, 5, 5, 5, 6, 0, 0, 40, - 80, 160, 80, 40, 4, 3, 3, 6, 1, 0, 240, 16, 16, 4, 1, 1, - 6, 1, 2, 240, 6, 7, 7, 6, 0, 0, 120, 132, 180, 164, 164, 132, - 120, 4, 1, 1, 6, 1, 5, 240, 4, 3, 3, 6, 1, 2, 96, 144, - 96, 5, 7, 7, 6, 0, 255, 32, 32, 248, 32, 32, 0, 248, 3, 5, - 5, 6, 1, 1, 64, 160, 32, 64, 224, 3, 5, 5, 6, 1, 1, 192, - 32, 64, 32, 192, 2, 2, 2, 6, 2, 4, 64, 128, 4, 5, 5, 6, - 1, 255, 144, 144, 176, 208, 128, 5, 6, 6, 6, 0, 0, 120, 232, 232, - 104, 40, 40, 1, 1, 1, 6, 2, 2, 128, 2, 2, 2, 6, 2, 254, - 64, 128, 3, 5, 5, 6, 1, 1, 64, 192, 64, 64, 224, 3, 5, 5, - 6, 1, 1, 64, 160, 64, 0, 224, 5, 5, 5, 6, 0, 0, 160, 80, - 40, 80, 160, 5, 8, 8, 6, 0, 255, 64, 192, 64, 80, 112, 48, 120, - 16, 5, 8, 8, 6, 0, 255, 64, 192, 64, 80, 104, 8, 16, 56, 5, - 8, 8, 6, 0, 255, 192, 32, 64, 48, 240, 48, 120, 16, 4, 7, 7, - 6, 1, 0, 32, 0, 32, 96, 128, 144, 96, 5, 7, 7, 6, 0, 0, - 64, 32, 32, 80, 112, 136, 136, 5, 7, 7, 6, 0, 0, 16, 32, 32, - 80, 112, 136, 136, 5, 7, 7, 6, 0, 0, 32, 80, 32, 80, 112, 136, - 136, 5, 7, 7, 6, 0, 0, 40, 80, 32, 80, 112, 136, 136, 5, 7, - 7, 6, 0, 0, 80, 0, 32, 80, 112, 136, 136, 5, 7, 7, 6, 0, - 0, 32, 80, 32, 80, 112, 136, 136, 5, 6, 6, 6, 0, 0, 120, 160, - 240, 160, 160, 184, 4, 8, 8, 6, 1, 254, 96, 144, 128, 128, 144, 96, - 32, 64, 4, 7, 7, 6, 1, 0, 64, 32, 240, 128, 224, 128, 240, 4, - 7, 7, 6, 1, 0, 32, 64, 240, 128, 224, 128, 240, 4, 7, 7, 6, - 1, 0, 32, 80, 240, 128, 224, 128, 240, 4, 7, 7, 6, 1, 0, 80, - 0, 240, 128, 224, 128, 240, 3, 7, 7, 6, 1, 0, 128, 64, 224, 64, - 64, 64, 224, 3, 7, 7, 6, 1, 0, 32, 64, 224, 64, 64, 64, 224, - 3, 7, 7, 6, 1, 0, 64, 160, 224, 64, 64, 64, 224, 3, 7, 7, - 6, 1, 0, 160, 0, 224, 64, 64, 64, 224, 5, 6, 6, 6, 0, 0, - 112, 72, 232, 72, 72, 112, 4, 7, 7, 6, 1, 0, 80, 160, 144, 208, - 176, 144, 144, 4, 7, 7, 6, 1, 0, 64, 32, 96, 144, 144, 144, 96, - 4, 7, 7, 6, 1, 0, 32, 64, 96, 144, 144, 144, 96, 4, 7, 7, - 6, 1, 0, 32, 80, 96, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, - 80, 160, 96, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 80, 0, 96, - 144, 144, 144, 96, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 4, - 8, 8, 6, 1, 255, 16, 112, 176, 176, 208, 208, 224, 128, 4, 7, 7, - 6, 1, 0, 64, 32, 144, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, - 32, 64, 144, 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 80, 144, - 144, 144, 144, 96, 4, 7, 7, 6, 1, 0, 80, 0, 144, 144, 144, 144, - 96, 5, 7, 7, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32, 4, 6, - 6, 6, 1, 0, 128, 224, 144, 144, 224, 128, 4, 6, 6, 6, 1, 0, - 96, 144, 160, 160, 144, 160, 4, 7, 7, 6, 1, 0, 64, 32, 0, 112, - 144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 64, 0, 112, 144, 144, 112, - 4, 7, 7, 6, 1, 0, 32, 80, 0, 112, 144, 144, 112, 4, 7, 7, - 6, 1, 0, 80, 160, 0, 112, 144, 144, 112, 4, 6, 6, 6, 1, 0, - 80, 0, 112, 144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 80, 32, 112, - 144, 144, 112, 5, 4, 4, 6, 0, 0, 112, 168, 176, 120, 4, 6, 6, - 6, 1, 254, 112, 128, 128, 112, 32, 64, 4, 7, 7, 6, 1, 0, 64, - 32, 0, 96, 176, 192, 112, 4, 7, 7, 6, 1, 0, 32, 64, 0, 96, - 176, 192, 112, 4, 7, 7, 6, 1, 0, 32, 80, 0, 96, 176, 192, 112, - 4, 6, 6, 6, 1, 0, 80, 0, 96, 176, 192, 112, 3, 7, 7, 6, - 1, 0, 128, 64, 0, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 32, - 64, 0, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 64, 160, 0, 192, - 64, 64, 224, 3, 6, 6, 6, 1, 0, 160, 0, 192, 64, 64, 224, 4, - 7, 7, 6, 1, 0, 48, 96, 16, 112, 144, 144, 96, 4, 7, 7, 6, - 1, 0, 80, 160, 0, 224, 144, 144, 144, 4, 7, 7, 6, 1, 0, 64, - 32, 0, 96, 144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 64, 0, 96, - 144, 144, 96, 4, 7, 7, 6, 1, 0, 32, 80, 0, 96, 144, 144, 96, - 4, 7, 7, 6, 1, 0, 80, 160, 0, 96, 144, 144, 96, 4, 6, 6, - 6, 1, 0, 80, 0, 96, 144, 144, 96, 5, 5, 5, 6, 0, 0, 32, - 0, 248, 0, 32, 4, 4, 4, 6, 1, 0, 112, 176, 208, 224, 4, 7, - 7, 6, 1, 0, 64, 32, 0, 144, 144, 144, 112, 4, 7, 7, 6, 1, - 0, 32, 64, 0, 144, 144, 144, 112, 4, 7, 7, 6, 1, 0, 32, 80, - 0, 144, 144, 144, 112, 4, 6, 6, 6, 1, 0, 80, 0, 144, 144, 144, - 112, 4, 9, 9, 6, 1, 254, 32, 64, 0, 144, 144, 144, 112, 144, 96, - 4, 8, 8, 6, 1, 254, 128, 128, 224, 144, 144, 224, 128, 128, 4, 8, - 8, 6, 1, 254, 80, 0, 144, 144, 144, 112, 144, 96 -}; diff --git a/lib/Marlin/dogm_font_data_HD44780_C.h b/lib/Marlin/dogm_font_data_HD44780_C.h deleted file mode 100644 index 21d4aaa..0000000 --- a/lib/Marlin/dogm_font_data_HD44780_C.h +++ /dev/null @@ -1,194 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: HD44780_C v1.2 - Copyright: A. Hardtung, public domain - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 8 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-1 - X Font ascent = 7 descent=-1 - Max Font ascent = 8 descent=-1 -*/ -#include -const u8g_fntpgm_uint8_t HD44780_C_5x7[2522] U8G_SECTION(".progmem.HD44780_C_5x7") = { - 0, 6, 9, 0, 254, 7, 1, 145, 3, 34, 32, 255, 255, 8, 255, 7, - 255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128, - 128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, - 0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, - 120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, - 64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, - 2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, - 64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, - 32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, - 5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, - 64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, - 192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, - 0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64, - 192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, - 128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, - 5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, - 6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, - 48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, - 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5, - 5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, - 192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, - 32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1, - 0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, - 8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7, - 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, - 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144, - 136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, - 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5, - 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6, - 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, - 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16, - 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136, - 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7, - 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, - 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136, - 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128, - 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7, - 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0, - 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32, - 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, - 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5, - 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6, - 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136, - 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, - 64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224, - 5, 7, 7, 6, 0, 0, 32, 112, 160, 160, 168, 112, 32, 3, 7, 7, - 6, 1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, - 32, 80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, - 128, 64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, - 6, 0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, - 112, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, - 136, 120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, - 6, 0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, - 112, 136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, - 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, - 3, 8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, - 7, 6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, - 0, 192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, - 168, 168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, - 5, 6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, - 136, 136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, - 8, 5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, - 0, 0, 112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, - 64, 64, 72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, - 5, 5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, - 136, 136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, - 5, 6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, - 0, 0, 248, 16, 32, 64, 248, 5, 5, 5, 6, 0, 2, 184, 168, 168, - 168, 184, 5, 5, 5, 6, 0, 2, 184, 136, 184, 160, 184, 5, 5, 5, - 6, 0, 2, 184, 160, 184, 136, 184, 5, 6, 6, 6, 0, 1, 8, 40, - 72, 248, 64, 32, 5, 5, 5, 6, 0, 0, 56, 112, 224, 136, 240, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5, - 7, 7, 6, 0, 0, 248, 136, 128, 240, 136, 136, 240, 5, 7, 7, 6, - 0, 0, 248, 136, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 80, - 0, 248, 128, 240, 128, 248, 5, 7, 7, 6, 0, 0, 168, 168, 168, 112, - 168, 168, 168, 5, 7, 7, 6, 0, 0, 240, 8, 8, 112, 8, 8, 240, - 5, 7, 7, 6, 0, 0, 136, 136, 152, 168, 200, 136, 136, 5, 8, 8, - 6, 0, 0, 80, 32, 136, 152, 168, 168, 200, 136, 5, 7, 7, 6, 0, - 0, 120, 40, 40, 40, 40, 168, 72, 5, 7, 7, 6, 0, 0, 248, 136, - 136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136, 136, 80, 32, - 64, 128, 5, 7, 7, 6, 0, 0, 32, 112, 168, 168, 168, 112, 32, 5, - 7, 7, 6, 0, 0, 136, 136, 136, 120, 8, 8, 8, 5, 7, 7, 6, - 0, 0, 168, 168, 168, 168, 168, 168, 248, 5, 7, 7, 6, 0, 0, 192, - 64, 64, 112, 72, 72, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 200, - 168, 168, 200, 5, 7, 7, 6, 0, 0, 112, 136, 8, 56, 8, 136, 112, - 5, 7, 7, 6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7, - 6, 0, 0, 120, 136, 136, 120, 40, 72, 136, 5, 7, 7, 6, 0, 0, - 24, 96, 128, 240, 136, 136, 112, 4, 5, 5, 6, 0, 0, 224, 144, 224, - 144, 224, 5, 5, 5, 6, 0, 0, 248, 136, 128, 128, 128, 5, 7, 7, - 6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 5, 5, 5, 6, 0, 0, - 168, 168, 112, 168, 168, 5, 5, 5, 6, 0, 0, 240, 8, 48, 8, 240, - 5, 5, 5, 6, 0, 0, 136, 152, 168, 200, 136, 5, 7, 7, 6, 0, - 0, 80, 32, 136, 152, 168, 200, 136, 4, 5, 5, 6, 0, 0, 144, 160, - 192, 160, 144, 5, 5, 5, 6, 0, 0, 248, 40, 40, 168, 72, 5, 5, - 5, 6, 0, 0, 136, 216, 168, 136, 136, 5, 5, 5, 6, 0, 0, 136, - 136, 248, 136, 136, 5, 5, 5, 6, 0, 0, 248, 136, 136, 136, 136, 5, - 5, 5, 6, 0, 0, 248, 32, 32, 32, 32, 5, 5, 5, 6, 0, 0, - 136, 136, 120, 8, 8, 5, 5, 5, 6, 0, 0, 168, 168, 168, 168, 248, - 5, 5, 5, 6, 0, 0, 192, 64, 112, 72, 112, 5, 5, 5, 6, 0, - 0, 136, 136, 200, 168, 200, 4, 5, 5, 6, 0, 0, 128, 128, 224, 144, - 224, 5, 5, 5, 6, 0, 0, 112, 136, 56, 136, 112, 5, 5, 5, 6, - 0, 0, 144, 168, 232, 168, 144, 5, 5, 5, 6, 0, 0, 120, 136, 120, - 40, 72, 5, 5, 5, 6, 0, 1, 32, 72, 144, 72, 32, 5, 5, 5, - 6, 0, 1, 32, 144, 72, 144, 32, 5, 3, 3, 6, 0, 0, 72, 144, - 216, 5, 3, 3, 6, 0, 4, 216, 72, 144, 5, 7, 7, 6, 0, 0, - 144, 208, 176, 144, 56, 40, 56, 5, 7, 7, 6, 0, 0, 32, 0, 32, - 64, 128, 136, 112, 5, 7, 7, 6, 0, 0, 24, 32, 32, 112, 32, 32, - 192, 5, 7, 7, 6, 0, 0, 32, 80, 64, 240, 64, 64, 120, 1, 2, - 2, 6, 2, 0, 128, 128, 1, 4, 4, 6, 2, 0, 128, 128, 128, 128, - 3, 5, 5, 6, 1, 0, 160, 160, 160, 0, 224, 3, 5, 5, 6, 1, - 0, 160, 160, 160, 0, 160, 5, 7, 7, 6, 0, 0, 160, 0, 232, 16, - 32, 64, 128, 5, 5, 5, 6, 0, 1, 216, 112, 32, 112, 216, 5, 7, - 7, 6, 0, 0, 160, 64, 168, 16, 32, 64, 128, 3, 6, 6, 6, 1, - 1, 224, 64, 64, 64, 64, 224, 5, 6, 6, 6, 0, 1, 248, 80, 80, - 80, 80, 248, 5, 7, 7, 6, 0, 0, 32, 112, 168, 32, 32, 32, 32, - 5, 7, 7, 6, 0, 0, 32, 32, 32, 32, 168, 112, 32, 5, 7, 7, - 6, 0, 0, 128, 144, 176, 248, 176, 144, 128, 5, 7, 7, 6, 0, 0, - 8, 72, 104, 248, 104, 72, 8, 5, 7, 7, 6, 0, 0, 128, 136, 168, - 248, 168, 136, 128, 5, 7, 7, 6, 0, 0, 128, 224, 136, 16, 32, 64, - 128, 2, 2, 2, 6, 2, 2, 192, 192, 5, 8, 8, 6, 0, 255, 120, - 40, 40, 40, 72, 136, 248, 136, 5, 8, 8, 6, 0, 255, 136, 136, 136, - 136, 136, 136, 248, 8, 5, 8, 8, 6, 0, 255, 168, 168, 168, 168, 168, - 168, 248, 8, 5, 6, 6, 6, 0, 255, 120, 40, 72, 136, 248, 136, 5, - 7, 7, 6, 0, 255, 32, 32, 112, 168, 168, 112, 32, 5, 6, 6, 6, - 0, 255, 136, 136, 136, 136, 248, 8, 5, 6, 6, 6, 0, 255, 168, 168, - 168, 168, 248, 8, 2, 2, 2, 6, 2, 6, 64, 128, 3, 1, 1, 6, - 1, 7, 160, 5, 2, 2, 6, 0, 6, 72, 176, 5, 8, 8, 6, 0, - 0, 16, 32, 0, 112, 136, 248, 128, 112, 5, 6, 6, 6, 0, 255, 112, - 128, 136, 112, 32, 96, 3, 7, 7, 6, 1, 0, 160, 0, 160, 160, 160, - 32, 192, 5, 6, 6, 6, 0, 1, 32, 112, 112, 112, 248, 32, 5, 5, - 5, 6, 0, 1, 80, 0, 136, 0, 80, 5, 5, 5, 6, 0, 1, 112, - 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 144, 168, 88, 184, 8, - 8, 5, 7, 7, 6, 0, 0, 136, 144, 184, 72, 184, 8, 56, 5, 7, - 7, 6, 0, 0, 136, 144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0, - 0, 192, 64, 192, 72, 216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 136, - 248, 136, 248, 136, 248, 136, 4, 5, 5, 6, 0, 2, 192, 0, 48, 0, - 96, 5, 8, 8, 6, 0, 0, 64, 160, 224, 168, 8, 40, 120, 32, 5, - 8, 8, 6, 0, 0, 64, 112, 64, 120, 64, 112, 64, 224, 5, 8, 8, - 6, 0, 0, 32, 112, 32, 248, 32, 112, 32, 112, 5, 7, 7, 6, 0, - 0, 104, 0, 232, 0, 104, 16, 56, 5, 8, 8, 6, 0, 0, 16, 112, - 16, 240, 16, 112, 16, 56, 5, 7, 7, 6, 0, 1, 32, 112, 32, 248, - 32, 112, 32, 5, 8, 8, 6, 0, 0, 16, 144, 80, 48, 80, 144, 16, - 56, 5, 8, 8, 6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 5, - 7, 7, 6, 0, 0, 120, 168, 168, 120, 40, 40, 40, 5, 8, 8, 6, - 0, 0, 248, 248, 248, 248, 248, 248, 248, 248 -}; diff --git a/lib/Marlin/dogm_font_data_HD44780_J.h b/lib/Marlin/dogm_font_data_HD44780_J.h deleted file mode 100644 index e4884c7..0000000 --- a/lib/Marlin/dogm_font_data_HD44780_J.h +++ /dev/null @@ -1,192 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: HD44780_J - Copyright: A. Hardtung, public domain - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 6 h=10 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 8 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-1 - X Font ascent = 7 descent=-1 - Max Font ascent = 8 descent=-2 -*/ -#include -const u8g_fntpgm_uint8_t HD44780_J_5x7[2492] U8G_SECTION(".progmem.HD44780_J_5x7") = { - 0, 6, 9, 0, 254, 7, 1, 145, 3, 34, 32, 255, 255, 8, 254, 7, - 255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128, - 128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, - 0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, - 120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, - 64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, - 2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, - 64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, - 32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, - 5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, - 64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, - 192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, - 0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64, - 192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, - 128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, - 5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, - 6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, - 48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, - 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5, - 5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, - 192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, - 32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1, - 0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, - 8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7, - 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, - 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144, - 136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, - 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5, - 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6, - 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, - 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16, - 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136, - 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7, - 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, - 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136, - 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128, - 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7, - 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0, - 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32, - 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, - 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5, - 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6, - 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136, - 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, - 64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224, - 5, 7, 7, 6, 0, 0, 136, 80, 248, 32, 248, 32, 32, 3, 7, 7, - 6, 1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, - 32, 80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, - 128, 64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, - 6, 0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, - 112, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, - 136, 120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, - 6, 0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, - 112, 136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, - 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, - 3, 8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, - 7, 6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, - 0, 192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, - 168, 168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, - 5, 6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, - 136, 136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, - 8, 5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, - 0, 0, 112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, - 64, 64, 72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, - 5, 5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, - 136, 136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, - 5, 6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, - 0, 0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, - 128, 64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, - 128, 3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 5, - 5, 6, 0, 1, 32, 16, 248, 16, 32, 5, 5, 5, 6, 0, 1, 32, - 64, 248, 64, 32, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 3, 3, 3, 6, 0, 0, - 224, 160, 224, 3, 4, 4, 6, 2, 3, 224, 128, 128, 128, 3, 4, 4, - 6, 0, 0, 32, 32, 32, 224, 3, 3, 3, 6, 0, 0, 128, 64, 32, - 2, 2, 2, 6, 1, 2, 192, 192, 5, 6, 6, 6, 0, 0, 248, 8, - 248, 8, 16, 32, 5, 5, 5, 6, 0, 0, 248, 8, 48, 32, 64, 4, - 5, 5, 6, 0, 0, 16, 32, 96, 160, 32, 5, 5, 5, 6, 0, 0, - 32, 248, 136, 8, 48, 5, 4, 4, 6, 0, 0, 248, 32, 32, 248, 5, - 5, 5, 6, 0, 0, 16, 248, 48, 80, 144, 5, 5, 5, 6, 0, 0, - 64, 248, 72, 80, 64, 5, 4, 4, 6, 0, 0, 112, 16, 16, 248, 4, - 5, 5, 6, 0, 0, 240, 16, 240, 16, 240, 5, 4, 4, 6, 0, 0, - 168, 168, 8, 48, 5, 1, 1, 6, 0, 3, 248, 5, 7, 7, 6, 0, - 0, 248, 8, 40, 48, 32, 32, 64, 5, 7, 7, 6, 0, 0, 8, 16, - 32, 96, 160, 32, 32, 5, 7, 7, 6, 0, 0, 32, 248, 136, 136, 8, - 16, 32, 5, 6, 6, 6, 0, 0, 248, 32, 32, 32, 32, 248, 5, 7, - 7, 6, 0, 0, 16, 248, 16, 48, 80, 144, 16, 5, 7, 7, 6, 0, - 0, 64, 248, 72, 72, 72, 72, 144, 5, 7, 7, 6, 0, 0, 32, 248, - 32, 248, 32, 32, 32, 5, 6, 6, 6, 0, 0, 120, 72, 136, 8, 16, - 96, 5, 7, 7, 6, 0, 0, 64, 120, 144, 16, 16, 16, 32, 5, 6, - 6, 6, 0, 0, 248, 8, 8, 8, 8, 248, 5, 7, 7, 6, 0, 0, - 80, 248, 80, 80, 16, 32, 64, 5, 6, 6, 6, 0, 0, 192, 8, 200, - 8, 16, 224, 5, 6, 6, 6, 0, 0, 248, 8, 16, 32, 80, 136, 5, - 7, 7, 6, 0, 0, 64, 248, 72, 80, 64, 64, 56, 5, 6, 6, 6, - 0, 0, 136, 136, 72, 8, 16, 96, 5, 6, 6, 6, 0, 0, 120, 72, - 168, 24, 16, 96, 5, 7, 7, 6, 0, 0, 16, 224, 32, 248, 32, 32, - 64, 5, 6, 6, 6, 0, 0, 168, 168, 168, 8, 16, 32, 5, 7, 7, - 6, 0, 0, 112, 0, 248, 32, 32, 32, 64, 3, 7, 7, 6, 1, 0, - 128, 128, 128, 192, 160, 128, 128, 5, 7, 7, 6, 0, 0, 32, 32, 248, - 32, 32, 64, 128, 5, 6, 6, 6, 0, 0, 112, 0, 0, 0, 0, 248, - 5, 6, 6, 6, 0, 0, 248, 8, 80, 32, 80, 128, 5, 7, 7, 6, - 0, 0, 32, 248, 16, 32, 112, 168, 32, 3, 7, 7, 6, 1, 0, 32, - 32, 32, 32, 32, 64, 128, 5, 6, 6, 6, 0, 0, 32, 16, 136, 136, - 136, 136, 5, 7, 7, 6, 0, 0, 128, 128, 248, 128, 128, 128, 120, 5, - 6, 6, 6, 0, 0, 248, 8, 8, 8, 16, 96, 5, 5, 5, 6, 0, - 1, 64, 160, 16, 8, 8, 5, 7, 7, 6, 0, 0, 32, 248, 32, 32, - 168, 168, 32, 5, 6, 6, 6, 0, 0, 248, 8, 8, 80, 32, 16, 4, - 6, 6, 6, 1, 0, 224, 0, 224, 0, 224, 16, 5, 6, 6, 6, 0, - 0, 32, 64, 128, 136, 248, 8, 5, 6, 6, 6, 0, 0, 8, 8, 80, - 32, 80, 128, 5, 6, 6, 6, 0, 0, 248, 64, 248, 64, 64, 56, 5, - 7, 7, 6, 0, 0, 64, 64, 248, 72, 80, 64, 64, 5, 7, 7, 6, - 0, 0, 112, 16, 16, 16, 16, 16, 248, 5, 6, 6, 6, 0, 0, 248, - 8, 248, 8, 8, 248, 5, 7, 7, 6, 0, 0, 112, 0, 248, 8, 8, - 16, 32, 4, 7, 7, 6, 0, 0, 144, 144, 144, 144, 16, 32, 64, 5, - 6, 6, 6, 0, 0, 32, 160, 160, 168, 168, 176, 5, 7, 7, 6, 0, - 0, 128, 128, 128, 136, 144, 160, 192, 5, 6, 6, 6, 0, 0, 248, 136, - 136, 136, 136, 248, 5, 6, 6, 6, 0, 0, 248, 136, 136, 8, 16, 32, - 5, 6, 6, 6, 0, 0, 192, 0, 8, 8, 16, 224, 4, 3, 3, 6, - 0, 4, 32, 144, 64, 3, 3, 3, 6, 0, 4, 224, 160, 224, 5, 5, - 5, 6, 0, 1, 72, 168, 144, 144, 104, 5, 7, 7, 6, 0, 0, 80, - 0, 112, 8, 120, 136, 120, 4, 8, 8, 6, 1, 255, 96, 144, 144, 224, - 144, 144, 224, 128, 5, 5, 5, 6, 0, 0, 112, 128, 96, 136, 112, 5, - 6, 6, 6, 0, 255, 136, 136, 152, 232, 136, 128, 5, 5, 5, 6, 0, - 0, 120, 160, 144, 136, 112, 5, 7, 7, 6, 0, 254, 48, 72, 136, 136, - 240, 128, 128, 5, 8, 8, 6, 0, 254, 120, 136, 136, 136, 120, 8, 8, - 112, 5, 5, 5, 6, 0, 1, 56, 32, 32, 160, 64, 4, 3, 3, 6, - 0, 3, 16, 208, 16, 4, 8, 8, 6, 0, 255, 16, 0, 48, 16, 16, - 16, 144, 96, 3, 3, 3, 6, 0, 4, 160, 64, 160, 5, 7, 7, 6, - 0, 0, 32, 112, 160, 160, 168, 112, 32, 5, 7, 7, 6, 0, 0, 64, - 64, 224, 64, 224, 64, 120, 5, 7, 7, 6, 0, 0, 112, 0, 176, 200, - 136, 136, 136, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 136, 136, 112, - 5, 7, 7, 6, 0, 255, 176, 200, 136, 136, 240, 128, 128, 5, 7, 7, - 6, 0, 255, 104, 152, 136, 136, 120, 8, 8, 5, 6, 6, 6, 0, 0, - 112, 136, 248, 136, 136, 112, 5, 3, 3, 6, 0, 2, 88, 168, 208, 5, - 5, 5, 6, 0, 0, 112, 136, 136, 80, 216, 5, 7, 7, 6, 0, 0, - 80, 0, 136, 136, 136, 152, 104, 5, 7, 7, 6, 0, 0, 248, 128, 64, - 32, 64, 128, 248, 5, 5, 5, 6, 0, 0, 248, 80, 80, 80, 152, 5, - 7, 7, 6, 0, 0, 248, 0, 136, 80, 32, 80, 136, 5, 7, 7, 6, - 0, 255, 136, 136, 136, 136, 120, 8, 112, 5, 6, 6, 6, 0, 0, 8, - 240, 32, 248, 32, 32, 5, 5, 5, 6, 0, 0, 248, 64, 120, 72, 136, - 5, 5, 5, 6, 0, 0, 248, 168, 248, 136, 136, 5, 5, 5, 6, 0, - 1, 32, 0, 248, 0, 32, 0, 0, 0, 6, 0, 0, 6, 10, 10, 6, - 0, 254, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252 -}; diff --git a/lib/Marlin/dogm_font_data_HD44780_W.h b/lib/Marlin/dogm_font_data_HD44780_W.h deleted file mode 100644 index 86b4bf4..0000000 --- a/lib/Marlin/dogm_font_data_HD44780_W.h +++ /dev/null @@ -1,226 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: HD44780_W - Copyright: A.Hardtung, public domain - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 9 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-1 - X Font ascent = 7 descent=-1 - Max Font ascent = 8 descent=-1 -*/ -#include -const u8g_fntpgm_uint8_t HD44780_W_5x7[3034] U8G_SECTION(".progmem.HD44780_W_5x7") = { - 0, 6, 9, 0, 254, 7, 2, 79, 3, 222, 16, 255, 255, 8, 255, 7, - 255, 4, 7, 7, 6, 0, 0, 16, 48, 112, 240, 112, 48, 16, 4, 7, - 7, 6, 1, 0, 128, 192, 224, 240, 224, 192, 128, 5, 3, 3, 6, 0, - 4, 216, 72, 144, 5, 3, 3, 6, 0, 4, 216, 144, 72, 5, 7, 7, - 6, 0, 0, 32, 112, 248, 0, 32, 112, 248, 5, 7, 7, 6, 0, 0, - 248, 112, 32, 0, 248, 112, 32, 5, 5, 5, 6, 0, 1, 112, 248, 248, - 248, 112, 5, 7, 7, 6, 0, 0, 8, 8, 40, 72, 248, 64, 32, 5, - 7, 7, 6, 0, 0, 32, 112, 168, 32, 32, 32, 32, 5, 7, 7, 6, - 0, 0, 32, 32, 32, 32, 168, 112, 32, 5, 5, 5, 6, 0, 1, 32, - 64, 248, 64, 32, 5, 5, 5, 6, 0, 1, 32, 16, 248, 16, 32, 5, - 7, 7, 6, 0, 0, 16, 32, 64, 32, 16, 0, 248, 5, 7, 7, 6, - 0, 0, 64, 32, 16, 32, 64, 0, 248, 5, 5, 5, 6, 0, 1, 32, - 32, 112, 112, 248, 5, 5, 5, 6, 0, 0, 248, 112, 112, 32, 32, 0, - 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, - 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, 0, 0, - 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, 120, 160, - 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, 64, 152, - 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, 2, 3, - 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, 64, 128, - 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, 32, 64, - 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, 5, 6, - 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, 64, 128, - 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, 192, 5, - 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, - 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64, 192, 64, - 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, 128, 128, - 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, 5, 7, - 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, 6, 0, - 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, 48, 64, - 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, 32, - 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, 112, 5, - 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5, 5, 6, - 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, 192, 0, - 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, 32, 16, - 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1, 0, 128, - 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, 8, 16, - 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168, 112, 5, - 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7, 7, 6, - 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, 0, 112, - 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144, 136, 136, - 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 248, - 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5, 7, 7, - 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6, 0, 0, - 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, 128, 128, - 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16, 16, 144, - 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136, 5, 7, - 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7, 6, 0, - 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136, - 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 136, - 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128, 128, 5, - 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7, 7, 6, - 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0, 0, 120, - 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32, 32, 32, - 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 136, 112, - 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5, 7, 7, - 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6, 0, 0, - 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136, 136, 136, - 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, 64, 128, - 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224, 5, 5, - 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1, 0, 224, - 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80, 136, 5, - 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64, 5, 5, - 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0, 0, 128, - 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128, 128, 136, - 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120, 5, 5, - 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0, 0, 48, - 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136, 136, 120, - 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136, 136, 1, - 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8, 8, 6, - 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6, 0, 0, - 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192, 64, 64, - 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168, 168, 5, - 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6, 0, 0, - 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136, 240, 128, - 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5, 5, 5, - 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0, 112, 128, - 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64, 72, 48, - 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5, 6, 0, - 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136, 168, 168, - 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6, 6, 6, - 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0, 248, 16, - 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64, 64, 32, - 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3, 7, 7, - 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 6, 6, 6, 0, 1, - 8, 40, 72, 248, 64, 32, 5, 7, 7, 6, 0, 0, 32, 80, 136, 136, - 136, 136, 248, 5, 7, 7, 6, 0, 0, 248, 136, 128, 240, 136, 136, 240, - 5, 8, 8, 6, 0, 255, 120, 40, 40, 40, 72, 136, 248, 136, 5, 7, - 7, 6, 0, 0, 168, 168, 168, 112, 168, 168, 168, 5, 7, 7, 6, 0, - 0, 240, 8, 8, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 136, 136, - 152, 168, 200, 136, 136, 5, 8, 8, 6, 0, 0, 80, 32, 136, 152, 168, - 168, 200, 136, 5, 7, 7, 6, 0, 0, 120, 40, 40, 40, 40, 168, 72, - 5, 7, 7, 6, 0, 0, 248, 136, 136, 136, 136, 136, 136, 5, 7, 7, - 6, 0, 0, 136, 136, 136, 80, 32, 64, 128, 5, 8, 8, 6, 0, 255, - 136, 136, 136, 136, 136, 136, 248, 8, 5, 7, 7, 6, 0, 0, 136, 136, - 136, 120, 8, 8, 8, 5, 7, 7, 6, 0, 0, 168, 168, 168, 168, 168, - 168, 248, 5, 8, 8, 6, 0, 255, 168, 168, 168, 168, 168, 168, 248, 8, - 5, 7, 7, 6, 0, 0, 192, 64, 64, 112, 72, 72, 112, 5, 7, 7, - 6, 0, 0, 136, 136, 136, 200, 168, 168, 200, 5, 7, 7, 6, 0, 0, - 112, 136, 40, 80, 8, 136, 112, 5, 5, 5, 6, 0, 0, 64, 160, 144, - 144, 104, 5, 7, 7, 6, 0, 0, 32, 48, 40, 40, 32, 224, 224, 5, - 7, 7, 6, 0, 0, 248, 136, 128, 128, 128, 128, 128, 5, 5, 5, 6, - 0, 0, 248, 80, 80, 80, 152, 5, 7, 7, 6, 0, 0, 248, 128, 64, - 32, 64, 128, 248, 5, 5, 5, 6, 0, 0, 120, 144, 144, 144, 96, 5, - 7, 7, 6, 0, 0, 48, 40, 56, 40, 200, 216, 24, 5, 6, 6, 6, - 0, 0, 8, 112, 160, 32, 32, 16, 5, 6, 6, 6, 0, 1, 32, 112, - 112, 112, 248, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, - 112, 5, 5, 5, 6, 0, 0, 112, 136, 136, 80, 216, 5, 7, 7, 6, - 0, 0, 48, 72, 32, 80, 136, 136, 112, 5, 3, 3, 6, 0, 2, 88, - 168, 208, 5, 6, 6, 6, 0, 0, 80, 248, 248, 248, 112, 32, 5, 5, - 5, 6, 0, 0, 112, 128, 96, 136, 112, 5, 7, 7, 6, 0, 0, 112, - 136, 136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 216, 216, 216, 216, - 216, 216, 216, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, - 5, 7, 7, 6, 0, 0, 32, 112, 160, 160, 168, 112, 32, 5, 7, 7, - 6, 0, 0, 48, 64, 64, 224, 64, 80, 168, 5, 5, 5, 6, 0, 0, - 136, 112, 80, 112, 136, 5, 7, 7, 6, 0, 0, 136, 80, 248, 32, 248, - 32, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 0, 128, 128, 128, 5, - 8, 8, 6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 5, 7, 7, - 6, 0, 0, 24, 32, 32, 112, 32, 32, 192, 5, 7, 7, 6, 0, 0, - 248, 136, 184, 184, 184, 136, 248, 5, 7, 7, 6, 0, 0, 112, 8, 120, - 136, 120, 0, 248, 5, 5, 5, 6, 0, 1, 40, 80, 160, 80, 40, 5, - 7, 7, 6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7, 6, - 0, 0, 120, 136, 136, 120, 40, 72, 136, 5, 7, 7, 6, 0, 0, 248, - 136, 168, 136, 152, 168, 248, 2, 3, 3, 6, 2, 4, 64, 128, 192, 4, - 5, 5, 6, 0, 3, 96, 144, 144, 144, 96, 5, 7, 7, 6, 0, 0, - 32, 32, 248, 32, 32, 0, 248, 4, 5, 5, 6, 0, 3, 96, 144, 32, - 64, 240, 3, 5, 5, 6, 0, 3, 224, 32, 224, 32, 224, 5, 8, 8, - 6, 0, 0, 224, 144, 224, 128, 144, 184, 144, 24, 5, 8, 8, 6, 0, - 255, 136, 136, 136, 136, 152, 232, 128, 128, 5, 7, 7, 6, 0, 0, 120, - 152, 152, 120, 24, 24, 24, 2, 2, 2, 6, 2, 2, 192, 192, 5, 5, - 5, 6, 0, 0, 80, 136, 168, 168, 80, 3, 5, 5, 6, 0, 3, 64, - 192, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 112, 0, - 248, 5, 5, 5, 6, 0, 1, 160, 80, 40, 80, 160, 5, 7, 7, 6, - 0, 0, 136, 144, 168, 88, 184, 8, 8, 5, 7, 7, 6, 0, 0, 136, - 144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0, 0, 192, 64, 192, 72, - 216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 32, 0, 32, 64, 128, 136, - 112, 5, 8, 8, 6, 0, 0, 64, 32, 32, 80, 136, 248, 136, 136, 5, - 8, 8, 6, 0, 0, 16, 32, 32, 80, 136, 248, 136, 136, 5, 8, 8, - 6, 0, 0, 32, 80, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6, 0, - 0, 104, 144, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0, 80, - 0, 32, 80, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0, 32, 80, 32, - 112, 136, 248, 136, 136, 5, 7, 7, 6, 0, 0, 56, 96, 160, 184, 224, - 160, 184, 5, 8, 8, 6, 0, 255, 112, 136, 128, 128, 136, 112, 32, 96, - 5, 8, 8, 6, 0, 0, 64, 32, 0, 248, 128, 240, 128, 248, 5, 8, - 8, 6, 0, 0, 8, 16, 0, 248, 128, 240, 128, 248, 5, 8, 8, 6, - 0, 0, 32, 80, 0, 248, 128, 240, 128, 248, 5, 7, 7, 6, 0, 0, - 80, 0, 248, 128, 240, 128, 248, 3, 8, 8, 6, 1, 0, 128, 64, 0, - 224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64, 0, 224, 64, - 64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 224, 64, 64, 64, - 224, 3, 7, 7, 6, 1, 0, 160, 0, 224, 64, 64, 64, 224, 5, 7, - 7, 6, 0, 0, 112, 72, 72, 232, 72, 72, 112, 5, 8, 8, 6, 0, - 0, 104, 144, 0, 136, 200, 168, 152, 136, 5, 8, 8, 6, 0, 0, 64, - 32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 112, - 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136, - 136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112, 136, 136, 136, - 112, 5, 8, 8, 6, 0, 0, 80, 0, 112, 136, 136, 136, 136, 112, 5, - 5, 5, 6, 0, 1, 136, 80, 32, 80, 136, 5, 7, 7, 6, 0, 0, - 112, 32, 112, 168, 112, 32, 112, 5, 8, 8, 6, 0, 0, 64, 32, 136, - 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 136, 136, 136, - 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 136, 136, 136, 136, - 112, 5, 8, 8, 6, 0, 0, 80, 0, 136, 136, 136, 136, 136, 112, 5, - 8, 8, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32, 32, 5, 8, 8, - 6, 0, 0, 192, 64, 112, 72, 72, 112, 64, 224, 5, 7, 7, 6, 0, - 0, 48, 72, 72, 112, 72, 72, 176, 5, 8, 8, 6, 0, 0, 64, 32, - 0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112, - 8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 8, 120, - 136, 120, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112, 8, 120, 136, 120, - 5, 7, 7, 6, 0, 0, 80, 0, 112, 8, 120, 136, 120, 5, 8, 8, - 6, 0, 0, 32, 80, 32, 112, 8, 120, 136, 120, 5, 6, 6, 6, 0, - 0, 208, 40, 120, 160, 168, 80, 5, 6, 6, 6, 0, 255, 112, 128, 136, - 112, 32, 96, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248, 128, - 112, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 248, 128, 112, 5, - 8, 8, 6, 0, 0, 32, 80, 0, 112, 136, 248, 128, 112, 5, 7, 7, - 6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 3, 8, 8, 6, 1, 0, - 128, 64, 0, 64, 192, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64, - 0, 64, 192, 64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 64, - 192, 64, 64, 224, 3, 7, 7, 6, 1, 0, 160, 0, 64, 192, 64, 64, - 224, 5, 7, 7, 6, 0, 0, 160, 64, 160, 16, 120, 136, 112, 5, 8, - 8, 6, 0, 0, 104, 144, 0, 176, 200, 136, 136, 136, 5, 8, 8, 6, - 0, 0, 64, 32, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, - 16, 32, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, - 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112, - 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 136, 136, - 112, 5, 5, 5, 6, 0, 1, 32, 0, 248, 0, 32, 5, 7, 7, 6, - 0, 0, 16, 32, 112, 168, 112, 32, 64, 5, 8, 8, 6, 0, 0, 64, - 32, 0, 136, 136, 136, 152, 104, 5, 8, 8, 6, 0, 0, 16, 32, 0, - 136, 136, 136, 152, 104, 5, 8, 8, 6, 0, 0, 32, 80, 0, 136, 136, - 136, 152, 104, 5, 7, 7, 6, 0, 0, 80, 0, 136, 136, 136, 152, 104, - 5, 9, 9, 6, 0, 255, 16, 32, 0, 136, 136, 136, 248, 8, 112, 4, - 7, 7, 6, 1, 0, 192, 64, 96, 80, 96, 64, 224, 5, 8, 8, 6, - 0, 255, 80, 0, 136, 136, 136, 248, 8, 112 -}; diff --git a/lib/Marlin/dogm_font_data_ISO10646_1.h b/lib/Marlin/dogm_font_data_ISO10646_1.h deleted file mode 100644 index 8ff40d0..0000000 --- a/lib/Marlin/dogm_font_data_ISO10646_1.h +++ /dev/null @@ -1,198 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: ISO10646-1 - Copyright: A.Hardtung, public domain - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 5 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 9 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-1 - X Font ascent = 7 descent=-1 - Max Font ascent = 8 descent=-1 -*/ -#include -const u8g_fntpgm_uint8_t ISO10646_1_5x7[2592] U8G_SECTION(".progmem.ISO10646_1_5x7") = { - 0, 6, 9, 0, 254, 7, 1, 146, 3, 33, 32, 255, 255, 8, 255, 7, - 255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128, - 128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, - 0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, - 120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, - 64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, - 2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, - 64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, - 32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, - 5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, - 64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, - 192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, - 0, 0, 112, 136, 136, 136, 136, 136, 112, 3, 7, 7, 6, 1, 0, 64, - 192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, - 128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, - 5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, - 6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, - 112, 128, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, - 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 8, 112, 2, 5, - 5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, - 192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, - 32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1, - 0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, - 8, 16, 32, 0, 32, 5, 7, 7, 6, 0, 0, 112, 136, 8, 104, 168, - 168, 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, - 7, 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, - 0, 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 240, - 136, 136, 136, 136, 136, 240, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, - 128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, - 5, 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, - 6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, - 128, 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, - 16, 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, - 136, 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, - 7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, - 0, 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, - 136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, - 128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, - 7, 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, - 0, 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, - 32, 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, - 136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, - 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, - 6, 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, - 136, 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, - 32, 64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, - 224, 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, - 1, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, - 80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, - 64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, - 0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, - 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, - 120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, - 0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, - 136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, - 136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, - 8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, - 6, 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, - 192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, - 168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, - 6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, - 136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, - 5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, - 0, 112, 128, 112, 8, 240, 4, 7, 7, 6, 0, 0, 64, 64, 224, 64, - 64, 64, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, - 5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, - 136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, - 6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, - 0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, - 64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, - 3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2, - 6, 0, 2, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, - 0, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 5, 7, - 7, 6, 0, 0, 32, 112, 168, 160, 168, 112, 32, 5, 7, 7, 6, 0, - 0, 48, 64, 64, 224, 64, 80, 168, 5, 5, 5, 6, 0, 0, 136, 112, - 80, 112, 136, 5, 7, 7, 6, 0, 0, 136, 80, 32, 248, 32, 248, 32, - 1, 7, 7, 6, 2, 0, 128, 128, 128, 0, 128, 128, 128, 5, 8, 8, - 6, 0, 0, 48, 72, 32, 80, 80, 32, 144, 96, 3, 1, 1, 6, 1, - 7, 160, 5, 7, 7, 6, 0, 0, 248, 136, 184, 184, 184, 136, 248, 5, - 7, 7, 6, 0, 1, 112, 8, 120, 136, 120, 0, 248, 5, 5, 5, 6, - 0, 1, 40, 80, 160, 80, 40, 5, 3, 3, 6, 0, 1, 248, 8, 8, - 2, 2, 2, 6, 2, 6, 64, 128, 5, 7, 7, 6, 0, 0, 248, 136, - 168, 136, 152, 168, 248, 5, 1, 1, 6, 0, 6, 248, 4, 4, 4, 6, - 0, 3, 96, 144, 144, 96, 5, 7, 7, 6, 0, 0, 32, 32, 248, 32, - 32, 0, 248, 4, 5, 5, 6, 0, 3, 96, 144, 32, 64, 240, 3, 5, - 5, 6, 0, 3, 224, 32, 224, 32, 224, 2, 2, 2, 6, 2, 6, 64, - 128, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 152, 232, 128, 128, 5, - 7, 7, 6, 0, 0, 120, 152, 152, 120, 24, 24, 24, 2, 2, 2, 6, - 2, 2, 192, 192, 2, 2, 2, 6, 2, 255, 64, 128, 3, 5, 5, 6, - 0, 3, 64, 192, 64, 64, 224, 5, 7, 7, 6, 0, 1, 112, 136, 136, - 136, 112, 0, 248, 5, 5, 5, 6, 0, 1, 160, 80, 40, 80, 160, 5, - 7, 7, 6, 0, 0, 136, 144, 168, 88, 184, 8, 8, 5, 7, 7, 6, - 0, 0, 136, 144, 184, 72, 152, 32, 56, 5, 8, 8, 6, 0, 0, 192, - 64, 192, 72, 216, 56, 8, 8, 5, 7, 7, 6, 0, 0, 32, 0, 32, - 64, 128, 136, 112, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248, - 136, 136, 5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 248, 136, 136, - 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136, 248, 136, 136, 5, 8, - 8, 6, 0, 0, 104, 144, 0, 112, 136, 248, 136, 136, 5, 8, 8, 6, - 0, 0, 80, 0, 112, 136, 136, 248, 136, 136, 5, 8, 8, 6, 0, 0, - 32, 80, 32, 112, 136, 248, 136, 136, 5, 7, 7, 6, 0, 0, 56, 96, - 160, 184, 224, 160, 184, 5, 8, 8, 6, 0, 255, 112, 136, 128, 128, 136, - 112, 32, 96, 5, 8, 8, 6, 0, 0, 64, 32, 0, 248, 128, 240, 128, - 248, 5, 8, 8, 6, 0, 0, 8, 16, 0, 248, 128, 240, 128, 248, 5, - 8, 8, 6, 0, 0, 32, 80, 0, 248, 128, 240, 128, 248, 5, 7, 7, - 6, 0, 0, 80, 0, 248, 128, 240, 128, 248, 3, 8, 8, 6, 1, 0, - 128, 64, 0, 224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 32, 64, - 0, 224, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 64, 160, 0, 224, - 64, 64, 64, 224, 3, 7, 7, 6, 1, 0, 160, 0, 224, 64, 64, 64, - 224, 5, 7, 7, 6, 0, 0, 112, 72, 72, 232, 72, 72, 112, 5, 8, - 8, 6, 0, 0, 104, 144, 0, 136, 200, 168, 152, 136, 5, 8, 8, 6, - 0, 0, 64, 32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, - 16, 32, 112, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, - 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 112, - 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 80, 0, 112, 136, 136, 136, - 136, 112, 5, 5, 5, 6, 0, 1, 136, 80, 32, 80, 136, 5, 8, 8, - 6, 0, 255, 16, 112, 168, 168, 168, 168, 112, 64, 5, 8, 8, 6, 0, - 0, 64, 32, 136, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 16, - 32, 136, 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, - 136, 136, 136, 136, 112, 5, 8, 8, 6, 0, 0, 80, 0, 136, 136, 136, - 136, 136, 112, 5, 8, 8, 6, 0, 0, 16, 32, 136, 80, 32, 32, 32, - 32, 5, 9, 9, 6, 0, 255, 192, 64, 112, 72, 72, 112, 64, 64, 224, - 4, 8, 8, 6, 1, 255, 96, 144, 144, 160, 144, 144, 224, 128, 5, 8, - 8, 6, 0, 0, 64, 32, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6, - 0, 0, 16, 32, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0, - 32, 80, 0, 112, 8, 120, 136, 120, 5, 8, 8, 6, 0, 0, 104, 144, - 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0, 0, 80, 0, 112, 8, - 120, 136, 120, 5, 8, 8, 6, 0, 0, 32, 80, 32, 112, 8, 120, 136, - 120, 5, 6, 6, 6, 0, 0, 208, 40, 120, 160, 168, 80, 5, 6, 6, - 6, 0, 255, 112, 128, 136, 112, 32, 96, 5, 8, 8, 6, 0, 0, 64, - 32, 0, 112, 136, 248, 128, 112, 5, 8, 8, 6, 0, 0, 16, 32, 0, - 112, 136, 248, 128, 112, 5, 8, 8, 6, 0, 0, 32, 80, 0, 112, 136, - 248, 128, 112, 5, 7, 7, 6, 0, 0, 80, 0, 112, 136, 248, 128, 112, - 3, 8, 8, 6, 1, 0, 128, 64, 0, 64, 192, 64, 64, 224, 3, 8, - 8, 6, 1, 0, 32, 64, 0, 64, 192, 64, 64, 224, 3, 8, 8, 6, - 1, 0, 64, 160, 0, 64, 192, 64, 64, 224, 3, 7, 7, 6, 1, 0, - 160, 0, 64, 192, 64, 64, 224, 5, 7, 7, 6, 0, 0, 160, 64, 160, - 16, 120, 136, 112, 5, 8, 8, 6, 0, 0, 104, 144, 0, 176, 200, 136, - 136, 136, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 136, 136, 112, - 5, 8, 8, 6, 0, 0, 16, 32, 0, 112, 136, 136, 136, 112, 5, 8, - 8, 6, 0, 0, 32, 80, 0, 112, 136, 136, 136, 112, 5, 8, 8, 6, - 0, 0, 104, 144, 0, 112, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, - 80, 0, 112, 136, 136, 136, 112, 5, 5, 5, 6, 0, 1, 32, 0, 248, - 0, 32, 5, 7, 7, 6, 0, 255, 16, 112, 168, 168, 168, 112, 64, 5, - 8, 8, 6, 0, 0, 64, 32, 0, 136, 136, 136, 152, 104, 5, 8, 8, - 6, 0, 0, 16, 32, 0, 136, 136, 136, 152, 104, 5, 8, 8, 6, 0, - 0, 32, 80, 0, 136, 136, 136, 152, 104, 5, 7, 7, 6, 0, 0, 80, - 0, 136, 136, 136, 152, 104, 5, 9, 9, 6, 0, 255, 16, 32, 0, 136, - 136, 136, 248, 8, 112, 4, 7, 7, 6, 1, 255, 192, 64, 96, 80, 96, - 64, 224, 5, 8, 8, 6, 0, 255, 80, 0, 136, 136, 136, 120, 8, 112 -}; diff --git a/lib/Marlin/dogm_font_data_ISO10646_5_Cyrillic.h b/lib/Marlin/dogm_font_data_ISO10646_5_Cyrillic.h deleted file mode 100644 index 75e779f..0000000 --- a/lib/Marlin/dogm_font_data_ISO10646_5_Cyrillic.h +++ /dev/null @@ -1,196 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: ISO10646_5_Cyrillic - Copyright: A. Hardtung, public domain - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 9 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-1 - X Font ascent = 7 descent=-1 - Max Font ascent = 8 descent=-1 -*/ -#include -const u8g_fntpgm_uint8_t ISO10646_5_Cyrillic_5x7[2560] U8G_SECTION(".progmem.ISO10646_5_Cyrillic_5x7") = { - 0, 6, 9, 0, 254, 7, 1, 145, 3, 32, 32, 255, 255, 8, 255, 7, - 255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128, - 128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, - 0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, - 120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, - 64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, - 2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, - 64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, - 32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, - 5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, - 64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, - 192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, - 0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64, - 192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, - 128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, - 5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, - 6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, - 48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, - 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5, - 5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, - 192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, - 32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1, - 0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, - 8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7, - 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, - 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144, - 136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, - 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5, - 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6, - 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, - 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16, - 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136, - 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7, - 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, - 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136, - 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128, - 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7, - 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0, - 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32, - 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, - 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5, - 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6, - 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136, - 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, - 64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224, - 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1, - 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80, - 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64, - 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0, - 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128, - 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120, - 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0, - 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136, - 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136, - 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8, - 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6, - 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192, - 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168, - 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6, - 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136, - 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5, - 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0, - 112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64, - 72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5, - 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136, - 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6, - 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0, - 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64, - 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3, - 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2, 6, - 0, 3, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5, 8, 8, 6, 0, 0, - 64, 248, 128, 128, 240, 128, 128, 248, 5, 8, 8, 6, 0, 0, 80, 248, - 128, 128, 240, 128, 128, 248, 5, 7, 7, 6, 0, 0, 224, 64, 64, 112, - 72, 72, 112, 5, 8, 8, 6, 0, 0, 16, 32, 248, 136, 128, 128, 128, - 128, 5, 7, 7, 6, 0, 0, 48, 72, 128, 224, 128, 72, 48, 5, 7, - 7, 6, 0, 0, 112, 136, 128, 112, 8, 136, 112, 3, 7, 7, 6, 1, - 0, 224, 64, 64, 64, 64, 64, 224, 3, 8, 8, 6, 1, 0, 160, 0, - 224, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16, - 16, 144, 96, 5, 7, 7, 6, 0, 0, 160, 160, 160, 184, 168, 168, 184, - 5, 7, 7, 6, 0, 0, 160, 160, 160, 248, 168, 168, 184, 4, 7, 7, - 6, 0, 0, 224, 64, 112, 80, 80, 80, 80, 5, 8, 8, 6, 0, 0, - 16, 32, 136, 144, 160, 224, 144, 136, 5, 8, 8, 6, 0, 0, 64, 32, - 136, 152, 168, 200, 136, 136, 5, 9, 9, 6, 0, 255, 80, 32, 136, 136, - 136, 80, 32, 32, 32, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 136, - 136, 248, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, - 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 136, 136, 240, 5, 7, 7, - 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, 0, - 248, 136, 128, 128, 128, 128, 128, 5, 8, 8, 6, 0, 255, 120, 40, 40, - 40, 72, 136, 248, 136, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, - 128, 248, 5, 7, 7, 6, 0, 0, 168, 168, 168, 112, 168, 168, 168, 5, - 7, 7, 6, 0, 0, 240, 8, 8, 112, 8, 8, 240, 5, 7, 7, 6, - 0, 0, 136, 136, 152, 168, 200, 136, 136, 5, 8, 8, 6, 0, 0, 80, - 32, 136, 152, 168, 168, 200, 136, 5, 7, 7, 6, 0, 0, 136, 144, 160, - 192, 160, 144, 136, 5, 7, 7, 6, 0, 0, 120, 40, 40, 40, 40, 168, - 72, 5, 7, 7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, - 7, 6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 5, 7, 7, 6, 0, - 0, 112, 136, 136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 136, - 136, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, - 128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 128, 128, 128, 136, 112, 5, - 7, 7, 6, 0, 0, 248, 32, 32, 32, 32, 32, 32, 5, 7, 7, 6, - 0, 0, 136, 136, 136, 80, 32, 64, 128, 5, 7, 7, 6, 0, 0, 32, - 112, 168, 168, 168, 112, 32, 5, 7, 7, 6, 0, 0, 136, 136, 80, 32, - 80, 136, 136, 5, 8, 8, 6, 0, 255, 136, 136, 136, 136, 136, 136, 248, - 8, 5, 7, 7, 6, 0, 0, 136, 136, 136, 152, 104, 8, 8, 5, 7, - 7, 6, 0, 0, 168, 168, 168, 168, 168, 168, 248, 5, 8, 8, 6, 0, - 255, 168, 168, 168, 168, 168, 168, 248, 8, 5, 7, 7, 6, 0, 0, 192, - 64, 64, 112, 72, 72, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 200, - 168, 168, 200, 5, 7, 7, 6, 0, 0, 128, 128, 128, 240, 136, 136, 240, - 5, 7, 7, 6, 0, 0, 112, 136, 8, 56, 8, 136, 112, 5, 7, 7, - 6, 0, 0, 144, 168, 168, 232, 168, 168, 144, 5, 7, 7, 6, 0, 0, - 120, 136, 136, 120, 40, 72, 136, 5, 5, 5, 6, 0, 0, 112, 8, 120, - 136, 120, 5, 7, 7, 6, 0, 0, 24, 96, 128, 240, 136, 136, 112, 4, - 5, 5, 6, 0, 0, 224, 144, 224, 144, 224, 5, 5, 5, 6, 0, 0, - 248, 136, 128, 128, 128, 5, 6, 6, 6, 0, 255, 120, 40, 72, 136, 248, - 136, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 5, 5, 6, - 0, 0, 168, 168, 112, 168, 168, 5, 5, 5, 6, 0, 0, 240, 8, 48, - 8, 240, 5, 5, 5, 6, 0, 0, 136, 152, 168, 200, 136, 5, 7, 7, - 6, 0, 0, 80, 32, 136, 152, 168, 200, 136, 4, 5, 5, 6, 0, 0, - 144, 160, 192, 160, 144, 5, 5, 5, 6, 0, 0, 248, 40, 40, 168, 72, - 5, 5, 5, 6, 0, 0, 136, 216, 168, 136, 136, 5, 5, 5, 6, 0, - 0, 136, 136, 248, 136, 136, 5, 5, 5, 6, 0, 0, 112, 136, 136, 136, - 112, 5, 5, 5, 6, 0, 0, 248, 136, 136, 136, 136, 5, 6, 6, 6, - 0, 255, 240, 136, 136, 240, 128, 128, 5, 5, 5, 6, 0, 0, 112, 128, - 128, 136, 112, 5, 5, 5, 6, 0, 0, 248, 32, 32, 32, 32, 5, 6, - 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 6, 6, 6, 0, 0, - 32, 112, 168, 168, 112, 32, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, - 136, 5, 6, 6, 6, 0, 255, 136, 136, 136, 136, 248, 8, 5, 5, 5, - 6, 0, 0, 136, 136, 248, 8, 8, 5, 5, 5, 6, 0, 0, 168, 168, - 168, 168, 248, 5, 6, 6, 6, 0, 255, 168, 168, 168, 168, 248, 8, 5, - 5, 5, 6, 0, 0, 192, 64, 112, 72, 112, 5, 5, 5, 6, 0, 0, - 136, 136, 200, 168, 200, 3, 5, 5, 6, 1, 0, 128, 128, 192, 160, 192, - 5, 5, 5, 6, 0, 0, 112, 136, 56, 136, 112, 5, 5, 5, 6, 0, - 0, 144, 168, 232, 168, 144, 5, 5, 5, 6, 0, 0, 120, 136, 120, 40, - 72, 5, 8, 8, 6, 0, 0, 64, 32, 0, 112, 136, 248, 128, 112, 5, - 7, 7, 6, 0, 0, 80, 0, 112, 136, 248, 128, 112, 5, 9, 9, 6, - 0, 255, 64, 224, 64, 64, 120, 72, 72, 72, 16, 5, 8, 8, 6, 0, - 0, 16, 32, 0, 248, 136, 128, 128, 128, 5, 5, 5, 6, 0, 0, 112, - 136, 96, 136, 112, 5, 5, 5, 6, 0, 0, 112, 128, 112, 8, 240, 1, - 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 7, 7, 6, - 1, 0, 160, 0, 64, 64, 64, 64, 64, 3, 8, 8, 6, 1, 255, 32, - 0, 32, 32, 32, 32, 160, 64, 5, 5, 5, 6, 0, 0, 160, 160, 184, - 168, 184, 5, 5, 5, 6, 0, 0, 160, 160, 248, 168, 184, 5, 6, 6, - 6, 0, 0, 64, 224, 64, 120, 72, 72, 4, 8, 8, 6, 0, 0, 16, - 32, 0, 144, 160, 192, 160, 144, 5, 8, 8, 6, 0, 0, 64, 32, 0, - 136, 152, 168, 200, 136, 5, 9, 9, 6, 0, 255, 80, 32, 0, 136, 136, - 136, 120, 8, 112, 5, 6, 6, 6, 0, 255, 136, 136, 136, 136, 248, 32 -}; diff --git a/lib/Marlin/dogm_font_data_ISO10646_CN.h b/lib/Marlin/dogm_font_data_ISO10646_CN.h deleted file mode 100644 index 11fdb22..0000000 --- a/lib/Marlin/dogm_font_data_ISO10646_CN.h +++ /dev/null @@ -1,293 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: ISO10646_CN - Copyright: A. Hardtung, public domain - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w=11 h=11 x= 2 y=10 dx=12 dy= 0 ascent=10 len=22 - Font Bounding box w=12 h=11 x= 0 y=-2 - Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-1 - X Font ascent = 7 descent=-1 - Max Font ascent =10 descent=-1 -*/ -#include -const u8g_fntpgm_uint8_t ISO10646_CN[4105] U8G_SECTION(".progmem.ISO10646_CN") = { - 0, 12, 11, 0, 254, 7, 1, 146, 3, 33, 32, 255, 255, 10, 255, 7, - 255, 0, 0, 0, 6, 0, 10, 1, 7, 7, 6, 2, 0, 128, 128, 128, - 128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, - 0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, - 120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, - 64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, - 2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, - 64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, - 32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, - 5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, - 64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, - 192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, - 0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64, - 192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, - 128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, - 5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, - 6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, - 112, 128, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, - 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 8, 112, 2, 5, - 5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, - 192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, - 32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 0, - 0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, - 8, 16, 32, 0, 32, 5, 7, 7, 6, 0, 0, 112, 136, 8, 104, 168, - 168, 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, - 7, 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, - 0, 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 240, - 136, 136, 136, 136, 136, 240, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, - 128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, - 5, 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, - 6, 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, - 128, 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, - 16, 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, - 136, 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, - 7, 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, - 0, 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, - 136, 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, - 128, 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, - 7, 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, - 0, 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, - 32, 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, - 136, 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, - 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, - 6, 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, - 136, 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, - 32, 64, 128, 248, 3, 7, 7, 6, 0, 0, 224, 128, 128, 128, 128, 128, - 224, 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, - 0, 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, - 80, 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, - 64, 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, - 0, 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, - 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, - 120, 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, - 0, 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, - 136, 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, - 136, 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, - 8, 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, - 6, 1, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, - 192, 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, - 168, 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, - 6, 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, - 136, 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, - 5, 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, - 0, 112, 128, 112, 8, 240, 4, 7, 7, 6, 0, 0, 64, 64, 224, 64, - 64, 64, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, - 5, 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, - 136, 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, - 6, 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, - 0, 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, - 64, 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, - 3, 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2, - 6, 0, 3, 104, 144, 0, 0, 0, 6, 0, 10, 0, 0, 0, 12, 0, - 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, - 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, - 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, - 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, - 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, - 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, - 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, - 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, - 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, - 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, 12, 0, 10, 0, 0, 0, - 12, 0, 10, 0, 0, 0, 12, 0, 10, 11, 11, 22, 12, 0, 255, 255, - 224, 2, 0, 2, 0, 4, 0, 13, 0, 20, 128, 36, 64, 196, 32, 4, - 0, 4, 0, 4, 0, 11, 11, 22, 12, 0, 255, 249, 0, 138, 0, 171, - 224, 172, 64, 170, 64, 170, 64, 170, 64, 170, 128, 33, 0, 82, 128, 140, - 96, 11, 11, 22, 12, 0, 255, 36, 0, 36, 0, 63, 128, 68, 0, 132, - 0, 4, 0, 255, 224, 10, 0, 17, 0, 32, 128, 192, 96, 11, 11, 22, - 12, 0, 255, 36, 0, 36, 0, 63, 192, 68, 0, 4, 0, 255, 224, 9, - 0, 9, 0, 17, 32, 33, 32, 64, 224, 11, 11, 22, 12, 0, 255, 32, - 0, 61, 224, 81, 32, 145, 32, 17, 32, 255, 32, 17, 32, 41, 32, 37, - 224, 69, 32, 128, 0, 11, 11, 22, 12, 0, 255, 32, 128, 127, 192, 8, - 64, 255, 224, 17, 0, 32, 128, 95, 64, 128, 32, 63, 128, 0, 0, 127, - 192, 11, 11, 22, 12, 0, 255, 34, 64, 71, 224, 148, 128, 228, 128, 47, - 224, 68, 128, 244, 128, 7, 224, 52, 128, 196, 128, 7, 224, 11, 11, 22, - 12, 0, 255, 4, 128, 143, 224, 73, 0, 25, 0, 47, 192, 9, 0, 9, - 0, 47, 192, 73, 0, 137, 0, 15, 224, 11, 11, 22, 12, 0, 255, 16, - 0, 63, 128, 81, 0, 14, 0, 49, 128, 192, 96, 63, 128, 36, 128, 63, - 128, 36, 128, 63, 128, 11, 11, 22, 12, 0, 255, 34, 128, 250, 64, 7, - 224, 250, 128, 138, 128, 138, 128, 250, 128, 34, 128, 178, 128, 170, 160, 100, - 224, 11, 11, 22, 12, 0, 255, 34, 32, 71, 64, 146, 128, 239, 224, 34, - 0, 71, 192, 236, 64, 7, 192, 52, 64, 199, 192, 4, 64, 11, 11, 22, - 12, 0, 255, 8, 0, 15, 192, 8, 0, 8, 0, 255, 224, 8, 0, 14, - 0, 9, 128, 8, 64, 8, 0, 8, 0, 10, 11, 22, 12, 0, 255, 255, - 128, 0, 128, 0, 128, 128, 128, 128, 128, 255, 128, 128, 0, 128, 0, 128, - 64, 128, 64, 127, 192, 11, 11, 22, 12, 0, 255, 71, 192, 65, 0, 239, - 224, 65, 0, 69, 0, 105, 96, 201, 32, 77, 96, 73, 32, 79, 224, 200, - 32, 11, 11, 22, 12, 0, 255, 8, 0, 4, 0, 4, 0, 10, 0, 10, - 0, 10, 0, 17, 0, 17, 0, 32, 128, 64, 64, 128, 32, 11, 11, 22, - 12, 0, 255, 34, 64, 34, 0, 247, 224, 34, 0, 35, 224, 53, 32, 229, - 32, 37, 64, 40, 128, 41, 64, 114, 32, 11, 10, 20, 12, 0, 0, 68, - 64, 68, 64, 68, 64, 127, 192, 4, 0, 4, 0, 132, 32, 132, 32, 132, - 32, 255, 224, 11, 11, 22, 12, 0, 255, 4, 0, 0, 0, 127, 192, 4, - 0, 4, 0, 4, 0, 127, 192, 4, 0, 4, 0, 4, 0, 255, 224, 11, - 11, 22, 12, 0, 255, 255, 224, 17, 0, 1, 192, 254, 0, 72, 128, 37, - 0, 4, 0, 255, 224, 21, 0, 36, 128, 196, 96, 11, 11, 22, 12, 0, - 255, 17, 0, 127, 192, 68, 64, 127, 192, 68, 64, 127, 192, 4, 0, 255, - 224, 4, 0, 4, 0, 4, 0, 9, 11, 22, 12, 0, 255, 16, 0, 255, - 128, 128, 128, 128, 128, 255, 128, 128, 128, 128, 128, 255, 128, 128, 128, 128, - 128, 255, 128, 11, 11, 22, 12, 0, 255, 113, 0, 1, 0, 3, 224, 249, - 32, 33, 32, 65, 32, 81, 32, 137, 32, 250, 32, 2, 32, 4, 192, 11, - 11, 22, 12, 0, 255, 127, 192, 17, 0, 17, 0, 17, 0, 17, 0, 255, - 224, 17, 0, 17, 0, 33, 0, 33, 0, 65, 0, 11, 11, 22, 12, 0, - 255, 33, 0, 34, 0, 244, 64, 87, 224, 80, 32, 87, 192, 148, 64, 84, - 64, 36, 64, 87, 192, 148, 64, 11, 11, 22, 12, 0, 255, 17, 0, 10, - 0, 127, 192, 4, 0, 4, 0, 255, 224, 4, 0, 10, 0, 17, 0, 32, - 128, 192, 96, 10, 11, 22, 12, 0, 255, 95, 192, 0, 64, 132, 64, 132, - 64, 191, 64, 132, 64, 140, 64, 148, 64, 164, 64, 140, 64, 129, 192, 11, - 11, 22, 12, 0, 255, 36, 0, 39, 192, 36, 0, 36, 0, 255, 224, 0, - 0, 20, 64, 36, 128, 71, 0, 12, 0, 112, 0, 11, 11, 22, 12, 0, - 255, 36, 128, 4, 128, 15, 192, 228, 128, 36, 128, 63, 224, 36, 128, 36, - 128, 40, 128, 80, 0, 143, 224, 11, 11, 22, 12, 0, 255, 8, 0, 8, - 0, 255, 128, 136, 128, 136, 128, 255, 128, 136, 128, 136, 128, 255, 160, 136, - 32, 7, 224, 11, 11, 22, 12, 0, 255, 39, 128, 36, 128, 244, 128, 36, - 128, 116, 128, 108, 128, 164, 128, 36, 128, 36, 160, 40, 160, 48, 96, 10, - 11, 22, 12, 0, 255, 255, 192, 128, 64, 128, 64, 158, 64, 146, 64, 146, - 64, 158, 64, 128, 64, 128, 64, 255, 192, 128, 64, 11, 11, 22, 12, 0, - 255, 127, 192, 68, 0, 95, 192, 80, 64, 95, 192, 80, 64, 95, 192, 66, - 0, 74, 128, 82, 64, 166, 32, 11, 11, 22, 12, 0, 255, 4, 0, 7, - 224, 4, 0, 127, 192, 64, 64, 64, 64, 64, 64, 127, 192, 0, 0, 82, - 64, 137, 32, 11, 11, 22, 12, 0, 255, 71, 128, 36, 128, 4, 128, 4, - 128, 232, 96, 32, 0, 47, 192, 36, 64, 34, 128, 49, 0, 38, 192, 11, - 11, 22, 12, 0, 255, 127, 192, 74, 64, 127, 192, 4, 0, 255, 224, 4, - 0, 63, 128, 32, 128, 36, 128, 36, 128, 255, 224, 11, 11, 22, 12, 0, - 255, 34, 0, 79, 224, 72, 32, 79, 224, 200, 0, 79, 224, 74, 160, 90, - 160, 111, 224, 74, 160, 72, 96, 11, 11, 22, 12, 0, 255, 243, 192, 36, - 64, 42, 128, 241, 0, 34, 128, 101, 224, 114, 32, 165, 64, 32, 128, 35, - 0, 44, 0, 11, 11, 22, 12, 0, 255, 4, 0, 255, 224, 128, 32, 0, - 0, 255, 224, 4, 0, 36, 0, 39, 192, 36, 0, 84, 0, 143, 224, 11, - 11, 22, 12, 0, 255, 115, 224, 16, 128, 81, 0, 35, 224, 250, 32, 42, - 160, 34, 160, 34, 160, 32, 128, 33, 64, 98, 32, 11, 11, 22, 12, 0, - 255, 34, 0, 247, 128, 34, 128, 54, 128, 226, 160, 37, 160, 36, 96, 104, - 32, 0, 0, 82, 64, 137, 32, 11, 11, 22, 12, 0, 255, 115, 192, 66, - 0, 66, 0, 123, 224, 74, 64, 74, 64, 122, 64, 74, 64, 66, 64, 68, - 64, 136, 64, 11, 11, 22, 12, 0, 255, 8, 0, 255, 224, 8, 0, 31, - 192, 48, 64, 95, 192, 144, 64, 31, 192, 16, 64, 16, 64, 16, 192, 11, - 11, 22, 12, 0, 255, 2, 0, 127, 224, 66, 0, 66, 0, 95, 192, 66, - 0, 71, 0, 74, 128, 82, 64, 98, 32, 130, 0, 11, 11, 22, 12, 0, - 255, 243, 192, 150, 64, 145, 128, 166, 96, 161, 0, 151, 192, 145, 0, 149, - 0, 231, 224, 129, 0, 129, 0, 11, 11, 22, 12, 0, 255, 15, 128, 136, - 128, 79, 128, 8, 128, 143, 128, 64, 0, 31, 192, 53, 64, 85, 64, 149, - 64, 63, 224, 11, 11, 22, 12, 0, 255, 39, 224, 32, 128, 248, 128, 32, - 128, 32, 128, 56, 128, 224, 128, 32, 128, 32, 128, 32, 128, 97, 128, 11, - 11, 22, 12, 0, 255, 31, 224, 145, 0, 87, 192, 20, 64, 23, 192, 148, - 64, 87, 192, 17, 0, 85, 64, 153, 32, 35, 0, 11, 11, 22, 12, 0, - 255, 32, 128, 39, 224, 242, 64, 33, 128, 34, 64, 52, 32, 226, 64, 34, - 64, 34, 64, 34, 64, 100, 64, 11, 11, 22, 12, 0, 255, 65, 0, 65, - 0, 79, 224, 233, 32, 73, 32, 73, 32, 111, 224, 201, 32, 73, 32, 73, - 32, 207, 224, 11, 11, 22, 12, 0, 255, 33, 0, 241, 0, 79, 224, 169, - 32, 249, 32, 47, 224, 57, 32, 233, 32, 41, 32, 47, 224, 40, 32, 11, - 11, 22, 12, 0, 255, 143, 224, 73, 32, 9, 32, 203, 160, 73, 32, 79, - 224, 72, 32, 75, 160, 74, 160, 107, 160, 80, 224, 11, 11, 22, 12, 0, - 255, 127, 192, 4, 0, 68, 64, 36, 64, 36, 128, 4, 0, 255, 224, 4, - 0, 4, 0, 4, 0, 4, 0, 11, 11, 22, 12, 0, 255, 130, 0, 66, - 0, 31, 224, 194, 0, 95, 192, 82, 64, 95, 192, 71, 0, 74, 128, 82, - 64, 191, 224, 11, 11, 22, 12, 0, 255, 4, 0, 127, 224, 72, 128, 127, - 224, 72, 128, 79, 128, 64, 0, 95, 192, 72, 64, 71, 128, 152, 96, 11, - 11, 22, 12, 0, 255, 1, 0, 239, 224, 161, 0, 164, 64, 175, 224, 164, - 64, 175, 224, 169, 32, 233, 32, 2, 128, 12, 96, 11, 11, 22, 12, 0, - 255, 20, 192, 246, 160, 188, 96, 167, 128, 168, 128, 191, 224, 169, 32, 239, - 224, 9, 32, 15, 224, 9, 32, 11, 11, 22, 12, 0, 255, 127, 128, 64, - 128, 66, 128, 98, 128, 84, 128, 72, 128, 72, 128, 84, 160, 98, 160, 64, - 96, 128, 32, 11, 11, 22, 12, 0, 255, 4, 0, 127, 224, 64, 32, 127, - 224, 64, 0, 125, 224, 84, 32, 76, 160, 84, 96, 100, 160, 141, 96, 11, - 11, 22, 12, 0, 255, 130, 0, 95, 224, 4, 0, 8, 64, 159, 224, 64, - 32, 10, 128, 10, 128, 74, 160, 146, 160, 34, 96, 11, 11, 22, 12, 0, - 255, 65, 0, 79, 224, 232, 32, 66, 128, 68, 64, 104, 32, 199, 192, 65, - 0, 65, 0, 65, 0, 207, 224, 11, 11, 22, 12, 0, 255, 80, 32, 125, - 32, 145, 32, 255, 32, 17, 32, 125, 32, 85, 32, 85, 32, 84, 32, 92, - 32, 16, 224, 11, 11, 22, 12, 0, 255, 63, 128, 32, 128, 63, 128, 32, - 128, 255, 224, 72, 0, 123, 192, 73, 64, 121, 64, 72, 128, 251, 96, 11, - 11, 22, 12, 0, 255, 4, 0, 4, 0, 4, 0, 36, 128, 36, 64, 68, - 64, 68, 32, 132, 32, 4, 0, 4, 0, 28, 0, 11, 11, 22, 12, 0, - 255, 4, 0, 4, 0, 4, 0, 255, 224, 4, 0, 10, 0, 10, 0, 17, - 0, 17, 0, 32, 128, 192, 96, 9, 10, 20, 10, 0, 0, 136, 128, 73, - 0, 8, 0, 255, 128, 0, 128, 0, 128, 127, 128, 0, 128, 0, 128, 255, - 128, 11, 11, 22, 12, 0, 255, 33, 0, 18, 0, 255, 224, 0, 0, 120, - 128, 74, 128, 122, 128, 74, 128, 122, 128, 72, 128, 89, 128, 11, 11, 22, - 12, 0, 255, 39, 192, 0, 0, 0, 0, 239, 224, 33, 0, 34, 0, 36, - 64, 47, 224, 32, 32, 80, 0, 143, 224, 11, 11, 22, 12, 0, 255, 32, - 128, 39, 0, 249, 0, 33, 192, 119, 0, 33, 0, 249, 224, 39, 0, 113, - 32, 169, 32, 32, 224, 11, 11, 22, 12, 0, 255, 16, 64, 16, 64, 253, - 224, 16, 64, 56, 192, 53, 64, 82, 64, 148, 64, 16, 64, 16, 64, 16, - 192, 11, 11, 22, 12, 0, 255, 0, 64, 248, 64, 11, 224, 8, 64, 136, - 64, 82, 64, 81, 64, 33, 64, 80, 64, 72, 64, 137, 192, 10, 11, 22, - 12, 0, 255, 132, 0, 132, 64, 132, 128, 245, 0, 134, 0, 132, 0, 132, - 0, 148, 0, 164, 64, 196, 64, 131, 192, 11, 11, 22, 12, 0, 255, 17, - 32, 125, 0, 17, 0, 255, 224, 41, 0, 253, 64, 73, 64, 124, 128, 8, - 160, 253, 96, 10, 32, 11, 11, 22, 12, 0, 255, 23, 192, 36, 64, 36, - 64, 103, 192, 161, 0, 47, 224, 33, 0, 35, 128, 37, 64, 41, 32, 33, - 0, 11, 11, 22, 12, 0, 255, 8, 0, 255, 224, 16, 0, 39, 192, 32, - 128, 97, 0, 175, 224, 33, 0, 33, 0, 33, 0, 35, 0, 11, 11, 22, - 12, 0, 255, 36, 0, 47, 224, 180, 0, 164, 128, 164, 160, 170, 192, 42, - 128, 40, 128, 41, 64, 50, 64, 36, 32, 11, 11, 22, 12, 0, 255, 127, - 224, 128, 0, 63, 192, 32, 64, 63, 192, 16, 0, 31, 192, 16, 64, 40, - 128, 71, 0, 56, 224, 11, 11, 22, 12, 0, 255, 127, 224, 64, 0, 64, - 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 64, 0, 128, - 0, 11, 11, 22, 12, 0, 255, 255, 224, 4, 0, 127, 192, 68, 64, 127, - 192, 68, 64, 127, 192, 68, 0, 36, 0, 24, 0, 231, 224, 11, 11, 22, - 12, 0, 255, 17, 224, 253, 0, 69, 0, 41, 224, 253, 64, 17, 64, 125, - 64, 17, 64, 85, 64, 146, 64, 52, 64, 11, 11, 22, 12, 0, 255, 33, - 0, 95, 224, 64, 0, 207, 192, 64, 0, 79, 192, 64, 0, 79, 192, 72, - 64, 79, 192, 72, 64, 11, 11, 22, 12, 0, 255, 4, 0, 127, 192, 64, - 64, 127, 192, 64, 64, 127, 192, 64, 64, 127, 192, 4, 64, 82, 32, 191, - 160, 11, 11, 22, 12, 0, 255, 127, 192, 68, 64, 127, 192, 68, 64, 127, - 192, 4, 0, 27, 0, 224, 224, 17, 0, 17, 0, 97, 0, 11, 11, 22, - 12, 0, 255, 255, 224, 4, 0, 8, 0, 127, 224, 73, 32, 79, 32, 73, - 32, 79, 32, 73, 32, 73, 32, 127, 224, 11, 11, 22, 12, 0, 255, 253, - 224, 86, 64, 121, 64, 56, 128, 85, 64, 146, 32, 255, 224, 4, 0, 39, - 192, 36, 0, 255, 224, 11, 11, 22, 12, 0, 255, 251, 128, 82, 0, 123, - 224, 18, 64, 250, 64, 20, 64, 63, 128, 32, 128, 63, 128, 32, 128, 63, - 128, 11, 11, 22, 12, 0, 255, 31, 224, 32, 0, 39, 192, 100, 64, 167, - 192, 32, 0, 47, 224, 40, 32, 39, 192, 33, 0, 35, 0, 11, 11, 22, - 12, 0, 255, 243, 224, 130, 32, 130, 32, 250, 32, 130, 32, 130, 32, 138, - 32, 178, 32, 194, 224, 2, 0, 2, 0, 11, 11, 22, 12, 0, 255, 36, - 128, 70, 160, 149, 192, 228, 128, 39, 224, 68, 128, 245, 192, 6, 160, 52, - 128, 196, 128, 7, 224, 11, 11, 22, 12, 0, 255, 39, 192, 65, 0, 135, - 224, 224, 32, 34, 128, 69, 128, 242, 128, 15, 224, 48, 128, 193, 64, 2, - 32, 11, 11, 22, 12, 0, 255, 2, 0, 2, 0, 34, 0, 35, 192, 34, - 0, 34, 0, 34, 0, 34, 0, 34, 0, 34, 0, 255, 224, 9, 11, 22, - 12, 0, 255, 8, 0, 8, 0, 255, 128, 136, 128, 136, 128, 136, 128, 255, - 128, 136, 128, 136, 128, 136, 128, 255, 128, 11, 11, 22, 12, 0, 255, 33, - 0, 83, 160, 65, 0, 247, 224, 81, 0, 83, 192, 86, 64, 83, 192, 90, - 64, 83, 192, 66, 64, 11, 11, 22, 12, 0, 255, 127, 192, 4, 0, 4, - 0, 4, 0, 255, 224, 10, 0, 10, 0, 18, 0, 34, 32, 66, 32, 129, - 224, 11, 11, 22, 12, 0, 255, 17, 0, 33, 0, 47, 224, 97, 0, 163, - 128, 35, 128, 37, 64, 37, 64, 41, 32, 33, 0, 33, 0, 11, 11, 22, - 12, 0, 255, 247, 224, 148, 32, 244, 32, 151, 224, 148, 128, 244, 128, 151, - 224, 148, 128, 244, 160, 150, 96, 4, 32, 11, 11, 22, 12, 0, 255, 123, - 224, 148, 128, 4, 0, 127, 192, 4, 0, 255, 224, 1, 0, 255, 224, 33, - 0, 17, 0, 7, 0, 11, 11, 22, 12, 0, 255, 33, 0, 71, 192, 145, - 0, 47, 224, 96, 128, 175, 224, 32, 128, 36, 128, 34, 128, 32, 128, 35, - 128, 11, 11, 22, 12, 0, 255, 39, 192, 36, 64, 247, 192, 46, 224, 42, - 160, 62, 224, 225, 0, 47, 224, 35, 128, 37, 64, 105, 32, 11, 11, 22, - 12, 0, 255, 20, 0, 39, 224, 42, 0, 98, 0, 163, 192, 34, 0, 34, - 0, 35, 224, 34, 0, 34, 0, 34, 0 -}; diff --git a/lib/Marlin/dogm_font_data_ISO10646_Greek.h b/lib/Marlin/dogm_font_data_ISO10646_Greek.h deleted file mode 100644 index 0abb08d..0000000 --- a/lib/Marlin/dogm_font_data_ISO10646_Greek.h +++ /dev/null @@ -1,206 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/* - Fontname: ISO10646_4_Greek - Copyright: A. Hardtung, public domain - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 5 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len=10 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-1 - X Font ascent = 7 descent=-1 - Max Font ascent = 8 descent=-2 -*/ -#include -const u8g_fntpgm_uint8_t ISO10646_Greek_5x7[2728] U8G_SECTION(".progmem.ISO10646_Greek_5x7") = { - 0,6,9,0,254,7,1,145,3,32,32,255,255,8,254,7, - 255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128, - 128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6, - 0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32, - 120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32, - 64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104, - 2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32, - 64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32, - 32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5, - 5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192, - 64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192, - 192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6, - 0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64, - 192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112, - 128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240, - 5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7, - 6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0, - 48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16, - 32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136, - 112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5, - 5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192, - 192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64, - 32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1, - 0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136, - 8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168, - 112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7, - 7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0, - 0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144, - 136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128, - 128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5, - 7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6, - 0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128, - 128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16, - 16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136, - 5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7, - 6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0, - 136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136, - 136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128, - 128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7, - 7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0, - 0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32, - 32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136, - 136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5, - 7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6, - 0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136, - 136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32, - 64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224, - 5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1, - 0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80, - 136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64, - 5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0, - 0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128, - 128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120, - 5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0, - 0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136, - 136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136, - 136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8, - 8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6, - 0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192, - 64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168, - 168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6, - 0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136, - 240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5, - 5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0, - 112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64, - 72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5, - 6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136, - 168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6, - 6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0, - 248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64, - 64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3, - 7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6, - 0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0, - 0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6, - 0,0,2,2,2,6,1,6,64,128,3,3,3,6,1,5, - 32,64,160,5,8,8,6,0,0,64,160,80,80,136,248,136, - 136,2,2,2,6,1,2,192,192,5,8,8,6,0,0,64, - 128,248,128,240,128,128,248,5,8,8,6,0,0,64,128,136, - 136,248,136,136,136,4,8,8,6,0,0,64,128,112,32,32, - 32,32,112,0,0,0,6,0,0,5,8,8,6,0,0,64, - 128,112,136,136,136,136,112,0,0,0,6,0,0,5,8,8, - 6,0,0,64,128,8,136,112,32,32,32,5,8,8,6,0, - 0,64,128,112,136,136,136,80,216,3,8,8,6,1,0,32, - 64,160,0,64,64,64,32,5,7,7,6,0,0,32,80,136, - 136,248,136,136,5,7,7,6,0,0,240,72,72,112,72,72, - 240,5,7,7,6,0,0,248,128,128,128,128,128,128,5,6, - 6,6,0,0,32,80,80,136,136,248,5,7,7,6,0,0, - 248,128,128,240,128,128,248,5,7,7,6,0,0,248,8,16, - 32,64,128,248,5,7,7,6,0,0,136,136,136,248,136,136, - 136,5,7,7,6,0,0,112,136,136,168,136,136,112,3,7, - 7,6,1,0,224,64,64,64,64,64,224,5,7,7,6,0, - 0,136,144,160,192,160,144,136,5,7,7,6,0,0,32,80, - 136,136,136,136,136,5,7,7,6,0,0,136,216,168,168,136, - 136,136,5,7,7,6,0,0,136,200,200,168,152,152,136,5, - 7,7,6,0,0,248,0,0,112,0,0,248,5,7,7,6, - 0,0,112,136,136,136,136,136,112,5,7,7,6,0,0,248, - 80,80,80,80,80,80,5,7,7,6,0,0,240,136,136,240, - 128,128,128,0,0,0,6,0,0,5,7,7,6,0,0,248, - 128,64,32,64,128,248,5,7,7,6,0,0,248,32,32,32, - 32,32,32,5,7,7,6,0,0,136,136,80,32,32,32,32, - 5,7,7,6,0,0,112,32,112,168,112,32,112,5,7,7, - 6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0, - 168,168,168,168,112,32,32,5,6,6,6,0,0,112,136,136, - 80,80,216,3,8,8,6,1,0,160,0,224,64,64,64,64, - 224,5,8,8,6,0,0,80,0,136,136,136,80,32,32,5, - 8,8,6,0,0,32,64,8,104,152,144,144,104,5,8,8, - 6,0,0,32,64,0,112,136,224,136,112,5,10,10,6,0, - 254,32,64,0,112,136,136,136,136,8,8,2,8,8,6,1, - 0,64,128,0,128,128,128,128,64,5,8,8,6,0,0,16, - 32,80,0,136,136,136,112,5,6,6,6,0,0,8,104,152, - 144,144,104,4,7,7,6,0,254,96,144,240,144,224,128,128, - 5,6,6,6,0,255,136,72,80,32,32,64,5,6,6,6, - 0,0,48,64,112,136,136,112,5,5,5,6,0,0,112,136, - 224,136,112,5,9,9,6,0,254,128,112,64,128,128,128,112, - 8,112,5,7,7,6,0,254,184,200,136,136,136,8,8,5, - 5,5,6,0,0,112,136,248,136,112,3,5,5,6,1,0, - 128,128,128,128,96,4,5,5,6,0,0,144,160,192,160,144, - 5,6,6,6,0,0,64,32,32,80,80,136,5,7,7,6, - 0,254,136,136,136,216,168,128,128,5,5,5,6,0,0,136, - 136,80,96,32,5,10,10,6,0,254,128,224,128,112,32,64, - 128,112,8,112,5,5,5,6,0,0,112,136,136,136,112,5, - 5,5,6,0,0,248,80,80,80,80,5,7,7,6,0,254, - 112,136,136,200,176,128,128,5,7,7,6,0,254,48,64,128, - 64,48,8,112,5,5,5,6,0,0,104,144,144,144,96,4, - 5,5,6,0,0,240,64,64,64,48,5,5,5,6,0,0, - 136,136,144,144,224,5,8,8,6,0,254,48,168,168,168,168, - 112,32,32,5,6,6,6,0,255,136,80,32,32,80,136,5, - 7,7,6,0,254,168,168,168,168,112,32,32,5,5,5,6, - 0,0,80,136,136,168,112,4,7,7,6,0,0,160,0,64, - 64,64,64,48,5,7,7,6,0,0,80,0,136,136,144,144, - 224,4,8,8,6,0,0,32,64,0,96,144,144,144,96,5, - 8,8,6,0,0,32,64,0,136,136,144,144,96,5,8,8, - 6,0,0,32,64,0,80,136,136,168,112,5,7,7,6,0, - 255,144,160,192,160,144,136,16,5,8,8,6,0,0,96,144, - 160,128,240,136,136,112,5,7,7,6,0,0,112,80,56,144, - 144,144,96,5,6,6,6,0,0,152,80,32,32,32,32,5, - 8,8,6,0,0,64,128,152,80,32,32,32,32,5,8,8, - 6,0,0,80,0,152,80,32,32,32,32,5,7,7,6,0, - 255,48,168,168,168,168,112,32,5,5,5,6,0,0,248,80, - 80,80,88,5,6,6,6,0,255,136,80,112,80,136,16,5, - 7,7,6,0,255,112,136,136,136,112,32,112,5,6,6,6, - 0,255,112,136,136,112,32,112,5,6,6,6,0,0,112,136, - 128,112,32,112,5,7,7,6,0,254,8,112,128,128,112,16, - 96,5,6,6,6,0,0,248,128,128,240,128,128,4,5,5, - 6,0,0,240,128,224,128,128,5,6,6,6,0,0,248,0, - 0,112,0,248,4,5,5,6,0,0,64,128,240,16,32,5, - 7,7,6,0,0,224,80,40,40,8,8,16,5,7,7,6, - 0,0,192,32,80,40,8,8,8,5,8,8,6,0,254,168, - 168,168,168,168,88,8,112,5,7,7,6,0,254,168,168,168, - 168,88,8,112,5,6,6,6,0,0,104,136,136,120,8,8, - 5,6,6,6,0,255,104,136,136,120,8,8,4,8,8,6, - 0,254,128,224,144,144,144,144,32,192,5,5,5,6,0,0, - 104,144,112,16,224,5,6,6,6,0,0,96,144,16,96,136, - 112,4,6,6,6,0,0,96,144,16,96,128,112,5,6,6, - 6,0,0,136,80,32,80,136,248,5,5,5,6,0,0,136, - 80,32,80,112,5,6,6,6,0,0,120,128,240,136,136,112, - 4,5,5,6,0,0,240,128,224,144,96,3,6,6,6,1, - 0,64,224,64,64,64,64,3,6,6,6,1,255,64,224,64, - 64,64,128,5,5,5,6,0,0,136,80,112,80,136,5,7, - 7,6,0,254,112,136,136,136,240,128,112,4,5,5,6,0, - 0,112,128,128,128,112,2,8,8,6,1,255,64,0,192,64, - 64,64,64,128,5,7,7,6,0,0,112,136,136,248,136,136, - 112,4,5,5,6,0,0,112,128,224,128,112,4,5,5,6, - 0,0,224,16,112,16,224,5,7,7,6,0,0,128,240,136, - 136,136,240,128,4,7,7,6,0,255,128,224,144,144,144,224, - 128,5,6,6,6,0,0,112,136,128,128,136,112,5,6,6, - 6,0,0,136,216,168,136,136,136,5,7,7,6,0,254,136, - 216,168,136,136,128,128,5,8,8,6,0,254,112,136,136,136, - 112,64,224,64,5,6,6,6,0,0,112,136,8,8,136,112, - 5,6,6,6,0,0,112,136,160,128,136,112,5,6,6,6, - 0,0,112,136,40,8,136,112}; diff --git a/lib/Marlin/dogm_font_data_ISO10646_Kana.h b/lib/Marlin/dogm_font_data_ISO10646_Kana.h deleted file mode 100644 index 6968374..0000000 --- a/lib/Marlin/dogm_font_data_ISO10646_Kana.h +++ /dev/null @@ -1,192 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: ISO10646_Kana - Copyright: A. Hardtung, public domain - Capital A Height: 7, '1' Height: 7 - Calculated Max Values w= 5 h= 8 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 8 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 - Pure Font ascent = 7 descent=-1 - X Font ascent = 7 descent=-1 - Max Font ascent = 8 descent=-1 -*/ -#include -const u8g_fntpgm_uint8_t ISO10646_Kana_5x7[2482] U8G_SECTION(".progmem.ISO10646_Kana_5x7") = { - 0, 6, 9, 0, 254, 7, 1, 145, 3, 32, 32, 255, 255, 8, 255, 7, - 255, 0, 0, 0, 6, 0, 0, 1, 7, 7, 6, 2, 0, 128, 128, 128, - 128, 128, 0, 128, 3, 2, 2, 6, 1, 5, 160, 160, 5, 7, 7, 6, - 0, 0, 80, 80, 248, 80, 248, 80, 80, 5, 7, 7, 6, 0, 0, 32, - 120, 160, 112, 40, 240, 32, 5, 7, 7, 6, 0, 0, 192, 200, 16, 32, - 64, 152, 24, 5, 7, 7, 6, 0, 0, 96, 144, 160, 64, 168, 144, 104, - 2, 3, 3, 6, 1, 4, 192, 64, 128, 3, 7, 7, 6, 1, 0, 32, - 64, 128, 128, 128, 64, 32, 3, 7, 7, 6, 1, 0, 128, 64, 32, 32, - 32, 64, 128, 5, 5, 5, 6, 0, 1, 32, 168, 112, 168, 32, 5, 5, - 5, 6, 0, 1, 32, 32, 248, 32, 32, 2, 3, 3, 6, 2, 255, 192, - 64, 128, 5, 1, 1, 6, 0, 3, 248, 2, 2, 2, 6, 2, 0, 192, - 192, 5, 5, 5, 6, 0, 1, 8, 16, 32, 64, 128, 5, 7, 7, 6, - 0, 0, 112, 136, 152, 168, 200, 136, 112, 3, 7, 7, 6, 1, 0, 64, - 192, 64, 64, 64, 64, 224, 5, 7, 7, 6, 0, 0, 112, 136, 8, 112, - 128, 128, 248, 5, 7, 7, 6, 0, 0, 248, 16, 32, 16, 8, 8, 240, - 5, 7, 7, 6, 0, 0, 16, 48, 80, 144, 248, 16, 16, 5, 7, 7, - 6, 0, 0, 248, 128, 240, 8, 8, 136, 112, 5, 7, 7, 6, 0, 0, - 48, 64, 128, 240, 136, 136, 112, 5, 7, 7, 6, 0, 0, 248, 8, 16, - 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 112, 136, 136, 112, 136, 136, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 120, 8, 16, 96, 2, 5, - 5, 6, 2, 0, 192, 192, 0, 192, 192, 2, 6, 6, 6, 2, 255, 192, - 192, 0, 192, 64, 128, 4, 7, 7, 6, 0, 0, 16, 32, 64, 128, 64, - 32, 16, 5, 3, 3, 6, 0, 2, 248, 0, 248, 4, 7, 7, 6, 1, - 0, 128, 64, 32, 16, 32, 64, 128, 5, 7, 7, 6, 0, 0, 112, 136, - 8, 16, 32, 0, 32, 5, 6, 6, 6, 0, 0, 112, 136, 8, 104, 168, - 112, 5, 7, 7, 6, 0, 0, 112, 136, 136, 248, 136, 136, 136, 5, 7, - 7, 6, 0, 0, 240, 136, 136, 240, 136, 136, 240, 5, 7, 7, 6, 0, - 0, 112, 136, 128, 128, 128, 136, 112, 5, 7, 7, 6, 0, 0, 224, 144, - 136, 136, 136, 144, 224, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, - 128, 248, 5, 7, 7, 6, 0, 0, 248, 128, 128, 240, 128, 128, 128, 5, - 7, 7, 6, 0, 0, 112, 136, 128, 184, 136, 136, 112, 5, 7, 7, 6, - 0, 0, 136, 136, 136, 248, 136, 136, 136, 1, 7, 7, 6, 2, 0, 128, - 128, 128, 128, 128, 128, 128, 5, 7, 7, 6, 0, 0, 56, 16, 16, 16, - 16, 144, 96, 5, 7, 7, 6, 0, 0, 136, 144, 160, 192, 160, 144, 136, - 5, 7, 7, 6, 0, 0, 128, 128, 128, 128, 128, 128, 248, 5, 7, 7, - 6, 0, 0, 136, 216, 168, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, - 136, 136, 200, 168, 152, 136, 136, 5, 7, 7, 6, 0, 0, 112, 136, 136, - 136, 136, 136, 112, 5, 7, 7, 6, 0, 0, 240, 136, 136, 240, 128, 128, - 128, 5, 7, 7, 6, 0, 0, 112, 136, 136, 136, 168, 144, 104, 5, 7, - 7, 6, 0, 0, 240, 136, 136, 240, 160, 144, 136, 5, 7, 7, 6, 0, - 0, 120, 128, 128, 112, 8, 8, 240, 5, 7, 7, 6, 0, 0, 248, 32, - 32, 32, 32, 32, 32, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, - 136, 112, 5, 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 80, 32, 5, - 7, 7, 6, 0, 0, 136, 136, 136, 136, 136, 168, 80, 5, 7, 7, 6, - 0, 0, 136, 136, 80, 32, 80, 136, 136, 5, 7, 7, 6, 0, 0, 136, - 136, 136, 80, 32, 32, 32, 5, 7, 7, 6, 0, 0, 248, 8, 16, 32, - 64, 128, 248, 3, 7, 7, 6, 1, 0, 224, 128, 128, 128, 128, 128, 224, - 5, 5, 5, 6, 0, 1, 128, 64, 32, 16, 8, 3, 7, 7, 6, 1, - 0, 224, 32, 32, 32, 32, 32, 224, 5, 3, 3, 6, 0, 4, 32, 80, - 136, 5, 1, 1, 6, 0, 0, 248, 2, 2, 2, 6, 2, 5, 128, 64, - 5, 5, 5, 6, 0, 0, 112, 8, 120, 136, 120, 5, 7, 7, 6, 0, - 0, 128, 128, 176, 200, 136, 136, 240, 5, 5, 5, 6, 0, 0, 112, 128, - 128, 136, 112, 5, 7, 7, 6, 0, 0, 8, 8, 104, 152, 136, 136, 120, - 5, 5, 5, 6, 0, 0, 112, 136, 248, 128, 112, 5, 7, 7, 6, 0, - 0, 48, 72, 224, 64, 64, 64, 64, 5, 6, 6, 6, 0, 255, 112, 136, - 136, 120, 8, 112, 5, 7, 7, 6, 0, 0, 128, 128, 176, 200, 136, 136, - 136, 1, 7, 7, 6, 2, 0, 128, 0, 128, 128, 128, 128, 128, 3, 8, - 8, 6, 1, 255, 32, 0, 32, 32, 32, 32, 160, 64, 4, 7, 7, 6, - 0, 0, 128, 128, 144, 160, 192, 160, 144, 3, 7, 7, 6, 1, 0, 192, - 64, 64, 64, 64, 64, 224, 5, 5, 5, 6, 0, 0, 208, 168, 168, 168, - 168, 5, 5, 5, 6, 0, 0, 176, 200, 136, 136, 136, 5, 5, 5, 6, - 0, 0, 112, 136, 136, 136, 112, 5, 6, 6, 6, 0, 255, 240, 136, 136, - 240, 128, 128, 5, 6, 6, 6, 0, 255, 120, 136, 136, 120, 8, 8, 5, - 5, 5, 6, 0, 0, 176, 200, 128, 128, 128, 5, 5, 5, 6, 0, 0, - 112, 128, 112, 8, 240, 5, 7, 7, 6, 0, 0, 64, 64, 224, 64, 64, - 72, 48, 5, 5, 5, 6, 0, 0, 136, 136, 136, 152, 104, 5, 5, 5, - 6, 0, 0, 136, 136, 136, 80, 32, 5, 5, 5, 6, 0, 0, 136, 136, - 168, 168, 80, 5, 5, 5, 6, 0, 0, 136, 80, 32, 80, 136, 5, 6, - 6, 6, 0, 255, 136, 136, 136, 120, 8, 112, 5, 5, 5, 6, 0, 0, - 248, 16, 32, 64, 248, 3, 7, 7, 6, 1, 0, 32, 64, 64, 128, 64, - 64, 32, 1, 7, 7, 6, 2, 0, 128, 128, 128, 128, 128, 128, 128, 3, - 7, 7, 6, 1, 0, 128, 64, 64, 32, 64, 64, 128, 5, 2, 2, 6, - 0, 3, 104, 144, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, - 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 5, 3, 3, 6, 0, 1, - 248, 0, 248, 4, 4, 4, 6, 0, 0, 240, 16, 96, 64, 5, 6, 6, - 6, 0, 0, 248, 8, 40, 48, 32, 64, 3, 4, 4, 6, 1, 0, 32, - 64, 192, 64, 4, 6, 6, 6, 0, 0, 16, 32, 96, 160, 32, 32, 4, - 4, 4, 6, 0, 0, 32, 240, 144, 32, 5, 6, 6, 6, 0, 0, 32, - 248, 136, 8, 16, 32, 3, 4, 4, 6, 1, 0, 224, 64, 64, 224, 5, - 5, 5, 6, 0, 0, 248, 32, 32, 32, 248, 4, 4, 4, 6, 0, 0, - 32, 240, 96, 160, 5, 6, 6, 6, 0, 0, 16, 248, 48, 80, 144, 16, - 5, 6, 6, 6, 0, 0, 64, 248, 72, 72, 72, 144, 5, 8, 8, 6, - 0, 0, 40, 0, 64, 248, 72, 72, 72, 144, 5, 6, 6, 6, 0, 0, - 32, 248, 32, 248, 32, 32, 5, 8, 8, 6, 0, 0, 40, 0, 32, 248, - 32, 248, 32, 32, 4, 5, 5, 6, 0, 0, 112, 144, 16, 32, 192, 5, - 7, 7, 6, 0, 0, 40, 0, 112, 144, 16, 32, 192, 5, 6, 6, 6, - 0, 0, 64, 120, 144, 16, 16, 32, 5, 8, 8, 6, 0, 0, 40, 0, - 64, 120, 144, 16, 16, 32, 5, 5, 5, 6, 0, 0, 248, 8, 8, 8, - 248, 5, 7, 7, 6, 0, 0, 40, 0, 248, 8, 8, 8, 248, 5, 6, - 6, 6, 0, 0, 80, 248, 80, 16, 32, 64, 5, 8, 8, 6, 0, 0, - 40, 0, 80, 248, 80, 16, 32, 64, 5, 5, 5, 6, 0, 0, 192, 8, - 200, 16, 224, 5, 7, 7, 6, 0, 0, 40, 0, 192, 8, 200, 16, 224, - 5, 5, 5, 6, 0, 0, 248, 16, 32, 80, 136, 5, 7, 7, 6, 0, - 0, 40, 0, 248, 16, 32, 80, 136, 5, 6, 6, 6, 0, 0, 64, 248, - 72, 80, 64, 56, 5, 8, 8, 6, 0, 0, 40, 0, 64, 248, 72, 80, - 64, 56, 5, 5, 5, 6, 0, 0, 136, 136, 72, 16, 96, 5, 7, 7, - 6, 0, 0, 40, 0, 136, 136, 72, 16, 96, 5, 5, 5, 6, 0, 0, - 120, 72, 168, 16, 96, 5, 7, 7, 6, 0, 0, 40, 0, 120, 72, 168, - 16, 96, 5, 6, 6, 6, 0, 0, 16, 224, 32, 248, 32, 64, 5, 8, - 8, 6, 0, 0, 40, 0, 16, 224, 32, 248, 32, 64, 5, 4, 4, 6, - 0, 0, 168, 168, 8, 48, 5, 5, 5, 6, 0, 0, 168, 168, 8, 16, - 32, 5, 7, 7, 6, 0, 0, 40, 0, 168, 168, 8, 16, 32, 5, 6, - 6, 6, 0, 0, 112, 0, 248, 32, 32, 64, 5, 8, 8, 6, 0, 0, - 40, 0, 112, 0, 248, 32, 32, 64, 3, 6, 6, 6, 1, 0, 128, 128, - 192, 160, 128, 128, 4, 8, 8, 6, 1, 0, 80, 0, 128, 128, 192, 160, - 128, 128, 5, 6, 6, 6, 0, 0, 32, 248, 32, 32, 64, 128, 5, 5, - 5, 6, 0, 0, 112, 0, 0, 0, 248, 5, 5, 5, 6, 0, 0, 248, - 8, 80, 32, 208, 5, 6, 6, 6, 0, 0, 32, 248, 16, 32, 112, 168, - 3, 6, 6, 6, 1, 0, 32, 32, 32, 32, 64, 128, 5, 5, 5, 6, - 0, 0, 16, 136, 136, 136, 136, 5, 7, 7, 6, 0, 0, 40, 0, 16, - 136, 136, 136, 136, 5, 8, 8, 6, 0, 0, 24, 24, 0, 16, 136, 136, - 136, 136, 5, 6, 6, 6, 0, 0, 128, 128, 248, 128, 128, 120, 5, 7, - 7, 6, 0, 0, 40, 128, 128, 248, 128, 128, 120, 5, 7, 7, 6, 0, - 0, 24, 152, 128, 248, 128, 128, 120, 5, 5, 5, 6, 0, 0, 248, 8, - 8, 16, 96, 5, 7, 7, 6, 0, 0, 40, 0, 248, 8, 8, 16, 96, - 5, 8, 8, 6, 0, 0, 24, 24, 0, 248, 8, 8, 16, 96, 5, 4, - 4, 6, 0, 1, 64, 160, 16, 8, 5, 6, 6, 6, 0, 1, 40, 0, - 64, 160, 16, 8, 5, 6, 6, 6, 0, 1, 24, 24, 64, 160, 16, 8, - 5, 6, 6, 6, 0, 0, 32, 248, 32, 168, 168, 32, 5, 8, 8, 6, - 0, 0, 40, 0, 32, 248, 32, 168, 168, 32, 5, 8, 8, 6, 0, 0, - 24, 24, 32, 248, 32, 168, 168, 32, 5, 5, 5, 6, 0, 0, 248, 8, - 80, 32, 16, 4, 5, 5, 6, 1, 0, 224, 0, 224, 0, 240, 5, 5, - 5, 6, 0, 0, 32, 64, 136, 248, 8, 5, 5, 5, 6, 0, 0, 8, - 40, 16, 40, 192, 5, 5, 5, 6, 0, 0, 248, 64, 248, 64, 56, 5, - 4, 4, 6, 0, 0, 64, 248, 80, 64, 5, 6, 6, 6, 0, 0, 64, - 248, 72, 80, 64, 64, 4, 4, 4, 6, 0, 0, 96, 32, 32, 240, 5, - 5, 5, 6, 0, 0, 112, 16, 16, 16, 248, 4, 5, 5, 6, 0, 0, - 240, 16, 240, 16, 240, 5, 5, 5, 6, 0, 0, 248, 8, 248, 8, 248, - 5, 6, 6, 6, 0, 0, 112, 0, 248, 8, 16, 32, 4, 6, 6, 6, - 0, 0, 144, 144, 144, 144, 16, 32, 5, 5, 5, 6, 0, 0, 32, 160, - 168, 168, 176, 4, 5, 5, 6, 0, 0, 128, 128, 144, 160, 192, 5, 5, - 5, 6, 0, 0, 248, 136, 136, 136, 248, 4, 4, 4, 6, 0, 0, 240, - 144, 16, 32, 5, 5, 5, 6, 0, 0, 248, 136, 8, 16, 32, 5, 6, - 6, 6, 0, 0, 16, 248, 80, 80, 248, 16, 5, 5, 5, 6, 0, 0, - 248, 8, 48, 32, 248, 5, 5, 5, 6, 0, 0, 248, 8, 248, 8, 48, - 5, 5, 5, 6, 0, 0, 192, 8, 8, 16, 224, 5, 8, 8, 6, 0, - 0, 40, 0, 32, 248, 136, 8, 16, 32, 4, 4, 4, 6, 0, 0, 64, - 240, 80, 160, 4, 4, 4, 6, 0, 0, 64, 240, 32, 64, 5, 7, 7, - 6, 0, 0, 40, 0, 248, 136, 8, 16, 96, 5, 8, 8, 6, 0, 0, - 40, 0, 16, 248, 80, 80, 248, 16, 5, 7, 7, 6, 0, 0, 40, 0, - 248, 8, 48, 32, 248, 5, 7, 7, 6, 0, 0, 40, 0, 248, 8, 248, - 8, 48, 2, 2, 2, 6, 2, 2, 192, 192, 5, 1, 1, 6, 0, 2, - 248, 5, 4, 4, 6, 0, 1, 128, 96, 16, 8, 5, 5, 5, 6, 0, - 1, 40, 128, 96, 16, 8, 5, 6, 6, 6, 0, 0, 248, 8, 8, 8, - 8, 8 -}; diff --git a/lib/Marlin/dogm_font_data_Marlin_symbols.h b/lib/Marlin/dogm_font_data_Marlin_symbols.h deleted file mode 100644 index ad9b983..0000000 --- a/lib/Marlin/dogm_font_data_Marlin_symbols.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - Fontname: Marlin_symbols - Copyright: Created with Fony 1.4.7 - Capital A Height: 0, '1' Height: 0 - Calculated Max Values w= 5 h=10 x= 0 y= 3 dx= 6 dy= 0 ascent= 8 len=10 - Font Bounding box w= 6 h= 9 x= 0 y=-2 - Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 - Pure Font ascent = 0 descent= 0 - X Font ascent = 0 descent= 0 - Max Font ascent = 8 descent=-2 -*/ -#include -const u8g_fntpgm_uint8_t Marlin_symbols[140] U8G_SECTION(".progmem.Marlin_symbols") = { - 0, 6, 9, 0, 254, 0, 0, 0, 0, 0, 1, 9, 0, 8, 254, 0, - 0, 5, 8, 8, 6, 0, 0, 64, 240, 200, 136, 136, 152, 120, 16, 5, - 8, 8, 6, 0, 0, 192, 248, 136, 136, 136, 136, 136, 248, 5, 5, 5, - 6, 0, 1, 32, 48, 248, 48, 32, 5, 8, 8, 6, 0, 0, 32, 112, - 248, 32, 32, 32, 32, 224, 5, 9, 9, 6, 0, 255, 32, 112, 168, 168, - 184, 136, 136, 112, 32, 5, 9, 9, 6, 0, 255, 224, 128, 192, 176, 168, - 40, 48, 40, 40, 5, 9, 9, 6, 0, 255, 248, 168, 136, 136, 136, 136, - 136, 168, 248, 5, 10, 10, 6, 0, 254, 32, 80, 80, 80, 80, 136, 168, - 168, 136, 112, 3, 3, 3, 6, 0, 3, 64, 160, 64 -}; diff --git a/lib/Marlin/duration_t.h b/lib/Marlin/duration_t.h deleted file mode 100644 index 25ea9bb..0000000 --- a/lib/Marlin/duration_t.h +++ /dev/null @@ -1,155 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __DURATION_T__ -#define __DURATION_T__ - -struct duration_t { - /** - * @brief Duration is stored in seconds - */ - uint32_t value; - - /** - * @brief Constructor - */ - duration_t() - : duration_t(0) {}; - - /** - * @brief Constructor - * - * @param seconds The number of seconds - */ - duration_t(uint32_t const &seconds) { - this->value = seconds; - } - - /** - * @brief Equality comparison - * @details Overloads the equality comparison operator - * - * @param value The number of seconds to compare to - * @return True if both durations are equal - */ - bool operator==(const uint32_t &value) const { - return (this->value == value); - } - - /** - * @brief Inequality comparison - * @details Overloads the inequality comparison operator - * - * @param value The number of seconds to compare to - * @return False if both durations are equal - */ - bool operator!=(const uint32_t &value) const { - return ! this->operator==(value); - } - - /** - * @brief Formats the duration as years - * @return The number of years - */ - inline uint8_t year() const { - return this->day() / 365; - } - - /** - * @brief Formats the duration as days - * @return The number of days - */ - inline uint16_t day() const { - return this->hour() / 24; - } - - /** - * @brief Formats the duration as hours - * @return The number of hours - */ - inline uint32_t hour() const { - return this->minute() / 60; - } - - /** - * @brief Formats the duration as minutes - * @return The number of minutes - */ - inline uint32_t minute() const { - return this->second() / 60; - } - - /** - * @brief Formats the duration as seconds - * @return The number of seconds - */ - inline uint32_t second() const { - return this->value; - } - - /** - * @brief Formats the duration as a string - * @details String will be formated using a "full" representation of duration - * - * @param buffer The array pointed to must be able to accommodate 21 bytes - * - * Output examples: - * 123456789012345678901 (strlen) - * 135y 364d 23h 59m 59s - * 364d 23h 59m 59s - * 23h 59m 59s - * 59m 59s - * 59s - */ - void toString(char *buffer) const { - int y = this->year(), - d = this->day() % 365, - h = this->hour() % 24, - m = this->minute() % 60, - s = this->second() % 60; - - if (y) sprintf_P(buffer, PSTR("%iy %id %ih %im %is"), y, d, h, m, s); - else if (d) sprintf_P(buffer, PSTR("%id %ih %im %is"), d, h, m, s); - else if (h) sprintf_P(buffer, PSTR("%ih %im %is"), h, m, s); - else if (m) sprintf_P(buffer, PSTR("%im %is"), m, s); - else sprintf_P(buffer, PSTR("%is"), s); - } - - /** - * @brief Formats the duration as a string - * @details String will be formated using a "digital" representation of duration - * - * @param buffer The array pointed to must be able to accommodate 10 bytes - * - * Output examples: - * 1234567890 (strlen) - * 1193046:59 - */ - void toDigital(char *buffer) const { - int h = this->hour() % 24, - m = this->minute() % 60; - - sprintf_P(buffer, PSTR("%02i:%02i"), h, m); - } -}; - -#endif // __DURATION_T__ diff --git a/lib/Marlin/endstops.cpp b/lib/Marlin/endstops.cpp deleted file mode 100644 index 6cee905..0000000 --- a/lib/Marlin/endstops.cpp +++ /dev/null @@ -1,382 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * endstops.cpp - A singleton object to manage endstops - */ - -#include "Marlin.h" -#include "cardreader.h" -#include "endstops.h" -#include "temperature.h" -#include "stepper.h" -#include "ultralcd.h" - -// TEST_ENDSTOP: test the old and the current status of an endstop -#define TEST_ENDSTOP(ENDSTOP) (TEST(current_endstop_bits & old_endstop_bits, ENDSTOP)) - -Endstops endstops; - -// public: - -bool Endstops::enabled = true, - Endstops::enabled_globally = - #if ENABLED(ENDSTOPS_ALWAYS_ON_DEFAULT) - (true) - #else - (false) - #endif - ; -volatile char Endstops::endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value - -#if ENABLED(Z_DUAL_ENDSTOPS) - uint16_t -#else - byte -#endif - Endstops::current_endstop_bits = 0, - Endstops::old_endstop_bits = 0; - -#if HAS_BED_PROBE - volatile bool Endstops::z_probe_enabled = false; -#endif - -/** - * Class and Instance Methods - */ - -void Endstops::init() { - - #if HAS_X_MIN - SET_INPUT(X_MIN_PIN); - #if ENABLED(ENDSTOPPULLUP_XMIN) - WRITE(X_MIN_PIN,HIGH); - #endif - #endif - - #if HAS_Y_MIN - SET_INPUT(Y_MIN_PIN); - #if ENABLED(ENDSTOPPULLUP_YMIN) - WRITE(Y_MIN_PIN,HIGH); - #endif - #endif - - #if HAS_Z_MIN - SET_INPUT(Z_MIN_PIN); - #if ENABLED(ENDSTOPPULLUP_ZMIN) - WRITE(Z_MIN_PIN,HIGH); - #endif - #endif - - #if HAS_Z2_MIN - SET_INPUT(Z2_MIN_PIN); - #if ENABLED(ENDSTOPPULLUP_ZMIN) - WRITE(Z2_MIN_PIN,HIGH); - #endif - #endif - - #if HAS_X_MAX - SET_INPUT(X_MAX_PIN); - #if ENABLED(ENDSTOPPULLUP_XMAX) - WRITE(X_MAX_PIN,HIGH); - #endif - #endif - - #if HAS_Y_MAX - SET_INPUT(Y_MAX_PIN); - #if ENABLED(ENDSTOPPULLUP_YMAX) - WRITE(Y_MAX_PIN,HIGH); - #endif - #endif - - #if HAS_Z_MAX - SET_INPUT(Z_MAX_PIN); - #if ENABLED(ENDSTOPPULLUP_ZMAX) - WRITE(Z_MAX_PIN,HIGH); - #endif - #endif - - #if HAS_Z2_MAX - SET_INPUT(Z2_MAX_PIN); - #if ENABLED(ENDSTOPPULLUP_ZMAX) - WRITE(Z2_MAX_PIN,HIGH); - #endif - #endif - - #if HAS_Z_MIN_PROBE_PIN && ENABLED(Z_MIN_PROBE_ENDSTOP) // Check for Z_MIN_PROBE_ENDSTOP so we don't pull a pin high unless it's to be used. - SET_INPUT(Z_MIN_PROBE_PIN); - #if ENABLED(ENDSTOPPULLUP_ZMIN_PROBE) - WRITE(Z_MIN_PROBE_PIN,HIGH); - #endif - #endif - -} // Endstops::init - -void Endstops::report_state() { - if (endstop_hit_bits) { - #if ENABLED(ULTRA_LCD) - char chrX = ' ', chrY = ' ', chrZ = ' ', chrP = ' '; - #define _SET_STOP_CHAR(A,C) (chr## A = C) - #else - #define _SET_STOP_CHAR(A,C) ; - #endif - - #define _ENDSTOP_HIT_ECHO(A,C) do{ \ - SERIAL_ECHOPAIR(" " STRINGIFY(A) ":", stepper.triggered_position_mm(A ##_AXIS)); \ - _SET_STOP_CHAR(A,C); }while(0) - - #define _ENDSTOP_HIT_TEST(A,C) \ - if (TEST(endstop_hit_bits, A ##_MIN) || TEST(endstop_hit_bits, A ##_MAX)) \ - _ENDSTOP_HIT_ECHO(A,C) - - SERIAL_ECHO_START; - SERIAL_ECHOPGM(MSG_ENDSTOPS_HIT); - _ENDSTOP_HIT_TEST(X, 'X'); - _ENDSTOP_HIT_TEST(Y, 'Y'); - _ENDSTOP_HIT_TEST(Z, 'Z'); - - #if ENABLED(Z_MIN_PROBE_ENDSTOP) - #define P_AXIS Z_AXIS - if (TEST(endstop_hit_bits, Z_MIN_PROBE)) _ENDSTOP_HIT_ECHO(P, 'P'); - #endif - SERIAL_EOL; - - #if ENABLED(ULTRA_LCD) - char msg[3 * strlen(MSG_LCD_ENDSTOPS) + 8 + 1]; // Room for a UTF 8 string - sprintf_P(msg, PSTR(MSG_LCD_ENDSTOPS " %c %c %c %c"), chrX, chrY, chrZ, chrP); - lcd_setstatus(msg); - #endif - - hit_on_purpose(); - - #if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) && ENABLED(SDSUPPORT) - if (stepper.abort_on_endstop_hit) { - card.sdprinting = false; - card.closefile(); - quickstop_stepper(); - thermalManager.disable_all_heaters(); // switch off all heaters. - } - #endif - } -} // Endstops::report_state - -void Endstops::M119() { - SERIAL_PROTOCOLLNPGM(MSG_M119_REPORT); - #if HAS_X_MIN - SERIAL_PROTOCOLPGM(MSG_X_MIN); - SERIAL_PROTOCOLLN(((READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); - #endif - #if HAS_X_MAX - SERIAL_PROTOCOLPGM(MSG_X_MAX); - SERIAL_PROTOCOLLN(((READ(X_MAX_PIN)^X_MAX_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); - #endif - #if HAS_Y_MIN - SERIAL_PROTOCOLPGM(MSG_Y_MIN); - SERIAL_PROTOCOLLN(((READ(Y_MIN_PIN)^Y_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); - #endif - #if HAS_Y_MAX - SERIAL_PROTOCOLPGM(MSG_Y_MAX); - SERIAL_PROTOCOLLN(((READ(Y_MAX_PIN)^Y_MAX_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); - #endif - #if HAS_Z_MIN - SERIAL_PROTOCOLPGM(MSG_Z_MIN); - SERIAL_PROTOCOLLN(((READ(Z_MIN_PIN)^Z_MIN_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); - #endif - #if HAS_Z_MAX - SERIAL_PROTOCOLPGM(MSG_Z_MAX); - SERIAL_PROTOCOLLN(((READ(Z_MAX_PIN)^Z_MAX_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); - #endif - #if HAS_Z2_MAX - SERIAL_PROTOCOLPGM(MSG_Z2_MAX); - SERIAL_PROTOCOLLN(((READ(Z2_MAX_PIN)^Z2_MAX_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); - #endif - #if HAS_Z_MIN_PROBE_PIN - SERIAL_PROTOCOLPGM(MSG_Z_PROBE); - SERIAL_PROTOCOLLN(((READ(Z_MIN_PROBE_PIN)^Z_MIN_PROBE_ENDSTOP_INVERTING) ? MSG_ENDSTOP_HIT : MSG_ENDSTOP_OPEN)); - #endif -} // Endstops::M119 - -#if ENABLED(Z_DUAL_ENDSTOPS) - - // Pass the result of the endstop test - void Endstops::test_dual_z_endstops(EndstopEnum es1, EndstopEnum es2) { - byte z_test = TEST_ENDSTOP(es1) | (TEST_ENDSTOP(es2) << 1); // bit 0 for Z, bit 1 for Z2 - if (stepper.current_block->steps[Z_AXIS] > 0) { - stepper.endstop_triggered(Z_AXIS); - SBI(endstop_hit_bits, Z_MIN); - if (!stepper.performing_homing || (z_test == 0x3)) //if not performing home or if both endstops were trigged during homing... - stepper.kill_current_block(); - } - } - -#endif - -// Check endstops - Called from ISR! -void Endstops::update() { - - #ifdef UARM_SWIFT - return; - #endif - - #define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN - #define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING - #define _ENDSTOP_HIT(AXIS) SBI(endstop_hit_bits, _ENDSTOP(AXIS, MIN)) - #define _ENDSTOP(AXIS, MINMAX) AXIS ##_## MINMAX - - // UPDATE_ENDSTOP_BIT: set the current endstop bits for an endstop to its status - #define UPDATE_ENDSTOP_BIT(AXIS, MINMAX) SET_BIT(current_endstop_bits, _ENDSTOP(AXIS, MINMAX), (READ(_ENDSTOP_PIN(AXIS, MINMAX)) != _ENDSTOP_INVERTING(AXIS, MINMAX))) - // COPY_BIT: copy the value of COPY_BIT to BIT in bits - #define COPY_BIT(bits, COPY_BIT, BIT) SET_BIT(bits, BIT, TEST(bits, COPY_BIT)) - - #define UPDATE_ENDSTOP(AXIS,MINMAX) do { \ - UPDATE_ENDSTOP_BIT(AXIS, MINMAX); \ - if (TEST_ENDSTOP(_ENDSTOP(AXIS, MINMAX)) && stepper.current_block->steps[_AXIS(AXIS)] > 0) { \ - _ENDSTOP_HIT(AXIS); \ - stepper.endstop_triggered(_AXIS(AXIS)); \ - } \ - } while(0) - - #if ENABLED(COREXY) || ENABLED(COREXZ) - // Head direction in -X axis for CoreXY and CoreXZ bots. - // If DeltaA == -DeltaB, the movement is only in Y or Z axis - if ((stepper.current_block->steps[CORE_AXIS_1] != stepper.current_block->steps[CORE_AXIS_2]) || (stepper.motor_direction(CORE_AXIS_1) == stepper.motor_direction(CORE_AXIS_2))) { - if (stepper.motor_direction(X_HEAD)) - #else - if (stepper.motor_direction(X_AXIS)) // stepping along -X axis (regular Cartesian bot) - #endif - { // -direction - #if ENABLED(DUAL_X_CARRIAGE) - // with 2 x-carriages, endstops are only checked in the homing direction for the active extruder - if ((stepper.current_block->active_extruder == 0 && X_HOME_DIR == -1) || (stepper.current_block->active_extruder != 0 && X2_HOME_DIR == -1)) - #endif - { - #if HAS_X_MIN - UPDATE_ENDSTOP(X, MIN); - #endif - } - } - else { // +direction - #if ENABLED(DUAL_X_CARRIAGE) - // with 2 x-carriages, endstops are only checked in the homing direction for the active extruder - if ((stepper.current_block->active_extruder == 0 && X_HOME_DIR == 1) || (stepper.current_block->active_extruder != 0 && X2_HOME_DIR == 1)) - #endif - { - #if HAS_X_MAX - UPDATE_ENDSTOP(X, MAX); - #endif - } - } - #if ENABLED(COREXY) || ENABLED(COREXZ) - } - #endif - - #if ENABLED(COREXY) || ENABLED(COREYZ) - // Head direction in -Y axis for CoreXY / CoreYZ bots. - // If DeltaA == DeltaB, the movement is only in X or Y axis - if ((stepper.current_block->steps[CORE_AXIS_1] != stepper.current_block->steps[CORE_AXIS_2]) || (stepper.motor_direction(CORE_AXIS_1) != stepper.motor_direction(CORE_AXIS_2))) { - if (stepper.motor_direction(Y_HEAD)) - #else - if (stepper.motor_direction(Y_AXIS)) // -direction - #endif - { // -direction - #if HAS_Y_MIN - UPDATE_ENDSTOP(Y, MIN); - #endif - } - else { // +direction - #if HAS_Y_MAX - UPDATE_ENDSTOP(Y, MAX); - #endif - } - #if ENABLED(COREXY) || ENABLED(COREYZ) - } - #endif - - #if ENABLED(COREXZ) || ENABLED(COREYZ) - // Head direction in -Z axis for CoreXZ or CoreYZ bots. - // If DeltaA == DeltaB, the movement is only in X or Y axis - if ((stepper.current_block->steps[CORE_AXIS_1] != stepper.current_block->steps[CORE_AXIS_2]) || (stepper.motor_direction(CORE_AXIS_1) != stepper.motor_direction(CORE_AXIS_2))) { - if (stepper.motor_direction(Z_HEAD)) - #else - if (stepper.motor_direction(Z_AXIS)) - #endif - { // z -direction - #if HAS_Z_MIN - - #if ENABLED(Z_DUAL_ENDSTOPS) - - UPDATE_ENDSTOP_BIT(Z, MIN); - #if HAS_Z2_MIN - UPDATE_ENDSTOP_BIT(Z2, MIN); - #else - COPY_BIT(current_endstop_bits, Z_MIN, Z2_MIN); - #endif - - test_dual_z_endstops(Z_MIN, Z2_MIN); - - #else // !Z_DUAL_ENDSTOPS - - #if HAS_BED_PROBE && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - if (z_probe_enabled) UPDATE_ENDSTOP(Z, MIN); - #else - UPDATE_ENDSTOP(Z, MIN); - #endif - - #endif // !Z_DUAL_ENDSTOPS - - #endif // HAS_Z_MIN - - #if HAS_BED_PROBE && ENABLED(Z_MIN_PROBE_ENDSTOP) && DISABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) - if (z_probe_enabled) { - UPDATE_ENDSTOP(Z, MIN_PROBE); - if (TEST_ENDSTOP(Z_MIN_PROBE)) SBI(endstop_hit_bits, Z_MIN_PROBE); - } - #endif - } - else { // z +direction - #if HAS_Z_MAX - - #if ENABLED(Z_DUAL_ENDSTOPS) - - UPDATE_ENDSTOP_BIT(Z, MAX); - #if HAS_Z2_MAX - UPDATE_ENDSTOP_BIT(Z2, MAX); - #else - COPY_BIT(current_endstop_bits, Z_MAX, Z2_MAX); - #endif - - test_dual_z_endstops(Z_MAX, Z2_MAX); - - #else // !Z_DUAL_ENDSTOPS - - UPDATE_ENDSTOP(Z, MAX); - - #endif // !Z_DUAL_ENDSTOPS - #endif // Z_MAX_PIN - } - #if ENABLED(COREXZ) - } - #endif - - old_endstop_bits = current_endstop_bits; - -} // Endstops::update() diff --git a/lib/Marlin/endstops.h b/lib/Marlin/endstops.h deleted file mode 100644 index 22c2468..0000000 --- a/lib/Marlin/endstops.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * endstops.h - manages endstops - */ - -#ifndef ENDSTOPS_H -#define ENDSTOPS_H - -#include "enum.h" - -class Endstops { - - public: - - static bool enabled, enabled_globally; - static volatile char endstop_hit_bits; // use X_MIN, Y_MIN, Z_MIN and Z_MIN_PROBE as BIT value - - #if ENABLED(Z_DUAL_ENDSTOPS) - static uint16_t - #else - static byte - #endif - current_endstop_bits, old_endstop_bits; - - Endstops() {}; - - /** - * Initialize the endstop pins - */ - void init(); - - /** - * Update the endstops bits from the pins - */ - static void update(); - - /** - * Print an error message reporting the position when the endstops were last hit. - */ - static void report_state(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered - - /** - * Report endstop positions in response to M119 - */ - static void M119(); - - // Enable / disable endstop checking globally - static void enable_globally(bool onoff=true) { enabled_globally = enabled = onoff; } - - // Enable / disable endstop checking - static void enable(bool onoff=true) { enabled = onoff; } - - // Disable / Enable endstops based on ENSTOPS_ONLY_FOR_HOMING and global enable - static void not_homing() { enabled = enabled_globally; } - - // Clear endstops (i.e., they were hit intentionally) to suppress the report - static void hit_on_purpose() { endstop_hit_bits = 0; } - - // Enable / disable endstop z-probe checking - #if HAS_BED_PROBE - static volatile bool z_probe_enabled; - static void enable_z_probe(bool onoff=true) { z_probe_enabled = onoff; } - #endif - - private: - - #if ENABLED(Z_DUAL_ENDSTOPS) - static void test_dual_z_endstops(EndstopEnum es1, EndstopEnum es2); - #endif -}; - -extern Endstops endstops; - -#endif // ENDSTOPS_H diff --git a/lib/Marlin/enum.h b/lib/Marlin/enum.h deleted file mode 100644 index a51d208..0000000 --- a/lib/Marlin/enum.h +++ /dev/null @@ -1,193 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __ENUM_H__ -#define __ENUM_H__ - -/** - * Axis indices as enumerated constants - * - * Special axis: - * - A_AXIS and B_AXIS are used by COREXY printers - * - X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship - * between X_AXIS and X Head movement, like CoreXY bots - */ -enum AxisEnum { - NO_AXIS = -1, - X_AXIS = 0, - A_AXIS = 0, - Y_AXIS = 1, - B_AXIS = 1, - Z_AXIS = 2, - C_AXIS = 2, - E_AXIS = 3, - X_HEAD = 4, - Y_HEAD = 5, - Z_HEAD = 6 -}; - -#define LOOP_XYZ(VAR) for (uint8_t VAR=X_AXIS; VAR<=Z_AXIS; VAR++) -#define LOOP_XYZE(VAR) for (uint8_t VAR=X_AXIS; VAR<=E_AXIS; VAR++) - -typedef enum { - LINEARUNIT_MM, - LINEARUNIT_INCH -} LinearUnit; - -typedef enum { - TEMPUNIT_C, - TEMPUNIT_K, - TEMPUNIT_F -} TempUnit; - -/** - * Debug flags - * Not yet widely applied - */ -enum DebugFlags { - DEBUG_NONE = 0, - DEBUG_ECHO = _BV(0), ///< Echo commands in order as they are processed - DEBUG_INFO = _BV(1), ///< Print messages for code that has debug output - DEBUG_ERRORS = _BV(2), ///< Not implemented - DEBUG_DRYRUN = _BV(3), ///< Ignore temperature setting and E movement commands - DEBUG_COMMUNICATION = _BV(4), ///< Not implemented - DEBUG_LEVELING = _BV(5) ///< Print detailed output for homing and leveling -}; - -enum EndstopEnum { - X_MIN, - Y_MIN, - Z_MIN, - Z_MIN_PROBE, - X_MAX, - Y_MAX, - Z_MAX, - Z2_MIN, - Z2_MAX -}; - -/** - * Temperature - * Stages in the ISR loop - */ -enum TempState { - PrepareTemp_0, - MeasureTemp_0, - PrepareTemp_BED, - MeasureTemp_BED, - PrepareTemp_1, - MeasureTemp_1, - PrepareTemp_2, - MeasureTemp_2, - PrepareTemp_3, - MeasureTemp_3, - Prepare_FILWIDTH, - Measure_FILWIDTH, - StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle -}; - -#if ENABLED(EMERGENCY_PARSER) - enum e_parser_state { - state_RESET, - state_N, - state_M, - state_M1, - state_M10, - state_M108, - state_M11, - state_M112, - state_M4, - state_M41, - state_M410, - state_IGNORE // to '\n' - }; -#endif - -#if ENABLED(FILAMENT_CHANGE_FEATURE) - enum FilamentChangeMenuResponse { - FILAMENT_CHANGE_RESPONSE_WAIT_FOR, - FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE, - FILAMENT_CHANGE_RESPONSE_RESUME_PRINT - }; - - #if ENABLED(ULTIPANEL) - enum FilamentChangeMessage { - FILAMENT_CHANGE_MESSAGE_INIT, - FILAMENT_CHANGE_MESSAGE_UNLOAD, - FILAMENT_CHANGE_MESSAGE_INSERT, - FILAMENT_CHANGE_MESSAGE_LOAD, - FILAMENT_CHANGE_MESSAGE_EXTRUDE, - FILAMENT_CHANGE_MESSAGE_OPTION, - FILAMENT_CHANGE_MESSAGE_RESUME, - FILAMENT_CHANGE_MESSAGE_STATUS - }; - #endif -#endif - -/** - * States for managing Marlin and host communication - * Marlin sends messages if blocked or busy - */ -#if ENABLED(HOST_KEEPALIVE_FEATURE) - enum MarlinBusyState { - NOT_BUSY, // Not in a handler - IN_HANDLER, // Processing a GCode - IN_PROCESS, // Known to be blocking command input (as in G29) - PAUSED_FOR_USER, // Blocking pending any input - PAUSED_FOR_INPUT // Blocking pending text input (concept) - }; -#endif - -#if ENABLED(MESH_BED_LEVELING) - enum MeshLevelingState { - MeshReport, - MeshStart, - MeshNext, - MeshSet, - MeshSetZOffset, - MeshReset - }; - - enum MBLStatus { - MBL_STATUS_NONE = 0, - MBL_STATUS_HAS_MESH_BIT = 0, - MBL_STATUS_ACTIVE_BIT = 1 - }; -#endif - -/** - * SD Card - */ -enum LsAction { LS_SerialPrint, LS_Count, LS_GetFilename }; - -/** - * Ultra LCD - */ -enum LCDViewAction { - LCDVIEW_NONE, - LCDVIEW_REDRAW_NOW, - LCDVIEW_CALL_REDRAW_NEXT, - LCDVIEW_CLEAR_CALL_REDRAW, - LCDVIEW_CALL_NO_REDRAW -}; - -#endif // __ENUM_H__ diff --git a/lib/Marlin/example_configurations/Cartesio/Configuration.h b/lib/Marlin/example_configurations/Cartesio/Configuration.h deleted file mode 100644 index 0d0c60b..0000000 --- a/lib/Marlin/example_configurations/Cartesio/Configuration.h +++ /dev/null @@ -1,1327 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(MaukCC, CartesioE)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 115200 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - //#define MOTHERBOARD BOARD_CNCONTROLS_11 - #define MOTHERBOARD BOARD_CNCONTROLS_12 -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "CartesioE" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 3 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 -1 -#define TEMP_SENSOR_1 -1 -#define TEMP_SENSOR_2 1 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 1 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 4 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 1 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 415 -#define HEATER_1_MAXTEMP 415 -#define HEATER_2_MAXTEMP 415 -#define HEATER_3_MAXTEMP 415 -#define BED_MAXTEMP 165 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - - // Cartesio extruderV6 40W Normal - #define DEFAULT_Kp 18 - #define DEFAULT_Ki 1 - #define DEFAULT_Kd 100 - - // Cartesio extruderV6 40W Volcano - //#define DEFAULT_Kp 50 - //#define DEFAULT_Ki 9 - //#define DEFAULT_Kd 70 - - // Cartesio extruderV6 40W Cyclops - //#define DEFAULT_Kp 18 - //#define DEFAULT_Ki 1 - //#define DEFAULT_Kd 100 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //24V 500W silicone heater on to 4mm glass CartesioW - #define DEFAULT_bedKp 390 - #define DEFAULT_bedKi 70 - #define DEFAULT_bedKd 546 - - //24V 250W silicone heater on to 4mm glass CartesioM - //#define DEFAULT_bedKp 303 - //#define DEFAULT_bedKi 42 - //#define DEFAULT_bedKd 539 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 18 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 1 -#define Y_ENABLE_ON 1 -#define Z_ENABLE_ON 1 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 435 -#define Y_MAX_POS 270 -#define Z_MAX_POS 400 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (10*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {71.128,71.128,640,152} -#define DEFAULT_MAX_FEEDRATE {200,200,20,20} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {1000,1000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 500 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 10000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 10.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 190 -#define PREHEAT_1_TEMP_BED 50 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -#define ENCODER_PULSES_PER_STEP 2 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -#define ENCODER_STEPS_PER_MENU_ITEM 1 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -#define REPRAPWORLD_KEYPAD -#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/Cartesio/Configuration_adv.h b/lib/Marlin/example_configurations/Cartesio/Configuration_adv.h deleted file mode 100644 index 3e10c3f..0000000 --- a/lib/Marlin/example_configurations/Cartesio/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 3.0 -#define TEMP_SENSOR_AD595_GAIN 2.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN 7 -#define EXTRUDER_1_AUTO_FAN_PIN 7 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 35 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 120 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 30 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 10 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 1 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - //#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/Cartesio/_Bootscreen.h b/lib/Marlin/example_configurations/Cartesio/_Bootscreen.h deleted file mode 100644 index a365cae..0000000 --- a/lib/Marlin/example_configurations/Cartesio/_Bootscreen.h +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Custom Bitmap for splashscreen - * - * You may use one of the following tools to generate the C++ bitmap array from - * a black and white image: - * - * - http://www.marlinfw.org/tools/u8glib/converter.html - * - http://www.digole.com/tools/PicturetoC_Hex_converter.php - */ -#include - -#define CUSTOM_BOOTSCREEN_TIMEOUT 2500 -#define CUSTOM_BOOTSCREEN_BMPWIDTH 63 -#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64 - -const unsigned char custom_start_bmp[512] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfc, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, - 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x07, 0x87, 0xff, 0xff, 0xe0, 0x00, - 0x00, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0x00, - 0x01, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0x80, - 0x03, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0x80, - 0x07, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xe1, 0xc0, - 0x07, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xe0, - 0x0f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xe0, - 0x0f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xf0, - 0x1f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xf0, - 0x1f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xe1, 0xf0, - 0x3f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0xf8, - 0x3f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0xf8, - 0x3f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xf1, 0xf8, - 0x3f, 0x1f, 0x8f, 0xc7, 0xff, 0xff, 0xe1, 0xf8, - 0x7f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xfc, - 0x7f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xfc, - 0x7f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xfc, - 0x7f, 0x1f, 0x8f, 0xc7, 0xc0, 0x00, 0x01, 0xfc, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, - 0x7f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xfc, - 0x7f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xfc, - 0x7f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xfc, - 0x3f, 0x0f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf8, - 0x3f, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf8, - 0x3f, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf8, - 0x3f, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf8, - 0x1f, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf0, - 0x1f, 0x0f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xf0, - 0x1f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xe0, - 0x0f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xe0, - 0x0f, 0x00, 0x00, 0x07, 0xc7, 0xe3, 0xf1, 0xc0, - 0x07, 0x0f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0xc0, - 0x03, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0x80, - 0x03, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf1, 0x00, - 0x01, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf0, 0x00, - 0x00, 0x1f, 0xff, 0xff, 0xc7, 0xe3, 0xf0, 0x00, - 0x00, 0x0f, 0xff, 0xff, 0xc3, 0xc1, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, - 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, - 0x00, 0x01, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfc, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xff, 0xff, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; diff --git a/lib/Marlin/example_configurations/Felix/Configuration.h b/lib/Marlin/example_configurations/Felix/Configuration.h deleted file mode 100644 index bb8f643..0000000 --- a/lib/Marlin/example_configurations/Felix/Configuration.h +++ /dev/null @@ -1,1310 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_FELIX2 -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "Felix" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 1 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 15 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // Felix 2.0+ electronics with v4 Hotend - #define DEFAULT_Kp 12 - #define DEFAULT_Ki 0.84 - #define DEFAULT_Kd 85 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - // Felix Foil Heater - #define DEFAULT_bedKp 103.37 - #define DEFAULT_bedKi 2.79 - #define DEFAULT_bedKd 956.94 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR true -#define INVERT_Y_DIR true -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 255 -#define Y_MAX_POS 205 -#define Z_MAX_POS 235 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 180 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -// default steps per unit for Felix 2.0/3.0: 0.00249mm x/y rounding error with 3mm pitch HTD belt and 14 tooth pulleys. 0 z error. -#define DEFAULT_AXIS_STEPS_PER_UNIT {76.190476, 76.190476, 1600, 164} -#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {5000,5000,100,80000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1750 //1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 5000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 10 // (mm/sec) -#define DEFAULT_ZJERK 0.3 //0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -//#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/Felix/Configuration_adv.h b/lib/Marlin/example_configurations/Felix/Configuration_adv.h deleted file mode 100644 index 5700735..0000000 --- a/lib/Marlin/example_configurations/Felix/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 3 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/Felix/DUAL/Configuration.h b/lib/Marlin/example_configurations/Felix/DUAL/Configuration.h deleted file mode 100644 index 59f45c4..0000000 --- a/lib/Marlin/example_configurations/Felix/DUAL/Configuration.h +++ /dev/null @@ -1,1308 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_FELIX2 -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "Felix Dual" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 2 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 1 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 1 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 15 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // Felix 2.0+ electronics with v4 Hotend - #define DEFAULT_Kp 12 - #define DEFAULT_Ki 0.84 - #define DEFAULT_Kd 85 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - // Felix Foil Heater - #define DEFAULT_bedKp 103.37 - #define DEFAULT_bedKi 2.79 - #define DEFAULT_bedKd 956.94 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR true -#define INVERT_Y_DIR true -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR true -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 255 -#define Y_MAX_POS 205 -#define Z_MAX_POS 235 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 180 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -// default steps per unit for Felix 2.0/3.0: 0.00249mm x/y rounding error with 3mm pitch HTD belt and 14 tooth pulleys. 0 z error. -#define DEFAULT_AXIS_STEPS_PER_UNIT {76.190476, 76.190476, 1600, 164} -#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {5000,5000,100,80000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1750 //1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 5000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 10 // (mm/sec) -#define DEFAULT_ZJERK 0.3 //0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -//#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/Felix/README.md b/lib/Marlin/example_configurations/Felix/README.md deleted file mode 100644 index b1b8f36..0000000 --- a/lib/Marlin/example_configurations/Felix/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# Felix 2.0/3.0 Configuration for Marlin Firmware - -Bringing silky smooth prints to Felix. - -## Build HOWTO - - - Install the latest non-beta Arduino software IDE/toolset: http://www.arduino.cc/en/Main/Software - - Download the Marlin firmware - - [Latest developement version](https://github.com/MarlinFirmware/Marlin/tree/Development) - - [Stable version](https://github.com/MarlinFirmware/Marlin/tree/Development) - - In both cases use the "Download Zip" button on the right. - -``` -cd Marlin/Marlin -cp example_configurations/Felix/Configuration_adv.h . -``` - -The next step depends on your setup: - -### Single Extruder Configuration - - cp example_configurations/Felix/Configuration.h . - -### Dual Extruder Configuration - - cp example_configurations/Felix/DUAL/Configuration.h Configuration.h - -### Compile Firmware - - - Start the Arduino IDE. - - Select Tools -> Board -> Arduino Mega 2560 - - Select the correct serial port in Tools -> Serial Port (usually /dev/ttyUSB0) - - Open Marlin.pde or .ino - - Click the Verify/Compile button - -### Flash Firmware - -#### Connected directly via USB - - - Click the Upload button. If all goes well the firmware is uploading - -#### Remote update - -Find the latest Arduino build: - - ls -altr /tmp/ - drwxr-xr-x 5 chrono users 12288 Mar 3 21:41 build6072035599686630843.tmp - -Copy the firmware to your printer host: - - scp /tmp/build6072035599686630843.tmp/Marlin.cpp.hex a.b.c.d:/tmp/ - -Connect to your printer host via ssh, stop Octoprint or any other service that may block your USB device and make sure you have avrdude installed, then run: - - avrdude -C/etc/avrdude.conf -v -v -v -patmega2560 -cwiring -P/dev/ttyUSB0 \ - -b115200 -D -Uflash:w:/tmp/Marlin.cpp.hex:i - -## Acknowledgements - -Mashed together and tested on https://apollo.open-resource.org/mission:resources:picoprint based on collaborative teamwork of @andrewsil1 and @thinkyhead. diff --git a/lib/Marlin/example_configurations/Hephestos/Configuration.h b/lib/Marlin/example_configurations/Hephestos/Configuration.h deleted file mode 100644 index feab873..0000000 --- a/lib/Marlin/example_configurations/Hephestos/Configuration.h +++ /dev/null @@ -1,1319 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 115200 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "HEPHESTOS" - -// Added for BQ -#define SOURCE_CODE_URL "http://www.bq.com/gb/downloads-prusa-i3-hephestos.html" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 260 -#define HEATER_1_MAXTEMP 260 -#define HEATER_2_MAXTEMP 260 -#define HEATER_3_MAXTEMP 260 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // Hephestos i3 - #define DEFAULT_Kp 23.05 - #define DEFAULT_Ki 2.00 - #define DEFAULT_Kd 66.47 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR true -#define INVERT_Y_DIR false -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 215 -#define Y_MAX_POS 210 -#define Z_MAX_POS 180 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY 2000 -#define HOMING_FEEDRATE_Z 150 - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,100.47095761381482} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {250, 250, 3.3, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {3000,3000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 10.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 200 -#define PREHEAT_1_TEMP_BED 0 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 220 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -//#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/Hephestos/Configuration_adv.h b/lib/Marlin/example_configurations/Hephestos/Configuration_adv.h deleted file mode 100644 index b719e60..0000000 --- a/lib/Marlin/example_configurations/Hephestos/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 1.75 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 80 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - //#define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/Hephestos_2/Configuration.h b/lib/Marlin/example_configurations/Hephestos_2/Configuration.h deleted file mode 100644 index 060f4f4..0000000 --- a/lib/Marlin/example_configurations/Hephestos_2/Configuration.h +++ /dev/null @@ -1,1321 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "@jbrazio" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_BQ_ZUM_MEGA_3D -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "BQ Hephestos 2" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -#define MACHINE_UUID "8d083632-40c5-4649-85b8-43d9ae6c5d55" // BQ Hephestos 2 standard config - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 70 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 15 -//#define HEATER_1_MINTEMP 5 -//#define HEATER_2_MINTEMP 5 -//#define HEATER_3_MINTEMP 5 -//#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 250 -//#define HEATER_1_MAXTEMP 275 -//#define HEATER_2_MAXTEMP 275 -//#define HEATER_3_MAXTEMP 275 -//#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 250 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // Tuned PID values using M303 - #define DEFAULT_Kp 19.18 - #define DEFAULT_Ki 1.36 - #define DEFAULT_Kd 67.42 - - // BQ firmware stock PID values - //#define DEFAULT_Kp 10.7 - //#define DEFAULT_Ki 0.45 - //#define DEFAULT_Kd 3 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -//#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -//#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 34 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER 15 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 5 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 2 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -2 -#define Z_PROBE_OFFSET_RANGE_MAX 0 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR true -#define INVERT_Y_DIR true -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR true -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -#define Z_HOMING_HEIGHT 5 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 210 -#define Y_MAX_POS 297 -#define Z_MAX_POS 210 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER - #define RIGHT_PROBE_BED_POSITION X_MAX_POS - (X_PROBE_OFFSET_FROM_EXTRUDER) - #define FRONT_PROBE_BED_POSITION Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER - #define BACK_PROBE_BED_POSITION Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER) - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X X_MIN_POS + X_PROBE_OFFSET_FROM_EXTRUDER - #define ABL_PROBE_PT_1_Y Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER - #define ABL_PROBE_PT_2_X X_MAX_POS - (X_PROBE_OFFSET_FROM_EXTRUDER) - #define ABL_PROBE_PT_2_Y Y_MIN_POS + Y_PROBE_OFFSET_FROM_EXTRUDER - #define ABL_PROBE_PT_3_X ((X_MIN_POS + X_MAX_POS) / 2) - #define ABL_PROBE_PT_3_Y Y_MAX_POS - (Y_PROBE_OFFSET_FROM_EXTRUDER) - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (150*60) -#define HOMING_FEEDRATE_Z 200 - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {160, 160, 8000, 210.02} // Steps per unit -#define DEFAULT_MAX_FEEDRATE {250, 250, 2, 200} // mm/sec -#define DEFAULT_MAX_ACCELERATION {1000, 1000, 20, 1000} // X, Y, Z, E max start speed for accelerated moves - -#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 2.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 210 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 2.00 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.60 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/Hephestos_2/Configuration_adv.h b/lib/Marlin/example_configurations/Hephestos_2/Configuration_adv.h deleted file mode 100644 index eeb11da..0000000 --- a/lib/Marlin/example_configurations/Hephestos_2/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN 11 -#define EXTRUDER_1_AUTO_FAN_PIN 6 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 120 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05 // (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {150, 170, 180, 190, 180} // Values 0-255 (bq ZUM Mega 3D (default): X = 150 [~1.17A]; Y = 170 [~1.33A]; Z = 180 [~1.41A]; E0 = 190 [~1.49A]) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -//#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -//#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -//#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -//#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M104 S0\nM84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - #define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - #define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - #define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/Hephestos_2/README.md b/lib/Marlin/example_configurations/Hephestos_2/README.md deleted file mode 100644 index 8fcb53c..0000000 --- a/lib/Marlin/example_configurations/Hephestos_2/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Example Configuration for BQ [Hephestos 2](http://www.bq.com/uk/hephestos-2) -This configuration file is based on the original configuration file shipped with the heavily modified Marlin fork by BQ. The original firmware and configuration file can be found at [BQ Github repository](https://github.com/bq/Marlin). - -NOTE: The look and feel of the Hephestos 2 while navigating the LCD menu will change by using the original Marlin firmware. - -## Changelog - * 2016/03/01 - Initial release - * 2016/03/21 - Activated 4-point auto leveling by default - Updated miscellaneous z-probe values - * 2016/06/21 - Disabled hot bed related options - Activated software endstops - SD printing now disables the heater when finished - * 2016/07/13 - Update the `DEFAULT_AXIS_STEPS_PER_UNIT` for the Z axis - Increased the `DEFAULT_XYJERK` diff --git a/lib/Marlin/example_configurations/Hephestos_2/_Bootscreen.h b/lib/Marlin/example_configurations/Hephestos_2/_Bootscreen.h deleted file mode 100644 index 9819264..0000000 --- a/lib/Marlin/example_configurations/Hephestos_2/_Bootscreen.h +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Custom Bitmap for splashscreen - * - * You may use one of the following tools to generate the C++ bitmap array from - * a black and white image: - * - * - http://www.marlinfw.org/tools/u8glib/converter.html - * - http://www.digole.com/tools/PicturetoC_Hex_converter.php - */ -#include - -#define CUSTOM_BOOTSCREEN_TIMEOUT 2500 -#define CUSTOM_BOOTSCREEN_BMPWIDTH 62 -#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64 - -const unsigned char custom_start_bmp[512] PROGMEM = { - 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xc0, 0x0f, 0xf0, 0x07, 0x80, 0x00, - 0x00, 0x07, 0xe0, 0x07, 0xe0, 0x0f, 0xc0, 0x00, - 0x00, 0x0f, 0xf0, 0x03, 0xc0, 0x1f, 0xe0, 0x00, - 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00, - 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00, - 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00, - 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00, - 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00, - 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x1f, 0xe0, 0x00, - 0x00, 0x07, 0xe0, 0x00, 0x00, 0x0f, 0xc0, 0x00, - 0x00, 0x03, 0xc0, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x7f, 0x80, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0xff, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0xff, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0xff, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0xff, 0xc0, 0x00, 0x00, 0xf7, 0xc0, 0x1f, 0x80, - 0xff, 0xc0, 0x00, 0x00, 0xff, 0xf0, 0x7f, 0xc0, - 0x7f, 0x80, 0x00, 0x00, 0xff, 0xf8, 0xff, 0xe0, - 0x3f, 0x00, 0x00, 0x00, 0xfc, 0xf8, 0xf0, 0xf8, - 0x1e, 0x00, 0x00, 0x00, 0xf8, 0x7d, 0xe0, 0x78, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3d, 0xe0, 0x78, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x79, 0xf0, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0xff, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x7f, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x3f, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0e, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, -}; diff --git a/lib/Marlin/example_configurations/K8200/Configuration.h b/lib/Marlin/example_configurations/K8200/Configuration.h deleted file mode 100644 index dbfe6b9..0000000 --- a/lib/Marlin/example_configurations/K8200/Configuration.h +++ /dev/null @@ -1,1344 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Sample configuration file for Vellemann K8200 - * tested on K8200 with VM8201 (Display) - * and Arduino 1.6.8 (Mac) by @CONSULitAS, 2016-02-21 - * https://github.com/CONSULitAS/Marlin-K8200/archive/K8200_stable_2016-02-21.zip - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(K8200, @CONSULitAS)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_K8200 -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "K8200" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -#define MACHINE_UUID "2b7dea3b-844e-4ab1-aa96-bb6406607d6e" // K8200 standard config with VM8201 (Display) - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 5 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 5 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - //#define DEFAULT_Kp 22.2 - //#define DEFAULT_Ki 1.08 - //#define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - - // Vellemann K8200 Extruder - calculated with PID Autotune and tested - #define DEFAULT_Kp 24.29 - #define DEFAULT_Ki 1.58 - #define DEFAULT_Kd 93.51 -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - //#define DEFAULT_bedKp 10.00 - //#define DEFAULT_bedKi .023 - //#define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. - - // Vellemann K8200 PCB heatbed with standard PCU at 60 degreesC - calculated with PID Autotune and tested - // from pidautotune - #define DEFAULT_bedKp 341.88 - #define DEFAULT_bedKi 25.32 - #define DEFAULT_bedKd 1153.89 -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false // not for K8200 -> looses Steps -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR false // was true -> why for K8200? -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR true // K8200: true for geared default extruder! -#define INVERT_E1_DIR true -#define INVERT_E2_DIR true -#define INVERT_E3_DIR true - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 200 -#define Y_MAX_POS 200 -#define Z_MAX_POS 200 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {64.25,64.25,2560,600} // default steps per unit for K8200 -#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 500} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 190 -#define PREHEAT_1_TEMP_BED 50 // K8200: set back to 70 if you have an upgraded heatbed power supply -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 60 // K8200: set back to 110 if you have an upgraded heatbed power supply -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE // K8200: for Display VM8201 - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/K8200/Configuration_adv.h b/lib/Marlin/example_configurations/K8200/Configuration_adv.h deleted file mode 100644 index dc26fd6..0000000 --- a/lib/Marlin/example_configurations/K8200/Configuration_adv.h +++ /dev/null @@ -1,805 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -// Sample configuration file for Vellemann K8200 -// tested on K8200 with VM8201 (Display) -// and Arduino 1.6.8 (Mac) by @CONSULitAS, 2016-02-21 -// https://github.com/CONSULitAS/Marlin-K8200/archive/K8200_stable_2016-02-21.zip - - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 60 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 8 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 30 // Seconds - #define WATCH_TEMP_INCREASE 4 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -#define FAN_KICKSTART_TIME 500 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {4, 4, 8} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - #define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - #define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - #define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 2; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 32 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/K8200/README.md b/lib/Marlin/example_configurations/K8200/README.md deleted file mode 100644 index bb29f51..0000000 --- a/lib/Marlin/example_configurations/K8200/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Example Configuration for Vellemann [K8200](http://www.k8200.eu/) -* Configuration files for **Vellemann K8200** (with [VM8201](http://www.vellemanprojects.eu/products/view/?id=416158) - LCD Option for K8200) -* K8200 is a 3Drag clone - configuration should work with 3Drag http://reprap.org/wiki/3drag, too. Please report. - -* updated manually with parameters from genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the recent development branch - -* VM8201 uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER" -* german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support - -I [@CONSULitAS](https://github.com/CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.6.1 for Windows (SD library added to IDE manually) - everything works well. - -**Source for genuine [Vellemann Firmware](http://www.k8200.eu/support/downloads/)** -* V2.1.1 (for z axis upgrade, date branched: 2013-06-05): [firmware_k8200_v2.1.1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_v2.1.1.zip) - * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_v2.1.1.zip - -* V2 (with LCD/SD-Support, date branched: 2013-06-05): [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip) - * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv2.zip - -* V1 (without LCD/SD-Support, date branched: 2012-10-02): [firmware_k8200_marlinv1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv1.zip) - * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv1.zip diff --git a/lib/Marlin/example_configurations/K8400/Configuration.h b/lib/Marlin/example_configurations/K8400/Configuration.h deleted file mode 100644 index 47ab342..0000000 --- a/lib/Marlin/example_configurations/K8400/Configuration.h +++ /dev/null @@ -1,1327 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(Anthony Birkett, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_K8400 -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 5 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 2 // (seconds) -#define TEMP_HYSTERESIS 5 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - //#define DEFAULT_Kp 22.2 - //#define DEFAULT_Ki 1.08 - //#define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - #define DEFAULT_Kp 63.0 - #define DEFAULT_Ki 2.25 - #define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 160 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR true -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 20 -#define Z_MIN_POS 0 -#define X_MAX_POS 200 -#define Y_MAX_POS 200 -#define Z_MAX_POS 190 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (8*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {134.74,134.74,4266.66,148.7} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {160, 160, 10, 10000} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 6000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 6000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 10.0 // (mm/sec) -#define DEFAULT_ZJERK 0.5 // (mm/sec) -#define DEFAULT_EJERK 20.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 210 -#define PREHEAT_1_TEMP_BED 0 -#define PREHEAT_1_FAN_SPEED 165 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 245 -#define PREHEAT_2_TEMP_BED 0 -#define PREHEAT_2_FAN_SPEED 165 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -#define ENCODER_PULSES_PER_STEP 4 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -#define ENCODER_STEPS_PER_MENU_ITEM 1 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/K8400/Configuration_adv.h b/lib/Marlin/example_configurations/K8400/Configuration_adv.h deleted file mode 100644 index 64efac9..0000000 --- a/lib/Marlin/example_configurations/K8400/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 1000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 1 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN 2 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 10 -#define Y_HOME_BUMP_MM 10 -#define Z_HOME_BUMP_MM 3 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 120 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 26 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 100 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 100 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 20 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 5 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 600 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 600 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 100 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/K8400/Dual-head/Configuration.h b/lib/Marlin/example_configurations/K8400/Dual-head/Configuration.h deleted file mode 100644 index 3ea963a..0000000 --- a/lib/Marlin/example_configurations/K8400/Dual-head/Configuration.h +++ /dev/null @@ -1,1327 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(Anthony Birkett, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_K8400 -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 2 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 5 -#define TEMP_SENSOR_1 5 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 2 // (seconds) -#define TEMP_HYSTERESIS 5 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - //#define DEFAULT_Kp 22.2 - //#define DEFAULT_Ki 1.08 - //#define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - #define DEFAULT_Kp 63.0 - #define DEFAULT_Ki 2.25 - #define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 160 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR true -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 20 -#define Z_MIN_POS 0 -#define X_MAX_POS 200 -#define Y_MAX_POS 200 -#define Z_MAX_POS 190 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (8*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {134.74,134.74,4266.66,148.7} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {160, 160, 10, 10000} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 6000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 6000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 10.0 // (mm/sec) -#define DEFAULT_ZJERK 0.5 // (mm/sec) -#define DEFAULT_EJERK 20.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 210 -#define PREHEAT_1_TEMP_BED 0 -#define PREHEAT_1_FAN_SPEED 165 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 245 -#define PREHEAT_2_TEMP_BED 0 -#define PREHEAT_2_FAN_SPEED 165 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -#define ENCODER_PULSES_PER_STEP 4 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -#define ENCODER_STEPS_PER_MENU_ITEM 1 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/K8400/README.md b/lib/Marlin/example_configurations/K8400/README.md deleted file mode 100644 index c9089b5..0000000 --- a/lib/Marlin/example_configurations/K8400/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Configuration for Velleman K8400 Vertex -http://www.k8400.eu/ - -Configuration files for the K8400, ported upstream from the official Velleman firmware. -Like it's predecessor, (K8200), the K8400 is a 3Drag clone. There are some minor differences, documented in pins_K8400.h. - -Single and dual head configurations provided. Copy the correct Configuration.h and Configuration_adv.h to the /Marlin/ directory. - -**NOTE: This configuration includes the community sourced feed rate fix. Use 100% feed rate in Repetier!** - -For implementation and updated K8400 firmware, see https://github.com/birkett/Velleman-K8400-Firmware - -### Original Sources -Credit to Velleman for the original 1.0.x based code:
-http://www.vertex3dprinter.eu/downloads/files/vertex/firmware/vertex-m1-v1.4-h2.zip diff --git a/lib/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/lib/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h deleted file mode 100644 index 1c37511..0000000 --- a/lib/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ /dev/null @@ -1,1327 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "RepRapWorld.com" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_MEGATRONICS_3 -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 1 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 200 -#define Y_MAX_POS 200 -#define Z_MAX_POS 200 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402*2,78.7402*2,5120.00,760*1*1.5} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {300, 300, 5, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {3000,3000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -#define REPRAPWORLD_KEYPAD -#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/RigidBot/Configuration.h b/lib/Marlin/example_configurations/RigidBot/Configuration.h deleted file mode 100644 index bbe545c..0000000 --- a/lib/Marlin/example_configurations/RigidBot/Configuration.h +++ /dev/null @@ -1,1327 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 115200 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -// for Rigidbot version 1 : #define MOTHERBOARD BOARD_RIGIDBOARD -// for Rigidbot Version 2 : #define MOTHERBOARD BOARD_RIGIDBOARD_V2 - -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RIGIDBOARD_V2 -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 // Single extruder. Set to 2 for dual extruders - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -#define HOTEND_OFFSET_X {0.0, 36.00} // (in mm) for each extruder, offset of the hotend on the X axis -#define HOTEND_OFFSET_Y {0.0, 0.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 // DGlass3D = 5; RigidBot = 1; 3DSv6 = 5 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 1 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -//#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - - // Rigidbot hotend - #define DEFAULT_Kp 16.17 - #define DEFAULT_Ki 0.85 - #define DEFAULT_Kd 76.55 - - // Base DGlass3D/E3Dv6 hotend - //#define DEFAULT_Kp 10 - //#define DEFAULT_Ki 0.85 - //#define DEFAULT_Kd 245 - - // E3D w/ rigidbot cartridge - //#define DEFAULT_Kp 16.30 - //#define DEFAULT_Ki 0.95 - //#define DEFAULT_Kd 69.69 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //RigidBot, from pid autotune - #define DEFAULT_bedKp 355 - #define DEFAULT_bedKi 66.5 - #define DEFAULT_bedKd 480 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR true -#define INVERT_Y_DIR false -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR true -#define INVERT_E1_DIR true -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 254 // RigidBot regular is 254mm, RigitBot Big is 406mm -#define Y_MAX_POS 248 // RigidBot regular is 248mm, RigitBot Big is 304mm -#define Z_MAX_POS 254 // RigidBot regular and Big are 254mm - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (15*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {44.3090, 22.1545, 1600, 53.5} // default steps per unit for RigidBot with standard hardware - // default steps for 16-teth polleys {100.06,50.06,1600,76}, HPX2-MAX E=504, RigidBot E=53.5, Peter Stoneham's=76 -#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {800, 800, 100, 10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 600 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 8.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -// RigidBoard: To rewire this for a RigidBot see http://rigidtalk.com/wiki/index.php?title=LCD_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -#define NUM_SERVOS 0 // DGlass3D - Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/RigidBot/Configuration_adv.h b/lib/Marlin/example_configurations/RigidBot/Configuration_adv.h deleted file mode 100644 index 2118f83..0000000 --- a/lib/Marlin/example_configurations/RigidBot/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN 4 // RigidBot: Fans/Water Pump to cool the hotend cool side. -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -//#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -//#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -//#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 1.75 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 8 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/SCARA/Configuration.h b/lib/Marlin/example_configurations/SCARA/Configuration.h deleted file mode 100644 index bc60b75..0000000 --- a/lib/Marlin/example_configurations/SCARA/Configuration.h +++ /dev/null @@ -1,1335 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//========================= SCARA Settings ================================== -//=========================================================================== -// SCARA-mode for Marlin has been developed by QHARLEY in ZA in 2012/2013. Implemented -// and slightly reworked by JCERNY in 06/2014 with the goal to bring it into Master-Branch -// QHARLEYS Autobedlevelling has not been ported, because Marlin has now Bed-levelling -// You might need Z-Min endstop on SCARA-Printer to use this feature. Actually untested! -// Uncomment to use Morgan scara mode -#define SCARA -#define SCARA_SEGMENTS_PER_SECOND 200 // If movement is choppy try lowering this value -// Length of inner support arm -#define Linkage_1 150 //mm Preprocessor cannot handle decimal point... -// Length of outer support arm Measure arm lengths precisely and enter -#define Linkage_2 150 //mm - -// SCARA tower offset (position of Tower relative to bed zero position) -// This needs to be reasonably accurate as it defines the printbed position in the SCARA space. -#define SCARA_offset_x 100 //mm -#define SCARA_offset_y -56 //mm -#define SCARA_RAD2DEG 57.2957795 // to convert RAD to degrees - -#define THETA_HOMING_OFFSET 0 //calculatated from Calibration Guide and command M360 / M114 see picture in http://reprap.harleystudio.co.za/?page_id=1073 -#define PSI_HOMING_OFFSET 0 //calculatated from Calibration Guide and command M364 / M114 see picture in http://reprap.harleystudio.co.za/?page_id=1073 - -//some helper variables to make kinematics faster -#define L1_2 sq(Linkage_1) // do not change -#define L2_2 sq(Linkage_2) // do not change - -//=========================================================================== -//========================= SCARA Settings end ============================== -//=========================================================================== - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 1 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 3 // (seconds) -#define TEMP_HYSTERESIS 2 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 20 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // Merlin Hotend: From Autotune - #define DEFAULT_Kp 24.5 - #define DEFAULT_Ki 1.72 - #define DEFAULT_Kd 87.73 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //12v Heatbed Mk3 12V in parallel - //from pidautotune - #define DEFAULT_bedKp 630.14 - #define DEFAULT_bedKi 121.71 - #define DEFAULT_bedKd 815.64 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -//#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 150 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -//#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -#define USE_ZMAX_PLUG - -// coarse Endstop Settings -//#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX // open pin, inverted - #define ENDSTOPPULLUP_XMIN // open pin, inverted - #define ENDSTOPPULLUP_YMIN // open pin, inverted - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR false -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR 1 -#define Y_HOME_DIR 1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS MANUAL_Z_HOME_POS -#define X_MAX_POS 200 -#define Y_MAX_POS 200 -#define Z_MAX_POS 225 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -#define MANUAL_X_HOME_POS -22 -#define MANUAL_Y_HOME_POS -52 -#define MANUAL_Z_HOME_POS 0.1 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (40*60) -#define HOMING_FEEDRATE_Z (10*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {103.69,106.65,200/1.25,1000} // default steps per unit for SCARA -#define DEFAULT_MAX_FEEDRATE {300, 300, 30, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {300,300,20,1000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 400 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 2000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 400 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 5 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 3 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -//#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/SCARA/Configuration_adv.h b/lib/Marlin/example_configurations/SCARA/Configuration_adv.h deleted file mode 100644 index 07f1e56..0000000 --- a/lib/Marlin/example_configurations/SCARA/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 3000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 180 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 180 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 3 -#define Y_HOME_BUMP_MM 3 -#define Z_HOME_BUMP_MM 3 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 240 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -//#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 1.75 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 35 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/Swift/Configuration.h b/lib/Marlin/example_configurations/Swift/Configuration.h deleted file mode 100644 index 88e4c17..0000000 --- a/lib/Marlin/example_configurations/Swift/Configuration.h +++ /dev/null @@ -1,1363 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 115200 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_SWIFT_10 -#endif - - -#define UARM_SWIFT - -//#define DEBUG -//#define SWIFT_TEST_MODE - -#define HW_VER "3.3" -#define SW_VER_BASE "3.1.3" - -#ifdef SWIFT_TEST_MODE -#define SW_VER SW_VER_BASE"_t" -#elif defined(DEBUG) -#define SW_VER SW_VER_BASE"_d" -#else -#define SW_VER SW_VER_BASE -#endif - -#define DEVICE_NAME "SwiftPro" - -#define SEGMENTS_PER_SECOND 160 - - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 2 // (seconds) -#define TEMP_HYSTERESIS 5 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -//#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} - -#define X_ENABLE_ON 1 -#define Y_ENABLE_ON 1 -#define Z_ENABLE_ON 1 -#define E_ENABLE_ON 0 // For all extruders - - - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. - -#define INVERT_X_DIR false -#define INVERT_Y_DIR false -#define INVERT_Z_DIR false - - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS -300 -#define Y_MIN_POS -300 -#define Z_MIN_POS -300 -#define X_MAX_POS 300 -#define Y_MAX_POS 300 -#define Z_MAX_POS 300 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings -#define DECELERATE_MULTIPLE (20.0f/36.0f) -#define MIROC 128 -#define GEAR_RATIO 4.5 -#define DEFAULT_AXIS_STEPS_PER_UNIT { DECELERATE_MULTIPLE*MIROC*GEAR_RATIO,\ - DECELERATE_MULTIPLE*MIROC*GEAR_RATIO,\ - DECELERATE_MULTIPLE*MIROC*GEAR_RATIO, 360/3.1415926/12*16/1.8} - - - -//#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,500} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {500, 500, 500, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {2000,2000,2000,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 25 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 25 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 100 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 1.0 // (mm/sec) -#define DEFAULT_ZJERK 1.0 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -//#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/Swift/Configuration_adv.h b/lib/Marlin/example_configurations/Swift/Configuration_adv.h deleted file mode 100644 index 2cafe11..0000000 --- a/lib/Marlin/example_configurations/Swift/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 120 -#define DISABLE_INACTIVE_X false -#define DISABLE_INACTIVE_Y false -#define DISABLE_INACTIVE_Z false // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E false - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -//#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/TAZ4/Configuration.h b/lib/Marlin/example_configurations/TAZ4/Configuration.h deleted file mode 100644 index c4de322..0000000 --- a/lib/Marlin/example_configurations/TAZ4/Configuration.h +++ /dev/null @@ -1,1348 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(Aleph Objects, Inc, TAZ config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMBO -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "TAZ" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 7 -#define TEMP_SENSOR_1 7 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 7 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 250 -#define HEATER_1_MAXTEMP 250 -#define HEATER_2_MAXTEMP 250 -#define HEATER_3_MAXTEMP 250 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 70 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX 74 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 16 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Buda 2.0 on 24V - #define DEFAULT_Kp 6 - #define DEFAULT_Ki .3 - #define DEFAULT_Kd 125 - - // Buda 2.0 on 12V - //#define DEFAULT_Kp 22.2 - //#define DEFAULT_Ki 1.01 - //#define DEFAULT_Kd 114 - - // Ultimaker - //#define DEFAULT_Kp 22.2 - //#define DEFAULT_Ki 1.08 - //#define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 206 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //24V 360W silicone heater from NPH on 3mm borosilicate (TAZ 2.2+) - #define DEFAULT_bedKp 20 - #define DEFAULT_bedKi 5 - #define DEFAULT_bedKd 275 - - //12v 400W silicone heater from QUDB into 3mm borosilicate (TAZ 1.0+) - //from pidautotune - //#define DEFAULT_bedKp 650 - //#define DEFAULT_bedKi 60 - //#define DEFAULT_bedKd 1800 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - //#define DEFAULT_bedKp 10.00 - //#define DEFAULT_bedKi .023 - //#define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - #define ENDSTOPPULLUP_XMIN - #define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN - #define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR true -#define INVERT_E1_DIR true -#define INVERT_E2_DIR true -#define INVERT_E3_DIR true - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 298 -#define Y_MAX_POS 275 -#define Z_MAX_POS 250 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (8*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {100.5,100.5,400,850} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {800, 800, 8, 50} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 500 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 8.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 10.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 230 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -#define ENCODER_PULSES_PER_STEP 2 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -#define ENCODER_STEPS_PER_MENU_ITEM 1 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/TAZ4/Configuration_adv.h b/lib/Marlin/example_configurations/TAZ4/Configuration_adv.h deleted file mode 100644 index d0d98fb..0000000 --- a/lib/Marlin/example_configurations/TAZ4/Configuration_adv.h +++ /dev/null @@ -1,807 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again - -/********************************************************** - Fan Pins - Fan_0 8 - Extruder 0 fan - Fan_1 6 - Extruder 1 fan - Fan_2 2 - Case fan -***********************************************************/ - -#define CONTROLLERFAN_PIN 2 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 130 // 255 == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 4 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,4,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {175,175,240,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/WITBOX/Configuration.h b/lib/Marlin/example_configurations/WITBOX/Configuration.h deleted file mode 100644 index f9715f2..0000000 --- a/lib/Marlin/example_configurations/WITBOX/Configuration.h +++ /dev/null @@ -1,1319 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(bq Witbox)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 115200 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "WITBOX" - -// Added for BQ -#define SOURCE_CODE_URL "http://www.bq.com/gb/downloads-witbox.html" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 260 -#define HEATER_1_MAXTEMP 260 -#define HEATER_2_MAXTEMP 260 -#define HEATER_3_MAXTEMP 260 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // Witbox - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -//#define USE_XMIN_PLUG -//#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -#define USE_XMAX_PLUG -#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z true -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR true -#define INVERT_Y_DIR false -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR 1 -#define Y_HOME_DIR 1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 297 -#define Y_MAX_POS 210 -#define Z_MAX_POS 200 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (120*60) -#define HOMING_FEEDRATE_Z 432 - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,600.0*8/3,102.073} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {350, 350, 7.2, 80} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {1000,1000,10,1000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 10.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 200 -#define PREHEAT_1_TEMP_BED 0 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 220 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -//#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/WITBOX/Configuration_adv.h b/lib/Marlin/example_configurations/WITBOX/Configuration_adv.h deleted file mode 100644 index b719e60..0000000 --- a/lib/Marlin/example_configurations/WITBOX/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 1.75 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 80 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - //#define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/lib/Marlin/example_configurations/adafruit/ST7565/Configuration.h deleted file mode 100644 index 470279e..0000000 --- a/lib/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ /dev/null @@ -1,1327 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR true -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 200 -#define Y_MAX_POS 200 -#define Z_MAX_POS 200 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,500} // default steps per unit for Ultimaker -#define DEFAULT_MAX_FEEDRATE {300, 300, 5, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {3000,3000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 110 -#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/delta/biv2.5/Configuration.h b/lib/Marlin/example_configurations/delta/biv2.5/Configuration.h deleted file mode 100644 index 3033651..0000000 --- a/lib/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ /dev/null @@ -1,1420 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RUMBA -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "BI V2.5" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 2 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 5 -#define TEMP_SENSOR_1 5 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 1 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -//=========================================================================== -//============================== Delta Settings ============================= -//=========================================================================== -// Enable DELTA kinematics and most of the default configuration for Deltas -#define DELTA - -#if ENABLED(DELTA) - - // Make delta curves from many straight lines (linear interpolation). - // This is a trade-off between visible corners (not enough segments) - // and processor overload (too many expensive sqrt calls). - #define DELTA_SEGMENTS_PER_SECOND 100 - - // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them - - // Center-to-center distance of the holes in the diagonal push rods. - #define DELTA_DIAGONAL_ROD 440.0 // mm - - // Horizontal offset from middle of printer to smooth rod center. - #define DELTA_SMOOTH_ROD_OFFSET 330.0 // mm - - // Horizontal offset of the universal joints on the end effector. - #define DELTA_EFFECTOR_OFFSET 50.0 // mm - - // Horizontal offset of the universal joints on the carriages. - #define DELTA_CARRIAGE_OFFSET 20.0 // mm - - // Horizontal distance bridged by diagonal push rods when effector is centered. - #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) - - // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). - #define DELTA_PRINTABLE_RADIUS 160.0 - - // Delta calibration menu - // uncomment to add three points calibration menu option. - // See http://minow.blogspot.com/index.html#4918805519571907051 - // If needed, adjust the X, Y, Z calibration coordinates - // in ultralcd.cpp@lcd_delta_calibrate_menu() - //#define DELTA_CALIBRATION_MENU - -#endif - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -//#define USE_XMIN_PLUG -//#define USE_YMIN_PLUG -//#define USE_ZMIN_PLUG -#define USE_XMAX_PLUG -#define USE_YMAX_PLUG -#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 4000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe -// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN. -//#define Z_PROBE_ALLEN_KEY - -#if ENABLED(Z_PROBE_ALLEN_KEY) - // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, - // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. - - // Just like Kossel Pro - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00 - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00 - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z 100.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (XY_PROBE_SPEED)/2 - - #define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip - #define Z_PROBE_ALLEN_KEY_STOW_1_Y -122.00 - #define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0 - #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_STOW_2_X 36.00 // move down to retract probe - #define Z_PROBE_ALLEN_KEY_STOW_2_Y -122.00 - #define Z_PROBE_ALLEN_KEY_STOW_2_Z 25.0 - #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/2 - - #define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0 // return to 0,0,100 - #define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0 - #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z - #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED - -#endif // Z_PROBE_ALLEN_KEY - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 50 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false // DELTA does not invert -#define INVERT_Y_DIR false -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR 1 // deltas always home to max -#define Y_HOME_DIR 1 -#define Z_HOME_DIR 1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Y_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Z_MIN_POS 0 -#define X_MAX_POS DELTA_PRINTABLE_RADIUS -#define Y_MAX_POS DELTA_PRINTABLE_RADIUS -#define Z_MAX_POS MANUAL_Z_HOME_POS - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - // Set the rectangle in which to probe. - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. - #define AUTO_BED_LEVELING_GRID_POINTS 9 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -#define MANUAL_Z_HOME_POS 405 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - - -// Delta only homes to Z -#define HOMING_FEEDRATE_Z (200*30) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings -// delta speeds must be the same on xyz -#define DEFAULT_AXIS_STEPS_PER_UNIT {72.9, 72.9, 72.9, 291} // default steps per unit for BI v2.5 (cable drive) -#define DEFAULT_MAX_FEEDRATE {500, 500, 500, 150} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 15.0 // (mm/sec) -#define DEFAULT_ZJERK 15.0 // (mm/sec) Must be same as XY for delta -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h b/lib/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h deleted file mode 100644 index 9183be4..0000000 --- a/lib/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h +++ /dev/null @@ -1,801 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 120 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 5 // deltas need the same for all three axis -#define HOMING_BUMP_DIVISOR {10, 10, 10} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 0 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE_XYZ 50*60 - #define MANUAL_FEEDRATE { MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, 60 } // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -// (don't use SLOWDOWN with DELTA because DELTA generates hundreds of segments per second) -//#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 5 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 100 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 100 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/delta/generic/Configuration.h b/lib/Marlin/example_configurations/delta/generic/Configuration.h deleted file mode 100644 index 9d7a500..0000000 --- a/lib/Marlin/example_configurations/delta/generic/Configuration.h +++ /dev/null @@ -1,1414 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "Deltabot" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 -1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 0 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -//=========================================================================== -//============================== Delta Settings ============================= -//=========================================================================== -// Enable DELTA kinematics and most of the default configuration for Deltas -#define DELTA - -#if ENABLED(DELTA) - - // Make delta curves from many straight lines (linear interpolation). - // This is a trade-off between visible corners (not enough segments) - // and processor overload (too many expensive sqrt calls). - #define DELTA_SEGMENTS_PER_SECOND 200 - - // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them - - // Center-to-center distance of the holes in the diagonal push rods. - #define DELTA_DIAGONAL_ROD 250.0 // mm - - // Horizontal offset from middle of printer to smooth rod center. - #define DELTA_SMOOTH_ROD_OFFSET 175.0 // mm - - // Horizontal offset of the universal joints on the end effector. - #define DELTA_EFFECTOR_OFFSET 33.0 // mm - - // Horizontal offset of the universal joints on the carriages. - #define DELTA_CARRIAGE_OFFSET 18.0 // mm - - // Horizontal distance bridged by diagonal push rods when effector is centered. - #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) - - // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). - #define DELTA_PRINTABLE_RADIUS 140.0 - - // Delta calibration menu - // uncomment to add three points calibration menu option. - // See http://minow.blogspot.com/index.html#4918805519571907051 - // If needed, adjust the X, Y, Z calibration coordinates - // in ultralcd.cpp@lcd_delta_calibrate_menu() - //#define DELTA_CALIBRATION_MENU - -#endif - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -//#define USE_XMIN_PLUG -//#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG // a Z probe -#define USE_XMAX_PLUG -#define USE_YMAX_PLUG -#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 4000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe -// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN. -//#define Z_PROBE_ALLEN_KEY - -#if ENABLED(Z_PROBE_ALLEN_KEY) - // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, - // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. - - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED)/10 - - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position - #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0 - #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0 - #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down - #define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0 - #define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0 - #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/10 - - #define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear - #define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0 - #define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0 - #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z - #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED - -#endif // Z_PROBE_ALLEN_KEY - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false // DELTA does not invert -#define INVERT_Y_DIR false -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR 1 // deltas always home to max -#define Y_HOME_DIR 1 -#define Z_HOME_DIR 1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Y_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Z_MIN_POS 0 -#define X_MAX_POS DELTA_PRINTABLE_RADIUS -#define Y_MAX_POS DELTA_PRINTABLE_RADIUS -#define Z_MAX_POS MANUAL_Z_HOME_POS - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - // Set the rectangle in which to probe - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. - #define AUTO_BED_LEVELING_GRID_POINTS 9 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -#define MANUAL_Z_HOME_POS 250 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - - -// Delta only homes to Z -#define HOMING_FEEDRATE_Z (200*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings -// delta speeds must be the same on xyz -#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 80, 760*1.1} // default steps per unit for Kossel (GT2, 20 tooth) -#define DEFAULT_MAX_FEEDRATE {500, 500, 500, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 20.0 // (mm/sec) Must be same as XY for delta -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/delta/generic/Configuration_adv.h b/lib/Marlin/example_configurations/delta/generic/Configuration_adv.h deleted file mode 100644 index eb79a30..0000000 --- a/lib/Marlin/example_configurations/delta/generic/Configuration_adv.h +++ /dev/null @@ -1,801 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 5 // deltas need the same for all three axis -#define HOMING_BUMP_DIVISOR {10, 10, 10} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE_XYZ 50*60 - #define MANUAL_FEEDRATE { MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, 60 } // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -// (don't use SLOWDOWN with DELTA because DELTA generates hundreds of segments per second) -//#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/lib/Marlin/example_configurations/delta/kossel_mini/Configuration.h deleted file mode 100644 index 1091e93..0000000 --- a/lib/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ /dev/null @@ -1,1417 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "Mini Kossel" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 7 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 11 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 5 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -//=========================================================================== -//============================== Delta Settings ============================= -//=========================================================================== -// Enable DELTA kinematics and most of the default configuration for Deltas -#define DELTA - -#if ENABLED(DELTA) - - // Make delta curves from many straight lines (linear interpolation). - // This is a trade-off between visible corners (not enough segments) - // and processor overload (too many expensive sqrt calls). - #define DELTA_SEGMENTS_PER_SECOND 200 - - // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them - - // Center-to-center distance of the holes in the diagonal push rods. - #define DELTA_DIAGONAL_ROD 215.0 // mm - - // Horizontal offset from middle of printer to smooth rod center. - #define DELTA_SMOOTH_ROD_OFFSET 145.0 // mm - - // Horizontal offset of the universal joints on the end effector. - #define DELTA_EFFECTOR_OFFSET 19.9 // mm - - // Horizontal offset of the universal joints on the carriages. - #define DELTA_CARRIAGE_OFFSET 19.5 // mm - - // Horizontal distance bridged by diagonal push rods when effector is centered. - #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) - - // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). - #define DELTA_PRINTABLE_RADIUS 90.0 - - // Delta calibration menu - // uncomment to add three points calibration menu option. - // See http://minow.blogspot.com/index.html#4918805519571907051 - // If needed, adjust the X, Y, Z calibration coordinates - // in ultralcd.cpp@lcd_delta_calibrate_menu() - //#define DELTA_CALIBRATION_MENU - -#endif - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -//#define USE_XMIN_PLUG -//#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -#define USE_XMAX_PLUG -#define USE_YMAX_PLUG -#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 0 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 4000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe -// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN. -#define Z_PROBE_ALLEN_KEY - -#if ENABLED(Z_PROBE_ALLEN_KEY) - // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, - // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. - - // Kossel Mini - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED/10) - - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20 - // Move the probe into position - #define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 - #define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0 - #define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0 - #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED - // Move the nozzle down further to push the probe into retracted position. - #define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X - #define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y - #define Z_PROBE_ALLEN_KEY_STOW_2_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z-Z_PROBE_ALLEN_KEY_STOW_DEPTH) - #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED/10) - // Raise things back up slightly so we don't bump into anything - #define Z_PROBE_ALLEN_KEY_STOW_3_X Z_PROBE_ALLEN_KEY_STOW_2_X - #define Z_PROBE_ALLEN_KEY_STOW_3_Y Z_PROBE_ALLEN_KEY_STOW_2_Y - #define Z_PROBE_ALLEN_KEY_STOW_3_Z (Z_PROBE_ALLEN_KEY_STOW_1_Z+Z_PROBE_ALLEN_KEY_STOW_DEPTH) - #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE (XY_PROBE_SPEED/2) - - #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z - #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED - -#endif // Z_PROBE_ALLEN_KEY - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 50 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false // DELTA does not invert -#define INVERT_Y_DIR false -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 15 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR 1 // deltas always home to max -#define Y_HOME_DIR 1 -#define Z_HOME_DIR 1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Y_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Z_MIN_POS 0 -#define X_MAX_POS DELTA_PRINTABLE_RADIUS -#define Y_MAX_POS DELTA_PRINTABLE_RADIUS -#define Z_MAX_POS MANUAL_Z_HOME_POS - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - // Set the rectangle in which to probe - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. - #define AUTO_BED_LEVELING_GRID_POINTS 9 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -#define MANUAL_Z_HOME_POS 250 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - - -// Delta only homes to Z -#define HOMING_FEEDRATE_Z (200*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings -// delta speeds must be the same on xyz -#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 80, 760*1.1} // default steps per unit for Kossel (GT2, 20 tooth) -#define DEFAULT_MAX_FEEDRATE {500, 500, 500, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 20.0 // (mm/sec) Must be same as XY for delta -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/lib/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h deleted file mode 100644 index 7ec5948..0000000 --- a/lib/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h +++ /dev/null @@ -1,800 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 5 // deltas need the same for all three axis -#define HOMING_BUMP_DIVISOR {10, 10, 10} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE_XYZ 50*60 - #define MANUAL_FEEDRATE { MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, 60 } // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -//#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/lib/Marlin/example_configurations/delta/kossel_pro/Configuration.h deleted file mode 100644 index fde86a5..0000000 --- a/lib/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ /dev/null @@ -1,1417 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Example configuration file for OpenBeam Kossel Pro - * tested on 2015-05-19 by @Wackerbarth - * using Arduino 1.6.5 (Mac) - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 115200 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_BRAINWAVE_PRO -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "Kossel Pro" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 5 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 5 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX 125 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 50 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // Kossel Pro - #define DEFAULT_Kp 19.30 - #define DEFAULT_Ki 3.51 - #define DEFAULT_Kd 26.56 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //Kossel Pro heated bed plate with borosilicate glass - //from pidautotune (M303 E-1 S60 C8) - #define DEFAULT_bedKp 370.25 - #define DEFAULT_bedKi 62.77 - #define DEFAULT_bedKd 545.98 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -//=========================================================================== -//============================== Delta Settings ============================= -//=========================================================================== -// Enable DELTA kinematics and most of the default configuration for Deltas -#define DELTA - -#if ENABLED(DELTA) - - // Make delta curves from many straight lines (linear interpolation). - // This is a trade-off between visible corners (not enough segments) - // and processor overload (too many expensive sqrt calls). - #define DELTA_SEGMENTS_PER_SECOND 160 - - // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them - - // Center-to-center distance of the holes in the diagonal push rods. - #define DELTA_DIAGONAL_ROD 301.0 // mm - - // Horizontal offset from middle of printer to smooth rod center. - #define DELTA_SMOOTH_ROD_OFFSET 212.357 // mm - - // Horizontal offset of the universal joints on the end effector. - #define DELTA_EFFECTOR_OFFSET 30.0 // mm - - // Horizontal offset of the universal joints on the carriages. - #define DELTA_CARRIAGE_OFFSET 30.0 // mm - - // Horizontal distance bridged by diagonal push rods when effector is centered. - #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) - - // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). - #define DELTA_PRINTABLE_RADIUS 127.0 - - // Delta calibration menu - // uncomment to add three points calibration menu option. - // See http://minow.blogspot.com/index.html#4918805519571907051 - // If needed, adjust the X, Y, Z calibration coordinates - // in ultralcd.cpp@lcd_delta_calibrate_menu() - //#define DELTA_CALIBRATION_MENU - -#endif - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -//#define USE_XMIN_PLUG -//#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG // a Z probe -#define USE_XMAX_PLUG -#define USE_YMAX_PLUG -#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -23 // KosselPro actual: -22.919 -#define Y_PROBE_OFFSET_FROM_EXTRUDER -6 // KosselPro actual: -6.304 -// Kossel Pro note: The correct value is likely -17.45 but I'd rather err on the side of -// not giving someone a head crash. Use something like G29 Z-0.2 to adjust as needed. -#define Z_PROBE_OFFSET_FROM_EXTRUDER -17.25 // Increase this if the first layer is too thin (remember: it's a negative number so increase means closer to zero). - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe -// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN. -#define Z_PROBE_ALLEN_KEY - -#if ENABLED(Z_PROBE_ALLEN_KEY) - // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, - // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. - - // Kossel Pro - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_X -105.00 // Move left but not quite so far that we'll bump the belt - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y 0.00 - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0 - #define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_X -110.00 // Move outward to position deploy pin to the left of the arm - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y -125.00 - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z Z_PROBE_ALLEN_KEY_DEPLOY_1_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_X 45.00 // Move right to trigger deploy pin - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y -125.00 - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z - #define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE (XY_PROBE_SPEED)/2 - - #define Z_PROBE_ALLEN_KEY_STOW_1_X 36.00 // Line up with bed retaining clip - #define Z_PROBE_ALLEN_KEY_STOW_1_Y -125.00 - #define Z_PROBE_ALLEN_KEY_STOW_1_Z 75.0 - #define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_STOW_2_X Z_PROBE_ALLEN_KEY_STOW_1_X // move down to retract probe - #define Z_PROBE_ALLEN_KEY_STOW_2_Y Z_PROBE_ALLEN_KEY_STOW_1_Y - #define Z_PROBE_ALLEN_KEY_STOW_2_Z 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/2 - - #define Z_PROBE_ALLEN_KEY_STOW_3_X 0.0 // return to 0,0,100 - #define Z_PROBE_ALLEN_KEY_STOW_3_Y 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_3_Z 100.0 - #define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED - - #define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0 - #define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z - #define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED - -#endif // Z_PROBE_ALLEN_KEY - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 100 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -15 -#define Z_PROBE_OFFSET_RANGE_MAX 5 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR true -#define INVERT_Y_DIR true -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR true -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR 1 // deltas always home to max -#define Y_HOME_DIR 1 -#define Z_HOME_DIR 1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Y_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Z_MIN_POS 0 -#define X_MAX_POS DELTA_PRINTABLE_RADIUS -#define Y_MAX_POS DELTA_PRINTABLE_RADIUS -#define Z_MAX_POS MANUAL_Z_HOME_POS - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - // Set the rectangle in which to probe - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS-25) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. - #define AUTO_BED_LEVELING_GRID_POINTS 7 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -#define MANUAL_Z_HOME_POS 277 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - - -// Delta only homes to Z -#define HOMING_FEEDRATE_Z (200*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -#define XYZ_FULL_STEPS_PER_ROTATION 200 -#define XYZ_MICROSTEPS 32 -#define XYZ_BELT_PITCH 2 -#define XYZ_PULLEY_TEETH 20 -#define XYZ_STEPS ((XYZ_FULL_STEPS_PER_ROTATION) * (XYZ_MICROSTEPS) / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH)) - -// default settings -// delta speeds must be the same on xyz -#define DEFAULT_AXIS_STEPS_PER_UNIT {XYZ_STEPS, XYZ_STEPS, XYZ_STEPS, 184.8} -#define DEFAULT_MAX_FEEDRATE {200, 200, 200, 200} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,9000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 20.0 // (mm/sec) Must be same as XY for delta -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h b/lib/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h deleted file mode 100644 index 8114779..0000000 --- a/lib/Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h +++ /dev/null @@ -1,805 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -// Example configuration file for OpenBeam Kossel Pro -// tested on 2015-05-19 by @Wackerbarth -// using Arduino 1.6.5 (Mac) - - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 5 // deltas need the same for all three axis -#define HOMING_BUMP_DIVISOR {10, 10, 10} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE_XYZ 50*60 - #define MANUAL_FEEDRATE { MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, 60 } // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -//#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/delta/kossel_pro/README.md b/lib/Marlin/example_configurations/delta/kossel_pro/README.md deleted file mode 100644 index 37b5ccf..0000000 --- a/lib/Marlin/example_configurations/delta/kossel_pro/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Example Configuration for OpenBeam Kossel Pro [BRAINWAVE_PRO](http://www.openbeamusa.com/3d-printers/kossel/) -* Configuration files for the **Openbeam Kossel Pro** as delivered in their KickStarter distribution - -I [@Wackerbarth](https://github.com/Wackerbarth) tested this version on my Kossel Pro and Arduino 1.6.5 for Mac. -This configuration is a transition to merge Terence Tam's configuration with up-to-date Marlin source and a current Arduino IDE diff --git a/lib/Marlin/example_configurations/delta/kossel_xl/Configuration.h b/lib/Marlin/example_configurations/delta/kossel_xl/Configuration.h deleted file mode 100644 index 0cfd4e4..0000000 --- a/lib/Marlin/example_configurations/delta/kossel_xl/Configuration.h +++ /dev/null @@ -1,1420 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(oxivanisher)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -#define CUSTOM_MACHINE_NAME "Kossel k800XL" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 2 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 5 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 5 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // oXis Kossel k800 XL - #define DEFAULT_Kp 22.04 - #define DEFAULT_Ki 1.65 - #define DEFAULT_Kd 73.67 - - // Kossel k800 XL - //#define DEFAULT_Kp 22.25 - //#define DEFAULT_Ki 1.45 - //#define DEFAULT_Kd 85.30 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 15.00 - #define DEFAULT_bedKi .04 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -//=========================================================================== -//============================== Delta Settings ============================= -//=========================================================================== -// Enable DELTA kinematics and most of the default configuration for Deltas -#define DELTA - -#if ENABLED(DELTA) - - // Make delta curves from many straight lines (linear interpolation). - // This is a trade-off between visible corners (not enough segments) - // and processor overload (too many expensive sqrt calls). - #define DELTA_SEGMENTS_PER_SECOND 160 - - // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them - - // Center-to-center distance of the holes in the diagonal push rods. - #define DELTA_DIAGONAL_ROD 317.3 + 2.5 // mm - - // Horizontal offset from middle of printer to smooth rod center. - #define DELTA_SMOOTH_ROD_OFFSET 220.1 // mm - - // Horizontal offset of the universal joints on the end effector. - #define DELTA_EFFECTOR_OFFSET 24.0 // mm - - // Horizontal offset of the universal joints on the carriages. - #define DELTA_CARRIAGE_OFFSET 22.0 // mm - - // Horizontal distance bridged by diagonal push rods when effector is centered. - #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET) + 1) - - // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). - #define DELTA_PRINTABLE_RADIUS 140.0 - - // Delta calibration menu - // uncomment to add three points calibration menu option. - // See http://minow.blogspot.com/index.html#4918805519571907051 - // If needed, adjust the X, Y, Z calibration coordinates - // in ultralcd.cpp@lcd_delta_calibrate_menu() - //#define DELTA_CALIBRATION_MENU - -#endif - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -//#define USE_XMIN_PLUG -//#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG // a Z probe -#define USE_XMAX_PLUG -#define USE_YMAX_PLUG -#define USE_ZMAX_PLUG - -// coarse Endstop Settings -//#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - #define ENDSTOPPULLUP_XMAX - #define ENDSTOPPULLUP_YMAX - #define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - #define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER 0.0 // Z probe to nozzle X offset: -left +right -#define Y_PROBE_OFFSET_FROM_EXTRUDER 0.0 // Z probe to nozzle Y offset: -front +behind -#define Z_PROBE_OFFSET_FROM_EXTRUDER 0.3 // Z probe to nozzle Z offset: -below (always!) - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe -// Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN. -//#define Z_PROBE_ALLEN_KEY - -#if ENABLED(Z_PROBE_ALLEN_KEY) - // 2 or 3 sets of coordinates for deploying and retracting the spring loaded touch probe on G29, - // if servo actuated touch probe is not defined. Uncomment as appropriate for your printer/probe. - - //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_X 30.0 - //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Y DELTA_PRINTABLE_RADIUS - //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_Z 100.0 - //#define Z_PROBE_ALLEN_KEY_DEPLOY_1_FEEDRATE XY_PROBE_SPEED - - //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_X 0.0 - //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Y DELTA_PRINTABLE_RADIUS - //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_Z 100.0 - //#define Z_PROBE_ALLEN_KEY_DEPLOY_2_FEEDRATE (XY_PROBE_SPEED)/10 - - //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_X Z_PROBE_ALLEN_KEY_DEPLOY_2_X * 0.75 - //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Y Z_PROBE_ALLEN_KEY_DEPLOY_2_Y * 0.75 - //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_Z Z_PROBE_ALLEN_KEY_DEPLOY_2_Z - //#define Z_PROBE_ALLEN_KEY_DEPLOY_3_FEEDRATE XY_PROBE_SPEED - - //#define Z_PROBE_ALLEN_KEY_STOW_1_X -64.0 // Move the probe into position - //#define Z_PROBE_ALLEN_KEY_STOW_1_Y 56.0 - //#define Z_PROBE_ALLEN_KEY_STOW_1_Z 23.0 - //#define Z_PROBE_ALLEN_KEY_STOW_1_FEEDRATE XY_PROBE_SPEED - - //#define Z_PROBE_ALLEN_KEY_STOW_2_X -64.0 // Push it down - //#define Z_PROBE_ALLEN_KEY_STOW_2_Y 56.0 - //#define Z_PROBE_ALLEN_KEY_STOW_2_Z 3.0 - //#define Z_PROBE_ALLEN_KEY_STOW_2_FEEDRATE (XY_PROBE_SPEED)/10 - - //#define Z_PROBE_ALLEN_KEY_STOW_3_X -64.0 // Move it up to clear - //#define Z_PROBE_ALLEN_KEY_STOW_3_Y 56.0 - //#define Z_PROBE_ALLEN_KEY_STOW_3_Z 50.0 - //#define Z_PROBE_ALLEN_KEY_STOW_3_FEEDRATE XY_PROBE_SPEED - - //#define Z_PROBE_ALLEN_KEY_STOW_4_X 0.0 - //#define Z_PROBE_ALLEN_KEY_STOW_4_Y 0.0 - //#define Z_PROBE_ALLEN_KEY_STOW_4_Z Z_PROBE_ALLEN_KEY_STOW_3_Z - //#define Z_PROBE_ALLEN_KEY_STOW_4_FEEDRATE XY_PROBE_SPEED - -#endif // Z_PROBE_ALLEN_KEY - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 20 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 10 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false // DELTA does not invert -#define INVERT_Y_DIR false -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR true -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR 1 // deltas always home to max -#define Y_HOME_DIR 1 -#define Z_HOME_DIR 1 - -#define min_software_endstops false // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Y_MIN_POS -(DELTA_PRINTABLE_RADIUS) -#define Z_MIN_POS 0 -#define X_MAX_POS DELTA_PRINTABLE_RADIUS -#define Y_MAX_POS DELTA_PRINTABLE_RADIUS -#define Z_MAX_POS MANUAL_Z_HOME_POS - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode. - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - // Set the rectangle in which to probe - #define DELTA_PROBEABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) - #define LEFT_PROBE_BED_POSITION -(DELTA_PROBEABLE_RADIUS) - #define RIGHT_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - #define FRONT_PROBE_BED_POSITION - (DELTA_PROBEABLE_RADIUS - 20) - #define BACK_PROBE_BED_POSITION DELTA_PROBEABLE_RADIUS - 40 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Non-linear bed leveling will be used. - // Compensate by interpolating between the nearest four Z probe values for each point. - // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. - #define AUTO_BED_LEVELING_GRID_POINTS 5 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -#define MANUAL_Z_HOME_POS 381.4 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Delta only homes to Z -#define HOMING_FEEDRATE_Z (60*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// variables to calculate steps -#define XYZ_FULL_STEPS_PER_ROTATION 200 -#define XYZ_MICROSTEPS 16 -#define XYZ_BELT_PITCH 2 -#define XYZ_PULLEY_TEETH 16 - -// delta speeds must be the same on xyz -#define XYZ_STEPS (XYZ_FULL_STEPS_PER_ROTATION * XYZ_MICROSTEPS / double(XYZ_BELT_PITCH) / double(XYZ_PULLEY_TEETH)) - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {XYZ_STEPS, XYZ_STEPS, XYZ_STEPS, 158} // default steps per unit for PowerWasp -#define DEFAULT_MAX_FEEDRATE {200, 200, 200, 25} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 2000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 20.0 // (mm/sec) -#define DEFAULT_EJERK 20.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h b/lib/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h deleted file mode 100644 index 2a7399b..0000000 --- a/lib/Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h +++ /dev/null @@ -1,801 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 2 -#define Y_HOME_BUMP_MM 2 -#define Z_HOME_BUMP_MM 2 // deltas need the same for all three axis -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 120 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE_XYZ 50*60 - #define MANUAL_FEEDRATE { MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, MANUAL_FEEDRATE_XYZ, 60 } // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -// (don't use SLOWDOWN with DELTA because DELTA generates hundreds of segments per second) -//#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/delta/kossel_xl/README.md b/lib/Marlin/example_configurations/delta/kossel_xl/README.md deleted file mode 100644 index 1cabcdb..0000000 --- a/lib/Marlin/example_configurations/delta/kossel_xl/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Configuration for Kossel k800 XL -This example configuration is for a Kossel XL with a printable bed diameter of 280mm and a height of 380mm. It also has the auto bed leveling probe (with an endstop switch) and the heated bed activated. - -## Configuration -You might need (or want) to edit at least the following settings in `Configuration.h`: -* `MANUAL_Z_HOME_POS` - The available height of your printing space. Auto Bed Leveling makes it less important to have the exact value. -* `DELTA_PRINTABLE_RADIUS` - The printable radius is how far from the center the nozzle can reach. -* `DEFAULT_AXIS_STEPS_PER_UNIT` - Steps-per-millimeter for the delta steppers, and for the extruder [to optimize the amount of filament flow](http://zennmaster.com/makingstuff/reprap-101-calibrating-your-extruder-part-1-e-steps). - -### Fine tuning -* Increase `DELTA_RADIUS` if the model comes out convex (with a bulge in the middle) -* Increase `DELTA_DIAGONAL_ROD` if the model comes out larger than expected - -### [http://reprap.org/wiki/PID_Tuning](PID Tuning) -* `DEFAULT_Kp` - The proportional term -* `DEFAULT_Ki` - The integral term -* `DEFAULT_Kd` - The derivative term - -### PSU Options -* The power supply is configured to 2 (to use a relay to switch 12V on and off) -* It is configured to be off by default diff --git a/lib/Marlin/example_configurations/makibox/Configuration.h b/lib/Marlin/example_configurations/makibox/Configuration.h deleted file mode 100644 index d1ef7d3..0000000 --- a/lib/Marlin/example_configurations/makibox/Configuration.h +++ /dev/null @@ -1,1330 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_5DPRINT -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 1 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 12 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 - - // MakerGear - //#define DEFAULT_Kp 7.0 - //#define DEFAULT_Ki 0.1 - //#define DEFAULT_Kd 12 - - // Mendel Parts V9 on 12V - //#define DEFAULT_Kp 63.0 - //#define DEFAULT_Ki 2.25 - //#define DEFAULT_Kd 440 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 175 // limits duty cycle to bed; 255=full current -// This limit is set to 175 by default in the Makibox configuration and it can adjusted -// to increase the heat up rate. However, if changed, user must be aware of the safety concerns -// of drawing too much current from the power supply. - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -//#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 0 -#define Y_ENABLE_ON 0 -#define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR false -#define INVERT_Z_DIR false - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR true -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 110 -#define Y_MAX_POS 150 -#define Z_MAX_POS 86 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY 1500 -#define HOMING_FEEDRATE_Z (2*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -#define DEFAULT_AXIS_STEPS_PER_UNIT {400, 400, 400, 163} // default steps per unit for ***** MakiBox A6 ***** -#define DEFAULT_MAX_FEEDRATE {60, 60, 20, 45} // (mm/sec) -#define DEFAULT_MAX_ACCELERATION {2000,2000,30,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -//#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/makibox/Configuration_adv.h b/lib/Marlin/example_configurations/makibox/Configuration_adv.h deleted file mode 100644 index 22cefd5..0000000 --- a/lib/Marlin/example_configurations/makibox/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN -1 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 2 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 4 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.7, 1.7, 1.7, 1.7} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - //#define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/lib/Marlin/example_configurations/tvrrug/Round2/Configuration.h deleted file mode 100644 index 7a307cc..0000000 --- a/lib/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ /dev/null @@ -1,1321 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration.h - * - * Basic settings such as: - * - * - Type of electronics - * - Type of temperature sensor - * - Printer geometry - * - Endstop configuration - * - LCD controller - * - Extra features - * - * Advanced settings can be found in Configuration_adv.h - * - */ -#ifndef CONFIGURATION_H -#define CONFIGURATION_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_H_VERSION 010100 - -//=========================================================================== -//============================= Getting Started ============================= -//=========================================================================== - -/** - * Here are some standard links for getting your machine calibrated: - * - * http://reprap.org/wiki/Calibration - * http://youtu.be/wAL9d7FgInk - * http://calculator.josefprusa.cz - * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide - * http://www.thingiverse.com/thing:5573 - * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap - * http://www.thingiverse.com/thing:298812 - */ - -//=========================================================================== -//============================= DELTA Printer =============================== -//=========================================================================== -// For a Delta printer replace the configuration files with the files in the -// example_configurations/delta directory. -// - -//=========================================================================== -//============================= SCARA Printer =============================== -//=========================================================================== -// For a Scara printer replace the configuration files with the files in the -// example_configurations/SCARA directory. -// - -// @section info - -// User-specified version info of this build to display in [Pronterface, etc] terminal window during -// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this -// build by the user have been successfully uploaded into firmware. -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. -#define SHOW_BOOTSCREEN -#define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during boot in line 1 -#define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during boot in line 2 - -// -// *** VENDORS PLEASE READ ***************************************************** -// -// Marlin now allow you to have a vendor boot image to be displayed on machine -// start. When SHOW_CUSTOM_BOOTSCREEN is defined Marlin will first show your -// custom boot image and them the default Marlin boot image is shown. -// -// We suggest for you to take advantage of this new feature and keep the Marlin -// boot image unmodified. For an example have a look at the bq Hephestos 2 -// example configuration folder. -// -//#define SHOW_CUSTOM_BOOTSCREEN -// @section machine - -// SERIAL_PORT selects which serial port should be used for communication with the host. -// This allows the connection of wireless adapters (for instance) to non-default port pins. -// Serial port 0 is still used by the Arduino bootloader regardless of this setting. -// :[0,1,2,3,4,5,6,7] -#define SERIAL_PORT 0 - -// This determines the communication speed of the printer -// :[2400,9600,19200,38400,57600,115200,250000] -#define BAUDRATE 250000 - -// Enable the Bluetooth serial interface on AT90USB devices -//#define BLUETOOTH - -// The following define selects which electronics board you have. -// Please choose the name from boards.h that matches your setup -#ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_OMCA -#endif - -// Optional custom name for your RepStrap or other custom machine -// Displayed in the LCD "Ready" message -//#define CUSTOM_MACHINE_NAME "3D Printer" - -// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) -// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) -//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" - -// This defines the number of extruders -// :[1,2,3,4] -#define EXTRUDERS 1 - -// For Cyclops or any "multi-extruder" that shares a single nozzle. -//#define SINGLENOZZLE - -// A dual extruder that uses a single stepper motor -// Don't forget to set SSDE_SERVO_ANGLES and HOTEND_OFFSET_X/Y/Z -//#define SWITCHING_EXTRUDER -#if ENABLED(SWITCHING_EXTRUDER) - #define SWITCHING_EXTRUDER_SERVO_NR 0 - #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 - //#define HOTEND_OFFSET_Z {0.0, 0.0} -#endif - -/** - * "Mixing Extruder" - * - Adds a new code, M165, to set the current mix factors. - * - Extends the stepping routines to move multiple steppers in proportion to the mix. - * - Optional support for Repetier Host M163, M164, and virtual extruder. - * - This implementation supports only a single extruder. - * - Enable DIRECT_MIXING_IN_G1 for Pia Taubert's reference implementation - */ -//#define MIXING_EXTRUDER -#if ENABLED(MIXING_EXTRUDER) - #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder - #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 - //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands -#endif - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -//#define HOTEND_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - -//// The following define selects which power supply you have. Please choose the one that matches your setup -// 1 = ATX -// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) -// :{1:'ATX',2:'X-Box 360'} -#define POWER_SUPPLY 1 - -// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. -//#define PS_DEFAULT_OFF - -// @section temperature - -//=========================================================================== -//============================= Thermal Settings ============================ -//=========================================================================== -// -//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table -// -//// Temperature sensor settings: -// -3 is thermocouple with MAX31855 (only for sensor 0) -// -2 is thermocouple with MAX6675 (only for sensor 0) -// -1 is thermocouple with AD595 -// 0 is not used -// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) -// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) -// 3 is Mendel-parts thermistor (4.7k pullup) -// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! -// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) -// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) -// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) -// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) -// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -// 10 is 100k RS thermistor 198-961 (4.7k pullup) -// 11 is 100k beta 3950 1% thermistor (4.7k pullup) -// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" -// 20 is the PT100 circuit found in the Ultimainboard V2.x -// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 -// 66 is 4.7M High Temperature thermistor from Dyze Design -// 70 is the 100K thermistor found in the bq Hephestos 2 -// -// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k -// (but gives greater accuracy and more stable PID) -// 51 is 100k thermistor - EPCOS (1k pullup) -// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) -// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) -// -// 1047 is Pt1000 with 4k7 pullup -// 1010 is Pt1000 with 1k pullup (non standard) -// 147 is Pt100 with 4k7 pullup -// 110 is Pt100 with 1k pullup (non standard) -// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. -// Use it for Testing or Development purposes. NEVER for production machine. -//#define DUMMY_THERMISTOR_998_VALUE 25 -//#define DUMMY_THERMISTOR_999_VALUE 100 -// :{ '0': "Not used",'1':"100k / 4.7k - EPCOS",'2':"200k / 4.7k - ATC Semitec 204GT-2",'3':"Mendel-parts / 4.7k",'4':"10k !! do not use for a hotend. Bad resolution at high temp. !!",'5':"100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'6':"100k / 4.7k EPCOS - Not as accurate as Table 1",'7':"100k / 4.7k Honeywell 135-104LAG-J01",'8':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT",'9':"100k / 4.7k GE Sensing AL03006-58.2K-97-G1",'10':"100k / 4.7k RS 198-961",'11':"100k / 4.7k beta 3950 1%",'12':"100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)",'13':"100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'",'20':"PT100 (Ultimainboard V2.x)",'51':"100k / 1k - EPCOS",'52':"200k / 1k - ATC Semitec 204GT-2",'55':"100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)",'60':"100k Maker's Tool Works Kapton Bed Thermistor beta=3950",'66':"Dyze Design 4.7M High Temperature thermistor",'70':"the 100K thermistor found in the bq Hephestos 2",'71':"100k / 4.7k Honeywell 135-104LAF-J01",'147':"Pt100 / 4.7k",'1047':"Pt1000 / 4.7k",'110':"Pt100 / 1k (non-standard)",'1010':"Pt1000 / 1k (non standard)",'-3':"Thermocouple + MAX31855 (only for sensor 0)",'-2':"Thermocouple + MAX6675 (only for sensor 0)",'-1':"Thermocouple + AD595",'998':"Dummy 1",'999':"Dummy 2" } -#define TEMP_SENSOR_0 5 -#define TEMP_SENSOR_1 0 -#define TEMP_SENSOR_2 0 -#define TEMP_SENSOR_3 0 -#define TEMP_SENSOR_BED 5 - -// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. -//#define TEMP_SENSOR_1_AS_REDUNDANT -#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 - -// Extruder temperature must be close to target for this long before M109 returns success -#define TEMP_RESIDENCY_TIME 10 // (seconds) -#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// Bed temperature must be close to target for this long before M190 returns success -#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) -#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one -#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. - -// The minimal temperature defines the temperature below which the heater will not be enabled It is used -// to check that the wiring to the thermistor is not broken. -// Otherwise this would lead to the heater being powered on all the time. -#define HEATER_0_MINTEMP 5 -#define HEATER_1_MINTEMP 5 -#define HEATER_2_MINTEMP 5 -#define HEATER_3_MINTEMP 5 -#define BED_MINTEMP 5 - -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define HEATER_0_MAXTEMP 275 -#define HEATER_1_MAXTEMP 275 -#define HEATER_2_MAXTEMP 275 -#define HEATER_3_MAXTEMP 275 -#define BED_MAXTEMP 150 - -//=========================================================================== -//============================= PID Settings ================================ -//=========================================================================== -// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning - -// Comment the following line to disable PID and enable bang-bang. -#define PIDTEMP -#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current -#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current -#if ENABLED(PIDTEMP) - //#define PID_AUTOTUNE_MENU // Add PID Autotune to the LCD "Temperature" menu to run M303 and apply the result. - //#define PID_DEBUG // Sends debug data to the serial port. - //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX - //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay - //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) - // Set/get with gcode: M301 E[extruder number, 0-2] - #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature - // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. - #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term - #define K1 0.95 //smoothing factor within the PID - - // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it - // J-Head Mk V-B - #define DEFAULT_Kp 25.05 - #define DEFAULT_Ki 2.30 - #define DEFAULT_Kd 68.15 - -#endif // PIDTEMP - -//=========================================================================== -//============================= PID > Bed Temperature Control =============== -//=========================================================================== -// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis -// -// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. -// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, -// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. -// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. -// If your configuration is significantly different than this and you don't understand the issues involved, you probably -// shouldn't use bed PID until someone else verifies your hardware works. -// If this is enabled, find your own PID constants below. -//#define PIDTEMPBED - -//#define BED_LIMIT_SWITCHING - -// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. -// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) -// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, -// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) -#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current - -#if ENABLED(PIDTEMPBED) - - //#define PID_BED_DEBUG // Sends debug data to the serial port. - - #define PID_BED_INTEGRAL_DRIVE_MAX MAX_BED_POWER //limit for the integral term - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 - - //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) - //from pidautotune - //#define DEFAULT_bedKp 97.1 - //#define DEFAULT_bedKi 1.41 - //#define DEFAULT_bedKd 1675.16 - - // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. -#endif // PIDTEMPBED - -// @section extruder - -//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit -//can be software-disabled for whatever purposes by -#define PREVENT_DANGEROUS_EXTRUDE -//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. -#define PREVENT_LENGTHY_EXTRUDE - -#define EXTRUDE_MINTEMP 170 -#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. - -//=========================================================================== -//======================== Thermal Runaway Protection ======================= -//=========================================================================== - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * If you get "Thermal Runaway" or "Heating failed" errors the - * details can be tuned in Configuration_adv.h - */ - -#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders -#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed - -//=========================================================================== -//============================= Mechanical Settings ========================= -//=========================================================================== - -// @section machine - -// Uncomment one of these options to enable CoreXY, CoreXZ, or CoreYZ kinematics -//#define COREXY -//#define COREXZ -//#define COREYZ - -// Enable this option for Toshiba steppers -#define CONFIG_STEPPERS_TOSHIBA - -//=========================================================================== -//============================== Endstop Settings =========================== -//=========================================================================== - -// @section homing - -// Specify here all the endstop connectors that are connected to any endstop or probe. -// Almost all printers will be using one per axis. Probes will use one or more of the -// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. -#define USE_XMIN_PLUG -#define USE_YMIN_PLUG -#define USE_ZMIN_PLUG -//#define USE_XMAX_PLUG -//#define USE_YMAX_PLUG -//#define USE_ZMAX_PLUG - -// coarse Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors - -#if DISABLED(ENDSTOPPULLUPS) - // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined - //#define ENDSTOPPULLUP_XMAX - //#define ENDSTOPPULLUP_YMAX - //#define ENDSTOPPULLUP_ZMAX - //#define ENDSTOPPULLUP_XMIN - //#define ENDSTOPPULLUP_YMIN - //#define ENDSTOPPULLUP_ZMIN - //#define ENDSTOPPULLUP_ZMIN_PROBE -#endif - -// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. -#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. - -//=========================================================================== -//============================= Z Probe Options ============================= -//=========================================================================== - -// -// Probe Type -// Probes are sensors/switches that are activated / deactivated before/after use. -// -// Allen Key Probes, Servo Probes, Z-Sled Probes, FIX_MOUNTED_PROBE, etc. -// You must activate one of these to use AUTO_BED_LEVELING_FEATURE below. -// -// Use M851 to set the Z probe vertical offset from the nozzle. Store with M500. -// - -// A Fix-Mounted Probe either doesn't deploy or needs manual deployment. -// For example an inductive probe, or a setup that uses the nozzle to probe. -// An inductive probe must be deactivated to go below -// its trigger-point if hardware endstops are active. -//#define FIX_MOUNTED_PROBE - -// The BLTouch probe emulates a servo probe. -//#define BLTOUCH - -// Z Servo Probe, such as an endstop switch on a rotating arm. -//#define Z_ENDSTOP_SERVO_NR 0 -//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles - -// Enable if you have a Z probe mounted on a sled like those designed by Charles Bell. -//#define Z_PROBE_SLED -//#define SLED_DOCKING_OFFSET 5 // The extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. - -// Z Probe to nozzle (X,Y) offset, relative to (0, 0). -// X and Y offsets must be integers. -// -// In the following example the X and Y offsets are both positive: -// #define X_PROBE_OFFSET_FROM_EXTRUDER 10 -// #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 -// -// +-- BACK ---+ -// | | -// L | (+) P | R <-- probe (20,20) -// E | | I -// F | (-) N (+) | G <-- nozzle (10,10) -// T | | H -// | (-) | T -// | | -// O-- FRONT --+ -// (0,0) -#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] -#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] -#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] - -// X and Y axis travel speed (mm/m) between probes -#define XY_PROBE_SPEED 8000 -// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH) -#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z -// Speed for the "accurate" probe of each point -#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) -// Use double touch for probing -//#define PROBE_DOUBLE_TOUCH - -// -// Allen Key Probe is defined in the Delta example configurations. -// - -// Enable Z_MIN_PROBE_ENDSTOP to use _both_ a Z Probe and a Z-min-endstop on the same machine. -// With this option the Z_MIN_PROBE_PIN will only be used for probing, never for homing. -// -// *** PLEASE READ ALL INSTRUCTIONS BELOW FOR SAFETY! *** -// -// To continue using the Z-min-endstop for homing, be sure to disable Z_SAFE_HOMING. -// Example: To park the head outside the bed area when homing with G28. -// -// To use a separate Z probe, your board must define a Z_MIN_PROBE_PIN. -// -// For a servo-based Z probe, you must set up servo support below, including -// NUM_SERVOS, Z_ENDSTOP_SERVO_NR and Z_SERVO_ANGLES. -// -// - RAMPS 1.3/1.4 boards may be able to use the 5V, GND, and Aux4->D32 pin. -// - Use 5V for powered (usu. inductive) sensors. -// - Otherwise connect: -// - normally-closed switches to GND and D32. -// - normally-open switches to 5V and D32. -// -// Normally-closed switches are advised and are the default. -// -// The Z_MIN_PROBE_PIN sets the Arduino pin to use. (See your board's pins file.) -// Since the RAMPS Aux4->D32 pin maps directly to the Arduino D32 pin, D32 is the -// default pin for all RAMPS-based boards. Some other boards map differently. -// To set or change the pin for your board, edit the appropriate pins_XXXXX.h file. -// -// WARNING: -// Setting the wrong pin may have unexpected and potentially disastrous consequences. -// Use with caution and do your homework. -// -//#define Z_MIN_PROBE_ENDSTOP - -// Enable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to use the Z_MIN_PIN for your Z_MIN_PROBE. -// The Z_MIN_PIN will then be used for both Z-homing and probing. -#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN - -// To use a probe you must enable one of the two options above! - -// This option disables the use of the Z_MIN_PROBE_PIN -// To enable the Z probe pin but disable its use, uncomment the line below. This only affects a -// Z probe switch if you have a separate Z min endstop also and have activated Z_MIN_PROBE_ENDSTOP above. -// If you're using the Z MIN endstop connector for your Z probe, this has no effect. -//#define DISABLE_Z_MIN_PROBE_ENDSTOP - -// Enable Z Probe Repeatability test to see how accurate your probe is -//#define Z_MIN_PROBE_REPEATABILITY_TEST - -// -// Probe Raise options provide clearance for the probe to deploy, stow, and travel. -// -#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow -#define Z_PROBE_TRAVEL_HEIGHT 5 // Raise between probing points. - -// -// For M851 give a range for adjusting the Z probe offset -// -#define Z_PROBE_OFFSET_RANGE_MIN -20 -#define Z_PROBE_OFFSET_RANGE_MAX 20 - -// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 -// :{0:'Low',1:'High'} -#define X_ENABLE_ON 1 -#define Y_ENABLE_ON 1 -#define Z_ENABLE_ON 1 -#define E_ENABLE_ON 1 // For all extruders - -// Disables axis stepper immediately when it's not being used. -// WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false -// Warn on display about possibly reduced accuracy -//#define DISABLE_REDUCED_ACCURACY_WARNING - -// @section extruder - -#define DISABLE_E false // For all extruders -#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled - -// @section machine - -// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. -#define INVERT_X_DIR false -#define INVERT_Y_DIR false -#define INVERT_Z_DIR true - -// @section extruder - -// For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false -#define INVERT_E1_DIR false -#define INVERT_E2_DIR false -#define INVERT_E3_DIR false - -// @section homing - -//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... - // Be sure you have this distance over your Z_MAX_POS in case. - -// ENDSTOP SETTINGS: -// Sets direction of endstops when homing; 1=MAX, -1=MIN -// :[-1,1] -#define X_HOME_DIR -1 -#define Y_HOME_DIR -1 -#define Z_HOME_DIR -1 - -#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. -#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. - -// @section machine - -// Travel limits after homing (units are in mm) -#define X_MIN_POS 0 -#define Y_MIN_POS 0 -#define Z_MIN_POS 0 -#define X_MAX_POS 205 -#define Y_MAX_POS 205 -#define Z_MAX_POS 120 - -//=========================================================================== -//========================= Filament Runout Sensor ========================== -//=========================================================================== -//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament - // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. - // It is assumed that when logic high = filament available - // when logic low = filament ran out -#if ENABLED(FILAMENT_RUNOUT_SENSOR) - const bool FIL_RUNOUT_INVERTING = false; // set to true to invert the logic of the sensor. - #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - #define FILAMENT_RUNOUT_SCRIPT "M600" -#endif - -//=========================================================================== -//============================ Mesh Bed Leveling ============================ -//=========================================================================== - -//#define MESH_BED_LEVELING // Enable mesh bed leveling. - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_INSET 10 // Mesh inset margin on print area - #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited. - #define MESH_NUM_Y_POINTS 3 - #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0. - - //#define MESH_G28_REST_ORIGIN // After homing all axes ('G28' or 'G28 XYZ') rest at origin [0,0,0] - - //#define MANUAL_BED_LEVELING // Add display menu option for bed leveling. - - #if ENABLED(MANUAL_BED_LEVELING) - #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis. - #endif // MANUAL_BED_LEVELING - -#endif // MESH_BED_LEVELING - -//=========================================================================== -//============================ Bed Auto Leveling ============================ -//=========================================================================== - -// @section bedlevel - -//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable (remove // at the start of the line) - -// Enable this feature to get detailed logging of G28, G29, M48, etc. -// Logging is off by default. Enable this logging feature with 'M111 S32'. -// NOTE: Requires a huge amount of PROGMEM. -//#define DEBUG_LEVELING_FEATURE - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - - // There are 2 different ways to specify probing locations: - // - // - "grid" mode - // Probe several points in a rectangular grid. - // You specify the rectangle and the density of sample points. - // This mode is preferred because there are more measurements. - // - // - "3-point" mode - // Probe 3 arbitrary points on the bed (that aren't collinear) - // You specify the XY coordinates of all 3 points. - - // Enable this to sample the bed in a grid (least squares solution). - // Note: this feature generates 10KB extra code size. - #define AUTO_BED_LEVELING_GRID - - #if ENABLED(AUTO_BED_LEVELING_GRID) - - #define LEFT_PROBE_BED_POSITION 15 - #define RIGHT_PROBE_BED_POSITION 170 - #define FRONT_PROBE_BED_POSITION 20 - #define BACK_PROBE_BED_POSITION 170 - - #define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this. - - // Set the number of grid points per dimension. - // You probably don't need more than 3 (squared=9). - #define AUTO_BED_LEVELING_GRID_POINTS 2 - - #else // !AUTO_BED_LEVELING_GRID - - // Arbitrary points to probe. - // A simple cross-product is used to estimate the plane of the bed. - #define ABL_PROBE_PT_1_X 15 - #define ABL_PROBE_PT_1_Y 180 - #define ABL_PROBE_PT_2_X 15 - #define ABL_PROBE_PT_2_Y 20 - #define ABL_PROBE_PT_3_X 170 - #define ABL_PROBE_PT_3_Y 20 - - #endif // !AUTO_BED_LEVELING_GRID - - //#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" // These commands will be executed in the end of G29 routine. - // Useful to retract a deployable Z probe. - - // If you've enabled AUTO_BED_LEVELING_FEATURE and are using the Z Probe for Z Homing, - // it is highly recommended you also enable Z_SAFE_HOMING below! - -#endif // AUTO_BED_LEVELING_FEATURE - - -// @section homing - -// The center of the bed is at (X=0, Y=0) -//#define BED_CENTER_AT_0_0 - -// Manually set the home position. Leave these undefined for automatic settings. -// For DELTA this is the top-center of the Cartesian print volume. -//#define MANUAL_X_HOME_POS 0 -//#define MANUAL_Y_HOME_POS 0 -//#define MANUAL_Z_HOME_POS 0 // Distance between the nozzle to printbed after homing - -// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area. -// -// With this feature enabled: -// -// - Allow Z homing only after X and Y homing AND stepper drivers still enabled. -// - If stepper drivers time out, it will need X and Y homing again before Z homing. -// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28). -// - Prevent Z homing when the Z probe is outside bed area. -//#define Z_SAFE_HOMING - -#if ENABLED(Z_SAFE_HOMING) - #define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28). - #define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28). -#endif - -// Homing speeds (mm/m) -#define HOMING_FEEDRATE_XY (50*60) -#define HOMING_FEEDRATE_Z (4*60) - -// -// MOVEMENT SETTINGS -// @section motion -// - -// default settings - -//#define DEFAULT_AXIS_STEPS_PER_UNIT {79.87, 79.87, 2566, 563,78} // Al's TVRR -//#define DEFAULT_AXIS_STEPS_PER_UNIT {81.26, 80.01, 2561, 599.14} // Michel TVRR old -//#define DEFAULT_AXIS_STEPS_PER_UNIT {71.1, 71.1, 2560, 739.65} // Michel TVRR -#define DEFAULT_AXIS_STEPS_PER_UNIT {71.1, 71.1, 2560, 600} // David TVRR -#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 45} // (mm/sec) David TVRR -#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. - -/* MICHEL: This has an impact on the "ripples" in print walls */ -#define DEFAULT_ACCELERATION 500 // X, Y, Z and E acceleration in mm/s^2 for printing moves -#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts -#define DEFAULT_TRAVEL_ACCELERATION 500 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) -#define DEFAULT_XYJERK 20.0 // (mm/sec) -#define DEFAULT_ZJERK 0.4 // (mm/sec) -#define DEFAULT_EJERK 5.0 // (mm/sec) - - -//============================================================================= -//============================= Additional Features =========================== -//============================================================================= - -// @section extras - -// -// EEPROM -// -// The microcontroller can store settings in the EEPROM, e.g. max velocity... -// M500 - stores parameters in EEPROM -// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). -// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. -//define this to enable EEPROM support -//#define EEPROM_SETTINGS - -#if ENABLED(EEPROM_SETTINGS) - // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: - #define EEPROM_CHITCHAT // Please keep turned on if you can. -#endif - -// -// Host Keepalive -// -// When enabled Marlin will send a busy status message to the host -// every couple of seconds when it can't accept commands. -// -#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn't like keepalive messages -#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113. - -// -// M100 Free Memory Watcher -// -//#define M100_FREE_MEMORY_WATCHER // uncomment to add the M100 Free Memory Watcher for debug purpose - -// -// G20/G21 Inch mode support -// -//#define INCH_MODE_SUPPORT - -// -// M149 Set temperature units support -// -//#define TEMPERATURE_UNITS_SUPPORT - -// @section temperature - -// Preheat Constants -#define PREHEAT_1_TEMP_HOTEND 180 -#define PREHEAT_1_TEMP_BED 70 -#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255 - -#define PREHEAT_2_TEMP_HOTEND 240 -#define PREHEAT_2_TEMP_BED 100 -#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255 - -// -// Nozzle Park -- EXPERIMENTAL -// -// When enabled allows the user to define a special XYZ position, inside the -// machine's topology, to park the nozzle when idle or when receiving the G27 -// command. -// -// The "P" paramenter controls what is the action applied to the Z axis: -// P0: (Default) If current Z-pos is lower than Z-park then the nozzle will -// be raised to reach Z-park height. -// -// P1: No matter the current Z-pos, the nozzle will be raised/lowered to -// reach Z-park height. -// -// P2: The nozzle height will be raised by Z-park amount but never going over -// the machine's limit of Z_MAX_POS. -// -//#define NOZZLE_PARK_FEATURE - -#if ENABLED(NOZZLE_PARK_FEATURE) - // Specify a park position as { X, Y, Z } - #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } -#endif - -// -// Clean Nozzle Feature -- EXPERIMENTAL -// -// When enabled allows the user to send G12 to start the nozzle cleaning -// process, the G-Code accepts two parameters: -// "P" for pattern selection -// "S" for defining the number of strokes/repetitions -// -// Available list of patterns: -// P0: This is the default pattern, this process requires a sponge type -// material at a fixed bed location, the cleaning process is based on -// "strokes" i.e. back-and-forth movements between the starting and end -// points. -// -// P1: This starts a zig-zag pattern between (X0, Y0) and (X1, Y1), "T" -// defines the number of zig-zag triangles to be done. "S" defines the -// number of strokes aka one back-and-forth movement. As an example -// sending "G12 P1 S1 T3" will execute: -// -// -- -// | (X0, Y1) | /\ /\ /\ | (X1, Y1) -// | | / \ / \ / \ | -// A | | / \ / \ / \ | -// | | / \ / \ / \ | -// | (X0, Y0) | / \/ \/ \ | (X1, Y0) -// -- +--------------------------------+ -// |________|_________|_________| -// T1 T2 T3 -// -// Caveats: End point Z should use the same value as Start point Z. -// -// Attention: This is an EXPERIMENTAL feature, in the future the G-code arguments -// may change to add new functionality like different wipe patterns. -// -//#define NOZZLE_CLEAN_FEATURE - -#if ENABLED(NOZZLE_CLEAN_FEATURE) - // Number of pattern repetitions - #define NOZZLE_CLEAN_STROKES 12 - - // Specify positions as { X, Y, Z } - #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1)} - #define NOZZLE_CLEAN_END_POINT {100, 60, (Z_MIN_POS + 1)} - - // Moves the nozzle to the initial position - #define NOZZLE_CLEAN_GOBACK -#endif - -// -// Print job timer -// -// Enable this option to automatically start and stop the -// print job timer when M104/M109/M190 commands are received. -// M104 (extruder without wait) - high temp = none, low temp = stop timer -// M109 (extruder with wait) - high temp = start timer, low temp = stop timer -// M190 (bed with wait) - high temp = start timer, low temp = none -// -// In all cases the timer can be started and stopped using -// the following commands: -// -// - M75 - Start the print job timer -// - M76 - Pause the print job timer -// - M77 - Stop the print job timer -#define PRINTJOB_TIMER_AUTOSTART - -// -// Print Counter -// -// When enabled Marlin will keep track of some print statistical data such as: -// - Total print jobs -// - Total successful print jobs -// - Total failed print jobs -// - Total time printing -// -// This information can be viewed by the M78 command. -//#define PRINTCOUNTER - -//============================================================================= -//============================= LCD and SD support ============================ -//============================================================================= - -// @section lcd - -// -// LCD LANGUAGE -// -// Here you may choose the language used by Marlin on the LCD menus, the following -// list of languages are available: -// en, an, bg, ca, cn, cz, de, el, el-gr, es, eu, fi, fr, gl, hr, it, -// kana, kana_utf8, nl, pl, pt, pt_utf8, pt-br, pt-br_utf8, ru, test -// -// :{'en':'English','an':'Aragonese','bg':'Bulgarian','ca':'Catalan','cn':'Chinese','cz':'Czech','de':'German','el':'Greek','el-gr':'Greek (Greece)','es':'Spanish','eu':'Basque-Euskera','fi':'Finnish','fr':'French','gl':'Galician','hr':'Croatian','it':'Italian','kana':'Japanese','kana_utf8':'Japanese (UTF8)','nl':'Dutch','pl':'Polish','pt':'Portuguese','pt-br':'Portuguese (Brazilian)','pt-br_utf8':'Portuguese (Brazilian UTF8)','pt_utf8':'Portuguese (UTF8)','ru':'Russian','test':'TEST'} -// -//#define LCD_LANGUAGE en - -// -// LCD Character Set -// -// Note: This option is NOT applicable to Graphical Displays. -// -// All character-based LCD's provide ASCII plus one of these -// language extensions: -// -// - JAPANESE ... the most common -// - WESTERN ... with more accented characters -// - CYRILLIC ... for the Russian language -// -// To determine the language extension installed on your controller: -// -// - Compile and upload with LCD_LANGUAGE set to 'test' -// - Click the controller to view the LCD menu -// - The LCD will display Japanese, Western, or Cyrillic text -// -// See https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language -// -// :['JAPANESE','WESTERN','CYRILLIC'] -// -#define DISPLAY_CHARSET_HD44780 JAPANESE - -// -// LCD TYPE -// -// You may choose ULTRA_LCD if you have character based LCD with 16x2, 16x4, 20x2, -// 20x4 char/lines or DOGLCD for the full graphics display with 128x64 pixels -// (ST7565R family). (This option will be set automatically for certain displays.) -// -// IMPORTANT NOTE: The U8glib library is required for Full Graphic Display! -// https://github.com/olikraus/U8glib_Arduino -// -//#define ULTRA_LCD // Character based -//#define DOGLCD // Full graphics display - -// -// SD CARD -// -// SD Card support is disabled by default. If your controller has an SD slot, -// you must uncomment the following option or it won't work. -// -//#define SDSUPPORT - -// -// SD CARD: SPI SPEED -// -// Uncomment ONE of the following items to use a slower SPI transfer -// speed. This is usually required if you're getting volume init errors. -// -//#define SPI_SPEED SPI_HALF_SPEED -//#define SPI_SPEED SPI_QUARTER_SPEED -//#define SPI_SPEED SPI_EIGHTH_SPEED - -// -// SD CARD: ENABLE CRC -// -// Use CRC checks and retries on the SD communication. -// -//#define SD_CHECK_AND_RETRY - -// -// ENCODER SETTINGS -// -// This option overrides the default number of encoder pulses needed to -// produce one step. Should be increased for high-resolution encoders. -// -//#define ENCODER_PULSES_PER_STEP 1 - -// -// Use this option to override the number of step signals required to -// move between next/prev menu items. -// -//#define ENCODER_STEPS_PER_MENU_ITEM 5 - -/** - * Encoder Direction Options - * - * Test your encoder's behavior first with both options disabled. - * - * Reversed Value Edit and Menu Nav? Enable REVERSE_ENCODER_DIRECTION. - * Reversed Menu Navigation only? Enable REVERSE_MENU_DIRECTION. - * Reversed Value Editing only? Enable BOTH options. - */ - -// -// This option reverses the encoder direction everywhere -// -// Set this option if CLOCKWISE causes values to DECREASE -// -//#define REVERSE_ENCODER_DIRECTION - -// -// This option reverses the encoder direction for navigating LCD menus. -// -// If CLOCKWISE normally moves DOWN this makes it go UP. -// If CLOCKWISE normally moves UP this makes it go DOWN. -// -//#define REVERSE_MENU_DIRECTION - -// -// Individual Axis Homing -// -// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. -// -//#define INDIVIDUAL_AXIS_HOMING_MENU - -// -// SPEAKER/BUZZER -// -// If you have a speaker that can produce tones, enable it here. -// By default Marlin assumes you have a buzzer with a fixed frequency. -// -//#define SPEAKER - -// -// The duration and frequency for the UI feedback sound. -// Set these to 0 to disable audio feedback in the LCD menus. -// -// Note: Test audio output with the G-Code: -// M300 S P -// -//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 - -// -// CONTROLLER TYPE: Standard -// -// Marlin supports a wide variety of controllers. -// Enable one of the following options to specify your controller. -// - -// -// ULTIMAKER Controller. -// -//#define ULTIMAKERCONTROLLER - -// -// ULTIPANEL as seen on Thingiverse. -// -//#define ULTIPANEL - -// -// Cartesio UI -// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface -// -//#define CARTESIO_UI - -// -// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) -// http://reprap.org/wiki/PanelOne -// -//#define PANEL_ONE - -// -// MaKr3d Makr-Panel with graphic controller and SD support. -// http://reprap.org/wiki/MaKr3d_MaKrPanel -// -//#define MAKRPANEL - -// -// ReprapWorld Graphical LCD -// https://reprapworld.com/?products_details&products_id/1218 -// -//#define REPRAPWORLD_GRAPHICAL_LCD - -// -// Activate one of these if you have a Panucatt Devices -// Viki 2.0 or mini Viki with Graphic LCD -// http://panucatt.com -// -//#define VIKI2 -//#define miniVIKI - -// -// Adafruit ST7565 Full Graphic Controller. -// https://github.com/eboston/Adafruit-ST7565-Full-Graphic-Controller/ -// -//#define ELB_FULL_GRAPHIC_CONTROLLER - -// -// RepRapDiscount Smart Controller. -// http://reprap.org/wiki/RepRapDiscount_Smart_Controller -// -// Note: Usually sold with a white PCB. -// -//#define REPRAP_DISCOUNT_SMART_CONTROLLER - -// -// GADGETS3D G3D LCD/SD Controller -// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel -// -// Note: Usually sold with a blue PCB. -// -//#define G3D_PANEL - -// -// RepRapDiscount FULL GRAPHIC Smart Controller -// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller -// -//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER - -// -// MakerLab Mini Panel with graphic -// controller and SD support - http://reprap.org/wiki/Mini_panel -// -//#define MINIPANEL - -// -// RepRapWorld REPRAPWORLD_KEYPAD v1.1 -// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 -// -// REPRAPWORLD_KEYPAD_MOVE_STEP sets how much should the robot move when a key -// is pressed, a value of 10.0 means 10mm per click. -// -//#define REPRAPWORLD_KEYPAD -//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0 - -// -// RigidBot Panel V1.0 -// http://www.inventapart.com/ -// -//#define RIGIDBOT_PANEL - -// -// BQ LCD Smart Controller shipped by -// default with the BQ Hephestos 2 and Witbox 2. -// -//#define BQ_LCD_SMART_CONTROLLER - -// -// CONTROLLER TYPE: I2C -// -// Note: These controllers require the installation of Arduino's LiquidCrystal_I2C -// library. For more info: https://github.com/kiyoshigawa/LiquidCrystal_I2C -// - -// -// Elefu RA Board Control Panel -// http://www.elefu.com/index.php?route=product/product&product_id=53 -// -//#define RA_CONTROL_PANEL - -// -// Sainsmart YW Robot (LCM1602) LCD Display -// -//#define LCD_I2C_SAINSMART_YWROBOT - -// -// Generic LCM1602 LCD adapter -// -//#define LCM1602 - -// -// PANELOLU2 LCD with status LEDs, -// separate encoder and click inputs. -// -// Note: This controller requires Arduino's LiquidTWI2 library v1.2.3 or later. -// For more info: https://github.com/lincomatic/LiquidTWI2 -// -// Note: The PANELOLU2 encoder click input can either be directly connected to -// a pin (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). -// -//#define LCD_I2C_PANELOLU2 - -// -// Panucatt VIKI LCD with status LEDs, -// integrated click & L/R/U/D buttons, separate encoder inputs. -// -//#define LCD_I2C_VIKI - -// -// SSD1306 OLED full graphics generic display -// -//#define U8GLIB_SSD1306 - -// -// SAV OLEd LCD module support using either SSD1306 or SH1106 based LCD modules -// -//#define SAV_3DGLCD -#if ENABLED(SAV_3DGLCD) - //#define U8GLIB_SSD1306 - #define U8GLIB_SH1106 -#endif - -// -// CONTROLLER TYPE: Shift register panels -// -// 2 wire Non-latching LCD SR from https://goo.gl/aJJ4sH -// LCD configuration: http://reprap.org/wiki/SAV_3D_LCD -// -//#define SAV_3DLCD - -//============================================================================= -//=============================== Extra Features ============================== -//============================================================================= - -// @section extras - -// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino -//#define FAST_PWM_FAN - -// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency -// which is not as annoying as with the hardware PWM. On the other hand, if this frequency -// is too low, you should also increment SOFT_PWM_SCALE. -//#define FAN_SOFT_PWM - -// Incrementing this by 1 will double the software PWM frequency, -// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. -// However, control resolution will be halved for each increment; -// at zero value, there are 128 effective control positions. -#define SOFT_PWM_SCALE 0 - -// Temperature status LEDs that display the hotend and bed temperature. -// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. -// Otherwise the RED led is on. There is 1C hysteresis. -//#define TEMP_STAT_LEDS - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -//#define PHOTOGRAPH_PIN 23 - -// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure -//#define SF_ARC_FIX - -// Support for the BariCUDA Paste Extruder. -//#define BARICUDA - -//define BlinkM/CyzRgb Support -//#define BLINKM - -/*********************************************************************\ -* R/C SERVO support -* Sponsored by TrinityLabs, Reworked by codexmas -**********************************************************************/ - -// Number of servos -// -// If you select a configuration below, this will receive a default value and does not need to be set manually -// set it manually if you have more servos than extruders and wish to manually control some -// leaving it undefined or defining as 0 will disable the servo subsystem -// If unsure, leave commented / disabled -// -//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command - -// Delay (in microseconds) before the next move will start, to give the servo time to reach its target angle. -// 300ms is a good value but you can try less delay. -// If the servo can't reach the requested position, increase it. -#define SERVO_DELAY 300 - -// Servo deactivation -// -// With this option servos are powered only during movement, then turned off to prevent jitter. -//#define DEACTIVATE_SERVOS_AFTER_MOVE - -/**********************************************************************\ - * Support for a filament diameter sensor - * Also allows adjustment of diameter at print time (vs at slicing) - * Single extruder only at this point (extruder 0) - * - * Motherboards - * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector - * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) - * 301 - Rambo - uses Analog input 3 - * Note may require analog pins to be defined for different motherboards - **********************************************************************/ -// Uncomment below to enable -//#define FILAMENT_WIDTH_SENSOR - -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.00 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - #define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) - #define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel - - #define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm - #define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm - #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) - - #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially - - //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. - //#define FILAMENT_LCD_DISPLAY -#endif - -#endif // CONFIGURATION_H diff --git a/lib/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/lib/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h deleted file mode 100644 index 2ececd4..0000000 --- a/lib/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h +++ /dev/null @@ -1,799 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Configuration_adv.h - * - * Advanced settings. - * Only change these if you know exactly what you're doing. - * Some of these settings can damage your printer if improperly set! - * - * Basic settings can be found in Configuration.h - * - */ -#ifndef CONFIGURATION_ADV_H -#define CONFIGURATION_ADV_H - -/** - * - * *********************************** - * ** ATTENTION TO ALL DEVELOPERS ** - * *********************************** - * - * You must increment this version number for every significant change such as, - * but not limited to: ADD, DELETE RENAME OR REPURPOSE any directive/option. - * - * Note: Update also Version.h ! - */ -#define CONFIGURATION_ADV_H_VERSION 010100 - -// @section temperature - -//=========================================================================== -//=============================Thermal Settings ============================ -//=========================================================================== - -#if DISABLED(PIDTEMPBED) - #define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control - #if ENABLED(BED_LIMIT_SWITCHING) - #define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS - #endif -#endif - -/** - * Thermal Protection protects your printer from damage and fire if a - * thermistor falls out or temperature sensors fail in any way. - * - * The issue: If a thermistor falls out or a temperature sensor fails, - * Marlin can no longer sense the actual temperature. Since a disconnected - * thermistor reads as a low temperature, the firmware will keep the heater on. - * - * The solution: Once the temperature reaches the target, start observing. - * If the temperature stays too far below the target (hysteresis) for too long (period), - * the firmware will halt the machine as a safety precaution. - * - * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD - */ -#if ENABLED(THERMAL_PROTECTION_HOTENDS) - #define THERMAL_PROTECTION_PERIOD 40 // Seconds - #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius - - /** - * Whenever an M104 or M109 increases the target temperature the firmware will wait for the - * WATCH_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M104/M109, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE - * WATCH_TEMP_INCREASE should not be below 2. - */ - #define WATCH_TEMP_PERIOD 20 // Seconds - #define WATCH_TEMP_INCREASE 2 // Degrees Celsius -#endif - -/** - * Thermal Protection parameters for the bed are just as above for hotends. - */ -#if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds - #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius - - /** - * Whenever an M140 or M190 increases the target temperature the firmware will wait for the - * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE - * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, - * but only if the current temperature is far enough below the target for a reliable test. - * - * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease - * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) - */ - #define WATCH_BED_TEMP_PERIOD 60 // Seconds - #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius -#endif - -#if ENABLED(PIDTEMP) - // this adds an experimental additional term to the heating power, proportional to the extrusion speed. - // if Kc is chosen well, the additional required power due to increased melting should be compensated. - //#define PID_EXTRUSION_SCALING - #if ENABLED(PID_EXTRUSION_SCALING) - #define DEFAULT_Kc (100) //heating power=Kc*(e_speed) - #define LPQ_MAX_LEN 50 - #endif -#endif - -/** - * Automatic Temperature: - * The hotend target temperature is calculated by all the buffered lines of gcode. - * The maximum buffered steps/sec of the extruder motor is called "se". - * Start autotemp mode with M109 S B F - * The target temperature is set to mintemp+factor*se[steps/sec] and is limited by - * mintemp and maxtemp. Turn this off by executing M109 without F* - * Also, if the temperature is set to a value below mintemp, it will not be changed by autotemp. - * On an Ultimaker, some initial testing worked with M109 S215 B260 F1 in the start.gcode - */ -#define AUTOTEMP -#if ENABLED(AUTOTEMP) - #define AUTOTEMP_OLDWEIGHT 0.98 -#endif - -//Show Temperature ADC value -//The M105 command return, besides traditional information, the ADC value read from temperature sensors. -//#define SHOW_TEMP_ADC_VALUES - -/** - * High Temperature Thermistor Support - * - * Thermistors able to support high temperature tend to have a hard time getting - * good readings at room and lower temperatures. This means HEATER_X_RAW_LO_TEMP - * will probably be caught when the heating element first turns on during the - * preheating process, which will trigger a min_temp_error as a safety measure - * and force stop everything. - * To circumvent this limitation, we allow for a preheat time (during which, - * min_temp_error won't be triggered) and add a min_temp buffer to handle - * aberrant readings. - * - * If you want to enable this feature for your hotend thermistor(s) - * uncomment and set values > 0 in the constants below - */ - -// The number of consecutive low temperature errors that can occur -// before a min_temp_error is triggered. (Shouldn't be more than 10.) -//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0 - -// The number of milliseconds a hotend will preheat before starting to check -// the temperature. This value should NOT be set to the time it takes the -// hot end to reach the target temperature, but the time it takes to reach -// the minimum temperature your thermistor can read. The lower the better/safer. -// This shouldn't need to be more than 30 seconds (30000) -//#define MILLISECONDS_PREHEAT_TIME 0 - -// @section extruder - -// extruder run-out prevention. -//if the machine is idle, and the temperature over MINTEMP, every couple of SECONDS some filament is extruded -//#define EXTRUDER_RUNOUT_PREVENT -#define EXTRUDER_RUNOUT_MINTEMP 190 -#define EXTRUDER_RUNOUT_SECONDS 30 -#define EXTRUDER_RUNOUT_ESTEPS 14 // mm filament -#define EXTRUDER_RUNOUT_SPEED 1500 // extrusion speed -#define EXTRUDER_RUNOUT_EXTRUDE 100 - -// @section temperature - -//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. -//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" -#define TEMP_SENSOR_AD595_OFFSET 0.0 -#define TEMP_SENSOR_AD595_GAIN 1.0 - -//This is for controlling a fan to cool down the stepper drivers -//it will turn on when any driver is enabled -//and turn off after the set amount of seconds from last driver being disabled again -#define CONTROLLERFAN_PIN 23 //Pin used for the fan to cool controller (-1 to disable) -#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run -#define CONTROLLERFAN_SPEED 255 // == full speed - -// When first starting the main fan, run it at full speed for the -// given number of milliseconds. This gets the fan spinning reliably -// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 - -// This defines the minimal speed for the main fan, run in PWM mode -// to enable uncomment and set minimal PWM speed for reliable running (1-255) -// if fan speed is [1 - (FAN_MIN_PWM-1)] it is set to FAN_MIN_PWM -//#define FAN_MIN_PWM 50 - -// @section extruder - -// Extruder cooling fans -// Configure fan pin outputs to automatically turn on/off when the associated -// extruder temperature is above/below EXTRUDER_AUTO_FAN_TEMPERATURE. -// Multiple extruders can be assigned to the same pin in which case -// the fan will turn on when any selected extruder is above the threshold. -#define EXTRUDER_0_AUTO_FAN_PIN -1 -#define EXTRUDER_1_AUTO_FAN_PIN -1 -#define EXTRUDER_2_AUTO_FAN_PIN -1 -#define EXTRUDER_3_AUTO_FAN_PIN -1 -#define EXTRUDER_AUTO_FAN_TEMPERATURE 50 -#define EXTRUDER_AUTO_FAN_SPEED 255 // == full speed - -//=========================================================================== -//============================ Mechanical Settings ========================== -//=========================================================================== - -// @section homing - -// If you want endstops to stay on (by default) even when not homing -// enable this option. Override at any time with M120, M121. -//#define ENDSTOPS_ALWAYS_ON_DEFAULT - -// @section extras - -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. - -// Dual X Steppers -// Uncomment this option to drive two X axis motors. -// The next unused E driver will be assigned to the second X stepper. -//#define X_DUAL_STEPPER_DRIVERS -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - // Set true if the two X motors need to rotate in opposite directions - #define INVERT_X2_VS_X_DIR true -#endif - - -// Dual Y Steppers -// Uncomment this option to drive two Y axis motors. -// The next unused E driver will be assigned to the second Y stepper. -//#define Y_DUAL_STEPPER_DRIVERS -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - // Set true if the two Y motors need to rotate in opposite directions - #define INVERT_Y2_VS_Y_DIR true -#endif - -// A single Z stepper driver is usually used to drive 2 stepper motors. -// Uncomment this option to use a separate stepper driver for each Z axis motor. -// The next unused E driver will be assigned to the second Z stepper. -//#define Z_DUAL_STEPPER_DRIVERS - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - - // Z_DUAL_ENDSTOPS is a feature to enable the use of 2 endstops for both Z steppers - Let's call them Z stepper and Z2 stepper. - // That way the machine is capable to align the bed during home, since both Z steppers are homed. - // There is also an implementation of M666 (software endstops adjustment) to this feature. - // After Z homing, this adjustment is applied to just one of the steppers in order to align the bed. - // One just need to home the Z axis and measure the distance difference between both Z axis and apply the math: Z adjust = Z - Z2. - // If the Z stepper axis is closer to the bed, the measure Z > Z2 (yes, it is.. think about it) and the Z adjust would be positive. - // Play a little bit with small adjustments (0.5mm) and check the behaviour. - // The M119 (endstops report) will start reporting the Z2 Endstop as well. - - //#define Z_DUAL_ENDSTOPS - - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z2_USE_ENDSTOP _XMAX_ - #endif - -#endif // Z_DUAL_STEPPER_DRIVERS - -// Enable this for dual x-carriage printers. -// A dual x-carriage design has the advantage that the inactive extruder can be parked which -// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage -// allowing faster printing speeds. Connect your X2 stepper to the first unused E plug. -//#define DUAL_X_CARRIAGE -#if ENABLED(DUAL_X_CARRIAGE) - // Configuration for second X-carriage - // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; - // the second x-carriage always homes to the maximum endstop. - #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage - #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed - #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position - #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position - // However: In this mode the HOTEND_OFFSET_X value for the second extruder provides a software - // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops - // without modifying the firmware (through the "M218 T1 X???" command). - // Remember: you should set the second extruder x-offset to 0 in your slicer. - - // There are a few selectable movement modes for dual x-carriages using M605 S - // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results - // as long as it supports dual x-carriages. (M605 S0) - // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so - // that additional slicer support is not required. (M605 S1) - // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all - // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at - // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) - - // This is the default power-up mode which can be later using M605. - #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 - - // Default settings in "Auto-park Mode" - #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder - #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder - - // Default x offset in duplication mode (typically set to half print bed width) - #define DEFAULT_DUPLICATION_X_OFFSET 100 - -#endif //DUAL_X_CARRIAGE - -// @section homing - -//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: -#define X_HOME_BUMP_MM 5 -#define Y_HOME_BUMP_MM 5 -#define Z_HOME_BUMP_MM 1 -#define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) -//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. - -// When G28 is called, this option will make Y home before X -//#define HOME_Y_BEFORE_X - -// @section machine - -#define AXIS_RELATIVE_MODES {false, false, false, false} - -// Allow duplication mode with a basic dual-nozzle extruder -//#define DUAL_NOZZLE_DUPLICATION_MODE - -// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. -#define INVERT_X_STEP_PIN false -#define INVERT_Y_STEP_PIN false -#define INVERT_Z_STEP_PIN false -#define INVERT_E_STEP_PIN false - -// Default stepper release if idle. Set to 0 to deactivate. -// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. -// Time can be set by M18 and M84. -#define DEFAULT_STEPPER_DEACTIVE_TIME 60 -#define DISABLE_INACTIVE_X true -#define DISABLE_INACTIVE_Y true -#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. -#define DISABLE_INACTIVE_E true - -#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate -#define DEFAULT_MINTRAVELFEEDRATE 0.0 - -// @section lcd - -#if ENABLED(ULTIPANEL) - #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel - #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder -#endif - -// @section extras - -// minimum time in microseconds that a movement needs to take if the buffer is emptied. -#define DEFAULT_MINSEGMENTTIME 20000 - -// If defined the movements slow down when the look ahead buffer is only half full -#define SLOWDOWN - -// Frequency limit -// See nophead's blog for more info -// Not working O -//#define XY_FREQUENCY_LIMIT 15 - -// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end -// of the buffer and all stops. This should not be much greater than zero and should only be changed -// if unwanted behavior is observed on a user's machine when running at very slow speeds. -#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) - -// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. -#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] - -// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) -#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) - -// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current) -//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps - -// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro -//#define DIGIPOT_I2C -// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 -#define DIGIPOT_I2C_NUM_CHANNELS 8 -// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS -#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} - -//=========================================================================== -//=============================Additional Features=========================== -//=========================================================================== - -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value - -//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ -#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again - -// @section lcd - -// Include a page of printer information in the LCD Main Menu -//#define LCD_INFO_MENU - -#if ENABLED(SDSUPPORT) - - // Some RAMPS and other boards don't detect when an SD card is inserted. You can work - // around this by connecting a push button or single throw switch to the pin defined - // as SD_DETECT_PIN in your board's pins definitions. - // This setting should be disabled unless you are using a push button, pulling the pin to ground. - // Note: This is always disabled for ULTIPANEL (except ELB_FULL_GRAPHIC_CONTROLLER). - #define SD_DETECT_INVERTED - - #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? - #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. - - #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. - // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. - // using: - //#define MENU_ADDAUTOSTART - - // Show a progress bar on HD44780 LCDs for SD printing - //#define LCD_PROGRESS_BAR - - #if ENABLED(LCD_PROGRESS_BAR) - // Amount of time (ms) to show the bar - #define PROGRESS_BAR_BAR_TIME 2000 - // Amount of time (ms) to show the status message - #define PROGRESS_BAR_MSG_TIME 3000 - // Amount of time (ms) to retain the status message (0=forever) - #define PROGRESS_MSG_EXPIRE 0 - // Enable this to show messages for MSG_TIME then hide them - //#define PROGRESS_MSG_ONCE - #endif - - // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT - - // This option allows you to abort SD printing when any endstop is triggered. - // This feature must be enabled with "M540 S1" or from the LCD menu. - // To have any effect, endstops must be enabled during SD printing. - //#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED - -#endif // SDSUPPORT - -// for dogm lcd displays you can choose some additional fonts: -#if ENABLED(DOGLCD) - // save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT - // we don't have a big font for Cyrillic, Kana - //#define USE_BIG_EDIT_FONT - - // If you have spare 2300Byte of progmem and want to use a - // smaller font on the Info-screen uncomment the next line. - //#define USE_SMALL_INFOFONT -#endif // DOGLCD - -// @section safety - -// The hardware watchdog should reset the microcontroller disabling all outputs, -// in case the firmware gets stuck and doesn't do temperature regulation. -#define USE_WATCHDOG - -#if ENABLED(USE_WATCHDOG) - // If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. - // The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. - // However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. - //#define WATCHDOG_RESET_MANUAL -#endif - -// @section lcd - -// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process -// it can e.g. be used to change z-positions in the print startup phase in real-time -// does not respect endstops! -//#define BABYSTEPPING -#if ENABLED(BABYSTEPPING) - #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions - //not implemented for deltabots! - #define BABYSTEP_INVERT_Z false //true for inverse movements in Z - #define BABYSTEP_MULTIPLICATOR 1 //faster movements -#endif - -// @section extruder - -// extruder advance constant (s2/mm3) -// -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// Hooke's law says: force = k * distance -// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE - -#if ENABLED(ADVANCE) - #define EXTRUDER_ADVANCE_K .0 - #define D_FILAMENT 2.85 -#endif - -// Implementation of a linear pressure control -// Assumption: advance = k * (delta velocity) -// K=0 means advance disabled. A good value for a gregs wade extruder will be around K=75 -//#define LIN_ADVANCE - -#if ENABLED(LIN_ADVANCE) - #define LIN_ADVANCE_K 75 -#endif - -// @section leveling - -// Default mesh area is an area with an inset margin on the print area. -// Below are the macros that are used to define the borders for the mesh area, -// made available here for specialized needs, ie dual extruder setup. -#if ENABLED(MESH_BED_LEVELING) - #define MESH_MIN_X (X_MIN_POS + MESH_INSET) - #define MESH_MAX_X (X_MAX_POS - (MESH_INSET)) - #define MESH_MIN_Y (Y_MIN_POS + MESH_INSET) - #define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET)) -#endif - -// @section extras - -// Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2738 bytes -#define MM_PER_ARC_SEGMENT 1 -#define N_ARC_CORRECTION 25 - -// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes. -//#define BEZIER_CURVE_SUPPORT - -const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement - -// @section temperature - -// Control heater 0 and heater 1 in parallel. -//#define HEATERS_PARALLEL - -//=========================================================================== -//================================= Buffers ================================= -//=========================================================================== - -// @section hidden - -// The number of linear motions that can be in the plan at any give time. -// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. -#if ENABLED(SDSUPPORT) - #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller -#else - #define BLOCK_BUFFER_SIZE 16 // maximize block buffer -#endif - -// @section serial - -// The ASCII buffer for serial input -#define MAX_CMD_SIZE 96 -#define BUFSIZE 4 - -// Transfer Buffer Size -// To save 386 bytes of PROGMEM (and TX_BUFFER_SIZE+3 bytes of RAM) set to 0. -// To buffer a simple "ok" you need 4 bytes. -// For ADVANCED_OK (M105) you need 32 bytes. -// For debug-echo: 128 bytes for the optimal speed. -// Other output doesn't need to be that speedy. -// :[0,2,4,8,16,32,64,128,256] -#define TX_BUFFER_SIZE 0 - -// Enable an emergency-command parser to intercept certain commands as they -// enter the serial receive buffer, so they cannot be blocked. -// Currently handles M108, M112, M410 -// Does not work on boards using AT90USB (USBCON) processors! -//#define EMERGENCY_PARSER - -// Bad Serial-connections can miss a received command by sending an 'ok' -// Therefore some clients abort after 30 seconds in a timeout. -// Some other clients start sending commands while receiving a 'wait'. -// This "wait" is only sent when the buffer is empty. 1 second is a good value here. -//#define NO_TIMEOUTS 1000 // Milliseconds - -// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. -//#define ADVANCED_OK - -// @section fwretract - -// Firmware based and LCD controlled retract -// M207 and M208 can be used to define parameters for the retraction. -// The retraction can be called by the slicer using G10 and G11 -// until then, intended retractions can be detected by moves that only extrude and the direction. -// the moves are than replaced by the firmware controlled ones. - -//#define FWRETRACT //ONLY PARTIALLY TESTED -#if ENABLED(FWRETRACT) - #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt - #define RETRACT_LENGTH 3 //default retract length (positive mm) - #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change - #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) - #define RETRACT_ZLIFT 0 //default retract Z-lift - #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) - #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) - #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) -#endif - -// Add support for experimental filament exchange support M600; requires display -#if ENABLED(ULTIPANEL) - // #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) - #if ENABLED(FILAMENT_CHANGE_FEATURE) - #define FILAMENT_CHANGE_X_POS 3 // X position of hotend - #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend - #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) - #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) - #define FILAMENT_CHANGE_Z_FEEDRATE 5 // Z axis feedrate in mm/s (not used for delta printers) - #define FILAMENT_CHANGE_RETRACT_LENGTH 2 // Initial retract in mm - // It is a short retract used immediately after print interrupt before move to filament exchange position - #define FILAMENT_CHANGE_RETRACT_FEEDRATE 60 // Initial retract feedrate in mm/s - #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // Unload filament length from hotend in mm - // Longer length for bowden printers to unload filament from whole bowden tube, - // shorter lenght for printers without bowden to unload filament from extruder only, - // 0 to disable unloading for manual unloading - #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // Unload filament feedrate in mm/s - filament unloading can be fast - #define FILAMENT_CHANGE_LOAD_LENGTH 0 // Load filament length over hotend in mm - // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend, - // Short or zero length for printers without bowden where loading is not used - #define FILAMENT_CHANGE_LOAD_FEEDRATE 10 // Load filament feedrate in mm/s - filament loading into the bowden tube can be fast - #define FILAMENT_CHANGE_EXTRUDE_LENGTH 50 // Extrude filament length in mm after filament is load over the hotend, - // 0 to disable for manual extrusion - // Filament can be extruded repeatedly from the filament exchange menu to fill the hotend, - // or until outcoming filament color is not clear for filament color change - #define FILAMENT_CHANGE_EXTRUDE_FEEDRATE 3 // Extrude filament feedrate in mm/s - must be slower than load feedrate - #endif -#endif - -/******************************************************************************\ - * enable this section if you have TMC26X motor drivers. - * you need to import the TMC26XStepper library into the Arduino IDE for this - ******************************************************************************/ - -// @section tmc - -//#define HAVE_TMCDRIVER -#if ENABLED(HAVE_TMCDRIVER) - - //#define X_IS_TMC - #define X_MAX_CURRENT 1000 //in mA - #define X_SENSE_RESISTOR 91 //in mOhms - #define X_MICROSTEPS 16 //number of microsteps - - //#define X2_IS_TMC - #define X2_MAX_CURRENT 1000 //in mA - #define X2_SENSE_RESISTOR 91 //in mOhms - #define X2_MICROSTEPS 16 //number of microsteps - - //#define Y_IS_TMC - #define Y_MAX_CURRENT 1000 //in mA - #define Y_SENSE_RESISTOR 91 //in mOhms - #define Y_MICROSTEPS 16 //number of microsteps - - //#define Y2_IS_TMC - #define Y2_MAX_CURRENT 1000 //in mA - #define Y2_SENSE_RESISTOR 91 //in mOhms - #define Y2_MICROSTEPS 16 //number of microsteps - - //#define Z_IS_TMC - #define Z_MAX_CURRENT 1000 //in mA - #define Z_SENSE_RESISTOR 91 //in mOhms - #define Z_MICROSTEPS 16 //number of microsteps - - //#define Z2_IS_TMC - #define Z2_MAX_CURRENT 1000 //in mA - #define Z2_SENSE_RESISTOR 91 //in mOhms - #define Z2_MICROSTEPS 16 //number of microsteps - - //#define E0_IS_TMC - #define E0_MAX_CURRENT 1000 //in mA - #define E0_SENSE_RESISTOR 91 //in mOhms - #define E0_MICROSTEPS 16 //number of microsteps - - //#define E1_IS_TMC - #define E1_MAX_CURRENT 1000 //in mA - #define E1_SENSE_RESISTOR 91 //in mOhms - #define E1_MICROSTEPS 16 //number of microsteps - - //#define E2_IS_TMC - #define E2_MAX_CURRENT 1000 //in mA - #define E2_SENSE_RESISTOR 91 //in mOhms - #define E2_MICROSTEPS 16 //number of microsteps - - //#define E3_IS_TMC - #define E3_MAX_CURRENT 1000 //in mA - #define E3_SENSE_RESISTOR 91 //in mOhms - #define E3_MICROSTEPS 16 //number of microsteps - -#endif - -/******************************************************************************\ - * enable this section if you have L6470 motor drivers. - * you need to import the L6470 library into the Arduino IDE for this - ******************************************************************************/ - -// @section l6470 - -//#define HAVE_L6470DRIVER -#if ENABLED(HAVE_L6470DRIVER) - - //#define X_IS_L6470 - #define X_MICROSTEPS 16 //number of microsteps - #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define X2_IS_L6470 - #define X2_MICROSTEPS 16 //number of microsteps - #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y_IS_L6470 - #define Y_MICROSTEPS 16 //number of microsteps - #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Y2_IS_L6470 - #define Y2_MICROSTEPS 16 //number of microsteps - #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z_IS_L6470 - #define Z_MICROSTEPS 16 //number of microsteps - #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define Z2_IS_L6470 - #define Z2_MICROSTEPS 16 //number of microsteps - #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E0_IS_L6470 - #define E0_MICROSTEPS 16 //number of microsteps - #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E1_IS_L6470 - #define E1_MICROSTEPS 16 //number of microsteps - #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E2_IS_L6470 - #define E2_MICROSTEPS 16 //number of microsteps - #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall - - //#define E3_IS_L6470 - #define E3_MICROSTEPS 16 //number of microsteps - #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be careful not to go too high - #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off - #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall - -#endif - -/** - * TWI/I2C BUS - * - * This feature is an EXPERIMENTAL feature so it shall not be used on production - * machines. Enabling this will allow you to send and receive I2C data from slave - * devices on the bus. - * - * ; Example #1 - * ; This macro send the string "Marlin" to the slave device with address 0x63 (99) - * ; It uses multiple M155 commands with one B arg - * M155 A99 ; Target slave address - * M155 B77 ; M - * M155 B97 ; a - * M155 B114 ; r - * M155 B108 ; l - * M155 B105 ; i - * M155 B110 ; n - * M155 S1 ; Send the current buffer - * - * ; Example #2 - * ; Request 6 bytes from slave device with address 0x63 (99) - * M156 A99 B5 - * - * ; Example #3 - * ; Example serial output of a M156 request - * echo:i2c-reply: from:99 bytes:5 data:hello - */ - -// @section i2cbus - -//#define EXPERIMENTAL_I2CBUS - -#endif // CONFIGURATION_ADV_H diff --git a/lib/Marlin/fastio.h b/lib/Marlin/fastio.h deleted file mode 100644 index 3a608e0..0000000 --- a/lib/Marlin/fastio.h +++ /dev/null @@ -1,4051 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - This code contributed by Triffid_Hunter and modified by Kliment - why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html -*/ - -#ifndef _FASTIO_ARDUINO_H -#define _FASTIO_ARDUINO_H - -#include - -/** - utility functions -*/ - -#ifndef MASK - #define MASK(PIN) (1 << PIN) -#endif - -/** - magic I/O routines - now you can simply SET_OUTPUT(STEP); WRITE(STEP, 1); WRITE(STEP, 0); -*/ - -/// Read a pin -#define _READ(IO) ((bool)(DIO ## IO ## _RPORT & MASK(DIO ## IO ## _PIN))) -/// write to a pin -// On some boards pins > 0x100 are used. These are not converted to atomic actions. An critical section is needed. - -#define _WRITE_NC(IO, v) do { if (v) {DIO ## IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ## IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0) - -#define _WRITE_C(IO, v) do { if (v) { \ - CRITICAL_SECTION_START; \ - {DIO ## IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } \ - CRITICAL_SECTION_END; \ - } \ - else { \ - CRITICAL_SECTION_START; \ - {DIO ## IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); } \ - CRITICAL_SECTION_END; \ - } \ - } \ - while (0) - -#define _WRITE(IO, v) do { if (&(DIO ## IO ## _RPORT) >= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0) - -/// toggle a pin -#define _TOGGLE(IO) do {DIO ## IO ## _RPORT = MASK(DIO ## IO ## _PIN); } while (0) - -/// set pin as input -#define _SET_INPUT(IO) do {DIO ## IO ## _DDR &= ~MASK(DIO ## IO ## _PIN); } while (0) -/// set pin as output -#define _SET_OUTPUT(IO) do {DIO ## IO ## _DDR |= MASK(DIO ## IO ## _PIN); } while (0) - -/// check if pin is an input -#define _GET_INPUT(IO) ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) == 0) -/// check if pin is an output -#define _GET_OUTPUT(IO) ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) != 0) - -/// check if pin is an timer -#define _GET_TIMER(IO) ((DIO ## IO ## _PWM) - -// why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html - -/// Read a pin wrapper -#define READ(IO) _READ(IO) -/// Write to a pin wrapper -#define WRITE(IO, v) _WRITE(IO, v) - -/// toggle a pin wrapper -#define TOGGLE(IO) _TOGGLE(IO) - -/// set pin as input wrapper -#define SET_INPUT(IO) _SET_INPUT(IO) -/// set pin as output wrapper -#define SET_OUTPUT(IO) _SET_OUTPUT(IO) - -/// check if pin is an input wrapper -#define GET_INPUT(IO) _GET_INPUT(IO) -/// check if pin is an output wrapper -#define GET_OUTPUT(IO) _GET_OUTPUT(IO) - -/// check if pin is an timer wrapper -#define GET_TIMER(IO) _GET_TIMER(IO) - -// Shorthand -#define OUT_WRITE(IO, v) { SET_OUTPUT(IO); WRITE(IO, v); } - -/** - ports and functions - - added as necessary or if I feel like it- not a comprehensive list! -*/ - -#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328__) || defined(__AVR_ATmega328P__) - // UART - #define RXD DIO0 - #define TXD DIO1 - - // SPI - #define SCK DIO13 - #define MISO DIO12 - #define MOSI DIO11 - #define SS DIO10 - - // TWI (I2C) - #define SCL AIO5 - #define SDA AIO4 - - // timers and PWM - #define OC0A DIO6 - #define OC0B DIO5 - #define OC1A DIO9 - #define OC1B DIO10 - #define OC2A DIO11 - #define OC2B DIO3 - - #define DEBUG_LED AIO5 - - /** - pins - */ - - #define DIO0_PIN PIND0 - #define DIO0_RPORT PIND - #define DIO0_WPORT PORTD - #define DIO0_DDR DDRD - #define DIO0_PWM NULL - - #define DIO1_PIN PIND1 - #define DIO1_RPORT PIND - #define DIO1_WPORT PORTD - #define DIO1_DDR DDRD - #define DIO1_PWM NULL - - #define DIO2_PIN PIND2 - #define DIO2_RPORT PIND - #define DIO2_WPORT PORTD - #define DIO2_DDR DDRD - #define DIO2_PWM NULL - - #define DIO3_PIN PIND3 - #define DIO3_RPORT PIND - #define DIO3_WPORT PORTD - #define DIO3_DDR DDRD - #define DIO3_PWM &OCR2B - - #define DIO4_PIN PIND4 - #define DIO4_RPORT PIND - #define DIO4_WPORT PORTD - #define DIO4_DDR DDRD - #define DIO4_PWM NULL - - #define DIO5_PIN PIND5 - #define DIO5_RPORT PIND - #define DIO5_WPORT PORTD - #define DIO5_DDR DDRD - #define DIO5_PWM &OCR0B - - #define DIO6_PIN PIND6 - #define DIO6_RPORT PIND - #define DIO6_WPORT PORTD - #define DIO6_DDR DDRD - #define DIO6_PWM &OCR0A - - #define DIO7_PIN PIND7 - #define DIO7_RPORT PIND - #define DIO7_WPORT PORTD - #define DIO7_DDR DDRD - #define DIO7_PWM NULL - - #define DIO8_PIN PINB0 - #define DIO8_RPORT PINB - #define DIO8_WPORT PORTB - #define DIO8_DDR DDRB - #define DIO8_PWM NULL - - #define DIO9_PIN PINB1 - #define DIO9_RPORT PINB - #define DIO9_WPORT PORTB - #define DIO9_DDR DDRB - #define DIO9_PWM NULL - - #define DIO10_PIN PINB2 - #define DIO10_RPORT PINB - #define DIO10_WPORT PORTB - #define DIO10_DDR DDRB - #define DIO10_PWM NULL - - #define DIO11_PIN PINB3 - #define DIO11_RPORT PINB - #define DIO11_WPORT PORTB - #define DIO11_DDR DDRB - #define DIO11_PWM &OCR2A - - #define DIO12_PIN PINB4 - #define DIO12_RPORT PINB - #define DIO12_WPORT PORTB - #define DIO12_DDR DDRB - #define DIO12_PWM NULL - - #define DIO13_PIN PINB5 - #define DIO13_RPORT PINB - #define DIO13_WPORT PORTB - #define DIO13_DDR DDRB - #define DIO13_PWM NULL - - - #define DIO14_PIN PINC0 - #define DIO14_RPORT PINC - #define DIO14_WPORT PORTC - #define DIO14_DDR DDRC - #define DIO14_PWM NULL - - #define DIO15_PIN PINC1 - #define DIO15_RPORT PINC - #define DIO15_WPORT PORTC - #define DIO15_DDR DDRC - #define DIO15_PWM NULL - - #define DIO16_PIN PINC2 - #define DIO16_RPORT PINC - #define DIO16_WPORT PORTC - #define DIO16_DDR DDRC - #define DIO16_PWM NULL - - #define DIO17_PIN PINC3 - #define DIO17_RPORT PINC - #define DIO17_WPORT PORTC - #define DIO17_DDR DDRC - #define DIO17_PWM NULL - - #define DIO18_PIN PINC4 - #define DIO18_RPORT PINC - #define DIO18_WPORT PORTC - #define DIO18_DDR DDRC - #define DIO18_PWM NULL - - #define DIO19_PIN PINC5 - #define DIO19_RPORT PINC - #define DIO19_WPORT PORTC - #define DIO19_DDR DDRC - #define DIO19_PWM NULL - - #define DIO20_PIN PINC6 - #define DIO20_RPORT PINC - #define DIO20_WPORT PORTC - #define DIO20_DDR DDRC - #define DIO20_PWM NULL - - #define DIO21_PIN PINC7 - #define DIO21_RPORT PINC - #define DIO21_WPORT PORTC - #define DIO21_DDR DDRC - #define DIO21_PWM NULL - - - - #undef PB0 - #define PB0_PIN PINB0 - #define PB0_RPORT PINB - #define PB0_WPORT PORTB - #define PB0_DDR DDRB - #define PB0_PWM NULL - - #undef PB1 - #define PB1_PIN PINB1 - #define PB1_RPORT PINB - #define PB1_WPORT PORTB - #define PB1_DDR DDRB - #define PB1_PWM NULL - - #undef PB2 - #define PB2_PIN PINB2 - #define PB2_RPORT PINB - #define PB2_WPORT PORTB - #define PB2_DDR DDRB - #define PB2_PWM NULL - - #undef PB3 - #define PB3_PIN PINB3 - #define PB3_RPORT PINB - #define PB3_WPORT PORTB - #define PB3_DDR DDRB - #define PB3_PWM &OCR2A - - #undef PB4 - #define PB4_PIN PINB4 - #define PB4_RPORT PINB - #define PB4_WPORT PORTB - #define PB4_DDR DDRB - #define PB4_PWM NULL - - #undef PB5 - #define PB5_PIN PINB5 - #define PB5_RPORT PINB - #define PB5_WPORT PORTB - #define PB5_DDR DDRB - #define PB5_PWM NULL - - #undef PB6 - #define PB6_PIN PINB6 - #define PB6_RPORT PINB - #define PB6_WPORT PORTB - #define PB6_DDR DDRB - #define PB6_PWM NULL - - #undef PB7 - #define PB7_PIN PINB7 - #define PB7_RPORT PINB - #define PB7_WPORT PORTB - #define PB7_DDR DDRB - #define PB7_PWM NULL - - - #undef PC0 - #define PC0_PIN PINC0 - #define PC0_RPORT PINC - #define PC0_WPORT PORTC - #define PC0_DDR DDRC - #define PC0_PWM NULL - - #undef PC1 - #define PC1_PIN PINC1 - #define PC1_RPORT PINC - #define PC1_WPORT PORTC - #define PC1_DDR DDRC - #define PC1_PWM NULL - - #undef PC2 - #define PC2_PIN PINC2 - #define PC2_RPORT PINC - #define PC2_WPORT PORTC - #define PC2_DDR DDRC - #define PC2_PWM NULL - - #undef PC3 - #define PC3_PIN PINC3 - #define PC3_RPORT PINC - #define PC3_WPORT PORTC - #define PC3_DDR DDRC - #define PC3_PWM NULL - - #undef PC4 - #define PC4_PIN PINC4 - #define PC4_RPORT PINC - #define PC4_WPORT PORTC - #define PC4_DDR DDRC - #define PC4_PWM NULL - - #undef PC5 - #define PC5_PIN PINC5 - #define PC5_RPORT PINC - #define PC5_WPORT PORTC - #define PC5_DDR DDRC - #define PC5_PWM NULL - - #undef PC6 - #define PC6_PIN PINC6 - #define PC6_RPORT PINC - #define PC6_WPORT PORTC - #define PC6_DDR DDRC - #define PC6_PWM NULL - - #undef PC7 - #define PC7_PIN PINC7 - #define PC7_RPORT PINC - #define PC7_WPORT PORTC - #define PC7_DDR DDRC - #define PC7_PWM NULL - - - #undef PD0 - #define PD0_PIN PIND0 - #define PD0_RPORT PIND - #define PD0_WPORT PORTD - #define PD0_DDR DDRD - #define PD0_PWM NULL - - #undef PD1 - #define PD1_PIN PIND1 - #define PD1_RPORT PIND - #define PD1_WPORT PORTD - #define PD1_DDR DDRD - #define PD1_PWM NULL - - #undef PD2 - #define PD2_PIN PIND2 - #define PD2_RPORT PIND - #define PD2_WPORT PORTD - #define PD2_DDR DDRD - #define PD2_PWM NULL - - #undef PD3 - #define PD3_PIN PIND3 - #define PD3_RPORT PIND - #define PD3_WPORT PORTD - #define PD3_DDR DDRD - #define PD3_PWM &OCR2B - - #undef PD4 - #define PD4_PIN PIND4 - #define PD4_RPORT PIND - #define PD4_WPORT PORTD - #define PD4_DDR DDRD - #define PD4_PWM NULL - - #undef PD5 - #define PD5_PIN PIND5 - #define PD5_RPORT PIND - #define PD5_WPORT PORTD - #define PD5_DDR DDRD - #define PD5_PWM &OCR0B - - #undef PD6 - #define PD6_PIN PIND6 - #define PD6_RPORT PIND - #define PD6_WPORT PORTD - #define PD6_DDR DDRD - #define PD6_PWM &OCR0A - - #undef PD7 - #define PD7_PIN PIND7 - #define PD7_RPORT PIND - #define PD7_WPORT PORTD - #define PD7_DDR DDRD - #define PD7_PWM NULL -#endif /* _AVR_ATmega{168,328,328P}__ */ - -#if defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__) - // UART - #define RXD DIO8 - #define TXD DIO9 - #define RXD0 DIO8 - #define TXD0 DIO9 - - #define RXD1 DIO10 - #define TXD1 DIO11 - - // SPI - #define SCK DIO7 - #define MISO DIO6 - #define MOSI DIO5 - #define SS DIO4 - - // TWI (I2C) - #define SCL DIO16 - #define SDA DIO17 - - // timers and PWM - #define OC0A DIO3 - #define OC0B DIO4 - #define OC1A DIO13 - #define OC1B DIO12 - #define OC2A DIO15 - #define OC2B DIO14 - - #define DEBUG_LED DIO0 - /** - pins - */ - - #define DIO0_PIN PINB0 - #define DIO0_RPORT PINB - #define DIO0_WPORT PORTB - #define DIO0_DDR DDRB - #define DIO0_PWM NULL - - #define DIO1_PIN PINB1 - #define DIO1_RPORT PINB - #define DIO1_WPORT PORTB - #define DIO1_DDR DDRB - #define DIO1_PWM NULL - - #define DIO2_PIN PINB2 - #define DIO2_RPORT PINB - #define DIO2_WPORT PORTB - #define DIO2_DDR DDRB - #define DIO2_PWM NULL - - #define DIO3_PIN PINB3 - #define DIO3_RPORT PINB - #define DIO3_WPORT PORTB - #define DIO3_DDR DDRB - #define DIO3_PWM OCR0A - - #define DIO4_PIN PINB4 - #define DIO4_RPORT PINB - #define DIO4_WPORT PORTB - #define DIO4_DDR DDRB - #define DIO4_PWM OCR0B - - #define DIO5_PIN PINB5 - #define DIO5_RPORT PINB - #define DIO5_WPORT PORTB - #define DIO5_DDR DDRB - #define DIO5_PWM NULL - - #define DIO6_PIN PINB6 - #define DIO6_RPORT PINB - #define DIO6_WPORT PORTB - #define DIO6_DDR DDRB - #define DIO6_PWM NULL - - #define DIO7_PIN PINB7 - #define DIO7_RPORT PINB - #define DIO7_WPORT PORTB - #define DIO7_DDR DDRB - #define DIO7_PWM NULL - - #define DIO8_PIN PIND0 - #define DIO8_RPORT PIND - #define DIO8_WPORT PORTD - #define DIO8_DDR DDRD - #define DIO8_PWM NULL - - #define DIO9_PIN PIND1 - #define DIO9_RPORT PIND - #define DIO9_WPORT PORTD - #define DIO9_DDR DDRD - #define DIO9_PWM NULL - - #define DIO10_PIN PIND2 - #define DIO10_RPORT PIND - #define DIO10_WPORT PORTD - #define DIO10_DDR DDRD - #define DIO10_PWM NULL - - #define DIO11_PIN PIND3 - #define DIO11_RPORT PIND - #define DIO11_WPORT PORTD - #define DIO11_DDR DDRD - #define DIO11_PWM NULL - - #define DIO12_PIN PIND4 - #define DIO12_RPORT PIND - #define DIO12_WPORT PORTD - #define DIO12_DDR DDRD - #define DIO12_PWM OCR1B - - #define DIO13_PIN PIND5 - #define DIO13_RPORT PIND - #define DIO13_WPORT PORTD - #define DIO13_DDR DDRD - #define DIO13_PWM OCR1A - - #define DIO14_PIN PIND6 - #define DIO14_RPORT PIND - #define DIO14_WPORT PORTD - #define DIO14_DDR DDRD - #define DIO14_PWM OCR2B - - #define DIO15_PIN PIND7 - #define DIO15_RPORT PIND - #define DIO15_WPORT PORTD - #define DIO15_DDR DDRD - #define DIO15_PWM OCR2A - - #define DIO16_PIN PINC0 - #define DIO16_RPORT PINC - #define DIO16_WPORT PORTC - #define DIO16_DDR DDRC - #define DIO16_PWM NULL - - #define DIO17_PIN PINC1 - #define DIO17_RPORT PINC - #define DIO17_WPORT PORTC - #define DIO17_DDR DDRC - #define DIO17_PWM NULL - - #define DIO18_PIN PINC2 - #define DIO18_RPORT PINC - #define DIO18_WPORT PORTC - #define DIO18_DDR DDRC - #define DIO18_PWM NULL - - #define DIO19_PIN PINC3 - #define DIO19_RPORT PINC - #define DIO19_WPORT PORTC - #define DIO19_DDR DDRC - #define DIO19_PWM NULL - - #define DIO20_PIN PINC4 - #define DIO20_RPORT PINC - #define DIO20_WPORT PORTC - #define DIO20_DDR DDRC - #define DIO20_PWM NULL - - #define DIO21_PIN PINC5 - #define DIO21_RPORT PINC - #define DIO21_WPORT PORTC - #define DIO21_DDR DDRC - #define DIO21_PWM NULL - - #define DIO22_PIN PINC6 - #define DIO22_RPORT PINC - #define DIO22_WPORT PORTC - #define DIO22_DDR DDRC - #define DIO22_PWM NULL - - #define DIO23_PIN PINC7 - #define DIO23_RPORT PINC - #define DIO23_WPORT PORTC - #define DIO23_DDR DDRC - #define DIO23_PWM NULL - - #define DIO24_PIN PINA7 - #define DIO24_RPORT PINA - #define DIO24_WPORT PORTA - #define DIO24_DDR DDRA - #define DIO24_PWM NULL - - #define DIO25_PIN PINA6 - #define DIO25_RPORT PINA - #define DIO25_WPORT PORTA - #define DIO25_DDR DDRA - #define DIO25_PWM NULL - - #define DIO26_PIN PINA5 - #define DIO26_RPORT PINA - #define DIO26_WPORT PORTA - #define DIO26_DDR DDRA - #define DIO26_PWM NULL - - #define DIO27_PIN PINA4 - #define DIO27_RPORT PINA - #define DIO27_WPORT PORTA - #define DIO27_DDR DDRA - #define DIO27_PWM NULL - - #define DIO28_PIN PINA3 - #define DIO28_RPORT PINA - #define DIO28_WPORT PORTA - #define DIO28_DDR DDRA - #define DIO28_PWM NULL - - #define DIO29_PIN PINA2 - #define DIO29_RPORT PINA - #define DIO29_WPORT PORTA - #define DIO29_DDR DDRA - #define DIO29_PWM NULL - - #define DIO30_PIN PINA1 - #define DIO30_RPORT PINA - #define DIO30_WPORT PORTA - #define DIO30_DDR DDRA - #define DIO30_PWM NULL - - #define DIO31_PIN PINA0 - #define DIO31_RPORT PINA - #define DIO31_WPORT PORTA - #define DIO31_DDR DDRA - #define DIO31_PWM NULL - - #define AIO0_PIN PINA0 - #define AIO0_RPORT PINA - #define AIO0_WPORT PORTA - #define AIO0_DDR DDRA - #define AIO0_PWM NULL - - #define AIO1_PIN PINA1 - #define AIO1_RPORT PINA - #define AIO1_WPORT PORTA - #define AIO1_DDR DDRA - #define AIO1_PWM NULL - - #define AIO2_PIN PINA2 - #define AIO2_RPORT PINA - #define AIO2_WPORT PORTA - #define AIO2_DDR DDRA - #define AIO2_PWM NULL - - #define AIO3_PIN PINA3 - #define AIO3_RPORT PINA - #define AIO3_WPORT PORTA - #define AIO3_DDR DDRA - #define AIO3_PWM NULL - - #define AIO4_PIN PINA4 - #define AIO4_RPORT PINA - #define AIO4_WPORT PORTA - #define AIO4_DDR DDRA - #define AIO4_PWM NULL - - #define AIO5_PIN PINA5 - #define AIO5_RPORT PINA - #define AIO5_WPORT PORTA - #define AIO5_DDR DDRA - #define AIO5_PWM NULL - - #define AIO6_PIN PINA6 - #define AIO6_RPORT PINA - #define AIO6_WPORT PORTA - #define AIO6_DDR DDRA - #define AIO6_PWM NULL - - #define AIO7_PIN PINA7 - #define AIO7_RPORT PINA - #define AIO7_WPORT PORTA - #define AIO7_DDR DDRA - #define AIO7_PWM NULL - - - - #undef PA0 - #define PA0_PIN PINA0 - #define PA0_RPORT PINA - #define PA0_WPORT PORTA - #define PA0_DDR DDRA - #define PA0_PWM NULL - - #undef PA1 - #define PA1_PIN PINA1 - #define PA1_RPORT PINA - #define PA1_WPORT PORTA - #define PA1_DDR DDRA - #define PA1_PWM NULL - - #undef PA2 - #define PA2_PIN PINA2 - #define PA2_RPORT PINA - #define PA2_WPORT PORTA - #define PA2_DDR DDRA - #define PA2_PWM NULL - - #undef PA3 - #define PA3_PIN PINA3 - #define PA3_RPORT PINA - #define PA3_WPORT PORTA - #define PA3_DDR DDRA - #define PA3_PWM NULL - - #undef PA4 - #define PA4_PIN PINA4 - #define PA4_RPORT PINA - #define PA4_WPORT PORTA - #define PA4_DDR DDRA - #define PA4_PWM NULL - - #undef PA5 - #define PA5_PIN PINA5 - #define PA5_RPORT PINA - #define PA5_WPORT PORTA - #define PA5_DDR DDRA - #define PA5_PWM NULL - - #undef PA6 - #define PA6_PIN PINA6 - #define PA6_RPORT PINA - #define PA6_WPORT PORTA - #define PA6_DDR DDRA - #define PA6_PWM NULL - - #undef PA7 - #define PA7_PIN PINA7 - #define PA7_RPORT PINA - #define PA7_WPORT PORTA - #define PA7_DDR DDRA - #define PA7_PWM NULL - - - #undef PB0 - #define PB0_PIN PINB0 - #define PB0_RPORT PINB - #define PB0_WPORT PORTB - #define PB0_DDR DDRB - #define PB0_PWM NULL - - #undef PB1 - #define PB1_PIN PINB1 - #define PB1_RPORT PINB - #define PB1_WPORT PORTB - #define PB1_DDR DDRB - #define PB1_PWM NULL - - #undef PB2 - #define PB2_PIN PINB2 - #define PB2_RPORT PINB - #define PB2_WPORT PORTB - #define PB2_DDR DDRB - #define PB2_PWM NULL - - #undef PB3 - #define PB3_PIN PINB3 - #define PB3_RPORT PINB - #define PB3_WPORT PORTB - #define PB3_DDR DDRB - #define PB3_PWM OCR0A - - #undef PB4 - #define PB4_PIN PINB4 - #define PB4_RPORT PINB - #define PB4_WPORT PORTB - #define PB4_DDR DDRB - #define PB4_PWM OCR0B - - #undef PB5 - #define PB5_PIN PINB5 - #define PB5_RPORT PINB - #define PB5_WPORT PORTB - #define PB5_DDR DDRB - #define PB5_PWM NULL - - #undef PB6 - #define PB6_PIN PINB6 - #define PB6_RPORT PINB - #define PB6_WPORT PORTB - #define PB6_DDR DDRB - #define PB6_PWM NULL - - #undef PB7 - #define PB7_PIN PINB7 - #define PB7_RPORT PINB - #define PB7_WPORT PORTB - #define PB7_DDR DDRB - #define PB7_PWM NULL - - - #undef PC0 - #define PC0_PIN PINC0 - #define PC0_RPORT PINC - #define PC0_WPORT PORTC - #define PC0_DDR DDRC - #define PC0_PWM NULL - - #undef PC1 - #define PC1_PIN PINC1 - #define PC1_RPORT PINC - #define PC1_WPORT PORTC - #define PC1_DDR DDRC - #define PC1_PWM NULL - - #undef PC2 - #define PC2_PIN PINC2 - #define PC2_RPORT PINC - #define PC2_WPORT PORTC - #define PC2_DDR DDRC - #define PC2_PWM NULL - - #undef PC3 - #define PC3_PIN PINC3 - #define PC3_RPORT PINC - #define PC3_WPORT PORTC - #define PC3_DDR DDRC - #define PC3_PWM NULL - - #undef PC4 - #define PC4_PIN PINC4 - #define PC4_RPORT PINC - #define PC4_WPORT PORTC - #define PC4_DDR DDRC - #define PC4_PWM NULL - - #undef PC5 - #define PC5_PIN PINC5 - #define PC5_RPORT PINC - #define PC5_WPORT PORTC - #define PC5_DDR DDRC - #define PC5_PWM NULL - - #undef PC6 - #define PC6_PIN PINC6 - #define PC6_RPORT PINC - #define PC6_WPORT PORTC - #define PC6_DDR DDRC - #define PC6_PWM NULL - - #undef PC7 - #define PC7_PIN PINC7 - #define PC7_RPORT PINC - #define PC7_WPORT PORTC - #define PC7_DDR DDRC - #define PC7_PWM NULL - - - #undef PD0 - #define PD0_PIN PIND0 - #define PD0_RPORT PIND - #define PD0_WPORT PORTD - #define PD0_DDR DDRD - #define PD0_PWM NULL - - #undef PD1 - #define PD1_PIN PIND1 - #define PD1_RPORT PIND - #define PD1_WPORT PORTD - #define PD1_DDR DDRD - #define PD1_PWM NULL - - #undef PD2 - #define PD2_PIN PIND2 - #define PD2_RPORT PIND - #define PD2_WPORT PORTD - #define PD2_DDR DDRD - #define PD2_PWM NULL - - #undef PD3 - #define PD3_PIN PIND3 - #define PD3_RPORT PIND - #define PD3_WPORT PORTD - #define PD3_DDR DDRD - #define PD3_PWM NULL - - #undef PD4 - #define PD4_PIN PIND4 - #define PD4_RPORT PIND - #define PD4_WPORT PORTD - #define PD4_DDR DDRD - #define PD4_PWM NULL - - #undef PD5 - #define PD5_PIN PIND5 - #define PD5_RPORT PIND - #define PD5_WPORT PORTD - #define PD5_DDR DDRD - #define PD5_PWM NULL - - #undef PD6 - #define PD6_PIN PIND6 - #define PD6_RPORT PIND - #define PD6_WPORT PORTD - #define PD6_DDR DDRD - #define PD6_PWM OCR2B - - #undef PD7 - #define PD7_PIN PIND7 - #define PD7_RPORT PIND - #define PD7_WPORT PORTD - #define PD7_DDR DDRD - #define PD7_PWM OCR2A -#endif /* _AVR_ATmega{644,644P,644PA}__ */ - -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - // UART - #define RXD DIO0 - #define TXD DIO1 - - // SPI - #define SCK DIO52 - #define MISO DIO50 - #define MOSI DIO51 - #define SS DIO53 - - // TWI (I2C) - #define SCL DIO21 - #define SDA DIO20 - - // timers and PWM - #define OC0A DIO13 - #define OC0B DIO4 - #define OC1A DIO11 - #define OC1B DIO12 - #define OC2A DIO10 - #define OC2B DIO9 - #define OC3A DIO5 - #define OC3B DIO2 - #define OC3C DIO3 - #define OC4A DIO6 - #define OC4B DIO7 - #define OC4C DIO8 - #define OC5A DIO46 - #define OC5B DIO45 - #define OC5C DIO44 - - // change for your board - #define DEBUG_LED DIO21 - - /** - pins - */ - #define DIO0_PIN PINE0 - #define DIO0_RPORT PINE - #define DIO0_WPORT PORTE - #define DIO0_DDR DDRE - #define DIO0_PWM NULL - - #define DIO1_PIN PINE1 - #define DIO1_RPORT PINE - #define DIO1_WPORT PORTE - #define DIO1_DDR DDRE - #define DIO1_PWM NULL - - #define DIO2_PIN PINE4 - #define DIO2_RPORT PINE - #define DIO2_WPORT PORTE - #define DIO2_DDR DDRE - #define DIO2_PWM &OCR3BL - - #define DIO3_PIN PINE5 - #define DIO3_RPORT PINE - #define DIO3_WPORT PORTE - #define DIO3_DDR DDRE - #define DIO3_PWM &OCR3CL - - #define DIO4_PIN PING5 - #define DIO4_RPORT PING - #define DIO4_WPORT PORTG - #define DIO4_DDR DDRG - #define DIO4_PWM &OCR0B - - #define DIO5_PIN PINE3 - #define DIO5_RPORT PINE - #define DIO5_WPORT PORTE - #define DIO5_DDR DDRE - #define DIO5_PWM &OCR3AL - - #define DIO6_PIN PINH3 - #define DIO6_RPORT PINH - #define DIO6_WPORT PORTH - #define DIO6_DDR DDRH - #define DIO6_PWM &OCR4AL - - #define DIO7_PIN PINH4 - #define DIO7_RPORT PINH - #define DIO7_WPORT PORTH - #define DIO7_DDR DDRH - #define DIO7_PWM &OCR4BL - - #define DIO8_PIN PINH5 - #define DIO8_RPORT PINH - #define DIO8_WPORT PORTH - #define DIO8_DDR DDRH - #define DIO8_PWM &OCR4CL - - #define DIO9_PIN PINH6 - #define DIO9_RPORT PINH - #define DIO9_WPORT PORTH - #define DIO9_DDR DDRH - #define DIO9_PWM &OCR2B - - #define DIO10_PIN PINB4 - #define DIO10_RPORT PINB - #define DIO10_WPORT PORTB - #define DIO10_DDR DDRB - #define DIO10_PWM &OCR2A - - #define DIO11_PIN PINB5 - #define DIO11_RPORT PINB - #define DIO11_WPORT PORTB - #define DIO11_DDR DDRB - #define DIO11_PWM NULL - - #define DIO12_PIN PINB6 - #define DIO12_RPORT PINB - #define DIO12_WPORT PORTB - #define DIO12_DDR DDRB - #define DIO12_PWM NULL - - #define DIO13_PIN PINB7 - #define DIO13_RPORT PINB - #define DIO13_WPORT PORTB - #define DIO13_DDR DDRB - #define DIO13_PWM &OCR0A - - #define DIO14_PIN PINJ1 - #define DIO14_RPORT PINJ - #define DIO14_WPORT PORTJ - #define DIO14_DDR DDRJ - #define DIO14_PWM NULL - - #define DIO15_PIN PINJ0 - #define DIO15_RPORT PINJ - #define DIO15_WPORT PORTJ - #define DIO15_DDR DDRJ - #define DIO15_PWM NULL - - #define DIO16_PIN PINH1 - #define DIO16_RPORT PINH - #define DIO16_WPORT PORTH - #define DIO16_DDR DDRH - #define DIO16_PWM NULL - - #define DIO17_PIN PINH0 - #define DIO17_RPORT PINH - #define DIO17_WPORT PORTH - #define DIO17_DDR DDRH - #define DIO17_PWM NULL - - #define DIO18_PIN PIND3 - #define DIO18_RPORT PIND - #define DIO18_WPORT PORTD - #define DIO18_DDR DDRD - #define DIO18_PWM NULL - - #define DIO19_PIN PIND2 - #define DIO19_RPORT PIND - #define DIO19_WPORT PORTD - #define DIO19_DDR DDRD - #define DIO19_PWM NULL - - #define DIO20_PIN PIND1 - #define DIO20_RPORT PIND - #define DIO20_WPORT PORTD - #define DIO20_DDR DDRD - #define DIO20_PWM NULL - - #define DIO21_PIN PIND0 - #define DIO21_RPORT PIND - #define DIO21_WPORT PORTD - #define DIO21_DDR DDRD - #define DIO21_PWM NULL - - #define DIO22_PIN PINA0 - #define DIO22_RPORT PINA - #define DIO22_WPORT PORTA - #define DIO22_DDR DDRA - #define DIO22_PWM NULL - - #define DIO23_PIN PINA1 - #define DIO23_RPORT PINA - #define DIO23_WPORT PORTA - #define DIO23_DDR DDRA - #define DIO23_PWM NULL - - #define DIO24_PIN PINA2 - #define DIO24_RPORT PINA - #define DIO24_WPORT PORTA - #define DIO24_DDR DDRA - #define DIO24_PWM NULL - - #define DIO25_PIN PINA3 - #define DIO25_RPORT PINA - #define DIO25_WPORT PORTA - #define DIO25_DDR DDRA - #define DIO25_PWM NULL - - #define DIO26_PIN PINA4 - #define DIO26_RPORT PINA - #define DIO26_WPORT PORTA - #define DIO26_DDR DDRA - #define DIO26_PWM NULL - - #define DIO27_PIN PINA5 - #define DIO27_RPORT PINA - #define DIO27_WPORT PORTA - #define DIO27_DDR DDRA - #define DIO27_PWM NULL - - #define DIO28_PIN PINA6 - #define DIO28_RPORT PINA - #define DIO28_WPORT PORTA - #define DIO28_DDR DDRA - #define DIO28_PWM NULL - - #define DIO29_PIN PINA7 - #define DIO29_RPORT PINA - #define DIO29_WPORT PORTA - #define DIO29_DDR DDRA - #define DIO29_PWM NULL - - #define DIO30_PIN PINC7 - #define DIO30_RPORT PINC - #define DIO30_WPORT PORTC - #define DIO30_DDR DDRC - #define DIO30_PWM NULL - - #define DIO31_PIN PINC6 - #define DIO31_RPORT PINC - #define DIO31_WPORT PORTC - #define DIO31_DDR DDRC - #define DIO31_PWM NULL - - #define DIO32_PIN PINC5 - #define DIO32_RPORT PINC - #define DIO32_WPORT PORTC - #define DIO32_DDR DDRC - #define DIO32_PWM NULL - - #define DIO33_PIN PINC4 - #define DIO33_RPORT PINC - #define DIO33_WPORT PORTC - #define DIO33_DDR DDRC - #define DIO33_PWM NULL - - #define DIO34_PIN PINC3 - #define DIO34_RPORT PINC - #define DIO34_WPORT PORTC - #define DIO34_DDR DDRC - #define DIO34_PWM NULL - - #define DIO35_PIN PINC2 - #define DIO35_RPORT PINC - #define DIO35_WPORT PORTC - #define DIO35_DDR DDRC - #define DIO35_PWM NULL - - #define DIO36_PIN PINC1 - #define DIO36_RPORT PINC - #define DIO36_WPORT PORTC - #define DIO36_DDR DDRC - #define DIO36_PWM NULL - - #define DIO37_PIN PINC0 - #define DIO37_RPORT PINC - #define DIO37_WPORT PORTC - #define DIO37_DDR DDRC - #define DIO37_PWM NULL - - #define DIO38_PIN PIND7 - #define DIO38_RPORT PIND - #define DIO38_WPORT PORTD - #define DIO38_DDR DDRD - #define DIO38_PWM NULL - - #define DIO39_PIN PING2 - #define DIO39_RPORT PING - #define DIO39_WPORT PORTG - #define DIO39_DDR DDRG - #define DIO39_PWM NULL - - #define DIO40_PIN PING1 - #define DIO40_RPORT PING - #define DIO40_WPORT PORTG - #define DIO40_DDR DDRG - #define DIO40_PWM NULL - - #define DIO41_PIN PING0 - #define DIO41_RPORT PING - #define DIO41_WPORT PORTG - #define DIO41_DDR DDRG - #define DIO41_PWM NULL - - #define DIO42_PIN PINL7 - #define DIO42_RPORT PINL - #define DIO42_WPORT PORTL - #define DIO42_DDR DDRL - #define DIO42_PWM NULL - - #define DIO43_PIN PINL6 - #define DIO43_RPORT PINL - #define DIO43_WPORT PORTL - #define DIO43_DDR DDRL - #define DIO43_PWM NULL - - #define DIO44_PIN PINL5 - #define DIO44_RPORT PINL - #define DIO44_WPORT PORTL - #define DIO44_DDR DDRL - #define DIO44_PWM &OCR5CL - - #define DIO45_PIN PINL4 - #define DIO45_RPORT PINL - #define DIO45_WPORT PORTL - #define DIO45_DDR DDRL - #define DIO45_PWM &OCR5BL - - #define DIO46_PIN PINL3 - #define DIO46_RPORT PINL - #define DIO46_WPORT PORTL - #define DIO46_DDR DDRL - #define DIO46_PWM &OCR5AL - - #define DIO47_PIN PINL2 - #define DIO47_RPORT PINL - #define DIO47_WPORT PORTL - #define DIO47_DDR DDRL - #define DIO47_PWM NULL - - #define DIO48_PIN PINL1 - #define DIO48_RPORT PINL - #define DIO48_WPORT PORTL - #define DIO48_DDR DDRL - #define DIO48_PWM NULL - - #define DIO49_PIN PINL0 - #define DIO49_RPORT PINL - #define DIO49_WPORT PORTL - #define DIO49_DDR DDRL - #define DIO49_PWM NULL - - #define DIO50_PIN PINB3 - #define DIO50_RPORT PINB - #define DIO50_WPORT PORTB - #define DIO50_DDR DDRB - #define DIO50_PWM NULL - - #define DIO51_PIN PINB2 - #define DIO51_RPORT PINB - #define DIO51_WPORT PORTB - #define DIO51_DDR DDRB - #define DIO51_PWM NULL - - #define DIO52_PIN PINB1 - #define DIO52_RPORT PINB - #define DIO52_WPORT PORTB - #define DIO52_DDR DDRB - #define DIO52_PWM NULL - - #define DIO53_PIN PINB0 - #define DIO53_RPORT PINB - #define DIO53_WPORT PORTB - #define DIO53_DDR DDRB - #define DIO53_PWM NULL - - #define DIO54_PIN PINF0 - #define DIO54_RPORT PINF - #define DIO54_WPORT PORTF - #define DIO54_DDR DDRF - #define DIO54_PWM NULL - - #define DIO55_PIN PINF1 - #define DIO55_RPORT PINF - #define DIO55_WPORT PORTF - #define DIO55_DDR DDRF - #define DIO55_PWM NULL - - #define DIO56_PIN PINF2 - #define DIO56_RPORT PINF - #define DIO56_WPORT PORTF - #define DIO56_DDR DDRF - #define DIO56_PWM NULL - - #define DIO57_PIN PINF3 - #define DIO57_RPORT PINF - #define DIO57_WPORT PORTF - #define DIO57_DDR DDRF - #define DIO57_PWM NULL - - #define DIO58_PIN PINF4 - #define DIO58_RPORT PINF - #define DIO58_WPORT PORTF - #define DIO58_DDR DDRF - #define DIO58_PWM NULL - - #define DIO59_PIN PINF5 - #define DIO59_RPORT PINF - #define DIO59_WPORT PORTF - #define DIO59_DDR DDRF - #define DIO59_PWM NULL - - #define DIO60_PIN PINF6 - #define DIO60_RPORT PINF - #define DIO60_WPORT PORTF - #define DIO60_DDR DDRF - #define DIO60_PWM NULL - - #define DIO61_PIN PINF7 - #define DIO61_RPORT PINF - #define DIO61_WPORT PORTF - #define DIO61_DDR DDRF - #define DIO61_PWM NULL - - #define DIO62_PIN PINK0 - #define DIO62_RPORT PINK - #define DIO62_WPORT PORTK - #define DIO62_DDR DDRK - #define DIO62_PWM NULL - - #define DIO63_PIN PINK1 - #define DIO63_RPORT PINK - #define DIO63_WPORT PORTK - #define DIO63_DDR DDRK - #define DIO63_PWM NULL - - #define DIO64_PIN PINK2 - #define DIO64_RPORT PINK - #define DIO64_WPORT PORTK - #define DIO64_DDR DDRK - #define DIO64_PWM NULL - - #define DIO65_PIN PINK3 - #define DIO65_RPORT PINK - #define DIO65_WPORT PORTK - #define DIO65_DDR DDRK - #define DIO65_PWM NULL - - #define DIO66_PIN PINK4 - #define DIO66_RPORT PINK - #define DIO66_WPORT PORTK - #define DIO66_DDR DDRK - #define DIO66_PWM NULL - - #define DIO67_PIN PINK5 - #define DIO67_RPORT PINK - #define DIO67_WPORT PORTK - #define DIO67_DDR DDRK - #define DIO67_PWM NULL - - #define DIO68_PIN PINK6 - #define DIO68_RPORT PINK - #define DIO68_WPORT PORTK - #define DIO68_DDR DDRK - #define DIO68_PWM NULL - - #define DIO69_PIN PINK7 - #define DIO69_RPORT PINK - #define DIO69_WPORT PORTK - #define DIO69_DDR DDRK - #define DIO69_PWM NULL - - #define DIO70_PIN PING4 - #define DIO70_RPORT PING - #define DIO70_WPORT PORTG - #define DIO70_DDR DDRG - #define DIO70_PWM NULL - - #define DIO71_PIN PING3 - #define DIO71_RPORT PING - #define DIO71_WPORT PORTG - #define DIO71_DDR DDRG - #define DIO71_PWM NULL - - #define DIO72_PIN PINJ2 - #define DIO72_RPORT PINJ - #define DIO72_WPORT PORTJ - #define DIO72_DDR DDRJ - #define DIO72_PWM NULL - - #define DIO73_PIN PINJ3 - #define DIO73_RPORT PINJ - #define DIO73_WPORT PORTJ - #define DIO73_DDR DDRJ - #define DIO73_PWM NULL - - #define DIO74_PIN PINJ7 - #define DIO74_RPORT PINJ - #define DIO74_WPORT PORTJ - #define DIO74_DDR DDRJ - #define DIO74_PWM NULL - - #define DIO75_PIN PINJ4 - #define DIO75_RPORT PINJ - #define DIO75_WPORT PORTJ - #define DIO75_DDR DDRJ - #define DIO75_PWM NULL - - #define DIO76_PIN PINJ5 - #define DIO76_RPORT PINJ - #define DIO76_WPORT PORTJ - #define DIO76_DDR DDRJ - #define DIO76_PWM NULL - - #define DIO77_PIN PINJ6 - #define DIO77_RPORT PINJ - #define DIO77_WPORT PORTJ - #define DIO77_DDR DDRJ - #define DIO77_PWM NULL - - #define DIO78_PIN PINE2 - #define DIO78_RPORT PINE - #define DIO78_WPORT PORTE - #define DIO78_DDR DDRE - #define DIO78_PWM NULL - - #define DIO79_PIN PINE6 - #define DIO79_RPORT PINE - #define DIO79_WPORT PORTE - #define DIO79_DDR DDRE - #define DIO79_PWM NULL - - #define DIO80_PIN PINE7 - #define DIO80_RPORT PINE - #define DIO80_WPORT PORTE - #define DIO80_DDR DDRE - #define DIO80_PWM NULL - - #define DIO81_PIN PIND4 - #define DIO81_RPORT PIND - #define DIO81_WPORT PORTD - #define DIO81_DDR DDRD - #define DIO81_PWM NULL - - #define DIO82_PIN PIND5 - #define DIO82_RPORT PIND - #define DIO82_WPORT PORTD - #define DIO82_DDR DDRD - #define DIO82_PWM NULL - - #define DIO83_PIN PIND6 - #define DIO83_RPORT PIND - #define DIO83_WPORT PORTD - #define DIO83_DDR DDRD - #define DIO83_PWM NULL - - #define DIO84_PIN PINH2 - #define DIO84_RPORT PINH - #define DIO84_WPORT PORTH - #define DIO84_DDR DDRH - #define DIO84_PWM NULL - - #define DIO85_PIN PINH7 - #define DIO85_RPORT PINH - #define DIO85_WPORT PORTH - #define DIO85_DDR DDRH - #define DIO85_PWM NULL - - #undef PA0 - #define PA0_PIN PINA0 - #define PA0_RPORT PINA - #define PA0_WPORT PORTA - #define PA0_DDR DDRA - #define PA0_PWM NULL - #undef PA1 - #define PA1_PIN PINA1 - #define PA1_RPORT PINA - #define PA1_WPORT PORTA - #define PA1_DDR DDRA - #define PA1_PWM NULL - #undef PA2 - #define PA2_PIN PINA2 - #define PA2_RPORT PINA - #define PA2_WPORT PORTA - #define PA2_DDR DDRA - #define PA2_PWM NULL - #undef PA3 - #define PA3_PIN PINA3 - #define PA3_RPORT PINA - #define PA3_WPORT PORTA - #define PA3_DDR DDRA - #define PA3_PWM NULL - #undef PA4 - #define PA4_PIN PINA4 - #define PA4_RPORT PINA - #define PA4_WPORT PORTA - #define PA4_DDR DDRA - #define PA4_PWM NULL - #undef PA5 - #define PA5_PIN PINA5 - #define PA5_RPORT PINA - #define PA5_WPORT PORTA - #define PA5_DDR DDRA - #define PA5_PWM NULL - #undef PA6 - #define PA6_PIN PINA6 - #define PA6_RPORT PINA - #define PA6_WPORT PORTA - #define PA6_DDR DDRA - #define PA6_PWM NULL - #undef PA7 - #define PA7_PIN PINA7 - #define PA7_RPORT PINA - #define PA7_WPORT PORTA - #define PA7_DDR DDRA - #define PA7_PWM NULL - - #undef PB0 - #define PB0_PIN PINB0 - #define PB0_RPORT PINB - #define PB0_WPORT PORTB - #define PB0_DDR DDRB - #define PB0_PWM NULL - #undef PB1 - #define PB1_PIN PINB1 - #define PB1_RPORT PINB - #define PB1_WPORT PORTB - #define PB1_DDR DDRB - #define PB1_PWM NULL - #undef PB2 - #define PB2_PIN PINB2 - #define PB2_RPORT PINB - #define PB2_WPORT PORTB - #define PB2_DDR DDRB - #define PB2_PWM NULL - #undef PB3 - #define PB3_PIN PINB3 - #define PB3_RPORT PINB - #define PB3_WPORT PORTB - #define PB3_DDR DDRB - #define PB3_PWM NULL - #undef PB4 - #define PB4_PIN PINB4 - #define PB4_RPORT PINB - #define PB4_WPORT PORTB - #define PB4_DDR DDRB - #define PB4_PWM &OCR2A - #undef PB5 - #define PB5_PIN PINB5 - #define PB5_RPORT PINB - #define PB5_WPORT PORTB - #define PB5_DDR DDRB - #define PB5_PWM NULL - #undef PB6 - #define PB6_PIN PINB6 - #define PB6_RPORT PINB - #define PB6_WPORT PORTB - #define PB6_DDR DDRB - #define PB6_PWM NULL - #undef PB7 - #define PB7_PIN PINB7 - #define PB7_RPORT PINB - #define PB7_WPORT PORTB - #define PB7_DDR DDRB - #define PB7_PWM &OCR0A - - #undef PC0 - #define PC0_PIN PINC0 - #define PC0_RPORT PINC - #define PC0_WPORT PORTC - #define PC0_DDR DDRC - #define PC0_PWM NULL - #undef PC1 - #define PC1_PIN PINC1 - #define PC1_RPORT PINC - #define PC1_WPORT PORTC - #define PC1_DDR DDRC - #define PC1_PWM NULL - #undef PC2 - #define PC2_PIN PINC2 - #define PC2_RPORT PINC - #define PC2_WPORT PORTC - #define PC2_DDR DDRC - #define PC2_PWM NULL - #undef PC3 - #define PC3_PIN PINC3 - #define PC3_RPORT PINC - #define PC3_WPORT PORTC - #define PC3_DDR DDRC - #define PC3_PWM NULL - #undef PC4 - #define PC4_PIN PINC4 - #define PC4_RPORT PINC - #define PC4_WPORT PORTC - #define PC4_DDR DDRC - #define PC4_PWM NULL - #undef PC5 - #define PC5_PIN PINC5 - #define PC5_RPORT PINC - #define PC5_WPORT PORTC - #define PC5_DDR DDRC - #define PC5_PWM NULL - #undef PC6 - #define PC6_PIN PINC6 - #define PC6_RPORT PINC - #define PC6_WPORT PORTC - #define PC6_DDR DDRC - #define PC6_PWM NULL - #undef PC7 - #define PC7_PIN PINC7 - #define PC7_RPORT PINC - #define PC7_WPORT PORTC - #define PC7_DDR DDRC - #define PC7_PWM NULL - - #undef PD0 - #define PD0_PIN PIND0 - #define PD0_RPORT PIND - #define PD0_WPORT PORTD - #define PD0_DDR DDRD - #define PD0_PWM NULL - #undef PD1 - #define PD1_PIN PIND1 - #define PD1_RPORT PIND - #define PD1_WPORT PORTD - #define PD1_DDR DDRD - #define PD1_PWM NULL - #undef PD2 - #define PD2_PIN PIND2 - #define PD2_RPORT PIND - #define PD2_WPORT PORTD - #define PD2_DDR DDRD - #define PD2_PWM NULL - #undef PD3 - #define PD3_PIN PIND3 - #define PD3_RPORT PIND - #define PD3_WPORT PORTD - #define PD3_DDR DDRD - #define PD3_PWM NULL - #undef PD4 - #define PD4_PIN PIND4 - #define PD4_RPORT PIND - #define PD4_WPORT PORTD - #define PD4_DDR DDRD - #define PD4_PWM NULL - #undef PD5 - #define PD5_PIN PIND5 - #define PD5_RPORT PIND - #define PD5_WPORT PORTD - #define PD5_DDR DDRD - #define PD5_PWM NULL - #undef PD6 - #define PD6_PIN PIND6 - #define PD6_RPORT PIND - #define PD6_WPORT PORTD - #define PD6_DDR DDRD - #define PD6_PWM NULL - #undef PD7 - #define PD7_PIN PIND7 - #define PD7_RPORT PIND - #define PD7_WPORT PORTD - #define PD7_DDR DDRD - #define PD7_PWM NULL - - #undef PE0 - #define PE0_PIN PINE0 - #define PE0_RPORT PINE - #define PE0_WPORT PORTE - #define PE0_DDR DDRE - #define PE0_PWM NULL - #undef PE1 - #define PE1_PIN PINE1 - #define PE1_RPORT PINE - #define PE1_WPORT PORTE - #define PE1_DDR DDRE - #define PE1_PWM NULL - #undef PE2 - #define PE2_PIN PINE2 - #define PE2_RPORT PINE - #define PE2_WPORT PORTE - #define PE2_DDR DDRE - #define PE2_PWM NULL - #undef PE3 - #define PE3_PIN PINE3 - #define PE3_RPORT PINE - #define PE3_WPORT PORTE - #define PE3_DDR DDRE - #define PE3_PWM &OCR3AL - #undef PE4 - #define PE4_PIN PINE4 - #define PE4_RPORT PINE - #define PE4_WPORT PORTE - #define PE4_DDR DDRE - #define PE4_PWM &OCR3BL - #undef PE5 - #define PE5_PIN PINE5 - #define PE5_RPORT PINE - #define PE5_WPORT PORTE - #define PE5_DDR DDRE - #define PE5_PWM &OCR3CL - #undef PE6 - #define PE6_PIN PINE6 - #define PE6_RPORT PINE - #define PE6_WPORT PORTE - #define PE6_DDR DDRE - #define PE6_PWM NULL - #undef PE7 - #define PE7_PIN PINE7 - #define PE7_RPORT PINE - #define PE7_WPORT PORTE - #define PE7_DDR DDRE - #define PE7_PWM NULL - - #undef PF0 - #define PF0_PIN PINF0 - #define PF0_RPORT PINF - #define PF0_WPORT PORTF - #define PF0_DDR DDRF - #define PF0_PWM NULL - #undef PF1 - #define PF1_PIN PINF1 - #define PF1_RPORT PINF - #define PF1_WPORT PORTF - #define PF1_DDR DDRF - #define PF1_PWM NULL - #undef PF2 - #define PF2_PIN PINF2 - #define PF2_RPORT PINF - #define PF2_WPORT PORTF - #define PF2_DDR DDRF - #define PF2_PWM NULL - #undef PF3 - #define PF3_PIN PINF3 - #define PF3_RPORT PINF - #define PF3_WPORT PORTF - #define PF3_DDR DDRF - #define PF3_PWM NULL - #undef PF4 - #define PF4_PIN PINF4 - #define PF4_RPORT PINF - #define PF4_WPORT PORTF - #define PF4_DDR DDRF - #define PF4_PWM NULL - #undef PF5 - #define PF5_PIN PINF5 - #define PF5_RPORT PINF - #define PF5_WPORT PORTF - #define PF5_DDR DDRF - #define PF5_PWM NULL - #undef PF6 - #define PF6_PIN PINF6 - #define PF6_RPORT PINF - #define PF6_WPORT PORTF - #define PF6_DDR DDRF - #define PF6_PWM NULL - #undef PF7 - #define PF7_PIN PINF7 - #define PF7_RPORT PINF - #define PF7_WPORT PORTF - #define PF7_DDR DDRF - #define PF7_PWM NULL - - #undef PG0 - #define PG0_PIN PING0 - #define PG0_RPORT PING - #define PG0_WPORT PORTG - #define PG0_DDR DDRG - #define PG0_PWM NULL - #undef PG1 - #define PG1_PIN PING1 - #define PG1_RPORT PING - #define PG1_WPORT PORTG - #define PG1_DDR DDRG - #define PG1_PWM NULL - #undef PG2 - #define PG2_PIN PING2 - #define PG2_RPORT PING - #define PG2_WPORT PORTG - #define PG2_DDR DDRG - #define PG2_PWM NULL - #undef PG3 - #define PG3_PIN PING3 - #define PG3_RPORT PING - #define PG3_WPORT PORTG - #define PG3_DDR DDRG - #define PG3_PWM NULL - #undef PG4 - #define PG4_PIN PING4 - #define PG4_RPORT PING - #define PG4_WPORT PORTG - #define PG4_DDR DDRG - #define PG4_PWM NULL - #undef PG5 - #define PG5_PIN PING5 - #define PG5_RPORT PING - #define PG5_WPORT PORTG - #define PG5_DDR DDRG - #define PG5_PWM &OCR0B - #undef PG6 - #define PG6_PIN PING6 - #define PG6_RPORT PING - #define PG6_WPORT PORTG - #define PG6_DDR DDRG - #define PG6_PWM NULL - #undef PG7 - #define PG7_PIN PING7 - #define PG7_RPORT PING - #define PG7_WPORT PORTG - #define PG7_DDR DDRG - #define PG7_PWM NULL - - #undef PH0 - #define PH0_PIN PINH0 - #define PH0_RPORT PINH - #define PH0_WPORT PORTH - #define PH0_DDR DDRH - #define PH0_PWM NULL - #undef PH1 - #define PH1_PIN PINH1 - #define PH1_RPORT PINH - #define PH1_WPORT PORTH - #define PH1_DDR DDRH - #define PH1_PWM NULL - #undef PH2 - #define PH2_PIN PINH2 - #define PH2_RPORT PINH - #define PH2_WPORT PORTH - #define PH2_DDR DDRH - #define PH2_PWM NULL - #undef PH3 - #define PH3_PIN PINH3 - #define PH3_RPORT PINH - #define PH3_WPORT PORTH - #define PH3_DDR DDRH - #define PH3_PWM &OCR4AL - #undef PH4 - #define PH4_PIN PINH4 - #define PH4_RPORT PINH - #define PH4_WPORT PORTH - #define PH4_DDR DDRH - #define PH4_PWM &OCR4BL - #undef PH5 - #define PH5_PIN PINH5 - #define PH5_RPORT PINH - #define PH5_WPORT PORTH - #define PH5_DDR DDRH - #define PH5_PWM &OCR4CL - #undef PH6 - #define PH6_PIN PINH6 - #define PH6_RPORT PINH - #define PH6_WPORT PORTH - #define PH6_DDR DDRH - #define PH6_PWM &OCR2B - #undef PH7 - #define PH7_PIN PINH7 - #define PH7_RPORT PINH - #define PH7_WPORT PORTH - #define PH7_DDR DDRH - #define PH7_PWM NULL - - #undef PJ0 - #define PJ0_PIN PINJ0 - #define PJ0_RPORT PINJ - #define PJ0_WPORT PORTJ - #define PJ0_DDR DDRJ - #define PJ0_PWM NULL - #undef PJ1 - #define PJ1_PIN PINJ1 - #define PJ1_RPORT PINJ - #define PJ1_WPORT PORTJ - #define PJ1_DDR DDRJ - #define PJ1_PWM NULL - #undef PJ2 - #define PJ2_PIN PINJ2 - #define PJ2_RPORT PINJ - #define PJ2_WPORT PORTJ - #define PJ2_DDR DDRJ - #define PJ2_PWM NULL - #undef PJ3 - #define PJ3_PIN PINJ3 - #define PJ3_RPORT PINJ - #define PJ3_WPORT PORTJ - #define PJ3_DDR DDRJ - #define PJ3_PWM NULL - #undef PJ4 - #define PJ4_PIN PINJ4 - #define PJ4_RPORT PINJ - #define PJ4_WPORT PORTJ - #define PJ4_DDR DDRJ - #define PJ4_PWM NULL - #undef PJ5 - #define PJ5_PIN PINJ5 - #define PJ5_RPORT PINJ - #define PJ5_WPORT PORTJ - #define PJ5_DDR DDRJ - #define PJ5_PWM NULL - #undef PJ6 - #define PJ6_PIN PINJ6 - #define PJ6_RPORT PINJ - #define PJ6_WPORT PORTJ - #define PJ6_DDR DDRJ - #define PJ6_PWM NULL - #undef PJ7 - #define PJ7_PIN PINJ7 - #define PJ7_RPORT PINJ - #define PJ7_WPORT PORTJ - #define PJ7_DDR DDRJ - #define PJ7_PWM NULL - - #undef PK0 - #define PK0_PIN PINK0 - #define PK0_RPORT PINK - #define PK0_WPORT PORTK - #define PK0_DDR DDRK - #define PK0_PWM NULL - #undef PK1 - #define PK1_PIN PINK1 - #define PK1_RPORT PINK - #define PK1_WPORT PORTK - #define PK1_DDR DDRK - #define PK1_PWM NULL - #undef PK2 - #define PK2_PIN PINK2 - #define PK2_RPORT PINK - #define PK2_WPORT PORTK - #define PK2_DDR DDRK - #define PK2_PWM NULL - #undef PK3 - #define PK3_PIN PINK3 - #define PK3_RPORT PINK - #define PK3_WPORT PORTK - #define PK3_DDR DDRK - #define PK3_PWM NULL - #undef PK4 - #define PK4_PIN PINK4 - #define PK4_RPORT PINK - #define PK4_WPORT PORTK - #define PK4_DDR DDRK - #define PK4_PWM NULL - #undef PK5 - #define PK5_PIN PINK5 - #define PK5_RPORT PINK - #define PK5_WPORT PORTK - #define PK5_DDR DDRK - #define PK5_PWM NULL - #undef PK6 - #define PK6_PIN PINK6 - #define PK6_RPORT PINK - #define PK6_WPORT PORTK - #define PK6_DDR DDRK - #define PK6_PWM NULL - #undef PK7 - #define PK7_PIN PINK7 - #define PK7_RPORT PINK - #define PK7_WPORT PORTK - #define PK7_DDR DDRK - #define PK7_PWM NULL - - #undef PL0 - #define PL0_PIN PINL0 - #define PL0_RPORT PINL - #define PL0_WPORT PORTL - #define PL0_DDR DDRL - #define PL0_PWM NULL - #undef PL1 - #define PL1_PIN PINL1 - #define PL1_RPORT PINL - #define PL1_WPORT PORTL - #define PL1_DDR DDRL - #define PL1_PWM NULL - #undef PL2 - #define PL2_PIN PINL2 - #define PL2_RPORT PINL - #define PL2_WPORT PORTL - #define PL2_DDR DDRL - #define PL2_PWM NULL - #undef PL3 - #define PL3_PIN PINL3 - #define PL3_RPORT PINL - #define PL3_WPORT PORTL - #define PL3_DDR DDRL - #define PL3_PWM &OCR5AL - #undef PL4 - #define PL4_PIN PINL4 - #define PL4_RPORT PINL - #define PL4_WPORT PORTL - #define PL4_DDR DDRL - #define PL4_PWM &OCR5BL - #undef PL5 - #define PL5_PIN PINL5 - #define PL5_RPORT PINL - #define PL5_WPORT PORTL - #define PL5_DDR DDRL - #define PL5_PWM &OCR5CL - #undef PL6 - #define PL6_PIN PINL6 - #define PL6_RPORT PINL - #define PL6_WPORT PORTL - #define PL6_DDR DDRL - #define PL6_PWM NULL - #undef PL7 - #define PL7_PIN PINL7 - #define PL7_RPORT PINL - #define PL7_WPORT PORTL - #define PL7_DDR DDRL - #define PL7_PWM NULL - -#endif - -#if defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) - - // change for your board - #define DEBUG_LED DIO31 /* led D5 red */ - - /** - pins - */ - - //#define AT90USBxx_TEENSYPP_ASSIGNMENTS // Use Teensy++ 2.0 assignments - #ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // Use traditional Marlin pin assignments - - // SPI - #define SCK DIO9 // 21 - #define MISO DIO11 // 23 - #define MOSI DIO10 // 22 - #define SS DIO8 // 20 - - #define DIO0_PIN PINA0 - #define DIO0_RPORT PINA - #define DIO0_WPORT PORTA - #define DIO0_PWM NULL - #define DIO0_DDR DDRA - - #define DIO1_PIN PINA1 - #define DIO1_RPORT PINA - #define DIO1_WPORT PORTA - #define DIO1_PWM NULL - #define DIO1_DDR DDRA - - #define DIO2_PIN PINA2 - #define DIO2_RPORT PINA - #define DIO2_WPORT PORTA - #define DIO2_PWM NULL - #define DIO2_DDR DDRA - - #define DIO3_PIN PINA3 - #define DIO3_RPORT PINA - #define DIO3_WPORT PORTA - #define DIO3_PWM NULL - #define DIO3_DDR DDRA - - #define DIO4_PIN PINA4 - #define DIO4_RPORT PINA - #define DIO4_WPORT PORTA - #define DIO4_PWM NULL - #define DIO4_DDR DDRA - - #define DIO5_PIN PINA5 - #define DIO5_RPORT PINA - #define DIO5_WPORT PORTA - #define DIO5_PWM NULL - #define DIO5_DDR DDRA - - #define DIO6_PIN PINA6 - #define DIO6_RPORT PINA - #define DIO6_WPORT PORTA - #define DIO6_PWM NULL - #define DIO6_DDR DDRA - - #define DIO7_PIN PINA7 - #define DIO7_RPORT PINA - #define DIO7_WPORT PORTA - #define DIO7_PWM NULL - #define DIO7_DDR DDRA - - #define DIO8_PIN PINB0 - #define DIO8_RPORT PINB - #define DIO8_WPORT PORTB - #define DIO8_PWM NULL - #define DIO8_DDR DDRB - - #define DIO9_PIN PINB1 - #define DIO9_RPORT PINB - #define DIO9_WPORT PORTB - #define DIO9_PWM NULL - #define DIO9_DDR DDRB - - #define DIO10_PIN PINB2 - #define DIO10_RPORT PINB - #define DIO10_WPORT PORTB - #define DIO10_PWM NULL - #define DIO10_DDR DDRB - - #define DIO11_PIN PINB3 - #define DIO11_RPORT PINB - #define DIO11_WPORT PORTB - #define DIO11_PWM NULL - #define DIO11_DDR DDRB - - #define DIO12_PIN PINB4 - #define DIO12_RPORT PINB - #define DIO12_WPORT PORTB - #define DIO12_PWM NULL - #define DIO12_DDR DDRB - - #define DIO13_PIN PINB5 - #define DIO13_RPORT PINB - #define DIO13_WPORT PORTB - #define DIO13_PWM NULL - #define DIO13_DDR DDRB - - #define DIO14_PIN PINB6 - #define DIO14_RPORT PINB - #define DIO14_WPORT PORTB - #define DIO14_PWM NULL - #define DIO14_DDR DDRB - - #define DIO15_PIN PINB7 - #define DIO15_RPORT PINB - #define DIO15_WPORT PORTB - #define DIO15_PWM NULL - #define DIO15_DDR DDRB - - #define DIO16_PIN PINC0 - #define DIO16_RPORT PINC - #define DIO16_WPORT PORTC - #define DIO16_PWM NULL - #define DIO16_DDR DDRC - - #define DIO17_PIN PINC1 - #define DIO17_RPORT PINC - #define DIO17_WPORT PORTC - #define DIO17_PWM NULL - #define DIO17_DDR DDRC - - #define DIO18_PIN PINC2 - #define DIO18_RPORT PINC - #define DIO18_WPORT PORTC - #define DIO18_PWM NULL - #define DIO18_DDR DDRC - - #define DIO19_PIN PINC3 - #define DIO19_RPORT PINC - #define DIO19_WPORT PORTC - #define DIO19_PWM NULL - #define DIO19_DDR DDRC - - #define DIO20_PIN PINC4 - #define DIO20_RPORT PINC - #define DIO20_WPORT PORTC - #define DIO20_PWM NULL - #define DIO20_DDR DDRC - - #define DIO21_PIN PINC5 - #define DIO21_RPORT PINC - #define DIO21_WPORT PORTC - #define DIO21_PWM NULL - #define DIO21_DDR DDRC - - #define DIO22_PIN PINC6 - #define DIO22_RPORT PINC - #define DIO22_WPORT PORTC - #define DIO22_PWM NULL - #define DIO22_DDR DDRC - - #define DIO23_PIN PINC7 - #define DIO23_RPORT PINC - #define DIO23_WPORT PORTC - #define DIO23_PWM NULL - #define DIO23_DDR DDRC - - #define DIO24_PIN PIND0 - #define DIO24_RPORT PIND - #define DIO24_WPORT PORTD - #define DIO24_PWM NULL - #define DIO24_DDR DDRD - - #define DIO25_PIN PIND1 - #define DIO25_RPORT PIND - #define DIO25_WPORT PORTD - #define DIO25_PWM NULL - #define DIO25_DDR DDRD - - #define DIO26_PIN PIND2 - #define DIO26_RPORT PIND - #define DIO26_WPORT PORTD - #define DIO26_PWM NULL - #define DIO26_DDR DDRD - - #define DIO27_PIN PIND3 - #define DIO27_RPORT PIND - #define DIO27_WPORT PORTD - #define DIO27_PWM NULL - #define DIO27_DDR DDRD - - #define DIO28_PIN PIND4 - #define DIO28_RPORT PIND - #define DIO28_WPORT PORTD - #define DIO28_PWM NULL - #define DIO28_DDR DDRD - - #define DIO29_PIN PIND5 - #define DIO29_RPORT PIND - #define DIO29_WPORT PORTD - #define DIO29_PWM NULL - #define DIO29_DDR DDRD - - #define DIO30_PIN PIND6 - #define DIO30_RPORT PIND - #define DIO30_WPORT PORTD - #define DIO30_PWM NULL - #define DIO30_DDR DDRD - - #define DIO31_PIN PIND7 - #define DIO31_RPORT PIND - #define DIO31_WPORT PORTD - #define DIO31_PWM NULL - #define DIO31_DDR DDRD - - - #define DIO32_PIN PINE0 - #define DIO32_RPORT PINE - #define DIO32_WPORT PORTE - #define DIO32_PWM NULL - #define DIO32_DDR DDRE - - #define DIO33_PIN PINE1 - #define DIO33_RPORT PINE - #define DIO33_WPORT PORTE - #define DIO33_PWM NULL - #define DIO33_DDR DDRE - - #define DIO34_PIN PINE2 - #define DIO34_RPORT PINE - #define DIO34_WPORT PORTE - #define DIO34_PWM NULL - #define DIO34_DDR DDRE - - #define DIO35_PIN PINE3 - #define DIO35_RPORT PINE - #define DIO35_WPORT PORTE - #define DIO35_PWM NULL - #define DIO35_DDR DDRE - - #define DIO36_PIN PINE4 - #define DIO36_RPORT PINE - #define DIO36_WPORT PORTE - #define DIO36_PWM NULL - #define DIO36_DDR DDRE - - #define DIO37_PIN PINE5 - #define DIO37_RPORT PINE - #define DIO37_WPORT PORTE - #define DIO37_PWM NULL - #define DIO37_DDR DDRE - - #define DIO38_PIN PINE6 - #define DIO38_RPORT PINE - #define DIO38_WPORT PORTE - #define DIO38_PWM NULL - #define DIO38_DDR DDRE - - #define DIO39_PIN PINE7 - #define DIO39_RPORT PINE - #define DIO39_WPORT PORTE - #define DIO39_PWM NULL - #define DIO39_DDR DDRE - - #define AIO0_PIN PINF0 - #define AIO0_RPORT PINF - #define AIO0_WPORT PORTF - #define AIO0_PWM NULL - #define AIO0_DDR DDRF - - #define AIO1_PIN PINF1 - #define AIO1_RPORT PINF - #define AIO1_WPORT PORTF - #define AIO1_PWM NULL - #define AIO1_DDR DDRF - - #define AIO2_PIN PINF2 - #define AIO2_RPORT PINF - #define AIO2_WPORT PORTF - #define AIO2_PWM NULL - #define AIO2_DDR DDRF - - #define AIO3_PIN PINF3 - #define AIO3_RPORT PINF - #define AIO3_WPORT PORTF - #define AIO3_PWM NULL - #define AIO3_DDR DDRF - - #define AIO4_PIN PINF4 - #define AIO4_RPORT PINF - #define AIO4_WPORT PORTF - #define AIO4_PWM NULL - #define AIO4_DDR DDRF - - #define AIO5_PIN PINF5 - #define AIO5_RPORT PINF - #define AIO5_WPORT PORTF - #define AIO5_PWM NULL - #define AIO5_DDR DDRF - - #define AIO6_PIN PINF6 - #define AIO6_RPORT PINF - #define AIO6_WPORT PORTF - #define AIO6_PWM NULL - #define AIO6_DDR DDRF - - #define AIO7_PIN PINF7 - #define AIO7_RPORT PINF - #define AIO7_WPORT PORTF - #define AIO7_PWM NULL - #define AIO7_DDR DDRF - - #define DIO40_PIN PINF0 - #define DIO40_RPORT PINF - #define DIO40_WPORT PORTF - #define DIO40_PWM NULL - #define DIO40_DDR DDRF - - #define DIO41_PIN PINF1 - #define DIO41_RPORT PINF - #define DIO41_WPORT PORTF - #define DIO41_PWM NULL - #define DIO41_DDR DDRF - - #define DIO42_PIN PINF2 - #define DIO42_RPORT PINF - #define DIO42_WPORT PORTF - #define DIO42_PWM NULL - #define DIO42_DDR DDRF - - #define DIO43_PIN PINF3 - #define DIO43_RPORT PINF - #define DIO43_WPORT PORTF - #define DIO43_PWM NULL - #define DIO43_DDR DDRF - - #define DIO44_PIN PINF4 - #define DIO44_RPORT PINF - #define DIO44_WPORT PORTF - #define DIO44_PWM NULL - #define DIO44_DDR DDRF - - #define DIO45_PIN PINF5 - #define DIO45_RPORT PINF - #define DIO45_WPORT PORTF - #define DIO45_PWM NULL - #define DIO45_DDR DDRF - - #define DIO46_PIN PINF6 - #define DIO46_RPORT PINF - #define DIO46_WPORT PORTF - #define DIO46_PWM NULL - #define DIO46_DDR DDRF - - #define DIO47_PIN PINF7 - #define DIO47_RPORT PINF - #define DIO47_WPORT PORTF - #define DIO47_PWM NULL - #define DIO47_DDR DDRF - - - - #undef PA0 - #define PA0_PIN PINA0 - #define PA0_RPORT PINA - #define PA0_WPORT PORTA - #define PA0_PWM NULL - #define PA0_DDR DDRA - #undef PA1 - #define PA1_PIN PINA1 - #define PA1_RPORT PINA - #define PA1_WPORT PORTA - #define PA1_PWM NULL - #define PA1_DDR DDRA - #undef PA2 - #define PA2_PIN PINA2 - #define PA2_RPORT PINA - #define PA2_WPORT PORTA - #define PA2_PWM NULL - #define PA2_DDR DDRA - #undef PA3 - #define PA3_PIN PINA3 - #define PA3_RPORT PINA - #define PA3_WPORT PORTA - #define PA3_PWM NULL - #define PA3_DDR DDRA - #undef PA4 - #define PA4_PIN PINA4 - #define PA4_RPORT PINA - #define PA4_WPORT PORTA - #define PA4_PWM NULL - #define PA4_DDR DDRA - #undef PA5 - #define PA5_PIN PINA5 - #define PA5_RPORT PINA - #define PA5_WPORT PORTA - #define PA5_PWM NULL - #define PA5_DDR DDRA - #undef PA6 - #define PA6_PIN PINA6 - #define PA6_RPORT PINA - #define PA6_WPORT PORTA - #define PA6_PWM NULL - #define PA6_DDR DDRA - #undef PA7 - #define PA7_PIN PINA7 - #define PA7_RPORT PINA - #define PA7_WPORT PORTA - #define PA7_PWM NULL - #define PA7_DDR DDRA - - #undef PB0 - #define PB0_PIN PINB0 - #define PB0_RPORT PINB - #define PB0_WPORT PORTB - #define PB0_PWM NULL - #define PB0_DDR DDRB - #undef PB1 - #define PB1_PIN PINB1 - #define PB1_RPORT PINB - #define PB1_WPORT PORTB - #define PB1_PWM NULL - #define PB1_DDR DDRB - #undef PB2 - #define PB2_PIN PINB2 - #define PB2_RPORT PINB - #define PB2_WPORT PORTB - #define PB2_PWM NULL - #define PB2_DDR DDRB - #undef PB3 - #define PB3_PIN PINB3 - #define PB3_RPORT PINB - #define PB3_WPORT PORTB - #define PB3_PWM NULL - #define PB3_DDR DDRB - #undef PB4 - #define PB4_PIN PINB4 - #define PB4_RPORT PINB - #define PB4_WPORT PORTB - #define PB4_PWM NULL - #define PB4_DDR DDRB - #undef PB5 - #define PB5_PIN PINB5 - #define PB5_RPORT PINB - #define PB5_WPORT PORTB - #define PB5_PWM NULL - #define PB5_DDR DDRB - #undef PB6 - #define PB6_PIN PINB6 - #define PB6_RPORT PINB - #define PB6_WPORT PORTB - #define PB6_PWM NULL - #define PB6_DDR DDRB - #undef PB7 - #define PB7_PIN PINB7 - #define PB7_RPORT PINB - #define PB7_WPORT PORTB - #define PB7_PWM NULL - #define PB7_DDR DDRB - - #undef PC0 - #define PC0_PIN PINC0 - #define PC0_RPORT PINC - #define PC0_WPORT PORTC - #define PC0_PWM NULL - #define PC0_DDR DDRC - #undef PC1 - #define PC1_PIN PINC1 - #define PC1_RPORT PINC - #define PC1_WPORT PORTC - #define PC1_PWM NULL - #define PC1_DDR DDRC - #undef PC2 - #define PC2_PIN PINC2 - #define PC2_RPORT PINC - #define PC2_WPORT PORTC - #define PC2_PWM NULL - #define PC2_DDR DDRC - #undef PC3 - #define PC3_PIN PINC3 - #define PC3_RPORT PINC - #define PC3_WPORT PORTC - #define PC3_PWM NULL - #define PC3_DDR DDRC - #undef PC4 - #define PC4_PIN PINC4 - #define PC4_RPORT PINC - #define PC4_WPORT PORTC - #define PC4_PWM NULL - #define PC4_DDR DDRC - #undef PC5 - #define PC5_PIN PINC5 - #define PC5_RPORT PINC - #define PC5_WPORT PORTC - #define PC5_PWM NULL - #define PC5_DDR DDRC - #undef PC6 - #define PC6_PIN PINC6 - #define PC6_RPORT PINC - #define PC6_WPORT PORTC - #define PC6_PWM NULL - #define PC6_DDR DDRC - #undef PC7 - #define PC7_PIN PINC7 - #define PC7_RPORT PINC - #define PC7_WPORT PORTC - #define PC7_PWM NULL - #define PC7_DDR DDRC - - #undef PD0 - #define PD0_PIN PIND0 - #define PD0_RPORT PIND - #define PD0_WPORT PORTD - #define PD0_PWM NULL - #define PD0_DDR DDRD - #undef PD1 - #define PD1_PIN PIND1 - #define PD1_RPORT PIND - #define PD1_WPORT PORTD - #define PD1_PWM NULL - #define PD1_DDR DDRD - #undef PD2 - #define PD2_PIN PIND2 - #define PD2_RPORT PIND - #define PD2_WPORT PORTD - #define PD2_PWM NULL - #define PD2_DDR DDRD - #undef PD3 - #define PD3_PIN PIND3 - #define PD3_RPORT PIND - #define PD3_WPORT PORTD - #define PD3_PWM NULL - #define PD3_DDR DDRD - #undef PD4 - #define PD4_PIN PIND4 - #define PD4_RPORT PIND - #define PD4_WPORT PORTD - #define PD4_PWM NULL - #define PD4_DDR DDRD - #undef PD5 - #define PD5_PIN PIND5 - #define PD5_RPORT PIND - #define PD5_WPORT PORTD - #define PD5_PWM NULL - #define PD5_DDR DDRD - #undef PD6 - #define PD6_PIN PIND6 - #define PD6_RPORT PIND - #define PD6_WPORT PORTD - #define PD6_PWM NULL - #define PD6_DDR DDRD - #undef PD7 - #define PD7_PIN PIND7 - #define PD7_RPORT PIND - #define PD7_WPORT PORTD - #define PD7_PWM NULL - #define PD7_DDR DDRD - - #undef PE0 - #define PE0_PIN PINE0 - #define PE0_RPORT PINE - #define PE0_WPORT PORTE - #define PE0_PWM NULL - #define PE0_DDR DDRE - #undef PE1 - #define PE1_PIN PINE1 - #define PE1_RPORT PINE - #define PE1_WPORT PORTE - #define PE1_PWM NULL - #define PE1_DDR DDRE - #undef PE2 - #define PE2_PIN PINE2 - #define PE2_RPORT PINE - #define PE2_WPORT PORTE - #define PE2_PWM NULL - #define PE2_DDR DDRE - #undef PE3 - #define PE3_PIN PINE3 - #define PE3_RPORT PINE - #define PE3_WPORT PORTE - #define PE3_PWM NULL - #define PE3_DDR DDRE - #undef PE4 - #define PE4_PIN PINE4 - #define PE4_RPORT PINE - #define PE4_WPORT PORTE - #define PE4_PWM NULL - #define PE4_DDR DDRE - #undef PE5 - #define PE5_PIN PINE5 - #define PE5_RPORT PINE - #define PE5_WPORT PORTE - #define PE5_PWM NULL - #define PE5_DDR DDRE - #undef PE6 - #define PE6_PIN PINE6 - #define PE6_RPORT PINE - #define PE6_WPORT PORTE - #define PE6_PWM NULL - #define PE6_DDR DDRE - #undef PE7 - #define PE7_PIN PINE7 - #define PE7_RPORT PINE - #define PE7_WPORT PORTE - #define PE7_PWM NULL - #define PE7_DDR DDRE - - #undef PF0 - #define PF0_PIN PINF0 - #define PF0_RPORT PINF - #define PF0_WPORT PORTF - #define PF0_PWM NULL - #define PF0_DDR DDRF - #undef PF1 - #define PF1_PIN PINF1 - #define PF1_RPORT PINF - #define PF1_WPORT PORTF - #define PF1_PWM NULL - #define PF1_DDR DDRF - #undef PF2 - #define PF2_PIN PINF2 - #define PF2_RPORT PINF - #define PF2_WPORT PORTF - #define PF2_PWM NULL - #define PF2_DDR DDRF - #undef PF3 - #define PF3_PIN PINF3 - #define PF3_RPORT PINF - #define PF3_WPORT PORTF - #define PF3_PWM NULL - #define PF3_DDR DDRF - #undef PF4 - #define PF4_PIN PINF4 - #define PF4_RPORT PINF - #define PF4_WPORT PORTF - #define PF4_PWM NULL - #define PF4_DDR DDRF - #undef PF5 - #define PF5_PIN PINF5 - #define PF5_RPORT PINF - #define PF5_WPORT PORTF - #define PF5_PWM NULL - #define PF5_DDR DDRF - #undef PF6 - #define PF6_PIN PINF6 - #define PF6_RPORT PINF - #define PF6_WPORT PORTF - #define PF6_PWM NULL - #define PF6_DDR DDRF - #undef PF7 - #define PF7_PIN PINF7 - #define PF7_RPORT PINF - #define PF7_WPORT PORTF - #define PF7_PWM NULL - #define PF7_DDR DDRF - - #else // AT90USBxx_TEENSYPP_ASSIGNMENTS -- Use Teensyduino Teensy++2.0 assignments. - - /** - - AT90USB 51 50 49 48 47 46 45 44 10 11 12 13 14 15 16 17 35 36 37 38 39 40 41 42 25 26 27 28 29 30 31 32 33 34 43 09 18 19 01 02 61 60 59 58 57 56 55 54 - Port A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7 - Marlin 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 - Teensy 28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45 - The pins 46 and 47 are not supported by Teensyduino, but are supported below. - */ - - // SPI - #define SCK DIO21 // 9 - #define MISO DIO23 // 11 - #define MOSI DIO22 // 10 - #define SS DIO20 // 8 - - #define DIO0_PIN PIND0 - #define DIO0_RPORT PIND - #define DIO0_WPORT PORTD - #define DIO0_PWM NULL - #define DIO0_DDR DDRD - - #define DIO1_PIN PIND1 - #define DIO1_RPORT PIND - #define DIO1_WPORT PORTD - #define DIO1_PWM NULL - #define DIO1_DDR DDRD - - #define DIO2_PIN PIND2 - #define DIO2_RPORT PIND - #define DIO2_WPORT PORTD - #define DIO2_PWM NULL - #define DIO2_DDR DDRD - - #define DIO3_PIN PIND3 - #define DIO3_RPORT PIND - #define DIO3_WPORT PORTD - #define DIO3_PWM NULL - #define DIO3_DDR DDRD - - #define DIO4_PIN PIND4 - #define DIO4_RPORT PIND - #define DIO4_WPORT PORTD - #define DIO4_PWM NULL - #define DIO4_DDR DDRD - - #define DIO5_PIN PIND5 - #define DIO5_RPORT PIND - #define DIO5_WPORT PORTD - #define DIO5_PWM NULL - #define DIO5_DDR DDRD - - #define DIO6_PIN PIND6 - #define DIO6_RPORT PIND - #define DIO6_WPORT PORTD - #define DIO6_PWM NULL - #define DIO6_DDR DDRD - - #define DIO7_PIN PIND7 - #define DIO7_RPORT PIND - #define DIO7_WPORT PORTD - #define DIO7_PWM NULL - #define DIO7_DDR DDRD - - #define DIO8_PIN PINE0 - #define DIO8_RPORT PINE - #define DIO8_WPORT PORTE - #define DIO8_PWM NULL - #define DIO8_DDR DDRE - - #define DIO9_PIN PINE1 - #define DIO9_RPORT PINE - #define DIO9_WPORT PORTE - #define DIO9_PWM NULL - #define DIO9_DDR DDRE - - #define DIO10_PIN PINC0 - #define DIO10_RPORT PINC - #define DIO10_WPORT PORTC - #define DIO10_PWM NULL - #define DIO10_DDR DDRC - - #define DIO11_PIN PINC1 - #define DIO11_RPORT PINC - #define DIO11_WPORT PORTC - #define DIO11_PWM NULL - #define DIO11_DDR DDRC - - #define DIO12_PIN PINC2 - #define DIO12_RPORT PINC - #define DIO12_WPORT PORTC - #define DIO12_PWM NULL - #define DIO12_DDR DDRC - - #define DIO13_PIN PINC3 - #define DIO13_RPORT PINC - #define DIO13_WPORT PORTC - #define DIO13_PWM NULL - #define DIO13_DDR DDRC - - #define DIO14_PIN PINC4 - #define DIO14_RPORT PINC - #define DIO14_WPORT PORTC - #define DIO14_PWM NULL - #define DIO14_DDR DDRC - - #define DIO15_PIN PINC5 - #define DIO15_RPORT PINC - #define DIO15_WPORT PORTC - #define DIO15_PWM NULL - #define DIO15_DDR DDRC - - #define DIO16_PIN PINC6 - #define DIO16_RPORT PINC - #define DIO16_WPORT PORTC - #define DIO16_PWM NULL - #define DIO16_DDR DDRC - - #define DIO17_PIN PINC7 - #define DIO17_RPORT PINC - #define DIO17_WPORT PORTC - #define DIO17_PWM NULL - #define DIO17_DDR DDRC - - #define DIO18_PIN PINE6 - #define DIO18_RPORT PINE - #define DIO18_WPORT PORTE - #define DIO18_PWM NULL - #define DIO18_DDR DDRE - - #define DIO19_PIN PINE7 - #define DIO19_RPORT PINE - #define DIO19_WPORT PORTE - #define DIO19_PWM NULL - #define DIO19_DDR DDRE - - #define DIO20_PIN PINB0 - #define DIO20_RPORT PINB - #define DIO20_WPORT PORTB - #define DIO20_PWM NULL - #define DIO20_DDR DDRB - - #define DIO21_PIN PINB1 - #define DIO21_RPORT PINB - #define DIO21_WPORT PORTB - #define DIO21_PWM NULL - #define DIO21_DDR DDRB - - #define DIO22_PIN PINB2 - #define DIO22_RPORT PINB - #define DIO22_WPORT PORTB - #define DIO22_PWM NULL - #define DIO22_DDR DDRB - - #define DIO23_PIN PINB3 - #define DIO23_RPORT PINB - #define DIO23_WPORT PORTB - #define DIO23_PWM NULL - #define DIO23_DDR DDRB - - #define DIO24_PIN PINB4 - #define DIO24_RPORT PINB - #define DIO24_WPORT PORTB - #define DIO24_PWM NULL - #define DIO24_DDR DDRB - - #define DIO25_PIN PINB5 - #define DIO25_RPORT PINB - #define DIO25_WPORT PORTB - #define DIO25_PWM NULL - #define DIO25_DDR DDRB - - #define DIO26_PIN PINB6 - #define DIO26_RPORT PINB - #define DIO26_WPORT PORTB - #define DIO26_PWM NULL - #define DIO26_DDR DDRB - - #define DIO27_PIN PINB7 - #define DIO27_RPORT PINB - #define DIO27_WPORT PORTB - #define DIO27_PWM NULL - #define DIO27_DDR DDRB - - #define DIO28_PIN PINA0 - #define DIO28_RPORT PINA - #define DIO28_WPORT PORTA - #define DIO28_PWM NULL - #define DIO28_DDR DDRA - - #define DIO29_PIN PINA1 - #define DIO29_RPORT PINA - #define DIO29_WPORT PORTA - #define DIO29_PWM NULL - #define DIO29_DDR DDRA - - #define DIO30_PIN PINA2 - #define DIO30_RPORT PINA - #define DIO30_WPORT PORTA - #define DIO30_PWM NULL - #define DIO30_DDR DDRA - - #define DIO31_PIN PINA3 - #define DIO31_RPORT PINA - #define DIO31_WPORT PORTA - #define DIO31_PWM NULL - #define DIO31_DDR DDRA - - #define DIO32_PIN PINA4 - #define DIO32_RPORT PINA - #define DIO32_WPORT PORTA - #define DIO32_PWM NULL - #define DIO32_DDR DDRA - - #define DIO33_PIN PINA5 - #define DIO33_RPORT PINA - #define DIO33_WPORT PORTA - #define DIO33_PWM NULL - #define DIO33_DDR DDRA - - #define DIO34_PIN PINA6 - #define DIO34_RPORT PINA - #define DIO34_WPORT PORTA - #define DIO34_PWM NULL - #define DIO34_DDR DDRA - - #define DIO35_PIN PINA7 - #define DIO35_RPORT PINA - #define DIO35_WPORT PORTA - #define DIO35_PWM NULL - #define DIO35_DDR DDRA - - #define DIO36_PIN PINE4 - #define DIO36_RPORT PINE - #define DIO36_WPORT PORTE - #define DIO36_PWM NULL - #define DIO36_DDR DDRE - - #define DIO37_PIN PINE5 - #define DIO37_RPORT PINE - #define DIO37_WPORT PORTE - #define DIO37_PWM NULL - #define DIO37_DDR DDRE - - #define DIO38_PIN PINF0 - #define DIO38_RPORT PINF - #define DIO38_WPORT PORTF - #define DIO38_PWM NULL - #define DIO38_DDR DDRF - - #define DIO39_PIN PINF1 - #define DIO39_RPORT PINF - #define DIO39_WPORT PORTF - #define DIO39_PWM NULL - #define DIO39_DDR DDRF - - #define DIO40_PIN PINF2 - #define DIO40_RPORT PINF - #define DIO40_WPORT PORTF - #define DIO40_PWM NULL - #define DIO40_DDR DDRF - - #define DIO41_PIN PINF3 - #define DIO41_RPORT PINF - #define DIO41_WPORT PORTF - #define DIO41_PWM NULL - #define DIO41_DDR DDRF - - #define DIO42_PIN PINF4 - #define DIO42_RPORT PINF - #define DIO42_WPORT PORTF - #define DIO42_PWM NULL - #define DIO42_DDR DDRF - - #define DIO43_PIN PINF5 - #define DIO43_RPORT PINF - #define DIO43_WPORT PORTF - #define DIO43_PWM NULL - #define DIO43_DDR DDRF - - #define DIO44_PIN PINF6 - #define DIO44_RPORT PINF - #define DIO44_WPORT PORTF - #define DIO44_PWM NULL - #define DIO44_DDR DDRF - - #define DIO45_PIN PINF7 - #define DIO45_RPORT PINF - #define DIO45_WPORT PORTF - #define DIO45_PWM NULL - #define DIO45_DDR DDRF - - #define AIO0_PIN PINF0 - #define AIO0_RPORT PINF - #define AIO0_WPORT PORTF - #define AIO0_PWM NULL - #define AIO0_DDR DDRF - - #define AIO1_PIN PINF1 - #define AIO1_RPORT PINF - #define AIO1_WPORT PORTF - #define AIO1_PWM NULL - #define AIO1_DDR DDRF - - #define AIO2_PIN PINF2 - #define AIO2_RPORT PINF - #define AIO2_WPORT PORTF - #define AIO2_PWM NULL - #define AIO2_DDR DDRF - - #define AIO3_PIN PINF3 - #define AIO3_RPORT PINF - #define AIO3_WPORT PORTF - #define AIO3_PWM NULL - #define AIO3_DDR DDRF - - #define AIO4_PIN PINF4 - #define AIO4_RPORT PINF - #define AIO4_WPORT PORTF - #define AIO4_PWM NULL - #define AIO4_DDR DDRF - - #define AIO5_PIN PINF5 - #define AIO5_RPORT PINF - #define AIO5_WPORT PORTF - #define AIO5_PWM NULL - #define AIO5_DDR DDRF - - #define AIO6_PIN PINF6 - #define AIO6_RPORT PINF - #define AIO6_WPORT PORTF - #define AIO6_PWM NULL - #define AIO6_DDR DDRF - - #define AIO7_PIN PINF7 - #define AIO7_RPORT PINF - #define AIO7_WPORT PORTF - #define AIO7_PWM NULL - #define AIO7_DDR DDRF - - //-- Begin not supported by Teensyduino - //-- don't use Arduino functions on these pins pinMode/digitalWrite/etc - #define DIO46_PIN PINE2 - #define DIO46_RPORT PINE - #define DIO46_WPORT PORTE - #define DIO46_PWM NULL - #define DIO46_DDR DDRE - - #define DIO47_PIN PINE3 - #define DIO47_RPORT PINE - #define DIO47_WPORT PORTE - #define DIO47_PWM NULL - #define DIO47_DDR DDRE - //-- end not supported by Teensyduino - - #undef PA0 - #define PA0_PIN PINA0 - #define PA0_RPORT PINA - #define PA0_WPORT PORTA - #define PA0_PWM NULL - #define PA0_DDR DDRA - #undef PA1 - #define PA1_PIN PINA1 - #define PA1_RPORT PINA - #define PA1_WPORT PORTA - #define PA1_PWM NULL - #define PA1_DDR DDRA - #undef PA2 - #define PA2_PIN PINA2 - #define PA2_RPORT PINA - #define PA2_WPORT PORTA - #define PA2_PWM NULL - #define PA2_DDR DDRA - #undef PA3 - #define PA3_PIN PINA3 - #define PA3_RPORT PINA - #define PA3_WPORT PORTA - #define PA3_PWM NULL - #define PA3_DDR DDRA - #undef PA4 - #define PA4_PIN PINA4 - #define PA4_RPORT PINA - #define PA4_WPORT PORTA - #define PA4_PWM NULL - #define PA4_DDR DDRA - #undef PA5 - #define PA5_PIN PINA5 - #define PA5_RPORT PINA - #define PA5_WPORT PORTA - #define PA5_PWM NULL - #define PA5_DDR DDRA - #undef PA6 - #define PA6_PIN PINA6 - #define PA6_RPORT PINA - #define PA6_WPORT PORTA - #define PA6_PWM NULL - #define PA6_DDR DDRA - #undef PA7 - #define PA7_PIN PINA7 - #define PA7_RPORT PINA - #define PA7_WPORT PORTA - #define PA7_PWM NULL - #define PA7_DDR DDRA - - #undef PB0 - #define PB0_PIN PINB0 - #define PB0_RPORT PINB - #define PB0_WPORT PORTB - #define PB0_PWM NULL - #define PB0_DDR DDRB - #undef PB1 - #define PB1_PIN PINB1 - #define PB1_RPORT PINB - #define PB1_WPORT PORTB - #define PB1_PWM NULL - #define PB1_DDR DDRB - #undef PB2 - #define PB2_PIN PINB2 - #define PB2_RPORT PINB - #define PB2_WPORT PORTB - #define PB2_PWM NULL - #define PB2_DDR DDRB - #undef PB3 - #define PB3_PIN PINB3 - #define PB3_RPORT PINB - #define PB3_WPORT PORTB - #define PB3_PWM NULL - #define PB3_DDR DDRB - #undef PB4 - #define PB4_PIN PINB4 - #define PB4_RPORT PINB - #define PB4_WPORT PORTB - #define PB4_PWM NULL - #define PB4_DDR DDRB - #undef PB5 - #define PB5_PIN PINB5 - #define PB5_RPORT PINB - #define PB5_WPORT PORTB - #define PB5_PWM NULL - #define PB5_DDR DDRB - #undef PB6 - #define PB6_PIN PINB6 - #define PB6_RPORT PINB - #define PB6_WPORT PORTB - #define PB6_PWM NULL - #define PB6_DDR DDRB - #undef PB7 - #define PB7_PIN PINB7 - #define PB7_RPORT PINB - #define PB7_WPORT PORTB - #define PB7_PWM NULL - #define PB7_DDR DDRB - - #undef PC0 - #define PC0_PIN PINC0 - #define PC0_RPORT PINC - #define PC0_WPORT PORTC - #define PC0_PWM NULL - #define PC0_DDR DDRC - #undef PC1 - #define PC1_PIN PINC1 - #define PC1_RPORT PINC - #define PC1_WPORT PORTC - #define PC1_PWM NULL - #define PC1_DDR DDRC - #undef PC2 - #define PC2_PIN PINC2 - #define PC2_RPORT PINC - #define PC2_WPORT PORTC - #define PC2_PWM NULL - #define PC2_DDR DDRC - #undef PC3 - #define PC3_PIN PINC3 - #define PC3_RPORT PINC - #define PC3_WPORT PORTC - #define PC3_PWM NULL - #define PC3_DDR DDRC - #undef PC4 - #define PC4_PIN PINC4 - #define PC4_RPORT PINC - #define PC4_WPORT PORTC - #define PC4_PWM NULL - #define PC4_DDR DDRC - #undef PC5 - #define PC5_PIN PINC5 - #define PC5_RPORT PINC - #define PC5_WPORT PORTC - #define PC5_PWM NULL - #define PC5_DDR DDRC - #undef PC6 - #define PC6_PIN PINC6 - #define PC6_RPORT PINC - #define PC6_WPORT PORTC - #define PC6_PWM NULL - #define PC6_DDR DDRC - #undef PC7 - #define PC7_PIN PINC7 - #define PC7_RPORT PINC - #define PC7_WPORT PORTC - #define PC7_PWM NULL - #define PC7_DDR DDRC - - #undef PD0 - #define PD0_PIN PIND0 - #define PD0_RPORT PIND - #define PD0_WPORT PORTD - #define PD0_PWM NULL - #define PD0_DDR DDRD - #undef PD1 - #define PD1_PIN PIND1 - #define PD1_RPORT PIND - #define PD1_WPORT PORTD - #define PD1_PWM NULL - #define PD1_DDR DDRD - #undef PD2 - #define PD2_PIN PIND2 - #define PD2_RPORT PIND - #define PD2_WPORT PORTD - #define PD2_PWM NULL - #define PD2_DDR DDRD - #undef PD3 - #define PD3_PIN PIND3 - #define PD3_RPORT PIND - #define PD3_WPORT PORTD - #define PD3_PWM NULL - #define PD3_DDR DDRD - #undef PD4 - #define PD4_PIN PIND4 - #define PD4_RPORT PIND - #define PD4_WPORT PORTD - #define PD4_PWM NULL - #define PD4_DDR DDRD - #undef PD5 - #define PD5_PIN PIND5 - #define PD5_RPORT PIND - #define PD5_WPORT PORTD - #define PD5_PWM NULL - #define PD5_DDR DDRD - #undef PD6 - #define PD6_PIN PIND6 - #define PD6_RPORT PIND - #define PD6_WPORT PORTD - #define PD6_PWM NULL - #define PD6_DDR DDRD - #undef PD7 - #define PD7_PIN PIND7 - #define PD7_RPORT PIND - #define PD7_WPORT PORTD - #define PD7_PWM NULL - #define PD7_DDR DDRD - - #undef PE0 - #define PE0_PIN PINE0 - #define PE0_RPORT PINE - #define PE0_WPORT PORTE - #define PE0_PWM NULL - #define PE0_DDR DDRE - #undef PE1 - #define PE1_PIN PINE1 - #define PE1_RPORT PINE - #define PE1_WPORT PORTE - #define PE1_PWM NULL - #define PE1_DDR DDRE - #undef PE2 - #define PE2_PIN PINE2 - #define PE2_RPORT PINE - #define PE2_WPORT PORTE - #define PE2_PWM NULL - #define PE2_DDR DDRE - #undef PE3 - #define PE3_PIN PINE3 - #define PE3_RPORT PINE - #define PE3_WPORT PORTE - #define PE3_PWM NULL - #define PE3_DDR DDRE - #undef PE4 - #define PE4_PIN PINE4 - #define PE4_RPORT PINE - #define PE4_WPORT PORTE - #define PE4_PWM NULL - #define PE4_DDR DDRE - #undef PE5 - #define PE5_PIN PINE5 - #define PE5_RPORT PINE - #define PE5_WPORT PORTE - #define PE5_PWM NULL - #define PE5_DDR DDRE - #undef PE6 - #define PE6_PIN PINE6 - #define PE6_RPORT PINE - #define PE6_WPORT PORTE - #define PE6_PWM NULL - #define PE6_DDR DDRE - #undef PE7 - #define PE7_PIN PINE7 - #define PE7_RPORT PINE - #define PE7_WPORT PORTE - #define PE7_PWM NULL - #define PE7_DDR DDRE - - #undef PF0 - #define PF0_PIN PINF0 - #define PF0_RPORT PINF - #define PF0_WPORT PORTF - #define PF0_PWM NULL - #define PF0_DDR DDRF - #undef PF1 - #define PF1_PIN PINF1 - #define PF1_RPORT PINF - #define PF1_WPORT PORTF - #define PF1_PWM NULL - #define PF1_DDR DDRF - #undef PF2 - #define PF2_PIN PINF2 - #define PF2_RPORT PINF - #define PF2_WPORT PORTF - #define PF2_PWM NULL - #define PF2_DDR DDRF - #undef PF3 - #define PF3_PIN PINF3 - #define PF3_RPORT PINF - #define PF3_WPORT PORTF - #define PF3_PWM NULL - #define PF3_DDR DDRF - #undef PF4 - #define PF4_PIN PINF4 - #define PF4_RPORT PINF - #define PF4_WPORT PORTF - #define PF4_PWM NULL - #define PF4_DDR DDRF - #undef PF5 - #define PF5_PIN PINF5 - #define PF5_RPORT PINF - #define PF5_WPORT PORTF - #define PF5_PWM NULL - #define PF5_DDR DDRF - #undef PF6 - #define PF6_PIN PINF6 - #define PF6_RPORT PINF - #define PF6_WPORT PORTF - #define PF6_PWM NULL - #define PF6_DDR DDRF - #undef PF7 - #define PF7_PIN PINF7 - #define PF7_RPORT PINF - #define PF7_WPORT PORTF - #define PF7_PWM NULL - #define PF7_DDR DDRF - - #endif // AT90USBxx_TEENSYPP_ASSIGNMENTS Teensyduino assignments -#endif // __AVR_AT90usbxxx__ - - -#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) - // UART - #define RXD DIO0 - #define TXD DIO1 - - // SPI - #define SCK DIO10 - #define MISO DIO12 - #define MOSI DIO11 - #define SS DIO16 - - // TWI (I2C) - #define SCL DIO17 - #define SDA DIO18 - - // timers and PWM - #define OC0A DIO9 - #define OC0B DIO4 - #define OC1A DIO7 - #define OC1B DIO8 - #define OC2A DIO6 - #define OC3A DIO5 - #define OC3B DIO2 - #define OC3C DIO3 - - - // change for your board - #define DEBUG_LED DIO46 - - /** - pins - */ - #define DIO0_PIN PINE0 - #define DIO0_RPORT PINE - #define DIO0_WPORT PORTE - #define DIO0_DDR DDRE - #define DIO0_PWM NULL - - #define DIO1_PIN PINE1 - #define DIO1_RPORT PINE - #define DIO1_WPORT PORTE - #define DIO1_DDR DDRE - #define DIO1_PWM NULL - - #define DIO2_PIN PINE4 - #define DIO2_RPORT PINE - #define DIO2_WPORT PORTE - #define DIO2_DDR DDRE - #define DIO2_PWM &OCR3BL - - #define DIO3_PIN PINE5 - #define DIO3_RPORT PINE - #define DIO3_WPORT PORTE - #define DIO3_DDR DDRE - #define DIO3_PWM &OCR3CL - - #define DIO4_PIN PING5 - #define DIO4_RPORT PING - #define DIO4_WPORT PORTG - #define DIO4_DDR DDRG - #define DIO4_PWM &OCR0B - - #define DIO5_PIN PINE3 - #define DIO5_RPORT PINE - #define DIO5_WPORT PORTE - #define DIO5_DDR DDRE - #define DIO5_PWM &OCR3AL - - #define DIO6_PIN PINB4 - #define DIO6_RPORT PINB - #define DIO6_WPORT PORTB - #define DIO6_DDR DDRB - #define DIO6_PWM &OCR2AL - - #define DIO7_PIN PINB5 - #define DIO7_RPORT PINB - #define DIO7_WPORT PORTB - #define DIO7_DDR DDRB - #define DIO7_PWM &OCR1AL - - #define DIO8_PIN PINB6 - #define DIO8_RPORT PINB - #define DIO8_WPORT PORTB - #define DIO8_DDR DDRB - #define DIO8_PWM &OCR1BL - - #define DIO9_PIN PINB7 - #define DIO9_RPORT PINB - #define DIO9_WPORT PORTB - #define DIO9_DDR DDRB - #define DIO9_PWM &OCR0AL - - #define DIO10_PIN PINB1 - #define DIO10_RPORT PINB - #define DIO10_WPORT PORTB - #define DIO10_DDR DDRB - #define DIO10_PWM NULL - - #define DIO11_PIN PINB2 - #define DIO11_RPORT PINB - #define DIO11_WPORT PORTB - #define DIO11_DDR DDRB - #define DIO11_PWM NULL - - #define DIO12_PIN PINB3 - #define DIO12_RPORT PINB - #define DIO12_WPORT PORTB - #define DIO12_DDR DDRB - #define DIO12_PWM NULL - - #define DIO13_PIN PINE2 - #define DIO13_RPORT PINE - #define DIO13_WPORT PORTE - #define DIO13_DDR DDRE - #define DIO13_PWM NULL - - #define DIO14_PIN PINE6 - #define DIO14_RPORT PINE - #define DIO14_WPORT PORTE - #define DIO14_DDR DDRE - #define DIO14_PWM NULL - - #define DIO15_PIN PINE7 - #define DIO15_RPORT PINE - #define DIO15_WPORT PORTE - #define DIO15_DDR DDRE - #define DIO15_PWM NULL - - #define DIO16_PIN PINB0 - #define DIO16_RPORT PINB - #define DIO16_WPORT PORTB - #define DIO16_DDR DDRB - #define DIO16_PWM NULL - - #define DIO17_PIN PIND0 - #define DIO17_RPORT PIND - #define DIO17_WPORT PORTD - #define DIO17_DDR DDRD - #define DIO17_PWM NULL - - #define DIO18_PIN PIND1 - #define DIO18_RPORT PIND - #define DIO18_WPORT PORTD - #define DIO18_DDR DDRD - #define DIO18_PWM NULL - - #define DIO19_PIN PIND2 - #define DIO19_RPORT PIND - #define DIO19_WPORT PORTD - #define DIO19_DDR DDRD - #define DIO19_PWM NULL - - #define DIO20_PIN PIND3 - #define DIO20_RPORT PIND - #define DIO20_WPORT PORTD - #define DIO20_DDR DDRD - #define DIO20_PWM NULL - - #define DIO21_PIN PIND4 - #define DIO21_RPORT PIND - #define DIO21_WPORT PORTD - #define DIO21_DDR DDRD - #define DIO21_PWM NULL - - #define DIO22_PIN PIND5 - #define DIO22_RPORT PIND - #define DIO22_WPORT PORTD - #define DIO22_DDR DDRD - #define DIO22_PWM NULL - - #define DIO23_PIN PIND6 - #define DIO23_RPORT PIND - #define DIO23_WPORT PORTD - #define DIO23_DDR DDRD - #define DIO23_PWM NULL - - #define DIO24_PIN PIND7 - #define DIO24_RPORT PIND - #define DIO24_WPORT PORTD - #define DIO24_DDR DDRD - #define DIO24_PWM NULL - - #define DIO25_PIN PING0 - #define DIO25_RPORT PING - #define DIO25_WPORT PORTG - #define DIO25_DDR DDRG - #define DIO25_PWM NULL - - #define DIO26_PIN PING1 - #define DIO26_RPORT PING - #define DIO26_WPORT PORTG - #define DIO26_DDR DDRG - #define DIO26_PWM NULL - - #define DIO27_PIN PING2 - #define DIO27_RPORT PING - #define DIO27_WPORT PORTG - #define DIO27_DDR DDRG - #define DIO27_PWM NULL - - #define DIO28_PIN PING3 - #define DIO28_RPORT PING - #define DIO28_WPORT PORTG - #define DIO28_DDR DDRG - #define DIO28_PWM NULL - - #define DIO29_PIN PING4 - #define DIO29_RPORT PING - #define DIO29_WPORT PORTG - #define DIO29_DDR DDRG - #define DIO29_PWM NULL - - #define DIO30_PIN PINC0 - #define DIO30_RPORT PINC - #define DIO30_WPORT PORTC - #define DIO30_DDR DDRC - #define DIO30_PWM NULL - - #define DIO31_PIN PINC1 - #define DIO31_RPORT PINC - #define DIO31_WPORT PORTC - #define DIO31_DDR DDRC - #define DIO31_PWM NULL - - #define DIO32_PIN PINC2 - #define DIO32_RPORT PINC - #define DIO32_WPORT PORTC - #define DIO32_DDR DDRC - #define DIO32_PWM NULL - - #define DIO33_PIN PINC3 - #define DIO33_RPORT PINC - #define DIO33_WPORT PORTC - #define DIO33_DDR DDRC - #define DIO33_PWM NULL - - #define DIO34_PIN PINC4 - #define DIO34_RPORT PINC - #define DIO34_WPORT PORTC - #define DIO34_DDR DDRC - #define DIO34_PWM NULL - - #define DIO35_PIN PINC5 - #define DIO35_RPORT PINC - #define DIO35_WPORT PORTC - #define DIO35_DDR DDRC - #define DIO35_PWM NULL - - #define DIO36_PIN PINC6 - #define DIO36_RPORT PINC - #define DIO36_WPORT PORTC - #define DIO36_DDR DDRC - #define DIO36_PWM NULL - - #define DIO37_PIN PINC7 - #define DIO37_RPORT PINC - #define DIO37_WPORT PORTC - #define DIO37_DDR DDRC - #define DIO37_PWM NULL - - #define DIO38_PIN PINA0 - #define DIO38_RPORT PINA - #define DIO38_WPORT PORTA - #define DIO38_DDR DDRA - #define DIO38_PWM NULL - - #define DIO39_PIN PINA1 - #define DIO39_RPORT PINA - #define DIO39_WPORT PORTA - #define DIO39_DDR DDRA - #define DIO39_PWM NULL - - #define DIO40_PIN PINA2 - #define DIO40_RPORT PINA - #define DIO40_WPORT PORTA - #define DIO40_DDR DDRA - #define DIO40_PWM NULL - - #define DIO41_PIN PINA3 - #define DIO41_RPORT PINA - #define DIO41_WPORT PORTA - #define DIO41_DDR DDRA - #define DIO41_PWM NULL - - #define DIO42_PIN PINA4 - #define DIO42_RPORT PINA - #define DIO42_WPORT PORTA - #define DIO42_DDR DDRA - #define DIO42_PWM NULL - - #define DIO43_PIN PINA5 - #define DIO43_RPORT PINA - #define DIO43_WPORT PORTA - #define DIO43_DDR DDRA - #define DIO43_PWM NULL - - #define DIO44_PIN PINA6 - #define DIO44_RPORT PINA - #define DIO44_WPORT PORTA - #define DIO44_DDR DDRA - #define DIO44_PWM NULL - - #define DIO45_PIN PINA7 - #define DIO45_RPORT PINA - #define DIO45_WPORT PORTA - #define DIO45_DDR DDRA - #define DIO45_PWM NULL - - #define DIO46_PIN PINF0 - #define DIO46_RPORT PINF - #define DIO46_WPORT PORTF - #define DIO46_DDR DDRF - #define DIO46_PWM NULL - - #define DIO47_PIN PINF1 - #define DIO47_RPORT PINF - #define DIO47_WPORT PORTF - #define DIO47_DDR DDRF - #define DIO47_PWM NULL - - #define DIO48_PIN PINF2 - #define DIO48_RPORT PINF - #define DIO48_WPORT PORTF - #define DIO48_DDR DDRF - #define DIO48_PWM NULL - - #define DIO49_PIN PINF3 - #define DIO49_RPORT PINF - #define DIO49_WPORT PORTF - #define DIO49_DDR DDRF - #define DIO49_PWM NULL - - #define DIO50_PIN PINF4 - #define DIO50_RPORT PINF - #define DIO50_WPORT PORTF - #define DIO50_DDR DDRF - #define DIO50_PWM NULL - - #define DIO51_PIN PINF5 - #define DIO51_RPORT PINF - #define DIO51_WPORT PORTF - #define DIO51_DDR DDRF - #define DIO51_PWM NULL - - #define DIO52_PIN PINF6 - #define DIO52_RPORT PINF - #define DIO52_WPORT PORTF - #define DIO52_DDR DDRF - #define DIO52_PWM NULL - - #define DIO53_PIN PINF7 - #define DIO53_RPORT PINF - #define DIO53_WPORT PORTF - #define DIO53_DDR DDRF - #define DIO53_PWM NULL - - - - - #undef PA0 - #define PA0_PIN PINA0 - #define PA0_RPORT PINA - #define PA0_WPORT PORTA - #define PA0_DDR DDRA - #define PA0_PWM NULL - #undef PA1 - #define PA1_PIN PINA1 - #define PA1_RPORT PINA - #define PA1_WPORT PORTA - #define PA1_DDR DDRA - #define PA1_PWM NULL - #undef PA2 - #define PA2_PIN PINA2 - #define PA2_RPORT PINA - #define PA2_WPORT PORTA - #define PA2_DDR DDRA - #define PA2_PWM NULL - #undef PA3 - #define PA3_PIN PINA3 - #define PA3_RPORT PINA - #define PA3_WPORT PORTA - #define PA3_DDR DDRA - #define PA3_PWM NULL - #undef PA4 - #define PA4_PIN PINA4 - #define PA4_RPORT PINA - #define PA4_WPORT PORTA - #define PA4_DDR DDRA - #define PA4_PWM NULL - #undef PA5 - #define PA5_PIN PINA5 - #define PA5_RPORT PINA - #define PA5_WPORT PORTA - #define PA5_DDR DDRA - #define PA5_PWM NULL - #undef PA6 - #define PA6_PIN PINA6 - #define PA6_RPORT PINA - #define PA6_WPORT PORTA - #define PA6_DDR DDRA - #define PA6_PWM NULL - #undef PA7 - #define PA7_PIN PINA7 - #define PA7_RPORT PINA - #define PA7_WPORT PORTA - #define PA7_DDR DDRA - #define PA7_PWM NULL - - #undef PB0 - #define PB0_PIN PINB0 - #define PB0_RPORT PINB - #define PB0_WPORT PORTB - #define PB0_DDR DDRB - #define PB0_PWM NULL - #undef PB1 - #define PB1_PIN PINB1 - #define PB1_RPORT PINB - #define PB1_WPORT PORTB - #define PB1_DDR DDRB - #define PB1_PWM NULL - #undef PB2 - #define PB2_PIN PINB2 - #define PB2_RPORT PINB - #define PB2_WPORT PORTB - #define PB2_DDR DDRB - #define PB2_PWM NULL - #undef PB3 - #define PB3_PIN PINB3 - #define PB3_RPORT PINB - #define PB3_WPORT PORTB - #define PB3_DDR DDRB - #define PB3_PWM NULL - #undef PB4 - #define PB4_PIN PINB4 - #define PB4_RPORT PINB - #define PB4_WPORT PORTB - #define PB4_DDR DDRB - #define PB4_PWM &OCR2A - #undef PB5 - #define PB5_PIN PINB5 - #define PB5_RPORT PINB - #define PB5_WPORT PORTB - #define PB5_DDR DDRB - #define PB5_PWM NULL - #undef PB6 - #define PB6_PIN PINB6 - #define PB6_RPORT PINB - #define PB6_WPORT PORTB - #define PB6_DDR DDRB - #define PB6_PWM NULL - #undef PB7 - #define PB7_PIN PINB7 - #define PB7_RPORT PINB - #define PB7_WPORT PORTB - #define PB7_DDR DDRB - #define PB7_PWM &OCR0A - - #undef PC0 - #define PC0_PIN PINC0 - #define PC0_RPORT PINC - #define PC0_WPORT PORTC - #define PC0_DDR DDRC - #define PC0_PWM NULL - #undef PC1 - #define PC1_PIN PINC1 - #define PC1_RPORT PINC - #define PC1_WPORT PORTC - #define PC1_DDR DDRC - #define PC1_PWM NULL - #undef PC2 - #define PC2_PIN PINC2 - #define PC2_RPORT PINC - #define PC2_WPORT PORTC - #define PC2_DDR DDRC - #define PC2_PWM NULL - #undef PC3 - #define PC3_PIN PINC3 - #define PC3_RPORT PINC - #define PC3_WPORT PORTC - #define PC3_DDR DDRC - #define PC3_PWM NULL - #undef PC4 - #define PC4_PIN PINC4 - #define PC4_RPORT PINC - #define PC4_WPORT PORTC - #define PC4_DDR DDRC - #define PC4_PWM NULL - #undef PC5 - #define PC5_PIN PINC5 - #define PC5_RPORT PINC - #define PC5_WPORT PORTC - #define PC5_DDR DDRC - #define PC5_PWM NULL - #undef PC6 - #define PC6_PIN PINC6 - #define PC6_RPORT PINC - #define PC6_WPORT PORTC - #define PC6_DDR DDRC - #define PC6_PWM NULL - #undef PC7 - #define PC7_PIN PINC7 - #define PC7_RPORT PINC - #define PC7_WPORT PORTC - #define PC7_DDR DDRC - #define PC7_PWM NULL - - #undef PD0 - #define PD0_PIN PIND0 - #define PD0_RPORT PIND - #define PD0_WPORT PORTD - #define PD0_DDR DDRD - #define PD0_PWM NULL - #undef PD1 - #define PD1_PIN PIND1 - #define PD1_RPORT PIND - #define PD1_WPORT PORTD - #define PD1_DDR DDRD - #define PD1_PWM NULL - #undef PD2 - #define PD2_PIN PIND2 - #define PD2_RPORT PIND - #define PD2_WPORT PORTD - #define PD2_DDR DDRD - #define PD2_PWM NULL - #undef PD3 - #define PD3_PIN PIND3 - #define PD3_RPORT PIND - #define PD3_WPORT PORTD - #define PD3_DDR DDRD - #define PD3_PWM NULL - #undef PD4 - #define PD4_PIN PIND4 - #define PD4_RPORT PIND - #define PD4_WPORT PORTD - #define PD4_DDR DDRD - #define PD4_PWM NULL - #undef PD5 - #define PD5_PIN PIND5 - #define PD5_RPORT PIND - #define PD5_WPORT PORTD - #define PD5_DDR DDRD - #define PD5_PWM NULL - #undef PD6 - #define PD6_PIN PIND6 - #define PD6_RPORT PIND - #define PD6_WPORT PORTD - #define PD6_DDR DDRD - #define PD6_PWM NULL - #undef PD7 - #define PD7_PIN PIND7 - #define PD7_RPORT PIND - #define PD7_WPORT PORTD - #define PD7_DDR DDRD - #define PD7_PWM NULL - - #undef PE0 - #define PE0_PIN PINE0 - #define PE0_RPORT PINE - #define PE0_WPORT PORTE - #define PE0_DDR DDRE - #define PE0_PWM NULL - #undef PE1 - #define PE1_PIN PINE1 - #define PE1_RPORT PINE - #define PE1_WPORT PORTE - #define PE1_DDR DDRE - #define PE1_PWM NULL - #undef PE2 - #define PE2_PIN PINE2 - #define PE2_RPORT PINE - #define PE2_WPORT PORTE - #define PE2_DDR DDRE - #define PE2_PWM NULL - #undef PE3 - #define PE3_PIN PINE3 - #define PE3_RPORT PINE - #define PE3_WPORT PORTE - #define PE3_DDR DDRE - #define PE3_PWM &OCR3AL - #undef PE4 - #define PE4_PIN PINE4 - #define PE4_RPORT PINE - #define PE4_WPORT PORTE - #define PE4_DDR DDRE - #define PE4_PWM &OCR3BL - #undef PE5 - #define PE5_PIN PINE5 - #define PE5_RPORT PINE - #define PE5_WPORT PORTE - #define PE5_DDR DDRE - #define PE5_PWM &OCR3CL - #undef PE6 - #define PE6_PIN PINE6 - #define PE6_RPORT PINE - #define PE6_WPORT PORTE - #define PE6_DDR DDRE - #define PE6_PWM NULL - #undef PE7 - #define PE7_PIN PINE7 - #define PE7_RPORT PINE - #define PE7_WPORT PORTE - #define PE7_DDR DDRE - #define PE7_PWM NULL - - #undef PF0 - #define PF0_PIN PINF0 - #define PF0_RPORT PINF - #define PF0_WPORT PORTF - #define PF0_DDR DDRF - #define PF0_PWM NULL - #undef PF1 - #define PF1_PIN PINF1 - #define PF1_RPORT PINF - #define PF1_WPORT PORTF - #define PF1_DDR DDRF - #define PF1_PWM NULL - #undef PF2 - #define PF2_PIN PINF2 - #define PF2_RPORT PINF - #define PF2_WPORT PORTF - #define PF2_DDR DDRF - #define PF2_PWM NULL - #undef PF3 - #define PF3_PIN PINF3 - #define PF3_RPORT PINF - #define PF3_WPORT PORTF - #define PF3_DDR DDRF - #define PF3_PWM NULL - #undef PF4 - #define PF4_PIN PINF4 - #define PF4_RPORT PINF - #define PF4_WPORT PORTF - #define PF4_DDR DDRF - #define PF4_PWM NULL - #undef PF5 - #define PF5_PIN PINF5 - #define PF5_RPORT PINF - #define PF5_WPORT PORTF - #define PF5_DDR DDRF - #define PF5_PWM NULL - #undef PF6 - #define PF6_PIN PINF6 - #define PF6_RPORT PINF - #define PF6_WPORT PORTF - #define PF6_DDR DDRF - #define PF6_PWM NULL - #undef PF7 - #define PF7_PIN PINF7 - #define PF7_RPORT PINF - #define PF7_WPORT PORTF - #define PF7_DDR DDRF - #define PF7_PWM NULL - - #undef PG0 - #define PG0_PIN PING0 - #define PG0_RPORT PING - #define PG0_WPORT PORTG - #define PG0_DDR DDRG - #define PG0_PWM NULL - #undef PG1 - #define PG1_PIN PING1 - #define PG1_RPORT PING - #define PG1_WPORT PORTG - #define PG1_DDR DDRG - #define PG1_PWM NULL - #undef PG2 - #define PG2_PIN PING2 - #define PG2_RPORT PING - #define PG2_WPORT PORTG - #define PG2_DDR DDRG - #define PG2_PWM NULL - #undef PG3 - #define PG3_PIN PING3 - #define PG3_RPORT PING - #define PG3_WPORT PORTG - #define PG3_DDR DDRG - #define PG3_PWM NULL - #undef PG4 - #define PG4_PIN PING4 - #define PG4_RPORT PING - #define PG4_WPORT PORTG - #define PG4_DDR DDRG - #define PG4_PWM NULL - #undef PG5 - #define PG5_PIN PING5 - #define PG5_RPORT PING - #define PG5_WPORT PORTG - #define PG5_DDR DDRG - #define PG5_PWM &OCR0B - - -#endif - -#ifndef DIO0_PIN - #error "pins for this chip not defined in arduino.h! If you write an appropriate pin definition and have this firmware work on your chip, please submit a pull request" -#endif - -#endif /* _FASTIO_ARDUINO_H */ diff --git a/lib/Marlin/language.h b/lib/Marlin/language.h deleted file mode 100644 index 496fed5..0000000 --- a/lib/Marlin/language.h +++ /dev/null @@ -1,244 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef LANGUAGE_H -#define LANGUAGE_H - -#include "MarlinConfig.h" - -// Fallback if no language is set. DON'T CHANGE -#ifndef LCD_LANGUAGE - #define LCD_LANGUAGE en -#endif - -// For character-based LCD controllers (DISPLAY_CHARSET_HD44780) -#define JAPANESE 1 -#define WESTERN 2 -#define CYRILLIC 3 - -// NOTE: IF YOU CHANGE LANGUAGE FILES OR MERGE A FILE WITH CHANGES -// -// ==> ALWAYS TRY TO COMPILE MARLIN WITH/WITHOUT "ULTIPANEL" / "ULTRALCD" / "SDSUPPORT" #define IN "Configuration.h" -// ==> ALSO TRY ALL AVAILABLE LANGUAGE OPTIONS -// See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - -// Languages -// an Aragonese -// bg Bulgarian -// ca Catalan -// cn Chinese -// cz Czech -// de German -// el Greek -// el-gr Greek (Greece) -// en English -// es Spanish -// eu Basque-Euskera -// fi Finnish -// fr French -// gl Galician -// hr Croatian -// it Italian -// kana Japanese -// kana_utf8 Japanese (UTF8) -// nl Dutch -// pl Polish -// pt Portuguese -// pt-br Portuguese (Brazilian) -// pt-br_utf8 Portuguese (Brazilian UTF8) -// pt_utf8 Portuguese (UTF8) -// ru Russian - -#ifdef DEFAULT_SOURCE_CODE_URL - #undef SOURCE_CODE_URL - #define SOURCE_CODE_URL DEFAULT_SOURCE_CODE_URL -#endif - -#ifdef CUSTOM_MACHINE_NAME - #undef MACHINE_NAME - #define MACHINE_NAME CUSTOM_MACHINE_NAME -#else - #ifdef DEFAULT_MACHINE_NAME - #undef MACHINE_NAME - #define MACHINE_NAME DEFAULT_MACHINE_NAME - #endif -#endif - -#ifndef MACHINE_UUID - #define MACHINE_UUID DEFAULT_MACHINE_UUID -#endif - -#ifdef DEFAULT_WEBSITE_URL - #undef WEBSITE_URL - #define WEBSITE_URL DEFAULT_WEBSITE_URL -#endif - -// Common LCD messages - - /* nothing here yet */ - -// Common serial messages -#define MSG_MARLIN "Marlin" - -// Serial Console Messages (do not translate those!) - -#define MSG_Enqueueing "enqueueing \"" -#define MSG_POWERUP "PowerUp" -#define MSG_EXTERNAL_RESET " External Reset" -#define MSG_BROWNOUT_RESET " Brown out Reset" -#define MSG_WATCHDOG_RESET " Watchdog Reset" -#define MSG_SOFTWARE_RESET " Software Reset" -#define MSG_AUTHOR " | Author: " -#define MSG_CONFIGURATION_VER " Last Updated: " -#define MSG_FREE_MEMORY " Free Memory: " -#define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " -#define MSG_OK "ok" -#define MSG_WAIT "wait" -#define MSG_STATS "Stats: " -#define MSG_FILE_SAVED "Done saving file." -#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: " -#define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " -#define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " -#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: " -#define MSG_FILE_PRINTED "Done printing file" -#define MSG_BEGIN_FILE_LIST "Begin file list" -#define MSG_END_FILE_LIST "End file list" -#define MSG_INVALID_EXTRUDER "Invalid extruder" -#define MSG_INVALID_SOLENOID "Invalid solenoid" -#define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" -#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin " DETAILED_BUILD_VERSION " SOURCE_CODE_URL:" SOURCE_CODE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID EMERGENCY_PARSER_CAPABILITIES "\n" -#define MSG_COUNT_X " Count X: " -#define MSG_COUNT_A " Count A: " -#define MSG_ERR_KILLED "Printer halted. kill() called!" -#define MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" -#define MSG_BUSY_PROCESSING "busy: processing" -#define MSG_BUSY_PAUSED_FOR_USER "busy: paused for user" -#define MSG_BUSY_PAUSED_FOR_INPUT "busy: paused for input" -#define MSG_RESEND "Resend: " -#define MSG_UNKNOWN_COMMAND "Unknown command: \"" -#define MSG_ACTIVE_EXTRUDER "Active Extruder: " -#define MSG_X_MIN "x_min: " -#define MSG_X_MAX "x_max: " -#define MSG_Y_MIN "y_min: " -#define MSG_Y_MAX "y_max: " -#define MSG_Z_MIN "z_min: " -#define MSG_Z_MAX "z_max: " -#define MSG_Z2_MAX "z2_max: " -#define MSG_Z_PROBE "z_probe: " -#define MSG_ERR_MATERIAL_INDEX "M145 S out of range (0-1)" -#define MSG_ERR_M421_PARAMETERS "M421 requires XYZ or IJZ parameters" -#define MSG_ERR_MESH_XY "Mesh XY or IJ cannot be resolved" -#define MSG_ERR_M428_TOO_FAR "Too far from reference point" -#define MSG_ERR_M303_DISABLED "PIDTEMP disabled" -#define MSG_M119_REPORT "Reporting endstop status" -#define MSG_ENDSTOP_HIT "TRIGGERED" -#define MSG_ENDSTOP_OPEN "open" -#define MSG_HOTEND_OFFSET "Hotend offsets:" -#define MSG_DUPLICATION_MODE "Duplication mode: " - -#define MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir " -#define MSG_SD_INIT_FAIL "SD init fail" -#define MSG_SD_VOL_INIT_FAIL "volume.init failed" -#define MSG_SD_OPENROOT_FAIL "openRoot failed" -#define MSG_SD_CARD_OK "SD card ok" -#define MSG_SD_WORKDIR_FAIL "workDir open failed" -#define MSG_SD_OPEN_FILE_FAIL "open failed, File: " -#define MSG_SD_FILE_OPENED "File opened: " -#define MSG_SD_SIZE " Size: " -#define MSG_SD_FILE_SELECTED "File selected" -#define MSG_SD_WRITE_TO_FILE "Writing to file: " -#define MSG_SD_PRINTING_BYTE "SD printing byte " -#define MSG_SD_NOT_PRINTING "Not SD printing" -#define MSG_SD_ERR_WRITE_TO_FILE "error writing to file" -#define MSG_SD_ERR_READ "SD read error" -#define MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: " - -#define MSG_STEPPER_TOO_HIGH "Steprate too high: " -#define MSG_ENDSTOPS_HIT "endstops hit: " -#define MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented" -#define MSG_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented" -#define MSG_TOO_COLD_FOR_M600 "M600 Hotend too cold to change filament" -#define MSG_BABYSTEPPING_X "Babystepping X" -#define MSG_BABYSTEPPING_Y "Babystepping Y" -#define MSG_BABYSTEPPING_Z "Babystepping Z" -#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure" - -#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!" - -// temperature.cpp strings -#define MSG_PID_AUTOTUNE "PID Autotune" -#define MSG_PID_AUTOTUNE_START MSG_PID_AUTOTUNE " start" -#define MSG_PID_AUTOTUNE_FAILED MSG_PID_AUTOTUNE " failed!" -#define MSG_PID_BAD_EXTRUDER_NUM MSG_PID_AUTOTUNE_FAILED " Bad extruder number" -#define MSG_PID_TEMP_TOO_HIGH MSG_PID_AUTOTUNE_FAILED " Temperature too high" -#define MSG_PID_TIMEOUT MSG_PID_AUTOTUNE_FAILED " timeout" -#define MSG_BIAS " bias: " -#define MSG_D " d: " -#define MSG_T_MIN " min: " -#define MSG_T_MAX " max: " -#define MSG_KU " Ku: " -#define MSG_TU " Tu: " -#define MSG_CLASSIC_PID " Classic PID " -#define MSG_KP " Kp: " -#define MSG_KI " Ki: " -#define MSG_KD " Kd: " -#define MSG_B "B:" -#define MSG_T "T:" -#define MSG_AT " @:" -#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h" -#define MSG_PID_DEBUG " PID_DEBUG " -#define MSG_PID_DEBUG_INPUT ": Input " -#define MSG_PID_DEBUG_OUTPUT " Output " -#define MSG_PID_DEBUG_PTERM " pTerm " -#define MSG_PID_DEBUG_ITERM " iTerm " -#define MSG_PID_DEBUG_DTERM " dTerm " -#define MSG_PID_DEBUG_CTERM " cTerm " -#define MSG_INVALID_EXTRUDER_NUM " - Invalid extruder number !" - -#define MSG_HEATER_BED "bed" -#define MSG_STOPPED_HEATER ", system stopped! Heater_ID: " -#define MSG_REDUNDANCY "Heater switched off. Temperature difference between temp sensors is too high !" -#define MSG_T_HEATING_FAILED "Heating failed" -#define MSG_T_THERMAL_RUNAWAY "Thermal Runaway" -#define MSG_T_MAXTEMP "MAXTEMP triggered" -#define MSG_T_MINTEMP "MINTEMP triggered" - -// Debug -#define MSG_DEBUG_PREFIX "DEBUG:" -#define MSG_DEBUG_OFF "off" -#define MSG_DEBUG_ECHO "ECHO" -#define MSG_DEBUG_INFO "INFO" -#define MSG_DEBUG_ERRORS "ERRORS" -#define MSG_DEBUG_DRYRUN "DRYRUN" -#define MSG_DEBUG_COMMUNICATION "COMMUNICATION" -#define MSG_DEBUG_LEVELING "LEVELING" - -// LCD Menu Messages - -#define LANGUAGE_INCL_(M) STRINGIFY_(language_##M.h) -#define LANGUAGE_INCL(M) LANGUAGE_INCL_(M) -#define INCLUDE_LANGUAGE LANGUAGE_INCL(LCD_LANGUAGE) - -#include INCLUDE_LANGUAGE -#include "language_en.h" - -#endif //__LANGUAGE_H diff --git a/lib/Marlin/language_an.h b/lib/Marlin/language_an.h deleted file mode 100644 index bfabc0a..0000000 --- a/lib/Marlin/language_an.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Aragonese - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_AN_H -#define LANGUAGE_AN_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " parada." -#define MSG_SD_INSERTED "Tarcheta colocada" -#define MSG_SD_REMOVED "Tarcheta retirada" -#define MSG_MAIN "Menu prencipal" -#define MSG_AUTOSTART " Autostart" -#define MSG_DISABLE_STEPPERS "Amortar motors" -#define MSG_AUTO_HOME "Levar a l'orichen" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "Set home offsets" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Establir zero" -#define MSG_PREHEAT_1 "Precalentar PLA" -#define MSG_PREHEAT_1_N "Precalentar PLA " -#define MSG_PREHEAT_1_ALL "Precalentar PLA a" -#define MSG_PREHEAT_1_BEDONLY "Prec. PLA Base" -#define MSG_PREHEAT_1_SETTINGS "Achustar tem. PLA" -#define MSG_PREHEAT_2 "Precalentar ABS" -#define MSG_PREHEAT_2_N "Precalentar ABS " -#define MSG_PREHEAT_2_ALL "Precalentar ABS a" -#define MSG_PREHEAT_2_BEDONLY "Prec. ABS Base" -#define MSG_PREHEAT_2_SETTINGS "Achustar tem. ABS" -#define MSG_COOLDOWN "Enfriar" -#define MSG_SWITCH_PS_ON "Enchegar Fuent" -#define MSG_SWITCH_PS_OFF "Desenchegar Fuent" -#define MSG_EXTRUDE "Extruir" -#define MSG_RETRACT "Retraer" -#define MSG_MOVE_AXIS "Mover Eixes" -#define MSG_MOVE_X "Move X" -#define MSG_MOVE_Y "Move Y" -#define MSG_MOVE_Z "Move Z" -#define MSG_MOVE_E "Extruder" -#define MSG_MOVE_01MM "Move 0.1mm" -#define MSG_MOVE_1MM "Move 1mm" -#define MSG_MOVE_10MM "Move 10mm" -#define MSG_SPEED "Velocidat" -#define MSG_NOZZLE "Nozzle" -#define MSG_BED "Base" -#define MSG_FAN_SPEED "Ixoriador" -#define MSG_FLOW "Fluxo" -#define MSG_CONTROL "Control" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Autotemp" -#define MSG_ON "On" -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Acel" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ves-jerk" -#define MSG_VMAX "Vmax" -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax" -#define MSG_A_RETRACT "A-retrac." -#define MSG_XSTEPS "X trangos/mm" -#define MSG_YSTEPS "Y trangos/mm" -#define MSG_ZSTEPS "Z trangos/mm" -#define MSG_ESTEPS "E trangos/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Movimiento" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_CONTRAST "Contrast" -#define MSG_STORE_EPROM "Alzar Memoria" -#define MSG_LOAD_EPROM "Cargar Memoria" -#define MSG_RESTORE_FAILSAFE "Rest. d'emerchen." -#define MSG_REFRESH "Tornar a cargar" -#define MSG_WATCH "Monitorizar" -#define MSG_PREPARE "Preparar" -#define MSG_TUNE "Achustar" -#define MSG_PAUSE_PRINT "Pausar impresion" -#define MSG_RESUME_PRINT "Contin. impresion" -#define MSG_STOP_PRINT "Detener Impresion" -#define MSG_CARD_MENU "Menu de SD" -#define MSG_NO_CARD "No i hai tarcheta" -#define MSG_DWELL "Reposo..." -#define MSG_USERWAIT "Asperan. ordines" -#define MSG_RESUMING "Contin. impresion" -#define MSG_PRINT_ABORTED "Print aborted" -#define MSG_NO_MOVE "Sin movimiento" -#define MSG_KILLED "ATURADA D'EMERCH." -#define MSG_STOPPED "ATURADA." -#define MSG_CONTROL_RETRACT "Retraer mm" -#define MSG_CONTROL_RETRACT_SWAP "Swap Retraer mm" -#define MSG_CONTROL_RETRACTF "Retraer F" -#define MSG_CONTROL_RETRACT_ZLIFT "Devantar mm" -#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Swap DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "DesRet F" -#define MSG_AUTORETRACT "AutoRetr." -#define MSG_FILAMENTCHANGE "Cambear" -#define MSG_INIT_SDCARD "Encetan. tarcheta" -#define MSG_CNG_SDCARD "Cambiar tarcheta" -#define MSG_ZPROBE_OUT "Z probe out. bed" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop abort" -#define MSG_DELTA_CALIBRATE "Delta Calibration" -#define MSG_DELTA_CALIBRATE_X "Calibrate X" -#define MSG_DELTA_CALIBRATE_Y "Calibrate Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrate Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" - -#endif // LANGUAGE_AN_H diff --git a/lib/Marlin/language_bg.h b/lib/Marlin/language_bg.h deleted file mode 100644 index 5160694..0000000 --- a/lib/Marlin/language_bg.h +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Bulgarian - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_BG_H -#define LANGUAGE_BG_H - -#define MAPPER_D0D1 // For Cyrillic -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_5 - -#define WELCOME_MSG MACHINE_NAME " Готов." -#define MSG_SD_INSERTED "Картата е поÑтавена" -#define MSG_SD_REMOVED "Картата е извадена" -#define MSG_MAIN "Меню" -#define MSG_AUTOSTART "ÐвтоÑтарт" -#define MSG_DISABLE_STEPPERS "Изкл. двигатели" -#define MSG_AUTO_HOME "Паркиране" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "Задай Ðачало" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Изходна точка" -#define MSG_PREHEAT_1 "ПодгрÑване PLA" -#define MSG_PREHEAT_1_N "ПодгрÑване PLA" -#define MSG_PREHEAT_1_ALL "Подгр. PLA Ð’Ñички" -#define MSG_PREHEAT_1_BEDONLY "Подгр. PLA Легло" -#define MSG_PREHEAT_1_SETTINGS "ÐаÑтройки PLA" -#define MSG_PREHEAT_2 "ПодгрÑване ABS" -#define MSG_PREHEAT_2_N "ПодгрÑване ABS" -#define MSG_PREHEAT_2_ALL "Подгр. ABS Ð’Ñички" -#define MSG_PREHEAT_2_BEDONLY "Подгр. ABS Легло" -#define MSG_PREHEAT_2_SETTINGS "ÐаÑтройки ABS" -#define MSG_COOLDOWN "Охлаждане" -#define MSG_SWITCH_PS_ON "Вкл. захранване" -#define MSG_SWITCH_PS_OFF "Изкл. захранване" -#define MSG_EXTRUDE "ЕкÑтрузиÑ" -#define MSG_RETRACT "Откат" -#define MSG_MOVE_AXIS "Движение по оÑ" -#define MSG_LEVEL_BED "Ðивелиране" -#define MSG_MOVE_X "Движение по X" -#define MSG_MOVE_Y "Движение по Y" -#define MSG_MOVE_Z "Движение по Z" -#define MSG_MOVE_E "ЕкÑтрудер" -#define MSG_MOVE_01MM "ПремеÑти Ñ 0.1mm" -#define MSG_MOVE_1MM "ПремеÑти Ñ 1mm" -#define MSG_MOVE_10MM "ПремеÑти Ñ 10mm" -#define MSG_SPEED "СкороÑÑ‚" -#define MSG_NOZZLE LCD_STR_THERMOMETER " Дюза" -#define MSG_BED LCD_STR_THERMOMETER " Легло" -#define MSG_FAN_SPEED "Вентилатор" -#define MSG_FLOW "Поток" -#define MSG_CONTROL "Управление" -#define MSG_MIN LCD_STR_THERMOMETER " Минимум" -#define MSG_MAX LCD_STR_THERMOMETER " МакÑимум" -#define MSG_FACTOR LCD_STR_THERMOMETER " Фактор" -#define MSG_AUTOTEMP "Ðвто-темп." -#define MSG_ON "Вкл. " -#define MSG_OFF "Изкл. " -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Acc" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-откат" -#define MSG_XSTEPS "X Ñтъпки/mm" -#define MSG_YSTEPS "Y Ñтъпки/mm" -#define MSG_ZSTEPS "Z Ñтъпки/mm" -#define MSG_ESTEPS "E Ñтъпки/mm" -#define MSG_TEMPERATURE "Температура" -#define MSG_MOTION "Движение" -#define MSG_VOLUMETRIC "Ðишка" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Диам. нишка" -#define MSG_CONTRAST "LCD контраÑÑ‚" -#define MSG_STORE_EPROM "Запази в EPROM" -#define MSG_LOAD_EPROM "Зареди от EPROM" -#define MSG_RESTORE_FAILSAFE "Фабрични наÑтройки" -#define MSG_REFRESH LCD_STR_REFRESH "Обнови" -#define MSG_WATCH "Преглед" -#define MSG_PREPARE "ДейÑтвиÑ" -#define MSG_TUNE "ÐаÑтройка" -#define MSG_PAUSE_PRINT "Пауза" -#define MSG_RESUME_PRINT "Възобнови печата" -#define MSG_STOP_PRINT "Спри печата" -#define MSG_CARD_MENU "Меню карта" -#define MSG_NO_CARD "ÐÑма карта" -#define MSG_DWELL "Почивка..." -#define MSG_USERWAIT "Изчакване" -#define MSG_RESUMING "Продълж. печата" -#define MSG_PRINT_ABORTED "Печатът е прекъÑнат" -#define MSG_NO_MOVE "ÐÑма движение" -#define MSG_KILLED "УБИТО." -#define MSG_STOPPED "СПРЯÐО." -#define MSG_CONTROL_RETRACT "Откат mm" -#define MSG_CONTROL_RETRACT_SWAP "СмÑна Откат mm" -#define MSG_CONTROL_RETRACTF "Откат V" -#define MSG_CONTROL_RETRACT_ZLIFT "Скок mm" -#define MSG_CONTROL_RETRACT_RECOVER "Възврат +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "СмÑна Възврат +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "Възврат V" -#define MSG_AUTORETRACT "Ðвтоoткат" -#define MSG_FILAMENTCHANGE "СмÑна нишка" -#define MSG_INIT_SDCARD "Иниц. SD-Карта" -#define MSG_CNG_SDCARD "СмÑна SD-Карта" -#define MSG_ZPROBE_OUT "Z-Ñондата е извадена" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z ОтÑтоÑние" -#define MSG_BABYSTEP_X "МиниÑтъпка X" -#define MSG_BABYSTEP_Y "МиниÑтъпка Y" -#define MSG_BABYSTEP_Z "МиниÑтъпка Z" -#define MSG_ENDSTOP_ABORT "Стоп Кр.Изключватели" -#define MSG_DELTA_CALIBRATE "Делта Калибровка" -#define MSG_DELTA_CALIBRATE_X "Калибровка X" -#define MSG_DELTA_CALIBRATE_Y "Калибровка Y" -#define MSG_DELTA_CALIBRATE_Z "Калибровка Z" -#define MSG_DELTA_CALIBRATE_CENTER "Калибровка Център" - -#endif // LANGUAGE_BG_H diff --git a/lib/Marlin/language_ca.h b/lib/Marlin/language_ca.h deleted file mode 100644 index b90f1c3..0000000 --- a/lib/Marlin/language_ca.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Catalan - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_CA_H -#define LANGUAGE_CA_H - -#define MAPPER_C2C3 // because of "ó" -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " preparada." -#define MSG_SD_INSERTED "SD detectada." -#define MSG_SD_REMOVED "SD expulsada." -#define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART "Inici automatic" -#define MSG_DISABLE_STEPPERS "Apagar motors" -#define MSG_AUTO_HOME "Home global" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "Set home offsets" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Establir origen" -#define MSG_PREHEAT_1 "Preescalfar PLA" -#define MSG_PREHEAT_1_N "Preescalfar PLA " -#define MSG_PREHEAT_1_ALL "Preesc. tot PLA" -#define MSG_PREHEAT_1_BEDONLY "Preesc. llit PLA" -#define MSG_PREHEAT_1_SETTINGS "Configuració PLA" -#define MSG_PREHEAT_2 "Preescalfar ABS" -#define MSG_PREHEAT_2_N "Preescalfar ABS " -#define MSG_PREHEAT_2_ALL "Preesc. tot ABS" -#define MSG_PREHEAT_2_BEDONLY "Preesc. llit ABS" -#define MSG_PREHEAT_2_SETTINGS "Configuració ABS" -#define MSG_COOLDOWN "Refredar" -#define MSG_SWITCH_PS_ON "Switch power on" -#define MSG_SWITCH_PS_OFF "Switch power off" -#define MSG_EXTRUDE "Extruir" -#define MSG_RETRACT "Refredar" -#define MSG_MOVE_AXIS "Moure eixos" -#define MSG_MOVE_X "Moure X" -#define MSG_MOVE_Y "Moure Y" -#define MSG_MOVE_Z "Moure Z" -#define MSG_MOVE_E "Extrusor" -#define MSG_MOVE_01MM "Moure 0.1mm" -#define MSG_MOVE_1MM "Moure 1mm" -#define MSG_MOVE_10MM "Moure 10mm" -#define MSG_SPEED "Velocitat" -#define MSG_NOZZLE "Nozzle" -#define MSG_BED "Llit" -#define MSG_FAN_SPEED "Vel. Ventilador" -#define MSG_FLOW "Fluxe" -#define MSG_CONTROL "Control" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Autotemp" -#define MSG_ON "On " -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Accel" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retract" -#define MSG_XSTEPS "Xpassos/mm" -#define MSG_YSTEPS "Ypassos/mm" -#define MSG_ZSTEPS "Zpassos/mm" -#define MSG_ESTEPS "Epassos/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Moviment" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_CONTRAST "Contrast de LCD" -#define MSG_STORE_EPROM "Desar a memoria" -#define MSG_LOAD_EPROM "Carregar de mem." -#define MSG_RESTORE_FAILSAFE "Rest. emergencia" -#define MSG_REFRESH "Refrescar" -#define MSG_WATCH "Pantalla Info." -#define MSG_PREPARE "Preparar" -#define MSG_TUNE "Calibrar" -#define MSG_PAUSE_PRINT "Pausa imp." -#define MSG_RESUME_PRINT "Reprendre imp." -#define MSG_STOP_PRINT "Parar inp." -#define MSG_CARD_MENU "Imprimir de SD" -#define MSG_NO_CARD "-Sense targeta SD" -#define MSG_DWELL "Repos..." -#define MSG_USERWAIT "Esperant usuari.." -#define MSG_RESUMING "Reprenent imp." -#define MSG_PRINT_ABORTED "Print aborted" -#define MSG_NO_MOVE "Sense moviment." -#define MSG_KILLED "PARADA DE EMERG. " -#define MSG_STOPPED "ATURAT. " -#define MSG_CONTROL_RETRACT "Retreure mm" -#define MSG_CONTROL_RETRACT_SWAP "Swap Retreure mm" -#define MSG_CONTROL_RETRACTF "Retreure F" -#define MSG_CONTROL_RETRACT_ZLIFT "Aixecar mm" -#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Swap DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "DesRet F" -#define MSG_AUTORETRACT "AutoRetr." -#define MSG_FILAMENTCHANGE "Canviar filament" -#define MSG_INIT_SDCARD "Iniciant SD" -#define MSG_CNG_SDCARD "Canviar SD" -#define MSG_ZPROBE_OUT "Z probe out. bed" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop abort" -#define MSG_DELTA_CALIBRATE "Delta Calibration" -#define MSG_DELTA_CALIBRATE_X "Calibrate X" -#define MSG_DELTA_CALIBRATE_Y "Calibrate Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrate Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" - -#endif // LANGUAGE_CA_H diff --git a/lib/Marlin/language_cn.h b/lib/Marlin/language_cn.h deleted file mode 100644 index 86c639d..0000000 --- a/lib/Marlin/language_cn.h +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Chinese - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_CN_H -#define LANGUAGE_CN_H -#define DISPLAY_CHARSET_ISO10646_CN - -#define WELCOME_MSG "\xa4\xa5\xa6\xa7" -#define MSG_SD_INSERTED "\xa8\xa9\xaa\xab" -#define MSG_SD_REMOVED "\xa8\xa9\xac\xad" -#define MSG_MAIN "\xae\xaf\xb0" -#define MSG_AUTOSTART "\xb1\xb2\xb3\xb4" -#define MSG_DISABLE_STEPPERS "\xb5\xb6\xb7\xb8\xb9\xba" -#define MSG_AUTO_HOME "\xbb\xbc\xbd" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "\xbe\xbf\xbb\xbc\xbd\xc0\xc1" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "\xbe\xbf\xbc\xbd" -#define MSG_PREHEAT_1 "\xc3\xc4 PLA" -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 " \xc5\xc6" -#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 " \xc4\xc7" -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 " \xbe\xbf" -#define MSG_PREHEAT_2 "\xc3\xc4 ABS" -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 " \xc5\xc6" -#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 " \xbe\xc6" -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 " \xbe\xbf" -#define MSG_COOLDOWN "\xc8\xc9" -#define MSG_SWITCH_PS_ON "\xb9\xcb\xca\xb3" -#define MSG_SWITCH_PS_OFF "\xb9\xcb\xb5\xb6" -#define MSG_EXTRUDE "\xcc\xad" -#define MSG_RETRACT "\xbb\xcd" -#define MSG_MOVE_AXIS "\xc1\xb2\xce" -#define MSG_LEVEL_BED "\xcf\xe0\xc4\xc7" -#define MSG_MOVE_X "\xc1\xb2 X" -#define MSG_MOVE_Y "\xc1\xb2 Y" -#define MSG_MOVE_Z "\xc1\xb2 Z" -#define MSG_MOVE_E "\xcc\xad\xba" -#define MSG_MOVE_01MM "\xc1\xb2 0.1mm" -#define MSG_MOVE_1MM "\xc1\xb2 1mm" -#define MSG_MOVE_10MM "\xc1\xb2 10mm" -#define MSG_SPEED "\xd1\xd2" -#define MSG_NOZZLE "\xd3\xd4" -#define MSG_BED "\xc4\xc7" -#define MSG_FAN_SPEED "\xd5\xd6\xd1\xd2" -#define MSG_FLOW "\xcc\xad\xd1\xd2" -#define MSG_CONTROL "\xd8\xd9" -#define MSG_MIN LCD_STR_THERMOMETER " \xda\xdb" -#define MSG_MAX LCD_STR_THERMOMETER " \xda\xdc" -#define MSG_FACTOR LCD_STR_THERMOMETER " \xdd\xde" -#define MSG_AUTOTEMP "\xb1\xb2\xd8\xc9" -#define MSG_ON "\xb3 " // intentional space to shift wide symbol to the left -#define MSG_OFF "\xb5 " // intentional space to shift wide symbol to the left -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Accel" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retract" -#define MSG_A_TRAVEL "A-travel" -#define MSG_XSTEPS "Xsteps/mm" -#define MSG_YSTEPS "Ysteps/mm" -#define MSG_ZSTEPS "Zsteps/mm" -#define MSG_ESTEPS "Esteps/mm" -#define MSG_TEMPERATURE "\xc9\xd2" -#define MSG_MOTION "\xdf\xb2" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_CONTRAST "LCD contrast" -#define MSG_STORE_EPROM "Store memory" -#define MSG_LOAD_EPROM "Load memory" -#define MSG_RESTORE_FAILSAFE "Restore failsafe" -#define MSG_REFRESH "Refresh" -#define MSG_WATCH "\xec\xed\xee\xef" -#define MSG_PREPARE "\xa4\xa5" -#define MSG_TUNE "\xcf\xf0" -#define MSG_PAUSE_PRINT "\xf1\xf2\xca\xf3" -#define MSG_RESUME_PRINT "\xf4\xf5\xca\xf3" -#define MSG_STOP_PRINT "\xf2\xf6\xca\xf3" -#define MSG_CARD_MENU "\xaf\xb0" -#define MSG_NO_CARD "\xf9\xa8" -#define MSG_DWELL "Sleep..." -#define MSG_USERWAIT "Wait for user..." -#define MSG_RESUMING "Resuming print" -#define MSG_PRINT_ABORTED "Print aborted" -#define MSG_NO_MOVE "No move." -#define MSG_KILLED "KILLED. " -#define MSG_STOPPED "STOPPED. " -#define MSG_CONTROL_RETRACT "Retract mm" -#define MSG_CONTROL_RETRACT_SWAP "Swap Re.mm" -#define MSG_CONTROL_RETRACTF "Retract V" -#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "AutoRetr." -#define MSG_FILAMENTCHANGE "Change filament" -#define MSG_INIT_SDCARD "Init. SD card" -#define MSG_CNG_SDCARD "Change SD card" -#define MSG_ZPROBE_OUT "Z probe out. bed" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop abort" -#define MSG_HEATING_FAILED_LCD "Heating failed" -#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP" -#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" -#define MSG_ERR_MAXTEMP "Err: MAXTEMP" -#define MSG_ERR_MINTEMP "Err: MINTEMP" -#define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED" -#define MSG_DELTA_CALIBRATE "Delta Calibration" -#define MSG_DELTA_CALIBRATE_X "Calibrate X" -#define MSG_DELTA_CALIBRATE_Y "Calibrate Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrate Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" - -#endif // LANGUAGE_CN_H diff --git a/lib/Marlin/language_cz.h b/lib/Marlin/language_cz.h deleted file mode 100644 index 742cd8c..0000000 --- a/lib/Marlin/language_cz.h +++ /dev/null @@ -1,262 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Czech - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - * Translated by Petr Zahradnik, Computer Laboratory - * Blog and video blog Zahradnik se bavi - * http://www.zahradniksebavi.cz - * - */ -#ifndef LANGUAGE_CZ_H -#define LANGUAGE_CZ_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " pripraven." -#define MSG_SD_INSERTED "Karta vlozena" -#define MSG_SD_REMOVED "Karta vyjmuta" -#define MSG_LCD_ENDSTOPS "Endstopy" // maximalne 8 znaku -#define MSG_MAIN "Hlavni nabidka" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Uvolnit motory" -#define MSG_AUTO_HOME "Domovska pozice" -#define MSG_AUTO_HOME_X "Domu osa X" -#define MSG_AUTO_HOME_Y "Domu osa Y" -#define MSG_AUTO_HOME_Z "Domu osa Z" -#define MSG_LEVEL_BED_HOMING "Mereni podlozky" -#define MSG_LEVEL_BED_WAITING "Kliknutim spustte" -#define MSG_LEVEL_BED_NEXT_POINT "Dalsi bod" -#define MSG_LEVEL_BED_DONE "Mereni hotovo!" -#define MSG_LEVEL_BED_CANCEL "Storno" -#define MSG_SET_HOME_OFFSETS "Nastavit ofsety" -#define MSG_HOME_OFFSETS_APPLIED "Ofsety nastaveny" -#define MSG_SET_ORIGIN "Nastavit pocatek" -#define MSG_PREHEAT_1 "Zahrat PLA" -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 " Vse" -#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 " Podloz" -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 " Nast" -#define MSG_PREHEAT_2 "Zahrat ABS" -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 " Vse" -#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 " Podloz" -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 " Nast" -#define MSG_H1 "1" -#define MSG_H2 "2" -#define MSG_H3 "3" -#define MSG_H4 "4" -#define MSG_COOLDOWN "Zchladit" -#define MSG_SWITCH_PS_ON "Zapnout napajeni" -#define MSG_SWITCH_PS_OFF "Vypnout napajeni" -#define MSG_EXTRUDE "Vytlacit (extr.)" -#define MSG_RETRACT "Zatlacit (retr.)" -#define MSG_MOVE_AXIS "Posunout osy" -#define MSG_LEVEL_BED "Vyrovnat podlozku" -#define MSG_MOVE_X "Posunout X" -#define MSG_MOVE_Y "Posunout Y" -#define MSG_MOVE_Z "Posunout Z" -#define MSG_MOVE_E "Extruder" -#define MSG_MOVE_E1 "1" -#define MSG_MOVE_E2 "2" -#define MSG_MOVE_E3 "3" -#define MSG_MOVE_E4 "4" -#define MSG_MOVE_01MM "Posunout o 0,1mm" -#define MSG_MOVE_1MM "Posunout o 1mm" -#define MSG_MOVE_10MM "Posunout o 10mm" -#define MSG_SPEED "Rychlost" -#define MSG_BED_Z "Vyska podl." -#define MSG_NOZZLE "Tryska" -#define MSG_N1 " 1" -#define MSG_N2 " 2" -#define MSG_N3 " 3" -#define MSG_N4 " 4" -#define MSG_BED "Podlozka" -#define MSG_FAN_SPEED "Rychlost vent." -#define MSG_FLOW "Prutok" -#define MSG_CONTROL "Ovladani" -#define MSG_MIN " " LCD_STR_THERMOMETER " Min" -#define MSG_MAX " " LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR " " LCD_STR_THERMOMETER " Fakt" -#define MSG_AUTOTEMP "Autoteplota" -#define MSG_ON "Zap" -#define MSG_OFF "Vyp" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_SELECT "Vybrat" -#define MSG_E1 " E1" -#define MSG_E2 " E2" -#define MSG_E3 " E3" -#define MSG_E4 " E4" -#define MSG_ACC "Zrychl" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retrakt" -#define MSG_A_TRAVEL "A-prejezd" -#define MSG_XSTEPS "Xkroku/mm" -#define MSG_YSTEPS "Ykroku/mm" -#define MSG_ZSTEPS "Zkroku/mm" -#define MSG_ESTEPS "Ekroku/mm" -#define MSG_TEMPERATURE "Teplota" -#define MSG_MOTION "Pohyb" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E na mm3" -#define MSG_FILAMENT_DIAM "Fil. Prum." -#define MSG_DIAM_E1 " 1" -#define MSG_DIAM_E2 " 2" -#define MSG_DIAM_E3 " 3" -#define MSG_DIAM_E4 " 4" -#define MSG_CONTRAST "Kontrast LCD" -#define MSG_STORE_EPROM "Ulozit nastaveni" -#define MSG_LOAD_EPROM "Nacist nastaveni" -#define MSG_RESTORE_FAILSAFE "Obnovit vychozi" -#define MSG_REFRESH "Obnovit" -#define MSG_WATCH "Info obrazovka" -#define MSG_PREPARE "Priprava tisku" -#define MSG_TUNE "Doladeni tisku" -#define MSG_PAUSE_PRINT "Pozastavit tisk" -#define MSG_RESUME_PRINT "Obnovit tisk" -#define MSG_STOP_PRINT "Zastavit tisk" -#define MSG_CARD_MENU "Tisknout z SD" -#define MSG_NO_CARD "Zadna SD karta" -#define MSG_DWELL "Uspano..." -#define MSG_USERWAIT "Cekani na uziv..." -#define MSG_RESUMING "Obnovovani tisku" -#define MSG_PRINT_ABORTED "Tisk zrusen" -#define MSG_NO_MOVE "Zadny pohyb." -#define MSG_KILLED "PRERUSENO. " -#define MSG_STOPPED "ZASTAVENO. " -#define MSG_CONTROL_RETRACT "Retrakt mm" -#define MSG_CONTROL_RETRACT_SWAP "Vymena Re.mm" -#define MSG_CONTROL_RETRACTF "Retraktovat V" -#define MSG_CONTROL_RETRACT_ZLIFT "Zvednuti Z mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "AutoRetr." -#define MSG_FILAMENTCHANGE "Vymenit filament" -#define MSG_INIT_SDCARD "Nacist SD kartu" -#define MSG_CNG_SDCARD "Vymenit SD kartu" -#define MSG_ZPROBE_OUT "Sonda Z mimo podl" -#define MSG_HOME "Domu" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "prvni" -#define MSG_ZPROBE_ZOFFSET "Z ofset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop abort" -#define MSG_HEATING_FAILED_LCD "Chyba zahrivani" -#define MSG_ERR_REDUNDANT_TEMP "REDUND. TEPLOTA" -#define MSG_THERMAL_RUNAWAY "TEPLOTNI SKOK" -#define MSG_ERR_MAXTEMP "VYSOKA TEPLOTA" -#define MSG_ERR_MINTEMP "NIZKA TEPLOTA" -#define MSG_ERR_MAXTEMP_BED "VYS. TEPL. PODL." -#define MSG_ERR_MINTEMP_BED "NIZ. TEPL. PODL." -#define MSG_HALTED "TISK. ZASTAVENA" -#define MSG_PLEASE_RESET "Provedte reset" -#define MSG_SHORT_DAY "d" -#define MSG_SHORT_HOUR "h" -#define MSG_SHORT_MINUTE "m" -#define MSG_HEATING "Zahrivani..." -#define MSG_HEATING_COMPLETE "Zahrati hotovo." -#define MSG_BED_HEATING "Zahrivani podl." -#define MSG_BED_DONE "Podlozka hotova." -#define MSG_DELTA_CALIBRATE "Delta Kalibrace" -#define MSG_DELTA_CALIBRATE_X "Kalibrovat X" -#define MSG_DELTA_CALIBRATE_Y "Kalibrovat Y" -#define MSG_DELTA_CALIBRATE_Z "Kalibrovat Z" -#define MSG_DELTA_CALIBRATE_CENTER "Kalibrovat Stred" -#define MSG_INFO_MENU "O tiskarne" -#define MSG_INFO_PRINTER_MENU "Info o tiskarne" -#define MSG_INFO_STATS_MENU "Statistika" -#define MSG_INFO_BOARD_MENU "Info o desce" -#define MSG_INFO_THERMISTOR_MENU "Termistory" -#define MSG_INFO_EXTRUDERS "Extrudery" -#define MSG_INFO_BAUDRATE "Rychlost" -#define MSG_INFO_PROTOCOL "Protokol" -#if LCD_WIDTH > 19 - #define MSG_INFO_PRINT_COUNT "Pocet tisku" - #define MSG_INFO_COMPLETED_PRINTS "Dokonceno" - #define MSG_INFO_PRINT_TIME "Celkovy cas" - #define MSG_INFO_PRINT_LONGEST "Nejdelsi tisk" - #define MSG_INFO_PRINT_FILAMENT "Celkem vytlaceno" -#else - #define MSG_INFO_PRINT_COUNT "Tisky" - #define MSG_INFO_COMPLETED_PRINTS "Hotovo" - #define MSG_INFO_PRINT_TIME "Cas" - #define MSG_INFO_PRINT_LONGEST "Nejdelsi" - #define MSG_INFO_PRINT_FILAMENT "Vytlaceno" -#endif -#define MSG_INFO_MIN_TEMP "Teplota min" -#define MSG_INFO_MAX_TEMP "Teplota max" -#define MSG_INFO_PSU "Nap. zdroj" - -#define MSG_FILAMENT_CHANGE_HEADER "VYMENA FILAMENTU" -#define MSG_FILAMENT_CHANGE_OPTION_HEADER "CO DAL?" -#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "Jeste vytlacit" -#define MSG_FILAMENT_CHANGE_OPTION_RESUME "Obnovit tisk" -#if LCD_HEIGHT >= 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Cekejte prosim" - #define MSG_FILAMENT_CHANGE_INIT_2 "na zahajeni" - #define MSG_FILAMENT_CHANGE_INIT_3 "vymeny filamentu" - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Cekejte prosim" - #define MSG_FILAMENT_CHANGE_UNLOAD_2 "na vysunuti" - #define MSG_FILAMENT_CHANGE_UNLOAD_3 "filamentu" - #define MSG_FILAMENT_CHANGE_INSERT_1 "Vlozte filament" - #define MSG_FILAMENT_CHANGE_INSERT_2 "a stisknete" - #define MSG_FILAMENT_CHANGE_INSERT_3 "tlacitko..." - #define MSG_FILAMENT_CHANGE_LOAD_1 "Cekejte prosim" - #define MSG_FILAMENT_CHANGE_LOAD_2 "na zavedeni" - #define MSG_FILAMENT_CHANGE_LOAD_3 "filamentu" - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Cekejte prosim" - #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "na vytlaceni" - #define MSG_FILAMENT_CHANGE_EXTRUDE_3 "filamentu" - #define MSG_FILAMENT_CHANGE_RESUME_1 "Cekejte prosim" - #define MSG_FILAMENT_CHANGE_RESUME_2 "na pokracovani" - #define MSG_FILAMENT_CHANGE_RESUME_3 "tisku" -#else // LCD_HEIGHT < 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Cekejte..." - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Vysouvani..." - #define MSG_FILAMENT_CHANGE_INSERT_1 "Vlozte, kliknete" - #define MSG_FILAMENT_CHANGE_LOAD_1 "Zavadeni..." - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Vytlacovani..." - #define MSG_FILAMENT_CHANGE_RESUME_1 "Pokracovani..." -#endif // LCD_HEIGHT < 4 - -#endif // LANGUAGE_CZ_H diff --git a/lib/Marlin/language_da.h b/lib/Marlin/language_da.h deleted file mode 100644 index b107ca0..0000000 --- a/lib/Marlin/language_da.h +++ /dev/null @@ -1,197 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Danish - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_DA_H -#define LANGUAGE_DA_H - -#define MAPPER_C2C3 -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " er klar" -#define MSG_SD_INSERTED "Kort isat" -#define MSG_SD_REMOVED "Kort fjernet" -#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters -#define MSG_MAIN "Menu" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "SlÃ¥ alle steppere fra" -#define MSG_AUTO_HOME "Auto Home" // G28 -#define MSG_AUTO_HOME_X "Home X" -#define MSG_AUTO_HOME_Y "Home Y" -#define MSG_AUTO_HOME_Z "Home Z" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Tryk for at starte bed level" -#define MSG_LEVEL_BED_NEXT_POINT "Næste punkt" -#define MSG_LEVEL_BED_DONE "Bed level er færdig!" -#define MSG_LEVEL_BED_CANCEL "Annuller bed level" -#define MSG_SET_HOME_OFFSETS "Sæt forskyding af home" -#define MSG_HOME_OFFSETS_APPLIED "Forskydninger af home pos. er tilføjet" -#define MSG_SET_ORIGIN "Sæt origin" -#define MSG_PREHEAT_1 "Forvarm PLA" -#define MSG_PREHEAT_1_N "Forvarm PLA " -#define MSG_PREHEAT_1_ALL "Forvarm PLA Alle" -#define MSG_PREHEAT_1_BEDONLY "Forvarm PLA Bed" -#define MSG_PREHEAT_1_SETTINGS "Forvarm PLA conf" -#define MSG_PREHEAT_2 "Forvarm ABS" -#define MSG_PREHEAT_2_N "Forvarm ABS " -#define MSG_PREHEAT_2_ALL "Forvarm ABS Alle" -#define MSG_PREHEAT_2_BEDONLY "Forvarm ABS Bed" -#define MSG_PREHEAT_2_SETTINGS "Forvarm ABS conf" -#define MSG_H1 "1" -#define MSG_H2 "2" -#define MSG_H3 "3" -#define MSG_H4 "4" -#define MSG_COOLDOWN "Afkøl" -#define MSG_SWITCH_PS_ON "SlÃ¥ strøm til" -#define MSG_SWITCH_PS_OFF "SlÃ¥ strøm fra" -#define MSG_EXTRUDE "Extruder" -#define MSG_RETRACT "Retract" -#define MSG_MOVE_AXIS "Flyt akser" -#define MSG_LEVEL_BED "Juster bed" -#define MSG_MOVE_X "Flyt X" -#define MSG_MOVE_Y "Flyt Y" -#define MSG_MOVE_Z "Flyt Z" -#define MSG_MOVE_E "Extruder" -#define MSG_MOVE_E1 "1" -#define MSG_MOVE_E2 "2" -#define MSG_MOVE_E3 "3" -#define MSG_MOVE_E4 "4" -#define MSG_MOVE_01MM "Flyt 0.1mm" -#define MSG_MOVE_1MM "Flyt 1mm" -#define MSG_MOVE_10MM "Flyt 10mm" -#define MSG_SPEED "Hastighed" -#define MSG_BED_Z "Plade Z" -#define MSG_NOZZLE "Dyse" -#define MSG_N1 " 1" -#define MSG_N2 " 2" -#define MSG_N3 " 3" -#define MSG_N4 " 4" -#define MSG_BED "Plade" -#define MSG_FAN_SPEED "Blæser hastighed" -#define MSG_FLOW "Flow" -#define MSG_CONTROL "Kontrol" -#define MSG_MIN " \002 Min" -#define MSG_MAX " \002 Max" -#define MSG_FACTOR " \002 Fact" -#define MSG_AUTOTEMP "Autotemp" -#define MSG_ON "Til " -#define MSG_OFF "Fra" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_E1 " E1" -#define MSG_E2 " E2" -#define MSG_E3 " E3" -#define MSG_E4 " E4" -#define MSG_ACC "Accel" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retract" -#define MSG_A_TRAVEL "A-rejse" -#define MSG_XSTEPS "Xsteps/mm" -#define MSG_YSTEPS "Ysteps/mm" -#define MSG_ZSTEPS "Zsteps/mm" -#define MSG_ESTEPS "Esteps/mm" -#define MSG_TEMPERATURE "Temperatur" -#define MSG_MOTION "Bevægelse" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_DIAM_E1 " 1" -#define MSG_DIAM_E2 " 2" -#define MSG_DIAM_E3 " 3" -#define MSG_DIAM_E4 " 4" -#define MSG_CONTRAST "LCD kontrast" -#define MSG_STORE_EPROM "Gem i EEPROM" -#define MSG_LOAD_EPROM "Hent fra EEPROM" -#define MSG_RESTORE_FAILSAFE "Gendan failsafe" -#define MSG_REFRESH "Genopfrisk" -#define MSG_WATCH "Info skærm" -#define MSG_PREPARE "Forbered" -#define MSG_TUNE "Tune" -#define MSG_PAUSE_PRINT "Pause printet" -#define MSG_RESUME_PRINT "Forsæt printet" -#define MSG_STOP_PRINT "Stop printet" -#define MSG_CARD_MENU "Print fra SD" -#define MSG_NO_CARD "Intet SD kort" -#define MSG_DWELL "Dvale..." -#define MSG_USERWAIT "Venter pÃ¥ bruger..." -#define MSG_RESUMING "Forsætter printet" -#define MSG_PRINT_ABORTED "Print annulleret" -#define MSG_NO_MOVE "Ingen bevægelse." -#define MSG_KILLED "DRÆBT. " -#define MSG_STOPPED "STOPPET. " -#define MSG_CONTROL_RETRACT "Tilbagetræk mm" -#define MSG_CONTROL_RETRACT_SWAP "Skift Re.mm" -#define MSG_CONTROL_RETRACTF "Tilbagetræk V" -#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "AutoRetr." -#define MSG_FILAMENTCHANGE "Skift filament" -#define MSG_INIT_SDCARD "Init. SD card" -#define MSG_CNG_SDCARD "Skift SD kort" -#define MSG_ZPROBE_OUT "Probe udenfor plade" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop abort" -#define MSG_HEATING_FAILED_LCD "Opvarmning mislykkedes" -#define MSG_ERR_REDUNDANT_TEMP "Fejl: reserve temp" -#define MSG_THERMAL_RUNAWAY "Temp løber løbsk" -#define MSG_ERR_MAXTEMP "Fejl: Maks temp" -#define MSG_ERR_MINTEMP "Fejl: Min temp" -#define MSG_ERR_MAXTEMP_BED "Fejl: Maks Plsde temp" -#define MSG_ERR_MINTEMP_BED "Fejl: Min Plade temp" -#define MSG_HEATING "Opvarmer..." -#define MSG_HEATING_COMPLETE "Opvarmet" -#define MSG_BED_HEATING "Opvarmer plade" -#define MSG_BED_DONE "Plade opvarmet" -#define MSG_DELTA_CALIBRATE "Delta Kalibrering" -#define MSG_DELTA_CALIBRATE_X "Kalibrer X" -#define MSG_DELTA_CALIBRATE_Y "Kalibrer Y" -#define MSG_DELTA_CALIBRATE_Z "Kalibrer Z" -#define MSG_DELTA_CALIBRATE_CENTER "Kalibrerings Center" - -#endif // LANGUAGE_DA_H diff --git a/lib/Marlin/language_de.h b/lib/Marlin/language_de.h deleted file mode 100644 index 9744378..0000000 --- a/lib/Marlin/language_de.h +++ /dev/null @@ -1,227 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * German - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_DE_H -#define LANGUAGE_DE_H - -#define MAPPER_C2C3 -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " bereit" -#define MSG_SD_INSERTED "SD-Karte erkannt" -#define MSG_SD_REMOVED "SD-Karte entfernt" -#define MSG_MAIN "Hauptmenü" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Motoren aus" // M84 -#define MSG_AUTO_HOME "Home" // G28 -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Klick für Start" -#define MSG_LEVEL_BED_DONE "Fertig" -#define MSG_LEVEL_BED_CANCEL "Abbruch" -#define MSG_SET_HOME_OFFSETS "Setze Homeoffsets" -#define MSG_HOME_OFFSETS_APPLIED "Offsets aktiv" -#define MSG_SET_ORIGIN "Setze Nullpunkt" //"G92 X0 Y0 Z0" commented out in ultralcd.cpp -#define MSG_PREHEAT_1 "Vorwärmen PLA" -#define MSG_PREHEAT_1_N "Vorwärmen PLA " -#define MSG_PREHEAT_1_ALL "Vorw. PLA Alle" -#define MSG_PREHEAT_1_BEDONLY "Vorw. PLA Bett" -#define MSG_PREHEAT_1_SETTINGS "Vorw. PLA Einst." -#define MSG_PREHEAT_2 "Vorwärmen ABS" -#define MSG_PREHEAT_2_N "Vorwärmen ABS " -#define MSG_PREHEAT_2_ALL "Vorw. ABS Alle" -#define MSG_PREHEAT_2_BEDONLY "Vorw. ABS Bett" -#define MSG_PREHEAT_2_SETTINGS "Vorw. ABS Einst." -#define MSG_COOLDOWN "Abkühlen" -#define MSG_SWITCH_PS_ON "Netzteil ein" -#define MSG_SWITCH_PS_OFF "Netzteil aus" -#define MSG_EXTRUDE "Extrudieren" -#define MSG_RETRACT "Retract" -#define MSG_MOVE_AXIS "Bewegen" -#define MSG_LEVEL_BED "Bett nivellieren" -#define MSG_MOVE_X "X" -#define MSG_MOVE_Y "Y" -#define MSG_MOVE_Z "Z" -#define MSG_MOVE_E "E" -#define MSG_MOVE_01MM " 0.1 mm" -#define MSG_MOVE_1MM " 1.0 mm" -#define MSG_MOVE_10MM "10.0 mm" -#define MSG_SPEED "Geschw." -#define MSG_BED_Z "Bett Z" -#define MSG_NOZZLE "Düse" -#define MSG_BED "Bett" -#define MSG_FAN_SPEED "Lüfter" -#define MSG_FLOW "Durchfluss" -#define MSG_CONTROL "Einstellungen" -#define MSG_MIN LCD_STR_THERMOMETER " min" -#define MSG_MAX LCD_STR_THERMOMETER " max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Faktor" -#define MSG_AUTOTEMP "AutoTemp" -#define MSG_ON "Ein" -#define MSG_OFF "Aus" -#define MSG_PID_P "PID P" -#define MSG_PID_I "PID I" -#define MSG_PID_D "PID D" -#define MSG_PID_C "PID C" -#define MSG_ACC "A" -#define MSG_VXY_JERK "V XY Jerk" -#define MSG_VZ_JERK "V Z Jerk" -#define MSG_VE_JERK "V E Jerk" -#define MSG_VMAX "V max " // space by purpose -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "V min" -#define MSG_VTRAV_MIN "V min Leerfahrt" -#define MSG_AMAX "A max " // space by purpose -#define MSG_A_RETRACT "A Retract" -#define MSG_A_TRAVEL "A Leerfahrt" -#define MSG_XSTEPS "X Steps/mm" -#define MSG_YSTEPS "Y Steps/mm" -#define MSG_ZSTEPS "Z Steps/mm" -#define MSG_ESTEPS "E Steps/mm" -#define MSG_TEMPERATURE "Temperatur" -#define MSG_MOTION "Bewegung" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm³" -#define MSG_FILAMENT_DIAM "D Fil." -#define MSG_CONTRAST "LCD Kontrast" -#define MSG_STORE_EPROM "EPROM speichern" -#define MSG_LOAD_EPROM "EPROM laden" -#define MSG_RESTORE_FAILSAFE "Standardkonfiguration" -#define MSG_REFRESH "Aktualisieren" -#define MSG_WATCH "Info" -#define MSG_PREPARE "Vorbereitung" -#define MSG_TUNE "Justierung" -#define MSG_PAUSE_PRINT "SD-Druck Pause" -#define MSG_RESUME_PRINT "SD-Druck Fortsetzung" -#define MSG_STOP_PRINT "SD-Druck Abbruch" -#define MSG_CARD_MENU "SD-Karte" -#define MSG_NO_CARD "Keine SD-Karte" -#define MSG_DWELL "Warten..." -#define MSG_USERWAIT "Warte auf Nutzer" -#define MSG_RESUMING "Druckfortsetzung" -#define MSG_PRINT_ABORTED "Druck abgebrochen" -#define MSG_NO_MOVE "Motoren eingeschaltet" -#define MSG_KILLED "KILLED" -#define MSG_STOPPED "ANGEHALTEN" -#define MSG_CONTROL_RETRACT "Retract mm" -#define MSG_CONTROL_RETRACT_SWAP "Wechs. Retract mm" -#define MSG_CONTROL_RETRACTF "Retract V" -#define MSG_CONTROL_RETRACT_ZLIFT "Z-Hop mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Wechs. UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "AutoRetract" -#define MSG_FILAMENTCHANGE "Filament wechseln" -#define MSG_INIT_SDCARD "SD-Karte erkennen" // Manually initialize the SD-card via user interface -#define MSG_CNG_SDCARD "SD-Karte getauscht" // SD-card changed by user. For machines with no autocarddetect. Both send "M21" -#define MSG_ZPROBE_OUT "Sensor ausserhalb" -#define MSG_HOME "Vorher" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "homen" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop-Abbr. ein" -#define MSG_HEATING_FAILED_LCD "HEIZEN FEHLGESCHLAGEN" -#define MSG_ERR_REDUNDANT_TEMP "REDUND. TEMPERATURABWEICHUNG" -#define MSG_THERMAL_RUNAWAY LCD_STR_THERMOMETER " NICHT ERREICHT" -#define MSG_ERR_MAXTEMP LCD_STR_THERMOMETER " ÜBERSCHRITTEN" -#define MSG_ERR_MINTEMP LCD_STR_THERMOMETER " UNTERSCHRITTEN" -#define MSG_ERR_MAXTEMP_BED "BETT " LCD_STR_THERMOMETER " ÜBERSCHRITTEN" -#define MSG_ERR_MINTEMP_BED "BETT " LCD_STR_THERMOMETER " UNTERSCHRITTEN" -#define MSG_HEATING "Aufheizen..." -#define MSG_HEATING_COMPLETE "Aufgeheizt" -#define MSG_BED_HEATING "Bett aufheizen" -#define MSG_BED_DONE "Bett aufgeheizt" -#define MSG_DELTA_CALIBRATE "Delta kalibrieren" -#define MSG_DELTA_CALIBRATE_X "Kalibriere X" -#define MSG_DELTA_CALIBRATE_Y "Kalibriere Y" -#define MSG_DELTA_CALIBRATE_Z "Kalibriere Z" -#define MSG_DELTA_CALIBRATE_CENTER "Kalibriere Mitte" - -#define MSG_INFO_MENU "Über den Drucker" -#define MSG_INFO_PRINTER_MENU "Drucker Info" -#define MSG_INFO_STATS_MENU "Drucker Stats" -#define MSG_INFO_BOARD_MENU "Board Info" -#define MSG_INFO_THERMISTOR_MENU "Thermistors" -#define MSG_INFO_EXTRUDERS "Extruders" -#define MSG_INFO_BAUDRATE "Baud" -#define MSG_INFO_PROTOCOL "Protokol" - -#if LCD_WIDTH > 19 - #define MSG_INFO_PRINT_COUNT "Gesamte Drucke " - #define MSG_INFO_COMPLETED_PRINTS "Beendete Drucke " - #define MSG_INFO_PRINT_TIME "Gesamte Druckzeit" -#else - #define MSG_INFO_PRINT_COUNT "Prints " - #define MSG_INFO_COMPLETED_PRINTS "Completed" - #define MSG_INFO_PRINT_TIME "Duration " -#endif -#define MSG_INFO_MIN_TEMP "Min Temp" -#define MSG_INFO_MAX_TEMP "Max Temp" -#define MSG_INFO_PSU "Stromversorgung" - -#define MSG_FILAMENT_CHANGE_HEADER "ÄNDERE FILAMENT" -#define MSG_FILAMENT_CHANGE_OPTION_HEADER "ÄNDERE OPTIONEN:" -#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "Extrude mehr" -#define MSG_FILAMENT_CHANGE_OPTION_RESUME "Drucke weiter" - -#if LCD_HEIGHT >= 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Warte auf den" - #define MSG_FILAMENT_CHANGE_INIT_2 "Start zum " - #define MSG_FILAMENT_CHANGE_INIT_3 "Filament wechsel" - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Warte auf das" - #define MSG_FILAMENT_CHANGE_UNLOAD_2 "herrausnehmen" - #define MSG_FILAMENT_CHANGE_UNLOAD_3 "des Filaments" - #define MSG_FILAMENT_CHANGE_INSERT_1 "Fädel Filament" - #define MSG_FILAMENT_CHANGE_INSERT_2 "ein und drücke" - #define MSG_FILAMENT_CHANGE_INSERT_3 "den Knopf..." - #define MSG_FILAMENT_CHANGE_LOAD_1 "Warte auf das" - #define MSG_FILAMENT_CHANGE_LOAD_2 "laden des" - #define MSG_FILAMENT_CHANGE_LOAD_3 "Filaments" - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Warte auf das" - #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "Extruden des" - #define MSG_FILAMENT_CHANGE_EXTRUDE_3 "Filaments" - #define MSG_FILAMENT_CHANGE_RESUME_1 "Warte auf das" - #define MSG_FILAMENT_CHANGE_RESUME_2 "fortfahren des" - #define MSG_FILAMENT_CHANGE_RESUME_3 "Druckes" -#else // LCD_HEIGHT < 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Bitte warten..." - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Auswerfen..." - #define MSG_FILAMENT_CHANGE_INSERT_1 "Laden und Klick" - #define MSG_FILAMENT_CHANGE_LOAD_1 "Laden..." - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Extruden..." - #define MSG_FILAMENT_CHANGE_RESUME_1 "Weitermachen..." -#endif // LCD_HEIGHT < 4 - -#endif // LANGUAGE_DE_H diff --git a/lib/Marlin/language_el-gr.h b/lib/Marlin/language_el-gr.h deleted file mode 100644 index 510e8aa..0000000 --- a/lib/Marlin/language_el-gr.h +++ /dev/null @@ -1,198 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Greek (Greece) - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_EL_GR_H -#define LANGUAGE_EL_GR_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT - -//#define MAPPER_CECF -//#define DISPLAY_CHARSET_ISO10646_GREEK - -#define WELCOME_MSG MACHINE_NAME " έτοιμο." -#define MSG_SD_INSERTED "Εισαγωγή κάÏτας" -#define MSG_SD_REMOVED "ΑφαίÏεση κάÏτας" -#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters -#define MSG_MAIN "Βασική Οθόνη" -#define MSG_AUTOSTART "Αυτόματη εκκίνηση" -#define MSG_DISABLE_STEPPERS "ΑπενεÏγοποίηση βηματιστή" -#define MSG_AUTO_HOME "Αυτομ. επαναφοÏά στο αÏχικό σημείο" -#define MSG_AUTO_HOME_X "ΑÏχικό σημείο X" -#define MSG_AUTO_HOME_Y "ΑÏχικό σημείο Y" -#define MSG_AUTO_HOME_Z "ΑÏχικό σημείο Z" -#define MSG_LEVEL_BED_HOMING "ΕπαναφοÏά στο αÏχικό σημείο ΧΥΖ" -#define MSG_LEVEL_BED_WAITING "Κάντε κλικ για να ξεκινήσετε" -#define MSG_LEVEL_BED_NEXT_POINT "Επόμενο σημείο" -#define MSG_LEVEL_BED_DONE "ΟλοκλήÏωση επιπεδοποίησης!" -#define MSG_LEVEL_BED_CANCEL "ΑκÏÏωση" -#define MSG_SET_HOME_OFFSETS "ΟÏισμός βασικών μετατοπίσεων" -#define MSG_HOME_OFFSETS_APPLIED "ΕφαÏμόστηκαν οι μετατοπίσεις" -#define MSG_SET_ORIGIN "ΟÏισμός Ï€Ïοέλευσης" -#define MSG_PREHEAT_1 "ΠÏοθέÏμανση PLA" -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 " όλα" -#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 " κλίνη" -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 " επιβεβαίωση" -#define MSG_PREHEAT_2 "ΠÏοθέÏμανση ABS" -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 " όλα" -#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 " Bed" -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 " επιβεβαίωση" -#define MSG_H1 "1" -#define MSG_H2 "2" -#define MSG_H3 "3" -#define MSG_H4 "4" -#define MSG_COOLDOWN "Μειωση θεÏμοκÏασιας" -#define MSG_SWITCH_PS_ON "ΕνεÏγοποίηση" -#define MSG_SWITCH_PS_OFF "ΑπενεÏγοποίηση" -#define MSG_EXTRUDE "Εξώθηση" -#define MSG_RETRACT "ΑνάσυÏση" -#define MSG_MOVE_AXIS "Μετακίνηση άξονα" -#define MSG_LEVEL_BED "Επιπεδοποίηση κλίνης" -#define MSG_MOVE_X "Μετακίνηση X" -#define MSG_MOVE_Y "Μετακίνηση Y" -#define MSG_MOVE_Z "Μετακίνηση Z" -#define MSG_MOVE_E "ΕξωθητήÏας" -#define MSG_MOVE_E1 "1" -#define MSG_MOVE_E2 "2" -#define MSG_MOVE_E3 "3" -#define MSG_MOVE_E4 "4" -#define MSG_MOVE_01MM "Μετακίνηση 0,1 μμ" -#define MSG_MOVE_1MM "Μετακίνηση 1 μμ" -#define MSG_MOVE_10MM "Μετακίνηση 10 μμ" -#define MSG_SPEED "ΤαχÏτητα" -#define MSG_BED_Z "Κλίνη Z" -#define MSG_NOZZLE "ΑκÏοφÏσιο" -#define MSG_N1 " 1" -#define MSG_N2 " 2" -#define MSG_N3 " 3" -#define MSG_N4 " 4" -#define MSG_BED "Κλίνη" -#define MSG_FAN_SPEED "ΤαχÏτητα ανεμιστήÏα" -#define MSG_FLOW "Ροή" -#define MSG_CONTROL "Έλεγχος" -#define MSG_MIN " " LCD_STR_THERMOMETER " Min" -#define MSG_MAX " " LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR " " LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Αυτομ. ÏÏθμιση θεÏμοκÏασίας" -#define MSG_ON "ΕνεÏγοποιημένο" -#define MSG_OFF "ΑπενεÏγοποιημένο" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_E1 " E1" -#define MSG_E2 " E2" -#define MSG_E3 " E3" -#define MSG_E4 " E4" -#define MSG_ACC "Επιτάχυνση" -#define MSG_VXY_JERK "VαντίδÏαση xy" -#define MSG_VZ_JERK "VαντίδÏαση z" -#define MSG_VE_JERK "VαντίδÏαση e" -#define MSG_VMAX "Vμεγ " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vελαχ" -#define MSG_VTRAV_MIN "Vελάχ. μετατόπιση" -#define MSG_AMAX "Aμεγ " -#define MSG_A_RETRACT "Α-ανάσυÏση" -#define MSG_A_TRAVEL "Α-μετατόπιση" -#define MSG_XSTEPS "Bήματα X ανά μμ" -#define MSG_YSTEPS "Bήματα Î¥ ανά μμ" -#define MSG_ZSTEPS "Bήματα Ζ ανά μμ" -#define MSG_ESTEPS "Bήματα Ε ανά μμ" -#define MSG_TEMPERATURE "ΘεÏμοκÏασία" -#define MSG_MOTION "Κίνηση" -#define MSG_VOLUMETRIC "Îήμα" -#define MSG_VOLUMETRIC_ENABLED "Ε σε μμ3" -#define MSG_FILAMENT_DIAM "ΔιάμετÏος νήματος" -#define MSG_DIAM_E1 " 1" -#define MSG_DIAM_E2 " 2" -#define MSG_DIAM_E3 " 3" -#define MSG_DIAM_E4 " 4" -#define MSG_CONTRAST "ΚοντÏάστ LCD" -#define MSG_STORE_EPROM "Αποθήκευση" -#define MSG_LOAD_EPROM "ΦόÏτωση" -#define MSG_RESTORE_FAILSAFE "ΕπαναφοÏά ασφαλοÏÏ‚ αντιγÏάφου" -#define MSG_REFRESH "Ανανέωση" -#define MSG_WATCH "Οθόνη πληÏοφόÏησης" -#define MSG_PREPARE "ΠÏοετοιμασία" -#define MSG_TUNE "Συντονισμός" -#define MSG_PAUSE_PRINT "ΠαÏση εκτÏπωσης" -#define MSG_RESUME_PRINT "Συνέχιση εκτÏπωσης" -#define MSG_STOP_PRINT "Διακοπή εκτÏπωσης" -#define MSG_CARD_MENU "ΕκτÏπωση από SD" -#define MSG_NO_CARD "Δεν βÏέθηκε SD" -#define MSG_DWELL "Αναστολή λειτουÏγίας..." -#define MSG_USERWAIT "Αναμονή για χÏήστη…" -#define MSG_RESUMING "Συνεχίζεται η εκτÏπωση" -#define MSG_PRINT_ABORTED "Διακόπτεται η εκτÏπωση" -#define MSG_NO_MOVE "Καμία κίνηση." -#define MSG_KILLED "ΤΕΡΜΑΤΙΣΜΟΣ. " -#define MSG_STOPPED "ΔΙΑΚΟΠΗ. " -#define MSG_CONTROL_RETRACT "ΑνάσυÏση μμ" -#define MSG_CONTROL_RETRACT_SWAP "Εναλλαγή ανάσυÏσης μμ" -#define MSG_CONTROL_RETRACTF "ΑνάσυÏση V" -#define MSG_CONTROL_RETRACT_ZLIFT "Μεταπήδηση μμ" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "Αυτόματη ανάσυÏση" -#define MSG_FILAMENTCHANGE "Αλλαγή νήματος" -#define MSG_INIT_SDCARD "ΠÏοετοιμασία κάÏτας SD" -#define MSG_CNG_SDCARD "Αλλαγή κάÏτας SD" -#define MSG_ZPROBE_OUT "ΔιεÏεÏνηση Z εκτός κλίνης" -#define MSG_YX_UNHOMED "ΕπαναφοÏά Χ/Î¥ Ï€Ïιν από Ζ" -#define MSG_XYZ_UNHOMED "ΕπαναφοÏά ΧΥΖ Ï€Ïώτα" -#define MSG_ZPROBE_ZOFFSET "Μετατόπιση Ζ" -#define MSG_BABYSTEP_X "ΜικÏÏŒ βήμα Χ" -#define MSG_BABYSTEP_Y "ΜικÏÏŒ βήμα Î¥" -#define MSG_BABYSTEP_Z "ΜικÏÏŒ βήμα Ζ" -#define MSG_ENDSTOP_ABORT "Ματαίωση endstop " -#define MSG_HEATING_FAILED_LCD "Ανεπιτυχής θέÏμανση" -#define MSG_ERR_REDUNDANT_TEMP "Λάθος: ΠΛΕΟÎΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ" -#define MSG_THERMAL_RUNAWAY "ΔΙΑΦΥΓΗ ΘΕΡΜΟΤΗΤΑΣ" -#define MSG_ERR_MAXTEMP "Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ" -#define MSG_ERR_MINTEMP "Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ" -#define MSG_ERR_MAXTEMP_BED "Λάθος: ΜΕΓΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙÎΗΣ" -#define MSG_ERR_MINTEMP_BED "Λάθος: ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΤΗΤΑ ΚΛΙÎΗΣ" -#define MSG_HEATING "ΘεÏμαίνεται…" -#define MSG_HEATING_COMPLETE "Η θέÏμανση ολοκληÏώθηκε." -#define MSG_BED_HEATING "ΘέÏμανση κλίνης." -#define MSG_BED_DONE "Η κλίνη ολοκληÏώθηκε." -#define MSG_DELTA_CALIBRATE "Βαθμονόμηση Delta" -#define MSG_DELTA_CALIBRATE_X "Βαθμονόμηση X" -#define MSG_DELTA_CALIBRATE_Y "Βαθμονόμηση Y" -#define MSG_DELTA_CALIBRATE_Z "Βαθμονόμηση Z" -#define MSG_DELTA_CALIBRATE_CENTER "Βαθμονόμηση κέντÏου" - -#endif // LANGUAGE_EL_GR_H diff --git a/lib/Marlin/language_el.h b/lib/Marlin/language_el.h deleted file mode 100644 index 9d1c855..0000000 --- a/lib/Marlin/language_el.h +++ /dev/null @@ -1,254 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Greek - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_EL_H -#define LANGUAGE_EL_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT - -#define MAPPER_CECF -#define DISPLAY_CHARSET_ISO10646_GREEK - -#define WELCOME_MSG MACHINE_NAME " έτοιμο." -#define MSG_SD_INSERTED "Εισαγωγή κάÏτας" -#define MSG_SD_REMOVED "ΑφαίÏεση κάÏτας" -#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters -#define MSG_MAIN "Βασική Οθόνη" -#define MSG_AUTOSTART "Αυτόματη εκκίνηση" -#define MSG_DISABLE_STEPPERS "ΑπενεÏγοποίηση ΜοτέÏ" -#define MSG_AUTO_HOME "Αυτομ. επαναφοÏά στο αÏχικό σημείο" //SHORTEN -#define MSG_AUTO_HOME_X "ΑÏχικό σημείο X" -#define MSG_AUTO_HOME_Y "ΑÏχικό σημείο Y" -#define MSG_AUTO_HOME_Z "ΑÏχικό σημείο Z" -#define MSG_LEVEL_BED_HOMING "ΕπαναφοÏά Επ. ΕκτÏπωσης" //SHORTEN -#define MSG_LEVEL_BED_WAITING "Επιπεδοποίηση επ. ΕκτÏπωσης πεÏιμενει" //SHORTEN -#define MSG_LEVEL_BED_NEXT_POINT "Επόμενο σημείο" -#define MSG_LEVEL_BED_DONE "ΟλοκλήÏωση επιπεδοποίησης!" //SHORTEN -#define MSG_LEVEL_BED_CANCEL "ΑκÏÏωση" -#define MSG_SET_HOME_OFFSETS "ΟÏισμός βασικών μετατοπίσεων" //SHORTEN -#define MSG_HOME_OFFSETS_APPLIED "ΕφαÏμόστηκαν οι μετατοπίσεις" //SHORTEN -#define MSG_SET_ORIGIN "ΟÏισμός Ï€Ïοέλευσης" -#define MSG_PREHEAT_1 "ΠÏοθέÏμανση PLA" -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 " όλα" -#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 " bed" //SHORTEN -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 " επιβεβαίωση" //SHORTEN -#define MSG_PREHEAT_2 "ΠÏοθέÏμανση ABS" -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 " όλα" -#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 " bed" //SHORTEN -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 " επιβεβαίωση" //SHORTEN -#define MSG_H1 "1" -#define MSG_H2 "2" -#define MSG_H3 "3" -#define MSG_H4 "4" -#define MSG_COOLDOWN "Μειωση θεÏμοκÏασιας" -#define MSG_SWITCH_PS_ON "ΕνεÏγοποίηση" -#define MSG_SWITCH_PS_OFF "ΑπενεÏγοποίηση" -#define MSG_EXTRUDE "Εξώθηση" -#define MSG_RETRACT "ΑνάσυÏση" -#define MSG_MOVE_AXIS "Μετακίνηση άξονα" -#define MSG_LEVEL_BED "Επιπεδοποίηση Επ. ΕκτÏπωσης" //SHORTEN -#define MSG_MOVE_X "Μετακίνηση X" -#define MSG_MOVE_Y "Μετακίνηση Y" -#define MSG_MOVE_Z "Μετακίνηση Z" -#define MSG_MOVE_E "ΕξωθητήÏας" -#define MSG_MOVE_E1 "1" -#define MSG_MOVE_E2 "2" -#define MSG_MOVE_E3 "3" -#define MSG_MOVE_E4 "4" -#define MSG_MOVE_01MM "Μετακίνηση 0,1μμ" -#define MSG_MOVE_1MM "Μετακίνηση 1μμ" -#define MSG_MOVE_10MM "Μετακίνηση 10μμ" -#define MSG_SPEED "ΤαχÏτητα" -#define MSG_BED_Z "Επ. ΕκτÏπωσης Z" -#define MSG_NOZZLE "ΑκÏοφÏσιο" -#define MSG_N1 " 1" -#define MSG_N2 " 2" -#define MSG_N3 " 3" -#define MSG_N4 " 4" -#define MSG_BED "Κλίνη" -#define MSG_FAN_SPEED "ΤαχÏτητα ανεμιστήÏα" -#define MSG_FLOW "Ροή" -#define MSG_CONTROL "Έλεγχος" -#define MSG_MIN " " LCD_STR_THERMOMETER " Min" -#define MSG_MAX " " LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR " " LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Αυτομ ÏÏθμιση θεÏ/σίας" //SHORTEN -#define MSG_ON "ΕνεÏγοποιημένο" -#define MSG_OFF "ΑπενεÏγοποιημένο" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_E1 " E1" -#define MSG_E2 " E2" -#define MSG_E3 " E3" -#define MSG_E4 " E4" -#define MSG_ACC "Επιτάχυνση" -#define MSG_VXY_JERK "VαντίδÏαση xy" -#define MSG_VZ_JERK "VαντίδÏαση z" -#define MSG_VE_JERK "VαντίδÏαση e" -#define MSG_VMAX "V Μέγιστο" -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "V Ελάχιστο" -#define MSG_VTRAV_MIN "Vελάχ. μετατόπιση" -#define MSG_AMAX "Aμεγ " -#define MSG_A_RETRACT "Α-ανάσυÏση" -#define MSG_A_TRAVEL "Α-μετατόπιση" -#define MSG_XSTEPS "Bήματα X ανά μμ" -#define MSG_YSTEPS "Bήματα Î¥ ανά μμ" -#define MSG_ZSTEPS "Bήματα Ζ ανά μμ" -#define MSG_ESTEPS "Bήματα Ε ανά μμ" -#define MSG_TEMPERATURE "ΘεÏμοκÏασία" -#define MSG_MOTION "Κίνηση" -#define MSG_VOLUMETRIC "Îήμα" -#define MSG_VOLUMETRIC_ENABLED "Ε σε μμ3" -#define MSG_FILAMENT_DIAM "ΔιάμετÏος νήματος" -#define MSG_DIAM_E1 " 1" -#define MSG_DIAM_E2 " 2" -#define MSG_DIAM_E3 " 3" -#define MSG_DIAM_E4 " 4" -#define MSG_CONTRAST "ΚοντÏάστ LCD" -#define MSG_STORE_EPROM "Αποθήκευση" -#define MSG_LOAD_EPROM "ΦόÏτωση" -#define MSG_RESTORE_FAILSAFE "ΕπαναφοÏά ασφαλοÏÏ‚ αντιγÏάφου" //SHORTEN -#define MSG_REFRESH "Ανανέωση" -#define MSG_WATCH "Οθόνη πληÏοφόÏησης" -#define MSG_PREPARE "ΠÏοετοιμασία" -#define MSG_TUNE "Συντονισμός" -#define MSG_PAUSE_PRINT "ΠαÏση εκτÏπωσης" -#define MSG_RESUME_PRINT "Συνέχιση εκτÏπωσης" -#define MSG_STOP_PRINT "Διακοπή εκτÏπωσης" -#define MSG_CARD_MENU "ΕκτÏπωση από SD" -#define MSG_NO_CARD "Δεν βÏέθηκε SD" -#define MSG_DWELL "Αναστολή λειτουÏγίας" -#define MSG_USERWAIT "Αναμονή για χÏήστη" -#define MSG_RESUMING "Συνεχίζεται η εκτÏπωση" //SHORTEN -#define MSG_PRINT_ABORTED "Διακόπτεται η εκτÏπωση" //SHORTEN -#define MSG_NO_MOVE "Καμία κίνηση." -#define MSG_KILLED "ΤΕΡΜΑΤΙΣΜΟΣ. " -#define MSG_STOPPED "ΔΙΑΚΟΠΗ. " -#define MSG_CONTROL_RETRACT "ΑνάσυÏση μμ" -#define MSG_CONTROL_RETRACT_SWAP "Εναλλαγή ανάσυÏσης μμ" //SHORTEN -#define MSG_CONTROL_RETRACTF "ΑνάσυÏση V" -#define MSG_CONTROL_RETRACT_ZLIFT "Μεταπήδηση μμ" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "Αυτόματη ανάσυÏση" -#define MSG_FILAMENTCHANGE "Αλλαγή νήματος" -#define MSG_INIT_SDCARD "ΠÏοετοιμασία κάÏτας SD" //SHORTEN -#define MSG_CNG_SDCARD "Αλλαγή κάÏτας SD" -#define MSG_ZPROBE_OUT "ΔιεÏεÏνηση Z εκτός Επ.ΕκτÏπωσης" //SHORTEN -#define MSG_YX_UNHOMED "ΕπαναφοÏά Χ/Î¥ Ï€Ïιν από Ζ" //SHORTEN -#define MSG_XYZ_UNHOMED "ΕπαναφοÏά ΧΥΖ Ï€Ïώτα" -#define MSG_ZPROBE_ZOFFSET "Μετατόπιση Ζ" -#define MSG_BABYSTEP_X "ΜικÏÏŒ βήμα Χ" -#define MSG_BABYSTEP_Y "ΜικÏÏŒ βήμα Î¥" -#define MSG_BABYSTEP_Z "ΜικÏÏŒ βήμα Ζ" -#define MSG_ENDSTOP_ABORT "ΑκÏÏωση endstop " -#define MSG_HEATING_FAILED_LCD "Ανεπιτυχής θέÏμανση" -#define MSG_ERR_REDUNDANT_TEMP "ΠΛΕΟÎΑΖΟΥΣΑ ΘΕΡΜΟΤΗΤΑ" -#define MSG_THERMAL_RUNAWAY "ΔΙΑΦΥΓΗ ΘΕΡΜΟΚΡΑΣΙΑΣ" -#define MSG_ERR_MAXTEMP "ΠΕΡΙΤΗ ΘΕΡΜΟΚΡΑΣΙΑ" -#define MSG_ERR_MINTEMP "ΜΗ ΕΠΑΡΚΗΣ ΘΕΡΜΟΚΡΑΣΙΑΣ" //SHORTEN -#define MSG_ERR_MAXTEMP_BED "ΜΕΓΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ" //SHORTEN -#define MSG_ERR_MINTEMP_BED "ΕΛΑΧΙΣΤΗ ΘΕΡΜΟΚΡΑΣΙΑΣ ΕΠ. ΕΚΤΥΠΩΣΗΣ" //SHORTEN -#define MSG_HALTED "H εκτÏπωση διακόπηκε" -#define MSG_PLEASE_RESET "PLEASE RESET" //TRANSLATE -#define MSG_HEATING "ΘεÏμαίνεται…" -#define MSG_HEATING_COMPLETE "Η θέÏμανση ολοκληÏώθηκε." //SHORTEN -#define MSG_BED_HEATING "ΘέÏμανση ΕΠ. ΕκτÏπωσης" //SHORTEN -#define MSG_BED_DONE "Η Επ. ΕκτÏπωσης ολοκληÏώθηκε" //SHORTEN -#define MSG_DELTA_CALIBRATE "Βαθμονόμηση Delta" -#define MSG_DELTA_CALIBRATE_X "Βαθμονόμηση X" -#define MSG_DELTA_CALIBRATE_Y "Βαθμονόμηση Y" -#define MSG_DELTA_CALIBRATE_Z "Βαθμονόμηση Z" -#define MSG_DELTA_CALIBRATE_CENTER "Βαθμονόμηση κέντÏου" - -#define MSG_INFO_MENU "About Printer" -#define MSG_INFO_PRINTER_MENU "Printer Info" -#define MSG_INFO_STATS_MENU "Printer Stats" -#define MSG_INFO_BOARD_MENU "Board Info" -#define MSG_INFO_THERMISTOR_MENU "Thermistors" -#define MSG_INFO_EXTRUDERS "Extruders" -#define MSG_INFO_BAUDRATE "Baud" -#define MSG_INFO_PROTOCOL "Protocol" - -#if LCD_WIDTH > 19 - #define MSG_INFO_PRINT_COUNT "Print Count" - #define MSG_INFO_COMPLETED_PRINTS "Completed " - #define MSG_INFO_PRINT_TIME "Total Time " -#else - #define MSG_INFO_PRINT_COUNT "Prints " - #define MSG_INFO_COMPLETED_PRINTS "Completed" - #define MSG_INFO_PRINT_TIME "Duration " -#endif -#define MSG_INFO_MIN_TEMP "Min Temp" -#define MSG_INFO_MAX_TEMP "Max Temp" -#define MSG_INFO_PSU "Power Supply" - -#define MSG_FILAMENT_CHANGE_HEADER "CHANGE FILAMENT" -#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "Extrude more" -#define MSG_FILAMENT_CHANGE_OPTION_RESUME "Resume print" - -#if LCD_HEIGHT >= 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Wait for start" - #define MSG_FILAMENT_CHANGE_INIT_2 "of the filament" - #define MSG_FILAMENT_CHANGE_INIT_3 "change" - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Wait for" - #define MSG_FILAMENT_CHANGE_UNLOAD_2 "filament unload" - #define MSG_FILAMENT_CHANGE_UNLOAD_3 "" - #define MSG_FILAMENT_CHANGE_INSERT_1 "Insert filament" - #define MSG_FILAMENT_CHANGE_INSERT_2 "and press button" - #define MSG_FILAMENT_CHANGE_INSERT_3 "to continue..." - #define MSG_FILAMENT_CHANGE_LOAD_1 "Wait for" - #define MSG_FILAMENT_CHANGE_LOAD_2 "filament load" - #define MSG_FILAMENT_CHANGE_LOAD_3 "" - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Wait for" - #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "filament extrude" - #define MSG_FILAMENT_CHANGE_EXTRUDE_3 "" - #define MSG_FILAMENT_CHANGE_RESUME_1 "Wait for print" - #define MSG_FILAMENT_CHANGE_RESUME_2 "to resume" - #define MSG_FILAMENT_CHANGE_RESUME_3 "" -#else // LCD_HEIGHT < 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Please wait..." - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Ejecting..." - #define MSG_FILAMENT_CHANGE_INSERT_1 "Insert and Click" - #define MSG_FILAMENT_CHANGE_LOAD_1 "Loading..." - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Extruding..." - #define MSG_FILAMENT_CHANGE_RESUME_1 "Resuming..." -#endif - -#endif // LANGUAGE_EL_H diff --git a/lib/Marlin/language_en.h b/lib/Marlin/language_en.h deleted file mode 100644 index 6cf7d52..0000000 --- a/lib/Marlin/language_en.h +++ /dev/null @@ -1,688 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * English - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_EN_H -#define LANGUAGE_EN_H - -//#define SIMULATE_ROMFONT //Comment in to see what is seen on the character based displays -#if DISABLED(SIMULATE_ROMFONT) && DISABLED(DISPLAY_CHARSET_ISO10646_1) && DISABLED(DISPLAY_CHARSET_ISO10646_5) && DISABLED(DISPLAY_CHARSET_ISO10646_KANA) && DISABLED(DISPLAY_CHARSET_ISO10646_GREEK) && DISABLED(DISPLAY_CHARSET_ISO10646_CN) - #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays. -#endif - -#ifndef WELCOME_MSG - #define WELCOME_MSG MACHINE_NAME " ready." -#endif -#ifndef MSG_SD_INSERTED - #define MSG_SD_INSERTED "Card inserted" -#endif -#ifndef MSG_SD_REMOVED - #define MSG_SD_REMOVED "Card removed" -#endif -#ifndef MSG_LCD_ENDSTOPS - #define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters -#endif -#ifndef MSG_MAIN - #define MSG_MAIN "Main" -#endif -#ifndef MSG_AUTOSTART - #define MSG_AUTOSTART "Autostart" -#endif -#ifndef MSG_DISABLE_STEPPERS - #define MSG_DISABLE_STEPPERS "Disable steppers" -#endif -#ifndef MSG_AUTO_HOME - #define MSG_AUTO_HOME "Auto home" -#endif -#ifndef MSG_AUTO_HOME_X - #define MSG_AUTO_HOME_X "Home X" -#endif -#ifndef MSG_AUTO_HOME_Y - #define MSG_AUTO_HOME_Y "Home Y" -#endif -#ifndef MSG_AUTO_HOME_Z - #define MSG_AUTO_HOME_Z "Home Z" -#endif -#ifndef MSG_LEVEL_BED_HOMING - #define MSG_LEVEL_BED_HOMING "Homing XYZ" -#endif -#ifndef MSG_LEVEL_BED_WAITING - #define MSG_LEVEL_BED_WAITING "Click to Begin" -#endif -#ifndef MSG_LEVEL_BED_NEXT_POINT - #define MSG_LEVEL_BED_NEXT_POINT "Next Point" -#endif -#ifndef MSG_LEVEL_BED_DONE - #define MSG_LEVEL_BED_DONE "Leveling Done!" -#endif -#ifndef MSG_LEVEL_BED_CANCEL - #define MSG_LEVEL_BED_CANCEL "Cancel" -#endif -#ifndef MSG_SET_HOME_OFFSETS - #define MSG_SET_HOME_OFFSETS "Set home offsets" -#endif -#ifndef MSG_HOME_OFFSETS_APPLIED - #define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#endif -#ifndef MSG_SET_ORIGIN - #define MSG_SET_ORIGIN "Set origin" -#endif -#ifndef MSG_PREHEAT_1 - #define MSG_PREHEAT_1 "Preheat PLA" -#endif -#ifndef MSG_PREHEAT_1_N - #define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#endif -#ifndef MSG_PREHEAT_1_ALL - #define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 " All" -#endif -#ifndef MSG_PREHEAT_1_BEDONLY - #define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 " Bed" -#endif -#ifndef MSG_PREHEAT_1_SETTINGS - #define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 " conf" -#endif -#ifndef MSG_PREHEAT_2 - #define MSG_PREHEAT_2 "Preheat ABS" -#endif -#ifndef MSG_PREHEAT_2_N - #define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#endif -#ifndef MSG_PREHEAT_2_ALL - #define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 " All" -#endif -#ifndef MSG_PREHEAT_2_BEDONLY - #define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 " Bed" -#endif -#ifndef MSG_PREHEAT_2_SETTINGS - #define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 " conf" -#endif -#ifndef MSG_H1 - #define MSG_H1 "1" -#endif -#ifndef MSG_H2 - #define MSG_H2 "2" -#endif -#ifndef MSG_H3 - #define MSG_H3 "3" -#endif -#ifndef MSG_H4 - #define MSG_H4 "4" -#endif -#ifndef MSG_COOLDOWN - #define MSG_COOLDOWN "Cooldown" -#endif -#ifndef MSG_SWITCH_PS_ON - #define MSG_SWITCH_PS_ON "Switch power on" -#endif -#ifndef MSG_SWITCH_PS_OFF - #define MSG_SWITCH_PS_OFF "Switch power off" -#endif -#ifndef MSG_EXTRUDE - #define MSG_EXTRUDE "Extrude" -#endif -#ifndef MSG_RETRACT - #define MSG_RETRACT "Retract" -#endif -#ifndef MSG_MOVE_AXIS - #define MSG_MOVE_AXIS "Move axis" -#endif -#ifndef MSG_LEVEL_BED - #define MSG_LEVEL_BED "Level bed" -#endif -#ifndef MSG_MOVE_X - #define MSG_MOVE_X "Move X" -#endif -#ifndef MSG_MOVE_Y - #define MSG_MOVE_Y "Move Y" -#endif -#ifndef MSG_MOVE_Z - #define MSG_MOVE_Z "Move Z" -#endif -#ifndef MSG_MOVE_E - #define MSG_MOVE_E "Extruder" -#endif -#ifndef MSG_MOVE_E1 - #define MSG_MOVE_E1 "1" -#endif -#ifndef MSG_MOVE_E2 - #define MSG_MOVE_E2 "2" -#endif -#ifndef MSG_MOVE_E3 - #define MSG_MOVE_E3 "3" -#endif -#ifndef MSG_MOVE_E4 - #define MSG_MOVE_E4 "4" -#endif -#ifndef MSG_MOVE_01MM - #define MSG_MOVE_01MM "Move 0.1mm" -#endif -#ifndef MSG_MOVE_1MM - #define MSG_MOVE_1MM "Move 1mm" -#endif -#ifndef MSG_MOVE_10MM - #define MSG_MOVE_10MM "Move 10mm" -#endif -#ifndef MSG_SPEED - #define MSG_SPEED "Speed" -#endif -#ifndef MSG_BED_Z - #define MSG_BED_Z "Bed Z" -#endif -#ifndef MSG_NOZZLE - #define MSG_NOZZLE "Nozzle" -#endif -#ifndef MSG_N1 - #define MSG_N1 " 1" -#endif -#ifndef MSG_N2 - #define MSG_N2 " 2" -#endif -#ifndef MSG_N3 - #define MSG_N3 " 3" -#endif -#ifndef MSG_N4 - #define MSG_N4 " 4" -#endif -#ifndef MSG_BED - #define MSG_BED "Bed" -#endif -#ifndef MSG_FAN_SPEED - #define MSG_FAN_SPEED "Fan speed" -#endif -#ifndef MSG_FLOW - #define MSG_FLOW "Flow" -#endif -#ifndef MSG_CONTROL - #define MSG_CONTROL "Control" -#endif -#ifndef MSG_MIN - #define MSG_MIN " " LCD_STR_THERMOMETER " Min" -#endif -#ifndef MSG_MAX - #define MSG_MAX " " LCD_STR_THERMOMETER " Max" -#endif -#ifndef MSG_FACTOR - #define MSG_FACTOR " " LCD_STR_THERMOMETER " Fact" -#endif -#ifndef MSG_AUTOTEMP - #define MSG_AUTOTEMP "Autotemp" -#endif -#ifndef MSG_ON - #define MSG_ON "On " -#endif -#ifndef MSG_OFF - #define MSG_OFF "Off" -#endif -#ifndef MSG_PID_P - #define MSG_PID_P "PID-P" -#endif -#ifndef MSG_PID_I - #define MSG_PID_I "PID-I" -#endif -#ifndef MSG_PID_D - #define MSG_PID_D "PID-D" -#endif -#ifndef MSG_PID_C - #define MSG_PID_C "PID-C" -#endif -#ifndef MSG_SELECT - #define MSG_SELECT "Select" -#endif -#ifndef MSG_E1 - #define MSG_E1 " E1" -#endif -#ifndef MSG_E2 - #define MSG_E2 " E2" -#endif -#ifndef MSG_E3 - #define MSG_E3 " E3" -#endif -#ifndef MSG_E4 - #define MSG_E4 " E4" -#endif -#ifndef MSG_ACC - #define MSG_ACC "Accel" -#endif -#ifndef MSG_VXY_JERK - #define MSG_VXY_JERK "Vxy-jerk" -#endif -#ifndef MSG_VZ_JERK - #define MSG_VZ_JERK "Vz-jerk" -#endif -#ifndef MSG_VE_JERK - #define MSG_VE_JERK "Ve-jerk" -#endif -#ifndef MSG_VMAX - #define MSG_VMAX "Vmax " -#endif -#ifndef MSG_X - #define MSG_X "X" -#endif -#ifndef MSG_Y - #define MSG_Y "Y" -#endif -#ifndef MSG_Z - #define MSG_Z "Z" -#endif -#ifndef MSG_E - #define MSG_E "E" -#endif -#ifndef MSG_VMIN - #define MSG_VMIN "Vmin" -#endif -#ifndef MSG_VTRAV_MIN - #define MSG_VTRAV_MIN "VTrav min" -#endif -#ifndef MSG_AMAX - #define MSG_AMAX "Amax " -#endif -#ifndef MSG_A_RETRACT - #define MSG_A_RETRACT "A-retract" -#endif -#ifndef MSG_A_TRAVEL - #define MSG_A_TRAVEL "A-travel" -#endif -#ifndef MSG_XSTEPS - #define MSG_XSTEPS "Xsteps/mm" -#endif -#ifndef MSG_YSTEPS - #define MSG_YSTEPS "Ysteps/mm" -#endif -#ifndef MSG_ZSTEPS - #define MSG_ZSTEPS "Zsteps/mm" -#endif -#ifndef MSG_ESTEPS - #define MSG_ESTEPS "Esteps/mm" -#endif -#ifndef MSG_TEMPERATURE - #define MSG_TEMPERATURE "Temperature" -#endif -#ifndef MSG_MOTION - #define MSG_MOTION "Motion" -#endif -#ifndef MSG_VOLUMETRIC - #define MSG_VOLUMETRIC "Filament" -#endif -#ifndef MSG_VOLUMETRIC_ENABLED - #define MSG_VOLUMETRIC_ENABLED "E in mm3" -#endif -#ifndef MSG_FILAMENT_DIAM - #define MSG_FILAMENT_DIAM "Fil. Dia." -#endif -#ifndef MSG_DIAM_E1 - #define MSG_DIAM_E1 " 1" -#endif -#ifndef MSG_DIAM_E2 - #define MSG_DIAM_E2 " 2" -#endif -#ifndef MSG_DIAM_E3 - #define MSG_DIAM_E3 " 3" -#endif -#ifndef MSG_DIAM_E4 - #define MSG_DIAM_E4 " 4" -#endif -#ifndef MSG_CONTRAST - #define MSG_CONTRAST "LCD contrast" -#endif -#ifndef MSG_STORE_EPROM - #define MSG_STORE_EPROM "Store memory" -#endif -#ifndef MSG_LOAD_EPROM - #define MSG_LOAD_EPROM "Load memory" -#endif -#ifndef MSG_RESTORE_FAILSAFE - #define MSG_RESTORE_FAILSAFE "Restore failsafe" -#endif -#ifndef MSG_REFRESH - #define MSG_REFRESH "Refresh" -#endif -#ifndef MSG_WATCH - #define MSG_WATCH "Info screen" -#endif -#ifndef MSG_PREPARE - #define MSG_PREPARE "Prepare" -#endif -#ifndef MSG_TUNE - #define MSG_TUNE "Tune" -#endif -#ifndef MSG_PAUSE_PRINT - #define MSG_PAUSE_PRINT "Pause print" -#endif -#ifndef MSG_RESUME_PRINT - #define MSG_RESUME_PRINT "Resume print" -#endif -#ifndef MSG_STOP_PRINT - #define MSG_STOP_PRINT "Stop print" -#endif -#ifndef MSG_CARD_MENU - #define MSG_CARD_MENU "Print from SD" -#endif -#ifndef MSG_NO_CARD - #define MSG_NO_CARD "No SD card" -#endif -#ifndef MSG_DWELL - #define MSG_DWELL "Sleep..." -#endif -#ifndef MSG_USERWAIT - #define MSG_USERWAIT "Wait for user..." -#endif -#ifndef MSG_RESUMING - #define MSG_RESUMING "Resuming print" -#endif -#ifndef MSG_PRINT_ABORTED - #define MSG_PRINT_ABORTED "Print aborted" -#endif -#ifndef MSG_NO_MOVE - #define MSG_NO_MOVE "No move." -#endif -#ifndef MSG_KILLED - #define MSG_KILLED "KILLED. " -#endif -#ifndef MSG_STOPPED - #define MSG_STOPPED "STOPPED. " -#endif -#ifndef MSG_CONTROL_RETRACT - #define MSG_CONTROL_RETRACT "Retract mm" -#endif -#ifndef MSG_CONTROL_RETRACT_SWAP - #define MSG_CONTROL_RETRACT_SWAP "Swap Re.mm" -#endif -#ifndef MSG_CONTROL_RETRACTF - #define MSG_CONTROL_RETRACTF "Retract V" -#endif -#ifndef MSG_CONTROL_RETRACT_ZLIFT - #define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" -#endif -#ifndef MSG_CONTROL_RETRACT_RECOVER - #define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#endif -#ifndef MSG_CONTROL_RETRACT_RECOVER_SWAP - #define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm" -#endif -#ifndef MSG_CONTROL_RETRACT_RECOVERF - #define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#endif -#ifndef MSG_AUTORETRACT - #define MSG_AUTORETRACT "AutoRetr." -#endif -#ifndef MSG_FILAMENTCHANGE - #define MSG_FILAMENTCHANGE "Change filament" -#endif -#ifndef MSG_INIT_SDCARD - #define MSG_INIT_SDCARD "Init. SD card" -#endif -#ifndef MSG_CNG_SDCARD - #define MSG_CNG_SDCARD "Change SD card" -#endif -#ifndef MSG_ZPROBE_OUT - #define MSG_ZPROBE_OUT "Z probe out. bed" -#endif -#ifndef MSG_HOME - #define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#endif -#ifndef MSG_FIRST - #define MSG_FIRST "first" -#endif -#ifndef MSG_ZPROBE_ZOFFSET - #define MSG_ZPROBE_ZOFFSET "Z Offset" -#endif -#ifndef MSG_BABYSTEP_X - #define MSG_BABYSTEP_X "Babystep X" -#endif -#ifndef MSG_BABYSTEP_Y - #define MSG_BABYSTEP_Y "Babystep Y" -#endif -#ifndef MSG_BABYSTEP_Z - #define MSG_BABYSTEP_Z "Babystep Z" -#endif -#ifndef MSG_ENDSTOP_ABORT - #define MSG_ENDSTOP_ABORT "Endstop abort" -#endif -#ifndef MSG_HEATING_FAILED_LCD - #define MSG_HEATING_FAILED_LCD "Heating failed" -#endif -#ifndef MSG_ERR_REDUNDANT_TEMP - #define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP" -#endif -#ifndef MSG_THERMAL_RUNAWAY - #define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" -#endif -#ifndef MSG_ERR_MAXTEMP - #define MSG_ERR_MAXTEMP "Err: MAXTEMP" -#endif -#ifndef MSG_ERR_MINTEMP - #define MSG_ERR_MINTEMP "Err: MINTEMP" -#endif -#ifndef MSG_ERR_MAXTEMP_BED - #define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED" -#endif -#ifndef MSG_ERR_MINTEMP_BED - #define MSG_ERR_MINTEMP_BED "Err: MINTEMP BED" -#endif -#ifndef MSG_HALTED - #define MSG_HALTED "PRINTER HALTED" -#endif -#ifndef MSG_PLEASE_RESET - #define MSG_PLEASE_RESET "Please reset" -#endif -#ifndef MSG_SHORT_DAY - #define MSG_SHORT_DAY "d" // One character only -#endif -#ifndef MSG_SHORT_HOUR - #define MSG_SHORT_HOUR "h" // One character only -#endif -#ifndef MSG_SHORT_MINUTE - #define MSG_SHORT_MINUTE "m" // One character only -#endif -#ifndef MSG_HEATING - #define MSG_HEATING "Heating..." -#endif -#ifndef MSG_HEATING_COMPLETE - #define MSG_HEATING_COMPLETE "Heating done." -#endif -#ifndef MSG_BED_HEATING - #define MSG_BED_HEATING "Bed Heating." -#endif -#ifndef MSG_BED_DONE - #define MSG_BED_DONE "Bed done." -#endif -#ifndef MSG_DELTA_CALIBRATE - #define MSG_DELTA_CALIBRATE "Delta Calibration" -#endif -#ifndef MSG_DELTA_CALIBRATE_X - #define MSG_DELTA_CALIBRATE_X "Calibrate X" -#endif -#ifndef MSG_DELTA_CALIBRATE_Y - #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" -#endif -#ifndef MSG_DELTA_CALIBRATE_Z - #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" -#endif -#ifndef MSG_DELTA_CALIBRATE_CENTER - #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" -#endif - -#ifndef MSG_INFO_MENU - #define MSG_INFO_MENU "About Printer" -#endif -#ifndef MSG_INFO_PRINTER_MENU - #define MSG_INFO_PRINTER_MENU "Printer Info" -#endif -#ifndef MSG_INFO_STATS_MENU - #define MSG_INFO_STATS_MENU "Printer Stats" -#endif -#ifndef MSG_INFO_BOARD_MENU - #define MSG_INFO_BOARD_MENU "Board Info" -#endif -#ifndef MSG_INFO_THERMISTOR_MENU - #define MSG_INFO_THERMISTOR_MENU "Thermistors" -#endif -#ifndef MSG_INFO_EXTRUDERS - #define MSG_INFO_EXTRUDERS "Extruders" -#endif -#ifndef MSG_INFO_BAUDRATE - #define MSG_INFO_BAUDRATE "Baud" -#endif -#ifndef MSG_INFO_PROTOCOL - #define MSG_INFO_PROTOCOL "Protocol" -#endif - -#if LCD_WIDTH > 19 - #ifndef MSG_INFO_PRINT_COUNT - #define MSG_INFO_PRINT_COUNT "Print Count" - #endif - #ifndef MSG_INFO_COMPLETED_PRINTS - #define MSG_INFO_COMPLETED_PRINTS "Completed" - #endif - #ifndef MSG_INFO_PRINT_TIME - #define MSG_INFO_PRINT_TIME "Total print time" - #endif - #ifndef MSG_INFO_PRINT_LONGEST - #define MSG_INFO_PRINT_LONGEST "Longest job time" - #endif - #ifndef MSG_INFO_PRINT_FILAMENT - #define MSG_INFO_PRINT_FILAMENT "Extruded total" - #endif -#else - #ifndef MSG_INFO_PRINT_COUNT - #define MSG_INFO_PRINT_COUNT "Prints" - #endif - #ifndef MSG_INFO_COMPLETED_PRINTS - #define MSG_INFO_COMPLETED_PRINTS "Completed" - #endif - #ifndef MSG_INFO_PRINT_TIME - #define MSG_INFO_PRINT_TIME "Total" - #endif - #ifndef MSG_INFO_PRINT_LONGEST - #define MSG_INFO_PRINT_LONGEST "Longest" - #endif - #ifndef MSG_INFO_PRINT_FILAMENT - #define MSG_INFO_PRINT_FILAMENT "Extruded" - #endif -#endif - -#ifndef MSG_INFO_MIN_TEMP - #define MSG_INFO_MIN_TEMP "Min Temp" -#endif -#ifndef MSG_INFO_MAX_TEMP - #define MSG_INFO_MAX_TEMP "Max Temp" -#endif -#ifndef MSG_INFO_PSU - #define MSG_INFO_PSU "Power Supply" -#endif - -#ifndef MSG_FILAMENT_CHANGE_HEADER - #define MSG_FILAMENT_CHANGE_HEADER "CHANGE FILAMENT" -#endif -#ifndef MSG_FILAMENT_CHANGE_OPTION_HEADER - #define MSG_FILAMENT_CHANGE_OPTION_HEADER "CHANGE OPTIONS:" -#endif -#ifndef MSG_FILAMENT_CHANGE_OPTION_EXTRUDE - #define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "Extrude more" -#endif -#ifndef MSG_FILAMENT_CHANGE_OPTION_RESUME - #define MSG_FILAMENT_CHANGE_OPTION_RESUME "Resume print" -#endif -#if LCD_HEIGHT >= 4 - #ifndef MSG_FILAMENT_CHANGE_INIT_1 - #define MSG_FILAMENT_CHANGE_INIT_1 "Wait for start" - #endif - #ifndef MSG_FILAMENT_CHANGE_INIT_2 - #define MSG_FILAMENT_CHANGE_INIT_2 "of the filament" - #endif - #ifndef MSG_FILAMENT_CHANGE_INIT_3 - #define MSG_FILAMENT_CHANGE_INIT_3 "change" - #endif - #ifndef MSG_FILAMENT_CHANGE_UNLOAD_1 - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Wait for" - #endif - #ifndef MSG_FILAMENT_CHANGE_UNLOAD_2 - #define MSG_FILAMENT_CHANGE_UNLOAD_2 "filament unload" - #endif - #ifndef MSG_FILAMENT_CHANGE_UNLOAD_3 - #define MSG_FILAMENT_CHANGE_UNLOAD_3 "" - #endif - #ifndef MSG_FILAMENT_CHANGE_INSERT_1 - #define MSG_FILAMENT_CHANGE_INSERT_1 "Insert filament" - #endif - #ifndef MSG_FILAMENT_CHANGE_INSERT_2 - #define MSG_FILAMENT_CHANGE_INSERT_2 "and press button" - #endif - #ifndef MSG_FILAMENT_CHANGE_INSERT_3 - #define MSG_FILAMENT_CHANGE_INSERT_3 "to continue..." - #endif - #ifndef MSG_FILAMENT_CHANGE_LOAD_1 - #define MSG_FILAMENT_CHANGE_LOAD_1 "Wait for" - #endif - #ifndef MSG_FILAMENT_CHANGE_LOAD_2 - #define MSG_FILAMENT_CHANGE_LOAD_2 "filament load" - #endif - #ifndef MSG_FILAMENT_CHANGE_LOAD_3 - #define MSG_FILAMENT_CHANGE_LOAD_3 "" - #endif - #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_1 - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Wait for" - #endif - #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_2 - #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "filament extrude" - #endif - #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_3 - #define MSG_FILAMENT_CHANGE_EXTRUDE_3 "" - #endif - #ifndef MSG_FILAMENT_CHANGE_RESUME_1 - #define MSG_FILAMENT_CHANGE_RESUME_1 "Wait for print" - #endif - #ifndef MSG_FILAMENT_CHANGE_RESUME_2 - #define MSG_FILAMENT_CHANGE_RESUME_2 "to resume" - #endif - #ifndef MSG_FILAMENT_CHANGE_RESUME_3 - #define MSG_FILAMENT_CHANGE_RESUME_3 "" - #endif -#else // LCD_HEIGHT < 4 - #ifndef MSG_FILAMENT_CHANGE_INIT_1 - #define MSG_FILAMENT_CHANGE_INIT_1 "Please wait..." - #endif - #ifndef MSG_FILAMENT_CHANGE_UNLOAD_1 - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Ejecting..." - #endif - #ifndef MSG_FILAMENT_CHANGE_INSERT_1 - #define MSG_FILAMENT_CHANGE_INSERT_1 "Insert and Click" - #endif - #ifndef MSG_FILAMENT_CHANGE_LOAD_1 - #define MSG_FILAMENT_CHANGE_LOAD_1 "Loading..." - #endif - #ifndef MSG_FILAMENT_CHANGE_EXTRUDE_1 - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Extruding..." - #endif - #ifndef MSG_FILAMENT_CHANGE_RESUME_1 - #define MSG_FILAMENT_CHANGE_RESUME_1 "Resuming..." - #endif -#endif // LCD_HEIGHT < 4 - -#endif // LANGUAGE_EN_H diff --git a/lib/Marlin/language_es.h b/lib/Marlin/language_es.h deleted file mode 100644 index 2943fcf..0000000 --- a/lib/Marlin/language_es.h +++ /dev/null @@ -1,195 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Spanish - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_ES_H -#define LANGUAGE_ES_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " lista." -#define MSG_SD_INSERTED "Tarjeta colocada" -#define MSG_SD_REMOVED "Tarjeta retirada" -#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters -#define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART "Inicio automatico" -#define MSG_DISABLE_STEPPERS "Apagar motores" -#define MSG_AUTO_HOME "Llevar al origen" -#define MSG_AUTO_HOME_X "Origen X" -#define MSG_AUTO_HOME_Y "Origen Y" -#define MSG_AUTO_HOME_Z "Origen Z" -#define MSG_LEVEL_BED_HOMING "Origen XYZ" -#define MSG_LEVEL_BED_WAITING "Presione para iniciar" -#define MSG_LEVEL_BED_DONE "Nivelacion lista!" -#define MSG_LEVEL_BED_CANCEL "Cancelar" -#define MSG_SET_HOME_OFFSETS "Ajustar desfases" -#define MSG_HOME_OFFSETS_APPLIED "Desfase aplicado" -#define MSG_SET_ORIGIN "Establecer origen" -#define MSG_PREHEAT_1 "Precalentar PLA" -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 "Todo" -#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1"Plataforma" -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 "Config" -#define MSG_PREHEAT_2 "Precalentar ABS" -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 "Todo" -#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 "Plataforma" -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 "Config" -#define MSG_H1 "1" -#define MSG_H2 "2" -#define MSG_H3 "3" -#define MSG_H4 "4" -#define MSG_COOLDOWN "Enfriar" -#define MSG_SWITCH_PS_ON "Encender" -#define MSG_SWITCH_PS_OFF "Apagar" -#define MSG_EXTRUDE "Extruir" -#define MSG_RETRACT "Retraer" -#define MSG_MOVE_AXIS "Mover ejes" -#define MSG_LEVEL_BED "Nivelar plataforma" -#define MSG_MOVE_X "Mover X" -#define MSG_MOVE_Y "Mover Y" -#define MSG_MOVE_Z "Mover Z" -#define MSG_MOVE_E "Extrusor" -#define MSG_MOVE_E1 "1" -#define MSG_MOVE_E2 "2" -#define MSG_MOVE_E3 "3" -#define MSG_MOVE_E4 "4" -#define MSG_MOVE_01MM "Mover 0.1mm" -#define MSG_MOVE_1MM "Mover 1mm" -#define MSG_MOVE_10MM "Mover 10mm" -#define MSG_SPEED "Velocidad" -#define MSG_BED_Z "Plataforma Z" -#define MSG_NOZZLE "Boquilla" -#define MSG_N1 " 1" -#define MSG_N2 " 2" -#define MSG_N3 " 3" -#define MSG_N4 " 4" -#define MSG_BED "Plataforma" -#define MSG_FAN_SPEED "Ventilador" -#define MSG_FLOW "Flujo" -#define MSG_CONTROL "Control" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Temperatura Automatica" -#define MSG_ON "Encender" -#define MSG_OFF "Apagar" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_E1 " E1" -#define MSG_E2 " E2" -#define MSG_E3 " E3" -#define MSG_E4 " E4" -#define MSG_ACC "Aceleracion" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax" -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "Vel. viaje min" -#define MSG_AMAX "Acel. max" -#define MSG_A_RETRACT "Acel. retrac." -#define MSG_A_TRAVEL "Acel. Viaje" -#define MSG_XSTEPS "X pasos/mm" -#define MSG_YSTEPS "Y pasos/mm" -#define MSG_ZSTEPS "Z pasos/mm" -#define MSG_ESTEPS "E pasos/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Movimiento" -#define MSG_VOLUMETRIC "Filamento" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_DIAM_E1 " 1" -#define MSG_DIAM_E2 " 2" -#define MSG_DIAM_E3 " 3" -#define MSG_DIAM_E4 " 4" -#define MSG_CONTRAST "Contraste" -#define MSG_STORE_EPROM "Guardar memoria" -#define MSG_LOAD_EPROM "Cargar memoria" -#define MSG_RESTORE_FAILSAFE "Restaurar memoria." -#define MSG_REFRESH "Volver a cargar" -#define MSG_WATCH "Informacion" -#define MSG_PREPARE "Preparar" -#define MSG_TUNE "Ajustar" -#define MSG_PAUSE_PRINT "Pausar impresion" -#define MSG_RESUME_PRINT "Reanudar impresion" -#define MSG_STOP_PRINT "Detener impresion" -#define MSG_CARD_MENU "Menu de SD" -#define MSG_NO_CARD "No hay tarjeta SD" -#define MSG_DWELL "Reposo..." -#define MSG_USERWAIT "Esperando ordenes" -#define MSG_RESUMING "Resumiendo impre." -#define MSG_PRINT_ABORTED "Impresion cancelada" -#define MSG_NO_MOVE "Sin movimiento" -#define MSG_KILLED "Parada de emergencia." -#define MSG_STOPPED "Detenida" -#define MSG_CONTROL_RETRACT "Retraer mm" -#define MSG_CONTROL_RETRACT_SWAP "Interc. Retraer mm" -#define MSG_CONTROL_RETRACTF "Retraer V" -#define MSG_CONTROL_RETRACT_ZLIFT "Levantar mm" -#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Interc. DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "DesRet V" -#define MSG_AUTORETRACT "Retraccion Auto." -#define MSG_FILAMENTCHANGE "Cambiar filamento" -#define MSG_INIT_SDCARD "Iniciando tarjeta" -#define MSG_CNG_SDCARD "Cambiar tarjeta" -#define MSG_ZPROBE_OUT "Sonda Z fuera" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Desfase Z" -#define MSG_BABYSTEP_X "Micropaso X" -#define MSG_BABYSTEP_Y "Micropaso Y" -#define MSG_BABYSTEP_Z "Micropaso Z" -#define MSG_ENDSTOP_ABORT "Cancelado - Endstop" -#define MSG_HEATING_FAILED_LCD "Error: al calentar" -#define MSG_ERR_REDUNDANT_TEMP "Error: temperatura redundante" -#define MSG_THERMAL_RUNAWAY "Error de temperatura" -#define MSG_ERR_MAXTEMP "Error: Temp Maxima" -#define MSG_ERR_MINTEMP "Error: Temp Minima" -#define MSG_ERR_MAXTEMP_BED "Error: Temp Max Plataforma" -#define MSG_ERR_MINTEMP_BED "Error: Temp Min Plataforma" -#define MSG_HEATING "Calentando..." -#define MSG_HEATING_COMPLETE "Calentamiento Completo" -#define MSG_BED_HEATING "Calentando plataforma ..." -#define MSG_BED_DONE "Plataforma Caliente" -#define MSG_DELTA_CALIBRATE "Calibracion Delta" -#define MSG_DELTA_CALIBRATE_X "Calibrar X" -#define MSG_DELTA_CALIBRATE_Y "Calibrar Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrar Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro" - -#endif // LANGUAGE_ES_H diff --git a/lib/Marlin/language_eu.h b/lib/Marlin/language_eu.h deleted file mode 100644 index 909d6c8..0000000 --- a/lib/Marlin/language_eu.h +++ /dev/null @@ -1,157 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Basque-Euskera - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_EU_H -#define LANGUAGE_EU_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " prest." -#define MSG_SD_INSERTED "Txartela sartuta" -#define MSG_SD_REMOVED "Txartela kenduta" -#define MSG_MAIN "Menu nagusia" -#define MSG_AUTOSTART "Auto hasiera" -#define MSG_DISABLE_STEPPERS "Itzali motoreak" -#define MSG_AUTO_HOME "Hasierara joan" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "Set home offsets" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Hasiera ipini" -#define MSG_PREHEAT_1 "Aurreberotu PLA" -#define MSG_PREHEAT_1_N "Aurreberotu PLA " -#define MSG_PREHEAT_1_ALL "Berotu PLA Guztia" -#define MSG_PREHEAT_1_BEDONLY "Berotu PLA Ohea" -#define MSG_PREHEAT_1_SETTINGS "Berotu PLA Konfig" -#define MSG_PREHEAT_2 "Aurreberotu ABS" -#define MSG_PREHEAT_2_N "Aurreberotu ABS " -#define MSG_PREHEAT_2_ALL "Berotu ABS Guztia" -#define MSG_PREHEAT_2_BEDONLY "Berotu ABS Ohea" -#define MSG_PREHEAT_2_SETTINGS "Berotu ABS Konfig" -#define MSG_COOLDOWN "Hoztu" -#define MSG_SWITCH_PS_ON "Energia piztu" -#define MSG_SWITCH_PS_OFF "Energia itzali" -#define MSG_EXTRUDE "Estruitu" -#define MSG_RETRACT "Atzera eragin" -#define MSG_MOVE_AXIS "Ardatzak mugitu" -#define MSG_MOVE_X "Mugitu X" -#define MSG_MOVE_Y "Mugitu Y" -#define MSG_MOVE_Z "Mugitu Z" -#define MSG_MOVE_E "Estrusorea" -#define MSG_MOVE_01MM "Mugitu 0.1mm" -#define MSG_MOVE_1MM "Mugitu 1mm" -#define MSG_MOVE_10MM "Mugitu 10mm" -#define MSG_SPEED "Abiadura" -#define MSG_NOZZLE "Pita" -#define MSG_BED "Ohea" -#define MSG_FAN_SPEED "Haizagailua" -#define MSG_FLOW "Fluxua" -#define MSG_CONTROL "Kontrola" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Faktorea" -#define MSG_AUTOTEMP "Auto tenperatura" -#define MSG_ON "On " -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Azelerazioa" -#define MSG_VXY_JERK "Vxy-astindua" -#define MSG_VZ_JERK "Vz-astindua" -#define MSG_VE_JERK "Ve-astindua" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retrakt" -#define MSG_XSTEPS "X pausoak/mm" -#define MSG_YSTEPS "Y pausoak/mm" -#define MSG_ZSTEPS "Z pausoak/mm" -#define MSG_ESTEPS "E pausoak/mm" -#define MSG_TEMPERATURE "Tenperatura" -#define MSG_MOTION "Mugimendua" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_CONTRAST "LCD kontrastea" -#define MSG_STORE_EPROM "Gorde memoria" -#define MSG_LOAD_EPROM "Kargatu memoria" -#define MSG_RESTORE_FAILSAFE "Larri. berriz." -#define MSG_REFRESH "Berriz kargatu" -#define MSG_WATCH "Pantaila info" -#define MSG_PREPARE "Prestatu" -#define MSG_TUNE "Doitu" -#define MSG_PAUSE_PRINT "Pausatu inprimak." -#define MSG_RESUME_PRINT "Jarraitu inprima." -#define MSG_STOP_PRINT "Gelditu inprima." -#define MSG_CARD_MENU "SD-tik inprimatu" -#define MSG_NO_CARD "Ez dago txartelik" -#define MSG_DWELL "Lo egin..." -#define MSG_USERWAIT "Aginduak zain..." -#define MSG_RESUMING "Jarraitzen inpri." -#define MSG_PRINT_ABORTED "Print aborted" -#define MSG_NO_MOVE "Mugimendu gabe" -#define MSG_KILLED "LARRIALDI GELDIA" -#define MSG_STOPPED "GELDITUTA. " -#define MSG_CONTROL_RETRACT "Atzera egin mm" -#define MSG_CONTROL_RETRACT_SWAP "Swap Atzera egin mm" -#define MSG_CONTROL_RETRACTF "Atzera egin V" -#define MSG_CONTROL_RETRACT_ZLIFT "Igo mm" -#define MSG_CONTROL_RETRACT_RECOVER "Atzera egin +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Swap Atzera egin +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "Atzera egin V" -#define MSG_AUTORETRACT "Atzera egin" -#define MSG_FILAMENTCHANGE "Aldatu filament." -#define MSG_INIT_SDCARD "Hasieratu txartela" -#define MSG_CNG_SDCARD "Aldatu txartela" -#define MSG_ZPROBE_OUT "Z ohe hasiera" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z konpentsatu" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop deuseztat" -#define MSG_DELTA_CALIBRATE "Delta Calibration" -#define MSG_DELTA_CALIBRATE_X "Calibrate X" -#define MSG_DELTA_CALIBRATE_Y "Calibrate Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrate Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" - -#endif // LANGUAGE_EU_H diff --git a/lib/Marlin/language_fi.h b/lib/Marlin/language_fi.h deleted file mode 100644 index b73a207..0000000 --- a/lib/Marlin/language_fi.h +++ /dev/null @@ -1,158 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Finnish - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_FI_H -#define LANGUAGE_FI_H - -#define MAPPER_C2C3 -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " valmis." -#define MSG_SD_INSERTED "Kortti asetettu" -#define MSG_SD_REMOVED "Kortti poistettu" -#define MSG_MAIN "Palaa" -#define MSG_AUTOSTART "Automaatti" -#define MSG_DISABLE_STEPPERS "Vapauta moottorit" -#define MSG_AUTO_HOME "Aja referenssiin" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "Set home offsets" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Aseta origo" -#define MSG_PREHEAT_1 "Esilämmitä PLA" -#define MSG_PREHEAT_1_N "Esilämmitä PLA " -#define MSG_PREHEAT_1_ALL "Esilä. PLA Kaikki" -#define MSG_PREHEAT_1_BEDONLY "Esilä. PLA Alusta" -#define MSG_PREHEAT_1_SETTINGS "Esilämm. PLA konf" -#define MSG_PREHEAT_2 "Esilämmitä ABS" -#define MSG_PREHEAT_2_N "Esilämmitä ABS " -#define MSG_PREHEAT_2_ALL "Esilä. ABS Kaikki" -#define MSG_PREHEAT_2_BEDONLY "Esilä. ABS Alusta" -#define MSG_PREHEAT_2_SETTINGS "Esilämm. ABS konf" -#define MSG_COOLDOWN "Jäähdytä" -#define MSG_SWITCH_PS_ON "Virta päälle" -#define MSG_SWITCH_PS_OFF "Virta pois" -#define MSG_EXTRUDE "Pursota" -#define MSG_RETRACT "Vedä takaisin" -#define MSG_MOVE_AXIS "Liikuta akseleita" -#define MSG_MOVE_X "Liikuta X" -#define MSG_MOVE_Y "Liikuta Y" -#define MSG_MOVE_Z "Liikuta Z" -#define MSG_MOVE_E "Extruder" -#define MSG_MOVE_01MM "Liikuta 0.1mm" -#define MSG_MOVE_1MM "Liikuta 1mm" -#define MSG_MOVE_10MM "Liikuta 10mm" -#define MSG_SPEED "Nopeus" -#define MSG_NOZZLE "Suutin" -#define MSG_BED "Alusta" -#define MSG_FAN_SPEED "Tuul. nopeus" -#define MSG_FLOW "Virtaus" -#define MSG_CONTROL "Kontrolli" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Kerr" -#define MSG_AUTOTEMP "Autotemp" -#define MSG_ON "On " -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Kiihtyv" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VLiike min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-peruuta" -#define MSG_XSTEPS "Xsteps/mm" -#define MSG_YSTEPS "Ysteps/mm" -#define MSG_ZSTEPS "Zsteps/mm" -#define MSG_ESTEPS "Esteps/mm" -#define MSG_TEMPERATURE "Lämpötila" -#define MSG_MOTION "Liike" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm³" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_CONTRAST "LCD kontrasti" -#define MSG_STORE_EPROM "Tallenna muistiin" -#define MSG_LOAD_EPROM "Lataa muistista" -#define MSG_RESTORE_FAILSAFE "Palauta oletus" -#define MSG_REFRESH "Päivitä" -#define MSG_WATCH "Seuraa" -#define MSG_PREPARE "Valmistele" -#define MSG_TUNE "Säädä" -#define MSG_PAUSE_PRINT "Keskeytä tulostus" -#define MSG_RESUME_PRINT "Jatka tulostusta" -#define MSG_STOP_PRINT "Pysäytä tulostus" -#define MSG_CARD_MENU "Korttivalikko" -#define MSG_NO_CARD "Ei korttia" -#define MSG_DWELL "Nukkumassa..." -#define MSG_USERWAIT "Odotet. valintaa" -#define MSG_RESUMING "Jatke. tulostusta" -#define MSG_PRINT_ABORTED "Print aborted" -#define MSG_NO_MOVE "Ei liiketta." -#define MSG_KILLED "KILLED. " -#define MSG_STOPPED "STOPPED. " -#define MSG_CONTROL_RETRACT "Vedä mm" -#define MSG_CONTROL_RETRACT_SWAP "Va. Vedä mm" -#define MSG_CONTROL_RETRACTF "Vedä V" -#define MSG_CONTROL_RETRACT_ZLIFT "Z mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Va. UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "AutoVeto." -#define MSG_FILAMENTCHANGE "Change filament" -#define MSG_INIT_SDCARD "Init. SD-Card" -#define MSG_CNG_SDCARD "Change SD-Card" -#define MSG_ZPROBE_OUT "Z probe out. bed" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop abort" -#define MSG_DELTA_CALIBRATE "Delta Kalibrointi" -#define MSG_DELTA_CALIBRATE_X "Kalibroi X" -#define MSG_DELTA_CALIBRATE_Y "Kalibroi Y" -#define MSG_DELTA_CALIBRATE_Z "Kalibroi Z" -#define MSG_DELTA_CALIBRATE_CENTER "Kalibroi Center" - -#endif // LANGUAGE_FI_H diff --git a/lib/Marlin/language_fr.h b/lib/Marlin/language_fr.h deleted file mode 100644 index 52adbcb..0000000 --- a/lib/Marlin/language_fr.h +++ /dev/null @@ -1,171 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * French - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_FR_H -#define LANGUAGE_FR_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " prete." -#define MSG_SD_INSERTED "Carte inseree" -#define MSG_SD_REMOVED "Carte retiree" -#define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART "Demarrage auto" -#define MSG_DISABLE_STEPPERS "Arreter moteurs" -#define MSG_AUTO_HOME "Origine auto." -#define MSG_LEVEL_BED_HOMING "Origine XYZ" -#define MSG_LEVEL_BED_WAITING "Cliquer pour commencer" -#define MSG_LEVEL_BED_DONE "Mise a niveau OK!" -#define MSG_LEVEL_BED_CANCEL "Annuler" -#define MSG_SET_HOME_OFFSETS "Regler decal. origine" -#define MSG_HOME_OFFSETS_APPLIED "Decalages appliques" -#define MSG_SET_ORIGIN "Regler origine" -#define MSG_PREHEAT_1 "Prechauffage PLA" -#define MSG_PREHEAT_1_N "Prechauff. PLA " -#define MSG_PREHEAT_1_ALL "Prech. PLA Tout" -#define MSG_PREHEAT_1_BEDONLY "Prech. PLA Plateau" -#define MSG_PREHEAT_1_SETTINGS "Regl. prech. PLA" -#define MSG_PREHEAT_2 "Prechauffage ABS" -#define MSG_PREHEAT_2_N "Prechauff. ABS " -#define MSG_PREHEAT_2_ALL "Prech. ABS Tout" -#define MSG_PREHEAT_2_BEDONLY "Prech. ABS Plateau" -#define MSG_PREHEAT_2_SETTINGS "Regl. prech. ABS" -#define MSG_COOLDOWN "Refroidir" -#define MSG_SWITCH_PS_ON "Allumer alim." -#define MSG_SWITCH_PS_OFF "Eteindre alim." -#define MSG_EXTRUDE "Extrusion" -#define MSG_RETRACT "Retraction" -#define MSG_MOVE_AXIS "Deplacer un axe" -#define MSG_LEVEL_BED "Regl. Niv. Plateau" -#define MSG_MOVE_X "Depl. X" -#define MSG_MOVE_Y "Depl. Y" -#define MSG_MOVE_Z "Depl. Z" -#define MSG_MOVE_E "Extruder" -#define MSG_MOVE_01MM "Depl. 0.1mm" -#define MSG_MOVE_1MM "Depl. 1mm" -#define MSG_MOVE_10MM "Depl. 10mm" -#define MSG_SPEED " Vitesse" -#define MSG_BED_Z "Plateau Z" -#define MSG_NOZZLE "Buse" -#define MSG_BED "Plateau" -#define MSG_FAN_SPEED "Vite. ventilateur" -#define MSG_FLOW "Flux" -#define MSG_CONTROL "Controler" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Facteur" -#define MSG_AUTOTEMP "Temp. Auto." -#define MSG_ON "Marche " -#define MSG_OFF "Arret" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Accel" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax" -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "Vdepl min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retract" -#define MSG_A_TRAVEL "A-Depl." -#define MSG_XSTEPS "Xpas/mm" -#define MSG_YSTEPS "Ypas/mm" -#define MSG_ZSTEPS "Zpas/mm" -#define MSG_ESTEPS "Epas/mm" -#define MSG_TEMPERATURE "Temperature" -#define MSG_MOTION "Mouvement" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E en mm3" -#define MSG_FILAMENT_DIAM "Diam. Fil." -#define MSG_CONTRAST "Contraste LCD" -#define MSG_STORE_EPROM "Sauver config" -#define MSG_LOAD_EPROM "Lire config" -#define MSG_RESTORE_FAILSAFE "Restaurer defauts" -#define MSG_REFRESH "Actualiser" -#define MSG_WATCH "Surveiller" -#define MSG_PREPARE "Preparer" -#define MSG_TUNE "Regler" -#define MSG_PAUSE_PRINT "Interrompre impr." -#define MSG_RESUME_PRINT "Reprendre impr." -#define MSG_STOP_PRINT "Arreter impr." -#define MSG_CARD_MENU "Impr. depuis SD" -#define MSG_NO_CARD "Pas de carte" -#define MSG_DWELL "Repos..." -#define MSG_USERWAIT "Atten. de l'util." -#define MSG_RESUMING "Repri. de l'impr." -#define MSG_PRINT_ABORTED "Impr. Annulee" -#define MSG_NO_MOVE "Aucun mouvement." -#define MSG_KILLED "MORT." -#define MSG_STOPPED "STOPPE." -#define MSG_CONTROL_RETRACT "Retraction mm" -#define MSG_CONTROL_RETRACT_SWAP "Ech. Retr. mm" -#define MSG_CONTROL_RETRACTF "Retraction V" -#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Ech. UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "Retract. Auto." -#define MSG_FILAMENTCHANGE "Changer filament" -#define MSG_INIT_SDCARD "Init. la carte SD" -#define MSG_CNG_SDCARD "Changer de carte" -#define MSG_ZPROBE_OUT "Z sonde exte. lit" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Decalage Z" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Butee abandon" -#define MSG_HEATING_FAILED_LCD "Erreur de chauffe" -#define MSG_ERR_REDUNDANT_TEMP "Err: ERREUR TEMP. REDONDANTE" -#define MSG_THERMAL_RUNAWAY "EMBALLEMENT THERMIQUE" -#define MSG_ERR_MAXTEMP "Err: TEMP. MAX" -#define MSG_ERR_MINTEMP "Err: TEMP. MIN" -#define MSG_ERR_MAXTEMP_BED "Err: TEMP. MAX PLATEAU" -#define MSG_ERR_MINTEMP_BED "Err: TEMP. MIN PLATEAU" -#define MSG_HEATING "En chauffe..." -#define MSG_HEATING_COMPLETE "Chauffe terminee" -#define MSG_BED_HEATING "Plateau en chauffe..." -#define MSG_BED_DONE "Chauffe plateau terminee" -#define MSG_DELTA_CALIBRATE "Calibration Delta" -#define MSG_DELTA_CALIBRATE_X "Calibrer X" -#define MSG_DELTA_CALIBRATE_Y "Calibrer Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrer Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrer centre" - -#endif // LANGUAGE_FR_H diff --git a/lib/Marlin/language_gl.h b/lib/Marlin/language_gl.h deleted file mode 100644 index c5fbbc9..0000000 --- a/lib/Marlin/language_gl.h +++ /dev/null @@ -1,259 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Galician language (ISO "gl") - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_GL_H -#define LANGUAGE_GL_H - -#define MAPPER_C2C3 -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " lista." -#define MSG_SD_INSERTED "Tarxeta inserida" -#define MSG_SD_REMOVED "Tarxeta retirada" -#define MSG_LCD_ENDSTOPS "FinCarro" -#define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART "Autoarranque" -#define MSG_DISABLE_STEPPERS "Apagar motores" -#define MSG_AUTO_HOME "Ir a orixe" -#define MSG_AUTO_HOME_X "Ir orixe X" -#define MSG_AUTO_HOME_Y "Ir orixe Y" -#define MSG_AUTO_HOME_Z "Ir orixe Z" -#define MSG_LEVEL_BED_HOMING "Ir orixes XYZ" -#define MSG_LEVEL_BED_WAITING "Prema pulsador" -#define MSG_LEVEL_BED_NEXT_POINT "Seguinte punto" -#define MSG_LEVEL_BED_DONE "Nivelado feito" -#define MSG_LEVEL_BED_CANCEL "Cancelar" -#define MSG_SET_HOME_OFFSETS "Offsets na orixe" -#define MSG_HOME_OFFSETS_APPLIED "Offsets fixados" -#define MSG_SET_ORIGIN "Fixar orixe" -#define MSG_PREHEAT_1 "Prequentar PLA" -#define MSG_PREHEAT_1_N "Prequentar PLA " -#define MSG_PREHEAT_1_ALL "Preque. PLA Todo" -#define MSG_PREHEAT_1_BEDONLY "Preque. PLA Cama" -#define MSG_PREHEAT_1_SETTINGS "Preque. PLA conf" -#define MSG_PREHEAT_2 "Prequentar ABS" -#define MSG_PREHEAT_2_N "Prequentar ABS " -#define MSG_PREHEAT_2_ALL "Preque. ABS Todo" -#define MSG_PREHEAT_2_BEDONLY "Preque. ABS Cama" -#define MSG_PREHEAT_2_SETTINGS "Preque. ABS conf" -#define MSG_H1 "1" -#define MSG_H2 "2" -#define MSG_H3 "3" -#define MSG_H4 "4" -#define MSG_COOLDOWN "Arrefriar" -#define MSG_SWITCH_PS_ON "Acender" -#define MSG_SWITCH_PS_OFF "Apagar" -#define MSG_EXTRUDE "Extrudir" -#define MSG_RETRACT "Retraer" -#define MSG_MOVE_AXIS "Mover eixe" -#define MSG_LEVEL_BED "Nivelar cama" -#define MSG_MOVE_X "Mover X" -#define MSG_MOVE_Y "Mover Y" -#define MSG_MOVE_Z "Mover Z" -#define MSG_MOVE_E "Extrusor" -#define MSG_MOVE_E1 "1" -#define MSG_MOVE_E2 "2" -#define MSG_MOVE_E3 "3" -#define MSG_MOVE_E4 "4" -#define MSG_MOVE_01MM "Mover 0.1mm" -#define MSG_MOVE_1MM "Mover 1mm" -#define MSG_MOVE_10MM "Mover 10mm" -#define MSG_SPEED "Velocidade" -#define MSG_BED_Z "Cama Z" -#define MSG_NOZZLE "Bico" -#define MSG_N1 " 1" -#define MSG_N2 " 2" -#define MSG_N3 " 3" -#define MSG_N4 " 4" -#define MSG_BED "Cama" -#define MSG_FAN_SPEED "Velocidade vent." -#define MSG_FLOW "Fluxo" -#define MSG_CONTROL "Control" -#define MSG_MIN " " LCD_STR_THERMOMETER " Min" -#define MSG_MAX " " LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR " " LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Autotemp" -#define MSG_ON "On " -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_SELECT "Escolla" -#define MSG_E1 " E1" -#define MSG_E2 " E2" -#define MSG_E3 " E3" -#define MSG_E4 " E4" -#define MSG_ACC "Acel" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retract" -#define MSG_A_TRAVEL "A-travel" -#define MSG_XSTEPS "Xpasos/mm" -#define MSG_YSTEPS "Ypasos/mm" -#define MSG_ZSTEPS "Zpasos/mm" -#define MSG_ESTEPS "Epasos/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Movemento" -#define MSG_VOLUMETRIC "Filamento" -#define MSG_VOLUMETRIC_ENABLED "E en mm3" -#define MSG_FILAMENT_DIAM "Diam. fil." -#define MSG_DIAM_E1 " 1" -#define MSG_DIAM_E2 " 2" -#define MSG_DIAM_E3 " 3" -#define MSG_DIAM_E4 " 4" -#define MSG_CONTRAST "Constraste LCD" -#define MSG_STORE_EPROM "Gardar en memo." -#define MSG_LOAD_EPROM "Cargar de memo." -#define MSG_RESTORE_FAILSAFE "Cargar de firm." -#define MSG_REFRESH "Volver a cargar" -#define MSG_WATCH "Monitorizacion" -#define MSG_PREPARE "Preparar" -#define MSG_TUNE "Axustar" -#define MSG_PAUSE_PRINT "Pausar impres." -#define MSG_RESUME_PRINT "Seguir impres." -#define MSG_STOP_PRINT "Deter impres." -#define MSG_CARD_MENU "Tarxeta SD" -#define MSG_NO_CARD "Sen tarxeta SD" -#define MSG_DWELL "En repouso..." -#define MSG_USERWAIT "A espera..." -#define MSG_RESUMING "Imprimindo..." -#define MSG_PRINT_ABORTED "Impre. cancelada" -#define MSG_NO_MOVE "Sen movemento." -#define MSG_KILLED "PROGRAMA MORTO" -#define MSG_STOPPED "PROGRAMA PARADO" -#define MSG_CONTROL_RETRACT "Retraccion mm" -#define MSG_CONTROL_RETRACT_SWAP "Cambio retra. mm" -#define MSG_CONTROL_RETRACTF "Retraccion V" -#define MSG_CONTROL_RETRACT_ZLIFT "Alzar Z mm" -#define MSG_CONTROL_RETRACT_RECOVER "Recup. retra. mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Cambio recup. mm" -#define MSG_CONTROL_RETRACT_RECOVERF "Recuperacion V" -#define MSG_AUTORETRACT "Retraccion auto." -#define MSG_FILAMENTCHANGE "Cambiar filamen." -#define MSG_INIT_SDCARD "Iniciando SD" -#define MSG_CNG_SDCARD "Cambiar SD" -#define MSG_ZPROBE_OUT "Sonda-Z sen cama" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Offset Z" -#define MSG_BABYSTEP_X "Micropaso X" -#define MSG_BABYSTEP_Y "Micropaso Y" -#define MSG_BABYSTEP_Z "Micropaso Z" -#define MSG_ENDSTOP_ABORT "Erro fin carro" -#define MSG_HEATING_FAILED_LCD "Fallo quentando" -#define MSG_ERR_REDUNDANT_TEMP "Erro temperatura" -#define MSG_THERMAL_RUNAWAY "Temp. excesiva" -#define MSG_ERR_MAXTEMP "Err: temp. max." -#define MSG_ERR_MINTEMP "Err: temp. min." -#define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED" -#define MSG_ERR_MINTEMP_BED "Err: MINTEMP BED" -#define MSG_HALTED "SISTEMA MORTO" -#define MSG_PLEASE_RESET "Debe reiniciar!" -#define MSG_SHORT_DAY "d" // One character only -#define MSG_SHORT_HOUR "h" // One character only -#define MSG_SHORT_MINUTE "m" // One character only -#define MSG_HEATING "Quentando..." -#define MSG_HEATING_COMPLETE "Xa esta quente" -#define MSG_BED_HEATING "Quentando cama" -#define MSG_BED_DONE "Cama esta quente" -#define MSG_DELTA_CALIBRATE "Calibracion Delta" -#define MSG_DELTA_CALIBRATE_X "Calibrar X" -#define MSG_DELTA_CALIBRATE_Y "Calibrar Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrar Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro" -#define MSG_INFO_MENU "Acerca de..." -#define MSG_INFO_PRINTER_MENU "Informacion" -#define MSG_INFO_STATS_MENU "Estadisticas" -#define MSG_INFO_BOARD_MENU "Placa nai" -#define MSG_INFO_THERMISTOR_MENU "Termistores" -#define MSG_INFO_EXTRUDERS "Extrusores" -#define MSG_INFO_BAUDRATE "Baudios" -#define MSG_INFO_PROTOCOL "Protocolo" -#if LCD_WIDTH > 19 - #define MSG_INFO_PRINT_COUNT "Total traballos" - #define MSG_INFO_COMPLETED_PRINTS "Total completos" - #define MSG_INFO_PRINT_TIME "Tempo impresion" - #define MSG_INFO_PRINT_LONGEST "Traballo +longo" - #define MSG_INFO_PRINT_FILAMENT "Total extruido" -#else - #define MSG_INFO_PRINT_COUNT "Traballos" - #define MSG_INFO_COMPLETED_PRINTS "Completos" - #define MSG_INFO_PRINT_TIME "Tempo" - #define MSG_INFO_PRINT_LONGEST "O +longo" - #define MSG_INFO_PRINT_FILAMENT "Extruido" -#endif -#define MSG_INFO_MIN_TEMP "Min Temp" -#define MSG_INFO_MAX_TEMP "Max Temp" -#define MSG_INFO_PSU "Fonte alime." -#define MSG_FILAMENT_CHANGE_HEADER "TROCO FILAMENTO" -#define MSG_FILAMENT_CHANGE_OPTION_HEADER "OPCIONS TROCO:" -#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "Extruir mais" -#define MSG_FILAMENT_CHANGE_OPTION_RESUME "Segue traballo" -#if LCD_HEIGHT >= 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Agarde para" - #define MSG_FILAMENT_CHANGE_INIT_2 "iniciar troco" - #define MSG_FILAMENT_CHANGE_INIT_3 "de filamento" - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Agarde pola" - #define MSG_FILAMENT_CHANGE_UNLOAD_2 "descarga do" - #define MSG_FILAMENT_CHANGE_UNLOAD_3 "filamento" - #define MSG_FILAMENT_CHANGE_INSERT_1 "Introduza o" - #define MSG_FILAMENT_CHANGE_INSERT_2 "filamento e" - #define MSG_FILAMENT_CHANGE_INSERT_3 "faga click" - #define MSG_FILAMENT_CHANGE_LOAD_1 "Agarde pola" - #define MSG_FILAMENT_CHANGE_LOAD_2 "carga do" - #define MSG_FILAMENT_CHANGE_LOAD_3 "filamento" - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Agarde pola" - #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "extrusion do" - #define MSG_FILAMENT_CHANGE_EXTRUDE_3 "filamento" - #define MSG_FILAMENT_CHANGE_RESUME_1 "Agarde para" - #define MSG_FILAMENT_CHANGE_RESUME_2 "seguir co" - #define MSG_FILAMENT_CHANGE_RESUME_3 "traballo" -#else // LCD_HEIGHT < 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Agarde..." - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Descargando..." - #define MSG_FILAMENT_CHANGE_INSERT_1 "Introduza e click" - #define MSG_FILAMENT_CHANGE_LOAD_1 "Cargando..." - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Extruindo..." - #define MSG_FILAMENT_CHANGE_RESUME_1 "Seguindo..." -#endif // LCD_HEIGHT < 4 - -#endif // LANGUAGE_GL_H - diff --git a/lib/Marlin/language_hr.h b/lib/Marlin/language_hr.h deleted file mode 100644 index 6035215..0000000 --- a/lib/Marlin/language_hr.h +++ /dev/null @@ -1,197 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Croatian (Hrvatski) - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_HR_H -#define LANGUAGE_HR_H - - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays. - -#define WELCOME_MSG MACHINE_NAME " spreman." -#define MSG_SD_INSERTED "SD kartica umetnuta" -#define MSG_SD_REMOVED "SD kartica uklonjena" -#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters -#define MSG_MAIN "Main" -#define MSG_AUTOSTART "Automatsko pokretanje" -#define MSG_DISABLE_STEPPERS "Ugasi steppere" -#define MSG_AUTO_HOME "Automatski homing" -#define MSG_AUTO_HOME_X "Home-aj X" -#define MSG_AUTO_HOME_Y "Home-aj Y" -#define MSG_AUTO_HOME_Z "Home-aj Z" -#define MSG_LEVEL_BED_HOMING "Home-aj XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_NEXT_POINT "Sljedeća toÄka" -#define MSG_LEVEL_BED_DONE "Niveliranje gotovo!" -#define MSG_LEVEL_BED_CANCEL "Otkaži" -#define MSG_SET_HOME_OFFSETS "Postavi home offsete" -#define MSG_HOME_OFFSETS_APPLIED "Offsets postavljeni" -#define MSG_SET_ORIGIN "Postavi ishodiÅ¡te" -#define MSG_PREHEAT_1 "Predgrij PLA" -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 " Sve" -#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 " Bed" -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 " conf" -#define MSG_PREHEAT_2 "Predgrij ABS" -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 " Sve" -#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 " Bed" -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 " conf" -#define MSG_H1 "1" -#define MSG_H2 "2" -#define MSG_H3 "3" -#define MSG_H4 "4" -#define MSG_COOLDOWN "HlaÄ‘enje" -#define MSG_SWITCH_PS_ON "UkljuÄi napajanje" -#define MSG_SWITCH_PS_OFF "IskljuÄi napajanje" -#define MSG_EXTRUDE "Extrude" -#define MSG_RETRACT "Retract" -#define MSG_MOVE_AXIS "MiÄi os" -#define MSG_LEVEL_BED "Niveliraj bed" -#define MSG_MOVE_X "MiÄi X" -#define MSG_MOVE_Y "MiÄi Y" -#define MSG_MOVE_Z "MiÄi Z" -#define MSG_MOVE_E "Extruder" -#define MSG_MOVE_E1 "1" -#define MSG_MOVE_E2 "2" -#define MSG_MOVE_E3 "3" -#define MSG_MOVE_E4 "4" -#define MSG_MOVE_01MM "MiÄi 0.1mm" -#define MSG_MOVE_1MM "MiÄi 1mm" -#define MSG_MOVE_10MM "MiÄi 10mm" -#define MSG_SPEED "Brzina" -#define MSG_BED_Z "Bed Z" -#define MSG_NOZZLE "Nozzle" -#define MSG_N1 " 1" -#define MSG_N2 " 2" -#define MSG_N3 " 3" -#define MSG_N4 " 4" -#define MSG_BED "Bed" -#define MSG_FAN_SPEED "Brzina ventilatora" -#define MSG_FLOW "Flow" -#define MSG_CONTROL "Control" -#define MSG_MIN " " LCD_STR_THERMOMETER " Min" -#define MSG_MAX " " LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR " " LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Autotemp" -#define MSG_ON "On " -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_E1 " E1" -#define MSG_E2 " E2" -#define MSG_E3 " E3" -#define MSG_E4 " E4" -#define MSG_ACC "Accel" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retract" -#define MSG_A_TRAVEL "A-travel" -#define MSG_XSTEPS "Xsteps/mm" -#define MSG_YSTEPS "Ysteps/mm" -#define MSG_ZSTEPS "Zsteps/mm" -#define MSG_ESTEPS "Esteps/mm" -#define MSG_TEMPERATURE "Temperature" -#define MSG_MOTION "Motion" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_DIAM_E1 " 1" -#define MSG_DIAM_E2 " 2" -#define MSG_DIAM_E3 " 3" -#define MSG_DIAM_E4 " 4" -#define MSG_CONTRAST "Kontrast LCD-a" -#define MSG_STORE_EPROM "Pohrani u memoriju" -#define MSG_LOAD_EPROM "UÄitaj memoriju" -#define MSG_RESTORE_FAILSAFE "UÄitaj failsafe" -#define MSG_REFRESH "Osvježi" -#define MSG_WATCH "Info screen" -#define MSG_PREPARE "Pripremi" -#define MSG_TUNE "Tune" -#define MSG_PAUSE_PRINT "Pauziraj print" -#define MSG_RESUME_PRINT "Nastavi print" -#define MSG_STOP_PRINT "Zaustavi print" -#define MSG_CARD_MENU "Printaj s SD kartice" -#define MSG_NO_CARD "Nema SD kartice" -#define MSG_DWELL "Sleep..." -#define MSG_USERWAIT "ÄŒekaj korisnika..." -#define MSG_RESUMING "Nastavljam print" -#define MSG_PRINT_ABORTED "Print otkazan" -#define MSG_NO_MOVE "No move." -#define MSG_KILLED "KILLED. " -#define MSG_STOPPED "ZAUSTAVLJEN. " -#define MSG_CONTROL_RETRACT "Retract mm" -#define MSG_CONTROL_RETRACT_SWAP "Swap Re.mm" -#define MSG_CONTROL_RETRACTF "Retract V" -#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "AutoRetr." -#define MSG_FILAMENTCHANGE "Promijeni filament" -#define MSG_INIT_SDCARD "Init. SD karticu" -#define MSG_CNG_SDCARD "Promijeni SD karticu" -#define MSG_ZPROBE_OUT "Z probe out. bed" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Endstop abort" -#define MSG_HEATING_FAILED_LCD "Heating failed" -#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP" -#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" -#define MSG_ERR_MAXTEMP "Err: MAXTEMP" -#define MSG_ERR_MINTEMP "Err: MINTEMP" -#define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED" -#define MSG_ERR_MINTEMP_BED "Err: MINTEMP BED" -#define MSG_HEATING "Grijanje..." -#define MSG_HEATING_COMPLETE "Grijanje gotovo." -#define MSG_BED_HEATING "Grijanje Bed-a." -#define MSG_BED_DONE "Bed gotov." -#define MSG_DELTA_CALIBRATE "Delta Kalibracija" -#define MSG_DELTA_CALIBRATE_X "Kalibriraj X" -#define MSG_DELTA_CALIBRATE_Y "Kalibriraj Y" -#define MSG_DELTA_CALIBRATE_Z "Kalibriraj Z" -#define MSG_DELTA_CALIBRATE_CENTER "Kalibriraj SrediÅ¡te" - -#endif // LANGUAGE_HR_H diff --git a/lib/Marlin/language_it.h b/lib/Marlin/language_it.h deleted file mode 100644 index 047272b..0000000 --- a/lib/Marlin/language_it.h +++ /dev/null @@ -1,238 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Italian - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_IT_H -#define LANGUAGE_IT_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " pronto." -#define MSG_SD_INSERTED "SD Card inserita" -#define MSG_SD_REMOVED "SD Card rimossa" -#define MSG_LCD_ENDSTOPS "Endstop" -#define MSG_MAIN "Menu principale" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Disabilita Motori" -#define MSG_AUTO_HOME "Auto Home" -#define MSG_AUTO_HOME_X "Home asse X" -#define MSG_AUTO_HOME_Y "Home asse Y" -#define MSG_AUTO_HOME_Z "Home asse Z" -#define MSG_LEVEL_BED_HOMING "Home assi XYZ" -#define MSG_LEVEL_BED_WAITING "Premi per Iniziare" -#define MSG_LEVEL_BED_NEXT_POINT "Punto successivo" -#define MSG_LEVEL_BED_DONE "Livel. terminato!" -#define MSG_LEVEL_BED_CANCEL "Annulla" -#define MSG_SET_HOME_OFFSETS "Imp. offset home" -#define MSG_HOME_OFFSETS_APPLIED "Offset applicato" -#define MSG_SET_ORIGIN "Imposta Origine" -#define MSG_PREHEAT_1 "Preriscalda PLA" -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL MSG_PREHEAT_1 " Tutto" -#define MSG_PREHEAT_1_BEDONLY MSG_PREHEAT_1 " Piatto" -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 " conf" -#define MSG_PREHEAT_2 "Preriscalda ABS" -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL MSG_PREHEAT_2 " Tutto" -#define MSG_PREHEAT_2_BEDONLY MSG_PREHEAT_2 " Piatto" -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 " conf" -#define MSG_COOLDOWN "Raffredda" -#define MSG_SWITCH_PS_ON "Accendi aliment." -#define MSG_SWITCH_PS_OFF "Spegni aliment." -#define MSG_EXTRUDE "Estrudi" -#define MSG_RETRACT "Ritrai" -#define MSG_MOVE_AXIS "Muovi Asse" -#define MSG_LEVEL_BED "Livella piano" -#define MSG_MOVE_X "Muovi X" -#define MSG_MOVE_Y "Muovi Y" -#define MSG_MOVE_Z "Muovi Z" -#define MSG_MOVE_E "Estrusore" -#define MSG_MOVE_01MM "Muovi di 0.1mm" -#define MSG_MOVE_1MM "Muovi di 1mm" -#define MSG_MOVE_10MM "Muovi di 10mm" -#define MSG_SPEED "Velocità" -#define MSG_BED_Z "piatto Z" -#define MSG_NOZZLE "Ugello" -#define MSG_BED "Piatto" -#define MSG_FAN_SPEED "Velocità ventola" -#define MSG_FLOW "Flusso" -#define MSG_CONTROL "Controllo" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Autotemp" -#define MSG_ON "On " -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_SELECT "Seleziona" -#define MSG_ACC "Accel" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retract" -#define MSG_A_TRAVEL "A-Spostamento" -#define MSG_XSTEPS "Xpassi/mm" -#define MSG_YSTEPS "Ypassi/mm" -#define MSG_ZSTEPS "Zpassi/mm" -#define MSG_ESTEPS "Epassi/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Movimento" -#define MSG_VOLUMETRIC "Filamento" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Diam. filo" -#define MSG_CONTRAST "Contrasto LCD" -#define MSG_STORE_EPROM "Salva in memoria" -#define MSG_LOAD_EPROM "Carica da memoria" -#define MSG_RESTORE_FAILSAFE "Ripristina imp." -#define MSG_REFRESH "Aggiorna" -#define MSG_WATCH "Guarda" -#define MSG_PREPARE "Prepara" -#define MSG_TUNE "Regola" -#define MSG_PAUSE_PRINT "Pausa" -#define MSG_RESUME_PRINT "Riprendi stampa" -#define MSG_STOP_PRINT "Arresta stampa" -#define MSG_CARD_MENU "Stampa da SD" -#define MSG_NO_CARD "SD non presente" -#define MSG_DWELL "Sospensione..." -#define MSG_USERWAIT "Attendi Utente.." -#define MSG_RESUMING "Riprendi Stampa" -#define MSG_PRINT_ABORTED "Stampa annullata" -#define MSG_NO_MOVE "Nessun Movimento" -#define MSG_KILLED "UCCISO. " -#define MSG_STOPPED "ARRESTATO. " -#define MSG_CONTROL_RETRACT "Ritrai mm" -#define MSG_CONTROL_RETRACT_SWAP "Scamb. Ritrai mm" -#define MSG_CONTROL_RETRACTF "Ritrai V" -#define MSG_CONTROL_RETRACT_ZLIFT "Salta mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Scamb. UnRet+mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" -#define MSG_AUTORETRACT "AutoRitrai" -#define MSG_FILAMENTCHANGE "Cambia filamento" -#define MSG_INIT_SDCARD "Iniz. SD-Card" -#define MSG_CNG_SDCARD "Cambia SD-Card" -#define MSG_ZPROBE_OUT "Z probe out. bed" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Finecorsa abort" -#define MSG_HEATING_FAILED_LCD "Riscald. Fallito" -#define MSG_ERR_REDUNDANT_TEMP "Err: TEMP RIDONDANTI" -#define MSG_THERMAL_RUNAWAY "TEMP FUORI CONTROLLO" -#define MSG_ERR_MAXTEMP "Err: TEMP MASSIMA" -#define MSG_ERR_MINTEMP "Err: TEMP MINIMA" -#define MSG_ERR_MAXTEMP_BED "Err: TEMP MASSIMA PIATTO" -#define MSG_ERR_MINTEMP_BED "Err: TEMP MINIMA PIATTO" -#define MSG_HALTED "STAMPANTE FERMATA" -#define MSG_PLEASE_RESET "Riavviare prego" -#define MSG_SHORT_DAY "g" // One character only -#define MSG_SHORT_HOUR "h" // One character only -#define MSG_SHORT_MINUTE "m" // One character only -#define MSG_HEATING "Riscaldamento.." -#define MSG_HEATING_COMPLETE "Risc. completato" -#define MSG_BED_HEATING "Risc. Piatto.." -#define MSG_BED_DONE "Piatto Pronto" -#define MSG_DELTA_CALIBRATE "Calibraz. Delta" -#define MSG_DELTA_CALIBRATE_X "Calibra X" -#define MSG_DELTA_CALIBRATE_Y "Calibra Y" -#define MSG_DELTA_CALIBRATE_Z "Calibra Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibra Center" -#define MSG_INFO_MENU "Riguardo stampante" -#define MSG_INFO_PRINTER_MENU "Info. stampante" -#define MSG_INFO_STATS_MENU "Statistiche" -#define MSG_INFO_BOARD_MENU "Info. scheda" -#define MSG_INFO_THERMISTOR_MENU "Termistori" -#define MSG_INFO_EXTRUDERS "Estrusori" -#define MSG_INFO_BAUDRATE "Baud" -#define MSG_INFO_PROTOCOL "Protocollo" -#if LCD_WIDTH > 19 - #define MSG_INFO_PRINT_COUNT "Contat. stampa" - #define MSG_INFO_COMPLETED_PRINTS "Completati" - #define MSG_INFO_PRINT_TIME "Tempo totale" - #define MSG_INFO_PRINT_LONGEST "Lavoro piu lungo" - #define MSG_INFO_PRINT_FILAMENT "Totale estruso" -#else - #define MSG_INFO_PRINT_COUNT "Stampe" - #define MSG_INFO_COMPLETED_PRINTS "Completati" - #define MSG_INFO_PRINT_TIME "Durata" - #define MSG_INFO_PRINT_LONGEST "Piu lungo" - #define MSG_INFO_PRINT_FILAMENT "Estruso" -#endif -#define MSG_INFO_MIN_TEMP "Temp min" -#define MSG_INFO_MAX_TEMP "Temp max" -#define MSG_INFO_PSU "Alimentatore" - -#define MSG_FILAMENT_CHANGE_HEADER "CAMBIA FILAMENTO" -#define MSG_FILAMENT_CHANGE_OPTION_HEADER "CAMBIA OPZIONI:" -#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "Estrusione" -#define MSG_FILAMENT_CHANGE_OPTION_RESUME "Riprendi stampa" -#if LCD_HEIGHT >= 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Attendere avvio" - #define MSG_FILAMENT_CHANGE_INIT_2 "del cambio" - #define MSG_FILAMENT_CHANGE_INIT_3 "di filamento" - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Attendere" - #define MSG_FILAMENT_CHANGE_UNLOAD_2 "l'espulsione" - #define MSG_FILAMENT_CHANGE_UNLOAD_3 "del filamento" - #define MSG_FILAMENT_CHANGE_INSERT_1 "Inserisci il" - #define MSG_FILAMENT_CHANGE_INSERT_2 "filamento e" - #define MSG_FILAMENT_CHANGE_INSERT_3 "premi per cont" - #define MSG_FILAMENT_CHANGE_LOAD_1 "Attendere" - #define MSG_FILAMENT_CHANGE_LOAD_2 "il caricamento" - #define MSG_FILAMENT_CHANGE_LOAD_3 "del filamento" - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Attendere" - #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "l'estrusione" - #define MSG_FILAMENT_CHANGE_EXTRUDE_3 "del filamento" - #define MSG_FILAMENT_CHANGE_RESUME_1 "Attendere" - #define MSG_FILAMENT_CHANGE_RESUME_2 "la ripresa" - #define MSG_FILAMENT_CHANGE_RESUME_3 "della stampa" -#else // LCD_HEIGHT < 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "Attendere..." - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "Espulsione..." - #define MSG_FILAMENT_CHANGE_INSERT_1 "Inserisci e premi" - #define MSG_FILAMENT_CHANGE_LOAD_1 "Caricamento..." - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "Estrusione..." - #define MSG_FILAMENT_CHANGE_RESUME_1 "Ripresa..." -#endif // LCD_HEIGHT < 4 - -#endif // LANGUAGE_IT_H diff --git a/lib/Marlin/language_kana.h b/lib/Marlin/language_kana.h deleted file mode 100644 index 67136e2..0000000 --- a/lib/Marlin/language_kana.h +++ /dev/null @@ -1,292 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Japanese (Kana) - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ - -#ifndef LANGUAGE_KANA_H -#define LANGUAGE_KANA_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_KANA - -// 片仮å表示定義 -#define WELCOME_MSG MACHINE_NAME " ready." -#define MSG_SD_INSERTED "\xb6\xb0\xc4\xde\xb6\xde\xbf\xb3\xc6\xad\xb3\xbb\xda\xcf\xbc\xc0" // "カードガソウニュウサレï¾ï½¼ï¾€" ("Card inserted") -#define MSG_SD_REMOVED "\xb6\xb0\xc4\xde\xb6\xde\xb1\xd8\xcf\xbe\xdd" // "カードガアリï¾ï½¾ï¾" ("Card removed") -#define MSG_LCD_ENDSTOPS "Endstops" // Max length 8 characters -#define MSG_MAIN "\xd2\xb2\xdd" // "ï¾’ï½²ï¾" ("Main") -#define MSG_AUTOSTART "\xbc\xde\xc4\xde\xb3\xb6\xb2\xbc" // "ジドウカイシ" ("Autostart") -#define MSG_DISABLE_STEPPERS "\xd3\xb0\xc0\xb0\xc3\xde\xdd\xb9\xde\xdd\x20\xb5\xcc" // "モーターデï¾ï½¹ï¾žï¾ オフ" ("Disable steppers") -#define MSG_AUTO_HOME "\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7" // "ゲï¾ï¾ƒï¾ï¾Œï½¯ï½·" ("Auto home") -#define MSG_AUTO_HOME_X "X\xbc\xde\xb8\x20\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7" // "Xジク ゲï¾ï¾ƒï¾ï¾Œï½¯ï½·" ("Home X") -#define MSG_AUTO_HOME_Y "Y\xbc\xde\xb8\x20\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7" // "Yジク ゲï¾ï¾ƒï¾ï¾Œï½¯ï½·" ("Home Y") -#define MSG_AUTO_HOME_Z "Z\xbc\xde\xb8\x20\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7" // "Zジク ゲï¾ï¾ƒï¾ï¾Œï½¯ï½·" ("Home Z") -#define MSG_LEVEL_BED_HOMING "\xb9\xde\xdd\xc3\xdd\xcc\xaf\xb7\xc1\xad\xb3" // "ゲï¾ï¾ƒï¾ï¾Œï½¯ï½·ï¾ï½­ï½³" ("Homing XYZ") -#define MSG_LEVEL_BED_WAITING "\xda\xcd\xde\xd8\xdd\xb8\xde\xb6\xb2\xbc" // "レï¾ï¾žï¾˜ï¾ï½¸ï¾žï½¶ï½²ï½¼" ("Click to Begin") -#define MSG_LEVEL_BED_NEXT_POINT "\xc2\xb7\xde\xc9\xbf\xb8\xc3\xb2\xc3\xdd\xcd" // "ツギノソクテイテï¾ï¾" ("Next Point") -#define MSG_LEVEL_BED_DONE "\xda\xcd\xde\xd8\xdd\xb8\xde\xb6\xdd\xd8\xae\xb3" // "レï¾ï¾žï¾˜ï¾ï½¸ï¾žï½¶ï¾ï¾˜ï½®ï½³" ("Leveling Done!") -#define MSG_LEVEL_BED_CANCEL "\xc4\xd8\xd4\xd2" // "トリヤメ" ("Cancel") -#define MSG_SET_HOME_OFFSETS "\xb7\xbc\xde\xad\xdd\xb5\xcc\xbe\xaf\xc4\xbe\xaf\xc3\xb2" // "キジュï¾ï½µï¾Œï½¾ï½¯ï¾„セッテイ" ("Set home offsets") -#define MSG_HOME_OFFSETS_APPLIED "\xb5\xcc\xbe\xaf\xc4\xb6\xde\xc3\xb7\xd6\xb3\xbb\xda\xcf\xbc\xc0" // "オフセットガテキヨウサレï¾ï½¼ï¾€" ("Offsets applied") -#define MSG_SET_ORIGIN "\xb7\xbc\xde\xad\xdd\xbe\xaf\xc4" // "キジュï¾ï½¾ï½¯ï¾„" ("Set origin") -#define MSG_PREHEAT_1 "PLA \xd6\xc8\xc2" // "PLA ヨネツ" ("Preheat PLA") -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL "PLA \xbd\xcd\xde\xc3\xd6\xc8\xc2" // "PLA ï½½ï¾ï¾žï¾ƒï¾–ネツ" (" All") -#define MSG_PREHEAT_1_BEDONLY "PLA \xcd\xde\xaf\xc4\xde\xd6\xc8\xc2" // "PLA ï¾ï¾žï½¯ï¾„゙ヨネツ" (" Bed") -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 "\xbe\xaf\xc3\xb2" // "セッテイ" (" conf") -#define MSG_PREHEAT_2 "ABS \xd6\xc8\xc2" // "ABS ヨネツ" ("Preheat ABS") -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL "ABS \xbd\xcd\xde\xc3\xd6\xc8\xc2" // "ABS ï½½ï¾ï¾žï¾ƒï¾–ネツ" (" All") -#define MSG_PREHEAT_2_BEDONLY "ABS \xcd\xde\xaf\xc4\xde\xd6\xc8\xc2" // "ABS ï¾ï¾žï½¯ï¾„゙ヨネツ" (" Bed") -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 "\xbe\xaf\xc3\xb2" // "セッテイ" (" conf") -#define MSG_COOLDOWN "\xb6\xc8\xc2\xc3\xb2\xbc" // "カネツテイシ" ("Cooldown") -#define MSG_SWITCH_PS_ON "\xc3\xde\xdd\xb9\xde\xdd\x20\xb5\xdd" // "デï¾ï½¹ï¾žï¾ ï½µï¾" ("Switch power on") -#define MSG_SWITCH_PS_OFF "\xc3\xde\xdd\xb9\xde\xdd\x20\xb5\xcc" // "デï¾ï½¹ï¾žï¾ オフ" ("Switch power off") -#define MSG_EXTRUDE "\xb5\xbc\xc0\xde\xbc" // "オシダシ" ("Extrude") -#define MSG_RETRACT "\xcb\xb7\xba\xd0\xbe\xaf\xc3\xb2" // "ヒキコï¾ï½¾ï½¯ï¾ƒï½²" ("Retract") -#define MSG_MOVE_AXIS "\xbc\xde\xb8\xb2\xc4\xde\xb3" // "ジクイドウ" ("Move axis") -#define MSG_LEVEL_BED "\xcd\xde\xaf\xc4\xde\xda\xcd\xde\xd8\xdd\xb8\xde" // "ï¾ï¾žï½¯ï¾„゙レï¾ï¾žï¾˜ï¾ï½¸ï¾ž" ("Level bed") -#define MSG_MOVE_X "X\xbc\xde\xb8\x20\xb2\xc4\xde\xb3" // "Xジク イドウ" ("Move X") -#define MSG_MOVE_Y "Y\xbc\xde\xb8\x20\xb2\xc4\xde\xb3" // "Yジク イドウ" ("Move Y") -#define MSG_MOVE_Z "Z\xbc\xde\xb8\x20\xb2\xc4\xde\xb3" // "Zジク イドウ" ("Move Z") -#define MSG_MOVE_E "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0" // "エクストルーダー" ("Extruder") -#define MSG_MOVE_01MM "0.1mm \xb2\xc4\xde\xb3" // "0.1mm イドウ" ("Move 0.1mm") -#define MSG_MOVE_1MM " 1mm \xb2\xc4\xde\xb3" // " 1mm イドウ" ("Move 1mm") -#define MSG_MOVE_10MM " 10mm \xb2\xc4\xde\xb3" // " 10mm イドウ" ("Move 10mm") -#define MSG_SPEED "\xbf\xb8\xc4\xde" // "ソクド" ("Speed") -#define MSG_BED_Z "Z\xb5\xcc\xbe\xaf\xc4" // "Zオフセット" ("Bed Z") -#define MSG_NOZZLE "\xc9\xbd\xde\xd9" // "ノズル" ("Nozzle") -#define MSG_BED "\xcd\xde\xaf\xc4\xde" // "ï¾ï¾žï½¯ï¾„゙" ("Bed") -#define MSG_FAN_SPEED "\xcc\xa7\xdd\xbf\xb8\xc4\xde" // "ファï¾ï½¿ï½¸ï¾„゙" ("Fan speed") -#define MSG_FLOW "\xc4\xbc\xad\xc2\xd8\xae\xb3" // "トシュツリョウ" ("Flow") -#define MSG_CONTROL "\xbe\xb2\xb7\xde\xae" // "セイギョ" ("Control") -#define MSG_MIN LCD_STR_THERMOMETER " \xbb\xb2\xc3\xb2" // " サイテイ" (" Min") -#define MSG_MAX LCD_STR_THERMOMETER " \xbb\xb2\xba\xb3" // " サイコウ" (" Max") -#define MSG_FACTOR LCD_STR_THERMOMETER " \xcc\xa7\xb8\xc0\xb0" // " ファクター" (" Fact") -#if LCD_WIDTH > 19 - #define MSG_AUTOTEMP "\xbc\xde\xc4\xde\xb3\xb5\xdd\xc4\xde\xbe\xb2\xb7\xde\xae" // "ジドウオï¾ï¾„゙セイギョ" ("Autotemp") -#else - #define MSG_AUTOTEMP "\xbc\xde\xc4\xde\xb3\xb5\xdd\xc4\xde" // "ジドウオï¾ï¾„゙" ("Autotemp") -#endif -#define MSG_ON "\xb5\xdd " // "ï½µï¾ " ("On ") -#define MSG_OFF "\xb5\xcc " // "オフ " ("Off") -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_SELECT "\xbe\xdd\xc0\xb8" // "ï½¾ï¾ï¾€ï½¸" ("Select") -#if LCD_WIDTH > 19 - #define MSG_ACC "\xb6\xbf\xb8\xc4\xde mm/s2" // "カソクド mm/s2" ("Accel") - #define MSG_VXY_JERK "XY\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s" // "XYジク ヤクド mm/s" ("Vxy-jerk") - #define MSG_VZ_JERK "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde mm/s" // "Zジク ヤクド mm/s" ("Vz-jerk") - #define MSG_VE_JERK "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0\x20\xd4\xb8\xc4\xde" // "エクストルーダー ヤクド" ("Ve-jerk") - #define MSG_VMAX "\xbb\xb2\xc0\xde\xb2\xb5\xb8\xd8\xbf\xb8\xc4\xde " // "サイダイオクリソクド " ("Vmax ") -#else - #define MSG_ACC "\xb6\xbf\xb8\xc4\xde" // "カソクド" ("Accel") - #define MSG_VXY_JERK "XY\xbc\xde\xb8\x20\xd4\xb8\xc4\xde" // "XYジク ヤクド" ("Vxy-jerk") - #define MSG_VZ_JERK "Z\xbc\xde\xb8\x20\xd4\xb8\xc4\xde" // "Zジク ヤクド" ("Vz-jerk") - #define MSG_VE_JERK "E\x20\xd4\xb8\xc4\xde" // "E ヤクド" ("Ve-jerk") - #define MSG_VMAX "max\xb5\xb8\xd8\xbf\xb8\xc4\xde " // "maxオクリソクド" ("Vmax ") -#endif -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#if LCD_WIDTH > 19 - #define MSG_VMIN "\xbb\xb2\xbc\xae\xb3\xb5\xb8\xd8\xbf\xb8\xc4\xde" // "サイショウオクリソクド" ("Vmin") - #define MSG_VTRAV_MIN "\xbb\xb2\xbc\xae\xb3\xb2\xc4\xde\xb3\xbf\xb8\xc4\xde" // "サイショウイドウソクド" ("VTrav min") - #define MSG_AMAX "\xbb\xb2\xc0\xde\xb2\xb6\xbf\xb8\xc4\xde " // "サイダイカソクド " ("Amax ") -#else - #define MSG_VMIN "min\xb5\xb8\xd8\xbf\xb8\xc4\xde" // "minオクリソクド" ("Vmin") - #define MSG_VTRAV_MIN "min\xb2\xc4\xde\xb3\xbf\xb8\xc4\xde" // "minイドウソクド" ("VTrav min") - #define MSG_AMAX "max\xb6\xbf\xb8 " // "maxカソク " ("Amax ") -#endif -#define MSG_A_RETRACT "\xcb\xb7\xba\xd0\xb6\xbf\xb8\xc4\xde" // "ヒキコï¾ï½¶ï½¿ï½¸ï¾„゙" ("A-retract") -#define MSG_A_TRAVEL "\xb2\xc4\xde\xb3\xb6\xbf\xb8\xc4\xde" // "イドウカソクド" ("A-travel") -#define MSG_XSTEPS "Xsteps/mm" -#define MSG_YSTEPS "Ysteps/mm" -#define MSG_ZSTEPS "Zsteps/mm" -#define MSG_ESTEPS "Esteps/mm" -#define MSG_TEMPERATURE "\xb5\xdd\xc4\xde" // "ï½µï¾ï¾„゙" ("Temperature") -#define MSG_MOTION "\xb3\xba\xde\xb7\xbe\xaf\xc3\xb2" // "ウゴキセッテイ" ("Motion") -#define MSG_VOLUMETRIC "\xcc\xa8\xd7\xd2\xdd\xc4" // "フィラメï¾ï¾„" ("Filament") -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#if LCD_WIDTH > 19 - #define MSG_FILAMENT_DIAM "\xcc\xa8\xd7\xd2\xdd\xc4\xc1\xae\xaf\xb9\xb2" // "フィラメï¾ï¾„ï¾ï½®ï½¯ï½¹ï½²" ("Fil. Dia.") -#else - #define MSG_FILAMENT_DIAM "\xcc\xa8\xd7\xd2\xdd\xc4\xb9\xb2" // "フィラメï¾ï¾„ケイ" ("Fil. Dia.") -#endif -#define MSG_CONTRAST "LCD\xba\xdd\xc4\xd7\xbd\xc4" // "LCDコï¾ï¾„ラスト" ("LCD contrast") -#define MSG_STORE_EPROM "\xd2\xd3\xd8\xcd\xb6\xb8\xc9\xb3" // "メモリï¾ï½¶ï½¸ï¾‰ï½³" ("Store memory") -#define MSG_LOAD_EPROM "\xd2\xd3\xd8\xb6\xd7\xd6\xd0\xba\xd0" // "メモリカラヨï¾ï½ºï¾" ("Load memory") -#define MSG_RESTORE_FAILSAFE "\xbe\xaf\xc3\xb2\xd8\xbe\xaf\xc4" // "セッテイリセット" ("Restore failsafe") -#define MSG_REFRESH "\xd8\xcc\xda\xaf\xbc\xad" // "リフレッシュ" ("Refresh") -#define MSG_WATCH "\xbc\xde\xae\xb3\xce\xb3\xb6\xde\xd2\xdd" // "ジョウホウガメï¾" ("Info screen") -#define MSG_PREPARE "\xbc\xde\xad\xdd\xcb\xde\xbe\xaf\xc3\xb2" // "ジュï¾ï¾‹ï¾žï½¾ï½¯ï¾ƒï½²" ("Prepare") -#define MSG_TUNE "\xc1\xae\xb3\xbe\xb2" // "ï¾ï½®ï½³ï½¾ï½²" ("Tune") -#define MSG_PAUSE_PRINT "\xb2\xc1\xbc\xde\xc3\xb2\xbc" // "ï½²ï¾ï½¼ï¾žï¾ƒï½²ï½¼" ("Pause print") -#define MSG_RESUME_PRINT "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリï¾ï¾„サイカイ" ("Resume print") -#define MSG_STOP_PRINT "\xcc\xdf\xd8\xdd\xc4\xc3\xb2\xbc" // "プリï¾ï¾„テイシ" ("Stop print") -#define MSG_CARD_MENU "SD\xb6\xb0\xc4\xde\xb6\xd7\xcc\xdf\xd8\xdd\xc4" // "SDカードカラプリï¾ï¾„" ("Print from SD") -#define MSG_NO_CARD "SD\xb6\xb0\xc4\xde\xb6\xde\xb1\xd8\xcf\xbe\xdd" // "SDカードガアリï¾ï½¾ï¾" ("No SD card") -#define MSG_DWELL "\xb7\xad\xb3\xbc" // "キュウシ" ("Sleep...") -#define MSG_USERWAIT "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオï¾ï¾ï½¸ï¾€ï¾žï½»ï½²" ("Wait for user...") -#define MSG_RESUMING "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリï¾ï¾„サイカイ" ("Resuming print") -#define MSG_PRINT_ABORTED "\xcc\xdf\xd8\xdd\xc4\xb6\xde\xc1\xad\xb3\xbc\xbb\xda\xcf\xbc\xc0" // "プリï¾ï¾„ガï¾ï½­ï½³ï½¼ï½»ï¾šï¾ï½¼ï¾€" ("Print aborted") -#define MSG_NO_MOVE "\xb3\xba\xde\xb7\xcf\xbe\xdd" // "ウゴキï¾ï½¾ï¾" ("No move.") -#define MSG_KILLED "\xcb\xbc\xde\xae\xb3\xc3\xb2\xbc" // "ヒジョウテイシ" ("KILLED. ") -#define MSG_STOPPED "\xc3\xb2\xbc\xbc\xcf\xbc\xc0" // "テイシシï¾ï½¼ï¾€" ("STOPPED. ") -#if LCD_WIDTH > 19 - #define MSG_CONTROL_RETRACT "\xcb\xb7\xba\xd0\xd8\xae\xb3 mm" // "ヒキコï¾ï¾˜ï½®ï½³ mm" ("Retract mm") - #define MSG_CONTROL_RETRACT_SWAP "\xcb\xb7\xba\xd0\xd8\xae\xb3S mm" // "ヒキコï¾ï¾˜ï½®ï½³S mm" ("Swap Re.mm") - #define MSG_CONTROL_RETRACTF "\xcb\xb7\xba\xd0\xbf\xb8\xc4\xde mm/s" // "ヒキコï¾ï½¿ï½¸ï¾„゙ mm/s" ("Retract V") - #define MSG_CONTROL_RETRACT_ZLIFT "\xc9\xbd\xde\xd9\xc0\xb2\xcb mm" // "ノズルタイヒ mm" ("Hop mm") - #define MSG_CONTROL_RETRACT_RECOVER "\xce\xbc\xae\xb3\xd8\xae\xb3 mm" // "ホショウリョウ mm" ("UnRet +mm") - #define MSG_CONTROL_RETRACT_RECOVER_SWAP "\xce\xbc\xae\xb3\xd8\xae\xb3S mm" // "ホショウリョウS mm" ("S UnRet+mm") - #define MSG_CONTROL_RETRACT_RECOVERF "\xce\xbc\xae\xb3\xbf\xb8\xc4\xde mm/s" // "ホショウソクド mm/s" ("UnRet V") -#else - #define MSG_CONTROL_RETRACT "\xcb\xb7\xba\xd0\xd8\xae\xb3" // "ヒキコï¾ï¾˜ï½®ï½³" ("Retract mm") - #define MSG_CONTROL_RETRACT_SWAP "\xcb\xb7\xba\xd0\xd8\xae\xb3S" // "ヒキコï¾ï¾˜ï½®ï½³S" ("Swap Re.mm") - #define MSG_CONTROL_RETRACTF "\xcb\xb7\xba\xd0\xbf\xb8\xc4\xde" // "ヒキコï¾ï½¿ï½¸ï¾„゙" ("Retract V") - #define MSG_CONTROL_RETRACT_ZLIFT "\xc9\xbd\xde\xd9\xc0\xb2\xcb" // "ノズルタイヒ" ("Hop mm") - #define MSG_CONTROL_RETRACT_RECOVER "\xce\xbc\xae\xb3\xd8\xae\xb3" // "ホショウリョウ" ("UnRet +mm") - #define MSG_CONTROL_RETRACT_RECOVER_SWAP "\xce\xbc\xae\xb3\xd8\xae\xb3S" // "ホショウリョウS" ("S UnRet+mm") - #define MSG_CONTROL_RETRACT_RECOVERF "\xce\xbc\xae\xb3\xbf\xb8\xc4\xde" // "ホショウソクド" ("UnRet V") -#endif -#define MSG_AUTORETRACT "\xbc\xde\xc4\xde\xb3\xcb\xb7\xba\xd0" // "ジドウヒキコï¾" ("AutoRetr.") -#define MSG_FILAMENTCHANGE "\xcc\xa8\xd7\xd2\xdd\xc4\xba\xb3\xb6\xdd" // "フィラメï¾ï¾„コウカï¾" ("Change filament") -#define MSG_INIT_SDCARD "SD\xb6\xb0\xc4\xde\xbb\xb2\xd6\xd0\xba\xd0" // "SDカードサイヨï¾ï½ºï¾" ("Init. SD card") -#define MSG_CNG_SDCARD "SD\xb6\xb0\xc4\xde\xba\xb3\xb6\xdd" // "SDカードコウカï¾" ("Change SD card") -#define MSG_ZPROBE_OUT "Z\xcc\xdf\xdb\xb0\xcc\xde\x20\xcd\xde\xaf\xc4\xde\xb6\xde\xb2" // "Zプローブ ï¾ï¾žï½¯ï¾„゙ガイ" ("Z probe out. bed") -#define MSG_HOME "\xbb\xb7\xc6" // "サキニ" ("Home") // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#if LCD_WIDTH > 19 - #define MSG_FIRST "\xa6\xcc\xaf\xb7\xbb\xbe\xc3\xb8\xc0\xde\xbb\xb2" // "ヲフッキサセテクダサイ" ("first") -#else - #define MSG_FIRST "\xa6\xcc\xaf\xb7\xbb\xbe\xd6" // "ヲフッキサセヨ" ("first") -#endif -#define MSG_ZPROBE_ZOFFSET "Z\xb5\xcc\xbe\xaf\xc4" // "Zオフセット" ("Z Offset") -#define MSG_BABYSTEP_X "X\xbc\xde\xb8\x20\xcb\xde\xc4\xde\xb3" // "Xジク ビドウ" ("Babystep X") -#define MSG_BABYSTEP_Y "Y\xbc\xde\xb8\x20\xcb\xde\xc4\xde\xb3" // "Yジク ビドウ" ("Babystep Y") -#define MSG_BABYSTEP_Z "Z\xbc\xde\xb8\x20\xcb\xde\xc4\xde\xb3" // "Zジク ビドウ" ("Babystep Z") -#if LCD_WIDTH > 19 - #define MSG_ENDSTOP_ABORT "\xb2\xc4\xde\xb3\xb9\xde\xdd\xb6\xb2\xb9\xdd\xc1\xb7\xc9\xb3" // "イドウゲï¾ï½¶ï½²ï½¹ï¾ï¾ï½·ï¾‰ï½³" ("Endstop abort") -#else - #define MSG_ENDSTOP_ABORT "\xb2\xc4\xde\xb3\xb9\xde\xdd\xb6\xb2\xb9\xdd\xc1" // "イドウゲï¾ï½¶ï½²ï½¹ï¾ï¾" ("Endstop abort") -#endif -#define MSG_HEATING_FAILED_LCD "\xb6\xc8\xc2\xbc\xaf\xca\xdf\xb2" // "カネツシッパイ" ("Heating failed") -#if LCD_WIDTH > 19 - #define MSG_ERR_REDUNDANT_TEMP "\xb4\xd7\xb0:\xbc\xde\xae\xb3\xc1\xae\xb3\xbb\xb0\xd0\xbd\xc0\xb0\xb7\xc9\xb3" // "ï½´ï¾—ï½°:ジョウï¾ï½®ï½³ï½»ï½°ï¾ï½½ï¾€ï½°ï½·ï¾‰ï½³" ("Err: REDUNDANT TEMP") -#else - #define MSG_ERR_REDUNDANT_TEMP "\xb4\xd7\xb0:\xbc\xde\xae\xb3\xc1\xae\xb3\xbb\xb0\xd0\xbd\xc0" // "ï½´ï¾—ï½°:ジョウï¾ï½®ï½³ï½»ï½°ï¾ï½½ï¾€" ("Err: REDUNDANT TEMP") -#endif -#define MSG_THERMAL_RUNAWAY "\xc8\xc2\xce\xde\xb3\xbf\xb3" // "ネツボウソウ" ("THERMAL RUNAWAY") -#define MSG_ERR_MAXTEMP "\xb4\xd7\xb0:\xbb\xb2\xba\xb3\xb5\xdd\xc1\xae\xb3\xb6" // "ï½´ï¾—ï½°:サイコウオï¾ï¾ï½®ï½³ï½¶" ("Err: MAXTEMP") -#define MSG_ERR_MINTEMP "\xb4\xd7\xb0:\xbb\xb2\xc3\xb2\xb5\xdd\xd0\xcf\xdd" // "ï½´ï¾—ï½°:サイテイオï¾ï¾ï¾ï¾" ("Err: MINTEMP") -#if LCD_WIDTH > 19 - #define MSG_ERR_MAXTEMP_BED "\xb4\xd7\xb0:\xcd\xde\xaf\xc4\xde\x20\xbb\xb2\xba\xb3\xb5\xdd\xc1\xae\xb3\xb6" // "ï½´ï¾—ï½°:ï¾ï¾žï½¯ï¾„゙ サイコウオï¾ï¾ï½®ï½³ï½¶" ("Err: MAXTEMP BED") - #define MSG_ERR_MINTEMP_BED "\xb4\xd7\xb0:\xcd\xde\xaf\xc4\xde\x20\xbb\xb2\xc3\xb2\xb5\xdd\xd0\xcf\xdd" // "ï½´ï¾—ï½°:ï¾ï¾žï½¯ï¾„゙ サイテイオï¾ï¾ï¾ï¾" ("Err: MINTEMP BED") -#else - #define MSG_ERR_MAXTEMP_BED "\xb4\xd7\xb0:\xcd\xde\xaf\xc4\xde\x20\xbb\xb2\xba\xb3\xb5\xdd" // "ï½´ï¾—ï½°:ï¾ï¾žï½¯ï¾„゙ サイコウオï¾" ("Err: MAXTEMP BED") - #define MSG_ERR_MINTEMP_BED "\xb4\xd7\xb0:\xcd\xde\xaf\xc4\xde\x20\xbb\xb2\xc3\xb2\xb5\xdd" // "ï½´ï¾—ï½°:ï¾ï¾žï½¯ï¾„゙ サイテイオï¾" ("Err: MINTEMP BED") -#endif -#define MSG_HALTED "\xcc\xdf\xd8\xdd\xc0\xb0\xca\xc3\xb2\xbc\xbc\xcf\xbc\xc0" // "プリï¾ï¾€ï½°ï¾Šï¾ƒï½²ï½¼ï½¼ï¾ï½¼ï¾€" ("PRINTER HALTED") -#define MSG_PLEASE_RESET "\xd8\xbe\xaf\xc4\xbc\xc3\xb8\xc0\xde\xbb\xb2" // "リセットシテクダサイ" ("Please reset") -#define MSG_SHORT_DAY "d" // One character only -#define MSG_SHORT_HOUR "h" // One character only -#define MSG_SHORT_MINUTE "m" // One character only -#define MSG_HEATING "\xb6\xc8\xc2\xc1\xad\xb3" // "カネツï¾ï½­ï½³" ("Heating...") -#define MSG_HEATING_COMPLETE "\xb6\xc8\xc2\xb6\xdd\xd8\xae\xb3" // "カネツカï¾ï¾˜ï½®ï½³" ("Heating done.") -#define MSG_BED_HEATING "\xcd\xde\xaf\xc4\xde\x20\xb6\xc8\xc2\xc1\xad\xb3" // "ï¾ï¾žï½¯ï¾„゙ カネツï¾ï½­ï½³" ("Bed Heating.") -#define MSG_BED_DONE "\xcd\xde\xaf\xc4\xde\x20\xb6\xc8\xc2\xb6\xdd\xd8\xae\xb3" // "ï¾ï¾žï½¯ï¾„゙ カネツカï¾ï¾˜ï½®ï½³" ("Bed done.") -#define MSG_DELTA_CALIBRATE "\xc3\xde\xd9\xc0\x20\xba\xb3\xbe\xb2" // "デルタ コウセイ" ("Delta Calibration") -#define MSG_DELTA_CALIBRATE_X "X\xbc\xde\xb8\x20\xba\xb3\xbe\xb2" // "Xジク コウセイ" ("Calibrate X") -#define MSG_DELTA_CALIBRATE_Y "Y\xbc\xde\xb8\x20\xba\xb3\xbe\xb2" // "Yジク コウセイ" ("Calibrate Y") -#define MSG_DELTA_CALIBRATE_Z "Z\xbc\xde\xb8\x20\xba\xb3\xbe\xb2" // "Zジク コウセイ" ("Calibrate Z") -#define MSG_DELTA_CALIBRATE_CENTER "\xc1\xad\xb3\xbc\xdd\x20\xba\xb3\xbe\xb2" // "ï¾ï½­ï½³ï½¼ï¾ コウセイ" ("Calibrate Center") -#define MSG_INFO_MENU "\xba\xc9\xcc\xdf\xd8\xdd\xc0\xb0\xc6\xc2\xb2\xc3" // "コノプリï¾ï¾€ï½°ï¾†ï¾‚イテ" ("About Printer") -#define MSG_INFO_PRINTER_MENU "\xcc\xdf\xd8\xdd\xc0\xb0\xbc\xde\xae\xb3\xce\xb3" // "プリï¾ï¾€ï½°ï½¼ï¾žï½®ï½³ï¾Žï½³" ("Printer Info") -#define MSG_INFO_STATS_MENU "\xcc\xdf\xd8\xdd\xc4\xbc\xde\xae\xb3\xb7\xae\xb3" // "プリï¾ï¾„ジョウキョウ" ("Printer Stats") -#define MSG_INFO_BOARD_MENU "\xbe\xb2\xb7\xde\xae\xb9\xb2\xbc\xde\xae\xb3\xce\xb3" // "セイギョケイジョウホウ" ("Board Info") -#define MSG_INFO_THERMISTOR_MENU "\xbb\xb0\xd0\xbd\xc0\xb0" // "サーï¾ï½½ï¾€ï½°" ("Thermistors") -#define MSG_INFO_EXTRUDERS "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0\xbd\xb3" // "エクストルーダースウ" ("Extruders") -#define MSG_INFO_BAUDRATE "\xce\xde\xb0\xda\xb0\xc4" // "ボーレート" ("Baud") -#define MSG_INFO_PROTOCOL "\xcc\xdf\xdb\xc4\xba\xd9" // "プロトコル" ("Protocol") -#define MSG_INFO_PRINT_COUNT "\xcc\xdf\xd8\xdd\xc4\xbd\xb3 " // "プリï¾ï¾„スウ " ("Print Count") -#define MSG_INFO_COMPLETED_PRINTS "\xb6\xdd\xd8\xae\xb3\xbd\xb3" // "ï½¶ï¾ï¾˜ï½®ï½³ï½½ï½³" ("Completed") -#define MSG_INFO_PRINT_TIME "\xcc\xdf\xd8\xdd\xc4\xbc\xde\xb6\xdd\xd9\xb2\xb9\xb2" // "プリï¾ï¾„ジカï¾ï¾™ï½²ï½¹ï½²" ("Total print time") -#define MSG_INFO_PRINT_LONGEST "\xbb\xb2\xc1\xae\xb3\xcc\xdf\xd8\xdd\xc4\xbc\xde\xb6\xdd" // "サイï¾ï½®ï½³ï¾Œï¾Ÿï¾˜ï¾ï¾„ジカï¾" ("Longest job time") -#if LCD_WIDTH > 19 - #define MSG_INFO_PRINT_FILAMENT "\xcc\xa8\xd7\xd2\xdd\xc4\xbc\xd6\xb3\xd8\xae\xb3\xd9\xb2\xb9\xb2" // "フィラメï¾ï¾„シヨウリョウルイケイ" ("Extruded total") -#else - #define MSG_INFO_PRINT_FILAMENT "\xcc\xa8\xd7\xd2\xdd\xc4\xbf\xb3\xbc\xd6\xb3\xd8\xae\xb3" // "フィラメï¾ï¾„ソウシヨウリョウ" ("Extruded") -#endif -#define MSG_INFO_MIN_TEMP "\xbe\xaf\xc3\xb2\xbb\xb2\xc3\xb2\xb5\xdd" // "セッテイサイテイオï¾" ("Min Temp") -#define MSG_INFO_MAX_TEMP "\xbe\xaf\xc3\xb2\xbb\xb2\xba\xb3\xb5\xdd" // "セッテイサイコウオï¾" ("Max Temp") -#if LCD_WIDTH > 19 - #define MSG_INFO_PSU "\xc3\xde\xdd\xb9\xde\xdd\xbc\xad\xcd\xde\xc2" // "デï¾ï½¹ï¾žï¾ï½¼ï½­ï¾ï¾žï¾‚" ("Power Supply") -#else - #define MSG_INFO_PSU "\xc3\xde\xdd\xb9\xde\xdd" // "デï¾ï½¹ï¾žï¾" ("Power Supply") -#endif -#define MSG_FILAMENT_CHANGE_HEADER "\xcc\xa8\xd7\xd2\xdd\xc4\xba\xb3\xb6\xdd" // "フィラメï¾ï¾„コウカï¾" ("CHANGE FILAMENT") -#define MSG_FILAMENT_CHANGE_OPTION_HEADER "\xc4\xde\xb3\xbb\xa6\xbe\xdd\xc0\xb8\xbc\xc3\xb8\xc0\xde\xbb\xb2" // "ドウサヲセï¾ï¾€ï½¸ï½¼ï¾ƒï½¸ï¾€ï¾žï½»ï½²" ("CHANGE OPTIONS:") -#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "\xbb\xd7\xc6\xb5\xbc\xc0\xde\xbd" // "サラニオシダス" ("Extrude more") -#define MSG_FILAMENT_CHANGE_OPTION_RESUME "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2" // "プリï¾ï¾„サイカイ" ("Resume print") -#if LCD_HEIGHT >= 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "\xba\xb3\xb6\xdd\xa6\xb6\xb2\xbc\xbc\xcf\xbd" // "コウカï¾ï½¦ï½¶ï½²ï½¼ï½¼ï¾ï½½" ("Wait for start") - #define MSG_FILAMENT_CHANGE_INIT_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオï¾ï¾ï½¸ï¾€ï¾žï½»ï½²" ("of the filament") - #define MSG_FILAMENT_CHANGE_INIT_3 "" // "" ("change") - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xc7\xb7\xc0\xde\xbc\xc1\xad\xb3" // "フィラメï¾ï¾„ヌキダシï¾ï½­ï½³" ("Wait for") - #define MSG_FILAMENT_CHANGE_UNLOAD_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオï¾ï¾ï½¸ï¾€ï¾žï½»ï½²" ("filament unload") - #define MSG_FILAMENT_CHANGE_UNLOAD_3 "" - #define MSG_FILAMENT_CHANGE_INSERT_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xa6\xbf\xb3\xc6\xad\xb3\xbc," // "フィラメï¾ï¾„ヲソウニュウシ," ("Insert filament") - #define MSG_FILAMENT_CHANGE_INSERT_2 "\xb8\xd8\xaf\xb8\xbd\xd9\xc4\xbf\xde\xaf\xba\xb3\xbc\xcf\xbd" // "クリックスルトゾッコウシï¾ï½½" ("and press button") - #define MSG_FILAMENT_CHANGE_INSERT_3 "" // "" ("to continue...") - #define MSG_FILAMENT_CHANGE_LOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xbf\xb3\xc3\xdd\xc1\xad\xb3" // "フィラメï¾ï¾„ソウテï¾ï¾ï½­ï½³" ("Wait for") - #define MSG_FILAMENT_CHANGE_LOAD_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオï¾ï¾ï½¸ï¾€ï¾žï½»ï½²" ("filament load") - #define MSG_FILAMENT_CHANGE_LOAD_3 "" - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xb5\xbc\xc0\xde\xbc\xc1\xad\xb3" // "フィラメï¾ï¾„オシダシï¾ï½­ï½³" ("Wait for") - #define MSG_FILAMENT_CHANGE_EXTRUDE_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオï¾ï¾ï½¸ï¾€ï¾žï½»ï½²" ("filament extrude") - #define MSG_FILAMENT_CHANGE_EXTRUDE_3 "" - #define MSG_FILAMENT_CHANGE_RESUME_1 "\xcc\xdf\xd8\xdd\xc4\xa6\xbb\xb2\xb6\xb2\xbc\xcf\xbd" // "プリï¾ï¾„ヲサイカイシï¾ï½½" ("Wait for print") - #define MSG_FILAMENT_CHANGE_RESUME_2 "\xbc\xca\xde\xd7\xb8\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2" // "シバラクオï¾ï¾ï½¸ï¾€ï¾žï½»ï½²" ("to resume") - #define MSG_FILAMENT_CHANGE_RESUME_3 "" -#else // LCD_HEIGHT < 4 - #define MSG_FILAMENT_CHANGE_INIT_1 "\xba\xb3\xb6\xdd\xa6\xb6\xb2\xbc\xbc\xcf\xbd" // "コウカï¾ï½¦ï½¶ï½²ï½¼ï½¼ï¾ï½½" ("Please wait...") - #define MSG_FILAMENT_CHANGE_UNLOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xc7\xb7\xc0\xde\xbc\xc1\xad\xb3" // "フィラメï¾ï¾„ヌキダシï¾ï½­ï½³" ("Ejecting...") - #if LCD_WIDTH > 19 - #define MSG_FILAMENT_CHANGE_INSERT_1 "\xbf\xb3\xc6\xad\xb3\xbc\x2c\xb8\xd8\xaf\xb8\xbc\xc3\xb8\xc0\xde\xbb\xb2" // "ソウニュウシ,クリックシテクダサイ" ("Insert and Click") - #else - #define MSG_FILAMENT_CHANGE_INSERT_1 "\xbf\xb3\xc6\xad\xb3\xbc\x2c\xb8\xd8\xaf\xb8\xbe\xd6" // "ソウニュウシ,クリックセヨ" ("Insert and Click") - #endif - #define MSG_FILAMENT_CHANGE_LOAD_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xbf\xb3\xc3\xdd\xc1\xad\xb3" // "フィラメï¾ï¾„ソウテï¾ï¾ï½­ï½³" ("Loading...") - #define MSG_FILAMENT_CHANGE_EXTRUDE_1 "\xcc\xa8\xd7\xd2\xdd\xc4\xb5\xbc\xc0\xde\xbc\xc1\xad\xb3" // "フィラメï¾ï¾„オシダシï¾ï½­ï½³" ("Extruding...") - #define MSG_FILAMENT_CHANGE_RESUME_1 "\xcc\xdf\xd8\xdd\xc4\xa6\xbb\xb2\xb6\xb2\xbc\xcf\xbd" // "プリï¾ï¾„ヲサイカイシï¾ï½½" ("Resuming...") -#endif // LCD_HEIGHT < 4 - -#endif // LANGUAGE_KANA_H diff --git a/lib/Marlin/language_kana_utf8.h b/lib/Marlin/language_kana_utf8.h deleted file mode 100644 index 3e46f57..0000000 --- a/lib/Marlin/language_kana_utf8.h +++ /dev/null @@ -1,226 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Japanese (Kana UTF8 version) - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ - -#ifndef LANGUAGE_KANA_UTF_H -#define LANGUAGE_KANA_UTF_H - -#define MAPPER_E382E383 -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_KANA - -// This just to show the potential benefit of unicode. -// This translation can be improved by using the full charset of unicode codeblock U+30A0 to U+30FF. - -// 片仮å表示定義 -#define WELCOME_MSG MACHINE_NAME " ready." -#define MSG_SD_INSERTED "カードガソウニュウサレマシタ" // "Card inserted" -#define MSG_SD_REMOVED "カードガアリマセン" // "Card removed" -#define MSG_LCD_ENDSTOPS "エンドストップ" // "Endstops" // Max length 8 characters -#define MSG_MAIN "メイン" // "Main" -#define MSG_AUTOSTART "ジドウカイシ" // "Autostart" -#define MSG_DISABLE_STEPPERS "モーターデンゲン オフ" // "Disable steppers" -#define MSG_AUTO_HOME "ゲンテンフッキ" // "Auto home" -#define MSG_AUTO_HOME_X "Xジク ゲンテンフッキ" // "Home X" -#define MSG_AUTO_HOME_Y "Yジク ゲンテンフッキ" // "Home Y" -#define MSG_AUTO_HOME_Z "Zジク ゲンテンフッキ" // "Home Z" -#define MSG_LEVEL_BED_HOMING "ゲンテンフッキãƒãƒ¥ã‚¦" // "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "レベリングカイシ" // "Click to Begin" -#define MSG_LEVEL_BED_NEXT_POINT "ツギノソクテイテンヘ" // "Next Point" -#define MSG_LEVEL_BED_DONE "レベリングカンリョウ" // "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "トリヤメ" // "Cancel" -#define MSG_SET_HOME_OFFSETS "キジュンオフセットセッテイ" // "Set home offsets" -#define MSG_HOME_OFFSETS_APPLIED "オフセットガテキヨウサレマシタ" // "Offsets applied" -#define MSG_SET_ORIGIN "キジュンセット" // "Set origin" -#define MSG_PREHEAT_1 "PLA ヨãƒãƒ„" // "Preheat PLA" -#define MSG_PREHEAT_1_N MSG_PREHEAT_1 " " -#define MSG_PREHEAT_1_ALL "PLA スベテヨãƒãƒ„" // " All" -#define MSG_PREHEAT_1_BEDONLY "PLA ベッドヨãƒãƒ„" // " Bed" -#define MSG_PREHEAT_1_SETTINGS MSG_PREHEAT_1 "セッテイ" // " conf" -#define MSG_PREHEAT_2 "ABS ヨãƒãƒ„" // "Preheat ABS" -#define MSG_PREHEAT_2_N MSG_PREHEAT_2 " " -#define MSG_PREHEAT_2_ALL "ABS スベテヨãƒãƒ„" // " All" -#define MSG_PREHEAT_2_BEDONLY "ABS ベッドヨãƒãƒ„" // " Bed" -#define MSG_PREHEAT_2_SETTINGS MSG_PREHEAT_2 "セッテイ" // " conf" -#define MSG_COOLDOWN "ã‚«ãƒãƒ„テイシ" // "Cooldown" -#define MSG_SWITCH_PS_ON "デンゲン オン" // "Switch power on" -#define MSG_SWITCH_PS_OFF "デンゲン オフ" // "Switch power off" -#define MSG_EXTRUDE "オシダシ" // "Extrude" -#define MSG_RETRACT "ヒキコミセッテイ" // "Retract" -#define MSG_MOVE_AXIS "ジクイドウ" // "Move axis" -#define MSG_LEVEL_BED "ベッドレベリング" // "Level bed" -#define MSG_MOVE_X "Xジク イドウ" // "Move X" -#define MSG_MOVE_Y "Yジク イドウ" // "Move Y" -#define MSG_MOVE_Z "Zジク イドウ" // "Move Z" -#define MSG_MOVE_E "エクストルーダー" // "Extruder" -#define MSG_MOVE_01MM "0.1mm イドウ" // "Move 0.1mm" -#define MSG_MOVE_1MM " 1mm イドウ" // "Move 1mm" -#define MSG_MOVE_10MM " 10mm イドウ" // "Move 10mm" -#define MSG_SPEED "ソクド" // "Speed" -#define MSG_BED_Z "Zオフセット" // "Bed Z" -#define MSG_NOZZLE "ノズル" // "Nozzle" -#define MSG_BED "ベッド" // "Bed" -#define MSG_FAN_SPEED "ファンソクド" // "Fan speed" -#define MSG_FLOW "トシュツリョウ" // "Flow" -#define MSG_CONTROL "セイギョ" // "Control" -#define MSG_MIN LCD_STR_THERMOMETER " サイテイ" // " Min" -#define MSG_MAX LCD_STR_THERMOMETER " サイコウ" // " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " ファクター" // " Fact" -#define MSG_AUTOTEMP "ジドウオンドセイギョ" // "Autotemp" -#define MSG_ON "オン " // "On " -#define MSG_OFF "オフ " // "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_SELECT "センタク" // "Select" -#define MSG_ACC "カソクド mm/s2" // "Accel" -#define MSG_VXY_JERK "XYジク ヤクド mm/s" // "Vxy-jerk" -#define MSG_VZ_JERK "Zジク ヤクド mm/s" // "Vz-jerk" -#define MSG_VE_JERK "エクストルーダー ヤクド" // "Ve-jerk" -#define MSG_VMAX "サイダイオクリソクド " // "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "サイショウオクリソクド" // "Vmin" -#define MSG_VTRAV_MIN "サイショウイドウソクド" // "VTrav min" -#define MSG_AMAX "サイダイカソクド " // "Amax " -#define MSG_A_RETRACT "ヒキコミカソクド" // "A-retract" -#define MSG_A_TRAVEL "イドウカソクド" // "A-travel" -#define MSG_XSTEPS "Xsteps/mm" -#define MSG_YSTEPS "Ysteps/mm" -#define MSG_ZSTEPS "Zsteps/mm" -#define MSG_ESTEPS "Esteps/mm" -#define MSG_TEMPERATURE "オンド" // "Temperature" -#define MSG_MOTION "ウゴキセッテイ" // "Motion" -#define MSG_VOLUMETRIC "フィラメント" // "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "フィラメントãƒãƒ§ãƒƒã‚±ã‚¤" // "Fil. Dia." -#define MSG_CONTRAST "LCDコントラスト" // "LCD contrast" -#define MSG_STORE_EPROM "メモリヘカクノウ" // "Store memory" -#define MSG_LOAD_EPROM "メモリカラヨミコミ" // "Load memory" -#define MSG_RESTORE_FAILSAFE "セッテイリセット" // "Restore failsafe" -#define MSG_REFRESH "リフレッシュ" // "Refresh" -#define MSG_WATCH "ジョウホウガメン" // "Info screen" -#define MSG_PREPARE "ジュンビセッテイ" // "Prepare" -#define MSG_TUNE "ãƒãƒ§ã‚¦ã‚»ã‚¤" // "Tune" -#define MSG_PAUSE_PRINT "イãƒã‚¸ãƒ†ã‚¤ã‚·" // "Pause print" -#define MSG_RESUME_PRINT "プリントサイカイ" // "Resume print" -#define MSG_STOP_PRINT "プリントテイシ" // "Stop print" -#define MSG_CARD_MENU "SDカードカラプリント" // "Print from SD" -#define MSG_NO_CARD "SDカードガアリマセン" // "No SD card" -#define MSG_DWELL "キュウシ" // "Sleep..." -#define MSG_USERWAIT "ã‚·ãƒãƒ©ã‚¯ã‚ªãƒžãƒã‚¯ãƒ€ã‚µã‚¤" // "Wait for user..." -#define MSG_RESUMING "プリントサイカイ" // "Resuming print" -#define MSG_PRINT_ABORTED "プリントガãƒãƒ¥ã‚¦ã‚·ã‚µãƒ¬ãƒžã‚·ã‚¿" // "Print aborted" -#define MSG_NO_MOVE "ウゴキマセン" // "No move." -#define MSG_KILLED "ヒジョウテイシ" // "KILLED. " -#define MSG_STOPPED "テイシシマシタ" // "STOPPED. " -#define MSG_CONTROL_RETRACT "ヒキコミリョウ mm" // "Retract mm" -#define MSG_CONTROL_RETRACT_SWAP "ヒキコミリョウS mm" // "Swap Re.mm" -#define MSG_CONTROL_RETRACTF "ヒキコミソクド mm/s" // "Retract V" -#define MSG_CONTROL_RETRACT_ZLIFT "ノズルタイヒ mm" // "Hop mm" -#define MSG_CONTROL_RETRACT_RECOVER "ホショウリョウ mm" // "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "ホショウリョウS mm" // "S UnRet+mm" -#define MSG_CONTROL_RETRACT_RECOVERF "ホショウソクド mm/s" // "UnRet V" -#define MSG_AUTORETRACT "ジドウヒキコミ" // "AutoRetr." -#define MSG_FILAMENTCHANGE "フィラメントコウカン" // "Change filament" -#define MSG_INIT_SDCARD "SDカードサイヨミコミ" // "Init. SD card" -#define MSG_CNG_SDCARD "SDカードコウカン" // "Change SD card" -#define MSG_ZPROBE_OUT "Zプローブ ベッドガイ" // "Z probe out. bed" -#define MSG_HOME "サキニ" // "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "ヲフッキサセテクダサイ" // "first" -#define MSG_ZPROBE_ZOFFSET "Zオフセット" // "Z Offset" -#define MSG_BABYSTEP_X "Xジク ビドウ" // "Babystep X" -#define MSG_BABYSTEP_Y "Yジク ビドウ" // "Babystep Y" -#define MSG_BABYSTEP_Z "Zジク ビドウ" // "Babystep Z" -#define MSG_ENDSTOP_ABORT "イドウゲンカイケンãƒã‚­ãƒŽã‚¦" // "Endstop abort" -#define MSG_HEATING_FAILED_LCD "ã‚«ãƒãƒ„シッパイ" // "Heating failed" -#define MSG_ERR_REDUNDANT_TEMP "エラー:ジョウãƒãƒ§ã‚¦ã‚µãƒ¼ãƒŸã‚¹ã‚¿ãƒ¼ã‚­ãƒŽã‚¦" // "Err: REDUNDANT TEMP" -#define MSG_THERMAL_RUNAWAY "ãƒãƒ„ボウソウ" // "THERMAL RUNAWAY" -#define MSG_ERR_MAXTEMP "エラー:サイコウオンãƒãƒ§ã‚¦ã‚«" // "Err: MAXTEMP" -#define MSG_ERR_MINTEMP "エラー:サイテイオンミマン" // "Err: MINTEMP" -#define MSG_ERR_MAXTEMP_BED "エラー:ベッド サイコウオンãƒãƒ§ã‚¦ã‚«" // "Err: MAXTEMP BED" -#define MSG_ERR_MINTEMP_BED "エラー:ベッド サイテイオンミマン" // "Err: MINTEMP BED" -#define MSG_HALTED "プリンターãƒãƒ†ã‚¤ã‚·ã‚·ãƒžã‚·ã‚¿" // "PRINTER HALTED" -#define MSG_PLEASE_RESET "リセットシテクダサイ" // "Please reset" -#define MSG_SHORT_DAY "d" // One character only -#define MSG_SHORT_HOUR "h" // One character only -#define MSG_SHORT_MINUTE "m" // One character only -#define MSG_HEATING "ã‚«ãƒãƒ„ãƒãƒ¥ã‚¦" // "Heating..." -#define MSG_HEATING_COMPLETE "ã‚«ãƒãƒ„カンリョウ" // "Heating done." -#define MSG_BED_HEATING "ベッド ã‚«ãƒãƒ„ãƒãƒ¥ã‚¦" // "Bed Heating." -#define MSG_BED_DONE "ベッド ã‚«ãƒãƒ„カンリョウ" // "Bed done." -#define MSG_DELTA_CALIBRATE "デルタ コウセイ" // "Delta Calibration" -#define MSG_DELTA_CALIBRATE_X "Xジク コウセイ" // "Calibrate X" -#define MSG_DELTA_CALIBRATE_Y "Yジク コウセイ" // "Calibrate Y" -#define MSG_DELTA_CALIBRATE_Z "Zジク コウセイ" // "Calibrate Z" -#define MSG_DELTA_CALIBRATE_CENTER "ãƒãƒ¥ã‚¦ã‚·ãƒ³ コウセイ" // "Calibrate Center" -#define MSG_INFO_MENU "コノプリンターニツイテ" // "About Printer" -#define MSG_INFO_PRINTER_MENU "プリンタージョウホウ" // "Printer Info" -#define MSG_INFO_STATS_MENU "プリントジョウキョウ" // "Printer Stats" -#define MSG_INFO_BOARD_MENU "セイギョケイジョウホウ" // "Board Info" -#define MSG_INFO_THERMISTOR_MENU "サーミスター" // "Thermistors" -#define MSG_INFO_EXTRUDERS "エクストルーダースウ" // "Extruders" -#define MSG_INFO_BAUDRATE "ボーレート" // "Baud" -#define MSG_INFO_PROTOCOL "プロトコル" // "Protocol" -#define MSG_INFO_PRINT_COUNT "プリントスウ " // "Print Count" -#define MSG_INFO_COMPLETED_PRINTS "カンリョウスウ" // "Completed" -#define MSG_INFO_PRINT_TIME "プリントジカンルイケイ" // "Total print time" -#define MSG_INFO_PRINT_LONGEST "サイãƒãƒ§ã‚¦ãƒ—リントジカン" // "Longest job time" -#define MSG_INFO_PRINT_FILAMENT "フィラメントシヨウリョウルイケイ" // "Extruded total" -#define MSG_INFO_MIN_TEMP "セッテイサイテイオン" // "Min Temp" -#define MSG_INFO_MAX_TEMP "セッテイサイコウオン" // "Max Temp" -#define MSG_INFO_PSU "デンゲンシュベツ" // "Power Supply" -#define MSG_FILAMENT_CHANGE_HEADER "フィラメントコウカン" // "CHANGE FILAMENT" -#define MSG_FILAMENT_CHANGE_OPTION_HEADER "ドウサヲセンタクシテクダサイ" // "CHANGE OPTIONS:" -#define MSG_FILAMENT_CHANGE_OPTION_EXTRUDE "サラニオシダス" // "Extrude more" -#define MSG_FILAMENT_CHANGE_OPTION_RESUME "プリントサイカイ" // "Resume print" -#define MSG_FILAMENT_CHANGE_INIT_1 "コウカンヲカイシシマス" // "Wait for start" -#define MSG_FILAMENT_CHANGE_INIT_2 "ã‚·ãƒãƒ©ã‚¯ã‚ªãƒžãƒã‚¯ãƒ€ã‚µã‚¤" // "of the filament" -#define MSG_FILAMENT_CHANGE_INIT_3 "" // "change" -#define MSG_FILAMENT_CHANGE_UNLOAD_1 "フィラメントヌキダシãƒãƒ¥ã‚¦" // "Wait for" -#define MSG_FILAMENT_CHANGE_UNLOAD_2 "ã‚·ãƒãƒ©ã‚¯ã‚ªãƒžãƒã‚¯ãƒ€ã‚µã‚¤" // "filament unload" -#define MSG_FILAMENT_CHANGE_UNLOAD_3 "" -#define MSG_FILAMENT_CHANGE_INSERT_1 "フィラメントヲソウニュウシ," // "Insert filament" -#define MSG_FILAMENT_CHANGE_INSERT_2 "クリックスルトゾッコウシマス" // "and press button" -#define MSG_FILAMENT_CHANGE_INSERT_3 "" // "to continue..." -#define MSG_FILAMENT_CHANGE_LOAD_1 "フィラメントソウテンãƒãƒ¥ã‚¦" // "Wait for" -#define MSG_FILAMENT_CHANGE_LOAD_2 "ã‚·ãƒãƒ©ã‚¯ã‚ªãƒžãƒã‚¯ãƒ€ã‚µã‚¤" // "filament load" -#define MSG_FILAMENT_CHANGE_LOAD_3 "" -#define MSG_FILAMENT_CHANGE_EXTRUDE_1 "フィラメントオシダシãƒãƒ¥ã‚¦" // "Wait for" -#define MSG_FILAMENT_CHANGE_EXTRUDE_2 "ã‚·ãƒãƒ©ã‚¯ã‚ªãƒžãƒã‚¯ãƒ€ã‚µã‚¤" // "filament extrude" -#define MSG_FILAMENT_CHANGE_EXTRUDE_3 "" -#define MSG_FILAMENT_CHANGE_RESUME_1 "プリントヲサイカイシマス" // "Wait for print" -#define MSG_FILAMENT_CHANGE_RESUME_2 "ã‚·ãƒãƒ©ã‚¯ã‚ªãƒžãƒã‚¯ãƒ€ã‚µã‚¤" // "to resume" -#define MSG_FILAMENT_CHANGE_RESUME_3 "" - -#endif // LANGUAGE_KANA_UTF_H diff --git a/lib/Marlin/language_nl.h b/lib/Marlin/language_nl.h deleted file mode 100644 index 5f682bd..0000000 --- a/lib/Marlin/language_nl.h +++ /dev/null @@ -1,170 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Dutch - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_NL_H -#define LANGUAGE_NL_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " gereed." -#define MSG_SD_INSERTED "Kaart ingestoken" -#define MSG_SD_REMOVED "Kaart verwijderd" -#define MSG_MAIN "Hoofdmenu" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Motoren uit" -#define MSG_AUTO_HOME "Auto home" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Klik voor begin" -#define MSG_LEVEL_BED_DONE "Bed level kompl." -#define MSG_LEVEL_BED_CANCEL "Bed level afbr." -#define MSG_SET_HOME_OFFSETS "Zet home offsets" -#define MSG_HOME_OFFSETS_APPLIED "H offset toegep." -#define MSG_SET_ORIGIN "Nulpunt instellen" -#define MSG_PREHEAT_1 "PLA voorverwarmen" -#define MSG_PREHEAT_1_N "PLA voorverw. " -#define MSG_PREHEAT_1_ALL "PLA voorverw. aan" -#define MSG_PREHEAT_1_BEDONLY "PLA voorverw. Bed" -#define MSG_PREHEAT_1_SETTINGS "PLA verw. conf" -#define MSG_PREHEAT_2 "ABS voorverwarmen" -#define MSG_PREHEAT_2_N "ABS voorverw. " -#define MSG_PREHEAT_2_ALL "ABS voorverw. aan" -#define MSG_PREHEAT_2_BEDONLY "ABS voorverw. Bed" -#define MSG_PREHEAT_2_SETTINGS "ABS verw. conf" -#define MSG_COOLDOWN "Afkoelen" -#define MSG_SWITCH_PS_ON "Stroom aan" -#define MSG_SWITCH_PS_OFF "Stroom uit" -#define MSG_EXTRUDE "Extrude" -#define MSG_RETRACT "Retract" -#define MSG_MOVE_AXIS "As verplaatsen" -#define MSG_MOVE_X "Verplaats X" -#define MSG_MOVE_Y "Verplaats Y" -#define MSG_MOVE_Z "Verplaats Z" -#define MSG_MOVE_E "Extruder" -#define MSG_MOVE_01MM "Verplaats 0.1mm" -#define MSG_MOVE_1MM "Verplaats 1mm" -#define MSG_MOVE_10MM "Verplaats 10mm" -#define MSG_SPEED "Snelheid" -#define MSG_BED_Z "Bed Z" -#define MSG_NOZZLE "Nozzle" -#define MSG_BED "Bed" -#define MSG_FAN_SPEED "Fan snelheid" -#define MSG_FLOW "Flow" -#define MSG_CONTROL "Control" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Autotemp" -#define MSG_ON "Aan " -#define MSG_OFF "Uit" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Versn" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retract" -#define MSG_A_TRAVEL "A-travel" -#define MSG_XSTEPS "Xsteps/mm" -#define MSG_YSTEPS "Ysteps/mm" -#define MSG_ZSTEPS "Zsteps/mm" -#define MSG_ESTEPS "Esteps/mm" -#define MSG_TEMPERATURE "Temperatuur" -#define MSG_MOTION "Beweging" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E in mm3" -#define MSG_FILAMENT_DIAM "Fil. Dia." -#define MSG_CONTRAST "LCD contrast" -#define MSG_STORE_EPROM "Geheugen opslaan" -#define MSG_LOAD_EPROM "Geheugen laden" -#define MSG_RESTORE_FAILSAFE "Noodstop reset" -#define MSG_REFRESH "Ververs" -#define MSG_WATCH "Info scherm" -#define MSG_PREPARE "Voorbereiden" -#define MSG_TUNE "Afstellen" -#define MSG_PAUSE_PRINT "Print pauzeren" -#define MSG_RESUME_PRINT "Print hervatten" -#define MSG_STOP_PRINT "Print stoppen" -#define MSG_CARD_MENU "Print van SD" -#define MSG_NO_CARD "Geen SD kaart" -#define MSG_DWELL "Slapen..." -#define MSG_USERWAIT "Wachten..." -#define MSG_RESUMING "Print hervatten" -#define MSG_PRINT_ABORTED "Print afgebroken" -#define MSG_NO_MOVE "Geen beweging." -#define MSG_KILLED "Afgebroken. " -#define MSG_STOPPED "Gestopt. " -#define MSG_CONTROL_RETRACT "Retract mm" -#define MSG_CONTROL_RETRACT_SWAP "Ruil Retract mm" -#define MSG_CONTROL_RETRACTF "Retract F" -#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" -#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Ruil UnRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "UnRet F" -#define MSG_AUTORETRACT "AutoRetr." -#define MSG_FILAMENTCHANGE "Verv. Filament" -#define MSG_INIT_SDCARD "Init. SD kaart" -#define MSG_CNG_SDCARD "Verv. SD Kaart" -#define MSG_ZPROBE_OUT "Z probe uit. bed" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Z Offset" -#define MSG_BABYSTEP_X "Babystap X" -#define MSG_BABYSTEP_Y "Babystap Y" -#define MSG_BABYSTEP_Z "Babystap Z" -#define MSG_ENDSTOP_ABORT "Endstop afbr." -#define MSG_HEATING_FAILED_LCD "voorverw. fout" -#define MSG_ERR_REDUNDANT_TEMP "Redun. temp fout" -#define MSG_THERMAL_RUNAWAY "Therm. wegloop" -#define MSG_ERR_MAXTEMP "Err: Max. temp" -#define MSG_ERR_MINTEMP "Err: Min. temp" -#define MSG_ERR_MAXTEMP_BED "Err: Max.tmp bed" -#define MSG_ERR_MINTEMP_BED "Err: Min.tmp bed" -#define MSG_HEATING "Voorwarmen..." -#define MSG_HEATING_COMPLETE "Voorverw. kompl." -#define MSG_BED_HEATING "Bed voorverw." -#define MSG_BED_DONE "Bed is voorverw." -#define MSG_DELTA_CALIBRATE "Delta Calibratie" -#define MSG_DELTA_CALIBRATE_X "Kalibreer X" -#define MSG_DELTA_CALIBRATE_Y "Kalibreer Y" -#define MSG_DELTA_CALIBRATE_Z "Kalibreer Z" -#define MSG_DELTA_CALIBRATE_CENTER "Kalibreer Midden" - -#endif // LANGUAGE_NL_H diff --git a/lib/Marlin/language_pl.h b/lib/Marlin/language_pl.h deleted file mode 100644 index b1559c4..0000000 --- a/lib/Marlin/language_pl.h +++ /dev/null @@ -1,193 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Polish - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_PL_H -#define LANGUAGE_PL_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " gotowy." -#define MSG_SD_INSERTED "Karta wlozona" -#define MSG_SD_REMOVED "Karta usunieta" -#define MSG_LCD_ENDSTOPS "Krancow." // Max length 8 characters -#define MSG_MAIN "Menu glowne" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Wylacz silniki" -#define MSG_AUTO_HOME "Auto. poz. zerowa" -#define MSG_LEVEL_BED_HOMING "Pozycja zerowa" -#define MSG_LEVEL_BED_WAITING "Kliknij by rozp." -#define MSG_LEVEL_BED_NEXT_POINT "Nastepny punkt" -#define MSG_LEVEL_BED_DONE "Wypoziomowano!" -#define MSG_LEVEL_BED_CANCEL "Anuluj" -#define MSG_SET_HOME_OFFSETS "Ust. poz. zer." -#define MSG_HOME_OFFSETS_APPLIED "Poz. zerowa ust." -#define MSG_SET_ORIGIN "Ustaw punkt zero" -#define MSG_PREHEAT_1 "Rozgrzej PLA" -#define MSG_PREHEAT_1_N "Rozgrzej PLA " -#define MSG_PREHEAT_1_ALL "Roz. PLA Wszystko" -#define MSG_PREHEAT_1_BEDONLY "Rozgrzej PLA Loze" -#define MSG_PREHEAT_1_SETTINGS "Ustaw. rozg. PLA" -#define MSG_PREHEAT_2 "Rozgrzej ABS" -#define MSG_PREHEAT_2_N "Rozgrzej ABS " -#define MSG_PREHEAT_2_ALL "Roz. ABS Wszystko" -#define MSG_PREHEAT_2_BEDONLY "Rozgrzej ABS Loze" -#define MSG_PREHEAT_2_SETTINGS "Ustaw. rozg. ABS" -#define MSG_H1 "1" -#define MSG_H2 "2" -#define MSG_H3 "3" -#define MSG_H4 "4" -#define MSG_COOLDOWN "Chlodzenie" -#define MSG_SWITCH_PS_ON "Wlacz zasilacz" -#define MSG_SWITCH_PS_OFF "Wylacz zasilacz" -#define MSG_EXTRUDE "Ekstruzja" -#define MSG_RETRACT "Wycofanie" -#define MSG_MOVE_AXIS "Ruch osi" -#define MSG_LEVEL_BED "Poziom. loza" -#define MSG_MOVE_X "Przesun w X" -#define MSG_MOVE_Y "Przesun w Y" -#define MSG_MOVE_Z "Przesun w Z" -#define MSG_MOVE_E "Ekstruzja (os E)" -#define MSG_MOVE_E1 "1" -#define MSG_MOVE_E2 "2" -#define MSG_MOVE_E3 "3" -#define MSG_MOVE_E4 "4" -#define MSG_MOVE_01MM "Przesuwaj co .1mm" -#define MSG_MOVE_1MM "Przesuwaj co 1mm" -#define MSG_MOVE_10MM "Przesuwaj co 10mm" -#define MSG_SPEED "Predkosc" -#define MSG_BED_Z "Loze Z" -#define MSG_NOZZLE "Dysza" -#define MSG_N1 " 1" -#define MSG_N2 " 2" -#define MSG_N3 " 3" -#define MSG_N4 " 4" -#define MSG_BED "Loze" -#define MSG_FAN_SPEED "Obroty wiatraka" -#define MSG_FLOW "Przeplyw" -#define MSG_CONTROL "Ustawienia" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Mnoznik" -#define MSG_AUTOTEMP "Auto. temperatura" -#define MSG_ON "Wl. " -#define MSG_OFF "Wyl." -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_E1 " E1" -#define MSG_E2 " E2" -#define MSG_E3 " E3" -#define MSG_E4 " E4" -#define MSG_ACC "Przyspieszenie" -#define MSG_VXY_JERK "Zryw Vxy" -#define MSG_VZ_JERK "Zryw Vz" -#define MSG_VE_JERK "Zryw Ve" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "Vskok min" -#define MSG_AMAX "Amax" -#define MSG_A_RETRACT "A-wycofanie" -#define MSG_A_TRAVEL "A-przesun." -#define MSG_XSTEPS "krokiX/mm" -#define MSG_YSTEPS "krokiY/mm" -#define MSG_ZSTEPS "krokiZ/mm" -#define MSG_ESTEPS "krokiE/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Ruch" -#define MSG_VOLUMETRIC "Filament" -#define MSG_VOLUMETRIC_ENABLED "E w mm3" -#define MSG_FILAMENT_DIAM "Åšr. fil." -#define MSG_DIAM_E1 " 1" -#define MSG_DIAM_E2 " 2" -#define MSG_DIAM_E3 " 3" -#define MSG_DIAM_E4 " 4" -#define MSG_CONTRAST "Kontrast LCD" -#define MSG_STORE_EPROM "Zapisz w pamieci" -#define MSG_LOAD_EPROM "Wczytaj z pamieci" -#define MSG_RESTORE_FAILSAFE "Ustaw. fabryczne" -#define MSG_REFRESH "Odswiez" -#define MSG_WATCH "Ekran glowny" -#define MSG_PREPARE "Przygotuj" -#define MSG_TUNE "Strojenie" -#define MSG_PAUSE_PRINT "Pauza" -#define MSG_RESUME_PRINT "Wznowienie" -#define MSG_STOP_PRINT "Stop" -#define MSG_CARD_MENU "Menu karty SD" -#define MSG_NO_CARD "Brak karty" -#define MSG_DWELL "Uspij..." -#define MSG_USERWAIT "Oczekiwanie..." -#define MSG_RESUMING "Wznawianie druku" -#define MSG_PRINT_ABORTED "Druk przerwany" -#define MSG_NO_MOVE "Brak ruchu" -#define MSG_KILLED "Ubity. " -#define MSG_STOPPED "Zatrzymany. " -#define MSG_CONTROL_RETRACT "Wycofaj mm" -#define MSG_CONTROL_RETRACT_SWAP "Z Wycof. mm" -#define MSG_CONTROL_RETRACTF "Wycofaj V" -#define MSG_CONTROL_RETRACT_ZLIFT "Skok Z mm" -#define MSG_CONTROL_RETRACT_RECOVER "Cof. wycof. +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Z Cof. wyc. +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "Cof. wycof. V" -#define MSG_AUTORETRACT "Auto. wycofanie" -#define MSG_FILAMENTCHANGE "Zmien filament" -#define MSG_INIT_SDCARD "Inicjal. karty SD" -#define MSG_CNG_SDCARD "Zmiana karty SD" -#define MSG_ZPROBE_OUT "Sonda Z za lozem" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Offset Z" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Blad krancowki" -#define MSG_HEATING_FAILED_LCD "Rozgrz. nieudane" -#define MSG_ERR_REDUNDANT_TEMP "Błąd temperatury" -#define MSG_THERMAL_RUNAWAY "Zanik temp." -#define MSG_ERR_MAXTEMP "Err: max. temp." -#define MSG_ERR_MINTEMP "Err: min. temp." -#define MSG_ERR_MAXTEMP_BED "Err: max. temp. loza" -#define MSG_ERR_MINTEMP_BED "Err: min. temp. loza" -#define MSG_HEATING "Rozgrzewanie..." -#define MSG_HEATING_COMPLETE "Rozgrzano" -#define MSG_BED_HEATING "Rozgrzewanie loza..." -#define MSG_BED_DONE "Rozgrzano loze" -#define MSG_DELTA_CALIBRATE "Kalibrowanie Delty" -#define MSG_DELTA_CALIBRATE_X "Kalibruj X" -#define MSG_DELTA_CALIBRATE_Y "Kalibruj Y" -#define MSG_DELTA_CALIBRATE_Z "Kalibruj Z" -#define MSG_DELTA_CALIBRATE_CENTER "Kalibruj Å›rodek" - -#endif // LANGUAGE_PL_H diff --git a/lib/Marlin/language_pt-br.h b/lib/Marlin/language_pt-br.h deleted file mode 100644 index 3db6e15..0000000 --- a/lib/Marlin/language_pt-br.h +++ /dev/null @@ -1,170 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Portuguese (Brazil) - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_PT_BR_H -#define LANGUAGE_PT_BR_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " pronto." -#define MSG_SD_INSERTED "Cartao inserido" -#define MSG_SD_REMOVED "Cartao removido" -#define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Desabi. motores" -#define MSG_AUTO_HOME "Ir para origen" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "Ajustar Jogo" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Ajustar orig." -#define MSG_PREHEAT_1 "Pre-aquecer PLA" -#define MSG_PREHEAT_1_N "Pre-aquecer PLA" -#define MSG_PREHEAT_1_ALL "Pre-aq.Todo PLA" -#define MSG_PREHEAT_1_BEDONLY "Pre-aq. PLA " LCD_STR_THERMOMETER "Base" -#define MSG_PREHEAT_1_SETTINGS "Ajustar PLA" -#define MSG_PREHEAT_2 "Pre-aquecer ABS" -#define MSG_PREHEAT_2_N "Pre-aquecer ABS" -#define MSG_PREHEAT_2_ALL "Pre-aq.Todo ABS" -#define MSG_PREHEAT_2_BEDONLY "Pre-aq. ABS " LCD_STR_THERMOMETER "Base" -#define MSG_PREHEAT_2_SETTINGS "Ajustar ABS" -#define MSG_COOLDOWN "Esfriar" -#define MSG_SWITCH_PS_ON "Ligar" -#define MSG_SWITCH_PS_OFF "Desligar" -#define MSG_EXTRUDE "Extrudar" -#define MSG_RETRACT "Retrair" -#define MSG_MOVE_AXIS "Mover eixo" -#define MSG_MOVE_X "Mover X" -#define MSG_MOVE_Y "Mover Y" -#define MSG_MOVE_Z "Mover Z" -#define MSG_MOVE_E "Mover Extrusor" -#define MSG_MOVE_01MM "Mover 0.1mm" -#define MSG_MOVE_1MM "Mover 1mm" -#define MSG_MOVE_10MM "Mover 10mm" -#define MSG_SPEED "Velocidade" -#define MSG_BED_Z "Base Z" -#define MSG_NOZZLE LCD_STR_THERMOMETER " Bocal" -#define MSG_BED LCD_STR_THERMOMETER " Base" -#define MSG_FAN_SPEED "Vel. Ventoinha" -#define MSG_FLOW "Fluxo" -#define MSG_CONTROL "Controle" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Temp. Automatica" -#define MSG_ON "Ligado " -#define MSG_OFF "Desligado" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Acc" -#define MSG_VXY_JERK "jogo VXY" -#define MSG_VZ_JERK "jogo VZ" -#define MSG_VE_JERK "jogo VE" -#define MSG_VMAX " Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "Retrair A" -#define MSG_A_TRAVEL "A-movimento" -#define MSG_XSTEPS "Passo X/mm" -#define MSG_YSTEPS "Passo Y/mm" -#define MSG_ZSTEPS "Passo Z/mm" -#define MSG_ESTEPS "E/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Movimento" -#define MSG_VOLUMETRIC "Filamento" -#define MSG_VOLUMETRIC_ENABLED "Extr. em mm3" -#define MSG_FILAMENT_DIAM "Diametro Fil." -#define MSG_CONTRAST "Contraste" -#define MSG_STORE_EPROM "Salvar" -#define MSG_LOAD_EPROM "Ler" -#define MSG_RESTORE_FAILSAFE "Rest. de emerg." -#define MSG_REFRESH LCD_STR_REFRESH " Restaurar" -#define MSG_WATCH "Monitorar" -#define MSG_PREPARE "Preparar" -#define MSG_TUNE "Afinar" -#define MSG_PAUSE_PRINT "Pausar impressao" -#define MSG_RESUME_PRINT "Resumir impressao" -#define MSG_STOP_PRINT "Parar impressao" -#define MSG_CARD_MENU "Imprimir do SD" -#define MSG_NO_CARD "Sem cartao SD" -#define MSG_DWELL "Repouso..." -#define MSG_USERWAIT "Esperando ordem" -#define MSG_RESUMING "Resumindo Impres." -#define MSG_PRINT_ABORTED "Impres. Abortada." -#define MSG_NO_MOVE "Sem movimento" -#define MSG_KILLED "PARADA DE EMERG." -#define MSG_STOPPED "PARADA. " -#define MSG_CONTROL_RETRACT "Retrair mm" -#define MSG_CONTROL_RETRACT_SWAP "Retrair Troca mm" -#define MSG_CONTROL_RETRACTF "Retrair V" -#define MSG_CONTROL_RETRACT_ZLIFT "Levantar mm" -#define MSG_CONTROL_RETRACT_RECOVER "Des Retrair +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Des RetTroca +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "Des Retrair V" -#define MSG_AUTORETRACT "Retracao Autom." -#define MSG_FILAMENTCHANGE "Trocar Filamento" -#define MSG_INIT_SDCARD "Iniciar SD" -#define MSG_CNG_SDCARD "Trocar SD" -#define MSG_ZPROBE_OUT "Son. fora da mesa" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Deslocamento no Z" -#define MSG_BABYSTEP_X "Passinho X" -#define MSG_BABYSTEP_Y "Passinho Y" -#define MSG_BABYSTEP_Z "Passinho Z" -#define MSG_ENDSTOP_ABORT "Fim de Curso" -#define MSG_HEATING_FAILED_LCD "Aquecimento falhou" -#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP" -#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" -#define MSG_ERR_MAXTEMP "Err: T Maxima" -#define MSG_ERR_MINTEMP "Err: T Minima" -#define MSG_ERR_MAXTEMP_BED "Err: T Base Maxima" -#define MSG_ERR_MINTEMP_BED "Err: T Base Minima" -#define MSG_HEATING "Aquecendo..." -#define MSG_HEATING_COMPLETE "Aquecida." -#define MSG_BED_HEATING "Aquecendo base.." -#define MSG_BED_DONE "Base aquecida." -#define MSG_DELTA_CALIBRATE "Calibrar Delta" -#define MSG_DELTA_CALIBRATE_X "Calibrar X" -#define MSG_DELTA_CALIBRATE_Y "Calibrar Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrar Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro" - -#endif // LANGUAGE_PT_BR_H diff --git a/lib/Marlin/language_pt-br_utf8.h b/lib/Marlin/language_pt-br_utf8.h deleted file mode 100644 index a556c24..0000000 --- a/lib/Marlin/language_pt-br_utf8.h +++ /dev/null @@ -1,170 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Portuguese (Brazil) - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_PT_BR_UTF_H -#define LANGUAGE_PT_BR_UTF_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " pronto." -#define MSG_SD_INSERTED "Cartão inserido" -#define MSG_SD_REMOVED "Cartão removido" -#define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Desabi. motores" -#define MSG_AUTO_HOME "Ir para origen" -#define MSG_LEVEL_BED_HOMING "Indo para origem" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "Ajustar Jogo" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Ajustar orig." -#define MSG_PREHEAT_1 "Pre-aquecer PLA" -#define MSG_PREHEAT_1_N "Pre-aquecer PLA" -#define MSG_PREHEAT_1_ALL "Pre-aq.Todo PLA" -#define MSG_PREHEAT_1_BEDONLY "Pre-aq. PLA " LCD_STR_THERMOMETER "Base" -#define MSG_PREHEAT_1_SETTINGS "Ajustar PLA" -#define MSG_PREHEAT_2 "Pre-aquecer ABS" -#define MSG_PREHEAT_2_N "Pre-aquecer ABS" -#define MSG_PREHEAT_2_ALL "Pre-aq.Todo ABS" -#define MSG_PREHEAT_2_BEDONLY "Pre-aq. ABS " LCD_STR_THERMOMETER "Base" -#define MSG_PREHEAT_2_SETTINGS "Ajustar ABS" -#define MSG_COOLDOWN "Esfriar" -#define MSG_SWITCH_PS_ON "Ligar" -#define MSG_SWITCH_PS_OFF "Desligar" -#define MSG_EXTRUDE "Extrudar" -#define MSG_RETRACT "Retrair" -#define MSG_MOVE_AXIS "Mover eixo" -#define MSG_MOVE_X "Mover X" -#define MSG_MOVE_Y "Mover Y" -#define MSG_MOVE_Z "Mover Z" -#define MSG_MOVE_E "Mover Extrusor" -#define MSG_MOVE_01MM "Mover 0.1mm" -#define MSG_MOVE_1MM "Mover 1mm" -#define MSG_MOVE_10MM "Mover 10mm" -#define MSG_SPEED "Velocidade" -#define MSG_BED_Z "Base Z" -#define MSG_NOZZLE LCD_STR_THERMOMETER " Bocal" -#define MSG_BED LCD_STR_THERMOMETER " Base" -#define MSG_FAN_SPEED "Vel. Ventoinha" -#define MSG_FLOW "Fluxo" -#define MSG_CONTROL "Controle" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Temp. Automática" -#define MSG_ON "Ligado " -#define MSG_OFF "Desligado" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Acc" -#define MSG_VXY_JERK "jogo VXY" -#define MSG_VZ_JERK "jogo VZ" -#define MSG_VE_JERK "jogo VE" -#define MSG_VMAX " Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "Retrair A" -#define MSG_A_TRAVEL "A-movimento" -#define MSG_XSTEPS "Passo X/mm" -#define MSG_YSTEPS "Passo Y/mm" -#define MSG_ZSTEPS "Passo Z/mm" -#define MSG_ESTEPS "E/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Movimento" -#define MSG_VOLUMETRIC "Filamento" -#define MSG_VOLUMETRIC_ENABLED "Extr. em mm3" -#define MSG_FILAMENT_DIAM "Diametro Fil." -#define MSG_CONTRAST "Contraste" -#define MSG_STORE_EPROM "Salvar" -#define MSG_LOAD_EPROM "Ler" -#define MSG_RESTORE_FAILSAFE "Rest. de emerg." -#define MSG_REFRESH LCD_STR_REFRESH " Restaurar" -#define MSG_WATCH "Monitorar" -#define MSG_PREPARE "Preparar" -#define MSG_TUNE "Afinar" -#define MSG_PAUSE_PRINT "Pausar impressão" -#define MSG_RESUME_PRINT "Resumir impressão" -#define MSG_STOP_PRINT "Parar impressão" -#define MSG_CARD_MENU "Imprimir do SD" -#define MSG_NO_CARD "Sem cartão SD" -#define MSG_DWELL "Repouso..." -#define MSG_USERWAIT "Esperando ordem" -#define MSG_RESUMING "Resumindo Impres." -#define MSG_PRINT_ABORTED "Impres. Abortada." -#define MSG_NO_MOVE "Sem movimento" -#define MSG_KILLED "PARADA DE EMERG." -#define MSG_STOPPED "PARADA. " -#define MSG_CONTROL_RETRACT "Retrair mm" -#define MSG_CONTROL_RETRACT_SWAP "Retrair Troca mm" -#define MSG_CONTROL_RETRACTF "Retrair V" -#define MSG_CONTROL_RETRACT_ZLIFT "Levantar mm" -#define MSG_CONTROL_RETRACT_RECOVER "Des Retrair +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Des RetTroca +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "Des Retrair V" -#define MSG_AUTORETRACT "Retração Autom." -#define MSG_FILAMENTCHANGE "Trocar Filamento" -#define MSG_INIT_SDCARD "Iniciar SD" -#define MSG_CNG_SDCARD "Trocar SD" -#define MSG_ZPROBE_OUT "Son. fora da mesa" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Deslocamento no Z" -#define MSG_BABYSTEP_X "Passinho X" -#define MSG_BABYSTEP_Y "Passinho Y" -#define MSG_BABYSTEP_Z "Passinho Z" -#define MSG_ENDSTOP_ABORT "Fim de Curso" -#define MSG_HEATING_FAILED_LCD "Aquecimento falhou" -#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP" -#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" -#define MSG_ERR_MAXTEMP "Err: T Máxima" -#define MSG_ERR_MINTEMP "Err: T Mínima" -#define MSG_ERR_MAXTEMP_BED "Err: T Base Máxima" -#define MSG_ERR_MINTEMP_BED "Err: T Base Mínima" -#define MSG_HEATING "Aquecendo..." -#define MSG_HEATING_COMPLETE "Aquecida." -#define MSG_BED_HEATING "Aquecendo base.." -#define MSG_BED_DONE "Base aquecida." -#define MSG_DELTA_CALIBRATE "Calibrar Delta" -#define MSG_DELTA_CALIBRATE_X "Calibrar X" -#define MSG_DELTA_CALIBRATE_Y "Calibrar Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrar Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro" - -#endif // LANGUAGE_PT_BR_UTF_H diff --git a/lib/Marlin/language_pt.h b/lib/Marlin/language_pt.h deleted file mode 100644 index a0df879..0000000 --- a/lib/Marlin/language_pt.h +++ /dev/null @@ -1,180 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Portuguese - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_PT_H -#define LANGUAGE_PT_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " pronto." -#define MSG_SD_INSERTED "Cartao inserido" -#define MSG_SD_REMOVED "Cartao removido" -#define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Desactivar motores" -#define MSG_AUTO_HOME "Ir para origem" -#define MSG_AUTO_HOME_X "Ir para origem X" -#define MSG_AUTO_HOME_Y "Ir para origem Y" -#define MSG_AUTO_HOME_Z "Ir para origem Z" -#define MSG_LEVEL_BED_HOMING "Indo para origem" -#define MSG_LEVEL_BED_WAITING "Click para iniciar" -#define MSG_LEVEL_BED_NEXT_POINT "Proximo ponto" -#define MSG_LEVEL_BED_DONE "Pronto !" -#define MSG_LEVEL_BED_CANCEL "Cancelar" -#define MSG_SET_HOME_OFFSETS "Definir desvio" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Definir origem" -#define MSG_PREHEAT_1 "Pre-aquecer PLA" -#define MSG_PREHEAT_1_N "Pre-aquecer PLA" -#define MSG_PREHEAT_1_ALL "Pre-aq. PLA Tudo" -#define MSG_PREHEAT_1_BEDONLY "Pre-aq. PLA " LCD_STR_THERMOMETER "Base" -#define MSG_PREHEAT_1_SETTINGS "Definicoes PLA" -#define MSG_PREHEAT_2 "Pre-aquecer ABS" -#define MSG_PREHEAT_2_N "Pre-aquecer ABS " -#define MSG_PREHEAT_2_ALL "Pre-aq. ABS Tudo" -#define MSG_PREHEAT_2_BEDONLY "Pre-aq. ABS " LCD_STR_THERMOMETER "Base" -#define MSG_PREHEAT_2_SETTINGS "Definicoes ABS" -#define MSG_COOLDOWN "Arrefecer" -#define MSG_SWITCH_PS_ON "Ligar" -#define MSG_SWITCH_PS_OFF "Desligar" -#define MSG_EXTRUDE "Extrudir" -#define MSG_RETRACT "Retrair" -#define MSG_MOVE_AXIS "Mover eixo" -#define MSG_MOVE_X "Mover X" -#define MSG_MOVE_Y "Mover Y" -#define MSG_MOVE_Z "Mover Z" -#define MSG_MOVE_E "Mover Extrusor" -#define MSG_MOVE_01MM "Mover 0.1mm" -#define MSG_MOVE_1MM "Mover 1mm" -#define MSG_MOVE_10MM "Mover 10mm" -#define MSG_SPEED "Velocidade" -#define MSG_BED_Z "Base Z" -#define MSG_NOZZLE LCD_STR_THERMOMETER " Bico" -#define MSG_BED LCD_STR_THERMOMETER " Base" -#define MSG_FAN_SPEED "Vel. ventoinha" -#define MSG_FLOW "Fluxo" -#define MSG_CONTROL "Controlo" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Temp. Automatica" -#define MSG_ON "On " -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_E1 "E1" -#define MSG_E2 "E2" -#define MSG_E3 "E3" -#define MSG_E4 "E4" -#define MSG_ACC "Acc" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX " Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retraccao" -#define MSG_A_TRAVEL "A-movimento" -#define MSG_XSTEPS "X passo/mm" -#define MSG_YSTEPS "Y passo/mm" -#define MSG_ZSTEPS "Z passo/mm" -#define MSG_ESTEPS "E passo/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Movimento" -#define MSG_VOLUMETRIC "Filamento" -#define MSG_VOLUMETRIC_ENABLED "E em mm3" -#define MSG_FILAMENT_DIAM "Fil. Diam." -#define MSG_CONTRAST "Contraste" -#define MSG_STORE_EPROM "Guardar na memoria" -#define MSG_LOAD_EPROM "Carregar da memoria" -#define MSG_RESTORE_FAILSAFE "Rest. de emergen." -#define MSG_REFRESH LCD_STR_REFRESH " Recarregar" -#define MSG_WATCH "Monitorizar" -#define MSG_PREPARE "Preparar" -#define MSG_TUNE "Afinar" -#define MSG_PAUSE_PRINT "Pausar impressao" -#define MSG_RESUME_PRINT "Retomar impressao" -#define MSG_STOP_PRINT "Parar impressao" -#define MSG_CARD_MENU "Imprimir do SD" -#define MSG_NO_CARD "Sem cartao SD" -#define MSG_DWELL "Em espera..." -#define MSG_USERWAIT "A espera de ordem" -#define MSG_RESUMING "Retomando impressao" -#define MSG_PRINT_ABORTED "Impressao cancelada" -#define MSG_NO_MOVE "Sem movimento" -#define MSG_KILLED "EMERGENCIA. " -#define MSG_STOPPED "PARADO. " -#define MSG_CONTROL_RETRACT " Retrair mm" -#define MSG_CONTROL_RETRACT_SWAP "Troca Retrair mm" -#define MSG_CONTROL_RETRACTF " Retrair V" -#define MSG_CONTROL_RETRACT_ZLIFT " Levantar mm" -#define MSG_CONTROL_RETRACT_RECOVER " DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Troca DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF " DesRet V" -#define MSG_AUTORETRACT " AutoRetr." -#define MSG_FILAMENTCHANGE "Trocar filamento" -#define MSG_INIT_SDCARD "Inici. cartao SD" -#define MSG_CNG_SDCARD "Trocar cartao SD" -#define MSG_ZPROBE_OUT "Sensor fora/base" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Desvio Z" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Fim de curso" -#define MSG_HEATING_FAILED_LCD "Aquecimento falhou" -#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP" -#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" -#define MSG_ERR_MAXTEMP "Err: T Maxima" -#define MSG_ERR_MINTEMP "Err: T Minima" -#define MSG_ERR_MAXTEMP_BED "Err: T Base Maxima" -#define MSG_ERR_MINTEMP_BED "Err: T Base Minima" -#define MSG_HEATING "Aquecendo..." -#define MSG_HEATING_COMPLETE "Aquecida." -#define MSG_BED_HEATING "Aquecendo base.." -#define MSG_BED_DONE "Base aquecida." -#define MSG_DELTA_CALIBRATE "Calibracao Delta" -#define MSG_DELTA_CALIBRATE_X "Calibrar X" -#define MSG_DELTA_CALIBRATE_Y "Calibrar Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrar Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro" - -#define MSG_LCD_ENDSTOPS "Fim de curso" - -#endif // LANGUAGE_PT_H diff --git a/lib/Marlin/language_pt_utf8.h b/lib/Marlin/language_pt_utf8.h deleted file mode 100644 index 24ce828..0000000 --- a/lib/Marlin/language_pt_utf8.h +++ /dev/null @@ -1,180 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Portuguese - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_PT_UTF_H -#define LANGUAGE_PT_UTF_H - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_1 - -#define WELCOME_MSG MACHINE_NAME " pronto." -#define MSG_SD_INSERTED "Cartão inserido" -#define MSG_SD_REMOVED "Cartão removido" -#define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART "Autostart" -#define MSG_DISABLE_STEPPERS "Desactivar motores" -#define MSG_AUTO_HOME "Ir para origem" -#define MSG_AUTO_HOME_X "Ir para origem X" -#define MSG_AUTO_HOME_Y "Ir para origem Y" -#define MSG_AUTO_HOME_Z "Ir para origem Z" -#define MSG_LEVEL_BED_HOMING "Indo para origem" -#define MSG_LEVEL_BED_WAITING "Click para iniciar" -#define MSG_LEVEL_BED_NEXT_POINT "Próximo ponto" -#define MSG_LEVEL_BED_DONE "Pronto !" -#define MSG_LEVEL_BED_CANCEL "Cancelar" -#define MSG_SET_HOME_OFFSETS "Definir desvio" -#define MSG_HOME_OFFSETS_APPLIED "Offsets aplicados" -#define MSG_SET_ORIGIN "Definir origem" -#define MSG_PREHEAT_1 "Pre-aquecer PLA" -#define MSG_PREHEAT_1_N "Pre-aquecer PLA" -#define MSG_PREHEAT_1_ALL "Pre-aq. PLA Tudo" -#define MSG_PREHEAT_1_BEDONLY "Pre-aq. PLA " LCD_STR_THERMOMETER "Base" -#define MSG_PREHEAT_1_SETTINGS "Definições PLA" -#define MSG_PREHEAT_2 "Pre-aquecer ABS" -#define MSG_PREHEAT_2_N "Pre-aquecer ABS " -#define MSG_PREHEAT_2_ALL "Pre-aq. ABS Tudo" -#define MSG_PREHEAT_2_BEDONLY "Pre-aq. ABS " LCD_STR_THERMOMETER "Base" -#define MSG_PREHEAT_2_SETTINGS "Definições ABS" -#define MSG_COOLDOWN "Arrefecer" -#define MSG_SWITCH_PS_ON "Ligar" -#define MSG_SWITCH_PS_OFF "Desligar" -#define MSG_EXTRUDE "Extrudir" -#define MSG_RETRACT "Retrair" -#define MSG_MOVE_AXIS "Mover eixo" -#define MSG_MOVE_X "Mover X" -#define MSG_MOVE_Y "Mover Y" -#define MSG_MOVE_Z "Mover Z" -#define MSG_MOVE_E "Mover Extrusor" -#define MSG_MOVE_01MM "Mover 0.1mm" -#define MSG_MOVE_1MM "Mover 1mm" -#define MSG_MOVE_10MM "Mover 10mm" -#define MSG_SPEED "Velocidade" -#define MSG_BED_Z "Base Z" -#define MSG_NOZZLE LCD_STR_THERMOMETER " Bico" -#define MSG_BED LCD_STR_THERMOMETER " Base" -#define MSG_FAN_SPEED "Vel. ventoinha" -#define MSG_FLOW "Fluxo" -#define MSG_CONTROL "Controlo" -#define MSG_MIN LCD_STR_THERMOMETER " Min" -#define MSG_MAX LCD_STR_THERMOMETER " Max" -#define MSG_FACTOR LCD_STR_THERMOMETER " Fact" -#define MSG_AUTOTEMP "Temp. Automática" -#define MSG_ON "On " -#define MSG_OFF "Off" -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_E1 "E1" -#define MSG_E2 "E2" -#define MSG_E3 "E3" -#define MSG_E4 "E4" -#define MSG_ACC "Acc" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX " Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax " -#define MSG_A_RETRACT "A-retracção" -#define MSG_A_TRAVEL "A-movimento" -#define MSG_XSTEPS "X passo/mm" -#define MSG_YSTEPS "Y passo/mm" -#define MSG_ZSTEPS "Z passo/mm" -#define MSG_ESTEPS "E passo/mm" -#define MSG_TEMPERATURE "Temperatura" -#define MSG_MOTION "Movimento" -#define MSG_VOLUMETRIC "Filamento" -#define MSG_VOLUMETRIC_ENABLED "E em mm3" -#define MSG_FILAMENT_DIAM "Fil. Diam." -#define MSG_CONTRAST "Contraste" -#define MSG_STORE_EPROM "Guardar na memoria" -#define MSG_LOAD_EPROM "Carregar da memoria" -#define MSG_RESTORE_FAILSAFE "Rest. de emergen." -#define MSG_REFRESH LCD_STR_REFRESH " Recarregar" -#define MSG_WATCH "Monitorizar" -#define MSG_PREPARE "Preparar" -#define MSG_TUNE "Afinar" -#define MSG_PAUSE_PRINT "Pausar impressão" -#define MSG_RESUME_PRINT "Retomar impressão" -#define MSG_STOP_PRINT "Parar impressão" -#define MSG_CARD_MENU "Imprimir do SD" -#define MSG_NO_CARD "Sem cartão SD" -#define MSG_DWELL "Em espera..." -#define MSG_USERWAIT "à espera de ordem" -#define MSG_RESUMING "Retomando impressão" -#define MSG_PRINT_ABORTED "Impressão cancelada" -#define MSG_NO_MOVE "Sem movimento" -#define MSG_KILLED "EMERGÊNCIA. " -#define MSG_STOPPED "PARADO. " -#define MSG_CONTROL_RETRACT " Retrair mm" -#define MSG_CONTROL_RETRACT_SWAP "Troca Retrair mm" -#define MSG_CONTROL_RETRACTF " Retrair V" -#define MSG_CONTROL_RETRACT_ZLIFT " Levantar mm" -#define MSG_CONTROL_RETRACT_RECOVER " DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Troca DesRet +mm" -#define MSG_CONTROL_RETRACT_RECOVERF " DesRet V" -#define MSG_AUTORETRACT " AutoRetr." -#define MSG_FILAMENTCHANGE "Trocar filamento" -#define MSG_INIT_SDCARD "Inici. cartão SD" -#define MSG_CNG_SDCARD "Trocar cartão SD" -#define MSG_ZPROBE_OUT "Sensor fora/base" -#define MSG_HOME "Home" // Used as MSG_HOME " " MSG_X MSG_Y MSG_Z " " MSG_FIRST -#define MSG_FIRST "first" -#define MSG_ZPROBE_ZOFFSET "Desvio Z" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Fim de curso" -#define MSG_HEATING_FAILED_LCD "Aquecimento falhou" -#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP" -#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" -#define MSG_ERR_MAXTEMP "Err: T Máxima" -#define MSG_ERR_MINTEMP "Err: T Mínima" -#define MSG_ERR_MAXTEMP_BED "Err: T Base Máxima" -#define MSG_ERR_MINTEMP_BED "Err: T Base Mínima" -#define MSG_HEATING "Aquecendo..." -#define MSG_HEATING_COMPLETE "Aquecida." -#define MSG_BED_HEATING "Aquecendo base.." -#define MSG_BED_DONE "Base aquecida." -#define MSG_DELTA_CALIBRATE "Calibração Delta" -#define MSG_DELTA_CALIBRATE_X "Calibrar X" -#define MSG_DELTA_CALIBRATE_Y "Calibrar Y" -#define MSG_DELTA_CALIBRATE_Z "Calibrar Z" -#define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro" - -#define MSG_LCD_ENDSTOPS "Fim de curso" - -#endif // LANGUAGE_PT_UTF_H diff --git a/lib/Marlin/language_ru.h b/lib/Marlin/language_ru.h deleted file mode 100644 index aa381c8..0000000 --- a/lib/Marlin/language_ru.h +++ /dev/null @@ -1,169 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Russian - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_RU_H -#define LANGUAGE_RU_H - -#define MAPPER_D0D1 // For Cyrillic -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT -#define DISPLAY_CHARSET_ISO10646_5 - -#define WELCOME_MSG MACHINE_NAME " Готов." -#define MSG_SD_INSERTED "Карта вÑтавлена" -#define MSG_SD_REMOVED "Карта извлечена" -#define MSG_MAIN "Меню" -#define MSG_AUTOSTART "ÐвтоÑтарт" -#define MSG_DISABLE_STEPPERS "Выкл. двигатели" -#define MSG_AUTO_HOME "Парковка" -#define MSG_LEVEL_BED_HOMING "Homing XYZ" -#define MSG_LEVEL_BED_WAITING "Click to Begin" -#define MSG_LEVEL_BED_DONE "Leveling Done!" -#define MSG_LEVEL_BED_CANCEL "Cancel" -#define MSG_SET_HOME_OFFSETS "Запомнить парковку" -#define MSG_HOME_OFFSETS_APPLIED "Offsets applied" -#define MSG_SET_ORIGIN "Запомнить ноль" -#define MSG_PREHEAT_1 "Преднагрев PLA" -#define MSG_PREHEAT_1_N "Греть PLA Сопло " -#define MSG_PREHEAT_1_ALL "Греть PLA Ð’Ñе" -#define MSG_PREHEAT_1_BEDONLY "Греть PLA Стол" -#define MSG_PREHEAT_1_SETTINGS "ÐаÑтройки PLA" -#define MSG_PREHEAT_2 "Преднагрев ABS" -#define MSG_PREHEAT_2_N "Греть ABS Сопло " -#define MSG_PREHEAT_2_ALL "Греть ABS Ð’Ñе" -#define MSG_PREHEAT_2_BEDONLY "Греть ABS Стол" -#define MSG_PREHEAT_2_SETTINGS "ÐаÑтройки ABS" -#define MSG_COOLDOWN "Охлаждение" -#define MSG_SWITCH_PS_ON "Включить Питание" -#define MSG_SWITCH_PS_OFF "Отключить Питание" -#define MSG_EXTRUDE "ЭкÑтрузиÑ" -#define MSG_RETRACT "Ð’Ñ‚Ñгивание" -#define MSG_MOVE_AXIS "Движение по оÑÑм" -#define MSG_MOVE_X "Движение по X" -#define MSG_MOVE_Y "Движение по Y" -#define MSG_MOVE_Z "Движение по Z" -#define MSG_MOVE_E "ЭкÑтрудер" -#define MSG_MOVE_01MM "Движение XYZ 0.1mm" -#define MSG_MOVE_1MM "Движение XYZ 1mm" -#define MSG_MOVE_10MM "Движение XY 10mm" -#define MSG_LEVEL_BED "Калибровать Ñтол" -#define MSG_SPEED "СкороÑть" -#define MSG_NOZZLE LCD_STR_THERMOMETER " Сопло" -#define MSG_BED LCD_STR_THERMOMETER " Стол" -#define MSG_FAN_SPEED "Кулер" -#define MSG_FLOW "Поток" -#define MSG_CONTROL "ÐаÑтройки" -#define MSG_MIN LCD_STR_THERMOMETER " Минимум" -#define MSG_MAX LCD_STR_THERMOMETER " МакÑимум" -#define MSG_FACTOR LCD_STR_THERMOMETER " Фактор" -#define MSG_AUTOTEMP "Ðвтотемпература" -#define MSG_ON "Вкл. " -#define MSG_OFF "Откл. " -#define MSG_PID_P "PID-P" -#define MSG_PID_I "PID-I" -#define MSG_PID_D "PID-D" -#define MSG_PID_C "PID-C" -#define MSG_ACC "Acc" -#define MSG_VXY_JERK "Vxy-jerk" -#define MSG_VZ_JERK "Vz-jerk" -#define MSG_VE_JERK "Ve-jerk" -#define MSG_VMAX "Vmax " -#define MSG_X "X" -#define MSG_Y "Y" -#define MSG_Z "Z" -#define MSG_E "E" -#define MSG_VMIN "Vmin" -#define MSG_VTRAV_MIN "VTrav min" -#define MSG_AMAX "Amax" -#define MSG_A_RETRACT "A-втÑгивание" -#define MSG_XSTEPS "X шаг/мм" -#define MSG_YSTEPS "Y шаг/мм" -#define MSG_ZSTEPS "Z шаг/мм" -#define MSG_ESTEPS "E шаг/мм" -#define MSG_TEMPERATURE "Температура" -#define MSG_MOTION "Механика" -#define MSG_VOLUMETRIC "Пруток" -#define MSG_VOLUMETRIC_ENABLED "E в mm3" -#define MSG_FILAMENT_DIAM "Диаметр прутка" -#define MSG_CONTRAST "КонтраÑÑ‚ LCD" -#define MSG_STORE_EPROM "Сохранить в EEPROM" -#define MSG_LOAD_EPROM "Считать из EEPROM" -#define MSG_RESTORE_FAILSAFE "Ð¡Ð±Ñ€Ð¾Ñ EEPROM" -#define MSG_REFRESH "Обновить" -#define MSG_WATCH "Обзор" -#define MSG_PREPARE "ДейÑтвиÑ" -#define MSG_TUNE "ÐаÑтройки" -#define MSG_PAUSE_PRINT "Пауза печати" -#define MSG_RESUME_PRINT "Продолжить печать" -#define MSG_STOP_PRINT "ОÑтановить печать" -#define MSG_CARD_MENU "Обзор карты" -#define MSG_NO_CARD "Ðет карты" -#define MSG_DWELL "Сон..." -#define MSG_USERWAIT "Ожиданиие" -#define MSG_RESUMING "Возобновление..." -#define MSG_PRINT_ABORTED "Отмена печати" -#define MSG_NO_MOVE "Ðет движениÑ." -#define MSG_KILLED "УБИТО." -#define MSG_STOPPED "ОСТÐÐОВЛЕÐО." -#define MSG_CONTROL_RETRACT "Ð’Ñ‚Ñгивание mm" -#define MSG_CONTROL_RETRACT_SWAP "Ð’Ñ‚Ñг. Ñмены mm" -#define MSG_CONTROL_RETRACTF "Ð’Ñ‚Ñгивание V" -#define MSG_CONTROL_RETRACT_ZLIFT "Ð’Ñ‚Ñг. прыжка mm" -#define MSG_CONTROL_RETRACT_RECOVER "Возврат +mm" -#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Возврат Ñмены +mm" -#define MSG_CONTROL_RETRACT_RECOVERF "Возврат V" -#define MSG_AUTORETRACT "Ðвто Ð’Ñ‚Ñгивание" -#define MSG_FILAMENTCHANGE "Смена прутка" -#define MSG_INIT_SDCARD "Иниц. карту" -#define MSG_CNG_SDCARD "Сменить карту" -#define MSG_ZPROBE_OUT "Z датчик вне Ñтола" -#define MSG_YX_UNHOMED "Паркуй X/Y перед Z" -#define MSG_ZPROBE_ZOFFSET "Смещение Z" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" -#define MSG_ENDSTOP_ABORT "Сработал концевик" -#define MSG_HEATING_FAILED_LCD "Разогрев не удалÑÑ" -#define MSG_ERR_REDUNDANT_TEMP "Ошибка:Слишком горÑчо" -#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" -#define MSG_ERR_MAXTEMP "Ошибка: Т макÑ." -#define MSG_ERR_MINTEMP "Ошибка: Т мин." -#define MSG_ERR_MAXTEMP_BED "Ошибка:Т макÑ.Ñтол" -#define MSG_ERR_MINTEMP_BED "Ошибка:Т мин.Ñтол" -#define MSG_HEATING "Ðагреваю Ñопло..." -#define MSG_HEATING_COMPLETE "Ðагрев выполнен" -#define MSG_BED_HEATING "Ðагреваю Ñтол" -#define MSG_BED_DONE "Стол разогрет" -#define MSG_DELTA_CALIBRATE "Калибровка Delta" -#define MSG_DELTA_CALIBRATE_X "Калибровать X" -#define MSG_DELTA_CALIBRATE_Y "Калибровать Y" -#define MSG_DELTA_CALIBRATE_Z "Калибровать Z" -#define MSG_DELTA_CALIBRATE_CENTER "Калибровать Center" - -#endif // LANGUAGE_RU_H diff --git a/lib/Marlin/language_test.h b/lib/Marlin/language_test.h deleted file mode 100644 index 99fa712..0000000 --- a/lib/Marlin/language_test.h +++ /dev/null @@ -1,237 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * TEST - * - * LCD Menu Messages - * See also https://github.com/MarlinFirmware/Marlin/wiki/LCD-Language - * - */ -#ifndef LANGUAGE_TEST_H -#define LANGUAGE_TEST_H - -// Select ONE of the following Mappers. -// They decide what to do with a symbol in the area of [0x80:0xFF]. They take a symbol of this language file and make them point -// into an array with 128 cells, where they'll find the place of the symbol of the font in use. -// -// a.)For ASCII coded Language_xx.h files like (en) there are no occurrences of symbols above 0x7F so no mapper is needed. -// If such a symbol appears it is mapped directly into the font. This is the case for the language files we used until now, with all the STR_XX or -// "\xxx" symbols. All Symbols are only one byte long. -// b.) For Unicoded Language_xx.h files (currently ru, de and kana_utf8 ) the non ASCII [0x00-0x7F] symbols are represented by more than one byte. -// In the case of two bytes the first is pointing to a 'codepage' and the second to a place in the codepage. These codepages contain 64 symbols. -// So two of them can be mapped. For most of the European languages the necessary symbols are contained in the pages C2 and C3. Cyrillic uses D0 -// and D1. -// c.) For katakana (one of the Japanese symbol sets) Unicode uses 3 bytes. Here the second byte also points to a codepage and byte 3 to the symbol. -// I hope the pages E282 and E283 are sufficient to write katakana. -// Kanji (an other Japanese symbol set) uses far more than two codepages. So currently I don't see a chance to map the Unicodes. Its not -// impossible to have a close to direct mapping but will need giant conversion tables and fonts (we don't want to have in a embedded system). - -//#define MAPPER_C2C3 // For most European languages when language file is in utf8 -//#define MAPPER_D0D1 // For Cyrillic -//#define MAPPER_E382E383 // For Katakana -//#define MAPPER_NON // For direct ascii codes. Fall back mapper - if no other is defined. - -// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h -//#define SIMULATE_ROMFONT - -// Select the better font for full graphic displays. -//#define DISPLAY_CHARSET_ISO10646_1 -//#define DISPLAY_CHARSET_ISO10646_5 -//#define DISPLAY_CHARSET_ISO10646_GREEK -//#define DISPLAY_CHARSET_ISO10646_KANA - - - -// next 5 lines select variants in this file only -#define DISPLAYTEST -//#define WEST -//#define CYRIL -//#define KANA - - -// TESTSTRINGS - -#define STRG_ASCII_2 " !\"#$%&'()*+,-./" -#define STRG_ASCII_3 "0123456789:;<=>?" -#define STRG_ASCII_4 "@ABCDEFGHIJKLMNO" -#define STRG_ASCII_5 "PQRSTUVWXYZ[\]^_" -#define STRG_ASCII_6 "`abcdefghijklmno" -#define STRG_ASCII_7 "pqrstuvwxyz{|}~" - -#define STRG_C2_8 "" -#define STRG_C2_9 "" -#define STRG_C2_a " ¡¢£¤¥¦§¨©ª«¬­®¯" -#define STRG_C2_b "°±²³´µ¶·¸¹º»¼½¾¿" -#define STRG_C3_8 "ÈÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃ" -#define STRG_C3_9 "ÃÑÒÓÔÕÖרÙÚÛÜÃÞß" -#define STRG_C3_a "àáâãäåæçèéêëìíîï" -#define STRG_C3_b "ðñòóôõö÷øùúûüýþÿ" - -#define STRG_D0_8 "ЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐ" -#define STRG_D0_9 "ÐБВГДЕЖЗИЙКЛМÐОП" -#define STRG_D0_a "РСТУФХЦЧШЩЪЫЬЭЮЯ" -#define STRG_D0_b "абвгдежзийклмноп" -#define STRG_D1_8 "Ñ€ÑтуфхцчшщъыьÑÑŽÑ" -#define STRG_D1_9 "ÑёђѓєѕіїјљњћќÑўџ" -#define STRG_D1_a "ѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯ" -#define STRG_D1_b "ѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿ" - -#define STRG_E382_8 "よã‚もゃやゅゆょよらりるれã‚ゎã‚" -#define STRG_E382_9 "ã‚ゑをんゔゕゖ゗゘゙゚゛ ゜ã‚ゞゟ" -#define STRG_E382_a "゠ァアィイゥウェエォオカガキギク" -#define STRG_E382_b "グケゲコゴサザシジスズセゼソゾタ" -#define STRG_E383_8 "トãƒãƒ‚ッツヅテデトドナニヌãƒãƒŽãƒ" -#define STRG_E383_9 "ãƒãƒ‘ヒビピフブプヘベペホボãƒãƒžãƒŸ" -#define STRG_E383_a "ムメモャヤュユョヨラリルレロヮワ" -#define STRG_E383_b "ヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ" - -#define STRG_OKTAL_0 "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017" -#define STRG_OKTAL_1 "\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define STRG_OKTAL_2 "\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057" -#define STRG_OKTAL_3 "\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077" -#define STRG_OKTAL_4 "\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117" -#define STRG_OKTAL_5 "\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137" -#define STRG_OKTAL_6 "\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157" -#define STRG_OKTAL_7 "\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177" -#define STRG_OKTAL_8 "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217" -#define STRG_OKTAL_9 "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237" -#define STRG_OKTAL_a "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257" -#define STRG_OKTAL_b "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277" -#define STRG_OKTAL_c "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317" -#define STRG_OKTAL_d "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337" -#define STRG_OKTAL_e "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357" -#define STRG_OKTAL_f "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377" - -#if ENABLED(DISPLAYTEST) - #define WELCOME_MSG "Language TEST" - - #define MSG_WATCH "Display test" - #define MSG_PREPARE STRG_OKTAL_b - #define MSG_CONTROL STRG_OKTAL_c -#endif - -#if ENABLED(WEST) - #define WELCOME_MSG "Language TEST" - - #define MSG_WATCH "\001\002\003\004\005\006\007\010\011" - #define MSG_PREPARE "UTF8" - #define MSG_CONTROL "ASCII" - - //#define MSG_MAIN ".." - #define MSG_DISABLE_STEPPERS STRG_C2_8 - #define MSG_AUTO_HOME STRG_C2_9 - #define MSG_SET_HOME_OFFSETS STRG_C2_a - #define MSG_PREHEAT_1 STRG_C2_b - #define MSG_PREHEAT_2 STRG_C3_8 - #define MSG_COOLDOWN STRG_C3_9 - #define MSG_SWITCH_PS_OFF STRG_C3_a - #define MSG_MOVE_AXIS STRG_C3_b - - #define MSG_MAIN STRG_OKTAL_2 - #define MSG_TEMPERATURE STRG_OKTAL_3 - #define MSG_MOTION STRG_OKTAL_4 - #define MSG_VOLUMETRIC STRG_OKTAL_5 - #define MSG_CONTRAST STRG_OKTAL_6 - #define MSG_RESTORE_FAILSAFE STRG_OKTAL_7 - - #define MSG_NOZZLE STRG_OKTAL_8 - #define MSG_FAN_SPEED STRG_OKTAL_9 - #define MSG_AUTOTEMP STRG_OKTAL_a - #define MSG_MIN STRG_OKTAL_b - #define MSG_MAX STRG_OKTAL_c - #define MSG_FACTOR STRG_OKTAL_d - #define MSG_PID_P STRG_OKTAL_e - #define MSG_PID_I STRG_OKTAL_f - -#endif - -#if ENABLED(CYRIL) - #define WELCOME_MSG "Language TEST" - - #define MSG_WATCH "\001\002\003\004\005\006\007\010\011" - #define MSG_PREPARE "UTF8" - #define MSG_CONTROL "ASCII" - - //#define MSG_MAIN ".." - #define MSG_DISABLE_STEPPERS STRG_D0_8 - #define MSG_AUTO_HOME STRG_D0_9 - #define MSG_SET_HOME_OFFSETS STRG_D0_a - #define MSG_PREHEAT_1 STRG_D0_b - #define MSG_PREHEAT_2 STRG_D1_8 - #define MSG_COOLDOWN STRG_D1_9 - #define MSG_SWITCH_PS_OFF STRG_D1_a - #define MSG_MOVE_AXIS STRG_D1_b - - #define MSG_MAIN STRG_OKTAL_2 - #define MSG_TEMPERATURE STRG_OKTAL_3 - #define MSG_MOTION STRG_OKTAL_4 - #define MSG_VOLUMETRIC STRG_OKTAL_5 - #define MSG_CONTRAST STRG_OKTAL_6 - #define MSG_RESTORE_FAILSAFE STRG_OKTAL_7 - - #define MSG_NOZZLE STRG_OKTAL_8 - #define MSG_FAN_SPEED STRG_OKTAL_9 - #define MSG_AUTOTEMP STRG_OKTAL_a - #define MSG_MIN STRG_OKTAL_b - #define MSG_MAX STRG_OKTAL_c - #define MSG_FACTOR STRG_OKTAL_d - #define MSG_PID_P STRG_OKTAL_e - #define MSG_PID_I STRG_OKTAL_f - -#endif - -#if ENABLED(KANA) - #define WELCOME_MSG "Language TEST" - - #define MSG_WATCH "\001\002\003\004\005\006\007\010\011" - #define MSG_PREPARE "UTF8" - #define MSG_CONTROL "ASCII" - - //#define MSG_MAIN ".." - #define MSG_DISABLE_STEPPERS STRG_E382_8 - #define MSG_AUTO_HOME STRG_E382_9 - #define MSG_SET_HOME_OFFSETS STRG_E382_a - #define MSG_PREHEAT_1 STRG_E382_b - #define MSG_PREHEAT_2 STRG_E383_8 - #define MSG_COOLDOWN STRG_E383_9 - #define MSG_SWITCH_PS_OFF STRG_E383_a - #define MSG_MOVE_AXIS STRG_E383_b - - #define MSG_MAIN STRG_OKTAL_2 - #define MSG_TEMPERATURE STRG_OKTAL_3 - #define MSG_MOTION STRG_OKTAL_4 - #define MSG_VOLUMETRIC STRG_OKTAL_5 - #define MSG_CONTRAST STRG_OKTAL_6 - #define MSG_RESTORE_FAILSAFE STRG_OKTAL_7 - - #define MSG_NOZZLE STRG_OKTAL_8 - #define MSG_FAN_SPEED STRG_OKTAL_9 - #define MSG_AUTOTEMP STRG_OKTAL_a - #define MSG_MIN STRG_OKTAL_b - #define MSG_MAX STRG_OKTAL_c - #define MSG_FACTOR STRG_OKTAL_d - #define MSG_PID_P STRG_OKTAL_e - #define MSG_PID_I STRG_OKTAL_f -#endif - -#endif // LANGUAGE_TEST_H diff --git a/lib/Marlin/macros.h b/lib/Marlin/macros.h deleted file mode 100644 index 5eec73e..0000000 --- a/lib/Marlin/macros.h +++ /dev/null @@ -1,121 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef MACROS_H -#define MACROS_H - -#define NUM_AXIS 4 - -#define FORCE_INLINE __attribute__((always_inline)) inline - -// Bracket code that shouldn't be interrupted -#ifndef CRITICAL_SECTION_START - #define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli(); - #define CRITICAL_SECTION_END SREG = _sreg; -#endif - -// Remove compiler warning on an unused variable -#define UNUSED(x) (void) (x) - -// Macros to make a string from a macro -#define STRINGIFY_(M) #M -#define STRINGIFY(M) STRINGIFY_(M) - -// Macros for bit masks -#define TEST(n,b) (((n)&_BV(b))!=0) -#define SBI(n,b) (n |= _BV(b)) -#define CBI(n,b) (n &= ~_BV(b)) -#define SET_BIT(n,b,value) (n) ^= ((-value)^(n)) & (_BV(b)) - -// Macros for maths shortcuts -#ifndef M_PI - #define M_PI 3.14159265358979323846 -#endif -#define RADIANS(d) ((d)*M_PI/180.0) -#define DEGREES(r) ((r)*180.0/M_PI) -#define HYPOT(x,y) sqrt(sq(x)+sq(y)) - -// Macros to contrain values -#define NOLESS(v,n) do{ if (v < n) v = n; }while(0) -#define NOMORE(v,n) do{ if (v > n) v = n; }while(0) - -// Macros to support option testing -#define _CAT(a, ...) a ## __VA_ARGS__ -#define SWITCH_ENABLED_false 0 -#define SWITCH_ENABLED_true 1 -#define SWITCH_ENABLED_0 0 -#define SWITCH_ENABLED_1 1 -#define SWITCH_ENABLED_ 1 -#define ENABLED(b) _CAT(SWITCH_ENABLED_, b) -#define DISABLED(b) (!_CAT(SWITCH_ENABLED_, b)) - -#define NUMERIC(a) ((a) >= '0' && '9' >= (a)) -#define NUMERIC_SIGNED(a) (NUMERIC(a) || (a) == '-') -#define COUNT(a) (sizeof(a)/sizeof(*a)) - -// Macros for initializing arrays -#define ARRAY_6(v1, v2, v3, v4, v5, v6, args...) { v1, v2, v3, v4, v5, v6 } -#define ARRAY_5(v1, v2, v3, v4, v5, args...) { v1, v2, v3, v4, v5 } -#define ARRAY_4(v1, v2, v3, v4, args...) { v1, v2, v3, v4 } -#define ARRAY_3(v1, v2, v3, args...) { v1, v2, v3 } -#define ARRAY_2(v1, v2, args...) { v1, v2 } -#define ARRAY_1(v1, args...) { v1 } - -#define _ARRAY_N(N, args...) ARRAY_ ##N(args) -#define ARRAY_N(N, args...) _ARRAY_N(N, args) - -// Macros for adding -#define INC_0 1 -#define INC_1 2 -#define INC_2 3 -#define INC_3 4 -#define INC_4 5 -#define INC_5 6 -#define INC_6 7 -#define INC_7 8 -#define INC_8 9 -#define INCREMENT_(n) INC_ ##n -#define INCREMENT(n) INCREMENT_(n) - -// Macros for subtracting -#define DEC_1 0 -#define DEC_2 1 -#define DEC_3 2 -#define DEC_4 3 -#define DEC_5 4 -#define DEC_6 5 -#define DEC_7 6 -#define DEC_8 7 -#define DEC_9 8 -#define DECREMENT_(n) DEC_ ##n -#define DECREMENT(n) DECREMENT_(n) - -#define PIN_EXISTS(PN) (defined(PN ##_PIN) && PN ##_PIN >= 0) - -#define PENDING(NOW,SOON) ((long)(NOW-(SOON))<0) -#define ELAPSED(NOW,SOON) (!PENDING(NOW,SOON)) - -#define NOOP do{} while(0) - -#define CEILING(x,y) (((x) + (y) - 1) / (y)) - -#endif //__MACROS_H diff --git a/lib/Marlin/mesh_bed_leveling.cpp b/lib/Marlin/mesh_bed_leveling.cpp deleted file mode 100644 index babad8a..0000000 --- a/lib/Marlin/mesh_bed_leveling.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "mesh_bed_leveling.h" - -#if ENABLED(MESH_BED_LEVELING) - - mesh_bed_leveling mbl; - - mesh_bed_leveling::mesh_bed_leveling() { reset(); } - - void mesh_bed_leveling::reset() { - status = MBL_STATUS_NONE; - z_offset = 0; - memset(z_values, 0, sizeof(z_values)); - } - -#endif // MESH_BED_LEVELING diff --git a/lib/Marlin/mesh_bed_leveling.h b/lib/Marlin/mesh_bed_leveling.h deleted file mode 100644 index eb668e1..0000000 --- a/lib/Marlin/mesh_bed_leveling.h +++ /dev/null @@ -1,105 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "Marlin.h" - -#if ENABLED(MESH_BED_LEVELING) - #define MESH_X_DIST ((MESH_MAX_X - (MESH_MIN_X))/(MESH_NUM_X_POINTS - 1)) - #define MESH_Y_DIST ((MESH_MAX_Y - (MESH_MIN_Y))/(MESH_NUM_Y_POINTS - 1)) - - class mesh_bed_leveling { - public: - uint8_t status; // Has Mesh and Is Active bits - float z_offset; - float z_values[MESH_NUM_Y_POINTS][MESH_NUM_X_POINTS]; - - mesh_bed_leveling(); - - void reset(); - - static FORCE_INLINE float get_probe_x(int8_t i) { return MESH_MIN_X + (MESH_X_DIST) * i; } - static FORCE_INLINE float get_probe_y(int8_t i) { return MESH_MIN_Y + (MESH_Y_DIST) * i; } - void set_z(const int8_t px, const int8_t py, const float z) { z_values[py][px] = z; } - - bool active() { return TEST(status, MBL_STATUS_ACTIVE_BIT); } - void set_active(bool onOff) { if (onOff) SBI(status, MBL_STATUS_ACTIVE_BIT); else CBI(status, MBL_STATUS_ACTIVE_BIT); } - bool has_mesh() { return TEST(status, MBL_STATUS_HAS_MESH_BIT); } - void set_has_mesh(bool onOff) { if (onOff) SBI(status, MBL_STATUS_HAS_MESH_BIT); else CBI(status, MBL_STATUS_HAS_MESH_BIT); } - - inline void zigzag(int8_t index, int8_t &px, int8_t &py) { - px = index % (MESH_NUM_X_POINTS); - py = index / (MESH_NUM_X_POINTS); - if (py & 1) px = (MESH_NUM_X_POINTS - 1) - px; // Zig zag - } - - void set_zigzag_z(int8_t index, float z) { - int8_t px, py; - zigzag(index, px, py); - set_z(px, py, z); - } - - int8_t cell_index_x(float x) { - int8_t cx = int(x - (MESH_MIN_X)) / (MESH_X_DIST); - return constrain(cx, 0, (MESH_NUM_X_POINTS) - 2); - } - - int8_t cell_index_y(float y) { - int8_t cy = int(y - (MESH_MIN_Y)) / (MESH_Y_DIST); - return constrain(cy, 0, (MESH_NUM_Y_POINTS) - 2); - } - - int8_t probe_index_x(float x) { - int8_t px = int(x - (MESH_MIN_X) + (MESH_X_DIST) / 2) / (MESH_X_DIST); - return (px >= 0 && px < (MESH_NUM_X_POINTS)) ? px : -1; - } - - int8_t probe_index_y(float y) { - int8_t py = int(y - (MESH_MIN_Y) + (MESH_Y_DIST) / 2) / (MESH_Y_DIST); - return (py >= 0 && py < (MESH_NUM_Y_POINTS)) ? py : -1; - } - - float calc_z0(float a0, float a1, float z1, float a2, float z2) { - float delta_z = (z2 - z1) / (a2 - a1); - float delta_a = a0 - a1; - return z1 + delta_a * delta_z; - } - - float get_z(float x0, float y0) { - int8_t cx = cell_index_x(x0), - cy = cell_index_y(y0); - if (cx < 0 || cy < 0) return z_offset; - float z1 = calc_z0(x0, - get_probe_x(cx), z_values[cy][cx], - get_probe_x(cx + 1), z_values[cy][cx + 1]); - float z2 = calc_z0(x0, - get_probe_x(cx), z_values[cy + 1][cx], - get_probe_x(cx + 1), z_values[cy + 1][cx + 1]); - float z0 = calc_z0(y0, - get_probe_y(cy), z1, - get_probe_y(cy + 1), z2); - return z0 + z_offset; - } - }; - - extern mesh_bed_leveling mbl; - -#endif // MESH_BED_LEVELING diff --git a/lib/Marlin/nozzle.h b/lib/Marlin/nozzle.h deleted file mode 100644 index cce22db..0000000 --- a/lib/Marlin/nozzle.h +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __NOZZLE_H__ -#define __NOZZLE_H__ - -#include "Marlin.h" -#include "point_t.h" - -/** - * @brief Nozzle class - * - * @todo: Do not ignore the end.z value and allow XYZ movements - */ -class Nozzle { - private: - /** - * @brief Stroke clean pattern - * @details Wipes the nozzle back and forth in a linear movement - * - * @param start point_t defining the starting point - * @param end point_t defining the ending point - * @param strokes number of strokes to execute - */ - static void stroke( - __attribute__((unused)) point_t const &start, - __attribute__((unused)) point_t const &end, - __attribute__((unused)) uint8_t const &strokes - ) __attribute__((optimize ("Os"))) { - #if ENABLED(NOZZLE_CLEAN_FEATURE) - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - // Store the current coords - point_t const initial = { - current_position[X_AXIS], - current_position[Y_AXIS], - current_position[Z_AXIS], - current_position[E_AXIS] - }; - #endif // NOZZLE_CLEAN_GOBACK - - // Move to the starting point - do_blocking_move_to_xy(start.x, start.y); - do_blocking_move_to_z(start.z); - - // Start the stroke pattern - for (uint8_t i = 0; i < (strokes >>1); i++) { - do_blocking_move_to_xy(end.x, end.y); - do_blocking_move_to_xy(start.x, start.y); - } - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - // Move the nozzle to the initial point - do_blocking_move_to_z(initial.z); - do_blocking_move_to_xy(initial.x, initial.y); - #endif // NOZZLE_CLEAN_GOBACK - - #endif // NOZZLE_CLEAN_FEATURE - } - - /** - * @brief Zig-zag clean pattern - * @details Apply a zig-zag cleanning pattern - * - * @param start point_t defining the starting point - * @param end point_t defining the ending point - * @param strokes number of strokes to execute - * @param objects number of objects to create - */ - static void zigzag( - __attribute__((unused)) point_t const &start, - __attribute__((unused)) point_t const &end, - __attribute__((unused)) uint8_t const &strokes, - __attribute__((unused)) uint8_t const &objects - ) __attribute__((optimize ("Os"))) { - #if ENABLED(NOZZLE_CLEAN_FEATURE) - float A = fabs(end.y - start.y); // [twice the] Amplitude - float P = fabs(end.x - start.x) / (objects << 1); // Period - - // Don't allow impossible triangles - if (A <= 0.0f || P <= 0.0f ) return; - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - // Store the current coords - point_t const initial = { - current_position[X_AXIS], - current_position[Y_AXIS], - current_position[Z_AXIS], - current_position[E_AXIS] - }; - #endif // NOZZLE_CLEAN_GOBACK - - for (uint8_t j = 0; j < strokes; j++) { - for (uint8_t i = 0; i < (objects << 1); i++) { - float const x = start.x + i * P; - float const y = start.y + (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)); - - do_blocking_move_to_xy(x, y); - if (i == 0) do_blocking_move_to_z(start.z); - } - - for (int i = (objects << 1); i > -1; i--) { - float const x = start.x + i * P; - float const y = start.y + (A/P) * (P - fabs(fmod((i*P), (2*P)) - P)); - - do_blocking_move_to_xy(x, y); - } - } - - #if ENABLED(NOZZLE_CLEAN_GOBACK) - // Move the nozzle to the initial point - do_blocking_move_to_z(initial.z); - do_blocking_move_to_xy(initial.x, initial.y); - #endif // NOZZLE_CLEAN_GOBACK - - #endif // NOZZLE_CLEAN_FEATURE - } - - public: - /** - * @brief Clean the nozzle - * @details Starts the selected clean procedure pattern - * - * @param pattern one of the available patterns - * @param argument depends on the cleaning pattern - */ - static void clean( - __attribute__((unused)) uint8_t const &pattern, - __attribute__((unused)) uint8_t const &strokes, - __attribute__((unused)) uint8_t const &objects = 0 - ) __attribute__((optimize ("Os"))) { - #if ENABLED(NOZZLE_CLEAN_FEATURE) - switch (pattern) { - case 1: - Nozzle::zigzag( - NOZZLE_CLEAN_START_POINT, - NOZZLE_CLEAN_END_POINT, strokes, objects); - break; - - default: - Nozzle::stroke( - NOZZLE_CLEAN_START_POINT, - NOZZLE_CLEAN_END_POINT, strokes); - } - #endif // NOZZLE_CLEAN_FEATURE - } - - static void park( - __attribute__((unused)) uint8_t const &z_action - ) __attribute__((optimize ("Os"))) { - #if ENABLED(NOZZLE_PARK_FEATURE) - float const z = current_position[Z_AXIS]; - point_t const park = NOZZLE_PARK_POINT; - - switch(z_action) { - case 1: // force Z-park height - do_blocking_move_to_z(park.z); - break; - - case 2: // Raise by Z-park height - do_blocking_move_to_z( - (z + park.z > Z_MAX_POS) ? Z_MAX_POS : z + park.z); - break; - - default: // Raise to Z-park height if lower - if (current_position[Z_AXIS] < park.z) - do_blocking_move_to_z(park.z); - } - - do_blocking_move_to_xy(park.x, park.y); - - #endif // NOZZLE_PARK_FEATURE - } -}; - -#endif diff --git a/lib/Marlin/paj7620.cpp b/lib/Marlin/paj7620.cpp deleted file mode 100644 index f859d42..0000000 --- a/lib/Marlin/paj7620.cpp +++ /dev/null @@ -1,396 +0,0 @@ -/* - * paj7620.cpp - * A library for Grove-Guesture 1.0 - * - * Copyright (c) 2015 seeed technology inc. - * Website : www.seeed.cc - * Author : Wuruibin & Xiangnan - * Modified Time: June 2015 - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include -#include "paj7620.h" -#include - -// PAJ7620U2_20140305.asc -/* Registers' initialization data */ -unsigned char initRegisterArray[][2] = { // Initial Gesture - {0xEF,0x00}, - {0x32,0x29}, - {0x33,0x01}, - {0x34,0x00}, - {0x35,0x01}, - {0x36,0x00}, - {0x37,0x07}, - {0x38,0x17}, - {0x39,0x06}, - {0x3A,0x12}, - {0x3F,0x00}, - {0x40,0x02}, - {0x41,0xFF}, - {0x42,0x01}, - {0x46,0x2D}, - {0x47,0x0F}, - {0x48,0x3C}, - {0x49,0x00}, - {0x4A,0x1E}, - {0x4B,0x00}, - {0x4C,0x20}, - {0x4D,0x00}, - {0x4E,0x1A}, - {0x4F,0x14}, - {0x50,0x00}, - {0x51,0x10}, - {0x52,0x00}, - {0x5C,0x02}, - {0x5D,0x00}, - {0x5E,0x10}, - {0x5F,0x3F}, - {0x60,0x27}, - {0x61,0x28}, - {0x62,0x00}, - {0x63,0x03}, - {0x64,0xF7}, - {0x65,0x03}, - {0x66,0xD9}, - {0x67,0x03}, - {0x68,0x01}, - {0x69,0xC8}, - {0x6A,0x40}, - {0x6D,0x04}, - {0x6E,0x00}, - {0x6F,0x00}, - {0x70,0x80}, - {0x71,0x00}, - {0x72,0x00}, - {0x73,0x00}, - {0x74,0xF0}, - {0x75,0x00}, - {0x80,0x42}, - {0x81,0x44}, - {0x82,0x04}, - {0x83,0x20}, - {0x84,0x20}, - {0x85,0x00}, - {0x86,0x10}, - {0x87,0x00}, - {0x88,0x05}, - {0x89,0x18}, - {0x8A,0x10}, - {0x8B,0x01}, - {0x8C,0x37}, - {0x8D,0x00}, - {0x8E,0xF0}, - {0x8F,0x81}, - {0x90,0x06}, - {0x91,0x06}, - {0x92,0x1E}, - {0x93,0x0D}, - {0x94,0x0A}, - {0x95,0x0A}, - {0x96,0x0C}, - {0x97,0x05}, - {0x98,0x0A}, - {0x99,0x41}, - {0x9A,0x14}, - {0x9B,0x0A}, - {0x9C,0x3F}, - {0x9D,0x33}, - {0x9E,0xAE}, - {0x9F,0xF9}, - {0xA0,0x48}, - {0xA1,0x13}, - {0xA2,0x10}, - {0xA3,0x08}, - {0xA4,0x30}, - {0xA5,0x19}, - {0xA6,0x10}, - {0xA7,0x08}, - {0xA8,0x24}, - {0xA9,0x04}, - {0xAA,0x1E}, - {0xAB,0x1E}, - {0xCC,0x19}, - {0xCD,0x0B}, - {0xCE,0x13}, - {0xCF,0x64}, - {0xD0,0x21}, - {0xD1,0x0F}, - {0xD2,0x88}, - {0xE0,0x01}, - {0xE1,0x04}, - {0xE2,0x41}, - {0xE3,0xD6}, - {0xE4,0x00}, - {0xE5,0x0C}, - {0xE6,0x0A}, - {0xE7,0x00}, - {0xE8,0x00}, - {0xE9,0x00}, - {0xEE,0x07}, - {0xEF,0x01}, - {0x00,0x1E}, - {0x01,0x1E}, - {0x02,0x0F}, - {0x03,0x10}, - {0x04,0x02}, - {0x05,0x00}, - {0x06,0xB0}, - {0x07,0x04}, - {0x08,0x0D}, - {0x09,0x0E}, - {0x0A,0x9C}, - {0x0B,0x04}, - {0x0C,0x05}, - {0x0D,0x0F}, - {0x0E,0x02}, - {0x0F,0x12}, - {0x10,0x02}, - {0x11,0x02}, - {0x12,0x00}, - {0x13,0x01}, - {0x14,0x05}, - {0x15,0x07}, - {0x16,0x05}, - {0x17,0x07}, - {0x18,0x01}, - {0x19,0x04}, - {0x1A,0x05}, - {0x1B,0x0C}, - {0x1C,0x2A}, - {0x1D,0x01}, - {0x1E,0x00}, - {0x21,0x00}, - {0x22,0x00}, - {0x23,0x00}, - {0x25,0x01}, - {0x26,0x00}, - {0x27,0x39}, - {0x28,0x7F}, - {0x29,0x08}, - {0x30,0x03}, - {0x31,0x00}, - {0x32,0x1A}, - {0x33,0x1A}, - {0x34,0x07}, - {0x35,0x07}, - {0x36,0x01}, - {0x37,0xFF}, - {0x38,0x36}, - {0x39,0x07}, - {0x3A,0x00}, - {0x3E,0xFF}, - {0x3F,0x00}, - {0x40,0x77}, - {0x41,0x40}, - {0x42,0x00}, - {0x43,0x30}, - {0x44,0xA0}, - {0x45,0x5C}, - {0x46,0x00}, - {0x47,0x00}, - {0x48,0x58}, - {0x4A,0x1E}, - {0x4B,0x1E}, - {0x4C,0x00}, - {0x4D,0x00}, - {0x4E,0xA0}, - {0x4F,0x80}, - {0x50,0x00}, - {0x51,0x00}, - {0x52,0x00}, - {0x53,0x00}, - {0x54,0x00}, - {0x57,0x80}, - {0x59,0x10}, - {0x5A,0x08}, - {0x5B,0x94}, - {0x5C,0xE8}, - {0x5D,0x08}, - {0x5E,0x3D}, - {0x5F,0x99}, - {0x60,0x45}, - {0x61,0x40}, - {0x63,0x2D}, - {0x64,0x02}, - {0x65,0x96}, - {0x66,0x00}, - {0x67,0x97}, - {0x68,0x01}, - {0x69,0xCD}, - {0x6A,0x01}, - {0x6B,0xB0}, - {0x6C,0x04}, - {0x6D,0x2C}, - {0x6E,0x01}, - {0x6F,0x32}, - {0x71,0x00}, - {0x72,0x01}, - {0x73,0x35}, - {0x74,0x00}, - {0x75,0x33}, - {0x76,0x31}, - {0x77,0x01}, - {0x7C,0x84}, - {0x7D,0x03}, - {0x7E,0x01}, -}; - - -/**************************************************************** - * Function Name: paj7620WriteReg - * Description: PAJ7620 Write reg cmd - * Parameters: addr:reg address; cmd:function data - * Return: error code; success: return 0 -****************************************************************/ -uint8_t paj7620WriteReg(uint8_t addr, uint8_t cmd) -{ - char i = 1; - Wire.beginTransmission(PAJ7620_ID); // start transmission to device - //write cmd - Wire.write(addr); // send register address - Wire.write(cmd); // send value to write - i = Wire.endTransmission(); // end transmission - if(0 != i) - { - Serial.print("Transmission error!!!\n"); - } - return i; -} - -/**************************************************************** - * Function Name: paj7620ReadReg - * Description: PAJ7620 read reg data - * Parameters: addr:reg address; - * qty:number of data to read, addr continuously increase; - * data[]:storage memory start address - * Return: error code; success: return 0 -****************************************************************/ -uint8_t paj7620ReadReg(uint8_t addr, uint8_t qty, uint8_t data[]) -{ - uint8_t error; - Wire.beginTransmission(PAJ7620_ID); - Wire.write(addr); - error = Wire.endTransmission(); - - if(0 != error) - { - Serial.print("Transmission error!!!\n"); - return error; //return error code - } - - Wire.requestFrom((int)PAJ7620_ID, (int)qty); - - while (Wire.available()) - { - *data = Wire.read(); - -#ifdef debug //debug - Serial.print("addr:"); - Serial.print(addr++, HEX); - Serial.print(" data:"); - Serial.println(*data, HEX); -#endif - - data++; - } - return 0; -} - -/**************************************************************** - * Function Name: paj7620SelectBank - * Description: PAJ7620 select register bank - * Parameters: BANK0, BANK1 - * Return: none -****************************************************************/ -void paj7620SelectBank(bank_e bank) -{ - switch(bank){ - case BANK0: - paj7620WriteReg(PAJ7620_REGITER_BANK_SEL, PAJ7620_BANK0); - break; - case BANK1: - paj7620WriteReg(PAJ7620_REGITER_BANK_SEL, PAJ7620_BANK1); - break; - default: - break; - } -} - -/**************************************************************** - * Function Name: paj7620Init - * Description: PAJ7620 REG INIT - * Parameters: none - * Return: error code; success: return 0 -****************************************************************/ -uint8_t paj7620Init(void) -{ - //Near_normal_mode_V5_6.15mm_121017 for 940nm - int i = 0; - uint8_t error; - uint8_t data0 = 0, data1 = 0; - //wakeup the sensor - delayMicroseconds(700); //Wait 700us for PAJ7620U2 to stabilize - - Wire.begin(); - - Serial.println("INIT SENSOR..."); - - paj7620SelectBank(BANK0); - paj7620SelectBank(BANK0); - - error = paj7620ReadReg(0, 1, &data0); - if (error) - { - return error; - } - error = paj7620ReadReg(1, 1, &data1); - if (error) - { - return error; - } - Serial.print("Addr0 ="); - Serial.print(data0 , HEX); - Serial.print(", Addr1 ="); - Serial.println(data1 , HEX); - - if ( (data0 != 0x20 ) || (data1 != 0x76) ) - { - return 0xff; - } - if ( data0 == 0x20 ) - { - Serial.println("wake-up finish."); - } - - for (i = 0; i < INIT_REG_ARRAY_SIZE; i++) - { - paj7620WriteReg(initRegisterArray[i][0], initRegisterArray[i][1]); - } - - paj7620SelectBank(BANK0); //gesture flage reg in Bank0 - - Serial.println("Paj7620 initialize register finished."); - return 0; -} - diff --git a/lib/Marlin/paj7620.h b/lib/Marlin/paj7620.h deleted file mode 100644 index dc4d1f2..0000000 --- a/lib/Marlin/paj7620.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * paj7620.h - * A library for Grove-Guesture 1.0 - * - * Copyright (c) 2015 seeed technology inc. - * Website : www.seeed.cc - * Author : Wuruibin & Xiangnan - * Modified Time: June 2015 - * - * The MIT License (MIT) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - - -#ifndef __PAJ7620_H__ -#define __PAJ7620_H__ - -#define BIT(x) 1 << x - -// REGISTER DESCRIPTION -#define PAJ7620_VAL(val, maskbit) ( val << maskbit ) -#define PAJ7620_ADDR_BASE 0x00 - -// REGISTER BANK SELECT -#define PAJ7620_REGITER_BANK_SEL (PAJ7620_ADDR_BASE + 0xEF) //W - -// DEVICE ID -#define PAJ7620_ID 0x73 - -// REGISTER BANK 0 -#define PAJ7620_ADDR_SUSPEND_CMD (PAJ7620_ADDR_BASE + 0x3) //W -#define PAJ7620_ADDR_GES_PS_DET_MASK_0 (PAJ7620_ADDR_BASE + 0x41) //RW -#define PAJ7620_ADDR_GES_PS_DET_MASK_1 (PAJ7620_ADDR_BASE + 0x42) //RW -#define PAJ7620_ADDR_GES_PS_DET_FLAG_0 (PAJ7620_ADDR_BASE + 0x43) //R -#define PAJ7620_ADDR_GES_PS_DET_FLAG_1 (PAJ7620_ADDR_BASE + 0x44) //R -#define PAJ7620_ADDR_STATE_INDICATOR (PAJ7620_ADDR_BASE + 0x45) //R -#define PAJ7620_ADDR_PS_HIGH_THRESHOLD (PAJ7620_ADDR_BASE + 0x69) //RW -#define PAJ7620_ADDR_PS_LOW_THRESHOLD (PAJ7620_ADDR_BASE + 0x6A) //RW -#define PAJ7620_ADDR_PS_APPROACH_STATE (PAJ7620_ADDR_BASE + 0x6B) //R -#define PAJ7620_ADDR_PS_RAW_DATA (PAJ7620_ADDR_BASE + 0x6C) //R - -// REGISTER BANK 1 -#define PAJ7620_ADDR_PS_GAIN (PAJ7620_ADDR_BASE + 0x44) //RW -#define PAJ7620_ADDR_IDLE_S1_STEP_0 (PAJ7620_ADDR_BASE + 0x67) //RW -#define PAJ7620_ADDR_IDLE_S1_STEP_1 (PAJ7620_ADDR_BASE + 0x68) //RW -#define PAJ7620_ADDR_IDLE_S2_STEP_0 (PAJ7620_ADDR_BASE + 0x69) //RW -#define PAJ7620_ADDR_IDLE_S2_STEP_1 (PAJ7620_ADDR_BASE + 0x6A) //RW -#define PAJ7620_ADDR_OP_TO_S1_STEP_0 (PAJ7620_ADDR_BASE + 0x6B) //RW -#define PAJ7620_ADDR_OP_TO_S1_STEP_1 (PAJ7620_ADDR_BASE + 0x6C) //RW -#define PAJ7620_ADDR_OP_TO_S2_STEP_0 (PAJ7620_ADDR_BASE + 0x6D) //RW -#define PAJ7620_ADDR_OP_TO_S2_STEP_1 (PAJ7620_ADDR_BASE + 0x6E) //RW -#define PAJ7620_ADDR_OPERATION_ENABLE (PAJ7620_ADDR_BASE + 0x72) //RW - -// PAJ7620_REGITER_BANK_SEL -#define PAJ7620_BANK0 PAJ7620_VAL(0,0) -#define PAJ7620_BANK1 PAJ7620_VAL(1,0) - -// PAJ7620_ADDR_SUSPEND_CMD -#define PAJ7620_I2C_WAKEUP PAJ7620_VAL(1,0) -#define PAJ7620_I2C_SUSPEND PAJ7620_VAL(0,0) - -// PAJ7620_ADDR_OPERATION_ENABLE -#define PAJ7620_ENABLE PAJ7620_VAL(1,0) -#define PAJ7620_DISABLE PAJ7620_VAL(0,0) - -typedef enum { - BANK0 = 0, - BANK1, -} bank_e; - -#define GES_RIGHT_FLAG PAJ7620_VAL(1,0) -#define GES_LEFT_FLAG PAJ7620_VAL(1,1) -#define GES_UP_FLAG PAJ7620_VAL(1,2) -#define GES_DOWN_FLAG PAJ7620_VAL(1,3) -#define GES_FORWARD_FLAG PAJ7620_VAL(1,4) -#define GES_BACKWARD_FLAG PAJ7620_VAL(1,5) -#define GES_CLOCKWISE_FLAG PAJ7620_VAL(1,6) -#define GES_COUNT_CLOCKWISE_FLAG PAJ7620_VAL(1,7) -#define GES_WAVE_FLAG PAJ7620_VAL(1,0) - -/* -enum { - // REGISTER 0 - GES_RIGHT_FLAG = BIT(0), - GES_LEFT_FLAG = BIT(1), - GES_UP_FLAG = BIT(2), - GES_DOWN_FLAG = BIT(3), - GES_FORWARD_FLAG = BIT(4), - GES_BACKWARD_FLAG = BIT(5), - GES_CLOCKWISE_FLAG = BIT(6), - GES_COUNT_CLOCKWISE_FLAG = BIT(7), - //REGISTER 1 - GES_WAVE_FLAG = BIT(0), -}; -*/ -#define GES_REACTION_TIME 500 // You can adjust the reaction time according to the actual circumstance. -#define GES_ENTRY_TIME 800 // When you want to recognize the Forward/Backward gestures, your gestures' reaction time must less than GES_ENTRY_TIME(0.8s). -#define GES_QUIT_TIME 1000 - -#define INIT_REG_ARRAY_SIZE (sizeof(initRegisterArray)/sizeof(initRegisterArray[0])) - - -uint8_t paj7620Init(void); -uint8_t paj7620WriteReg(uint8_t addr, uint8_t cmd); -uint8_t paj7620ReadReg(uint8_t addr, uint8_t qty, uint8_t data[]); -void paj7620SelectBank(bank_e bank); - - -#endif diff --git a/lib/Marlin/pins.h b/lib/Marlin/pins.h deleted file mode 100644 index 36821db..0000000 --- a/lib/Marlin/pins.h +++ /dev/null @@ -1,474 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef PINS_H -#define PINS_H - -#if MB(GEN7_CUSTOM) - #include "pins_GEN7_CUSTOM.h" -#elif MB(GEN7_12) - #include "pins_GEN7_12.h" -#elif MB(GEN7_13) - #include "pins_GEN7_13.h" -#elif MB(GEN7_14) - #include "pins_GEN7_14.h" -#elif MB(CNCONTROLS_11) - #include "pins_CNCONTROLS_11.h" -#elif MB(CNCONTROLS_12) - #include "pins_CNCONTROLS_12.h" -#elif MB(CHEAPTRONIC) - #include "pins_CHEAPTRONIC.h" -#elif MB(SETHI) - #include "pins_SETHI.h" -#elif MB(RAMPS_OLD) - #include "pins_RAMPS_OLD.h" -#elif MB(RAMPS_13_EFB) - #define IS_RAMPS_EFB - #include "pins_RAMPS_13.h" -#elif MB(RAMPS_13_EEB) - #define IS_RAMPS_EEB - #include "pins_RAMPS_13.h" -#elif MB(RAMPS_13_EFF) - #define IS_RAMPS_EFF - #include "pins_RAMPS_13.h" -#elif MB(RAMPS_13_EEF) - #define IS_RAMPS_EEF - #include "pins_RAMPS_13.h" -#elif MB(RAMPS_13_SF) - #define IS_RAMPS_SF - #include "pins_RAMPS_13.h" -#elif MB(RAMPS_14_EFB) - #define IS_RAMPS_EFB - #include "pins_RAMPS.h" -#elif MB(RAMPS_14_EEB) - #define IS_RAMPS_EEB - #include "pins_RAMPS.h" -#elif MB(RAMPS_14_EFF) - #define IS_RAMPS_EFF - #include "pins_RAMPS.h" -#elif MB(RAMPS_14_EEF) - #define IS_RAMPS_EEF - #include "pins_RAMPS.h" -#elif MB(RAMPS_14_SF) - #define IS_RAMPS_SF - #include "pins_RAMPS.h" -#elif MB(GEN6) - #include "pins_GEN6.h" -#elif MB(GEN6_DELUXE) - #include "pins_GEN6_DELUXE.h" -#elif MB(SANGUINOLOLU_11) - #include "pins_SANGUINOLOLU_11.h" -#elif MB(SANGUINOLOLU_12) - #include "pins_SANGUINOLOLU_12.h" -#elif MB(MELZI) - #include "pins_MELZI.h" -#elif MB(STB_11) - #include "pins_STB_11.h" -#elif MB(AZTEEG_X1) - #include "pins_AZTEEG_X1.h" -#elif MB(MELZI_MAKR3D) - #include "pins_MELZI_MAKR3D.h" -#elif MB(AZTEEG_X3) - #include "pins_AZTEEG_X3.h" -#elif MB(AZTEEG_X3_PRO) - #include "pins_AZTEEG_X3_PRO.h" -#elif MB(ULTIMAKER) - #include "pins_ULTIMAKER.h" -#elif MB(ULTIMAKER_OLD) - #include "pins_ULTIMAKER_OLD.h" -#elif MB(ULTIMAIN_2) - #include "pins_ULTIMAIN_2.h" -#elif MB(3DRAG) - #include "pins_3DRAG.h" -#elif MB(K8200) - #include "pins_K8200.h" -#elif MB(K8400) - #include "pins_K8400.h" -#elif MB(TEENSYLU) - #include "pins_TEENSYLU.h" -#elif MB(RUMBA) - #include "pins_RUMBA.h" -#elif MB(PRINTRBOARD) - #include "pins_PRINTRBOARD.h" -#elif MB(PRINTRBOARD_REVF) - #include "pins_PRINTRBOARD_REVF.h" -#elif MB(BRAINWAVE) - #include "pins_BRAINWAVE.h" -#elif MB(BRAINWAVE_PRO) - #include "pins_BRAINWAVE_PRO.h" -#elif MB(SAV_MKI) - #include "pins_SAV_MKI.h" -#elif MB(TEENSY2) - #include "pins_TEENSY2.h" -#elif MB(GEN3_PLUS) - #include "pins_GEN3_PLUS.h" -#elif MB(GEN3_MONOLITHIC) - #include "pins_GEN3_MONOLITHIC.h" -#elif MB(MEGATRONICS) - #include "pins_MEGATRONICS.h" -#elif MB(MINITRONICS) - #include "pins_MINITRONICS.h" -#elif MB(MEGATRONICS_2) - #include "pins_MEGATRONICS_2.h" -#elif MB(MEGATRONICS_3) - #include "pins_MEGATRONICS_3.h" -#elif MB(OMCA_A) - #include "pins_OMCA_A.h" -#elif MB(OMCA) - #include "pins_OMCA.h" -#elif MB(RAMBO) - #include "pins_RAMBO.h" -#elif MB(MINIRAMBO) - #include "pins_MINIRAMBO.h" -#elif MB(ELEFU_3) - #include "pins_ELEFU_3.h" -#elif MB(5DPRINT) - #include "pins_5DPRINT.h" -#elif MB(LEAPFROG) - #include "pins_LEAPFROG.h" -#elif MB(BAM_DICE) - #include "pins_RAMPS.h" -#elif MB(BAM_DICE_DUE) - #include "pins_BAM_DICE_DUE.h" -#elif MB(FELIX2) - #include "pins_FELIX2.h" -#elif MB(MKS_BASE) - #include "pins_MKS_BASE.h" -#elif MB(RIGIDBOARD) - #include "pins_RIGIDBOARD.h" -#elif MB(RIGIDBOARD_V2) - #include "pins_RIGIDBOARD_V2.h" -#elif MB(MEGACONTROLLER) - #include "pins_MEGACONTROLLER.h" -#elif MB(BQ_ZUM_MEGA_3D) - #include "pins_BQ_ZUM_MEGA_3D.h" -#elif MB(99) - #include "pins_99.h" -#elif MB(AJ4P) - #include "pins_AJ4P.h" -#elif MB(MKS_13) - #include "pins_MKS_13.h" -#elif MB(SAINSMART_2IN1) - #include "pins_SAINSMART_2IN1.h" -#elif MB(SWIFT_10) - #include "pins_Swift.h" -#else - #error "Unknown MOTHERBOARD value set in Configuration.h" -#endif - -// Define certain undefined pins -#ifndef X_MS1_PIN - #define X_MS1_PIN -1 -#endif -#ifndef X_MS2_PIN - #define X_MS2_PIN -1 -#endif -#ifndef Y_MS1_PIN - #define Y_MS1_PIN -1 -#endif -#ifndef Y_MS2_PIN - #define Y_MS2_PIN -1 -#endif -#ifndef Z_MS1_PIN - #define Z_MS1_PIN -1 -#endif -#ifndef Z_MS2_PIN - #define Z_MS2_PIN -1 -#endif -#ifndef E0_MS1_PIN - #define E0_MS1_PIN -1 -#endif -#ifndef E0_MS2_PIN - #define E0_MS2_PIN -1 -#endif -#ifndef E1_MS1_PIN - #define E1_MS1_PIN -1 -#endif -#ifndef E1_MS2_PIN - #define E1_MS2_PIN -1 -#endif - -#ifndef FAN_PIN - #define FAN_PIN -1 -#endif -#ifndef FAN1_PIN - #define FAN1_PIN -1 -#endif -#ifndef FAN2_PIN - #define FAN2_PIN -1 -#endif - -#ifndef HEATER_0_PIN - #define HEATER_0_PIN -1 -#endif -#ifndef HEATER_1_PIN - #define HEATER_1_PIN -1 -#endif -#ifndef HEATER_2_PIN - #define HEATER_2_PIN -1 -#endif -#ifndef HEATER_3_PIN - #define HEATER_3_PIN -1 -#endif -#ifndef HEATER_BED_PIN - #define HEATER_BED_PIN -1 -#endif - -#ifndef TEMP_0_PIN - #define TEMP_0_PIN -1 -#endif -#ifndef TEMP_1_PIN - #define TEMP_1_PIN -1 -#endif -#ifndef TEMP_2_PIN - #define TEMP_2_PIN -1 -#endif -#ifndef TEMP_3_PIN - #define TEMP_3_PIN -1 -#endif -#ifndef TEMP_BED_PIN - #define TEMP_BED_PIN -1 -#endif - -#ifndef SD_DETECT_PIN - #define SD_DETECT_PIN -1 -#endif -#ifndef SDPOWER - #define SDPOWER -1 -#endif -#ifndef SDSS - #define SDSS -1 -#endif -#ifndef LED_PIN - #define LED_PIN -1 -#endif -#ifndef PS_ON_PIN - #define PS_ON_PIN -1 -#endif -#ifndef KILL_PIN - #define KILL_PIN -1 -#endif -#ifndef SUICIDE_PIN - #define SUICIDE_PIN -1 -#endif - -// Marlin needs to account for pins that equal -1 -#define marlinAnalogInputToDigitalPin(p) ((p) == -1 ? -1 : (p) + 0xA0) - -// List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those! -#define _E0_PINS E0_STEP_PIN, E0_DIR_PIN, E0_ENABLE_PIN, E0_MS1_PIN, E0_MS2_PIN, -#define _E1_PINS -#define _E2_PINS -#define _E3_PINS - -#if EXTRUDERS > 1 - #undef _E1_PINS - #define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN, E1_MS1_PIN, E1_MS2_PIN, - #if EXTRUDERS > 2 - #undef _E2_PINS - #define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN, - #if EXTRUDERS > 3 - #undef _E3_PINS - #define _E3_PINS E3_STEP_PIN, E3_DIR_PIN, E3_ENABLE_PIN, - #endif - #endif -#endif - -#define _H0_PINS HEATER_0_PIN, EXTRUDER_0_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_0_PIN), -#define _H1_PINS -#define _H2_PINS -#define _H3_PINS - -#if HOTENDS > 1 - #undef _H1_PINS - #define _H1_PINS HEATER_1_PIN, EXTRUDER_1_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_1_PIN), - #if HOTENDS > 2 - #undef _H2_PINS - #define _H2_PINS HEATER_2_PIN, EXTRUDER_2_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_2_PIN), - #if HOTENDS > 3 - #undef _H3_PINS - #define _H3_PINS HEATER_3_PIN, EXTRUDER_3_AUTO_FAN_PIN, marlinAnalogInputToDigitalPin(TEMP_3_PIN), - #endif - #endif -#elif ENABLED(MIXING_EXTRUDER) - #undef _E1_PINS - #define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN, - #if MIXING_STEPPERS > 2 - #undef _E2_PINS - #define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN, - #if MIXING_STEPPERS > 3 - #undef _E3_PINS - #define _E3_PINS E3_STEP_PIN, E3_DIR_PIN, E3_ENABLE_PIN, - #endif - #endif -#endif - -#define BED_PINS HEATER_BED_PIN, marlinAnalogInputToDigitalPin(TEMP_BED_PIN), - -// -// Assign endstop pins for boards with only 3 connectors -// -#ifdef X_STOP_PIN - #if X_HOME_DIR < 0 - #define X_MIN_PIN X_STOP_PIN - #define X_MAX_PIN -1 - #else - #define X_MIN_PIN -1 - #define X_MAX_PIN X_STOP_PIN - #endif -#endif - -#ifdef Y_STOP_PIN - #if Y_HOME_DIR < 0 - #define Y_MIN_PIN Y_STOP_PIN - #define Y_MAX_PIN -1 - #else - #define Y_MIN_PIN -1 - #define Y_MAX_PIN Y_STOP_PIN - #endif -#endif - -#ifdef Z_STOP_PIN - #if Z_HOME_DIR < 0 - #define Z_MIN_PIN Z_STOP_PIN - #define Z_MAX_PIN -1 - #else - #define Z_MIN_PIN -1 - #define Z_MAX_PIN Z_STOP_PIN - #endif -#endif - -// -// Disable unused endstop / probe pins -// -#if ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) || DISABLED(Z_MIN_PROBE_ENDSTOP) // Allow code to compile regardless of Z_MIN_PROBE_ENDSTOP setting. - #undef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN -1 -#endif - -#if DISABLED(USE_XMAX_PLUG) - #undef X_MAX_PIN - #define X_MAX_PIN -1 -#endif - -#if DISABLED(USE_YMAX_PLUG) - #undef Y_MAX_PIN - #define Y_MAX_PIN -1 -#endif - -#if DISABLED(USE_ZMAX_PLUG) - #undef Z_MAX_PIN - #define Z_MAX_PIN -1 -#endif - -#if DISABLED(USE_XMIN_PLUG) - #undef X_MIN_PIN - #define X_MIN_PIN -1 -#endif - -#if DISABLED(USE_YMIN_PLUG) - #undef Y_MIN_PIN - #define Y_MIN_PIN -1 -#endif - -#if DISABLED(USE_ZMIN_PLUG) - #undef Z_MIN_PIN - #define Z_MIN_PIN -1 -#endif - -// -// Dual X-carriage, Dual Y, Dual Z support -// - -#define _X2_PINS -#define _Y2_PINS -#define _Z2_PINS - -#define __EPIN(p,q) E##p##_##q##_PIN -#define _EPIN(p,q) __EPIN(p,q) - -// The X2 axis, if any, should be the next open extruder port -#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(X_DUAL_STEPPER_DRIVERS) - #ifndef X2_STEP_PIN - #define X2_STEP_PIN _EPIN(E_STEPPERS, STEP) - #define X2_DIR_PIN _EPIN(E_STEPPERS, DIR) - #define X2_ENABLE_PIN _EPIN(E_STEPPERS, ENABLE) - #endif - #undef _X2_PINS - #define _X2_PINS X2_STEP_PIN, X2_DIR_PIN, X2_ENABLE_PIN, - #define Y2_E_INDEX INCREMENT(E_STEPPERS) -#else - #define Y2_E_INDEX E_STEPPERS -#endif - -// The Y2 axis, if any, should be the next open extruder port -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - #ifndef Y2_STEP_PIN - #define Y2_STEP_PIN _EPIN(Y2_E_INDEX, STEP) - #define Y2_DIR_PIN _EPIN(Y2_E_INDEX, DIR) - #define Y2_ENABLE_PIN _EPIN(Y2_E_INDEX, ENABLE) - #endif - #undef _Y2_PINS - #define _Y2_PINS Y2_STEP_PIN, Y2_DIR_PIN, Y2_ENABLE_PIN, - #define Z2_E_INDEX INCREMENT(Y2_E_INDEX) -#else - #define Z2_E_INDEX Y2_E_INDEX -#endif - -// The Z2 axis, if any, should be the next open extruder port -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - #ifndef Z2_STEP_PIN - #define Z2_STEP_PIN _EPIN(Z2_E_INDEX, STEP) - #define Z2_DIR_PIN _EPIN(Z2_E_INDEX, DIR) - #define Z2_ENABLE_PIN _EPIN(Z2_E_INDEX, ENABLE) - #endif - #undef _Z2_PINS - #define _Z2_PINS Z2_STEP_PIN, Z2_DIR_PIN, Z2_ENABLE_PIN, -#endif - -#define SENSITIVE_PINS { 0, 1, \ - X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, \ - Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, \ - Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, Z_MIN_PROBE_PIN, \ - PS_ON_PIN, HEATER_BED_PIN, FAN_PIN, FAN1_PIN, FAN2_PIN, CONTROLLERFAN_PIN, \ - _E0_PINS _E1_PINS _E2_PINS _E3_PINS BED_PINS \ - _H0_PINS _H1_PINS _H2_PINS _H3_PINS \ - _X2_PINS _Y2_PINS _Z2_PINS \ - X_MS1_PIN, X_MS2_PIN, Y_MS1_PIN, Y_MS2_PIN, Z_MS1_PIN, Z_MS2_PIN \ - } - -#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS)) - -#ifndef SCK_PIN - #define SCK_PIN SCK -#endif -#ifndef MISO_PIN - #define MISO_PIN MISO -#endif -#ifndef MOSI_PIN - #define MOSI_PIN MOSI -#endif -#ifndef SS_PIN - #define SS_PIN SS -#endif - -#endif //__PINS_H diff --git a/lib/Marlin/pins_3DRAG.h b/lib/Marlin/pins_3DRAG.h deleted file mode 100644 index a3a6169..0000000 --- a/lib/Marlin/pins_3DRAG.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * 3DRAG (and K8200 / K8400) Arduino Mega with RAMPS v1.4 pin assignments - */ - -#ifndef BOARD_NAME - #define BOARD_NAME "3Drag" -#endif - -#ifndef DEFAULT_MACHINE_NAME - #define DEFAULT_MACHINE_NAME "3Drag" -#endif - -#ifndef DEFAULT_SOURCE_CODE_URL - #define DEFAULT_SOURCE_CODE_URL "http://3dprint.elettronicain.it/" -#endif - -#include "pins_RAMPS.h" - -#undef Z_ENABLE_PIN -#define Z_ENABLE_PIN 63 - -#undef X_MAX_PIN -#undef Y_MAX_PIN -#undef Z_MAX_PIN -#define X_MAX_PIN 2 -#define Y_MAX_PIN 15 -#define Z_MAX_PIN -1 - -#undef SDSS -#define SDSS 25//53 - -#undef FAN_PIN -#define FAN_PIN 8 - -#undef HEATER_1_PIN -#undef HEATER_2_PIN -#undef HEATER_BED_PIN -#define HEATER_0_PIN 10 -#define HEATER_1_PIN 12 -#define HEATER_2_PIN 6 - -#define HEATER_BED_PIN 9 // BED - -#if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) - #undef BEEPER_PIN - #define BEEPER_PIN -1 - - #undef LCD_PINS_RS - #undef LCD_PINS_ENABLE - #undef LCD_PINS_D4 - #undef LCD_PINS_D5 - #undef LCD_PINS_D6 - #undef LCD_PINS_D7 - #define LCD_PINS_RS 27 - #define LCD_PINS_ENABLE 29 - #define LCD_PINS_D4 37 - #define LCD_PINS_D5 35 - #define LCD_PINS_D6 33 - #define LCD_PINS_D7 31 - - // Buttons - #undef BTN_EN1 - #undef BTN_EN2 - #undef BTN_ENC - #define BTN_EN1 16 - #define BTN_EN2 17 - #define BTN_ENC 23 - -#else - - #define BEEPER_PIN 33 - -#endif // ULTRA_LCD && NEWPANEL diff --git a/lib/Marlin/pins_5DPRINT.h b/lib/Marlin/pins_5DPRINT.h deleted file mode 100644 index dae7e20..0000000 --- a/lib/Marlin/pins_5DPRINT.h +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * 5DPrint D8 Driver board pin assignments - * - * https://bitbucket.org/makible/5dprint-d8-controller-board - */ - -#ifndef __AVR_AT90USB1286__ - #error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu." -#endif - -#define DEFAULT_MACHINE_NAME "Makibox" -#define BOARD_NAME "5DPrint D8" - -#define LARGE_FLASH true - -#define X_STEP_PIN 0 -#define X_DIR_PIN 1 -#define X_ENABLE_PIN 23 -#define X_STOP_PIN 37 - -#define Y_STEP_PIN 2 -#define Y_DIR_PIN 3 -#define Y_ENABLE_PIN 19 -#define Y_STOP_PIN 36 - -#define Z_STEP_PIN 4 -#define Z_DIR_PIN 5 -#define Z_ENABLE_PIN 18 -#define Z_STOP_PIN 39 - -#define E0_STEP_PIN 6 -#define E0_DIR_PIN 7 -#define E0_ENABLE_PIN 17 - -#define HEATER_0_PIN 21 // Extruder -#define HEATER_BED_PIN 20 // Bed -// You may need to change FAN_PIN to 16 because Marlin isn't using fastio.h -// for the fan and Teensyduino uses a different pin mapping. -#define FAN_PIN 16 // Fan - -#define TEMP_0_PIN 1 // Extruder / Analog pin numbering -#define TEMP_BED_PIN 0 // Bed / Analog pin numbering - -// The SDSS pin uses a different pin mapping from file fastio.h -#define SDSS 20 - -// Microstepping pins -// Note that the pin mapping is not from fastio.h -// See Sd2PinMap.h for the pin configurations ??? -#define X_MS1_PIN 25 -#define X_MS2_PIN 26 -#define Y_MS1_PIN 9 -#define Y_MS2_PIN 8 -#define Z_MS1_PIN 7 -#define Z_MS2_PIN 6 -#define E0_MS1_PIN 5 -#define E0_MS2_PIN 4 diff --git a/lib/Marlin/pins_99.h b/lib/Marlin/pins_99.h deleted file mode 100644 index 6b7d1e8..0000000 --- a/lib/Marlin/pins_99.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Board 99 pin assignments - */ -#define BOARD_NAME "99 Unknown" - -#define X_STEP_PIN 2 -#define X_DIR_PIN 3 -#define X_ENABLE_PIN -1 -#define X_STOP_PIN 16 - -#define Y_STEP_PIN 5 -#define Y_DIR_PIN 6 -#define Y_ENABLE_PIN -1 -#define Y_STOP_PIN 67 - -#define Z_STEP_PIN 62 -#define Z_DIR_PIN 63 -#define Z_ENABLE_PIN -1 -#define Z_STOP_PIN 59 - -#define E0_STEP_PIN 65 -#define E0_DIR_PIN 66 -#define E0_ENABLE_PIN -1 - -#define SDSS 53 -#define PS_ON_PIN 9 - -#define HEATER_0_PIN 13 -#define TEMP_0_PIN 6 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! -#define HEATER_BED_PIN 4 -#define TEMP_BED_PIN 10 diff --git a/lib/Marlin/pins_A4JP.h b/lib/Marlin/pins_A4JP.h deleted file mode 100644 index 990abc3..0000000 --- a/lib/Marlin/pins_A4JP.h +++ /dev/null @@ -1,141 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/************************************************ - * Rambo pin assignments MODIFIED FOR A4JP - ************************************************/ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega 2560' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "AJ4P" - -// Servo support -#define SERVO0_PIN 22 // Motor header MX1 -#define SERVO1_PIN 23 // Motor header MX2 -#define SERVO2_PIN 24 // Motor header MX3 -#define SERVO3_PIN 5 // PWM header pin 5 - -#if ENABLED(Z_PROBE_SLED) - #define SLED_PIN -1 -#endif - -//Fan_2 2 - -/***************** -#if ENABLED(ULTRA_LCD) - - #define KILL_PIN -1 //was 80 Glen maybe a mistake - -#endif // ULTRA_LCD */ - -#if ENABLED(VIKI2) || ENABLED(miniVIKI) - #define BEEPER_PIN 44 - // Pins for DOGM SPI LCD Support - #define DOGLCD_A0 70 - #define DOGLCD_CS 71 - #define LCD_SCREEN_ROT_180 - - #define SD_DETECT_PIN -1 // Pin 72 if using easy adapter board - - #if ENABLED(TEMP_STAT_LEDS) - #define STAT_LED_RED 22 - #define STAT_LED_BLUE 32 - #endif -#endif // VIKI2/miniVIKI - -#define FILWIDTH_PIN 3 // ANALOG NUMBERING - -/************************************************ - * Rambo pin assignments old - ************************************************/ - -#define LARGE_FLASH true -#define X_STEP_PIN 37 -#define X_DIR_PIN 48 -#define X_MIN_PIN 12 -#define X_MAX_PIN 24 -#define X_ENABLE_PIN 29 -#define X_MS1_PIN 40 -#define X_MS2_PIN 41 -#define Y_STEP_PIN 36 -#define Y_DIR_PIN 49 -#define Y_MIN_PIN 11 -#define Y_MAX_PIN 23 -#define Y_ENABLE_PIN 28 -#define Y_MS1_PIN 69 -#define Y_MS2_PIN 39 -#define Z_STEP_PIN 35 -#define Z_DIR_PIN 47 -#define Z_MIN_PIN 10 -#define Z_MAX_PIN 30 -#define Z_ENABLE_PIN 27 -#define Z_MS1_PIN 68 -#define Z_MS2_PIN 67 - -#define HEATER_BED_PIN 3 -#define TEMP_BED_PIN 7 //2014/02/04 0:T0 / 1:T1 / 2:T2 / 7:T3 -#define HEATER_0_PIN 9 -#define TEMP_0_PIN 0 -#define HEATER_1_PIN 7 - -#define E0_STEP_PIN 34 -#define E0_DIR_PIN 43 -#define E0_ENABLE_PIN 26 -#define E0_MS1_PIN 65 -#define E0_MS2_PIN 66 -#define E1_STEP_PIN 33 -#define E1_DIR_PIN 42 -#define E1_ENABLE_PIN 25 -#define E1_MS1_PIN 63 -#define E1_MS2_PIN 64 - -#define DIGIPOTSS_PIN 38 -#define DIGIPOT_CHANNELS {4,5,3,0,1} // X Y Z E0 E1 digipot channels to stepper driver mapping - -#define SDSS 53 -#define LED_PIN 13 -#define FAN_PIN 8 -#define PS_ON_PIN 4 -#define FAN_0_PIN 6 //Glen -#define FAN_1_PIN 2 //Glen - -// 2015/12/23 - -#define LCD_PINS_RS 70 //ext2_5 -#define LCD_PINS_ENABLE 71 //ext2_7 -#define LCD_PINS_D4 72 ///////Ext2 9 ? -#define LCD_PINS_D5 73 ///////Ext2 11 ? -#define LCD_PINS_D6 74 //ext2_13 -#define LCD_PINS_D7 75 ///////Ext2 15 ? -#define BEEPER_PIN -1 - -#define BTN_HOME 80 //ext_16 -#define BTN_CENTER 81 //ext_14 -#define BTN_ENC BTN_CENTER -#define BTN_RIGHT 82 //ext_12 -#define BTN_LEFT 83 //ext_10 -#define BTN_UP 84 //ext2_8 -#define BTN_DOWN 85 //ext2_6 - -#define HOME_PIN BTN_HOME diff --git a/lib/Marlin/pins_AZTEEG_X1.h b/lib/Marlin/pins_AZTEEG_X1.h deleted file mode 100644 index 8f87a7e..0000000 --- a/lib/Marlin/pins_AZTEEG_X1.h +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Azteeg X1 pin assignments - */ - -#define BOARD_NAME "Azteeg X1" - -#define SANGUINOLOLU_V_1_2 -#include "pins_SANGUINOLOLU_11.h" diff --git a/lib/Marlin/pins_AZTEEG_X3.h b/lib/Marlin/pins_AZTEEG_X3.h deleted file mode 100644 index b33818e..0000000 --- a/lib/Marlin/pins_AZTEEG_X3.h +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * AZTEEG_X3 Arduino Mega with RAMPS v1.4 pin assignments - */ - -#if HOTENDS > 2 - #error "Azteeg X3 supports up to 2 hotends. Comment this line to keep going." -#endif - -#define BOARD_NAME "Azteeg X3" - -#include "pins_RAMPS_13.h" - -#if ENABLED(VIKI2) || ENABLED(miniVIKI) - - #undef DOGLCD_A0 - #undef DOGLCD_CS - #undef BTN_ENC - #define DOGLCD_A0 31 - #define DOGLCD_CS 32 - #define BTN_ENC 12 - - #if ENABLED(TEMP_STAT_LEDS) - #undef STAT_LED_RED - #undef STAT_LED_BLUE - #define STAT_LED_RED 64 - #define STAT_LED_BLUE 63 - #endif - -#elif ENABLED(TEMP_STAT_LEDS) - - #define STAT_LED_RED 6 - #define STAT_LED_BLUE 11 - -#endif diff --git a/lib/Marlin/pins_AZTEEG_X3_PRO.h b/lib/Marlin/pins_AZTEEG_X3_PRO.h deleted file mode 100644 index f4114c5..0000000 --- a/lib/Marlin/pins_AZTEEG_X3_PRO.h +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * AZTEEG_X3_PRO (Arduino Mega) pin assignments - */ - -#define BOARD_NAME "Azteeg X3 Pro" - -#include "pins_RAMPS.h" - -#undef FAN_PIN -#define FAN_PIN 6 //Part Cooling System - -#undef BEEPER_PIN -#define BEEPER_PIN 33 -#define CONTROLLERFAN_PIN 4 //Pin used for the fan to cool motherboard (-1 to disable) -//Fans/Water Pump to cool the hotend cool side. -#define EXTRUDER_0_AUTO_FAN_PIN 5 -#define EXTRUDER_1_AUTO_FAN_PIN 5 -#define EXTRUDER_2_AUTO_FAN_PIN 5 -#define EXTRUDER_3_AUTO_FAN_PIN 5 -// -//This section is to swap the MIN and MAX pins because the X3 Pro comes with only -//MIN endstops soldered onto the board. Delta code wants the homing endstops to be -//the MAX so I swapped them here. -// -#if ENABLED(DELTA) - #undef X_MIN_PIN - #undef X_MAX_PIN - #undef Y_MIN_PIN - #undef Y_MAX_PIN - #undef Z_MIN_PIN - #undef Z_MAX_PIN - - #define X_MIN_PIN 2 - #define X_MAX_PIN 3 - #define Y_MIN_PIN 15 - #define Y_MAX_PIN 14 - #define Z_MIN_PIN 19 - #define Z_MAX_PIN 18 -#endif - -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN 19 -#endif - -#define E2_STEP_PIN 23 -#define E2_DIR_PIN 25 -#define E2_ENABLE_PIN 40 - -#define E3_STEP_PIN 27 -#define E3_DIR_PIN 29 -#define E3_ENABLE_PIN 41 - -#define E4_STEP_PIN 43 -#define E4_DIR_PIN 37 -#define E4_ENABLE_PIN 42 - -#undef HEATER_1_PIN -#undef HEATER_2_PIN -#undef HEATER_3_PIN -#define HEATER_1_PIN 9 -#define HEATER_2_PIN 16 -#define HEATER_3_PIN 17 -#define HEATER_4_PIN 4 -#define HEATER_5_PIN 5 -#define HEATER_6_PIN 6 -#define HEATER_7_PIN 11 - -#undef TEMP_2_PIN -#undef TEMP_3_PIN -#define TEMP_2_PIN 12 // ANALOG NUMBERING -#define TEMP_3_PIN 11 // ANALOG NUMBERING -#define TEMP_4_PIN 10 // ANALOG NUMBERING -#define TC1 4 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro -#define TC2 5 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro - -// -// These Servo pins are for when they are defined. Tested for usage with bed leveling -// on a Delta with 1 servo. Running through the Z servo endstop in code. -// Physical wire attachment was done on EXT1 on the GND, 5V, and D47 pins. -// -#undef SERVO0_PIN -#define SERVO0_PIN 47 - -#if ENABLED(VIKI2) || ENABLED(miniVIKI) - #undef SD_DETECT_PIN - #define SD_DETECT_PIN 49 // For easy adapter board -#elif ENABLED(TEMP_STAT_LEDS) - #define STAT_LED_RED 32 - #define STAT_LED_BLUE 35 -#endif diff --git a/lib/Marlin/pins_BAM_DICE_DUE.h b/lib/Marlin/pins_BAM_DICE_DUE.h deleted file mode 100644 index 0c5914f..0000000 --- a/lib/Marlin/pins_BAM_DICE_DUE.h +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * BAM&DICE Due (Arduino Mega) pin assignments - */ - -#if HOTENDS > 2 - #error "2PrintBeta Due supports up to 2 hotends. Comment this line to keep going." -#endif - -#define BOARD_NAME "2PrintBeta Due" - -#include "pins_RAMPS.h" - -#undef TEMP_0_PIN -#undef TEMP_1_PIN -#define TEMP_0_PIN 9 // ANALOG NUMBERING -#define TEMP_1_PIN 11 // ANALOG NUMBERING diff --git a/lib/Marlin/pins_BQ_ZUM_MEGA_3D.h b/lib/Marlin/pins_BQ_ZUM_MEGA_3D.h deleted file mode 100644 index c5509d4..0000000 --- a/lib/Marlin/pins_BQ_ZUM_MEGA_3D.h +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * bq ZUM Mega 3D board definition - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega 2560' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "ZUM Mega 3D" - -#include "pins_RAMPS_13.h" - -#undef X_MAX_PIN -#define X_MAX_PIN 79 // 2 - -#undef Z_ENABLE_PIN -#define Z_ENABLE_PIN 77 // 62 - -#undef FAN_PIN -#define FAN_PIN 12 // 4 - -#undef HEATER_0_PIN -#define HEATER_0_PIN 9 // 10 - -#undef HEATER_1_PIN -#define HEATER_1_PIN 10 // 9 - -#undef TEMP_1_PIN -#define TEMP_1_PIN 14 // 15 - -#undef TEMP_BED_PIN -#define TEMP_BED_PIN 15 // 14 - -#define DIGIPOTSS_PIN 22 -#define DIGIPOT_CHANNELS { 4, 5, 3, 0, 1 } - -#define FAN1_PIN 7 - -#undef PS_ON_PIN // 12 -#define PS_ON_PIN 81 // External Power Supply - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - #undef Z_MIN_PIN - #undef Z_MAX_PIN - #define Z_MIN_PIN 19 // IND_S_5V - #define Z_MAX_PIN 18 // Z-MIN Label -#endif diff --git a/lib/Marlin/pins_BRAINWAVE.h b/lib/Marlin/pins_BRAINWAVE.h deleted file mode 100644 index 9dfeb3a..0000000 --- a/lib/Marlin/pins_BRAINWAVE.h +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Brainwave 1.0 pin assignments (AT90USB646) - * - * Requires hardware bundle for Arduino: - * https://github.com/unrepentantgeek/brainwave-arduino - */ - -#ifndef __AVR_AT90USB646__ - #error "Oops! Make sure you have 'Brainwave' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Brainwave" - -#define X_STEP_PIN 27 -#define X_DIR_PIN 29 -#define X_ENABLE_PIN 28 -#define X_STOP_PIN 7 -#define X_ATT_PIN 26 - -#define Y_STEP_PIN 31 -#define Y_DIR_PIN 33 -#define Y_ENABLE_PIN 32 -#define Y_STOP_PIN 6 -#define Y_ATT_PIN 30 - -#define Z_STEP_PIN 17 -#define Z_DIR_PIN 19 -#define Z_ENABLE_PIN 18 -#define Z_STOP_PIN 5 -#define Z_ATT_PIN 16 - -#define E0_STEP_PIN 21 -#define E0_DIR_PIN 23 -#define E0_ENABLE_PIN 22 -#define E0_ATT_PIN 20 - -#define HEATER_0_PIN 4 // Extruder -#define HEATER_BED_PIN 38 // Bed -#define FAN_PIN 3 // Fan - -#define TEMP_0_PIN 7 // Extruder / Analog pin numbering -#define TEMP_BED_PIN 6 // Bed / Analog pin numbering - -#define LED_PIN 39 diff --git a/lib/Marlin/pins_BRAINWAVE_PRO.h b/lib/Marlin/pins_BRAINWAVE_PRO.h deleted file mode 100644 index cba0d46..0000000 --- a/lib/Marlin/pins_BRAINWAVE_PRO.h +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Brainwave Pro pin assignments (AT90USB1286) - * - * Requires hardware bundle for Arduino: - * https://github.com/unrepentantgeek/brainwave-arduino - */ - -#ifndef __AVR_AT90USB1286__ - #error "Oops! Make sure you have 'Brainwave Pro' selected from the 'Tools -> Boards' menu." -#endif - -#include "fastio.h" - -#ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // use Teensyduino Teensy++2.0 pin assignments instead of Marlin alphabetical. - #error "Uncomment #define AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h for this config" -#endif - -#define BOARD_NAME "Brainwave Pro" - -#define LARGE_FLASH true - -#define X_STOP_PIN 47 -#define Y_STOP_PIN 18 -#define Z_MAX_PIN 36 -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN 17 -#endif - -#define X_STEP_PIN 33 -#define X_DIR_PIN 32 -#define X_ENABLE_PIN 11 - -#define Y_STEP_PIN 31 -#define Y_DIR_PIN 30 -#define Y_ENABLE_PIN 8 - -#define Z_STEP_PIN 29 -#define Z_DIR_PIN 28 -#define Z_ENABLE_PIN 37 - -#define E0_STEP_PIN 35 -#define E0_DIR_PIN 34 -#define E0_ENABLE_PIN 13 - -#define HEATER_0_PIN 15 -#define HEATER_BED_PIN 14 // Bed -#define FAN_PIN 16 // Fan, PWM - -#define TEMP_0_PIN 2 // Extruder / Analog pin numbering -#define TEMP_1_PIN 1 // Spare / Analog pin numbering -#define TEMP_BED_PIN 0 // Bed / Analog pin numbering - -#define SDSS 20 -#define LED_PIN 19 -#define SD_DETECT_PIN 12 diff --git a/lib/Marlin/pins_CHEAPTRONIC.h b/lib/Marlin/pins_CHEAPTRONIC.h deleted file mode 100644 index 2fbb4e8..0000000 --- a/lib/Marlin/pins_CHEAPTRONIC.h +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Cheaptronic v1.0 pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Cheaptronic v1.0" -#define LARGE_FLASH true - -// X motor stepper -#define X_STEP_PIN 14 -#define X_DIR_PIN 15 -#define X_ENABLE_PIN 24 - -// Y motor stepper -#define Y_STEP_PIN 35 -#define Y_DIR_PIN 36 -#define Y_ENABLE_PIN 31 - -// Z motor stepper -#define Z_STEP_PIN 40 -#define Z_DIR_PIN 41 -#define Z_ENABLE_PIN 37 - -// XYZ endstops -#define X_STOP_PIN 3 -#define Y_STOP_PIN 2 -#define Z_STOP_PIN 5 - -// Extruder 0 stepper -#define E0_STEP_PIN 26 -#define E0_DIR_PIN 28 -#define E0_ENABLE_PIN 25 - -// Extruder 1 stepper -#define E1_STEP_PIN 33 -#define E1_DIR_PIN 34 -#define E1_ENABLE_PIN 30 - - -#define HEATER_0_PIN 19 // EXTRUDER 1 -#define HEATER_1_PIN 23 // EXTRUDER 2 -#define HEATER_BED_PIN 22 - -// Temperature sensors -#define TEMP_0_PIN 15 -#define TEMP_1_PIN 14 -#define TEMP_BED_PIN 13 - -// Cheaptronic v1.0 doesn't support LCD -#define LCD_PINS_RS -1 -#define LCD_PINS_ENABLE -1 -#define LCD_PINS_D4 -1 -#define LCD_PINS_D5 -1 -#define LCD_PINS_D6 -1 -#define LCD_PINS_D7 -1 - -// Cheaptronic v1.0 doesn't support keypad -#define BTN_EN1 -1 -#define BTN_EN2 -1 -#define BTN_ENC -1 - -// Cheaptronic v1.0 doesn't use this diff --git a/lib/Marlin/pins_CNCONTROLS_11.h b/lib/Marlin/pins_CNCONTROLS_11.h deleted file mode 100644 index 1de35a2..0000000 --- a/lib/Marlin/pins_CNCONTROLS_11.h +++ /dev/null @@ -1,101 +0,0 @@ -/** - * CartesioV11 pin assignments - */ - -#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) - #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. -#endif - -#define BOARD_NAME "CN Controls V11" - -//#define LARGE_FLASH true - -#define X_ENABLE_PIN 35 -#define X_STEP_PIN 34 -#define X_DIR_PIN 36 -#define X_MIN_PIN 43 -#define X_MAX_PIN -1 - -#define Y_ENABLE_PIN 38 -#define Y_STEP_PIN 37 -#define Y_DIR_PIN 39 -#define Y_MIN_PIN 45 -#define Y_MAX_PIN -1 - -#define Z_ENABLE_PIN 41 -#define Z_STEP_PIN 40 -#define Z_DIR_PIN 48 -#define Z_MIN_PIN 42 -#define Z_MAX_PIN -1 - -#define E0_ENABLE_PIN 3 -#define E0_STEP_PIN 29 -#define E0_DIR_PIN 28 -#define HEATER_0_PIN 5 -#define TEMP_0_PIN 0 // ANALOG INPUT !! - -#define E1_ENABLE_PIN 60 -#define E1_STEP_PIN 61 -#define E1_DIR_PIN 62 -#define HEATER_1_PIN 58 -#define TEMP_1_PIN 3 // 3 for tool2 -> 2 for chambertemp - -#define E2_ENABLE_PIN 16 -#define E2_STEP_PIN 15 -#define E2_DIR_PIN 14 -#define HEATER_2_PIN 64 -#define TEMP_2_PIN 2 // 9 for tool3 -> 2 for chambertemp - -#define E3_ENABLE_PIN 47 -#define E3_STEP_PIN 44 -#define E3_DIR_PIN 49 -#define HEATER_3_PIN 46 -#define TEMP_3_PIN 11 // 11 for tool4 -> 2 for chambertemp - -#define HEATER_BED_PIN 2 -#define TEMP_BED_PIN 1 // ANALOG INPUT !! - -// Tools - -//#define TOOL_0_PIN 4 -//#define TOOL_1_PIN 59 -//#define TOOL_2_PIN 8 -//#define TOOL_3_PIN 30 -//#define TOOL_PWM_PIN 7 // common PWM pin for all tools - -// Common I/O - -//#define TEMP_CHAMBER_PIN 2 // ANALOG INPUT !! -//#define FIL_RUNOUT_PIN -1 -//#define PWM_1_PIN 11 -//#define PWM_2_PIN 10 -//#define SPARE_IO 12 -//#define FAN_PIN 7 // common PWM pin for all tools - -// User interface -#define BEEPER_PIN 6 - -// Pins for DOGM SPI LCD Support -#define DOGLCD_A0 26 -#define DOGLCD_CS 24 -#define DOGLCD_MOSI -1 -#define DOGLCD_SCK -1 - -// The encoder and click button -#define BTN_EN1 23 -#define BTN_EN2 25 -#define BTN_ENC 27 - -// Hardware buttons for manual movement of XYZ -#define SHIFT_OUT 19 -#define SHIFT_LD 18 -#define SHIFT_CLK 17 - -//#define UI1 31 -//#define UI2 22 - -// Other -#define SDSS 53 -#define SD_DETECT_PIN 13 -#define STAT_LED_BLUE -1 -#define STAT_LED_RED 31 diff --git a/lib/Marlin/pins_CNCONTROLS_12.h b/lib/Marlin/pins_CNCONTROLS_12.h deleted file mode 100644 index cb33834..0000000 --- a/lib/Marlin/pins_CNCONTROLS_12.h +++ /dev/null @@ -1,105 +0,0 @@ -/** - * CartesioV12 pin assignments - */ - -#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) - #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. -#endif - -#define BOARD_NAME "CN Controls V12" - -//#define LARGE_FLASH true - -#define X_ENABLE_PIN 26 -#define X_STEP_PIN 25 -#define X_DIR_PIN 27 -#define X_MIN_PIN 19 -#define X_MAX_PIN -1 - -#define Y_ENABLE_PIN 29 -#define Y_STEP_PIN 28 -#define Y_DIR_PIN 30 -#define Y_MIN_PIN 22 -#define Y_MAX_PIN -1 - -#define Z_ENABLE_PIN 32 -#define Z_STEP_PIN 31 -#define Z_DIR_PIN 33 -#define Z_MIN_PIN 23 -#define Z_MAX_PIN -1 - -#define E0_ENABLE_PIN 58 -#define E0_STEP_PIN 57 -#define E0_DIR_PIN 55 -#define HEATER_0_PIN 11 -#define TEMP_0_PIN 0 // ANALOG INPUT !! - -#define E1_ENABLE_PIN 60 -#define E1_STEP_PIN 61 -#define E1_DIR_PIN 62 -#define HEATER_1_PIN 9 -#define TEMP_1_PIN 9 // 9 for tool2 -> 13 for chambertemp - -#define E2_ENABLE_PIN 44 -#define E2_STEP_PIN 46 -#define E2_DIR_PIN 66 -#define HEATER_2_PIN 6 -#define TEMP_2_PIN 13 // 10 for tool3 -> 13 for chambertemp - -#define E3_ENABLE_PIN 47 -#define E3_STEP_PIN 45 -#define E3_DIR_PIN 69 -#define HEATER_3_PIN 3 -#define TEMP_3_PIN 11 // 11 for tool4 -> 13 for chambertemp - -#define HEATER_BED_PIN 24 -#define TEMP_BED_PIN 14 // ANALOG INPUT !! - -// Tools - -//#define TOOL_0_PIN 56 -//#define TOOL_0_PWM_PIN 10 // red warning led at dual extruder -//#define TOOL_1_PIN 59 -//#define TOOL_1_PWM_PIN 8 // lights at dual extruder -//#define TOOL_2_PIN 4 -//#define TOOL_2_PWM_PIN 5 -//#define TOOL_3_PIN 14 -//#define TOOL_3_PWM_PIN 2 - -// Common I/O - -//#define TEMP_CHAMBER_PIN 13 // ANALOG INPUT !! -#define FIL_RUNOUT_PIN 18 -//#define PWM_1_PIN 12 -//#define PWM_2_PIN 13 -//#define SPARE_IO 17 -#define FAN_PIN 5 // 5 is PWMtool3 -> 7 is common PWM pin for all tools - -// User interface -#define BEEPER_PIN 16 - -// Pins for DOGM SPI LCD Support -#define DOGLCD_A0 39 -#define DOGLCD_CS 35 -#define DOGLCD_MOSI 48 -#define DOGLCD_SCK 49 -#define LCD_SCREEN_ROT_180 - -// The encoder and click button -#define BTN_EN1 36 -#define BTN_EN2 34 -#define BTN_ENC 38 - -// Hardware buttons for manual movement of XYZ -#define SHIFT_OUT 42 -#define SHIFT_LD 41 -#define SHIFT_CLK 40 - -//#define UI1 43 -//#define UI2 37 - -// Other -#define SDSS 53 -#define SD_DETECT_PIN 15 -#define STAT_LED_BLUE -1 -#define STAT_LED_RED 10 // TOOL_0_PWM_PIN diff --git a/lib/Marlin/pins_ELEFU_3.h b/lib/Marlin/pins_ELEFU_3.h deleted file mode 100644 index 2b8e64d..0000000 --- a/lib/Marlin/pins_ELEFU_3.h +++ /dev/null @@ -1,125 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Elefu RA Board Pin Assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Elefu Ra v3" - -#define X_STEP_PIN 49 -#define X_DIR_PIN 13 -#define X_ENABLE_PIN 48 -#define X_MIN_PIN 35 -#define X_MAX_PIN 34 - -#define Y_STEP_PIN 11 -#define Y_DIR_PIN 9 -#define Y_ENABLE_PIN 12 -#define Y_MIN_PIN 33 -#define Y_MAX_PIN 32 - -#define Z_STEP_PIN 7 -#define Z_DIR_PIN 6 -#define Z_ENABLE_PIN 8 -#define Z_MIN_PIN 31 -#define Z_MAX_PIN 30 - -#define E2_STEP_PIN 43 -#define E2_DIR_PIN 47 -#define E2_ENABLE_PIN 42 - -#define E1_STEP_PIN 18 -#define E1_DIR_PIN 19 -#define E1_ENABLE_PIN 38 - -#define E0_STEP_PIN 40 -#define E0_DIR_PIN 41 -#define E0_ENABLE_PIN 37 - -#define FAN_PIN 16 //5V PWM - -#define PS_ON_PIN 10 //Set to -1 if using a manual switch on the PWRSW Connector -#define SLEEP_WAKE_PIN 26 //This feature still needs work - -#define HEATER_0_PIN 45 //12V PWM1 -#define HEATER_1_PIN 46 //12V PWM2 -#define HEATER_2_PIN 17 //12V PWM3 -#define HEATER_BED_PIN 44 //DOUBLE 12V PWM -#define TEMP_0_PIN 3 //ANALOG NUMBERING -#define TEMP_1_PIN 2 //ANALOG NUMBERING -#define TEMP_2_PIN 1 //ANALOG NUMBERING -#define TEMP_BED_PIN 0 //ANALOG NUMBERING - -#define BEEPER_PIN 36 - -// M240 Triggers a camera by emulating a Canon RC-1 Remote -// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ -#define PHOTOGRAPH_PIN 29 - -#if ENABLED(RA_CONTROL_PANEL) - - #define SDSS 53 - #define SD_DETECT_PIN 28 - - #define BTN_EN1 14 - #define BTN_EN2 39 - #define BTN_ENC 15 - -#endif // RA_CONTROL_PANEL - -#if ENABLED(RA_DISCO) - //variables for which pins the TLC5947 is using - #define TLC_CLOCK_PIN 25 - #define TLC_BLANK_PIN 23 - #define TLC_XLAT_PIN 22 - #define TLC_DATA_PIN 24 - - //We also need to define pin to port number mapping for the 2560 to match the pins listed above. If you change the TLC pins, update this as well per the 2560 datasheet! - //This currently only works with the RA Board. - #define TLC_CLOCK_BIT 3 //bit 3 on port A - #define TLC_CLOCK_PORT &PORTA //bit 3 on port A - - #define TLC_BLANK_BIT 1 //bit 1 on port A - #define TLC_BLANK_PORT &PORTA //bit 1 on port A - - #define TLC_DATA_BIT 2 //bit 2 on port A - #define TLC_DATA_PORT &PORTA //bit 2 on port A - - #define TLC_XLAT_BIT 0 //bit 0 on port A - #define TLC_XLAT_PORT &PORTA //bit 0 on port A - - //change this to match your situation. Lots of TLCs takes up the arduino SRAM very quickly, so be careful - //Leave it at at least 1 if you have enabled RA_LIGHTING - //The number of TLC5947 boards chained together for use with the animation, additional ones will repeat the animation on them, but are not individually addressable and mimic those before them. You can leave the default at 2 even if you only have 1 TLC5947 module. - #define NUM_TLCS 2 - - //These TRANS_ARRAY values let you change the order the LEDs on the lighting modules will animate for chase functions. - //Modify them according to your specific situation. - //NOTE: the array should be 8 long for every TLC you have. These defaults assume (2) TLCs. - #define TRANS_ARRAY {0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8} //forwards - //#define TRANS_ARRAY {7, 6, 5, 4, 3, 2, 1, 0, 8, 9, 10, 11, 12, 13, 14, 15} //backwards -#endif // RA_DISCO diff --git a/lib/Marlin/pins_FELIX2.h b/lib/Marlin/pins_FELIX2.h deleted file mode 100644 index 31906b5..0000000 --- a/lib/Marlin/pins_FELIX2.h +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * FELIXprinters v2.0/3.0 (RAMPS v1.4) pin assignments - */ - -#if HOTENDS > 2 - #error "Felix 2.0+ supports up to 2 hotends. Comment this line to keep going." -#endif - -#define BOARD_NAME "Felix 2.0+" - -// Power outputs EFBF or EFBE -#define MOSFET_D_PIN 7 - -#include "pins_RAMPS.h" - -#undef SDPOWER -#define SDPOWER 1 - -#define PS_ON_PIN 12 - -#if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) - - #define SD_DETECT_PIN 6 - -#endif // NEWPANEL && ULTRA_LCD diff --git a/lib/Marlin/pins_GEN3_MONOLITHIC.h b/lib/Marlin/pins_GEN3_MONOLITHIC.h deleted file mode 100644 index 85d5b3f..0000000 --- a/lib/Marlin/pins_GEN3_MONOLITHIC.h +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Gen3 Monolithic Electronics pin assignments - */ - -#ifndef __AVR_ATmega644P__ - #error "Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Gen3 Monolithic" -#define DEBUG_PIN 0 - -// x axis -#define X_STEP_PIN 15 -#define X_DIR_PIN 18 -#define X_MIN_PIN 20 -// Alex Checar #define X_STOP_PIN 20 -#define X_ENABLE_PIN 24 // actually uses Y_enable_pin -#define X_MAX_PIN -1 - -// y axis -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_MIN_PIN 25 -// Alex Checar #define Y_STOP_PIN 25 -#define Y_ENABLE_PIN 24 // shared with X_enable_pin -#define Y_MAX_PIN -1 - -// z axis -#define Z_STEP_PIN 27 -#define Z_DIR_PIN 28 -#define Z_MIN_PIN 30 -// Alex Checar #define Z_STOP_PIN 30 -#define Z_ENABLE_PIN 29 -#define Z_MAX_PIN -1 - -// extruder pins -#define E0_STEP_PIN 12 -#define E0_DIR_PIN 17 -#define E0_ENABLE_PIN 3 - -#define HEATER_0_PIN 16 -#define TEMP_0_PIN 0 - -// pin for controlling the PSU. -#define PS_ON_PIN 14 // Alex, Do this work on the card? - -// Alex extras from Gen3+ diff --git a/lib/Marlin/pins_GEN3_PLUS.h b/lib/Marlin/pins_GEN3_PLUS.h deleted file mode 100644 index 7889a01..0000000 --- a/lib/Marlin/pins_GEN3_PLUS.h +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Gen3+ pin assignments - */ - -#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega1284P__) - #error "Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Gen3+" - -#define X_STEP_PIN 15 -#define X_DIR_PIN 18 -#define X_STOP_PIN 20 - -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_STOP_PIN 25 - -#define Z_STEP_PIN 27 -#define Z_DIR_PIN 28 -#define Z_STOP_PIN 30 - -#define E0_STEP_PIN 17 -#define E0_DIR_PIN 21 - -#define PS_ON_PIN 14 - -#define HEATER_0_PIN 12 // (extruder) - -#define HEATER_BED_PIN 16 // (bed) -#define X_ENABLE_PIN 19 -#define Y_ENABLE_PIN 24 -#define Z_ENABLE_PIN 29 -#define E0_ENABLE_PIN 13 - -#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder) -#define TEMP_BED_PIN 5 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) -#define SDSS 4 diff --git a/lib/Marlin/pins_GEN6.h b/lib/Marlin/pins_GEN6.h deleted file mode 100644 index ae3d33a..0000000 --- a/lib/Marlin/pins_GEN6.h +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Gen6 pin assignments - */ - -#ifndef __AVR_ATmega644P__ - #ifndef __AVR_ATmega1284P__ - #error "Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu." - #endif -#endif - -#ifndef BOARD_NAME - #define BOARD_NAME "Gen6" -#endif - -//x axis pins -#define X_STEP_PIN 15 -#define X_DIR_PIN 18 -#define X_ENABLE_PIN 19 -#define X_STOP_PIN 20 - -//y axis pins -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_ENABLE_PIN 24 -#define Y_STOP_PIN 25 - -//z axis pins -#define Z_STEP_PIN 27 -#define Z_DIR_PIN 28 -#define Z_ENABLE_PIN 29 -#define Z_STOP_PIN 30 - -//extruder pins -#define E0_STEP_PIN 4 //Edited @ EJE Electronics 20100715 -#define E0_DIR_PIN 2 //Edited @ EJE Electronics 20100715 -#define E0_ENABLE_PIN 3 //Added @ EJE Electronics 20100715 -#define TEMP_0_PIN 5 //changed @ rkoeppl 20110410 - -#define HEATER_0_PIN 14 //changed @ rkoeppl 20110410 - -#if !MB(GEN6) - #define HEATER_BED_PIN 1 //changed @ rkoeppl 20110410 - #define TEMP_BED_PIN 0 //changed @ rkoeppl 20110410 -#endif - -#define SDSS 17 -//our pin for debugging. - -#define DEBUG_PIN 0 - -//our RS485 pins -#define TX_ENABLE_PIN 12 -#define RX_ENABLE_PIN 13 diff --git a/lib/Marlin/pins_GEN6_DELUXE.h b/lib/Marlin/pins_GEN6_DELUXE.h deleted file mode 100644 index b1a1037..0000000 --- a/lib/Marlin/pins_GEN6_DELUXE.h +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Gen6 Deluxe pin assignments - */ - -#define BOARD_NAME "Gen6 Deluxe" - -#include "pins_GEN6.h" diff --git a/lib/Marlin/pins_GEN7_12.h b/lib/Marlin/pins_GEN7_12.h deleted file mode 100644 index 1e59ae6..0000000 --- a/lib/Marlin/pins_GEN7_12.h +++ /dev/null @@ -1,87 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Gen7 v1.1, v1.2, v1.3 pin assignments - */ - -#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) - #error "Oops! Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu." -#endif - -#ifndef BOARD_NAME - #define BOARD_NAME "Gen7 v1.1 / 1.2" -#endif - -#ifndef GEN7_VERSION - #define GEN7_VERSION 12 // v1.x -#endif - -//x axis pins -#define X_STEP_PIN 19 -#define X_DIR_PIN 18 -#define X_ENABLE_PIN 24 -#define X_STOP_PIN 7 - -//y axis pins -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_ENABLE_PIN 24 -#define Y_STOP_PIN 5 - -//z axis pins -#define Z_STEP_PIN 26 -#define Z_DIR_PIN 25 -#define Z_ENABLE_PIN 24 -#define Z_MIN_PIN 1 -#define Z_MAX_PIN 0 - -//extruder pins -#define E0_STEP_PIN 28 -#define E0_DIR_PIN 27 -#define E0_ENABLE_PIN 24 - -#define TEMP_0_PIN 1 -#define TEMP_BED_PIN 2 - -#define HEATER_0_PIN 4 -#define HEATER_BED_PIN 3 - - -// Gen7 v1.3 removed the fan pin -#if GEN7_VERSION < 13 - #define FAN_PIN 31 -#endif - -#define PS_ON_PIN 15 - -//All these generations of Gen7 supply thermistor power -//via PS_ON, so ignore bad thermistor readings -#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE - -//our pin for debugging. -#define DEBUG_PIN 0 - -//our RS485 pins -#define TX_ENABLE_PIN 12 -#define RX_ENABLE_PIN 13 - diff --git a/lib/Marlin/pins_GEN7_13.h b/lib/Marlin/pins_GEN7_13.h deleted file mode 100644 index 2365ae8..0000000 --- a/lib/Marlin/pins_GEN7_13.h +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Gen7 v1.3 pin assignments - */ - -#define BOARD_NAME "Gen7 v1.3" - -#define GEN7_VERSION 13 // v1.3 -#include "pins_GEN7_12.h" diff --git a/lib/Marlin/pins_GEN7_14.h b/lib/Marlin/pins_GEN7_14.h deleted file mode 100644 index 87ccb60..0000000 --- a/lib/Marlin/pins_GEN7_14.h +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Gen7 v1.4 pin assignments - */ - -#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) - #error "Oops! Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Gen7 v1.4" - -#define GEN7_VERSION 14 // v1.4 - -//x axis pins -#define X_STEP_PIN 29 -#define X_DIR_PIN 28 -#define X_ENABLE_PIN 25 -#define X_STOP_PIN 0 - -//y axis pins -#define Y_STEP_PIN 27 -#define Y_DIR_PIN 26 -#define Y_ENABLE_PIN 25 -#define Y_STOP_PIN 1 - -//z axis pins -#define Z_STEP_PIN 23 -#define Z_DIR_PIN 22 -#define Z_ENABLE_PIN 25 -#define Z_STOP_PIN 2 - -//extruder pins -#define E0_STEP_PIN 19 -#define E0_DIR_PIN 18 -#define E0_ENABLE_PIN 25 - -#define TEMP_0_PIN 1 -#define TEMP_BED_PIN 0 - -#define HEATER_0_PIN 4 -#define HEATER_BED_PIN 3 - -#define PS_ON_PIN 15 - -//our pin for debugging. -#define DEBUG_PIN 0 - -//our RS485 pins -#define TX_ENABLE_PIN 12 -#define RX_ENABLE_PIN 13 diff --git a/lib/Marlin/pins_GEN7_CUSTOM.h b/lib/Marlin/pins_GEN7_CUSTOM.h deleted file mode 100644 index 06aaebd..0000000 --- a/lib/Marlin/pins_GEN7_CUSTOM.h +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Gen7 Alfons3 board pin assignments - * - * These Pins are assigned for the modified GEN7 Board from Alfons3. - * Please review the pins and adjust them for your needs. - */ - -#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) - #error "Oops! Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Gen7 Custom" - -//x axis pins -#define X_STEP_PIN 21 // different from standard GEN7 -#define X_DIR_PIN 20 // different from standard GEN7 -#define X_ENABLE_PIN 24 -#define X_STOP_PIN 0 - -//y axis pins -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_ENABLE_PIN 24 -#define Y_STOP_PIN 1 - -//z axis pins -#define Z_STEP_PIN 26 -#define Z_DIR_PIN 25 -#define Z_ENABLE_PIN 24 -#define Z_STOP_PIN 2 - -//extruder pins -#define E0_STEP_PIN 28 -#define E0_DIR_PIN 27 -#define E0_ENABLE_PIN 24 - -#define TEMP_0_PIN 2 -#define TEMP_BED_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) - -#define HEATER_0_PIN 4 -#define HEATER_BED_PIN 3 // (bed) - -#define SDSS 31 // SCL pin of I2C header || CS Pin for SD Card support - -#define PS_ON_PIN 19 -//our pin for debugging. - -#define DEBUG_PIN -1 - -//our RS485 pins -//#define TX_ENABLE_PIN 12 -//#define RX_ENABLE_PIN 13 - -#define BEEPER_PIN -1 - -//Pins for 4bit LCD Support -#define LCD_PINS_RS 18 -#define LCD_PINS_ENABLE 17 -#define LCD_PINS_D4 16 -#define LCD_PINS_D5 15 -#define LCD_PINS_D6 13 -#define LCD_PINS_D7 14 - -//buttons are directly attached -#define BTN_EN1 11 -#define BTN_EN2 10 -#define BTN_ENC 12 - diff --git a/lib/Marlin/pins_K8200.h b/lib/Marlin/pins_K8200.h deleted file mode 100644 index cc3e731..0000000 --- a/lib/Marlin/pins_K8200.h +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * K8200 Arduino Mega with RAMPS v1.3 pin assignments - * Identical to 3DRAG - */ - -#define BOARD_NAME "Velleman K8200" -#define DEFAULT_MACHINE_NAME "K8200" -#define DEFAULT_SOURCE_CODE_URL "https://github.com/CONSULitAS/Marlin-K8200" - -#include "pins_3DRAG.h" diff --git a/lib/Marlin/pins_K8400.h b/lib/Marlin/pins_K8400.h deleted file mode 100644 index a15e9e4..0000000 --- a/lib/Marlin/pins_K8400.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Velleman K8400 (Vertex) - * 3DRAG clone - * - * K8400 has some minor differences over a normal 3Drag: - * - No X/Y max endstops - * - Second extruder step pin has moved - * - No power supply control - * - Second heater has moved pin - */ - -#define BOARD_NAME "K8400" -#define DEFAULT_MACHINE_NAME "Vertex" -#define DEFAULT_SOURCE_CODE_URL "https://github.com/birkett/Vertex-K8400-Firmware" - -#include "pins_3DRAG.h" - -#undef X_MAX_PIN -#define X_MAX_PIN -1 -#undef Y_MAX_PIN -#define Y_MAX_PIN -1 - -#undef E1_STEP_PIN -#define E1_STEP_PIN 32 - -#undef PS_ON_PIN -#undef KILL_PIN - -#undef HEATER_1_PIN -#define HEATER_1_PIN 11 diff --git a/lib/Marlin/pins_LEAPFROG.h b/lib/Marlin/pins_LEAPFROG.h deleted file mode 100644 index acfba03..0000000 --- a/lib/Marlin/pins_LEAPFROG.h +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Leapfrog Driver board pin assignments - */ - -#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Leapfrog" - -#define X_STEP_PIN 28 -#define X_DIR_PIN 63 -#define X_ENABLE_PIN 29 -#define X_MIN_PIN 47 -#define X_MAX_PIN 2 //Max endstops default to disabled "-1", set to commented value to enable. - -#define Y_STEP_PIN 14 // A6 -#define Y_DIR_PIN 15 // A0 -#define Y_ENABLE_PIN 39 -#define Y_MIN_PIN 48 -#define Y_MAX_PIN 15 - -#define Z_STEP_PIN 31 // A2 -#define Z_DIR_PIN 32 // A6 -#define Z_ENABLE_PIN 30 // A1 -#define Z_MIN_PIN 49 -#define Z_MAX_PIN -1 - -#define E0_STEP_PIN 34 //34 -#define E0_DIR_PIN 35 //35 -#define E0_ENABLE_PIN 33 //33 - -#define E1_STEP_PIN 37 //37 -#define E1_DIR_PIN 40 //40 -#define E1_ENABLE_PIN 36 //36 - -#define SDSS 11 -#define LED_PIN 13 -#define FAN_PIN 7 -#define SOL1_PIN 16 -#define SOL2_PIN 17 - -#define HEATER_0_PIN 9 -#define HEATER_1_PIN 8 // 12 -#define HEATER_2_PIN 11 //-1 // 13 -#define TEMP_0_PIN 13 //D27 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! -#define TEMP_1_PIN 15 // 1 -#define HEATER_BED_PIN 10 // 14/15 -#define TEMP_BED_PIN 14 // 1,2 or I2C -/* Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31) */ - diff --git a/lib/Marlin/pins_MEGACONTROLLER.h b/lib/Marlin/pins_MEGACONTROLLER.h deleted file mode 100644 index 7ea4ee3..0000000 --- a/lib/Marlin/pins_MEGACONTROLLER.h +++ /dev/null @@ -1,123 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Mega controller pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#if E_STEPPERS > 2 || HOTENDS > 2 - #error "Mega Controller supports up to 2 hotends / E-steppers. Comment this line to keep going." -#endif - -#define BOARD_NAME "Mega Controller" - -#define SERVO0_PIN 30 -#define SERVO1_PIN 31 -#define SERVO2_PIN 32 -#define SERVO3_PIN 33 - -#define X_STEP_PIN 62//A8 -#define X_DIR_PIN 63//A9 -#define X_ENABLE_PIN 61//A7 -#define X_MIN_PIN 43 -#define X_MAX_PIN 42 //Max endstops default to disabled "-1", set to commented value to enable. - -#define Y_STEP_PIN 65 // A11 -#define Y_DIR_PIN 66 // A12 -#define Y_ENABLE_PIN 64//A10 -#define Y_MIN_PIN 38 -#define Y_MAX_PIN 41 - -#define Z_STEP_PIN 68 // A14 -#define Z_DIR_PIN 69 // A15 -#define Z_ENABLE_PIN 67 // A13 -#define Z_MIN_PIN 40 -#define Z_MAX_PIN 37 - -#define E0_STEP_PIN 23 -#define E0_DIR_PIN 24 -#define E0_ENABLE_PIN 22 - -#define E1_STEP_PIN 26 -#define E1_DIR_PIN 27 -#define E1_ENABLE_PIN 25 - -#define SDSS 53 -#define LED_PIN 13 - -#define FAN_PIN 39 -#define FAN1_PIN 35 -#define FAN2_PIN 36 -#define FAN_SOFT_PWM -#define CONTROLLERFAN_PIN FAN2_PIN - -#define HEATER_0_PIN 29 // EXTRUDER 1 -#define HEATER_1_PIN 34 // EXTRUDER 2 - -#if TEMP_SENSOR_0 == -1 - #define TEMP_0_PIN 4 // ANALOG NUMBERING -#else - #define TEMP_0_PIN 0 // ANALOG NUMBERING -#endif - -#if TEMP_SENSOR_1 == -1 - #define TEMP_1_PIN 5 // ANALOG NUMBERING -#else - #define TEMP_1_PIN 2 // ANALOG NUMBERING -#endif - -#define TEMP_2_PIN 3 // ANALOG NUMBERING - -#define HEATER_BED_PIN 28 // BED - -#if TEMP_SENSOR_BED == -1 - #define TEMP_BED_PIN 6 // ANALOG NUMBERING -#else - #define TEMP_BED_PIN 1 // ANALOG NUMBERING -#endif - -#if ENABLED(MINIPANEL) - #define BEEPER_PIN 46 - // Pins for DOGM SPI LCD Support - #define DOGLCD_A0 47 - #define DOGLCD_CS 45 - #define LCD_PIN_BL 44 // backlight LED on PA3 - - #define KILL_PIN 12 - // GLCD features - //#define LCD_CONTRAST 190 - // Uncomment screen orientation - //#define LCD_SCREEN_ROT_90 - //#define LCD_SCREEN_ROT_180 - //#define LCD_SCREEN_ROT_270 - - #define BTN_EN1 48 - #define BTN_EN2 11 - #define BTN_ENC 10 - - #define SD_DETECT_PIN 49 -#endif // MINIPANEL - diff --git a/lib/Marlin/pins_MEGATRONICS.h b/lib/Marlin/pins_MEGATRONICS.h deleted file mode 100644 index 1b95f52..0000000 --- a/lib/Marlin/pins_MEGATRONICS.h +++ /dev/null @@ -1,97 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * MegaTronics pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Megatronics" -#define LARGE_FLASH true - -#define X_STEP_PIN 26 -#define X_DIR_PIN 28 -#define X_ENABLE_PIN 24 -#define X_MIN_PIN 41 -#define X_MAX_PIN 37 - -#define Y_STEP_PIN 60 // A6 -#define Y_DIR_PIN 61 // A7 -#define Y_ENABLE_PIN 22 -#define Y_MIN_PIN 14 -#define Y_MAX_PIN 15 - -#define Z_STEP_PIN 54 // A0 -#define Z_DIR_PIN 55 // A1 -#define Z_ENABLE_PIN 56 // A2 -#define Z_MIN_PIN 18 -#define Z_MAX_PIN 19 - -#define E0_STEP_PIN 31 -#define E0_DIR_PIN 32 -#define E0_ENABLE_PIN 38 - -#define E1_STEP_PIN 34 -#define E1_DIR_PIN 36 -#define E1_ENABLE_PIN 30 - -#define SDSS 53 -#define LED_PIN 13 - -#define FAN_PIN 7 // IO pin. Buffer needed -#define PS_ON_PIN 12 - -#define HEATER_0_PIN 9 -#define HEATER_1_PIN 8 -#define HEATER_BED_PIN 10 // BED - -#if TEMP_SENSOR_0 == -1 - #define TEMP_0_PIN 8 // ANALOG NUMBERING -#else - #define TEMP_0_PIN 13 // ANALOG NUMBERING -#endif -#define TEMP_1_PIN 15 // ANALOG NUMBERING -#define TEMP_BED_PIN 14 // ANALOG NUMBERING - -// AUX-4 -#define BEEPER_PIN 33 - -#if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) - - #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 - #define LCD_PINS_D4 23 - #define LCD_PINS_D5 25 - #define LCD_PINS_D6 27 - #define LCD_PINS_D7 29 - - // Buttons directly attached using AUX-2 - #define BTN_EN1 59 - #define BTN_EN2 64 - #define BTN_ENC 43 - - #define SD_DETECT_PIN -1 // RAMPS doesn't use this - -#endif // ULTRA_LCD && NEWPANEL diff --git a/lib/Marlin/pins_MEGATRONICS_2.h b/lib/Marlin/pins_MEGATRONICS_2.h deleted file mode 100644 index 991ab4a..0000000 --- a/lib/Marlin/pins_MEGATRONICS_2.h +++ /dev/null @@ -1,104 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * MegaTronics v2.0 pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Megatronics v2.0" -#define LARGE_FLASH true - -#define X_STEP_PIN 26 -#define X_DIR_PIN 27 -#define X_ENABLE_PIN 25 -#define X_MIN_PIN 37 -#define X_MAX_PIN 40 - -#define Y_STEP_PIN 4 // A6 -#define Y_DIR_PIN 54 // A0 -#define Y_ENABLE_PIN 5 -#define Y_MIN_PIN 41 -#define Y_MAX_PIN 38 - -#define Z_STEP_PIN 56 // A2 -#define Z_DIR_PIN 60 // A6 -#define Z_ENABLE_PIN 55 // A1 -#define Z_MIN_PIN 18 -#define Z_MAX_PIN 19 - -#define E0_STEP_PIN 35 -#define E0_DIR_PIN 36 -#define E0_ENABLE_PIN 34 - -#define E1_STEP_PIN 29 -#define E1_DIR_PIN 39 -#define E1_ENABLE_PIN 28 - -#define E2_STEP_PIN 23 -#define E2_DIR_PIN 24 -#define E2_ENABLE_PIN 22 - -#define SDSS 53 -#define LED_PIN 13 - -#define FAN_PIN 7 -#define FAN2_PIN 6 -#define PS_ON_PIN 12 - -#define HEATER_0_PIN 9 // EXTRUDER 1 -#if TEMP_SENSOR_0 == -1 - #define TEMP_0_PIN 4 // ANALOG NUMBERING -#else - #define TEMP_0_PIN 13 // ANALOG NUMBERING -#endif - -#define HEATER_1_PIN 8 // EXTRUDER 2 -#if TEMP_SENSOR_1 == -1 - #define TEMP_1_PIN 8 // ANALOG NUMBERING -#else - #define TEMP_1_PIN 15 // ANALOG NUMBERING -#endif - -#define HEATER_BED_PIN 10 // BED -#if TEMP_SENSOR_BED == -1 - #define TEMP_BED_PIN 8 // ANALOG NUMBERING -#else - #define TEMP_BED_PIN 14 // ANALOG NUMBERING -#endif - -#define BEEPER_PIN 64 - -#define LCD_PINS_RS 14 -#define LCD_PINS_ENABLE 15 -#define LCD_PINS_D4 30 -#define LCD_PINS_D5 31 -#define LCD_PINS_D6 32 -#define LCD_PINS_D7 33 - -// Buttons are directly attached using keypad -#define BTN_EN1 61 -#define BTN_EN2 59 -#define BTN_ENC 43 diff --git a/lib/Marlin/pins_MEGATRONICS_3.h b/lib/Marlin/pins_MEGATRONICS_3.h deleted file mode 100644 index a983ee2..0000000 --- a/lib/Marlin/pins_MEGATRONICS_3.h +++ /dev/null @@ -1,147 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * MegaTronics v3.0 pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define MEGATRONICS_31 - -#if ENABLED(MEGATRONICS_31) - #define BOARD_NAME "Megatronics v3.1" -#else - #define BOARD_NAME "Megatronics v3.0" -#endif - -#define LARGE_FLASH true - -#if ENABLED(Z_PROBE_SLED) - #define SLED_PIN -1 -#endif - -// Servo support -#define SERVO0_PIN 46 // AUX3-6 -#define SERVO1_PIN 47 // AUX3-5 -#define SERVO2_PIN 48 // AUX3-4 -#define SERVO3_PIN 49 // AUX3-3 - -#define X_STEP_PIN 58 -#define X_DIR_PIN 57 -#define X_ENABLE_PIN 59 -#define X_MIN_PIN 37 -#define X_MAX_PIN 40 - -#define Y_STEP_PIN 5 -#define Y_DIR_PIN 17 -#define Y_ENABLE_PIN 4 -#define Y_MIN_PIN 41 -#define Y_MAX_PIN 38 - -#define Z_STEP_PIN 16 -#define Z_DIR_PIN 11 -#define Z_ENABLE_PIN 3 -#define Z_MIN_PIN 18 -#define Z_MAX_PIN 19 - -#define E0_STEP_PIN 28 -#define E0_DIR_PIN 27 -#define E0_ENABLE_PIN 29 - -#define E1_STEP_PIN 25 -#define E1_DIR_PIN 24 -#define E1_ENABLE_PIN 26 - -#define E2_STEP_PIN 22 -#define E2_DIR_PIN 60 -#define E2_ENABLE_PIN 23 - -#define SDSS 53 -#define LED_PIN 13 - -#define PS_ON_PIN 12 - -#define HEATER_0_PIN 2 -#define HEATER_1_PIN 9 -#define HEATER_2_PIN 8 -#define HEATER_BED_PIN 10 -#define FAN_PIN 6 -#define FAN2_PIN 7 - -#if TEMP_SENSOR_0 == -1 - #define TEMP_0_PIN 11 // ANALOG NUMBERING -#else - #define TEMP_0_PIN 15 // ANALOG NUMBERING -#endif -#if TEMP_SENSOR_1 == -1 - #define TEMP_1_PIN 10 // ANALOG NUMBERING -#else - #define TEMP_1_PIN 13 // ANALOG NUMBERING -#endif -#if TEMP_SENSOR_2 == -1 - #define TEMP_2_PIN 9 // ANALOG NUMBERING -#else - #define TEMP_2_PIN 12 // ANALOG NUMBERING -#endif -#if TEMP_SENSOR_BED == -1 - #define TEMP_BED_PIN 8 // ANALOG NUMBERING -#else - #define TEMP_BED_PIN 14 // ANALOG NUMBERING -#endif - -/** - * Controllers and LCDs - */ -#define BEEPER_PIN 61 - -#define BTN_EN1 44 -#define BTN_EN2 45 -#define BTN_ENC 33 - -#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) - #define LCD_PINS_RS 56 // CS chip select / SS chip slave select - #define LCD_PINS_ENABLE 51 // SID (MOSI) - #define LCD_PINS_D4 52 // SCK (CLK) clock - #define SD_DETECT_PIN 35 -#else - #define LCD_PINS_RS 32 - #define LCD_PINS_ENABLE 31 - #define LCD_PINS_D4 14 - #define LCD_PINS_D5 30 - #define LCD_PINS_D6 39 - #define LCD_PINS_D7 15 - - #define SHIFT_CLK 43 - #define SHIFT_LD 35 - #define SHIFT_OUT 34 - #define SHIFT_EN 44 - - #if ENABLED(MEGATRONICS_31) - #define SD_DETECT_PIN 56 - #else - #define SD_DETECT_PIN -1 - #endif - -#endif diff --git a/lib/Marlin/pins_MELZI.h b/lib/Marlin/pins_MELZI.h deleted file mode 100644 index 677f0cf..0000000 --- a/lib/Marlin/pins_MELZI.h +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Melzi pin assignments - */ - -#define BOARD_NAME "Melzi" - -#if defined(__AVR_ATmega1284P__) - #define LARGE_FLASH true -#endif - -#define SANGUINOLOLU_V_1_2 -#include "pins_SANGUINOLOLU_11.h" diff --git a/lib/Marlin/pins_MELZI_MAKR3D.h b/lib/Marlin/pins_MELZI_MAKR3D.h deleted file mode 100644 index 877f8cb..0000000 --- a/lib/Marlin/pins_MELZI_MAKR3D.h +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Melzi with ATmega1284 (MaKr3d version) pin assignments - */ - -#define BOARD_NAME "Melzi ATmega1284" - -#if defined(__AVR_ATmega1284P__) - #define LARGE_FLASH true -#endif - -#define SANGUINOLOLU_V_1_2 -#include "pins_SANGUINOLOLU_11.h" diff --git a/lib/Marlin/pins_MINIRAMBO.h b/lib/Marlin/pins_MINIRAMBO.h deleted file mode 100644 index 089ea59..0000000 --- a/lib/Marlin/pins_MINIRAMBO.h +++ /dev/null @@ -1,116 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Mini-Rambo pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega 2560 or Rambo' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Mini Rambo" -#define LARGE_FLASH true - -#define X_STEP_PIN 37 -#define X_DIR_PIN 48 -#define X_MIN_PIN 12 -#define X_MAX_PIN 30 -#define X_ENABLE_PIN 29 -#define X_MS1_PIN 40 -#define X_MS2_PIN 41 - -#define Y_STEP_PIN 36 -#define Y_DIR_PIN 49 -#define Y_MIN_PIN 11 -#define Y_MAX_PIN 24 -#define Y_ENABLE_PIN 28 -#define Y_MS1_PIN 69 -#define Y_MS2_PIN 39 - -#define Z_STEP_PIN 35 -#define Z_DIR_PIN 47 -#define Z_MIN_PIN 10 -#define Z_MAX_PIN 23 -#define Z_ENABLE_PIN 27 -#define Z_MS1_PIN 68 -#define Z_MS2_PIN 67 - -#define HEATER_BED_PIN 4 -#define TEMP_BED_PIN 2 - -#define HEATER_0_PIN 3 -#define TEMP_0_PIN 0 - -#define HEATER_1_PIN 7 -#define TEMP_1_PIN 1 - -#if ENABLED(BARICUDA) - #define HEATER_2_PIN 6 -#endif - -#define E0_STEP_PIN 34 -#define E0_DIR_PIN 43 -#define E0_ENABLE_PIN 26 -#define E0_MS1_PIN 65 -#define E0_MS2_PIN 66 - -#define E1_STEP_PIN -1 -#define E1_DIR_PIN -1 -#define E1_ENABLE_PIN -1 - -#define MOTOR_CURRENT_PWM_XY_PIN 46 -#define MOTOR_CURRENT_PWM_Z_PIN 45 -#define MOTOR_CURRENT_PWM_E_PIN 44 -//Motor current PWM conversion, PWM value = MotorCurrentSetting * 255 / range -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {1300, 1300, 1250} -#define SDSS 53 -#define LED_PIN 13 -#define FAN_PIN 8 -#define FAN_1_PIN 6 - -#if ENABLED(ULTRA_LCD) - - #define KILL_PIN 32 - - #if ENABLED(NEWPANEL) - - // Beeper on AUX-4 - #define BEEPER_PIN 84 - - #define LCD_PINS_RS 82 - #define LCD_PINS_ENABLE 18 - #define LCD_PINS_D4 19 - #define LCD_PINS_D5 70 - #define LCD_PINS_D6 85 - #define LCD_PINS_D7 71 - - //buttons are directly attached using AUX-2 - #define BTN_EN1 14 - #define BTN_EN2 72 - #define BTN_ENC 9 // the click - - #define SD_DETECT_PIN 15 - - #endif //NEWPANEL -#endif //ULTRA_LCD diff --git a/lib/Marlin/pins_MINITRONICS.h b/lib/Marlin/pins_MINITRONICS.h deleted file mode 100644 index 34faa9a..0000000 --- a/lib/Marlin/pins_MINITRONICS.h +++ /dev/null @@ -1,109 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Minitronics v1.0/1.1 pin assignments - */ - -#ifndef __AVR_ATmega1281__ - #error "Oops! Make sure you have 'Minitronics' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Minitronics v1.0 / v1.1" -#define LARGE_FLASH true - -#define X_STEP_PIN 48 -#define X_DIR_PIN 47 -#define X_ENABLE_PIN 49 -#define X_MIN_PIN 5 -#define X_MAX_PIN 2 - -#define Y_STEP_PIN 39 // A6 -#define Y_DIR_PIN 40 // A0 -#define Y_ENABLE_PIN 38 -#define Y_MIN_PIN 2 -#define Y_MAX_PIN 15 - -#define Z_STEP_PIN 42 // A2 -#define Z_DIR_PIN 43 // A6 -#define Z_ENABLE_PIN 41 // A1 -#define Z_MIN_PIN 6 -#define Z_MAX_PIN -1 - -#define E0_STEP_PIN 45 -#define E0_DIR_PIN 44 -#define E0_ENABLE_PIN 27 - -#define E1_STEP_PIN 36 -#define E1_DIR_PIN 35 -#define E1_ENABLE_PIN 37 - -#define E2_STEP_PIN -1 -#define E2_DIR_PIN -1 -#define E2_ENABLE_PIN -1 - -#define SDSS 16 -#define LED_PIN 46 - -#define FAN_PIN 9 - -#define TEMP_0_PIN 7 // ANALOG NUMBERING -#define TEMP_1_PIN 6 // ANALOG NUMBERING -#define TEMP_BED_PIN 6 // ANALOG NUMBERING - -#define HEATER_0_PIN 7 // EXTRUDER 1 -#define HEATER_1_PIN 8 // EXTRUDER 2 -#define HEATER_BED_PIN 3 // BED - -/** - * Controllers and LCDs - */ -#define BEEPER_PIN -1 - -#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) - - #define LCD_PINS_RS 15 // CS chip select /SS chip slave select - #define LCD_PINS_ENABLE 11 // SID (MOSI) - #define LCD_PINS_D4 10 // SCK (CLK) clock - - #define BTN_EN1 18 - #define BTN_EN2 17 - #define BTN_ENC 25 - - #define SD_DETECT_PIN 30 - -#else - - #define LCD_PINS_RS -1 - #define LCD_PINS_ENABLE -1 - #define LCD_PINS_D4 -1 - #define LCD_PINS_D5 -1 - #define LCD_PINS_D6 -1 - #define LCD_PINS_D7 -1 - - // Buttons are directly attached using keypad - #define BTN_EN1 -1 - #define BTN_EN2 -1 - #define BTN_ENC -1 - - #define SD_DETECT_PIN -1 // Minitronics doesn't use this -#endif diff --git a/lib/Marlin/pins_MKS_13.h b/lib/Marlin/pins_MKS_13.h deleted file mode 100644 index 3b5b242..0000000 --- a/lib/Marlin/pins_MKS_13.h +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino Mega with RAMPS v1.4 adjusted pin assignments - * - * MKS v1.3 (Extruder, Fan, Bed) - * MKS v1.3 (Extruder, Extruder, Fan, Bed) - * MKS v1.4 (Extruder, Fan, Bed) - * MKS v1.4 (Extruder, Extruder, Fan, Bed) - */ - -#if HOTENDS > 2 - #error "MKS 1.3/1.4 supports up to 2 hotends. Comment this line to keep going." -#endif - -#define BOARD_NAME "MKS > v1.3" - -// Power outputs EFBF or EFBE -#define MOSFET_D_PIN 7 - -#include "pins_RAMPS.h" - -#if ENABLED(VIKI2) || ENABLED(miniVIKI) - /** - * VIKI2 Has two groups of wires with... - * - * +Vin + Input supply, requires 120ma for LCD and mSD card - * GND Ground Pin - * MOSI Data input for LCD and SD - * MISO Data output for SD - * SCK Clock for LCD and SD - * AO Reg. Sel for LCD - * LCS Chip Select for LCD - * SDCS Chip Select for SD - * SDCD Card Detect pin for SD - * ENCA Encoder output A - * ENCB Encoder output B - * ENCBTN Encoder button switch - * - * BTN Panel mounted button switch - * BUZZER Piezo buzzer - * BLUE-LED Blue LED ring pin (3 to 5v, mosfet buffered) - * RED-LED Red LED ring pin (3 to 5v, mosfet buffered) - * - * This configuration uses the following arrangement: - * - * EXP1 D37 = EN2 D35 = EN1 EXP2 D50 = MISO D52 = SCK - * D17 = BLUE D16 = RED D31 = ENC D53 = SDCS - * D23 = KILL D25 = BUZZ D33 = --- D51 = MOSI - * D27 = A0 D29 = LCS D49 = SDCD RST = --- - * GND = GND 5V = 5V GND = --- D41 = --- - */ - - #undef BTN_EN1 - #undef BTN_EN2 - #undef BTN_ENC - #undef DOGLCD_A0 - #undef DOGLCD_CS - #undef SD_DETECT_PIN - #undef BEEPER_PIN - #undef KILL_PIN - - // - // VIKI2 12-wire lead - // - - // orange/white SDCD - #define SD_DETECT_PIN 49 - - // white ENCA - #define BTN_EN1 35 - - // green ENCB - #define BTN_EN2 37 - - // purple ENCBTN - #define BTN_ENC 31 - - // brown A0 - #define DOGLCD_A0 27 - - // green/white LCS - #define DOGLCD_CS 29 - - // 50 gray MISO - // 51 yellow MOSI - // 52 orange SCK - - // blue SDCS - //#define SDSS 53 - - // - // VIKI2 4-wire lead - // - - // blue BTN - #define KILL_PIN 23 - - // green BUZZER - #define BEEPER_PIN 25 - - // yellow RED-LED - #define STAT_LED_RED 16 - - // white BLUE-LED - #define STAT_LED_BLUE 17 - -#endif diff --git a/lib/Marlin/pins_MKS_BASE.h b/lib/Marlin/pins_MKS_BASE.h deleted file mode 100644 index 8c72220..0000000 --- a/lib/Marlin/pins_MKS_BASE.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * MKS BASE 1.0 – Arduino Mega2560 with RAMPS v1.4 pin assignments - */ - -#if HOTENDS > 2 - #error "MKS BASE 1.0 supports up to 2 hotends. Comment this line to keep going." -#endif - -#define BOARD_NAME "MKS BASE 1.0" - -// Power outputs EFBF or EFBE -#define MOSFET_D_PIN 7 - -#include "pins_RAMPS.h" \ No newline at end of file diff --git a/lib/Marlin/pins_OMCA.h b/lib/Marlin/pins_OMCA.h deleted file mode 100644 index 9ec6309..0000000 --- a/lib/Marlin/pins_OMCA.h +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Open Motion controller with enable based extruders (Final!) - * - * ATMega644 - * - * +---\/---+ - * (D 0) PB0 1| |40 PA0 (AI 0 / D31) - * (D 1) PB1 2| |39 PA1 (AI 1 / D30) - * INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) - * PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) - * PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) - * MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) - * MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) - * SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) - * RST 9| |32 AREF - * VCC 10| |31 GND - * GND 11| |30 AVCC - * XTAL2 12| |29 PC7 (D 23) - * XTAL1 13| |28 PC6 (D 22) - * RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI - * TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO - * INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS - * INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK - * PWM (D 12) PD4 18| |23 PC1 (D 17) SDA - * PWM (D 13) PD5 19| |22 PC0 (D 16) SCL - * PWM (D 14) PD6 20| |21 PD7 (D 15) PWM - * +--------+ - * - * REF http://sanguino.cc/hardware - */ - -#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) - #error "Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. (Final OMCA board)" -#endif - -#define BOARD_NAME "Final OMCA" - -#define X_STEP_PIN 26 -#define X_DIR_PIN 25 -#define X_ENABLE_PIN 10 -#define X_STOP_PIN 0 - -#define Y_STEP_PIN 28 -#define Y_DIR_PIN 27 -#define Y_ENABLE_PIN 10 -#define Y_STOP_PIN 1 - -#define Z_STEP_PIN 23 -#define Z_DIR_PIN 22 -#define Z_ENABLE_PIN 10 -#define Z_STOP_PIN 2 - -#define E0_STEP_PIN 24 -#define E0_DIR_PIN 21 -#define E0_ENABLE_PIN 10 - -// future proofing -#define __FS 20 -#define __FD 19 -#define __GS 18 -#define __GD 13 - -#define UNUSED_PWM 14 // PWM on LEFT connector - -#define E1_STEP_PIN -1 // 21 -#define E1_DIR_PIN -1 // 20 -#define E1_ENABLE_PIN -1 // 19 - -#define E2_STEP_PIN -1 // 21 -#define E2_DIR_PIN -1 // 20 -#define E2_ENABLE_PIN -1 // 18 - -#define SDSS 11 -#define FAN_PIN 14 // PWM on MIDDLE connector - -#define HEATER_0_PIN 3 // DONE PWM on RIGHT connector -#define HEATER_BED_PIN 4 - -#define TEMP_0_PIN 0 // ANALOG INPUT NUMBERING -#define TEMP_1_PIN 1 // ANALOG -#define TEMP_BED_PIN 2 // 1,2 or I2C - -#define I2C_SCL 16 -#define I2C_SDA 17 - diff --git a/lib/Marlin/pins_OMCA_A.h b/lib/Marlin/pins_OMCA_A.h deleted file mode 100644 index 39d232a..0000000 --- a/lib/Marlin/pins_OMCA_A.h +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Open Motion controller with enable based extruders (Alpha!) - * - * ATMega644 - * - * +---\/---+ - * (D 0) PB0 1| |40 PA0 (AI 0 / D31) - * (D 1) PB1 2| |39 PA1 (AI 1 / D30) - * INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) - * PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) - * PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) - * MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) - * MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) - * SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) - * RST 9| |32 AREF - * VCC 10| |31 GND - * GND 11| |30 AVCC - * XTAL2 12| |29 PC7 (D 23) - * XTAL1 13| |28 PC6 (D 22) - * RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI - * TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO - * INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS - * INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK - * PWM (D 12) PD4 18| |23 PC1 (D 17) SDA - * PWM (D 13) PD5 19| |22 PC0 (D 16) SCL - * PWM (D 14) PD6 20| |21 PD7 (D 15) PWM - * +--------+ - * - */ - -#ifndef __AVR_ATmega644__ - #error "Oops! Make sure you have 'SanguinoA' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Alpha OMCA" - -#define X_STEP_PIN 21 -#define X_DIR_PIN 20 -#define X_ENABLE_PIN 24 -#define X_STOP_PIN 0 - -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_ENABLE_PIN 24 -#define Y_STOP_PIN 1 - -#define Z_STEP_PIN 26 -#define Z_DIR_PIN 25 -#define Z_ENABLE_PIN 24 -#define Z_STOP_PIN 2 - -#define E0_STEP_PIN 28 -#define E0_DIR_PIN 27 -#define E0_ENABLE_PIN 24 - -#define E1_STEP_PIN -1 // 19 -#define E1_DIR_PIN -1 // 18 -#define E1_ENABLE_PIN 24 - -#define E2_STEP_PIN -1 // 17 -#define E2_DIR_PIN -1 // 16 -#define E2_ENABLE_PIN 24 - -#define SDSS 11 -#define FAN_PIN 3 - -#define HEATER_0_PIN 4 -#define TEMP_0_PIN 0 //D27 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! - -/* Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31) */ diff --git a/lib/Marlin/pins_PRINTRBOARD.h b/lib/Marlin/pins_PRINTRBOARD.h deleted file mode 100644 index fb1874b..0000000 --- a/lib/Marlin/pins_PRINTRBOARD.h +++ /dev/null @@ -1,136 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Printrboard pin assignments (AT90USB1286) - * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! - * http://www.pjrc.com/teensy/teensyduino.html - * See http://reprap.org/wiki/Printrboard for more info - */ - -#ifndef __AVR_AT90USB1286__ - #error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu." -#endif - -#if ENABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS) // use Teensyduino Teensy++2.0 pin assignments instead of Marlin traditional. - #error "These Printrboard assignments depend on traditional Marlin assignments, not AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h" -#endif - -#define BOARD_NAME "Printrboard" -#define LARGE_FLASH true - -// Disable JTAG pins so they can be used for the Extrudrboard -#define DISABLE_JTAG true - -#define X_STEP_PIN 0 -#define X_DIR_PIN 1 -#define X_ENABLE_PIN 39 - -#define Y_STEP_PIN 2 -#define Y_DIR_PIN 3 -#define Y_ENABLE_PIN 38 - -#define Z_STEP_PIN 4 -#define Z_DIR_PIN 5 -#define Z_ENABLE_PIN 23 - -#define E0_STEP_PIN 6 -#define E0_DIR_PIN 7 -#define E0_ENABLE_PIN 19 - -#define HEATER_0_PIN 21 // Extruder -#define HEATER_1_PIN 46 -#define HEATER_2_PIN 47 -#define HEATER_BED_PIN 20 - -// If soft or fast PWM is off then use Teensyduino pin numbering, Marlin -// fastio pin numbering otherwise -#if ENABLED(FAN_SOFT_PWM) || ENABLED(FAST_PWM_FAN) - #define FAN_PIN 22 -#else - #define FAN_PIN 16 -#endif - -#define X_STOP_PIN 35 -#if ENABLED(SDSUPPORT) - #define Y_STOP_PIN 37 // Move Ystop to Estop socket -#else - #define Y_STOP_PIN 8 // Ystop in Ystop socket -#endif -#define Z_STOP_PIN 36 -#define TEMP_0_PIN 1 // Extruder / Analog pin numbering -#define TEMP_BED_PIN 0 // Bed / Analog pin numbering - -#define FILWIDTH_PIN 2 // ANALOG NUMBERING - -////LCD Pin Setup//// - -#define SDSS 26 - -#if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) - //we have no buzzer installed - #define BEEPER_PIN -1 - - //LCD Pins - #if ENABLED(LCD_I2C_PANELOLU2) - #define BTN_EN1 27 //RX1 - fastio.h pin mapping 27 - #define BTN_EN2 26 //TX1 - fastio.h pin mapping 26 - #define BTN_ENC 43 //A3 - fastio.h pin mapping 43 - #define SDSS 40 //use SD card on Panelolu2 (Teensyduino pin mapping) - #else - #define BTN_EN1 16 - #define BTN_EN2 17 - #define BTN_ENC 18//the click - #endif // LCD_I2C_PANELOLU2 - - //not connected to a pin - #define SD_DETECT_PIN -1 - - #define LCD_PINS_RS 9 - #define LCD_PINS_ENABLE 8 - #define LCD_PINS_D4 7 - #define LCD_PINS_D5 6 - #define LCD_PINS_D6 5 - #define LCD_PINS_D7 4 - -#endif // ULTRA_LCD && NEWPANEL - -#if ENABLED(VIKI2) || ENABLED(miniVIKI) - //FastIO - #define BEEPER_PIN 32 - // Pins for DOGM SPI LCD Support - #define DOGLCD_A0 42 //Non-FastIO - #define DOGLCD_CS 43 //Non-FastIO - #define LCD_SCREEN_ROT_180 - - //The encoder and click button (FastIO Pins) - #define BTN_EN1 26 - #define BTN_EN2 27 - #define BTN_ENC 47 - - #define SDSS 45 - #define SD_DETECT_PIN -1 // FastIO (Manual says 72 I'm not certain cause I can't test) - #if ENABLED(TEMP_STAT_LEDS) - #define STAT_LED_RED 12 //Non-FastIO - #define STAT_LED_BLUE 10 //Non-FastIO - #endif -#endif diff --git a/lib/Marlin/pins_PRINTRBOARD_REVF.h b/lib/Marlin/pins_PRINTRBOARD_REVF.h deleted file mode 100644 index 61b23fb..0000000 --- a/lib/Marlin/pins_PRINTRBOARD_REVF.h +++ /dev/null @@ -1,137 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Printrboard pin assignments (AT90USB1286) - * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! - * http://www.pjrc.com/teensy/teensyduino.html - * See http://reprap.org/wiki/Printrboard for more info - */ - -#ifndef __AVR_AT90USB1286__ - #error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu." -#endif - -#if ENABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS) // use Teensyduino Teensy++2.0 pin assignments instead of Marlin traditional. - #error "These Printrboard assignments depend on traditional Marlin assignments, not AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h" -#endif - -#define BOARD_NAME "Printrboard Rev F" -#define LARGE_FLASH true - -#define X_STEP_PIN 0 -#define X_DIR_PIN 1 -#define X_ENABLE_PIN 39 - -#define Y_STEP_PIN 2 -#define Y_DIR_PIN 3 -#define Y_ENABLE_PIN 38 - -#define Z_STEP_PIN 4 -#define Z_DIR_PIN 5 -#define Z_ENABLE_PIN 23 - -#define E0_STEP_PIN 6 -#define E0_DIR_PIN 7 -#define E0_ENABLE_PIN 19 - -#define HEATER_0_PIN 21 // Extruder -#define HEATER_1_PIN 46 -#define HEATER_2_PIN 47 -#define HEATER_BED_PIN 20 - -// If soft or fast PWM is off then use Teensyduino pin numbering, Marlin -// fastio pin numbering otherwise -#if ENABLED(FAN_SOFT_PWM) || ENABLED(FAST_PWM_FAN) - #define FAN_PIN 22 -#else - #define FAN_PIN 16 -#endif - -#define X_STOP_PIN 35 -#define Y_STOP_PIN 12 -#define Z_STOP_PIN 36 - -#define TEMP_0_PIN 1 // Extruder / Analog pin numbering -#define TEMP_BED_PIN 0 // Bed / Analog pin numbering - -#define FILWIDTH_PIN 2 // ANALOG NUMBERING - -////LCD Pin Setup//// - -#define SDSS 20 // Teensylu pin mapping - -// uncomment to enable an I2C based DAC like on the Printrboard REVF -#define DAC_STEPPER_CURRENT -// Number of channels available for DAC, For Printrboar REVF there are 4 -#define DAC_STEPPER_ORDER {3,2,1,0} - -#define DAC_STEPPER_SENSE 0.11 -#define DAC_STEPPER_ADDRESS 0 -#define DAC_STEPPER_MAX 3520 -#define DAC_STEPPER_VREF 1 //internal Vref, gain 1x = 2.048V -#define DAC_STEPPER_GAIN 0 -#define DAC_OR_ADDRESS 0x00 - -#if ENABLED(ULTRA_LCD) - #define BEEPER_PIN -1 - - #define LCD_PINS_RS 9 - #define LCD_PINS_ENABLE 8 - #define LCD_PINS_D4 7 - #define LCD_PINS_D5 6 - #define LCD_PINS_D6 5 - #define LCD_PINS_D7 4 - - #define BTN_EN1 16 - #define BTN_EN2 17 - #define BTN_ENC 18//the click - - #define SD_DETECT_PIN -1 - - //encoder rotation values - #define encrot0 0 - #define encrot1 2 - #define encrot2 3 - #define encrot3 1 -#endif - -#if ENABLED(VIKI2) || ENABLED(miniVIKI) - #define BEEPER_PIN 32 //FastIO - // Pins for DOGM SPI LCD Support - #define DOGLCD_A0 42 //Non-FastIO - #define DOGLCD_CS 43 //Non-FastIO - #define LCD_SCREEN_ROT_180 - - //The encoder and click button (FastIO Pins) - #define BTN_EN1 26 - #define BTN_EN2 27 - #define BTN_ENC 47 - - #define SDSS 45 - #define SD_DETECT_PIN -1 // FastIO (Manual says 72 I'm not certain cause I can't test) - - #if ENABLED(TEMP_STAT_LEDS) - #define STAT_LED_RED 12 //Non-FastIO - #define STAT_LED_BLUE 10 //Non-FastIO - #endif -#endif diff --git a/lib/Marlin/pins_RAMBO.h b/lib/Marlin/pins_RAMBO.h deleted file mode 100644 index 278774c..0000000 --- a/lib/Marlin/pins_RAMBO.h +++ /dev/null @@ -1,181 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Rambo pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega 2560' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Rambo" - -#define LARGE_FLASH true - -// Servo support -#define SERVO0_PIN 22 // Motor header MX1 -#define SERVO1_PIN 23 // Motor header MX2 -#define SERVO2_PIN 24 // Motor header MX3 -#define SERVO3_PIN 5 // PWM header pin 5 - -#if ENABLED(Z_PROBE_SLED) - #define SLED_PIN -1 -#endif - -#define X_MIN_PIN 12 -#define X_MAX_PIN 24 -#define Y_MIN_PIN 11 -#define Y_MAX_PIN 23 -#define Z_MIN_PIN 10 -#define Z_MAX_PIN 30 -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN 10 -#endif - -#define X_STEP_PIN 37 -#define X_DIR_PIN 48 -#define X_ENABLE_PIN 29 -#define X_MS1_PIN 40 -#define X_MS2_PIN 41 - -#define Y_STEP_PIN 36 -#define Y_DIR_PIN 49 -#define Y_ENABLE_PIN 28 -#define Y_MS1_PIN 69 -#define Y_MS2_PIN 39 - -#define Z_STEP_PIN 35 -#define Z_DIR_PIN 47 -#define Z_ENABLE_PIN 27 -#define Z_MS1_PIN 68 -#define Z_MS2_PIN 67 - -#define HEATER_BED_PIN 3 -#define TEMP_BED_PIN 2 - -#define HEATER_0_PIN 9 -#define TEMP_0_PIN 0 - -#define HEATER_1_PIN 7 -#define TEMP_1_PIN 1 - -#if ENABLED(BARICUDA) - #define HEATER_2_PIN 6 -#endif - -#define E0_STEP_PIN 34 -#define E0_DIR_PIN 43 -#define E0_ENABLE_PIN 26 -#define E0_MS1_PIN 65 -#define E0_MS2_PIN 66 - -#define E1_STEP_PIN 33 -#define E1_DIR_PIN 42 -#define E1_ENABLE_PIN 25 -#define E1_MS1_PIN 63 -#define E1_MS2_PIN 64 - -#define DIGIPOTSS_PIN 38 -#define DIGIPOT_CHANNELS {4,5,3,0,1} // X Y Z E0 E1 digipot channels to stepper driver mapping - -#define SDSS 53 -#define LED_PIN 13 -#define FAN_PIN 8 - -#define FILWIDTH_PIN 3 // ANALOG NUMBERING - -/********************************************************** - Fan Pins - Fan_0 8 - Fan_1 6 - Fan_2 2 -***********************************************************/ -#define PS_ON_PIN 4 - -#if ENABLED(ULTRA_LCD) - - #define KILL_PIN 80 - - #if ENABLED(NEWPANEL) - - #define LCD_PINS_RS 70 - #define LCD_PINS_ENABLE 71 - #define LCD_PINS_D4 72 - #define LCD_PINS_D5 73 - #define LCD_PINS_D6 74 - #define LCD_PINS_D7 75 - - #if ENABLED(VIKI2) || ENABLED(miniVIKI) - #define BEEPER_PIN 44 - - #define DOGLCD_A0 70 - #define DOGLCD_CS 71 - #define LCD_SCREEN_ROT_180 - - #define BTN_EN1 85 - #define BTN_EN2 84 - #define BTN_ENC 83 - - #define SD_DETECT_PIN -1 // Pin 72 if using easy adapter board - - #if ENABLED(TEMP_STAT_LEDS) - #define STAT_LED_RED 22 - #define STAT_LED_BLUE 32 - #endif - - #else - - #define BEEPER_PIN 79 // AUX-4 - - // AUX-2 - #define BTN_EN1 76 - #define BTN_EN2 77 - #define BTN_ENC 78 - - #define SD_DETECT_PIN 81 - - #endif // VIKI2/miniVIKI - - #else //!NEWPANEL - old style panel with shift register - - // No Beeper added - #define BEEPER_PIN 33 - - //buttons are attached to a shift register - // Not wired yet - //#define SHIFT_CLK 38 - //#define SHIFT_LD 42 - //#define SHIFT_OUT 40 - //#define SHIFT_EN 17 - - #define LCD_PINS_RS 75 - #define LCD_PINS_ENABLE 17 - #define LCD_PINS_D4 23 - #define LCD_PINS_D5 25 - #define LCD_PINS_D6 27 - #define LCD_PINS_D7 29 - - #endif // !NEWPANEL - -#endif // ULTRA_LCD - diff --git a/lib/Marlin/pins_RAMPS.h b/lib/Marlin/pins_RAMPS.h deleted file mode 100644 index 5f2e0d1..0000000 --- a/lib/Marlin/pins_RAMPS.h +++ /dev/null @@ -1,344 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino Mega with RAMPS v1.4 (or v1.3) pin assignments - * - * Applies to the following boards: - * - * RAMPS_14_EFB (Hotend, Fan, Bed) - * RAMPS_14_EEB (Hotend0, Hotend1, Bed) - * RAMPS_14_EFF (Hotend, Fan0, Fan1) - * RAMPS_14_EEF (Hotend0, Hotend1, Fan) - * RAMPS_14_SF (Spindle, Controller Fan) - * - * RAMPS_13_EFB (Hotend, Fan, Bed) - * RAMPS_13_EEB (Hotend0, Hotend1, Bed) - * RAMPS_13_EFF (Hotend, Fan0, Fan1) - * RAMPS_13_EEF (Hotend0, Hotend1, Fan) - * RAMPS_13_SF (Spindle, Controller Fan) - * - * Other pins_MYBOARD.h files may override these defaults - * - * Differences between - * RAMPS_13 | RAMPS_14 - * 7 | 11 - */ - -#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#ifndef BOARD_NAME - #define BOARD_NAME "RAMPS 1.4" -#endif - -#define LARGE_FLASH true - -#ifdef IS_RAMPS_13 - #define SERVO0_PIN 7 // RAMPS_13 // Will conflict with BTN_EN2 on LCD_I2C_VIKI -#else - #define SERVO0_PIN 11 -#endif -#define SERVO1_PIN 6 -#define SERVO2_PIN 5 -#define SERVO3_PIN 4 - -#define X_MIN_PIN 3 -#ifndef X_MAX_PIN - #define X_MAX_PIN 2 -#endif -#define Y_MIN_PIN 14 -#define Y_MAX_PIN 15 -#define Z_MIN_PIN 18 -#define Z_MAX_PIN 19 -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN 32 -#endif - -#define X_STEP_PIN 54 -#define X_DIR_PIN 55 -#define X_ENABLE_PIN 38 - -#define Y_STEP_PIN 60 -#define Y_DIR_PIN 61 -#define Y_ENABLE_PIN 56 - -#define Z_STEP_PIN 46 -#define Z_DIR_PIN 48 -#define Z_ENABLE_PIN 62 - -#define E0_STEP_PIN 26 -#define E0_DIR_PIN 28 -#define E0_ENABLE_PIN 24 - -#define E1_STEP_PIN 36 -#define E1_DIR_PIN 34 -#define E1_ENABLE_PIN 30 - -#define SDSS 53 -#define LED_PIN 13 - -// Use the RAMPS 1.4 Analog input 5 on the AUX2 connector -#define FILWIDTH_PIN 5 // ANALOG NUMBERING - -// define digital pin 4 for the filament runout sensor. Use the RAMPS 1.4 digital input 4 on the servos connector -#define FIL_RUNOUT_PIN 4 - -#define PS_ON_PIN 12 -#define TEMP_0_PIN 13 // ANALOG NUMBERING -#define TEMP_1_PIN 15 // ANALOG NUMBERING -#define TEMP_BED_PIN 14 // ANALOG NUMBERING - -#if ENABLED(Z_PROBE_SLED) - #define SLED_PIN -1 -#endif - -// Augmentation for auto-assigning RAMPS plugs -#if DISABLED(IS_RAMPS_EEB) && DISABLED(IS_RAMPS_EEF) && DISABLED(IS_RAMPS_EFB) && DISABLED(IS_RAMPS_EFF) && DISABLED(IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D) - #if HOTENDS > 1 - #if TEMP_SENSOR_BED - #define IS_RAMPS_EEB - #else - #define IS_RAMPS_EEF - #endif - #elif TEMP_SENSOR_BED - #define IS_RAMPS_EFB - #else - #define IS_RAMPS_EFF - #endif -#endif - -/** - * Hi Voltage PWM Pin Assignments - */ - -#ifndef MOSFET_D_PIN - #define MOSFET_D_PIN -1 -#endif -#ifndef RAMPS_D8_PIN - #define RAMPS_D8_PIN 8 -#endif -#ifndef RAMPS_D9_PIN - #define RAMPS_D9_PIN 9 -#endif -#ifndef RAMPS_D10_PIN - #define RAMPS_D10_PIN 10 -#endif - -#define HEATER_0_PIN RAMPS_D10_PIN - -#if ENABLED(IS_RAMPS_EFB) // Hotend, Fan, Bed - #define FAN_PIN RAMPS_D9_PIN - #define HEATER_BED_PIN RAMPS_D8_PIN -#elif ENABLED(IS_RAMPS_EEF) // Hotend, Hotend, Fan - #define HEATER_1_PIN RAMPS_D9_PIN - #define FAN_PIN RAMPS_D8_PIN -#elif ENABLED(IS_RAMPS_EEB) // Hotend, Hotend, Bed - #define HEATER_1_PIN RAMPS_D9_PIN - #define HEATER_BED_PIN RAMPS_D8_PIN -#elif ENABLED(IS_RAMPS_EFF) // Hotend, Fan, Fan - #define FAN_PIN RAMPS_D9_PIN - #define FAN1_PIN RAMPS_D8_PIN - #define CONTROLLERFAN_PIN -1 -#elif ENABLED(IS_RAMPS_SF) // Spindle, Fan - #define FAN_PIN RAMPS_D8_PIN -#else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE") - #define FAN_PIN RAMPS_D9_PIN - #define HEATER_BED_PIN RAMPS_D8_PIN - #if HOTENDS == 1 - #define FAN1_PIN MOSFET_D_PIN - #else - #define HEATER_1_PIN MOSFET_D_PIN - #endif -#endif - -#ifndef FAN_PIN - #define FAN_PIN 4 // IO pin. Buffer needed -#endif - -/** - * LCD Controller Pin Assignments - */ - -#if ENABLED(ULTRA_LCD) - - #if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) - #define LCD_PINS_RS 49 //CS chip select /SS chip slave select - #define LCD_PINS_ENABLE 51 //SID (MOSI) - #define LCD_PINS_D4 52 //SCK (CLK) clock - #elif ENABLED(NEWPANEL) && ENABLED(PANEL_ONE) - #define LCD_PINS_RS 40 - #define LCD_PINS_ENABLE 42 - #define LCD_PINS_D4 65 - #define LCD_PINS_D5 66 - #define LCD_PINS_D6 44 - #define LCD_PINS_D7 64 - #else - #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 17 - #define LCD_PINS_D4 23 - #define LCD_PINS_D5 25 - #define LCD_PINS_D6 27 - #define LCD_PINS_D7 29 - #if DISABLED(NEWPANEL) - #define BEEPER_PIN 33 - // Buttons are attached to a shift register - // Not wired yet - //#define SHIFT_CLK 38 - //#define SHIFT_LD 42 - //#define SHIFT_OUT 40 - //#define SHIFT_EN 17 - #endif - #endif - - #if ENABLED(NEWPANEL) - - #if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) - #define BEEPER_PIN 37 - - #define BTN_EN1 31 - #define BTN_EN2 33 - #define BTN_ENC 35 - - #define SD_DETECT_PIN 49 - #define KILL_PIN 41 - - #if ENABLED(BQ_LCD_SMART_CONTROLLER) - #define LCD_PIN_BL 39 - #endif - - #elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD) - #define BTN_EN1 64 - #define BTN_EN2 59 - #define BTN_ENC 63 - #define SD_DETECT_PIN 42 - #elif ENABLED(LCD_I2C_PANELOLU2) - #define BTN_EN1 47 // reverse if the encoder turns the wrong way. - #define BTN_EN2 43 - #define BTN_ENC 32 - #define LCD_SDSS 53 - #define SD_DETECT_PIN -1 - #define KILL_PIN 41 - #elif ENABLED(LCD_I2C_VIKI) - #define BTN_EN1 22 // reverse if the encoder turns the wrong way. - #define BTN_EN2 7 // http://files.panucatt.com/datasheets/viki_wiring_diagram.pdf - // tells about 40/42. - // 22/7 are unused on RAMPS_14. 22 is unused and 7 the SERVO0_PIN on RAMPS_13. - #define BTN_ENC -1 - #define LCD_SDSS 53 - #define SD_DETECT_PIN 49 - #elif ENABLED(VIKI2) || ENABLED(miniVIKI) - #define BEEPER_PIN 33 - - // Pins for DOGM SPI LCD Support - #define DOGLCD_A0 44 - #define DOGLCD_CS 45 - #define LCD_SCREEN_ROT_180 - - #define BTN_EN1 22 - #define BTN_EN2 7 - #define BTN_ENC 39 - - #define SDSS 53 - #define SD_DETECT_PIN -1 // Pin 49 for display sd interface, 72 for easy adapter board - - #define KILL_PIN 31 - - #if ENABLED(TEMP_STAT_LEDS) - #define STAT_LED_RED 32 - #define STAT_LED_BLUE 35 - #endif - #elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) - #define BTN_EN1 35 // reverse if the encoder turns the wrong way. - #define BTN_EN2 37 - #define BTN_ENC 31 - #define SD_DETECT_PIN 49 - #define LCD_SDSS 53 - #define KILL_PIN 41 - #define BEEPER_PIN 23 - #define DOGLCD_CS 29 - #define DOGLCD_A0 27 - #define LCD_PIN_BL 33 - #elif ENABLED(MINIPANEL) - #define BEEPER_PIN 42 - // Pins for DOGM SPI LCD Support - #define DOGLCD_A0 44 - #define DOGLCD_CS 66 - #define LCD_PIN_BL 65 // backlight LED on A11/D65 - #define SDSS 53 - - #define KILL_PIN 64 - // GLCD features - //#define LCD_CONTRAST 190 - // Uncomment screen orientation - //#define LCD_SCREEN_ROT_90 - //#define LCD_SCREEN_ROT_180 - //#define LCD_SCREEN_ROT_270 - //The encoder and click button - #define BTN_EN1 40 - #define BTN_EN2 63 - #define BTN_ENC 59 - //not connected to a pin - #define SD_DETECT_PIN 49 - - #else - - // Beeper on AUX-4 - #define BEEPER_PIN 33 - - // buttons are directly attached using AUX-2 - #if ENABLED(REPRAPWORLD_KEYPAD) - #define BTN_EN1 64 // encoder - #define BTN_EN2 59 // encoder - #define BTN_ENC 63 // enter button - #define SHIFT_OUT 40 // shift register - #define SHIFT_CLK 44 // shift register - #define SHIFT_LD 42 // shift register - #elif ENABLED(PANEL_ONE) - #define BTN_EN1 59 // AUX2 PIN 3 - #define BTN_EN2 63 // AUX2 PIN 4 - #define BTN_ENC 49 // AUX3 PIN 7 - #else - #define BTN_EN1 37 - #define BTN_EN2 35 - #define BTN_ENC 31 // the click - #endif - - #if ENABLED(G3D_PANEL) - #define SD_DETECT_PIN 49 - #define KILL_PIN 41 - #else - // #define SD_DETECT_PIN -1 // Ramps doesn't use this - #endif - - #endif - #endif // NEWPANEL - -#endif // ULTRA_LCD - -// SPI for Max6675 or Max31855 Thermocouple -#if DISABLED(SDSUPPORT) - #define MAX6675_SS 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card -#else - #define MAX6675_SS 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present -#endif diff --git a/lib/Marlin/pins_RAMPS_13.h b/lib/Marlin/pins_RAMPS_13.h deleted file mode 100644 index effce90..0000000 --- a/lib/Marlin/pins_RAMPS_13.h +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino Mega with RAMPS v1.3 pin assignments - * - * Applies to the following boards: - * - * RAMPS_13_EFB (Extruder, Fan, Bed) - * RAMPS_13_EEB (Extruder, Extruder, Bed) - * RAMPS_13_EFF (Extruder, Fan, Fan) - * RAMPS_13_EEF (Extruder, Extruder, Fan) - * RAMPS_13_SF (Spindle, Controller Fan) - * - */ - -#ifndef BOARD_NAME - #define BOARD_NAME "RAMPS 1.3" -#endif - -#define IS_RAMPS_13 -#include "pins_RAMPS.h" diff --git a/lib/Marlin/pins_RAMPS_OLD.h b/lib/Marlin/pins_RAMPS_OLD.h deleted file mode 100644 index 213bd3f..0000000 --- a/lib/Marlin/pins_RAMPS_OLD.h +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Arduino Mega with RAMPS v1.0, v1.1, v1.2 pin assignments - */ - -#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "MEGA/RAMPS <1.2" - -// Uncomment the following line for RAMPS v1.0 -//#define RAMPS_V_1_0 - -#define X_STEP_PIN 26 -#define X_DIR_PIN 28 -#define X_ENABLE_PIN 24 -#define X_MIN_PIN 3 -#define X_MAX_PIN 2 - -#define Y_STEP_PIN 38 -#define Y_DIR_PIN 40 -#define Y_ENABLE_PIN 36 -#define Y_MIN_PIN 16 -#define Y_MAX_PIN 17 - -#define Z_STEP_PIN 44 -#define Z_DIR_PIN 46 -#define Z_ENABLE_PIN 42 -#define Z_MIN_PIN 18 -#define Z_MAX_PIN 19 - -#define E0_STEP_PIN 32 -#define E0_DIR_PIN 34 -#define E0_ENABLE_PIN 30 - -#define SDPOWER 48 -#define SDSS 53 -#define LED_PIN 13 - -#if ENABLED(RAMPS_V_1_0) // RAMPS_V_1_0 - #define HEATER_0_PIN 12 // RAMPS 1.0 - #define HEATER_BED_PIN -1 // RAMPS 1.0 - #define FAN_PIN 11 // RAMPS 1.0 -#else // RAMPS_V_1_1 or RAMPS_V_1_2 - #define HEATER_0_PIN 10 // RAMPS 1.1 - #define HEATER_BED_PIN 8 // RAMPS 1.1 - #define FAN_PIN 9 // RAMPS 1.1 -#endif - -#define TEMP_0_PIN 2 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! -#define TEMP_BED_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! - -// SPI for Max6675 or Max31855 Thermocouple -#if DISABLED(SDSUPPORT) - #define MAX6675_SS 66// Do not use pin 53 if there is even the remote possibility of using Display/SD card -#else - #define MAX6675_SS 66// Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present -#endif diff --git a/lib/Marlin/pins_RIGIDBOARD.h b/lib/Marlin/pins_RIGIDBOARD.h deleted file mode 100644 index a60e492..0000000 --- a/lib/Marlin/pins_RIGIDBOARD.h +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * RIGIDBOARD Arduino Mega with RAMPS v1.4 pin assignments - */ - -#define BOARD_NAME "RigidBoard" - -#define RAMPS_D10_PIN 9 // EXTRUDER 1 -#define MOSFET_D_PIN 12 // EXTRUDER 2 or FAN -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN 19 // Z-MAX pin J14 End Stops -#endif - -#include "pins_RAMPS.h" - -#undef TEMP_0_PIN -#undef TEMP_1_PIN -#define TEMP_0_PIN 14 // ANALOG NUMBERING -#define TEMP_1_PIN 13 // ANALOG NUMBERING - -// LCD Panel options for the RigidBoard - -#if ENABLED(RIGIDBOT_PANEL) - - #undef BEEPER_PIN - #define BEEPER_PIN -1 - - // Direction buttons - #define BTN_UP 37 - #define BTN_DWN 35 - #define BTN_LFT 33 - #define BTN_RT 32 - - // 'R' button - #undef BTN_ENC - #define BTN_ENC 31 - - // Disable encoder - #undef BTN_EN1 - #define BTN_EN1 -1 - #undef BTN_EN2 - #define BTN_EN2 -1 - - #undef SD_DETECT_PIN - #define SD_DETECT_PIN 22 - -#elif ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) - - #undef BEEPER_PIN - #define BEEPER_PIN -1 - - #undef SD_DETECT_PIN - #define SD_DETECT_PIN 22 - - #undef KILL_PIN - #define KILL_PIN 32 - -#endif - -// SPI for Max6675 or Max31855 Thermocouple -#undef MAX6675_SS -#if ENABLED(SDSUPPORT) - #define MAX6675_SS 49 // Don't use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present -#else - #define MAX6675_SS 53 // Don't use pin 53 if there is even the remote possibility of using Display/SD card -#endif - -// RigidBot swaps E0 / E1 plugs vs RAMPS 1.3 - -#undef E0_STEP_PIN -#undef E0_DIR_PIN -#undef E0_ENABLE_PIN -#define E0_STEP_PIN 36 -#define E0_DIR_PIN 34 -#define E0_ENABLE_PIN 30 - -#undef E1_STEP_PIN -#undef E1_DIR_PIN -#undef E1_ENABLE_PIN -#define E1_STEP_PIN 26 -#define E1_DIR_PIN 28 -#define E1_ENABLE_PIN 24 - -#undef FAN_PIN -#define FAN_PIN 8 // Same as RAMPS_13_EEF - -#undef PS_ON_PIN -#define PS_ON_PIN -1 - -#undef HEATER_BED_PIN -#define HEATER_BED_PIN 10 - -#undef TEMP_BED_PIN -#define TEMP_BED_PIN 15 // ANALOG NUMBERING - -#define STEPPER_RESET_PIN 41 // Stepper drivers have a reset on RigidBot diff --git a/lib/Marlin/pins_RIGIDBOARD_V2.h b/lib/Marlin/pins_RIGIDBOARD_V2.h deleted file mode 100644 index 7aad12e..0000000 --- a/lib/Marlin/pins_RIGIDBOARD_V2.h +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * RIGIDBOARD V2 Arduino Mega with RAMPS v1.4 pin assignments - */ - -#include "pins_RIGIDBOARD.h" - -#undef BOARD_NAME -#define BOARD_NAME "RigidBoard V2" - -// I2C based DAC like on the Printrboard REVF -#define DAC_STEPPER_CURRENT -// Channels available for DAC, For Rigidboard there are 4 -#define DAC_STEPPER_ORDER {0,1,2,3} - -#define DAC_STEPPER_SENSE 0.11 -#define DAC_STEPPER_ADDRESS 0 -#define DAC_STEPPER_MAX 5000 -#define DAC_STEPPER_VREF 1 //internal Vref, gain 1x = 2.048V -#define DAC_STEPPER_GAIN 0 -#define DAC_DISABLE_PIN 42 // set low to enable DAC -#define DAC_OR_ADDRESS 0x01 diff --git a/lib/Marlin/pins_RUMBA.h b/lib/Marlin/pins_RUMBA.h deleted file mode 100644 index ec5e023..0000000 --- a/lib/Marlin/pins_RUMBA.h +++ /dev/null @@ -1,126 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * RUMBA pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#if E_STEPPERS > 3 || HOTENDS > 3 - #error "RUMBA supports up to 3 hotends / E-steppers. Comment this line to keep going." -#endif - -#define DEFAULT_MACHINE_NAME "Rumba" -#define BOARD_NAME "Rumba" - -#define X_STEP_PIN 17 -#define X_DIR_PIN 16 -#define X_ENABLE_PIN 48 -#define X_MIN_PIN 37 -#define X_MAX_PIN 36 - -#define Y_STEP_PIN 54 -#define Y_DIR_PIN 47 -#define Y_ENABLE_PIN 55 -#define Y_MIN_PIN 35 -#define Y_MAX_PIN 34 - -#define Z_STEP_PIN 57 -#define Z_DIR_PIN 56 -#define Z_ENABLE_PIN 62 -#define Z_MIN_PIN 33 -#define Z_MAX_PIN 32 - -#ifndef Z_MIN_PROBE_PIN - #define Z_MIN_PROBE_PIN 33 -#endif - -#define E0_STEP_PIN 23 -#define E0_DIR_PIN 22 -#define E0_ENABLE_PIN 24 - -#define E1_STEP_PIN 26 -#define E1_DIR_PIN 25 -#define E1_ENABLE_PIN 27 - -#define E2_STEP_PIN 29 -#define E2_DIR_PIN 28 -#define E2_ENABLE_PIN 39 - -#define LED_PIN 13 - -#define FAN_PIN 7 -#define FAN1_PIN 8 - -#define PS_ON_PIN 45 -#define KILL_PIN 46 - -#define HEATER_0_PIN 2 // EXTRUDER 1 -#define HEATER_1_PIN 3 // EXTRUDER 2 -#define HEATER_2_PIN 6 // EXTRUDER 3 - -#if TEMP_SENSOR_0 == -1 - #define TEMP_0_PIN 6 // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used -#else - #define TEMP_0_PIN 15 // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used -#endif - -#if TEMP_SENSOR_1 == -1 - #define TEMP_1_PIN 5 // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used -#else - #define TEMP_1_PIN 14 // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used -#endif - -#if TEMP_SENSOR_2 == -1 - #define TEMP_2_PIN 7 // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple -#else - #define TEMP_2_PIN 13 // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used -#endif - -//optional for extruder 4 or chamber: #define TEMP_X_PIN 12 // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used -//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN 8 // EXTRUDER 4 - -#define HEATER_BED_PIN 9 // BED -#if TEMP_SENSOR_BED == -1 - #define TEMP_BED_PIN 7 // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple -#else - #define TEMP_BED_PIN 11 // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used -#endif - -#define SDSS 53 -#define SD_DETECT_PIN 49 -#define BEEPER_PIN 44 -#define LCD_PINS_RS 19 -#define LCD_PINS_ENABLE 42 -#define LCD_PINS_D4 18 -#define LCD_PINS_D5 38 -#define LCD_PINS_D6 41 -#define LCD_PINS_D7 40 -#define BTN_EN1 11 -#define BTN_EN2 12 -#define BTN_ENC 43 - -#define SERVO0_PIN 5 - diff --git a/lib/Marlin/pins_SAINSMART_2IN1.h b/lib/Marlin/pins_SAINSMART_2IN1.h deleted file mode 100644 index 8d272ad..0000000 --- a/lib/Marlin/pins_SAINSMART_2IN1.h +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Sainsmart 2-in-1 pin assignments - */ - -#if HOTENDS > 2 - #error "Sainsmart 2-in-1 supports up to 2 hotends. Comment this line to keep going." -#endif - -#define BOARD_NAME "Sainsmart" - -#define RAMPS_D10_PIN 9 // E -#define RAMPS_D9_PIN 7 // F PART FAN in front of board next to Extruder heat - // RAMPS_D8_PIN 8 // B -#define MOSFET_D_PIN 10 // F / E - -#include "pins_RAMPS.h" diff --git a/lib/Marlin/pins_SANGUINOLOLU_11.h b/lib/Marlin/pins_SANGUINOLOLU_11.h deleted file mode 100644 index a6220c5..0000000 --- a/lib/Marlin/pins_SANGUINOLOLU_11.h +++ /dev/null @@ -1,191 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Sanguinololu board pin assignments - */ - -#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega1284P__) - #error "Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu." -#endif - -#ifndef BOARD_NAME - #define BOARD_NAME "Sanguinololu <1.2" -#endif - -#define IS_MELZI (MB(MELZI) || MB(MELZI_MAKR3D)) - -#define X_STEP_PIN 15 -#define X_DIR_PIN 21 -#define X_STOP_PIN 18 - -#define Y_STEP_PIN 22 -#define Y_DIR_PIN 23 -#define Y_STOP_PIN 19 - -#define Z_STEP_PIN 3 -#define Z_DIR_PIN 2 -#define Z_STOP_PIN 20 - -#define E0_STEP_PIN 1 -#define E0_DIR_PIN 0 - -#if MB(AZTEEG_X1) || MB(STB_11) || IS_MELZI - #define FAN_PIN 4 // Works for Panelolu2 too -#endif - -#if IS_MELZI - #define LED_PIN 27 // On some broken versions of the Sanguino libraries the pin definitions are wrong, so LED_PIN needs to be 28. But you should upgrade your Sanguino libraries! See #368. -#elif MB(STB_11) - #define LCD_PIN_BL 17 // LCD backlight LED -#endif - -#if ENABLED(Z_PROBE_SLED) - #define SLED_PIN -1 -#endif - -#define HEATER_0_PIN 13 // (extruder) - -#if ENABLED(SANGUINOLOLU_V_1_2) - - #define HEATER_BED_PIN 12 // (bed) - #define X_ENABLE_PIN 14 - #define Y_ENABLE_PIN 14 - #define Z_ENABLE_PIN 26 - #define E0_ENABLE_PIN 14 - - #if ENABLED(LCD_I2C_PANELOLU2) - #define FAN_PIN 4 // Uses Transistor1 (PWM) on Panelolu2's Sanguino Adapter Board to drive the fan - #endif - -#else - - #define HEATER_BED_PIN 14 // (bed) - #define X_ENABLE_PIN -1 - #define Y_ENABLE_PIN -1 - #define Z_ENABLE_PIN -1 - #define E0_ENABLE_PIN -1 - -#endif - -#define TEMP_0_PIN 7 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder) -#define TEMP_BED_PIN 6 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) -#define SDSS 31 - -/** - * On some broken versions of the Sanguino libraries the pin definitions are wrong, - * which then needs SDSS as pin 24. But you should upgrade your Sanguino libraries! See #368. - */ -//#define SDSS 24 - -#if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) - - // No buzzer installed - #define BEEPER_PIN -1 - - // LCD Pins - #if ENABLED(DOGLCD) - - #if ENABLED(U8GLIB_ST7920) //SPI GLCD 12864 ST7920 ( like [www.digole.com] ) For Melzi V2.0 - - #if IS_MELZI // Melzi board - #define LCD_PINS_RS 30 //CS chip select /SS chip slave select - #define LCD_PINS_ENABLE 29 //SID (MOSI) - #define LCD_PINS_D4 17 //SCK (CLK) clock - // Pin 27 is taken by LED_PIN, but Melzi LED does nothing with - // Marlin so this can be used for BEEPER_PIN. You can use this pin - // with M42 instead of BEEPER_PIN. - #define BEEPER_PIN 27 - #else // Sanguinololu 1.3 - #define LCD_PINS_RS 4 - #define LCD_PINS_ENABLE 17 - #define LCD_PINS_D4 30 - #define LCD_PINS_D5 29 - #define LCD_PINS_D6 28 - #define LCD_PINS_D7 27 - #endif - - #else // DOGM SPI LCD Support - - #define DOGLCD_A0 30 - #define DOGLCD_CS 29 - #define LCD_CONTRAST 1 - - #endif - - // Uncomment screen orientation - #define LCD_SCREEN_ROT_0 - //#define LCD_SCREEN_ROT_90 - //#define LCD_SCREEN_ROT_180 - //#define LCD_SCREEN_ROT_270 - - #else // !DOGLCD - Standard Hitachi LCD controller - - #define LCD_PINS_RS 4 - #define LCD_PINS_ENABLE 17 - #define LCD_PINS_D4 30 - #define LCD_PINS_D5 29 - #define LCD_PINS_D6 28 - #define LCD_PINS_D7 27 - - #endif // !DOGLCD - - //The encoder and click button - #define BTN_EN1 11 - #define BTN_EN2 10 - #if ENABLED(LCD_I2C_PANELOLU2) - #if IS_MELZI - #define BTN_ENC 29 - #define LCD_SDSS 30 // Panelolu2 SD card reader rather than the Melzi - #else - #define BTN_ENC 30 - #endif - #else - #define BTN_ENC 16 - #define LCD_SDSS 28 // Smart Controller SD card reader rather than the Melzi - #endif //Panelolu2 - - #define SD_DETECT_PIN -1 - -#elif ENABLED(MAKRPANEL) - - #define BEEPER_PIN 29 - - // Pins for DOGM SPI LCD Support - #define DOGLCD_A0 30 - #define DOGLCD_CS 17 - #define LCD_PIN_BL 28 // backlight LED on PA3 - // GLCD features - #define LCD_CONTRAST 1 - // Uncomment screen orientation - #define LCD_SCREEN_ROT_0 - //#define LCD_SCREEN_ROT_90 - //#define LCD_SCREEN_ROT_180 - //#define LCD_SCREEN_ROT_270 - //The encoder and click button - #define BTN_EN1 11 - #define BTN_EN2 10 - #define BTN_ENC 16 - - #define SD_DETECT_PIN -1 - -#endif // MAKRPANEL diff --git a/lib/Marlin/pins_SANGUINOLOLU_12.h b/lib/Marlin/pins_SANGUINOLOLU_12.h deleted file mode 100644 index f214d6f..0000000 --- a/lib/Marlin/pins_SANGUINOLOLU_12.h +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Sanguinololu V1.2 pin assignments - * - * Applies to the following boards: - * - * AZTEEG_X1 - * MELZI - * MELZI_MAKR3D - * SANGUINOLOLU_12 - * STB_11 - */ - -#define BOARD_NAME "Sanguinololu 1.2" - -#if defined(__AVR_ATmega1284P__) - #define LARGE_FLASH true -#endif - -#define SANGUINOLOLU_V_1_2 -#include "pins_SANGUINOLOLU_11.h" diff --git a/lib/Marlin/pins_SAV_MKI.h b/lib/Marlin/pins_SAV_MKI.h deleted file mode 100644 index 530f63a..0000000 --- a/lib/Marlin/pins_SAV_MKI.h +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * SAV MkI pin assignments (AT90USB1286) - * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! - * http://www.pjrc.com/teensy/teensyduino.html - * RepRap Clone Wars project board. - */ - -#ifndef __AVR_AT90USB1286__ - #error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu." -#endif - -#define DEFAULT_MACHINE_NAME "SAV MkI" -#define DEFAULT_SOURCE_CODE_URL "https://github.com/fmalpartida/Marlin/tree/SAV-MkI-config" -#define BOARD_NAME "SAV MkI" - -#define LARGE_FLASH true - -#define X_STEP_PIN 0 -#define X_DIR_PIN 1 -#define X_ENABLE_PIN 39 - -#define Y_STEP_PIN 2 -#define Y_DIR_PIN 3 -#define Y_ENABLE_PIN 38 - -#define Z_STEP_PIN 4 -#define Z_DIR_PIN 5 -#define Z_ENABLE_PIN 23 - -#define E0_STEP_PIN 6 -#define E0_DIR_PIN 7 -#define E0_ENABLE_PIN 19 - -#define HEATER_0_PIN 21 // Extruder -#define HEATER_BED_PIN 20 // Bed -#define FAN_PIN 16 // Fan -- from Teensyduino environment. - // For the fan and Teensyduino uses a different pin mapping. -#define X_STOP_PIN 13 -#define Y_STOP_PIN 14 -//#define Z_STOP_PIN 15 -#define Z_STOP_PIN 36 // For inductive sensor. - -#define TEMP_0_PIN 7 // Extruder / Analog pin numbering -#define TEMP_BED_PIN 6 // Bed / Analog pin numbering - -#define SDSS 20 // PB0 - 8 in marlin env. - -// Extension header pin mapping -// ---------------------------- -// SCL (I2C)-D0 A0 (An), IO -// SDA (I2C)-D1 A1 (An), IO -// RX1-D2 A2 (An), IO -// TX1-D3 A3 (An), IO -// PWM-D24 A4 (An), IO -// 5V GND -// 12V GND -#define EXT_AUX_SCL_D0 0 // 0 (teensy), 24 (marlin) -#define EXT_AUX_SDA_D1 1 // 1 (teensy), 25 (marlin) -#define EXT_AUX_RX1_D2 26 // 2 (teensy), 26 (marlin) -#define EXT_AUX_TX1_D3 27 // 3 (teensy), 27 (marlin) -#define EXT_AUX_PWM_D24 12 // 24 (teensy), 12 (marlin) -#define EXT_AUX_A0 0 // Analog -#define EXT_AUX_A0_IO 40 // Digital IO, 38 (teensy), 40 (marlin) -#define EXT_AUX_A1 1 // Analog -#define EXT_AUX_A1_IO 41 // Digital IO, 39 (teensy), 41 (marlin) -#define EXT_AUX_A2 2 // Analog -#define EXT_AUX_A2_IO 42 // Digital IO, 40 (teensy), 42 (marlin) -#define EXT_AUX_A3 3 // Analog -#define EXT_AUX_A3_IO 43 // Digital IO, 41 (teensy), 43 (marlin) -#define EXT_AUX_A4 4 // Analog -#define EXT_AUX_A4_IO 44 // Digital IO, 42 (teensy), 44 (marlin) - - -#define BEEPER_PIN -1 -#define LCD_PINS_RS -1 -#define LCD_PINS_ENABLE -1 -#define LCD_PINS_D4 -1 -#define LCD_PINS_D5 -1 -#define LCD_PINS_D6 -1 -#define LCD_PINS_D7 -1 - -#if ENABLED(SAV_3DLCD) - // For LCD SHIFT register LCD - #define SR_DATA_PIN EXT_AUX_SDA_D1 - #define SR_CLK_PIN EXT_AUX_SCL_D0 -#endif // SAV_3DLCD - -#if ENABLED(SAV_3DLCD) || ENABLED(SAV_3DGLCD) - #define BTN_EN1 EXT_AUX_A1_IO - #define BTN_EN2 EXT_AUX_A0_IO - #define BTN_ENC EXT_AUX_PWM_D24 - - #define KILL_PIN EXT_AUX_A2_IO - #define HOME_PIN EXT_AUX_A4_IO -#endif // SAV_3DLCD || SAV_3DGLCD - -#define SERVO0_PIN 41 // In teensy's pin definition for pinMode (in servo.cpp) diff --git a/lib/Marlin/pins_SETHI.h b/lib/Marlin/pins_SETHI.h deleted file mode 100644 index ff154ac..0000000 --- a/lib/Marlin/pins_SETHI.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Sethi 3D_1 pin assignments - www.sethi3d.com.br - */ - -#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) - #error "Oops! Make sure you have 'Sethi 3D' selected from the 'Tools -> Boards' menu." -#endif - -#define BOARD_NAME "Sethi 3D_1" - -#ifndef GEN7_VERSION - #define GEN7_VERSION 12 // v1.x -#endif - -//x axis pins -#define X_STEP_PIN 19 -#define X_DIR_PIN 18 -#define X_ENABLE_PIN 24 -#define X_STOP_PIN 2 - -//y axis pins -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_ENABLE_PIN 24 -#define Y_STOP_PIN 0 - -//z axis pins -#define Z_STEP_PIN 26 -#define Z_DIR_PIN 25 -#define Z_ENABLE_PIN 24 -#define Z_MIN_PIN 1 -#define Z_MAX_PIN 0 - -//extruder pins -#define E0_STEP_PIN 28 -#define E0_DIR_PIN 27 -#define E0_ENABLE_PIN 24 - -#define TEMP_0_PIN 1 -#define TEMP_BED_PIN 2 - -#define HEATER_0_PIN 4 -#define HEATER_BED_PIN 3 - - -#if (GEN7_VERSION >= 13) - // Gen7 v1.3 removed the fan pin - #define FAN_PIN -1 -#else - #define FAN_PIN 31 -#endif - -#define PS_ON_PIN 15 - -//All these generations of Gen7 supply thermistor power -//via PS_ON, so ignore bad thermistor readings -#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE - -//our pin for debugging. -#define DEBUG_PIN 0 - -//our RS485 pins -#define TX_ENABLE_PIN 12 -#define RX_ENABLE_PIN 13 diff --git a/lib/Marlin/pins_STB_11.h b/lib/Marlin/pins_STB_11.h deleted file mode 100644 index 318dc39..0000000 --- a/lib/Marlin/pins_STB_11.h +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * STB V1.1 pin assignments - */ - -#define BOARD_NAME "STB V1.1" - -#if defined(__AVR_ATmega1284P__) - #define LARGE_FLASH true -#endif - -#define SANGUINOLOLU_V_1_2 -#include "pins_SANGUINOLOLU_11.h" diff --git a/lib/Marlin/pins_Swift.h b/lib/Marlin/pins_Swift.h deleted file mode 100644 index 370099d..0000000 --- a/lib/Marlin/pins_Swift.h +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - - - -#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#ifndef BOARD_NAME - #define BOARD_NAME "Swift 1.0" -#endif - -#define LARGE_FLASH true - - -#define SERVO0_PIN 6 - -//#define SERVO1_PIN 6 -//#define SERVO2_PIN 5 -//#define SERVO3_PIN 4 - -#define X_MIN_PIN 27 -#ifndef X_MAX_PIN - //#define X_MAX_PIN 41 -#endif -#define Y_MIN_PIN 42 -//#define Y_MAX_PIN 25 -#define Z_MIN_PIN 29 -//#define Z_MAX_PIN 29 -#ifndef Z_MIN_PROBE_PIN - //#define Z_MIN_PROBE_PIN 32 -#endif - -#define X_STEP_PIN 54 //S -#define X_DIR_PIN 55 //S -#define X_ENABLE_PIN 38 //S - -#define Y_STEP_PIN 60 //S -#define Y_DIR_PIN 61 //S -#define Y_ENABLE_PIN 56 //S - -#define Z_STEP_PIN 46 //S -#define Z_DIR_PIN 48 //S -#define Z_ENABLE_PIN 62 //S - -#define E0_STEP_PIN 26 //S -#define E0_DIR_PIN 28 //S -#define E0_ENABLE_PIN 24 //S - -#define E1_STEP_PIN 36 -#define E1_DIR_PIN 34 -#define E1_ENABLE_PIN 30 - -#define SDSS 53 // sd card cs pin -#define LED_PIN 2 // R 13 - -#define LED_G 3 //G -#define LED_B 5 //B - -#define BEEPER_PIN 44 - -#define KEY_MENU_PIN //PE6 -#define KEY_PLAY_PIN // PE7 -#define KEY_STATE_PIN 11 - -#define E2PROM_SCL // 12 PB7 -#define E2PROM_SDA // 13 PB6 - -#define X_SCL // PD6 -#define X_SDA // PD5 - -#define Y_SCL 34 // PC3 -#define Y_SDA 36 // PC1 - -#define Z_SCL // PH7 -#define Z_SDA // PH2 - -#define SERVO_HAND_ROT_ANALOG_PIN A3 - -#define POWER_DETECT A5 - -// Use the RAMPS 1.4 Analog input 5 on the AUX2 connector -#define FILWIDTH_PIN 47 //5 // ANALOG NUMBERING - -// define digital pin 4 for the filament runout sensor. Use the RAMPS 1.4 digital input 4 on the servos connector -#define FIL_RUNOUT_PIN 49 // 4 - -//#define PS_ON_PIN 12 // PS POWER -#define TEMP_0_PIN 13 // ANALOG NUMBERING -#define TEMP_1_PIN 14 // ANALOG NUMBERING -#define TEMP_BED_PIN 15 // ANALOG NUMBERING - -#define HEATER_0_PIN 9 - - -#define FAN_PIN 8 -#define HEATER_BED_PIN 10 - -#define VALVE_EN 4 -//#define PUMP_EN //PG4 - - -#define PUMP_FEEDBACK A9 - -//#define GRIPPER pC7 -#define GRIPPER_FEEDBACK 22 -//#define HW_PIN_0 - - -#if ENABLED(Z_PROBE_SLED) - #define SLED_PIN -1 -#endif - - - - - #define MOSFET_D_PIN -1 - - - - - - -#ifndef FAN_PIN - #define FAN_PIN 4 // IO pin. Buffer needed -#endif - - diff --git a/lib/Marlin/pins_TEENSY2.h b/lib/Marlin/pins_TEENSY2.h deleted file mode 100644 index f4f7d4c..0000000 --- a/lib/Marlin/pins_TEENSY2.h +++ /dev/null @@ -1,122 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Teensy++ 2.0 Breadboard pin assignments (AT90USB1286) - * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! - * http://www.pjrc.com/teensy/teensyduino.html - * See http://reprap.org/wiki/Printrboard for more info - * - * CLI build: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make - * - * DaveX plan for Teensylu/printrboard-type pinouts for a TeensyBreadboard: - * (ref teensylu & sprinter) - * - * USB - * GND GND |-----#####-----| +5V ATX +5SB - * ATX PS_ON PWM 27 |b7 ##### b6| 26 PWM* Stepper Enable - * PWM 0 |d0 b5| 25 PWM* - * PWM 1 |d1 b4| 24 PWM - * X_MIN 2 |d2 b3| 23 MISO_PIN - * Y_MIN 3 |d3 b2| 22 MOSI_PIN - * Z_MIN 4 |d4 * * b1| 21 SCK_PIN - * 5 |d5 e e b0| 20 SDSS - * LED 6 |d6 5 4 e7| 19 - * 7 |d7 e6| 18 - * LCD RS 8 |e0 | GND - * LCD EN 9 |e1 a4 a0 R| AREF - * LCD D4 10 |c0 a5 a1 f0| 38 A0 ENC_1 - * LCD D5 11 |c1 a6 a2 f1| 39 A1 ENC_2 - * LCD D6 12 |c2 a7 a3 f2| 40 A2 ENC_CLK - * LCD D6 13 |c3 f3| 41 A3 - * Bed Heat PWM 14 |c4 V G R f4| 42 A4 - * Extruder Heat PWM 15 |c5 c n S f5| 43 A5 - * Fan PWM 16 |c6 c d T f6| 44 A6 Bed TC - * 17 |c7 * * * f7| 45 A7 Extruder TC * 4.7k * +5 - * ----------------- - * - * Interior E4: 36, INT4 - * Interior E5: 37, INT5 - * Interior PA0-7: 28-35 -- Printrboard and Teensylu use these pins for step & direction: - * T++ PA Signal Marlin - * - * Z STEP 32 a4 a0 28 X STEP - * Z DIR 33 a5 a1 29 X DIR - * E STEP 34 a6 a2 30 Y STEP - * E DIR 35 a7 a3 31 Y DIR - */ - -#ifndef __AVR_AT90USB1286__ - #error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu." -#endif - -#ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // use Teensyduino Teensy++2.0 pin assignments instead of Marlin alphabetical. - #error "Uncomment #define AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h for this config" - // (or build from command line) -#endif - -#define BOARD_NAME "Teensy++2.0" - -#define LARGE_FLASH true - -#define X_STEP_PIN 28 // 0 Marlin -#define X_DIR_PIN 29 // 1 Marlin -#define X_ENABLE_PIN 26 - -#define Y_STEP_PIN 30 // 2 Marlin -#define Y_DIR_PIN 31 // 3 -#define Y_ENABLE_PIN 26 // Shared w/x - -#define Z_STEP_PIN 32 // 4 -#define Z_DIR_PIN 33 // 5 -#define Z_ENABLE_PIN 26 // Shared w/x - -#define E0_STEP_PIN 34 // 6 -#define E0_DIR_PIN 35 // 7 -#define E0_ENABLE_PIN 26 // Shared w/x - -#define HEATER_0_PIN 15 // 21 // Extruder -#define HEATER_BED_PIN 14 // 20 // Bed -#define FAN_PIN 16 // 22 // Fan - -#define X_STOP_PIN 2 -#define Y_STOP_PIN 3 -#define Z_STOP_PIN 4 - -#define TEMP_0_PIN 7 // Extruder / Analog pin numbering -#define TEMP_BED_PIN 6 // Bed / Analog pin numbering - -#define SDSS 20 // 8 -#define LED_PIN 6 -#define PS_ON_PIN 27 - -#if ENABLED(ULTIPANEL) - #define LCD_PINS_RS 8 - #define LCD_PINS_ENABLE 9 - #define LCD_PINS_D4 10 - #define LCD_PINS_D5 11 - #define LCD_PINS_D6 12 - #define LCD_PINS_D7 13 - #define BTN_EN1 38 - #define BTN_EN2 39 - #define BTN_ENC 40 -#endif diff --git a/lib/Marlin/pins_TEENSYLU.h b/lib/Marlin/pins_TEENSYLU.h deleted file mode 100644 index 7758377..0000000 --- a/lib/Marlin/pins_TEENSYLU.h +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Teensylu 0.7 pin assignments (AT90USB1286) - * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! - * http://www.pjrc.com/teensy/teensyduino.html - * See http://reprap.org/wiki/Printrboard for more info - */ - -#ifndef __AVR_AT90USB1286__ - #error "Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu." -#endif - -#if ENABLED(AT90USBxx_TEENSYPP_ASSIGNMENTS) // use Teensyduino Teensy++2.0 pin assignments instead of Marlin traditional. - #error "These Teensylu assignments depend on traditional Marlin assignments, not AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h" -#endif - -#define BOARD_NAME "Teensylu" - -#define LARGE_FLASH true - -#define X_STEP_PIN 0 -#define X_DIR_PIN 1 -#define X_ENABLE_PIN 39 - -#define Y_STEP_PIN 2 -#define Y_DIR_PIN 3 -#define Y_ENABLE_PIN 38 - -#define Z_STEP_PIN 4 -#define Z_DIR_PIN 5 -#define Z_ENABLE_PIN 23 - -#define E0_STEP_PIN 6 -#define E0_DIR_PIN 7 -#define E0_ENABLE_PIN 19 - -#define HEATER_0_PIN 21 // Extruder -#define HEATER_1_PIN 46 -#define HEATER_2_PIN 47 -#define HEATER_BED_PIN 20 - -// If soft or fast PWM is off then use Teensyduino pin numbering, Marlin -// fastio pin numbering otherwise -#if ENABLED(FAN_SOFT_PWM) || ENABLED(FAST_PWM_FAN) - #define FAN_PIN 22 -#else - #define FAN_PIN 16 -#endif - -#define X_STOP_PIN 13 -#define Y_STOP_PIN 14 -#define Z_STOP_PIN 15 -#define TEMP_0_PIN 7 // Extruder / Analog pin numbering -#define TEMP_BED_PIN 6 // Bed / Analog pin numbering - -#define SDSS 8 - -#if ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) - - #define BEEPER_PIN -1 - - #if ENABLED(LCD_I2C_PANELOLU2) - #define BTN_EN1 27 //RX1 - fastio.h pin mapping 27 - #define BTN_EN2 26 //TX1 - fastio.h pin mapping 26 - #define BTN_ENC 43 //A3 - fastio.h pin mapping 43 - #define SDSS 40 //use SD card on Panelolu2 (Teensyduino pin mapping) - #endif // LCD_I2C_PANELOLU2 - - #define SD_DETECT_PIN -1 - -#endif // ULTRA_LCD && NEWPANEL - diff --git a/lib/Marlin/pins_ULTIMAIN_2.h b/lib/Marlin/pins_ULTIMAIN_2.h deleted file mode 100644 index c2de0a4..0000000 --- a/lib/Marlin/pins_ULTIMAIN_2.h +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Ultiboard v2.0 pin assignments - */ - -#ifndef __AVR_ATmega2560__ - #error "Oops! Make sure you have 'Arduino Mega 2560' selected from the 'Tools -> Boards' menu." -#endif - -#define DEFAULT_MACHINE_NAME "Ultimaker" -#define DEFAULT_SOURCE_CODE_URL "https://github.com/Ultimaker/Marlin" -#define BOARD_NAME "Ultimaker 2.x" - -#define X_STEP_PIN 25 -#define X_DIR_PIN 23 -#define X_STOP_PIN 22 -#define X_ENABLE_PIN 27 - -#define Y_STEP_PIN 32 -#define Y_DIR_PIN 33 -#define Y_STOP_PIN 26 -#define Y_ENABLE_PIN 31 - -#define Z_STEP_PIN 35 -#define Z_DIR_PIN 36 -#define Z_STOP_PIN 29 -#define Z_ENABLE_PIN 34 - -#define HEATER_BED_PIN 4 -#define TEMP_BED_PIN 10 - -#define HEATER_0_PIN 2 -#define TEMP_0_PIN 8 - -#define HEATER_1_PIN 3 -#define TEMP_1_PIN 9 - -#define E0_STEP_PIN 42 -#define E0_DIR_PIN 43 -#define E0_ENABLE_PIN 37 - -#define E1_STEP_PIN 49 -#define E1_DIR_PIN 47 -#define E1_ENABLE_PIN 48 - -#define SDSS 53 -#define LED_PIN 8 -#define FAN_PIN 7 -#define SAFETY_TRIGGERED_PIN 28 //PIN to detect the safety circuit has triggered -#define MAIN_VOLTAGE_MEASURE_PIN 14 //Analogue PIN to measure the main voltage, with a 100k - 4k7 resitor divider. - -#define MOTOR_CURRENT_PWM_XY_PIN 44 -#define MOTOR_CURRENT_PWM_Z_PIN 45 -#define MOTOR_CURRENT_PWM_E_PIN 46 -//Motor current PWM conversion, PWM value = MotorCurrentSetting * 255 / range -#define MOTOR_CURRENT_PWM_RANGE 2000 -#define DEFAULT_PWM_MOTOR_CURRENT {1300, 1300, 1250} - -#define BEEPER_PIN 18 - -#define LCD_PINS_RS 20 -#define LCD_PINS_ENABLE 15 -#define LCD_PINS_D4 14 -#define LCD_PINS_D5 21 -#define LCD_PINS_D6 5 -#define LCD_PINS_D7 6 - -//buttons are directly attached -#define BTN_EN1 40 -#define BTN_EN2 41 -#define BTN_ENC 19 - -#define SD_DETECT_PIN 39 diff --git a/lib/Marlin/pins_ULTIMAKER.h b/lib/Marlin/pins_ULTIMAKER.h deleted file mode 100644 index d770f3a..0000000 --- a/lib/Marlin/pins_ULTIMAKER.h +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Ultimaker pin assignments - */ - -#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define DEFAULT_MACHINE_NAME "Ultimaker" -#define DEFAULT_SOURCE_CODE_URL "https://github.com/Ultimaker/Marlin" -#define BOARD_NAME "Ultimaker" - -#define LARGE_FLASH true - -#define SERVO0_PIN 13 // untested - -#define X_STEP_PIN 25 -#define X_DIR_PIN 23 -#define X_MIN_PIN 22 -#define X_MAX_PIN 24 -#define X_ENABLE_PIN 27 - -#define Y_STEP_PIN 31 -#define Y_DIR_PIN 33 -#define Y_MIN_PIN 26 -#define Y_MAX_PIN 28 -#define Y_ENABLE_PIN 29 - -#define Z_STEP_PIN 37 -#define Z_DIR_PIN 39 -#define Z_MIN_PIN 30 -#define Z_MAX_PIN 32 -#define Z_ENABLE_PIN 35 - -#define HEATER_BED_PIN 4 -#define TEMP_BED_PIN 10 - -#define HEATER_0_PIN 2 -#define TEMP_0_PIN 8 - -#define HEATER_1_PIN 3 -#define TEMP_1_PIN 9 - -#define E0_STEP_PIN 43 -#define E0_DIR_PIN 45 -#define E0_ENABLE_PIN 41 - -#define E1_STEP_PIN 49 -#define E1_DIR_PIN 47 -#define E1_ENABLE_PIN 48 - -#define SDSS 53 -#define LED_PIN 13 -#define FAN_PIN 7 -#define PS_ON_PIN 12 -#define SUICIDE_PIN 54 //PIN that has to be turned on right after start, to keep power flowing. - -#if ENABLED(ULTRA_LCD) - - #define BEEPER_PIN 18 - - #if ENABLED(NEWPANEL) - - #define LCD_PINS_RS 20 - #define LCD_PINS_ENABLE 17 - #define LCD_PINS_D4 16 - #define LCD_PINS_D5 21 - #define LCD_PINS_D6 5 - #define LCD_PINS_D7 6 - - //buttons are directly attached - #define BTN_EN1 40 - #define BTN_EN2 42 - #define BTN_ENC 19 - - #define SD_DETECT_PIN 38 - - #else //!NEWPANEL - Old style panel with shift register - - //buttons are attached to a shift register - #define SHIFT_CLK 38 - #define SHIFT_LD 42 - #define SHIFT_OUT 40 - #define SHIFT_EN 17 - - #define LCD_PINS_RS 16 - #define LCD_PINS_ENABLE 5 - #define LCD_PINS_D4 6 - #define LCD_PINS_D5 21 - #define LCD_PINS_D6 20 - #define LCD_PINS_D7 19 - - #define SD_DETECT_PIN -1 - - #endif // !NEWPANEL - -#endif // ULTRA_LCD diff --git a/lib/Marlin/pins_ULTIMAKER_OLD.h b/lib/Marlin/pins_ULTIMAKER_OLD.h deleted file mode 100644 index 33bc26c..0000000 --- a/lib/Marlin/pins_ULTIMAKER_OLD.h +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * Ultimaker pin assignments (Old electronics) - */ - -#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) - #error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu." -#endif - -#define DEFAULT_MACHINE_NAME "Ultimaker" -#define DEFAULT_SOURCE_CODE_URL "https://github.com/Ultimaker/Marlin" -#define BOARD_NAME "Ultimaker <1.5.4" - -#define LARGE_FLASH true - -#define X_STEP_PIN 25 -#define X_DIR_PIN 23 -#define X_MIN_PIN 15 -#define X_MAX_PIN 14 -#define X_ENABLE_PIN 27 - -#define Y_STEP_PIN 31 -#define Y_DIR_PIN 33 -#define Y_MIN_PIN 17 -#define Y_MAX_PIN 16 -#define Y_ENABLE_PIN 29 - -#define Z_STEP_PIN 37 -#define Z_DIR_PIN 39 -#define Z_MIN_PIN 19 -#define Z_MAX_PIN 18 -#define Z_ENABLE_PIN 35 - -#define TEMP_0_PIN 8 -#define TEMP_1_PIN 1 - -#define HEATER_0_PIN 2 -#define HEATER_1_PIN 1 - -#define E0_STEP_PIN 43 -#define E0_DIR_PIN 45 -#define E0_ENABLE_PIN 41 - -#define E1_STEP_PIN -1 -#define E1_DIR_PIN -1 -#define E1_ENABLE_PIN -1 - -#define LCD_PINS_RS 24 -#define LCD_PINS_ENABLE 22 -#define LCD_PINS_D4 36 -#define LCD_PINS_D5 34 -#define LCD_PINS_D6 32 -#define LCD_PINS_D7 30 diff --git a/lib/Marlin/planner.cpp b/lib/Marlin/planner.cpp deleted file mode 100644 index 708fc42..0000000 --- a/lib/Marlin/planner.cpp +++ /dev/null @@ -1,1222 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * planner.cpp - * - * Buffer movement commands and manage the acceleration profile plan - * - * Derived from Grbl - * Copyright (c) 2009-2011 Simen Svale Skogsrud - * - * The ring buffer implementation gleaned from the wiring_serial library by David A. Mellis. - * - * - * Reasoning behind the mathematics in this module (in the key of 'Mathematica'): - * - * s == speed, a == acceleration, t == time, d == distance - * - * Basic definitions: - * Speed[s_, a_, t_] := s + (a*t) - * Travel[s_, a_, t_] := Integrate[Speed[s, a, t], t] - * - * Distance to reach a specific speed with a constant acceleration: - * Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, d, t] - * d -> (m^2 - s^2)/(2 a) --> estimate_acceleration_distance() - * - * Speed after a given distance of travel with constant acceleration: - * Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, m, t] - * m -> Sqrt[2 a d + s^2] - * - * DestinationSpeed[s_, a_, d_] := Sqrt[2 a d + s^2] - * - * When to start braking (di) to reach a specified destination speed (s2) after accelerating - * from initial speed s1 without ever stopping at a plateau: - * Solve[{DestinationSpeed[s1, a, di] == DestinationSpeed[s2, a, d - di]}, di] - * di -> (2 a d - s1^2 + s2^2)/(4 a) --> intersection_distance() - * - * IntersectionDistance[s1_, s2_, a_, d_] := (2 a d - s1^2 + s2^2)/(4 a) - * - */ - -#include "planner.h" -#include "stepper.h" -#include "temperature.h" -#include "ultralcd.h" -#include "language.h" - -#include "Marlin.h" - -#if ENABLED(MESH_BED_LEVELING) - #include "mesh_bed_leveling.h" -#endif - -Planner planner; - - // public: - -/** - * A ring buffer of moves described in steps - */ -block_t Planner::block_buffer[BLOCK_BUFFER_SIZE]; -volatile uint8_t Planner::block_buffer_head = 0; // Index of the next block to be pushed -volatile uint8_t Planner::block_buffer_tail = 0; - -float Planner::max_feedrate_mm_s[NUM_AXIS], // Max speeds in mm per second - Planner::axis_steps_per_mm[NUM_AXIS], - Planner::steps_to_mm[NUM_AXIS]; - -unsigned long Planner::max_acceleration_steps_per_s2[NUM_AXIS], - Planner::max_acceleration_mm_per_s2[NUM_AXIS]; // Use M201 to override by software - -millis_t Planner::min_segment_time; -float Planner::min_feedrate_mm_s, - Planner::acceleration, // Normal acceleration mm/s^2 DEFAULT ACCELERATION for all printing moves. M204 SXXXX - Planner::retract_acceleration, // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX - Planner::travel_acceleration, // Travel acceleration mm/s^2 DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX - Planner::max_xy_jerk, // The largest speed change requiring no acceleration - Planner::max_z_jerk, - Planner::max_e_jerk, - Planner::min_travel_feedrate_mm_s; - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - matrix_3x3 Planner::bed_level_matrix; // Transform to compensate for bed level -#endif - -#if ENABLED(AUTOTEMP) - float Planner::autotemp_max = 250, - Planner::autotemp_min = 210, - Planner::autotemp_factor = 0.1; - bool Planner::autotemp_enabled = false; -#endif - -// private: - -long Planner::position[NUM_AXIS] = { 0 }; - -float Planner::previous_speed[NUM_AXIS], - Planner::previous_nominal_speed; - -#if ENABLED(DISABLE_INACTIVE_EXTRUDER) - uint8_t Planner::g_uc_extruder_last_move[EXTRUDERS] = { 0 }; -#endif // DISABLE_INACTIVE_EXTRUDER - -#ifdef XY_FREQUENCY_LIMIT - // Old direction bits. Used for speed calculations - unsigned char Planner::old_direction_bits = 0; - // Segment times (in µs). Used for speed calculations - long Planner::axis_segment_time[2][3] = { {MAX_FREQ_TIME + 1, 0, 0}, {MAX_FREQ_TIME + 1, 0, 0} }; -#endif - -/** - * Class and Instance Methods - */ - -Planner::Planner() { init(); } - -void Planner::init() { - block_buffer_head = block_buffer_tail = 0; - memset(position, 0, sizeof(position)); // clear position - LOOP_XYZE(i) previous_speed[i] = 0.0; - previous_nominal_speed = 0.0; - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - bed_level_matrix.set_to_identity(); - #endif -} - -/** - * Calculate trapezoid parameters, multiplying the entry- and exit-speeds - * by the provided factors. - */ -void Planner::calculate_trapezoid_for_block(block_t* block, float entry_factor, float exit_factor) { - unsigned long initial_rate = ceil(block->nominal_rate * entry_factor), - final_rate = ceil(block->nominal_rate * exit_factor); // (steps per second) - - // Limit minimal step rate (Otherwise the timer will overflow.) - NOLESS(initial_rate, 120); - NOLESS(final_rate, 120); - - long accel = block->acceleration_steps_per_s2; - int32_t accelerate_steps = ceil(estimate_acceleration_distance(initial_rate, block->nominal_rate, accel)); - int32_t decelerate_steps = floor(estimate_acceleration_distance(block->nominal_rate, final_rate, -accel)); - - // Calculate the size of Plateau of Nominal Rate. - int32_t plateau_steps = block->step_event_count - accelerate_steps - decelerate_steps; - - // Is the Plateau of Nominal Rate smaller than nothing? That means no cruising, and we will - // have to use intersection_distance() to calculate when to abort accel and start braking - // in order to reach the final_rate exactly at the end of this block. - if (plateau_steps < 0) { - accelerate_steps = ceil(intersection_distance(initial_rate, final_rate, accel, block->step_event_count)); - accelerate_steps = max(accelerate_steps, 0); // Check limits due to numerical round-off - accelerate_steps = min((uint32_t)accelerate_steps, block->step_event_count);//(We can cast here to unsigned, because the above line ensures that we are above zero) - plateau_steps = 0; - } - - #if ENABLED(ADVANCE) - volatile long initial_advance = block->advance * sq(entry_factor); - volatile long final_advance = block->advance * sq(exit_factor); - #endif // ADVANCE - - // block->accelerate_until = accelerate_steps; - // block->decelerate_after = accelerate_steps+plateau_steps; - CRITICAL_SECTION_START; // Fill variables used by the stepper in a critical section - if (!block->busy) { // Don't update variables if block is busy. - block->accelerate_until = accelerate_steps; - block->decelerate_after = accelerate_steps + plateau_steps; - block->initial_rate = initial_rate; - block->final_rate = final_rate; - #if ENABLED(ADVANCE) - block->initial_advance = initial_advance; - block->final_advance = final_advance; - #endif - } - CRITICAL_SECTION_END; -} - -// "Junction jerk" in this context is the immediate change in speed at the junction of two blocks. -// This method will calculate the junction jerk as the euclidean distance between the nominal -// velocities of the respective blocks. -//inline float junction_jerk(block_t *before, block_t *after) { -// return sqrt( -// pow((before->speed_x-after->speed_x), 2)+pow((before->speed_y-after->speed_y), 2)); -//} - - -// The kernel called by recalculate() when scanning the plan from last to first entry. -void Planner::reverse_pass_kernel(block_t* previous, block_t* current, block_t* next) { - if (!current) return; - UNUSED(previous); - - if (next) { - // If entry speed is already at the maximum entry speed, no need to recheck. Block is cruising. - // If not, block in state of acceleration or deceleration. Reset entry speed to maximum and - // check for maximum allowable speed reductions to ensure maximum possible planned speed. - float max_entry_speed = current->max_entry_speed; - if (current->entry_speed != max_entry_speed) { - - // If nominal length true, max junction speed is guaranteed to be reached. Only compute - // for max allowable speed if block is decelerating and nominal length is false. - if (!current->nominal_length_flag && max_entry_speed > next->entry_speed) { - current->entry_speed = min(max_entry_speed, - max_allowable_speed(-current->acceleration, next->entry_speed, current->millimeters)); - } - else { - current->entry_speed = max_entry_speed; - } - current->recalculate_flag = true; - - } - } // Skip last block. Already initialized and set for recalculation. -} - -/** - * recalculate() needs to go over the current plan twice. - * Once in reverse and once forward. This implements the reverse pass. - */ -void Planner::reverse_pass() { - - if (movesplanned() > 3) { - - block_t* block[3] = { NULL, NULL, NULL }; - - // Make a local copy of block_buffer_tail, because the interrupt can alter it - CRITICAL_SECTION_START; - uint8_t tail = block_buffer_tail; - CRITICAL_SECTION_END - - uint8_t b = BLOCK_MOD(block_buffer_head - 3); - while (b != tail) { - b = prev_block_index(b); - block[2] = block[1]; - block[1] = block[0]; - block[0] = &block_buffer[b]; - reverse_pass_kernel(block[0], block[1], block[2]); - } - } -} - -// The kernel called by recalculate() when scanning the plan from first to last entry. -void Planner::forward_pass_kernel(block_t* previous, block_t* current, block_t* next) { - if (!previous) return; - UNUSED(next); - - // If the previous block is an acceleration block, but it is not long enough to complete the - // full speed change within the block, we need to adjust the entry speed accordingly. Entry - // speeds have already been reset, maximized, and reverse planned by reverse planner. - // If nominal length is true, max junction speed is guaranteed to be reached. No need to recheck. - if (!previous->nominal_length_flag) { - if (previous->entry_speed < current->entry_speed) { - double entry_speed = min(current->entry_speed, - max_allowable_speed(-previous->acceleration, previous->entry_speed, previous->millimeters)); - // Check for junction speed change - if (current->entry_speed != entry_speed) { - current->entry_speed = entry_speed; - current->recalculate_flag = true; - } - } - } -} - -/** - * recalculate() needs to go over the current plan twice. - * Once in reverse and once forward. This implements the forward pass. - */ -void Planner::forward_pass() { - block_t* block[3] = { NULL, NULL, NULL }; - - for (uint8_t b = block_buffer_tail; b != block_buffer_head; b = next_block_index(b)) { - block[0] = block[1]; - block[1] = block[2]; - block[2] = &block_buffer[b]; - forward_pass_kernel(block[0], block[1], block[2]); - } - forward_pass_kernel(block[1], block[2], NULL); -} - -/** - * Recalculate the trapezoid speed profiles for all blocks in the plan - * according to the entry_factor for each junction. Must be called by - * recalculate() after updating the blocks. - */ -void Planner::recalculate_trapezoids() { - int8_t block_index = block_buffer_tail; - block_t* current; - block_t* next = NULL; - - while (block_index != block_buffer_head) { - current = next; - next = &block_buffer[block_index]; - if (current) { - // Recalculate if current block entry or exit junction speed has changed. - if (current->recalculate_flag || next->recalculate_flag) { - // NOTE: Entry and exit factors always > 0 by all previous logic operations. - float nom = current->nominal_speed; - calculate_trapezoid_for_block(current, current->entry_speed / nom, next->entry_speed / nom); - current->recalculate_flag = false; // Reset current only to ensure next trapezoid is computed - } - } - block_index = next_block_index(block_index); - } - // Last/newest block in buffer. Exit speed is set with MINIMUM_PLANNER_SPEED. Always recalculated. - if (next) { - float nom = next->nominal_speed; - calculate_trapezoid_for_block(next, next->entry_speed / nom, (MINIMUM_PLANNER_SPEED) / nom); - next->recalculate_flag = false; - } -} - -/* - * Recalculate the motion plan according to the following algorithm: - * - * 1. Go over every block in reverse order... - * - * Calculate a junction speed reduction (block_t.entry_factor) so: - * - * a. The junction jerk is within the set limit, and - * - * b. No speed reduction within one block requires faster - * deceleration than the one, true constant acceleration. - * - * 2. Go over every block in chronological order... - * - * Dial down junction speed reduction values if: - * a. The speed increase within one block would require faster - * acceleration than the one, true constant acceleration. - * - * After that, all blocks will have an entry_factor allowing all speed changes to - * be performed using only the one, true constant acceleration, and where no junction - * jerk is jerkier than the set limit, Jerky. Finally it will: - * - * 3. Recalculate "trapezoids" for all blocks. - */ -void Planner::recalculate() { - reverse_pass(); - forward_pass(); - recalculate_trapezoids(); -} - - -#if ENABLED(AUTOTEMP) - - void Planner::getHighESpeed() { - static float oldt = 0; - - if (!autotemp_enabled) return; - if (thermalManager.degTargetHotend(0) + 2 < autotemp_min) return; // probably temperature set to zero. - - float high = 0.0; - for (uint8_t b = block_buffer_tail; b != block_buffer_head; b = next_block_index(b)) { - block_t* block = &block_buffer[b]; - if (block->steps[X_AXIS] || block->steps[Y_AXIS] || block->steps[Z_AXIS]) { - float se = (float)block->steps[E_AXIS] / block->step_event_count * block->nominal_speed; // mm/sec; - NOLESS(high, se); - } - } - - float t = autotemp_min + high * autotemp_factor; - t = constrain(t, autotemp_min, autotemp_max); - if (oldt > t) { - t *= (1 - (AUTOTEMP_OLDWEIGHT)); - t += (AUTOTEMP_OLDWEIGHT) * oldt; - } - oldt = t; - thermalManager.setTargetHotend(t, 0); - } - -#endif //AUTOTEMP - -/** - * Maintain fans, paste extruder pressure, - */ -void Planner::check_axes_activity() { - unsigned char axis_active[NUM_AXIS] = { 0 }, - tail_fan_speed[FAN_COUNT]; - - #if FAN_COUNT > 0 - for (uint8_t i = 0; i < FAN_COUNT; i++) tail_fan_speed[i] = fanSpeeds[i]; - #endif - - #if ENABLED(BARICUDA) - #if HAS_HEATER_1 - unsigned char tail_valve_pressure = baricuda_valve_pressure; - #endif - #if HAS_HEATER_2 - unsigned char tail_e_to_p_pressure = baricuda_e_to_p_pressure; - #endif - #endif - - if (blocks_queued()) { - - #if FAN_COUNT > 0 - for (uint8_t i = 0; i < FAN_COUNT; i++) tail_fan_speed[i] = block_buffer[block_buffer_tail].fan_speed[i]; - #endif - - block_t* block; - - #if ENABLED(BARICUDA) - block = &block_buffer[block_buffer_tail]; - #if HAS_HEATER_1 - tail_valve_pressure = block->valve_pressure; - #endif - #if HAS_HEATER_2 - tail_e_to_p_pressure = block->e_to_p_pressure; - #endif - #endif - - for (uint8_t b = block_buffer_tail; b != block_buffer_head; b = next_block_index(b)) { - block = &block_buffer[b]; - LOOP_XYZE(i) if (block->steps[i]) axis_active[i]++; - } - } - #if ENABLED(DISABLE_X) - if (!axis_active[X_AXIS]) disable_x(); - #endif - #if ENABLED(DISABLE_Y) - if (!axis_active[Y_AXIS]) disable_y(); - #endif - #if ENABLED(DISABLE_Z) - if (!axis_active[Z_AXIS]) disable_z(); - #endif - #if ENABLED(DISABLE_E) - if (!axis_active[E_AXIS]) { - disable_e0(); - disable_e1(); - disable_e2(); - disable_e3(); - } - #endif - - #if FAN_COUNT > 0 - - #if defined(FAN_MIN_PWM) - #define CALC_FAN_SPEED(f) (tail_fan_speed[f] ? ( FAN_MIN_PWM + (tail_fan_speed[f] * (255 - FAN_MIN_PWM)) / 255 ) : 0) - #else - #define CALC_FAN_SPEED(f) tail_fan_speed[f] - #endif - - #ifdef FAN_KICKSTART_TIME - - static millis_t fan_kick_end[FAN_COUNT] = { 0 }; - - #define KICKSTART_FAN(f) \ - if (tail_fan_speed[f]) { \ - millis_t ms = millis(); \ - if (fan_kick_end[f] == 0) { \ - fan_kick_end[f] = ms + FAN_KICKSTART_TIME; \ - tail_fan_speed[f] = 255; \ - } else { \ - if (PENDING(ms, fan_kick_end[f])) { \ - tail_fan_speed[f] = 255; \ - } \ - } \ - } else { \ - fan_kick_end[f] = 0; \ - } - - #if HAS_FAN0 - KICKSTART_FAN(0); - #endif - #if HAS_FAN1 - KICKSTART_FAN(1); - #endif - #if HAS_FAN2 - KICKSTART_FAN(2); - #endif - - #endif //FAN_KICKSTART_TIME - - #if ENABLED(FAN_SOFT_PWM) - #if HAS_FAN0 - thermalManager.fanSpeedSoftPwm[0] = CALC_FAN_SPEED(0); - #endif - #if HAS_FAN1 - thermalManager.fanSpeedSoftPwm[1] = CALC_FAN_SPEED(1); - #endif - #if HAS_FAN2 - thermalManager.fanSpeedSoftPwm[2] = CALC_FAN_SPEED(2); - #endif - #else - #if HAS_FAN0 - - #ifndef SWIFT_TEST_MODE - #ifdef UARM_SWIFT - if (is_fan_enable()) - #endif - analogWrite(FAN_PIN, CALC_FAN_SPEED(0)); - #endif - #endif - #if HAS_FAN1 - analogWrite(FAN1_PIN, CALC_FAN_SPEED(1)); - #endif - #if HAS_FAN2 - analogWrite(FAN2_PIN, CALC_FAN_SPEED(2)); - #endif - #endif - - #endif // FAN_COUNT > 0 - - #if ENABLED(AUTOTEMP) - getHighESpeed(); - #endif - - #if ENABLED(BARICUDA) - #if HAS_HEATER_1 - analogWrite(HEATER_1_PIN, tail_valve_pressure); - #endif - #if HAS_HEATER_2 - analogWrite(HEATER_2_PIN, tail_e_to_p_pressure); - #endif - #endif -} - -/** - * Planner::buffer_line - * - * Add a new linear movement to the buffer. - * - * x,y,z,e - target position in mm - * fr_mm_s - (target) speed of the move - * extruder - target extruder - */ - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING) - void Planner::buffer_line(float x, float y, float z, const float& e, float fr_mm_s, const uint8_t extruder) -#else - void Planner::buffer_line(const float& x, const float& y, const float& z, const float& e, float fr_mm_s, const uint8_t extruder) -#endif // AUTO_BED_LEVELING_FEATURE -{ - // Calculate the buffer head after we push this byte - int next_buffer_head = next_block_index(block_buffer_head); - - // If the buffer is full: good! That means we are well ahead of the robot. - // Rest here until there is room in the buffer. - while (block_buffer_tail == next_buffer_head) idle(); - - #if ENABLED(MESH_BED_LEVELING) - if (mbl.active()) - z += mbl.get_z(x - home_offset[X_AXIS], y - home_offset[Y_AXIS]); - #elif ENABLED(AUTO_BED_LEVELING_FEATURE) - apply_rotation_xyz(bed_level_matrix, x, y, z); - #endif - - // The target position of the tool in absolute steps - // Calculate target position in absolute steps - //this should be done after the wait, because otherwise a M92 code within the gcode disrupts this calculation somehow - long target[NUM_AXIS] = { - lround(x * axis_steps_per_mm[X_AXIS]), - lround(y * axis_steps_per_mm[Y_AXIS]), - lround(z * axis_steps_per_mm[Z_AXIS]), - lround(e * axis_steps_per_mm[E_AXIS]) - }; - - long dx = target[X_AXIS] - position[X_AXIS], - dy = target[Y_AXIS] - position[Y_AXIS], - dz = target[Z_AXIS] - position[Z_AXIS]; - - // DRYRUN ignores all temperature constraints and assures that the extruder is instantly satisfied - if (DEBUGGING(DRYRUN)) - position[E_AXIS] = target[E_AXIS]; - - long de = target[E_AXIS] - position[E_AXIS]; - - #if ENABLED(PREVENT_DANGEROUS_EXTRUDE) - if (de) { - if (thermalManager.tooColdToExtrude(extruder)) { - position[E_AXIS] = target[E_AXIS]; // Behave as if the move really took place, but ignore E part - de = 0; // no difference - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_ERR_COLD_EXTRUDE_STOP); - } - #if ENABLED(PREVENT_LENGTHY_EXTRUDE) - if (labs(de) > axis_steps_per_mm[E_AXIS] * (EXTRUDE_MAXLENGTH)) { - position[E_AXIS] = target[E_AXIS]; // Behave as if the move really took place, but ignore E part - de = 0; // no difference - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_ERR_LONG_EXTRUDE_STOP); - } - #endif - } - #endif - - // Prepare to set up new block - block_t* block = &block_buffer[block_buffer_head]; - - // Mark block as not busy (Not executed by the stepper interrupt) - block->busy = false; - - // Number of steps for each axis - #if ENABLED(COREXY) - // corexy planning - // these equations follow the form of the dA and dB equations on http://www.corexy.com/theory.html - block->steps[A_AXIS] = labs(dx + dy); - block->steps[B_AXIS] = labs(dx - dy); - block->steps[Z_AXIS] = labs(dz); - #elif ENABLED(COREXZ) - // corexz planning - block->steps[A_AXIS] = labs(dx + dz); - block->steps[Y_AXIS] = labs(dy); - block->steps[C_AXIS] = labs(dx - dz); - #elif ENABLED(COREYZ) - // coreyz planning - block->steps[X_AXIS] = labs(dx); - block->steps[B_AXIS] = labs(dy + dz); - block->steps[C_AXIS] = labs(dy - dz); - #else - // default non-h-bot planning - block->steps[X_AXIS] = labs(dx); - block->steps[Y_AXIS] = labs(dy); - block->steps[Z_AXIS] = labs(dz); - #endif - - block->steps[E_AXIS] = labs(de); - block->steps[E_AXIS] *= volumetric_multiplier[extruder]; - block->steps[E_AXIS] *= extruder_multiplier[extruder]; - block->steps[E_AXIS] /= 100; - block->step_event_count = max(block->steps[X_AXIS], max(block->steps[Y_AXIS], max(block->steps[Z_AXIS], block->steps[E_AXIS]))); - - // Bail if this is a zero-length block - if (block->step_event_count <= dropsegments) return; - - // For a mixing extruder, get a magnified step_event_count for each - #if ENABLED(MIXING_EXTRUDER) - for (uint8_t i = 0; i < MIXING_STEPPERS; i++) - block->mix_event_count[i] = (mixing_factor[i] < 0.0001) ? 0 : block->step_event_count / mixing_factor[i]; - #endif - - #if FAN_COUNT > 0 - for (uint8_t i = 0; i < FAN_COUNT; i++) block->fan_speed[i] = fanSpeeds[i]; - #endif - - #if ENABLED(BARICUDA) - block->valve_pressure = baricuda_valve_pressure; - block->e_to_p_pressure = baricuda_e_to_p_pressure; - #endif - - // Compute direction bits for this block - uint8_t db = 0; - #if ENABLED(COREXY) - if (dx < 0) SBI(db, X_HEAD); // Save the real Extruder (head) direction in X Axis - if (dy < 0) SBI(db, Y_HEAD); // ...and Y - if (dz < 0) SBI(db, Z_AXIS); - if (dx + dy < 0) SBI(db, A_AXIS); // Motor A direction - if (dx - dy < 0) SBI(db, B_AXIS); // Motor B direction - #elif ENABLED(COREXZ) - if (dx < 0) SBI(db, X_HEAD); // Save the real Extruder (head) direction in X Axis - if (dy < 0) SBI(db, Y_AXIS); - if (dz < 0) SBI(db, Z_HEAD); // ...and Z - if (dx + dz < 0) SBI(db, A_AXIS); // Motor A direction - if (dx - dz < 0) SBI(db, C_AXIS); // Motor C direction - #elif ENABLED(COREYZ) - if (dx < 0) SBI(db, X_AXIS); - if (dy < 0) SBI(db, Y_HEAD); // Save the real Extruder (head) direction in Y Axis - if (dz < 0) SBI(db, Z_HEAD); // ...and Z - if (dy + dz < 0) SBI(db, B_AXIS); // Motor B direction - if (dy - dz < 0) SBI(db, C_AXIS); // Motor C direction - #else - if (dx < 0) SBI(db, X_AXIS); - if (dy < 0) SBI(db, Y_AXIS); - if (dz < 0) SBI(db, Z_AXIS); - #endif - if (de < 0) SBI(db, E_AXIS); - block->direction_bits = db; - - block->active_extruder = extruder; - - //enable active axes - #if ENABLED(COREXY) - if (block->steps[A_AXIS] || block->steps[B_AXIS]) { - enable_x(); - enable_y(); - } - #if DISABLED(Z_LATE_ENABLE) - if (block->steps[Z_AXIS]) enable_z(); - #endif - #elif ENABLED(COREXZ) - if (block->steps[A_AXIS] || block->steps[C_AXIS]) { - enable_x(); - enable_z(); - } - if (block->steps[Y_AXIS]) enable_y(); - #else - if (block->steps[X_AXIS]) enable_x(); - if (block->steps[Y_AXIS]) enable_y(); - #if DISABLED(Z_LATE_ENABLE) - if (block->steps[Z_AXIS]) enable_z(); - #endif - #endif - - // Enable extruder(s) - if (block->steps[E_AXIS]) { - - #if ENABLED(DISABLE_INACTIVE_EXTRUDER) // Enable only the selected extruder - - for (int i = 0; i < EXTRUDERS; i++) - if (g_uc_extruder_last_move[i] > 0) g_uc_extruder_last_move[i]--; - - switch(extruder) { - case 0: - enable_e0(); - #if ENABLED(DUAL_X_CARRIAGE) - if (extruder_duplication_enabled) { - enable_e1(); - g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2; - } - #endif - g_uc_extruder_last_move[0] = (BLOCK_BUFFER_SIZE) * 2; - #if EXTRUDERS > 1 - if (g_uc_extruder_last_move[1] == 0) disable_e1(); - #if EXTRUDERS > 2 - if (g_uc_extruder_last_move[2] == 0) disable_e2(); - #if EXTRUDERS > 3 - if (g_uc_extruder_last_move[3] == 0) disable_e3(); - #endif - #endif - #endif - break; - #if EXTRUDERS > 1 - case 1: - enable_e1(); - g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2; - if (g_uc_extruder_last_move[0] == 0) disable_e0(); - #if EXTRUDERS > 2 - if (g_uc_extruder_last_move[2] == 0) disable_e2(); - #if EXTRUDERS > 3 - if (g_uc_extruder_last_move[3] == 0) disable_e3(); - #endif - #endif - break; - #if EXTRUDERS > 2 - case 2: - enable_e2(); - g_uc_extruder_last_move[2] = (BLOCK_BUFFER_SIZE) * 2; - if (g_uc_extruder_last_move[0] == 0) disable_e0(); - if (g_uc_extruder_last_move[1] == 0) disable_e1(); - #if EXTRUDERS > 3 - if (g_uc_extruder_last_move[3] == 0) disable_e3(); - #endif - break; - #if EXTRUDERS > 3 - case 3: - enable_e3(); - g_uc_extruder_last_move[3] = (BLOCK_BUFFER_SIZE) * 2; - if (g_uc_extruder_last_move[0] == 0) disable_e0(); - if (g_uc_extruder_last_move[1] == 0) disable_e1(); - if (g_uc_extruder_last_move[2] == 0) disable_e2(); - break; - #endif // EXTRUDERS > 3 - #endif // EXTRUDERS > 2 - #endif // EXTRUDERS > 1 - } - #else - enable_e0(); - enable_e1(); - enable_e2(); - enable_e3(); - #endif - } - - if (block->steps[E_AXIS]) - NOLESS(fr_mm_s, min_feedrate_mm_s); - else - NOLESS(fr_mm_s, min_travel_feedrate_mm_s); - - /** - * This part of the code calculates the total length of the movement. - * For cartesian bots, the X_AXIS is the real X movement and same for Y_AXIS. - * But for corexy bots, that is not true. The "X_AXIS" and "Y_AXIS" motors (that should be named to A_AXIS - * and B_AXIS) cannot be used for X and Y length, because A=X+Y and B=X-Y. - * So we need to create other 2 "AXIS", named X_HEAD and Y_HEAD, meaning the real displacement of the Head. - * Having the real displacement of the head, we can calculate the total movement length and apply the desired speed. - */ - #if ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ) - float delta_mm[7]; - #if ENABLED(COREXY) - delta_mm[X_HEAD] = dx * steps_to_mm[A_AXIS]; - delta_mm[Y_HEAD] = dy * steps_to_mm[B_AXIS]; - delta_mm[Z_AXIS] = dz * steps_to_mm[Z_AXIS]; - delta_mm[A_AXIS] = (dx + dy) * steps_to_mm[A_AXIS]; - delta_mm[B_AXIS] = (dx - dy) * steps_to_mm[B_AXIS]; - #elif ENABLED(COREXZ) - delta_mm[X_HEAD] = dx * steps_to_mm[A_AXIS]; - delta_mm[Y_AXIS] = dy * steps_to_mm[Y_AXIS]; - delta_mm[Z_HEAD] = dz * steps_to_mm[C_AXIS]; - delta_mm[A_AXIS] = (dx + dz) * steps_to_mm[A_AXIS]; - delta_mm[C_AXIS] = (dx - dz) * steps_to_mm[C_AXIS]; - #elif ENABLED(COREYZ) - delta_mm[X_AXIS] = dx * steps_to_mm[X_AXIS]; - delta_mm[Y_HEAD] = dy * steps_to_mm[B_AXIS]; - delta_mm[Z_HEAD] = dz * steps_to_mm[C_AXIS]; - delta_mm[B_AXIS] = (dy + dz) * steps_to_mm[B_AXIS]; - delta_mm[C_AXIS] = (dy - dz) * steps_to_mm[C_AXIS]; - #endif - #else - float delta_mm[4]; - delta_mm[X_AXIS] = dx * steps_to_mm[X_AXIS]; - delta_mm[Y_AXIS] = dy * steps_to_mm[Y_AXIS]; - delta_mm[Z_AXIS] = dz * steps_to_mm[Z_AXIS]; - #endif - delta_mm[E_AXIS] = 0.01 * (de * steps_to_mm[E_AXIS]) * volumetric_multiplier[extruder] * extruder_multiplier[extruder]; - - if (block->steps[X_AXIS] <= dropsegments && block->steps[Y_AXIS] <= dropsegments && block->steps[Z_AXIS] <= dropsegments) { - block->millimeters = fabs(delta_mm[E_AXIS]); - } - else { - block->millimeters = sqrt( - #if ENABLED(COREXY) - sq(delta_mm[X_HEAD]) + sq(delta_mm[Y_HEAD]) + sq(delta_mm[Z_AXIS]) - #elif ENABLED(COREXZ) - sq(delta_mm[X_HEAD]) + sq(delta_mm[Y_AXIS]) + sq(delta_mm[Z_HEAD]) - #elif ENABLED(COREYZ) - sq(delta_mm[X_AXIS]) + sq(delta_mm[Y_HEAD]) + sq(delta_mm[Z_HEAD]) - #else - sq(delta_mm[X_AXIS]) + sq(delta_mm[Y_AXIS]) + sq(delta_mm[Z_AXIS]) - #endif - ); - } - float inverse_millimeters = 1.0 / block->millimeters; // Inverse millimeters to remove multiple divides - - // Calculate moves/second for this move. No divide by zero due to previous checks. - float inverse_mm_s = fr_mm_s * inverse_millimeters; - - int moves_queued = movesplanned(); - - // Slow down when the buffer starts to empty, rather than wait at the corner for a buffer refill - #if ENABLED(OLD_SLOWDOWN) || ENABLED(SLOWDOWN) - bool mq = moves_queued > 1 && moves_queued < (BLOCK_BUFFER_SIZE) / 2; - #if ENABLED(OLD_SLOWDOWN) - if (mq) fr_mm_s *= 2.0 * moves_queued / (BLOCK_BUFFER_SIZE); - #endif - #if ENABLED(SLOWDOWN) - // segment time im micro seconds - unsigned long segment_time = lround(1000000.0/inverse_mm_s); - if (mq) { - if (segment_time < min_segment_time) { - // buffer is draining, add extra time. The amount of time added increases if the buffer is still emptied more. - inverse_mm_s = 1000000.0 / (segment_time + lround(2 * (min_segment_time - segment_time) / moves_queued)); - #ifdef XY_FREQUENCY_LIMIT - segment_time = lround(1000000.0 / inverse_mm_s); - #endif - } - } - #endif - #endif - - block->nominal_speed = block->millimeters * inverse_mm_s; // (mm/sec) Always > 0 - block->nominal_rate = ceil(block->step_event_count * inverse_mm_s); // (step/sec) Always > 0 - - #if ENABLED(FILAMENT_WIDTH_SENSOR) - static float filwidth_e_count = 0, filwidth_delay_dist = 0; - - //FMM update ring buffer used for delay with filament measurements - if (extruder == FILAMENT_SENSOR_EXTRUDER_NUM && filwidth_delay_index2 >= 0) { //only for extruder with filament sensor and if ring buffer is initialized - - const int MMD_CM = MAX_MEASUREMENT_DELAY + 1, MMD_MM = MMD_CM * 10; - - // increment counters with next move in e axis - filwidth_e_count += delta_mm[E_AXIS]; - filwidth_delay_dist += delta_mm[E_AXIS]; - - // Only get new measurements on forward E movement - if (filwidth_e_count > 0.0001) { - - // Loop the delay distance counter (modulus by the mm length) - while (filwidth_delay_dist >= MMD_MM) filwidth_delay_dist -= MMD_MM; - - // Convert into an index into the measurement array - filwidth_delay_index1 = (int)(filwidth_delay_dist * 0.1 + 0.0001); - - // If the index has changed (must have gone forward)... - if (filwidth_delay_index1 != filwidth_delay_index2) { - filwidth_e_count = 0; // Reset the E movement counter - int8_t meas_sample = thermalManager.widthFil_to_size_ratio() - 100; // Subtract 100 to reduce magnitude - to store in a signed char - do { - filwidth_delay_index2 = (filwidth_delay_index2 + 1) % MMD_CM; // The next unused slot - measurement_delay[filwidth_delay_index2] = meas_sample; // Store the measurement - } while (filwidth_delay_index1 != filwidth_delay_index2); // More slots to fill? - } - } - } - #endif - - // Calculate and limit speed in mm/sec for each axis - float current_speed[NUM_AXIS]; - float speed_factor = 1.0; //factor <=1 do decrease speed - LOOP_XYZE(i) { - current_speed[i] = delta_mm[i] * inverse_mm_s; - float cs = fabs(current_speed[i]), mf = max_feedrate_mm_s[i]; - if (cs > mf) speed_factor = min(speed_factor, mf / cs); - } - - // Max segement time in us. - #ifdef XY_FREQUENCY_LIMIT - - // Check and limit the xy direction change frequency - unsigned char direction_change = block->direction_bits ^ old_direction_bits; - old_direction_bits = block->direction_bits; - segment_time = lround((float)segment_time / speed_factor); - - long xs0 = axis_segment_time[X_AXIS][0], - xs1 = axis_segment_time[X_AXIS][1], - xs2 = axis_segment_time[X_AXIS][2], - ys0 = axis_segment_time[Y_AXIS][0], - ys1 = axis_segment_time[Y_AXIS][1], - ys2 = axis_segment_time[Y_AXIS][2]; - - if (TEST(direction_change, X_AXIS)) { - xs2 = axis_segment_time[X_AXIS][2] = xs1; - xs1 = axis_segment_time[X_AXIS][1] = xs0; - xs0 = 0; - } - xs0 = axis_segment_time[X_AXIS][0] = xs0 + segment_time; - - if (TEST(direction_change, Y_AXIS)) { - ys2 = axis_segment_time[Y_AXIS][2] = axis_segment_time[Y_AXIS][1]; - ys1 = axis_segment_time[Y_AXIS][1] = axis_segment_time[Y_AXIS][0]; - ys0 = 0; - } - ys0 = axis_segment_time[Y_AXIS][0] = ys0 + segment_time; - - long max_x_segment_time = max(xs0, max(xs1, xs2)), - max_y_segment_time = max(ys0, max(ys1, ys2)), - min_xy_segment_time = min(max_x_segment_time, max_y_segment_time); - if (min_xy_segment_time < MAX_FREQ_TIME) { - float low_sf = speed_factor * min_xy_segment_time / (MAX_FREQ_TIME); - speed_factor = min(speed_factor, low_sf); - } - #endif // XY_FREQUENCY_LIMIT - - // Correct the speed - if (speed_factor < 1.0) { - LOOP_XYZE(i) current_speed[i] *= speed_factor; - block->nominal_speed *= speed_factor; - block->nominal_rate *= speed_factor; - } - - // Compute and limit the acceleration rate for the trapezoid generator. - float steps_per_mm = block->step_event_count / block->millimeters; - if (!block->steps[X_AXIS] && !block->steps[Y_AXIS] && !block->steps[Z_AXIS]) { - block->acceleration_steps_per_s2 = ceil(retract_acceleration * steps_per_mm); // convert to: acceleration steps/sec^2 - } - else { - // Limit acceleration per axis - block->acceleration_steps_per_s2 = ceil((block->steps[E_AXIS] ? acceleration : travel_acceleration) * steps_per_mm); - if (max_acceleration_steps_per_s2[X_AXIS] < (block->acceleration_steps_per_s2 * block->steps[X_AXIS]) / block->step_event_count) - block->acceleration_steps_per_s2 = (max_acceleration_steps_per_s2[X_AXIS] * block->step_event_count) / block->steps[X_AXIS]; - if (max_acceleration_steps_per_s2[Y_AXIS] < (block->acceleration_steps_per_s2 * block->steps[Y_AXIS]) / block->step_event_count) - block->acceleration_steps_per_s2 = (max_acceleration_steps_per_s2[Y_AXIS] * block->step_event_count) / block->steps[Y_AXIS]; - if (max_acceleration_steps_per_s2[Z_AXIS] < (block->acceleration_steps_per_s2 * block->steps[Z_AXIS]) / block->step_event_count) - block->acceleration_steps_per_s2 = (max_acceleration_steps_per_s2[Z_AXIS] * block->step_event_count) / block->steps[Z_AXIS]; - if (max_acceleration_steps_per_s2[E_AXIS] < (block->acceleration_steps_per_s2 * block->steps[E_AXIS]) / block->step_event_count) - block->acceleration_steps_per_s2 = (max_acceleration_steps_per_s2[E_AXIS] * block->step_event_count) / block->steps[E_AXIS]; - } - block->acceleration = block->acceleration_steps_per_s2 / steps_per_mm; - block->acceleration_rate = (long)(block->acceleration_steps_per_s2 * 16777216.0 / ((F_CPU) * 0.125)); - - #if 0 // Use old jerk for now - - float junction_deviation = 0.1; - - // Compute path unit vector - double unit_vec[3]; - - unit_vec[X_AXIS] = delta_mm[X_AXIS] * inverse_millimeters; - unit_vec[Y_AXIS] = delta_mm[Y_AXIS] * inverse_millimeters; - unit_vec[Z_AXIS] = delta_mm[Z_AXIS] * inverse_millimeters; - - // Compute maximum allowable entry speed at junction by centripetal acceleration approximation. - // Let a circle be tangent to both previous and current path line segments, where the junction - // deviation is defined as the distance from the junction to the closest edge of the circle, - // collinear with the circle center. The circular segment joining the two paths represents the - // path of centripetal acceleration. Solve for max velocity based on max acceleration about the - // radius of the circle, defined indirectly by junction deviation. This may be also viewed as - // path width or max_jerk in the previous grbl version. This approach does not actually deviate - // from path, but used as a robust way to compute cornering speeds, as it takes into account the - // nonlinearities of both the junction angle and junction velocity. - double vmax_junction = MINIMUM_PLANNER_SPEED; // Set default max junction speed - - // Skip first block or when previous_nominal_speed is used as a flag for homing and offset cycles. - if ((block_buffer_head != block_buffer_tail) && (previous_nominal_speed > 0.0)) { - // Compute cosine of angle between previous and current path. (prev_unit_vec is negative) - // NOTE: Max junction velocity is computed without sin() or acos() by trig half angle identity. - double cos_theta = - previous_unit_vec[X_AXIS] * unit_vec[X_AXIS] - - previous_unit_vec[Y_AXIS] * unit_vec[Y_AXIS] - - previous_unit_vec[Z_AXIS] * unit_vec[Z_AXIS] ; - // Skip and use default max junction speed for 0 degree acute junction. - if (cos_theta < 0.95) { - vmax_junction = min(previous_nominal_speed, block->nominal_speed); - // Skip and avoid divide by zero for straight junctions at 180 degrees. Limit to min() of nominal speeds. - if (cos_theta > -0.95) { - // Compute maximum junction velocity based on maximum acceleration and junction deviation - double sin_theta_d2 = sqrt(0.5 * (1.0 - cos_theta)); // Trig half angle identity. Always positive. - vmax_junction = min(vmax_junction, - sqrt(block->acceleration * junction_deviation * sin_theta_d2 / (1.0 - sin_theta_d2))); - } - } - } - #endif - - // Start with a safe speed - float vmax_junction = max_xy_jerk * 0.5, - vmax_junction_factor = 1.0, - mz2 = max_z_jerk * 0.5, - me2 = max_e_jerk * 0.5, - csz = current_speed[Z_AXIS], - cse = current_speed[E_AXIS]; - if (fabs(csz) > mz2) vmax_junction = min(vmax_junction, mz2); - if (fabs(cse) > me2) vmax_junction = min(vmax_junction, me2); - vmax_junction = min(vmax_junction, block->nominal_speed); - float safe_speed = vmax_junction; - - if ((moves_queued > 1) && (previous_nominal_speed > 0.0001)) { - float dsx = current_speed[X_AXIS] - previous_speed[X_AXIS], - dsy = current_speed[Y_AXIS] - previous_speed[Y_AXIS], - dsz = fabs(csz - previous_speed[Z_AXIS]), - dse = fabs(cse - previous_speed[E_AXIS]), - jerk = HYPOT(dsx, dsy); - - // if ((fabs(previous_speed[X_AXIS]) > 0.0001) || (fabs(previous_speed[Y_AXIS]) > 0.0001)) { - vmax_junction = block->nominal_speed; - // } - if (jerk > max_xy_jerk) vmax_junction_factor = max_xy_jerk / jerk; - if (dsz > max_z_jerk) vmax_junction_factor = min(vmax_junction_factor, max_z_jerk / dsz); - if (dse > max_e_jerk) vmax_junction_factor = min(vmax_junction_factor, max_e_jerk / dse); - - vmax_junction = min(previous_nominal_speed, vmax_junction * vmax_junction_factor); // Limit speed to max previous speed - } - block->max_entry_speed = vmax_junction; - - // Initialize block entry speed. Compute based on deceleration to user-defined MINIMUM_PLANNER_SPEED. - double v_allowable = max_allowable_speed(-block->acceleration, MINIMUM_PLANNER_SPEED, block->millimeters); - block->entry_speed = min(vmax_junction, v_allowable); - - // Initialize planner efficiency flags - // Set flag if block will always reach maximum junction speed regardless of entry/exit speeds. - // If a block can de/ac-celerate from nominal speed to zero within the length of the block, then - // the current block and next block junction speeds are guaranteed to always be at their maximum - // junction speeds in deceleration and acceleration, respectively. This is due to how the current - // block nominal speed limits both the current and next maximum junction speeds. Hence, in both - // the reverse and forward planners, the corresponding block junction speed will always be at the - // the maximum junction speed and may always be ignored for any speed reduction checks. - block->nominal_length_flag = (block->nominal_speed <= v_allowable); - block->recalculate_flag = true; // Always calculate trapezoid for new block - - // Update previous path unit_vector and nominal speed - LOOP_XYZE(i) previous_speed[i] = current_speed[i]; - previous_nominal_speed = block->nominal_speed; - - #if ENABLED(LIN_ADVANCE) - - // block->steps[E_AXIS] == block->step_event_count: A problem occurs when there's a very tiny move before a retract. - // In this case, the retract and the move will be executed together. - // This leads to an enormous number of advance steps due to a huge e_acceleration. - // The math is correct, but you don't want a retract move done with advance! - // So this situation is filtered out here. - if (!block->steps[E_AXIS] || (!block->steps[X_AXIS] && !block->steps[Y_AXIS] && !block->steps[Z_AXIS]) || stepper.get_advance_k() == 0 || (uint32_t) block->steps[E_AXIS] == block->step_event_count) { - block->use_advance_lead = false; - } - else { - block->use_advance_lead = true; - block->e_speed_multiplier8 = (block->steps[E_AXIS] << 8) / block->step_event_count; - } - - #elif ENABLED(ADVANCE) - - // Calculate advance rate - if (!block->steps[E_AXIS] || (!block->steps[X_AXIS] && !block->steps[Y_AXIS] && !block->steps[Z_AXIS])) { - block->advance_rate = 0; - block->advance = 0; - } - else { - long acc_dist = estimate_acceleration_distance(0, block->nominal_rate, block->acceleration_steps_per_s2); - float advance = ((STEPS_PER_CUBIC_MM_E) * (EXTRUDER_ADVANCE_K)) * HYPOT(cse, EXTRUSION_AREA) * 256; - block->advance = advance; - block->advance_rate = acc_dist ? advance / (float)acc_dist : 0; - } - /** - SERIAL_ECHO_START; - SERIAL_ECHOPGM("advance :"); - SERIAL_ECHO(block->advance/256.0); - SERIAL_ECHOPGM("advance rate :"); - SERIAL_ECHOLN(block->advance_rate/256.0); - */ - - #endif // ADVANCE or LIN_ADVANCE - - calculate_trapezoid_for_block(block, block->entry_speed / block->nominal_speed, safe_speed / block->nominal_speed); - - // Move buffer head - block_buffer_head = next_buffer_head; - - // Update position - LOOP_XYZE(i) position[i] = target[i]; - - recalculate(); - - stepper.wake_up(); - -} // buffer_line() - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) && DISABLED(DELTA) - - /** - * Get the XYZ position of the steppers as a vector_3. - * - * On CORE machines XYZ is derived from ABC. - */ - vector_3 Planner::adjusted_position() { - vector_3 pos = vector_3(stepper.get_axis_position_mm(X_AXIS), stepper.get_axis_position_mm(Y_AXIS), stepper.get_axis_position_mm(Z_AXIS)); - - //pos.debug("in Planner::adjusted_position"); - //bed_level_matrix.debug("in Planner::adjusted_position"); - - matrix_3x3 inverse = matrix_3x3::transpose(bed_level_matrix); - //inverse.debug("in Planner::inverse"); - - pos.apply_rotation(inverse); - //pos.debug("after rotation"); - - return pos; - } - -#endif // AUTO_BED_LEVELING_FEATURE && !DELTA - -#ifdef UARM_SWIFT -void Planner::set_position_mm(float angle_x, float angle_y, float angle_z) -{ - position[X_AXIS] = lround(angle_x * axis_steps_per_mm[X_AXIS]); - position[Y_AXIS] = lround(angle_y * axis_steps_per_mm[Y_AXIS]); - position[Z_AXIS] = lround(angle_z * axis_steps_per_mm[Z_AXIS]); -} - -#endif // UARM_SWIFT - - -/** - * Directly set the planner XYZ position (hence the stepper positions). - * - * On CORE machines stepper ABC will be translated from the given XYZ. - */ -#if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING) - void Planner::set_position_mm(float x, float y, float z, const float& e) -#else - void Planner::set_position_mm(const float& x, const float& y, const float& z, const float& e) -#endif // AUTO_BED_LEVELING_FEATURE || MESH_BED_LEVELING - { - #if ENABLED(MESH_BED_LEVELING) - - if (mbl.active()) - z += mbl.get_z(RAW_X_POSITION(x), RAW_Y_POSITION(y)); - - #elif ENABLED(AUTO_BED_LEVELING_FEATURE) - - apply_rotation_xyz(bed_level_matrix, x, y, z); - - #endif - - long nx = position[X_AXIS] = lround(x * axis_steps_per_mm[X_AXIS]), - ny = position[Y_AXIS] = lround(y * axis_steps_per_mm[Y_AXIS]), - nz = position[Z_AXIS] = lround(z * axis_steps_per_mm[Z_AXIS]), - ne = position[E_AXIS] = lround(e * axis_steps_per_mm[E_AXIS]); - stepper.set_position(nx, ny, nz, ne); - previous_nominal_speed = 0.0; // Resets planner junction speeds. Assumes start from rest. - - LOOP_XYZE(i) previous_speed[i] = 0.0; - } - -/** - * Directly set the planner E position (hence the stepper E position). - */ -void Planner::set_e_position_mm(const float& e) { - position[E_AXIS] = lround(e * axis_steps_per_mm[E_AXIS]); - stepper.set_e_position(position[E_AXIS]); - previous_speed[E_AXIS] = 0.0; -} - -// Recalculate the steps/s^2 acceleration rates, based on the mm/s^2 -void Planner::reset_acceleration_rates() { - LOOP_XYZE(i) - max_acceleration_steps_per_s2[i] = max_acceleration_mm_per_s2[i] * axis_steps_per_mm[i]; -} - -// Recalculate position, steps_to_mm if axis_steps_per_mm changes! -void Planner::refresh_positioning() { - LOOP_XYZE(i) steps_to_mm[i] = 1.0 / axis_steps_per_mm[i]; - #if ENABLED(DELTA) || ENABLED(SCARA) - inverse_kinematics(current_position); - set_position_mm(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]); - #else - set_position_mm(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - #endif - reset_acceleration_rates(); -} - -#if ENABLED(AUTOTEMP) - - void Planner::autotemp_M109() { - autotemp_enabled = code_seen('F'); - if (autotemp_enabled) autotemp_factor = code_value_temp_diff(); - if (code_seen('S')) autotemp_min = code_value_temp_abs(); - if (code_seen('B')) autotemp_max = code_value_temp_abs(); - } - -#endif diff --git a/lib/Marlin/planner.h b/lib/Marlin/planner.h deleted file mode 100644 index 785b1a7..0000000 --- a/lib/Marlin/planner.h +++ /dev/null @@ -1,342 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * planner.h - * - * Buffer movement commands and manage the acceleration profile plan - * - * Derived from Grbl - * Copyright (c) 2009-2011 Simen Svale Skogsrud - */ - -#ifndef PLANNER_H -#define PLANNER_H - -#include "types.h" -#include "MarlinConfig.h" - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) - #include "vector_3.h" -#endif - -class Planner; -extern Planner planner; - -/** - * struct block_t - * - * A single entry in the planner buffer. - * Tracks linear movement over multiple axes. - * - * The "nominal" values are as-specified by gcode, and - * may never actually be reached due to acceleration limits. - */ -typedef struct { - - unsigned char active_extruder; // The extruder to move (if E move) - - // Fields used by the bresenham algorithm for tracing the line - long steps[NUM_AXIS]; // Step count along each axis - unsigned long step_event_count; // The number of step events required to complete this block - - #if ENABLED(MIXING_EXTRUDER) - unsigned long mix_event_count[MIXING_STEPPERS]; // Scaled step_event_count for the mixing steppers - #endif - - long accelerate_until, // The index of the step event on which to stop acceleration - decelerate_after, // The index of the step event on which to start decelerating - acceleration_rate; // The acceleration rate used for acceleration calculation - - unsigned char direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) - - // Advance extrusion - #if ENABLED(LIN_ADVANCE) - bool use_advance_lead; - int e_speed_multiplier8; // Factorised by 2^8 to avoid float - #elif ENABLED(ADVANCE) - long advance_rate; - volatile long initial_advance; - volatile long final_advance; - float advance; - #endif - - // Fields used by the motion planner to manage acceleration - float nominal_speed, // The nominal speed for this block in mm/sec - entry_speed, // Entry speed at previous-current junction in mm/sec - max_entry_speed, // Maximum allowable junction entry speed in mm/sec - millimeters, // The total travel of this block in mm - acceleration; // acceleration mm/sec^2 - unsigned char recalculate_flag, // Planner flag to recalculate trapezoids on entry junction - nominal_length_flag; // Planner flag for nominal speed always reached - - // Settings for the trapezoid generator - unsigned long nominal_rate, // The nominal step rate for this block in step_events/sec - initial_rate, // The jerk-adjusted step rate at start of block - final_rate, // The minimal rate at exit - acceleration_steps_per_s2; // acceleration steps/sec^2 - - #if FAN_COUNT > 0 - unsigned long fan_speed[FAN_COUNT]; - #endif - - #if ENABLED(BARICUDA) - unsigned long valve_pressure, e_to_p_pressure; - #endif - - volatile char busy; - -} block_t; - -#define BLOCK_MOD(n) ((n)&(BLOCK_BUFFER_SIZE-1)) - -class Planner { - - public: - - /** - * A ring buffer of moves described in steps - */ - static block_t block_buffer[BLOCK_BUFFER_SIZE]; - static volatile uint8_t block_buffer_head; // Index of the next block to be pushed - static volatile uint8_t block_buffer_tail; - - static float max_feedrate_mm_s[NUM_AXIS]; // Max speeds in mm per second - static float axis_steps_per_mm[NUM_AXIS]; - static float steps_to_mm[NUM_AXIS]; - static unsigned long max_acceleration_steps_per_s2[NUM_AXIS]; - static unsigned long max_acceleration_mm_per_s2[NUM_AXIS]; // Use M201 to override by software - - static millis_t min_segment_time; - static float min_feedrate_mm_s; - static float acceleration; // Normal acceleration mm/s^2 DEFAULT ACCELERATION for all printing moves. M204 SXXXX - static float retract_acceleration; // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX - static float travel_acceleration; // Travel acceleration mm/s^2 DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX - static float max_xy_jerk; // The largest speed change requiring no acceleration - static float max_z_jerk; - static float max_e_jerk; - static float min_travel_feedrate_mm_s; - - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - static matrix_3x3 bed_level_matrix; // Transform to compensate for bed level - #endif - - - - private: - - /** - * The current position of the tool in absolute steps - * Recalculated if any axis_steps_per_mm are changed by gcode - */ - static long position[NUM_AXIS]; - - /** - * Speed of previous path line segment - */ - static float previous_speed[NUM_AXIS]; - - /** - * Nominal speed of previous path line segment - */ - static float previous_nominal_speed; - - #if ENABLED(DISABLE_INACTIVE_EXTRUDER) - /** - * Counters to manage disabling inactive extruders - */ - static uint8_t g_uc_extruder_last_move[EXTRUDERS]; - #endif // DISABLE_INACTIVE_EXTRUDER - - #ifdef XY_FREQUENCY_LIMIT - // Used for the frequency limit - #define MAX_FREQ_TIME long(1000000.0/XY_FREQUENCY_LIMIT) - // Old direction bits. Used for speed calculations - static unsigned char old_direction_bits; - // Segment times (in µs). Used for speed calculations - static long axis_segment_time[2][3]; - #endif - - public: - - /** - * Instance Methods - */ - - Planner(); - - void init(); - - /** - * Static (class) Methods - */ - - static void reset_acceleration_rates(); - static void refresh_positioning(); - - // Manage fans, paste pressure, etc. - static void check_axes_activity(); - - /** - * Number of moves currently in the planner - */ - static uint8_t movesplanned() { return BLOCK_MOD(block_buffer_head - block_buffer_tail + BLOCK_BUFFER_SIZE); } - - static bool is_full() { return (block_buffer_tail == BLOCK_MOD(block_buffer_head + 1)); } - - #if ENABLED(AUTO_BED_LEVELING_FEATURE) || ENABLED(MESH_BED_LEVELING) - - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - /** - * The corrected position, applying the bed level matrix - */ - static vector_3 adjusted_position(); - #endif - - /** - * Add a new linear movement to the buffer. - * - * x,y,z,e - target position in mm - * fr_mm_s - (target) speed of the move (mm/s) - * extruder - target extruder - */ - static void buffer_line(float x, float y, float z, const float& e, float fr_mm_s, const uint8_t extruder); - - /** - * Set the planner.position and individual stepper positions. - * Used by G92, G28, G29, and other procedures. - * - * Multiplies by axis_steps_per_mm[] and does necessary conversion - * for COREXY / COREXZ / COREYZ to set the corresponding stepper positions. - * - * Clears previous speed values. - */ - static void set_position_mm(float x, float y, float z, const float& e); - - #else - - static void buffer_line(const float& x, const float& y, const float& z, const float& e, float fr_mm_s, const uint8_t extruder); - static void set_position_mm(const float& x, const float& y, const float& z, const float& e); - - #endif // AUTO_BED_LEVELING_FEATURE || MESH_BED_LEVELING - -#ifdef UARM_SWIFT - static void set_position_mm(float angle_x, float angle_y, float angle_z); -#endif - - - /** - * Set the E position (mm) of the planner (and the E stepper) - */ - static void set_e_position_mm(const float& e); - - /** - * Does the buffer have any blocks queued? - */ - static bool blocks_queued() { return (block_buffer_head != block_buffer_tail); } - - /** - * "Discards" the block and "releases" the memory. - * Called when the current block is no longer needed. - */ - static void discard_current_block() { - if (blocks_queued()) - block_buffer_tail = BLOCK_MOD(block_buffer_tail + 1); - } - - /** - * The current block. NULL if the buffer is empty. - * This also marks the block as busy. - */ - static block_t* get_current_block() { - if (blocks_queued()) { - block_t* block = &block_buffer[block_buffer_tail]; - block->busy = true; - return block; - } - else - return NULL; - } - - #if ENABLED(AUTOTEMP) - static float autotemp_max; - static float autotemp_min; - static float autotemp_factor; - static bool autotemp_enabled; - static void getHighESpeed(); - static void autotemp_M109(); - #endif - - private: - - /** - * Get the index of the next / previous block in the ring buffer - */ - static int8_t next_block_index(int8_t block_index) { return BLOCK_MOD(block_index + 1); } - static int8_t prev_block_index(int8_t block_index) { return BLOCK_MOD(block_index - 1); } - - /** - * Calculate the distance (not time) it takes to accelerate - * from initial_rate to target_rate using the given acceleration: - */ - static float estimate_acceleration_distance(float initial_rate, float target_rate, float accel) { - if (accel == 0) return 0; // accel was 0, set acceleration distance to 0 - return (sq(target_rate) - sq(initial_rate)) / (accel * 2); - } - - /** - * Return the point at which you must start braking (at the rate of -'acceleration') if - * you start at 'initial_rate', accelerate (until reaching the point), and want to end at - * 'final_rate' after traveling 'distance'. - * - * This is used to compute the intersection point between acceleration and deceleration - * in cases where the "trapezoid" has no plateau (i.e., never reaches maximum speed) - */ - static float intersection_distance(float initial_rate, float final_rate, float accel, float distance) { - if (accel == 0) return 0; // accel was 0, set intersection distance to 0 - return (accel * 2 * distance - sq(initial_rate) + sq(final_rate)) / (accel * 4); - } - - /** - * Calculate the maximum allowable speed at this point, in order - * to reach 'target_velocity' using 'acceleration' within a given - * 'distance'. - */ - static float max_allowable_speed(float accel, float target_velocity, float distance) { - return sqrt(sq(target_velocity) - 2 * accel * distance); - } - - static void calculate_trapezoid_for_block(block_t* block, float entry_factor, float exit_factor); - - static void reverse_pass_kernel(block_t* previous, block_t* current, block_t* next); - static void forward_pass_kernel(block_t* previous, block_t* current, block_t* next); - - static void reverse_pass(); - static void forward_pass(); - - static void recalculate_trapezoids(); - - static void recalculate(); - -}; - -#endif // PLANNER_H diff --git a/lib/Marlin/planner_bezier.cpp b/lib/Marlin/planner_bezier.cpp deleted file mode 100644 index 6ca7afd..0000000 --- a/lib/Marlin/planner_bezier.cpp +++ /dev/null @@ -1,203 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * planner_bezier.cpp - * - * Compute and buffer movement commands for bezier curves - * - */ - -#include "Marlin.h" - -#if ENABLED(BEZIER_CURVE_SUPPORT) - -#include "planner.h" -#include "language.h" -#include "temperature.h" - -// See the meaning in the documentation of cubic_b_spline(). -#define MIN_STEP 0.002 -#define MAX_STEP 0.1 -#define SIGMA 0.1 - -/* Compute the linear interpolation between to real numbers. -*/ -inline static float interp(float a, float b, float t) { return (1.0 - t) * a + t * b; } - -/** - * Compute a Bézier curve using the De Casteljau's algorithm (see - * https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm), which is - * easy to code and has good numerical stability (very important, - * since Arudino works with limited precision real numbers). - */ -inline static float eval_bezier(float a, float b, float c, float d, float t) { - float iab = interp(a, b, t); - float ibc = interp(b, c, t); - float icd = interp(c, d, t); - float iabc = interp(iab, ibc, t); - float ibcd = interp(ibc, icd, t); - float iabcd = interp(iabc, ibcd, t); - return iabcd; -} - -/** - * We approximate Euclidean distance with the sum of the coordinates - * offset (so-called "norm 1"), which is quicker to compute. - */ -inline static float dist1(float x1, float y1, float x2, float y2) { return fabs(x1 - x2) + fabs(y1 - y2); } - -/** - * The algorithm for computing the step is loosely based on the one in Kig - * (See https://sources.debian.net/src/kig/4:15.08.3-1/misc/kigpainter.cpp/#L759) - * However, we do not use the stack. - * - * The algorithm goes as it follows: the parameters t runs from 0.0 to - * 1.0 describing the curve, which is evaluated by eval_bezier(). At - * each iteration we have to choose a step, i.e., the increment of the - * t variable. By default the step of the previous iteration is taken, - * and then it is enlarged or reduced depending on how straight the - * curve locally is. The step is always clamped between MIN_STEP/2 and - * 2*MAX_STEP. MAX_STEP is taken at the first iteration. - * - * For some t, the step value is considered acceptable if the curve in - * the interval [t, t+step] is sufficiently straight, i.e., - * sufficiently close to linear interpolation. In practice the - * following test is performed: the distance between eval_bezier(..., - * t+step/2) is evaluated and compared with 0.5*(eval_bezier(..., - * t)+eval_bezier(..., t+step)). If it is smaller than SIGMA, then the - * step value is considered acceptable, otherwise it is not. The code - * seeks to find the larger step value which is considered acceptable. - * - * At every iteration the recorded step value is considered and then - * iteratively halved until it becomes acceptable. If it was already - * acceptable in the beginning (i.e., no halving were done), then - * maybe it was necessary to enlarge it; then it is iteratively - * doubled while it remains acceptable. The last acceptable value - * found is taken, provided that it is between MIN_STEP and MAX_STEP - * and does not bring t over 1.0. - * - * Caveat: this algorithm is not perfect, since it can happen that a - * step is considered acceptable even when the curve is not linear at - * all in the interval [t, t+step] (but its mid point coincides "by - * chance" with the midpoint according to the parametrization). This - * kind of glitches can be eliminated with proper first derivative - * estimates; however, given the improbability of such configurations, - * the mitigation offered by MIN_STEP and the small computational - * power available on Arduino, I think it is not wise to implement it. - */ -void cubic_b_spline(const float position[NUM_AXIS], const float target[NUM_AXIS], const float offset[4], float fr_mm_s, uint8_t extruder) { - // Absolute first and second control points are recovered. - float first0 = position[X_AXIS] + offset[0]; - float first1 = position[Y_AXIS] + offset[1]; - float second0 = target[X_AXIS] + offset[2]; - float second1 = target[Y_AXIS] + offset[3]; - float t = 0.0; - - float bez_target[4]; - bez_target[X_AXIS] = position[X_AXIS]; - bez_target[Y_AXIS] = position[Y_AXIS]; - float step = MAX_STEP; - - millis_t next_idle_ms = millis() + 200UL; - - while (t < 1.0) { - - thermalManager.manage_heater(); - millis_t now = millis(); - if (ELAPSED(now, next_idle_ms)) { - next_idle_ms = now + 200UL; - idle(); - } - - // First try to reduce the step in order to make it sufficiently - // close to a linear interpolation. - bool did_reduce = false; - float new_t = t + step; - NOMORE(new_t, 1.0); - float new_pos0 = eval_bezier(position[X_AXIS], first0, second0, target[X_AXIS], new_t); - float new_pos1 = eval_bezier(position[Y_AXIS], first1, second1, target[Y_AXIS], new_t); - for (;;) { - if (new_t - t < (MIN_STEP)) break; - float candidate_t = 0.5 * (t + new_t); - float candidate_pos0 = eval_bezier(position[X_AXIS], first0, second0, target[X_AXIS], candidate_t); - float candidate_pos1 = eval_bezier(position[Y_AXIS], first1, second1, target[Y_AXIS], candidate_t); - float interp_pos0 = 0.5 * (bez_target[X_AXIS] + new_pos0); - float interp_pos1 = 0.5 * (bez_target[Y_AXIS] + new_pos1); - if (dist1(candidate_pos0, candidate_pos1, interp_pos0, interp_pos1) <= (SIGMA)) break; - new_t = candidate_t; - new_pos0 = candidate_pos0; - new_pos1 = candidate_pos1; - did_reduce = true; - } - - // If we did not reduce the step, maybe we should enlarge it. - if (!did_reduce) for (;;) { - if (new_t - t > MAX_STEP) break; - float candidate_t = t + 2.0 * (new_t - t); - if (candidate_t >= 1.0) break; - float candidate_pos0 = eval_bezier(position[X_AXIS], first0, second0, target[X_AXIS], candidate_t); - float candidate_pos1 = eval_bezier(position[Y_AXIS], first1, second1, target[Y_AXIS], candidate_t); - float interp_pos0 = 0.5 * (bez_target[X_AXIS] + candidate_pos0); - float interp_pos1 = 0.5 * (bez_target[Y_AXIS] + candidate_pos1); - if (dist1(new_pos0, new_pos1, interp_pos0, interp_pos1) > (SIGMA)) break; - new_t = candidate_t; - new_pos0 = candidate_pos0; - new_pos1 = candidate_pos1; - } - - // Check some postcondition; they are disabled in the actual - // Marlin build, but if you test the same code on a computer you - // may want to check they are respect. - /* - assert(new_t <= 1.0); - if (new_t < 1.0) { - assert(new_t - t >= (MIN_STEP) / 2.0); - assert(new_t - t <= (MAX_STEP) * 2.0); - } - */ - - step = new_t - t; - t = new_t; - - // Compute and send new position - bez_target[X_AXIS] = new_pos0; - bez_target[Y_AXIS] = new_pos1; - // FIXME. The following two are wrong, since the parameter t is - // not linear in the distance. - bez_target[Z_AXIS] = interp(position[Z_AXIS], target[Z_AXIS], t); - bez_target[E_AXIS] = interp(position[E_AXIS], target[E_AXIS], t); - clamp_to_software_endstops(bez_target); - - #if ENABLED(DELTA) || ENABLED(SCARA) - inverse_kinematics(bez_target); - #if ENABLED(DELTA) && ENABLED(AUTO_BED_LEVELING_FEATURE) - adjust_delta(bez_target); - #endif - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], bez_target[E_AXIS], fr_mm_s, extruder); - #else - planner.buffer_line(bez_target[X_AXIS], bez_target[Y_AXIS], bez_target[Z_AXIS], bez_target[E_AXIS], fr_mm_s, extruder); - #endif - } -} - -#endif // BEZIER_CURVE_SUPPORT diff --git a/lib/Marlin/planner_bezier.h b/lib/Marlin/planner_bezier.h deleted file mode 100644 index d17e7c8..0000000 --- a/lib/Marlin/planner_bezier.h +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * planner_bezier.h - * - * Compute and buffer movement commands for bezier curves - * - */ - -#ifndef PLANNER_BEZIER_H -#define PLANNER_BEZIER_H - -#include "Marlin.h" - -void cubic_b_spline( - const float position[NUM_AXIS], // current position - const float target[NUM_AXIS], // target position - const float offset[4], // a pair of offsets - float fr_mm_s, - uint8_t extruder - ); - -#endif // PLANNER_BEZIER_H diff --git a/lib/Marlin/point_t.h b/lib/Marlin/point_t.h deleted file mode 100644 index 360abce..0000000 --- a/lib/Marlin/point_t.h +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __POINT_T__ -#define __POINT_T__ - -/** - * @brief Cartesian Point - * @details Represents a three dimensional point on Cartesian coordinate system, - * using an additional fourth dimension for the extrusion length. - * - * @param x The x-coordinate of the point. - * @param y The y-coordinate of the point. - * @param z The z-coordinate of the point. - * @param e The e-coordinate of the point. - */ -struct point_t { - float x; - float y; - float z; - float e; - - /** - * @brief Two dimensional point constructor - * - * @param x The x-coordinate of the point. - * @param y The y-coordinate of the point. - */ - point_t(float const x, float const y) - : point_t(x, y, NAN, NAN) {} - - /** - * @brief Three dimensional point constructor - * - * @param x The x-coordinate of the point. - * @param y The y-coordinate of the point. - * @param z The z-coordinate of the point. - */ - point_t(float const x, float const y, float const z) - : point_t(x, y, z, NAN) {} - - /** - * @brief Tree dimensional point constructor with extrusion length - * - * @param x The x-coordinate of the point. - * @param y The y-coordinate of the point. - * @param z The z-coordinate of the point. - * @param e The e-coordinate of the point. - */ - point_t(float const x, float const y, float const z, float const e) { - this->x = x; - this->y = y; - this->z = z; - this->e = e; - } -}; - -#endif // __POINT_T__ diff --git a/lib/Marlin/printcounter.cpp b/lib/Marlin/printcounter.cpp deleted file mode 100644 index b6cef6e..0000000 --- a/lib/Marlin/printcounter.cpp +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "Marlin.h" -#include "printcounter.h" -#include "duration_t.h" - -PrintCounter::PrintCounter(): super() { - this->loadStats(); -} - -millis_t PrintCounter::deltaDuration() { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("deltaDuration")); - #endif - - millis_t tmp = this->lastDuration; - this->lastDuration = this->duration(); - return this->lastDuration - tmp; -} - -bool PrintCounter::isLoaded() { - return this->loaded; -} - -void PrintCounter::incFilamentUsed(double const &amount) { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("incFilamentUsed")); - #endif - - // Refuses to update data if object is not loaded - if (!this->isLoaded()) return; - - this->data.filamentUsed += amount; // mm -} - - -void PrintCounter::initStats() { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("initStats")); - #endif - - this->loaded = true; - this->data = { 0, 0, 0, 0, 0.0 }; - - this->saveStats(); - eeprom_write_byte((uint8_t *) this->address, 0x16); -} - -void PrintCounter::loadStats() { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("loadStats")); - #endif - - // Checks if the EEPROM block is initialized - if (eeprom_read_byte((uint8_t *) this->address) != 0x16) this->initStats(); - else eeprom_read_block(&this->data, - (void *)(this->address + sizeof(uint8_t)), sizeof(printStatistics)); - - this->loaded = true; -} - -void PrintCounter::saveStats() { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("saveStats")); - #endif - - // Refuses to save data if object is not loaded - if (!this->isLoaded()) return; - - // Saves the struct to EEPROM - eeprom_update_block(&this->data, - (void *)(this->address + sizeof(uint8_t)), sizeof(printStatistics)); -} - -void PrintCounter::showStats() { - char buffer[21]; - duration_t elapsed; - - SERIAL_PROTOCOLPGM(MSG_STATS); - - SERIAL_ECHOPGM("Prints: "); - SERIAL_ECHO(this->data.totalPrints); - - SERIAL_ECHOPGM(", Finished: "); - SERIAL_ECHO(this->data.finishedPrints); - - SERIAL_ECHOPGM(", Failed: "); // Note: Removes 1 from failures with an active counter - SERIAL_ECHO(this->data.totalPrints - this->data.finishedPrints - - ((this->isRunning() || this->isPaused()) ? 1 : 0)); - - SERIAL_EOL; - SERIAL_PROTOCOLPGM(MSG_STATS); - - elapsed = this->data.printTime; - elapsed.toString(buffer); - - SERIAL_ECHOPGM("Total time: "); - SERIAL_ECHO(buffer); - - #if ENABLED(DEBUG_PRINTCOUNTER) - SERIAL_ECHOPGM(" ("); - SERIAL_ECHO(this->data.printTime); - SERIAL_ECHOPGM(")"); - #endif - - elapsed = this->data.longestPrint; - elapsed.toString(buffer); - - SERIAL_ECHOPGM(", Longest job: "); - SERIAL_ECHO(buffer); - - #if ENABLED(DEBUG_PRINTCOUNTER) - SERIAL_ECHOPGM(" ("); - SERIAL_ECHO(this->data.longestPrint); - SERIAL_ECHOPGM(")"); - #endif - - SERIAL_EOL; - SERIAL_PROTOCOLPGM(MSG_STATS); - - SERIAL_ECHOPGM("Filament used: "); - SERIAL_ECHO(this->data.filamentUsed / 1000); - SERIAL_ECHOPGM("m"); - - SERIAL_EOL; -} - -void PrintCounter::tick() { - if (!this->isRunning()) return; - - static uint32_t update_last = millis(), - eeprom_last = millis(); - - millis_t now = millis(); - - // Trying to get the amount of calculations down to the bare min - const static uint16_t i = this->updateInterval * 1000; - - if (now - update_last >= i) { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("tick")); - #endif - - this->data.printTime += this->deltaDuration(); - update_last = now; - } - - // Trying to get the amount of calculations down to the bare min - const static millis_t j = this->saveInterval * 1000; - if (now - eeprom_last >= j) { - eeprom_last = now; - this->saveStats(); - } -} - -// @Override -bool PrintCounter::start() { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("start")); - #endif - - bool paused = this->isPaused(); - - if (super::start()) { - if (!paused) { - this->data.totalPrints++; - this->lastDuration = 0; - } - return true; - } - else return false; -} - -// @Override -bool PrintCounter::stop() { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("stop")); - #endif - - if (super::stop()) { - this->data.finishedPrints++; - this->data.printTime += this->deltaDuration(); - - if (this->duration() > this->data.longestPrint) - this->data.longestPrint = this->duration(); - - this->saveStats(); - return true; - } - else return false; -} - -// @Override -void PrintCounter::reset() { - #if ENABLED(DEBUG_PRINTCOUNTER) - PrintCounter::debug(PSTR("stop")); - #endif - - super::reset(); - this->lastDuration = 0; -} - -#if ENABLED(DEBUG_PRINTCOUNTER) - - void PrintCounter::debug(const char func[]) { - if (DEBUGGING(INFO)) { - SERIAL_ECHOPGM("PrintCounter::"); - serialprintPGM(func); - SERIAL_ECHOLNPGM("()"); - } - } - -#endif diff --git a/lib/Marlin/printcounter.h b/lib/Marlin/printcounter.h deleted file mode 100644 index 0e9d06f..0000000 --- a/lib/Marlin/printcounter.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef PRINTCOUNTER_H -#define PRINTCOUNTER_H - -#include "macros.h" -#include "language.h" -#include "stopwatch.h" -#include - - -// Print debug messages with M111 S2 -//#define DEBUG_PRINTCOUNTER - -struct printStatistics { // 13 bytes - //const uint8_t magic; // Magic header, it will always be 0x16 - uint16_t totalPrints; // Number of prints - uint16_t finishedPrints; // Number of complete prints - uint32_t printTime; // Accumulated printing time - uint32_t longestPrint; // Longest successfull print job - double filamentUsed; // Accumulated filament consumed in mm -}; - -class PrintCounter: public Stopwatch { - private: - typedef Stopwatch super; - - printStatistics data; - - /** - * @brief EEPROM address - * @details Defines the start offset address where the data is stored. - */ - const uint16_t address = 0x32; - - /** - * @brief Interval in seconds between counter updates - * @details This const value defines what will be the time between each - * accumulator update. This is different from the EEPROM save interval. - * - * @note The max value for this option is 60(s), otherwise integer - * overflow will happen. - */ - const uint16_t updateInterval = 10; - - /** - * @brief Interval in seconds between EEPROM saves - * @details This const value defines what will be the time between each - * EEPROM save cycle, the development team recommends to set this value - * no lower than 3600 secs (1 hour). - */ - const uint16_t saveInterval = 3600; - - /** - * @brief Timestamp of the last call to deltaDuration() - * @details Stores the timestamp of the last deltaDuration(), this is - * required due to the updateInterval cycle. - */ - millis_t lastDuration; - - /** - * @brief Stats were loaded from EERPROM - * @details If set to true it indicates if the statistical data was already - * loaded from the EEPROM. - */ - bool loaded = false; - - protected: - /** - * @brief dT since the last call - * @details Returns the elapsed time in seconds since the last call, this is - * used internally for print statistics accounting is not intended to be a - * user callable function. - */ - millis_t deltaDuration(); - - public: - /** - * @brief Class constructor - */ - PrintCounter(); - - /** - * @brief Checks if Print Statistics has been loaded - * @details Returns true if the statistical data has been loaded. - * @return bool - */ - bool isLoaded(); - - /** - * @brief Increments the total filament used - * @details The total filament used counter will be incremented by "amount". - * - * @param amount The amount of filament used in mm - */ - void incFilamentUsed(double const &amount); - - /** - * @brief Resets the Print Statistics - * @details Resets the statistics to zero and saves them to EEPROM creating - * also the magic header. - */ - void initStats(); - - /** - * @brief Loads the Print Statistics - * @details Loads the statistics from EEPROM - */ - void loadStats(); - - /** - * @brief Saves the Print Statistics - * @details Saves the statistics to EEPROM - */ - void saveStats(); - - /** - * @brief Serial output the Print Statistics - * @details This function may change in the future, for now it directly - * prints the statistical data to serial. - */ - void showStats(); - - /** - * @brief Return the currently loaded statistics - * @details Return the raw data, in the same structure used internally - */ - printStatistics getStats() { return this->data; } - - /** - * @brief Loop function - * @details This function should be called at loop, it will take care of - * periodically save the statistical data to EEPROM and do time keeping. - */ - void tick(); - - /** - * The following functions are being overridden - */ - bool start(); - bool stop(); - void reset(); - - #if ENABLED(DEBUG_PRINTCOUNTER) - - /** - * @brief Prints a debug message - * @details Prints a simple debug message "PrintCounter::function" - */ - static void debug(const char func[]); - - #endif -}; - -#endif // PRINTCOUNTER_H diff --git a/lib/Marlin/qr_solve.cpp b/lib/Marlin/qr_solve.cpp deleted file mode 100644 index ddafb00..0000000 --- a/lib/Marlin/qr_solve.cpp +++ /dev/null @@ -1,1591 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "qr_solve.h" - -#if ENABLED(AUTO_BED_LEVELING_GRID) - -#include -#include - -//# include "r8lib.h" - -int i4_min(int i1, int i2) - -/******************************************************************************/ -/** - Purpose: - - I4_MIN returns the smaller of two I4's. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 29 August 2006 - - Author: - - John Burkardt - - Parameters: - - Input, int I1, I2, two integers to be compared. - - Output, int I4_MIN, the smaller of I1 and I2. -*/ -{ - return (i1 < i2) ? i1 : i2; -} - -double r8_epsilon(void) - -/******************************************************************************/ -/** - Purpose: - - R8_EPSILON returns the R8 round off unit. - - Discussion: - - R8_EPSILON is a number R which is a power of 2 with the property that, - to the precision of the computer's arithmetic, - 1 < 1 + R - but - 1 = ( 1 + R / 2 ) - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 September 2012 - - Author: - - John Burkardt - - Parameters: - - Output, double R8_EPSILON, the R8 round-off unit. -*/ -{ - const double value = 2.220446049250313E-016; - return value; -} - -double r8_max(double x, double y) - -/******************************************************************************/ -/** - Purpose: - - R8_MAX returns the maximum of two R8's. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 07 May 2006 - - Author: - - John Burkardt - - Parameters: - - Input, double X, Y, the quantities to compare. - - Output, double R8_MAX, the maximum of X and Y. -*/ -{ - return (y < x) ? x : y; -} - -double r8_abs(double x) - -/******************************************************************************/ -/** - Purpose: - - R8_ABS returns the absolute value of an R8. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 07 May 2006 - - Author: - - John Burkardt - - Parameters: - - Input, double X, the quantity whose absolute value is desired. - - Output, double R8_ABS, the absolute value of X. -*/ -{ - return (x < 0.0) ? -x : x; -} - -double r8_sign(double x) - -/******************************************************************************/ -/** - Purpose: - - R8_SIGN returns the sign of an R8. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 08 May 2006 - - Author: - - John Burkardt - - Parameters: - - Input, double X, the number whose sign is desired. - - Output, double R8_SIGN, the sign of X. -*/ -{ - return (x < 0.0) ? -1.0 : 1.0; -} - -double r8mat_amax(int m, int n, double a[]) - -/******************************************************************************/ -/** - Purpose: - - R8MAT_AMAX returns the maximum absolute value entry of an R8MAT. - - Discussion: - - An R8MAT is a doubly dimensioned array of R8 values, stored as a vector - in column-major order. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 07 September 2012 - - Author: - - John Burkardt - - Parameters: - - Input, int M, the number of rows in A. - - Input, int N, the number of columns in A. - - Input, double A[M*N], the M by N matrix. - - Output, double R8MAT_AMAX, the maximum absolute value entry of A. -*/ -{ - double value = r8_abs(a[0 + 0 * m]); - for (int j = 0; j < n; j++) { - for (int i = 0; i < m; i++) { - NOLESS(value, r8_abs(a[i + j * m])); - } - } - return value; -} - -void r8mat_copy(double a2[], int m, int n, double a1[]) - -/******************************************************************************/ -/** - Purpose: - - R8MAT_COPY_NEW copies one R8MAT to a "new" R8MAT. - - Discussion: - - An R8MAT is a doubly dimensioned array of R8 values, stored as a vector - in column-major order. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 26 July 2008 - - Author: - - John Burkardt - - Parameters: - - Input, int M, N, the number of rows and columns. - - Input, double A1[M*N], the matrix to be copied. - - Output, double R8MAT_COPY_NEW[M*N], the copy of A1. -*/ -{ - for (int j = 0; j < n; j++) { - for (int i = 0; i < m; i++) - a2[i + j * m] = a1[i + j * m]; - } -} - -/******************************************************************************/ - -void daxpy(int n, double da, double dx[], int incx, double dy[], int incy) - -/******************************************************************************/ -/** - Purpose: - - DAXPY computes constant times a vector plus a vector. - - Discussion: - - This routine uses unrolled loops for increments equal to one. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 30 March 2007 - - Author: - - C version by John Burkardt - - Reference: - - Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, - LINPACK User's Guide, - SIAM, 1979. - - Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, - Basic Linear Algebra Subprograms for Fortran Usage, - Algorithm 539, - ACM Transactions on Mathematical Software, - Volume 5, Number 3, September 1979, pages 308-323. - - Parameters: - - Input, int N, the number of elements in DX and DY. - - Input, double DA, the multiplier of DX. - - Input, double DX[*], the first vector. - - Input, int INCX, the increment between successive entries of DX. - - Input/output, double DY[*], the second vector. - On output, DY[*] has been replaced by DY[*] + DA * DX[*]. - - Input, int INCY, the increment between successive entries of DY. -*/ -{ - if (n <= 0 || da == 0.0) return; - - int i, ix, iy, m; - /** - Code for unequal increments or equal increments - not equal to 1. - */ - if (incx != 1 || incy != 1) { - if (0 <= incx) - ix = 0; - else - ix = (- n + 1) * incx; - if (0 <= incy) - iy = 0; - else - iy = (- n + 1) * incy; - for (i = 0; i < n; i++) { - dy[iy] = dy[iy] + da * dx[ix]; - ix = ix + incx; - iy = iy + incy; - } - } - /** - Code for both increments equal to 1. - */ - else { - m = n % 4; - for (i = 0; i < m; i++) - dy[i] = dy[i] + da * dx[i]; - for (i = m; i < n; i = i + 4) { - dy[i ] = dy[i ] + da * dx[i ]; - dy[i + 1] = dy[i + 1] + da * dx[i + 1]; - dy[i + 2] = dy[i + 2] + da * dx[i + 2]; - dy[i + 3] = dy[i + 3] + da * dx[i + 3]; - } - } -} -/******************************************************************************/ - -double ddot(int n, double dx[], int incx, double dy[], int incy) - -/******************************************************************************/ -/** - Purpose: - - DDOT forms the dot product of two vectors. - - Discussion: - - This routine uses unrolled loops for increments equal to one. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 30 March 2007 - - Author: - - C version by John Burkardt - - Reference: - - Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, - LINPACK User's Guide, - SIAM, 1979. - - Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, - Basic Linear Algebra Subprograms for Fortran Usage, - Algorithm 539, - ACM Transactions on Mathematical Software, - Volume 5, Number 3, September 1979, pages 308-323. - - Parameters: - - Input, int N, the number of entries in the vectors. - - Input, double DX[*], the first vector. - - Input, int INCX, the increment between successive entries in DX. - - Input, double DY[*], the second vector. - - Input, int INCY, the increment between successive entries in DY. - - Output, double DDOT, the sum of the product of the corresponding - entries of DX and DY. -*/ -{ - - if (n <= 0) return 0.0; - - int i, m; - double dtemp = 0.0; - - /** - Code for unequal increments or equal increments - not equal to 1. - */ - if (incx != 1 || incy != 1) { - int ix = (incx >= 0) ? 0 : (-n + 1) * incx, - iy = (incy >= 0) ? 0 : (-n + 1) * incy; - for (i = 0; i < n; i++) { - dtemp += dx[ix] * dy[iy]; - ix = ix + incx; - iy = iy + incy; - } - } - /** - Code for both increments equal to 1. - */ - else { - m = n % 5; - for (i = 0; i < m; i++) - dtemp += dx[i] * dy[i]; - for (i = m; i < n; i = i + 5) { - dtemp += dx[i] * dy[i] - + dx[i + 1] * dy[i + 1] - + dx[i + 2] * dy[i + 2] - + dx[i + 3] * dy[i + 3] - + dx[i + 4] * dy[i + 4]; - } - } - return dtemp; -} -/******************************************************************************/ - -double dnrm2(int n, double x[], int incx) - -/******************************************************************************/ -/** - Purpose: - - DNRM2 returns the euclidean norm of a vector. - - Discussion: - - DNRM2 ( X ) = sqrt ( X' * X ) - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 30 March 2007 - - Author: - - C version by John Burkardt - - Reference: - - Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, - LINPACK User's Guide, - SIAM, 1979. - - Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, - Basic Linear Algebra Subprograms for Fortran Usage, - Algorithm 539, - ACM Transactions on Mathematical Software, - Volume 5, Number 3, September 1979, pages 308-323. - - Parameters: - - Input, int N, the number of entries in the vector. - - Input, double X[*], the vector whose norm is to be computed. - - Input, int INCX, the increment between successive entries of X. - - Output, double DNRM2, the Euclidean norm of X. -*/ -{ - double norm; - if (n < 1 || incx < 1) - norm = 0.0; - else if (n == 1) - norm = r8_abs(x[0]); - else { - double scale = 0.0, ssq = 1.0; - int ix = 0; - for (int i = 0; i < n; i++) { - if (x[ix] != 0.0) { - double absxi = r8_abs(x[ix]); - if (scale < absxi) { - ssq = 1.0 + ssq * (scale / absxi) * (scale / absxi); - scale = absxi; - } - else - ssq = ssq + (absxi / scale) * (absxi / scale); - } - ix += incx; - } - norm = scale * sqrt(ssq); - } - return norm; -} -/******************************************************************************/ - -void dqrank(double a[], int lda, int m, int n, double tol, int* kr, - int jpvt[], double qraux[]) - -/******************************************************************************/ -/** - Purpose: - - DQRANK computes the QR factorization of a rectangular matrix. - - Discussion: - - This routine is used in conjunction with DQRLSS to solve - overdetermined, underdetermined and singular linear systems - in a least squares sense. - - DQRANK uses the LINPACK subroutine DQRDC to compute the QR - factorization, with column pivoting, of an M by N matrix A. - The numerical rank is determined using the tolerance TOL. - - Note that on output, ABS ( A(1,1) ) / ABS ( A(KR,KR) ) is an estimate - of the condition number of the matrix of independent columns, - and of R. This estimate will be <= 1/TOL. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 21 April 2012 - - Author: - - C version by John Burkardt. - - Reference: - - Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, - LINPACK User's Guide, - SIAM, 1979, - ISBN13: 978-0-898711-72-1, - LC: QA214.L56. - - Parameters: - - Input/output, double A[LDA*N]. On input, the matrix whose - decomposition is to be computed. On output, the information from DQRDC. - The triangular matrix R of the QR factorization is contained in the - upper triangle and information needed to recover the orthogonal - matrix Q is stored below the diagonal in A and in the vector QRAUX. - - Input, int LDA, the leading dimension of A, which must - be at least M. - - Input, int M, the number of rows of A. - - Input, int N, the number of columns of A. - - Input, double TOL, a relative tolerance used to determine the - numerical rank. The problem should be scaled so that all the elements - of A have roughly the same absolute accuracy, EPS. Then a reasonable - value for TOL is roughly EPS divided by the magnitude of the largest - element. - - Output, int *KR, the numerical rank. - - Output, int JPVT[N], the pivot information from DQRDC. - Columns JPVT(1), ..., JPVT(KR) of the original matrix are linearly - independent to within the tolerance TOL and the remaining columns - are linearly dependent. - - Output, double QRAUX[N], will contain extra information defining - the QR factorization. -*/ -{ - double work[n]; - - for (int i = 0; i < n; i++) - jpvt[i] = 0; - - int job = 1; - - dqrdc(a, lda, m, n, qraux, jpvt, work, job); - - *kr = 0; - int k = i4_min(m, n); - for (int j = 0; j < k; j++) { - if (r8_abs(a[j + j * lda]) <= tol * r8_abs(a[0 + 0 * lda])) - return; - *kr = j + 1; - } -} -/******************************************************************************/ - -void dqrdc(double a[], int lda, int n, int p, double qraux[], int jpvt[], - double work[], int job) - -/******************************************************************************/ -/** - Purpose: - - DQRDC computes the QR factorization of a real rectangular matrix. - - Discussion: - - DQRDC uses Householder transformations. - - Column pivoting based on the 2-norms of the reduced columns may be - performed at the user's option. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 07 June 2005 - - Author: - - C version by John Burkardt. - - Reference: - - Jack Dongarra, Cleve Moler, Jim Bunch and Pete Stewart, - LINPACK User's Guide, - SIAM, (Society for Industrial and Applied Mathematics), - 3600 University City Science Center, - Philadelphia, PA, 19104-2688. - ISBN 0-89871-172-X - - Parameters: - - Input/output, double A(LDA,P). On input, the N by P matrix - whose decomposition is to be computed. On output, A contains in - its upper triangle the upper triangular matrix R of the QR - factorization. Below its diagonal A contains information from - which the orthogonal part of the decomposition can be recovered. - Note that if pivoting has been requested, the decomposition is not that - of the original matrix A but that of A with its columns permuted - as described by JPVT. - - Input, int LDA, the leading dimension of the array A. LDA must - be at least N. - - Input, int N, the number of rows of the matrix A. - - Input, int P, the number of columns of the matrix A. - - Output, double QRAUX[P], contains further information required - to recover the orthogonal part of the decomposition. - - Input/output, integer JPVT[P]. On input, JPVT contains integers that - control the selection of the pivot columns. The K-th column A(*,K) of A - is placed in one of three classes according to the value of JPVT(K). - > 0, then A(K) is an initial column. - = 0, then A(K) is a free column. - < 0, then A(K) is a final column. - Before the decomposition is computed, initial columns are moved to - the beginning of the array A and final columns to the end. Both - initial and final columns are frozen in place during the computation - and only free columns are moved. At the K-th stage of the - reduction, if A(*,K) is occupied by a free column it is interchanged - with the free column of largest reduced norm. JPVT is not referenced - if JOB == 0. On output, JPVT(K) contains the index of the column of the - original matrix that has been interchanged into the K-th column, if - pivoting was requested. - - Workspace, double WORK[P]. WORK is not referenced if JOB == 0. - - Input, int JOB, initiates column pivoting. - 0, no pivoting is done. - nonzero, pivoting is done. -*/ -{ - int jp; - int j; - int lup; - int maxj; - double maxnrm, nrmxl, t, tt; - - int pl = 1, pu = 0; - /** - If pivoting is requested, rearrange the columns. - */ - if (job != 0) { - for (j = 1; j <= p; j++) { - int swapj = (0 < jpvt[j - 1]); - jpvt[j - 1] = (jpvt[j - 1] < 0) ? -j : j; - if (swapj) { - if (j != pl) - dswap(n, a + 0 + (pl - 1)*lda, 1, a + 0 + (j - 1), 1); - jpvt[j - 1] = jpvt[pl - 1]; - jpvt[pl - 1] = j; - pl++; - } - } - pu = p; - for (j = p; 1 <= j; j--) { - if (jpvt[j - 1] < 0) { - jpvt[j - 1] = -jpvt[j - 1]; - if (j != pu) { - dswap(n, a + 0 + (pu - 1)*lda, 1, a + 0 + (j - 1)*lda, 1); - jp = jpvt[pu - 1]; - jpvt[pu - 1] = jpvt[j - 1]; - jpvt[j - 1] = jp; - } - pu = pu - 1; - } - } - } - /** - Compute the norms of the free columns. - */ - for (j = pl; j <= pu; j++) - qraux[j - 1] = dnrm2(n, a + 0 + (j - 1) * lda, 1); - for (j = pl; j <= pu; j++) - work[j - 1] = qraux[j - 1]; - /** - Perform the Householder reduction of A. - */ - lup = i4_min(n, p); - for (int l = 1; l <= lup; l++) { - /** - Bring the column of largest norm into the pivot position. - */ - if (pl <= l && l < pu) { - maxnrm = 0.0; - maxj = l; - for (j = l; j <= pu; j++) { - if (maxnrm < qraux[j - 1]) { - maxnrm = qraux[j - 1]; - maxj = j; - } - } - if (maxj != l) { - dswap(n, a + 0 + (l - 1)*lda, 1, a + 0 + (maxj - 1)*lda, 1); - qraux[maxj - 1] = qraux[l - 1]; - work[maxj - 1] = work[l - 1]; - jp = jpvt[maxj - 1]; - jpvt[maxj - 1] = jpvt[l - 1]; - jpvt[l - 1] = jp; - } - } - /** - Compute the Householder transformation for column L. - */ - qraux[l - 1] = 0.0; - if (l != n) { - nrmxl = dnrm2(n - l + 1, a + l - 1 + (l - 1) * lda, 1); - if (nrmxl != 0.0) { - if (a[l - 1 + (l - 1)*lda] != 0.0) - nrmxl = nrmxl * r8_sign(a[l - 1 + (l - 1) * lda]); - dscal(n - l + 1, 1.0 / nrmxl, a + l - 1 + (l - 1)*lda, 1); - a[l - 1 + (l - 1)*lda] = 1.0 + a[l - 1 + (l - 1) * lda]; - /** - Apply the transformation to the remaining columns, updating the norms. - */ - for (j = l + 1; j <= p; j++) { - t = -ddot(n - l + 1, a + l - 1 + (l - 1) * lda, 1, a + l - 1 + (j - 1) * lda, 1) - / a[l - 1 + (l - 1) * lda]; - daxpy(n - l + 1, t, a + l - 1 + (l - 1)*lda, 1, a + l - 1 + (j - 1)*lda, 1); - if (pl <= j && j <= pu) { - if (qraux[j - 1] != 0.0) { - tt = 1.0 - pow(r8_abs(a[l - 1 + (j - 1) * lda]) / qraux[j - 1], 2); - tt = r8_max(tt, 0.0); - t = tt; - tt = 1.0 + 0.05 * tt * pow(qraux[j - 1] / work[j - 1], 2); - if (tt != 1.0) - qraux[j - 1] = qraux[j - 1] * sqrt(t); - else { - qraux[j - 1] = dnrm2(n - l, a + l + (j - 1) * lda, 1); - work[j - 1] = qraux[j - 1]; - } - } - } - } - /** - Save the transformation. - */ - qraux[l - 1] = a[l - 1 + (l - 1) * lda]; - a[l - 1 + (l - 1)*lda] = -nrmxl; - } - } - } -} -/******************************************************************************/ - -int dqrls(double a[], int lda, int m, int n, double tol, int* kr, double b[], - double x[], double rsd[], int jpvt[], double qraux[], int itask) - -/******************************************************************************/ -/** - Purpose: - - DQRLS factors and solves a linear system in the least squares sense. - - Discussion: - - The linear system may be overdetermined, underdetermined or singular. - The solution is obtained using a QR factorization of the - coefficient matrix. - - DQRLS can be efficiently used to solve several least squares - problems with the same matrix A. The first system is solved - with ITASK = 1. The subsequent systems are solved with - ITASK = 2, to avoid the recomputation of the matrix factors. - The parameters KR, JPVT, and QRAUX must not be modified - between calls to DQRLS. - - DQRLS is used to solve in a least squares sense - overdetermined, underdetermined and singular linear systems. - The system is A*X approximates B where A is M by N. - B is a given M-vector, and X is the N-vector to be computed. - A solution X is found which minimimzes the sum of squares (2-norm) - of the residual, A*X - B. - - The numerical rank of A is determined using the tolerance TOL. - - DQRLS uses the LINPACK subroutine DQRDC to compute the QR - factorization, with column pivoting, of an M by N matrix A. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 10 September 2012 - - Author: - - C version by John Burkardt. - - Reference: - - David Kahaner, Cleve Moler, Steven Nash, - Numerical Methods and Software, - Prentice Hall, 1989, - ISBN: 0-13-627258-4, - LC: TA345.K34. - - Parameters: - - Input/output, double A[LDA*N], an M by N matrix. - On input, the matrix whose decomposition is to be computed. - In a least squares data fitting problem, A(I,J) is the - value of the J-th basis (model) function at the I-th data point. - On output, A contains the output from DQRDC. The triangular matrix R - of the QR factorization is contained in the upper triangle and - information needed to recover the orthogonal matrix Q is stored - below the diagonal in A and in the vector QRAUX. - - Input, int LDA, the leading dimension of A. - - Input, int M, the number of rows of A. - - Input, int N, the number of columns of A. - - Input, double TOL, a relative tolerance used to determine the - numerical rank. The problem should be scaled so that all the elements - of A have roughly the same absolute accuracy EPS. Then a reasonable - value for TOL is roughly EPS divided by the magnitude of the largest - element. - - Output, int *KR, the numerical rank. - - Input, double B[M], the right hand side of the linear system. - - Output, double X[N], a least squares solution to the linear - system. - - Output, double RSD[M], the residual, B - A*X. RSD may - overwrite B. - - Workspace, int JPVT[N], required if ITASK = 1. - Columns JPVT(1), ..., JPVT(KR) of the original matrix are linearly - independent to within the tolerance TOL and the remaining columns - are linearly dependent. ABS ( A(1,1) ) / ABS ( A(KR,KR) ) is an estimate - of the condition number of the matrix of independent columns, - and of R. This estimate will be <= 1/TOL. - - Workspace, double QRAUX[N], required if ITASK = 1. - - Input, int ITASK. - 1, DQRLS factors the matrix A and solves the least squares problem. - 2, DQRLS assumes that the matrix A was factored with an earlier - call to DQRLS, and only solves the least squares problem. - - Output, int DQRLS, error code. - 0: no error - -1: LDA < M (fatal error) - -2: N < 1 (fatal error) - -3: ITASK < 1 (fatal error) -*/ -{ - int ind; - if (lda < m) { - /*fprintf ( stderr, "\n" ); - fprintf ( stderr, "DQRLS - Fatal error!\n" ); - fprintf ( stderr, " LDA < M.\n" );*/ - ind = -1; - return ind; - } - - if (n <= 0) { - /*fprintf ( stderr, "\n" ); - fprintf ( stderr, "DQRLS - Fatal error!\n" ); - fprintf ( stderr, " N <= 0.\n" );*/ - ind = -2; - return ind; - } - - if (itask < 1) { - /*fprintf ( stderr, "\n" ); - fprintf ( stderr, "DQRLS - Fatal error!\n" ); - fprintf ( stderr, " ITASK < 1.\n" );*/ - ind = -3; - return ind; - } - - ind = 0; - /** - Factor the matrix. - */ - if (itask == 1) - dqrank(a, lda, m, n, tol, kr, jpvt, qraux); - /** - Solve the least-squares problem. - */ - dqrlss(a, lda, m, n, *kr, b, x, rsd, jpvt, qraux); - return ind; -} -/******************************************************************************/ - -void dqrlss(double a[], int lda, int m, int n, int kr, double b[], double x[], - double rsd[], int jpvt[], double qraux[]) - -/******************************************************************************/ -/** - Purpose: - - DQRLSS solves a linear system in a least squares sense. - - Discussion: - - DQRLSS must be preceded by a call to DQRANK. - - The system is to be solved is - A * X = B - where - A is an M by N matrix with rank KR, as determined by DQRANK, - B is a given M-vector, - X is the N-vector to be computed. - - A solution X, with at most KR nonzero components, is found which - minimizes the 2-norm of the residual (A*X-B). - - Once the matrix A has been formed, DQRANK should be - called once to decompose it. Then, for each right hand - side B, DQRLSS should be called once to obtain the - solution and residual. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 10 September 2012 - - Author: - - C version by John Burkardt - - Parameters: - - Input, double A[LDA*N], the QR factorization information - from DQRANK. The triangular matrix R of the QR factorization is - contained in the upper triangle and information needed to recover - the orthogonal matrix Q is stored below the diagonal in A and in - the vector QRAUX. - - Input, int LDA, the leading dimension of A, which must - be at least M. - - Input, int M, the number of rows of A. - - Input, int N, the number of columns of A. - - Input, int KR, the rank of the matrix, as estimated by DQRANK. - - Input, double B[M], the right hand side of the linear system. - - Output, double X[N], a least squares solution to the - linear system. - - Output, double RSD[M], the residual, B - A*X. RSD may - overwrite B. - - Input, int JPVT[N], the pivot information from DQRANK. - Columns JPVT[0], ..., JPVT[KR-1] of the original matrix are linearly - independent to within the tolerance TOL and the remaining columns - are linearly dependent. - - Input, double QRAUX[N], auxiliary information from DQRANK - defining the QR factorization. -*/ -{ - int i; - int info; - int j; - int job; - int k; - double t; - - if (kr != 0) { - job = 110; - info = dqrsl(a, lda, m, kr, qraux, b, rsd, rsd, x, rsd, rsd, job); UNUSED(info); - } - - for (i = 0; i < n; i++) - jpvt[i] = - jpvt[i]; - - for (i = kr; i < n; i++) - x[i] = 0.0; - - for (j = 1; j <= n; j++) { - if (jpvt[j - 1] <= 0) { - k = - jpvt[j - 1]; - jpvt[j - 1] = k; - - while (k != j) { - t = x[j - 1]; - x[j - 1] = x[k - 1]; - x[k - 1] = t; - jpvt[k - 1] = -jpvt[k - 1]; - k = jpvt[k - 1]; - } - } - } -} -/******************************************************************************/ - -int dqrsl(double a[], int lda, int n, int k, double qraux[], double y[], - double qy[], double qty[], double b[], double rsd[], double ab[], int job) - -/******************************************************************************/ -/** - Purpose: - - DQRSL computes transformations, projections, and least squares solutions. - - Discussion: - - DQRSL requires the output of DQRDC. - - For K <= min(N,P), let AK be the matrix - - AK = ( A(JPVT[0]), A(JPVT(2)), ..., A(JPVT(K)) ) - - formed from columns JPVT[0], ..., JPVT(K) of the original - N by P matrix A that was input to DQRDC. If no pivoting was - done, AK consists of the first K columns of A in their - original order. DQRDC produces a factored orthogonal matrix Q - and an upper triangular matrix R such that - - AK = Q * (R) - (0) - - This information is contained in coded form in the arrays - A and QRAUX. - - The parameters QY, QTY, B, RSD, and AB are not referenced - if their computation is not requested and in this case - can be replaced by dummy variables in the calling program. - To save storage, the user may in some cases use the same - array for different parameters in the calling sequence. A - frequently occurring example is when one wishes to compute - any of B, RSD, or AB and does not need Y or QTY. In this - case one may identify Y, QTY, and one of B, RSD, or AB, while - providing separate arrays for anything else that is to be - computed. - - Thus the calling sequence - - dqrsl ( a, lda, n, k, qraux, y, dum, y, b, y, dum, 110, info ) - - will result in the computation of B and RSD, with RSD - overwriting Y. More generally, each item in the following - list contains groups of permissible identifications for - a single calling sequence. - - 1. (Y,QTY,B) (RSD) (AB) (QY) - - 2. (Y,QTY,RSD) (B) (AB) (QY) - - 3. (Y,QTY,AB) (B) (RSD) (QY) - - 4. (Y,QY) (QTY,B) (RSD) (AB) - - 5. (Y,QY) (QTY,RSD) (B) (AB) - - 6. (Y,QY) (QTY,AB) (B) (RSD) - - In any group the value returned in the array allocated to - the group corresponds to the last member of the group. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 07 June 2005 - - Author: - - C version by John Burkardt. - - Reference: - - Jack Dongarra, Cleve Moler, Jim Bunch and Pete Stewart, - LINPACK User's Guide, - SIAM, (Society for Industrial and Applied Mathematics), - 3600 University City Science Center, - Philadelphia, PA, 19104-2688. - ISBN 0-89871-172-X - - Parameters: - - Input, double A[LDA*P], contains the output of DQRDC. - - Input, int LDA, the leading dimension of the array A. - - Input, int N, the number of rows of the matrix AK. It must - have the same value as N in DQRDC. - - Input, int K, the number of columns of the matrix AK. K - must not be greater than min(N,P), where P is the same as in the - calling sequence to DQRDC. - - Input, double QRAUX[P], the auxiliary output from DQRDC. - - Input, double Y[N], a vector to be manipulated by DQRSL. - - Output, double QY[N], contains Q * Y, if requested. - - Output, double QTY[N], contains Q' * Y, if requested. - - Output, double B[K], the solution of the least squares problem - minimize norm2 ( Y - AK * B), - if its computation has been requested. Note that if pivoting was - requested in DQRDC, the J-th component of B will be associated with - column JPVT(J) of the original matrix A that was input into DQRDC. - - Output, double RSD[N], the least squares residual Y - AK * B, - if its computation has been requested. RSD is also the orthogonal - projection of Y onto the orthogonal complement of the column space - of AK. - - Output, double AB[N], the least squares approximation Ak * B, - if its computation has been requested. AB is also the orthogonal - projection of Y onto the column space of A. - - Input, integer JOB, specifies what is to be computed. JOB has - the decimal expansion ABCDE, with the following meaning: - - if A != 0, compute QY. - if B != 0, compute QTY. - if C != 0, compute QTY and B. - if D != 0, compute QTY and RSD. - if E != 0, compute QTY and AB. - - Note that a request to compute B, RSD, or AB automatically triggers - the computation of QTY, for which an array must be provided in the - calling sequence. - - Output, int DQRSL, is zero unless the computation of B has - been requested and R is exactly singular. In this case, INFO is the - index of the first zero diagonal element of R, and B is left unaltered. -*/ -{ - int cab; - int cb; - int cqty; - int cqy; - int cr; - int i; - int info; - int j; - int jj; - int ju; - double t; - double temp; - /** - Set INFO flag. - */ - info = 0; - - /** - Determine what is to be computed. - */ - cqy = ( job / 10000 != 0); - cqty = ((job % 10000) != 0); - cb = ((job % 1000) / 100 != 0); - cr = ((job % 100) / 10 != 0); - cab = ((job % 10) != 0); - ju = i4_min(k, n - 1); - - /** - Special action when N = 1. - */ - if (ju == 0) { - if (cqy) - qy[0] = y[0]; - if (cqty) - qty[0] = y[0]; - if (cab) - ab[0] = y[0]; - if (cb) { - if (a[0 + 0 * lda] == 0.0) - info = 1; - else - b[0] = y[0] / a[0 + 0 * lda]; - } - if (cr) - rsd[0] = 0.0; - return info; - } - /** - Set up to compute QY or QTY. - */ - if (cqy) { - for (i = 1; i <= n; i++) - qy[i - 1] = y[i - 1]; - } - if (cqty) { - for (i = 1; i <= n; i++) - qty[i - 1] = y[i - 1]; - } - /** - Compute QY. - */ - if (cqy) { - for (jj = 1; jj <= ju; jj++) { - j = ju - jj + 1; - if (qraux[j - 1] != 0.0) { - temp = a[j - 1 + (j - 1) * lda]; - a[j - 1 + (j - 1)*lda] = qraux[j - 1]; - t = -ddot(n - j + 1, a + j - 1 + (j - 1) * lda, 1, qy + j - 1, 1) / a[j - 1 + (j - 1) * lda]; - daxpy(n - j + 1, t, a + j - 1 + (j - 1)*lda, 1, qy + j - 1, 1); - a[j - 1 + (j - 1)*lda] = temp; - } - } - } - /** - Compute Q'*Y. - */ - if (cqty) { - for (j = 1; j <= ju; j++) { - if (qraux[j - 1] != 0.0) { - temp = a[j - 1 + (j - 1) * lda]; - a[j - 1 + (j - 1)*lda] = qraux[j - 1]; - t = -ddot(n - j + 1, a + j - 1 + (j - 1) * lda, 1, qty + j - 1, 1) / a[j - 1 + (j - 1) * lda]; - daxpy(n - j + 1, t, a + j - 1 + (j - 1)*lda, 1, qty + j - 1, 1); - a[j - 1 + (j - 1)*lda] = temp; - } - } - } - /** - Set up to compute B, RSD, or AB. - */ - if (cb) { - for (i = 1; i <= k; i++) - b[i - 1] = qty[i - 1]; - } - if (cab) { - for (i = 1; i <= k; i++) - ab[i - 1] = qty[i - 1]; - } - if (cr && k < n) { - for (i = k + 1; i <= n; i++) - rsd[i - 1] = qty[i - 1]; - } - if (cab && k + 1 <= n) { - for (i = k + 1; i <= n; i++) - ab[i - 1] = 0.0; - } - if (cr) { - for (i = 1; i <= k; i++) - rsd[i - 1] = 0.0; - } - /** - Compute B. - */ - if (cb) { - for (jj = 1; jj <= k; jj++) { - j = k - jj + 1; - if (a[j - 1 + (j - 1)*lda] == 0.0) { - info = j; - break; - } - b[j - 1] = b[j - 1] / a[j - 1 + (j - 1) * lda]; - if (j != 1) { - t = -b[j - 1]; - daxpy(j - 1, t, a + 0 + (j - 1)*lda, 1, b, 1); - } - } - } - /** - Compute RSD or AB as required. - */ - if (cr || cab) { - for (jj = 1; jj <= ju; jj++) { - j = ju - jj + 1; - if (qraux[j - 1] != 0.0) { - temp = a[j - 1 + (j - 1) * lda]; - a[j - 1 + (j - 1)*lda] = qraux[j - 1]; - if (cr) { - t = -ddot(n - j + 1, a + j - 1 + (j - 1) * lda, 1, rsd + j - 1, 1) - / a[j - 1 + (j - 1) * lda]; - daxpy(n - j + 1, t, a + j - 1 + (j - 1)*lda, 1, rsd + j - 1, 1); - } - if (cab) { - t = -ddot(n - j + 1, a + j - 1 + (j - 1) * lda, 1, ab + j - 1, 1) - / a[j - 1 + (j - 1) * lda]; - daxpy(n - j + 1, t, a + j - 1 + (j - 1)*lda, 1, ab + j - 1, 1); - } - a[j - 1 + (j - 1)*lda] = temp; - } - } - } - return info; -} -/******************************************************************************/ - -/******************************************************************************/ - -void dscal(int n, double sa, double x[], int incx) - -/******************************************************************************/ -/** - Purpose: - - DSCAL scales a vector by a constant. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 30 March 2007 - - Author: - - C version by John Burkardt - - Reference: - - Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, - LINPACK User's Guide, - SIAM, 1979. - - Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, - Basic Linear Algebra Subprograms for Fortran Usage, - Algorithm 539, - ACM Transactions on Mathematical Software, - Volume 5, Number 3, September 1979, pages 308-323. - - Parameters: - - Input, int N, the number of entries in the vector. - - Input, double SA, the multiplier. - - Input/output, double X[*], the vector to be scaled. - - Input, int INCX, the increment between successive entries of X. -*/ -{ - int i; - int ix; - int m; - - if (n <= 0) return; - - if (incx == 1) { - m = n % 5; - for (i = 0; i < m; i++) - x[i] = sa * x[i]; - for (i = m; i < n; i = i + 5) { - x[i] = sa * x[i]; - x[i + 1] = sa * x[i + 1]; - x[i + 2] = sa * x[i + 2]; - x[i + 3] = sa * x[i + 3]; - x[i + 4] = sa * x[i + 4]; - } - } - else { - if (0 <= incx) - ix = 0; - else - ix = (- n + 1) * incx; - for (i = 0; i < n; i++) { - x[ix] = sa * x[ix]; - ix = ix + incx; - } - } -} -/******************************************************************************/ - - -void dswap(int n, double x[], int incx, double y[], int incy) - -/******************************************************************************/ -/** - Purpose: - - DSWAP interchanges two vectors. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 30 March 2007 - - Author: - - C version by John Burkardt - - Reference: - - Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, - LINPACK User's Guide, - SIAM, 1979. - - Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, - Basic Linear Algebra Subprograms for Fortran Usage, - Algorithm 539, - ACM Transactions on Mathematical Software, - Volume 5, Number 3, September 1979, pages 308-323. - - Parameters: - - Input, int N, the number of entries in the vectors. - - Input/output, double X[*], one of the vectors to swap. - - Input, int INCX, the increment between successive entries of X. - - Input/output, double Y[*], one of the vectors to swap. - - Input, int INCY, the increment between successive elements of Y. -*/ -{ - if (n <= 0) return; - - int i, ix, iy, m; - double temp; - - if (incx == 1 && incy == 1) { - m = n % 3; - for (i = 0; i < m; i++) { - temp = x[i]; - x[i] = y[i]; - y[i] = temp; - } - for (i = m; i < n; i = i + 3) { - temp = x[i]; - x[i] = y[i]; - y[i] = temp; - temp = x[i + 1]; - x[i + 1] = y[i + 1]; - y[i + 1] = temp; - temp = x[i + 2]; - x[i + 2] = y[i + 2]; - y[i + 2] = temp; - } - } - else { - ix = (incx >= 0) ? 0 : (-n + 1) * incx; - iy = (incy >= 0) ? 0 : (-n + 1) * incy; - for (i = 0; i < n; i++) { - temp = x[ix]; - x[ix] = y[iy]; - y[iy] = temp; - ix = ix + incx; - iy = iy + incy; - } - } -} -/******************************************************************************/ - -/******************************************************************************/ - -void qr_solve(double x[], int m, int n, double a[], double b[]) - -/******************************************************************************/ -/** - Purpose: - - QR_SOLVE solves a linear system in the least squares sense. - - Discussion: - - If the matrix A has full column rank, then the solution X should be the - unique vector that minimizes the Euclidean norm of the residual. - - If the matrix A does not have full column rank, then the solution is - not unique; the vector X will minimize the residual norm, but so will - various other vectors. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 11 September 2012 - - Author: - - John Burkardt - - Reference: - - David Kahaner, Cleve Moler, Steven Nash, - Numerical Methods and Software, - Prentice Hall, 1989, - ISBN: 0-13-627258-4, - LC: TA345.K34. - - Parameters: - - Input, int M, the number of rows of A. - - Input, int N, the number of columns of A. - - Input, double A[M*N], the matrix. - - Input, double B[M], the right hand side. - - Output, double QR_SOLVE[N], the least squares solution. -*/ -{ - double a_qr[n * m], qraux[n], r[m], tol; - int ind, itask, jpvt[n], kr, lda; - - r8mat_copy(a_qr, m, n, a); - lda = m; - tol = r8_epsilon() / r8mat_amax(m, n, a_qr); - itask = 1; - - ind = dqrls(a_qr, lda, m, n, tol, &kr, b, x, r, jpvt, qraux, itask); UNUSED(ind); -} -/******************************************************************************/ - -#endif diff --git a/lib/Marlin/qr_solve.h b/lib/Marlin/qr_solve.h deleted file mode 100644 index 3ea30e9..0000000 --- a/lib/Marlin/qr_solve.h +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "MarlinConfig.h" - -#if ENABLED(AUTO_BED_LEVELING_GRID) - -void daxpy(int n, double da, double dx[], int incx, double dy[], int incy); -double ddot(int n, double dx[], int incx, double dy[], int incy); -double dnrm2(int n, double x[], int incx); -void dqrank(double a[], int lda, int m, int n, double tol, int* kr, - int jpvt[], double qraux[]); -void dqrdc(double a[], int lda, int n, int p, double qraux[], int jpvt[], - double work[], int job); -int dqrls(double a[], int lda, int m, int n, double tol, int* kr, double b[], - double x[], double rsd[], int jpvt[], double qraux[], int itask); -void dqrlss(double a[], int lda, int m, int n, int kr, double b[], double x[], - double rsd[], int jpvt[], double qraux[]); -int dqrsl(double a[], int lda, int n, int k, double qraux[], double y[], - double qy[], double qty[], double b[], double rsd[], double ab[], int job); -void dscal(int n, double sa, double x[], int incx); -void dswap(int n, double x[], int incx, double y[], int incy); -void qr_solve(double x[], int m, int n, double a[], double b[]); - -#endif diff --git a/lib/Marlin/servo.cpp b/lib/Marlin/servo.cpp deleted file mode 100644 index b5f9ed8..0000000 --- a/lib/Marlin/servo.cpp +++ /dev/null @@ -1,320 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * servo.cpp - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2 - * Copyright (c) 2009 Michael Margolis. All right reserved. - */ - -/** - * A servo is activated by creating an instance of the Servo class passing the desired pin to the attach() method. - * The servos are pulsed in the background using the value most recently written using the write() method - * - * Note that analogWrite of PWM on pins associated with the timer are disabled when the first servo is attached. - * Timers are seized as needed in groups of 12 servos - 24 servos use two timers, 48 servos will use four. - * - * The methods are: - * - * Servo - Class for manipulating servo motors connected to Arduino pins. - * - * attach(pin) - Attach a servo motor to an i/o pin. - * attach(pin, min, max) - Attach to a pin, setting min and max values in microseconds - * Default min is 544, max is 2400 - * - * write() - Set the servo angle in degrees. (Invalid angles —over MIN_PULSE_WIDTH— are treated as µs.) - * writeMicroseconds() - Set the servo pulse width in microseconds. - * move(pin, angle) - Sequence of attach(pin), write(angle), delay(SERVO_DELAY). - * With DEACTIVATE_SERVOS_AFTER_MOVE it detaches after SERVO_DELAY. - * read() - Get the last-written servo pulse width as an angle between 0 and 180. - * readMicroseconds() - Get the last-written servo pulse width in microseconds. - * attached() - Return true if a servo is attached. - * detach() - Stop an attached servo from pulsing its i/o pin. - * - */ -#include "MarlinConfig.h" - -#if HAS_SERVOS - -#include -#include - -#include "servo.h" - -#define usToTicks(_us) (( clockCyclesPerMicrosecond()* _us) / 8) // converts microseconds to tick (assumes prescale of 8) // 12 Aug 2009 -#define ticksToUs(_ticks) (( (unsigned)_ticks * 8)/ clockCyclesPerMicrosecond() ) // converts from ticks back to microseconds - -#define TRIM_DURATION 2 // compensation ticks to trim adjust for digitalWrite delays // 12 August 2009 - -//#define NBR_TIMERS ((MAX_SERVOS) / (SERVOS_PER_TIMER)) - -static ServoInfo_t servo_info[MAX_SERVOS]; // static array of servo info structures -static volatile int8_t Channel[_Nbr_16timers ]; // counter for the servo being pulsed for each timer (or -1 if refresh interval) - -uint8_t ServoCount = 0; // the total number of attached servos - - -// convenience macros -#define SERVO_INDEX_TO_TIMER(_servo_nbr) ((timer16_Sequence_t)(_servo_nbr / (SERVOS_PER_TIMER))) // returns the timer controlling this servo -#define SERVO_INDEX_TO_CHANNEL(_servo_nbr) (_servo_nbr % (SERVOS_PER_TIMER)) // returns the index of the servo on this timer -#define SERVO_INDEX(_timer,_channel) ((_timer*(SERVOS_PER_TIMER)) + _channel) // macro to access servo index by timer and channel -#define SERVO(_timer,_channel) (servo_info[SERVO_INDEX(_timer,_channel)]) // macro to access servo class by timer and channel - -#define SERVO_MIN() (MIN_PULSE_WIDTH - this->min * 4) // minimum value in uS for this servo -#define SERVO_MAX() (MAX_PULSE_WIDTH - this->max * 4) // maximum value in uS for this servo - -/************ static functions common to all instances ***********************/ - -static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t* TCNTn, volatile uint16_t* OCRnA) { - if (Channel[timer] < 0) - *TCNTn = 0; // channel set to -1 indicated that refresh interval completed so reset the timer - else { - if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && SERVO(timer, Channel[timer]).Pin.isActive) - digitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, LOW); // pulse this channel low if activated - } - - Channel[timer]++; // increment to the next channel - if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) { - *OCRnA = *TCNTn + SERVO(timer, Channel[timer]).ticks; - if (SERVO(timer, Channel[timer]).Pin.isActive) // check if activated - digitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, HIGH); // its an active channel so pulse it high - } - else { - // finished all channels so wait for the refresh period to expire before starting over - if (((unsigned)*TCNTn) + 4 < usToTicks(REFRESH_INTERVAL)) // allow a few ticks to ensure the next OCR1A not missed - *OCRnA = (unsigned int)usToTicks(REFRESH_INTERVAL); - else - *OCRnA = *TCNTn + 4; // at least REFRESH_INTERVAL has elapsed - Channel[timer] = -1; // this will get incremented at the end of the refresh period to start again at the first channel - } -} - -#ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform - - // Interrupt handlers for Arduino - #if ENABLED(_useTimer1) - SIGNAL (TIMER1_COMPA_vect) { handle_interrupts(_timer1, &TCNT1, &OCR1A); } - #endif - - #if ENABLED(_useTimer3) - SIGNAL (TIMER3_COMPA_vect) { handle_interrupts(_timer3, &TCNT3, &OCR3A); } - #endif - - #if ENABLED(_useTimer4) - SIGNAL (TIMER4_COMPA_vect) { handle_interrupts(_timer4, &TCNT4, &OCR4A); } - #endif - - #if ENABLED(_useTimer5) - SIGNAL (TIMER5_COMPA_vect) { handle_interrupts(_timer5, &TCNT5, &OCR5A); } - #endif - -#else //!WIRING - - // Interrupt handlers for Wiring - #if ENABLED(_useTimer1) - void Timer1Service() { handle_interrupts(_timer1, &TCNT1, &OCR1A); } - #endif - #if ENABLED(_useTimer3) - void Timer3Service() { handle_interrupts(_timer3, &TCNT3, &OCR3A); } - #endif - -#endif //!WIRING - - -static void initISR(timer16_Sequence_t timer) { - #if ENABLED(_useTimer1) - if (timer == _timer1) { - TCCR1A = 0; // normal counting mode - TCCR1B = _BV(CS11); // set prescaler of 8 - TCNT1 = 0; // clear the timer count - #if defined(__AVR_ATmega8__)|| defined(__AVR_ATmega128__) - SBI(TIFR, OCF1A); // clear any pending interrupts; - SBI(TIMSK, OCIE1A); // enable the output compare interrupt - #else - // here if not ATmega8 or ATmega128 - SBI(TIFR1, OCF1A); // clear any pending interrupts; - SBI(TIMSK1, OCIE1A); // enable the output compare interrupt - #endif - #ifdef WIRING - timerAttach(TIMER1OUTCOMPAREA_INT, Timer1Service); - #endif - } - #endif - - #if ENABLED(_useTimer3) - if (timer == _timer3) { - TCCR3A = 0; // normal counting mode - TCCR3B = _BV(CS31); // set prescaler of 8 - TCNT3 = 0; // clear the timer count - #ifdef __AVR_ATmega128__ - SBI(TIFR, OCF3A); // clear any pending interrupts; - SBI(ETIMSK, OCIE3A); // enable the output compare interrupt - #else - TIFR3 = _BV(OCF3A); // clear any pending interrupts; - TIMSK3 = _BV(OCIE3A) ; // enable the output compare interrupt - #endif - #ifdef WIRING - timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service); // for Wiring platform only - #endif - } - #endif - - #if ENABLED(_useTimer4) - if (timer == _timer4) { - TCCR4A = 0; // normal counting mode - TCCR4B = _BV(CS41); // set prescaler of 8 - TCNT4 = 0; // clear the timer count - TIFR4 = _BV(OCF4A); // clear any pending interrupts; - TIMSK4 = _BV(OCIE4A) ; // enable the output compare interrupt - } - #endif - - #if ENABLED(_useTimer5) - if (timer == _timer5) { - TCCR5A = 0; // normal counting mode - TCCR5B = _BV(CS51); // set prescaler of 8 - TCNT5 = 0; // clear the timer count - TIFR5 = _BV(OCF5A); // clear any pending interrupts; - TIMSK5 = _BV(OCIE5A) ; // enable the output compare interrupt - } - #endif -} - -static void finISR(timer16_Sequence_t timer) { - // Disable use of the given timer - #ifdef WIRING - if (timer == _timer1) { - CBI( - #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) - TIMSK1 - #else - TIMSK - #endif - , OCIE1A); // disable timer 1 output compare interrupt - timerDetach(TIMER1OUTCOMPAREA_INT); - } - else if (timer == _timer3) { - CBI( - #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) - TIMSK3 - #else - ETIMSK - #endif - , OCIE3A); // disable the timer3 output compare A interrupt - timerDetach(TIMER3OUTCOMPAREA_INT); - } - #else //!WIRING - // For arduino - in future: call here to a currently undefined function to reset the timer - UNUSED(timer); - #endif -} - -static boolean isTimerActive(timer16_Sequence_t timer) { - // returns true if any servo is active on this timer - for (uint8_t channel = 0; channel < SERVOS_PER_TIMER; channel++) { - if (SERVO(timer, channel).Pin.isActive) - return true; - } - return false; -} - - -/****************** end of static functions ******************************/ - -Servo::Servo() { - if (ServoCount < MAX_SERVOS) { - this->servoIndex = ServoCount++; // assign a servo index to this instance - servo_info[this->servoIndex].ticks = usToTicks(DEFAULT_PULSE_WIDTH); // store default values - 12 Aug 2009 - } - else - this->servoIndex = INVALID_SERVO; // too many servos -} - -int8_t Servo::attach(int pin) { - return this->attach(pin, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH); -} - -int8_t Servo::attach(int pin, int min, int max) { - - if (this->servoIndex >= MAX_SERVOS) return -1; - - if (pin > 0) servo_info[this->servoIndex].Pin.nbr = pin; - pinMode(servo_info[this->servoIndex].Pin.nbr, OUTPUT); // set servo pin to output - - // todo min/max check: abs(min - MIN_PULSE_WIDTH) /4 < 128 - this->min = (MIN_PULSE_WIDTH - min) / 4; //resolution of min/max is 4 uS - this->max = (MAX_PULSE_WIDTH - max) / 4; - - // initialize the timer if it has not already been initialized - timer16_Sequence_t timer = SERVO_INDEX_TO_TIMER(servoIndex); - if (!isTimerActive(timer)) initISR(timer); - servo_info[this->servoIndex].Pin.isActive = true; // this must be set after the check for isTimerActive - - return this->servoIndex; -} - -void Servo::detach() { - servo_info[this->servoIndex].Pin.isActive = false; - timer16_Sequence_t timer = SERVO_INDEX_TO_TIMER(servoIndex); - if (!isTimerActive(timer)) finISR(timer); -} - -void Servo::write(int value) { - if (value < MIN_PULSE_WIDTH) { // treat values less than 544 as angles in degrees (valid values in microseconds are handled as microseconds) - value = map(constrain(value, 0, 180), 0, 180, SERVO_MIN(), SERVO_MAX()); - } - this->writeMicroseconds(value); -} - -void Servo::writeMicroseconds(int value) { - // calculate and store the values for the given channel - byte channel = this->servoIndex; - if (channel < MAX_SERVOS) { // ensure channel is valid - // ensure pulse width is valid - value = constrain(value, SERVO_MIN(), SERVO_MAX()) - (TRIM_DURATION); - value = usToTicks(value); // convert to ticks after compensating for interrupt overhead - 12 Aug 2009 - - CRITICAL_SECTION_START; - servo_info[channel].ticks = value; - CRITICAL_SECTION_END; - } -} - -// return the value as degrees -int Servo::read() { return map(this->readMicroseconds() + 1, SERVO_MIN(), SERVO_MAX(), 0, 180); } - -int Servo::readMicroseconds() { - return (this->servoIndex == INVALID_SERVO) ? 0 : ticksToUs(servo_info[this->servoIndex].ticks) + TRIM_DURATION; -} - -bool Servo::attached() { return servo_info[this->servoIndex].Pin.isActive; } - -void Servo::move(int value) { - if (this->attach(0) >= 0) { - this->write(value); - delay(SERVO_DELAY); - #if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE) - this->detach(); - #endif - } -} - -#endif diff --git a/lib/Marlin/servo.h b/lib/Marlin/servo.h deleted file mode 100644 index 9f5b0eb..0000000 --- a/lib/Marlin/servo.h +++ /dev/null @@ -1,161 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2 - Copyright (c) 2009 Michael Margolis. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -/** - - A servo is activated by creating an instance of the Servo class passing the desired pin to the attach() method. - The servos are pulsed in the background using the value most recently written using the write() method - - Note that analogWrite of PWM on pins associated with the timer are disabled when the first servo is attached. - Timers are seized as needed in groups of 12 servos - 24 servos use two timers, 48 servos will use four. - The sequence used to seize timers is defined in timers.h - - The methods are: - - Servo - Class for manipulating servo motors connected to Arduino pins. - - attach(pin ) - Attaches a servo motor to an i/o pin. - attach(pin, min, max ) - Attaches to a pin setting min and max values in microseconds - default min is 544, max is 2400 - - write() - Sets the servo angle in degrees. (invalid angle that is valid as pulse in microseconds is treated as microseconds) - writeMicroseconds() - Sets the servo pulse width in microseconds - read() - Gets the last written servo pulse width as an angle between 0 and 180. - readMicroseconds() - Gets the last written servo pulse width in microseconds. (was read_us() in first release) - attached() - Returns true if there is a servo attached. - detach() - Stops an attached servos from pulsing its i/o pin. - move(angle) - Sequence of attach(0), write(angle), - With DEACTIVATE_SERVOS_AFTER_MOVE wait SERVO_DELAY and detach. - */ - -#ifndef servo_h -#define servo_h - -#include - -/** - * Defines for 16 bit timers used with Servo library - * - * If _useTimerX is defined then TimerX is a 16 bit timer on the current board - * timer16_Sequence_t enumerates the sequence that the timers should be allocated - * _Nbr_16timers indicates how many 16 bit timers are available. - * - */ - -// Say which 16 bit timers can be used and in what order -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - //#define _useTimer1 - #define _useTimer3 - #define _useTimer4 - #if !HAS_MOTOR_CURRENT_PWM - #define _useTimer5 // Timer 5 is used for motor current PWM and can't be used for servos. - #endif -#elif defined(__AVR_ATmega32U4__) - #define _useTimer3 -#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) - #define _useTimer3 -#elif defined(__AVR_ATmega128__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega2561__) - #define _useTimer3 -#else - // everything else -#endif - -typedef enum { - #if ENABLED(_useTimer1) - _timer1, - #endif - #if ENABLED(_useTimer3) - _timer3, - #endif - #if ENABLED(_useTimer4) - _timer4, - #endif - #if ENABLED(_useTimer5) - _timer5, - #endif - _Nbr_16timers -} timer16_Sequence_t; - - -#define Servo_VERSION 2 // software version of this library - -#define MIN_PULSE_WIDTH 600 //544 // the shortest pulse sent to a servo -#define MAX_PULSE_WIDTH 2400 //2400 // the longest pulse sent to a servo -#define DEFAULT_PULSE_WIDTH 1500 // default pulse width when servo is attached -#define REFRESH_INTERVAL 20000 // minimum time to refresh servos in microseconds - -#define SERVOS_PER_TIMER 12 // the maximum number of servos controlled by one timer -#define MAX_SERVOS (_Nbr_16timers * SERVOS_PER_TIMER) - -#define INVALID_SERVO 255 // flag indicating an invalid servo index - -typedef struct { - uint8_t nbr : 6 ; // a pin number from 0 to 63 - uint8_t isActive : 1 ; // true if this channel is enabled, pin not pulsed if false -} ServoPin_t; - -typedef struct { - ServoPin_t Pin; - unsigned int ticks; -} ServoInfo_t; - -class Servo { - public: - Servo(); - int8_t attach(int pin); // attach the given pin to the next free channel, set pinMode, return channel number (-1 on fail) - int8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes. - void detach(); - void write(int value); // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds - void writeMicroseconds(int value); // write pulse width in microseconds - void move(int value); // attach the servo, then move to value - // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds - // if DEACTIVATE_SERVOS_AFTER_MOVE wait SERVO_DELAY, then detach - int read(); // returns current pulse width as an angle between 0 and 180 degrees - int readMicroseconds(); // returns current pulse width in microseconds for this servo (was read_us() in first release) - bool attached(); // return true if this servo is attached, otherwise false - - private: - uint8_t servoIndex; // index into the channel data for this servo - int8_t min; // minimum is this value times 4 added to MIN_PULSE_WIDTH - int8_t max; // maximum is this value times 4 added to MAX_PULSE_WIDTH -}; - -#endif diff --git a/lib/Marlin/speed_lookuptable.h b/lib/Marlin/speed_lookuptable.h deleted file mode 100644 index 08cc483..0000000 --- a/lib/Marlin/speed_lookuptable.h +++ /dev/null @@ -1,174 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef SPEED_LOOKUPTABLE_H -#define SPEED_LOOKUPTABLE_H - -#include "Marlin.h" - -#if F_CPU == 16000000 - -const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {\ - { 62500, 55556}, { 6944, 3268}, { 3676, 1176}, { 2500, 607}, { 1893, 369}, { 1524, 249}, { 1275, 179}, { 1096, 135}, - { 961, 105}, { 856, 85}, { 771, 69}, { 702, 58}, { 644, 49}, { 595, 42}, { 553, 37}, { 516, 32}, - { 484, 28}, { 456, 25}, { 431, 23}, { 408, 20}, { 388, 19}, { 369, 16}, { 353, 16}, { 337, 14}, - { 323, 13}, { 310, 11}, { 299, 11}, { 288, 11}, { 277, 9}, { 268, 9}, { 259, 8}, { 251, 8}, - { 243, 8}, { 235, 7}, { 228, 6}, { 222, 6}, { 216, 6}, { 210, 6}, { 204, 5}, { 199, 5}, - { 194, 5}, { 189, 4}, { 185, 4}, { 181, 4}, { 177, 4}, { 173, 4}, { 169, 4}, { 165, 3}, - { 162, 3}, { 159, 4}, { 155, 3}, { 152, 3}, { 149, 2}, { 147, 3}, { 144, 3}, { 141, 2}, - { 139, 3}, { 136, 2}, { 134, 2}, { 132, 3}, { 129, 2}, { 127, 2}, { 125, 2}, { 123, 2}, - { 121, 2}, { 119, 1}, { 118, 2}, { 116, 2}, { 114, 1}, { 113, 2}, { 111, 2}, { 109, 1}, - { 108, 2}, { 106, 1}, { 105, 2}, { 103, 1}, { 102, 1}, { 101, 1}, { 100, 2}, { 98, 1}, - { 97, 1}, { 96, 1}, { 95, 2}, { 93, 1}, { 92, 1}, { 91, 1}, { 90, 1}, { 89, 1}, - { 88, 1}, { 87, 1}, { 86, 1}, { 85, 1}, { 84, 1}, { 83, 0}, { 83, 1}, { 82, 1}, - { 81, 1}, { 80, 1}, { 79, 1}, { 78, 0}, { 78, 1}, { 77, 1}, { 76, 1}, { 75, 0}, - { 75, 1}, { 74, 1}, { 73, 1}, { 72, 0}, { 72, 1}, { 71, 1}, { 70, 0}, { 70, 1}, - { 69, 0}, { 69, 1}, { 68, 1}, { 67, 0}, { 67, 1}, { 66, 0}, { 66, 1}, { 65, 0}, - { 65, 1}, { 64, 1}, { 63, 0}, { 63, 1}, { 62, 0}, { 62, 1}, { 61, 0}, { 61, 1}, - { 60, 0}, { 60, 0}, { 60, 1}, { 59, 0}, { 59, 1}, { 58, 0}, { 58, 1}, { 57, 0}, - { 57, 1}, { 56, 0}, { 56, 0}, { 56, 1}, { 55, 0}, { 55, 1}, { 54, 0}, { 54, 0}, - { 54, 1}, { 53, 0}, { 53, 0}, { 53, 1}, { 52, 0}, { 52, 0}, { 52, 1}, { 51, 0}, - { 51, 0}, { 51, 1}, { 50, 0}, { 50, 0}, { 50, 1}, { 49, 0}, { 49, 0}, { 49, 1}, - { 48, 0}, { 48, 0}, { 48, 1}, { 47, 0}, { 47, 0}, { 47, 0}, { 47, 1}, { 46, 0}, - { 46, 0}, { 46, 1}, { 45, 0}, { 45, 0}, { 45, 0}, { 45, 1}, { 44, 0}, { 44, 0}, - { 44, 0}, { 44, 1}, { 43, 0}, { 43, 0}, { 43, 0}, { 43, 1}, { 42, 0}, { 42, 0}, - { 42, 0}, { 42, 1}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 1}, { 40, 0}, - { 40, 0}, { 40, 0}, { 40, 0}, { 40, 1}, { 39, 0}, { 39, 0}, { 39, 0}, { 39, 0}, - { 39, 1}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 1}, { 37, 0}, { 37, 0}, - { 37, 0}, { 37, 0}, { 37, 0}, { 37, 1}, { 36, 0}, { 36, 0}, { 36, 0}, { 36, 0}, - { 36, 1}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 1}, - { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 1}, { 33, 0}, { 33, 0}, - { 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 1}, { 32, 0}, { 32, 0}, { 32, 0}, - { 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 1}, { 31, 0}, { 31, 0}, { 31, 0}, - { 31, 0}, { 31, 0}, { 31, 0}, { 31, 1}, { 30, 0}, { 30, 0}, { 30, 0}, { 30, 0} -}; - -const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {\ - { 62500, 12500}, { 50000, 8334}, { 41666, 5952}, { 35714, 4464}, { 31250, 3473}, { 27777, 2777}, { 25000, 2273}, { 22727, 1894}, - { 20833, 1603}, { 19230, 1373}, { 17857, 1191}, { 16666, 1041}, { 15625, 920}, { 14705, 817}, { 13888, 731}, { 13157, 657}, - { 12500, 596}, { 11904, 541}, { 11363, 494}, { 10869, 453}, { 10416, 416}, { 10000, 385}, { 9615, 356}, { 9259, 331}, - { 8928, 308}, { 8620, 287}, { 8333, 269}, { 8064, 252}, { 7812, 237}, { 7575, 223}, { 7352, 210}, { 7142, 198}, - { 6944, 188}, { 6756, 178}, { 6578, 168}, { 6410, 160}, { 6250, 153}, { 6097, 145}, { 5952, 139}, { 5813, 132}, - { 5681, 126}, { 5555, 121}, { 5434, 115}, { 5319, 111}, { 5208, 106}, { 5102, 102}, { 5000, 99}, { 4901, 94}, - { 4807, 91}, { 4716, 87}, { 4629, 84}, { 4545, 81}, { 4464, 79}, { 4385, 75}, { 4310, 73}, { 4237, 71}, - { 4166, 68}, { 4098, 66}, { 4032, 64}, { 3968, 62}, { 3906, 60}, { 3846, 59}, { 3787, 56}, { 3731, 55}, - { 3676, 53}, { 3623, 52}, { 3571, 50}, { 3521, 49}, { 3472, 48}, { 3424, 46}, { 3378, 45}, { 3333, 44}, - { 3289, 43}, { 3246, 41}, { 3205, 41}, { 3164, 39}, { 3125, 39}, { 3086, 38}, { 3048, 36}, { 3012, 36}, - { 2976, 35}, { 2941, 35}, { 2906, 33}, { 2873, 33}, { 2840, 32}, { 2808, 31}, { 2777, 30}, { 2747, 30}, - { 2717, 29}, { 2688, 29}, { 2659, 28}, { 2631, 27}, { 2604, 27}, { 2577, 26}, { 2551, 26}, { 2525, 25}, - { 2500, 25}, { 2475, 25}, { 2450, 23}, { 2427, 24}, { 2403, 23}, { 2380, 22}, { 2358, 22}, { 2336, 22}, - { 2314, 21}, { 2293, 21}, { 2272, 20}, { 2252, 20}, { 2232, 20}, { 2212, 20}, { 2192, 19}, { 2173, 18}, - { 2155, 19}, { 2136, 18}, { 2118, 18}, { 2100, 17}, { 2083, 17}, { 2066, 17}, { 2049, 17}, { 2032, 16}, - { 2016, 16}, { 2000, 16}, { 1984, 16}, { 1968, 15}, { 1953, 16}, { 1937, 14}, { 1923, 15}, { 1908, 15}, - { 1893, 14}, { 1879, 14}, { 1865, 14}, { 1851, 13}, { 1838, 14}, { 1824, 13}, { 1811, 13}, { 1798, 13}, - { 1785, 12}, { 1773, 13}, { 1760, 12}, { 1748, 12}, { 1736, 12}, { 1724, 12}, { 1712, 12}, { 1700, 11}, - { 1689, 12}, { 1677, 11}, { 1666, 11}, { 1655, 11}, { 1644, 11}, { 1633, 10}, { 1623, 11}, { 1612, 10}, - { 1602, 10}, { 1592, 10}, { 1582, 10}, { 1572, 10}, { 1562, 10}, { 1552, 9}, { 1543, 10}, { 1533, 9}, - { 1524, 9}, { 1515, 9}, { 1506, 9}, { 1497, 9}, { 1488, 9}, { 1479, 9}, { 1470, 9}, { 1461, 8}, - { 1453, 8}, { 1445, 9}, { 1436, 8}, { 1428, 8}, { 1420, 8}, { 1412, 8}, { 1404, 8}, { 1396, 8}, - { 1388, 7}, { 1381, 8}, { 1373, 7}, { 1366, 8}, { 1358, 7}, { 1351, 7}, { 1344, 8}, { 1336, 7}, - { 1329, 7}, { 1322, 7}, { 1315, 7}, { 1308, 6}, { 1302, 7}, { 1295, 7}, { 1288, 6}, { 1282, 7}, - { 1275, 6}, { 1269, 7}, { 1262, 6}, { 1256, 6}, { 1250, 7}, { 1243, 6}, { 1237, 6}, { 1231, 6}, - { 1225, 6}, { 1219, 6}, { 1213, 6}, { 1207, 6}, { 1201, 5}, { 1196, 6}, { 1190, 6}, { 1184, 5}, - { 1179, 6}, { 1173, 5}, { 1168, 6}, { 1162, 5}, { 1157, 5}, { 1152, 6}, { 1146, 5}, { 1141, 5}, - { 1136, 5}, { 1131, 5}, { 1126, 5}, { 1121, 5}, { 1116, 5}, { 1111, 5}, { 1106, 5}, { 1101, 5}, - { 1096, 5}, { 1091, 5}, { 1086, 4}, { 1082, 5}, { 1077, 5}, { 1072, 4}, { 1068, 5}, { 1063, 4}, - { 1059, 5}, { 1054, 4}, { 1050, 4}, { 1046, 5}, { 1041, 4}, { 1037, 4}, { 1033, 5}, { 1028, 4}, - { 1024, 4}, { 1020, 4}, { 1016, 4}, { 1012, 4}, { 1008, 4}, { 1004, 4}, { 1000, 4}, { 996, 4}, - { 992, 4}, { 988, 4}, { 984, 4}, { 980, 4}, { 976, 4}, { 972, 4}, { 968, 3}, { 965, 3} -}; - -#elif F_CPU == 20000000 - -const uint16_t speed_lookuptable_fast[256][2] PROGMEM = { - {62500, 54055}, {8445, 3917}, {4528, 1434}, {3094, 745}, {2349, 456}, {1893, 307}, {1586, 222}, {1364, 167}, - {1197, 131}, {1066, 105}, {961, 86}, {875, 72}, {803, 61}, {742, 53}, {689, 45}, {644, 40}, - {604, 35}, {569, 32}, {537, 28}, {509, 25}, {484, 23}, {461, 21}, {440, 19}, {421, 17}, - {404, 16}, {388, 15}, {373, 14}, {359, 13}, {346, 12}, {334, 11}, {323, 10}, {313, 10}, - {303, 9}, {294, 9}, {285, 8}, {277, 7}, {270, 8}, {262, 7}, {255, 6}, {249, 6}, - {243, 6}, {237, 6}, {231, 5}, {226, 5}, {221, 5}, {216, 5}, {211, 4}, {207, 5}, - {202, 4}, {198, 4}, {194, 4}, {190, 3}, {187, 4}, {183, 3}, {180, 3}, {177, 4}, - {173, 3}, {170, 3}, {167, 2}, {165, 3}, {162, 3}, {159, 2}, {157, 3}, {154, 2}, - {152, 3}, {149, 2}, {147, 2}, {145, 2}, {143, 2}, {141, 2}, {139, 2}, {137, 2}, - {135, 2}, {133, 2}, {131, 2}, {129, 1}, {128, 2}, {126, 2}, {124, 1}, {123, 2}, - {121, 1}, {120, 2}, {118, 1}, {117, 1}, {116, 2}, {114, 1}, {113, 1}, {112, 2}, - {110, 1}, {109, 1}, {108, 1}, {107, 2}, {105, 1}, {104, 1}, {103, 1}, {102, 1}, - {101, 1}, {100, 1}, {99, 1}, {98, 1}, {97, 1}, {96, 1}, {95, 1}, {94, 1}, - {93, 1}, {92, 1}, {91, 0}, {91, 1}, {90, 1}, {89, 1}, {88, 1}, {87, 0}, - {87, 1}, {86, 1}, {85, 1}, {84, 0}, {84, 1}, {83, 1}, {82, 1}, {81, 0}, - {81, 1}, {80, 1}, {79, 0}, {79, 1}, {78, 0}, {78, 1}, {77, 1}, {76, 0}, - {76, 1}, {75, 0}, {75, 1}, {74, 1}, {73, 0}, {73, 1}, {72, 0}, {72, 1}, - {71, 0}, {71, 1}, {70, 0}, {70, 1}, {69, 0}, {69, 1}, {68, 0}, {68, 1}, - {67, 0}, {67, 1}, {66, 0}, {66, 1}, {65, 0}, {65, 0}, {65, 1}, {64, 0}, - {64, 1}, {63, 0}, {63, 1}, {62, 0}, {62, 0}, {62, 1}, {61, 0}, {61, 1}, - {60, 0}, {60, 0}, {60, 1}, {59, 0}, {59, 0}, {59, 1}, {58, 0}, {58, 0}, - {58, 1}, {57, 0}, {57, 0}, {57, 1}, {56, 0}, {56, 0}, {56, 1}, {55, 0}, - {55, 0}, {55, 1}, {54, 0}, {54, 0}, {54, 1}, {53, 0}, {53, 0}, {53, 0}, - {53, 1}, {52, 0}, {52, 0}, {52, 1}, {51, 0}, {51, 0}, {51, 0}, {51, 1}, - {50, 0}, {50, 0}, {50, 0}, {50, 1}, {49, 0}, {49, 0}, {49, 0}, {49, 1}, - {48, 0}, {48, 0}, {48, 0}, {48, 1}, {47, 0}, {47, 0}, {47, 0}, {47, 1}, - {46, 0}, {46, 0}, {46, 0}, {46, 0}, {46, 1}, {45, 0}, {45, 0}, {45, 0}, - {45, 1}, {44, 0}, {44, 0}, {44, 0}, {44, 0}, {44, 1}, {43, 0}, {43, 0}, - {43, 0}, {43, 0}, {43, 1}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, - {42, 1}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 1}, {40, 0}, - {40, 0}, {40, 0}, {40, 0}, {40, 1}, {39, 0}, {39, 0}, {39, 0}, {39, 0}, - {39, 0}, {39, 0}, {39, 1}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, -}; - -const uint16_t speed_lookuptable_slow[256][2] PROGMEM = { - {62500, 10417}, {52083, 7441}, {44642, 5580}, {39062, 4340}, {34722, 3472}, {31250, 2841}, {28409, 2368}, {26041, 2003}, - {24038, 1717}, {22321, 1488}, {20833, 1302}, {19531, 1149}, {18382, 1021}, {17361, 914}, {16447, 822}, {15625, 745}, - {14880, 676}, {14204, 618}, {13586, 566}, {13020, 520}, {12500, 481}, {12019, 445}, {11574, 414}, {11160, 385}, - {10775, 359}, {10416, 336}, {10080, 315}, {9765, 296}, {9469, 278}, {9191, 263}, {8928, 248}, {8680, 235}, - {8445, 222}, {8223, 211}, {8012, 200}, {7812, 191}, {7621, 181}, {7440, 173}, {7267, 165}, {7102, 158}, - {6944, 151}, {6793, 145}, {6648, 138}, {6510, 133}, {6377, 127}, {6250, 123}, {6127, 118}, {6009, 113}, - {5896, 109}, {5787, 106}, {5681, 101}, {5580, 98}, {5482, 95}, {5387, 91}, {5296, 88}, {5208, 86}, - {5122, 82}, {5040, 80}, {4960, 78}, {4882, 75}, {4807, 73}, {4734, 70}, {4664, 69}, {4595, 67}, - {4528, 64}, {4464, 63}, {4401, 61}, {4340, 60}, {4280, 58}, {4222, 56}, {4166, 55}, {4111, 53}, - {4058, 52}, {4006, 51}, {3955, 49}, {3906, 48}, {3858, 48}, {3810, 45}, {3765, 45}, {3720, 44}, - {3676, 43}, {3633, 42}, {3591, 40}, {3551, 40}, {3511, 39}, {3472, 38}, {3434, 38}, {3396, 36}, - {3360, 36}, {3324, 35}, {3289, 34}, {3255, 34}, {3221, 33}, {3188, 32}, {3156, 31}, {3125, 31}, - {3094, 31}, {3063, 30}, {3033, 29}, {3004, 28}, {2976, 28}, {2948, 28}, {2920, 27}, {2893, 27}, - {2866, 26}, {2840, 25}, {2815, 25}, {2790, 25}, {2765, 24}, {2741, 24}, {2717, 24}, {2693, 23}, - {2670, 22}, {2648, 22}, {2626, 22}, {2604, 22}, {2582, 21}, {2561, 21}, {2540, 20}, {2520, 20}, - {2500, 20}, {2480, 20}, {2460, 19}, {2441, 19}, {2422, 19}, {2403, 18}, {2385, 18}, {2367, 18}, - {2349, 17}, {2332, 18}, {2314, 17}, {2297, 16}, {2281, 17}, {2264, 16}, {2248, 16}, {2232, 16}, - {2216, 16}, {2200, 15}, {2185, 15}, {2170, 15}, {2155, 15}, {2140, 15}, {2125, 14}, {2111, 14}, - {2097, 14}, {2083, 14}, {2069, 14}, {2055, 13}, {2042, 13}, {2029, 13}, {2016, 13}, {2003, 13}, - {1990, 13}, {1977, 12}, {1965, 12}, {1953, 13}, {1940, 11}, {1929, 12}, {1917, 12}, {1905, 12}, - {1893, 11}, {1882, 11}, {1871, 11}, {1860, 11}, {1849, 11}, {1838, 11}, {1827, 11}, {1816, 10}, - {1806, 11}, {1795, 10}, {1785, 10}, {1775, 10}, {1765, 10}, {1755, 10}, {1745, 9}, {1736, 10}, - {1726, 9}, {1717, 10}, {1707, 9}, {1698, 9}, {1689, 9}, {1680, 9}, {1671, 9}, {1662, 9}, - {1653, 9}, {1644, 8}, {1636, 9}, {1627, 8}, {1619, 9}, {1610, 8}, {1602, 8}, {1594, 8}, - {1586, 8}, {1578, 8}, {1570, 8}, {1562, 8}, {1554, 7}, {1547, 8}, {1539, 8}, {1531, 7}, - {1524, 8}, {1516, 7}, {1509, 7}, {1502, 7}, {1495, 7}, {1488, 7}, {1481, 7}, {1474, 7}, - {1467, 7}, {1460, 7}, {1453, 7}, {1446, 6}, {1440, 7}, {1433, 7}, {1426, 6}, {1420, 6}, - {1414, 7}, {1407, 6}, {1401, 6}, {1395, 7}, {1388, 6}, {1382, 6}, {1376, 6}, {1370, 6}, - {1364, 6}, {1358, 6}, {1352, 6}, {1346, 5}, {1341, 6}, {1335, 6}, {1329, 5}, {1324, 6}, - {1318, 5}, {1313, 6}, {1307, 5}, {1302, 6}, {1296, 5}, {1291, 5}, {1286, 6}, {1280, 5}, - {1275, 5}, {1270, 5}, {1265, 5}, {1260, 5}, {1255, 5}, {1250, 5}, {1245, 5}, {1240, 5}, - {1235, 5}, {1230, 5}, {1225, 5}, {1220, 5}, {1215, 4}, {1211, 5}, {1206, 5}, {1201, 5}, -}; - -#endif - -#endif diff --git a/lib/Marlin/stepper.cpp b/lib/Marlin/stepper.cpp deleted file mode 100644 index a3e858d..0000000 --- a/lib/Marlin/stepper.cpp +++ /dev/null @@ -1,1260 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * stepper.cpp - A singleton object to execute motion plans using stepper motors - * Marlin Firmware - * - * Derived from Grbl - * Copyright (c) 2009-2011 Simen Svale Skogsrud - * - * Grbl is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Grbl is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Grbl. If not, see . - */ - -/* The timer calculations of this module informed by the 'RepRap cartesian firmware' by Zack Smith - and Philipp Tiefenbacher. */ - -#include "Marlin.h" -#include "stepper.h" -#include "endstops.h" -#include "planner.h" -#include "temperature.h" -#include "ultralcd.h" -#include "language.h" -#include "cardreader.h" -#include "speed_lookuptable.h" - -#if HAS_DIGIPOTSS - #include -#endif - -Stepper stepper; // Singleton - -// public: - -block_t* Stepper::current_block = NULL; // A pointer to the block currently being traced - -#if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) - bool Stepper::abort_on_endstop_hit = false; -#endif - -#if ENABLED(Z_DUAL_ENDSTOPS) - bool Stepper::performing_homing = false; -#endif - -// private: - -unsigned char Stepper::last_direction_bits = 0; // The next stepping-bits to be output -unsigned int Stepper::cleaning_buffer_counter = 0; - -#if ENABLED(Z_DUAL_ENDSTOPS) - bool Stepper::locked_z_motor = false; - bool Stepper::locked_z2_motor = false; -#endif - -long Stepper::counter_X = 0, - Stepper::counter_Y = 0, - Stepper::counter_Z = 0, - Stepper::counter_E = 0; - -volatile unsigned long Stepper::step_events_completed = 0; // The number of step events executed in the current block - -#if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE) - - unsigned char Stepper::old_OCR0A; - volatile unsigned char Stepper::eISR_Rate = 200; // Keep the ISR at a low rate until needed - - #if ENABLED(LIN_ADVANCE) - volatile int Stepper::e_steps[E_STEPPERS]; - int Stepper::extruder_advance_k = LIN_ADVANCE_K, - Stepper::final_estep_rate, - Stepper::current_estep_rate[E_STEPPERS], - Stepper::current_adv_steps[E_STEPPERS]; - #else - long Stepper::e_steps[E_STEPPERS], - Stepper::final_advance = 0, - Stepper::old_advance = 0, - Stepper::advance_rate, - Stepper::advance; - #endif -#endif - -long Stepper::acceleration_time, Stepper::deceleration_time; - -volatile long Stepper::count_position[NUM_AXIS] = { 0 }; -volatile signed char Stepper::count_direction[NUM_AXIS] = { 1, 1, 1, 1 }; - -#if ENABLED(MIXING_EXTRUDER) - long Stepper::counter_M[MIXING_STEPPERS]; -#endif - -unsigned short Stepper::acc_step_rate; // needed for deceleration start point -uint8_t Stepper::step_loops, Stepper::step_loops_nominal; -unsigned short Stepper::OCR1A_nominal; - -volatile long Stepper::endstops_trigsteps[3]; - -#if ENABLED(X_DUAL_STEPPER_DRIVERS) - #define X_APPLY_DIR(v,Q) do{ X_DIR_WRITE(v); X2_DIR_WRITE((v) != INVERT_X2_VS_X_DIR); }while(0) - #define X_APPLY_STEP(v,Q) do{ X_STEP_WRITE(v); X2_STEP_WRITE(v); }while(0) -#elif ENABLED(DUAL_X_CARRIAGE) - #define X_APPLY_DIR(v,ALWAYS) \ - if (extruder_duplication_enabled || ALWAYS) { \ - X_DIR_WRITE(v); \ - X2_DIR_WRITE(v); \ - } \ - else { \ - if (current_block->active_extruder) X2_DIR_WRITE(v); else X_DIR_WRITE(v); \ - } - #define X_APPLY_STEP(v,ALWAYS) \ - if (extruder_duplication_enabled || ALWAYS) { \ - X_STEP_WRITE(v); \ - X2_STEP_WRITE(v); \ - } \ - else { \ - if (current_block->active_extruder != 0) X2_STEP_WRITE(v); else X_STEP_WRITE(v); \ - } -#else - #define X_APPLY_DIR(v,Q) X_DIR_WRITE(v) - #define X_APPLY_STEP(v,Q) X_STEP_WRITE(v) -#endif - -#if ENABLED(Y_DUAL_STEPPER_DRIVERS) - #define Y_APPLY_DIR(v,Q) do{ Y_DIR_WRITE(v); Y2_DIR_WRITE((v) != INVERT_Y2_VS_Y_DIR); }while(0) - #define Y_APPLY_STEP(v,Q) do{ Y_STEP_WRITE(v); Y2_STEP_WRITE(v); }while(0) -#else - #define Y_APPLY_DIR(v,Q) Y_DIR_WRITE(v) - #define Y_APPLY_STEP(v,Q) Y_STEP_WRITE(v) -#endif - -#if ENABLED(Z_DUAL_STEPPER_DRIVERS) - #define Z_APPLY_DIR(v,Q) do{ Z_DIR_WRITE(v); Z2_DIR_WRITE(v); }while(0) - #if ENABLED(Z_DUAL_ENDSTOPS) - #define Z_APPLY_STEP(v,Q) \ - if (performing_homing) { \ - if (Z_HOME_DIR > 0) {\ - if (!(TEST(endstops.old_endstop_bits, Z_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z_motor) Z_STEP_WRITE(v); \ - if (!(TEST(endstops.old_endstop_bits, Z2_MAX) && (count_direction[Z_AXIS] > 0)) && !locked_z2_motor) Z2_STEP_WRITE(v); \ - } \ - else { \ - if (!(TEST(endstops.old_endstop_bits, Z_MIN) && (count_direction[Z_AXIS] < 0)) && !locked_z_motor) Z_STEP_WRITE(v); \ - if (!(TEST(endstops.old_endstop_bits, Z2_MIN) && (count_direction[Z_AXIS] < 0)) && !locked_z2_motor) Z2_STEP_WRITE(v); \ - } \ - } \ - else { \ - Z_STEP_WRITE(v); \ - Z2_STEP_WRITE(v); \ - } - #else - #define Z_APPLY_STEP(v,Q) do{ Z_STEP_WRITE(v); Z2_STEP_WRITE(v); }while(0) - #endif -#else - #define Z_APPLY_DIR(v,Q) Z_DIR_WRITE(v) - #define Z_APPLY_STEP(v,Q) Z_STEP_WRITE(v) -#endif - -#if DISABLED(MIXING_EXTRUDER) - #define E_APPLY_STEP(v,Q) E_STEP_WRITE(v) -#endif - -// intRes = longIn1 * longIn2 >> 24 -// uses: -// r26 to store 0 -// r27 to store bits 16-23 of the 48bit result. The top bit is used to round the two byte result. -// note that the lower two bytes and the upper byte of the 48bit result are not calculated. -// this can cause the result to be out by one as the lower bytes may cause carries into the upper ones. -// B0 A0 are bits 24-39 and are the returned value -// C1 B1 A1 is longIn1 -// D2 C2 B2 A2 is longIn2 -// -#define MultiU24X32toH16(intRes, longIn1, longIn2) \ - asm volatile ( \ - "clr r26 \n\t" \ - "mul %A1, %B2 \n\t" \ - "mov r27, r1 \n\t" \ - "mul %B1, %C2 \n\t" \ - "movw %A0, r0 \n\t" \ - "mul %C1, %C2 \n\t" \ - "add %B0, r0 \n\t" \ - "mul %C1, %B2 \n\t" \ - "add %A0, r0 \n\t" \ - "adc %B0, r1 \n\t" \ - "mul %A1, %C2 \n\t" \ - "add r27, r0 \n\t" \ - "adc %A0, r1 \n\t" \ - "adc %B0, r26 \n\t" \ - "mul %B1, %B2 \n\t" \ - "add r27, r0 \n\t" \ - "adc %A0, r1 \n\t" \ - "adc %B0, r26 \n\t" \ - "mul %C1, %A2 \n\t" \ - "add r27, r0 \n\t" \ - "adc %A0, r1 \n\t" \ - "adc %B0, r26 \n\t" \ - "mul %B1, %A2 \n\t" \ - "add r27, r1 \n\t" \ - "adc %A0, r26 \n\t" \ - "adc %B0, r26 \n\t" \ - "lsr r27 \n\t" \ - "adc %A0, r26 \n\t" \ - "adc %B0, r26 \n\t" \ - "mul %D2, %A1 \n\t" \ - "add %A0, r0 \n\t" \ - "adc %B0, r1 \n\t" \ - "mul %D2, %B1 \n\t" \ - "add %B0, r0 \n\t" \ - "clr r1 \n\t" \ - : \ - "=&r" (intRes) \ - : \ - "d" (longIn1), \ - "d" (longIn2) \ - : \ - "r26" , "r27" \ - ) - -// Some useful constants - -#define ENABLE_STEPPER_DRIVER_INTERRUPT() SBI(TIMSK1, OCIE1A) -#define DISABLE_STEPPER_DRIVER_INTERRUPT() CBI(TIMSK1, OCIE1A) - -/** - * __________________________ - * /| |\ _________________ ^ - * / | | \ /| |\ | - * / | | \ / | | \ s - * / | | | | | \ p - * / | | | | | \ e - * +-----+------------------------+---+--+---------------+----+ e - * | BLOCK 1 | BLOCK 2 | d - * - * time -----> - * - * The trapezoid is the shape the speed curve over time. It starts at block->initial_rate, accelerates - * first block->accelerate_until step_events_completed, then keeps going at constant speed until - * step_events_completed reaches block->decelerate_after after which it decelerates until the trapezoid generator is reset. - * The slope of acceleration is calculated using v = u + at where t is the accumulated timer values of the steps so far. - */ -void Stepper::wake_up() { - // TCNT1 = 0; - ENABLE_STEPPER_DRIVER_INTERRUPT(); -} - -/** - * Set the stepper direction of each axis - * - * COREXY: X_AXIS=A_AXIS and Y_AXIS=B_AXIS - * COREXZ: X_AXIS=A_AXIS and Z_AXIS=C_AXIS - * COREYZ: Y_AXIS=B_AXIS and Z_AXIS=C_AXIS - */ -void Stepper::set_directions() { - - #define SET_STEP_DIR(AXIS) \ - if (motor_direction(AXIS ##_AXIS)) { \ - AXIS ##_APPLY_DIR(INVERT_## AXIS ##_DIR, false); \ - count_direction[AXIS ##_AXIS] = -1; \ - } \ - else { \ - AXIS ##_APPLY_DIR(!INVERT_## AXIS ##_DIR, false); \ - count_direction[AXIS ##_AXIS] = 1; \ - } - - SET_STEP_DIR(X); // A - SET_STEP_DIR(Y); // B - SET_STEP_DIR(Z); // C - - #if DISABLED(ADVANCE) - if (motor_direction(E_AXIS)) { - REV_E_DIR(); - count_direction[E_AXIS] = -1; - } - else { - NORM_E_DIR(); - count_direction[E_AXIS] = 1; - } - #endif //!ADVANCE -} - -// "The Stepper Driver Interrupt" - This timer interrupt is the workhorse. -// It pops blocks from the block_buffer and executes them by pulsing the stepper pins appropriately. -ISR(TIMER1_COMPA_vect) { Stepper::isr(); } - -void Stepper::isr() { - if (cleaning_buffer_counter) { - current_block = NULL; - planner.discard_current_block(); - #ifdef SD_FINISHED_RELEASECOMMAND - if ((cleaning_buffer_counter == 1) && (SD_FINISHED_STEPPERRELEASE)) enqueue_and_echo_commands_P(PSTR(SD_FINISHED_RELEASECOMMAND)); - #endif - cleaning_buffer_counter--; - OCR1A = 200; - return; - } - - // If there is no current block, attempt to pop one from the buffer - if (!current_block) { - // Anything in the buffer? - current_block = planner.get_current_block(); - if (current_block) { - current_block->busy = true; - trapezoid_generator_reset(); - - // Initialize Bresenham counters to 1/2 the ceiling - counter_X = counter_Y = counter_Z = counter_E = -(current_block->step_event_count >> 1); - - #if ENABLED(MIXING_EXTRUDER) - MIXING_STEPPERS_LOOP(i) - counter_M[i] = -(current_block->mix_event_count[i] >> 1); - #endif -#ifdef UARM_SWIFT - set_block_running(true); -#endif // UARM_SWIFT - - step_events_completed = 0; - - #if ENABLED(Z_LATE_ENABLE) - if (current_block->steps[Z_AXIS] > 0) { - enable_z(); - OCR1A = 2000; //1ms wait - return; - } - #endif - - // #if ENABLED(ADVANCE) - // e_steps[TOOL_E_INDEX] = 0; - // #endif - } - else { - OCR1A = 2000; // 1kHz. - #ifdef UARM_SWIFT - set_block_running(false); - #endif // UARM_SWIFT - } - } - - if (current_block) { - -#ifdef UARM_SWIFT - set_block_running(true); -#endif // UARM_SWIFT - - // Update endstops state, if enabled - if (endstops.enabled - #if HAS_BED_PROBE - || endstops.z_probe_enabled - #endif - ) endstops.update(); - - // Take multiple steps per interrupt (For high speed moves) - for (int8_t i = 0; i < step_loops; i++) { - #if !defined(USBCON) && !defined(UARM_SWIFT) - customizedSerial.checkRx(); // Check for serial chars. - #endif - - #if ENABLED(LIN_ADVANCE) - - counter_E += current_block->steps[E_AXIS]; - if (counter_E > 0) { - counter_E -= current_block->step_event_count; - #if DISABLED(MIXING_EXTRUDER) - // Don't step E here for mixing extruder - count_position[E_AXIS] += count_direction[E_AXIS]; - e_steps[TOOL_E_INDEX] += motor_direction(E_AXIS) ? -1 : 1; - #endif - } - - #if ENABLED(MIXING_EXTRUDER) - // Step mixing steppers proportionally - long dir = motor_direction(E_AXIS) ? -1 : 1; - MIXING_STEPPERS_LOOP(j) { - counter_m[j] += current_block->steps[E_AXIS]; - if (counter_m[j] > 0) { - counter_m[j] -= current_block->mix_event_count[j]; - e_steps[j] += dir; - } - } - #endif - - if (current_block->use_advance_lead) { - int delta_adv_steps = (((long)extruder_advance_k * current_estep_rate[TOOL_E_INDEX]) >> 9) - current_adv_steps[TOOL_E_INDEX]; - #if ENABLED(MIXING_EXTRUDER) - // Mixing extruders apply advance lead proportionally - MIXING_STEPPERS_LOOP(j) { - int steps = delta_adv_steps * current_block->step_event_count / current_block->mix_event_count[j]; - e_steps[j] += steps; - current_adv_steps[j] += steps; - } - #else - // For most extruders, advance the single E stepper - e_steps[TOOL_E_INDEX] += delta_adv_steps; - current_adv_steps[TOOL_E_INDEX] += delta_adv_steps; - #endif - } - - #elif ENABLED(ADVANCE) - - // Always count the unified E axis - counter_E += current_block->steps[E_AXIS]; - if (counter_E > 0) { - counter_E -= current_block->step_event_count; - #if DISABLED(MIXING_EXTRUDER) - // Don't step E here for mixing extruder - e_steps[TOOL_E_INDEX] += motor_direction(E_AXIS) ? -1 : 1; - #endif - } - - #if ENABLED(MIXING_EXTRUDER) - - // Step mixing steppers proportionally - long dir = motor_direction(E_AXIS) ? -1 : 1; - MIXING_STEPPERS_LOOP(j) { - counter_m[j] += current_block->steps[E_AXIS]; - if (counter_m[j] > 0) { - counter_m[j] -= current_block->mix_event_count[j]; - e_steps[j] += dir; - } - } - - #endif // MIXING_EXTRUDER - - #endif // ADVANCE or LIN_ADVANCE - - #define _COUNTER(AXIS) counter_## AXIS - #define _APPLY_STEP(AXIS) AXIS ##_APPLY_STEP - #define _INVERT_STEP_PIN(AXIS) INVERT_## AXIS ##_STEP_PIN - - #define STEP_ADD(AXIS) \ - _COUNTER(AXIS) += current_block->steps[_AXIS(AXIS)]; \ - if (_COUNTER(AXIS) > 0) { _APPLY_STEP(AXIS)(!_INVERT_STEP_PIN(AXIS),0); } - - STEP_ADD(X); - STEP_ADD(Y); - STEP_ADD(Z); - - #if DISABLED(ADVANCE) && DISABLED(LIN_ADVANCE) - #if ENABLED(MIXING_EXTRUDER) - // Keep updating the single E axis - counter_E += current_block->steps[E_AXIS]; - // Tick the counters used for this mix - MIXING_STEPPERS_LOOP(j) { - // Step mixing steppers (proportionally) - counter_M[j] += current_block->steps[E_AXIS]; - // Step when the counter goes over zero - if (counter_M[j] > 0) En_STEP_WRITE(j, !INVERT_E_STEP_PIN); - } - #else // !MIXING_EXTRUDER - STEP_ADD(E); - #endif - #endif // !ADVANCE && !LIN_ADVANCE - - #define STEP_IF_COUNTER(AXIS) \ - if (_COUNTER(AXIS) > 0) { \ - _COUNTER(AXIS) -= current_block->step_event_count; \ - count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \ - _APPLY_STEP(AXIS)(_INVERT_STEP_PIN(AXIS),0); \ - } - - STEP_IF_COUNTER(X); - STEP_IF_COUNTER(Y); - STEP_IF_COUNTER(Z); - - #if DISABLED(ADVANCE) && DISABLED(LIN_ADVANCE) - #if ENABLED(MIXING_EXTRUDER) - // Always step the single E axis - if (counter_E > 0) { - counter_E -= current_block->step_event_count; - count_position[E_AXIS] += count_direction[E_AXIS]; - } - MIXING_STEPPERS_LOOP(j) { - if (counter_M[j] > 0) { - counter_M[j] -= current_block->mix_event_count[j]; - En_STEP_WRITE(j, INVERT_E_STEP_PIN); - } - } - #else // !MIXING_EXTRUDER - STEP_IF_COUNTER(E); - #endif - #endif // !ADVANCE && !LIN_ADVANCE - - step_events_completed++; - if (step_events_completed >= current_block->step_event_count) break; - } - - #if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE) - // If we have esteps to execute, fire the next ISR "now" - if (e_steps[TOOL_E_INDEX]) OCR0A = TCNT0 + 2; - #endif - - // Calculate new timer value - unsigned short timer, step_rate; - if (step_events_completed <= (unsigned long)current_block->accelerate_until) { - - MultiU24X32toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate); - acc_step_rate += current_block->initial_rate; - - // upper limit - NOMORE(acc_step_rate, current_block->nominal_rate); - - // step_rate to timer interval - timer = calc_timer(acc_step_rate); - OCR1A = timer; - acceleration_time += timer; - - #if ENABLED(LIN_ADVANCE) - - if (current_block->use_advance_lead) - current_estep_rate[TOOL_E_INDEX] = ((unsigned long)acc_step_rate * current_block->e_speed_multiplier8) >> 8; - - if (current_block->use_advance_lead) { - #if ENABLED(MIXING_EXTRUDER) - MIXING_STEPPERS_LOOP(j) - current_estep_rate[j] = ((unsigned long)acc_step_rate * current_block->e_speed_multiplier8 * current_block->step_event_count / current_block->mix_event_count[j]) >> 8; - #else - current_estep_rate[TOOL_E_INDEX] = ((unsigned long)acc_step_rate * current_block->e_speed_multiplier8) >> 8; - #endif - } - - #elif ENABLED(ADVANCE) - - advance += advance_rate * step_loops; - //NOLESS(advance, current_block->advance); - - long advance_whole = advance >> 8, - advance_factor = advance_whole - old_advance; - - // Do E steps + advance steps - #if ENABLED(MIXING_EXTRUDER) - // ...for mixing steppers proportionally - MIXING_STEPPERS_LOOP(j) - e_steps[j] += advance_factor * current_block->step_event_count / current_block->mix_event_count[j]; - #else - // ...for the active extruder - e_steps[TOOL_E_INDEX] += advance_factor; - #endif - - old_advance = advance_whole; - - #endif // ADVANCE or LIN_ADVANCE - - #if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE) - eISR_Rate = (timer >> 2) * step_loops / abs(e_steps[TOOL_E_INDEX]); - #endif - } - else if (step_events_completed > (unsigned long)current_block->decelerate_after) { - MultiU24X32toH16(step_rate, deceleration_time, current_block->acceleration_rate); - - if (step_rate <= acc_step_rate) { // Still decelerating? - step_rate = acc_step_rate - step_rate; - NOLESS(step_rate, current_block->final_rate); - } - else - step_rate = current_block->final_rate; - - // step_rate to timer interval - timer = calc_timer(step_rate); - OCR1A = timer; - deceleration_time += timer; - - #if ENABLED(LIN_ADVANCE) - - if (current_block->use_advance_lead) { - #if ENABLED(MIXING_EXTRUDER) - MIXING_STEPPERS_LOOP(j) - current_estep_rate[j] = ((unsigned long)step_rate * current_block->e_speed_multiplier8 * current_block->step_event_count / current_block->mix_event_count[j]) >> 8; - #else - current_estep_rate[TOOL_E_INDEX] = ((unsigned long)step_rate * current_block->e_speed_multiplier8) >> 8; - #endif - } - - #elif ENABLED(ADVANCE) - - advance -= advance_rate * step_loops; - NOLESS(advance, final_advance); - - // Do E steps + advance steps - long advance_whole = advance >> 8, - advance_factor = advance_whole - old_advance; - - #if ENABLED(MIXING_EXTRUDER) - MIXING_STEPPERS_LOOP(j) - e_steps[j] += advance_factor * current_block->step_event_count / current_block->mix_event_count[j]; - #else - e_steps[TOOL_E_INDEX] += advance_factor; - #endif - - old_advance = advance_whole; - - #endif // ADVANCE or LIN_ADVANCE - - #if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE) - eISR_Rate = (timer >> 2) * step_loops / abs(e_steps[TOOL_E_INDEX]); - #endif - } - else { - - #if ENABLED(LIN_ADVANCE) - - if (current_block->use_advance_lead) - current_estep_rate[TOOL_E_INDEX] = final_estep_rate; - - eISR_Rate = (OCR1A_nominal >> 2) * step_loops_nominal / abs(e_steps[TOOL_E_INDEX]); - - #endif - - OCR1A = OCR1A_nominal; - // ensure we're running at the correct step rate, even if we just came off an acceleration - step_loops = step_loops_nominal; - } - - OCR1A = (OCR1A < (TCNT1 + 16)) ? (TCNT1 + 16) : OCR1A; - - // If current block is finished, reset pointer - if (step_events_completed >= current_block->step_event_count) { - current_block = NULL; - planner.discard_current_block(); - } - } -} - -#if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE) - - // Timer interrupt for E. e_steps is set in the main routine; - // Timer 0 is shared with millies - ISR(TIMER0_COMPA_vect) { Stepper::advance_isr(); } - - void Stepper::advance_isr() { - - old_OCR0A += eISR_Rate; - OCR0A = old_OCR0A; - - #define STEP_E_ONCE(INDEX) \ - if (e_steps[INDEX] != 0) { \ - E## INDEX ##_STEP_WRITE(INVERT_E_STEP_PIN); \ - if (e_steps[INDEX] < 0) { \ - E## INDEX ##_DIR_WRITE(INVERT_E## INDEX ##_DIR); \ - e_steps[INDEX]++; \ - } \ - else { \ - E## INDEX ##_DIR_WRITE(!INVERT_E## INDEX ##_DIR); \ - e_steps[INDEX]--; \ - } \ - E## INDEX ##_STEP_WRITE(!INVERT_E_STEP_PIN); \ - } - - // Step all E steppers that have steps - for (uint8_t i = 0; i < step_loops; i++) { - STEP_E_ONCE(0); - #if E_STEPPERS > 1 - STEP_E_ONCE(1); - #if E_STEPPERS > 2 - STEP_E_ONCE(2); - #if E_STEPPERS > 3 - STEP_E_ONCE(3); - #endif - #endif - #endif - } - - } - -#endif // ADVANCE or LIN_ADVANCE - -void Stepper::init() { - - digipot_init(); //Initialize Digipot Motor Current - microstep_init(); //Initialize Microstepping Pins - - // initialise TMC Steppers - #if ENABLED(HAVE_TMCDRIVER) - tmc_init(); - #endif - // initialise L6470 Steppers - #if ENABLED(HAVE_L6470DRIVER) - L6470_init(); - #endif - - // Initialize Dir Pins - #if HAS_X_DIR - X_DIR_INIT; - #endif - #if HAS_X2_DIR - X2_DIR_INIT; - #endif - #if HAS_Y_DIR - Y_DIR_INIT; - #if ENABLED(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_DIR - Y2_DIR_INIT; - #endif - #endif - #if HAS_Z_DIR - Z_DIR_INIT; - #if ENABLED(Z_DUAL_STEPPER_DRIVERS) && HAS_Z2_DIR - Z2_DIR_INIT; - #endif - #endif - #if HAS_E0_DIR - E0_DIR_INIT; - #endif - #if HAS_E1_DIR - E1_DIR_INIT; - #endif - #if HAS_E2_DIR - E2_DIR_INIT; - #endif - #if HAS_E3_DIR - E3_DIR_INIT; - #endif - - //Initialize Enable Pins - steppers default to disabled. - - #if HAS_X_ENABLE - X_ENABLE_INIT; - if (!X_ENABLE_ON) X_ENABLE_WRITE(HIGH); - #if ENABLED(DUAL_X_CARRIAGE) && HAS_X2_ENABLE - X2_ENABLE_INIT; - if (!X_ENABLE_ON) X2_ENABLE_WRITE(HIGH); - #endif - #endif - - #if HAS_Y_ENABLE - Y_ENABLE_INIT; - if (!Y_ENABLE_ON) Y_ENABLE_WRITE(HIGH); - #if ENABLED(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_ENABLE - Y2_ENABLE_INIT; - if (!Y_ENABLE_ON) Y2_ENABLE_WRITE(HIGH); - #endif - #endif - - #if HAS_Z_ENABLE - Z_ENABLE_INIT; - if (!Z_ENABLE_ON) Z_ENABLE_WRITE(HIGH); - #if ENABLED(Z_DUAL_STEPPER_DRIVERS) && HAS_Z2_ENABLE - Z2_ENABLE_INIT; - if (!Z_ENABLE_ON) Z2_ENABLE_WRITE(HIGH); - #endif - #endif - - #if HAS_E0_ENABLE - E0_ENABLE_INIT; - if (!E_ENABLE_ON) E0_ENABLE_WRITE(HIGH); - #endif - #if HAS_E1_ENABLE - E1_ENABLE_INIT; - if (!E_ENABLE_ON) E1_ENABLE_WRITE(HIGH); - #endif - #if HAS_E2_ENABLE - E2_ENABLE_INIT; - if (!E_ENABLE_ON) E2_ENABLE_WRITE(HIGH); - #endif - #if HAS_E3_ENABLE - E3_ENABLE_INIT; - if (!E_ENABLE_ON) E3_ENABLE_WRITE(HIGH); - #endif - - // - // Init endstops and pullups here - // - endstops.init(); - - #define _STEP_INIT(AXIS) AXIS ##_STEP_INIT - #define _WRITE_STEP(AXIS, HIGHLOW) AXIS ##_STEP_WRITE(HIGHLOW) - #define _DISABLE(axis) disable_## axis() - - #define AXIS_INIT(axis, AXIS, PIN) \ - _STEP_INIT(AXIS); \ - _WRITE_STEP(AXIS, _INVERT_STEP_PIN(PIN)); \ - _DISABLE(axis) - - #define E_AXIS_INIT(NUM) AXIS_INIT(e## NUM, E## NUM, E) - - // Initialize Step Pins - #if HAS_X_STEP - #if ENABLED(X_DUAL_STEPPER_DRIVERS) || ENABLED(DUAL_X_CARRIAGE) - X2_STEP_INIT; - X2_STEP_WRITE(INVERT_X_STEP_PIN); - #endif - AXIS_INIT(x, X, X); - #endif - - #if HAS_Y_STEP - #if ENABLED(Y_DUAL_STEPPER_DRIVERS) - Y2_STEP_INIT; - Y2_STEP_WRITE(INVERT_Y_STEP_PIN); - #endif - AXIS_INIT(y, Y, Y); - #endif - - #if HAS_Z_STEP - #if ENABLED(Z_DUAL_STEPPER_DRIVERS) - Z2_STEP_INIT; - Z2_STEP_WRITE(INVERT_Z_STEP_PIN); - #endif - AXIS_INIT(z, Z, Z); - #endif - - #if HAS_E0_STEP - E_AXIS_INIT(0); - #endif - #if HAS_E1_STEP - E_AXIS_INIT(1); - #endif - #if HAS_E2_STEP - E_AXIS_INIT(2); - #endif - #if HAS_E3_STEP - E_AXIS_INIT(3); - #endif - - // waveform generation = 0100 = CTC - CBI(TCCR1B, WGM13); - SBI(TCCR1B, WGM12); - CBI(TCCR1A, WGM11); - CBI(TCCR1A, WGM10); - - // output mode = 00 (disconnected) - TCCR1A &= ~(3 << COM1A0); - TCCR1A &= ~(3 << COM1B0); - // Set the timer pre-scaler - // Generally we use a divider of 8, resulting in a 2MHz timer - // frequency on a 16MHz MCU. If you are going to change this, be - // sure to regenerate speed_lookuptable.h with - // create_speed_lookuptable.py - TCCR1B = (TCCR1B & ~(0x07 << CS10)) | (2 << CS10); - - OCR1A = 0x4000; - TCNT1 = 0; - ENABLE_STEPPER_DRIVER_INTERRUPT(); - - #if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE) - - for (int i = 0; i < E_STEPPERS; i++) { - e_steps[i] = 0; - #if ENABLED(LIN_ADVANCE) - current_adv_steps[i] = 0; - #endif - } - - #if defined(TCCR0A) && defined(WGM01) - CBI(TCCR0A, WGM01); - CBI(TCCR0A, WGM00); - #endif - SBI(TIMSK0, OCIE0A); - - #endif // ADVANCE or LIN_ADVANCE - - endstops.enable(true); // Start with endstops active. After homing they can be disabled - sei(); - - set_directions(); // Init directions to last_direction_bits = 0 -} - - -/** - * Block until all buffered steps are executed - */ -void Stepper::synchronize() { while (planner.blocks_queued()) idle(); } - -/** - * Set the stepper positions directly in steps - * - * The input is based on the typical per-axis XYZ steps. - * For CORE machines XYZ needs to be translated to ABC. - * - * This allows get_axis_position_mm to correctly - * derive the current XYZ position later on. - */ -void Stepper::set_position(const long& x, const long& y, const long& z, const long& e) { - CRITICAL_SECTION_START; - - #if ENABLED(COREXY) - // corexy positioning - // these equations follow the form of the dA and dB equations on http://www.corexy.com/theory.html - count_position[A_AXIS] = x + y; - count_position[B_AXIS] = x - y; - count_position[Z_AXIS] = z; - #elif ENABLED(COREXZ) - // corexz planning - count_position[A_AXIS] = x + z; - count_position[Y_AXIS] = y; - count_position[C_AXIS] = x - z; - #elif ENABLED(COREYZ) - // coreyz planning - count_position[X_AXIS] = x; - count_position[B_AXIS] = y + z; - count_position[C_AXIS] = y - z; - #else - // default non-h-bot planning - count_position[X_AXIS] = x; - count_position[Y_AXIS] = y; - count_position[Z_AXIS] = z; - #endif - - count_position[E_AXIS] = e; - CRITICAL_SECTION_END; -} - -void Stepper::set_e_position(const long& e) { - CRITICAL_SECTION_START; - count_position[E_AXIS] = e; - CRITICAL_SECTION_END; -} - -/** - * Get a stepper's position in steps. - */ -long Stepper::position(AxisEnum axis) { - CRITICAL_SECTION_START; - long count_pos = count_position[axis]; - CRITICAL_SECTION_END; - return count_pos; -} - -/** - * Get an axis position according to stepper position(s) - * For CORE machines apply translation from ABC to XYZ. - */ -float Stepper::get_axis_position_mm(AxisEnum axis) { - float axis_steps; - #if ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ) - // Requesting one of the "core" axes? - if (axis == CORE_AXIS_1 || axis == CORE_AXIS_2) { - CRITICAL_SECTION_START; - long pos1 = count_position[CORE_AXIS_1], - pos2 = count_position[CORE_AXIS_2]; - CRITICAL_SECTION_END; - // ((a1+a2)+(a1-a2))/2 -> (a1+a2+a1-a2)/2 -> (a1+a1)/2 -> a1 - // ((a1+a2)-(a1-a2))/2 -> (a1+a2-a1+a2)/2 -> (a2+a2)/2 -> a2 - axis_steps = (pos1 + ((axis == CORE_AXIS_1) ? pos2 : -pos2)) * 0.5f; - } - else - axis_steps = position(axis); - #else - axis_steps = position(axis); - #endif - return axis_steps * planner.steps_to_mm[axis]; -} - -void Stepper::finish_and_disable() { - synchronize(); - disable_all_steppers(); -} - -void Stepper::quick_stop() { - cleaning_buffer_counter = 5000; - DISABLE_STEPPER_DRIVER_INTERRUPT(); - while (planner.blocks_queued()) planner.discard_current_block(); - current_block = NULL; - ENABLE_STEPPER_DRIVER_INTERRUPT(); -} - -void Stepper::endstop_triggered(AxisEnum axis) { - - #if ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ) - - float axis_pos = count_position[axis]; - if (axis == CORE_AXIS_1) - axis_pos = (axis_pos + count_position[CORE_AXIS_2]) * 0.5; - else if (axis == CORE_AXIS_2) - axis_pos = (count_position[CORE_AXIS_1] - axis_pos) * 0.5; - endstops_trigsteps[axis] = axis_pos; - - #else // !COREXY && !COREXZ && !COREYZ - - endstops_trigsteps[axis] = count_position[axis]; - - #endif // !COREXY && !COREXZ && !COREYZ - - kill_current_block(); -} - -void Stepper::report_positions() { - CRITICAL_SECTION_START; - long xpos = count_position[X_AXIS], - ypos = count_position[Y_AXIS], - zpos = count_position[Z_AXIS]; - CRITICAL_SECTION_END; - - #if ENABLED(COREXY) || ENABLED(COREXZ) - SERIAL_PROTOCOLPGM(MSG_COUNT_A); - #else - SERIAL_PROTOCOLPGM(MSG_COUNT_X); - #endif - SERIAL_PROTOCOL(xpos); - - #if ENABLED(COREXY) || ENABLED(COREYZ) - SERIAL_PROTOCOLPGM(" B:"); - #else - SERIAL_PROTOCOLPGM(" Y:"); - #endif - SERIAL_PROTOCOL(ypos); - - #if ENABLED(COREXZ) || ENABLED(COREYZ) - SERIAL_PROTOCOLPGM(" C:"); - #else - SERIAL_PROTOCOLPGM(" Z:"); - #endif - SERIAL_PROTOCOL(zpos); - - SERIAL_EOL; -} - -#if ENABLED(BABYSTEPPING) - - // MUST ONLY BE CALLED BY AN ISR, - // No other ISR should ever interrupt this! - void Stepper::babystep(const uint8_t axis, const bool direction) { - - #define _ENABLE(axis) enable_## axis() - #define _READ_DIR(AXIS) AXIS ##_DIR_READ - #define _INVERT_DIR(AXIS) INVERT_## AXIS ##_DIR - #define _APPLY_DIR(AXIS, INVERT) AXIS ##_APPLY_DIR(INVERT, true) - - #define BABYSTEP_AXIS(axis, AXIS, INVERT) { \ - _ENABLE(axis); \ - uint8_t old_pin = _READ_DIR(AXIS); \ - _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^direction^INVERT); \ - _APPLY_STEP(AXIS)(!_INVERT_STEP_PIN(AXIS), true); \ - delayMicroseconds(2); \ - _APPLY_STEP(AXIS)(_INVERT_STEP_PIN(AXIS), true); \ - _APPLY_DIR(AXIS, old_pin); \ - } - - switch (axis) { - - case X_AXIS: - BABYSTEP_AXIS(x, X, false); - break; - - case Y_AXIS: - BABYSTEP_AXIS(y, Y, false); - break; - - case Z_AXIS: { - - #if DISABLED(DELTA) - - BABYSTEP_AXIS(z, Z, BABYSTEP_INVERT_Z); - - #else // DELTA - - bool z_direction = direction ^ BABYSTEP_INVERT_Z; - - enable_x(); - enable_y(); - enable_z(); - uint8_t old_x_dir_pin = X_DIR_READ, - old_y_dir_pin = Y_DIR_READ, - old_z_dir_pin = Z_DIR_READ; - //setup new step - X_DIR_WRITE(INVERT_X_DIR ^ z_direction); - Y_DIR_WRITE(INVERT_Y_DIR ^ z_direction); - Z_DIR_WRITE(INVERT_Z_DIR ^ z_direction); - //perform step - X_STEP_WRITE(!INVERT_X_STEP_PIN); - Y_STEP_WRITE(!INVERT_Y_STEP_PIN); - Z_STEP_WRITE(!INVERT_Z_STEP_PIN); - delayMicroseconds(2); - X_STEP_WRITE(INVERT_X_STEP_PIN); - Y_STEP_WRITE(INVERT_Y_STEP_PIN); - Z_STEP_WRITE(INVERT_Z_STEP_PIN); - //get old pin state back. - X_DIR_WRITE(old_x_dir_pin); - Y_DIR_WRITE(old_y_dir_pin); - Z_DIR_WRITE(old_z_dir_pin); - - #endif - - } break; - - default: break; - } - } - -#endif //BABYSTEPPING - -/** - * Software-controlled Stepper Motor Current - */ - -#if HAS_DIGIPOTSS - - // From Arduino DigitalPotControl example - void Stepper::digitalPotWrite(int address, int value) { - digitalWrite(DIGIPOTSS_PIN, LOW); // take the SS pin low to select the chip - SPI.transfer(address); // send in the address and value via SPI: - SPI.transfer(value); - digitalWrite(DIGIPOTSS_PIN, HIGH); // take the SS pin high to de-select the chip: - //delay(10); - } - -#endif //HAS_DIGIPOTSS - -void Stepper::digipot_init() { - #if HAS_DIGIPOTSS - const uint8_t digipot_motor_current[] = DIGIPOT_MOTOR_CURRENT; - - SPI.begin(); - pinMode(DIGIPOTSS_PIN, OUTPUT); - for (uint8_t i = 0; i < COUNT(digipot_motor_current); i++) { - //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]); - digipot_current(i, digipot_motor_current[i]); - } - #endif - #if HAS_MOTOR_CURRENT_PWM - #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY) - pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT); - digipot_current(0, motor_current_setting[0]); - #endif - #if PIN_EXISTS(MOTOR_CURRENT_PWM_Z) - pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT); - digipot_current(1, motor_current_setting[1]); - #endif - #if PIN_EXISTS(MOTOR_CURRENT_PWM_E) - pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT); - digipot_current(2, motor_current_setting[2]); - #endif - //Set timer5 to 31khz so the PWM of the motor power is as constant as possible. (removes a buzzing noise) - TCCR5B = (TCCR5B & ~(_BV(CS50) | _BV(CS51) | _BV(CS52))) | _BV(CS50); - #endif -} - -void Stepper::digipot_current(uint8_t driver, int current) { - #if HAS_DIGIPOTSS - const uint8_t digipot_ch[] = DIGIPOT_CHANNELS; - digitalPotWrite(digipot_ch[driver], current); - #elif HAS_MOTOR_CURRENT_PWM - #define _WRITE_CURRENT_PWM(P) analogWrite(P, 255L * current / (MOTOR_CURRENT_PWM_RANGE)) - switch (driver) { - #if PIN_EXISTS(MOTOR_CURRENT_PWM_XY) - case 0: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_XY_PIN); break; - #endif - #if PIN_EXISTS(MOTOR_CURRENT_PWM_Z) - case 1: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_Z_PIN); break; - #endif - #if PIN_EXISTS(MOTOR_CURRENT_PWM_E) - case 2: _WRITE_CURRENT_PWM(MOTOR_CURRENT_PWM_E_PIN); break; - #endif - } - #else - UNUSED(driver); - UNUSED(current); - #endif -} - -void Stepper::microstep_init() { - #if HAS_MICROSTEPS_E1 - pinMode(E1_MS1_PIN, OUTPUT); - pinMode(E1_MS2_PIN, OUTPUT); - #endif - - #if HAS_MICROSTEPS - pinMode(X_MS1_PIN, OUTPUT); - pinMode(X_MS2_PIN, OUTPUT); - pinMode(Y_MS1_PIN, OUTPUT); - pinMode(Y_MS2_PIN, OUTPUT); - pinMode(Z_MS1_PIN, OUTPUT); - pinMode(Z_MS2_PIN, OUTPUT); - pinMode(E0_MS1_PIN, OUTPUT); - pinMode(E0_MS2_PIN, OUTPUT); - const uint8_t microstep_modes[] = MICROSTEP_MODES; - for (uint16_t i = 0; i < COUNT(microstep_modes); i++) - microstep_mode(i, microstep_modes[i]); - #endif -} - -/** - * Software-controlled Microstepping - */ - -void Stepper::microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) { - if (ms1 >= 0) switch (driver) { - case 0: digitalWrite(X_MS1_PIN, ms1); break; - case 1: digitalWrite(Y_MS1_PIN, ms1); break; - case 2: digitalWrite(Z_MS1_PIN, ms1); break; - case 3: digitalWrite(E0_MS1_PIN, ms1); break; - #if HAS_MICROSTEPS_E1 - case 4: digitalWrite(E1_MS1_PIN, ms1); break; - #endif - } - if (ms2 >= 0) switch (driver) { - case 0: digitalWrite(X_MS2_PIN, ms2); break; - case 1: digitalWrite(Y_MS2_PIN, ms2); break; - case 2: digitalWrite(Z_MS2_PIN, ms2); break; - case 3: digitalWrite(E0_MS2_PIN, ms2); break; - #if PIN_EXISTS(E1_MS2) - case 4: digitalWrite(E1_MS2_PIN, ms2); break; - #endif - } -} - -void Stepper::microstep_mode(uint8_t driver, uint8_t stepping_mode) { - switch (stepping_mode) { - case 1: microstep_ms(driver, MICROSTEP1); break; - case 2: microstep_ms(driver, MICROSTEP2); break; - case 4: microstep_ms(driver, MICROSTEP4); break; - case 8: microstep_ms(driver, MICROSTEP8); break; - case 16: microstep_ms(driver, MICROSTEP16); break; - } -} - -void Stepper::microstep_readings() { - SERIAL_PROTOCOLLNPGM("MS1,MS2 Pins"); - SERIAL_PROTOCOLPGM("X: "); - SERIAL_PROTOCOL(digitalRead(X_MS1_PIN)); - SERIAL_PROTOCOLLN(digitalRead(X_MS2_PIN)); - SERIAL_PROTOCOLPGM("Y: "); - SERIAL_PROTOCOL(digitalRead(Y_MS1_PIN)); - SERIAL_PROTOCOLLN(digitalRead(Y_MS2_PIN)); - SERIAL_PROTOCOLPGM("Z: "); - SERIAL_PROTOCOL(digitalRead(Z_MS1_PIN)); - SERIAL_PROTOCOLLN(digitalRead(Z_MS2_PIN)); - SERIAL_PROTOCOLPGM("E0: "); - SERIAL_PROTOCOL(digitalRead(E0_MS1_PIN)); - SERIAL_PROTOCOLLN(digitalRead(E0_MS2_PIN)); - #if HAS_MICROSTEPS_E1 - SERIAL_PROTOCOLPGM("E1: "); - SERIAL_PROTOCOL(digitalRead(E1_MS1_PIN)); - SERIAL_PROTOCOLLN(digitalRead(E1_MS2_PIN)); - #endif -} - -#if ENABLED(LIN_ADVANCE) - - void Stepper::advance_M905(const float &k) { - if (k >= 0) extruder_advance_k = k; - SERIAL_ECHO_START; - SERIAL_ECHOPAIR("Advance factor: ", extruder_advance_k); - SERIAL_EOL; - } - -#endif // LIN_ADVANCE diff --git a/lib/Marlin/stepper.h b/lib/Marlin/stepper.h deleted file mode 100644 index 1dd1531..0000000 --- a/lib/Marlin/stepper.h +++ /dev/null @@ -1,380 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * stepper.h - stepper motor driver: executes motion plans of planner.c using the stepper motors - * Derived from Grbl - * - * Copyright (c) 2009-2011 Simen Svale Skogsrud - * - * Grbl is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Grbl is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Grbl. If not, see . - */ - -#ifndef STEPPER_H -#define STEPPER_H - -#include "planner.h" -#include "speed_lookuptable.h" -#include "stepper_indirection.h" -#include "language.h" -#include "types.h" - -class Stepper; -extern Stepper stepper; - -// intRes = intIn1 * intIn2 >> 16 -// uses: -// r26 to store 0 -// r27 to store the byte 1 of the 24 bit result -#define MultiU16X8toH16(intRes, charIn1, intIn2) \ - asm volatile ( \ - "clr r26 \n\t" \ - "mul %A1, %B2 \n\t" \ - "movw %A0, r0 \n\t" \ - "mul %A1, %A2 \n\t" \ - "add %A0, r1 \n\t" \ - "adc %B0, r26 \n\t" \ - "lsr r0 \n\t" \ - "adc %A0, r26 \n\t" \ - "adc %B0, r26 \n\t" \ - "clr r1 \n\t" \ - : \ - "=&r" (intRes) \ - : \ - "d" (charIn1), \ - "d" (intIn2) \ - : \ - "r26" \ - ) - -class Stepper { - - public: - - static block_t* current_block; // A pointer to the block currently being traced - - #if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) - static bool abort_on_endstop_hit; - #endif - - #if ENABLED(Z_DUAL_ENDSTOPS) - static bool performing_homing; - #endif - - private: - - static unsigned char last_direction_bits; // The next stepping-bits to be output - static unsigned int cleaning_buffer_counter; - - #if ENABLED(Z_DUAL_ENDSTOPS) - static bool locked_z_motor, locked_z2_motor; - #endif - - // Counter variables for the Bresenham line tracer - static long counter_X, counter_Y, counter_Z, counter_E; - static volatile unsigned long step_events_completed; // The number of step events executed in the current block - - #if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE) - static unsigned char old_OCR0A; - static volatile unsigned char eISR_Rate; - #if ENABLED(LIN_ADVANCE) - static volatile int e_steps[E_STEPPERS]; - static int extruder_advance_k; - static int final_estep_rate; - static int current_estep_rate[E_STEPPERS]; // Actual extruder speed [steps/s] - static int current_adv_steps[E_STEPPERS]; // The amount of current added esteps due to advance. - // i.e., the current amount of pressure applied - // to the spring (=filament). - #else - static long e_steps[E_STEPPERS]; - static long advance_rate, advance, final_advance; - static long old_advance; - #endif - #endif // ADVANCE or LIN_ADVANCE - - static long acceleration_time, deceleration_time; - //unsigned long accelerate_until, decelerate_after, acceleration_rate, initial_rate, final_rate, nominal_rate; - static unsigned short acc_step_rate; // needed for deceleration start point - static uint8_t step_loops, step_loops_nominal; - static unsigned short OCR1A_nominal; - - static volatile long endstops_trigsteps[3]; - static volatile long endstops_stepsTotal, endstops_stepsDone; - - #if HAS_MOTOR_CURRENT_PWM - #ifndef PWM_MOTOR_CURRENT - #define PWM_MOTOR_CURRENT DEFAULT_PWM_MOTOR_CURRENT - #endif - static constexpr int motor_current_setting[3] = PWM_MOTOR_CURRENT; - #endif - - // - // Positions of stepper motors, in step units - // - static volatile long count_position[NUM_AXIS]; - - // - // Current direction of stepper motors (+1 or -1) - // - static volatile signed char count_direction[NUM_AXIS]; - - // - // Mixing extruder mix counters - // - #if ENABLED(MIXING_EXTRUDER) - static long counter_M[MIXING_STEPPERS]; - #define MIXING_STEPPERS_LOOP(VAR) \ - for (uint8_t VAR = 0; VAR < MIXING_STEPPERS; VAR++) \ - if (current_block->mix_event_count[VAR]) - #endif - - public: - - // - // Constructor / initializer - // - Stepper() { }; - - // - // Initialize stepper hardware - // - static void init(); - - // - // Interrupt Service Routines - // - - static void isr(); - - #if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE) - static void advance_isr(); - #endif - - // - // Block until all buffered steps are executed - // - static void synchronize(); - - // - // Set the current position in steps - // - static void set_position(const long& x, const long& y, const long& z, const long& e); - static void set_e_position(const long& e); - - // - // Set direction bits for all steppers - // - static void set_directions(); - - // - // Get the position of a stepper, in steps - // - static long position(AxisEnum axis); - - // - // Report the positions of the steppers, in steps - // - static void report_positions(); - - // - // Get the position (mm) of an axis based on stepper position(s) - // - static float get_axis_position_mm(AxisEnum axis); - - // - // The stepper subsystem goes to sleep when it runs out of things to execute. Call this - // to notify the subsystem that it is time to go to work. - // - static void wake_up(); - - // - // Wait for moves to finish and disable all steppers - // - static void finish_and_disable(); - - // - // Quickly stop all steppers and clear the blocks queue - // - static void quick_stop(); - - // - // The direction of a single motor - // - static FORCE_INLINE bool motor_direction(AxisEnum axis) { return TEST(last_direction_bits, axis); } - - #if HAS_DIGIPOTSS - static void digitalPotWrite(int address, int value); - #endif - static void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2); - static void digipot_current(uint8_t driver, int current); - static void microstep_mode(uint8_t driver, uint8_t stepping); - static void microstep_readings(); - - #if ENABLED(Z_DUAL_ENDSTOPS) - static FORCE_INLINE void set_homing_flag(bool state) { performing_homing = state; } - static FORCE_INLINE void set_z_lock(bool state) { locked_z_motor = state; } - static FORCE_INLINE void set_z2_lock(bool state) { locked_z2_motor = state; } - #endif - - #if ENABLED(BABYSTEPPING) - static void babystep(const uint8_t axis, const bool direction); // perform a short step with a single stepper motor, outside of any convention - #endif - - static inline void kill_current_block() { - step_events_completed = current_block->step_event_count; - } - - // - // Handle a triggered endstop - // - static void endstop_triggered(AxisEnum axis); - - // - // Triggered position of an axis in mm (not core-savvy) - // - static FORCE_INLINE float triggered_position_mm(AxisEnum axis) { - return endstops_trigsteps[axis] * planner.steps_to_mm[axis]; - } - - #if ENABLED(LIN_ADVANCE) - void advance_M905(const float &k); - FORCE_INLINE int get_advance_k() { return extruder_advance_k; } - #endif - - private: - - static FORCE_INLINE unsigned short calc_timer(unsigned short step_rate) { - unsigned short timer; - - NOMORE(step_rate, MAX_STEP_FREQUENCY); - - if (step_rate > 20000) { // If steprate > 20kHz >> step 4 times - step_rate >>= 2; - step_loops = 4; - } - else if (step_rate > 10000) { // If steprate > 10kHz >> step 2 times - step_rate >>= 1; - step_loops = 2; - } - else { - step_loops = 1; - } - - NOLESS(step_rate, F_CPU / 500000); - step_rate -= F_CPU / 500000; // Correct for minimal speed - if (step_rate >= (8 * 256)) { // higher step rate - unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate >> 8)][0]; - unsigned char tmp_step_rate = (step_rate & 0x00ff); - unsigned short gain = (unsigned short)pgm_read_word_near(table_address + 2); - MultiU16X8toH16(timer, tmp_step_rate, gain); - timer = (unsigned short)pgm_read_word_near(table_address) - timer; - } - else { // lower step rates - unsigned short table_address = (unsigned short)&speed_lookuptable_slow[0][0]; - table_address += ((step_rate) >> 1) & 0xfffc; - 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) { // (20kHz - this should never happen) - timer = 100; - MYSERIAL.print(MSG_STEPPER_TOO_HIGH); - MYSERIAL.println(step_rate); - } - return timer; - } - - // Initializes the trapezoid generator from the current block. Called whenever a new - // block begins. - static FORCE_INLINE void trapezoid_generator_reset() { - - static int8_t last_extruder = -1; - - if (current_block->direction_bits != last_direction_bits || current_block->active_extruder != last_extruder) { - last_direction_bits = current_block->direction_bits; - last_extruder = current_block->active_extruder; - set_directions(); - } - - #if ENABLED(ADVANCE) - - advance = current_block->initial_advance; - final_advance = current_block->final_advance; - - // Do E steps + advance steps - #if ENABLED(MIXING_EXTRUDER) - long advance_factor = (advance >> 8) - old_advance; - // ...for mixing steppers proportionally - MIXING_STEPPERS_LOOP(j) - e_steps[j] += advance_factor * current_block->step_event_count / current_block->mix_event_count[j]; - #else - // ...for the active extruder - e_steps[TOOL_E_INDEX] += ((advance >> 8) - old_advance); - #endif - - old_advance = advance >> 8; - - #endif - - deceleration_time = 0; - // step_rate to timer interval - OCR1A_nominal = calc_timer(current_block->nominal_rate); - // make a note of the number of step loops required at nominal speed - step_loops_nominal = step_loops; - acc_step_rate = current_block->initial_rate; - acceleration_time = calc_timer(acc_step_rate); - OCR1A = acceleration_time; - - #if ENABLED(LIN_ADVANCE) - if (current_block->use_advance_lead) { - current_estep_rate[current_block->active_extruder] = ((unsigned long)acc_step_rate * current_block->e_speed_multiplier8) >> 8; - final_estep_rate = (current_block->nominal_rate * current_block->e_speed_multiplier8) >> 8; - } - #endif - - // SERIAL_ECHO_START; - // SERIAL_ECHOPGM("advance :"); - // SERIAL_ECHO(current_block->advance/256.0); - // SERIAL_ECHOPGM("advance rate :"); - // SERIAL_ECHO(current_block->advance_rate/256.0); - // SERIAL_ECHOPGM("initial advance :"); - // SERIAL_ECHO(current_block->initial_advance/256.0); - // SERIAL_ECHOPGM("final advance :"); - // SERIAL_ECHOLN(current_block->final_advance/256.0); - } - - static void digipot_init(); - static void microstep_init(); - -}; - -#endif // STEPPER_H \ No newline at end of file diff --git a/lib/Marlin/stepper_dac.cpp b/lib/Marlin/stepper_dac.cpp deleted file mode 100644 index 6c71b89..0000000 --- a/lib/Marlin/stepper_dac.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - stepper_dac.cpp - To set stepper current via DAC - - Part of Marlin - - Copyright (c) 2016 MarlinFirmware - - Marlin is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Marlin is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Marlin. If not, see . -*/ - -#include "Marlin.h" - -#if ENABLED(DAC_STEPPER_CURRENT) - - #include "stepper_dac.h" - - bool dac_present = false; - const uint8_t dac_order[NUM_AXIS] = DAC_STEPPER_ORDER; - - int dac_init() { - #if PIN_EXISTS(DAC_DISABLE) - pinMode(DAC_DISABLE_PIN, OUTPUT); - digitalWrite(DAC_DISABLE_PIN, LOW); // set pin low to enable DAC - #endif - - mcp4728_init(); - - if (mcp4728_simpleCommand(RESET)) return -1; - - dac_present = true; - - mcp4728_setVref_all(DAC_STEPPER_VREF); - mcp4728_setGain_all(DAC_STEPPER_GAIN); - - return 0; - } - - void dac_current_percent(uint8_t channel, float val) { - if (!dac_present) return; - - NOMORE(val, 100); - - mcp4728_analogWrite(dac_order[channel], val * DAC_STEPPER_MAX / 100); - mcp4728_simpleCommand(UPDATE); - } - - void dac_current_raw(uint8_t channel, uint16_t val) { - if (!dac_present) return; - - NOMORE(val, DAC_STEPPER_MAX); - - mcp4728_analogWrite(dac_order[channel], val); - mcp4728_simpleCommand(UPDATE); - } - - static float dac_perc(int8_t n) { return 100.0 * mcp4728_getValue(dac_order[n]) / DAC_STEPPER_MAX; } - static float dac_amps(int8_t n) { return ((2.048 * mcp4728_getValue(dac_order[n])) / 4096.0) / (8.0 * DAC_STEPPER_SENSE); } - - void dac_print_values() { - if (!dac_present) return; - - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM("Stepper current values in % (Amps):"); - SERIAL_ECHO_START; - SERIAL_ECHOPAIR(" X:", dac_perc(0)); - SERIAL_ECHOPAIR(" (", dac_amps(0)); - SERIAL_ECHOPAIR(") Y:", dac_perc(1)); - SERIAL_ECHOPAIR(" (", dac_amps(1)); - SERIAL_ECHOPAIR(") Z:", dac_perc(2)); - SERIAL_ECHOPAIR(" (", dac_amps(2)); - SERIAL_ECHOPAIR(") E:", dac_perc(3)); - SERIAL_ECHOPAIR(" (", dac_amps(3)); - SERIAL_ECHOLNPGM(")"); - } - - void dac_commit_eeprom() { - if (!dac_present) return; - mcp4728_eepromWrite(); - } - -#endif // DAC_STEPPER_CURRENT diff --git a/lib/Marlin/stepper_dac.h b/lib/Marlin/stepper_dac.h deleted file mode 100644 index d80a846..0000000 --- a/lib/Marlin/stepper_dac.h +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - stepper_dac.h - To set stepper current via DAC - - Part of Marlin - - Copyright (c) 2016 MarlinFirmware - - Marlin is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Marlin is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Marlin. If not, see . -*/ - -#ifndef STEPPER_DAC_H -#define STEPPER_DAC_H - -#include "dac_mcp4728.h" - -int dac_init(); -void dac_current_percent(uint8_t channel, float val); -void dac_current_raw(uint8_t channel, uint16_t val); -void dac_print_values(); -void dac_commit_eeprom(); - -#endif // STEPPER_DAC_H diff --git a/lib/Marlin/stepper_indirection.cpp b/lib/Marlin/stepper_indirection.cpp deleted file mode 100644 index 101249e..0000000 --- a/lib/Marlin/stepper_indirection.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - stepper_indirection.c - stepper motor driver indirection - to allow some stepper functions to be done via SPI/I2c instead of direct pin manipulation - Part of Marlin - - Copyright (c) 2015 Dominik Wenger - - Marlin is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Marlin is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Marlin. If not, see . -*/ - -#include "stepper_indirection.h" - -#include "MarlinConfig.h" - -#if ENABLED(HAVE_TMCDRIVER) - #include - #include -#endif - -// Stepper objects of TMC steppers used -#if ENABLED(X_IS_TMC) - TMC26XStepper stepperX(200, X_ENABLE_PIN, X_STEP_PIN, X_DIR_PIN, X_MAX_CURRENT, X_SENSE_RESISTOR); -#endif -#if ENABLED(X2_IS_TMC) - TMC26XStepper stepperX2(200, X2_ENABLE_PIN, X2_STEP_PIN, X2_DIR_PIN, X2_MAX_CURRENT, X2_SENSE_RESISTOR); -#endif -#if ENABLED(Y_IS_TMC) - TMC26XStepper stepperY(200, Y_ENABLE_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_MAX_CURRENT, Y_SENSE_RESISTOR); -#endif -#if ENABLED(Y2_IS_TMC) - TMC26XStepper stepperY2(200, Y2_ENABLE_PIN, Y2_STEP_PIN, Y2_DIR_PIN, Y2_MAX_CURRENT, Y2_SENSE_RESISTOR); -#endif -#if ENABLED(Z_IS_TMC) - TMC26XStepper stepperZ(200, Z_ENABLE_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_MAX_CURRENT, Z_SENSE_RESISTOR); -#endif -#if ENABLED(Z2_IS_TMC) - TMC26XStepper stepperZ2(200, Z2_ENABLE_PIN, Z2_STEP_PIN, Z2_DIR_PIN, Z2_MAX_CURRENT, Z2_SENSE_RESISTOR); -#endif -#if ENABLED(E0_IS_TMC) - TMC26XStepper stepperE0(200, E0_ENABLE_PIN, E0_STEP_PIN, E0_DIR_PIN, E0_MAX_CURRENT, E0_SENSE_RESISTOR); -#endif -#if ENABLED(E1_IS_TMC) - TMC26XStepper stepperE1(200, E1_ENABLE_PIN, E1_STEP_PIN, E1_DIR_PIN, E1_MAX_CURRENT, E1_SENSE_RESISTOR); -#endif -#if ENABLED(E2_IS_TMC) - TMC26XStepper stepperE2(200, E2_ENABLE_PIN, E2_STEP_PIN, E2_DIR_PIN, E2_MAX_CURRENT, E2_SENSE_RESISTOR); -#endif -#if ENABLED(E3_IS_TMC) - TMC26XStepper stepperE3(200, E3_ENABLE_PIN, E3_STEP_PIN, E3_DIR_PIN, E3_MAX_CURRENT, E3_SENSE_RESISTOR); -#endif - -#if ENABLED(HAVE_TMCDRIVER) -void tmc_init() { - #if ENABLED(X_IS_TMC) - stepperX.setMicrosteps(X_MICROSTEPS); - stepperX.start(); - #endif - #if ENABLED(X2_IS_TMC) - stepperX2.setMicrosteps(X2_MICROSTEPS); - stepperX2.start(); - #endif - #if ENABLED(Y_IS_TMC) - stepperY.setMicrosteps(Y_MICROSTEPS); - stepperY.start(); - #endif - #if ENABLED(Y2_IS_TMC) - stepperY2.setMicrosteps(Y2_MICROSTEPS); - stepperY2.start(); - #endif - #if ENABLED(Z_IS_TMC) - stepperZ.setMicrosteps(Z_MICROSTEPS); - stepperZ.start(); - #endif - #if ENABLED(Z2_IS_TMC) - stepperZ2.setMicrosteps(Z2_MICROSTEPS); - stepperZ2.start(); - #endif - #if ENABLED(E0_IS_TMC) - stepperE0.setMicrosteps(E0_MICROSTEPS); - stepperE0.start(); - #endif - #if ENABLED(E1_IS_TMC) - stepperE1.setMicrosteps(E1_MICROSTEPS); - stepperE1.start(); - #endif - #if ENABLED(E2_IS_TMC) - stepperE2.setMicrosteps(E2_MICROSTEPS); - stepperE2.start(); - #endif - #if ENABLED(E3_IS_TMC) - stepperE3.setMicrosteps(E3_MICROSTEPS); - stepperE3.start(); - #endif -} -#endif - -// L6470 Driver objects and inits - -#if ENABLED(HAVE_L6470DRIVER) - #include - #include -#endif - -// L6470 Stepper objects -#if ENABLED(X_IS_L6470) - L6470 stepperX(X_ENABLE_PIN); -#endif -#if ENABLED(X2_IS_L6470) - L6470 stepperX2(X2_ENABLE_PIN); -#endif -#if ENABLED(Y_IS_L6470) - L6470 stepperY(Y_ENABLE_PIN); -#endif -#if ENABLED(Y2_IS_L6470) - L6470 stepperY2(Y2_ENABLE_PIN); -#endif -#if ENABLED(Z_IS_L6470) - L6470 stepperZ(Z_ENABLE_PIN); -#endif -#if ENABLED(Z2_IS_L6470) - L6470 stepperZ2(Z2_ENABLE_PIN); -#endif -#if ENABLED(E0_IS_L6470) - L6470 stepperE0(E0_ENABLE_PIN); -#endif -#if ENABLED(E1_IS_L6470) - L6470 stepperE1(E1_ENABLE_PIN); -#endif -#if ENABLED(E2_IS_L6470) - L6470 stepperE2(E2_ENABLE_PIN); -#endif -#if ENABLED(E3_IS_L6470) - L6470 stepperE3(E3_ENABLE_PIN); -#endif - - -// init routine -#if ENABLED(HAVE_L6470DRIVER) -void L6470_init() { - #if ENABLED(X_IS_L6470) - stepperX.init(X_K_VAL); - stepperX.softFree(); - stepperX.setMicroSteps(X_MICROSTEPS); - stepperX.setOverCurrent(X_OVERCURRENT); //set overcurrent protection - stepperX.setStallCurrent(X_STALLCURRENT); - #endif - #if ENABLED(X2_IS_L6470) - stepperX2.init(X2_K_VAL); - stepperX2.softFree(); - stepperX2.setMicroSteps(X2_MICROSTEPS); - stepperX2.setOverCurrent(X2_OVERCURRENT); //set overcurrent protection - stepperX2.setStallCurrent(X2_STALLCURRENT); - #endif - #if ENABLED(Y_IS_L6470) - stepperY.init(Y_K_VAL); - stepperY.softFree(); - stepperY.setMicroSteps(Y_MICROSTEPS); - stepperY.setOverCurrent(Y_OVERCURRENT); //set overcurrent protection - stepperY.setStallCurrent(Y_STALLCURRENT); - #endif - #if ENABLED(Y2_IS_L6470) - stepperY2.init(Y2_K_VAL); - stepperY2.softFree(); - stepperY2.setMicroSteps(Y2_MICROSTEPS); - stepperY2.setOverCurrent(Y2_OVERCURRENT); //set overcurrent protection - stepperY2.setStallCurrent(Y2_STALLCURRENT); - #endif - #if ENABLED(Z_IS_L6470) - stepperZ.init(Z_K_VAL); - stepperZ.softFree(); - stepperZ.setMicroSteps(Z_MICROSTEPS); - stepperZ.setOverCurrent(Z_OVERCURRENT); //set overcurrent protection - stepperZ.setStallCurrent(Z_STALLCURRENT); - #endif - #if ENABLED(Z2_IS_L6470) - stepperZ2.init(Z2_K_VAL); - stepperZ2.softFree(); - stepperZ2.setMicroSteps(Z2_MICROSTEPS); - stepperZ2.setOverCurrent(Z2_OVERCURRENT); //set overcurrent protection - stepperZ2.setStallCurrent(Z2_STALLCURRENT); - #endif - #if ENABLED(E0_IS_L6470) - stepperE0.init(E0_K_VAL); - stepperE0.softFree(); - stepperE0.setMicroSteps(E0_MICROSTEPS); - stepperE0.setOverCurrent(E0_OVERCURRENT); //set overcurrent protection - stepperE0.setStallCurrent(E0_STALLCURRENT); - #endif - #if ENABLED(E1_IS_L6470) - stepperE1.init(E1_K_VAL); - stepperE1.softFree(); - stepperE1.setMicroSteps(E1_MICROSTEPS); - stepperE1.setOverCurrent(E1_OVERCURRENT); //set overcurrent protection - stepperE1.setStallCurrent(E1_STALLCURRENT); - #endif - #if ENABLED(E2_IS_L6470) - stepperE2.init(E2_K_VAL); - stepperE2.softFree(); - stepperE2.setMicroSteps(E2_MICROSTEPS); - stepperE2.setOverCurrent(E2_OVERCURRENT); //set overcurrent protection - stepperE2.setStallCurrent(E2_STALLCURRENT); - #endif - #if ENABLED(E3_IS_L6470) - stepperE3.init(E3_K_VAL); - stepperE3.softFree(); - stepperE3.setMicroSteps(E3_MICROSTEPS); - stepperE3.setOverCurrent(E3_OVERCURRENT); //set overcurrent protection - stepperE3.setStallCurrent(E3_STALLCURRENT); - #endif -} -#endif - diff --git a/lib/Marlin/stepper_indirection.h b/lib/Marlin/stepper_indirection.h deleted file mode 100644 index 6fd19dd..0000000 --- a/lib/Marlin/stepper_indirection.h +++ /dev/null @@ -1,395 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - stepper_indirection.h - stepper motor driver indirection macros - to allow some stepper functions to be done via SPI/I2c instead of direct pin manipulation - Part of Marlin - - Copyright (c) 2015 Dominik Wenger - - Marlin is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Marlin is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Marlin. If not, see . -*/ - -#ifndef STEPPER_INDIRECTION_H -#define STEPPER_INDIRECTION_H - -#include "MarlinConfig.h" - -// TMC26X drivers have STEP/DIR on normal pins, but ENABLE via SPI -#if ENABLED(HAVE_TMCDRIVER) - #include - #include - void tmc_init(); -#endif - -// L6470 has STEP on normal pins, but DIR/ENABLE via SPI -#if ENABLED(HAVE_L6470DRIVER) - #include - #include - void L6470_init(); -#endif - -// X Stepper -#if ENABLED(HAVE_L6470DRIVER) && ENABLED(X_IS_L6470) - extern L6470 stepperX; - #define X_ENABLE_INIT NOOP - #define X_ENABLE_WRITE(STATE) do{if(STATE) stepperX.Step_Clock(stepperX.getStatus() & STATUS_HIZ); else stepperX.softFree();}while(0) - #define X_ENABLE_READ (stepperX.getStatus() & STATUS_HIZ) - #define X_DIR_INIT NOOP - #define X_DIR_WRITE(STATE) stepperX.Step_Clock(STATE) - #define X_DIR_READ (stepperX.getStatus() & STATUS_DIR) -#else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(X_IS_TMC) - extern TMC26XStepper stepperX; - #define X_ENABLE_INIT NOOP - #define X_ENABLE_WRITE(STATE) stepperX.setEnabled(STATE) - #define X_ENABLE_READ stepperX.isEnabled() - #else - #define X_ENABLE_INIT SET_OUTPUT(X_ENABLE_PIN) - #define X_ENABLE_WRITE(STATE) WRITE(X_ENABLE_PIN,STATE) - #define X_ENABLE_READ READ(X_ENABLE_PIN) - #endif - #define X_DIR_INIT SET_OUTPUT(X_DIR_PIN) - #define X_DIR_WRITE(STATE) WRITE(X_DIR_PIN,STATE) - #define X_DIR_READ READ(X_DIR_PIN) -#endif -#define X_STEP_INIT SET_OUTPUT(X_STEP_PIN) -#define X_STEP_WRITE(STATE) WRITE(X_STEP_PIN,STATE) -#define X_STEP_READ READ(X_STEP_PIN) - -// Y Stepper -#if ENABLED(HAVE_L6470DRIVER) && ENABLED(Y_IS_L6470) - extern L6470 stepperY; - #define Y_ENABLE_INIT NOOP - #define Y_ENABLE_WRITE(STATE) do{if(STATE) stepperY.Step_Clock(stepperY.getStatus() & STATUS_HIZ); else stepperY.softFree();}while(0) - #define Y_ENABLE_READ (stepperY.getStatus() & STATUS_HIZ) - #define Y_DIR_INIT NOOP - #define Y_DIR_WRITE(STATE) stepperY.Step_Clock(STATE) - #define Y_DIR_READ (stepperY.getStatus() & STATUS_DIR) -#else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(Y_IS_TMC) - extern TMC26XStepper stepperY; - #define Y_ENABLE_INIT NOOP - #define Y_ENABLE_WRITE(STATE) stepperY.setEnabled(STATE) - #define Y_ENABLE_READ stepperY.isEnabled() - #else - #define Y_ENABLE_INIT SET_OUTPUT(Y_ENABLE_PIN) - #define Y_ENABLE_WRITE(STATE) WRITE(Y_ENABLE_PIN,STATE) - #define Y_ENABLE_READ READ(Y_ENABLE_PIN) - #endif - #define Y_DIR_INIT SET_OUTPUT(Y_DIR_PIN) - #define Y_DIR_WRITE(STATE) WRITE(Y_DIR_PIN,STATE) - #define Y_DIR_READ READ(Y_DIR_PIN) -#endif -#define Y_STEP_INIT SET_OUTPUT(Y_STEP_PIN) -#define Y_STEP_WRITE(STATE) WRITE(Y_STEP_PIN,STATE) -#define Y_STEP_READ READ(Y_STEP_PIN) - -// Z Stepper -#if ENABLED(HAVE_L6470DRIVER) && ENABLED(Z_IS_L6470) - extern L6470 stepperZ; - #define Z_ENABLE_INIT NOOP - #define Z_ENABLE_WRITE(STATE) do{if(STATE) stepperZ.Step_Clock(stepperZ.getStatus() & STATUS_HIZ); else stepperZ.softFree();}while(0) - #define Z_ENABLE_READ (stepperZ.getStatus() & STATUS_HIZ) - #define Z_DIR_INIT NOOP - #define Z_DIR_WRITE(STATE) stepperZ.Step_Clock(STATE) - #define Z_DIR_READ (stepperZ.getStatus() & STATUS_DIR) -#else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(Z_IS_TMC) - extern TMC26XStepper stepperZ; - #define Z_ENABLE_INIT NOOP - #define Z_ENABLE_WRITE(STATE) stepperZ.setEnabled(STATE) - #define Z_ENABLE_READ stepperZ.isEnabled() - #else - #define Z_ENABLE_INIT SET_OUTPUT(Z_ENABLE_PIN) - #define Z_ENABLE_WRITE(STATE) WRITE(Z_ENABLE_PIN,STATE) - #define Z_ENABLE_READ READ(Z_ENABLE_PIN) - #endif - #define Z_DIR_INIT SET_OUTPUT(Z_DIR_PIN) - #define Z_DIR_WRITE(STATE) WRITE(Z_DIR_PIN,STATE) - #define Z_DIR_READ READ(Z_DIR_PIN) -#endif -#define Z_STEP_INIT SET_OUTPUT(Z_STEP_PIN) -#define Z_STEP_WRITE(STATE) WRITE(Z_STEP_PIN,STATE) -#define Z_STEP_READ READ(Z_STEP_PIN) - -// X2 Stepper -#if HAS_X2_ENABLE - #if ENABLED(HAVE_L6470DRIVER) && ENABLED(X2_IS_L6470) - extern L6470 stepperX2; - #define X2_ENABLE_INIT NOOP - #define X2_ENABLE_WRITE(STATE) do{if(STATE) stepperX2.Step_Clock(stepperX2.getStatus() & STATUS_HIZ); else stepperX2.softFree();}while(0) - #define X2_ENABLE_READ (stepperX2.getStatus() & STATUS_HIZ) - #define X2_DIR_INIT NOOP - #define X2_DIR_WRITE(STATE) stepperX2.Step_Clock(STATE) - #define X2_DIR_READ (stepperX2.getStatus() & STATUS_DIR) - #else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(X2_IS_TMC) - extern TMC26XStepper stepperX2; - #define X2_ENABLE_INIT NOOP - #define X2_ENABLE_WRITE(STATE) stepperX2.setEnabled(STATE) - #define X2_ENABLE_READ stepperX2.isEnabled() - #else - #define X2_ENABLE_INIT SET_OUTPUT(X2_ENABLE_PIN) - #define X2_ENABLE_WRITE(STATE) WRITE(X2_ENABLE_PIN,STATE) - #define X2_ENABLE_READ READ(X2_ENABLE_PIN) - #endif - #define X2_DIR_INIT SET_OUTPUT(X2_DIR_PIN) - #define X2_DIR_WRITE(STATE) WRITE(X2_DIR_PIN,STATE) - #define X2_DIR_READ READ(X2_DIR_PIN) - #endif - #define X2_STEP_INIT SET_OUTPUT(X2_STEP_PIN) - #define X2_STEP_WRITE(STATE) WRITE(X2_STEP_PIN,STATE) - #define X2_STEP_READ READ(X2_STEP_PIN) -#endif - -// Y2 Stepper -#if HAS_Y2_ENABLE - #if ENABLED(HAVE_L6470DRIVER) && ENABLED(Y2_IS_L6470) - extern L6470 stepperY2; - #define Y2_ENABLE_INIT NOOP - #define Y2_ENABLE_WRITE(STATE) do{if(STATE) stepperY2.Step_Clock(stepperY2.getStatus() & STATUS_HIZ); else stepperY2.softFree();}while(0) - #define Y2_ENABLE_READ (stepperY2.getStatus() & STATUS_HIZ) - #define Y2_DIR_INIT NOOP - #define Y2_DIR_WRITE(STATE) stepperY2.Step_Clock(STATE) - #define Y2_DIR_READ (stepperY2.getStatus() & STATUS_DIR) - #else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(Y2_IS_TMC) - extern TMC26XStepper stepperY2; - #define Y2_ENABLE_INIT NOOP - #define Y2_ENABLE_WRITE(STATE) stepperY2.setEnabled(STATE) - #define Y2_ENABLE_READ stepperY2.isEnabled() - #else - #define Y2_ENABLE_INIT SET_OUTPUT(Y2_ENABLE_PIN) - #define Y2_ENABLE_WRITE(STATE) WRITE(Y2_ENABLE_PIN,STATE) - #define Y2_ENABLE_READ READ(Y2_ENABLE_PIN) - #endif - #define Y2_DIR_INIT SET_OUTPUT(Y2_DIR_PIN) - #define Y2_DIR_WRITE(STATE) WRITE(Y2_DIR_PIN,STATE) - #define Y2_DIR_READ READ(Y2_DIR_PIN) - #endif - #define Y2_STEP_INIT SET_OUTPUT(Y2_STEP_PIN) - #define Y2_STEP_WRITE(STATE) WRITE(Y2_STEP_PIN,STATE) - #define Y2_STEP_READ READ(Y2_STEP_PIN) -#endif - -// Z2 Stepper -#if HAS_Z2_ENABLE - #if ENABLED(HAVE_L6470DRIVER) && ENABLED(Z2_IS_L6470) - extern L6470 stepperZ2; - #define Z2_ENABLE_INIT NOOP - #define Z2_ENABLE_WRITE(STATE) do{if(STATE) stepperZ2.Step_Clock(stepperZ2.getStatus() & STATUS_HIZ); else stepperZ2.softFree();}while(0) - #define Z2_ENABLE_READ (stepperZ2.getStatus() & STATUS_HIZ) - #define Z2_DIR_INIT NOOP - #define Z2_DIR_WRITE(STATE) stepperZ2.Step_Clock(STATE) - #define Z2_DIR_READ (stepperZ2.getStatus() & STATUS_DIR) - #else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(Z2_IS_TMC) - extern TMC26XStepper stepperZ2; - #define Z2_ENABLE_INIT NOOP - #define Z2_ENABLE_WRITE(STATE) stepperZ2.setEnabled(STATE) - #define Z2_ENABLE_READ stepperZ2.isEnabled() - #else - #define Z2_ENABLE_INIT SET_OUTPUT(Z2_ENABLE_PIN) - #define Z2_ENABLE_WRITE(STATE) WRITE(Z2_ENABLE_PIN,STATE) - #define Z2_ENABLE_READ READ(Z2_ENABLE_PIN) - #endif - #define Z2_DIR_INIT SET_OUTPUT(Z2_DIR_PIN) - #define Z2_DIR_WRITE(STATE) WRITE(Z2_DIR_PIN,STATE) - #define Z2_DIR_READ READ(Z2_DIR_PIN) - #endif - #define Z2_STEP_INIT SET_OUTPUT(Z2_STEP_PIN) - #define Z2_STEP_WRITE(STATE) WRITE(Z2_STEP_PIN,STATE) - #define Z2_STEP_READ READ(Z2_STEP_PIN) -#endif - -// E0 Stepper -#if ENABLED(HAVE_L6470DRIVER) && ENABLED(E0_IS_L6470) - extern L6470 stepperE0; - #define E0_ENABLE_INIT NOOP - #define E0_ENABLE_WRITE(STATE) do{if(STATE) stepperE0.Step_Clock(stepperE0.getStatus() & STATUS_HIZ); else stepperE0.softFree();}while(0) - #define E0_ENABLE_READ (stepperE0.getStatus() & STATUS_HIZ) - #define E0_DIR_INIT NOOP - #define E0_DIR_WRITE(STATE) stepperE0.Step_Clock(STATE) - #define E0_DIR_READ (stepperE0.getStatus() & STATUS_DIR) -#else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(E0_IS_TMC) - extern TMC26XStepper stepperE0; - #define E0_ENABLE_INIT NOOP - #define E0_ENABLE_WRITE(STATE) stepperE0.setEnabled(STATE) - #define E0_ENABLE_READ stepperE0.isEnabled() - #else - #define E0_ENABLE_INIT SET_OUTPUT(E0_ENABLE_PIN) - #define E0_ENABLE_WRITE(STATE) WRITE(E0_ENABLE_PIN,STATE) - #define E0_ENABLE_READ READ(E0_ENABLE_PIN) - #endif - #define E0_DIR_INIT SET_OUTPUT(E0_DIR_PIN) - #define E0_DIR_WRITE(STATE) WRITE(E0_DIR_PIN,STATE) - #define E0_DIR_READ READ(E0_DIR_PIN) -#endif -#define E0_STEP_INIT SET_OUTPUT(E0_STEP_PIN) -#define E0_STEP_WRITE(STATE) WRITE(E0_STEP_PIN,STATE) -#define E0_STEP_READ READ(E0_STEP_PIN) - -// E1 Stepper -#if ENABLED(HAVE_L6470DRIVER) && ENABLED(E1_IS_L6470) - extern L6470 stepperE1; - #define E1_ENABLE_INIT NOOP - #define E1_ENABLE_WRITE(STATE) do{if(STATE) stepperE1.Step_Clock(stepperE1.getStatus() & STATUS_HIZ); else stepperE1.softFree();}while(0) - #define E1_ENABLE_READ (stepperE1.getStatus() & STATUS_HIZ) - #define E1_DIR_INIT NOOP - #define E1_DIR_WRITE(STATE) stepperE1.Step_Clock(STATE) - #define E1_DIR_READ (stepperE1.getStatus() & STATUS_DIR) -#else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(E1_IS_TMC) - extern TMC26XStepper stepperE1; - #define E1_ENABLE_INIT NOOP - #define E1_ENABLE_WRITE(STATE) stepperE1.setEnabled(STATE) - #define E1_ENABLE_READ stepperE1.isEnabled() - #else - #define E1_ENABLE_INIT SET_OUTPUT(E1_ENABLE_PIN) - #define E1_ENABLE_WRITE(STATE) WRITE(E1_ENABLE_PIN,STATE) - #define E1_ENABLE_READ READ(E1_ENABLE_PIN) - #endif - #define E1_DIR_INIT SET_OUTPUT(E1_DIR_PIN) - #define E1_DIR_WRITE(STATE) WRITE(E1_DIR_PIN,STATE) - #define E1_DIR_READ READ(E1_DIR_PIN) -#endif -#define E1_STEP_INIT SET_OUTPUT(E1_STEP_PIN) -#define E1_STEP_WRITE(STATE) WRITE(E1_STEP_PIN,STATE) -#define E1_STEP_READ READ(E1_STEP_PIN) - -// E2 Stepper -#if ENABLED(HAVE_L6470DRIVER) && ENABLED(E2_IS_L6470) - extern L6470 stepperE2; - #define E2_ENABLE_INIT NOOP - #define E2_ENABLE_WRITE(STATE) do{if(STATE) stepperE2.Step_Clock(stepperE2.getStatus() & STATUS_HIZ); else stepperE2.softFree();}while(0) - #define E2_ENABLE_READ (stepperE2.getStatus() & STATUS_HIZ) - #define E2_DIR_INIT NOOP - #define E2_DIR_WRITE(STATE) stepperE2.Step_Clock(STATE) - #define E2_DIR_READ (stepperE2.getStatus() & STATUS_DIR) -#else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(E2_IS_TMC) - extern TMC26XStepper stepperE2; - #define E2_ENABLE_INIT NOOP - #define E2_ENABLE_WRITE(STATE) stepperE2.setEnabled(STATE) - #define E2_ENABLE_READ stepperE2.isEnabled() - #else - #define E2_ENABLE_INIT SET_OUTPUT(E2_ENABLE_PIN) - #define E2_ENABLE_WRITE(STATE) WRITE(E2_ENABLE_PIN,STATE) - #define E2_ENABLE_READ READ(E2_ENABLE_PIN) - #endif - #define E2_DIR_INIT SET_OUTPUT(E2_DIR_PIN) - #define E2_DIR_WRITE(STATE) WRITE(E2_DIR_PIN,STATE) - #define E2_DIR_READ READ(E2_DIR_PIN) -#endif -#define E2_STEP_INIT SET_OUTPUT(E2_STEP_PIN) -#define E2_STEP_WRITE(STATE) WRITE(E2_STEP_PIN,STATE) -#define E2_STEP_READ READ(E2_STEP_PIN) - -// E3 Stepper -#if ENABLED(HAVE_L6470DRIVER) && ENABLED(E3_IS_L6470) - extern L6470 stepperE3; - #define E3_ENABLE_INIT NOOP - #define E3_ENABLE_WRITE(STATE) do{if(STATE) stepperE3.Step_Clock(stepperE3.getStatus() & STATUS_HIZ); else stepperE3.softFree();}while(0) - #define E3_ENABLE_READ (stepperE3.getStatus() & STATUS_HIZ) - #define E3_DIR_INIT NOOP - #define E3_DIR_WRITE(STATE) stepperE3.Step_Clock(STATE) - #define E3_DIR_READ (stepperE3.getStatus() & STATUS_DIR) -#else - #if ENABLED(HAVE_TMCDRIVER) && ENABLED(E3_IS_TMC) - extern TMC26XStepper stepperE3; - #define E3_ENABLE_INIT NOOP - #define E3_ENABLE_WRITE(STATE) stepperE3.setEnabled(STATE) - #define E3_ENABLE_READ stepperE3.isEnabled() - #else - #define E3_ENABLE_INIT SET_OUTPUT(E3_ENABLE_PIN) - #define E3_ENABLE_WRITE(STATE) WRITE(E3_ENABLE_PIN,STATE) - #define E3_ENABLE_READ READ(E3_ENABLE_PIN) - #endif - #define E3_DIR_INIT SET_OUTPUT(E3_DIR_PIN) - #define E3_DIR_WRITE(STATE) WRITE(E3_DIR_PIN,STATE) - #define E3_DIR_READ READ(E3_DIR_PIN) -#endif -#define E3_STEP_INIT SET_OUTPUT(E3_STEP_PIN) -#define E3_STEP_WRITE(STATE) WRITE(E3_STEP_PIN,STATE) -#define E3_STEP_READ READ(E3_STEP_PIN) - -/** - * Extruder indirection for the single E axis - */ -#if ENABLED(SWITCHING_EXTRUDER) - #define E_STEP_WRITE(v) E0_STEP_WRITE(v) - #define NORM_E_DIR() E0_DIR_WRITE(current_block->active_extruder ? INVERT_E0_DIR : !INVERT_E0_DIR) - #define REV_E_DIR() E0_DIR_WRITE(current_block->active_extruder ? !INVERT_E0_DIR : INVERT_E0_DIR) -#elif EXTRUDERS > 3 - #define E_STEP_WRITE(v) { switch (current_block->active_extruder) { case 0: E0_STEP_WRITE(v); break; case 1: E1_STEP_WRITE(v); break; case 2: E2_STEP_WRITE(v); break; case 3: E3_STEP_WRITE(v); } } - #define NORM_E_DIR() { switch (current_block->active_extruder) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); } } - #define REV_E_DIR() { switch (current_block->active_extruder) { case 0: E0_DIR_WRITE(INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(INVERT_E3_DIR); } } -#elif EXTRUDERS > 2 - #define E_STEP_WRITE(v) { switch (current_block->active_extruder) { case 0: E0_STEP_WRITE(v); break; case 1: E1_STEP_WRITE(v); break; case 2: E2_STEP_WRITE(v); } } - #define NORM_E_DIR() { switch (current_block->active_extruder) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); } } - #define REV_E_DIR() { switch (current_block->active_extruder) { case 0: E0_DIR_WRITE(INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(INVERT_E2_DIR); } } -#elif EXTRUDERS > 1 - #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) - #define E_STEP_WRITE(v) { if (extruder_duplication_enabled) { E0_STEP_WRITE(v); E1_STEP_WRITE(v); } else if (current_block->active_extruder == 0) { E0_STEP_WRITE(v); } else { E1_STEP_WRITE(v); } } - #define NORM_E_DIR() { if (extruder_duplication_enabled) { E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E1_DIR); } else if (current_block->active_extruder == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } } - #define REV_E_DIR() { if (extruder_duplication_enabled) { E0_DIR_WRITE(INVERT_E0_DIR); E1_DIR_WRITE(INVERT_E1_DIR); } else if (current_block->active_extruder == 0) { E0_DIR_WRITE(INVERT_E0_DIR); } else { E1_DIR_WRITE(INVERT_E1_DIR); } } - #else - #define E_STEP_WRITE(v) { if (current_block->active_extruder == 0) { E0_STEP_WRITE(v); } else { E1_STEP_WRITE(v); } } - #define NORM_E_DIR() { if (current_block->active_extruder == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } } - #define REV_E_DIR() { if (current_block->active_extruder == 0) { E0_DIR_WRITE(INVERT_E0_DIR); } else { E1_DIR_WRITE(INVERT_E1_DIR); } } - #endif -#elif ENABLED(MIXING_EXTRUDER) - #define E_STEP_WRITE(v) NOOP /* not used for mixing extruders! */ - #if MIXING_STEPPERS > 3 - #define En_STEP_WRITE(n,v) { switch (n) { case 0: E0_STEP_WRITE(v); break; case 1: E1_STEP_WRITE(v); break; case 2: E2_STEP_WRITE(v); break; case 3: E3_STEP_WRITE(v); } } - #define NORM_E_DIR() { E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E1_DIR); E2_DIR_WRITE(!INVERT_E2_DIR); E3_DIR_WRITE(!INVERT_E3_DIR); } - #define REV_E_DIR() { E0_DIR_WRITE( INVERT_E0_DIR); E1_DIR_WRITE( INVERT_E1_DIR); E2_DIR_WRITE( INVERT_E2_DIR); E3_DIR_WRITE( INVERT_E3_DIR); } - #elif MIXING_STEPPERS > 2 - #define En_STEP_WRITE(n,v) { switch (n) { case 0: E0_STEP_WRITE(v); break; case 1: E1_STEP_WRITE(v); break; case 2: E2_STEP_WRITE(v); } } - #define NORM_E_DIR() { E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E1_DIR); E2_DIR_WRITE(!INVERT_E2_DIR); } - #define REV_E_DIR() { E0_DIR_WRITE( INVERT_E0_DIR); E1_DIR_WRITE( INVERT_E1_DIR); E2_DIR_WRITE( INVERT_E2_DIR); } - #else - #define En_STEP_WRITE(n,v) { switch (n) { case 0: E0_STEP_WRITE(v); break; case 1: E1_STEP_WRITE(v); } } - #define NORM_E_DIR() { E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E1_DIR); } - #define REV_E_DIR() { E0_DIR_WRITE( INVERT_E0_DIR); E1_DIR_WRITE( INVERT_E1_DIR); } - #endif -#else - #define E_STEP_WRITE(v) E0_STEP_WRITE(v) - #define NORM_E_DIR() E0_DIR_WRITE(!INVERT_E0_DIR) - #define REV_E_DIR() E0_DIR_WRITE(INVERT_E0_DIR) -#endif - -#endif // STEPPER_INDIRECTION_H diff --git a/lib/Marlin/stopwatch.cpp b/lib/Marlin/stopwatch.cpp deleted file mode 100644 index ef701a1..0000000 --- a/lib/Marlin/stopwatch.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "Marlin.h" -#include "stopwatch.h" - -Stopwatch::Stopwatch() { - this->reset(); -} - -bool Stopwatch::stop() { - #if ENABLED(DEBUG_STOPWATCH) - Stopwatch::debug(PSTR("stop")); - #endif - - if (this->isRunning() || this->isPaused()) { - this->state = STOPPED; - this->stopTimestamp = millis(); - return true; - } - else return false; -} - -bool Stopwatch::pause() { - #if ENABLED(DEBUG_STOPWATCH) - Stopwatch::debug(PSTR("pause")); - #endif - - if (this->isRunning()) { - this->state = PAUSED; - this->stopTimestamp = millis(); - return true; - } - else return false; -} - -bool Stopwatch::start() { - #if ENABLED(DEBUG_STOPWATCH) - Stopwatch::debug(PSTR("start")); - #endif - - if (!this->isRunning()) { - if (this->isPaused()) this->accumulator = this->duration(); - else this->reset(); - - this->state = RUNNING; - this->startTimestamp = millis(); - return true; - } - else return false; -} - -void Stopwatch::reset() { - #if ENABLED(DEBUG_STOPWATCH) - Stopwatch::debug(PSTR("reset")); - #endif - - this->state = STOPPED; - this->startTimestamp = 0; - this->stopTimestamp = 0; - this->accumulator = 0; -} - -bool Stopwatch::isRunning() { - return (this->state == RUNNING) ? true : false; -} - -bool Stopwatch::isPaused() { - return (this->state == PAUSED) ? true : false; -} - -millis_t Stopwatch::duration() { - return (((this->isRunning()) ? millis() : this->stopTimestamp) - - this->startTimestamp) / 1000UL + this->accumulator; -} - -#if ENABLED(DEBUG_STOPWATCH) - - void Stopwatch::debug(const char func[]) { - if (DEBUGGING(INFO)) { - SERIAL_ECHOPGM("Stopwatch::"); - serialprintPGM(func); - SERIAL_ECHOLNPGM("()"); - } - } - -#endif diff --git a/lib/Marlin/stopwatch.h b/lib/Marlin/stopwatch.h deleted file mode 100644 index 7094828..0000000 --- a/lib/Marlin/stopwatch.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef STOPWATCH_H -#define STOPWATCH_H - -#include "macros.h" - -// Print debug messages with M111 S2 (Uses 156 bytes of PROGMEM) -//#define DEBUG_STOPWATCH - -/** - * @brief Stopwatch class - * @details This class acts as a timer proving stopwatch functionality including - * the ability to pause the running time counter. - */ -class Stopwatch { - private: - enum State { - STOPPED, - RUNNING, - PAUSED - }; - - Stopwatch::State state; - millis_t accumulator; - millis_t startTimestamp; - millis_t stopTimestamp; - - public: - /** - * @brief Class constructor - */ - Stopwatch(); - - /** - * @brief Stops the stopwatch - * @details Stops the running timer, it will silently ignore the request if - * no timer is currently running. - * @return true is method was successful - */ - bool stop(); - - /** - * @brief Pause the stopwatch - * @details Pauses the running timer, it will silently ignore the request if - * no timer is currently running. - * @return true is method was successful - */ - bool pause(); - - /** - * @brief Starts the stopwatch - * @details Starts the timer, it will silently ignore the request if the - * timer is already running. - * @return true is method was successful - */ - bool start(); - - /** - * @brief Resets the stopwatch - * @details Resets all settings to their default values. - */ - void reset(); - - /** - * @brief Checks if the timer is running - * @details Returns true if the timer is currently running, false otherwise. - * @return true if stopwatch is running - */ - bool isRunning(); - - /** - * @brief Checks if the timer is paused - * @details Returns true if the timer is currently paused, false otherwise. - * @return true if stopwatch is paused - */ - bool isPaused(); - - /** - * @brief Gets the running time - * @details Returns the total number of seconds the timer has been running. - * @return the delta since starting the stopwatch - */ - millis_t duration(); - - #if ENABLED(DEBUG_STOPWATCH) - - /** - * @brief Prints a debug message - * @details Prints a simple debug message "Stopwatch::function" - */ - static void debug(const char func[]); - - #endif -}; - -#endif //STOPWATCH_H diff --git a/lib/Marlin/temperature.cpp b/lib/Marlin/temperature.cpp deleted file mode 100644 index 5b1d019..0000000 --- a/lib/Marlin/temperature.cpp +++ /dev/null @@ -1,1873 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * temperature.cpp - temperature control - */ - -#include "Marlin.h" -#include "ultralcd.h" -#include "temperature.h" -#include "thermistortables.h" -#include "language.h" -#if ENABLED(BABYSTEPPING) - #include "stepper.h" -#endif - -#if ENABLED(USE_WATCHDOG) - #include "watchdog.h" -#endif - -#ifdef K1 // Defined in Configuration.h in the PID settings - #define K2 (1.0-K1) -#endif - -#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - static void* heater_ttbl_map[2] = {(void*)HEATER_0_TEMPTABLE, (void*)HEATER_1_TEMPTABLE }; - static uint8_t heater_ttbllen_map[2] = { HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN }; -#else - static void* heater_ttbl_map[HOTENDS] = ARRAY_BY_HOTENDS((void*)HEATER_0_TEMPTABLE, (void*)HEATER_1_TEMPTABLE, (void*)HEATER_2_TEMPTABLE, (void*)HEATER_3_TEMPTABLE); - static uint8_t heater_ttbllen_map[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN, HEATER_3_TEMPTABLE_LEN); -#endif - -Temperature thermalManager; - -// public: - -float Temperature::current_temperature[HOTENDS] = { 0.0 }, - Temperature::current_temperature_bed = 0.0; -int Temperature::current_temperature_raw[HOTENDS] = { 0 }, - Temperature::target_temperature[HOTENDS] = { 0 }, - Temperature::current_temperature_bed_raw = 0, - Temperature::target_temperature_bed = 0; - -#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - float Temperature::redundant_temperature = 0.0; -#endif - -unsigned char Temperature::soft_pwm_bed; - -#if ENABLED(FAN_SOFT_PWM) - unsigned char Temperature::fanSpeedSoftPwm[FAN_COUNT]; -#endif - -#if ENABLED(PIDTEMP) - #if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1 - float Temperature::Kp[HOTENDS] = ARRAY_BY_HOTENDS1(DEFAULT_Kp), - Temperature::Ki[HOTENDS] = ARRAY_BY_HOTENDS1((DEFAULT_Ki) * (PID_dT)), - Temperature::Kd[HOTENDS] = ARRAY_BY_HOTENDS1((DEFAULT_Kd) / (PID_dT)); - #if ENABLED(PID_EXTRUSION_SCALING) - float Temperature::Kc[HOTENDS] = ARRAY_BY_HOTENDS1(DEFAULT_Kc); - #endif - #else - float Temperature::Kp = DEFAULT_Kp, - Temperature::Ki = (DEFAULT_Ki) * (PID_dT), - Temperature::Kd = (DEFAULT_Kd) / (PID_dT); - #if ENABLED(PID_EXTRUSION_SCALING) - float Temperature::Kc = DEFAULT_Kc; - #endif - #endif -#endif - -#if ENABLED(PIDTEMPBED) - float Temperature::bedKp = DEFAULT_bedKp, - Temperature::bedKi = ((DEFAULT_bedKi) * PID_dT), - Temperature::bedKd = ((DEFAULT_bedKd) / PID_dT); -#endif - -#if ENABLED(BABYSTEPPING) - volatile int Temperature::babystepsTodo[3] = { 0 }; -#endif - -#if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 - int Temperature::watch_target_temp[HOTENDS] = { 0 }; - millis_t Temperature::watch_heater_next_ms[HOTENDS] = { 0 }; -#endif - -#if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 - int Temperature::watch_target_bed_temp = 0; - millis_t Temperature::watch_bed_next_ms = 0; -#endif - -#if ENABLED(PREVENT_DANGEROUS_EXTRUDE) - bool Temperature::allow_cold_extrude = false; - float Temperature::extrude_min_temp = EXTRUDE_MINTEMP; -#endif - -// private: - -#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - int Temperature::redundant_temperature_raw = 0; - float Temperature::redundant_temperature = 0.0; -#endif - -volatile bool Temperature::temp_meas_ready = false; - -#if ENABLED(PIDTEMP) - float Temperature::temp_iState[HOTENDS] = { 0 }, - Temperature::temp_dState[HOTENDS] = { 0 }, - Temperature::pTerm[HOTENDS], - Temperature::iTerm[HOTENDS], - Temperature::dTerm[HOTENDS]; - - #if ENABLED(PID_EXTRUSION_SCALING) - float Temperature::cTerm[HOTENDS]; - long Temperature::last_e_position; - long Temperature::lpq[LPQ_MAX_LEN]; - int Temperature::lpq_ptr = 0; - #endif - - float Temperature::pid_error[HOTENDS], - Temperature::temp_iState_min[HOTENDS], - Temperature::temp_iState_max[HOTENDS]; - bool Temperature::pid_reset[HOTENDS]; -#endif - -#if ENABLED(PIDTEMPBED) - float Temperature::temp_iState_bed = { 0 }, - Temperature::temp_dState_bed = { 0 }, - Temperature::pTerm_bed, - Temperature::iTerm_bed, - Temperature::dTerm_bed, - Temperature::pid_error_bed, - Temperature::temp_iState_min_bed, - Temperature::temp_iState_max_bed; -#else - millis_t Temperature::next_bed_check_ms; -#endif - -unsigned long Temperature::raw_temp_value[4] = { 0 }; -unsigned long Temperature::raw_temp_bed_value = 0; - -// Init min and max temp with extreme values to prevent false errors during startup -int Temperature::minttemp_raw[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_RAW_LO_TEMP , HEATER_1_RAW_LO_TEMP , HEATER_2_RAW_LO_TEMP, HEATER_3_RAW_LO_TEMP), - Temperature::maxttemp_raw[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_RAW_HI_TEMP , HEATER_1_RAW_HI_TEMP , HEATER_2_RAW_HI_TEMP, HEATER_3_RAW_HI_TEMP), - Temperature::minttemp[HOTENDS] = { 0 }, - Temperature::maxttemp[HOTENDS] = ARRAY_BY_HOTENDS1(16383); - -#ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - int Temperature::consecutive_low_temperature_error[HOTENDS] = { 0 }; -#endif - -#ifdef MILLISECONDS_PREHEAT_TIME - unsigned long Temperature::preheat_end_time[HOTENDS] = { 0 }; -#endif - -#ifdef BED_MINTEMP - int Temperature::bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP; -#endif - -#ifdef BED_MAXTEMP - int Temperature::bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP; -#endif - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - int Temperature::meas_shift_index; // Index of a delayed sample in buffer -#endif - -#if HAS_AUTO_FAN - millis_t Temperature::next_auto_fan_check_ms; -#endif - -unsigned char Temperature::soft_pwm[HOTENDS]; - -#if ENABLED(FAN_SOFT_PWM) - unsigned char Temperature::soft_pwm_fan[FAN_COUNT]; -#endif - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - int Temperature::current_raw_filwidth = 0; //Holds measured filament diameter - one extruder only -#endif - -#if HAS_PID_HEATING - - void Temperature::PID_autotune(float temp, int hotend, int ncycles, bool set_result/*=false*/) { - float input = 0.0; - int cycles = 0; - bool heating = true; - - millis_t temp_ms = millis(), t1 = temp_ms, t2 = temp_ms; - long t_high = 0, t_low = 0; - - long bias, d; - float Ku, Tu; - float workKp = 0, workKi = 0, workKd = 0; - float max = 0, min = 10000; - - #if HAS_AUTO_FAN - next_auto_fan_check_ms = temp_ms + 2500UL; - #endif - - if (hotend >= - #if ENABLED(PIDTEMP) - HOTENDS - #else - 0 - #endif - || hotend < - #if ENABLED(PIDTEMPBED) - -1 - #else - 0 - #endif - ) { - SERIAL_ECHOLN(MSG_PID_BAD_EXTRUDER_NUM); - return; - } - - SERIAL_ECHOLN(MSG_PID_AUTOTUNE_START); - - disable_all_heaters(); // switch off all heaters. - - #if HAS_PID_FOR_BOTH - if (hotend < 0) - soft_pwm_bed = bias = d = (MAX_BED_POWER) / 2; - else - soft_pwm[hotend] = bias = d = (PID_MAX) / 2; - #elif ENABLED(PIDTEMP) - soft_pwm[hotend] = bias = d = (PID_MAX) / 2; - #else - soft_pwm_bed = bias = d = (MAX_BED_POWER) / 2; - #endif - - wait_for_heatup = true; - - // PID Tuning loop - while (wait_for_heatup) { - - millis_t ms = millis(); - - if (temp_meas_ready) { // temp sample ready - updateTemperaturesFromRawValues(); - - input = - #if HAS_PID_FOR_BOTH - hotend < 0 ? current_temperature_bed : current_temperature[hotend] - #elif ENABLED(PIDTEMP) - current_temperature[hotend] - #else - current_temperature_bed - #endif - ; - - max = max(max, input); - min = min(min, input); - - #if HAS_AUTO_FAN - if (ELAPSED(ms, next_auto_fan_check_ms)) { - checkExtruderAutoFans(); - next_auto_fan_check_ms = ms + 2500UL; - } - #endif - - if (heating && input > temp) { - if (ELAPSED(ms, t2 + 5000UL)) { - heating = false; - #if HAS_PID_FOR_BOTH - if (hotend < 0) - soft_pwm_bed = (bias - d) >> 1; - else - soft_pwm[hotend] = (bias - d) >> 1; - #elif ENABLED(PIDTEMP) - soft_pwm[hotend] = (bias - d) >> 1; - #elif ENABLED(PIDTEMPBED) - soft_pwm_bed = (bias - d) >> 1; - #endif - t1 = ms; - t_high = t1 - t2; - max = temp; - } - } - - if (!heating && input < temp) { - if (ELAPSED(ms, t1 + 5000UL)) { - heating = true; - t2 = ms; - t_low = t2 - t1; - if (cycles > 0) { - long max_pow = - #if HAS_PID_FOR_BOTH - hotend < 0 ? MAX_BED_POWER : PID_MAX - #elif ENABLED(PIDTEMP) - PID_MAX - #else - MAX_BED_POWER - #endif - ; - bias += (d * (t_high - t_low)) / (t_low + t_high); - bias = constrain(bias, 20, max_pow - 20); - d = (bias > max_pow / 2) ? max_pow - 1 - bias : bias; - - SERIAL_PROTOCOLPAIR(MSG_BIAS, bias); - SERIAL_PROTOCOLPAIR(MSG_D, d); - SERIAL_PROTOCOLPAIR(MSG_T_MIN, min); - SERIAL_PROTOCOLPAIR(MSG_T_MAX, max); - if (cycles > 2) { - Ku = (4.0 * d) / (3.14159265 * (max - min) * 0.5); - Tu = ((float)(t_low + t_high) * 0.001); - SERIAL_PROTOCOLPAIR(MSG_KU, Ku); - SERIAL_PROTOCOLPAIR(MSG_TU, Tu); - workKp = 0.6 * Ku; - workKi = 2 * workKp / Tu; - workKd = workKp * Tu * 0.125; - SERIAL_PROTOCOLLNPGM(MSG_CLASSIC_PID); - SERIAL_PROTOCOLPAIR(MSG_KP, workKp); - SERIAL_PROTOCOLPAIR(MSG_KI, workKi); - SERIAL_PROTOCOLPAIR(MSG_KD, workKd); - /** - workKp = 0.33*Ku; - workKi = workKp/Tu; - workKd = workKp*Tu/3; - SERIAL_PROTOCOLLNPGM(" Some overshoot"); - SERIAL_PROTOCOLPAIR(" Kp: ", workKp); - SERIAL_PROTOCOLPAIR(" Ki: ", workKi); - SERIAL_PROTOCOLPAIR(" Kd: ", workKd); - workKp = 0.2*Ku; - workKi = 2*workKp/Tu; - workKd = workKp*Tu/3; - SERIAL_PROTOCOLLNPGM(" No overshoot"); - SERIAL_PROTOCOLPAIR(" Kp: ", workKp); - SERIAL_PROTOCOLPAIR(" Ki: ", workKi); - SERIAL_PROTOCOLPAIR(" Kd: ", workKd); - */ - } - } - #if HAS_PID_FOR_BOTH - if (hotend < 0) - soft_pwm_bed = (bias + d) >> 1; - else - soft_pwm[hotend] = (bias + d) >> 1; - #elif ENABLED(PIDTEMP) - soft_pwm[hotend] = (bias + d) >> 1; - #else - soft_pwm_bed = (bias + d) >> 1; - #endif - cycles++; - min = temp; - } - } - } - #define MAX_OVERSHOOT_PID_AUTOTUNE 20 - if (input > temp + MAX_OVERSHOOT_PID_AUTOTUNE) { - SERIAL_PROTOCOLLNPGM(MSG_PID_TEMP_TOO_HIGH); - return; - } - // Every 2 seconds... - if (ELAPSED(ms, temp_ms + 2000UL)) { - #if HAS_TEMP_HOTEND || HAS_TEMP_BED - print_heaterstates(); - SERIAL_EOL; - #endif - - temp_ms = ms; - } // every 2 seconds - // Over 2 minutes? - if (((ms - t1) + (ms - t2)) > (10L * 60L * 1000L * 2L)) { - SERIAL_PROTOCOLLNPGM(MSG_PID_TIMEOUT); - return; - } - if (cycles > ncycles) { - SERIAL_PROTOCOLLNPGM(MSG_PID_AUTOTUNE_FINISHED); - - #if HAS_PID_FOR_BOTH - const char* estring = hotend < 0 ? "bed" : ""; - SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Kp ", workKp); - SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Ki ", workKi); - SERIAL_PROTOCOLPAIR("#define DEFAULT_", estring); SERIAL_PROTOCOLPAIR("Kd ", workKd); - #elif ENABLED(PIDTEMP) - SERIAL_PROTOCOLPAIR("#define DEFAULT_Kp ", workKp); - SERIAL_PROTOCOLPAIR("#define DEFAULT_Ki ", workKi); - SERIAL_PROTOCOLPAIR("#define DEFAULT_Kd ", workKd); - #else - SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKp ", workKp); - SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKi ", workKi); - SERIAL_PROTOCOLPAIR("#define DEFAULT_bedKd ", workKd); - #endif - - #define _SET_BED_PID() \ - bedKp = workKp; \ - bedKi = scalePID_i(workKi); \ - bedKd = scalePID_d(workKd); \ - updatePID() - - #define _SET_EXTRUDER_PID() \ - PID_PARAM(Kp, hotend) = workKp; \ - PID_PARAM(Ki, hotend) = scalePID_i(workKi); \ - PID_PARAM(Kd, hotend) = scalePID_d(workKd); \ - updatePID() - - // Use the result? (As with "M303 U1") - if (set_result) { - #if HAS_PID_FOR_BOTH - if (hotend < 0) { - _SET_BED_PID(); - } - else { - _SET_EXTRUDER_PID(); - } - #elif ENABLED(PIDTEMP) - _SET_EXTRUDER_PID(); - #else - _SET_BED_PID(); - #endif - } - return; - } - lcd_update(); - } - if (!wait_for_heatup) disable_all_heaters(); - } - -#endif // HAS_PID_HEATING - -/** - * Class and Instance Methods - */ - -Temperature::Temperature() { } - -void Temperature::updatePID() { - #if ENABLED(PIDTEMP) - #if ENABLED(PID_EXTRUSION_SCALING) - last_e_position = 0; - #endif - HOTEND_LOOP() { - temp_iState_max[e] = (PID_INTEGRAL_DRIVE_MAX) / PID_PARAM(Ki, e); - } - #endif - #if ENABLED(PIDTEMPBED) - temp_iState_max_bed = (PID_BED_INTEGRAL_DRIVE_MAX) / bedKi; - #endif -} - -int Temperature::getHeaterPower(int heater) { - return heater < 0 ? soft_pwm_bed : soft_pwm[heater]; -} - -#if HAS_AUTO_FAN - - void Temperature::checkExtruderAutoFans() { - const int8_t fanPin[] = { EXTRUDER_0_AUTO_FAN_PIN, EXTRUDER_1_AUTO_FAN_PIN, EXTRUDER_2_AUTO_FAN_PIN, EXTRUDER_3_AUTO_FAN_PIN }; - const int fanBit[] = { 0, - EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN ? 0 : 1, - EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN ? 0 : - EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN ? 1 : 2, - EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN ? 0 : - EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN ? 1 : - EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN ? 2 : 3 - }; - uint8_t fanState = 0; - HOTEND_LOOP() { - if (current_temperature[e] > EXTRUDER_AUTO_FAN_TEMPERATURE) - SBI(fanState, fanBit[e]); - } - uint8_t fanDone = 0; - for (int8_t f = 0; f <= 3; f++) { - int8_t pin = fanPin[f]; - if (pin >= 0 && !TEST(fanDone, fanBit[f])) { - unsigned char newFanSpeed = TEST(fanState, fanBit[f]) ? EXTRUDER_AUTO_FAN_SPEED : 0; - // this idiom allows both digital and PWM fan outputs (see M42 handling). - digitalWrite(pin, newFanSpeed); - analogWrite(pin, newFanSpeed); - SBI(fanDone, fanBit[f]); - } - } - } - -#endif // HAS_AUTO_FAN - -// -// Temperature Error Handlers -// -void Temperature::_temp_error(int e, const char* serial_msg, const char* lcd_msg) { - static bool killed = false; - if (IsRunning()) { - SERIAL_ERROR_START; - serialprintPGM(serial_msg); - SERIAL_ERRORPGM(MSG_STOPPED_HEATER); - if (e >= 0) SERIAL_ERRORLN((int)e); else SERIAL_ERRORLNPGM(MSG_HEATER_BED); - } - #if DISABLED(BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE) - if (!killed) { - Running = false; - killed = true; - kill(lcd_msg); - } - else - disable_all_heaters(); // paranoia - #endif -} - -void Temperature::max_temp_error(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - _temp_error(HOTEND_INDEX, PSTR(MSG_T_MAXTEMP), PSTR(MSG_ERR_MAXTEMP)); -} -void Temperature::min_temp_error(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - _temp_error(HOTEND_INDEX, PSTR(MSG_T_MINTEMP), PSTR(MSG_ERR_MINTEMP)); -} - -float Temperature::get_pid_output(int e) { - #if HOTENDS == 1 - UNUSED(e); - #define _HOTEND_TEST true - #else - #define _HOTEND_TEST e == active_extruder - #endif - float pid_output; - #if ENABLED(PIDTEMP) - #if DISABLED(PID_OPENLOOP) - pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temperature[HOTEND_INDEX]; - dTerm[HOTEND_INDEX] = K2 * PID_PARAM(Kd, HOTEND_INDEX) * (current_temperature[HOTEND_INDEX] - temp_dState[HOTEND_INDEX]) + K1 * dTerm[HOTEND_INDEX]; - temp_dState[HOTEND_INDEX] = current_temperature[HOTEND_INDEX]; - if (pid_error[HOTEND_INDEX] > PID_FUNCTIONAL_RANGE) { - pid_output = BANG_MAX; - pid_reset[HOTEND_INDEX] = true; - } - else if (pid_error[HOTEND_INDEX] < -(PID_FUNCTIONAL_RANGE) || target_temperature[HOTEND_INDEX] == 0) { - pid_output = 0; - pid_reset[HOTEND_INDEX] = true; - } - else { - if (pid_reset[HOTEND_INDEX]) { - temp_iState[HOTEND_INDEX] = 0.0; - pid_reset[HOTEND_INDEX] = false; - } - pTerm[HOTEND_INDEX] = PID_PARAM(Kp, HOTEND_INDEX) * pid_error[HOTEND_INDEX]; - temp_iState[HOTEND_INDEX] += pid_error[HOTEND_INDEX]; - temp_iState[HOTEND_INDEX] = constrain(temp_iState[HOTEND_INDEX], temp_iState_min[HOTEND_INDEX], temp_iState_max[HOTEND_INDEX]); - iTerm[HOTEND_INDEX] = PID_PARAM(Ki, HOTEND_INDEX) * temp_iState[HOTEND_INDEX]; - - pid_output = pTerm[HOTEND_INDEX] + iTerm[HOTEND_INDEX] - dTerm[HOTEND_INDEX]; - - #if ENABLED(PID_EXTRUSION_SCALING) - cTerm[HOTEND_INDEX] = 0; - if (_HOTEND_TEST) { - long e_position = stepper.position(E_AXIS); - if (e_position > last_e_position) { - lpq[lpq_ptr] = e_position - last_e_position; - last_e_position = e_position; - } - else { - lpq[lpq_ptr] = 0; - } - if (++lpq_ptr >= lpq_len) lpq_ptr = 0; - cTerm[HOTEND_INDEX] = (lpq[lpq_ptr] * planner.steps_to_mm[E_AXIS]) * PID_PARAM(Kc, HOTEND_INDEX); - pid_output += cTerm[HOTEND_INDEX]; - } - #endif // PID_EXTRUSION_SCALING - - if (pid_output > PID_MAX) { - if (pid_error[HOTEND_INDEX] > 0) temp_iState[HOTEND_INDEX] -= pid_error[HOTEND_INDEX]; // conditional un-integration - pid_output = PID_MAX; - } - else if (pid_output < 0) { - if (pid_error[HOTEND_INDEX] < 0) temp_iState[HOTEND_INDEX] -= pid_error[HOTEND_INDEX]; // conditional un-integration - pid_output = 0; - } - } - #else - pid_output = constrain(target_temperature[HOTEND_INDEX], 0, PID_MAX); - #endif //PID_OPENLOOP - - #if ENABLED(PID_DEBUG) - SERIAL_ECHO_START; - SERIAL_ECHOPAIR(MSG_PID_DEBUG, HOTEND_INDEX); - SERIAL_ECHOPAIR(MSG_PID_DEBUG_INPUT, current_temperature[HOTEND_INDEX]); - SERIAL_ECHOPAIR(MSG_PID_DEBUG_OUTPUT, pid_output); - SERIAL_ECHOPAIR(MSG_PID_DEBUG_PTERM, pTerm[HOTEND_INDEX]); - SERIAL_ECHOPAIR(MSG_PID_DEBUG_ITERM, iTerm[HOTEND_INDEX]); - SERIAL_ECHOPAIR(MSG_PID_DEBUG_DTERM, dTerm[HOTEND_INDEX]); - #if ENABLED(PID_EXTRUSION_SCALING) - SERIAL_ECHOPAIR(MSG_PID_DEBUG_CTERM, cTerm[HOTEND_INDEX]); - #endif - SERIAL_EOL; - #endif //PID_DEBUG - - #else /* PID off */ - pid_output = (current_temperature[HOTEND_INDEX] < target_temperature[HOTEND_INDEX]) ? PID_MAX : 0; - #endif - - return pid_output; -} - -#if ENABLED(PIDTEMPBED) - float Temperature::get_pid_output_bed() { - float pid_output; - #if DISABLED(PID_OPENLOOP) - pid_error_bed = target_temperature_bed - current_temperature_bed; - pTerm_bed = bedKp * pid_error_bed; - temp_iState_bed += pid_error_bed; - temp_iState_bed = constrain(temp_iState_bed, temp_iState_min_bed, temp_iState_max_bed); - iTerm_bed = bedKi * temp_iState_bed; - - dTerm_bed = K2 * bedKd * (current_temperature_bed - temp_dState_bed) + K1 * dTerm_bed; - temp_dState_bed = current_temperature_bed; - - pid_output = pTerm_bed + iTerm_bed - dTerm_bed; - if (pid_output > MAX_BED_POWER) { - if (pid_error_bed > 0) temp_iState_bed -= pid_error_bed; // conditional un-integration - pid_output = MAX_BED_POWER; - } - else if (pid_output < 0) { - if (pid_error_bed < 0) temp_iState_bed -= pid_error_bed; // conditional un-integration - pid_output = 0; - } - #else - pid_output = constrain(target_temperature_bed, 0, MAX_BED_POWER); - #endif // PID_OPENLOOP - - #if ENABLED(PID_BED_DEBUG) - SERIAL_ECHO_START; - SERIAL_ECHOPGM(" PID_BED_DEBUG "); - SERIAL_ECHOPGM(": Input "); - SERIAL_ECHO(current_temperature_bed); - SERIAL_ECHOPGM(" Output "); - SERIAL_ECHO(pid_output); - SERIAL_ECHOPGM(" pTerm "); - SERIAL_ECHO(pTerm_bed); - SERIAL_ECHOPGM(" iTerm "); - SERIAL_ECHO(iTerm_bed); - SERIAL_ECHOPGM(" dTerm "); - SERIAL_ECHOLN(dTerm_bed); - #endif //PID_BED_DEBUG - - return pid_output; - } -#endif //PIDTEMPBED - -/** - * Manage heating activities for extruder hot-ends and a heated bed - * - Acquire updated temperature readings - * - Also resets the watchdog timer - * - Invoke thermal runaway protection - * - Manage extruder auto-fan - * - Apply filament width to the extrusion rate (may move) - * - Update the heated bed PID output value - */ -void Temperature::manage_heater() { - -#ifdef SWIFT_TEST_MODE - - return; -#endif - - if (!temp_meas_ready) return; - - updateTemperaturesFromRawValues(); // also resets the watchdog - - #if ENABLED(HEATER_0_USES_MAX6675) - float ct = current_temperature[0]; - if (ct > min(HEATER_0_MAXTEMP, 1023)) max_temp_error(0); - if (ct < max(HEATER_0_MINTEMP, 0.01)) min_temp_error(0); - #endif - - #if (ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0) || (ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0) || DISABLED(PIDTEMPBED) || HAS_AUTO_FAN - millis_t ms = millis(); - #endif - - // Loop through all hotends - HOTEND_LOOP() { - - #if ENABLED(THERMAL_PROTECTION_HOTENDS) - thermal_runaway_protection(&thermal_runaway_state_machine[e], &thermal_runaway_timer[e], current_temperature[e], target_temperature[e], e, THERMAL_PROTECTION_PERIOD, THERMAL_PROTECTION_HYSTERESIS); - #endif - - float pid_output = get_pid_output(e); - - // Check if temperature is within the correct range - soft_pwm[e] = (current_temperature[e] > minttemp[e] || is_preheating(e)) && current_temperature[e] < maxttemp[e] ? (int)pid_output >> 1 : 0; - - // Check if the temperature is failing to increase - #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 - - // Is it time to check this extruder's heater? - if (watch_heater_next_ms[e] && ELAPSED(ms, watch_heater_next_ms[e])) { - // Has it failed to increase enough? - if (degHotend(e) < watch_target_temp[e]) { - // Stop! - _temp_error(e, PSTR(MSG_T_HEATING_FAILED), PSTR(MSG_HEATING_FAILED_LCD)); - } - else { - // Start again if the target is still far off - start_watching_heater(e); - } - } - - #endif // THERMAL_PROTECTION_HOTENDS - - // Check if the temperature is failing to increase - #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 - - // Is it time to check the bed? - if (watch_bed_next_ms && ELAPSED(ms, watch_bed_next_ms)) { - // Has it failed to increase enough? - if (degBed() < watch_target_bed_temp) { - // Stop! - _temp_error(-1, PSTR(MSG_T_HEATING_FAILED), PSTR(MSG_HEATING_FAILED_LCD)); - } - else { - // Start again if the target is still far off - start_watching_bed(); - } - } - - #endif // THERMAL_PROTECTION_HOTENDS - - #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) { - _temp_error(0, PSTR(MSG_REDUNDANCY), PSTR(MSG_ERR_REDUNDANT_TEMP)); - } - #endif - - } // Hotends Loop - - #if HAS_AUTO_FAN - if (ELAPSED(ms, next_auto_fan_check_ms)) { // only need to check fan state very infrequently - checkExtruderAutoFans(); - next_auto_fan_check_ms = ms + 2500UL; - } - #endif - - // Control the extruder rate based on the width sensor - #if ENABLED(FILAMENT_WIDTH_SENSOR) - if (filament_sensor) { - meas_shift_index = filwidth_delay_index1 - meas_delay_cm; - if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1; //loop around buffer if needed - - // Get the delayed info and add 100 to reconstitute to a percent of - // the nominal filament diameter then square it to get an area - meas_shift_index = constrain(meas_shift_index, 0, MAX_MEASUREMENT_DELAY); - float vm = pow((measurement_delay[meas_shift_index] + 100.0) * 0.01, 2); - NOLESS(vm, 0.01); - volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] = vm; - } - #endif //FILAMENT_WIDTH_SENSOR - - #if DISABLED(PIDTEMPBED) - if (PENDING(ms, next_bed_check_ms)) return; - next_bed_check_ms = ms + BED_CHECK_INTERVAL; - #endif - - #if TEMP_SENSOR_BED != 0 - - #if HAS_THERMALLY_PROTECTED_BED - thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, -1, THERMAL_PROTECTION_BED_PERIOD, THERMAL_PROTECTION_BED_HYSTERESIS); - #endif - - #if ENABLED(PIDTEMPBED) - float pid_output = get_pid_output_bed(); - - soft_pwm_bed = current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP ? (int)pid_output >> 1 : 0; - - #elif ENABLED(BED_LIMIT_SWITCHING) - // Check if temperature is within the correct band - if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) { - if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS) - soft_pwm_bed = 0; - else if (current_temperature_bed <= target_temperature_bed - (BED_HYSTERESIS)) - soft_pwm_bed = MAX_BED_POWER >> 1; - } - else { - soft_pwm_bed = 0; - WRITE_HEATER_BED(LOW); - } - #else // !PIDTEMPBED && !BED_LIMIT_SWITCHING - // Check if temperature is within the correct range - if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) { - soft_pwm_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0; - } - else { - soft_pwm_bed = 0; - WRITE_HEATER_BED(LOW); - } - #endif - #endif //TEMP_SENSOR_BED != 0 -} - -#define PGM_RD_W(x) (short)pgm_read_word(&x) - -// Derived from RepRap FiveD extruder::getTemperature() -// For hot end temperature measurement. -float Temperature::analog2temp(int raw, uint8_t e) { - #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - if (e > HOTENDS) - #else - if (e >= HOTENDS) - #endif - { - SERIAL_ERROR_START; - SERIAL_ERROR((int)e); - SERIAL_ERRORLNPGM(MSG_INVALID_EXTRUDER_NUM); - kill(PSTR(MSG_KILLED)); - return 0.0; - } - - #if ENABLED(HEATER_0_USES_MAX6675) - if (e == 0) return 0.25 * raw; - #endif - - if (heater_ttbl_map[e] != NULL) { - float celsius = 0; - uint8_t i; - short(*tt)[][2] = (short(*)[][2])(heater_ttbl_map[e]); - - for (i = 1; i < heater_ttbllen_map[e]; i++) { - if (PGM_RD_W((*tt)[i][0]) > raw) { - celsius = PGM_RD_W((*tt)[i - 1][1]) + - (raw - PGM_RD_W((*tt)[i - 1][0])) * - (float)(PGM_RD_W((*tt)[i][1]) - PGM_RD_W((*tt)[i - 1][1])) / - (float)(PGM_RD_W((*tt)[i][0]) - PGM_RD_W((*tt)[i - 1][0])); - break; - } - } - - // Overflow: Set to last value in the table - if (i == heater_ttbllen_map[e]) celsius = PGM_RD_W((*tt)[i - 1][1]); - - return celsius; - } - return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * (TEMP_SENSOR_AD595_GAIN)) + TEMP_SENSOR_AD595_OFFSET; -} - -// Derived from RepRap FiveD extruder::getTemperature() -// For bed temperature measurement. -float Temperature::analog2tempBed(int raw) { - #if ENABLED(BED_USES_THERMISTOR) - float celsius = 0; - byte i; - - for (i = 1; i < BEDTEMPTABLE_LEN; i++) { - if (PGM_RD_W(BEDTEMPTABLE[i][0]) > raw) { - celsius = PGM_RD_W(BEDTEMPTABLE[i - 1][1]) + - (raw - PGM_RD_W(BEDTEMPTABLE[i - 1][0])) * - (float)(PGM_RD_W(BEDTEMPTABLE[i][1]) - PGM_RD_W(BEDTEMPTABLE[i - 1][1])) / - (float)(PGM_RD_W(BEDTEMPTABLE[i][0]) - PGM_RD_W(BEDTEMPTABLE[i - 1][0])); - break; - } - } - - // Overflow: Set to last value in the table - if (i == BEDTEMPTABLE_LEN) celsius = PGM_RD_W(BEDTEMPTABLE[i - 1][1]); - - return celsius; - - #elif defined(BED_USES_AD595) - - return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * (TEMP_SENSOR_AD595_GAIN)) + TEMP_SENSOR_AD595_OFFSET; - - #else - - UNUSED(raw); - return 0; - - #endif -} - -/** - * Get the raw values into the actual temperatures. - * The raw values are created in interrupt context, - * and this function is called from normal context - * as it would block the stepper routine. - */ -void Temperature::updateTemperaturesFromRawValues() { - #if ENABLED(HEATER_0_USES_MAX6675) - current_temperature_raw[0] = read_max6675(); - #endif - HOTEND_LOOP() { - current_temperature[e] = Temperature::analog2temp(current_temperature_raw[e], e); - } - current_temperature_bed = Temperature::analog2tempBed(current_temperature_bed_raw); - #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - redundant_temperature = Temperature::analog2temp(redundant_temperature_raw, 1); - #endif - #if ENABLED(FILAMENT_WIDTH_SENSOR) - filament_width_meas = analog2widthFil(); - #endif - - #if ENABLED(USE_WATCHDOG) - // Reset the watchdog after we know we have a temperature measurement. - watchdog_reset(); - #endif - - CRITICAL_SECTION_START; - temp_meas_ready = false; - CRITICAL_SECTION_END; -} - - -#if ENABLED(FILAMENT_WIDTH_SENSOR) - - // Convert raw Filament Width to millimeters - float Temperature::analog2widthFil() { - return current_raw_filwidth / 16383.0 * 5.0; - //return current_raw_filwidth; - } - - // Convert raw Filament Width to a ratio - int Temperature::widthFil_to_size_ratio() { - float temp = filament_width_meas; - if (temp < MEASURED_LOWER_LIMIT) temp = filament_width_nominal; //assume sensor cut out - else NOMORE(temp, MEASURED_UPPER_LIMIT); - return filament_width_nominal / temp * 100; - } - -#endif - - -/** - * Initialize the temperature manager - * The manager is implemented by periodic calls to manage_heater() - */ -void Temperature::init() { - - #if MB(RUMBA) && ((TEMP_SENSOR_0==-1)||(TEMP_SENSOR_1==-1)||(TEMP_SENSOR_2==-1)||(TEMP_SENSOR_BED==-1)) - //disable RUMBA JTAG in case the thermocouple extension is plugged on top of JTAG connector - MCUCR = _BV(JTD); - MCUCR = _BV(JTD); - #endif - - // Finish init of mult hotend arrays - HOTEND_LOOP() { - // populate with the first value - maxttemp[e] = maxttemp[0]; - #if ENABLED(PIDTEMP) - temp_iState_min[e] = 0.0; - temp_iState_max[e] = (PID_INTEGRAL_DRIVE_MAX) / PID_PARAM(Ki, e); - #if ENABLED(PID_EXTRUSION_SCALING) - last_e_position = 0; - #endif - #endif //PIDTEMP - #if ENABLED(PIDTEMPBED) - temp_iState_min_bed = 0.0; - temp_iState_max_bed = (PID_BED_INTEGRAL_DRIVE_MAX) / bedKi; - #endif //PIDTEMPBED - } - - #if ENABLED(PIDTEMP) && ENABLED(PID_EXTRUSION_SCALING) - last_e_position = 0; - #endif - - #if HAS_HEATER_0 - SET_OUTPUT(HEATER_0_PIN); - #endif - #if HAS_HEATER_1 - SET_OUTPUT(HEATER_1_PIN); - #endif - #if HAS_HEATER_2 - SET_OUTPUT(HEATER_2_PIN); - #endif - #if HAS_HEATER_3 - SET_OUTPUT(HEATER_3_PIN); - #endif - #if HAS_HEATER_BED - SET_OUTPUT(HEATER_BED_PIN); - #endif - - #if ENABLED(FAST_PWM_FAN) || ENABLED(FAN_SOFT_PWM) - - #if HAS_FAN0 - SET_OUTPUT(FAN_PIN); - #if ENABLED(FAST_PWM_FAN) - #ifndef SWIFT_TEST_MODE - #ifdef UARM_SWIFT - if (is_fan_enable()) - #endif - setPwmFrequency(FAN_PIN, 1); // No prescaling. Pwm frequency = F_CPU/256/8 - #endif - #endif - #if ENABLED(FAN_SOFT_PWM) - soft_pwm_fan[0] = fanSpeedSoftPwm[0] / 2; - #endif - #endif - - #if HAS_FAN1 - SET_OUTPUT(FAN1_PIN); - #if ENABLED(FAST_PWM_FAN) - setPwmFrequency(FAN1_PIN, 1); // No prescaling. Pwm frequency = F_CPU/256/8 - #endif - #if ENABLED(FAN_SOFT_PWM) - soft_pwm_fan[1] = fanSpeedSoftPwm[1] / 2; - #endif - #endif - - #if HAS_FAN2 - SET_OUTPUT(FAN2_PIN); - #if ENABLED(FAST_PWM_FAN) - setPwmFrequency(FAN2_PIN, 1); // No prescaling. Pwm frequency = F_CPU/256/8 - #endif - #if ENABLED(FAN_SOFT_PWM) - soft_pwm_fan[2] = fanSpeedSoftPwm[2] / 2; - #endif - #endif - - #endif // FAST_PWM_FAN || FAN_SOFT_PWM - - #if ENABLED(HEATER_0_USES_MAX6675) - - #if DISABLED(SDSUPPORT) - OUT_WRITE(SCK_PIN, LOW); - OUT_WRITE(MOSI_PIN, HIGH); - OUT_WRITE(MISO_PIN, HIGH); - #else - OUT_WRITE(SS_PIN, HIGH); - #endif - - OUT_WRITE(MAX6675_SS, HIGH); - - #endif //HEATER_0_USES_MAX6675 - - #ifdef DIDR2 - #define ANALOG_SELECT(pin) do{ if (pin < 8) SBI(DIDR0, pin); else SBI(DIDR2, pin - 8); }while(0) - #else - #define ANALOG_SELECT(pin) do{ SBI(DIDR0, pin); }while(0) - #endif - - // Set analog inputs - ADCSRA = _BV(ADEN) | _BV(ADSC) | _BV(ADIF) | 0x07; - DIDR0 = 0; - #ifdef DIDR2 - DIDR2 = 0; - #endif - #if HAS_TEMP_0 - ANALOG_SELECT(TEMP_0_PIN); - #endif - #if HAS_TEMP_1 - ANALOG_SELECT(TEMP_1_PIN); - #endif - #if HAS_TEMP_2 - ANALOG_SELECT(TEMP_2_PIN); - #endif - #if HAS_TEMP_3 - ANALOG_SELECT(TEMP_3_PIN); - #endif - #if HAS_TEMP_BED - ANALOG_SELECT(TEMP_BED_PIN); - #endif - #if ENABLED(FILAMENT_WIDTH_SENSOR) - ANALOG_SELECT(FILWIDTH_PIN); - #endif - - #if HAS_AUTO_FAN_0 - pinMode(EXTRUDER_0_AUTO_FAN_PIN, OUTPUT); - #endif - #if HAS_AUTO_FAN_1 && (EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN) - pinMode(EXTRUDER_1_AUTO_FAN_PIN, OUTPUT); - #endif - #if HAS_AUTO_FAN_2 && (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN) && (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN) - pinMode(EXTRUDER_2_AUTO_FAN_PIN, OUTPUT); - #endif - #if HAS_AUTO_FAN_3 && (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN) && (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN) && (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_2_AUTO_FAN_PIN) - pinMode(EXTRUDER_3_AUTO_FAN_PIN, OUTPUT); - #endif - - // Use timer0 for temperature measurement - // Interleave temperature interrupt with millies interrupt - OCR0B = 128; - SBI(TIMSK0, OCIE0B); - - // Wait for temperature measurement to settle - delay(250); - - #define TEMP_MIN_ROUTINE(NR) \ - minttemp[NR] = HEATER_ ## NR ## _MINTEMP; \ - while(analog2temp(minttemp_raw[NR], NR) < HEATER_ ## NR ## _MINTEMP) { \ - if (HEATER_ ## NR ## _RAW_LO_TEMP < HEATER_ ## NR ## _RAW_HI_TEMP) \ - minttemp_raw[NR] += OVERSAMPLENR; \ - else \ - minttemp_raw[NR] -= OVERSAMPLENR; \ - } - #define TEMP_MAX_ROUTINE(NR) \ - maxttemp[NR] = HEATER_ ## NR ## _MAXTEMP; \ - while(analog2temp(maxttemp_raw[NR], NR) > HEATER_ ## NR ## _MAXTEMP) { \ - if (HEATER_ ## NR ## _RAW_LO_TEMP < HEATER_ ## NR ## _RAW_HI_TEMP) \ - maxttemp_raw[NR] -= OVERSAMPLENR; \ - else \ - maxttemp_raw[NR] += OVERSAMPLENR; \ - } - - #ifdef HEATER_0_MINTEMP - TEMP_MIN_ROUTINE(0); - #endif - #ifdef HEATER_0_MAXTEMP - TEMP_MAX_ROUTINE(0); - #endif - #if HOTENDS > 1 - #ifdef HEATER_1_MINTEMP - TEMP_MIN_ROUTINE(1); - #endif - #ifdef HEATER_1_MAXTEMP - TEMP_MAX_ROUTINE(1); - #endif - #if HOTENDS > 2 - #ifdef HEATER_2_MINTEMP - TEMP_MIN_ROUTINE(2); - #endif - #ifdef HEATER_2_MAXTEMP - TEMP_MAX_ROUTINE(2); - #endif - #if HOTENDS > 3 - #ifdef HEATER_3_MINTEMP - TEMP_MIN_ROUTINE(3); - #endif - #ifdef HEATER_3_MAXTEMP - TEMP_MAX_ROUTINE(3); - #endif - #endif // HOTENDS > 3 - #endif // HOTENDS > 2 - #endif // HOTENDS > 1 - - #ifdef BED_MINTEMP - while(analog2tempBed(bed_minttemp_raw) < BED_MINTEMP) { - #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP - bed_minttemp_raw += OVERSAMPLENR; - #else - bed_minttemp_raw -= OVERSAMPLENR; - #endif - } - #endif //BED_MINTEMP - #ifdef BED_MAXTEMP - while (analog2tempBed(bed_maxttemp_raw) > BED_MAXTEMP) { - #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP - bed_maxttemp_raw -= OVERSAMPLENR; - #else - bed_maxttemp_raw += OVERSAMPLENR; - #endif - } - #endif //BED_MAXTEMP -} - -#if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 - /** - * Start Heating Sanity Check for hotends that are below - * their target temperature by a configurable margin. - * This is called when the temperature is set. (M104, M109) - */ - void Temperature::start_watching_heater(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - if (degHotend(HOTEND_INDEX) < degTargetHotend(HOTEND_INDEX) - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1)) { - watch_target_temp[HOTEND_INDEX] = degHotend(HOTEND_INDEX) + WATCH_TEMP_INCREASE; - watch_heater_next_ms[HOTEND_INDEX] = millis() + (WATCH_TEMP_PERIOD) * 1000UL; - } - else - watch_heater_next_ms[HOTEND_INDEX] = 0; - } -#endif - -#if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 - /** - * Start Heating Sanity Check for hotends that are below - * their target temperature by a configurable margin. - * This is called when the temperature is set. (M140, M190) - */ - void Temperature::start_watching_bed() { - if (degBed() < degTargetBed() - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1)) { - watch_target_bed_temp = degBed() + WATCH_BED_TEMP_INCREASE; - watch_bed_next_ms = millis() + (WATCH_BED_TEMP_PERIOD) * 1000UL; - } - else - watch_bed_next_ms = 0; - } -#endif - -#if ENABLED(THERMAL_PROTECTION_HOTENDS) || HAS_THERMALLY_PROTECTED_BED - - #if ENABLED(THERMAL_PROTECTION_HOTENDS) - Temperature::TRState Temperature::thermal_runaway_state_machine[HOTENDS] = { TRInactive }; - millis_t Temperature::thermal_runaway_timer[HOTENDS] = { 0 }; - #endif - - #if HAS_THERMALLY_PROTECTED_BED - Temperature::TRState Temperature::thermal_runaway_bed_state_machine = TRInactive; - millis_t Temperature::thermal_runaway_bed_timer; - #endif - - void Temperature::thermal_runaway_protection(Temperature::TRState* state, millis_t* timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) { - - static float tr_target_temperature[HOTENDS + 1] = { 0.0 }; - - /** - SERIAL_ECHO_START; - SERIAL_ECHOPGM("Thermal Thermal Runaway Running. Heater ID: "); - if (heater_id < 0) SERIAL_ECHOPGM("bed"); else SERIAL_ECHO(heater_id); - SERIAL_ECHOPAIR(" ; State:", *state); - SERIAL_ECHOPAIR(" ; Timer:", *timer); - SERIAL_ECHOPAIR(" ; Temperature:", temperature); - SERIAL_ECHOPAIR(" ; Target Temp:", target_temperature); - SERIAL_EOL; - */ - - int heater_index = heater_id >= 0 ? heater_id : HOTENDS; - - // If the target temperature changes, restart - if (tr_target_temperature[heater_index] != target_temperature) { - tr_target_temperature[heater_index] = target_temperature; - *state = target_temperature > 0 ? TRFirstHeating : TRInactive; - } - - switch (*state) { - // Inactive state waits for a target temperature to be set - case TRInactive: break; - // When first heating, wait for the temperature to be reached then go to Stable state - case TRFirstHeating: - if (temperature < tr_target_temperature[heater_index]) break; - *state = TRStable; - // While the temperature is stable watch for a bad temperature - case TRStable: - if (temperature < tr_target_temperature[heater_index] - hysteresis_degc && ELAPSED(millis(), *timer)) - *state = TRRunaway; - else { - *timer = millis() + period_seconds * 1000UL; - break; - } - case TRRunaway: - _temp_error(heater_id, PSTR(MSG_T_THERMAL_RUNAWAY), PSTR(MSG_THERMAL_RUNAWAY)); - } - } - -#endif // THERMAL_PROTECTION_HOTENDS || THERMAL_PROTECTION_BED - -void Temperature::disable_all_heaters() { - HOTEND_LOOP() setTargetHotend(0, e); - setTargetBed(0); - - // If all heaters go down then for sure our print job has stopped - print_job_timer.stop(); - - #define DISABLE_HEATER(NR) { \ - setTargetHotend(0, NR); \ - soft_pwm[NR] = 0; \ - WRITE_HEATER_ ## NR (LOW); \ - } - - #if HAS_TEMP_HOTEND - setTargetHotend(0, 0); - soft_pwm[0] = 0; - #ifndef SWIFT_TEST_MODE - WRITE_HEATER_0P(LOW); // Should HEATERS_PARALLEL apply here? Then change to DISABLE_HEATER(0) - #endif - #endif - - #if HOTENDS > 1 && HAS_TEMP_1 - DISABLE_HEATER(1); - #endif - - #if HOTENDS > 2 && HAS_TEMP_2 - DISABLE_HEATER(2); - #endif - - #if HOTENDS > 3 && HAS_TEMP_3 - DISABLE_HEATER(3); - #endif - - #if HAS_TEMP_BED - target_temperature_bed = 0; - soft_pwm_bed = 0; - #if HAS_HEATER_BED - WRITE_HEATER_BED(LOW); - #endif - #endif -} - -#if ENABLED(HEATER_0_USES_MAX6675) - - #define MAX6675_HEAT_INTERVAL 250u - - #if ENABLED(MAX6675_IS_MAX31855) - uint32_t max6675_temp = 2000; - #define MAX6675_ERROR_MASK 7 - #define MAX6675_DISCARD_BITS 18 - #define MAX6675_SPEED_BITS (_BV(SPR1)) // clock ÷ 64 - #else - uint16_t max6675_temp = 2000; - #define MAX6675_ERROR_MASK 4 - #define MAX6675_DISCARD_BITS 3 - #define MAX6675_SPEED_BITS (_BV(SPR0)) // clock ÷ 16 - #endif - - int Temperature::read_max6675() { - - static millis_t next_max6675_ms = 0; - - millis_t ms = millis(); - - if (PENDING(ms, next_max6675_ms)) return (int)max6675_temp; - - next_max6675_ms = ms + MAX6675_HEAT_INTERVAL; - - CBI( - #ifdef PRR - PRR - #elif defined(PRR0) - PRR0 - #endif - , PRSPI); - SPCR = _BV(MSTR) | _BV(SPE) | MAX6675_SPEED_BITS; - - WRITE(MAX6675_SS, 0); // enable TT_MAX6675 - - // ensure 100ns delay - a bit extra is fine - asm("nop");//50ns on 20Mhz, 62.5ns on 16Mhz - asm("nop");//50ns on 20Mhz, 62.5ns on 16Mhz - - // Read a big-endian temperature value - max6675_temp = 0; - for (uint8_t i = sizeof(max6675_temp); i--;) { - SPDR = 0; - for (;!TEST(SPSR, SPIF);); - max6675_temp |= SPDR; - if (i > 0) max6675_temp <<= 8; // shift left if not the last byte - } - - WRITE(MAX6675_SS, 1); // disable TT_MAX6675 - - if (max6675_temp & MAX6675_ERROR_MASK) - max6675_temp = 4000; // thermocouple open - else - max6675_temp >>= MAX6675_DISCARD_BITS; - - return (int)max6675_temp; - } - -#endif //HEATER_0_USES_MAX6675 - -/** - * Get raw temperatures - */ -void Temperature::set_current_temp_raw() { - #if HAS_TEMP_0 && DISABLED(HEATER_0_USES_MAX6675) - current_temperature_raw[0] = raw_temp_value[0]; - #endif - #if HAS_TEMP_1 - #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - redundant_temperature_raw = raw_temp_value[1]; - #else - current_temperature_raw[1] = raw_temp_value[1]; - #endif - #if HAS_TEMP_2 - current_temperature_raw[2] = raw_temp_value[2]; - #if HAS_TEMP_3 - current_temperature_raw[3] = raw_temp_value[3]; - #endif - #endif - #endif - current_temperature_bed_raw = raw_temp_bed_value; - temp_meas_ready = true; -} - -/** - * Timer 0 is shared with millies - * - Manage PWM to all the heaters and fan - * - Update the raw temperature values - * - Check new temperature values for MIN/MAX errors - * - Step the babysteps value for each axis towards 0 - */ -ISR(TIMER0_COMPB_vect) { Temperature::isr(); } - -void Temperature::isr() { - - static unsigned char temp_count = 0; - static TempState temp_state = StartupDelay; - static unsigned char pwm_count = _BV(SOFT_PWM_SCALE); - - // Static members for each heater - #if ENABLED(SLOW_PWM_HEATERS) - static unsigned char slow_pwm_count = 0; - #define ISR_STATICS(n) \ - static unsigned char soft_pwm_ ## n; \ - static unsigned char state_heater_ ## n = 0; \ - static unsigned char state_timer_heater_ ## n = 0 - #else - #define ISR_STATICS(n) static unsigned char soft_pwm_ ## n - #endif - - // Statics per heater - ISR_STATICS(0); - #if (HOTENDS > 1) || ENABLED(HEATERS_PARALLEL) - ISR_STATICS(1); - #if HOTENDS > 2 - ISR_STATICS(2); - #if HOTENDS > 3 - ISR_STATICS(3); - #endif - #endif - #endif - #if HAS_HEATER_BED - ISR_STATICS(BED); - #endif - - #if ENABLED(FILAMENT_WIDTH_SENSOR) - static unsigned long raw_filwidth_value = 0; - #endif - - #if DISABLED(SLOW_PWM_HEATERS) - /** - * standard PWM modulation - */ - if (pwm_count == 0) { - soft_pwm_0 = soft_pwm[0]; - #ifndef SWIFT_TEST_MODE - if (soft_pwm_0 > 0) { - WRITE_HEATER_0(1); - } - else WRITE_HEATER_0P(0); // If HEATERS_PARALLEL should apply, change to WRITE_HEATER_0 - #endif - #if HOTENDS > 1 - soft_pwm_1 = soft_pwm[1]; - WRITE_HEATER_1(soft_pwm_1 > 0 ? 1 : 0); - #if HOTENDS > 2 - soft_pwm_2 = soft_pwm[2]; - WRITE_HEATER_2(soft_pwm_2 > 0 ? 1 : 0); - #if HOTENDS > 3 - soft_pwm_3 = soft_pwm[3]; - WRITE_HEATER_3(soft_pwm_3 > 0 ? 1 : 0); - #endif - #endif - #endif - - #if HAS_HEATER_BED - soft_pwm_BED = soft_pwm_bed; - WRITE_HEATER_BED(soft_pwm_BED > 0 ? 1 : 0); - #endif - - #if ENABLED(FAN_SOFT_PWM) - #if HAS_FAN0 - soft_pwm_fan[0] = fanSpeedSoftPwm[0] / 2; - #ifndef SWIFT_TEST_MODE - #ifdef UARM_SWIFT - if (is_fan_enable()) - #endif - WRITE_FAN(soft_pwm_fan[0] > 0 ? 1 : 0); - #endif - #endif - #if HAS_FAN1 - soft_pwm_fan[1] = fanSpeedSoftPwm[1] / 2; - WRITE_FAN1(soft_pwm_fan[1] > 0 ? 1 : 0); - #endif - #if HAS_FAN2 - soft_pwm_fan[2] = fanSpeedSoftPwm[2] / 2; - WRITE_FAN2(soft_pwm_fan[2] > 0 ? 1 : 0); - #endif - #endif - } - -#ifndef SWIFT_TEST_MODE - - if (soft_pwm_0 < pwm_count) WRITE_HEATER_0(0); -#endif - #if HOTENDS > 1 - if (soft_pwm_1 < pwm_count) WRITE_HEATER_1(0); - #if HOTENDS > 2 - if (soft_pwm_2 < pwm_count) WRITE_HEATER_2(0); - #if HOTENDS > 3 - if (soft_pwm_3 < pwm_count) WRITE_HEATER_3(0); - #endif - #endif - #endif - - #if HAS_HEATER_BED - if (soft_pwm_BED < pwm_count) WRITE_HEATER_BED(0); - #endif - - #if ENABLED(FAN_SOFT_PWM) - #if HAS_FAN0 - #ifndef SWIFT_TEST_MODE - #ifdef UARM_SWIFT - if (is_fan_enable()) - #endif - if (soft_pwm_fan[0] < pwm_count) WRITE_FAN(0); - #endif - #endif - #if HAS_FAN1 - if (soft_pwm_fan[1] < pwm_count) WRITE_FAN1(0); - #endif - #if HAS_FAN2 - if (soft_pwm_fan[2] < pwm_count) WRITE_FAN2(0); - #endif - #endif - - pwm_count += _BV(SOFT_PWM_SCALE); - pwm_count &= 0x7f; - - #else // SLOW_PWM_HEATERS - - /** - * SLOW PWM HEATERS - * - * for heaters drived by relay - */ - #ifndef MIN_STATE_TIME - #define MIN_STATE_TIME 16 // MIN_STATE_TIME * 65.5 = time in milliseconds - #endif - - // Macros for Slow PWM timer logic - HEATERS_PARALLEL applies - #define _SLOW_PWM_ROUTINE(NR, src) \ - soft_pwm_ ## NR = src; \ - if (soft_pwm_ ## NR > 0) { \ - if (state_timer_heater_ ## NR == 0) { \ - if (state_heater_ ## NR == 0) state_timer_heater_ ## NR = MIN_STATE_TIME; \ - state_heater_ ## NR = 1; \ - WRITE_HEATER_ ## NR(1); \ - } \ - } \ - else { \ - if (state_timer_heater_ ## NR == 0) { \ - if (state_heater_ ## NR == 1) state_timer_heater_ ## NR = MIN_STATE_TIME; \ - state_heater_ ## NR = 0; \ - WRITE_HEATER_ ## NR(0); \ - } \ - } - #define SLOW_PWM_ROUTINE(n) _SLOW_PWM_ROUTINE(n, soft_pwm[n]) - - #define PWM_OFF_ROUTINE(NR) \ - if (soft_pwm_ ## NR < slow_pwm_count) { \ - if (state_timer_heater_ ## NR == 0) { \ - if (state_heater_ ## NR == 1) state_timer_heater_ ## NR = MIN_STATE_TIME; \ - state_heater_ ## NR = 0; \ - WRITE_HEATER_ ## NR (0); \ - } \ - } - - if (slow_pwm_count == 0) { - - SLOW_PWM_ROUTINE(0); // EXTRUDER 0 - #if HOTENDS > 1 - SLOW_PWM_ROUTINE(1); // EXTRUDER 1 - #if HOTENDS > 2 - SLOW_PWM_ROUTINE(2); // EXTRUDER 2 - #if HOTENDS > 3 - SLOW_PWM_ROUTINE(3); // EXTRUDER 3 - #endif - #endif - #endif - #if HAS_HEATER_BED - _SLOW_PWM_ROUTINE(BED, soft_pwm_bed); // BED - #endif - - } // slow_pwm_count == 0 - - PWM_OFF_ROUTINE(0); // EXTRUDER 0 - #if HOTENDS > 1 - PWM_OFF_ROUTINE(1); // EXTRUDER 1 - #if HOTENDS > 2 - PWM_OFF_ROUTINE(2); // EXTRUDER 2 - #if HOTENDS > 3 - PWM_OFF_ROUTINE(3); // EXTRUDER 3 - #endif - #endif - #endif - #if HAS_HEATER_BED - PWM_OFF_ROUTINE(BED); // BED - #endif - - #if ENABLED(FAN_SOFT_PWM) - if (pwm_count == 0) { - #if HAS_FAN0 - soft_pwm_fan[0] = fanSpeedSoftPwm[0] / 2; - #ifndef SWIFT_TEST_MODE - #ifdef UARM_SWIFT - if (is_fan_enable()) - #endif - WRITE_FAN(soft_pwm_fan[0] > 0 ? 1 : 0); - #endif - #endif - #if HAS_FAN1 - soft_pwm_fan[1] = fanSpeedSoftPwm[1] / 2; - WRITE_FAN1(soft_pwm_fan[1] > 0 ? 1 : 0); - #endif - #if HAS_FAN2 - soft_pwm_fan[2] = fanSpeedSoftPwm[2] / 2; - WRITE_FAN2(soft_pwm_fan[2] > 0 ? 1 : 0); - #endif - } - #if HAS_FAN0 - #ifndef SWIFT_TEST_MODE - #ifdef UARM_SWIFT - if (is_fan_enable()) - #endif - if (soft_pwm_fan[0] < pwm_count) WRITE_FAN(0); - #endif - #endif - #if HAS_FAN1 - if (soft_pwm_fan[1] < pwm_count) WRITE_FAN1(0); - #endif - #if HAS_FAN2 - if (soft_pwm_fan[2] < pwm_count) WRITE_FAN2(0); - #endif - #endif //FAN_SOFT_PWM - - pwm_count += _BV(SOFT_PWM_SCALE); - pwm_count &= 0x7f; - - // increment slow_pwm_count only every 64 pwm_count circa 65.5ms - if ((pwm_count % 64) == 0) { - slow_pwm_count++; - slow_pwm_count &= 0x7f; - - // EXTRUDER 0 - if (state_timer_heater_0 > 0) state_timer_heater_0--; - #if HOTENDS > 1 // EXTRUDER 1 - if (state_timer_heater_1 > 0) state_timer_heater_1--; - #if HOTENDS > 2 // EXTRUDER 2 - if (state_timer_heater_2 > 0) state_timer_heater_2--; - #if HOTENDS > 3 // EXTRUDER 3 - if (state_timer_heater_3 > 0) state_timer_heater_3--; - #endif - #endif - #endif - #if HAS_HEATER_BED - if (state_timer_heater_BED > 0) state_timer_heater_BED--; - #endif - } // (pwm_count % 64) == 0 - - #endif // SLOW_PWM_HEATERS - - #define SET_ADMUX_ADCSRA(pin) ADMUX = _BV(REFS0) | (pin & 0x07); SBI(ADCSRA, ADSC) - #ifdef MUX5 - #define START_ADC(pin) if (pin > 7) ADCSRB = _BV(MUX5); else ADCSRB = 0; SET_ADMUX_ADCSRA(pin) - #else - #define START_ADC(pin) ADCSRB = 0; SET_ADMUX_ADCSRA(pin) - #endif - - // Prepare or measure a sensor, each one every 12th frame - switch (temp_state) { - case PrepareTemp_0: - #if HAS_TEMP_0 - START_ADC(TEMP_0_PIN); - #endif - lcd_buttons_update(); - temp_state = MeasureTemp_0; - break; - case MeasureTemp_0: - #if HAS_TEMP_0 - raw_temp_value[0] += ADC; - #endif - temp_state = PrepareTemp_BED; - break; - - case PrepareTemp_BED: - #if HAS_TEMP_BED - START_ADC(TEMP_BED_PIN); - #endif - lcd_buttons_update(); - temp_state = MeasureTemp_BED; - break; - case MeasureTemp_BED: - #if HAS_TEMP_BED - raw_temp_bed_value += ADC; - #endif - temp_state = PrepareTemp_1; - break; - - case PrepareTemp_1: - #if HAS_TEMP_1 - START_ADC(TEMP_1_PIN); - #endif - lcd_buttons_update(); - temp_state = MeasureTemp_1; - break; - case MeasureTemp_1: - #if HAS_TEMP_1 - raw_temp_value[1] += ADC; - #endif - temp_state = PrepareTemp_2; - break; - - case PrepareTemp_2: - #if HAS_TEMP_2 - START_ADC(TEMP_2_PIN); - #endif - lcd_buttons_update(); - temp_state = MeasureTemp_2; - break; - case MeasureTemp_2: - #if HAS_TEMP_2 - raw_temp_value[2] += ADC; - #endif - temp_state = PrepareTemp_3; - break; - - case PrepareTemp_3: - #if HAS_TEMP_3 - START_ADC(TEMP_3_PIN); - #endif - lcd_buttons_update(); - temp_state = MeasureTemp_3; - break; - case MeasureTemp_3: - #if HAS_TEMP_3 - raw_temp_value[3] += ADC; - #endif - temp_state = Prepare_FILWIDTH; - break; - - case Prepare_FILWIDTH: - #if ENABLED(FILAMENT_WIDTH_SENSOR) - START_ADC(FILWIDTH_PIN); - #endif - lcd_buttons_update(); - temp_state = Measure_FILWIDTH; - break; - case Measure_FILWIDTH: - #if ENABLED(FILAMENT_WIDTH_SENSOR) - // raw_filwidth_value += ADC; //remove to use an IIR filter approach - if (ADC > 102) { //check that ADC is reading a voltage > 0.5 volts, otherwise don't take in the data. - raw_filwidth_value -= (raw_filwidth_value >> 7); //multiply raw_filwidth_value by 127/128 - raw_filwidth_value += ((unsigned long)ADC << 7); //add new ADC reading - } - #endif - temp_state = PrepareTemp_0; - temp_count++; - break; - - case StartupDelay: - temp_state = PrepareTemp_0; - break; - - // default: - // SERIAL_ERROR_START; - // SERIAL_ERRORLNPGM("Temp measurement error!"); - // break; - } // switch(temp_state) - - if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256) = 164ms. - // Update the raw values if they've been read. Else we could be updating them during reading. - if (!temp_meas_ready) set_current_temp_raw(); - - // Filament Sensor - can be read any time since IIR filtering is used - #if ENABLED(FILAMENT_WIDTH_SENSOR) - current_raw_filwidth = raw_filwidth_value >> 10; // Divide to get to 0-16384 range since we used 1/128 IIR filter approach - #endif - - temp_count = 0; - for (int i = 0; i < 4; i++) raw_temp_value[i] = 0; - raw_temp_bed_value = 0; - - #if HAS_TEMP_0 && DISABLED(HEATER_0_USES_MAX6675) - #if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP - #define GE0 <= - #else - #define GE0 >= - #endif - if (current_temperature_raw[0] GE0 maxttemp_raw[0]) max_temp_error(0); - if (minttemp_raw[0] GE0 current_temperature_raw[0] && !is_preheating(0) && target_temperature[0] > 0.0f) { - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - if (++consecutive_low_temperature_error[0] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED) - #endif - min_temp_error(0); - } - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - else - consecutive_low_temperature_error[0] = 0; - #endif - #endif - - #if HAS_TEMP_1 && HOTENDS > 1 - #if HEATER_1_RAW_LO_TEMP > HEATER_1_RAW_HI_TEMP - #define GE1 <= - #else - #define GE1 >= - #endif - if (current_temperature_raw[1] GE1 maxttemp_raw[1]) max_temp_error(1); - if (minttemp_raw[1] GE1 current_temperature_raw[1] && !is_preheating(1) && target_temperature[1] > 0.0f) { - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - if (++consecutive_low_temperature_error[1] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED) - #endif - min_temp_error(1); - } - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - else - consecutive_low_temperature_error[1] = 0; - #endif - #endif // TEMP_SENSOR_1 - - #if HAS_TEMP_2 && HOTENDS > 2 - #if HEATER_2_RAW_LO_TEMP > HEATER_2_RAW_HI_TEMP - #define GE2 <= - #else - #define GE2 >= - #endif - if (current_temperature_raw[2] GE2 maxttemp_raw[2]) max_temp_error(2); - if (minttemp_raw[2] GE2 current_temperature_raw[2] && !is_preheating(2) && target_temperature[2] > 0.0f) { - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - if (++consecutive_low_temperature_error[2] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED) - #endif - min_temp_error(2); - } - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - else - consecutive_low_temperature_error[2] = 0; - #endif - #endif // TEMP_SENSOR_2 - - #if HAS_TEMP_3 && HOTENDS > 3 - #if HEATER_3_RAW_LO_TEMP > HEATER_3_RAW_HI_TEMP - #define GE3 <= - #else - #define GE3 >= - #endif - if (current_temperature_raw[3] GE3 maxttemp_raw[3]) max_temp_error(3); - if (minttemp_raw[3] GE3 current_temperature_raw[3] && !is_preheating(3) && target_temperature[3] > 0.0f) { - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - if (++consecutive_low_temperature_error[3] >= MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED) - #endif - min_temp_error(3); - } - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - else - consecutive_low_temperature_error[3] = 0; - #endif - #endif // TEMP_SENSOR_3 - - #if HAS_TEMP_BED - #if HEATER_BED_RAW_LO_TEMP > HEATER_BED_RAW_HI_TEMP - #define GEBED <= - #else - #define GEBED >= - #endif - if (current_temperature_bed_raw GEBED bed_maxttemp_raw) _temp_error(-1, PSTR(MSG_T_MAXTEMP), PSTR(MSG_ERR_MAXTEMP_BED)); - if (bed_minttemp_raw GEBED current_temperature_bed_raw) _temp_error(-1, PSTR(MSG_T_MINTEMP), PSTR(MSG_ERR_MINTEMP_BED)); - #endif - - } // temp_count >= OVERSAMPLENR - - #if ENABLED(BABYSTEPPING) - for (uint8_t axis = X_AXIS; axis <= Z_AXIS; axis++) { - int curTodo = babystepsTodo[axis]; //get rid of volatile for performance - - if (curTodo > 0) { - stepper.babystep(axis,/*fwd*/true); - babystepsTodo[axis]--; //fewer to do next time - } - else if (curTodo < 0) { - stepper.babystep(axis,/*fwd*/false); - babystepsTodo[axis]++; //fewer to do next time - } - } - #endif //BABYSTEPPING -} diff --git a/lib/Marlin/temperature.h b/lib/Marlin/temperature.h deleted file mode 100644 index ffb47a5..0000000 --- a/lib/Marlin/temperature.h +++ /dev/null @@ -1,465 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * temperature.h - temperature controller - */ - -#ifndef TEMPERATURE_H -#define TEMPERATURE_H - -#include "planner.h" -#include "thermistortables.h" - -#include "MarlinConfig.h" - -#if ENABLED(PID_EXTRUSION_SCALING) - #include "stepper.h" -#endif - -#ifndef SOFT_PWM_SCALE - #define SOFT_PWM_SCALE 0 -#endif - -#if HOTENDS == 1 - #define HOTEND_LOOP() const int8_t e = 0; - #define HOTEND_INDEX 0 - #define EXTRUDER_IDX 0 -#else - #define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++) - #define HOTEND_INDEX e - #define EXTRUDER_IDX active_extruder -#endif - -class Temperature { - - public: - - static float current_temperature[HOTENDS], - current_temperature_bed; - static int current_temperature_raw[HOTENDS], - target_temperature[HOTENDS], - current_temperature_bed_raw, - target_temperature_bed; - - #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - static float redundant_temperature; - #endif - - static unsigned char soft_pwm_bed; - - #if ENABLED(FAN_SOFT_PWM) - static unsigned char fanSpeedSoftPwm[FAN_COUNT]; - #endif - - #if ENABLED(PIDTEMP) || ENABLED(PIDTEMPBED) - #define PID_dT ((OVERSAMPLENR * 12.0)/(F_CPU / 64.0 / 256.0)) - #endif - - #if ENABLED(PIDTEMP) - - #if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1 - - static float Kp[HOTENDS], Ki[HOTENDS], Kd[HOTENDS]; - #if ENABLED(PID_EXTRUSION_SCALING) - static float Kc[HOTENDS]; - #endif - #define PID_PARAM(param, h) Temperature::param[h] - - #else - - static float Kp, Ki, Kd; - #if ENABLED(PID_EXTRUSION_SCALING) - static float Kc; - #endif - #define PID_PARAM(param, h) Temperature::param - - #endif // PID_PARAMS_PER_HOTEND - - // Apply the scale factors to the PID values - #define scalePID_i(i) ( (i) * PID_dT ) - #define unscalePID_i(i) ( (i) / PID_dT ) - #define scalePID_d(d) ( (d) / PID_dT ) - #define unscalePID_d(d) ( (d) * PID_dT ) - - #endif - - #if ENABLED(PIDTEMPBED) - static float bedKp, bedKi, bedKd; - #endif - - #if ENABLED(BABYSTEPPING) - static volatile int babystepsTodo[3]; - #endif - - #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 - static int watch_target_temp[HOTENDS]; - static millis_t watch_heater_next_ms[HOTENDS]; - #endif - - #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 - static int watch_target_bed_temp; - static millis_t watch_bed_next_ms; - #endif - - #if ENABLED(PREVENT_DANGEROUS_EXTRUDE) - static bool allow_cold_extrude; - static float extrude_min_temp; - static bool tooColdToExtrude(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - return allow_cold_extrude ? false : degHotend(HOTEND_INDEX) < extrude_min_temp; - } - #else - static bool tooColdToExtrude(uint8_t e) { UNUSED(e); return false; } - #endif - - private: - - #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) - static int redundant_temperature_raw; - static float redundant_temperature; - #endif - - static volatile bool temp_meas_ready; - - #if ENABLED(PIDTEMP) - static float temp_iState[HOTENDS], - temp_dState[HOTENDS], - pTerm[HOTENDS], - iTerm[HOTENDS], - dTerm[HOTENDS]; - - #if ENABLED(PID_EXTRUSION_SCALING) - static float cTerm[HOTENDS]; - static long last_e_position; - static long lpq[LPQ_MAX_LEN]; - static int lpq_ptr; - #endif - - static float pid_error[HOTENDS], - temp_iState_min[HOTENDS], - temp_iState_max[HOTENDS]; - static bool pid_reset[HOTENDS]; - #endif - - #if ENABLED(PIDTEMPBED) - static float temp_iState_bed, - temp_dState_bed, - pTerm_bed, - iTerm_bed, - dTerm_bed, - pid_error_bed, - temp_iState_min_bed, - temp_iState_max_bed; - #else - static millis_t next_bed_check_ms; - #endif - - static unsigned long raw_temp_value[4], - raw_temp_bed_value; - - // Init min and max temp with extreme values to prevent false errors during startup - static int minttemp_raw[HOTENDS], - maxttemp_raw[HOTENDS], - minttemp[HOTENDS], - maxttemp[HOTENDS]; - - #ifdef MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED - static int consecutive_low_temperature_error[HOTENDS]; - #endif - - #ifdef MILLISECONDS_PREHEAT_TIME - static unsigned long preheat_end_time[HOTENDS]; - #endif - - #ifdef BED_MINTEMP - static int bed_minttemp_raw; - #endif - - #ifdef BED_MAXTEMP - static int bed_maxttemp_raw; - #endif - - #if ENABLED(FILAMENT_WIDTH_SENSOR) - static int meas_shift_index; // Index of a delayed sample in buffer - #endif - - #if HAS_AUTO_FAN - static millis_t next_auto_fan_check_ms; - #endif - - static unsigned char soft_pwm[HOTENDS]; - - #if ENABLED(FAN_SOFT_PWM) - static unsigned char soft_pwm_fan[FAN_COUNT]; - #endif - - #if ENABLED(FILAMENT_WIDTH_SENSOR) - static int current_raw_filwidth; //Holds measured filament diameter - one extruder only - #endif - - public: - - /** - * Instance Methods - */ - - Temperature(); - - void init(); - - /** - * Static (class) methods - */ - static float analog2temp(int raw, uint8_t e); - static float analog2tempBed(int raw); - - /** - * Called from the Temperature ISR - */ - static void isr(); - - /** - * Call periodically to manage heaters - */ - static void manage_heater(); - - /** - * Preheating hotends - */ - #ifdef MILLISECONDS_PREHEAT_TIME - static bool is_preheating(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - return preheat_end_time[HOTEND_INDEX] && PENDING(millis(), preheat_end_time[HOTEND_INDEX]); - } - static void start_preheat_time(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - preheat_end_time[HOTEND_INDEX] = millis() + MILLISECONDS_PREHEAT_TIME; - } - static void reset_preheat_time(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - preheat_end_time[HOTEND_INDEX] = 0; - } - #else - #define is_preheating(n) (false) - #endif - - #if ENABLED(FILAMENT_WIDTH_SENSOR) - static float analog2widthFil(); // Convert raw Filament Width to millimeters - static int widthFil_to_size_ratio(); // Convert raw Filament Width to an extrusion ratio - #endif - - - //high level conversion routines, for use outside of temperature.cpp - //inline so that there is no performance decrease. - //deg=degreeCelsius - - static float degHotend(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - return current_temperature[HOTEND_INDEX]; - } - static float degBed() { return current_temperature_bed; } - - #if ENABLED(SHOW_TEMP_ADC_VALUES) - static float rawHotendTemp(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - return current_temperature_raw[HOTEND_INDEX]; - } - static float rawBedTemp() { return current_temperature_bed_raw; } - #endif - - static float degTargetHotend(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - return target_temperature[HOTEND_INDEX]; - } - static float degTargetBed() { return target_temperature_bed; } - - #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 - static void start_watching_heater(uint8_t e = 0); - #endif - - #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 - static void start_watching_bed(); - #endif - - static void setTargetHotend(const float& celsius, uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - #ifdef MILLISECONDS_PREHEAT_TIME - if (celsius == 0.0f) - reset_preheat_time(HOTEND_INDEX); - else if (target_temperature[HOTEND_INDEX] == 0.0f) - start_preheat_time(HOTEND_INDEX); - #endif - target_temperature[HOTEND_INDEX] = celsius; - #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 - start_watching_heater(HOTEND_INDEX); - #endif - } - - static void setTargetBed(const float& celsius) { - target_temperature_bed = celsius; - #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 - start_watching_bed(); - #endif - } - - static bool isHeatingHotend(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - return target_temperature[HOTEND_INDEX] > current_temperature[HOTEND_INDEX]; - } - static bool isHeatingBed() { return target_temperature_bed > current_temperature_bed; } - - static bool isCoolingHotend(uint8_t e) { - #if HOTENDS == 1 - UNUSED(e); - #endif - return target_temperature[HOTEND_INDEX] < current_temperature[HOTEND_INDEX]; - } - static bool isCoolingBed() { return target_temperature_bed < current_temperature_bed; } - - /** - * The software PWM power for a heater - */ - static int getHeaterPower(int heater); - - /** - * Switch off all heaters, set all target temperatures to 0 - */ - static void disable_all_heaters(); - - /** - * Perform auto-tuning for hotend or bed in response to M303 - */ - #if HAS_PID_HEATING - static void PID_autotune(float temp, int hotend, int ncycles, bool set_result=false); - #endif - - /** - * Update the temp manager when PID values change - */ - static void updatePID(); - - static void autotempShutdown() { - #if ENABLED(AUTOTEMP) - if (planner.autotemp_enabled) { - planner.autotemp_enabled = false; - if (degTargetHotend(EXTRUDER_IDX) > planner.autotemp_min) - setTargetHotend(0, EXTRUDER_IDX); - } - #endif - } - - #if ENABLED(BABYSTEPPING) - - static void babystep_axis(AxisEnum axis, int distance) { - #if ENABLED(COREXY) || ENABLED(COREXZ) || ENABLED(COREYZ) - #if ENABLED(BABYSTEP_XY) - switch (axis) { - case CORE_AXIS_1: // X on CoreXY and CoreXZ, Y on CoreYZ - babystepsTodo[CORE_AXIS_1] += distance * 2; - babystepsTodo[CORE_AXIS_2] += distance * 2; - break; - case CORE_AXIS_2: // Y on CoreXY, Z on CoreXZ and CoreYZ - babystepsTodo[CORE_AXIS_1] += distance * 2; - babystepsTodo[CORE_AXIS_2] -= distance * 2; - break; - case NORMAL_AXIS: // Z on CoreXY, Y on CoreXZ, X on CoreYZ - babystepsTodo[NORMAL_AXIS] += distance; - break; - } - #elif ENABLED(COREXZ) || ENABLED(COREYZ) - // Only Z stepping needs to be handled here - babystepsTodo[CORE_AXIS_1] += distance * 2; - babystepsTodo[CORE_AXIS_2] -= distance * 2; - #else - babystepsTodo[Z_AXIS] += distance; - #endif - #else - babystepsTodo[axis] += distance; - #endif - } - - #endif // BABYSTEPPING - - private: - - static void set_current_temp_raw(); - - static void updateTemperaturesFromRawValues(); - - #if ENABLED(HEATER_0_USES_MAX6675) - static int read_max6675(); - #endif - - static void checkExtruderAutoFans(); - - static float get_pid_output(int e); - - #if ENABLED(PIDTEMPBED) - static float get_pid_output_bed(); - #endif - - static void _temp_error(int e, const char* serial_msg, const char* lcd_msg); - static void min_temp_error(uint8_t e); - static void max_temp_error(uint8_t e); - - #if ENABLED(THERMAL_PROTECTION_HOTENDS) || HAS_THERMALLY_PROTECTED_BED - - typedef enum TRState { TRInactive, TRFirstHeating, TRStable, TRRunaway } TRstate; - - static void thermal_runaway_protection(TRState* state, millis_t* timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc); - - #if ENABLED(THERMAL_PROTECTION_HOTENDS) - static TRState thermal_runaway_state_machine[HOTENDS]; - static millis_t thermal_runaway_timer[HOTENDS]; - #endif - - #if HAS_THERMALLY_PROTECTED_BED - static TRState thermal_runaway_bed_state_machine; - static millis_t thermal_runaway_bed_timer; - #endif - - #endif // THERMAL_PROTECTION - -}; - -extern Temperature thermalManager; - -#endif // TEMPERATURE_H diff --git a/lib/Marlin/thermistornames.h b/lib/Marlin/thermistornames.h deleted file mode 100644 index 64829ce..0000000 --- a/lib/Marlin/thermistornames.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#undef THERMISTOR_NAME - -// Thermcouples -#if THERMISTOR_ID == -3 - #define THERMISTOR_NAME "MAX31855" -#elif THERMISTOR_ID == -2 - #define THERMISTOR_NAME "MAX6675" -#elif THERMISTOR_ID == -1 - #define THERMISTOR_NAME "AD595" - -// Standard thermistors -#elif THERMISTOR_ID == 1 - #define THERMISTOR_NAME "EPCOS 100K" -#elif THERMISTOR_ID == 2 - #define THERMISTOR_NAME "ATC 204GT-2" -#elif THERMISTOR_ID == 3 - #define THERMISTOR_NAME "Mendel-parts" -#elif THERMISTOR_ID == 4 - #define THERMISTOR_NAME "Generic 10K" -#elif THERMISTOR_ID == 5 - #define THERMISTOR_NAME "ATC 104GT-2" -#elif THERMISTOR_ID == 6 - #define THERMISTOR_NAME "EPCOS (alt)" -#elif THERMISTOR_ID == 7 - #define THERMISTOR_NAME "HW 104LAG" -#elif THERMISTOR_ID == 71 - #define THERMISTOR_NAME "HW 104LAF" -#elif THERMISTOR_ID == 8 - #define THERMISTOR_NAME "E3104FXT" -#elif THERMISTOR_ID == 9 - #define THERMISTOR_NAME "GE AL03006" -#elif THERMISTOR_ID == 10 - #define THERMISTOR_NAME "RS 198-961" -#elif THERMISTOR_ID == 11 - #define THERMISTOR_NAME "1% beta 3950" -#elif THERMISTOR_ID == 12 - #define THERMISTOR_NAME "E3104FXT (alt)" -#elif THERMISTOR_ID == 13 - #define THERMISTOR_NAME "Hisens 3950" -#elif THERMISTOR_ID == 20 - #define THERMISTOR_NAME "PT100 UltiMB" -#elif THERMISTOR_ID == 60 - #define THERMISTOR_NAME "Makers Tool" -#elif THERMISTOR_ID == 70 - #define THERMISTOR_NAME "Hephestos 2" - -// Modified thermistors -#elif THERMISTOR_ID == 51 - #define THERMISTOR_NAME "EPCOS 1K" -#elif THERMISTOR_ID == 52 - #define THERMISTOR_NAME "ATC204GT-2 1K" -#elif THERMISTOR_ID == 55 - #define THERMISTOR_NAME "ATC104GT-2 1K" -#elif THERMISTOR_ID == 1047 - #define THERMISTOR_NAME "PT1000 4K7" -#elif THERMISTOR_ID == 1010 - #define THERMISTOR_NAME "PT1000 1K" -#elif THERMISTOR_ID == 147 - #define THERMISTOR_NAME "PT100 4K7" -#elif THERMISTOR_ID == 110 - #define THERMISTOR_NAME "PT100 1K" - -// High Temperature thermistors -#elif THERMISTOR_ID == 66 - #define THERMISTOR_NAME "Dyze 4.7M" - -// Dummies for dev testing -#elif THERMISTOR_ID == 998 - #define THERMISTOR_NAME "Dummy 1" -#elif THERMISTOR_ID == 999 - #define THERMISTOR_NAME "Dummy 2" - -#endif // THERMISTOR_ID diff --git a/lib/Marlin/thermistortables.h b/lib/Marlin/thermistortables.h deleted file mode 100644 index 7980b72..0000000 --- a/lib/Marlin/thermistortables.h +++ /dev/null @@ -1,1323 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef THERMISTORTABLES_H_ -#define THERMISTORTABLES_H_ - -#include "Marlin.h" -#include "macros.h" - -#define OVERSAMPLENR 16 - -#define ANY_THERMISTOR_IS(n) (THERMISTORHEATER_0 == n || THERMISTORHEATER_1 == n || THERMISTORHEATER_2 == n || THERMISTORHEATER_3 == n || THERMISTORBED == n) - -#if ANY_THERMISTOR_IS(1) // 100k bed thermistor -const short temptable_1[][2] PROGMEM = { - { 23 * OVERSAMPLENR, 300 }, - { 25 * OVERSAMPLENR, 295 }, - { 27 * OVERSAMPLENR, 290 }, - { 28 * OVERSAMPLENR, 285 }, - { 31 * OVERSAMPLENR, 280 }, - { 33 * OVERSAMPLENR, 275 }, - { 35 * OVERSAMPLENR, 270 }, - { 38 * OVERSAMPLENR, 265 }, - { 41 * OVERSAMPLENR, 260 }, - { 44 * OVERSAMPLENR, 255 }, - { 48 * OVERSAMPLENR, 250 }, - { 52 * OVERSAMPLENR, 245 }, - { 56 * OVERSAMPLENR, 240 }, - { 61 * OVERSAMPLENR, 235 }, - { 66 * OVERSAMPLENR, 230 }, - { 71 * OVERSAMPLENR, 225 }, - { 78 * OVERSAMPLENR, 220 }, - { 84 * OVERSAMPLENR, 215 }, - { 92 * OVERSAMPLENR, 210 }, - { 100 * OVERSAMPLENR, 205 }, - { 109 * OVERSAMPLENR, 200 }, - { 120 * OVERSAMPLENR, 195 }, - { 131 * OVERSAMPLENR, 190 }, - { 143 * OVERSAMPLENR, 185 }, - { 156 * OVERSAMPLENR, 180 }, - { 171 * OVERSAMPLENR, 175 }, - { 187 * OVERSAMPLENR, 170 }, - { 205 * OVERSAMPLENR, 165 }, - { 224 * OVERSAMPLENR, 160 }, - { 245 * OVERSAMPLENR, 155 }, - { 268 * OVERSAMPLENR, 150 }, - { 293 * OVERSAMPLENR, 145 }, - { 320 * OVERSAMPLENR, 140 }, - { 348 * OVERSAMPLENR, 135 }, - { 379 * OVERSAMPLENR, 130 }, - { 411 * OVERSAMPLENR, 125 }, - { 445 * OVERSAMPLENR, 120 }, - { 480 * OVERSAMPLENR, 115 }, - { 516 * OVERSAMPLENR, 110 }, - { 553 * OVERSAMPLENR, 105 }, - { 591 * OVERSAMPLENR, 100 }, - { 628 * OVERSAMPLENR, 95 }, - { 665 * OVERSAMPLENR, 90 }, - { 702 * OVERSAMPLENR, 85 }, - { 737 * OVERSAMPLENR, 80 }, - { 770 * OVERSAMPLENR, 75 }, - { 801 * OVERSAMPLENR, 70 }, - { 830 * OVERSAMPLENR, 65 }, - { 857 * OVERSAMPLENR, 60 }, - { 881 * OVERSAMPLENR, 55 }, - { 903 * OVERSAMPLENR, 50 }, - { 922 * OVERSAMPLENR, 45 }, - { 939 * OVERSAMPLENR, 40 }, - { 954 * OVERSAMPLENR, 35 }, - { 966 * OVERSAMPLENR, 30 }, - { 977 * OVERSAMPLENR, 25 }, - { 985 * OVERSAMPLENR, 20 }, - { 993 * OVERSAMPLENR, 15 }, - { 999 * OVERSAMPLENR, 10 }, - { 1004 * OVERSAMPLENR, 5 }, - { 1008 * OVERSAMPLENR, 0 } // safety -}; -#endif - -#if ANY_THERMISTOR_IS(2) // 200k bed thermistor -// 200k ATC Semitec 204GT-2 -// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf -// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance -const short temptable_2[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 848 }, - { 30 * OVERSAMPLENR, 300 }, // top rating 300C - { 34 * OVERSAMPLENR, 290 }, - { 39 * OVERSAMPLENR, 280 }, - { 46 * OVERSAMPLENR, 270 }, - { 53 * OVERSAMPLENR, 260 }, - { 63 * OVERSAMPLENR, 250 }, - { 74 * OVERSAMPLENR, 240 }, - { 87 * OVERSAMPLENR, 230 }, - { 104 * OVERSAMPLENR, 220 }, - { 124 * OVERSAMPLENR, 210 }, - { 148 * OVERSAMPLENR, 200 }, - { 176 * OVERSAMPLENR, 190 }, - { 211 * OVERSAMPLENR, 180 }, - { 252 * OVERSAMPLENR, 170 }, - { 301 * OVERSAMPLENR, 160 }, - { 357 * OVERSAMPLENR, 150 }, - { 420 * OVERSAMPLENR, 140 }, - { 489 * OVERSAMPLENR, 130 }, - { 562 * OVERSAMPLENR, 120 }, - { 636 * OVERSAMPLENR, 110 }, - { 708 * OVERSAMPLENR, 100 }, - { 775 * OVERSAMPLENR, 90 }, - { 835 * OVERSAMPLENR, 80 }, - { 884 * OVERSAMPLENR, 70 }, - { 924 * OVERSAMPLENR, 60 }, - { 955 * OVERSAMPLENR, 50 }, - { 977 * OVERSAMPLENR, 40 }, - { 993 * OVERSAMPLENR, 30 }, - { 1004 * OVERSAMPLENR, 20 }, - { 1012 * OVERSAMPLENR, 10 }, - { 1016 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(3) // mendel-parts -const short temptable_3[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 864 }, - { 21 * OVERSAMPLENR, 300 }, - { 25 * OVERSAMPLENR, 290 }, - { 29 * OVERSAMPLENR, 280 }, - { 33 * OVERSAMPLENR, 270 }, - { 39 * OVERSAMPLENR, 260 }, - { 46 * OVERSAMPLENR, 250 }, - { 54 * OVERSAMPLENR, 240 }, - { 64 * OVERSAMPLENR, 230 }, - { 75 * OVERSAMPLENR, 220 }, - { 90 * OVERSAMPLENR, 210 }, - { 107 * OVERSAMPLENR, 200 }, - { 128 * OVERSAMPLENR, 190 }, - { 154 * OVERSAMPLENR, 180 }, - { 184 * OVERSAMPLENR, 170 }, - { 221 * OVERSAMPLENR, 160 }, - { 265 * OVERSAMPLENR, 150 }, - { 316 * OVERSAMPLENR, 140 }, - { 375 * OVERSAMPLENR, 130 }, - { 441 * OVERSAMPLENR, 120 }, - { 513 * OVERSAMPLENR, 110 }, - { 588 * OVERSAMPLENR, 100 }, - { 734 * OVERSAMPLENR, 80 }, - { 856 * OVERSAMPLENR, 60 }, - { 938 * OVERSAMPLENR, 40 }, - { 986 * OVERSAMPLENR, 20 }, - { 1008 * OVERSAMPLENR, 0 }, - { 1018 * OVERSAMPLENR, -20 } -}; -#endif - -#if ANY_THERMISTOR_IS(4) // 10k thermistor -const short temptable_4[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 430 }, - { 54 * OVERSAMPLENR, 137 }, - { 107 * OVERSAMPLENR, 107 }, - { 160 * OVERSAMPLENR, 91 }, - { 213 * OVERSAMPLENR, 80 }, - { 266 * OVERSAMPLENR, 71 }, - { 319 * OVERSAMPLENR, 64 }, - { 372 * OVERSAMPLENR, 57 }, - { 425 * OVERSAMPLENR, 51 }, - { 478 * OVERSAMPLENR, 46 }, - { 531 * OVERSAMPLENR, 41 }, - { 584 * OVERSAMPLENR, 35 }, - { 637 * OVERSAMPLENR, 30 }, - { 690 * OVERSAMPLENR, 25 }, - { 743 * OVERSAMPLENR, 20 }, - { 796 * OVERSAMPLENR, 14 }, - { 849 * OVERSAMPLENR, 7 }, - { 902 * OVERSAMPLENR, 0 }, - { 955 * OVERSAMPLENR, -11 }, - { 1008 * OVERSAMPLENR, -35 } -}; -#endif - -#if ANY_THERMISTOR_IS(5) // 100k ParCan thermistor (104GT-2) -// ATC Semitec 104GT-2 (Used in ParCan) -// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf -// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance -const short temptable_5[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 713 }, - { 17 * OVERSAMPLENR, 300 }, // top rating 300C - { 20 * OVERSAMPLENR, 290 }, - { 23 * OVERSAMPLENR, 280 }, - { 27 * OVERSAMPLENR, 270 }, - { 31 * OVERSAMPLENR, 260 }, - { 37 * OVERSAMPLENR, 250 }, - { 43 * OVERSAMPLENR, 240 }, - { 51 * OVERSAMPLENR, 230 }, - { 61 * OVERSAMPLENR, 220 }, - { 73 * OVERSAMPLENR, 210 }, - { 87 * OVERSAMPLENR, 200 }, - { 106 * OVERSAMPLENR, 190 }, - { 128 * OVERSAMPLENR, 180 }, - { 155 * OVERSAMPLENR, 170 }, - { 189 * OVERSAMPLENR, 160 }, - { 230 * OVERSAMPLENR, 150 }, - { 278 * OVERSAMPLENR, 140 }, - { 336 * OVERSAMPLENR, 130 }, - { 402 * OVERSAMPLENR, 120 }, - { 476 * OVERSAMPLENR, 110 }, - { 554 * OVERSAMPLENR, 100 }, - { 635 * OVERSAMPLENR, 90 }, - { 713 * OVERSAMPLENR, 80 }, - { 784 * OVERSAMPLENR, 70 }, - { 846 * OVERSAMPLENR, 60 }, - { 897 * OVERSAMPLENR, 50 }, - { 937 * OVERSAMPLENR, 40 }, - { 966 * OVERSAMPLENR, 30 }, - { 986 * OVERSAMPLENR, 20 }, - { 1000 * OVERSAMPLENR, 10 }, - { 1010 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(6) // 100k Epcos thermistor -const short temptable_6[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 350 }, - { 28 * OVERSAMPLENR, 250 }, // top rating 250C - { 31 * OVERSAMPLENR, 245 }, - { 35 * OVERSAMPLENR, 240 }, - { 39 * OVERSAMPLENR, 235 }, - { 42 * OVERSAMPLENR, 230 }, - { 44 * OVERSAMPLENR, 225 }, - { 49 * OVERSAMPLENR, 220 }, - { 53 * OVERSAMPLENR, 215 }, - { 62 * OVERSAMPLENR, 210 }, - { 71 * OVERSAMPLENR, 205 }, // fitted graphically - { 78 * OVERSAMPLENR, 200 }, // fitted graphically - { 94 * OVERSAMPLENR, 190 }, - { 102 * OVERSAMPLENR, 185 }, - { 116 * OVERSAMPLENR, 170 }, - { 143 * OVERSAMPLENR, 160 }, - { 183 * OVERSAMPLENR, 150 }, - { 223 * OVERSAMPLENR, 140 }, - { 270 * OVERSAMPLENR, 130 }, - { 318 * OVERSAMPLENR, 120 }, - { 383 * OVERSAMPLENR, 110 }, - { 413 * OVERSAMPLENR, 105 }, - { 439 * OVERSAMPLENR, 100 }, - { 484 * OVERSAMPLENR, 95 }, - { 513 * OVERSAMPLENR, 90 }, - { 607 * OVERSAMPLENR, 80 }, - { 664 * OVERSAMPLENR, 70 }, - { 781 * OVERSAMPLENR, 60 }, - { 810 * OVERSAMPLENR, 55 }, - { 849 * OVERSAMPLENR, 50 }, - { 914 * OVERSAMPLENR, 45 }, - { 914 * OVERSAMPLENR, 40 }, - { 935 * OVERSAMPLENR, 35 }, - { 954 * OVERSAMPLENR, 30 }, - { 970 * OVERSAMPLENR, 25 }, - { 978 * OVERSAMPLENR, 22 }, - { 1008 * OVERSAMPLENR, 3 }, - { 1023 * OVERSAMPLENR, 0 } // to allow internal 0 degrees C -}; -#endif - -#if ANY_THERMISTOR_IS(7) // 100k Honeywell 135-104LAG-J01 -const short temptable_7[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 941 }, - { 19 * OVERSAMPLENR, 362 }, - { 37 * OVERSAMPLENR, 299 }, // top rating 300C - { 55 * OVERSAMPLENR, 266 }, - { 73 * OVERSAMPLENR, 245 }, - { 91 * OVERSAMPLENR, 229 }, - { 109 * OVERSAMPLENR, 216 }, - { 127 * OVERSAMPLENR, 206 }, - { 145 * OVERSAMPLENR, 197 }, - { 163 * OVERSAMPLENR, 190 }, - { 181 * OVERSAMPLENR, 183 }, - { 199 * OVERSAMPLENR, 177 }, - { 217 * OVERSAMPLENR, 171 }, - { 235 * OVERSAMPLENR, 166 }, - { 253 * OVERSAMPLENR, 162 }, - { 271 * OVERSAMPLENR, 157 }, - { 289 * OVERSAMPLENR, 153 }, - { 307 * OVERSAMPLENR, 149 }, - { 325 * OVERSAMPLENR, 146 }, - { 343 * OVERSAMPLENR, 142 }, - { 361 * OVERSAMPLENR, 139 }, - { 379 * OVERSAMPLENR, 135 }, - { 397 * OVERSAMPLENR, 132 }, - { 415 * OVERSAMPLENR, 129 }, - { 433 * OVERSAMPLENR, 126 }, - { 451 * OVERSAMPLENR, 123 }, - { 469 * OVERSAMPLENR, 121 }, - { 487 * OVERSAMPLENR, 118 }, - { 505 * OVERSAMPLENR, 115 }, - { 523 * OVERSAMPLENR, 112 }, - { 541 * OVERSAMPLENR, 110 }, - { 559 * OVERSAMPLENR, 107 }, - { 577 * OVERSAMPLENR, 105 }, - { 595 * OVERSAMPLENR, 102 }, - { 613 * OVERSAMPLENR, 99 }, - { 631 * OVERSAMPLENR, 97 }, - { 649 * OVERSAMPLENR, 94 }, - { 667 * OVERSAMPLENR, 92 }, - { 685 * OVERSAMPLENR, 89 }, - { 703 * OVERSAMPLENR, 86 }, - { 721 * OVERSAMPLENR, 84 }, - { 739 * OVERSAMPLENR, 81 }, - { 757 * OVERSAMPLENR, 78 }, - { 775 * OVERSAMPLENR, 75 }, - { 793 * OVERSAMPLENR, 72 }, - { 811 * OVERSAMPLENR, 69 }, - { 829 * OVERSAMPLENR, 66 }, - { 847 * OVERSAMPLENR, 62 }, - { 865 * OVERSAMPLENR, 59 }, - { 883 * OVERSAMPLENR, 55 }, - { 901 * OVERSAMPLENR, 51 }, - { 919 * OVERSAMPLENR, 46 }, - { 937 * OVERSAMPLENR, 41 }, - { 955 * OVERSAMPLENR, 35 }, - { 973 * OVERSAMPLENR, 27 }, - { 991 * OVERSAMPLENR, 17 }, - { 1009 * OVERSAMPLENR, 1 }, - { 1023 * OVERSAMPLENR, 0 } // to allow internal 0 degrees C -}; -#endif - -#if ANY_THERMISTOR_IS(71) // 100k Honeywell 135-104LAF-J01 -// R0 = 100000 Ohm -// T0 = 25 °C -// Beta = 3974 -// R1 = 0 Ohm -// R2 = 4700 Ohm -const short temptable_71[][2] PROGMEM = { - { 35 * OVERSAMPLENR, 300 }, - { 51 * OVERSAMPLENR, 270 }, - { 54 * OVERSAMPLENR, 265 }, - { 58 * OVERSAMPLENR, 260 }, - { 59 * OVERSAMPLENR, 258 }, - { 61 * OVERSAMPLENR, 256 }, - { 63 * OVERSAMPLENR, 254 }, - { 64 * OVERSAMPLENR, 252 }, - { 66 * OVERSAMPLENR, 250 }, - { 67 * OVERSAMPLENR, 249 }, - { 68 * OVERSAMPLENR, 248 }, - { 69 * OVERSAMPLENR, 247 }, - { 70 * OVERSAMPLENR, 246 }, - { 71 * OVERSAMPLENR, 245 }, - { 72 * OVERSAMPLENR, 244 }, - { 73 * OVERSAMPLENR, 243 }, - { 74 * OVERSAMPLENR, 242 }, - { 75 * OVERSAMPLENR, 241 }, - { 76 * OVERSAMPLENR, 240 }, - { 77 * OVERSAMPLENR, 239 }, - { 78 * OVERSAMPLENR, 238 }, - { 79 * OVERSAMPLENR, 237 }, - { 80 * OVERSAMPLENR, 236 }, - { 81 * OVERSAMPLENR, 235 }, - { 82 * OVERSAMPLENR, 234 }, - { 84 * OVERSAMPLENR, 233 }, - { 85 * OVERSAMPLENR, 232 }, - { 86 * OVERSAMPLENR, 231 }, - { 87 * OVERSAMPLENR, 230 }, - { 89 * OVERSAMPLENR, 229 }, - { 90 * OVERSAMPLENR, 228 }, - { 91 * OVERSAMPLENR, 227 }, - { 92 * OVERSAMPLENR, 226 }, - { 94 * OVERSAMPLENR, 225 }, - { 95 * OVERSAMPLENR, 224 }, - { 97 * OVERSAMPLENR, 223 }, - { 98 * OVERSAMPLENR, 222 }, - { 99 * OVERSAMPLENR, 221 }, - { 101 * OVERSAMPLENR, 220 }, - { 102 * OVERSAMPLENR, 219 }, - { 104 * OVERSAMPLENR, 218 }, - { 106 * OVERSAMPLENR, 217 }, - { 107 * OVERSAMPLENR, 216 }, - { 109 * OVERSAMPLENR, 215 }, - { 110 * OVERSAMPLENR, 214 }, - { 112 * OVERSAMPLENR, 213 }, - { 114 * OVERSAMPLENR, 212 }, - { 115 * OVERSAMPLENR, 211 }, - { 117 * OVERSAMPLENR, 210 }, - { 119 * OVERSAMPLENR, 209 }, - { 121 * OVERSAMPLENR, 208 }, - { 123 * OVERSAMPLENR, 207 }, - { 125 * OVERSAMPLENR, 206 }, - { 126 * OVERSAMPLENR, 205 }, - { 128 * OVERSAMPLENR, 204 }, - { 130 * OVERSAMPLENR, 203 }, - { 132 * OVERSAMPLENR, 202 }, - { 134 * OVERSAMPLENR, 201 }, - { 136 * OVERSAMPLENR, 200 }, - { 139 * OVERSAMPLENR, 199 }, - { 141 * OVERSAMPLENR, 198 }, - { 143 * OVERSAMPLENR, 197 }, - { 145 * OVERSAMPLENR, 196 }, - { 147 * OVERSAMPLENR, 195 }, - { 150 * OVERSAMPLENR, 194 }, - { 152 * OVERSAMPLENR, 193 }, - { 154 * OVERSAMPLENR, 192 }, - { 157 * OVERSAMPLENR, 191 }, - { 159 * OVERSAMPLENR, 190 }, - { 162 * OVERSAMPLENR, 189 }, - { 164 * OVERSAMPLENR, 188 }, - { 167 * OVERSAMPLENR, 187 }, - { 170 * OVERSAMPLENR, 186 }, - { 172 * OVERSAMPLENR, 185 }, - { 175 * OVERSAMPLENR, 184 }, - { 178 * OVERSAMPLENR, 183 }, - { 181 * OVERSAMPLENR, 182 }, - { 184 * OVERSAMPLENR, 181 }, - { 187 * OVERSAMPLENR, 180 }, - { 190 * OVERSAMPLENR, 179 }, - { 193 * OVERSAMPLENR, 178 }, - { 196 * OVERSAMPLENR, 177 }, - { 199 * OVERSAMPLENR, 176 }, - { 202 * OVERSAMPLENR, 175 }, - { 205 * OVERSAMPLENR, 174 }, - { 208 * OVERSAMPLENR, 173 }, - { 212 * OVERSAMPLENR, 172 }, - { 215 * OVERSAMPLENR, 171 }, - { 219 * OVERSAMPLENR, 170 }, - { 237 * OVERSAMPLENR, 165 }, - { 256 * OVERSAMPLENR, 160 }, - { 300 * OVERSAMPLENR, 150 }, - { 351 * OVERSAMPLENR, 140 }, - { 470 * OVERSAMPLENR, 120 }, - { 504 * OVERSAMPLENR, 115 }, - { 538 * OVERSAMPLENR, 110 }, - { 552 * OVERSAMPLENR, 108 }, - { 566 * OVERSAMPLENR, 106 }, - { 580 * OVERSAMPLENR, 104 }, - { 594 * OVERSAMPLENR, 102 }, - { 608 * OVERSAMPLENR, 100 }, - { 622 * OVERSAMPLENR, 98 }, - { 636 * OVERSAMPLENR, 96 }, - { 650 * OVERSAMPLENR, 94 }, - { 664 * OVERSAMPLENR, 92 }, - { 678 * OVERSAMPLENR, 90 }, - { 712 * OVERSAMPLENR, 85 }, - { 745 * OVERSAMPLENR, 80 }, - { 758 * OVERSAMPLENR, 78 }, - { 770 * OVERSAMPLENR, 76 }, - { 783 * OVERSAMPLENR, 74 }, - { 795 * OVERSAMPLENR, 72 }, - { 806 * OVERSAMPLENR, 70 }, - { 818 * OVERSAMPLENR, 68 }, - { 829 * OVERSAMPLENR, 66 }, - { 840 * OVERSAMPLENR, 64 }, - { 850 * OVERSAMPLENR, 62 }, - { 860 * OVERSAMPLENR, 60 }, - { 870 * OVERSAMPLENR, 58 }, - { 879 * OVERSAMPLENR, 56 }, - { 888 * OVERSAMPLENR, 54 }, - { 897 * OVERSAMPLENR, 52 }, - { 905 * OVERSAMPLENR, 50 }, - { 924 * OVERSAMPLENR, 45 }, - { 940 * OVERSAMPLENR, 40 }, - { 955 * OVERSAMPLENR, 35 }, - { 967 * OVERSAMPLENR, 30 }, - { 970 * OVERSAMPLENR, 29 }, - { 972 * OVERSAMPLENR, 28 }, - { 974 * OVERSAMPLENR, 27 }, - { 976 * OVERSAMPLENR, 26 }, - { 978 * OVERSAMPLENR, 25 }, - { 980 * OVERSAMPLENR, 24 }, - { 982 * OVERSAMPLENR, 23 }, - { 984 * OVERSAMPLENR, 22 }, - { 985 * OVERSAMPLENR, 21 }, - { 987 * OVERSAMPLENR, 20 }, - { 995 * OVERSAMPLENR, 15 }, - { 1001 * OVERSAMPLENR, 10 }, - { 1006 * OVERSAMPLENR, 5 }, - { 1010 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(8) -// 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) -const short temptable_8[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 704 }, - { 54 * OVERSAMPLENR, 216 }, - { 107 * OVERSAMPLENR, 175 }, - { 160 * OVERSAMPLENR, 152 }, - { 213 * OVERSAMPLENR, 137 }, - { 266 * OVERSAMPLENR, 125 }, - { 319 * OVERSAMPLENR, 115 }, - { 372 * OVERSAMPLENR, 106 }, - { 425 * OVERSAMPLENR, 99 }, - { 478 * OVERSAMPLENR, 91 }, - { 531 * OVERSAMPLENR, 85 }, - { 584 * OVERSAMPLENR, 78 }, - { 637 * OVERSAMPLENR, 71 }, - { 690 * OVERSAMPLENR, 65 }, - { 743 * OVERSAMPLENR, 58 }, - { 796 * OVERSAMPLENR, 50 }, - { 849 * OVERSAMPLENR, 42 }, - { 902 * OVERSAMPLENR, 31 }, - { 955 * OVERSAMPLENR, 17 }, - { 1008 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(9) -// 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) -const short temptable_9[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 936 }, - { 36 * OVERSAMPLENR, 300 }, - { 71 * OVERSAMPLENR, 246 }, - { 106 * OVERSAMPLENR, 218 }, - { 141 * OVERSAMPLENR, 199 }, - { 176 * OVERSAMPLENR, 185 }, - { 211 * OVERSAMPLENR, 173 }, - { 246 * OVERSAMPLENR, 163 }, - { 281 * OVERSAMPLENR, 155 }, - { 316 * OVERSAMPLENR, 147 }, - { 351 * OVERSAMPLENR, 140 }, - { 386 * OVERSAMPLENR, 134 }, - { 421 * OVERSAMPLENR, 128 }, - { 456 * OVERSAMPLENR, 122 }, - { 491 * OVERSAMPLENR, 117 }, - { 526 * OVERSAMPLENR, 112 }, - { 561 * OVERSAMPLENR, 107 }, - { 596 * OVERSAMPLENR, 102 }, - { 631 * OVERSAMPLENR, 97 }, - { 666 * OVERSAMPLENR, 92 }, - { 701 * OVERSAMPLENR, 87 }, - { 736 * OVERSAMPLENR, 81 }, - { 771 * OVERSAMPLENR, 76 }, - { 806 * OVERSAMPLENR, 70 }, - { 841 * OVERSAMPLENR, 63 }, - { 876 * OVERSAMPLENR, 56 }, - { 911 * OVERSAMPLENR, 48 }, - { 946 * OVERSAMPLENR, 38 }, - { 981 * OVERSAMPLENR, 23 }, - { 1005 * OVERSAMPLENR, 5 }, - { 1016 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(10) -// 100k RS thermistor 198-961 (4.7k pullup) -const short temptable_10[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 929 }, - { 36 * OVERSAMPLENR, 299 }, - { 71 * OVERSAMPLENR, 246 }, - { 106 * OVERSAMPLENR, 217 }, - { 141 * OVERSAMPLENR, 198 }, - { 176 * OVERSAMPLENR, 184 }, - { 211 * OVERSAMPLENR, 173 }, - { 246 * OVERSAMPLENR, 163 }, - { 281 * OVERSAMPLENR, 154 }, - { 316 * OVERSAMPLENR, 147 }, - { 351 * OVERSAMPLENR, 140 }, - { 386 * OVERSAMPLENR, 134 }, - { 421 * OVERSAMPLENR, 128 }, - { 456 * OVERSAMPLENR, 122 }, - { 491 * OVERSAMPLENR, 117 }, - { 526 * OVERSAMPLENR, 112 }, - { 561 * OVERSAMPLENR, 107 }, - { 596 * OVERSAMPLENR, 102 }, - { 631 * OVERSAMPLENR, 97 }, - { 666 * OVERSAMPLENR, 91 }, - { 701 * OVERSAMPLENR, 86 }, - { 736 * OVERSAMPLENR, 81 }, - { 771 * OVERSAMPLENR, 76 }, - { 806 * OVERSAMPLENR, 70 }, - { 841 * OVERSAMPLENR, 63 }, - { 876 * OVERSAMPLENR, 56 }, - { 911 * OVERSAMPLENR, 48 }, - { 946 * OVERSAMPLENR, 38 }, - { 981 * OVERSAMPLENR, 23 }, - { 1005 * OVERSAMPLENR, 5 }, - { 1016 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(11) -// QU-BD silicone bed QWG-104F-3950 thermistor -const short temptable_11[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 938 }, - { 31 * OVERSAMPLENR, 314 }, - { 41 * OVERSAMPLENR, 290 }, - { 51 * OVERSAMPLENR, 272 }, - { 61 * OVERSAMPLENR, 258 }, - { 71 * OVERSAMPLENR, 247 }, - { 81 * OVERSAMPLENR, 237 }, - { 91 * OVERSAMPLENR, 229 }, - { 101 * OVERSAMPLENR, 221 }, - { 111 * OVERSAMPLENR, 215 }, - { 121 * OVERSAMPLENR, 209 }, - { 131 * OVERSAMPLENR, 204 }, - { 141 * OVERSAMPLENR, 199 }, - { 151 * OVERSAMPLENR, 195 }, - { 161 * OVERSAMPLENR, 190 }, - { 171 * OVERSAMPLENR, 187 }, - { 181 * OVERSAMPLENR, 183 }, - { 191 * OVERSAMPLENR, 179 }, - { 201 * OVERSAMPLENR, 176 }, - { 221 * OVERSAMPLENR, 170 }, - { 241 * OVERSAMPLENR, 165 }, - { 261 * OVERSAMPLENR, 160 }, - { 281 * OVERSAMPLENR, 155 }, - { 301 * OVERSAMPLENR, 150 }, - { 331 * OVERSAMPLENR, 144 }, - { 361 * OVERSAMPLENR, 139 }, - { 391 * OVERSAMPLENR, 133 }, - { 421 * OVERSAMPLENR, 128 }, - { 451 * OVERSAMPLENR, 123 }, - { 491 * OVERSAMPLENR, 117 }, - { 531 * OVERSAMPLENR, 111 }, - { 571 * OVERSAMPLENR, 105 }, - { 611 * OVERSAMPLENR, 100 }, - { 641 * OVERSAMPLENR, 95 }, - { 681 * OVERSAMPLENR, 90 }, - { 711 * OVERSAMPLENR, 85 }, - { 751 * OVERSAMPLENR, 79 }, - { 791 * OVERSAMPLENR, 72 }, - { 811 * OVERSAMPLENR, 69 }, - { 831 * OVERSAMPLENR, 65 }, - { 871 * OVERSAMPLENR, 57 }, - { 881 * OVERSAMPLENR, 55 }, - { 901 * OVERSAMPLENR, 51 }, - { 921 * OVERSAMPLENR, 45 }, - { 941 * OVERSAMPLENR, 39 }, - { 971 * OVERSAMPLENR, 28 }, - { 981 * OVERSAMPLENR, 23 }, - { 991 * OVERSAMPLENR, 17 }, - { 1001 * OVERSAMPLENR, 9 }, - { 1021 * OVERSAMPLENR, -27 } -}; -#endif - -#if ANY_THERMISTOR_IS(13) -// Hisens thermistor B25/50 =3950 +/-1% -const short temptable_13[][2] PROGMEM = { - { 20.04 * OVERSAMPLENR, 300 }, - { 23.19 * OVERSAMPLENR, 290 }, - { 26.71 * OVERSAMPLENR, 280 }, - { 31.23 * OVERSAMPLENR, 270 }, - { 36.52 * OVERSAMPLENR, 260 }, - { 42.75 * OVERSAMPLENR, 250 }, - { 50.68 * OVERSAMPLENR, 240 }, - { 60.22 * OVERSAMPLENR, 230 }, - { 72.03 * OVERSAMPLENR, 220 }, - { 86.84 * OVERSAMPLENR, 210 }, - { 102.79 * OVERSAMPLENR, 200 }, - { 124.46 * OVERSAMPLENR, 190 }, - { 151.02 * OVERSAMPLENR, 180 }, - { 182.86 * OVERSAMPLENR, 170 }, - { 220.72 * OVERSAMPLENR, 160 }, - { 316.96 * OVERSAMPLENR, 140 }, - { 447.17 * OVERSAMPLENR, 120 }, - { 590.61 * OVERSAMPLENR, 100 }, - { 737.31 * OVERSAMPLENR, 80 }, - { 857.77 * OVERSAMPLENR, 60 }, - { 939.52 * OVERSAMPLENR, 40 }, - { 986.03 * OVERSAMPLENR, 20 }, - { 1008.7 * OVERSAMPLENR, 0 } - -}; -#endif - -#if ANY_THERMISTOR_IS(20) // PT100 with INA826 amp on Ultimaker v2.0 electronics -// The PT100 in the Ultimaker v2.0 electronics has a high sample value for a high temperature. -// This does not match the normal thermistor behaviour so we need to set the following defines -#if (THERMISTORHEATER_0 == 20) - #define HEATER_0_RAW_HI_TEMP 16383 - #define HEATER_0_RAW_LO_TEMP 0 -#endif -#if (THERMISTORHEATER_1 == 20) - #define HEATER_1_RAW_HI_TEMP 16383 - #define HEATER_1_RAW_LO_TEMP 0 -#endif -#if (THERMISTORHEATER_2 == 20) - #define HEATER_2_RAW_HI_TEMP 16383 - #define HEATER_2_RAW_LO_TEMP 0 -#endif -#if (THERMISTORHEATER_3 == 20) - #define HEATER_3_RAW_HI_TEMP 16383 - #define HEATER_3_RAW_LO_TEMP 0 -#endif -#if (THERMISTORBED == 20) - #define HEATER_BED_RAW_HI_TEMP 16383 - #define HEATER_BED_RAW_LO_TEMP 0 -#endif -const short temptable_20[][2] PROGMEM = { - { 0 * OVERSAMPLENR, 0 }, - { 227 * OVERSAMPLENR, 1 }, - { 236 * OVERSAMPLENR, 10 }, - { 245 * OVERSAMPLENR, 20 }, - { 253 * OVERSAMPLENR, 30 }, - { 262 * OVERSAMPLENR, 40 }, - { 270 * OVERSAMPLENR, 50 }, - { 279 * OVERSAMPLENR, 60 }, - { 287 * OVERSAMPLENR, 70 }, - { 295 * OVERSAMPLENR, 80 }, - { 304 * OVERSAMPLENR, 90 }, - { 312 * OVERSAMPLENR, 100 }, - { 320 * OVERSAMPLENR, 110 }, - { 329 * OVERSAMPLENR, 120 }, - { 337 * OVERSAMPLENR, 130 }, - { 345 * OVERSAMPLENR, 140 }, - { 353 * OVERSAMPLENR, 150 }, - { 361 * OVERSAMPLENR, 160 }, - { 369 * OVERSAMPLENR, 170 }, - { 377 * OVERSAMPLENR, 180 }, - { 385 * OVERSAMPLENR, 190 }, - { 393 * OVERSAMPLENR, 200 }, - { 401 * OVERSAMPLENR, 210 }, - { 409 * OVERSAMPLENR, 220 }, - { 417 * OVERSAMPLENR, 230 }, - { 424 * OVERSAMPLENR, 240 }, - { 432 * OVERSAMPLENR, 250 }, - { 440 * OVERSAMPLENR, 260 }, - { 447 * OVERSAMPLENR, 270 }, - { 455 * OVERSAMPLENR, 280 }, - { 463 * OVERSAMPLENR, 290 }, - { 470 * OVERSAMPLENR, 300 }, - { 478 * OVERSAMPLENR, 310 }, - { 485 * OVERSAMPLENR, 320 }, - { 493 * OVERSAMPLENR, 330 }, - { 500 * OVERSAMPLENR, 340 }, - { 507 * OVERSAMPLENR, 350 }, - { 515 * OVERSAMPLENR, 360 }, - { 522 * OVERSAMPLENR, 370 }, - { 529 * OVERSAMPLENR, 380 }, - { 537 * OVERSAMPLENR, 390 }, - { 544 * OVERSAMPLENR, 400 }, - { 614 * OVERSAMPLENR, 500 }, - { 681 * OVERSAMPLENR, 600 }, - { 744 * OVERSAMPLENR, 700 }, - { 805 * OVERSAMPLENR, 800 }, - { 862 * OVERSAMPLENR, 900 }, - { 917 * OVERSAMPLENR, 1000 }, - { 968 * OVERSAMPLENR, 1100 } -}; -#endif - -#if ANY_THERMISTOR_IS(51) -// 100k EPCOS (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) -// Verified by linagee. -// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance -// Advantage: Twice the resolution and better linearity from 150C to 200C -const short temptable_51[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 350 }, - { 190 * OVERSAMPLENR, 250 }, // top rating 250C - { 203 * OVERSAMPLENR, 245 }, - { 217 * OVERSAMPLENR, 240 }, - { 232 * OVERSAMPLENR, 235 }, - { 248 * OVERSAMPLENR, 230 }, - { 265 * OVERSAMPLENR, 225 }, - { 283 * OVERSAMPLENR, 220 }, - { 302 * OVERSAMPLENR, 215 }, - { 322 * OVERSAMPLENR, 210 }, - { 344 * OVERSAMPLENR, 205 }, - { 366 * OVERSAMPLENR, 200 }, - { 390 * OVERSAMPLENR, 195 }, - { 415 * OVERSAMPLENR, 190 }, - { 440 * OVERSAMPLENR, 185 }, - { 467 * OVERSAMPLENR, 180 }, - { 494 * OVERSAMPLENR, 175 }, - { 522 * OVERSAMPLENR, 170 }, - { 551 * OVERSAMPLENR, 165 }, - { 580 * OVERSAMPLENR, 160 }, - { 609 * OVERSAMPLENR, 155 }, - { 638 * OVERSAMPLENR, 150 }, - { 666 * OVERSAMPLENR, 145 }, - { 695 * OVERSAMPLENR, 140 }, - { 722 * OVERSAMPLENR, 135 }, - { 749 * OVERSAMPLENR, 130 }, - { 775 * OVERSAMPLENR, 125 }, - { 800 * OVERSAMPLENR, 120 }, - { 823 * OVERSAMPLENR, 115 }, - { 845 * OVERSAMPLENR, 110 }, - { 865 * OVERSAMPLENR, 105 }, - { 884 * OVERSAMPLENR, 100 }, - { 901 * OVERSAMPLENR, 95 }, - { 917 * OVERSAMPLENR, 90 }, - { 932 * OVERSAMPLENR, 85 }, - { 944 * OVERSAMPLENR, 80 }, - { 956 * OVERSAMPLENR, 75 }, - { 966 * OVERSAMPLENR, 70 }, - { 975 * OVERSAMPLENR, 65 }, - { 982 * OVERSAMPLENR, 60 }, - { 989 * OVERSAMPLENR, 55 }, - { 995 * OVERSAMPLENR, 50 }, - { 1000 * OVERSAMPLENR, 45 }, - { 1004 * OVERSAMPLENR, 40 }, - { 1007 * OVERSAMPLENR, 35 }, - { 1010 * OVERSAMPLENR, 30 }, - { 1013 * OVERSAMPLENR, 25 }, - { 1015 * OVERSAMPLENR, 20 }, - { 1017 * OVERSAMPLENR, 15 }, - { 1018 * OVERSAMPLENR, 10 }, - { 1019 * OVERSAMPLENR, 5 }, - { 1020 * OVERSAMPLENR, 0 }, - { 1021 * OVERSAMPLENR, -5 } -}; -#endif - -#if ANY_THERMISTOR_IS(52) -// 200k ATC Semitec 204GT-2 (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) -// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf -// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance -// Advantage: More resolution and better linearity from 150C to 200C -const short temptable_52[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 500 }, - { 125 * OVERSAMPLENR, 300 }, // top rating 300C - { 142 * OVERSAMPLENR, 290 }, - { 162 * OVERSAMPLENR, 280 }, - { 185 * OVERSAMPLENR, 270 }, - { 211 * OVERSAMPLENR, 260 }, - { 240 * OVERSAMPLENR, 250 }, - { 274 * OVERSAMPLENR, 240 }, - { 312 * OVERSAMPLENR, 230 }, - { 355 * OVERSAMPLENR, 220 }, - { 401 * OVERSAMPLENR, 210 }, - { 452 * OVERSAMPLENR, 200 }, - { 506 * OVERSAMPLENR, 190 }, - { 563 * OVERSAMPLENR, 180 }, - { 620 * OVERSAMPLENR, 170 }, - { 677 * OVERSAMPLENR, 160 }, - { 732 * OVERSAMPLENR, 150 }, - { 783 * OVERSAMPLENR, 140 }, - { 830 * OVERSAMPLENR, 130 }, - { 871 * OVERSAMPLENR, 120 }, - { 906 * OVERSAMPLENR, 110 }, - { 935 * OVERSAMPLENR, 100 }, - { 958 * OVERSAMPLENR, 90 }, - { 976 * OVERSAMPLENR, 80 }, - { 990 * OVERSAMPLENR, 70 }, - { 1000 * OVERSAMPLENR, 60 }, - { 1008 * OVERSAMPLENR, 50 }, - { 1013 * OVERSAMPLENR, 40 }, - { 1017 * OVERSAMPLENR, 30 }, - { 1019 * OVERSAMPLENR, 20 }, - { 1021 * OVERSAMPLENR, 10 }, - { 1022 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(55) -// 100k ATC Semitec 104GT-2 (Used on ParCan) (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) -// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf -// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance -// Advantage: More resolution and better linearity from 150C to 200C -const short temptable_55[][2] PROGMEM = { - { 1 * OVERSAMPLENR, 500 }, - { 76 * OVERSAMPLENR, 300 }, - { 87 * OVERSAMPLENR, 290 }, - { 100 * OVERSAMPLENR, 280 }, - { 114 * OVERSAMPLENR, 270 }, - { 131 * OVERSAMPLENR, 260 }, - { 152 * OVERSAMPLENR, 250 }, - { 175 * OVERSAMPLENR, 240 }, - { 202 * OVERSAMPLENR, 230 }, - { 234 * OVERSAMPLENR, 220 }, - { 271 * OVERSAMPLENR, 210 }, - { 312 * OVERSAMPLENR, 200 }, - { 359 * OVERSAMPLENR, 190 }, - { 411 * OVERSAMPLENR, 180 }, - { 467 * OVERSAMPLENR, 170 }, - { 527 * OVERSAMPLENR, 160 }, - { 590 * OVERSAMPLENR, 150 }, - { 652 * OVERSAMPLENR, 140 }, - { 713 * OVERSAMPLENR, 130 }, - { 770 * OVERSAMPLENR, 120 }, - { 822 * OVERSAMPLENR, 110 }, - { 867 * OVERSAMPLENR, 100 }, - { 905 * OVERSAMPLENR, 90 }, - { 936 * OVERSAMPLENR, 80 }, - { 961 * OVERSAMPLENR, 70 }, - { 979 * OVERSAMPLENR, 60 }, - { 993 * OVERSAMPLENR, 50 }, - { 1003 * OVERSAMPLENR, 40 }, - { 1010 * OVERSAMPLENR, 30 }, - { 1015 * OVERSAMPLENR, 20 }, - { 1018 * OVERSAMPLENR, 10 }, - { 1020 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(60) // Maker's Tool Works Kapton Bed Thermistor -// ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=3950 -// r0: 100000 -// t0: 25 -// r1: 0 (parallel with rTherm) -// r2: 4700 (series with rTherm) -// beta: 3950 -// min adc: 1 at 0.0048828125 V -// max adc: 1023 at 4.9951171875 V -const short temptable_60[][2] PROGMEM = { - { 51 * OVERSAMPLENR, 272 }, - { 61 * OVERSAMPLENR, 258 }, - { 71 * OVERSAMPLENR, 247 }, - { 81 * OVERSAMPLENR, 237 }, - { 91 * OVERSAMPLENR, 229 }, - { 101 * OVERSAMPLENR, 221 }, - { 131 * OVERSAMPLENR, 204 }, - { 161 * OVERSAMPLENR, 190 }, - { 191 * OVERSAMPLENR, 179 }, - { 231 * OVERSAMPLENR, 167 }, - { 271 * OVERSAMPLENR, 157 }, - { 311 * OVERSAMPLENR, 148 }, - { 351 * OVERSAMPLENR, 140 }, - { 381 * OVERSAMPLENR, 135 }, - { 411 * OVERSAMPLENR, 130 }, - { 441 * OVERSAMPLENR, 125 }, - { 451 * OVERSAMPLENR, 123 }, - { 461 * OVERSAMPLENR, 122 }, - { 471 * OVERSAMPLENR, 120 }, - { 481 * OVERSAMPLENR, 119 }, - { 491 * OVERSAMPLENR, 117 }, - { 501 * OVERSAMPLENR, 116 }, - { 511 * OVERSAMPLENR, 114 }, - { 521 * OVERSAMPLENR, 113 }, - { 531 * OVERSAMPLENR, 111 }, - { 541 * OVERSAMPLENR, 110 }, - { 551 * OVERSAMPLENR, 108 }, - { 561 * OVERSAMPLENR, 107 }, - { 571 * OVERSAMPLENR, 105 }, - { 581 * OVERSAMPLENR, 104 }, - { 591 * OVERSAMPLENR, 102 }, - { 601 * OVERSAMPLENR, 101 }, - { 611 * OVERSAMPLENR, 100 }, - { 621 * OVERSAMPLENR, 98 }, - { 631 * OVERSAMPLENR, 97 }, - { 641 * OVERSAMPLENR, 95 }, - { 651 * OVERSAMPLENR, 94 }, - { 661 * OVERSAMPLENR, 92 }, - { 671 * OVERSAMPLENR, 91 }, - { 681 * OVERSAMPLENR, 90 }, - { 691 * OVERSAMPLENR, 88 }, - { 701 * OVERSAMPLENR, 87 }, - { 711 * OVERSAMPLENR, 85 }, - { 721 * OVERSAMPLENR, 84 }, - { 731 * OVERSAMPLENR, 82 }, - { 741 * OVERSAMPLENR, 81 }, - { 751 * OVERSAMPLENR, 79 }, - { 761 * OVERSAMPLENR, 77 }, - { 771 * OVERSAMPLENR, 76 }, - { 781 * OVERSAMPLENR, 74 }, - { 791 * OVERSAMPLENR, 72 }, - { 801 * OVERSAMPLENR, 71 }, - { 811 * OVERSAMPLENR, 69 }, - { 821 * OVERSAMPLENR, 67 }, - { 831 * OVERSAMPLENR, 65 }, - { 841 * OVERSAMPLENR, 63 }, - { 851 * OVERSAMPLENR, 62 }, - { 861 * OVERSAMPLENR, 60 }, - { 871 * OVERSAMPLENR, 57 }, - { 881 * OVERSAMPLENR, 55 }, - { 891 * OVERSAMPLENR, 53 }, - { 901 * OVERSAMPLENR, 51 }, - { 911 * OVERSAMPLENR, 48 }, - { 921 * OVERSAMPLENR, 45 }, - { 931 * OVERSAMPLENR, 42 }, - { 941 * OVERSAMPLENR, 39 }, - { 951 * OVERSAMPLENR, 36 }, - { 961 * OVERSAMPLENR, 32 }, - { 981 * OVERSAMPLENR, 23 }, - { 991 * OVERSAMPLENR, 17 }, - { 1001 * OVERSAMPLENR, 9 }, - { 1008 * OVERSAMPLENR, 0 } -}; -#endif - -#if ANY_THERMISTOR_IS(66) -// DyzeDesign 500°C Thermistor -const short temptable_66[][2] PROGMEM = { - { 17.5 * OVERSAMPLENR, 850 }, - { 17.9 * OVERSAMPLENR, 500 }, - { 21.7 * OVERSAMPLENR, 480 }, - { 26.6 * OVERSAMPLENR, 460 }, - { 33.1 * OVERSAMPLENR, 440 }, - { 41.0 * OVERSAMPLENR, 420 }, - { 52.3 * OVERSAMPLENR, 400 }, - { 67.7 * OVERSAMPLENR, 380 }, - { 86.5 * OVERSAMPLENR, 360 }, - { 112.0 * OVERSAMPLENR, 340 }, - { 147.2 * OVERSAMPLENR, 320 }, - { 194.0 * OVERSAMPLENR, 300 }, - { 254.3 * OVERSAMPLENR, 280 }, - { 330.2 * OVERSAMPLENR, 260 }, - { 427.9 * OVERSAMPLENR, 240 }, - { 533.4 * OVERSAMPLENR, 220 }, - { 646.5 * OVERSAMPLENR, 200 }, - { 754.4 * OVERSAMPLENR, 180 }, - { 844.3 * OVERSAMPLENR, 160 }, - { 911.7 * OVERSAMPLENR, 140 }, - { 958.6 * OVERSAMPLENR, 120 }, - { 988.8 * OVERSAMPLENR, 100 }, - { 1006.6 * OVERSAMPLENR, 80 }, - { 1015.8 * OVERSAMPLENR, 60 }, - { 1021.3 * OVERSAMPLENR, 30 }, - { 1023 * OVERSAMPLENR - 1, 25}, - { 1023 * OVERSAMPLENR, 20} -}; -#endif - -#if ANY_THERMISTOR_IS(12) -// 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) -const short temptable_12[][2] PROGMEM = { - { 35 * OVERSAMPLENR, 180 }, // top rating 180C - { 211 * OVERSAMPLENR, 140 }, - { 233 * OVERSAMPLENR, 135 }, - { 261 * OVERSAMPLENR, 130 }, - { 290 * OVERSAMPLENR, 125 }, - { 328 * OVERSAMPLENR, 120 }, - { 362 * OVERSAMPLENR, 115 }, - { 406 * OVERSAMPLENR, 110 }, - { 446 * OVERSAMPLENR, 105 }, - { 496 * OVERSAMPLENR, 100 }, - { 539 * OVERSAMPLENR, 95 }, - { 585 * OVERSAMPLENR, 90 }, - { 629 * OVERSAMPLENR, 85 }, - { 675 * OVERSAMPLENR, 80 }, - { 718 * OVERSAMPLENR, 75 }, - { 758 * OVERSAMPLENR, 70 }, - { 793 * OVERSAMPLENR, 65 }, - { 822 * OVERSAMPLENR, 60 }, - { 841 * OVERSAMPLENR, 55 }, - { 875 * OVERSAMPLENR, 50 }, - { 899 * OVERSAMPLENR, 45 }, - { 926 * OVERSAMPLENR, 40 }, - { 946 * OVERSAMPLENR, 35 }, - { 962 * OVERSAMPLENR, 30 }, - { 977 * OVERSAMPLENR, 25 }, - { 987 * OVERSAMPLENR, 20 }, - { 995 * OVERSAMPLENR, 15 }, - { 1001 * OVERSAMPLENR, 10 }, - { 1010 * OVERSAMPLENR, 0 }, - { 1023 * OVERSAMPLENR, -40 } -}; -#endif - -#if ANY_THERMISTOR_IS(70) // bqh2 stock thermistor -const short temptable_70[][2] PROGMEM = { - { 22 * OVERSAMPLENR, 300 }, - { 24 * OVERSAMPLENR, 295 }, - { 25 * OVERSAMPLENR, 290 }, - { 27 * OVERSAMPLENR, 285 }, - { 29 * OVERSAMPLENR, 280 }, - { 32 * OVERSAMPLENR, 275 }, - { 34 * OVERSAMPLENR, 270 }, - { 37 * OVERSAMPLENR, 265 }, - { 40 * OVERSAMPLENR, 260 }, - { 43 * OVERSAMPLENR, 255 }, - { 46 * OVERSAMPLENR, 250 }, - { 50 * OVERSAMPLENR, 245 }, - { 54 * OVERSAMPLENR, 240 }, - { 59 * OVERSAMPLENR, 235 }, - { 64 * OVERSAMPLENR, 230 }, - { 70 * OVERSAMPLENR, 225 }, - { 76 * OVERSAMPLENR, 220 }, - { 83 * OVERSAMPLENR, 215 }, - { 90 * OVERSAMPLENR, 210 }, - { 99 * OVERSAMPLENR, 205 }, - { 108 * OVERSAMPLENR, 200 }, - { 118 * OVERSAMPLENR, 195 }, - { 129 * OVERSAMPLENR, 190 }, - { 141 * OVERSAMPLENR, 185 }, - { 154 * OVERSAMPLENR, 180 }, - { 169 * OVERSAMPLENR, 175 }, - { 185 * OVERSAMPLENR, 170 }, - { 203 * OVERSAMPLENR, 165 }, - { 222 * OVERSAMPLENR, 160 }, - { 243 * OVERSAMPLENR, 155 }, - { 266 * OVERSAMPLENR, 150 }, - { 290 * OVERSAMPLENR, 145 }, - { 317 * OVERSAMPLENR, 140 }, - { 346 * OVERSAMPLENR, 135 }, - { 376 * OVERSAMPLENR, 130 }, - { 408 * OVERSAMPLENR, 125 }, - { 442 * OVERSAMPLENR, 120 }, - { 477 * OVERSAMPLENR, 115 }, - { 513 * OVERSAMPLENR, 110 }, - { 551 * OVERSAMPLENR, 105 }, - { 588 * OVERSAMPLENR, 100 }, - { 626 * OVERSAMPLENR, 95 }, - { 663 * OVERSAMPLENR, 90 }, - { 699 * OVERSAMPLENR, 85 }, - { 735 * OVERSAMPLENR, 80 }, - { 768 * OVERSAMPLENR, 75 }, - { 800 * OVERSAMPLENR, 70 }, - { 829 * OVERSAMPLENR, 65 }, - { 856 * OVERSAMPLENR, 60 }, - { 881 * OVERSAMPLENR, 55 }, - { 903 * OVERSAMPLENR, 50 }, - { 922 * OVERSAMPLENR, 45 }, - { 939 * OVERSAMPLENR, 40 }, - { 954 * OVERSAMPLENR, 35 }, - { 966 * OVERSAMPLENR, 30 }, - { 977 * OVERSAMPLENR, 25 }, - { 986 * OVERSAMPLENR, 20 }, - { 994 * OVERSAMPLENR, 15 }, - { 1000 * OVERSAMPLENR, 10 }, - { 1005 * OVERSAMPLENR, 5 }, - { 1009 * OVERSAMPLENR, 0 } // safety -}; -#endif - -// Pt1000 and Pt100 handling -// -// Rt=R0*(1+a*T+b*T*T) [for T>0] -// a=3.9083E-3, b=-5.775E-7 - -#define PtA 3.9083E-3 -#define PtB -5.775E-7 -#define PtRt(T,R0) ((R0)*(1.0+(PtA)*(T)+(PtB)*(T)*(T))) -#define PtAdVal(T,R0,Rup) (short)(1024/(Rup/PtRt(T,R0)+1)) -#define PtLine(T,R0,Rup) { PtAdVal(T,R0,Rup)*OVERSAMPLENR, T }, - -#if ANY_THERMISTOR_IS(110) // Pt100 with 1k0 pullup -const short temptable_110[][2] PROGMEM = { - // only few values are needed as the curve is very flat - PtLine( 0, 100, 1000) - PtLine( 50, 100, 1000) - PtLine(100, 100, 1000) - PtLine(150, 100, 1000) - PtLine(200, 100, 1000) - PtLine(250, 100, 1000) - PtLine(300, 100, 1000) -}; -#endif -#if ANY_THERMISTOR_IS(147) // Pt100 with 4k7 pullup -const short temptable_147[][2] PROGMEM = { - // only few values are needed as the curve is very flat - PtLine( 0, 100, 4700) - PtLine( 50, 100, 4700) - PtLine(100, 100, 4700) - PtLine(150, 100, 4700) - PtLine(200, 100, 4700) - PtLine(250, 100, 4700) - PtLine(300, 100, 4700) -}; -#endif -#if ANY_THERMISTOR_IS(1010) // Pt1000 with 1k0 pullup -const short temptable_1010[][2] PROGMEM = { - PtLine( 0, 1000, 1000) - PtLine( 25, 1000, 1000) - PtLine( 50, 1000, 1000) - PtLine( 75, 1000, 1000) - PtLine(100, 1000, 1000) - PtLine(125, 1000, 1000) - PtLine(150, 1000, 1000) - PtLine(175, 1000, 1000) - PtLine(200, 1000, 1000) - PtLine(225, 1000, 1000) - PtLine(250, 1000, 1000) - PtLine(275, 1000, 1000) - PtLine(300, 1000, 1000) -}; -#endif -#if ANY_THERMISTOR_IS(1047) // Pt1000 with 4k7 pullup -const short temptable_1047[][2] PROGMEM = { - // only few values are needed as the curve is very flat - PtLine( 0, 1000, 4700) - PtLine( 50, 1000, 4700) - PtLine(100, 1000, 4700) - PtLine(150, 1000, 4700) - PtLine(200, 1000, 4700) - PtLine(250, 1000, 4700) - PtLine(300, 1000, 4700) -}; -#endif - -#if ANY_THERMISTOR_IS(999) // User-defined table - // Dummy Thermistor table.. It will ALWAYS read a fixed value. - #ifndef DUMMY_THERMISTOR_999_VALUE - #define DUMMY_THERMISTOR_999_VALUE 25 - #endif - const short temptable_999[][2] PROGMEM = { - { 1 * OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE }, - { 1023 * OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE } -}; -#endif - -#if ANY_THERMISTOR_IS(998) // User-defined table - // Dummy Thermistor table.. It will ALWAYS read a fixed value. - #ifndef DUMMY_THERMISTOR_998_VALUE - #define DUMMY_THERMISTOR_998_VALUE 25 - #endif - const short temptable_998[][2] PROGMEM = { - { 1 * OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE }, - { 1023 * OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE } -}; -#endif - - -#define _TT_NAME(_N) temptable_ ## _N -#define TT_NAME(_N) _TT_NAME(_N) - -#ifdef THERMISTORHEATER_0 - #define HEATER_0_TEMPTABLE TT_NAME(THERMISTORHEATER_0) - #define HEATER_0_TEMPTABLE_LEN COUNT(HEATER_0_TEMPTABLE) -#else - #ifdef HEATER_0_USES_THERMISTOR - #error "No heater 0 thermistor table specified" - #else // HEATER_0_USES_THERMISTOR - #define HEATER_0_TEMPTABLE NULL - #define HEATER_0_TEMPTABLE_LEN 0 - #endif // HEATER_0_USES_THERMISTOR -#endif - -// Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature -#ifndef HEATER_0_RAW_HI_TEMP - #ifdef HEATER_0_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value - #define HEATER_0_RAW_HI_TEMP 0 - #define HEATER_0_RAW_LO_TEMP 16383 - #else // In case of an thermocouple the highest temperature results in the highest ADC value - #define HEATER_0_RAW_HI_TEMP 16383 - #define HEATER_0_RAW_LO_TEMP 0 - #endif -#endif - -#ifdef THERMISTORHEATER_1 - #define HEATER_1_TEMPTABLE TT_NAME(THERMISTORHEATER_1) - #define HEATER_1_TEMPTABLE_LEN COUNT(HEATER_1_TEMPTABLE) -#else - #ifdef HEATER_1_USES_THERMISTOR - #error "No heater 1 thermistor table specified" - #else // HEATER_1_USES_THERMISTOR - #define HEATER_1_TEMPTABLE NULL - #define HEATER_1_TEMPTABLE_LEN 0 - #endif // HEATER_1_USES_THERMISTOR -#endif - -// Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature -#ifndef HEATER_1_RAW_HI_TEMP - #ifdef HEATER_1_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value - #define HEATER_1_RAW_HI_TEMP 0 - #define HEATER_1_RAW_LO_TEMP 16383 - #else // In case of an thermocouple the highest temperature results in the highest ADC value - #define HEATER_1_RAW_HI_TEMP 16383 - #define HEATER_1_RAW_LO_TEMP 0 - #endif -#endif - -#ifdef THERMISTORHEATER_2 - #define HEATER_2_TEMPTABLE TT_NAME(THERMISTORHEATER_2) - #define HEATER_2_TEMPTABLE_LEN COUNT(HEATER_2_TEMPTABLE) -#else - #ifdef HEATER_2_USES_THERMISTOR - #error "No heater 2 thermistor table specified" - #else // HEATER_2_USES_THERMISTOR - #define HEATER_2_TEMPTABLE NULL - #define HEATER_2_TEMPTABLE_LEN 0 - #endif // HEATER_2_USES_THERMISTOR -#endif - -// Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature -#ifndef HEATER_2_RAW_HI_TEMP - #ifdef HEATER_2_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value - #define HEATER_2_RAW_HI_TEMP 0 - #define HEATER_2_RAW_LO_TEMP 16383 - #else // In case of an thermocouple the highest temperature results in the highest ADC value - #define HEATER_2_RAW_HI_TEMP 16383 - #define HEATER_2_RAW_LO_TEMP 0 - #endif -#endif - -#ifdef THERMISTORHEATER_3 - #define HEATER_3_TEMPTABLE TT_NAME(THERMISTORHEATER_3) - #define HEATER_3_TEMPTABLE_LEN COUNT(HEATER_3_TEMPTABLE) -#else - #ifdef HEATER_3_USES_THERMISTOR - #error "No heater 3 thermistor table specified" - #else // HEATER_3_USES_THERMISTOR - #define HEATER_3_TEMPTABLE NULL - #define HEATER_3_TEMPTABLE_LEN 0 - #endif // HEATER_3_USES_THERMISTOR -#endif - -// Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature -#ifndef HEATER_3_RAW_HI_TEMP - #ifdef HEATER_3_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value - #define HEATER_3_RAW_HI_TEMP 0 - #define HEATER_3_RAW_LO_TEMP 16383 - #else // In case of an thermocouple the highest temperature results in the highest ADC value - #define HEATER_3_RAW_HI_TEMP 16383 - #define HEATER_3_RAW_LO_TEMP 0 - #endif -#endif - -#ifdef THERMISTORBED - #define BEDTEMPTABLE TT_NAME(THERMISTORBED) - #define BEDTEMPTABLE_LEN COUNT(BEDTEMPTABLE) -#else - #ifdef BED_USES_THERMISTOR - #error "No bed thermistor table specified" - #endif // BED_USES_THERMISTOR -#endif - -// Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature -#ifndef HEATER_BED_RAW_HI_TEMP - #ifdef BED_USES_THERMISTOR // In case of a thermistor the highest temperature results in the lowest ADC value - #define HEATER_BED_RAW_HI_TEMP 0 - #define HEATER_BED_RAW_LO_TEMP 16383 - #else // In case of an thermocouple the highest temperature results in the highest ADC value - #define HEATER_BED_RAW_HI_TEMP 16383 - #define HEATER_BED_RAW_LO_TEMP 0 - #endif -#endif - -#endif // THERMISTORTABLES_H_ diff --git a/lib/Marlin/twibus.cpp b/lib/Marlin/twibus.cpp deleted file mode 100644 index c1d6008..0000000 --- a/lib/Marlin/twibus.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "Marlin.h" - -#if ENABLED(EXPERIMENTAL_I2CBUS) - -#include "twibus.h" - -#include - -TWIBus::TWIBus() { - Wire.begin(); // We use no address so we will join the BUS as the master - this->reset(); -} - -void TWIBus::reset() { - this->addr = 0; - this->buffer_s = 0; - this->buffer[0] = 0x00; -} - -void TWIBus::address(uint8_t addr) { - this->addr = addr; - - #if ENABLED(DEBUG_TWIBUS) - debug(PSTR("sendto"), this->addr); - #endif -} - -void TWIBus::addbyte(char c) { - if (buffer_s >= sizeof(this->buffer)) return; - this->buffer[this->buffer_s++] = c; - - #if ENABLED(DEBUG_TWIBUS) - debug(PSTR("addbyte"), this->buffer[this->buffer_s - 1]); - #endif -} - -void TWIBus::send() { - if (!this->addr) return; - - #if ENABLED(DEBUG_TWIBUS) - debug(PSTR("send()")); - #endif - - Wire.beginTransmission(this->addr); - Wire.write(this->buffer, this->buffer_s); - Wire.endTransmission(); - - // Reset the buffer after sending the data - this->reset(); -} - -void TWIBus::reqbytes(uint8_t bytes) { - if (!this->addr) return; - - #if ENABLED(DEBUG_TWIBUS) - debug(PSTR("reqbytes"), bytes); - #endif - - millis_t t = millis() + this->timeout; - Wire.requestFrom(this->addr, bytes); - - // requestFrom() is a blocking function - while (Wire.available() < bytes) { - if (ELAPSED(millis(), t)) break; - else continue; - } - - SERIAL_ECHO_START; - SERIAL_ECHOPAIR("i2c-reply: from:", this->addr); - SERIAL_ECHOPAIR(" bytes:", Wire.available()); - SERIAL_ECHOPGM (" data:"); - - // Protect against buffer overflows if the number of received bytes - // is less than the number of requested bytes - uint8_t wba = Wire.available(); - for (int i = 0; i < wba; i++) SERIAL_CHAR(Wire.read()); - SERIAL_EOL; - - // Reset the buffer after sending the data - this->reset(); -} - -#if ENABLED(DEBUG_TWIBUS) - - void TWIBus::debug(const char func[], int32_t val/*=-1*/) { - if (DEBUGGING(INFO)) { - SERIAL_ECHOPGM("TWIBus::"); - serialprintPGM(func); - if (val >= 0) SERIAL_ECHOPAIR(": ", val); - SERIAL_EOL; - } - } - -#endif - -#endif //EXPERIMENTAL_I2CBUS diff --git a/lib/Marlin/twibus.h b/lib/Marlin/twibus.h deleted file mode 100644 index d0d0e0f..0000000 --- a/lib/Marlin/twibus.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef TWIBUS_H -#define TWIBUS_H - -#include "macros.h" - -// Print debug messages with M111 S2 (Uses 236 bytes of PROGMEM) -//#define DEBUG_TWIBUS - -/** - * TWIBUS class - * - * This class implements a wrapper around the two wire (I2C) bus, it allows - * Marlin to send and request data from any slave device on the bus. This is - * an experimental feature and it's inner workings as well as public facing - * interface are prune to change in the future. - * - * The two main consumers of this class are M155 and M156, where M155 allows - * Marlin to send a I2C packet to a device (please be aware that no repeated - * starts are possible), this can be done in caching method by calling multiple - * times M155 B or a one liner M155, have a look at - * the gcode_M155() function for more information. M156 allows Marlin to - * request data from a device, the received data is then relayed into the serial - * line for host interpretation. - * - */ -class TWIBus { - private: - /** - * @brief Timeout value in milliseconds - * @details For blocking operations this constant value will set the max - * amount of time Marlin will keep waiting for a reply. Useful is something - * goes wrong on the bus and the SDA/SCL lines are held up by another device. - */ - const int timeout = 5; - - /** - * @brief Target device address - * @description This stores, until the buffer is flushed, the target device - * address, take not we do follow Arduino 7bit addressing. - */ - uint8_t addr = 0; - - /** - * @brief Number of bytes on buffer - * @description This var holds the total number of bytes on our buffer - * waiting to be flushed to the bus. - */ - uint8_t buffer_s = 0; - - /** - * @brief Internal buffer - * @details This is a fixed buffer, TWI command cannot be longer than this - */ - char buffer[30]; - - - public: - /** - * @brief Class constructor - * @details Initialized the TWI bus and clears the buffer - */ - TWIBus(); - - /** - * @brief Reset the buffer - * @details Brings the internal buffer to a known-empty state - */ - void reset(); - - /** - * @brief Send the buffer data to the bus - * @details Flushed the buffer into the bus targeting the cached slave device - * address. - */ - void send(); - - /** - * @brief Add one byte to the buffer - * @details Adds the byte to the buffer in a sequential way, if buffer is full - * the request is silently ignored. - * - * @param c a data byte - */ - void addbyte(char c); - - /** - * @brief Sets the target slave address - * @details The target slave address is stored so it can be later used when - * the complete packet needs to be sent over the bus. - * - * @param addr 7-bit integer address - */ - void address(uint8_t addr); - - /** - * @brief Request data from slave device - * @details Requests data from a slave device, when the data is received it will - * be relayed to the serial line using a parser-friendly formatting. - * - * @param bytes the number of bytes to request - */ - void reqbytes(uint8_t bytes); - - #if ENABLED(DEBUG_TWIBUS) - - /** - * @brief Prints a debug message - * @details Prints a simple debug message "TWIBus::function: value" - */ - static void debug(const char func[], int32_t val = -1); - - #endif -}; - -#endif //TWIBUS_H diff --git a/lib/Marlin/types.h b/lib/Marlin/types.h deleted file mode 100644 index 8ab7bee..0000000 --- a/lib/Marlin/types.h +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __TYPES_H__ -#define __TYPES_H__ - -typedef unsigned long millis_t; - -#endif diff --git a/lib/Marlin/uArmAPI.cpp b/lib/Marlin/uArmAPI.cpp deleted file mode 100644 index e5ade3d..0000000 --- a/lib/Marlin/uArmAPI.cpp +++ /dev/null @@ -1,991 +0,0 @@ -/** - ****************************************************************************** - * @file uArmAPI.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-01-21 - ****************************************************************************** - */ - -#include "uArmAPI.h" - -static float front_end_offset = 0.0; -static float height_offset = 0.0; - -UserMode_t user_mode = USER_MODE_NORMAL; - -#define MAC_FLAG_ADDRESS 1000 -#define MAC_LEN 12 -#define MAC_FLAG_SET 0XCE -static unsigned char mMacStr[MAC_LEN+1] = {0}; -static unsigned char mHWSubVersion; - -/*! - \brief get mac of bt which as unique code of HW - */ -unsigned char* getMac() -{ - return mMacStr; -} - -void init_hardware() -{ - // PG4 output - DDRG |= 0x10; // PUMP_D5_N - - // PC7 input - //DDRC &= 0x7F; - - //PORTC |= 0X80; - DDRC |= 0x80; - - // tip PG3 input - DDRG &= 0xF7; // - PORTG |= 0X08; - - pinMode(GRIPPER_FEEDBACK, INPUT); - pinMode(VALVE_EN, OUTPUT); - pinMode(KEY_STATE_PIN, INPUT); - -} - -/*! - \brief read mac string from BT if not stored in e2prom. - */ -void getMacAddr() -{ - // get BT MAC - // if not set mac flag, get mac from bt - delay(10); - unsigned char macFlag = getE2PROMData(EEPROM_ON_CHIP, MAC_FLAG_ADDRESS, DATA_TYPE_BYTE); - debugPrint("mac flag =%d\r\n", macFlag); - // if flag set then read it from EEPROM - if (macFlag == MAC_FLAG_SET) - { - delay(10); - //iic_readbuf(mMacStr, EEPROM_ON_CHIP, MAC_ADDRESS, MAC_LEN);// write data - - for (int i = 0; i < MAC_LEN; i++) - { - mMacStr[i] = EEPROM.read(MAC_FLAG_ADDRESS+2+i); - } - mMacStr[MAC_LEN] = '\0'; - debugPrint("mac=%s\r\n", mMacStr); - } - else - { - unsigned char readBuf[128]; - int i = 0; - // get from BT - Serial1.write("AT+ADDR?"); - - delay(100); - - // set firmware flag - Serial1.write("AT+UUID0xFFE3"); - - // wait for reply - delay(100); - - // get data - while (Serial1.available()) - { - readBuf[i++] = Serial1.read(); - } - - readBuf[i] = '\0'; - debugPrint("%s\r\n", readBuf); - - // expect data: OK+ADDR:00FF00FF00FF - // parse datas - char *s = strstr(readBuf, "OK+ADDR:"); - - if (s != NULL) - { - //found - strncpy(mMacStr, s+8, MAC_LEN); - mMacStr[MAC_LEN] = '\0'; - debugPrint("mac=%s\r\n", mMacStr); - - delay(10); - // store in EEPROM - //iic_writebuf(mMacStr, EXTERNAL_EEPROM_SYS_ADDRESS, MAC_ADDRESS, MAC_LEN); - for (int i = 0; i < MAC_LEN; i++) - { - EEPROM.write(MAC_FLAG_ADDRESS+2+i, mMacStr[i] ); - } - delay(10); - // set mac flag - setE2PROMData(EEPROM_ON_CHIP, MAC_FLAG_ADDRESS, DATA_TYPE_BYTE, MAC_FLAG_SET); - } - - } -} - -/*! - \brief Get hardware subversion defined by 4 GPIOs. - */ -void getHWVersions() -{ - - DDRJ &= 0x87; //input - - - - mHWSubVersion = 0; - unsigned char bit = 1; - // get hw version - if (PINJ & 0x40) - { - mHWSubVersion |= bit; - } - - bit <<= 1; - if (PINJ & 0x20) - { - mHWSubVersion |= bit; - } - - bit <<= 1; - if (PINJ & 0x10) - { - mHWSubVersion |= bit; - } - - bit <<= 1; - if (PINJ & 0x08) - { - mHWSubVersion |= bit; - } - - debugPrint("subversion:%d\r\n", mHWSubVersion); - -} - -/*! - \brief clear mac flag stored in E2PROM, it will read mac from Bluetooth when power up. - */ -void clearMacFlag() -{ - setE2PROMData(EEPROM_ON_CHIP, MAC_FLAG_ADDRESS, DATA_TYPE_BYTE, 0); - mMacStr[0] = '\0'; -} - - -void swift_api_init() -{ - Serial1.begin(115200); - - getMacAddr(); - getHWVersions(); - - init_hardware(); - -} - -/*! - \brief Get the working mode set befored or set to default. - */ -void init_user_mode() -{ - uint8_t mode = read_user_mode(); - - if (isnan(mode) || mode >= USER_MODE_COUNT) - { - mode = USER_MODE_NORMAL; - save_user_mode(mode); - } - - - - - float height = read_height_offset(); - - if (isnan(height) || height > 150 || height < 0) - { - switch(mode) - { - case USER_MODE_LASER: - height = DEFAULT_LASER_HEIGHT; - break; - - case USER_MODE_3D_PRINT: - height = DEFAULT_3DPRINT_HEIGHT; - break; - - case USER_MODE_PEN: - height = DEFAULT_PEN_HEIGHT; - break; - - case USER_MODE_NORMAL: - default: - height = DEFAULT_NORMAL_HEIGHT; - break; - } - - save_height_offset(height); - - } - - float front = read_front_offset(); - - if (isnan(front) || front > 150 || front < 0) - { - switch(mode) - { - case USER_MODE_LASER: - front = DEFAULT_LASER_FRONT; - break; - - case USER_MODE_3D_PRINT: - front = DEFAULT_3DPRINT_FRONT; - break; - - case USER_MODE_PEN: - front = DEFAULT_PEN_FRONT; - break; - - case USER_MODE_NORMAL: - default: - front = DEFAULT_NORMAL_FRONT; - break; - } - - save_front_offset(front); - - } - - set_acceleration(mode); - - - user_mode = mode; - front_end_offset = front; - height_offset = height; - - set_fan_disable(user_mode != USER_MODE_3D_PRINT); - - debugPrint("Mode=%d, height=%f, front=%f\r\n", mode, height, front); - -} - -/*! - \brief Set acceleration by working mode. - */ -void set_acceleration(UserMode_t mode) -{ - if (mode >= USER_MODE_COUNT) - return; - - - - switch(mode) - { - case USER_MODE_LASER: - - planner.acceleration = 25; - planner.travel_acceleration = 25; - planner.max_xy_jerk = 0.5; - planner.max_z_jerk = 0.5; - - break; - - case USER_MODE_3D_PRINT: - - planner.acceleration = 25; - planner.travel_acceleration = 25; - planner.max_xy_jerk = 0.5; - planner.max_z_jerk = 0.5; - break; - - case USER_MODE_PEN: - - planner.acceleration = 25; - planner.travel_acceleration = 25; - planner.max_xy_jerk = 0.5; - planner.max_z_jerk = 0.5; - break; - - case USER_MODE_NORMAL: - default: - - planner.acceleration = 100; - planner.travel_acceleration = 100; - planner.max_xy_jerk = 50; - planner.max_z_jerk = 50; - break; - } -} - -/*! - \brief Set working mode and set parameters according to the mode. - */ -void set_user_mode(UserMode_t mode) -{ - if (mode >= USER_MODE_COUNT) - return; - - user_mode = mode; - - switch(mode) - { - case USER_MODE_LASER: - front_end_offset = DEFAULT_LASER_FRONT; - height_offset = DEFAULT_LASER_HEIGHT; - set_fan_disable(true); - break; - - case USER_MODE_3D_PRINT: - front_end_offset = DEFAULT_3DPRINT_FRONT; - height_offset = DEFAULT_3DPRINT_HEIGHT; - set_fan_disable(false); - break; - - case USER_MODE_PEN: - front_end_offset = DEFAULT_PEN_FRONT; - height_offset = DEFAULT_PEN_HEIGHT; - set_fan_disable(true); - - break; - - case USER_MODE_NORMAL: - default: - front_end_offset = DEFAULT_NORMAL_FRONT; - height_offset = DEFAULT_NORMAL_HEIGHT; - set_fan_disable(true); - - break; - } - - set_acceleration(mode); - - save_user_mode(mode); - save_height_offset(height_offset); - save_front_offset(front_end_offset); - -} - -/*! - \brief set bluetooth broadcast name - \return true if success - */ -bool setBtName(char btName[]) -{ - int strLength = strlen(btName); - - if (btName == NULL || strLength == 0) - return false; - - if (strLength > BT_NAME_MAX_LEN) - { - btName[BT_NAME_MAX_LEN] = '\0'; - } - - // bluetooth is working - if (PINE & 0x04) - { - return false; - } - - Serial1.write("AT+NAME"); - Serial1.write(btName); - - delay(100); - - - // set firmware flag - Serial1.write("AT+UUID0xFFE3"); - - delay(100); - - unsigned char readBuf[128]; - int i = 0; - - // get data - while (Serial1.available()) - { - readBuf[i++] = Serial1.read(); - } - - readBuf[i] = '\0'; - debugPrint("%s\r\n", readBuf); - - // expect data: OK+Set: - // parse datas - char *s = strstr(readBuf, "OK+Set:"); - - - return (s != NULL); - -} - -/*! - \brief Get current working mode - */ -UserMode_t get_user_mode() -{ - return user_mode; -} - - - -/*! - \brief set front end offset(mm) - */ -void set_front_end_offset(float offset) -{ - front_end_offset = offset; -} - -/*! - \brief get front end offset(mm) - */ -float get_front_end_offset() -{ - return front_end_offset; -} - -/*! - \brief set height offset(mm) - */ -void set_height_offset(float offset) -{ - height_offset = offset; -} - -/*! - \brief get height offset(mm) - */ -float get_height_offset() -{ - return height_offset; -} - -/*! - \brief get height offset from E2PROM(mm) - */ -float read_height_offset() -{ - return getE2PROMData(EEPROM_ON_CHIP, EEPROM_HEIGHT_ADDR, DATA_TYPE_FLOAT); -} - -/*! - \brief Save height offset to E2PROM(mm) - */ -void save_height_offset(float offset) -{ - setE2PROMData(EEPROM_ON_CHIP, EEPROM_HEIGHT_ADDR, DATA_TYPE_FLOAT, offset); -} - -/*! - \brief get front offset from E2PROM(mm) - */ -float read_front_offset() -{ - return getE2PROMData(EEPROM_ON_CHIP, EEPROM_FRONT_ADDR, DATA_TYPE_FLOAT); -} - -/*! - \brief Save front offset to E2PROM(mm) - */ -void save_front_offset(float offset) -{ - setE2PROMData(EEPROM_ON_CHIP, EEPROM_FRONT_ADDR, DATA_TYPE_FLOAT, offset); -} - -/*! - \brief get user mode from E2PROM(mm) - */ -uint8_t read_user_mode() -{ - return getE2PROMData(EEPROM_ON_CHIP, EEPROM_MODE_ADDR, DATA_TYPE_BYTE); -} - -/*! - \brief Save user mode to E2PROM(mm) - */ -void save_user_mode(uint8_t mode) -{ - setE2PROMData(EEPROM_ON_CHIP, EEPROM_MODE_ADDR, DATA_TYPE_BYTE, mode); -} - - - -unsigned char getXYZFromAngle(float& x, float& y, float& z, float rot, float left, float right) -{ - // 閿熸枻鎷稾Y骞抽敓é‚ゆ嫹閿熼åºé—ƒç†·åºœéŽ·çƒ½æ•“é‚ゆ嫹é–? - - - double stretch = MATH_LOWER_ARM * cos(left / MATH_TRANS) + MATH_UPPER_ARM * cos(right / MATH_TRANS) + MATH_L2 + front_end_offset; - - // 閿熸枻鎷ç©é–¿ç†¸æž»éŽ·çƒ½æ•“é–°ç”¸æ§¦ç”¯î†½å«¹é–¿ç†¸æž»éŽ·çƒ½æ•? - double height = MATH_LOWER_ARM * sin(left / MATH_TRANS) - MATH_UPPER_ARM * sin(right / MATH_TRANS) + MATH_L1; - y = -stretch * cos(rot / MATH_TRANS); - x = stretch * sin(rot / MATH_TRANS); - z = height - height_offset; - - return 0; -} - -/*! - \brief check if power plug in - */ -bool isPowerPlugIn() -{ - //debugPrint("power analog:%d\r\n", analogRead(POWER_DETECT)); - - if (analogRead(POWER_DETECT) > 100) - return true; - else - return false; -} - -/*! - \brief get e2prom data - \param device: EEPROM_ON_CHIP, EEPROM_EXTERN_USER, EEPROM_EXTERN_SYSTEM - \param addr: 0~2047(EEPROM_ON_CHIP), 0~65535(EEPROM_EXTERN_USER, EEPROM_EXTERN_SYSTEM) - \param type: DATA_TYPE_BYTE, DATA_TYPE_INTEGER, DATA_TYPE_FLOAT - */ -double getE2PROMData(unsigned char device, unsigned int addr, unsigned char type) -{ - double result = 0; - - uint8_t deviceAddr; - - - union { - float fdata; - uint8_t data[4]; - } FData; - - - switch(device) - { - - case 0: - - switch(type) - { - case DATA_TYPE_BYTE: - { - int val = EEPROM.read(addr); - result = val; - break; - } - case DATA_TYPE_INTEGER: - { - int i_val = 0; - EEPROM.get(addr, i_val); - result = i_val; - break; - } - case DATA_TYPE_FLOAT: - { - double f_val = 0.0f; - EEPROM.get(addr,f_val); - result = f_val; - break; - } - } - - break; - - case 1: - deviceAddr = EXTERNAL_EEPROM_USER_ADDRESS; - break; - - case 2: - deviceAddr = EXTERNAL_EEPROM_SYS_ADDRESS; - break; - - default: - return ADDRESS_ERROR; - } - - - if (device == 1 || device == 2) - { - int num = 0; - switch(type) - { - case DATA_TYPE_BYTE: - num = 1; - break; - - case DATA_TYPE_INTEGER: - num = 2; - break; - - case DATA_TYPE_FLOAT: - num = 4; - break; - - default: - return PARAMETER_ERROR; - } - - unsigned char i=0; - i = (addr % 128); - // Since the eeprom's sector is 128 byte, if we want to write 5 bytes per cycle we need to care about when there's less than 5 bytes left - if (i >= (129-num)) - { - i = 128 - i; - iic_readbuf(FData.data, deviceAddr, addr, i);// write data - delay(5); - iic_readbuf(FData.data + i, deviceAddr, addr + i, num - i);// write data - } - //if the left bytes are greater than 5, just do it - else - { - iic_readbuf(FData.data, deviceAddr, addr, num);// write data - } - - - switch(type) - { - case DATA_TYPE_BYTE: - result = FData.data[0]; - break; - - case DATA_TYPE_INTEGER: - result = (FData.data[0] << 8) + FData.data[1]; - break; - - case DATA_TYPE_FLOAT: - result = FData.fdata; - break; - - } - - - } - - return result; - -} - -/*! - \brief set e2prom data - \param device: EEPROM_ON_CHIP, EEPROM_EXTERN_USER, EEPROM_EXTERN_SYSTEM - \param addr: 0~2047(EEPROM_ON_CHIP), 0~65535(EEPROM_EXTERN_USER, EEPROM_EXTERN_SYSTEM) - \param type: DATA_TYPE_BYTE, DATA_TYPE_INTEGER, DATA_TYPE_FLOAT - \param value: value to write - */ -double setE2PROMData(unsigned char device, unsigned int addr, unsigned char type, double value) -{ - uint8_t deviceAddr; - - union { - float fdata; - uint8_t data[4]; - } FData; - - switch(device) - { - - case 0: - switch(type) - { - case DATA_TYPE_BYTE: - { - byte b_val; - b_val = byte(value); - EEPROM.write(addr, b_val); - break; - } - case DATA_TYPE_INTEGER: - { - int i_val = 0; - i_val = int(value); - EEPROM.put(addr, i_val); - break; - } - case DATA_TYPE_FLOAT: - { - float f_val = 0.0f; - f_val = float(value); - EEPROM.put(addr,f_val); - // Serial.println(f_val); - break; - } - } - break; - case 1: - deviceAddr = EXTERNAL_EEPROM_USER_ADDRESS; - break; - - case 2: - deviceAddr = EXTERNAL_EEPROM_SYS_ADDRESS; - break; - - default: - return ADDRESS_ERROR; - } - - - if (device == 1 || device == 2) - { - int num = 0; - switch(type) - { - case DATA_TYPE_BYTE: - FData.data[0] = byte(value); - num = 1; - break; - - case DATA_TYPE_INTEGER: - { - int i_val = 0; - i_val = int(value); - FData.data[0] = (i_val & 0xff00) >> 8; - FData.data[1] = i_val & 0xff; - num = 2; - break; - } - - case DATA_TYPE_FLOAT: - FData.fdata = float(value); - num = 4; - break; - - default: - return PARAMETER_ERROR; - } - - unsigned char i=0; - i = (addr % 128); - // Since the eeprom's sector is 128 byte, if we want to write 5 bytes per cycle we need to care about when there's less than 5 bytes left - if (i >= (129-num)) - { - i = 128 - i; - iic_writebuf(FData.data, deviceAddr, addr, i);// write data - delay(5); - iic_writebuf(FData.data + i, deviceAddr, addr + i, num - i);// write data - } - //if the left bytes are greater than 5, just do it - else - { - iic_writebuf(FData.data, deviceAddr, addr, num);// write data - } - - - - - } - -} - -static void _sort(unsigned int array[], unsigned int len) -{ - unsigned char i=0,j=0; - unsigned int temp = 0; - - for(i = 0; i < len; i++) - { - for(j = 0; i+j < (len-1); j++) - { - if(array[j] > array[j+1]) - { - temp = array[j]; - array[j] = array[j+1]; - array[j+1] = temp; - } - } - } -} -/*! - \brief get analog value of pin - \param pin of arduino - \return value of analog data - */ -int getAnalogPinValue(unsigned int pin) -{ - unsigned int dat[8]; - - - for(int i = 0; i < 8; i++) - { - dat[i] = analogRead(pin); - } - - _sort(dat, 8); - - unsigned int result = (dat[2]+dat[3]+dat[4]+dat[5])/4; - - return result; -} - -/*! - \brief pump working - */ -void pumpOn() -{ - - digitalWrite(VALVE_EN, LOW); - //digitalWrite(VALVE_EN, HIGH); - PORTG |= 0x10; - - pump_set_state(PUMP_STATE_ON); -} - -/*! - \brief pump stop - */ -void pumpOff() -{ - - - - digitalWrite(VALVE_EN, HIGH); - //digitalWrite(VALVE_EN, LOW); - PORTG &= 0xef; - - pump_set_state(PUMP_STATE_VALVE_ON); - -} - -/*! - \brief gripper work - */ -void gripperCatch() -{ - //digitalWrite(GRIPPER, LOW); - PORTC &= ~0X80; -} - -/*! - \brief gripper stop - */ -void gripperRelease() -{ - //digitalWrite(GRIPPER, HIGH); - - PORTC |= 0X80; -} - -/*! - \brief get pump status - \return STOP if pump is not working - \return WORKING if pump is working but not catched sth - \return GRABBING if pump got sth - */ -unsigned char getPumpStatus() -{ - - if (!(PORTG & 0x10)) - { - return STOP; - } - else - { - uint16_t value = getAnalogPinValue(PUMP_FEEDBACK); - debugPrint("pump value:%d\r\n", value); - if (value < 10) - { - // error, no work - return STOP; - } - else if (value <= PUMP_GRABBING_CURRENT) - { - return GRABBING; - } - else - { - return WORKING; - } - } - -} - -/*! - \brief get gripper status - \return STOP if gripper is not working - \return WORKING if gripper is working but not catched sth - \return GRABBING if gripper got sth - */ -unsigned char getGripperStatus() -{ - - if (PINC & 0X80) - { - return STOP;//NOT WORKING - } - else - { - - if (digitalRead(GRIPPER_FEEDBACK)) - { - return WORKING; - } - else - { - return GRABBING; - } - } - - -} - -/*! - \brief get hardware subvervion - */ -unsigned char getHWSubversion() -{ - return mHWSubVersion; -} - -/*! - \brief get the status of tip - return: 1. the switch is on - 0. the switch if off - */ -unsigned char getTip() -{ - return (PING & 0X08) ? 0 : 1; - -} - -/*! - \brief get the status of user defined key - return: 1. the key is down - 0. the key is up - */ -unsigned char getSwitchState() -{ - return digitalRead(KEY_STATE_PIN) ? 0 : 1; -} - -/*! - \brief test e2prom available - \param device: EEPROM_ON_CHIP, EEPROM_EXTERN_USER, EEPROM_EXTERN_SYSTEM - \return: true if available - */ -bool eeprom_write_test(uint8_t device) -{ - uint16_t value = 0; - - if (device > EEPROM_EXTERN_SYSTEM) - { - return false; - } - - delay(10); - setE2PROMData(device, EEPROM_WRITE_TEST_ADDR, DATA_TYPE_INTEGER, 0x5a5a); - delay(10); - value = getE2PROMData(device, EEPROM_WRITE_TEST_ADDR, DATA_TYPE_INTEGER); - if (value != 0x5a5a) - { - return false; - } - - delay(10); - setE2PROMData(device, EEPROM_WRITE_TEST_ADDR, DATA_TYPE_INTEGER, 0xa5a5); - delay(10); - value = getE2PROMData(device, EEPROM_WRITE_TEST_ADDR, DATA_TYPE_INTEGER); - if (value != 0xa5a5) - { - return false; - } - - return true; -} - diff --git a/lib/Marlin/uArmAPI.h b/lib/Marlin/uArmAPI.h deleted file mode 100644 index b56bdc5..0000000 --- a/lib/Marlin/uArmAPI.h +++ /dev/null @@ -1,224 +0,0 @@ -/** - ****************************************************************************** - * @file uArmAPI.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-01-21 - ****************************************************************************** - */ - -#ifndef _UARMAPI_H_ -#define _UARMAPI_H_ - -#include -#include -#include "uArmParams.h" -#include "uArmIIC.h" -#include "Marlin.h" - -#define OUT_OF_RANGE 10 -#define NO_SUCH_CMD 20 -#define PARAMETER_ERROR 21 -#define ADDRESS_ERROR 22 - - -#define DEFAULT_NORMAL_HEIGHT 74.55 -#define DEFAULT_NORMAL_FRONT 56.65 - -#define DEFAULT_LASER_HEIGHT 51.04 -#define DEFAULT_LASER_FRONT 64.4 - -#define DEFAULT_3DPRINT_HEIGHT 74.43 -#define DEFAULT_3DPRINT_FRONT 56.5 - -#define DEFAULT_PEN_HEIGHT 74.43 -#define DEFAULT_PEN_FRONT 92.8 - - -typedef enum { - USER_MODE_NORMAL, - USER_MODE_LASER, - USER_MODE_3D_PRINT, - USER_MODE_PEN, - - USER_MODE_COUNT - -} UserMode_t; - -double getE2PROMData(unsigned char device, unsigned int addr, unsigned char type); - -double setE2PROMData(unsigned char device, unsigned int addr, unsigned char type, double value); - -void swift_api_init(); - -/*! - \brief check if power plug in - */ -bool isPowerPlugIn(); - -/*! - \brief get analog value of pin - \param pin of arduino - \return value of analog data - */ -int getAnalogPinValue(unsigned int pin); - -/*! - \brief Set working mode and set parameters according to the mode. - */ -void set_user_mode(UserMode_t mode); - -/*! - \brief Set acceleration by working mode. - */ -void set_acceleration(UserMode_t mode); - -/*! - \brief Get the working mode set befored or set to default. - */ -void init_user_mode(); - -/*! - \brief Get current working mode - */ -UserMode_t get_user_mode(); - -/*! - \brief set front end offset(mm) - */ -void set_front_end_offset(float offset); - -/*! - \brief get front end offset(mm) - */ -float get_front_end_offset(); - -/*! - \brief set height end offset(mm) - */ -void set_height_offset(float offset); - -/*! - \brief get height end offset(mm) - */ -float get_height_offset(); - -unsigned char getXYZFromAngle(float& x, float& y, float& z, float rot, float left, float right); - -/*! - \brief pump working - */ -void pumpOn(); - -/*! - \brief pump stop - */ -void pumpOff(); - - -/*! - \brief gripper work - */ -void gripperCatch(); - -/*! - \brief gripper stop - */ -void gripperRelease(); - -/*! - \brief get gripper status - \return STOP if gripper is not working - \return WORKING if gripper is working but not catched sth - \return GRABBING if gripper got sth - */ -unsigned char getGripperStatus(); - -/*! - \brief get pump status - \return STOP if pump is not working - \return WORKING if pump is working but not catched sth - \return GRABBING if pump got sth - */ -unsigned char getPumpStatus(); - -/*! - \brief get hardware subvervion - */ -unsigned char getHWSubversion(); - - -/*! - \brief get mac of bt which as unique code of HW - */ -unsigned char* getMac(); - -/*! - \brief get the status of tip - return: 1. the switch is on - 0. the switch if off - */ -unsigned char getTip(); - -/*! - \brief get the status of user defined key - return: 1. the key is down - 0. the key is up - */ -unsigned char getSwitchState(); - -/*! - \brief get height offset from E2PROM(mm) - */ -float read_height_offset(); - -/*! - \brief Save height offset to E2PROM(mm) - */ -void save_height_offset(float offset); - -/*! - \brief get front offset from E2PROM(mm) - */ -float read_front_offset(); - -/*! - \brief Save front offset to E2PROM(mm) - */ -void save_front_offset(float offset); - -/*! - \brief get user mode from E2PROM(mm) - */ -uint8_t read_user_mode(); - -/*! - \brief Save user mode to E2PROM(mm) - */ -void save_user_mode(uint8_t mode); - -/*! - \brief clear mac flag stored in E2PROM, it will read mac from Bluetooth when power up. - */ -void clearMacFlag(); - -/*! - \brief set bluetooth broadcast name - \return true if success - */ -bool setBtName(char btName[]); - -/*! - \brief test e2prom available - \param device: EEPROM_ON_CHIP, EEPROM_EXTERN_USER, EEPROM_EXTERN_SYSTEM - \return: true if available - */ -bool eeprom_write_test(uint8_t device); - -/*! - \brief read mac string from BT if not stored in e2prom. - */ -void getMacAddr(); - - -#endif // _UARMAPI_H_ diff --git a/lib/Marlin/uArmButton.cpp b/lib/Marlin/uArmButton.cpp deleted file mode 100644 index 326cfb8..0000000 --- a/lib/Marlin/uArmButton.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/** - ****************************************************************************** - * @file uArmButton.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-10-17 - ****************************************************************************** - */ - -#include "uArmButton.h" - - - -uArmButton::uArmButton() -{ - mPin = 0xff; - mState = IDLE; - mEvent = EVENT_NONE; - - - pButtonEventCB = NULL; - pButtonLongPressedCB = NULL; - pIsButtonPressedCB = NULL; -} - - -void uArmButton::setClickedCB(ButtonEventCB_t clickedCB) -{ - pButtonEventCB = clickedCB; -} - -void uArmButton::setLongPressedCB(ButtonLongPressedCB_t longPressedCB) -{ - pButtonLongPressedCB = longPressedCB; -} - -void uArmButton::setIsButtonPressedCB(IsButtonPressedCB_t isButtonPressed) -{ - pIsButtonPressedCB = isButtonPressed; -} - - - -bool uArmButton::clicked() -{ - return (mEvent == EVENT_CLICK); -} - -bool uArmButton::longPressed() -{ - return (mEvent == EVENT_LONG_PRESS); -} - -bool uArmButton::isPressed() -{ - - if (pIsButtonPressedCB == NULL) - return false; - - if (pIsButtonPressedCB()) - return true; - - return false; -} - -void uArmButton::clearEvent() -{ - mEvent = EVENT_NONE; -} - -void uArmButton::tick() -{ - switch (mState) - { - case IDLE: - if (isPressed()) - { - mTicks = 0; - mState = HALF_PRESSED; - } - break; - - case HALF_PRESSED: - if (isPressed()) - { - swift_buzzer.tone(100, 4000); - mState = PRESSED; - } - else - { - mState = IDLE; - } - break; - - case PRESSED: - if (isPressed()) - { - - mTicks++; - } - else - { - mState = RELEASE; - } - break; - - case RELEASE: - - if (mTicks >= (1000/TICK_INTERVAL)) - { - mEvent = EVENT_LONG_PRESS; - - if (pButtonLongPressedCB != NULL) - { - pButtonLongPressedCB(); - } - - } - else - { - mEvent = EVENT_CLICK; - - if (pButtonEventCB != NULL) - { - pButtonEventCB(); - } - - } - - mTicks = 0; - mState = IDLE; - break; - - default: - break; - - } -} \ No newline at end of file diff --git a/lib/Marlin/uArmButton.h b/lib/Marlin/uArmButton.h deleted file mode 100644 index d75e1b2..0000000 --- a/lib/Marlin/uArmButton.h +++ /dev/null @@ -1,76 +0,0 @@ -/** - ****************************************************************************** - * @file uArmButton.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-10-17 - ****************************************************************************** - */ - -#ifndef _UARMBUTTON_H_ -#define _UARMBUTTON_H_ - -#include - -#include "Marlin.h" - - -#define EVENT_NONE 0 -#define EVENT_CLICK 1 -#define EVENT_LONG_PRESS 2 - -class uArmButton -{ - - typedef enum { - INIT, - IDLE, - HALF_PRESSED, - PRESSED, - RELEASE, - LONGPRESSED, - - STATE_COUNT - - } BUTTON_STATE; - -public: - uArmButton(); - - - bool clicked(); - bool longPressed(); - - void clearEvent(); - void tick(); - - bool isPressed(); - - - -public: - typedef void (*ButtonEventCB_t)(void); - typedef void (*ButtonLongPressedCB_t)(void); - typedef bool (*IsButtonPressedCB_t)(void); - - void setClickedCB(ButtonEventCB_t clickedCB); - void setLongPressedCB(ButtonLongPressedCB_t longPressedCB); - void setIsButtonPressedCB(IsButtonPressedCB_t isButtonPressed); -private: - ButtonEventCB_t pButtonEventCB; - ButtonLongPressedCB_t pButtonLongPressedCB; - IsButtonPressedCB_t pIsButtonPressedCB; - - -private: - unsigned char mPin; - unsigned int mTicks; - - unsigned char mEvent; - - BUTTON_STATE mState; -}; - - - -#endif // _UARMBUTTON_H_ diff --git a/lib/Marlin/uArmBuzzer.cpp b/lib/Marlin/uArmBuzzer.cpp deleted file mode 100644 index 612a2d2..0000000 --- a/lib/Marlin/uArmBuzzer.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/** - ****************************************************************************** - * @file uArmBuzzer.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-09-30 - * @license GNU - * copyright(c) 2016 UFactory Team. All right reserved - ****************************************************************************** - */ - -#include "uArmBuzzer.h" - -uArmBuzzer swift_buzzer; - - - -uArmBuzzer::uArmBuzzer() -{ - mOn = false; -} - -void uArmBuzzer::setPin(unsigned char pin) -{ - mPin = pin; -} - - - -void uArmBuzzer::tone(unsigned long duration, unsigned int frequency) -{ - if (duration <= 0) - return; - - mOn = true; - pinMode(mPin, OUTPUT); - mDuration = duration; - mStartTime = millis(); - ::tone(mPin, frequency, duration); - -} - - -void uArmBuzzer::stop() -{ - noTone(mPin); -} - - -void uArmBuzzer::tick() -{ - if (mOn && (long)((millis() - mStartTime)) >= mDuration) - { - noTone(mPin); - mOn = false; - } -} - -bool uArmBuzzer::on() -{ - return mOn; -} \ No newline at end of file diff --git a/lib/Marlin/uArmBuzzer.h b/lib/Marlin/uArmBuzzer.h deleted file mode 100644 index 216fce0..0000000 --- a/lib/Marlin/uArmBuzzer.h +++ /dev/null @@ -1,42 +0,0 @@ -/** - ****************************************************************************** - * @file uArmBuzzer.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-09-30 - * @license GNU - * copyright(c) 2016 UFactory Team. All right reserved - ****************************************************************************** - */ - -#ifndef _UARMBUZZER_H_ -#define _UARMBUZZER_H_ - -#include -#include "Marlin.h" - - - -class uArmBuzzer -{ -public: - uArmBuzzer(); - - void setPin(unsigned char pin); - void tone(unsigned long duration, unsigned int frequency); - void stop(); - - void tick(); - - bool on(); - -private: - unsigned char mPin; - bool mOn; - unsigned long mStartTime; - unsigned long mDuration; -}; - -extern uArmBuzzer swift_buzzer; - -#endif // _UARMBUZZER_H_ diff --git a/lib/Marlin/uArmCalibration.cpp b/lib/Marlin/uArmCalibration.cpp deleted file mode 100644 index 57e0d08..0000000 --- a/lib/Marlin/uArmCalibration.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/** - ****************************************************************************** - * @file uArmCalibration.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-15 - ****************************************************************************** - */ - -#include "uArmCalibration.h" -#include "macros.h" - - -uint16_t reference_angle_value[NUM_AXIS] = {95, 1429, 1998, 0}; - -float reference_angle[NUM_AXIS] = {90.0, 32.4, 90.6, 0.0}; - - -void init_reference_angle_value() -{ - //read value from eeprom - reference_angle_value[X_AXIS] = getE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR, DATA_TYPE_INTEGER); - reference_angle_value[Y_AXIS] = getE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+2, DATA_TYPE_INTEGER); - reference_angle_value[Z_AXIS] = getE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+4, DATA_TYPE_INTEGER); - - debugPrint("read ref value: %d, %d, %d\r\n", reference_angle_value[0], reference_angle_value[1], reference_angle_value[2]); -} - -void update_reference_angle_value(uint16_t value[NUM_AXIS]) -{ - - reference_angle_value[X_AXIS] = value[X_AXIS]; - reference_angle_value[Y_AXIS] = value[Y_AXIS]; - reference_angle_value[Z_AXIS] = value[Z_AXIS]; - - - setE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR, DATA_TYPE_INTEGER, reference_angle_value[X_AXIS]); - setE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+2, DATA_TYPE_INTEGER, reference_angle_value[Y_AXIS]); - setE2PROMData(EEPROM_ON_CHIP, EEPROM_REFERENCE_VALUE_ADDR+4, DATA_TYPE_INTEGER, reference_angle_value[Z_AXIS]); - - debugPrint("set ref value: %d, %d, %d\r\n", reference_angle_value[0], reference_angle_value[1], reference_angle_value[2]); -} - -uint16_t get_current_angle_adc(uint8_t index) -{ - uint16_t value = 0; - - switch(index) - { - case X_AXIS: - value = X_IIC_Read_OneByte((0x36<<1),0x0e); - value <<= 8; - value |= X_IIC_Read_OneByte((0x36<<1),0x0f); - break; - - case Y_AXIS: - value = Y_IIC_Read_OneByte((0x36<<1),0x0e); - value <<= 8; - value |= Y_IIC_Read_OneByte((0x36<<1),0x0f); - break; - - case Z_AXIS: - value = Z_IIC_Read_OneByte((0x36<<1),0x0e); - value <<= 8; - value |= Z_IIC_Read_OneByte((0x36<<1),0x0f); - break; - - case E_AXIS: - //servo - value = map(getAnalogPinValue(SERVO_HAND_ROT_ANALOG_PIN), SERVO_9G_MIN, SERVO_9G_MAX, 0, 180);; - break; - - default: - value = 0; - } - - return value; -} - -float get_current_angle(uint8_t index) -{ - if (index > E_AXIS) - return 0; - - if (index == E_AXIS) - return get_current_angle_adc(index); - - float angle = 0.0; - uint16_t cur_value = get_current_angle_adc(index); - uint16_t diff = 0; - - if (cur_value > reference_angle_value[index]) - { - diff = cur_value - reference_angle_value[index]; - angle = reference_angle[index] + diff * 360.0 / 4096; - } - else if (cur_value < reference_angle_value[index]) - { - diff = reference_angle_value[index] - cur_value; - angle = reference_angle[index] - diff * 360.0 / 4096; - } - else - { - angle = reference_angle[index]; - } - - debugPrint("cur_value = %d\r\n", cur_value); - debugPrint("reference_value = %d\r\n", reference_angle_value[index]); - - debugPrint("angle = %f\r\n", angle); - - float origin_angle = angle; - float min = 0, max = 0; - - if (angle > 360) - { - angle -= 360; - } - - if (angle < 0) - { - angle += 360; - } - debugPrint("angle2 = %f\r\n", angle); - - switch (index) - { - case X_AXIS: - min = 0; - max = 180; - break; - - case Y_AXIS: - min = LOWER_ARM_MIN_ANGLE; - max = LOWER_ARM_MAX_ANGLE; - break; - - case Z_AXIS: - min = UPPER_ARM_MIN_ANGLE; - max = UPPER_ARM_MAX_ANGLE; - break; - - } - - if (angle >= min && angle <= max) - { - return angle; - } - else if (diff > 2048) - { - if (origin_angle < 0) - { - return max; - } - else - { - return min; - } - } - else - { - if (origin_angle < 0) - { - return min; - } - else - { - return max; - } - } - - //return angle; -} - - - - diff --git a/lib/Marlin/uArmCalibration.h b/lib/Marlin/uArmCalibration.h deleted file mode 100644 index b22f4f9..0000000 --- a/lib/Marlin/uArmCalibration.h +++ /dev/null @@ -1,31 +0,0 @@ -/** - ****************************************************************************** - * @file uArmCalibration.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-15 - ****************************************************************************** - */ - -#ifndef _UARMCALIBRATION_H_ -#define _UARMCALIBRATION_H_ - -#include "Marlin.h" -#include "uArmAPI.h" -#include "uArmParams.h" -#include "uArmDebug.h" -#include "uArmIIC.h" -#include "X_IIC.h" -#include "Y_IIC.h" -#include "Z_IIC.h" - -float get_current_angle(uint8_t index); -void init_reference_angle_value(); -void update_reference_angle_value(uint16_t value[NUM_AXIS]); - -uint16_t get_current_angle_adc(uint8_t index); -void set_current_pos_as_reference(); - - - -#endif // _UARMCALIBRATION_H_ diff --git a/lib/Marlin/uArmDebug.cpp b/lib/Marlin/uArmDebug.cpp deleted file mode 100644 index 0709453..0000000 --- a/lib/Marlin/uArmDebug.cpp +++ /dev/null @@ -1,203 +0,0 @@ -/** - ****************************************************************************** - * @file uArmDebug.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-12-02 - ****************************************************************************** - */ - -#include "uArmDebug.h" -#include - - -#define ARDBUFFER 50 - -int msprintf(char *result, char *str, ...) -{ - int i, count=0, j=0, flag=0; - char temp[ARDBUFFER+1]; - char num[ARDBUFFER+1]; - - for(i=0; str[i]!='\0';i++) - { - if(str[i]=='%') - count++; - } - - result[0] = '\0'; - - if (count == 0) - { - for (i = 0; str[i] != '\0'; i++) - { - result[i] = str[i]; - } - result[i] = '\0'; - } - else - { - - va_list argv; - va_start(argv, count); - for(i=0,j=0; str[i]!='\0';i++) - { - if(str[i]=='%') - { - temp[j] = '\0'; - strcat(result, temp); - j=0; - temp[0] = '\0'; - - switch(str[++i]) - { - case 'd': - { - - itoa(va_arg(argv, int), num, 10); - strcat(result, num); - break; - } - - case 'l': - ltoa(va_arg(argv, long), num, 10); - strcat(result, num); - break; - - case 'f': - { - char d_str[10]; - dtostrf(va_arg(argv, double), 4, 2, d_str); - strcat(result, d_str); - break; - } - - case 'c': - num[0] = (char)va_arg(argv, int); - num[1] = '\0'; - strcat(result, num); - break; - - case 's': - strcat(result, va_arg(argv, char *)); - break; - - default: - break; - } - } - else - { - temp[j] = str[i]; - j = (j+1)%ARDBUFFER; - if(j==0) - { - temp[ARDBUFFER] = '\0'; - strcat(result, temp); - temp[0]='\0'; - } - } - } - } - temp[j] = '\0'; - strcat(result, temp); - - return count + 1; -} - - - -void mprint(char *fmt, ...) -{ - char buf[PRINT_BUF] = {0}; - - int i, count=0, j=0, flag=0; - char temp[ARDBUFFER+1]; - char num[ARDBUFFER+1]; - - for(i=0; fmt[i]!='\0';i++) - { - if(fmt[i]=='%') - count++; - } - - if (count == 0) - { - for (i = 0; fmt[i] != '\0'; i++) - { - buf[i] = fmt[i]; - } - buf[i] = '\0'; - } - else - { - buf[0] = '\0'; - va_list argv; - va_start(argv, count); - for(i=0,j=0; fmt[i]!='\0';i++) - { - if(fmt[i]=='%') - { - temp[j] = '\0'; - strcat(buf, temp); - j=0; - temp[0] = '\0'; - - switch(fmt[++i]) - { - case 'd': - { - itoa(va_arg(argv, int), num, 10); - strcat(buf, num); - break; - } - - case 'l': - ltoa(va_arg(argv, long), num, 10); - strcat(buf, num); - break; - - case 'f': - { - char d_str[10]; - dtostrf(va_arg(argv, double), 4, 2, d_str); - strcat(buf, d_str); - break; - } - - case 'c': - num[0] = (char)va_arg(argv, int); - num[1] = '\0'; - strcat(buf, num); - break; - - case 's': - strcat(buf, va_arg(argv, char *)); - break; - default: - break; - }; - } - else - { - temp[j] = fmt[i]; - j = (j+1)%ARDBUFFER; - if(j==0) - { - temp[ARDBUFFER] = '\0'; - strcat(buf, temp); - temp[0]='\0'; - } - } - } - } - - - temp[j] = '\0'; - strcat(buf, temp); - - PrintSerial.print(buf); - -} - - diff --git a/lib/Marlin/uArmDebug.h b/lib/Marlin/uArmDebug.h deleted file mode 100644 index 0b368c1..0000000 --- a/lib/Marlin/uArmDebug.h +++ /dev/null @@ -1,34 +0,0 @@ -/** - ****************************************************************************** - * @file uArmDebug.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-12-02 - ****************************************************************************** - */ - -#ifndef _UARMDEBUG_H_ -#define _UARMDEBUG_H_ - -#include - -#include "Marlin.h" - - -#ifdef DEBUG - #define debugPrint mprint -#else - #define debugPrint -#endif - -#define PrintSerial Serial - -#define PRINT_BUF 128 - - -void mprint(char *fmt, ...); - -int msprintf(char *result, char *str, ...); - - -#endif // _UARMDEBUG_H_ diff --git a/lib/Marlin/uArmGrove.cpp b/lib/Marlin/uArmGrove.cpp deleted file mode 100644 index 10b7116..0000000 --- a/lib/Marlin/uArmGrove.cpp +++ /dev/null @@ -1,214 +0,0 @@ -/** - ****************************************************************************** - * @file uArmGrove.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-06 - ****************************************************************************** - */ - -#include "uArmGrove.h" -#include "GroveColorSensor.h" -#include "paj7620.h" -#include "Ultrasonic.h" - -GroveColorSensor colorSensor; -Ultrasonic ultrasonic(8); - -void GestureReport() -{ - uint8_t data = 0, data1 = 0, error; - char result[128]; - int gesture = 255; - - error = paj7620ReadReg(0x43, 1, &data); // Read Bank_0_Reg_0x43/0x44 for gesture result. - if (!error) - { - switch (data) // When different gestures be detected, the variable 'data' will be set to different values by paj7620ReadReg(0x43, 1, &data). - { - case GES_RIGHT_FLAG: - delay(GES_ENTRY_TIME); - paj7620ReadReg(0x43, 1, &data); - if(data == GES_FORWARD_FLAG) - { - gesture = GES_FORWARD_FLAG; - delay(GES_QUIT_TIME); - } - else if(data == GES_BACKWARD_FLAG) - { - gesture = GES_BACKWARD_FLAG; - delay(GES_QUIT_TIME); - } - else - { - gesture = GES_RIGHT_FLAG; - } - break; - case GES_LEFT_FLAG: - delay(GES_ENTRY_TIME); - paj7620ReadReg(0x43, 1, &data); - if(data == GES_FORWARD_FLAG) - { - gesture = GES_FORWARD_FLAG; - delay(GES_QUIT_TIME); - } - else if(data == GES_BACKWARD_FLAG) - { - gesture = GES_BACKWARD_FLAG; - delay(GES_QUIT_TIME); - } - else - { - gesture = GES_RIGHT_FLAG; - } - break; - case GES_UP_FLAG: - delay(GES_ENTRY_TIME); - paj7620ReadReg(0x43, 1, &data); - if(data == GES_FORWARD_FLAG) - { - gesture = GES_FORWARD_FLAG; - delay(GES_QUIT_TIME); - } - else if(data == GES_BACKWARD_FLAG) - { - gesture = GES_BACKWARD_FLAG; - delay(GES_QUIT_TIME); - } - else - { - gesture = GES_UP_FLAG; - } - break; - case GES_DOWN_FLAG: - delay(GES_ENTRY_TIME); - paj7620ReadReg(0x43, 1, &data); - if(data == GES_FORWARD_FLAG) - { - gesture = GES_FORWARD_FLAG; - delay(GES_QUIT_TIME); - } - else if(data == GES_BACKWARD_FLAG) - { - gesture = GES_BACKWARD_FLAG; - delay(GES_QUIT_TIME); - } - else - { - gesture = GES_DOWN_FLAG; - } - break; - case GES_FORWARD_FLAG: - gesture = GES_FORWARD_FLAG; - delay(GES_QUIT_TIME); - break; - case GES_BACKWARD_FLAG: - gesture = GES_BACKWARD_FLAG; - delay(GES_QUIT_TIME); - break; - case GES_CLOCKWISE_FLAG: - gesture = GES_CLOCKWISE_FLAG; - break; - case GES_COUNT_CLOCKWISE_FLAG: - gesture = GES_COUNT_CLOCKWISE_FLAG; - break; - default: - paj7620ReadReg(0x44, 1, &data1); - if (data1 == GES_WAVE_FLAG) - { - gesture = GES_WAVE_FLAG; - } - break; - } - } - - if (gesture != 255) - { - msprintf(result, "@%d N%d V%d\r\n", REPORT_TYPE_GROVE, GROVE_GESTURE_SERSOR, gesture); - reportString(result); - } - -} - -void GroveColorReport() -{ - char result[128]; - int red, green, blue; - - - colorSensor.readRGB(&red, &green, &blue); //Read RGB values to variables. - - - colorSensor.clearInterrupt(); - - msprintf(result, "@%d N%d R%d G%d B%d\r\n", REPORT_TYPE_GROVE, GROVE_COLOR_SENSOR, red, green, blue); - reportString(result); -} - - - -void UltrasonicReport() -{ - char result[128]; - - ultrasonic.MeasureInCentimeters(); - - msprintf(result, "@%d N%d V%d\r\n", REPORT_TYPE_GROVE, GROVE_ULTRASONIC, ultrasonic.RangeInCentimeters); - reportString(result); -} - -void initGroveModule(GroveType type) -{ - uint8_t error = 0; - - switch (type) { - case GROVE_COLOR_SENSOR: - debugPrint("initGroveModule\n"); - colorSensor.init(); - break; - - case GROVE_GESTURE_SERSOR: - error = paj7620Init(); // initialize Paj7620 registers - if (error) - { - debugPrint("INIT ERROR,CODE: %d\r\n", error); - } - - break; - - case GROVE_ULTRASONIC: - break; - - default: - break; - } -} - -void setGroveModuleReportInterval(GroveType type, long interval) -{ - - if (interval <= 0) - { - removeReportService(type); - } - else - { - - switch (type) { - case GROVE_COLOR_SENSOR: - addReportService(type, interval, GroveColorReport); - break; - - case GROVE_GESTURE_SERSOR: - addReportService(type, interval, GestureReport); - break; - - case GROVE_ULTRASONIC: - addReportService(type, interval, UltrasonicReport); - break; - - default: - break; - } - } -} diff --git a/lib/Marlin/uArmGrove.h b/lib/Marlin/uArmGrove.h deleted file mode 100644 index 46559ca..0000000 --- a/lib/Marlin/uArmGrove.h +++ /dev/null @@ -1,31 +0,0 @@ -/** - ****************************************************************************** - * @file uArmGrove.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-06 - ****************************************************************************** - */ - -#ifndef _UARMGROVE_H_ -#define _UARMGROVE_H_ - -#include -#include "Marlin.h" - -enum GroveType -{ - GROVE_TYPE_NONE = 0, - - GROVE_COLOR_SENSOR = 10, - GROVE_GESTURE_SERSOR = 11, - GROVE_ULTRASONIC = 12, - - GROVE_TYPE_COUNT -}; - -void initGroveModule(GroveType type); - -void setGroveModuleReportInterval(GroveType type, long interval); - -#endif // _UARMGROVE_H_ diff --git a/lib/Marlin/uArmIIC.cpp b/lib/Marlin/uArmIIC.cpp deleted file mode 100644 index 82b07c5..0000000 --- a/lib/Marlin/uArmIIC.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/** - ****************************************************************************** - * @file uArmIIC.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-10-18 - ****************************************************************************** - */ - -#include "uArmIIC.h" -void delay_us() -{ - - -} - -void iic_start() -{ - SCL_SET;// SCL=1 - delay_us(); - SDA_SET;// SDA=1 - delay_us(); - SDA_CLEAR;// SDA=0 - delay_us(); - SCL_CLEAR;// SCL=0 - delay_us(); -} - -void iic_stop() -{ - SCL_CLEAR;// SCL=0 - delay_us(); - SDA_CLEAR;// SDA=0 - delay_us(); - SCL_SET;// SCL=1 - delay_us(); - SDA_SET;// SDA=1 - delay_us(); -} - -//return 0:ACK=0 -//return 1:NACK=1 -unsigned char read_ack() -{ - unsigned char old_state; - old_state = PORT_DDR; - SDA_INPUT;//SDA INPUT - SDA_SET;// SDA = 1; - delay_us(); - SCL_SET;// SCL=1 - delay_us(); - if(SDA_READ) // if(SDA) - { - SCL_CLEAR;// SCL=0 - iic_stop(); - PORT_DDR = old_state; - return 1; - } - else{ - SCL_CLEAR;// SCL=0 - PORT_DDR = old_state; - return 0; - } -} - -//ack=0:send ack -//ack=1:do not send ack -void send_ack() -{ - unsigned char old_state; - old_state = PORT_DDR; - SDA_OUTPUT;//SDA OUTPUT - SDA_CLEAR;// SDA=0 - delay_us(); - SCL_SET;// SCL=1 - delay_us(); - SCL_CLEAR;// SCL=0 - delay_us(); - PORT_DDR = old_state; - SDA_SET;// SDA=1 - delay_us(); -} - -void iic_sendbyte(unsigned char dat) -{ - unsigned char i; - for(i = 0; i < 8; i++) - { - if(dat & 0x80) - SDA_SET; // SDA = 1; - else - SDA_CLEAR; // SDA = 0; - dat <<= 1; - delay_us(); - SCL_SET;// SCL=1 - delay_us(); - SCL_CLEAR;// SCL=0 - } -} - -unsigned char iic_receivebyte() -{ - unsigned char i,byte = 0; - unsigned char old_state; - old_state = PORT_DDR; - SDA_INPUT;//SDA INPUT - for(i = 0; i < 8; i++) - { - SCL_SET;// SCL=1 - delay_us(); - byte <<= 1; - - if(SDA_READ) // if(SDA) - { - byte |= 0x01; - } - - delay_us(); - SCL_CLEAR;// SCL=0 - - delay_us(); - } - PORT_DDR = old_state; - return byte; -} - -unsigned char iic_writebuf(unsigned char *buf,unsigned char device_addr,unsigned int addr,unsigned char len) -{ - SCL_OUTPUT; - SDA_OUTPUT; - SCL_SET; - SDA_SET; - - unsigned char length_of_data=0;//page write - length_of_data = len; - iic_start(); - iic_sendbyte(device_addr); - if(read_ack()) return 1; - iic_sendbyte(addr>>8); - if(read_ack()) return 1; - iic_sendbyte(addr%256); - if(read_ack()) return 1; - - while(len != 0) - { - iic_sendbyte(*(buf + length_of_data - len)); - len--; - if(read_ack()) return 1; - delay(5); - } - iic_stop(); - - return 0; -} - -unsigned char iic_readbuf(unsigned char *buf,unsigned char device_addr,unsigned int addr,unsigned char len) -{ - SCL_OUTPUT; - SDA_OUTPUT; - SCL_SET; - SDA_SET; - - unsigned char length_of_data=0; - length_of_data = len; - iic_start(); - iic_sendbyte(device_addr); - if(read_ack()) return 1; - iic_sendbyte(addr>>8); - if(read_ack()) return 1; - iic_sendbyte(addr%256); - if(read_ack()) return 1; - iic_start(); - iic_sendbyte(device_addr+1); - if(read_ack()) return 1; - - while(len != 0) - { - *(buf + length_of_data - len) = iic_receivebyte(); - - len--; - if(len != 0) { - send_ack(); - } - } - iic_stop(); - return 0; -} \ No newline at end of file diff --git a/lib/Marlin/uArmIIC.h b/lib/Marlin/uArmIIC.h deleted file mode 100644 index cc77ce8..0000000 --- a/lib/Marlin/uArmIIC.h +++ /dev/null @@ -1,65 +0,0 @@ -/** - ****************************************************************************** - * @file uArmIIC.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-10-18 - ****************************************************************************** - */ - -#ifndef _UARMIIC_H_ -#define _UARMIIC_H_ - -#include - - - - -// scl pb6 -// sda pb7 - -#define SDA_SET PORTB |= 0x80 -#define SDA_CLEAR PORTB &= 0x7F -#define SCL_SET PORTB |= 0x40 -#define SCL_CLEAR PORTB &= 0xBF - -#define SDA_INPUT DDRB &= 0x7F -#define SDA_OUTPUT DDRB |= 0x80 - -#define SCL_INPUT DDRB &= 0xBF -#define SCL_OUTPUT DDRB |= 0x40 - -#define SDA_READ PINB & 0x80 - -#define PORT_DDR DDRB - - - - - -void delay_us(); - -void iic_start(); -void iic_stop(); - -//return 0:ACK=0 -//return 1:NACK=1 -unsigned char read_ack(); - -//ack=0:send ack -//ack=1:do not send ack -void send_ack(); - -void iic_sendbyte(unsigned char dat); - -unsigned char iic_receivebyte(); - -unsigned char iic_writebuf(unsigned char *buf,unsigned char device_addr,unsigned int addr,unsigned char len); - -unsigned char iic_readbuf(unsigned char *buf,unsigned char device_addr,unsigned int addr,unsigned char len); - - - - - -#endif // _UARMIIC_H_ diff --git a/lib/Marlin/uArmLed.cpp b/lib/Marlin/uArmLed.cpp deleted file mode 100644 index 4dd2585..0000000 --- a/lib/Marlin/uArmLed.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/** - ****************************************************************************** - * @file uArmLed.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-10-17 - ****************************************************************************** - */ - -#include "uArmLed.h" - -uArmLed::uArmLed() -{ - mPin = 0xff; - mState = INIT; - mTicks = 0; -} - -void uArmLed::setPin(unsigned char pin, unsigned char polarity) -{ - mPin = pin; - mState = OFF; - mTicks = 0; - mPeriod = 500; - mBright = 255; - mPolarity = polarity; -} - -void uArmLed::on(unsigned char bright) -{ - //digitalWrite(mPin, LOW); - if (mPolarity) - { - analogWrite(mPin, bright); - } - else - { - analogWrite(mPin, 255-bright); - } - mState = ON; -} - -void uArmLed::off() -{ - //digitalWrite(mPin, HIGH); - if (mPolarity) - { - analogWrite(mPin, 0); - } - else - { - analogWrite(mPin, 255); - } - mState = OFF; - mTicks = 0; -} - - - -void uArmLed::blink(unsigned int period, unsigned char bright) -{ - if (mPeriod <= 10) - return ; - - on(bright); - mState = BLINK_ON; - mTicks = 1; - mPeriod = period; - mBright = bright; -} - -void uArmLed::tickInc() -{ - mTicks++; - - if (mTicks >= (mPeriod/TICK_INTERVAL)) - { - mTicks = 0; - - if (mState == BLINK_ON) - { - if (mPolarity) - { - analogWrite(mPin, mBright); - } - else - { - analogWrite(mPin, 255 - mBright); - } - mState = BLINK_OFF; - } - else - { - if (mPolarity) - { - analogWrite(mPin, 0); - } - else - { - analogWrite(mPin, 255); - } - mState = BLINK_ON; - } - } -} - -void uArmLed::tick() -{ - switch (mState) - { - case BLINK_OFF: - case BLINK_ON: - tickInc(); - break; - - default: - break; - - } -} \ No newline at end of file diff --git a/lib/Marlin/uArmLed.h b/lib/Marlin/uArmLed.h deleted file mode 100644 index 38a537c..0000000 --- a/lib/Marlin/uArmLed.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - ****************************************************************************** - * @file uArmLed.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-10-17 - ****************************************************************************** - */ - -#ifndef _UARMLED_H_ -#define _UARMLED_H_ - -#include -#include "Marlin.h" - -class uArmLed -{ - typedef enum - { - INIT, - OFF, - ON, - BLINK_OFF, - BLINK_ON, - - STATE_COUNT - - } LEDState; - -public: - uArmLed(); - - // polarity = 1: HIGH=led on - // polarity = 0: LOW =led on - void setPin(unsigned char pin, unsigned char polarity = 0); - - void on(unsigned char bright = 255); - - void off(); - void blink(unsigned int period = 500, unsigned char bright = 255); - - - - void tick(); - -private: - void tickInc(); - -private: - unsigned char mPin; - unsigned int mPeriod; // ms - LEDState mState; - unsigned int mTicks; - unsigned char mBright; - unsigned char mPolarity; -}; - -#endif // _UARMLED_H_ diff --git a/lib/Marlin/uArmParams.h b/lib/Marlin/uArmParams.h deleted file mode 100644 index 70f5317..0000000 --- a/lib/Marlin/uArmParams.h +++ /dev/null @@ -1,92 +0,0 @@ -/** - ****************************************************************************** - * @file uArmParams.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-15 - ****************************************************************************** - */ - -#ifndef _UARMPARAMS_H_ -#define _UARMPARAMS_H_ - - - - - - -#define TICK_INTERVAL 50 - -#define EEPROM_X_ANGLE_ADDR 100 -#define EEPROM_Y_ANGLE_ADDR 110 -#define EEPROM_Z_ANGLE_ADDR 120 - -// e2prom device -#define EEPROM_ON_CHIP 0 -#define EEPROM_EXTERN_USER 1 -#define EEPROM_EXTERN_SYSTEM 2 - -// e2prom data type -#define DATA_TYPE_BYTE 1 -#define DATA_TYPE_INTEGER 2 -#define DATA_TYPE_FLOAT 4 - -#define EXTERNAL_EEPROM_USER_ADDRESS 0xa0 -#define EXTERNAL_EEPROM_SYS_ADDRESS 0xa2 - -#define SERVO_9G_MAX 460 -#define SERVO_9G_MIN 98 - - -#define EEPROM_REFERENCE_VALUE_ADDR 800 - -#define EEPROM_MODE_ADDR 900 -#define EEPROM_HEIGHT_ADDR 910 -#define EEPROM_FRONT_ADDR 920 - -#define EEPROM_WRITE_TEST_ADDR 1992 - - -#define MATH_PI 3.141592653589793238463 -#define MATH_TRANS 57.2958 -#define MATH_L1 106.6 //90.00 -#define MATH_L2 13.2 //21.17 -#define MATH_LOWER_ARM 142.07 //148.25 -#define MATH_UPPER_ARM 158.81 //158.8 //160.2 -//#define MATH_FRONT_HEADER 69//(29.4+38.6)//43.75) //25.00// the distance between wrist to the front point we use -#define MATH_UPPER_LOWER MATH_UPPER_ARM/MATH_LOWER_ARM - -// gripper or pump status -#define STOP 0 -#define WORKING 1 -#define GRABBING 2 - -#define PUMP_GRABBING_CURRENT 70 - -#define RESULT_BUFFER_SIZE 128 - -#define E_OK 0 -#define E_PARAMETERS_WRONG 21 -#define E_OUT_OF_RANGE 22 -#define E_BUFFER_FULL 23 -#define E_NO_POWER 24 -#define E_FAIL 25 - - -#define LOWER_ARM_MAX_ANGLE 135.6 -#define LOWER_ARM_MIN_ANGLE 0 -#define UPPER_ARM_MAX_ANGLE 100.7 -#define UPPER_ARM_MIN_ANGLE 0 -#define LOWER_UPPER_MAX_ANGLE 151 -#define LOWER_UPPER_MIN_ANGLE 10 - - -#define BT_NAME_MAX_LEN 11 - -#define UNLOCK_NUM 22765 - -#define REPORT_TYPE_POS 3 -#define REPORT_TYPE_GROVE 10 - - -#endif // _UARMPARAMS_H_ diff --git a/lib/Marlin/uArmPump.cpp b/lib/Marlin/uArmPump.cpp deleted file mode 100644 index 3c6d9f6..0000000 --- a/lib/Marlin/uArmPump.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/** - ****************************************************************************** - * @file uArmPump.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-05-25 - ****************************************************************************** - */ - -#include "uArmPump.h" - -#define VALVE_ON_TIMES_MAX 10 - -pump_state_t pump_state = PUMP_STATE_OFF; - - -void pump_set_state(pump_state_t state) -{ - if (state >= PUMP_STATE_COUNT) - return; - - pump_state = state; -} - -void pump_run() -{ - static uint8_t valve_on_times = 0; - - - switch (pump_state) - { - case PUMP_STATE_OFF: - valve_on_times = 0; - break; - - case PUMP_STATE_ON: - valve_on_times = 0; - break; - - case PUMP_STATE_VALVE_ON: - valve_on_times++; - digitalWrite(VALVE_EN, HIGH); - if (valve_on_times >= VALVE_ON_TIMES_MAX) - { - valve_on_times = 0; - pump_state = PUMP_STATE_OFF; - } - else - { - pump_state = PUMP_STATE_VALVE_OFF; - } - break; - - case PUMP_STATE_VALVE_OFF: - digitalWrite(VALVE_EN, LOW); - pump_state = PUMP_STATE_VALVE_ON; - - break; - - - } -} \ No newline at end of file diff --git a/lib/Marlin/uArmPump.h b/lib/Marlin/uArmPump.h deleted file mode 100644 index de7c69a..0000000 --- a/lib/Marlin/uArmPump.h +++ /dev/null @@ -1,30 +0,0 @@ -/** - ****************************************************************************** - * @file uArmPump.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-05-25 - ****************************************************************************** - */ - -#ifndef _UARMPUMP_H_ -#define _UARMPUMP_H_ - -#include -#include "Marlin.h" - -typedef enum _pump_state_t -{ - PUMP_STATE_OFF, - PUMP_STATE_ON, - PUMP_STATE_VALVE_ON, - PUMP_STATE_VALVE_OFF, - - - PUMP_STATE_COUNT -} pump_state_t; - -void pump_run(); -void pump_set_state(pump_state_t state); - -#endif // _UARMPUMP_H_ diff --git a/lib/Marlin/uArmRecorder.cpp b/lib/Marlin/uArmRecorder.cpp deleted file mode 100644 index 5c55f37..0000000 --- a/lib/Marlin/uArmRecorder.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/** - ****************************************************************************** - * @file uArmRecorder.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-09-30 - * @license GNU - * copyright(c) 2016 UFactory Team. All right reserved - ****************************************************************************** - */ - -#include "uArmRecorder.h" - -uArmRecorder recorder; - -extern void reportPos(); - -uArmRecorder::uArmRecorder() -{ - -} - -void uArmRecorder::write(unsigned int addr, unsigned char data[], int num) -{ - unsigned char i=0; - i = (addr % 128); - // Since the eeprom's sector is 128 byte, if we want to write 5 bytes per cycle we need to care about when there's less than 5 bytes left - if((i >= 124) && (num == 5)) - { - i = 128 - i; - iic_writebuf(data, EXTERNAL_EEPROM_USER_ADDRESS, addr, i);// write data - delay(5); - iic_writebuf(data + i, EXTERNAL_EEPROM_USER_ADDRESS, addr + i, num - i);// write data - } - //if the left bytes are greater than 5, just do it - else - { - iic_writebuf(data, EXTERNAL_EEPROM_USER_ADDRESS, addr, num);// write data - } -} - -void uArmRecorder::read(unsigned int addr, unsigned char data[], int num) -{ - unsigned char i=0; - i= (addr % 128); - // Since the eeprom's sector is 128 byte, if we want to write 5 bytes per cycle we need to care about when there's less than 5 bytes left - if( (i >= 124) && (num == 5)) - { - i = 128 - i; - iic_readbuf(data, EXTERNAL_EEPROM_USER_ADDRESS, addr, i);// write data - delay(5); - iic_readbuf(data + i, EXTERNAL_EEPROM_USER_ADDRESS, addr + i, num - i);// write data - } - //if the left bytes are greater than 5, just do it - else - { - iic_readbuf(data, EXTERNAL_EEPROM_USER_ADDRESS, addr, num);// write data - } -} - - diff --git a/lib/Marlin/uArmRecorder.h b/lib/Marlin/uArmRecorder.h deleted file mode 100644 index 6b9a940..0000000 --- a/lib/Marlin/uArmRecorder.h +++ /dev/null @@ -1,37 +0,0 @@ -/** - ****************************************************************************** - * @file uArmRecorder.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2016-09-30 - * @license GNU - * copyright(c) 2016 UFactory Team. All right reserved - ****************************************************************************** - */ - -#ifndef _UARMRECORDER_H_ -#define _UARMRECORDER_H_ - -#include -#include "Marlin.h" - - - - - -class uArmRecorder -{ -public: - uArmRecorder(); - void write(unsigned int addr, unsigned char data[], int num); - void read(unsigned int addr, unsigned char data[], int num); - -private: - - -}; - -extern uArmRecorder recorder; - - -#endif // _UARMRECORDER_H_ diff --git a/lib/Marlin/uArmReportService.cpp b/lib/Marlin/uArmReportService.cpp deleted file mode 100644 index ed2dfa4..0000000 --- a/lib/Marlin/uArmReportService.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/** - ****************************************************************************** - * @file uArmReportService.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-06 - ****************************************************************************** - */ - -#include "uArmReportService.h" - -ReportServiceList reportServiceList; - -void reportServiceInit() -{ - - for (int i = 0; i = reportServiceList.item[i].interval) - { - reportServiceList.item[i].timestamp = curTimeStamp; - - if (reportServiceList.item[i].reportFuncCB != NULL) - { - debugPrint("reportFuncCB\r\n"); - reportServiceList.item[i].reportFuncCB(); - } - } - - } - } -} - -void addReportService(uint8_t type, long interval, void (*reportFuncCB)()) -{ - if (reportFuncCB == NULL) - return; - - if (type == TYPE_NONE) - return; - - if (interval == 0) - { - return; - } - - debugPrint("addReportService %d\r\n", type); - int i = 0; - for (i = 0; i < REPORT_SERVICE_ITEM_MAX; i++) - { - // exist - if (reportServiceList.item[i].type == type) - { - reportServiceList.item[i].interval = interval; - reportServiceList.item[i].timestamp = millis(); - reportServiceList.item[i].reportFuncCB = reportFuncCB; - break; - } - } - - // new item - if (i == REPORT_SERVICE_ITEM_MAX) - { - - - // find a hole - for (int j = 0; j < REPORT_SERVICE_ITEM_MAX; j++) - { - if (reportServiceList.item[j].type == TYPE_NONE) - { - reportServiceList.item[j].type = type; - reportServiceList.item[j].interval = interval; - reportServiceList.item[j].timestamp = millis(); - reportServiceList.item[j].reportFuncCB = reportFuncCB; - - - - return; - } - } - - - } - -} - - -void removeReportService(uint8_t type) -{ - if (type == TYPE_NONE) - return; - - for (int i = 0; i < REPORT_SERVICE_ITEM_MAX; i++) - { - // exist - if (reportServiceList.item[i].type == type) - { - reportServiceList.item[i].type = TYPE_NONE; - - break; - } - } -} \ No newline at end of file diff --git a/lib/Marlin/uArmReportService.h b/lib/Marlin/uArmReportService.h deleted file mode 100644 index 0545190..0000000 --- a/lib/Marlin/uArmReportService.h +++ /dev/null @@ -1,40 +0,0 @@ -/** - ****************************************************************************** - * @file uArmReportService.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-06 - ****************************************************************************** - */ - -#ifndef _UARMREPORTSERVICE_H_ -#define _UARMREPORTSERVICE_H_ - -#include -#include "Marlin.h" - -#define TYPE_NONE 0 -#define REPORT_SERVICE_ITEM_MAX 10 - -typedef struct _ReportServiceItem -{ - void (*reportFuncCB)(); - uint8_t type; - long interval; - long timestamp; -} ReportServiceItem; - -typedef struct _ReportServiceList -{ - ReportServiceItem item[REPORT_SERVICE_ITEM_MAX]; - -} ReportServiceList; - -void reportServiceInit(); -void reportServiceRun(); - -void addReportService(uint8_t type, long interval, void (*reportFuncCB)()); -void removeReportService(uint8_t type); - - -#endif // _UARMREPORTSERVICE_H_ diff --git a/lib/Marlin/uArmSerial.cpp b/lib/Marlin/uArmSerial.cpp deleted file mode 100644 index 0f1a25d..0000000 --- a/lib/Marlin/uArmSerial.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/** - ****************************************************************************** - * @file uArmSerial.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-21 - ****************************************************************************** - */ - -#include "uArmSerial.h" - -uArmSerial commSerial; - -uArmSerial::uArmSerial() -{ - _serial = &Serial; -} - -void uArmSerial::setSerialPortLock(bool locked) -{ - _serialPortLock = locked; -} - -void uArmSerial::setSerialPort(HardwareSerial* serial) -{ - if (serial == NULL || _serialPortLock) - { - return; - } - - _serial = serial; -} - -void uArmSerial::begin(unsigned long baud, uint8_t config) -{ - _serial->begin(baud, config); -} - -void uArmSerial::end() -{ - _serial->end(); -} - -int uArmSerial::available(void) -{ - return _serial->available(); -} - -int uArmSerial::peek(void) -{ - return _serial->peek(); -} - -int uArmSerial::read(void) -{ - return _serial->read(); -} - -int uArmSerial::availableForWrite(void) -{ - return _serial->availableForWrite(); -} - -void uArmSerial::flush(void) -{ - _serial->flush(); -} - -size_t uArmSerial::write(uint8_t n) -{ - return _serial->write(n); -} \ No newline at end of file diff --git a/lib/Marlin/uArmSerial.h b/lib/Marlin/uArmSerial.h deleted file mode 100644 index f95e578..0000000 --- a/lib/Marlin/uArmSerial.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - ****************************************************************************** - * @file uArmSerial.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-21 - ****************************************************************************** - */ - -#ifndef _UARMSERIAL_H_ -#define _UARMSERIAL_H_ - -#include -#include "Print.h" - -class uArmSerial : public Print -{ -public: - uArmSerial(); - void setSerialPortLock(bool locked); - void setSerialPort(HardwareSerial* serial); - - void begin(unsigned long baud) { begin(baud, SERIAL_8N1); } - void begin(unsigned long, uint8_t); - void end(); - virtual int available(void); - virtual int peek(void); - virtual int read(void); - int availableForWrite(void); - virtual void flush(void); - virtual size_t write(uint8_t); - inline size_t write(unsigned long n) { return write((uint8_t)n); } - inline size_t write(long n) { return write((uint8_t)n); } - inline size_t write(unsigned int n) { return write((uint8_t)n); } - inline size_t write(int n) { return write((uint8_t)n); } - using Print::write; // pull in write(str) and write(buf, size) from Print - operator bool() { return true; } - -private: - HardwareSerial *_serial; - unsigned char _serialPortLock = false; -}; - -extern uArmSerial commSerial; - -#endif // _UARMSERIAL_H_ diff --git a/lib/Marlin/uArmService.cpp b/lib/Marlin/uArmService.cpp deleted file mode 100644 index 6b5a6df..0000000 --- a/lib/Marlin/uArmService.cpp +++ /dev/null @@ -1,876 +0,0 @@ -/** - ****************************************************************************** - * @file uArmService.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-17 - ****************************************************************************** - */ - -#include "uArmService.h" -#include "macros.h" -#include "stepper_indirection.h" -#include "servo.h" - - - -uArmService service; - -extern uArmButton button_menu; -extern uArmButton button_play; -extern uArmLed led_R; -extern uArmLed led_G; -extern uArmLed led_B; -extern Servo servo[NUM_SERVOS]; - -extern float destination[NUM_AXIS]; -extern float feedrate_mm_m; -extern void prepare_move_to_destination(); -extern inline void set_current_to_destination(); - -uArmService::uArmService() -{ - - mRecordAddr = 0; - - mButtonServiceDisable = false; - mBTDisable = true; - mReportStartTime = millis(); - - mTickRecorderTime = millis(); - - mTipState = 0; - mPowerState = 0; -} - -void uArmService::setButtonService(bool on) -{ - if (on) - { - mButtonServiceDisable = false; - } - else - { - mButtonServiceDisable = true; - } -} - - -void uArmService::disableBT(bool disable) -{ - mBTDisable = disable; - - if (mBTDisable) - { - led_B.off(); - - commSerial.setSerialPort(&Serial1); - - mSysStatus = NORMAL_MODE; - } -} - -void menuButtonClicked() -{ - if (service.buttonServiceDisable()) - { - reportButtonEvent(BUTTON_MENU, EVENT_CLICK); - } - else - { - service.handleButtonEvent(BUTTON_MENU, EVENT_CLICK); - } -} - -void menuButtonLongPressed() -{ - if (service.buttonServiceDisable()) - { - reportButtonEvent(BUTTON_MENU, EVENT_LONG_PRESS); - } - else - { - service.handleButtonEvent(BUTTON_MENU, EVENT_LONG_PRESS); - } -} - -void playButtonClicked() -{ - if (service.buttonServiceDisable()) - { - reportButtonEvent(BUTTON_PLAY, EVENT_CLICK); - } - else - { - service.handleButtonEvent(BUTTON_PLAY, EVENT_CLICK); - } -} - -void playButtonLongPressed() -{ - if (service.buttonServiceDisable()) - { - reportButtonEvent(BUTTON_PLAY, EVENT_LONG_PRESS); - } - else - { - service.handleButtonEvent(BUTTON_PLAY, EVENT_LONG_PRESS); - } -} - -#ifdef SWIFT_TEST_MODE - -#define SCL_PIN 21 -#define SDA_PIN 20 - -uArmLed led_seeed; - -uint8_t test_result; - -enum bt_test_state_t -{ - BT_TEST_INIT, - BT_TEST_CONNECT, - BT_TEST_WAIT_RESPONSE, - BT_TEST_DISCONNECT, - BT_TEST_GET_DATA, - BT_TEST_GET_MAC, - BT_TEST_IDLE, - BT_TEST_DONE, - - BT_TEST_COUNT -}; - - -uint8_t bt_test_state = BT_TEST_INIT; - - -enum test_item_t -{ - TEST_ITEM_EEPROM, - TEST_ITEM_BT, - - TEST_ITEM_COUNT -}; - -uint8_t get_test_result() -{ - return test_result; -} - -void all_light_on() -{ - debugPrint("all_light_on\r\n"); - - PORTC &= ~0x80; - PORTA &= ~0x01; - - PORTG |= 0x08; - - digitalWrite(6, HIGH); - digitalWrite(8, LOW); - digitalWrite(9, LOW); - - - digitalWrite(A13, HIGH); - digitalWrite(A3, LOW); - - service.ledAllOff(); - led_R.on(); - - -} - -void all_light_off() -{ - debugPrint("all_light_off\r\n"); - - PORTC |= 0x80; - PORTA |= 0x01; - - PORTG &= ~0x08; - - digitalWrite(6, LOW); - digitalWrite(8, HIGH); - digitalWrite(9, HIGH); - - digitalWrite(A13, LOW); - digitalWrite(A3, HIGH); - service.ledAllOff(); - led_G.on(); - -} - - -void all_pins_init() -{ - // output - // pc7 - DDRC |= 0x80; - PORTC |= 0x80; - - // pa0 - DDRA |= 0x01; - PORTA |= 0x01; - // pg3 - DDRG |= 0x08; - PORTG |= 0x08; - - // pk5 a13 - // pf3 a3 - pinMode(A13, OUTPUT); - pinMode(A3, OUTPUT); - - // ph3 7 - // d8 d9 - pinMode(7, OUTPUT); - pinMode(8, OUTPUT); - pinMode(9, OUTPUT); - - pinMode(SCL_PIN, OUTPUT); - pinMode(SDA_PIN, INPUT_PULLUP); - - led_seeed.setPin(SCL_PIN); - - led_seeed.blink(); - - bt_test_state = BT_TEST_INIT; - - test_result |= eeprom_write_test(EEPROM_EXTERN_USER) ? (1 << TEST_ITEM_EEPROM) : 0; - - all_light_off(); - service.ledAllOff(); -} - - - - - -void bt_test() -{ - static uint32_t bt_tick_count = 0; - uint8_t readBuf[128]; - uint8_t i = 0; - - switch (bt_test_state) - { - case BT_TEST_INIT: - if (!(test_result & (1 << TEST_ITEM_BT))) - { - if (service.btConnected()) - { - bt_tick_count = 0; - - bt_test_state = BT_TEST_CONNECT; - } - } - - break; - - case BT_TEST_CONNECT: - Serial1.write("$1 VSwiftPro\r\n"); - debugPrint("$1 VSwiftPro\r\n"); - bt_test_state = BT_TEST_WAIT_RESPONSE; - break; - - case BT_TEST_WAIT_RESPONSE: - // wait 1s - bt_tick_count++; - if (bt_tick_count >= 2) - { - bt_tick_count = 0; - - // check result - i = 0; - while (Serial1.available()) - { - readBuf[i++] = Serial1.read(); - } - - readBuf[i] = '\0'; - debugPrint("Received:%s\r\n", readBuf); - - // expect data: #OK SwiftPro 8848+mac - // parse data - char *s = strstr(readBuf, "OK SwiftPro"); - - if (s != NULL) - { - - bt_test_state = BT_TEST_DISCONNECT; - } - else - { - bt_test_state = BT_TEST_IDLE; - } - } - break; - - case BT_TEST_DISCONNECT: - Serial1.write("$2 VDisconnect\r\n"); - bt_test_state = BT_TEST_GET_DATA; - bt_tick_count = 0; - break; - - case BT_TEST_GET_DATA: - bt_tick_count++; - if (bt_tick_count >= 10) - { - bt_tick_count = 0; - clearMacFlag(); - Serial1.write("AT"); // disconnect bt - bt_test_state = BT_TEST_GET_MAC; - bt_tick_count = 0; - } - break; - - case BT_TEST_GET_MAC: - bt_tick_count++; - if (bt_tick_count >= 10) - { - bt_tick_count = 0; - getMacAddr(); - bt_test_state = BT_TEST_DONE; - test_result |= (1 << TEST_ITEM_BT); - } - break; - - case BT_TEST_IDLE: - bt_tick_count++; - if (bt_tick_count >= 20) - { - bt_tick_count = 0; - bt_test_state = BT_TEST_INIT; - } - break; - - case BT_TEST_DONE: - break; - - - } -} - -void test_mode_run() -{ - - - static uint8_t last_switch_state = 0; - - uint8_t switch_state = getSwitchState(); - - if (switch_state != last_switch_state) - { - if (switch_state) - { - pumpOn(); - service.ledAllOff(); - led_B.on(); - } - else - { - pumpOff(); - service.ledAllOff(); - } - - last_switch_state = switch_state; - } - - - - E0_STEP_WRITE(1); - delayMicroseconds(50); - E0_STEP_WRITE(0); - delayMicroseconds(50); -} - -#endif - - -void uArmService::init() -{ - // bt pin set - DDRE &= 0xFB; - PORTE |= 0x04; - -#ifdef SWIFT_TEST_MODE - ::all_pins_init(); - - button_menu.setClickedCB(::all_light_on); - button_play.setClickedCB(::all_light_off); -#else - button_menu.setClickedCB(menuButtonClicked); - button_menu.setLongPressedCB(menuButtonLongPressed); - button_play.setClickedCB(playButtonClicked); - button_play.setLongPressedCB(playButtonLongPressed); -#endif // SWIFT_TEST_MODE -} - - -bool uArmService::buttonServiceDisable() -{ - return mButtonServiceDisable; -} - -void uArmService::ledLearning() -{ - led_B.off(); - led_R.off(); - led_G.on(); -} - -void uArmService::ledPlaying() -{ - led_B.off(); - led_R.off(); - led_G.blink(500, 255); - // led_B.off(); - // led_R.blink(500, 255); - // led_G.blink(500, 50); -} - -void uArmService::ledAllOff() -{ - led_R.off(); - led_G.off(); - led_B.off(); -} - -void uArmService::handleButtonEvent(BUTTON_ID button, unsigned char event) -{ - switch(button) - { - case BUTTON_MENU: - if (event == EVENT_CLICK) - { - switch (mSysStatus) - { - case NORMAL_MODE: - case NORMAL_BT_CONNECTED_MODE: - mSysStatus = LEARNING_MODE; - ledLearning(); - mRecordAddr = 0;//recording/playing address - - - disable_all_steppers(); - servo[0].detach(); - break; - - case LEARNING_MODE: - //LEARNING_MODE_STOP is just used to notificate record() function to stop, once record() get it then change the sys_status to normal_mode - mSysStatus = LEARNING_MODE_STOP;//do not detec if BT is connected here, will do it seperatly - ledAllOff(); - pumpOff(); - gripperRelease(); - break; - - default: - break; - } - } - - break; - - case BUTTON_PLAY: - if (event == EVENT_CLICK) - { - switch(mSysStatus) - { - case NORMAL_MODE: - case NORMAL_BT_CONNECTED_MODE: - mRecordAddr = 0;//recording/playing address - mSysStatus = SINGLE_PLAY_MODE; // or play just one time - ledPlaying(); - set_acceleration(USER_MODE_NORMAL); - break; - - case SINGLE_PLAY_MODE: - case LOOP_PLAY_MODE: - pumpOff(); - gripperRelease(); - mSysStatus = NORMAL_MODE; - ledAllOff(); - set_acceleration(get_user_mode()); - break; - - case LEARNING_MODE: - - if (!getSwitchState()) - { - if (getPumpStatus()) - { - pumpOff(); - } - else - { - pumpOn(); - } - } - else - { - if (getGripperStatus()) - { - gripperRelease(); - } - else - { - gripperCatch(); - } - } - break; - } - } - else if (event == EVENT_LONG_PRESS) - { - switch(mSysStatus) - { - case NORMAL_MODE: - case NORMAL_BT_CONNECTED_MODE: - mRecordAddr = 0; - mSysStatus = LOOP_PLAY_MODE; - ledPlaying(); - set_acceleration(USER_MODE_NORMAL); - break; - - case SINGLE_PLAY_MODE: - case LOOP_PLAY_MODE: - break; - - case LEARNING_MODE: - break; - } - } - break; - } -} - - -void uArmService::recorderTick() -{ - //sys led function detec every 0.05s----------------------------------------------------------------- - - switch(mSysStatus)//every 0.05s per point - { -/* - case SINGLE_PLAY_MODE: - if(play() == false) - { - mSysStatus = NORMAL_MODE; - - ledAllOff(); - - mRecordAddr = 0; - } - break; - - case LOOP_PLAY_MODE: - - if(play() == false) - { - - mRecordAddr = 0; - } - break; -*/ - - case LEARNING_MODE: - case LEARNING_MODE_STOP: - if(record() == false) - { - mSysStatus = NORMAL_MODE; - mRecordAddr = 0; - - ledAllOff(); - - //controller.attachAllServo(); - enable_all_steppers(); - servo[0].attach(SERVO0_PIN); - - delay(500); - - update_current_pos(); - - } - break; - - default: - break; - } - -} - - - -void uArmService::systemRun() -{ - static uint8_t last_switch_state = 0; - - uint8_t switch_state = getSwitchState(); - - if (switch_state != last_switch_state) - { - if (switch_state) - { - mBTDisable = false; - } - else - { - mBTDisable = true; - } - - last_switch_state = switch_state; - } - - btDetect(); - -} - -bool uArmService::btConnected() -{ - return (PINE & 0x04) ? true : false; -} - -void uArmService::btDetect() -{ - -/* - if ((mSysStatus == NORMAL_MODE) || (mSysStatus == NORMAL_BT_CONNECTED_MODE)) - { - - - if (btConnected() && !mBTDisable) - { - led_B.on(); - - commSerial.setSerialPort(&Serial1); - - mSysStatus = NORMAL_BT_CONNECTED_MODE; - } - else - { - led_B.off(); - - commSerial.setSerialPort(&Serial); - - mSysStatus = NORMAL_MODE; - } - - - } -*/ - - if (mSysStatus == NORMAL_MODE) - { - if (btConnected() && !mBTDisable) - { - led_B.on(); - - commSerial.setSerialPort(&Serial1); - - mSysStatus = NORMAL_BT_CONNECTED_MODE; - } - } - else if (mSysStatus == NORMAL_BT_CONNECTED_MODE) - { - if (!btConnected() || mBTDisable) - { - led_B.off(); - - commSerial.setSerialPort(&Serial); - - mSysStatus = NORMAL_MODE; - } - } - -} - - -void uArmService::powerDetect() -{ - unsigned char powerState = isPowerPlugIn() ? 1 : 0; - - if (powerState != mPowerState) - { - mPowerState = powerState; - char buf[128]; - - msprintf(buf, "@5 V%d\r\n", mPowerState); - - reportString(buf); - } - -} - -void uArmService::tipDetect() -{ - unsigned char tipState = getTip() ? 1 : 0; - - if (tipState != mTipState) - { - mTipState = tipState; - char buf[128]; - - msprintf(buf, "@6 N0 V%d\r\n", mTipState); - - reportString(buf); - } -} - -void uArmService::run() -{ -#ifdef SWIFT_TEST_MODE - ::test_mode_run(); - - if (millis() - mTickRecorderTime >= 50) - { - mTickRecorderTime= millis(); - - bt_test(); - led_seeed.tick(); - } - -#else - systemRun(); - - if (millis() - mTickRecorderTime >= 50) - { - mTickRecorderTime= millis(); - recorderTick(); - powerDetect(); - tipDetect(); - - } -#endif -} - - - - -bool uArmService::play() -{ - unsigned char data[5]; // 0: L 1: R 2: Rotation 3: hand rotation 4:gripper - - if (mRecordAddr >= 65535) - { - mRecordAddr = 0; - - if (mSysStatus == SINGLE_PLAY_MODE) - { - mSysStatus = NORMAL_MODE; - ledAllOff(); - } - else if (mSysStatus == LOOP_PLAY_MODE) - { - - } - else - { - mSysStatus = NORMAL_MODE; - } - } - - if (mSysStatus != SINGLE_PLAY_MODE && mSysStatus != LOOP_PLAY_MODE) - { - return false; - } - - recorder.read(mRecordAddr, data, 5); - mRecordAddr += 5; - debugPrint("mRecordAddr = %d, data=%d, %d, %d", mRecordAddr, data[0], data[1], data[2]); - - if(data[0] != 255) - { - servo[0].write((double)data[3]); - if (data[4] >= 0x10) - { - gripperCatch(); - } - else if (data[4] >= 0x01) - { - pumpOn(); - } - else - { - pumpOff(); - gripperRelease(); - } - - getXYZFromAngle(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], data[0], data[1], data[2]); - - float target[NUM_AXIS]; - LOOP_XYZE(i) target[i] = destination[i]; - - - float difference[NUM_AXIS]; - LOOP_XYZE(i) difference[i] = target[i] - current_position[i]; - - - - float cartesian_mm = sqrt(sq(difference[X_AXIS]) + sq(difference[Y_AXIS]) + sq(difference[Z_AXIS])); - feedrate_mm_m = cartesian_mm * 20 * 60; // the interval of points is 50ms - - prepare_move_to_destination(); - - set_current_to_destination(); - - } - else - { - - pumpOff(); - gripperRelease(); - - mRecordAddr = 65535; - - return false; - - } - - - return true; -} - -bool uArmService::record() -{ - debugPrint("mRecordAddr = %d", mRecordAddr); - - if(mRecordAddr <= 65530) - { - unsigned char data[5]; // 0: L 1: R 2: Rotation 3: hand rotation 4:gripper - if((mRecordAddr != 65530) && (mSysStatus != LEARNING_MODE_STOP)) - { - - data[0] = (unsigned char)get_current_angle(0); - data[1] = (unsigned char)get_current_angle(1); - data[2] = (unsigned char)get_current_angle(2); - data[3] = (unsigned char)get_current_angle(3); - if (!getSwitchState()) - { - data[4] = getPumpStatus() > 0 ? 1 : 0; - } - else - { - data[4] = getGripperStatus() > 0 ? 0x10 : 0; - } - - debugPrint("b=%d, l=%d, r= %d", data[0], data[1], data[2]); - } - else - { - data[0] = 255;//255 is the ending flag - recorder.write(mRecordAddr, data, 5); - - return false; - } - - recorder.write(mRecordAddr, data, 5); - mRecordAddr += 5; - - return true; - } - else - { - return false; - } - -} diff --git a/lib/Marlin/uArmService.h b/lib/Marlin/uArmService.h deleted file mode 100644 index 7d3510c..0000000 --- a/lib/Marlin/uArmService.h +++ /dev/null @@ -1,78 +0,0 @@ -/** - ****************************************************************************** - * @file uArmService.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-17 - ****************************************************************************** - */ - -#ifndef _UARMSERVICE_H_ -#define _UARMSERVICE_H_ - -#include -#include "Marlin.h" - -enum BUTTON_ID -{ - BUTTON_MENU, - BUTTON_PLAY, - BUTTON_STATE, - - BUTTON_COUNT -}; - -#define NORMAL_MODE 0 -#define NORMAL_BT_CONNECTED_MODE 1 -#define LEARNING_MODE 2 -#define SINGLE_PLAY_MODE 3 -#define LOOP_PLAY_MODE 4 -#define LEARNING_MODE_STOP 5 - -class uArmService -{ -public: - uArmService(); - - void init(); - void run(); - - void btDetect(); - - void setButtonService(bool on); - - void handleButtonEvent(BUTTON_ID button, unsigned char event); - bool buttonServiceDisable(); - bool play(); - void disableBT(bool disable); - bool btConnected(); - void ledAllOff(); - -private: - - void systemRun(); - - bool record(); - void tickTaskRun(); - void recorderTick(); - - void ledLearning(); - void ledPlaying(); - - void tipDetect(); - void powerDetect(); -private: - unsigned char mButtonServiceDisable = false; - unsigned char mSysStatus = NORMAL_MODE; - unsigned int mRecordAddr = 0; - unsigned char mBTDisable = false; - unsigned long mReportStartTime; - - unsigned long mTickRecorderTime; - unsigned char mPowerState; - unsigned char mTipState; -}; - -extern uArmService service; - -#endif // _UARMSERVICE_H_ diff --git a/lib/Marlin/uArmSwift.cpp b/lib/Marlin/uArmSwift.cpp deleted file mode 100644 index ecd8607..0000000 --- a/lib/Marlin/uArmSwift.cpp +++ /dev/null @@ -1,1260 +0,0 @@ -/** - ****************************************************************************** - * @file uArmSwift.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-15 - ****************************************************************************** - */ - -#include "uArmSwift.h" -#include "macros.h" -#include "stepper_indirection.h" -#include "servo.h" - -// CAUTION: E_AXIS means FrontEnd Servo not extruder0 -//float current_angle[NUM_AXIS] = { 0.0 }; - -float angle_destination[NUM_AXIS] = { 0.0 }; - -extern float current_position[NUM_AXIS]; -extern float destination[NUM_AXIS]; - -bool block_running = false; - -unsigned long tickStartTime = millis(); // get timestamp; - - - -uArmButton button_menu; -uArmButton button_play; - -uArmLed led_R; -uArmLed led_G; -uArmLed led_B; - -extern Servo servo[NUM_SERVOS]; - -const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'}; - -extern void get_pos_from_polor(float pos[], float polor[]); -extern void get_current_pos_polor(float polor[], float pos[]); - -void set_block_running(bool running) -{ - block_running = running; -} - -bool get_block_running() -{ - return block_running; -} - -bool is_menu_button_pressed() -{ - if (PINE & 0x80) - { - return false; - } - - return true; -} - -bool is_play_button_pressed() -{ - if (PINE & 0x40) - { - return false; - } - - return true; -} - - -void buttons_init() -{ - PORTE |= 0xC0; - // set button pin as input - DDRE &= 0X3F; - - - button_menu.setIsButtonPressedCB(is_menu_button_pressed); - button_play.setIsButtonPressedCB(is_play_button_pressed); -} - - - -void swift_init() -{ - - - // setup stepper driver micro - pinMode(7, OUTPUT); - digitalWrite(7, HIGH); - - pinMode(A10, OUTPUT); - digitalWrite(A10, HIGH); - pinMode(A11, OUTPUT); - digitalWrite(A11, HIGH); - pinMode(A12, OUTPUT); - digitalWrite(A12, HIGH); - - DDRG |= 0x10; - - // setup encoder - X_IIC_Init(); - Y_IIC_Init(); - Z_IIC_Init(); - delay(10); - -#ifdef SWIFT_TEST_MODE - enable_e0(); -#else - enable_all_steppers(); - servo[0].attach(SERVO0_PIN); - -#endif - delay(1000); - - init_user_mode(); - - init_reference_angle_value(); - update_current_pos(); - - buttons_init(); - - led_R.setPin(LED_PIN); - led_G.setPin(LED_G); - led_B.setPin(LED_B); - - swift_buzzer.setPin(BEEPER_PIN); - swift_buzzer.tone(260, 1000); - - reportServiceInit(); - swift_api_init(); - service.init(); - - -} - -void tickTaskRun() -{ - swift_buzzer.tick(); - button_menu.tick(); - button_play.tick(); - - led_R.tick(); - led_G.tick(); - led_B.tick(); - - pump_run(); - -} - -void swift_run() -{ - - reportServiceRun(); - - service.run(); - - - - if(millis() - tickStartTime >= TICK_INTERVAL) - { - tickStartTime = millis(); - tickTaskRun(); - } -} - -unsigned char getXYZFromAngleOrigin(float& x, float& y, float& z, float rot, float left, float right) -{ - // 閿熸枻鎷稾Y骞抽敓é‚ゆ嫹閿熼åºé—ƒç†·åºœéŽ·çƒ½æ•“é‚ゆ嫹é–? - - - double stretch = MATH_LOWER_ARM * cos(left / MATH_TRANS) + MATH_UPPER_ARM * cos(right / MATH_TRANS) + MATH_L2; - - // 閿熸枻鎷ç©é–¿ç†¸æž»éŽ·çƒ½æ•“é–°ç”¸æ§¦ç”¯î†½å«¹é–¿ç†¸æž»éŽ·çƒ½æ•? - double height = MATH_LOWER_ARM * sin(left / MATH_TRANS) - MATH_UPPER_ARM * sin(right / MATH_TRANS) + MATH_L1; - x = stretch * cos(rot / MATH_TRANS); - y = stretch * sin(rot / MATH_TRANS); - z = height; - - return 0; -} - -float get_current_height() -{ - float angle[3]; - float pos[3]; - - if (!isPowerPlugIn()) - { - MYSERIAL.println("No Power Connected!"); - return ; - } - - for (int i = 0; i < 3; i++) - { - angle[i] = get_current_angle(i); - } - - debugPrint("angle: %f, %f, %f\r\n", angle[X_AXIS], angle[Y_AXIS], angle[Z_AXIS]); - - // get current pos - getXYZFromAngleOrigin(pos[X_AXIS], pos[Y_AXIS], pos[Z_AXIS], angle[X_AXIS], angle[Y_AXIS], angle[Z_AXIS]); - - debugPrint("cur_pos: %f, %f, %f\r\n", pos[X_AXIS], pos[Y_AXIS], pos[Z_AXIS]); - - return pos[2]; -} - -void update_current_pos() -{ - float current_angle[NUM_AXIS]; - - if (!isPowerPlugIn()) - { - MYSERIAL.println("No Power Connected!"); - return ; - } - - for (int i = 0; i < NUM_AXIS; i++) - { - current_angle[i] = get_current_angle(i); - } - - - debugPrint("cur_angles: %f, %f, %f, %f\r\n", current_angle[X_AXIS], current_angle[Y_AXIS], current_angle[Z_AXIS], current_angle[E_AXIS]); - - // get current pos - getXYZFromAngle(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_angle[X_AXIS], current_angle[Y_AXIS], current_angle[Z_AXIS]); - - debugPrint("cur_pos: %f, %f, %f\r\n", current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS]); - - - destination[X_AXIS] = current_position[X_AXIS]; - destination[Y_AXIS] = current_position[Y_AXIS]; - destination[Z_AXIS] = current_position[Z_AXIS]; - - planner.set_position_mm(current_angle[X_AXIS], current_angle[Y_AXIS], current_angle[Z_AXIS]); -} - -uint8_t last_G0_1_cmd = 0; -extern float code_value_float(); -extern uint8_t code_value_byte(); -extern uint16_t code_value_ushort(); - -bool fan_disable = false; - - - - -bool is_fan_disable() -{ - return fan_disable; -} - -bool is_fan_enable() -{ - return !fan_disable; -} - - -void set_fan_disable(bool disable) -{ - fan_disable = disable; -} - -void uarm_gcode_G0() -{ - if (get_user_mode() == USER_MODE_LASER || get_user_mode() == USER_MODE_PEN) - { - while (last_G0_1_cmd != 0 && block_running) idle(); - - last_G0_1_cmd = 0; - - if (get_user_mode() == USER_MODE_LASER) - { - - - - debugPrint("laser off"); - - // turn off laser - analogWrite(FAN_PIN, 0); - } - } -} - -void uarm_gcode_G1() -{ - if (get_user_mode() == USER_MODE_LASER || get_user_mode() == USER_MODE_PEN) - { - while (last_G0_1_cmd == 0 && block_running) idle(); - - last_G0_1_cmd = 1; - - if (get_user_mode() == USER_MODE_LASER) - { - - - static uint8_t power = 255; - - if (code_seen('P')) - { - power = code_value_byte(); - } - - debugPrint("laser on p=%d\r\n", power); - - // turn on laser - analogWrite(FAN_PIN, power); - } - } -} - - - -void reportString(String string) -{ - MYSERIAL.print(string); -} - -void reportButtonEvent(unsigned char buttonId, unsigned char event) -{ - char result[RESULT_BUFFER_SIZE]; - msprintf(result, "@4 B%d V%d\r\n", buttonId, event); - reportString(result); -} - -void reportPos() -{ - char result[128]; - //@3 X154.714 Y194.915 Z10.217\n - //msprintf(result, "@3 X%f Y%f Z%f\r\n", ); - float angle[NUM_AXIS]; - float pos[NUM_AXIS]; - - if (!isPowerPlugIn()) - { - MYSERIAL.println("No Power Connected!"); - return ; - } - - for (int i = 0; i < NUM_AXIS; i++) - { - angle[i] = get_current_angle(i); - } - - debugPrint("angle: %f, %f, %f, %f\r\n", angle[X_AXIS], angle[Y_AXIS], angle[Z_AXIS], angle[E_AXIS]); - - // get current pos - getXYZFromAngle(pos[X_AXIS], pos[Y_AXIS], pos[Z_AXIS], angle[X_AXIS], angle[Y_AXIS], angle[Z_AXIS]); - - debugPrint("cur_pos: %f, %f, %f\r\n", pos[X_AXIS], pos[Y_AXIS], pos[Z_AXIS]); - - msprintf(result, "@3 X%f Y%f Z%f R%f\r\n", pos[X_AXIS], pos[Y_AXIS], pos[Z_AXIS], angle[3]); - - reportString(result); -} - -void rotate_frontend_motor() -{ - float angle = 0; - uint32_t speed = 0; - - - - if (code_seen('V')) - { - angle = code_value_float(); - } - else - { - return; - } - - if (code_seen('F')) - { - speed = code_value_int(); - } - else - { - //return; - } - - - - servo[0].write((int)angle); - -} - - - -void uarm_gcode_M2120() -{ - float interval = 0; - if (code_seen('V')) - { - interval = code_value_float(); - - interval *= 1000; - - if (interval == 0) - { - removeReportService(3); - } - else - { - addReportService(3, interval, reportPos); - } - } -} - -uint8_t uarm_gcode_M2200(char reply[]) -{ - if (get_block_running()) - { - strcpy(reply, "V1"); - } - else - { - strcpy(reply, "V0"); - } - - return E_OK; -} - -void uarm_gcode_M2201() -{ - if (code_seen('N')) - { - uint8_t index = code_value_byte(); - switch(index) - { - case 0: - enable_x(); - break; - - case 1: - enable_y(); - break; - - case 2: - enable_z(); - break; - - case 3: - servo[0].attach(SERVO0_PIN); - break; - - } - } -} - -void uarm_gcode_M2202() -{ - if (code_seen('N')) - { - uint8_t index = code_value_byte(); - switch(index) - { - case 0: - disable_x(); - break; - - case 1: - disable_y(); - break; - - case 2: - disable_z(); - break; - - case 3: - servo[0].detach(); - break; - - } - } -} - -uint8_t uarm_gcode_M2203(char reply[]) -{ - bool attached = false; - if (code_seen('N')) - { - uint8_t index = code_value_byte(); - switch(index) - { - case 0: - attached = (digitalRead(X_ENABLE_PIN) == X_ENABLE_ON); - break; - - case 1: - attached = (digitalRead(Y_ENABLE_PIN) == Y_ENABLE_ON); - break; - - case 2: - attached = (digitalRead(Z_ENABLE_PIN) == Z_ENABLE_ON); - break; - - case 3: - attached = servo[0].attached(); - break; - - } - } - - if (attached) - { - strcpy(reply, "V1"); - } - else - { - strcpy(reply, "V0"); - } - - return E_OK; -} - -void uarm_gcode_M2210() -{ - uint16_t frequency = 1000; - uint16_t duration = 260; - - if (code_seen('F')) - { - frequency = code_value_ushort(); - } - - if (code_seen('T')) - { - duration = code_value_float(); - } - - NOMORE(frequency, 5000); - - swift_buzzer.tone(duration, frequency); -} - -uint8_t uarm_gcode_M2211(char reply[]) -{ - - - int device = 0; - int type = 0; - uint32_t addr = 0; - - - if (code_seen('N')) - { - device = code_value_ushort(); - } - else - { - return E_PARAMETERS_WRONG; - } - - if (code_seen('A')) - { - addr = code_value_ushort(); - } - else - { - return E_PARAMETERS_WRONG; - } - - if (code_seen('T')) - { - type = code_value_ushort(); - } - else - { - return E_PARAMETERS_WRONG; - } - - double resultVal = getE2PROMData(device, addr, type); - - switch(type) - { - case DATA_TYPE_BYTE: - { - int val = resultVal; - msprintf(reply, "V%d", val); - break; - } - case DATA_TYPE_INTEGER: - { - int i_val = resultVal; - msprintf(reply, "V%d", i_val); - break; - } - case DATA_TYPE_FLOAT: - { - double f_val = resultVal; - msprintf(reply, "V%f", f_val); - break; - } - } - - - return E_OK; -} - -void uarm_gcode_M2212() -{ - int type = 0; - int device = 0; - uint32_t addr = 0; - - double value; - - if (code_seen('N')) - { - device = code_value_ushort(); - } - else - { - return; - } - - if (code_seen('A')) - { - addr = code_value_ushort(); - } - else - { - return; - } - - if (code_seen('T')) - { - type = code_value_ushort(); - } - else - { - return; - } - - if (code_seen('V')) - { - value = code_value_float(); - } - else - { - return; - } - - setE2PROMData(device, addr, type, value); - - //replyOK(serialNum); - - return 0; -} - -void uarm_gcode_M2213() -{ - uint16_t value = 0; - if (code_seen('V')) - { - value = code_value_ushort(); - } - else - { - return; - } - - if (value) - { - service.setButtonService(true); - } - else - { - service.setButtonService(false); - } -} - -extern unsigned char inverse_kinematics(const float in_cartesian[3], float angle[3]); -uint8_t uarm_gcode_M2220(char reply[]) -{ - float value[3]; - float angle[3]; - - if (code_seen('X')) - { - value[0] = code_value_float(); - } - else - { - return E_PARAMETERS_WRONG; - } - - if (code_seen('Y')) - { - value[1] = code_value_float(); - } - else - { - return E_PARAMETERS_WRONG; - } - - if (code_seen('Z')) - { - value[2] = code_value_float(); - } - else - { - return E_PARAMETERS_WRONG; - } - - if (inverse_kinematics(value, angle) == 0) - { - - //$n OK B50 L50 R50\n - msprintf(reply, "B%f L%f R%f", angle[X_AXIS], angle[Y_AXIS], angle[Z_AXIS]); - - return E_OK; - } - else - { - return E_OUT_OF_RANGE; - } -} - -uint8_t uarm_gcode_M2221(char reply[]) -{ - float value[3]; - float angle[3]; - - if (code_seen('B')) - { - angle[0] = code_value_float(); - } - else - { - return E_PARAMETERS_WRONG; - } - - if (code_seen('L')) - { - angle[1] = code_value_float(); - } - else - { - return E_PARAMETERS_WRONG; - } - - if (code_seen('R')) - { - angle[2] = code_value_float(); - } - else - { - return E_PARAMETERS_WRONG; - } - - getXYZFromAngle(value[0], value[1], value[2], angle[0], angle[1], angle[2]); - - msprintf(reply, "X%f Y%f Z%f", value[X_AXIS], value[Y_AXIS], value[Z_AXIS]); - - return E_OK; -} - -uint8_t uarm_gcode_M2222(char reply[]) -{ - int i = 0; - float pos[NUM_AXIS]; - float value[NUM_AXIS]; - float angle[NUM_AXIS]; - - LOOP_XYZ(i) - { - if (code_seen(axis_codes[i])) - { - value[i] = code_value_float(); - } - else - { - return E_PARAMETERS_WRONG; - } - } - - uint8_t type = 0; - - if (code_seen('S')) - { - type = code_value_byte() ? 1 : 0; - } - - if (type) - { - get_pos_from_polor(pos, value); - } - else - { - LOOP_XYZ(i) - pos[i] = value[i]; - } - - if (inverse_kinematics(pos, angle) == 0) - { - strcpy(reply, "V1"); - } - else - { - strcpy(reply, "V0"); - } - - return E_OK; - -} - -void uarm_gcode_M2231() -{ - uint8_t value = 0; - - if (code_seen('V')) - { - value = code_value_byte(); - - if (value) - { - pumpOn(); - } - else - { - pumpOff(); - } - } - else - { - return; - } - - -} - - - -void uarm_gcode_M2232() -{ - uint8_t value = 0; - - if (code_seen('V')) - { - value = code_value_byte(); - - if (value) - { - gripperCatch(); - } - else - { - gripperRelease(); - } - } - else - { - return; - } -} - -void uarm_gcode_M2233() -{ - clearMacFlag(); -} - -void uarm_gcode_M2234() -{ - if (code_seen('V')) - { - uint8_t enable = code_value_byte(); - - service.disableBT(enable ? false : true); - } - -} - -void uarm_gcode_M2240() -{ - uint8_t value = 0; - uint8_t pin = 0; - - if (code_seen('N')) - { - pin = code_value_byte(); - } - else - { - return; - } - - if (code_seen('V')) - { - value = code_value_byte(); - } - else - { - return; - } - - if (value) - { - digitalWrite(pin, HIGH); - } - else - { - digitalWrite(pin, LOW); - } -} - -void uarm_gcode_M2300() -{ - uint8_t type; - - if (code_seen('N')) - { - type = code_value_byte(); - } - else - { - return; - } - - initGroveModule(type); -} - -void uarm_gcode_M2301() -{ - uint8_t type; - uint16_t time; - - if (code_seen('N')) - { - type = code_value_byte(); - } - else - { - return; - } - - if (code_seen('V')) - { - time = code_value_ushort(); - } - else - { - return; - } - - setGroveModuleReportInterval(type, time); -} - -void uarm_gcode_M2400() -{ - uint8_t mode = 0; - - if (code_seen('S')) - { - mode = code_value_byte(); - set_user_mode(mode); - update_current_pos(); - } - -} - -uint8_t uarm_gcode_M2401(char reply[]) -{ - uint16_t value[NUM_AXIS]; - - if (!isPowerPlugIn()) - return E_NO_POWER; - - // need unlock code, in case misoperation - if (code_seen('V')) - { - uint16_t value = code_value_ushort(); - - if (value != UNLOCK_NUM) - { - return E_FAIL; - } - } - else - { - return E_FAIL; - } - - for (int i = 0; i < 3; i++) - { - value[i] = get_current_angle_adc(i); - - if (value[i] > 4096) - { - return E_FAIL; - } - } - - - update_reference_angle_value(value); - - update_current_pos(); - - strcpy(reply, ""); - - return E_OK; -} - -void uarm_gcode_M2410() -{ - float value = 0; - if (code_seen('S')) - { - value = code_value_float(); - } - else - { - if (isPowerPlugIn()) - { - value = get_current_height(); - value += 0.3; - } - } - - debugPrint("height: %f\r\n", value); - - if (isPowerPlugIn()) - { - set_height_offset(value); - save_height_offset(value); - - update_current_pos(); - } - -} - -void uarm_gcode_M2411() -{ - float value = 0; - if (code_seen('S')) - { - value = code_value_float(); - - if (isPowerPlugIn()) - { - set_front_end_offset(value); - - update_current_pos(); - } - } -} - - - -// get current angles -uint8_t uarm_gcode_P2200(char reply[]) -{ - float angle[3]; - - for (int i = 0; i < 3; i++) - { - angle[i] = get_current_angle(i); - } - - msprintf(reply, "B%f L%f R%f", angle[X_AXIS], angle[Y_AXIS], angle[Z_AXIS]); - - return E_OK; -} - -uint8_t uarm_gcode_P2201(char reply[]) -{ - msprintf(reply, "V%s", DEVICE_NAME); - - return E_OK; -} - -uint8_t uarm_gcode_P2202(char reply[]) -{ - msprintf(reply, "V%s.%d", HW_VER, getHWSubversion()); - - return E_OK; -} - -uint8_t uarm_gcode_P2203(char reply[]) -{ - - - msprintf(reply, "V%s", SW_VER); - - - return E_OK; -} - -uint8_t uarm_gcode_P2204(char reply[]) -{ - - - msprintf(reply, "V%s", SW_VER); - - - return E_OK; -} - -uint8_t uarm_gcode_P2205(char reply[]) -{ - - - - msprintf(reply, "V%s", getMac()); - - - return E_OK; -} - -uint8_t uarm_gcode_P2206(char reply[]) -{ - float angle; - uint8_t index = 0; - - if (code_seen('N')) - { - index = code_value_byte(); - } - else - { - return E_PARAMETERS_WRONG; - } - - if (index > 3) - return E_OUT_OF_RANGE; - - angle = get_current_angle(index); - - msprintf(reply, "V%f\r\n", angle); - - return E_OK; -} - -uint8_t uarm_gcode_P2220(char reply[]) -{ - msprintf(reply, "X%f Y%f Z%f", current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS]); - - return E_OK; -} - -uint8_t uarm_gcode_P2221(char reply[]) -{ - float polor[3]; - - get_current_pos_polor(polor, current_position); - - msprintf(reply, "S%f R%f H%f", polor[X_AXIS], polor[Y_AXIS], polor[Z_AXIS]); - - return E_OK; -} - -uint8_t uarm_gcode_P2231(char reply[]) -{ - msprintf(reply, "V%d", getPumpStatus()); - - return E_OK; -} - -uint8_t uarm_gcode_P2232(char reply[]) -{ - msprintf(reply, "V%d", getGripperStatus()); - - return E_OK; -} - -uint8_t uarm_gcode_P2233(char reply[]) -{ - msprintf(reply, "V%d", getTip()); - - return E_OK; -} - -uint8_t uarm_gcode_P2234(char reply[]) -{ - msprintf(reply, "V%d", isPowerPlugIn() ? 1 : 0); - - return E_OK; -} - - -uint8_t uarm_gcode_P2240(char reply[]) -{ - uint8_t index = 0; - - if (code_seen('N')) - { - index = code_value_byte(); - } - else - { - return E_PARAMETERS_WRONG; - } - - msprintf(reply, "V%d", digitalRead(index)); - - return E_OK; -} - -uint8_t uarm_gcode_P2241(char reply[]) -{ - uint8_t index = 0; - - if (code_seen('N')) - { - index = code_value_byte(); - } - else - { - return E_PARAMETERS_WRONG; - } - - msprintf(reply, "V%d", analogRead(index)); - - return E_OK; -} - -uint8_t uarm_gcode_P2242(char reply[]) -{ - uint16_t value[3]; - - for (int i = 0; i < 3; i++) - { - value[i] = get_current_angle_adc(i); - } - - msprintf(reply, "B%d L%d R%d", value[0], value[1], value[2]); - - return E_OK; -} - -uint8_t uarm_gcode_P2245(char reply[]) -{ - strcpy(reply, ""); - return E_OK; -} - - -uint8_t uarm_gcode_P2400(char reply[]) -{ - msprintf(reply, "V%d", get_user_mode()); - return E_OK; -} - -#ifdef SWIFT_TEST_MODE -extern uint8_t get_test_result(); -uint8_t uarm_gcode_P2250(char reply[]) -{ - msprintf(reply, "R%d V", get_test_result()); - - strcat(reply, getMac()); - - return E_OK; -} -#endif // SWIFT_TEST_MODE diff --git a/lib/Marlin/uArmSwift.h b/lib/Marlin/uArmSwift.h deleted file mode 100644 index c5dba51..0000000 --- a/lib/Marlin/uArmSwift.h +++ /dev/null @@ -1,121 +0,0 @@ -/** - ****************************************************************************** - * @file uArmSwift.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-15 - ****************************************************************************** - */ - -#ifndef _UARMSWIFT_H_ -#define _UARMSWIFT_H_ - -#include -#include "Marlin.h" -#include "uArmParams.h" -#include "uArmDebug.h" -#include "uArmIIC.h" -#include "X_IIC.h" -#include "Y_IIC.h" -#include "Z_IIC.h" -#include "uArmCalibration.h" -#include "uArmButton.h" -#include "uArmLed.h" - - - - - -void swift_init(); - -void swift_run(); - -bool is_fan_disable(); -bool is_fan_enable(); - -void set_fan_disable(bool disable); - - -void update_current_pos(); - -void set_block_running(bool running); - -bool get_block_running(); - -void reportString(String string); -void reportButtonEvent(unsigned char buttonId, unsigned char event); -void rotate_frontend_motor(); - -void uarm_gcode_G0(); - -void uarm_gcode_G1(); - -void uarm_gcode_M2120(); -uint8_t uarm_gcode_M2200(char reply[]); - -void uarm_gcode_M2201(); -void uarm_gcode_M2202(); -uint8_t uarm_gcode_M2203(char reply[]); - -void uarm_gcode_M2210(); -uint8_t uarm_gcode_M2211(char reply[]); -void uarm_gcode_M2212(); -void uarm_gcode_M2213(); - -uint8_t uarm_gcode_M2220(char reply[]); -uint8_t uarm_gcode_M2221(char reply[]); - -uint8_t uarm_gcode_M2222(char reply[]); - -void uarm_gcode_M2231(); -void uarm_gcode_M2232(); -void uarm_gcode_M2233(); -void uarm_gcode_M2234(); - - - -void uarm_gcode_M2240(); - -void uarm_gcode_M2300(); -void uarm_gcode_M2301(); - -void uarm_gcode_M2400(); -uint8_t uarm_gcode_M2401(char reply[]); -void uarm_gcode_M2410(); -void uarm_gcode_M2411(); - -uint8_t uarm_gcode_M2420(char reply[]); - - -uint8_t uarm_gcode_P2200(char reply[]); -uint8_t uarm_gcode_P2201(char reply[]); -uint8_t uarm_gcode_P2202(char reply[]); -uint8_t uarm_gcode_P2203(char reply[]); -uint8_t uarm_gcode_P2204(char reply[]); -uint8_t uarm_gcode_P2205(char reply[]); -uint8_t uarm_gcode_P2206(char reply[]); - -uint8_t uarm_gcode_P2220(char reply[]); -uint8_t uarm_gcode_P2221(char reply[]); -uint8_t uarm_gcode_P2231(char reply[]); -uint8_t uarm_gcode_P2232(char reply[]); -uint8_t uarm_gcode_P2233(char reply[]); -uint8_t uarm_gcode_P2234(char reply[]); - -uint8_t uarm_gcode_P2240(char reply[]); -uint8_t uarm_gcode_P2241(char reply[]); -uint8_t uarm_gcode_P2242(char reply[]); - -uint8_t uarm_gcode_P2245(char reply[]); -uint8_t uarm_gcode_P2400(char reply[]); - - -#ifdef SWIFT_TEST_MODE -uint8_t uarm_gcode_P2250(char reply[]); -#endif // SWIFT_TEST_MODE - - - - - -#endif // _UARMSWIFT_H_ diff --git a/lib/Marlin/uArmUtils.cpp b/lib/Marlin/uArmUtils.cpp deleted file mode 100644 index 2c3648c..0000000 --- a/lib/Marlin/uArmUtils.cpp +++ /dev/null @@ -1,11 +0,0 @@ -/** - ****************************************************************************** - * @file uArmUtils.cpp - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-15 - ****************************************************************************** - */ - -#include "uArmUtils.h" - diff --git a/lib/Marlin/uArmUtils.h b/lib/Marlin/uArmUtils.h deleted file mode 100644 index 482617e..0000000 --- a/lib/Marlin/uArmUtils.h +++ /dev/null @@ -1,17 +0,0 @@ -/** - ****************************************************************************** - * @file uArmUtils.h - * @author David.Long - * @email xiaokun.long@ufactory.cc - * @date 2017-03-15 - ****************************************************************************** - */ - -#ifndef _UARMUTILS_H_ -#define _UARMUTILS_H_ - -#include -#include "Marlin.h" - - -#endif // _UARMUTILS_H_ diff --git a/lib/Marlin/ultralcd.cpp b/lib/Marlin/ultralcd.cpp deleted file mode 100644 index da214aa..0000000 --- a/lib/Marlin/ultralcd.cpp +++ /dev/null @@ -1,3166 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "ultralcd.h" -#if ENABLED(ULTRA_LCD) -#include "Marlin.h" -#include "language.h" -#include "cardreader.h" -#include "temperature.h" -#include "stepper.h" -#include "configuration_store.h" - -#if ENABLED(PRINTCOUNTER) - #include "printcounter.h" - #include "duration_t.h" -#endif - -int preheatHotendTemp1, preheatBedTemp1, preheatFanSpeed1, - preheatHotendTemp2, preheatBedTemp2, preheatFanSpeed2; - -#if ENABLED(FILAMENT_LCD_DISPLAY) - millis_t previous_lcd_status_ms = 0; -#endif - -uint8_t lcd_status_message_level; -char lcd_status_message[3 * (LCD_WIDTH) + 1] = WELCOME_MSG; // worst case is kana with up to 3*LCD_WIDTH+1 - -#if ENABLED(DOGLCD) - #include "ultralcd_impl_DOGM.h" -#else - #include "ultralcd_impl_HD44780.h" -#endif - -// The main status screen -static void lcd_status_screen(); - -millis_t next_lcd_update_ms; - -uint8_t lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; // Set when the LCD needs to draw, decrements after every draw. Set to 2 in LCD routines so the LCD gets at least 1 full redraw (first redraw is partial) - -#if ENABLED(ULTIPANEL) - - // place-holders for Ki and Kd edits - float raw_Ki, raw_Kd; - - /** - * REVERSE_MENU_DIRECTION - * - * To reverse the menu direction we need a general way to reverse - * the direction of the encoder everywhere. So encoderDirection is - * added to allow the encoder to go the other way. - * - * This behavior is limited to scrolling Menus and SD card listings, - * and is disabled in other contexts. - */ - #if ENABLED(REVERSE_MENU_DIRECTION) - int8_t encoderDirection = 1; - #define ENCODER_DIRECTION_NORMAL() (encoderDirection = 1) - #define ENCODER_DIRECTION_MENUS() (encoderDirection = -1) - #else - #define ENCODER_DIRECTION_NORMAL() ; - #define ENCODER_DIRECTION_MENUS() ; - #endif - - int8_t encoderDiff; // updated from interrupt context and added to encoderPosition every LCD update - - millis_t manual_move_start_time = 0; - int8_t manual_move_axis = (int8_t)NO_AXIS; - #if EXTRUDERS > 1 - int8_t manual_move_e_index = 0; - #else - #define manual_move_e_index 0 - #endif - - bool encoderRateMultiplierEnabled; - int32_t lastEncoderMovementMillis; - - #if HAS_POWER_SWITCH - extern bool powersupply; - #endif - const float manual_feedrate_mm_m[] = MANUAL_FEEDRATE; - static void lcd_main_menu(); - static void lcd_tune_menu(); - static void lcd_prepare_menu(); - static void lcd_move_menu(); - static void lcd_control_menu(); - static void lcd_control_temperature_menu(); - static void lcd_control_temperature_preheat_pla_settings_menu(); - static void lcd_control_temperature_preheat_abs_settings_menu(); - static void lcd_control_motion_menu(); - static void lcd_control_volumetric_menu(); - - #if ENABLED(LCD_INFO_MENU) - #if ENABLED(PRINTCOUNTER) - static void lcd_info_stats_menu(); - #endif - static void lcd_info_thermistors_menu(); - static void lcd_info_board_menu(); - static void lcd_info_menu(); - #endif // LCD_INFO_MENU - - #if ENABLED(FILAMENT_CHANGE_FEATURE) - static void lcd_filament_change_option_menu(); - static void lcd_filament_change_init_message(); - static void lcd_filament_change_unload_message(); - static void lcd_filament_change_insert_message(); - static void lcd_filament_change_load_message(); - static void lcd_filament_change_extrude_message(); - static void lcd_filament_change_resume_message(); - #endif - - #if HAS_LCD_CONTRAST - static void lcd_set_contrast(); - #endif - - #if ENABLED(FWRETRACT) - static void lcd_control_retract_menu(); - #endif - - #if ENABLED(DELTA_CALIBRATION_MENU) - static void lcd_delta_calibrate_menu(); - #endif - - #if ENABLED(MANUAL_BED_LEVELING) - #include "mesh_bed_leveling.h" - #endif - - // Function pointer to menu functions. - typedef void (*screenFunc_t)(); - - // Different types of actions that can be used in menu items. - static void menu_action_back(); - static void menu_action_submenu(screenFunc_t data); - static void menu_action_gcode(const char* pgcode); - static void menu_action_function(screenFunc_t data); - static void menu_action_setting_edit_bool(const char* pstr, bool* ptr); - static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); - static void menu_action_setting_edit_float3(const char* pstr, float* ptr, float minValue, float maxValue); - static void menu_action_setting_edit_float32(const char* pstr, float* ptr, float minValue, float maxValue); - static void menu_action_setting_edit_float43(const char* pstr, float* ptr, float minValue, float maxValue); - static void menu_action_setting_edit_float5(const char* pstr, float* ptr, float minValue, float maxValue); - static void menu_action_setting_edit_float51(const char* pstr, float* ptr, float minValue, float maxValue); - static void menu_action_setting_edit_float52(const char* pstr, float* ptr, float minValue, float maxValue); - static void menu_action_setting_edit_long5(const char* pstr, unsigned long* ptr, unsigned long minValue, unsigned long maxValue); - static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, screenFunc_t callbackFunc); - static void menu_action_setting_edit_callback_int3(const char* pstr, int* ptr, int minValue, int maxValue, screenFunc_t callbackFunc); - static void menu_action_setting_edit_callback_float3(const char* pstr, float* ptr, float minValue, float maxValue, screenFunc_t callbackFunc); - static void menu_action_setting_edit_callback_float32(const char* pstr, float* ptr, float minValue, float maxValue, screenFunc_t callbackFunc); - static void menu_action_setting_edit_callback_float43(const char* pstr, float* ptr, float minValue, float maxValue, screenFunc_t callbackFunc); - static void menu_action_setting_edit_callback_float5(const char* pstr, float* ptr, float minValue, float maxValue, screenFunc_t callbackFunc); - static void menu_action_setting_edit_callback_float51(const char* pstr, float* ptr, float minValue, float maxValue, screenFunc_t callbackFunc); - static void menu_action_setting_edit_callback_float52(const char* pstr, float* ptr, float minValue, float maxValue, screenFunc_t callbackFunc); - static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned long* ptr, unsigned long minValue, unsigned long maxValue, screenFunc_t callbackFunc); - - #if ENABLED(SDSUPPORT) - static void lcd_sdcard_menu(); - static void menu_action_sdfile(const char* filename, char* longFilename); - static void menu_action_sddirectory(const char* filename, char* longFilename); - #endif - - /* Helper macros for menus */ - - #ifndef ENCODER_FEEDRATE_DEADZONE - #define ENCODER_FEEDRATE_DEADZONE 10 - #endif - #ifndef ENCODER_STEPS_PER_MENU_ITEM - #define ENCODER_STEPS_PER_MENU_ITEM 5 - #endif - #ifndef ENCODER_PULSES_PER_STEP - #define ENCODER_PULSES_PER_STEP 1 - #endif - - /** - * START_SCREEN_OR_MENU generates init code for a screen or menu - * - * encoderLine is the position based on the encoder - * encoderTopLine is the top menu line to display - * _lcdLineNr is the index of the LCD line (e.g., 0-3) - * _menuLineNr is the menu item to draw and process - * _thisItemNr is the index of each MENU_ITEM or STATIC_ITEM - * _countedItems is the total number of items in the menu (after one call) - */ - #define START_SCREEN_OR_MENU(LIMIT) \ - ENCODER_DIRECTION_MENUS(); \ - encoderRateMultiplierEnabled = false; \ - if (encoderPosition > 0x8000) encoderPosition = 0; \ - static int8_t _countedItems = 0; \ - int8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \ - if (_countedItems > 0 && encoderLine >= _countedItems - LIMIT) { \ - encoderLine = _countedItems - LIMIT; \ - encoderPosition = encoderLine * (ENCODER_STEPS_PER_MENU_ITEM); \ - } - - #define SCREEN_OR_MENU_LOOP() \ - int8_t _menuLineNr = encoderTopLine, _thisItemNr; \ - for (int8_t _lcdLineNr = 0; _lcdLineNr < LCD_HEIGHT; _lcdLineNr++, _menuLineNr++) { \ - _thisItemNr = 0 - - /** - * START_SCREEN Opening code for a screen having only static items. - * Do simplified scrolling of the entire screen. - * - * START_MENU Opening code for a screen with menu items. - * Scroll as-needed to keep the selected line in view. - * 'wasClicked' indicates the controller was clicked. - */ - #define START_SCREEN() \ - START_SCREEN_OR_MENU(LCD_HEIGHT); \ - encoderTopLine = encoderLine; \ - bool _skipStatic = false; \ - SCREEN_OR_MENU_LOOP() - - #define START_MENU() \ - START_SCREEN_OR_MENU(1); \ - NOMORE(encoderTopLine, encoderLine); \ - if (encoderLine >= encoderTopLine + LCD_HEIGHT) { \ - encoderTopLine = encoderLine - (LCD_HEIGHT - 1); \ - } \ - bool wasClicked = LCD_CLICKED; \ - bool _skipStatic = true; \ - SCREEN_OR_MENU_LOOP() - - /** - * MENU_ITEM generates draw & handler code for a menu item, potentially calling: - * - * lcd_implementation_drawmenu_[type](sel, row, label, arg3...) - * menu_action_[type](arg3...) - * - * Examples: - * MENU_ITEM(back, MSG_WATCH) - * lcd_implementation_drawmenu_back(sel, row, PSTR(MSG_WATCH)) - * menu_action_back() - * - * MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause) - * lcd_implementation_drawmenu_function(sel, row, PSTR(MSG_PAUSE_PRINT), lcd_sdcard_pause) - * menu_action_function(lcd_sdcard_pause) - * - * MENU_ITEM_EDIT(int3, MSG_SPEED, &feedrate_percentage, 10, 999) - * MENU_ITEM(setting_edit_int3, MSG_SPEED, PSTR(MSG_SPEED), &feedrate_percentage, 10, 999) - * lcd_implementation_drawmenu_setting_edit_int3(sel, row, PSTR(MSG_SPEED), PSTR(MSG_SPEED), &feedrate_percentage, 10, 999) - * menu_action_setting_edit_int3(PSTR(MSG_SPEED), &feedrate_percentage, 10, 999) - * - */ - #define _MENU_ITEM_PART_1(TYPE, LABEL, ARGS...) \ - if (_menuLineNr == _thisItemNr) { \ - if (lcdDrawUpdate) \ - lcd_implementation_drawmenu_ ## TYPE(encoderLine == _thisItemNr, _lcdLineNr, PSTR(LABEL), ## ARGS); \ - if (wasClicked && encoderLine == _thisItemNr) { \ - lcd_quick_feedback() - - #define _MENU_ITEM_PART_2(TYPE, ARGS...) \ - menu_action_ ## TYPE(ARGS); \ - return; \ - } \ - } \ - ++_thisItemNr - - #define MENU_ITEM(TYPE, LABEL, ARGS...) do { \ - _skipStatic = false; \ - _MENU_ITEM_PART_1(TYPE, LABEL, ## ARGS); \ - _MENU_ITEM_PART_2(TYPE, ## ARGS); \ - } while(0) - - // Used to print static text with no visible cursor. - #define STATIC_ITEM(LABEL, ARGS...) \ - if (_menuLineNr == _thisItemNr) { \ - if (_skipStatic && encoderLine <= _thisItemNr) { \ - encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \ - lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT; \ - } \ - if (lcdDrawUpdate) \ - lcd_implementation_drawmenu_static(_lcdLineNr, PSTR(LABEL), ## ARGS); \ - } \ - ++_thisItemNr - - #define END_SCREEN() \ - } \ - _countedItems = _thisItemNr - - #define END_MENU() \ - } \ - _countedItems = _thisItemNr; \ - UNUSED(_skipStatic) - - #if ENABLED(ENCODER_RATE_MULTIPLIER) - - //#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value - - /** - * MENU_MULTIPLIER_ITEM generates drawing and handling code for a multiplier menu item - */ - #define MENU_MULTIPLIER_ITEM(type, label, args...) do { \ - _MENU_ITEM_PART_1(type, label, ## args); \ - encoderRateMultiplierEnabled = true; \ - lastEncoderMovementMillis = 0; \ - _MENU_ITEM_PART_2(type, ## args); \ - } while(0) - - #endif //ENCODER_RATE_MULTIPLIER - - #define MENU_ITEM_DUMMY() do { _thisItemNr++; } while(0) - #define MENU_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label), ## args) - #define MENU_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## args) - #if ENABLED(ENCODER_RATE_MULTIPLIER) - #define MENU_MULTIPLIER_ITEM_EDIT(type, label, args...) MENU_MULTIPLIER_ITEM(setting_edit_ ## type, label, PSTR(label), ## args) - #define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_MULTIPLIER_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## args) - #else //!ENCODER_RATE_MULTIPLIER - #define MENU_MULTIPLIER_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label), ## args) - #define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label), ## args) - #endif //!ENCODER_RATE_MULTIPLIER - - /** Used variables to keep track of the menu */ - volatile uint8_t buttons; //the last checked buttons in a bit array. - #if ENABLED(REPRAPWORLD_KEYPAD) - volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values - #endif - - #if ENABLED(LCD_HAS_SLOW_BUTTONS) - volatile uint8_t slow_buttons; // Bits of the pressed buttons. - #endif - int8_t encoderTopLine; /* scroll offset in the current menu */ - millis_t next_button_update_ms; - uint8_t lastEncoderBits; - uint32_t encoderPosition; - #if PIN_EXISTS(SD_DETECT) - uint8_t lcd_sd_status; - #endif - - typedef struct { - screenFunc_t menu_function; - uint32_t encoder_position; - } menuPosition; - - screenFunc_t currentScreen = lcd_status_screen; // pointer to the currently active menu handler - - menuPosition screen_history[10]; - uint8_t screen_history_depth = 0; - - bool ignore_click = false; - bool wait_for_unclick; - bool defer_return_to_status = false; - - // Variables used when editing values. - const char* editLabel; - void* editValue; - int32_t minEditValue, maxEditValue; - screenFunc_t callbackFunc; // call this after editing - - /** - * General function to go directly to a menu - * Remembers the previous position - */ - static void lcd_goto_screen(screenFunc_t screen, const bool feedback = false, const uint32_t encoder = 0) { - if (currentScreen != screen) { - currentScreen = screen; - lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; - encoderPosition = encoder; - if (feedback) lcd_quick_feedback(); - if (screen == lcd_status_screen) { - defer_return_to_status = false; - screen_history_depth = 0; - } - #if ENABLED(LCD_PROGRESS_BAR) - // For LCD_PROGRESS_BAR re-initialize custom characters - lcd_set_custom_characters(screen == lcd_status_screen); - #endif - } - } - - static void lcd_return_to_status() { lcd_goto_screen(lcd_status_screen); } - - inline void lcd_save_previous_menu() { - if (screen_history_depth < COUNT(screen_history)) { - screen_history[screen_history_depth].menu_function = currentScreen; - screen_history[screen_history_depth].encoder_position = encoderPosition; - ++screen_history_depth; - } - } - - static void lcd_goto_previous_menu(bool feedback=false) { - if (screen_history_depth > 0) { - --screen_history_depth; - lcd_goto_screen( - screen_history[screen_history_depth].menu_function, - feedback, - screen_history[screen_history_depth].encoder_position - ); - } - else - lcd_return_to_status(); - } - - void lcd_ignore_click(bool b) { - ignore_click = b; - wait_for_unclick = false; - } - -#endif // ULTIPANEL - -/** - * - * "Info Screen" - * - * This is very display-dependent, so the lcd implementation draws this. - */ - -static void lcd_status_screen() { - - #if ENABLED(ULTIPANEL) - ENCODER_DIRECTION_NORMAL(); - encoderRateMultiplierEnabled = false; - #endif - - #if ENABLED(LCD_PROGRESS_BAR) - millis_t ms = millis(); - #if DISABLED(PROGRESS_MSG_ONCE) - if (ELAPSED(ms, progress_bar_ms + PROGRESS_BAR_MSG_TIME + PROGRESS_BAR_BAR_TIME)) { - progress_bar_ms = ms; - } - #endif - #if PROGRESS_MSG_EXPIRE > 0 - // Handle message expire - if (expire_status_ms > 0) { - #if ENABLED(SDSUPPORT) - if (card.isFileOpen()) { - // Expire the message when printing is active - if (IS_SD_PRINTING) { - if (ELAPSED(ms, expire_status_ms)) { - lcd_status_message[0] = '\0'; - expire_status_ms = 0; - } - } - else { - expire_status_ms += LCD_UPDATE_INTERVAL; - } - } - else { - expire_status_ms = 0; - } - #else - expire_status_ms = 0; - #endif //SDSUPPORT - } - #endif - #endif //LCD_PROGRESS_BAR - - lcd_implementation_status_screen(); - - #if ENABLED(ULTIPANEL) - - bool current_click = LCD_CLICKED; - - if (ignore_click) { - if (wait_for_unclick) { - if (!current_click) - ignore_click = wait_for_unclick = false; - else - current_click = false; - } - else if (current_click) { - lcd_quick_feedback(); - wait_for_unclick = true; - current_click = false; - } - } - - if (current_click) { - lcd_goto_screen(lcd_main_menu, true); - lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. - #if ENABLED(LCD_PROGRESS_BAR) && ENABLED(ULTIPANEL) - currentScreen == lcd_status_screen - #endif - ); - #if ENABLED(FILAMENT_LCD_DISPLAY) - previous_lcd_status_ms = millis(); // get status message to show up for a while - #endif - } - - #if ENABLED(ULTIPANEL_FEEDMULTIPLY) - int new_frm = feedrate_percentage + (int32_t)encoderPosition; - // Dead zone at 100% feedrate - if ((feedrate_percentage < 100 && new_frm > 100) || (feedrate_percentage > 100 && new_frm < 100)) { - feedrate_percentage = 100; - encoderPosition = 0; - } - else if (feedrate_percentage == 100) { - if ((int32_t)encoderPosition > ENCODER_FEEDRATE_DEADZONE) { - feedrate_percentage += (int32_t)encoderPosition - (ENCODER_FEEDRATE_DEADZONE); - encoderPosition = 0; - } - else if ((int32_t)encoderPosition < -(ENCODER_FEEDRATE_DEADZONE)) { - feedrate_percentage += (int32_t)encoderPosition + ENCODER_FEEDRATE_DEADZONE; - encoderPosition = 0; - } - } - else { - feedrate_percentage = new_frm; - encoderPosition = 0; - } - #endif // ULTIPANEL_FEEDMULTIPLY - - feedrate_percentage = constrain(feedrate_percentage, 10, 999); - - #endif //ULTIPANEL -} - -/** - * - * draw the kill screen - * - */ -void kill_screen(const char* lcd_msg) { - lcd_init(); - lcd_setalertstatuspgm(lcd_msg); - #if ENABLED(DOGLCD) - u8g.firstPage(); - do { - lcd_kill_screen(); - } while (u8g.nextPage()); - #else - lcd_kill_screen(); - #endif -} - -#if ENABLED(ULTIPANEL) - - inline void line_to_current(AxisEnum axis) { - #if ENABLED(DELTA) - inverse_kinematics(current_position); - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], MMM_TO_MMS(manual_feedrate_mm_m[axis]), active_extruder); - #else // !DELTA - planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMM_TO_MMS(manual_feedrate_mm_m[axis]), active_extruder); - #endif // !DELTA - } - - #if ENABLED(SDSUPPORT) - - static void lcd_sdcard_pause() { - card.pauseSDPrint(); - print_job_timer.pause(); - } - - static void lcd_sdcard_resume() { - card.startFileprint(); - print_job_timer.start(); - } - - static void lcd_sdcard_stop() { - card.stopSDPrint(); - clear_command_queue(); - quickstop_stepper(); - print_job_timer.stop(); - thermalManager.autotempShutdown(); - wait_for_heatup = false; - lcd_setstatus(MSG_PRINT_ABORTED, true); - } - - #endif //SDSUPPORT - - /** - * - * "Main" menu - * - */ - - static void lcd_main_menu() { - START_MENU(); - MENU_ITEM(back, MSG_WATCH); - if (planner.movesplanned() || IS_SD_PRINTING) { - MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu); - } - else { - MENU_ITEM(submenu, MSG_PREPARE, lcd_prepare_menu); - #if ENABLED(DELTA_CALIBRATION_MENU) - MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); - #endif - } - MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu); - - #if ENABLED(SDSUPPORT) - if (card.cardOK) { - if (card.isFileOpen()) { - if (card.sdprinting) - MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause); - else - MENU_ITEM(function, MSG_RESUME_PRINT, lcd_sdcard_resume); - MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop); - } - else { - MENU_ITEM(submenu, MSG_CARD_MENU, lcd_sdcard_menu); - #if !PIN_EXISTS(SD_DETECT) - MENU_ITEM(gcode, MSG_CNG_SDCARD, PSTR("M21")); // SD-card changed by user - #endif - } - } - else { - MENU_ITEM(submenu, MSG_NO_CARD, lcd_sdcard_menu); - #if !PIN_EXISTS(SD_DETECT) - MENU_ITEM(gcode, MSG_INIT_SDCARD, PSTR("M21")); // Manually initialize the SD-card via user interface - #endif - } - #endif //SDSUPPORT - - #if ENABLED(LCD_INFO_MENU) - MENU_ITEM(submenu, MSG_INFO_MENU, lcd_info_menu); - #endif - - END_MENU(); - } - - /** - * - * "Tune" submenu items - * - */ - - /** - * Set the home offset based on the current_position - */ - void lcd_set_home_offsets() { - // M428 Command - enqueue_and_echo_commands_P(PSTR("M428")); - lcd_return_to_status(); - } - - #if ENABLED(BABYSTEPPING) - - long babysteps_done = 0; - - static void _lcd_babystep(const AxisEnum axis, const char* msg) { - if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; } - ENCODER_DIRECTION_NORMAL(); - if (encoderPosition) { - int babystep_increment = (int32_t)encoderPosition * BABYSTEP_MULTIPLICATOR; - encoderPosition = 0; - lcdDrawUpdate = LCDVIEW_REDRAW_NOW; - thermalManager.babystep_axis(axis, babystep_increment); - babysteps_done += babystep_increment; - } - if (lcdDrawUpdate) - lcd_implementation_drawedit(msg, ftostr43sign( - ((1000 * babysteps_done) * planner.steps_to_mm[axis]) * 0.001f - )); - } - - #if ENABLED(BABYSTEP_XY) - static void _lcd_babystep_x() { _lcd_babystep(X_AXIS, PSTR(MSG_BABYSTEPPING_X)); } - static void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, PSTR(MSG_BABYSTEPPING_Y)); } - static void lcd_babystep_x() { babysteps_done = 0; lcd_goto_screen(_lcd_babystep_x); } - static void lcd_babystep_y() { babysteps_done = 0; lcd_goto_screen(_lcd_babystep_y); } - #endif - static void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, PSTR(MSG_BABYSTEPPING_Z)); } - static void lcd_babystep_z() { babysteps_done = 0; lcd_goto_screen(_lcd_babystep_z); } - - #endif //BABYSTEPPING - - /** - * Watch temperature callbacks - */ - #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 - #if TEMP_SENSOR_0 != 0 - void watch_temp_callback_E0() { thermalManager.start_watching_heater(0); } - #endif - #if HOTENDS > 1 && TEMP_SENSOR_1 != 0 - void watch_temp_callback_E1() { thermalManager.start_watching_heater(1); } - #endif // HOTENDS > 1 - #if HOTENDS > 2 && TEMP_SENSOR_2 != 0 - void watch_temp_callback_E2() { thermalManager.start_watching_heater(2); } - #endif // HOTENDS > 2 - #if HOTENDS > 3 && TEMP_SENSOR_3 != 0 - void watch_temp_callback_E3() { thermalManager.start_watching_heater(3); } - #endif // HOTENDS > 3 - #else - #if TEMP_SENSOR_0 != 0 - void watch_temp_callback_E0() {} - #endif - #if HOTENDS > 1 && TEMP_SENSOR_1 != 0 - void watch_temp_callback_E1() {} - #endif // HOTENDS > 1 - #if HOTENDS > 2 && TEMP_SENSOR_2 != 0 - void watch_temp_callback_E2() {} - #endif // HOTENDS > 2 - #if HOTENDS > 3 && TEMP_SENSOR_3 != 0 - void watch_temp_callback_E3() {} - #endif // HOTENDS > 3 - #endif - - #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 - #if TEMP_SENSOR_BED != 0 - void watch_temp_callback_bed() { thermalManager.start_watching_bed(); } - #endif - #else - #if TEMP_SENSOR_BED != 0 - void watch_temp_callback_bed() {} - #endif - #endif - - /** - * - * "Tune" submenu - * - */ - static void lcd_tune_menu() { - START_MENU(); - - // - // ^ Main - // - MENU_ITEM(back, MSG_MAIN); - - // - // Speed: - // - MENU_ITEM_EDIT(int3, MSG_SPEED, &feedrate_percentage, 10, 999); - - // Manual bed leveling, Bed Z: - #if ENABLED(MANUAL_BED_LEVELING) - MENU_ITEM_EDIT(float43, MSG_BED_Z, &mbl.z_offset, -1, 1); - #endif - - // - // Nozzle: - // Nozzle [1-4]: - // - #if HOTENDS == 1 - #if TEMP_SENSOR_0 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE, &thermalManager.target_temperature[0], 0, HEATER_0_MAXTEMP - 15, watch_temp_callback_E0); - #endif - #else //HOTENDS > 1 - #if TEMP_SENSOR_0 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N1, &thermalManager.target_temperature[0], 0, HEATER_0_MAXTEMP - 15, watch_temp_callback_E0); - #endif - #if TEMP_SENSOR_1 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N2, &thermalManager.target_temperature[1], 0, HEATER_1_MAXTEMP - 15, watch_temp_callback_E1); - #endif - #if HOTENDS > 2 - #if TEMP_SENSOR_2 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N3, &thermalManager.target_temperature[2], 0, HEATER_2_MAXTEMP - 15, watch_temp_callback_E2); - #endif - #if HOTENDS > 3 - #if TEMP_SENSOR_3 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N4, &thermalManager.target_temperature[3], 0, HEATER_3_MAXTEMP - 15, watch_temp_callback_E3); - #endif - #endif // HOTENDS > 3 - #endif // HOTENDS > 2 - #endif // HOTENDS > 1 - - // - // Bed: - // - #if TEMP_SENSOR_BED != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_BED, &thermalManager.target_temperature_bed, 0, BED_MAXTEMP - 15, watch_temp_callback_bed); - #endif - - // - // Fan Speed: - // - #if FAN_COUNT > 0 - #if HAS_FAN0 - #if FAN_COUNT > 1 - #define MSG_1ST_FAN_SPEED MSG_FAN_SPEED " 1" - #else - #define MSG_1ST_FAN_SPEED MSG_FAN_SPEED - #endif - MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_1ST_FAN_SPEED, &fanSpeeds[0], 0, 255); - #endif - #if HAS_FAN1 - MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED " 2", &fanSpeeds[1], 0, 255); - #endif - #if HAS_FAN2 - MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED " 3", &fanSpeeds[2], 0, 255); - #endif - #endif // FAN_COUNT > 0 - - // - // Flow: - // Flow 1: - // Flow 2: - // Flow 3: - // Flow 4: - // - #if EXTRUDERS == 1 - MENU_ITEM_EDIT(int3, MSG_FLOW, &extruder_multiplier[0], 10, 999); - #else // EXTRUDERS > 1 - MENU_ITEM_EDIT(int3, MSG_FLOW, &extruder_multiplier[active_extruder], 10, 999); - MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N1, &extruder_multiplier[0], 10, 999); - MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N2, &extruder_multiplier[1], 10, 999); - #if EXTRUDERS > 2 - MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N3, &extruder_multiplier[2], 10, 999); - #if EXTRUDERS > 3 - MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N4, &extruder_multiplier[3], 10, 999); - #endif //EXTRUDERS > 3 - #endif //EXTRUDERS > 2 - #endif //EXTRUDERS > 1 - - // - // Babystep X: - // Babystep Y: - // Babystep Z: - // - #if ENABLED(BABYSTEPPING) - #if ENABLED(BABYSTEP_XY) - MENU_ITEM(submenu, MSG_BABYSTEP_X, lcd_babystep_x); - MENU_ITEM(submenu, MSG_BABYSTEP_Y, lcd_babystep_y); - #endif //BABYSTEP_XY - MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z); - #endif - - // - // Change filament - // - #if ENABLED(FILAMENT_CHANGE_FEATURE) - MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600")); - #endif - - END_MENU(); - } - - /** - * - * "Prepare" submenu items - * - */ - void _lcd_preheat(int endnum, const float temph, const float tempb, const int fan) { - if (temph > 0) thermalManager.setTargetHotend(temph, endnum); - #if TEMP_SENSOR_BED != 0 - thermalManager.setTargetBed(tempb); - #else - UNUSED(tempb); - #endif - #if FAN_COUNT > 0 - #if FAN_COUNT > 1 - fanSpeeds[active_extruder < FAN_COUNT ? active_extruder : 0] = fan; - #else - fanSpeeds[0] = fan; - #endif - #else - UNUSED(fan); - #endif - lcd_return_to_status(); - } - - #if TEMP_SENSOR_0 != 0 - void lcd_preheat_pla0() { _lcd_preheat(0, preheatHotendTemp1, preheatBedTemp1, preheatFanSpeed1); } - void lcd_preheat_abs0() { _lcd_preheat(0, preheatHotendTemp2, preheatBedTemp2, preheatFanSpeed2); } - #endif - - #if HOTENDS > 1 - void lcd_preheat_pla1() { _lcd_preheat(1, preheatHotendTemp1, preheatBedTemp1, preheatFanSpeed1); } - void lcd_preheat_abs1() { _lcd_preheat(1, preheatHotendTemp2, preheatBedTemp2, preheatFanSpeed2); } - #if HOTENDS > 2 - void lcd_preheat_pla2() { _lcd_preheat(2, preheatHotendTemp1, preheatBedTemp1, preheatFanSpeed1); } - void lcd_preheat_abs2() { _lcd_preheat(2, preheatHotendTemp2, preheatBedTemp2, preheatFanSpeed2); } - #if HOTENDS > 3 - void lcd_preheat_pla3() { _lcd_preheat(3, preheatHotendTemp1, preheatBedTemp1, preheatFanSpeed1); } - void lcd_preheat_abs3() { _lcd_preheat(3, preheatHotendTemp2, preheatBedTemp2, preheatFanSpeed2); } - #endif - #endif - - void lcd_preheat_pla0123() { - #if HOTENDS > 1 - thermalManager.setTargetHotend(preheatHotendTemp1, 1); - #if HOTENDS > 2 - thermalManager.setTargetHotend(preheatHotendTemp1, 2); - #if HOTENDS > 3 - thermalManager.setTargetHotend(preheatHotendTemp1, 3); - #endif - #endif - #endif - lcd_preheat_pla0(); - } - void lcd_preheat_abs0123() { - #if HOTENDS > 1 - thermalManager.setTargetHotend(preheatHotendTemp2, 1); - #if HOTENDS > 2 - thermalManager.setTargetHotend(preheatHotendTemp2, 2); - #if HOTENDS > 3 - thermalManager.setTargetHotend(preheatHotendTemp2, 3); - #endif - #endif - #endif - lcd_preheat_abs0(); - } - - #endif // HOTENDS > 1 - - #if TEMP_SENSOR_BED != 0 - void lcd_preheat_pla_bedonly() { _lcd_preheat(0, 0, preheatBedTemp1, preheatFanSpeed1); } - void lcd_preheat_abs_bedonly() { _lcd_preheat(0, 0, preheatBedTemp2, preheatFanSpeed2); } - #endif - - #if TEMP_SENSOR_0 != 0 && (TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_BED != 0) - - static void lcd_preheat_pla_menu() { - START_MENU(); - MENU_ITEM(back, MSG_PREPARE); - #if HOTENDS == 1 - MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_pla0); - #else - MENU_ITEM(function, MSG_PREHEAT_1_N MSG_H1, lcd_preheat_pla0); - MENU_ITEM(function, MSG_PREHEAT_1_N MSG_H2, lcd_preheat_pla1); - #if HOTENDS > 2 - MENU_ITEM(function, MSG_PREHEAT_1_N MSG_H3, lcd_preheat_pla2); - #if HOTENDS > 3 - MENU_ITEM(function, MSG_PREHEAT_1_N MSG_H4, lcd_preheat_pla3); - #endif - #endif - MENU_ITEM(function, MSG_PREHEAT_1_ALL, lcd_preheat_pla0123); - #endif - #if TEMP_SENSOR_BED != 0 - MENU_ITEM(function, MSG_PREHEAT_1_BEDONLY, lcd_preheat_pla_bedonly); - #endif - END_MENU(); - } - - static void lcd_preheat_abs_menu() { - START_MENU(); - MENU_ITEM(back, MSG_PREPARE); - #if HOTENDS == 1 - MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_abs0); - #else - MENU_ITEM(function, MSG_PREHEAT_2_N MSG_H1, lcd_preheat_abs0); - MENU_ITEM(function, MSG_PREHEAT_2_N MSG_H2, lcd_preheat_abs1); - #if HOTENDS > 2 - MENU_ITEM(function, MSG_PREHEAT_2_N MSG_H3, lcd_preheat_abs2); - #if HOTENDS > 3 - MENU_ITEM(function, MSG_PREHEAT_2_N MSG_H4, lcd_preheat_abs3); - #endif - #endif - MENU_ITEM(function, MSG_PREHEAT_2_ALL, lcd_preheat_abs0123); - #endif - #if TEMP_SENSOR_BED != 0 - MENU_ITEM(function, MSG_PREHEAT_2_BEDONLY, lcd_preheat_abs_bedonly); - #endif - END_MENU(); - } - - #endif // TEMP_SENSOR_0 && (TEMP_SENSOR_1 || TEMP_SENSOR_2 || TEMP_SENSOR_3 || TEMP_SENSOR_BED) - - void lcd_cooldown() { - #if FAN_COUNT > 0 - for (uint8_t i = 0; i < FAN_COUNT; i++) fanSpeeds[i] = 0; - #endif - thermalManager.disable_all_heaters(); - lcd_return_to_status(); - } - - #if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) - - static void lcd_autostart_sd() { - card.autostart_index = 0; - card.setroot(); - card.checkautostart(true); - } - - #endif - - #if ENABLED(MANUAL_BED_LEVELING) - - /** - * - * "Prepare" > "Bed Leveling" handlers - * - */ - - static uint8_t _lcd_level_bed_position; - - // Utility to go to the next mesh point - // A raise is added between points if Z_HOMING_HEIGHT is in use - // Note: During Manual Bed Leveling the homed Z position is MESH_HOME_SEARCH_Z - // Z position will be restored with the final action, a G28 - inline void _mbl_goto_xy(float x, float y) { - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z + Z_HOMING_HEIGHT; - line_to_current(Z_AXIS); - current_position[X_AXIS] = x + home_offset[X_AXIS]; - current_position[Y_AXIS] = y + home_offset[Y_AXIS]; - line_to_current(manual_feedrate_mm_m[X_AXIS] <= manual_feedrate_mm_m[Y_AXIS] ? X_AXIS : Y_AXIS); - #if Z_HOMING_HEIGHT > 0 - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z; // How do condition and action match? - line_to_current(Z_AXIS); - #endif - stepper.synchronize(); - } - - static void _lcd_level_goto_next_point(); - - static void _lcd_level_bed_done() { - if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_DONE)); - lcdDrawUpdate = - #if ENABLED(DOGLCD) - LCDVIEW_CALL_REDRAW_NEXT - #else - LCDVIEW_CALL_NO_REDRAW - #endif - ; - } - - /** - * Step 7: Get the Z coordinate, then goto next point or exit - */ - static void _lcd_level_bed_get_z() { - ENCODER_DIRECTION_NORMAL(); - - // Encoder wheel adjusts the Z position - if (encoderPosition) { - refresh_cmd_timeout(); - current_position[Z_AXIS] += float((int32_t)encoderPosition) * (MBL_Z_STEP); - NOLESS(current_position[Z_AXIS], 0); - NOMORE(current_position[Z_AXIS], MESH_HOME_SEARCH_Z * 2); - line_to_current(Z_AXIS); - lcdDrawUpdate = - #if ENABLED(DOGLCD) - LCDVIEW_CALL_REDRAW_NEXT - #else - LCDVIEW_REDRAW_NOW - #endif - ; - encoderPosition = 0; - } - - static bool debounce_click = false; - if (LCD_CLICKED) { - if (!debounce_click) { - debounce_click = true; // ignore multiple "clicks" in a row - mbl.set_zigzag_z(_lcd_level_bed_position++, current_position[Z_AXIS]); - if (_lcd_level_bed_position == (MESH_NUM_X_POINTS) * (MESH_NUM_Y_POINTS)) { - lcd_goto_screen(_lcd_level_bed_done, true); - - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z + Z_HOMING_HEIGHT; - line_to_current(Z_AXIS); - stepper.synchronize(); - - mbl.set_has_mesh(true); - enqueue_and_echo_commands_P(PSTR("G28")); - lcd_return_to_status(); - //LCD_MESSAGEPGM(MSG_LEVEL_BED_DONE); - #if HAS_BUZZER - lcd_buzz(200, 659); - lcd_buzz(200, 698); - #endif - } - else { - lcd_goto_screen(_lcd_level_goto_next_point, true); - } - } - } - else { - debounce_click = false; - } - - // Update on first display, then only on updates to Z position - // Show message above on clicks instead - if (lcdDrawUpdate) { - float v = current_position[Z_AXIS] - MESH_HOME_SEARCH_Z; - lcd_implementation_drawedit(PSTR(MSG_MOVE_Z), ftostr43sign(v + (v < 0 ? -0.0001 : 0.0001), '+')); - } - - } - - /** - * Step 6: Display "Next point: 1 / 9" while waiting for move to finish - */ - static void _lcd_level_bed_moving() { - if (lcdDrawUpdate) { - char msg[10]; - sprintf_P(msg, PSTR("%i / %u"), (int)(_lcd_level_bed_position + 1), (MESH_NUM_X_POINTS) * (MESH_NUM_Y_POINTS)); - lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_NEXT_POINT), msg); - } - - lcdDrawUpdate = - #if ENABLED(DOGLCD) - LCDVIEW_CALL_REDRAW_NEXT - #else - LCDVIEW_CALL_NO_REDRAW - #endif - ; - } - - /** - * Step 5: Initiate a move to the next point - */ - static void _lcd_level_goto_next_point() { - // Set the menu to display ahead of blocking call - lcd_goto_screen(_lcd_level_bed_moving); - - // _mbl_goto_xy runs the menu loop until the move is done - int8_t px, py; - mbl.zigzag(_lcd_level_bed_position, px, py); - _mbl_goto_xy(mbl.get_probe_x(px), mbl.get_probe_y(py)); - - // After the blocking function returns, change menus - lcd_goto_screen(_lcd_level_bed_get_z); - } - - /** - * Step 4: Display "Click to Begin", wait for click - * Move to the first probe position - */ - static void _lcd_level_bed_homing_done() { - if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_WAITING)); - if (LCD_CLICKED) { - _lcd_level_bed_position = 0; - current_position[Z_AXIS] = MESH_HOME_SEARCH_Z - #if Z_HOME_DIR > 0 - + Z_MAX_POS - #endif - ; - planner.set_position_mm(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - lcd_goto_screen(_lcd_level_goto_next_point, true); - } - } - - /** - * Step 3: Display "Homing XYZ" - Wait for homing to finish - */ - static void _lcd_level_bed_homing() { - if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_HOMING), NULL); - lcdDrawUpdate = - #if ENABLED(DOGLCD) - LCDVIEW_CALL_REDRAW_NEXT - #else - LCDVIEW_CALL_NO_REDRAW - #endif - ; - if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) - lcd_goto_screen(_lcd_level_bed_homing_done); - } - - /** - * Step 2: Continue Bed Leveling... - */ - static void _lcd_level_bed_continue() { - defer_return_to_status = true; - axis_homed[X_AXIS] = axis_homed[Y_AXIS] = axis_homed[Z_AXIS] = false; - mbl.reset(); - enqueue_and_echo_commands_P(PSTR("G28")); - lcd_goto_screen(_lcd_level_bed_homing); - } - - /** - * Step 1: MBL entry-point: "Cancel" or "Level Bed" - */ - static void lcd_level_bed() { - START_MENU(); - MENU_ITEM(back, MSG_LEVEL_BED_CANCEL); - MENU_ITEM(submenu, MSG_LEVEL_BED, _lcd_level_bed_continue); - END_MENU(); - } - - #endif // MANUAL_BED_LEVELING - - /** - * - * "Prepare" submenu - * - */ - - static void lcd_prepare_menu() { - START_MENU(); - - // - // ^ Main - // - MENU_ITEM(back, MSG_MAIN); - - // - // Auto Home - // - MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); - #if ENABLED(INDIVIDUAL_AXIS_HOMING_MENU) - MENU_ITEM(gcode, MSG_AUTO_HOME_X, PSTR("G28 X")); - MENU_ITEM(gcode, MSG_AUTO_HOME_Y, PSTR("G28 Y")); - MENU_ITEM(gcode, MSG_AUTO_HOME_Z, PSTR("G28 Z")); - #endif - - // - // Set Home Offsets - // - MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets); - //MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0")); - - // - // Level Bed - // - #if ENABLED(AUTO_BED_LEVELING_FEATURE) - MENU_ITEM(gcode, MSG_LEVEL_BED, - axis_homed[X_AXIS] && axis_homed[Y_AXIS] ? PSTR("G29") : PSTR("G28\nG29") - ); - #elif ENABLED(MANUAL_BED_LEVELING) - MENU_ITEM(submenu, MSG_LEVEL_BED, lcd_level_bed); - #endif - - // - // Move Axis - // - MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu); - - // - // Disable Steppers - // - MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); - - // - // Preheat PLA - // Preheat ABS - // - #if TEMP_SENSOR_0 != 0 - #if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_BED != 0 - MENU_ITEM(submenu, MSG_PREHEAT_1, lcd_preheat_pla_menu); - MENU_ITEM(submenu, MSG_PREHEAT_2, lcd_preheat_abs_menu); - #else - MENU_ITEM(function, MSG_PREHEAT_1, lcd_preheat_pla0); - MENU_ITEM(function, MSG_PREHEAT_2, lcd_preheat_abs0); - #endif - #endif - - // - // Cooldown - // - MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown); - - // - // Switch power on/off - // - #if HAS_POWER_SWITCH - if (powersupply) - MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81")); - else - MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80")); - #endif - - // - // Autostart - // - #if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART) - MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); - #endif - - END_MENU(); - } - - #if ENABLED(DELTA_CALIBRATION_MENU) - - static void lcd_delta_calibrate_menu() { - START_MENU(); - MENU_ITEM(back, MSG_MAIN); - MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); - MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_X, PSTR("G0 F8000 X-77.94 Y-45 Z0")); - MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_Y, PSTR("G0 F8000 X77.94 Y-45 Z0")); - MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_Z, PSTR("G0 F8000 X0 Y90 Z0")); - MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_CENTER, PSTR("G0 F8000 X0 Y0 Z0")); - END_MENU(); - } - - #endif // DELTA_CALIBRATION_MENU - - float move_menu_scale; - - /** - * If the most recent manual move hasn't been fed to the planner yet, - * and the planner can accept one, send immediately - */ - inline void manage_manual_move() { - if (manual_move_axis != (int8_t)NO_AXIS && ELAPSED(millis(), manual_move_start_time) && !planner.is_full()) { - #if ENABLED(DELTA) - inverse_kinematics(current_position); - planner.buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], MMM_TO_MMS(manual_feedrate_mm_m[manual_move_axis]), manual_move_e_index); - #else - planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMM_TO_MMS(manual_feedrate_mm_m[manual_move_axis]), manual_move_e_index); - #endif - manual_move_axis = (int8_t)NO_AXIS; - } - } - - /** - * Set a flag that lcd_update() should start a move - * to "current_position" after a short delay. - */ - inline void manual_move_to_current(AxisEnum axis - #if E_MANUAL > 1 - , int8_t eindex=-1 - #endif - ) { - #if E_MANUAL > 1 - if (axis == E_AXIS) manual_move_e_index = eindex >= 0 ? eindex : active_extruder; - #endif - manual_move_start_time = millis() + (move_menu_scale < 0.99 ? 0UL : 250UL); // delay for bigger moves - manual_move_axis = (int8_t)axis; - } - - /** - * - * "Prepare" > "Move Axis" submenu - * - */ - - static void _lcd_move_xyz(const char* name, AxisEnum axis, float min, float max) { - if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; } - ENCODER_DIRECTION_NORMAL(); - if (encoderPosition) { - refresh_cmd_timeout(); - current_position[axis] += float((int32_t)encoderPosition) * move_menu_scale; - if (min_software_endstops) NOLESS(current_position[axis], min); - if (max_software_endstops) NOMORE(current_position[axis], max); - encoderPosition = 0; - manual_move_to_current(axis); - lcdDrawUpdate = LCDVIEW_REDRAW_NOW; - } - if (lcdDrawUpdate) lcd_implementation_drawedit(name, ftostr41sign(current_position[axis])); - } - #if ENABLED(DELTA) - static float delta_clip_radius_2 = (DELTA_PRINTABLE_RADIUS) * (DELTA_PRINTABLE_RADIUS); - static int delta_clip( float a ) { return sqrt(delta_clip_radius_2 - sq(a)); } - static void lcd_move_x() { int clip = delta_clip(current_position[Y_AXIS]); _lcd_move_xyz(PSTR(MSG_MOVE_X), X_AXIS, max(sw_endstop_min[X_AXIS], -clip), min(sw_endstop_max[X_AXIS], clip)); } - static void lcd_move_y() { int clip = delta_clip(current_position[X_AXIS]); _lcd_move_xyz(PSTR(MSG_MOVE_Y), Y_AXIS, max(sw_endstop_min[Y_AXIS], -clip), min(sw_endstop_max[Y_AXIS], clip)); } - #else - static void lcd_move_x() { _lcd_move_xyz(PSTR(MSG_MOVE_X), X_AXIS, sw_endstop_min[X_AXIS], sw_endstop_max[X_AXIS]); } - static void lcd_move_y() { _lcd_move_xyz(PSTR(MSG_MOVE_Y), Y_AXIS, sw_endstop_min[Y_AXIS], sw_endstop_max[Y_AXIS]); } - #endif - static void lcd_move_z() { _lcd_move_xyz(PSTR(MSG_MOVE_Z), Z_AXIS, sw_endstop_min[Z_AXIS], sw_endstop_max[Z_AXIS]); } - static void _lcd_move_e( - #if E_MANUAL > 1 - int8_t eindex=-1 - #endif - ) { - if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; } - ENCODER_DIRECTION_NORMAL(); - if (encoderPosition) { - current_position[E_AXIS] += float((int32_t)encoderPosition) * move_menu_scale; - encoderPosition = 0; - manual_move_to_current(E_AXIS - #if E_MANUAL > 1 - , eindex - #endif - ); - lcdDrawUpdate = LCDVIEW_REDRAW_NOW; - } - if (lcdDrawUpdate) { - PGM_P pos_label; - #if E_MANUAL == 1 - pos_label = PSTR(MSG_MOVE_E); - #else - switch (eindex) { - default: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E1); break; - case 1: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E2); break; - #if E_MANUAL > 2 - case 2: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E3); break; - #if E_MANUAL > 3 - case 3: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E4); break; - #endif - #endif - } - #endif - lcd_implementation_drawedit(pos_label, ftostr41sign(current_position[E_AXIS])); - } - } - - static void lcd_move_e() { _lcd_move_e(); } - #if E_MANUAL > 1 - static void lcd_move_e0() { _lcd_move_e(0); } - static void lcd_move_e1() { _lcd_move_e(1); } - #if E_MANUAL > 2 - static void lcd_move_e2() { _lcd_move_e(2); } - #if E_MANUAL > 3 - static void lcd_move_e3() { _lcd_move_e(3); } - #endif - #endif - #endif - - /** - * - * "Prepare" > "Move Xmm" > "Move XYZ" submenu - * - */ - - #if ENABLED(DELTA) || ENABLED(SCARA) - #define _MOVE_XYZ_ALLOWED (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) - #else - #define _MOVE_XYZ_ALLOWED true - #endif - - static void _lcd_move_menu_axis() { - START_MENU(); - MENU_ITEM(back, MSG_MOVE_AXIS); - - if (_MOVE_XYZ_ALLOWED) { - MENU_ITEM(submenu, MSG_MOVE_X, lcd_move_x); - MENU_ITEM(submenu, MSG_MOVE_Y, lcd_move_y); - } - - if (move_menu_scale < 10.0) { - if (_MOVE_XYZ_ALLOWED) MENU_ITEM(submenu, MSG_MOVE_Z, lcd_move_z); - - #if ENABLED(SWITCHING_EXTRUDER) - if (active_extruder) - MENU_ITEM(gcode, MSG_SELECT MSG_E1, PSTR("T0")); - else - MENU_ITEM(gcode, MSG_SELECT MSG_E2, PSTR("T1")); - #endif - - MENU_ITEM(submenu, MSG_MOVE_E, lcd_move_e); - #if E_MANUAL > 1 - MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E1, lcd_move_e0); - MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E2, lcd_move_e1); - #if E_MANUAL > 2 - MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E3, lcd_move_e2); - #if E_MANUAL > 3 - MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E4, lcd_move_e3); - #endif - #endif - #endif - } - END_MENU(); - } - - static void lcd_move_menu_10mm() { - move_menu_scale = 10.0; - _lcd_move_menu_axis(); - } - static void lcd_move_menu_1mm() { - move_menu_scale = 1.0; - _lcd_move_menu_axis(); - } - static void lcd_move_menu_01mm() { - move_menu_scale = 0.1; - _lcd_move_menu_axis(); - } - - /** - * - * "Prepare" > "Move Axis" submenu - * - */ - - static void lcd_move_menu() { - START_MENU(); - MENU_ITEM(back, MSG_PREPARE); - - if (_MOVE_XYZ_ALLOWED) - MENU_ITEM(submenu, MSG_MOVE_10MM, lcd_move_menu_10mm); - - MENU_ITEM(submenu, MSG_MOVE_1MM, lcd_move_menu_1mm); - MENU_ITEM(submenu, MSG_MOVE_01MM, lcd_move_menu_01mm); - //TODO:X,Y,Z,E - END_MENU(); - } - - /** - * - * "Control" submenu - * - */ - - static void lcd_control_menu() { - START_MENU(); - MENU_ITEM(back, MSG_MAIN); - MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); - MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu); - MENU_ITEM(submenu, MSG_VOLUMETRIC, lcd_control_volumetric_menu); - - #if HAS_LCD_CONTRAST - //MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63); - MENU_ITEM(submenu, MSG_CONTRAST, lcd_set_contrast); - #endif - #if ENABLED(FWRETRACT) - MENU_ITEM(submenu, MSG_RETRACT, lcd_control_retract_menu); - #endif - #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings); - MENU_ITEM(function, MSG_LOAD_EPROM, Config_RetrieveSettings); - #endif - MENU_ITEM(function, MSG_RESTORE_FAILSAFE, Config_ResetDefault); - END_MENU(); - } - - /** - * - * "Temperature" submenu - * - */ - - #if ENABLED(PID_AUTOTUNE_MENU) - - #if ENABLED(PIDTEMP) - int autotune_temp[HOTENDS] = ARRAY_BY_HOTENDS1(150); - const int heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP); - #endif - - #if ENABLED(PIDTEMPBED) - int autotune_temp_bed = 70; - #endif - - static void _lcd_autotune(int e) { - char cmd[30]; - sprintf_P(cmd, PSTR("M303 U1 E%i S%i"), e, - #if HAS_PID_FOR_BOTH - e < 0 ? autotune_temp_bed : autotune_temp[e] - #elif ENABLED(PIDTEMPBED) - autotune_temp_bed - #else - autotune_temp[e] - #endif - ); - enqueue_and_echo_command(cmd); - } - - #endif //PID_AUTOTUNE_MENU - - #if ENABLED(PIDTEMP) - - // Helpers for editing PID Ki & Kd values - // grab the PID value out of the temp variable; scale it; then update the PID driver - void copy_and_scalePID_i(int e) { - #if DISABLED(PID_PARAMS_PER_HOTEND) || HOTENDS == 1 - UNUSED(e); - #endif - PID_PARAM(Ki, e) = scalePID_i(raw_Ki); - thermalManager.updatePID(); - } - void copy_and_scalePID_d(int e) { - #if DISABLED(PID_PARAMS_PER_HOTEND) || HOTENDS == 1 - UNUSED(e); - #endif - PID_PARAM(Kd, e) = scalePID_d(raw_Kd); - thermalManager.updatePID(); - } - #define _PIDTEMP_BASE_FUNCTIONS(eindex) \ - void copy_and_scalePID_i_E ## eindex() { copy_and_scalePID_i(eindex); } \ - void copy_and_scalePID_d_E ## eindex() { copy_and_scalePID_d(eindex); } - - #if ENABLED(PID_AUTOTUNE_MENU) - #define _PIDTEMP_FUNCTIONS(eindex) \ - _PIDTEMP_BASE_FUNCTIONS(eindex); \ - void lcd_autotune_callback_E ## eindex() { _lcd_autotune(eindex); } - #else - #define _PIDTEMP_FUNCTIONS(eindex) _PIDTEMP_BASE_FUNCTIONS(eindex) - #endif - - _PIDTEMP_FUNCTIONS(0); - #if ENABLED(PID_PARAMS_PER_HOTEND) - #if HOTENDS > 1 - _PIDTEMP_FUNCTIONS(1); - #if HOTENDS > 2 - _PIDTEMP_FUNCTIONS(2); - #if HOTENDS > 3 - _PIDTEMP_FUNCTIONS(3); - #endif //HOTENDS > 3 - #endif //HOTENDS > 2 - #endif //HOTENDS > 1 - #endif //PID_PARAMS_PER_HOTEND - - #endif //PIDTEMP - - /** - * - * "Control" > "Temperature" submenu - * - */ - static void lcd_control_temperature_menu() { - START_MENU(); - - // - // ^ Control - // - MENU_ITEM(back, MSG_CONTROL); - - // - // Nozzle: - // Nozzle [1-4]: - // - #if HOTENDS == 1 - #if TEMP_SENSOR_0 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE, &thermalManager.target_temperature[0], 0, HEATER_0_MAXTEMP - 15, watch_temp_callback_E0); - #endif - #else //HOTENDS > 1 - #if TEMP_SENSOR_0 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N1, &thermalManager.target_temperature[0], 0, HEATER_0_MAXTEMP - 15, watch_temp_callback_E0); - #endif - #if TEMP_SENSOR_1 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N2, &thermalManager.target_temperature[1], 0, HEATER_1_MAXTEMP - 15, watch_temp_callback_E1); - #endif - #if HOTENDS > 2 - #if TEMP_SENSOR_2 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N3, &thermalManager.target_temperature[2], 0, HEATER_2_MAXTEMP - 15, watch_temp_callback_E2); - #endif - #if HOTENDS > 3 - #if TEMP_SENSOR_3 != 0 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE MSG_N4, &thermalManager.target_temperature[3], 0, HEATER_3_MAXTEMP - 15, watch_temp_callback_E3); - #endif - #endif // HOTENDS > 3 - #endif // HOTENDS > 2 - #endif // HOTENDS > 1 - - // - // Bed: - // - #if TEMP_SENSOR_BED != 0 - MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &thermalManager.target_temperature_bed, 0, BED_MAXTEMP - 15); - #endif - - // - // Fan Speed: - // - #if FAN_COUNT > 0 - #if HAS_FAN0 - #if FAN_COUNT > 1 - #define MSG_1ST_FAN_SPEED MSG_FAN_SPEED " 1" - #else - #define MSG_1ST_FAN_SPEED MSG_FAN_SPEED - #endif - MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_1ST_FAN_SPEED, &fanSpeeds[0], 0, 255); - #endif - #if HAS_FAN1 - MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED " 2", &fanSpeeds[1], 0, 255); - #endif - #if HAS_FAN2 - MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED " 3", &fanSpeeds[2], 0, 255); - #endif - #endif // FAN_COUNT > 0 - - // - // Autotemp, Min, Max, Fact - // - #if ENABLED(AUTOTEMP) && (TEMP_SENSOR_0 != 0) - MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &planner.autotemp_enabled); - MENU_ITEM_EDIT(float3, MSG_MIN, &planner.autotemp_min, 0, HEATER_0_MAXTEMP - 15); - MENU_ITEM_EDIT(float3, MSG_MAX, &planner.autotemp_max, 0, HEATER_0_MAXTEMP - 15); - MENU_ITEM_EDIT(float32, MSG_FACTOR, &planner.autotemp_factor, 0.0, 1.0); - #endif - - // - // PID-P, PID-I, PID-D, PID-C, PID Autotune - // PID-P E1, PID-I E1, PID-D E1, PID-C E1, PID Autotune E1 - // PID-P E2, PID-I E2, PID-D E2, PID-C E2, PID Autotune E2 - // PID-P E3, PID-I E3, PID-D E3, PID-C E3, PID Autotune E3 - // PID-P E4, PID-I E4, PID-D E4, PID-C E4, PID Autotune E4 - // - #if ENABLED(PIDTEMP) - - #define _PID_BASE_MENU_ITEMS(ELABEL, eindex) \ - raw_Ki = unscalePID_i(PID_PARAM(Ki, eindex)); \ - raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \ - MENU_ITEM_EDIT(float52, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \ - MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I ELABEL, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E ## eindex); \ - MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_E ## eindex) - - #if ENABLED(PID_EXTRUSION_SCALING) - #define _PID_MENU_ITEMS(ELABEL, eindex) \ - _PID_BASE_MENU_ITEMS(ELABEL, eindex); \ - MENU_ITEM_EDIT(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990) - #else - #define _PID_MENU_ITEMS(ELABEL, eindex) _PID_BASE_MENU_ITEMS(ELABEL, eindex) - #endif - - #if ENABLED(PID_AUTOTUNE_MENU) - #define PID_MENU_ITEMS(ELABEL, eindex) \ - _PID_MENU_ITEMS(ELABEL, eindex); \ - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_PID_AUTOTUNE ELABEL, &autotune_temp[eindex], 150, heater_maxtemp[eindex] - 15, lcd_autotune_callback_E ## eindex) - #else - #define PID_MENU_ITEMS(ELABEL, eindex) _PID_MENU_ITEMS(ELABEL, eindex) - #endif - - #if ENABLED(PID_PARAMS_PER_HOTEND) && HOTENDS > 1 - PID_MENU_ITEMS(MSG_E1, 0); - PID_MENU_ITEMS(MSG_E2, 1); - #if HOTENDS > 2 - PID_MENU_ITEMS(MSG_E3, 2); - #if HOTENDS > 3 - PID_MENU_ITEMS(MSG_E4, 3); - #endif //HOTENDS > 3 - #endif //HOTENDS > 2 - #else //!PID_PARAMS_PER_HOTEND || HOTENDS == 1 - PID_MENU_ITEMS("", 0); - #endif //!PID_PARAMS_PER_HOTEND || HOTENDS == 1 - - #endif //PIDTEMP - - // - // Preheat PLA conf - // - MENU_ITEM(submenu, MSG_PREHEAT_1_SETTINGS, lcd_control_temperature_preheat_pla_settings_menu); - - // - // Preheat ABS conf - // - MENU_ITEM(submenu, MSG_PREHEAT_2_SETTINGS, lcd_control_temperature_preheat_abs_settings_menu); - END_MENU(); - } - - /** - * - * "Temperature" > "Preheat PLA conf" submenu - * - */ - static void lcd_control_temperature_preheat_pla_settings_menu() { - START_MENU(); - MENU_ITEM(back, MSG_TEMPERATURE); - MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &preheatFanSpeed1, 0, 255); - #if TEMP_SENSOR_0 != 0 - MENU_ITEM_EDIT(int3, MSG_NOZZLE, &preheatHotendTemp1, HEATER_0_MINTEMP, HEATER_0_MAXTEMP - 15); - #endif - #if TEMP_SENSOR_BED != 0 - MENU_ITEM_EDIT(int3, MSG_BED, &preheatBedTemp1, BED_MINTEMP, BED_MAXTEMP - 15); - #endif - #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings); - #endif - END_MENU(); - } - - /** - * - * "Temperature" > "Preheat ABS conf" submenu - * - */ - static void lcd_control_temperature_preheat_abs_settings_menu() { - START_MENU(); - MENU_ITEM(back, MSG_TEMPERATURE); - MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &preheatFanSpeed2, 0, 255); - #if TEMP_SENSOR_0 != 0 - MENU_ITEM_EDIT(int3, MSG_NOZZLE, &preheatHotendTemp2, HEATER_0_MINTEMP, HEATER_0_MAXTEMP - 15); - #endif - #if TEMP_SENSOR_BED != 0 - MENU_ITEM_EDIT(int3, MSG_BED, &preheatBedTemp2, BED_MINTEMP, BED_MAXTEMP - 15); - #endif - #if ENABLED(EEPROM_SETTINGS) - MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings); - #endif - END_MENU(); - } - - static void _reset_acceleration_rates() { planner.reset_acceleration_rates(); } - static void _planner_refresh_positioning() { planner.refresh_positioning(); } - - /** - * - * "Control" > "Motion" submenu - * - */ - static void lcd_control_motion_menu() { - START_MENU(); - MENU_ITEM(back, MSG_CONTROL); - #if HAS_BED_PROBE - MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX); - #endif - // Manual bed leveling, Bed Z: - #if ENABLED(MANUAL_BED_LEVELING) - MENU_ITEM_EDIT(float43, MSG_BED_Z, &mbl.z_offset, -1, 1); - #endif - MENU_ITEM_EDIT(float5, MSG_ACC, &planner.acceleration, 10, 99000); - MENU_ITEM_EDIT(float3, MSG_VXY_JERK, &planner.max_xy_jerk, 1, 990); - #if ENABLED(DELTA) - MENU_ITEM_EDIT(float3, MSG_VZ_JERK, &planner.max_z_jerk, 1, 990); - #else - MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &planner.max_z_jerk, 0.1, 990); - #endif - MENU_ITEM_EDIT(float3, MSG_VE_JERK, &planner.max_e_jerk, 1, 990); - MENU_ITEM_EDIT(float3, MSG_VMAX MSG_X, &planner.max_feedrate_mm_s[X_AXIS], 1, 999); - MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Y, &planner.max_feedrate_mm_s[Y_AXIS], 1, 999); - MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Z, &planner.max_feedrate_mm_s[Z_AXIS], 1, 999); - MENU_ITEM_EDIT(float3, MSG_VMAX MSG_E, &planner.max_feedrate_mm_s[E_AXIS], 1, 999); - MENU_ITEM_EDIT(float3, MSG_VMIN, &planner.min_feedrate_mm_s, 0, 999); - MENU_ITEM_EDIT(float3, MSG_VTRAV_MIN, &planner.min_travel_feedrate_mm_s, 0, 999); - MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_X, &planner.max_acceleration_mm_per_s2[X_AXIS], 100, 99000, _reset_acceleration_rates); - MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Y, &planner.max_acceleration_mm_per_s2[Y_AXIS], 100, 99000, _reset_acceleration_rates); - MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Z, &planner.max_acceleration_mm_per_s2[Z_AXIS], 10, 99000, _reset_acceleration_rates); - MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &planner.max_acceleration_mm_per_s2[E_AXIS], 100, 99000, _reset_acceleration_rates); - MENU_ITEM_EDIT(float5, MSG_A_RETRACT, &planner.retract_acceleration, 100, 99000); - MENU_ITEM_EDIT(float5, MSG_A_TRAVEL, &planner.travel_acceleration, 100, 99000); - MENU_ITEM_EDIT_CALLBACK(float52, MSG_XSTEPS, &planner.axis_steps_per_mm[X_AXIS], 5, 9999, _planner_refresh_positioning); - MENU_ITEM_EDIT_CALLBACK(float52, MSG_YSTEPS, &planner.axis_steps_per_mm[Y_AXIS], 5, 9999, _planner_refresh_positioning); - #if ENABLED(DELTA) - MENU_ITEM_EDIT_CALLBACK(float52, MSG_ZSTEPS, &planner.axis_steps_per_mm[Z_AXIS], 5, 9999, _planner_refresh_positioning); - #else - MENU_ITEM_EDIT_CALLBACK(float51, MSG_ZSTEPS, &planner.axis_steps_per_mm[Z_AXIS], 5, 9999, _planner_refresh_positioning); - #endif - MENU_ITEM_EDIT_CALLBACK(float51, MSG_ESTEPS, &planner.axis_steps_per_mm[E_AXIS], 5, 9999, _planner_refresh_positioning); - #if ENABLED(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) - MENU_ITEM_EDIT(bool, MSG_ENDSTOP_ABORT, &stepper.abort_on_endstop_hit); - #endif - #if ENABLED(SCARA) - MENU_ITEM_EDIT(float74, MSG_XSCALE, &axis_scaling[X_AXIS], 0.5, 2); - MENU_ITEM_EDIT(float74, MSG_YSCALE, &axis_scaling[Y_AXIS], 0.5, 2); - #endif - END_MENU(); - } - - /** - * - * "Control" > "Filament" submenu - * - */ - static void lcd_control_volumetric_menu() { - START_MENU(); - MENU_ITEM(back, MSG_CONTROL); - - MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers); - - if (volumetric_enabled) { - #if EXTRUDERS == 1 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers); - #else //EXTRUDERS > 1 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E1, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers); - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E2, &filament_size[1], 1.5, 3.25, calculate_volumetric_multipliers); - #if EXTRUDERS > 2 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E3, &filament_size[2], 1.5, 3.25, calculate_volumetric_multipliers); - #if EXTRUDERS > 3 - MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E4, &filament_size[3], 1.5, 3.25, calculate_volumetric_multipliers); - #endif //EXTRUDERS > 3 - #endif //EXTRUDERS > 2 - #endif //EXTRUDERS > 1 - } - - END_MENU(); - } - - /** - * - * "Control" > "Contrast" submenu - * - */ - #if HAS_LCD_CONTRAST - static void lcd_set_contrast() { - if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; } - ENCODER_DIRECTION_NORMAL(); - if (encoderPosition) { - set_lcd_contrast(lcd_contrast + encoderPosition); - encoderPosition = 0; - lcdDrawUpdate = LCDVIEW_REDRAW_NOW; - } - if (lcdDrawUpdate) { - lcd_implementation_drawedit(PSTR(MSG_CONTRAST), - #if LCD_CONTRAST_MAX >= 100 - itostr3(lcd_contrast) - #else - itostr2(lcd_contrast) - #endif - ); - } - } - #endif // HAS_LCD_CONTRAST - - /** - * - * "Control" > "Retract" submenu - * - */ - #if ENABLED(FWRETRACT) - static void lcd_control_retract_menu() { - START_MENU(); - MENU_ITEM(back, MSG_CONTROL); - MENU_ITEM_EDIT(bool, MSG_AUTORETRACT, &autoretract_enabled); - MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT, &retract_length, 0, 100); - #if EXTRUDERS > 1 - MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_SWAP, &retract_length_swap, 0, 100); - #endif - MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACTF, &retract_feedrate_mm_s, 1, 999); - MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_ZLIFT, &retract_zlift, 0, 999); - MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER, &retract_recover_length, 0, 100); - #if EXTRUDERS > 1 - MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER_SWAP, &retract_recover_length_swap, 0, 100); - #endif - MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACT_RECOVERF, &retract_recover_feedrate_mm_s, 1, 999); - END_MENU(); - } - #endif // FWRETRACT - - #if ENABLED(SDSUPPORT) - - #if !PIN_EXISTS(SD_DETECT) - static void lcd_sd_refresh() { - card.initsd(); - encoderTopLine = 0; - } - #endif - - static void lcd_sd_updir() { - card.updir(); - encoderTopLine = 0; - } - - /** - * - * "Print from SD" submenu - * - */ - void lcd_sdcard_menu() { - ENCODER_DIRECTION_MENUS(); - if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card) - uint16_t fileCnt = card.getnrfilenames(); - START_MENU(); - MENU_ITEM(back, MSG_MAIN); - card.getWorkDirName(); - if (card.filename[0] == '/') { - #if !PIN_EXISTS(SD_DETECT) - MENU_ITEM(function, LCD_STR_REFRESH MSG_REFRESH, lcd_sd_refresh); - #endif - } - else { - MENU_ITEM(function, LCD_STR_FOLDER "..", lcd_sd_updir); - } - - for (uint16_t i = 0; i < fileCnt; i++) { - if (_menuLineNr == _thisItemNr) { - card.getfilename( - #if ENABLED(SDCARD_RATHERRECENTFIRST) - fileCnt-1 - - #endif - i - ); - - if (card.filenameIsDir) - MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename); - else - MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, card.longFilename); - } - else { - MENU_ITEM_DUMMY(); - } - } - END_MENU(); - } - - #endif //SDSUPPORT - - #if ENABLED(LCD_INFO_MENU) - - #if ENABLED(PRINTCOUNTER) - /** - * - * About Printer > Statistics submenu - * - */ - static void lcd_info_stats_menu() { - if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; } - - char buffer[21]; - printStatistics stats = print_job_timer.getStats(); - - START_SCREEN(); // 12345678901234567890 - STATIC_ITEM(MSG_INFO_PRINT_COUNT ": ", false, false, itostr3left(stats.totalPrints)); // Print Count: 999 - STATIC_ITEM(MSG_INFO_COMPLETED_PRINTS" : ", false, false, itostr3left(stats.finishedPrints)); // Completed : 666 - - duration_t elapsed = stats.printTime; - elapsed.toString(buffer); - - STATIC_ITEM(MSG_INFO_PRINT_TIME ": ", false, false); // Total print Time: - STATIC_ITEM("", false, false, buffer); // 99y 364d 23h 59m 59s - - elapsed = stats.longestPrint; - elapsed.toString(buffer); - - STATIC_ITEM(MSG_INFO_PRINT_LONGEST ": ", false, false); // Longest job time: - STATIC_ITEM("", false, false, buffer); // 99y 364d 23h 59m 59s - - sprintf_P(buffer, PSTR("%im"), stats.filamentUsed / 1000); - STATIC_ITEM(MSG_INFO_PRINT_FILAMENT ": ", false, false); // Extruded total: - STATIC_ITEM("", false, false, buffer); // 125m - END_SCREEN(); - } - #endif // PRINTCOUNTER - - /** - * - * About Printer > Thermistors - * - */ - static void lcd_info_thermistors_menu() { - if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; } - START_SCREEN(); - #define THERMISTOR_ID TEMP_SENSOR_0 - #include "thermistornames.h" - STATIC_ITEM("T0: " THERMISTOR_NAME, false, true); - STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_0_MINTEMP), false); - STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_0_MAXTEMP), false); - - #if TEMP_SENSOR_1 != 0 - #undef THERMISTOR_ID - #define THERMISTOR_ID TEMP_SENSOR_1 - #include "thermistornames.h" - STATIC_ITEM("T1: " THERMISTOR_NAME, false, true); - STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_1_MINTEMP), false); - STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_1_MAXTEMP), false); - #endif - - #if TEMP_SENSOR_2 != 0 - #undef THERMISTOR_ID - #define THERMISTOR_ID TEMP_SENSOR_2 - #include "thermistornames.h" - STATIC_ITEM("T2: " THERMISTOR_NAME, false, true); - STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_2_MINTEMP), false); - STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_2_MAXTEMP), false); - #endif - - #if TEMP_SENSOR_3 != 0 - #undef THERMISTOR_ID - #define THERMISTOR_ID TEMP_SENSOR_3 - #include "thermistornames.h" - STATIC_ITEM("T3: " THERMISTOR_NAME, false, true); - STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(HEATER_3_MINTEMP), false); - STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(HEATER_3_MAXTEMP), false); - #endif - - #if TEMP_SENSOR_BED != 0 - #undef THERMISTOR_ID - #define THERMISTOR_ID TEMP_SENSOR_BED - #include "thermistornames.h" - STATIC_ITEM("TBed:" THERMISTOR_NAME, false, true); - STATIC_ITEM(MSG_INFO_MIN_TEMP ": " STRINGIFY(BED_MINTEMP), false); - STATIC_ITEM(MSG_INFO_MAX_TEMP ": " STRINGIFY(BED_MAXTEMP), false); - #endif - END_SCREEN(); - } - - /** - * - * About Printer > Board Info - * - */ - static void lcd_info_board_menu() { - if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; } - START_SCREEN(); - STATIC_ITEM(BOARD_NAME, true, true); // MyPrinterController - STATIC_ITEM(MSG_INFO_BAUDRATE ": " STRINGIFY(BAUDRATE)); // Baud: 250000 - STATIC_ITEM(MSG_INFO_PROTOCOL ": " PROTOCOL_VERSION); // Protocol: 1.0 - #ifdef POWER_SUPPLY - #if (POWER_SUPPLY == 1) - STATIC_ITEM(MSG_INFO_PSU ": ATX"); // Power Supply: ATX - #elif (POWER_SUPPLY == 2) - STATIC_ITEM(MSG_INFO_PSU ": XBox"); // Power Supply: XBox - #endif - #endif // POWER_SUPPLY - END_SCREEN(); - } - - /** - * - * About Printer > Printer Info - * - */ - static void lcd_info_printer_menu() { - if (LCD_CLICKED) { lcd_goto_previous_menu(true); return; } - START_SCREEN(); - STATIC_ITEM(MSG_MARLIN, true, true); // Marlin - STATIC_ITEM(SHORT_BUILD_VERSION); // x.x.x-Branch - STATIC_ITEM(STRING_DISTRIBUTION_DATE); // YYYY-MM-DD HH:MM - STATIC_ITEM(MACHINE_NAME); // My3DPrinter - STATIC_ITEM(WEBSITE_URL); // www.my3dprinter.com - STATIC_ITEM(MSG_INFO_EXTRUDERS ": " STRINGIFY(EXTRUDERS)); // Extruders: 2 - END_SCREEN(); - } - - /** - * - * "About Printer" submenu - * - */ - static void lcd_info_menu() { - START_MENU(); - MENU_ITEM(back, MSG_MAIN); - MENU_ITEM(submenu, MSG_INFO_PRINTER_MENU, lcd_info_printer_menu); // Printer Info > - MENU_ITEM(submenu, MSG_INFO_BOARD_MENU, lcd_info_board_menu); // Board Info > - MENU_ITEM(submenu, MSG_INFO_THERMISTOR_MENU, lcd_info_thermistors_menu); // Thermistors > - #if ENABLED(PRINTCOUNTER) - MENU_ITEM(submenu, MSG_INFO_STATS_MENU, lcd_info_stats_menu); // Printer Statistics > - #endif - END_MENU(); - } - #endif // LCD_INFO_MENU - - #if ENABLED(FILAMENT_CHANGE_FEATURE) - - static void lcd_filament_change_resume_print() { - filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_RESUME_PRINT; - lcdDrawUpdate = 2; - lcd_goto_screen(lcd_status_screen); - } - - static void lcd_filament_change_extrude_more() { - filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_EXTRUDE_MORE; - } - - static void lcd_filament_change_option_menu() { - START_MENU(); - #if LCD_HEIGHT > 2 - STATIC_ITEM(MSG_FILAMENT_CHANGE_OPTION_HEADER, true, false); - #endif - MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_RESUME, lcd_filament_change_resume_print); - MENU_ITEM(function, MSG_FILAMENT_CHANGE_OPTION_EXTRUDE, lcd_filament_change_extrude_more); - END_MENU(); - } - - static void lcd_filament_change_init_message() { - START_SCREEN(); - STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); - STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_1); - #ifdef MSG_FILAMENT_CHANGE_INIT_2 - STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_2); - #endif - #ifdef MSG_FILAMENT_CHANGE_INIT_3 - STATIC_ITEM(MSG_FILAMENT_CHANGE_INIT_3); - #endif - END_SCREEN(); - } - - static void lcd_filament_change_unload_message() { - START_SCREEN(); - STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); - STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_1); - #ifdef MSG_FILAMENT_CHANGE_UNLOAD_2 - STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_2); - #endif - #ifdef MSG_FILAMENT_CHANGE_UNLOAD_3 - STATIC_ITEM(MSG_FILAMENT_CHANGE_UNLOAD_3); - #endif - END_SCREEN(); - } - - static void lcd_filament_change_insert_message() { - START_SCREEN(); - STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); - STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_1); - #ifdef MSG_FILAMENT_CHANGE_INSERT_2 - STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_2); - #endif - #ifdef MSG_FILAMENT_CHANGE_INSERT_3 - STATIC_ITEM(MSG_FILAMENT_CHANGE_INSERT_3); - #endif - END_SCREEN(); - } - - static void lcd_filament_change_load_message() { - START_SCREEN(); - STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); - STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_1); - #ifdef MSG_FILAMENT_CHANGE_LOAD_2 - STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_2); - #endif - #ifdef MSG_FILAMENT_CHANGE_LOAD_3 - STATIC_ITEM(MSG_FILAMENT_CHANGE_LOAD_3); - #endif - END_SCREEN(); - } - - static void lcd_filament_change_extrude_message() { - START_SCREEN(); - STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); - STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_1); - #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_2 - STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_2); - #endif - #ifdef MSG_FILAMENT_CHANGE_EXTRUDE_3 - STATIC_ITEM(MSG_FILAMENT_CHANGE_EXTRUDE_3); - #endif - END_SCREEN(); - } - - static void lcd_filament_change_resume_message() { - START_SCREEN(); - STATIC_ITEM(MSG_FILAMENT_CHANGE_HEADER, true, true); - STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_1); - #ifdef MSG_FILAMENT_CHANGE_RESUME_2 - STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_2); - #endif - #ifdef MSG_FILAMENT_CHANGE_RESUME_3 - STATIC_ITEM(MSG_FILAMENT_CHANGE_RESUME_3); - #endif - END_SCREEN(); - } - - void lcd_filament_change_show_message(FilamentChangeMessage message) { - switch (message) { - case FILAMENT_CHANGE_MESSAGE_INIT: - defer_return_to_status = true; - lcd_goto_screen(lcd_filament_change_init_message); - break; - case FILAMENT_CHANGE_MESSAGE_UNLOAD: - lcd_goto_screen(lcd_filament_change_unload_message); - break; - case FILAMENT_CHANGE_MESSAGE_INSERT: - lcd_goto_screen(lcd_filament_change_insert_message); - break; - case FILAMENT_CHANGE_MESSAGE_LOAD: - lcd_goto_screen(lcd_filament_change_load_message); - break; - case FILAMENT_CHANGE_MESSAGE_EXTRUDE: - lcd_goto_screen(lcd_filament_change_extrude_message); - break; - case FILAMENT_CHANGE_MESSAGE_OPTION: - filament_change_menu_response = FILAMENT_CHANGE_RESPONSE_WAIT_FOR; - lcd_goto_screen(lcd_filament_change_option_menu); - break; - case FILAMENT_CHANGE_MESSAGE_RESUME: - lcd_goto_screen(lcd_filament_change_resume_message); - break; - case FILAMENT_CHANGE_MESSAGE_STATUS: - lcd_return_to_status(); - break; - } - } - - #endif // FILAMENT_CHANGE_FEATURE - - /** - * - * Functions for editing single values - * - * The "menu_edit_type" macro generates the functions needed to edit a numerical value. - * - * For example, menu_edit_type(int, int3, itostr3, 1) expands into these functions: - * - * bool _menu_edit_int3(); - * void menu_edit_int3(); // edit int (interactively) - * void menu_edit_callback_int3(); // edit int (interactively) with callback on completion - * static void _menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); - * static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); - * static void menu_action_setting_edit_callback_int3(const char* pstr, int* ptr, int minValue, int maxValue, screenFunc_t callback); // edit int with callback - * - * You can then use one of the menu macros to present the edit interface: - * MENU_ITEM_EDIT(int3, MSG_SPEED, &feedrate_percentage, 10, 999) - * - * This expands into a more primitive menu item: - * MENU_ITEM(setting_edit_int3, MSG_SPEED, PSTR(MSG_SPEED), &feedrate_percentage, 10, 999) - * - * - * Also: MENU_MULTIPLIER_ITEM_EDIT, MENU_ITEM_EDIT_CALLBACK, and MENU_MULTIPLIER_ITEM_EDIT_CALLBACK - * - * menu_action_setting_edit_int3(PSTR(MSG_SPEED), &feedrate_percentage, 10, 999) - */ - #define menu_edit_type(_type, _name, _strFunc, scale) \ - bool _menu_edit_ ## _name () { \ - ENCODER_DIRECTION_NORMAL(); \ - bool isClicked = LCD_CLICKED; \ - if ((int32_t)encoderPosition < 0) encoderPosition = 0; \ - if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \ - if (lcdDrawUpdate) \ - lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \ - if (isClicked) { \ - *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \ - lcd_goto_previous_menu(true); \ - } \ - return isClicked; \ - } \ - void menu_edit_ ## _name () { _menu_edit_ ## _name(); } \ - void menu_edit_callback_ ## _name () { if (_menu_edit_ ## _name ()) (*callbackFunc)(); } \ - static void _menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \ - lcd_save_previous_menu(); \ - \ - lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; \ - \ - editLabel = pstr; \ - editValue = ptr; \ - minEditValue = minValue * scale; \ - maxEditValue = maxValue * scale - minEditValue; \ - encoderPosition = (*ptr) * scale - minEditValue; \ - } \ - static void menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \ - _menu_action_setting_edit_ ## _name(pstr, ptr, minValue, maxValue); \ - currentScreen = menu_edit_ ## _name; \ - }\ - static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, screenFunc_t callback) { \ - _menu_action_setting_edit_ ## _name(pstr, ptr, minValue, maxValue); \ - currentScreen = menu_edit_callback_ ## _name; \ - callbackFunc = callback; \ - } - - menu_edit_type(int, int3, itostr3, 1); - menu_edit_type(float, float3, ftostr3, 1); - menu_edit_type(float, float32, ftostr32, 100); - menu_edit_type(float, float43, ftostr43sign, 1000); - menu_edit_type(float, float5, ftostr5rj, 0.01); - menu_edit_type(float, float51, ftostr51sign, 10); - menu_edit_type(float, float52, ftostr52sign, 100); - menu_edit_type(unsigned long, long5, ftostr5rj, 0.01); - - /** - * - * Handlers for RepRap World Keypad input - * - */ - #if ENABLED(REPRAPWORLD_KEYPAD) - static void _reprapworld_keypad_move(AxisEnum axis, int dir) { - move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; - encoderPosition = dir; - switch (axis) { - case X_AXIS: lcd_move_x(); break; - case Y_AXIS: lcd_move_y(); break; - case Z_AXIS: lcd_move_z(); - } - } - static void reprapworld_keypad_move_z_up() { _reprapworld_keypad_move(Z_AXIS, 1); } - static void reprapworld_keypad_move_z_down() { _reprapworld_keypad_move(Z_AXIS, -1); } - static void reprapworld_keypad_move_x_left() { _reprapworld_keypad_move(X_AXIS, -1); } - static void reprapworld_keypad_move_x_right() { _reprapworld_keypad_move(X_AXIS, 1); } - static void reprapworld_keypad_move_y_up() { _reprapworld_keypad_move(Y_AXIS, -1); } - static void reprapworld_keypad_move_y_down() { _reprapworld_keypad_move(Y_AXIS, 1); } - static void reprapworld_keypad_move_home() { enqueue_and_echo_commands_P(PSTR("G28")); } // move all axes home and wait - static void reprapworld_keypad_move_menu() { lcd_goto_screen(lcd_move_menu); } - #endif // REPRAPWORLD_KEYPAD - - /** - * - * Audio feedback for controller clicks - * - */ - void lcd_buzz(long duration, uint16_t freq) { - #if ENABLED(LCD_USE_I2C_BUZZER) - lcd.buzz(duration, freq); - #elif PIN_EXISTS(BEEPER) - buzzer.tone(duration, freq); - #endif - } - - void lcd_quick_feedback() { - lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; - next_button_update_ms = millis() + 500; - - // Buzz and wait. The delay is needed for buttons to settle! - lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ); - #if ENABLED(LCD_USE_I2C_BUZZER) - delay(10); - #elif PIN_EXISTS(BEEPER) - for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); } - #endif - } - - /** - * - * Menu actions - * - */ - static void menu_action_back() { lcd_goto_previous_menu(); } - static void menu_action_submenu(screenFunc_t func) { lcd_save_previous_menu(); lcd_goto_screen(func); } - static void menu_action_gcode(const char* pgcode) { enqueue_and_echo_commands_P(pgcode); } - static void menu_action_function(screenFunc_t func) { (*func)(); } - - #if ENABLED(SDSUPPORT) - - static void menu_action_sdfile(const char* filename, char* longFilename) { - UNUSED(longFilename); - card.openAndPrintFile(filename); - lcd_return_to_status(); - } - - static void menu_action_sddirectory(const char* filename, char* longFilename) { - UNUSED(longFilename); - card.chdir(filename); - encoderPosition = 0; - } - - #endif //SDSUPPORT - - static void menu_action_setting_edit_bool(const char* pstr, bool* ptr) {UNUSED(pstr); *ptr = !(*ptr); } - static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, screenFunc_t callback) { - menu_action_setting_edit_bool(pstr, ptr); - (*callback)(); - } - -#endif //ULTIPANEL - -/** LCD API **/ -void lcd_init() { - - lcd_implementation_init(); - - #if ENABLED(NEWPANEL) - #if BUTTON_EXISTS(EN1) - SET_INPUT(BTN_EN1); - WRITE(BTN_EN1, HIGH); - #endif - - #if BUTTON_EXISTS(EN2) - SET_INPUT(BTN_EN2); - WRITE(BTN_EN2, HIGH); - #endif - - #if BUTTON_EXISTS(ENC) - SET_INPUT(BTN_ENC); - WRITE(BTN_ENC, HIGH); - #endif - - #if ENABLED(REPRAPWORLD_KEYPAD) - pinMode(SHIFT_CLK, OUTPUT); - pinMode(SHIFT_LD, OUTPUT); - pinMode(SHIFT_OUT, INPUT); - WRITE(SHIFT_OUT, HIGH); - WRITE(SHIFT_LD, HIGH); - #endif - - #if BUTTON_EXISTS(UP) - SET_INPUT(BTN_UP); - #endif - #if BUTTON_EXISTS(DWN) - SET_INPUT(BTN_DWN); - #endif - #if BUTTON_EXISTS(LFT) - SET_INPUT(BTN_LFT); - #endif - #if BUTTON_EXISTS(RT) - SET_INPUT(BTN_RT); - #endif - - #else // !NEWPANEL - - #if ENABLED(SR_LCD_2W_NL) // Non latching 2 wire shift register - pinMode(SR_DATA_PIN, OUTPUT); - pinMode(SR_CLK_PIN, OUTPUT); - #elif defined(SHIFT_CLK) - pinMode(SHIFT_CLK, OUTPUT); - pinMode(SHIFT_LD, OUTPUT); - pinMode(SHIFT_EN, OUTPUT); - pinMode(SHIFT_OUT, INPUT); - WRITE(SHIFT_OUT, HIGH); - WRITE(SHIFT_LD, HIGH); - WRITE(SHIFT_EN, LOW); - #endif // SR_LCD_2W_NL - - #endif // !NEWPANEL - - #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT) - SET_INPUT(SD_DETECT_PIN); - WRITE(SD_DETECT_PIN, HIGH); - lcd_sd_status = 2; // UNKNOWN - #endif - - #if ENABLED(LCD_HAS_SLOW_BUTTONS) - slow_buttons = 0; - #endif - - lcd_buttons_update(); - - #if ENABLED(ULTIPANEL) - encoderDiff = 0; - #endif -} - -int lcd_strlen(const char* s) { - int i = 0, j = 0; - while (s[i]) { - #if ENABLED(MAPPER_NON) - j++; - #else - if ((s[i] & 0xC0u) != 0x80u) j++; - #endif - i++; - } - return j; -} - -int lcd_strlen_P(const char* s) { - int j = 0; - while (pgm_read_byte(s)) { - #if ENABLED(MAPPER_NON) - j++; - #else - if ((pgm_read_byte(s) & 0xC0u) != 0x80u) j++; - #endif - s++; - } - return j; -} - -bool lcd_blink() { - static uint8_t blink = 0; - static millis_t next_blink_ms = 0; - millis_t ms = millis(); - if (ELAPSED(ms, next_blink_ms)) { - blink ^= 0xFF; - next_blink_ms = ms + 1000 - LCD_UPDATE_INTERVAL / 2; - } - return blink != 0; -} - -/** - * Update the LCD, read encoder buttons, etc. - * - Read button states - * - Check the SD Card slot state - * - Act on RepRap World keypad input - * - Update the encoder position - * - Apply acceleration to the encoder position - * - Set lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NOW on controller events - * - Reset the Info Screen timeout if there's any input - * - Update status indicators, if any - * - * Run the current LCD menu handler callback function: - * - Call the handler only if lcdDrawUpdate != LCDVIEW_NONE - * - Before calling the handler, LCDVIEW_CALL_NO_REDRAW => LCDVIEW_NONE - * - Call the menu handler. Menu handlers should do the following: - * - If a value changes, set lcdDrawUpdate to LCDVIEW_REDRAW_NOW and draw the value - * (Encoder events automatically set lcdDrawUpdate for you.) - * - if (lcdDrawUpdate) { redraw } - * - Before exiting the handler set lcdDrawUpdate to: - * - LCDVIEW_CLEAR_CALL_REDRAW to clear screen and set LCDVIEW_CALL_REDRAW_NEXT. - * - LCDVIEW_REDRAW_NOW or LCDVIEW_NONE to keep drawingm but only in this loop. - * - LCDVIEW_REDRAW_NEXT to keep drawing and draw on the next loop also. - * - LCDVIEW_CALL_NO_REDRAW to keep drawing (or start drawing) with no redraw on the next loop. - * - NOTE: For graphical displays menu handlers may be called 2 or more times per loop, - * so don't change lcdDrawUpdate without considering this. - * - * After the menu handler callback runs (or not): - * - Clear the LCD if lcdDrawUpdate == LCDVIEW_CLEAR_CALL_REDRAW - * - Update lcdDrawUpdate for the next loop (i.e., move one state down, usually) - * - * No worries. This function is only called from the main thread. - */ -void lcd_update() { - - #if ENABLED(ULTIPANEL) - static millis_t return_to_status_ms = 0; - manage_manual_move(); - #endif - - lcd_buttons_update(); - - #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT) - - bool sd_status = IS_SD_INSERTED; - if (sd_status != lcd_sd_status && lcd_detected()) { - lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; - lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. - #if ENABLED(LCD_PROGRESS_BAR) && ENABLED(ULTIPANEL) - currentScreen == lcd_status_screen - #endif - ); - - if (sd_status) { - card.initsd(); - if (lcd_sd_status != 2) LCD_MESSAGEPGM(MSG_SD_INSERTED); - } - else { - card.release(); - if (lcd_sd_status != 2) LCD_MESSAGEPGM(MSG_SD_REMOVED); - } - - lcd_sd_status = sd_status; - } - - #endif //SDSUPPORT && SD_DETECT_PIN - - millis_t ms = millis(); - if (ELAPSED(ms, next_lcd_update_ms)) { - - next_lcd_update_ms = ms + LCD_UPDATE_INTERVAL; - - #if ENABLED(LCD_HAS_STATUS_INDICATORS) - lcd_implementation_update_indicators(); - #endif - - #if ENABLED(LCD_HAS_SLOW_BUTTONS) - slow_buttons = lcd_implementation_read_slow_buttons(); // buttons which take too long to read in interrupt context - #endif - - #if ENABLED(ULTIPANEL) - - #if ENABLED(REPRAPWORLD_KEYPAD) - - static uint8_t keypad_debounce = 0; - - if (!REPRAPWORLD_KEYPAD_PRESSED) { - if (keypad_debounce > 0) keypad_debounce--; - } - else if (!keypad_debounce) { - keypad_debounce = 2; - - if (REPRAPWORLD_KEYPAD_MOVE_MENU) reprapworld_keypad_move_menu(); - - #if DISABLED(DELTA) && Z_HOME_DIR == -1 - if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) reprapworld_keypad_move_z_up(); - #endif - - if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) { - #if ENABLED(DELTA) || Z_HOME_DIR != -1 - if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) reprapworld_keypad_move_z_up(); - #endif - if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) reprapworld_keypad_move_z_down(); - if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) reprapworld_keypad_move_x_left(); - if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) reprapworld_keypad_move_x_right(); - if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) reprapworld_keypad_move_y_down(); - if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) reprapworld_keypad_move_y_up(); - } - else { - if (REPRAPWORLD_KEYPAD_MOVE_HOME) reprapworld_keypad_move_home(); - } - } - #endif // REPRAPWORLD_KEYPAD - - bool encoderPastThreshold = (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP); - if (encoderPastThreshold || LCD_CLICKED) { - if (encoderPastThreshold) { - int32_t encoderMultiplier = 1; - - #if ENABLED(ENCODER_RATE_MULTIPLIER) - - if (encoderRateMultiplierEnabled) { - int32_t encoderMovementSteps = abs(encoderDiff) / ENCODER_PULSES_PER_STEP; - - if (lastEncoderMovementMillis != 0) { - // Note that the rate is always calculated between to passes through the - // loop and that the abs of the encoderDiff value is tracked. - float encoderStepRate = (float)(encoderMovementSteps) / ((float)(ms - lastEncoderMovementMillis)) * 1000.0; - - if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100; - else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10; - - #if ENABLED(ENCODER_RATE_MULTIPLIER_DEBUG) - SERIAL_ECHO_START; - SERIAL_ECHOPAIR("Enc Step Rate: ", encoderStepRate); - SERIAL_ECHOPAIR(" Multiplier: ", encoderMultiplier); - SERIAL_ECHOPAIR(" ENCODER_10X_STEPS_PER_SEC: ", ENCODER_10X_STEPS_PER_SEC); - SERIAL_ECHOPAIR(" ENCODER_100X_STEPS_PER_SEC: ", ENCODER_100X_STEPS_PER_SEC); - SERIAL_EOL; - #endif //ENCODER_RATE_MULTIPLIER_DEBUG - } - - lastEncoderMovementMillis = ms; - } // encoderRateMultiplierEnabled - #endif //ENCODER_RATE_MULTIPLIER - - encoderPosition += (encoderDiff * encoderMultiplier) / ENCODER_PULSES_PER_STEP; - encoderDiff = 0; - } - return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS; - lcdDrawUpdate = LCDVIEW_REDRAW_NOW; - } - #endif // ULTIPANEL - - // We arrive here every ~100ms when idling often enough. - // Instead of tracking the changes simply redraw the Info Screen ~1 time a second. - static int8_t lcd_status_update_delay = 1; // first update one loop delayed - if ( - #if ENABLED(ULTIPANEL) - currentScreen == lcd_status_screen && - #endif - !lcd_status_update_delay--) { - lcd_status_update_delay = 9; - lcdDrawUpdate = LCDVIEW_REDRAW_NOW; - } - - if (lcdDrawUpdate) { - - switch (lcdDrawUpdate) { - case LCDVIEW_CALL_NO_REDRAW: - lcdDrawUpdate = LCDVIEW_NONE; - break; - case LCDVIEW_CLEAR_CALL_REDRAW: // set by handlers, then altered after (rarely occurs here) - case LCDVIEW_CALL_REDRAW_NEXT: // set by handlers, then altered after (never occurs here?) - lcdDrawUpdate = LCDVIEW_REDRAW_NOW; - case LCDVIEW_REDRAW_NOW: // set above, or by a handler through LCDVIEW_CALL_REDRAW_NEXT - case LCDVIEW_NONE: - break; - } - - #if ENABLED(DOGLCD) // Changes due to different driver architecture of the DOGM display - static int8_t dot_color = 0; - dot_color = 1 - dot_color; - u8g.firstPage(); - do { - lcd_setFont(FONT_MENU); - u8g.setPrintPos(125, 0); - u8g.setColorIndex(dot_color); // Set color for the alive dot - u8g.drawPixel(127, 63); // draw alive dot - u8g.setColorIndex(1); // black on white - (*currentScreen)(); - } while (u8g.nextPage()); - #elif ENABLED(ULTIPANEL) - (*currentScreen)(); - #else - lcd_status_screen(); - #endif - } - - #if ENABLED(ULTIPANEL) - - // Return to Status Screen after a timeout - if (currentScreen == lcd_status_screen || defer_return_to_status) - return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS; - else if (ELAPSED(ms, return_to_status_ms)) - lcd_return_to_status(); - - #endif // ULTIPANEL - - switch (lcdDrawUpdate) { - case LCDVIEW_CLEAR_CALL_REDRAW: - lcd_implementation_clear(); - case LCDVIEW_CALL_REDRAW_NEXT: - lcdDrawUpdate = LCDVIEW_REDRAW_NOW; - break; - case LCDVIEW_REDRAW_NOW: - lcdDrawUpdate = LCDVIEW_NONE; - break; - case LCDVIEW_NONE: - break; - } - - } -} - -void set_utf_strlen(char* s, uint8_t n) { - uint8_t i = 0, j = 0; - while (s[i] && (j < n)) { - #if ENABLED(MAPPER_NON) - j++; - #else - if ((s[i] & 0xC0u) != 0x80u) j++; - #endif - i++; - } - while (j++ < n) s[i++] = ' '; - s[i] = '\0'; -} - -void lcd_finishstatus(bool persist=false) { - set_utf_strlen(lcd_status_message, LCD_WIDTH); - #if !(ENABLED(LCD_PROGRESS_BAR) && (PROGRESS_MSG_EXPIRE > 0)) - UNUSED(persist); - #endif - - #if ENABLED(LCD_PROGRESS_BAR) - progress_bar_ms = millis(); - #if PROGRESS_MSG_EXPIRE > 0 - expire_status_ms = persist ? 0 : progress_bar_ms + PROGRESS_MSG_EXPIRE; - #endif - #endif - lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; - - #if ENABLED(FILAMENT_LCD_DISPLAY) - previous_lcd_status_ms = millis(); //get status message to show up for a while - #endif -} - -#if ENABLED(LCD_PROGRESS_BAR) && PROGRESS_MSG_EXPIRE > 0 - void dontExpireStatus() { expire_status_ms = 0; } -#endif - -bool lcd_hasstatus() { return (lcd_status_message[0] != '\0'); } - -void lcd_setstatus(const char* message, bool persist) { - if (lcd_status_message_level > 0) return; - strncpy(lcd_status_message, message, 3 * (LCD_WIDTH)); - lcd_finishstatus(persist); -} - -void lcd_setstatuspgm(const char* message, uint8_t level) { - if (level < lcd_status_message_level) return; - lcd_status_message_level = level; - strncpy_P(lcd_status_message, message, 3 * (LCD_WIDTH)); - lcd_finishstatus(level > 0); -} - -void lcd_setalertstatuspgm(const char* message) { - lcd_setstatuspgm(message, 1); - #if ENABLED(ULTIPANEL) - lcd_return_to_status(); - #endif -} - -void lcd_reset_alert_level() { lcd_status_message_level = 0; } - -#if HAS_LCD_CONTRAST - void set_lcd_contrast(int value) { - lcd_contrast = constrain(value, LCD_CONTRAST_MIN, LCD_CONTRAST_MAX); - u8g.setContrast(lcd_contrast); - } -#endif - -#if ENABLED(ULTIPANEL) - - /** - * Setup Rotary Encoder Bit Values (for two pin encoders to indicate movement) - * These values are independent of which pins are used for EN_A and EN_B indications - * The rotary encoder part is also independent to the chipset used for the LCD - */ - #if defined(EN_A) && defined(EN_B) - #define encrot0 0 - #define encrot1 2 - #define encrot2 3 - #define encrot3 1 - #endif - - #define GET_BUTTON_STATES(DST) \ - uint8_t new_##DST = 0; \ - WRITE(SHIFT_LD, LOW); \ - WRITE(SHIFT_LD, HIGH); \ - for (int8_t i = 0; i < 8; i++) { \ - new_##DST >>= 1; \ - if (READ(SHIFT_OUT)) SBI(new_##DST, 7); \ - WRITE(SHIFT_CLK, HIGH); \ - WRITE(SHIFT_CLK, LOW); \ - } \ - DST = ~new_##DST; //invert it, because a pressed switch produces a logical 0 - - - /** - * Read encoder buttons from the hardware registers - * Warning: This function is called from interrupt context! - */ - void lcd_buttons_update() { - #if ENABLED(NEWPANEL) - uint8_t newbutton = 0; - #if BUTTON_EXISTS(EN1) - if (BUTTON_PRESSED(EN1)) newbutton |= EN_A; - #endif - #if BUTTON_EXISTS(EN2) - if (BUTTON_PRESSED(EN2)) newbutton |= EN_B; - #endif - #if LCD_HAS_DIRECTIONAL_BUTTONS || BUTTON_EXISTS(ENC) - millis_t now = millis(); - #endif - - #if LCD_HAS_DIRECTIONAL_BUTTONS - if (ELAPSED(now, next_button_update_ms)) { - if (false) { - // for the else-ifs below - } - #if BUTTON_EXISTS(UP) - else if (BUTTON_PRESSED(UP)) { - encoderDiff = -(ENCODER_STEPS_PER_MENU_ITEM); - next_button_update_ms = now + 300; - } - #endif - #if BUTTON_EXISTS(DWN) - else if (BUTTON_PRESSED(DWN)) { - encoderDiff = ENCODER_STEPS_PER_MENU_ITEM; - next_button_update_ms = now + 300; - } - #endif - #if BUTTON_EXISTS(LFT) - else if (BUTTON_PRESSED(LFT)) { - encoderDiff = -(ENCODER_PULSES_PER_STEP); - next_button_update_ms = now + 300; - } - #endif - #if BUTTON_EXISTS(RT) - else if (BUTTON_PRESSED(RT)) { - encoderDiff = ENCODER_PULSES_PER_STEP; - next_button_update_ms = now + 300; - } - #endif - } - #endif - - #if BUTTON_EXISTS(ENC) - if (ELAPSED(now, next_button_update_ms) && BUTTON_PRESSED(ENC)) newbutton |= EN_C; - #endif - - buttons = newbutton; - #if ENABLED(LCD_HAS_SLOW_BUTTONS) - buttons |= slow_buttons; - #endif - #if ENABLED(REPRAPWORLD_KEYPAD) - GET_BUTTON_STATES(buttons_reprapworld_keypad); - #endif - #else - GET_BUTTON_STATES(buttons); - #endif //!NEWPANEL - - // Manage encoder rotation - #if ENABLED(REVERSE_MENU_DIRECTION) && ENABLED(REVERSE_ENCODER_DIRECTION) - #define ENCODER_DIFF_CW (encoderDiff -= encoderDirection) - #define ENCODER_DIFF_CCW (encoderDiff += encoderDirection) - #elif ENABLED(REVERSE_MENU_DIRECTION) - #define ENCODER_DIFF_CW (encoderDiff += encoderDirection) - #define ENCODER_DIFF_CCW (encoderDiff -= encoderDirection) - #elif ENABLED(REVERSE_ENCODER_DIRECTION) - #define ENCODER_DIFF_CW (encoderDiff--) - #define ENCODER_DIFF_CCW (encoderDiff++) - #else - #define ENCODER_DIFF_CW (encoderDiff++) - #define ENCODER_DIFF_CCW (encoderDiff--) - #endif - #define ENCODER_SPIN(_E1, _E2) switch (lastEncoderBits) { case _E1: ENCODER_DIFF_CW; break; case _E2: ENCODER_DIFF_CCW; } - - uint8_t enc = 0; - if (buttons & EN_A) enc |= B01; - if (buttons & EN_B) enc |= B10; - if (enc != lastEncoderBits) { - switch (enc) { - case encrot0: ENCODER_SPIN(encrot3, encrot1); break; - case encrot1: ENCODER_SPIN(encrot0, encrot2); break; - case encrot2: ENCODER_SPIN(encrot1, encrot3); break; - case encrot3: ENCODER_SPIN(encrot2, encrot0); break; - } - } - lastEncoderBits = enc; - } - - bool lcd_detected(void) { - #if (ENABLED(LCD_I2C_TYPE_MCP23017) || ENABLED(LCD_I2C_TYPE_MCP23008)) && ENABLED(DETECT_DEVICE) - return lcd.LcdDetected() == 1; - #else - return true; - #endif - } - - bool lcd_clicked() { return LCD_CLICKED; } - -#endif // ULTIPANEL - -/*********************************/ -/** Number to string conversion **/ -/*********************************/ - -#define DIGIT(n) ('0' + (n)) -#define DIGIMOD(n) DIGIT((n) % 10) - -char conv[8]; - -// Convert float to rj string with 123 or -12 format -char *ftostr3(const float& x) { return itostr3((int)x); } - -// Convert float to rj string with _123, -123, _-12, or __-1 format -char *ftostr4sign(const float& x) { return itostr4sign((int)x); } - -// Convert unsigned int to string with 12 format -char* itostr2(const uint8_t& x) { - int xx = x; - conv[0] = DIGIMOD(xx / 10); - conv[1] = DIGIMOD(xx); - conv[2] = '\0'; - return conv; -} - -// Convert float to string with +123.4 / -123.4 format -char* ftostr41sign(const float& x) { - int xx = int(abs(x * 10)) % 10000; - conv[0] = x >= 0 ? '+' : '-'; - conv[1] = DIGIMOD(xx / 1000); - conv[2] = DIGIMOD(xx / 100); - conv[3] = DIGIMOD(xx / 10); - conv[4] = '.'; - conv[5] = DIGIMOD(xx); - conv[6] = '\0'; - return conv; -} - -// Convert signed float to string with 023.45 / -23.45 format -char *ftostr32(const float& x) { - long xx = abs(x * 100); - conv[0] = x >= 0 ? DIGIMOD(xx / 10000) : '-'; - conv[1] = DIGIMOD(xx / 1000); - conv[2] = DIGIMOD(xx / 100); - conv[3] = '.'; - conv[4] = DIGIMOD(xx / 10); - conv[5] = DIGIMOD(xx); - conv[6] = '\0'; - return conv; -} - -// Convert signed float to string (6 digit) with -1.234 / _0.000 / +1.234 format -char* ftostr43sign(const float& x, char plus/*=' '*/) { - long xx = x * 1000; - if (xx == 0) - conv[0] = ' '; - else if (xx > 0) - conv[0] = plus; - else { - xx = -xx; - conv[0] = '-'; - } - conv[1] = DIGIMOD(xx / 1000); - conv[2] = '.'; - conv[3] = DIGIMOD(xx / 100); - conv[4] = DIGIMOD(xx / 10); - conv[5] = DIGIMOD(xx); - conv[6] = '\0'; - return conv; -} - -// Convert unsigned float to string with 1.23 format -char* ftostr12ns(const float& x) { - long xx = x * 100; - xx = abs(xx); - conv[0] = DIGIMOD(xx / 100); - conv[1] = '.'; - conv[2] = DIGIMOD(xx / 10); - conv[3] = DIGIMOD(xx); - conv[4] = '\0'; - return conv; -} - -// Convert signed int to lj string with +012 / -012 format -char* itostr3sign(const int& x) { - int xx; - if (x >= 0) { - conv[0] = '+'; - xx = x; - } - else { - conv[0] = '-'; - xx = -x; - } - conv[1] = DIGIMOD(xx / 100); - conv[2] = DIGIMOD(xx / 10); - conv[3] = DIGIMOD(xx); - conv[4] = '.'; - conv[5] = '0'; - conv[6] = '\0'; - return conv; -} - -// Convert signed int to rj string with 123 or -12 format -char* itostr3(const int& x) { - int xx = x; - if (xx < 0) { - conv[0] = '-'; - xx = -xx; - } - else - conv[0] = xx >= 100 ? DIGIMOD(xx / 100) : ' '; - - conv[1] = xx >= 10 ? DIGIMOD(xx / 10) : ' '; - conv[2] = DIGIMOD(xx); - conv[3] = '\0'; - return conv; -} - -// Convert unsigned int to lj string with 123 format -char* itostr3left(const int& xx) { - if (xx >= 100) { - conv[0] = DIGIMOD(xx / 100); - conv[1] = DIGIMOD(xx / 10); - conv[2] = DIGIMOD(xx); - conv[3] = '\0'; - } - else if (xx >= 10) { - conv[0] = DIGIMOD(xx / 10); - conv[1] = DIGIMOD(xx); - conv[2] = '\0'; - } - else { - conv[0] = DIGIMOD(xx); - conv[1] = '\0'; - } - return conv; -} - -// Convert signed int to rj string with _123, -123, _-12, or __-1 format -char *itostr4sign(const int& x) { - int xx = abs(x); - int sign = 0; - if (xx >= 100) { - conv[1] = DIGIMOD(xx / 100); - conv[2] = DIGIMOD(xx / 10); - } - else if (xx >= 10) { - conv[0] = ' '; - sign = 1; - conv[2] = DIGIMOD(xx / 10); - } - else { - conv[0] = ' '; - conv[1] = ' '; - sign = 2; - } - conv[sign] = x < 0 ? '-' : ' '; - conv[3] = DIGIMOD(xx); - conv[4] = '\0'; - return conv; -} - -// Convert unsigned float to rj string with 12345 format -char* ftostr5rj(const float& x) { - long xx = abs(x); - conv[0] = xx >= 10000 ? DIGIMOD(xx / 10000) : ' '; - conv[1] = xx >= 1000 ? DIGIMOD(xx / 1000) : ' '; - conv[2] = xx >= 100 ? DIGIMOD(xx / 100) : ' '; - conv[3] = xx >= 10 ? DIGIMOD(xx / 10) : ' '; - conv[4] = DIGIMOD(xx); - conv[5] = '\0'; - return conv; -} - -// Convert signed float to string with +1234.5 format -char* ftostr51sign(const float& x) { - long xx = abs(x * 10); - conv[0] = (x >= 0) ? '+' : '-'; - conv[1] = DIGIMOD(xx / 10000); - conv[2] = DIGIMOD(xx / 1000); - conv[3] = DIGIMOD(xx / 100); - conv[4] = DIGIMOD(xx / 10); - conv[5] = '.'; - conv[6] = DIGIMOD(xx); - conv[7] = '\0'; - return conv; -} - -// Convert signed float to string with +123.45 format -char* ftostr52sign(const float& x) { - long xx = abs(x * 100); - conv[0] = (x >= 0) ? '+' : '-'; - conv[1] = DIGIMOD(xx / 10000); - conv[2] = DIGIMOD(xx / 1000); - conv[3] = DIGIMOD(xx / 100); - conv[4] = '.'; - conv[5] = DIGIMOD(xx / 10); - conv[6] = DIGIMOD(xx); - conv[7] = '\0'; - return conv; -} - -// Convert signed float to space-padded string with -_23.4_ format -char* ftostr52sp(const float& x) { - long xx = x * 100; - uint8_t dig; - if (xx < 0) { // negative val = -_0 - xx = -xx; - conv[0] = '-'; - dig = (xx / 1000) % 10; - conv[1] = dig ? DIGIT(dig) : ' '; - } - else { // positive val = __0 - dig = (xx / 10000) % 10; - if (dig) { - conv[0] = DIGIT(dig); - conv[1] = DIGIMOD(xx / 1000); - } - else { - conv[0] = ' '; - dig = (xx / 1000) % 10; - conv[1] = dig ? DIGIT(dig) : ' '; - } - } - - conv[2] = DIGIMOD(xx / 100); // lsd always - - dig = xx % 10; - if (dig) { // 2 decimal places - conv[5] = DIGIT(dig); - conv[4] = DIGIMOD(xx / 10); - conv[3] = '.'; - } - else { // 1 or 0 decimal place - dig = (xx / 10) % 10; - if (dig) { - conv[4] = DIGIT(dig); - conv[3] = '.'; - } - else { - conv[3] = conv[4] = ' '; - } - conv[5] = ' '; - } - conv[6] = '\0'; - return conv; -} - -#endif // ULTRA_LCD diff --git a/lib/Marlin/ultralcd.h b/lib/Marlin/ultralcd.h deleted file mode 100644 index 4cc8334..0000000 --- a/lib/Marlin/ultralcd.h +++ /dev/null @@ -1,187 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef ULTRALCD_H -#define ULTRALCD_H - -#include "Marlin.h" - -#if ENABLED(ULTRA_LCD) - - #define BUTTON_EXISTS(BN) (defined(BTN_## BN) && BTN_## BN >= 0) - #define BUTTON_PRESSED(BN) !READ(BTN_## BN) - - int lcd_strlen(const char* s); - int lcd_strlen_P(const char* s); - void lcd_update(); - void lcd_init(); - bool lcd_hasstatus(); - void lcd_setstatus(const char* message, const bool persist=false); - void lcd_setstatuspgm(const char* message, const uint8_t level=0); - void lcd_setalertstatuspgm(const char* message); - void lcd_reset_alert_level(); - bool lcd_detected(void); - void lcd_kill_screen(); - void kill_screen(const char* lcd_msg); - - #if HAS_BUZZER - void lcd_buzz(long duration, uint16_t freq); - #endif - - #if ENABLED(LCD_PROGRESS_BAR) && PROGRESS_MSG_EXPIRE > 0 - void dontExpireStatus(); - #endif - - #if ENABLED(DOGLCD) - extern int lcd_contrast; - void set_lcd_contrast(int value); - #elif ENABLED(SHOW_BOOTSCREEN) - void bootscreen(); - #endif - - #define LCD_MESSAGEPGM(x) lcd_setstatuspgm(PSTR(x)) - #define LCD_ALERTMESSAGEPGM(x) lcd_setalertstatuspgm(PSTR(x)) - - #define LCD_UPDATE_INTERVAL 100 - #define LCD_TIMEOUT_TO_STATUS 15000 - - #if ENABLED(ULTIPANEL) - extern volatile uint8_t buttons; //the last checked buttons in a bit array. - void lcd_buttons_update(); - void lcd_quick_feedback(); // Audible feedback for a button click - could also be visual - bool lcd_clicked(); - void lcd_ignore_click(bool b=true); - - #if ENABLED(FILAMENT_CHANGE_FEATURE) - void lcd_filament_change_show_message(FilamentChangeMessage message); - #endif // FILAMENT_CHANGE_FEATURE - - #else - FORCE_INLINE void lcd_buttons_update() {} - #endif - - extern int preheatHotendTemp1; - extern int preheatBedTemp1; - extern int preheatFanSpeed1; - extern int preheatHotendTemp2; - extern int preheatBedTemp2; - extern int preheatFanSpeed2; - - #if ENABLED(FILAMENT_LCD_DISPLAY) - extern millis_t previous_lcd_status_ms; - #endif - - bool lcd_blink(); - - #if ENABLED(ULTIPANEL) - #define BLEN_A 0 - #define BLEN_B 1 - // Encoder click is directly connected - #if BUTTON_EXISTS(ENC) - #define BLEN_C 2 - #define EN_C (_BV(BLEN_C)) - #endif - #define EN_A (_BV(BLEN_A)) - #define EN_B (_BV(BLEN_B)) - #define EN_C (_BV(BLEN_C)) - #endif - - #if ENABLED(REPRAPWORLD_KEYPAD) // is also ULTIPANEL and NEWPANEL - - #define REPRAPWORLD_BTN_OFFSET 0 // bit offset into buttons for shift register values - - #define BLEN_REPRAPWORLD_KEYPAD_F3 0 - #define BLEN_REPRAPWORLD_KEYPAD_F2 1 - #define BLEN_REPRAPWORLD_KEYPAD_F1 2 - #define BLEN_REPRAPWORLD_KEYPAD_DOWN 3 - #define BLEN_REPRAPWORLD_KEYPAD_RIGHT 4 - #define BLEN_REPRAPWORLD_KEYPAD_MIDDLE 5 - #define BLEN_REPRAPWORLD_KEYPAD_UP 6 - #define BLEN_REPRAPWORLD_KEYPAD_LEFT 7 - - #define EN_REPRAPWORLD_KEYPAD_F3 (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F3)) - #define EN_REPRAPWORLD_KEYPAD_F2 (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F2)) - #define EN_REPRAPWORLD_KEYPAD_F1 (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F1)) - #define EN_REPRAPWORLD_KEYPAD_DOWN (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_DOWN)) - #define EN_REPRAPWORLD_KEYPAD_RIGHT (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_RIGHT)) - #define EN_REPRAPWORLD_KEYPAD_MIDDLE (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_MIDDLE)) - #define EN_REPRAPWORLD_KEYPAD_UP (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_UP)) - #define EN_REPRAPWORLD_KEYPAD_LEFT (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_LEFT)) - - #define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F3) - #define REPRAPWORLD_KEYPAD_MOVE_Z_UP (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F2) - #define REPRAPWORLD_KEYPAD_MOVE_MENU (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F1) - #define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_DOWN) - #define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_RIGHT) - #define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_MIDDLE) - #define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_UP) - #define REPRAPWORLD_KEYPAD_MOVE_X_LEFT (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_LEFT) - - #define REPRAPWORLD_KEYPAD_PRESSED (buttons_reprapworld_keypad & ( \ - EN_REPRAPWORLD_KEYPAD_F3 | \ - EN_REPRAPWORLD_KEYPAD_F2 | \ - EN_REPRAPWORLD_KEYPAD_F1 | \ - EN_REPRAPWORLD_KEYPAD_DOWN | \ - EN_REPRAPWORLD_KEYPAD_RIGHT | \ - EN_REPRAPWORLD_KEYPAD_MIDDLE | \ - EN_REPRAPWORLD_KEYPAD_UP | \ - EN_REPRAPWORLD_KEYPAD_LEFT) \ - ) - - #define LCD_CLICKED ((buttons & EN_C) || (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F1)) - #elif ENABLED(NEWPANEL) - #define LCD_CLICKED (buttons & EN_C) - #endif - -#else //no LCD - FORCE_INLINE void lcd_update() {} - FORCE_INLINE void lcd_init() {} - FORCE_INLINE bool lcd_hasstatus() { return false; } - FORCE_INLINE void lcd_setstatus(const char* message, const bool persist=false) {UNUSED(message); UNUSED(persist);} - FORCE_INLINE void lcd_setstatuspgm(const char* message, const uint8_t level=0) {UNUSED(message); UNUSED(level);} - FORCE_INLINE void lcd_buttons_update() {} - FORCE_INLINE void lcd_reset_alert_level() {} - FORCE_INLINE bool lcd_detected(void) { return true; } - - #define LCD_MESSAGEPGM(x) NOOP - #define LCD_ALERTMESSAGEPGM(x) NOOP - -#endif //ULTRA_LCD - -char* itostr2(const uint8_t& x); -char* itostr3sign(const int& x); -char* itostr3(const int& x); -char* itostr3left(const int& x); -char* itostr4sign(const int& x); - -char* ftostr3(const float& x); -char* ftostr4sign(const float& x); -char* ftostr41sign(const float& x); -char* ftostr32(const float& x); -char* ftostr43sign(const float& x, char plus=' '); -char* ftostr12ns(const float& x); -char* ftostr5rj(const float& x); -char* ftostr51sign(const float& x); -char* ftostr52sign(const float& x); -char* ftostr52sp(const float& x); // remove zero-padding from ftostr32 - -#endif //ULTRALCD_H diff --git a/lib/Marlin/ultralcd_impl_DOGM.h b/lib/Marlin/ultralcd_impl_DOGM.h deleted file mode 100644 index f8ffd4d..0000000 --- a/lib/Marlin/ultralcd_impl_DOGM.h +++ /dev/null @@ -1,634 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * ultralcd_impl_DOGM.h - * - * Graphics LCD implementation for 128x64 pixel LCDs by STB for ErikZalm/Marlin - * Demonstrator: http://www.reprap.org/wiki/STB_Electronics - * License: http://opensource.org/licenses/BSD-3-Clause - * - * With the use of: - * u8glib by Oliver Kraus - * https://github.com/olikraus/U8glib_Arduino - * License: http://opensource.org/licenses/BSD-3-Clause - */ - -#ifndef ULTRALCD_IMPL_DOGM_H -#define ULTRALCD_IMPL_DOGM_H - -#include "MarlinConfig.h" - -/** - * Implementation of the LCD display routines for a DOGM128 graphic display. - * These are common LCD 128x64 pixel graphic displays. - */ -#include "ultralcd.h" -#include "ultralcd_st7920_u8glib_rrd.h" -#include "dogm_bitmaps.h" -#include "duration_t.h" - -#include - -#if ENABLED(SHOW_BOOTSCREEN) && ENABLED(SHOW_CUSTOM_BOOTSCREEN) - #include "_Bootscreen.h" -#endif - -#if DISABLED(MAPPER_C2C3) && DISABLED(MAPPER_NON) && ENABLED(USE_BIG_EDIT_FONT) - #undef USE_BIG_EDIT_FONT -#endif - -#if ENABLED(USE_SMALL_INFOFONT) - #include "dogm_font_data_6x9_marlin.h" - #define FONT_STATUSMENU_NAME u8g_font_6x9 -#else - #define FONT_STATUSMENU_NAME FONT_MENU_NAME -#endif - -#include "dogm_font_data_Marlin_symbols.h" // The Marlin special symbols -#define FONT_SPECIAL_NAME Marlin_symbols - -#if DISABLED(SIMULATE_ROMFONT) - #if ENABLED(DISPLAY_CHARSET_ISO10646_1) - #include "dogm_font_data_ISO10646_1.h" - #define FONT_MENU_NAME ISO10646_1_5x7 - #elif ENABLED(DISPLAY_CHARSET_ISO10646_5) - #include "dogm_font_data_ISO10646_5_Cyrillic.h" - #define FONT_MENU_NAME ISO10646_5_Cyrillic_5x7 - #elif ENABLED(DISPLAY_CHARSET_ISO10646_KANA) - #include "dogm_font_data_ISO10646_Kana.h" - #define FONT_MENU_NAME ISO10646_Kana_5x7 - #elif ENABLED(DISPLAY_CHARSET_ISO10646_GREEK) - #include "dogm_font_data_ISO10646_Greek.h" - #define FONT_MENU_NAME ISO10646_Greek_5x7 - #elif ENABLED(DISPLAY_CHARSET_ISO10646_CN) - #include "dogm_font_data_ISO10646_CN.h" - #define FONT_MENU_NAME ISO10646_CN - #define TALL_FONT_CORRECTION 1 - #else // fall-back - #include "dogm_font_data_ISO10646_1.h" - #define FONT_MENU_NAME ISO10646_1_5x7 - #endif -#else // SIMULATE_ROMFONT - #if DISPLAY_CHARSET_HD44780 == JAPANESE - #include "dogm_font_data_HD44780_J.h" - #define FONT_MENU_NAME HD44780_J_5x7 - #elif DISPLAY_CHARSET_HD44780 == WESTERN - #include "dogm_font_data_HD44780_W.h" - #define FONT_MENU_NAME HD44780_W_5x7 - #elif DISPLAY_CHARSET_HD44780 == CYRILLIC - #include "dogm_font_data_HD44780_C.h" - #define FONT_MENU_NAME HD44780_C_5x7 - #else // fall-back - #include "dogm_font_data_ISO10646_1.h" - #define FONT_MENU_NAME ISO10646_1_5x7 - #endif -#endif // SIMULATE_ROMFONT - -//#define FONT_STATUSMENU_NAME FONT_MENU_NAME - -#define FONT_STATUSMENU 1 -#define FONT_SPECIAL 2 -#define FONT_MENU_EDIT 3 -#define FONT_MENU 4 - -// DOGM parameters (size in pixels) -#define DOG_CHAR_WIDTH 6 -#define DOG_CHAR_HEIGHT 12 -#if ENABLED(USE_BIG_EDIT_FONT) - #define FONT_MENU_EDIT_NAME u8g_font_9x18 - #define DOG_CHAR_WIDTH_EDIT 9 - #define DOG_CHAR_HEIGHT_EDIT 18 - #define LCD_WIDTH_EDIT 14 -#else - #define FONT_MENU_EDIT_NAME FONT_MENU_NAME - #define DOG_CHAR_WIDTH_EDIT 6 - #define DOG_CHAR_HEIGHT_EDIT 12 - #define LCD_WIDTH_EDIT 22 -#endif - -#ifndef TALL_FONT_CORRECTION - #define TALL_FONT_CORRECTION 0 -#endif - -#define START_COL 0 - -// LCD selection -#if ENABLED(REPRAPWORLD_GRAPHICAL_LCD) - U8GLIB_ST7920_128X64_4X u8g(LCD_PINS_RS); -#elif ENABLED(U8GLIB_ST7920) - //U8GLIB_ST7920_128X64_RRD u8g(0,0,0); - U8GLIB_ST7920_128X64_RRD u8g(0); -#elif ENABLED(CARTESIO_UI) - // The CartesioUI display - #if DOGLCD_MOSI != -1 && DOGLCD_SCK != -1 - // using SW-SPI - U8GLIB_DOGM128 u8g(DOGLCD_SCK, DOGLCD_MOSI, DOGLCD_CS, DOGLCD_A0); - #else - U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0); - #endif -#elif ENABLED(U8GLIB_LM6059_AF) - // Based on the Adafruit ST7565 (http://www.adafruit.com/products/250) - U8GLIB_LM6059 u8g(DOGLCD_CS, DOGLCD_A0); -#elif ENABLED(MAKRPANEL) || ENABLED(VIKI2) || ENABLED(miniVIKI) - // The MaKrPanel, Mini Viki, and Viki 2.0, ST7565 controller as well - U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0); -#elif ENABLED(U8GLIB_SSD1306) - // Generic support for SSD1306 OLED I2C LCDs - U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST); -#elif ENABLED(U8GLIB_SH1106) - // Generic support for SH1106 OLED I2C LCDs - U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_FAST); -#elif ENABLED(MINIPANEL) - // The MINIPanel display - U8GLIB_MINI12864 u8g(DOGLCD_CS, DOGLCD_A0); -#else - // for regular DOGM128 display with HW-SPI - U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0); // HW-SPI Com: CS, A0 -#endif - -#ifndef LCD_PIXEL_WIDTH - #define LCD_PIXEL_WIDTH 128 -#endif -#ifndef LCD_PIXEL_HEIGHT - #define LCD_PIXEL_HEIGHT 64 -#endif - -#include "utf_mapper.h" - -int lcd_contrast; -static char currentfont = 0; - -static void lcd_setFont(char font_nr) { - switch(font_nr) { - case FONT_STATUSMENU : {u8g.setFont(FONT_STATUSMENU_NAME); currentfont = FONT_STATUSMENU;}; break; - case FONT_MENU : {u8g.setFont(FONT_MENU_NAME); currentfont = FONT_MENU;}; break; - case FONT_SPECIAL : {u8g.setFont(FONT_SPECIAL_NAME); currentfont = FONT_SPECIAL;}; break; - case FONT_MENU_EDIT : {u8g.setFont(FONT_MENU_EDIT_NAME); currentfont = FONT_MENU_EDIT;}; break; - break; - } -} - -char lcd_print(char c) { - if ((c > 0) && (c <= LCD_STR_SPECIAL_MAX)) { - u8g.setFont(FONT_SPECIAL_NAME); - u8g.print(c); - lcd_setFont(currentfont); - return 1; - } else { - return charset_mapper(c); - } -} - -char lcd_print(const char* str) { - char c; - int i = 0; - char n = 0; - while ((c = str[i++])) { - n += lcd_print(c); - } - return n; -} - -/* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */ -char lcd_printPGM(const char* str) { - char c; - char n = 0; - while ((c = pgm_read_byte(str++))) { - n += lcd_print(c); - } - return n; -} - -/* Warning: This function is called from interrupt context */ -static void lcd_implementation_init() { - - #if defined(LCD_PIN_BL) && LCD_PIN_BL > -1 // Enable LCD backlight - pinMode(LCD_PIN_BL, OUTPUT); - digitalWrite(LCD_PIN_BL, HIGH); - #endif - - #if defined(LCD_PIN_RESET) && LCD_PIN_RESET > -1 - pinMode(LCD_PIN_RESET, OUTPUT); - digitalWrite(LCD_PIN_RESET, HIGH); - #endif - - #if DISABLED(MINIPANEL) // setContrast not working for Mini Panel - u8g.setContrast(lcd_contrast); - #endif - - #if ENABLED(LCD_SCREEN_ROT_90) - u8g.setRot90(); // Rotate screen by 90° - #elif ENABLED(LCD_SCREEN_ROT_180) - u8g.setRot180(); // Rotate screen by 180° - #elif ENABLED(LCD_SCREEN_ROT_270) - u8g.setRot270(); // Rotate screen by 270° - #endif - - #if ENABLED(SHOW_BOOTSCREEN) - static bool show_bootscreen = true; - - #if ENABLED(SHOW_CUSTOM_BOOTSCREEN) - if (show_bootscreen) { - u8g.firstPage(); - do { - u8g.drawBitmapP( - (128 - (CUSTOM_BOOTSCREEN_BMPWIDTH)) /2, - ( 64 - (CUSTOM_BOOTSCREEN_BMPHEIGHT)) /2, - CEILING(CUSTOM_BOOTSCREEN_BMPWIDTH, 8), CUSTOM_BOOTSCREEN_BMPHEIGHT, custom_start_bmp); - } while (u8g.nextPage()); - safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT); - } - #endif // SHOW_CUSTOM_BOOTSCREEN - - int offx = (u8g.getWidth() - (START_BMPWIDTH)) / 2; - - #if ENABLED(START_BMPHIGH) - int offy = 0; - #else - int offy = DOG_CHAR_HEIGHT; - #endif - - int txt1X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE1) - 1) * (DOG_CHAR_WIDTH)) / 2; - - if (show_bootscreen) { - u8g.firstPage(); - do { - u8g.drawBitmapP(offx, offy, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp); - lcd_setFont(FONT_MENU); - #ifndef STRING_SPLASH_LINE2 - u8g.drawStr(txt1X, u8g.getHeight() - (DOG_CHAR_HEIGHT), STRING_SPLASH_LINE1); - #else - int txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1) * (DOG_CHAR_WIDTH)) / 2; - u8g.drawStr(txt1X, u8g.getHeight() - (DOG_CHAR_HEIGHT) * 3 / 2, STRING_SPLASH_LINE1); - u8g.drawStr(txt2X, u8g.getHeight() - (DOG_CHAR_HEIGHT) * 1 / 2, STRING_SPLASH_LINE2); - #endif - } while (u8g.nextPage()); - } - - show_bootscreen = false; - - #endif // SHOW_BOOTSCREEN -} - -void lcd_kill_screen() { - lcd_setFont(FONT_MENU); - u8g.setPrintPos(0, u8g.getHeight()/4*1); - lcd_print(lcd_status_message); - u8g.setPrintPos(0, u8g.getHeight()/4*2); - lcd_printPGM(PSTR(MSG_HALTED)); - u8g.setPrintPos(0, u8g.getHeight()/4*3); - lcd_printPGM(PSTR(MSG_PLEASE_RESET)); -} - -static void lcd_implementation_clear() { } // Automatically cleared by Picture Loop - -FORCE_INLINE void _draw_centered_temp(int temp, int x, int y) { - int degsize = 6 * (temp >= 100 ? 3 : temp >= 10 ? 2 : 1); // number's pixel width - u8g.setPrintPos(x - (18 - degsize) / 2, y); // move left if shorter - lcd_print(itostr3(temp)); - lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); -} - -FORCE_INLINE void _draw_heater_status(int x, int heater) { - #if HAS_TEMP_BED - bool isBed = heater < 0; - #else - const bool isBed = false; - #endif - - _draw_centered_temp((isBed ? thermalManager.degTargetBed() : thermalManager.degTargetHotend(heater)) + 0.5, x, 7); - - _draw_centered_temp((isBed ? thermalManager.degBed() : thermalManager.degHotend(heater)) + 0.5, x, 28); - - int h = isBed ? 7 : 8, - y = isBed ? 18 : 17; - if (isBed ? thermalManager.isHeatingBed() : thermalManager.isHeatingHotend(heater)) { - u8g.setColorIndex(0); // white on black - u8g.drawBox(x + h, y, 2, 2); - u8g.setColorIndex(1); // black on white - } - else { - u8g.drawBox(x + h, y, 2, 2); - } -} - -FORCE_INLINE void _draw_axis_label(AxisEnum axis, const char *pstr, bool blink) { - if (blink) - lcd_printPGM(pstr); - else { - if (!axis_homed[axis]) - lcd_printPGM(PSTR("?")); - else { - #if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING) - if (!axis_known_position[axis]) - lcd_printPGM(PSTR(" ")); - else - #endif - lcd_printPGM(pstr); - } - } -} - -static void lcd_implementation_status_screen() { - u8g.setColorIndex(1); // black on white - - bool blink = lcd_blink(); - - // Symbols menu graphics, animated fan - u8g.drawBitmapP(9, 1, STATUS_SCREENBYTEWIDTH, STATUS_SCREENHEIGHT, - #if HAS_FAN0 - blink && fanSpeeds[0] ? status_screen0_bmp : status_screen1_bmp - #else - status_screen0_bmp - #endif - ); - - // Status Menu Font for SD info, Heater status, Fan, XYZ - lcd_setFont(FONT_STATUSMENU); - - #if ENABLED(SDSUPPORT) - // SD Card Symbol - u8g.drawBox(42, 42 - (TALL_FONT_CORRECTION), 8, 7); - u8g.drawBox(50, 44 - (TALL_FONT_CORRECTION), 2, 5); - u8g.drawFrame(42, 49 - (TALL_FONT_CORRECTION), 10, 4); - u8g.drawPixel(50, 43 - (TALL_FONT_CORRECTION)); - - // Progress bar frame - u8g.drawFrame(54, 49, 73, 4 - (TALL_FONT_CORRECTION)); - - // SD Card Progress bar and clock - if (IS_SD_PRINTING) { - // Progress bar solid part - u8g.drawBox(55, 50, (unsigned int)(71 * card.percentDone() * 0.01), 2 - (TALL_FONT_CORRECTION)); - } - - u8g.setPrintPos(80,48); - - char buffer[10]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toDigital(buffer); - lcd_print(buffer); - - #endif - - // Extruders - HOTEND_LOOP() _draw_heater_status(5 + e * 25, e); - - // Heated bed - #if HOTENDS < 4 && HAS_TEMP_BED - _draw_heater_status(81, -1); - #endif - - // Fan - u8g.setPrintPos(104, 27); - #if HAS_FAN0 - int per = ((fanSpeeds[0] + 1) * 100) / 256; - if (per) { - lcd_print(itostr3(per)); - lcd_print('%'); - } - #endif - - // X, Y, Z-Coordinates - // Before homing the axis letters are blinking 'X' <-> '?'. - // When axis is homed but axis_known_position is false the axis letters are blinking 'X' <-> ' '. - // When everything is ok you see a constant 'X'. - #define XYZ_BASELINE 38 - - #if ENABLED(USE_SMALL_INFOFONT) - u8g.drawBox(0, 30, LCD_PIXEL_WIDTH, 10); - #else - u8g.drawBox(0, 30, LCD_PIXEL_WIDTH, 9); - #endif - u8g.setColorIndex(0); // white on black - - u8g.setPrintPos(2, XYZ_BASELINE); - _draw_axis_label(X_AXIS, PSTR(MSG_X), blink); - u8g.setPrintPos(10, XYZ_BASELINE); - lcd_print(ftostr4sign(current_position[X_AXIS])); - - u8g.setPrintPos(43, XYZ_BASELINE); - _draw_axis_label(Y_AXIS, PSTR(MSG_Y), blink); - u8g.setPrintPos(51, XYZ_BASELINE); - lcd_print(ftostr4sign(current_position[Y_AXIS])); - - u8g.setPrintPos(83, XYZ_BASELINE); - _draw_axis_label(Z_AXIS, PSTR(MSG_Z), blink); - u8g.setPrintPos(91, XYZ_BASELINE); - lcd_print(ftostr52sp(current_position[Z_AXIS] + 0.00001)); - - u8g.setColorIndex(1); // black on white - - // Feedrate - lcd_setFont(FONT_MENU); - u8g.setPrintPos(3, 49); - lcd_print(LCD_STR_FEEDRATE[0]); - - lcd_setFont(FONT_STATUSMENU); - u8g.setPrintPos(12, 49); - lcd_print(itostr3(feedrate_percentage)); - lcd_print('%'); - - // Status line - #if ENABLED(USE_SMALL_INFOFONT) - u8g.setPrintPos(0, 62); - #else - u8g.setPrintPos(0, 63); - #endif - #if DISABLED(FILAMENT_LCD_DISPLAY) - lcd_print(lcd_status_message); - #else - if (PENDING(millis(), previous_lcd_status_ms + 5000UL)) { //Display both Status message line and Filament display on the last line - lcd_print(lcd_status_message); - } - else { - lcd_printPGM(PSTR("dia:")); - lcd_print(ftostr12ns(filament_width_meas)); - lcd_printPGM(PSTR(" factor:")); - lcd_print(itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM])); - lcd_print('%'); - } - #endif -} - -static void lcd_implementation_mark_as_selected(uint8_t row, bool isSelected) { - if (isSelected) { - u8g.setColorIndex(1); // black on white - u8g.drawBox(0, row * (DOG_CHAR_HEIGHT) + 3 - (TALL_FONT_CORRECTION), LCD_PIXEL_WIDTH, DOG_CHAR_HEIGHT); - u8g.setColorIndex(0); // following text must be white on black - } - else { - u8g.setColorIndex(1); // unmarked text is black on white - } - u8g.setPrintPos((START_COL) * (DOG_CHAR_WIDTH), (row + 1) * (DOG_CHAR_HEIGHT)); -} - -#if ENABLED(LCD_INFO_MENU) || ENABLED(FILAMENT_CHANGE_FEATURE) - - static void lcd_implementation_drawmenu_static(uint8_t row, const char* pstr, bool center=true, bool invert=false, const char* valstr=NULL) { - - lcd_implementation_mark_as_selected(row, invert); - - char c; - int8_t n = LCD_WIDTH - (START_COL); - - if (center && !valstr) { - int8_t pad = (LCD_WIDTH - lcd_strlen_P(pstr)) / 2; - while (--pad >= 0) { lcd_print(' '); n--; } - } - while (n > 0 && (c = pgm_read_byte(pstr))) { - n -= lcd_print(c); - pstr++; - } - if (valstr) while (n > 0 && (c = *valstr)) { - n -= lcd_print(c); - valstr++; - } - while (n-- > 0) lcd_print(' '); - } - -#endif // LCD_INFO_MENU || FILAMENT_CHANGE_FEATURE - -static void lcd_implementation_drawmenu_generic(bool isSelected, uint8_t row, const char* pstr, char pre_char, char post_char) { - UNUSED(pre_char); - - char c; - uint8_t n = LCD_WIDTH - (START_COL) - 2; - - lcd_implementation_mark_as_selected(row, isSelected); - - while (c = pgm_read_byte(pstr)) { - n -= lcd_print(c); - pstr++; - } - while (n--) lcd_print(' '); - u8g.setPrintPos(LCD_PIXEL_WIDTH - (DOG_CHAR_WIDTH), (row + 1) * (DOG_CHAR_HEIGHT)); - lcd_print(post_char); - lcd_print(' '); -} - -static void _drawmenu_setting_edit_generic(bool isSelected, uint8_t row, const char* pstr, const char* data, bool pgm) { - char c; - uint8_t vallen = (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data))); - uint8_t n = LCD_WIDTH - (START_COL) - 2 - vallen; - - lcd_implementation_mark_as_selected(row, isSelected); - - while (c = pgm_read_byte(pstr)) { - n -= lcd_print(c); - pstr++; - } - lcd_print(':'); - while (n--) lcd_print(' '); - u8g.setPrintPos(LCD_PIXEL_WIDTH - (DOG_CHAR_WIDTH) * vallen, (row + 1) * (DOG_CHAR_HEIGHT)); - if (pgm) lcd_printPGM(data); else lcd_print((char*)data); -} - -#define lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, data) _drawmenu_setting_edit_generic(sel, row, pstr, data, false) -#define lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, data) _drawmenu_setting_edit_generic(sel, row, pstr, data, true) - -#define lcd_implementation_drawmenu_setting_edit_int3(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, itostr3(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float3(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr3(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float32(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr32(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float43(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr43sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float5(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr5rj(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float52(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr52sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float51(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr51sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_long5(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr5rj(*(data))) -#define lcd_implementation_drawmenu_setting_edit_bool(sel, row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) - -//Add version for callback functions -#define lcd_implementation_drawmenu_setting_edit_callback_int3(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, itostr3(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float3(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr3(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float32(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr32(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float43(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr43sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float5(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr5rj(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float52(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr52sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float51(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr51sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_long5(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, ftostr5rj(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_bool(sel, row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) - -void lcd_implementation_drawedit(const char* pstr, const char* value=NULL) { - uint8_t rows = 1; - uint8_t lcd_width = LCD_WIDTH - (START_COL), char_width = DOG_CHAR_WIDTH; - uint8_t vallen = lcd_strlen(value); - - #if ENABLED(USE_BIG_EDIT_FONT) - if (lcd_strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) { - lcd_setFont(FONT_MENU_EDIT); - lcd_width = LCD_WIDTH_EDIT + 1; - char_width = DOG_CHAR_WIDTH_EDIT; - if (lcd_strlen_P(pstr) >= LCD_WIDTH_EDIT - vallen) rows = 2; - } - else { - lcd_setFont(FONT_MENU); - } - #endif - - if (lcd_strlen_P(pstr) > LCD_WIDTH - 2 - vallen) rows = 2; - - const float kHalfChar = (DOG_CHAR_HEIGHT_EDIT) / 2; - float rowHeight = u8g.getHeight() / (rows + 1); // 1/(rows+1) = 1/2 or 1/3 - - u8g.setPrintPos(0, rowHeight + kHalfChar); - lcd_printPGM(pstr); - if (value != NULL) { - lcd_print(':'); - u8g.setPrintPos((lcd_width - 1 - vallen) * char_width, rows * rowHeight + kHalfChar); - lcd_print(value); - } -} - -#if ENABLED(SDSUPPORT) - - static void _drawmenu_sd(bool isSelected, uint8_t row, const char* pstr, const char* filename, char* const longFilename, bool isDir) { - UNUSED(pstr); - char c; - uint8_t n = LCD_WIDTH - (START_COL) - 1; - - if (longFilename[0]) { - filename = longFilename; - longFilename[n] = '\0'; - } - - lcd_implementation_mark_as_selected(row, isSelected); - - if (isDir) lcd_print(LCD_STR_FOLDER[0]); - while ((c = *filename)) { - n -= lcd_print(c); - filename++; - } - while (n--) lcd_print(' '); - } - - #define lcd_implementation_drawmenu_sdfile(sel, row, pstr, filename, longFilename) _drawmenu_sd(sel, row, pstr, filename, longFilename, false) - #define lcd_implementation_drawmenu_sddirectory(sel, row, pstr, filename, longFilename) _drawmenu_sd(sel, row, pstr, filename, longFilename, true) - -#endif //SDSUPPORT - -#define lcd_implementation_drawmenu_back(sel, row, pstr) lcd_implementation_drawmenu_generic(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0]) -#define lcd_implementation_drawmenu_submenu(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', LCD_STR_ARROW_RIGHT[0]) -#define lcd_implementation_drawmenu_gcode(sel, row, pstr, gcode) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ') -#define lcd_implementation_drawmenu_function(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ') - -#endif //__ULTRALCD_IMPL_DOGM_H diff --git a/lib/Marlin/ultralcd_impl_HD44780.h b/lib/Marlin/ultralcd_impl_HD44780.h deleted file mode 100644 index ab120c2..0000000 --- a/lib/Marlin/ultralcd_impl_HD44780.h +++ /dev/null @@ -1,978 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef ULTRALCD_IMPL_HD44780_H -#define ULTRALCD_IMPL_HD44780_H - -/** -* Implementation of the LCD display routines for a Hitachi HD44780 display. These are common LCD character displays. -**/ - -#include "duration_t.h" - -extern volatile uint8_t buttons; //an extended version of the last checked buttons in a bit array. - -//////////////////////////////////// -// Setup button and encode mappings for each panel (into 'buttons' variable -// -// This is just to map common functions (across different panels) onto the same -// macro name. The mapping is independent of whether the button is directly connected or -// via a shift/i2c register. - -#if ENABLED(ULTIPANEL) - - // - // Setup other button mappings of each panel - // - #if ENABLED(LCD_I2C_VIKI) - #define B_I2C_BTN_OFFSET 3 // (the first three bit positions reserved for EN_A, EN_B, EN_C) - - // button and encoder bit positions within 'buttons' - #define B_LE (BUTTON_LEFT< - #include - #include - #define LCD_CLASS LiquidCrystal_I2C - LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_I2C_PIN_EN, LCD_I2C_PIN_RW, LCD_I2C_PIN_RS, LCD_I2C_PIN_D4, LCD_I2C_PIN_D5, LCD_I2C_PIN_D6, LCD_I2C_PIN_D7); - -#elif ENABLED(LCD_I2C_TYPE_MCP23017) - //for the LED indicators (which maybe mapped to different things in lcd_implementation_update_indicators()) - #define LED_A 0x04 //100 - #define LED_B 0x02 //010 - #define LED_C 0x01 //001 - - #define LCD_HAS_STATUS_INDICATORS - - #include - #include - #define LCD_CLASS LiquidTWI2 - #if ENABLED(DETECT_DEVICE) - LCD_CLASS lcd(LCD_I2C_ADDRESS, 1); - #else - LCD_CLASS lcd(LCD_I2C_ADDRESS); - #endif - -#elif ENABLED(LCD_I2C_TYPE_MCP23008) - #include - #include - #define LCD_CLASS LiquidTWI2 - #if ENABLED(DETECT_DEVICE) - LCD_CLASS lcd(LCD_I2C_ADDRESS, 1); - #else - LCD_CLASS lcd(LCD_I2C_ADDRESS); - #endif - -#elif ENABLED(LCD_I2C_TYPE_PCA8574) - #include - #define LCD_CLASS LiquidCrystal_I2C - LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_WIDTH, LCD_HEIGHT); - -// 2 wire Non-latching LCD SR from: -// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection -#elif ENABLED(SR_LCD_2W_NL) - extern "C" void __cxa_pure_virtual() { while (1); } - #include - #include - #define LCD_CLASS LiquidCrystal_SR - LCD_CLASS lcd(SR_DATA_PIN, SR_CLK_PIN); -#elif ENABLED(LCM1602) - #include - #include - #include - #define LCD_CLASS LiquidCrystal_I2C - LCD_CLASS lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); -#else - // Standard directly connected LCD implementations - #include - #define LCD_CLASS LiquidCrystal - LCD_CLASS lcd(LCD_PINS_RS, LCD_PINS_ENABLE, LCD_PINS_D4, LCD_PINS_D5, LCD_PINS_D6, LCD_PINS_D7); //RS,Enable,D4,D5,D6,D7 -#endif - -#include "utf_mapper.h" - -#if ENABLED(LCD_PROGRESS_BAR) - static millis_t progress_bar_ms = 0; - #if PROGRESS_MSG_EXPIRE > 0 - static millis_t expire_status_ms = 0; - #endif - #define LCD_STR_PROGRESS "\x03\x04\x05" -#endif - -#if ENABLED(LCD_HAS_STATUS_INDICATORS) - static void lcd_implementation_update_indicators(); -#endif - -static void lcd_set_custom_characters( - #if ENABLED(LCD_PROGRESS_BAR) - bool progress_bar_set = true - #endif -) { - byte bedTemp[8] = { - B00000, - B11111, - B10101, - B10001, - B10101, - B11111, - B00000, - B00000 - }; //thanks Sonny Mounicou - byte degree[8] = { - B01100, - B10010, - B10010, - B01100, - B00000, - B00000, - B00000, - B00000 - }; - byte thermometer[8] = { - B00100, - B01010, - B01010, - B01010, - B01010, - B10001, - B10001, - B01110 - }; - byte uplevel[8] = { - B00100, - B01110, - B11111, - B00100, - B11100, - B00000, - B00000, - B00000 - }; //thanks joris - byte refresh[8] = { - B00000, - B00110, - B11001, - B11000, - B00011, - B10011, - B01100, - B00000, - }; //thanks joris - byte folder[8] = { - B00000, - B11100, - B11111, - B10001, - B10001, - B11111, - B00000, - B00000 - }; //thanks joris - byte feedrate[8] = { - B11100, - B10000, - B11000, - B10111, - B00101, - B00110, - B00101, - B00000 - }; //thanks Sonny Mounicou - byte clock[8] = { - B00000, - B01110, - B10011, - B10101, - B10001, - B01110, - B00000, - B00000 - }; //thanks Sonny Mounicou - - #if ENABLED(LCD_PROGRESS_BAR) - static bool char_mode = false; - byte progress[3][8] = { { - B00000, - B10000, - B10000, - B10000, - B10000, - B10000, - B10000, - B00000 - }, { - B00000, - B10100, - B10100, - B10100, - B10100, - B10100, - B10100, - B00000 - }, { - B00000, - B10101, - B10101, - B10101, - B10101, - B10101, - B10101, - B00000 - } }; - if (progress_bar_set != char_mode) { - char_mode = progress_bar_set; - lcd.createChar(LCD_STR_BEDTEMP[0], bedTemp); - lcd.createChar(LCD_STR_DEGREE[0], degree); - lcd.createChar(LCD_STR_THERMOMETER[0], thermometer); - lcd.createChar(LCD_STR_FEEDRATE[0], feedrate); - lcd.createChar(LCD_STR_CLOCK[0], clock); - if (progress_bar_set) { - // Progress bar characters for info screen - for (int i = 3; i--;) lcd.createChar(LCD_STR_PROGRESS[i], progress[i]); - } - else { - // Custom characters for submenus - lcd.createChar(LCD_STR_UPLEVEL[0], uplevel); - lcd.createChar(LCD_STR_REFRESH[0], refresh); - lcd.createChar(LCD_STR_FOLDER[0], folder); - } - } - #else - lcd.createChar(LCD_STR_BEDTEMP[0], bedTemp); - lcd.createChar(LCD_STR_DEGREE[0], degree); - lcd.createChar(LCD_STR_THERMOMETER[0], thermometer); - lcd.createChar(LCD_STR_UPLEVEL[0], uplevel); - lcd.createChar(LCD_STR_REFRESH[0], refresh); - lcd.createChar(LCD_STR_FOLDER[0], folder); - lcd.createChar(LCD_STR_FEEDRATE[0], feedrate); - lcd.createChar(LCD_STR_CLOCK[0], clock); - #endif -} - -static void lcd_implementation_init( - #if ENABLED(LCD_PROGRESS_BAR) - bool progress_bar_set = true - #endif -) { - - #if ENABLED(LCD_I2C_TYPE_PCF8575) - lcd.begin(LCD_WIDTH, LCD_HEIGHT); - #ifdef LCD_I2C_PIN_BL - lcd.setBacklightPin(LCD_I2C_PIN_BL, POSITIVE); - lcd.setBacklight(HIGH); - #endif - - #elif ENABLED(LCD_I2C_TYPE_MCP23017) - lcd.setMCPType(LTI_TYPE_MCP23017); - lcd.begin(LCD_WIDTH, LCD_HEIGHT); - lcd_implementation_update_indicators(); - - #elif ENABLED(LCD_I2C_TYPE_MCP23008) - lcd.setMCPType(LTI_TYPE_MCP23008); - lcd.begin(LCD_WIDTH, LCD_HEIGHT); - - #elif ENABLED(LCD_I2C_TYPE_PCA8574) - lcd.init(); - lcd.backlight(); - - #else - lcd.begin(LCD_WIDTH, LCD_HEIGHT); - #endif - - lcd_set_custom_characters( - #if ENABLED(LCD_PROGRESS_BAR) - progress_bar_set - #endif - ); - - lcd.clear(); -} - -static void lcd_implementation_clear() { lcd.clear(); } - -/* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */ -char lcd_printPGM(const char* str) { - char c, n = 0; - while ((c = pgm_read_byte(str++))) n += charset_mapper(c); - return n; -} - -char lcd_print(const char* str) { - char c, n = 0; - unsigned char i = 0; - while ((c = str[i++])) n += charset_mapper(c); - return n; -} - -unsigned lcd_print(char c) { return charset_mapper(c); } - -#if ENABLED(SHOW_BOOTSCREEN) - - void lcd_erase_line(int line) { - lcd.setCursor(0, line); - for (int i = 0; i < LCD_WIDTH; i++) - lcd_print(' '); - } - - // Scroll the PSTR 'text' in a 'len' wide field for 'time' milliseconds at position col,line - void lcd_scroll(int col, int line, const char* text, int len, int time) { - char tmp[LCD_WIDTH + 1] = {0}; - int n = max(lcd_strlen_P(text) - len, 0); - for (int i = 0; i <= n; i++) { - strncpy_P(tmp, text + i, min(len, LCD_WIDTH)); - lcd.setCursor(col, line); - lcd_print(tmp); - delay(time / max(n, 1)); - } - } - - static void logo_lines(const char *extra) { - int indent = (LCD_WIDTH - 8 - lcd_strlen_P(extra)) / 2; - lcd.setCursor(indent, 0); lcd.print('\x00'); lcd_printPGM(PSTR( "------" )); lcd.print('\x01'); - lcd.setCursor(indent, 1); lcd_printPGM(PSTR("|Marlin|")); lcd_printPGM(extra); - lcd.setCursor(indent, 2); lcd.print('\x02'); lcd_printPGM(PSTR( "------" )); lcd.print('\x03'); - } - - void bootscreen() { - byte top_left[8] = { - B00000, - B00000, - B00000, - B00000, - B00001, - B00010, - B00100, - B00100 - }; - byte top_right[8] = { - B00000, - B00000, - B00000, - B11100, - B11100, - B01100, - B00100, - B00100 - }; - byte botom_left[8] = { - B00100, - B00010, - B00001, - B00000, - B00000, - B00000, - B00000, - B00000 - }; - byte botom_right[8] = { - B00100, - B01000, - B10000, - B00000, - B00000, - B00000, - B00000, - B00000 - }; - lcd.createChar(0, top_left); - lcd.createChar(1, top_right); - lcd.createChar(2, botom_left); - lcd.createChar(3, botom_right); - - lcd.clear(); - - #define LCD_EXTRA_SPACE (LCD_WIDTH-8) - - #define CENTER_OR_SCROLL(STRING,DELAY) \ - lcd_erase_line(3); \ - if (strlen(STRING) <= LCD_WIDTH) { \ - lcd.setCursor((LCD_WIDTH - lcd_strlen_P(PSTR(STRING))) / 2, 3); \ - lcd_printPGM(PSTR(STRING)); \ - safe_delay(DELAY); \ - } \ - else { \ - lcd_scroll(0, 3, PSTR(STRING), LCD_WIDTH, DELAY); \ - } - - #ifdef STRING_SPLASH_LINE1 - // - // Show the Marlin logo with splash line 1 - // - if (LCD_EXTRA_SPACE >= strlen(STRING_SPLASH_LINE1) + 1) { - // - // Show the Marlin logo, splash line1, and splash line 2 - // - logo_lines(PSTR(" " STRING_SPLASH_LINE1)); - #ifdef STRING_SPLASH_LINE2 - CENTER_OR_SCROLL(STRING_SPLASH_LINE2, 2000); - #else - safe_delay(2000); - #endif - } - else { - // - // Show the Marlin logo with splash line 1 - // After a delay show splash line 2, if it exists - // - #ifdef STRING_SPLASH_LINE2 - #define _SPLASH_WAIT_1 1500 - #else - #define _SPLASH_WAIT_1 2000 - #endif - logo_lines(PSTR("")); - CENTER_OR_SCROLL(STRING_SPLASH_LINE1, _SPLASH_WAIT_1); - #ifdef STRING_SPLASH_LINE2 - CENTER_OR_SCROLL(STRING_SPLASH_LINE2, 1500); - #endif - } - #elif defined(STRING_SPLASH_LINE2) - // - // Show splash line 2 only, alongside the logo if possible - // - if (LCD_EXTRA_SPACE >= strlen(STRING_SPLASH_LINE2) + 1) { - logo_lines(PSTR(" " STRING_SPLASH_LINE2)); - safe_delay(2000); - } - else { - logo_lines(PSTR("")); - CENTER_OR_SCROLL(STRING_SPLASH_LINE2, 2000); - } - #else - // - // Show only the Marlin logo - // - logo_lines(PSTR("")); - safe_delay(2000); - #endif - lcd_set_custom_characters( - #if ENABLED(LCD_PROGRESS_BAR) - false - #endif - ); - } - -#endif // SHOW_BOOTSCREEN - -void lcd_kill_screen() { - lcd.setCursor(0, 0); - lcd_print(lcd_status_message); - #if LCD_HEIGHT < 4 - lcd.setCursor(0, 2); - #else - lcd.setCursor(0, 2); - lcd_printPGM(PSTR(MSG_HALTED)); - lcd.setCursor(0, 3); - #endif - lcd_printPGM(PSTR(MSG_PLEASE_RESET)); -} - -FORCE_INLINE void _draw_axis_label(AxisEnum axis, const char *pstr, bool blink) { - if (blink) - lcd_printPGM(pstr); - else { - if (!axis_homed[axis]) - lcd_printPGM(PSTR("?")); - else { - #if DISABLED(DISABLE_REDUCED_ACCURACY_WARNING) - if (!axis_known_position[axis]) - lcd_printPGM(PSTR(" ")); - else - #endif - lcd_printPGM(pstr); - } - } -} - -/** -Possible status screens: -16x2 |000/000 B000/000| - |0123456789012345| - -16x4 |000/000 B000/000| - |SD100% Z 000.00| - |F100% T--:--| - |0123456789012345| - -20x2 |T000/000D B000/000D | - |01234567890123456789| - -20x4 |T000/000D B000/000D | - |X 000 Y 000 Z 000.00| - |F100% SD100% T--:--| - |01234567890123456789| - -20x4 |T000/000D B000/000D | - |T000/000D Z 000.00| - |F100% SD100% T--:--| - |01234567890123456789| -*/ -static void lcd_implementation_status_screen() { - - #define LCD_TEMP_ONLY(T1,T2) \ - lcd.print(itostr3(T1 + 0.5)); \ - lcd.print('/'); \ - lcd.print(itostr3left(T2 + 0.5)) - - #define LCD_TEMP(T1,T2,PREFIX) \ - lcd.print(PREFIX); \ - LCD_TEMP_ONLY(T1,T2); \ - lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); \ - if (T2 < 10) lcd.print(' ') - - // - // Line 1 - // - - lcd.setCursor(0, 0); - - #if LCD_WIDTH < 20 - - // - // Hotend 0 Temperature - // - LCD_TEMP_ONLY(thermalManager.degHotend(0), thermalManager.degTargetHotend(0)); - - // - // Hotend 1 or Bed Temperature - // - #if HOTENDS > 1 || TEMP_SENSOR_BED != 0 - - lcd.setCursor(8, 0); - #if HOTENDS > 1 - lcd.print(LCD_STR_THERMOMETER[0]); - LCD_TEMP_ONLY(thermalManager.degHotend(1), thermalManager.degTargetHotend(1)); - #else - lcd.print(LCD_STR_BEDTEMP[0]); - LCD_TEMP_ONLY(thermalManager.degBed(), thermalManager.degTargetBed()); - #endif - - #endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0 - - #else // LCD_WIDTH >= 20 - - // - // Hotend 0 Temperature - // - LCD_TEMP(thermalManager.degHotend(0), thermalManager.degTargetHotend(0), LCD_STR_THERMOMETER[0]); - - // - // Hotend 1 or Bed Temperature - // - #if HOTENDS > 1 || TEMP_SENSOR_BED != 0 - lcd.setCursor(10, 0); - #if HOTENDS > 1 - LCD_TEMP(thermalManager.degHotend(1), thermalManager.degTargetHotend(1), LCD_STR_THERMOMETER[0]); - #else - LCD_TEMP(thermalManager.degBed(), thermalManager.degTargetBed(), LCD_STR_BEDTEMP[0]); - #endif - - #endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0 - - #endif // LCD_WIDTH >= 20 - - // - // Line 2 - // - - #if LCD_HEIGHT > 2 - - bool blink = lcd_blink(); - - #if LCD_WIDTH < 20 - - #if ENABLED(SDSUPPORT) - lcd.setCursor(0, 2); - lcd_printPGM(PSTR("SD")); - if (IS_SD_PRINTING) - lcd.print(itostr3(card.percentDone())); - else - lcd_printPGM(PSTR("---")); - lcd.print('%'); - #endif // SDSUPPORT - - #else // LCD_WIDTH >= 20 - - lcd.setCursor(0, 1); - - #if HOTENDS > 1 && TEMP_SENSOR_BED != 0 - - // If we both have a 2nd extruder and a heated bed, - // show the heated bed temp on the left, - // since the first line is filled with extruder temps - LCD_TEMP(thermalManager.degBed(), thermalManager.degTargetBed(), LCD_STR_BEDTEMP[0]); - - #else - // Before homing the axis letters are blinking 'X' <-> '?'. - // When axis is homed but axis_known_position is false the axis letters are blinking 'X' <-> ' '. - // When everything is ok you see a constant 'X'. - - _draw_axis_label(X_AXIS, PSTR(MSG_X), blink); - lcd.print(ftostr4sign(current_position[X_AXIS])); - - lcd_printPGM(PSTR(" ")); - - _draw_axis_label(Y_AXIS, PSTR(MSG_Y), blink); - lcd.print(ftostr4sign(current_position[Y_AXIS])); - - #endif // HOTENDS > 1 || TEMP_SENSOR_BED != 0 - - #endif // LCD_WIDTH >= 20 - - lcd.setCursor(LCD_WIDTH - 8, 1); - _draw_axis_label(Z_AXIS, PSTR(MSG_Z), blink); - lcd.print(ftostr52sp(current_position[Z_AXIS] + 0.00001)); - - #endif // LCD_HEIGHT > 2 - - // - // Line 3 - // - - #if LCD_HEIGHT > 3 - - lcd.setCursor(0, 2); - lcd.print(LCD_STR_FEEDRATE[0]); - lcd.print(itostr3(feedrate_percentage)); - lcd.print('%'); - - #if LCD_WIDTH > 19 && ENABLED(SDSUPPORT) - - lcd.setCursor(7, 2); - lcd_printPGM(PSTR("SD")); - if (IS_SD_PRINTING) - lcd.print(itostr3(card.percentDone())); - else - lcd_printPGM(PSTR("---")); - lcd.print('%'); - - #endif // LCD_WIDTH > 19 && SDSUPPORT - - lcd.setCursor(LCD_WIDTH - 6, 2); - lcd.print(LCD_STR_CLOCK[0]); - - char buffer[10]; - duration_t elapsed = print_job_timer.duration(); - elapsed.toDigital(buffer); - lcd_print(buffer); - - #endif // LCD_HEIGHT > 3 - - // - // Last Line - // Status Message (which may be a Progress Bar or Filament display) - // - - lcd.setCursor(0, LCD_HEIGHT - 1); - - #if ENABLED(LCD_PROGRESS_BAR) - - if (card.isFileOpen()) { - // Draw the progress bar if the message has shown long enough - // or if there is no message set. - if (ELAPSED(millis(), progress_bar_ms + PROGRESS_BAR_MSG_TIME) || !lcd_status_message[0]) { - int tix = (int)(card.percentDone() * (LCD_WIDTH) * 3) / 100, - cel = tix / 3, rem = tix % 3, i = LCD_WIDTH; - char msg[LCD_WIDTH + 1], b = ' '; - msg[i] = '\0'; - while (i--) { - if (i == cel - 1) - b = LCD_STR_PROGRESS[2]; - else if (i == cel && rem != 0) - b = LCD_STR_PROGRESS[rem - 1]; - msg[i] = b; - } - lcd.print(msg); - return; - } - } //card.isFileOpen - - #elif ENABLED(FILAMENT_LCD_DISPLAY) - - // Show Filament Diameter and Volumetric Multiplier % - // After allowing lcd_status_message to show for 5 seconds - if (ELAPSED(millis(), previous_lcd_status_ms + 5000UL)) { - lcd_printPGM(PSTR("Dia ")); - lcd.print(ftostr12ns(filament_width_meas)); - lcd_printPGM(PSTR(" V")); - lcd.print(itostr3(100.0 * volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM])); - lcd.print('%'); - return; - } - - #endif // FILAMENT_LCD_DISPLAY - - lcd_print(lcd_status_message); -} - -#if ENABLED(LCD_INFO_MENU) || ENABLED(FILAMENT_CHANGE_FEATURE) - - static void lcd_implementation_drawmenu_static(uint8_t row, const char* pstr, bool center=true, bool invert=false, const char *valstr=NULL) { - UNUSED(invert); - char c; - int8_t n = LCD_WIDTH; - lcd.setCursor(0, row); - if (center && !valstr) { - int8_t pad = (LCD_WIDTH - lcd_strlen_P(pstr)) / 2; - while (--pad >= 0) { lcd.print(' '); n--; } - } - while (n > 0 && (c = pgm_read_byte(pstr))) { - n -= lcd_print(c); - pstr++; - } - if (valstr) while (n > 0 && (c = *valstr)) { - n -= lcd_print(c); - valstr++; - } - while (n-- > 0) lcd.print(' '); - } - -#endif // LCD_INFO_MENU || FILAMENT_CHANGE_FEATURE - -static void lcd_implementation_drawmenu_generic(bool sel, uint8_t row, const char* pstr, char pre_char, char post_char) { - char c; - uint8_t n = LCD_WIDTH - 2; - lcd.setCursor(0, row); - lcd.print(sel ? pre_char : ' '); - while ((c = pgm_read_byte(pstr)) && n > 0) { - n -= lcd_print(c); - pstr++; - } - while (n--) lcd.print(' '); - lcd.print(post_char); -} - -static void lcd_implementation_drawmenu_setting_edit_generic(bool sel, uint8_t row, const char* pstr, char pre_char, char* data) { - char c; - uint8_t n = LCD_WIDTH - 2 - lcd_strlen(data); - lcd.setCursor(0, row); - lcd.print(sel ? pre_char : ' '); - while ((c = pgm_read_byte(pstr)) && n > 0) { - n -= lcd_print(c); - pstr++; - } - lcd.print(':'); - while (n--) lcd.print(' '); - lcd_print(data); -} -static void lcd_implementation_drawmenu_setting_edit_generic_P(bool sel, uint8_t row, const char* pstr, char pre_char, const char* data) { - char c; - uint8_t n = LCD_WIDTH - 2 - lcd_strlen_P(data); - lcd.setCursor(0, row); - lcd.print(sel ? pre_char : ' '); - while ((c = pgm_read_byte(pstr)) && n > 0) { - n -= lcd_print(c); - pstr++; - } - lcd.print(':'); - while (n--) lcd.print(' '); - lcd_printPGM(data); -} - -#define lcd_implementation_drawmenu_setting_edit_int3(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', itostr3(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float3(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr3(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float32(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr32(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float43(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr43sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float5(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5rj(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float52(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr52sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_float51(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr51sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_long5(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5rj(*(data))) -#define lcd_implementation_drawmenu_setting_edit_bool(sel, row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) - -//Add version for callback functions -#define lcd_implementation_drawmenu_setting_edit_callback_int3(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', itostr3(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float3(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr3(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float32(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr32(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float43(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr43sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float5(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5rj(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float52(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr52sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_float51(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr51sign(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_long5(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5rj(*(data))) -#define lcd_implementation_drawmenu_setting_edit_callback_bool(sel, row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) - -void lcd_implementation_drawedit(const char* pstr, const char* value=NULL) { - lcd.setCursor(1, 1); - lcd_printPGM(pstr); - if (value != NULL) { - lcd.print(':'); - lcd.setCursor(LCD_WIDTH - lcd_strlen(value), 1); - lcd_print(value); - } -} - -#if ENABLED(SDSUPPORT) - - static void lcd_implementation_drawmenu_sd(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename, uint8_t concat, char post_char) { - UNUSED(pstr); - char c; - uint8_t n = LCD_WIDTH - concat; - lcd.setCursor(0, row); - lcd.print(sel ? '>' : ' '); - if (longFilename[0]) { - filename = longFilename; - longFilename[n] = '\0'; - } - while ((c = *filename) && n > 0) { - n -= lcd_print(c); - filename++; - } - while (n--) lcd.print(' '); - lcd.print(post_char); - } - - static void lcd_implementation_drawmenu_sdfile(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename) { - lcd_implementation_drawmenu_sd(sel, row, pstr, filename, longFilename, 2, ' '); - } - - static void lcd_implementation_drawmenu_sddirectory(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename) { - lcd_implementation_drawmenu_sd(sel, row, pstr, filename, longFilename, 2, LCD_STR_FOLDER[0]); - } - -#endif //SDSUPPORT - -#define lcd_implementation_drawmenu_back(sel, row, pstr) lcd_implementation_drawmenu_generic(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0]) -#define lcd_implementation_drawmenu_submenu(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', LCD_STR_ARROW_RIGHT[0]) -#define lcd_implementation_drawmenu_gcode(sel, row, pstr, gcode) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ') -#define lcd_implementation_drawmenu_function(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ') - -#if ENABLED(LCD_HAS_STATUS_INDICATORS) - - static void lcd_implementation_update_indicators() { - // Set the LEDS - referred to as backlights by the LiquidTWI2 library - static uint8_t ledsprev = 0; - uint8_t leds = 0; - - if (thermalManager.degTargetBed() > 0) leds |= LED_A; - - if (thermalManager.degTargetHotend(0) > 0) leds |= LED_B; - - #if FAN_COUNT > 0 - if (0 - #if HAS_FAN0 - || fanSpeeds[0] - #endif - #if HAS_FAN1 - || fanSpeeds[1] - #endif - #if HAS_FAN2 - || fanSpeeds[2] - #endif - ) leds |= LED_C; - #endif // FAN_COUNT > 0 - - #if HOTENDS > 1 - if (thermalManager.degTargetHotend(1) > 0) leds |= LED_C; - #endif - - if (leds != ledsprev) { - lcd.setBacklight(leds); - ledsprev = leds; - } - - } - -#endif // LCD_HAS_STATUS_INDICATORS - -#if ENABLED(LCD_HAS_SLOW_BUTTONS) - - extern millis_t next_button_update_ms; - - static uint8_t lcd_implementation_read_slow_buttons() { - #if ENABLED(LCD_I2C_TYPE_MCP23017) - // Reading these buttons this is likely to be too slow to call inside interrupt context - // so they are called during normal lcd_update - uint8_t slow_bits = lcd.readButtons() << B_I2C_BTN_OFFSET; - #if ENABLED(LCD_I2C_VIKI) - if ((slow_bits & (B_MI | B_RI)) && PENDING(millis(), next_button_update_ms)) // LCD clicked - slow_bits &= ~(B_MI | B_RI); // Disable LCD clicked buttons if screen is updated - #endif // LCD_I2C_VIKI - return slow_bits; - #endif // LCD_I2C_TYPE_MCP23017 - } - -#endif // LCD_HAS_SLOW_BUTTONS - -#endif // ULTRALCD_IMPL_HD44780_H diff --git a/lib/Marlin/ultralcd_st7920_u8glib_rrd.h b/lib/Marlin/ultralcd_st7920_u8glib_rrd.h deleted file mode 100644 index 7226f55..0000000 --- a/lib/Marlin/ultralcd_st7920_u8glib_rrd.h +++ /dev/null @@ -1,191 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef ULCDST7920_H -#define ULCDST7920_H - -#include "Marlin.h" - -#if ENABLED(U8GLIB_ST7920) - -#define ST7920_CLK_PIN LCD_PINS_D4 -#define ST7920_DAT_PIN LCD_PINS_ENABLE -#define ST7920_CS_PIN LCD_PINS_RS - -//#define PAGE_HEIGHT 8 //128 byte framebuffer -//#define PAGE_HEIGHT 16 //256 byte framebuffer -#define PAGE_HEIGHT 32 //512 byte framebuffer - -#define LCD_PIXEL_WIDTH 128 -#define LCD_PIXEL_HEIGHT 64 - -#include - -//set optimization so ARDUINO optimizes this file -#pragma GCC optimize (3) - -#define DELAY_0_NOP NOOP -#define DELAY_1_NOP __asm__("nop\n\t") -#define DELAY_2_NOP __asm__("nop\n\t" "nop\n\t") -#define DELAY_3_NOP __asm__("nop\n\t" "nop\n\t" "nop\n\t") -#define DELAY_4_NOP __asm__("nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t") - - -// If you want you can define your own set of delays in Configuration.h -//#define ST7920_DELAY_1 DELAY_0_NOP -//#define ST7920_DELAY_2 DELAY_0_NOP -//#define ST7920_DELAY_3 DELAY_0_NOP - -#if F_CPU >= 20000000 - #define CPU_ST7920_DELAY_1 DELAY_0_NOP - #define CPU_ST7920_DELAY_2 DELAY_0_NOP - #define CPU_ST7920_DELAY_3 DELAY_1_NOP -#elif (MOTHERBOARD == BOARD_3DRAG) || (MOTHERBOARD == BOARD_K8200) || (MOTHERBOARD == BOARD_K8400) - #define CPU_ST7920_DELAY_1 DELAY_0_NOP - #define CPU_ST7920_DELAY_2 DELAY_3_NOP - #define CPU_ST7920_DELAY_3 DELAY_0_NOP -#elif (MOTHERBOARD == BOARD_MINIRAMBO) - #define CPU_ST7920_DELAY_1 DELAY_0_NOP - #define CPU_ST7920_DELAY_2 DELAY_4_NOP - #define CPU_ST7920_DELAY_3 DELAY_0_NOP -#elif (MOTHERBOARD == BOARD_RAMBO) - #define CPU_ST7920_DELAY_1 DELAY_0_NOP - #define CPU_ST7920_DELAY_2 DELAY_0_NOP - #define CPU_ST7920_DELAY_3 DELAY_0_NOP -#elif F_CPU == 16000000 - #define CPU_ST7920_DELAY_1 DELAY_0_NOP - #define CPU_ST7920_DELAY_2 DELAY_0_NOP - #define CPU_ST7920_DELAY_3 DELAY_1_NOP -#else - #error "No valid condition for delays in 'ultralcd_st7920_u8glib_rrd.h'" -#endif - -#ifndef ST7920_DELAY_1 - #define ST7920_DELAY_1 CPU_ST7920_DELAY_1 -#endif -#ifndef ST7920_DELAY_2 - #define ST7920_DELAY_2 CPU_ST7920_DELAY_2 -#endif -#ifndef ST7920_DELAY_3 - #define ST7920_DELAY_3 CPU_ST7920_DELAY_3 -#endif - -#define ST7920_SND_BIT \ - WRITE(ST7920_CLK_PIN, LOW); ST7920_DELAY_1; \ - WRITE(ST7920_DAT_PIN, val & 0x80); ST7920_DELAY_2; \ - WRITE(ST7920_CLK_PIN, HIGH); ST7920_DELAY_3; \ - val <<= 1 - -static void ST7920_SWSPI_SND_8BIT(uint8_t val) { - ST7920_SND_BIT; // 1 - ST7920_SND_BIT; // 2 - ST7920_SND_BIT; // 3 - ST7920_SND_BIT; // 4 - ST7920_SND_BIT; // 5 - ST7920_SND_BIT; // 6 - ST7920_SND_BIT; // 7 - ST7920_SND_BIT; // 8 -} - -#define ST7920_CS() {WRITE(ST7920_CS_PIN,1);u8g_10MicroDelay();} -#define ST7920_NCS() {WRITE(ST7920_CS_PIN,0);} -#define ST7920_SET_CMD() {ST7920_SWSPI_SND_8BIT(0xf8);u8g_10MicroDelay();} -#define ST7920_SET_DAT() {ST7920_SWSPI_SND_8BIT(0xfa);u8g_10MicroDelay();} -#define ST7920_WRITE_BYTE(a) {ST7920_SWSPI_SND_8BIT((uint8_t)((a)&0xf0u));ST7920_SWSPI_SND_8BIT((uint8_t)((a)<<4u));u8g_10MicroDelay();} -#define ST7920_WRITE_BYTES(p,l) {uint8_t i;for(i=0;idev_mem); - y = pb->p.page_y0; - ptr = (uint8_t*)pb->buf; - - ST7920_CS(); - for (i = 0; i < PAGE_HEIGHT; i ++) { - ST7920_SET_CMD(); - if (y < 32) { - ST7920_WRITE_BYTE(0x80 | y); //y - ST7920_WRITE_BYTE(0x80); //x=0 - } - else { - ST7920_WRITE_BYTE(0x80 | (y - 32)); //y - ST7920_WRITE_BYTE(0x80 | 8); //x=64 - } - ST7920_SET_DAT(); - ST7920_WRITE_BYTES(ptr, (LCD_PIXEL_WIDTH) / 8); //ptr is incremented inside of macro - y++; - } - ST7920_NCS(); - } - break; - } -#if PAGE_HEIGHT == 8 - return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); -#elif PAGE_HEIGHT == 16 - return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); -#else - return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); -#endif -} - -uint8_t u8g_dev_st7920_128x64_rrd_buf[(LCD_PIXEL_WIDTH) * (PAGE_HEIGHT) / 8] U8G_NOCOMMON; -u8g_pb_t u8g_dev_st7920_128x64_rrd_pb = {{PAGE_HEIGHT, LCD_PIXEL_HEIGHT, 0, 0, 0}, LCD_PIXEL_WIDTH, u8g_dev_st7920_128x64_rrd_buf}; -u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi = {u8g_dev_rrd_st7920_128x64_fn, &u8g_dev_st7920_128x64_rrd_pb, &u8g_com_null_fn}; - -class U8GLIB_ST7920_128X64_RRD : public U8GLIB { - public: - U8GLIB_ST7920_128X64_RRD(uint8_t dummy) : U8GLIB(&u8g_dev_st7920_128x64_rrd_sw_spi) { UNUSED(dummy); } -}; - -#pragma GCC reset_options - -#endif //U8GLIB_ST7920 -#endif //ULCDST7920_H diff --git a/lib/Marlin/utf_mapper.h b/lib/Marlin/utf_mapper.h deleted file mode 100644 index bba85e1..0000000 --- a/lib/Marlin/utf_mapper.h +++ /dev/null @@ -1,358 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef UTF_MAPPER_H -#define UTF_MAPPER_H - -#include "language.h" - -#if ENABLED(DOGLCD) - #define HARDWARE_CHAR_OUT u8g.print -#else - #define HARDWARE_CHAR_OUT lcd.write -#endif - -#if DISABLED(SIMULATE_ROMFONT) && ENABLED(DOGLCD) - #if ENABLED(DISPLAY_CHARSET_ISO10646_1) - #define MAPPER_ONE_TO_ONE - #elif ENABLED(DISPLAY_CHARSET_ISO10646_5) - #define MAPPER_ONE_TO_ONE - #elif ENABLED(DISPLAY_CHARSET_ISO10646_KANA) - #define MAPPER_ONE_TO_ONE - #elif ENABLED(DISPLAY_CHARSET_ISO10646_GREEK) - #define MAPPER_ONE_TO_ONE - #endif -#else // SIMULATE_ROMFONT - #if DISPLAY_CHARSET_HD44780 == JAPANESE - #if ENABLED(MAPPER_C2C3) - const PROGMEM uint8_t utf_recode[] = - { // 0 1 2 3 4 5 6 7 8 9 a b c d e f This is fair for symbols - 0x20,0x3f,0xec,0xed,0x3f,0x5c,0x7c,0x3f,0x22,0x63,0x61,0x7f,0x3f,0x3f,0x52,0xb0, // c2a - // ' ' ¢ £ ­ l " c a « R - 0xdf,0x3f,0x32,0x33,0x27,0xe4,0xf1,0xa5,0x2c,0x31,0xdf,0x7e,0x3f,0x3f,0x3f,0x3f, // c2b but relatively bad for letters. - // ° 2 3 ` N p . , 1 ° » - 0x3f,0x3f,0x3f,0x3f,0xe1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, // c38 - // ä - 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xef,0x78,0x3f,0x3f,0x3f,0x3f,0xf5,0x3f,0x3f,0xe2, // c39 missing characters display as '?' - // ö x ü ß - 0x3f,0x3f,0x3f,0x3f,0xe1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, // c3a - // ä - 0x3f,0xee,0x3f,0x3f,0x3f,0x3f,0xef,0xfd,0x3f,0x3f,0x3f,0x3f,0xf5,0x3f,0x3f,0x3f // c3b - // n ö ÷ ü - }; - #elif ENABLED(MAPPER_E382E383) - const PROGMEM uint8_t utf_recode[] = - { // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 0x3d,0xb1,0xb1,0xa8,0xb2,0xa9,0xb3,0xaa,0xb4,0xab,0xb5,0xb6,0xb6,0xb7,0xb7,0xb8, // e382a Please test and correct - // = ã‚¢ ã‚¢ ã‚£ イ ã‚¥ ウ ã‚§ エ ã‚© オ ガ ガ ã‚­ ã‚­ ク - 0xb8,0xb9,0xb9,0xba,0xba,0xbb,0xbb,0xbc,0xbc,0xbd,0xbd,0xbe,0xbe,0xbf,0xbf,0xc0, // e382b - // ク ケ ケ コ コ サ サ ã‚· ã‚· ス ス ã‚» ã‚» ソ ソ ã‚¿ - 0xc0,0xc1,0xc1,0xc2,0xc2,0xc2,0xc3,0xc3,0xc4,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca, // e3838 - // ã‚¿ ムムッ ッ ッ テ テ ト ト ナ ニ ヌ ムノ ム- 0xca,0xca,0xcb,0xcb,0xcb,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce,0xce,0xce,0xcf,0xd0, // e3839 - // ムムヒ ヒ ヒ フ フ フ ヘ ヘ ヘ ホ ホ ホ マ ミ - 0xd1,0xd2,0xd3,0xd4,0xd4,0xd5,0xd5,0xae,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdc, // e383a - // ム メ モ ャ ャ ユ ユ ョ ヨ ラ リ ル レ ロ ワ ワ - 0xec,0xa7,0xa6,0xdd,0xcc,0x3f,0x3f,0x3f,0x3f,0x3f,0xa6,0xa5,0xb0,0xa4,0xa4,0x3f // e383b - // ヰ ヱ ヲ ン フ ? ? ? ? ? ヲ ・ ー ヽ ヽ ? - }; - #elif ENABLED(MAPPER_D0D1) - #error "Cyrillic on a JAPANESE display makes no sense. There are no matching symbols." - #endif - - #elif DISPLAY_CHARSET_HD44780 == WESTERN - #if ENABLED(MAPPER_C2C3) - const PROGMEM uint8_t utf_recode[] = - { // 0 1 2 3 4 5 6 7 8 9 a b c d e f This is relative complete. - 0x20,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0x22,0xa9,0xaa,0xab,0x3f,0x3f,0xae,0x3f, // c2a ¡¢£¤¥¦§¨©ª«¬­®¯ - // ' ' ¡ ¢ £ ¤ Â¥ ¦ § " © ª « ? ? ® ? - 0xb0,0xb1,0xb2,0xb3,0x27,0xb5,0xb6,0xb7,0x2c,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, // c2b °±²³´µ¶·¸¹º»¼½¾¿ - // ° ± ³ ² ? µ ¶ · , ¹ º » ¼ ½ ¾ ¿ - 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf, // c38 ÀÃÃÄÅÆÇÈÉÊËÌÃÃŽÃ - // À à Â Ã Ä Ã… Æ Ç È É Ê Ë ÃŒ à Î à - 0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, // c39 ÃÑÓÔÕÖרÙÚÛÜÃÞß - // à Ñ Ã’ Ó Ô Õ Ö × Ø Ù Ú Û Ü à Þ ß - 0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef, // c3a àáãäåæçèéêëìíîï - // à á â ã ä Ã¥ æ ç è é ê ë ì í î ï - 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff // c3b ðñóôõö÷øùúûüýþÿ - // ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ - }; - #elif ENABLED(MAPPER_D0D1) - #define MAPPER_D0D1_MOD - const PROGMEM uint8_t utf_recode[] = - {//0 1 2 3 4 5 6 7 8 9 a b c d e f - 0x41,0x80,0x42,0x92,0x81,0x45,0x82,0x83,0x84,0x85,0x4b,0x86,0x4d,0x48,0x4f,0x87, // d0a - // A Б B Г Д E Ж З И Й K Л M H O П - 0x50,0x43,0x54,0x88,0xd8,0x58,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x62,0x8f,0xac,0xad, // d0b - // P C T У Ф X Ч ч Ш Щ Ъ Ы b Э Ю Я - 0x61,0x36,0x42,0x92,0x81,0x65,0x82,0xb3,0x84,0x85,0x6b,0x86,0x4d,0x48,0x6f,0x87, // d18 - // a 6 B Г Д e Ж ³ И Й k Л M H o П - 0x70,0x63,0x54,0x79,0xd8,0x78,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x62,0x8f,0xac,0xad // d19 - // p c T y Ф x Ч ч Ш Щ Ъ Ы b Э Ю Я - }; - #elif ENABLED(MAPPER_E382E383) - #error "Katakana on a WESTERN display makes no sense. There are no matching symbols." - #endif - - #elif DISPLAY_CHARSET_HD44780 == CYRILLIC - #if ENABLED(MAPPER_D0D1) - #define MAPPER_D0D1_MOD - // it is a Russian alphabet translation - // except 0401 --> 0xa2 = Ð, 0451 --> 0xb5 = Ñ‘ - const PROGMEM uint8_t utf_recode[] = - { 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4, // unicode U+0400 to U+047f - // A Б->Ð B Г Д E Ж З // 0 Ѐ РЂ Ѓ Є Ð… І Ї - 0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,0xa8, // Ј Љ Њ Ћ ÐŒ Ð ÐŽ Ð - // И Й K Л M H O П // 1 РБ Ð’ Г Д Е Ж З - 0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab, // И Й К Л М РО П - // P C T У Ф X Ч ч // 2 Р С Т У Ф Ð¥ Г Ч - 0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1, // Ш Щ Ъ Ы Ь Э Ю Я - // Ш Щ Ъ Ы b Э Ю Я // 3 а б в г д е ж з - 0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7, // и й к л м н о п - // a б->Ñ‘ в г д e ж з // 4 Ñ€ Ñ Ñ‚ у Ñ„ Ñ… ц ч - 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe, // ш щ ÑŠ Ñ‹ ÑŒ Ñ ÑŽ Ñ - // и й к л м н o п // 5 Ñ Ñ‘ Ñ’ Ñ“ Ñ” Ñ• Ñ– Ñ— - 0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0, // ј Ñ™ Ñš Ñ› Ñœ Ñ Ñž ÑŸ - // p c Ñ‚ y Ñ„ x ц ч // 6 Ñ  Ñ¡ Ñ¢ Ñ£ Ѥ Ñ¥ Ѧ ѧ - 0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7 // Ѫ Ñ© Ѫ Ñ« Ѭ Ñ­ Ñ® ѯ - // ш щ ÑŠ Ñ‹ ÑŒ Ñ ÑŽ Ñ // 7 Ѱ ѱ Ѳ ѳ Ñ´ ѵ Ѷ Ñ· - }; // Ñ» ѹ Ѻ Ñ» Ѽ ѽ Ѿ Ñ¿ - #elif ENABLED(MAPPER_C2C3) - #error "Western languages on a CYRILLIC display makes no sense. There are no matching symbols." - #elif ENABLED(MAPPER_E382E383) - #error "Katakana on a CYRILLIC display makes no sense. There are no matching symbols." - #endif - #else - #error "Something went wrong in the setting of DISPLAY_CHARSET_HD44780" - #endif // DISPLAY_CHARSET_HD44780 -#endif // SIMULATE_ROMFONT - -#if ENABLED(MAPPER_C2C3) - - char charset_mapper(char c) { - static uint8_t utf_hi_char; // UTF-8 high part - static bool seen_c2 = false; - uint8_t d = c; - if ( d >= 0x80u ) { // UTF-8 handling - if ( (d >= 0xc0u) && (!seen_c2) ) { - utf_hi_char = d - 0xc2u; - seen_c2 = true; - return 0; - } - else if (seen_c2) { - d &= 0x3fu; - #ifndef MAPPER_ONE_TO_ONE - HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20)); - #else - HARDWARE_CHAR_OUT((char)(0x80u + (utf_hi_char << 6) + d)) ; - #endif - } - else { - HARDWARE_CHAR_OUT('?'); - } - } - else { - HARDWARE_CHAR_OUT((char) c ); - } - seen_c2 = false; - return 1; - } - -#elif ENABLED(MAPPER_CECF) - - char charset_mapper(char c) { - static uint8_t utf_hi_char; // UTF-8 high part - static bool seen_ce = false; - uint8_t d = c; - if ( d >= 0x80 ) { // UTF-8 handling - if ( (d >= 0xc0) && (!seen_ce) ) { - utf_hi_char = d - 0xce; - seen_ce = true; - return 0; - } - else if (seen_ce) { - d &= 0x3f; - #ifndef MAPPER_ONE_TO_ONE - HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20)); - #else - HARDWARE_CHAR_OUT((char)(0x80 + (utf_hi_char << 6) + d)) ; - #endif - } - else { - HARDWARE_CHAR_OUT('?'); - } - } - else { - HARDWARE_CHAR_OUT((char) c ); - } - seen_ce = false; - return 1; - } - -#elif ENABLED(MAPPER_CECF) - - char charset_mapper(char c) { - static uint8_t utf_hi_char; // UTF-8 high part - static bool seen_ce = false; - uint8_t d = c; - if ( d >= 0x80 ) { // UTF-8 handling - if ( (d >= 0xc0) && (!seen_ce) ) { - utf_hi_char = d - 0xce; - seen_ce = true; - return 0; - } - else if (seen_ce) { - d &= 0x3f; - #ifndef MAPPER_ONE_TO_ONE - HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20)); - #else - HARDWARE_CHAR_OUT((char)(0x80 + (utf_hi_char << 6) + d)) ; - #endif - } - else { - HARDWARE_CHAR_OUT('?'); - } - } - else { - HARDWARE_CHAR_OUT((char) c ); - } - seen_ce = false; - return 1; - } - -#elif ENABLED(MAPPER_D0D1_MOD) - - char charset_mapper(char c) { - // it is a Russian alphabet translation - // except 0401 --> 0xa2 = Ð, 0451 --> 0xb5 = Ñ‘ - static uint8_t utf_hi_char; // UTF-8 high part - static bool seen_d5 = false; - uint8_t d = c; - if (d >= 0x80) { // UTF-8 handling - if (d >= 0xd0 && !seen_d5) { - utf_hi_char = d - 0xd0; - seen_d5 = true; - return 0; - } - else if (seen_d5) { - d &= 0x3f; - if (!utf_hi_char && d == 1) { - HARDWARE_CHAR_OUT((char) 0xa2); // Ð - } - else if (utf_hi_char == 1 && d == 0x11) { - HARDWARE_CHAR_OUT((char)0xb5); // Ñ‘ - } - else { - HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x10)); - } - } - else { - HARDWARE_CHAR_OUT('?'); - } - } - else { - HARDWARE_CHAR_OUT((char) c ); - } - seen_d5 = false; - return 1; - } - -#elif ENABLED(MAPPER_D0D1) - - char charset_mapper(char c) { - static uint8_t utf_hi_char; // UTF-8 high part - static bool seen_d5 = false; - uint8_t d = c; - if (d >= 0x80u) { // UTF-8 handling - if (d >= 0xd0u && !seen_d5) { - utf_hi_char = d - 0xd0u; - seen_d5 = true; - return 0; - } - else if (seen_d5) { - d &= 0x3fu; - #ifndef MAPPER_ONE_TO_ONE - HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20)); - #else - HARDWARE_CHAR_OUT((char)(0xa0u + (utf_hi_char << 6) + d)) ; - #endif - } - else { - HARDWARE_CHAR_OUT('?'); - } - } - else { - HARDWARE_CHAR_OUT((char) c ); - } - seen_d5 = false; - return 1; - } - -#elif ENABLED(MAPPER_E382E383) - - char charset_mapper(char c) { - static uint8_t utf_hi_char; // UTF-8 high part - static bool seen_e3 = false; - static bool seen_82_83 = false; - uint8_t d = c; - if (d >= 0x80) { // UTF-8 handling - if (d == 0xe3 && !seen_e3) { - seen_e3 = true; - return 0; // eat 0xe3 - } - else if (d >= 0x82 && seen_e3 && !seen_82_83) { - utf_hi_char = d - 0x82; - seen_82_83 = true; - return 0; - } - else if (seen_e3 && seen_82_83) { - d &= 0x3f; - #ifndef MAPPER_ONE_TO_ONE - HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20)); - #else - HARDWARE_CHAR_OUT((char)(0x80 + (utf_hi_char << 6) + d)) ; - #endif - } - else { - HARDWARE_CHAR_OUT((char) '?' ); - } - } - else { - HARDWARE_CHAR_OUT((char) c ); - } - seen_e3 = false; - seen_82_83 = false; - return 1; - } - -#else - - #define MAPPER_NON - - char charset_mapper(char c) { - HARDWARE_CHAR_OUT( c ); - return 1; - } - - #endif // code mappers - -#endif // UTF_MAPPER_H diff --git a/lib/Marlin/utility.cpp b/lib/Marlin/utility.cpp deleted file mode 100644 index 0285219..0000000 --- a/lib/Marlin/utility.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "Marlin.h" -#include "utility.h" -#include "temperature.h" - -void safe_delay(millis_t ms) { - while (ms > 50) { - ms -= 50; - delay(50); - thermalManager.manage_heater(); - } - delay(ms); -} diff --git a/lib/Marlin/utility.h b/lib/Marlin/utility.h deleted file mode 100644 index 8ca70db..0000000 --- a/lib/Marlin/utility.h +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __UTILITY_H__ -#define __UTILITY_H__ - -void safe_delay(millis_t ms); - -#endif diff --git a/lib/Marlin/vector_3.cpp b/lib/Marlin/vector_3.cpp deleted file mode 100644 index 1cca0d9..0000000 --- a/lib/Marlin/vector_3.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - vector_3.cpp - Vector library for bed leveling - Copyright (c) 2012 Lars Brubaker. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#include -#include "Marlin.h" - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) -#include "vector_3.h" - -vector_3::vector_3() : x(0), y(0), z(0) { } - -vector_3::vector_3(float x_, float y_, float z_) : x(x_), y(y_), z(z_) { } - -vector_3 vector_3::cross(vector_3 left, vector_3 right) { - return vector_3(left.y * right.z - left.z * right.y, - left.z * right.x - left.x * right.z, - left.x * right.y - left.y * right.x); -} - -vector_3 vector_3::operator+(vector_3 v) { return vector_3((x + v.x), (y + v.y), (z + v.z)); } -vector_3 vector_3::operator-(vector_3 v) { return vector_3((x - v.x), (y - v.y), (z - v.z)); } - -vector_3 vector_3::get_normal() { - vector_3 normalized = vector_3(x, y, z); - normalized.normalize(); - return normalized; -} - -float vector_3::get_length() { return sqrt((x * x) + (y * y) + (z * z)); } - -void vector_3::normalize() { - float length = get_length(); - x /= length; - y /= length; - z /= length; -} - -void vector_3::apply_rotation(matrix_3x3 matrix) { - float resultX = x * matrix.matrix[3 * 0 + 0] + y * matrix.matrix[3 * 1 + 0] + z * matrix.matrix[3 * 2 + 0]; - float resultY = x * matrix.matrix[3 * 0 + 1] + y * matrix.matrix[3 * 1 + 1] + z * matrix.matrix[3 * 2 + 1]; - float resultZ = x * matrix.matrix[3 * 0 + 2] + y * matrix.matrix[3 * 1 + 2] + z * matrix.matrix[3 * 2 + 2]; - x = resultX; - y = resultY; - z = resultZ; -} - -void vector_3::debug(const char title[]) { - SERIAL_PROTOCOL(title); - SERIAL_PROTOCOLPGM(" x: "); - SERIAL_PROTOCOL_F(x, 6); - SERIAL_PROTOCOLPGM(" y: "); - SERIAL_PROTOCOL_F(y, 6); - SERIAL_PROTOCOLPGM(" z: "); - SERIAL_PROTOCOL_F(z, 6); - SERIAL_EOL; -} - -void apply_rotation_xyz(matrix_3x3 matrix, float& x, float& y, float& z) { - vector_3 vector = vector_3(x, y, z); - vector.apply_rotation(matrix); - x = vector.x; - y = vector.y; - z = vector.z; -} - -matrix_3x3 matrix_3x3::create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2) { - //row_0.debug("row_0"); - //row_1.debug("row_1"); - //row_2.debug("row_2"); - matrix_3x3 new_matrix; - new_matrix.matrix[0] = row_0.x; new_matrix.matrix[1] = row_0.y; new_matrix.matrix[2] = row_0.z; - new_matrix.matrix[3] = row_1.x; new_matrix.matrix[4] = row_1.y; new_matrix.matrix[5] = row_1.z; - new_matrix.matrix[6] = row_2.x; new_matrix.matrix[7] = row_2.y; new_matrix.matrix[8] = row_2.z; - //new_matrix.debug("new_matrix"); - return new_matrix; -} - -void matrix_3x3::set_to_identity() { - matrix[0] = 1; matrix[1] = 0; matrix[2] = 0; - matrix[3] = 0; matrix[4] = 1; matrix[5] = 0; - matrix[6] = 0; matrix[7] = 0; matrix[8] = 1; -} - -matrix_3x3 matrix_3x3::create_look_at(vector_3 target) { - vector_3 z_row = target.get_normal(); - vector_3 x_row = vector_3(1, 0, -target.x / target.z).get_normal(); - vector_3 y_row = vector_3::cross(z_row, x_row).get_normal(); - - // x_row.debug("x_row"); - // y_row.debug("y_row"); - // z_row.debug("z_row"); - - // create the matrix already correctly transposed - matrix_3x3 rot = matrix_3x3::create_from_rows(x_row, y_row, z_row); - - // rot.debug("rot"); - return rot; -} - -matrix_3x3 matrix_3x3::transpose(matrix_3x3 original) { - matrix_3x3 new_matrix; - new_matrix.matrix[0] = original.matrix[0]; new_matrix.matrix[1] = original.matrix[3]; new_matrix.matrix[2] = original.matrix[6]; - new_matrix.matrix[3] = original.matrix[1]; new_matrix.matrix[4] = original.matrix[4]; new_matrix.matrix[5] = original.matrix[7]; - new_matrix.matrix[6] = original.matrix[2]; new_matrix.matrix[7] = original.matrix[5]; new_matrix.matrix[8] = original.matrix[8]; - return new_matrix; -} - -void matrix_3x3::debug(const char title[]) { - SERIAL_PROTOCOLLN(title); - int count = 0; - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - if (matrix[count] >= 0.0) SERIAL_PROTOCOLCHAR('+'); - SERIAL_PROTOCOL_F(matrix[count], 6); - SERIAL_PROTOCOLCHAR(' '); - count++; - } - SERIAL_EOL; - } -} - -#endif // AUTO_BED_LEVELING_FEATURE - diff --git a/lib/Marlin/vector_3.h b/lib/Marlin/vector_3.h deleted file mode 100644 index e76188b..0000000 --- a/lib/Marlin/vector_3.h +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - vector_3.cpp - Vector library for bed leveling - Copyright (c) 2012 Lars Brubaker. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -#ifndef VECTOR_3_H -#define VECTOR_3_H - -#if ENABLED(AUTO_BED_LEVELING_FEATURE) -class matrix_3x3; - -struct vector_3 { - float x, y, z; - - vector_3(); - vector_3(float x, float y, float z); - - static vector_3 cross(vector_3 a, vector_3 b); - - vector_3 operator+(vector_3 v); - vector_3 operator-(vector_3 v); - void normalize(); - float get_length(); - vector_3 get_normal(); - - void debug(const char title[]); - - void apply_rotation(matrix_3x3 matrix); -}; - -struct matrix_3x3 { - float matrix[9]; - - static matrix_3x3 create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2); - static matrix_3x3 create_look_at(vector_3 target); - static matrix_3x3 transpose(matrix_3x3 original); - - void set_to_identity(); - - void debug(const char title[]); -}; - - -void apply_rotation_xyz(matrix_3x3 rotationMatrix, float& x, float& y, float& z); -#endif // AUTO_BED_LEVELING_FEATURE - -#endif // VECTOR_3_H diff --git a/lib/Marlin/watchdog.cpp b/lib/Marlin/watchdog.cpp deleted file mode 100644 index 4397ab6..0000000 --- a/lib/Marlin/watchdog.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "Marlin.h" - -#if ENABLED(USE_WATCHDOG) - -#include "watchdog.h" - -// Initialize watchdog with a 4 sec interrupt time -void watchdog_init() { - #if ENABLED(WATCHDOG_RESET_MANUAL) - // We enable the watchdog timer, but only for the interrupt. - // Take care, as this requires the correct order of operation, with interrupts disabled. See the datasheet of any AVR chip for details. - wdt_reset(); - _WD_CONTROL_REG = _BV(_WD_CHANGE_BIT) | _BV(WDE); - _WD_CONTROL_REG = _BV(WDIE) | WDTO_4S; - #else - wdt_enable(WDTO_4S); - #endif -} - -//=========================================================================== -//=================================== ISR =================================== -//=========================================================================== - -// Watchdog timer interrupt, called if main program blocks >1sec and manual reset is enabled. -#if ENABLED(WATCHDOG_RESET_MANUAL) - ISR(WDT_vect) { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM("Something is wrong, please turn off the printer."); - kill(PSTR("ERR:Please Reset")); //kill blocks //16 characters so it fits on a 16x2 display - while (1); //wait for user or serial reset - } -#endif //WATCHDOG_RESET_MANUAL - -#endif //USE_WATCHDOG diff --git a/lib/Marlin/watchdog.h b/lib/Marlin/watchdog.h deleted file mode 100644 index 2c04b58..0000000 --- a/lib/Marlin/watchdog.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef WATCHDOG_H -#define WATCHDOG_H - -#include "Marlin.h" -#include - -// Initialize watchdog with a 4 second interrupt time -void watchdog_init(); - -// Reset watchdog. MUST be called at least every 4 seconds after the -// first watchdog_init or AVR will go into emergency procedures. -inline void watchdog_reset() { wdt_reset(); } - -#endif diff --git a/lib/readme.txt b/lib/readme.txt deleted file mode 100644 index dbadc3d..0000000 --- a/lib/readme.txt +++ /dev/null @@ -1,36 +0,0 @@ - -This directory is intended for the project specific (private) libraries. -PlatformIO will compile them to static libraries and link to executable file. - -The source code of each library should be placed in separate directory, like -"lib/private_lib/[here are source files]". - -For example, see how can be organized `Foo` and `Bar` libraries: - -|--lib -| |--Bar -| | |--docs -| | |--examples -| | |--src -| | |- Bar.c -| | |- Bar.h -| |--Foo -| | |- Foo.c -| | |- Foo.h -| |- readme.txt --> THIS FILE -|- platformio.ini -|--src - |- main.c - -Then in `src/main.c` you should use: - -#include -#include - -// rest H/C/CPP code - -PlatformIO will find your libraries automatically, configure preprocessor's -include paths and build them. - -More information about PlatformIO Library Dependency Finder -- http://docs.platformio.org/page/librarymanager/ldf.html diff --git a/platformio.ini b/platformio.ini deleted file mode 100644 index 063e4ce..0000000 --- a/platformio.ini +++ /dev/null @@ -1,15 +0,0 @@ -; PlatformIO Project Configuration File -; -; Build options: build flags, source filter -; Upload options: custom upload port, speed and extra flags -; Library options: dependencies, extra library storages -; Advanced options: extra scripting -; -; Please visit documentation for the other options and examples -; http://docs.platformio.org/page/projectconf.html - -[env:megaatmega2560] -platform = atmelavr -board = megaatmega2560 -framework = arduino -lib_deps = EEPROM diff --git a/src/Marlin.ino b/src/Marlin.ino deleted file mode 100644 index 70fd8ad..0000000 --- a/src/Marlin.ino +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -/** - * About Marlin - * - * This firmware is a mashup between Sprinter and grbl. - * - https://github.com/kliment/Sprinter - * - https://github.com/simen/grbl/tree - * - * It has preliminary support for Matthew Roberts advance algorithm - * - http://reprap.org/pipermail/reprap-dev/2011-May/003323.html - */ - -/* All the implementation is done in *.cpp files to get better compatibility with avr-gcc without the Arduino IDE */ -/* Use this file to help the Arduino IDE find which Arduino libraries are needed and to keep documentation on GCode */ - -#include "MarlinConfig.h" - -#if ENABLED(ULTRA_LCD) - #if ENABLED(LCD_I2C_TYPE_PCF8575) - #include - #include - #elif ENABLED(LCD_I2C_TYPE_MCP23017) || ENABLED(LCD_I2C_TYPE_MCP23008) - #include - #include - #elif ENABLED(LCM1602) - #include - #include - #include - #elif ENABLED(DOGLCD) - #include // library for graphics LCD by Oli Kraus (https://github.com/olikraus/U8glib_Arduino) - #else - #include // library for character LCD - #endif -#endif - -#if HAS_DIGIPOTSS - #include -#endif - -#if ENABLED(DIGIPOT_I2C) - #include -#endif - -#if ENABLED(HAVE_TMCDRIVER) - #include - #include -#endif - -#if ENABLED(HAVE_L6470DRIVER) - #include - #include -#endif diff --git a/update.log b/update.log deleted file mode 100644 index 34dc0ab..0000000 --- a/update.log +++ /dev/null @@ -1,10 +0,0 @@ -v3.1.4 20170527 -support grove ultrasonic(use D8 port) - -v3.1.3 20170525 -fix bug: cannot release object from pump - -v3.1.2 20170505 -First Release Version - - From 21d96bfeb2893672e0e7cb89cbb3c29fabcd113c Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Thu, 31 May 2018 20:03:03 +0800 Subject: [PATCH 17/74] Frist release --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100755 README.md diff --git a/README.md b/README.md new file mode 100755 index 0000000..35052f7 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# Swift Pro Firmware V4.1 (Base on Grbl v0.9j https://github.com/grbl/grbl) +*** + +# Update Summary for v4.1.0 + + From 7c134cb3b4a95b0bf4f3b85aa592dcfc12e3b406 Mon Sep 17 00:00:00 2001 From: TopgunZh <39727447+TopgunZh@users.noreply.github.com> Date: Thu, 31 May 2018 20:11:42 +0800 Subject: [PATCH 18/74] Update README.md update --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 35052f7..28e3ad9 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ -# Swift Pro Firmware V4.1 (Base on Grbl v0.9j https://github.com/grbl/grbl) +## Swift Pro Firmware V4.1.0 (Base on Grbl v0.9j https://github.com/grbl/grbl) *** # Update Summary for v4.1.0 - - +* Transplant Grbl framework +* Optimize stepper motor performance +* Fix end servo jitter From de6ddd7f5424dd0d63f9dd90f426f962c8046976 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 1 Jun 2018 13:20:32 +0800 Subject: [PATCH 19/74] First release --- doc/uArm Swift Pro Protocol V4.0.1_cn.pdf | Bin 0 -> 334057 bytes doc/uArm Swift Pro Protocol V4.0.1_en.pdf | Bin 0 -> 201044 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 doc/uArm Swift Pro Protocol V4.0.1_cn.pdf create mode 100755 doc/uArm Swift Pro Protocol V4.0.1_en.pdf diff --git a/doc/uArm Swift Pro Protocol V4.0.1_cn.pdf b/doc/uArm Swift Pro Protocol V4.0.1_cn.pdf new file mode 100755 index 0000000000000000000000000000000000000000..14b6170b85e6364e515f9582e684bea8e544237f GIT binary patch literal 334057 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

    }Dm)VmVOjv1t``{~k$x;P` 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ξ?V^LB^*u`=w}(yU61 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 L)nPII`_BIj9X$yK literal 0 HcmV?d00001 diff --git a/doc/uArm Swift Pro Protocol V4.0.1_en.pdf b/doc/uArm Swift Pro Protocol V4.0.1_en.pdf new file mode 100755 index 0000000000000000000000000000000000000000..bfc7beb7546096526889777e880df12f28d8d6ac GIT binary patch literal 201044 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

    -DrtSQtygjJR?Q%xM8I5ve)Y<*G+BIkG3cFU? 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 Date: Fri, 1 Jun 2018 14:10:01 +0800 Subject: [PATCH 20/74] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 28e3ad9..d33aa26 100755 --- a/README.md +++ b/README.md @@ -5,3 +5,13 @@ * Transplant Grbl framework * Optimize stepper motor performance * Fix end servo jitter + +# Flashing Firmware to Swift Pro +To flash hex to Swift Pro: +* Download and extract XLoader. +* Open XLoader and select your Arduino's COM port from the drop down menu on the lower left. +* Select the appropriate device from the dropdown list titled "Device". +* Check that Xloader set the correct baud rate for the device: 57600 for Duemilanove/Nano (ATmega 328) or 115200 for Uno (ATmega 328). +* Now use the browse button on the top right of the form to browse to your grbl hex file. +* Once your grbl hex file is selected, click "Upload" +After clicking upload, you'll see the RX/TX lights going wild on your Arduino. The upload process generally takes about 10 seconds to finish. Once completed, a message will appear in the bottom left corner of XLoader telling you how many bytes were uploaded. If there was an error, it would show instead of the total bytes uploaded. Steps should be similar and may be done through the command prompt. From 1f53fbb3a1d34560306ba6c4119d1d444a45f138 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 1 Jun 2018 18:03:17 +0800 Subject: [PATCH 21/74] frist release --- README.md | 87 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index d33aa26..89e5dcc 100755 --- a/README.md +++ b/README.md @@ -1,17 +1,70 @@ -## Swift Pro Firmware V4.1.0 (Base on Grbl v0.9j https://github.com/grbl/grbl) -*** - -# Update Summary for v4.1.0 -* Transplant Grbl framework -* Optimize stepper motor performance -* Fix end servo jitter - -# Flashing Firmware to Swift Pro -To flash hex to Swift Pro: -* Download and extract XLoader. -* Open XLoader and select your Arduino's COM port from the drop down menu on the lower left. -* Select the appropriate device from the dropdown list titled "Device". -* Check that Xloader set the correct baud rate for the device: 57600 for Duemilanove/Nano (ATmega 328) or 115200 for Uno (ATmega 328). -* Now use the browse button on the top right of the form to browse to your grbl hex file. -* Once your grbl hex file is selected, click "Upload" -After clicking upload, you'll see the RX/TX lights going wild on your Arduino. The upload process generally takes about 10 seconds to finish. Once completed, a message will appear in the bottom left corner of XLoader telling you how many bytes were uploaded. If there was an error, it would show instead of the total bytes uploaded. Steps should be similar and may be done through the command prompt. +# Swift Pro Firmware V4.1.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) + +---------- + +## Update Summary for v4.1.0 +* Transplant Grbl framework. +* Optimize stepper motor performance. +* Fix servo jitter in end-effector. + +## Features +* **not support study mode temporarily**. +* **not support app control temporarily**. +### For serial terminal control + +First, connect to uArm using the serial terminal of your choice.Set the baud rate to 115200 as 8-N-1 (8-bits, no parity, and 1-stop bit.) .Cmd list reference to [protocol documents](doc/). + +* move cmd support **G0,G1,G2004,G2201,G2202,G2204,G2205**. +* setting cmd support **M17,M204,M2019,M2120,M2121,M2122,M2201,M2202,M2203,M2210,M2215,M2220,M2221,M2222,M2231,M2232,M2233,M2400,M2401,M2410,M2411**. +not support temporarily **M2211,M2212,M2213,M2234,M2240,M2241,M2245**. +* query cmd support +**P2200,P2201,P2202,P2203,P2204,P2205,P2206,P2220,P2221,P2231,P2231,P2232,P2233,P2234,P2242,P2400**. +not support temporarily **P2240,P2241**. + +### For uArmStudio control + +- BLOCKLY is not support **input** and **Grove** module temporarily. +- Draw/Laser is not support temporarily. +- 3D Printing is not support temporarily. + + +---------- + +### 1ã€Flashing Firmware to uArm +#### To Determine your uArm's COM port: + +* Windows XP: Right click on "My Computer", select "Properties", select "Device Manager". +* Windows 7: Click "Start" -> Right click "Computer" -> Select "Manage" -> Select "Device Manager" from left pane. +* In the tree, expand "Ports (COM & LPT)". +* Your uArm will be the **Arduino Mega 2560 (COMX)**, where the “X†represents the COM number, for example COM6. +* If there are multiple USB serial ports, right click each one and check the manufacturer, the Arduino will be "FTDI". +#### To flash hex to Swift Pro: + +* Download the [hex](hex/) +* Download and extract [XLoader](http://xloader.russemotto.com/XLoader.zip). +* Open XLoader and select your uArm's COM port from the drop down menu on the lower left. +* Select the appropriate device from the dropdown list titled "Device". +* Check that Xloader set the correct baud rate for the device: 115200 for Mega (ATMEGA2560). +* Now use the browse button on the top right of the form to browse to your grbl hex file. +* Once your hex file is selected, click "Upload" +The upload process generally takes about 10 seconds to finish. Once completed, a message will appear in the bottom left corner of XLoader telling you how many bytes were uploaded. If there was an error, it would show instead of the total bytes uploaded. Steps should be similar and may be done through the command prompt. + +### 2ã€Control your uArm +you have three ways to control your uArm: + +* using the serial terminal +* using the Python library +* using the uArmStudio + + + +## License + +Swift Pro Firmware is published under the [GPL license](/LICENSE) + + + + + + + From 0cd5c640ac9a5ee95ea1ed9930e4024958e47f50 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 1 Jun 2018 18:08:14 +0800 Subject: [PATCH 22/74] frist release --- src/config.h | 414 ++++++++ src/coolant_control.c | 64 ++ src/coolant_control.h | 30 + src/cpu_map.h | 48 + src/cpu_map/cpu_map_atmega2560.h | 217 ++++ src/cpu_map/cpu_map_atmega328p.h | 147 +++ src/defaults.h | 91 ++ src/defaults/defaults_generic.h | 62 ++ src/defaults/defaults_oxcnc.h | 63 ++ src/defaults/defaults_shapeoko.h | 70 ++ src/defaults/defaults_shapeoko2.h | 69 ++ src/defaults/defaults_shapeoko3.h | 68 ++ src/defaults/defaults_sherline.h | 66 ++ src/defaults/defaults_simulator.h | 63 ++ src/defaults/defaults_x_carve_1000mm.h | 70 ++ src/defaults/defaults_x_carve_500mm.h | 70 ++ src/defaults/defaults_zen_toolworks_7x7.h | 68 ++ src/eeprom.c | 151 +++ src/eeprom.h | 29 + src/examples/grblUpload/license.txt | 21 + src/gcode.c | 1118 +++++++++++++++++++++ src/gcode.h | 212 ++++ src/grbl.h | 62 ++ src/grblUpload/grblUpload.ino | 29 + src/limits.c | 370 +++++++ src/limits.h | 41 + src/main.c | 97 ++ src/motion_control.c | 446 ++++++++ src/motion_control.h | 66 ++ src/nuts_bolts.c | 148 +++ src/nuts_bolts.h | 78 ++ src/planner.c | 457 +++++++++ src/planner.h | 97 ++ src/print.c | 219 ++++ src/print.h | 60 ++ src/probe.c | 68 ++ src/probe.h | 43 + src/protocol.c | 398 ++++++++ src/protocol.h | 58 ++ src/report.c | 522 ++++++++++ src/report.h | 115 +++ src/serial.c | 201 ++++ src/serial.h | 64 ++ src/settings.c | 323 ++++++ src/settings.h | 142 +++ src/spindle_control.c | 141 +++ src/spindle_control.h | 37 + src/stepper.c | 928 +++++++++++++++++ src/stepper.h | 55 + src/system.c | 305 ++++++ src/system.h | 115 +++ src/uarm_angle.c | 223 ++++ src/uarm_angle.h | 24 + src/uarm_common.h | 75 ++ src/uarm_coord_convert.c | 187 ++++ src/uarm_coord_convert.h | 24 + src/uarm_debug.h | 19 + src/uarm_iic.c | 587 +++++++++++ src/uarm_iic.h | 11 + src/uarm_peripheral.c | 446 ++++++++ src/uarm_peripheral.h | 49 + src/uarm_protocol.c | 1082 ++++++++++++++++++++ src/uarm_protocol.h | 37 + src/uarm_swift.c | 40 + src/uarm_swift.h | 18 + src/uarm_timer.c | 214 ++++ src/uarm_timer.h | 29 + 67 files changed, 11961 insertions(+) create mode 100755 src/config.h create mode 100755 src/coolant_control.c create mode 100755 src/coolant_control.h create mode 100755 src/cpu_map.h create mode 100755 src/cpu_map/cpu_map_atmega2560.h create mode 100755 src/cpu_map/cpu_map_atmega328p.h create mode 100755 src/defaults.h create mode 100755 src/defaults/defaults_generic.h create mode 100755 src/defaults/defaults_oxcnc.h create mode 100755 src/defaults/defaults_shapeoko.h create mode 100755 src/defaults/defaults_shapeoko2.h create mode 100755 src/defaults/defaults_shapeoko3.h create mode 100755 src/defaults/defaults_sherline.h create mode 100755 src/defaults/defaults_simulator.h create mode 100755 src/defaults/defaults_x_carve_1000mm.h create mode 100755 src/defaults/defaults_x_carve_500mm.h create mode 100755 src/defaults/defaults_zen_toolworks_7x7.h create mode 100755 src/eeprom.c create mode 100755 src/eeprom.h create mode 100755 src/examples/grblUpload/license.txt create mode 100755 src/gcode.c create mode 100755 src/gcode.h create mode 100755 src/grbl.h create mode 100755 src/grblUpload/grblUpload.ino create mode 100755 src/limits.c create mode 100755 src/limits.h create mode 100755 src/main.c create mode 100755 src/motion_control.c create mode 100755 src/motion_control.h create mode 100755 src/nuts_bolts.c create mode 100755 src/nuts_bolts.h create mode 100755 src/planner.c create mode 100755 src/planner.h create mode 100755 src/print.c create mode 100755 src/print.h create mode 100755 src/probe.c create mode 100755 src/probe.h create mode 100755 src/protocol.c create mode 100755 src/protocol.h create mode 100755 src/report.c create mode 100755 src/report.h create mode 100755 src/serial.c create mode 100755 src/serial.h create mode 100755 src/settings.c create mode 100755 src/settings.h create mode 100755 src/spindle_control.c create mode 100755 src/spindle_control.h create mode 100755 src/stepper.c create mode 100755 src/stepper.h create mode 100755 src/system.c create mode 100755 src/system.h create mode 100755 src/uarm_angle.c create mode 100755 src/uarm_angle.h create mode 100755 src/uarm_common.h create mode 100755 src/uarm_coord_convert.c create mode 100755 src/uarm_coord_convert.h create mode 100755 src/uarm_debug.h create mode 100755 src/uarm_iic.c create mode 100755 src/uarm_iic.h create mode 100755 src/uarm_peripheral.c create mode 100755 src/uarm_peripheral.h create mode 100755 src/uarm_protocol.c create mode 100755 src/uarm_protocol.h create mode 100755 src/uarm_swift.c create mode 100755 src/uarm_swift.h create mode 100755 src/uarm_timer.c create mode 100755 src/uarm_timer.h diff --git a/src/config.h b/src/config.h new file mode 100755 index 0000000..c5eefa3 --- /dev/null +++ b/src/config.h @@ -0,0 +1,414 @@ +/* + config.h - compile time configuration + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +// This file contains compile-time configurations for Grbl's internal system. For the most part, +// users will not need to directly modify these, but they are here for specific needs, i.e. +// performance tuning or adjusting to non-typical machines. + +// IMPORTANT: Any changes here requires a full re-compiling of the source code to propagate them. + +#ifndef config_h +#define config_h +#include "grbl.h" // For Arduino IDE compatibility. + + +// Default settings. Used when resetting EEPROM. Change to desired name in defaults.h +#define DEFAULTS_GENERIC + +// Serial baud rate +#define BAUD_RATE 115200 + +// Default cpu mappings. Grbl officially supports the Arduino Uno only. Other processor types +// may exist from user-supplied templates or directly user-defined in cpu_map.h +//#define CPU_MAP_ATMEGA328P // Arduino Uno CPU +#define CPU_MAP_ATMEGA2560 + +// Define realtime command special characters. These characters are 'picked-off' directly from the +// serial read data stream and are not passed to the grbl line execution parser. Select characters +// that do not and must not exist in the streamed g-code program. ASCII control characters may be +// used, if they are available per user setup. Also, extended ASCII codes (>127), which are never in +// g-code programs, maybe selected for interface programs. +// NOTE: If changed, manually update help message in report.c. +#define CMD_STATUS_REPORT '?' +#define CMD_FEED_HOLD '!' +#define CMD_CYCLE_START '~' +#define CMD_RESET 0x18 // ctrl-x. +#define CMD_SAFETY_DOOR '@' + +// If homing is enabled, homing init lock sets Grbl into an alarm state upon power up. This forces +// the user to perform the homing cycle (or override the locks) before doing anything else. This is +// mainly a safety feature to remind the user to home, since position is unknown to Grbl. +#define HOMING_INIT_LOCK // Comment to disable + +// Define the homing cycle patterns with bitmasks. The homing cycle first performs a search mode +// to quickly engage the limit switches, followed by a slower locate mode, and finished by a short +// pull-off motion to disengage the limit switches. The following HOMING_CYCLE_x defines are executed +// in order starting with suffix 0 and completes the homing routine for the specified-axes only. If +// an axis is omitted from the defines, it will not home, nor will the system update its position. +// Meaning that this allows for users with non-standard cartesian machines, such as a lathe (x then z, +// with no y), to configure the homing cycle behavior to their needs. +// NOTE: The homing cycle is designed to allow sharing of limit pins, if the axes are not in the same +// cycle, but this requires some pin settings changes in cpu_map.h file. For example, the default homing +// cycle can share the Z limit pin with either X or Y limit pins, since they are on different cycles. +// By sharing a pin, this frees up a precious IO pin for other purposes. In theory, all axes limit pins +// may be reduced to one pin, if all axes are homed with seperate cycles, or vice versa, all three axes +// on separate pin, but homed in one cycle. Also, it should be noted that the function of hard limits +// will not be affected by pin sharing. +// NOTE: Defaults are set for a traditional 3-axis CNC machine. Z-axis first to clear, followed by X & Y. +#define HOMING_CYCLE_0 (1< 3us, and, when added with the +// user-supplied step pulse time, the total time must not exceed 127us. Reported successful +// values for certain setups have ranged from 5 to 20us. +// #define STEP_PULSE_DELAY 10 // Step pulse delay in microseconds. Default disabled. + +// The number of linear motions in the planner buffer to be planned at any give time. The vast +// majority of RAM that Grbl uses is based on this buffer size. Only increase if there is extra +// available RAM, like when re-compiling for a Mega or Sanguino. Or decrease if the Arduino +// begins to crash due to the lack of available RAM or if the CPU is having trouble keeping +// up with planning new incoming motions as they are executed. +// #define BLOCK_BUFFER_SIZE 18 // Uncomment to override default in planner.h. + +// Governs the size of the intermediary step segment buffer between the step execution algorithm +// and the planner blocks. Each segment is set of steps executed at a constant velocity over a +// fixed time defined by ACCELERATION_TICKS_PER_SECOND. They are computed such that the planner +// block velocity profile is traced exactly. The size of this buffer governs how much step +// execution lead time there is for other Grbl processes have to compute and do their thing +// before having to come back and refill this buffer, currently at ~50msec of step moves. +// #define SEGMENT_BUFFER_SIZE 6 // Uncomment to override default in stepper.h. + +// Line buffer size from the serial input stream to be executed. Also, governs the size of +// each of the startup blocks, as they are each stored as a string of this size. Make sure +// to account for the available EEPROM at the defined memory address in settings.h and for +// the number of desired startup blocks. +// NOTE: 80 characters is not a problem except for extreme cases, but the line buffer size +// can be too small and g-code blocks can get truncated. Officially, the g-code standards +// support up to 256 characters. In future versions, this default will be increased, when +// we know how much extra memory space we can re-invest into this. +// #define LINE_BUFFER_SIZE 80 // Uncomment to override default in protocol.h + +// Serial send and receive buffer size. The receive buffer is often used as another streaming +// buffer to store incoming blocks to be processed by Grbl when its ready. Most streaming +// interfaces will character count and track each block send to each block response. So, +// increase the receive buffer if a deeper receive buffer is needed for streaming and avaiable +// memory allows. The send buffer primarily handles messages in Grbl. Only increase if large +// messages are sent and Grbl begins to stall, waiting to send the rest of the message. +// NOTE: Buffer size values must be greater than zero and less than 256. +// #define RX_BUFFER_SIZE 128 // Uncomment to override defaults in serial.h +// #define TX_BUFFER_SIZE 64 + +// Toggles XON/XOFF software flow control for serial communications. Not officially supported +// due to problems involving the Atmega8U2 USB-to-serial chips on current Arduinos. The firmware +// on these chips do not support XON/XOFF flow control characters and the intermediate buffer +// in the chips cause latency and overflow problems with standard terminal programs. However, +// using specifically-programmed UI's to manage this latency problem has been confirmed to work. +// As well as, older FTDI FT232RL-based Arduinos(Duemilanove) are known to work with standard +// terminal programs since their firmware correctly manage these XON/XOFF characters. In any +// case, please report any successes to grbl administrators! +// #define ENABLE_XONXOFF // Default disabled. Uncomment to enable. + +// A simple software debouncing feature for hard limit switches. When enabled, the interrupt +// monitoring the hard limit switch pins will enable the Arduino's watchdog timer to re-check +// the limit pin state after a delay of about 32msec. This can help with CNC machines with +// problematic false triggering of their hard limit switches, but it WILL NOT fix issues with +// electrical interference on the signal cables from external sources. It's recommended to first +// use shielded signal cables with their shielding connected to ground (old USB/computer cables +// work well and are cheap to find) and wire in a low-pass circuit into each limit pin. +// #define ENABLE_SOFTWARE_DEBOUNCE // Default disabled. Uncomment to enable. + +// Force Grbl to check the state of the hard limit switches when the processor detects a pin +// change inside the hard limit ISR routine. By default, Grbl will trigger the hard limits +// alarm upon any pin change, since bouncing switches can cause a state check like this to +// misread the pin. When hard limits are triggered, they should be 100% reliable, which is the +// reason that this option is disabled by default. Only if your system/electronics can guarantee +// that the switches don't bounce, we recommend enabling this option. This will help prevent +// triggering a hard limit when the machine disengages from the switch. +// NOTE: This option has no effect if SOFTWARE_DEBOUNCE is enabled. +// #define HARD_LIMIT_FORCE_STATE_CHECK // Default disabled. Uncomment to enable. + + +// --------------------------------------------------------------------------------------- +// COMPILE-TIME ERROR CHECKING OF DEFINE VALUES: + +#ifndef HOMING_CYCLE_0 + #error "Required HOMING_CYCLE_0 not defined." +#endif + +#if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(VARIABLE_SPINDLE) + #error "USE_SPINDLE_DIR_AS_ENABLE_PIN may only be used with VARIABLE_SPINDLE enabled" +#endif + +#if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(CPU_MAP_ATMEGA328P) + #error "USE_SPINDLE_DIR_AS_ENABLE_PIN may only be used with a 328p processor" +#endif + +// --------------------------------------------------------------------------------------- + + +#endif diff --git a/src/coolant_control.c b/src/coolant_control.c new file mode 100755 index 0000000..4429dd4 --- /dev/null +++ b/src/coolant_control.c @@ -0,0 +1,64 @@ +/* + coolant_control.c - coolant control methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +void coolant_init() +{ + COOLANT_FLOOD_DDR |= (1 << COOLANT_FLOOD_BIT); + #ifdef ENABLE_M7 + COOLANT_MIST_DDR |= (1 << COOLANT_MIST_BIT); + #endif + coolant_stop(); +} + + +void coolant_stop() +{ + COOLANT_FLOOD_PORT &= ~(1 << COOLANT_FLOOD_BIT); + #ifdef ENABLE_M7 + COOLANT_MIST_PORT &= ~(1 << COOLANT_MIST_BIT); + #endif +} + + +void coolant_set_state(uint8_t mode) +{ + if (mode == COOLANT_FLOOD_ENABLE) { + COOLANT_FLOOD_PORT |= (1 << COOLANT_FLOOD_BIT); + + #ifdef ENABLE_M7 + } else if (mode == COOLANT_MIST_ENABLE) { + COOLANT_MIST_PORT |= (1 << COOLANT_MIST_BIT); + #endif + + } else { + coolant_stop(); + } +} + + +void coolant_run(uint8_t mode) +{ + if (sys.state == STATE_CHECK_MODE) { return; } + protocol_buffer_synchronize(); // Ensure coolant turns on when specified in program. + coolant_set_state(mode); +} diff --git a/src/coolant_control.h b/src/coolant_control.h new file mode 100755 index 0000000..7694a78 --- /dev/null +++ b/src/coolant_control.h @@ -0,0 +1,30 @@ +/* + coolant_control.h - spindle control methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef coolant_control_h +#define coolant_control_h + + +void coolant_init(); +void coolant_stop(); +void coolant_set_state(uint8_t mode); +void coolant_run(uint8_t mode); + +#endif \ No newline at end of file diff --git a/src/cpu_map.h b/src/cpu_map.h new file mode 100755 index 0000000..1804d25 --- /dev/null +++ b/src/cpu_map.h @@ -0,0 +1,48 @@ +/* + cpu_map.h - CPU and pin mapping configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The cpu_map.h files serve as a central pin mapping selection file for different processor + types, i.e. AVR 328p or AVR Mega 2560. Each processor has its own pin mapping file. + (i.e. cpu_map_atmega328p.h) Grbl officially supports the Arduino Uno, but the + other supplied pin mappings are supplied by users, so your results may vary. */ + +// NOTE: With new processors, only add the define name and filename to use. + +#ifndef cpu_map_h +#define cpu_map_h + + +#ifdef CPU_MAP_ATMEGA328P // (Arduino Uno) Officially supported by Grbl. + #include "cpu_map/cpu_map_atmega328p.h" +#endif + +#ifdef CPU_MAP_ATMEGA2560 // (Arduino Mega 2560) Working @EliteEng + #include "cpu_map/cpu_map_atmega2560.h" +#endif + +/* +#ifdef CPU_MAP_CUSTOM_PROC + // For a custom pin map or different processor, copy and edit one of the available cpu + // map files and modify it to your needs. Make sure the defined name is also changed in + // the config.h file. +#endif +*/ + +#endif diff --git a/src/cpu_map/cpu_map_atmega2560.h b/src/cpu_map/cpu_map_atmega2560.h new file mode 100755 index 0000000..042d2c8 --- /dev/null +++ b/src/cpu_map/cpu_map_atmega2560.h @@ -0,0 +1,217 @@ +/* + cpu_map_atmega2560.h - CPU and pin mapping configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* This cpu_map file serves as a central pin mapping settings file for AVR Mega 2560 */ + + +#ifdef GRBL_PLATFORM +#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM +#endif + + +#define GRBL_PLATFORM "Atmega2560" + +// Serial port pins +#define SERIAL_RX USART0_RX_vect +#define SERIAL_UDRE USART0_UDRE_vect + +// Increase Buffers to make use of extra SRAM +//#define RX_BUFFER_SIZE 256 +//#define TX_BUFFER_SIZE 128 +//#define BLOCK_BUFFER_SIZE 36 +//#define LINE_BUFFER_SIZE 100 + +/* +// Define step pulse output pins. NOTE: All step bit pins must be on the same port. +#define STEP_DDR DDRA +#define STEP_PORT PORTA +#define STEP_PIN PINA +#define X_STEP_BIT 2 // MEGA2560 Digital Pin 24 +#define Y_STEP_BIT 3 // MEGA2560 Digital Pin 25 +#define Z_STEP_BIT 4 // MEGA2560 Digital Pin 26 +#define STEP_MASK ((1< grbl x axis +#define ARML_STEP_DDR DDRF +#define ARML_STEP_PORT PORTF +#define ARML_STEP_PIN 6 //PF6 +#define ARML_STEP_MASK (1< grbl y axis +#define ARMR_STEP_DDR DDRL +#define ARMR_STEP_PORT PORTL +#define ARMR_STEP_PIN 3 // PL3 +#define ARMR_STEP_MASK (1< grbl z axis +#define BASE_STEP_DDR DDRF +#define BASE_STEP_PORT PORTF +#define BASE_STEP_PIN 0 // PF0 +#define BASE_STEP_MASK (1<. +*/ + +/* Grbl officially supports the Arduino Uno, but the other supplied pin mappings are + supplied by users, so your results may vary. This cpu_map file serves as a central + pin mapping settings file for AVR 328p used on the Arduino Uno. */ + +#ifdef GRBL_PLATFORM +#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM +#endif + + +#define GRBL_PLATFORM "Atmega328p" + +// Define serial port pins and interrupt vectors. +#define SERIAL_RX USART_RX_vect +#define SERIAL_UDRE USART_UDRE_vect + +// Define step pulse output pins. NOTE: All step bit pins must be on the same port. +#define STEP_DDR DDRD +#define STEP_PORT PORTD +#define X_STEP_BIT 2 // Uno Digital Pin 2 +#define Y_STEP_BIT 3 // Uno Digital Pin 3 +#define Z_STEP_BIT 4 // Uno Digital Pin 4 +#define STEP_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings selector for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + files listed here are supplied by users, so your results may vary. However, this should + give you a good starting point as you get to know your machine and tweak the settings for + your nefarious needs. + Ensure one and only one of these DEFAULTS_XXX values is defined in config.h */ + +#ifndef defaults_h + +// Only define the DEFAULT_XXX with where to find the corresponding default_XXX.h file. +// Don't #define defaults_h here, let the selected file do it. Prevents including more than one. + +#ifdef DEFAULTS_GENERIC + // Grbl generic default settings. Should work across different machines. + #include "defaults/defaults_generic.h" +#endif + +#ifdef DEFAULTS_SHERLINE_5400 + // Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors, + // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding. + #include "defaults/defaults_sherline.h" +#endif + +#ifdef DEFAULTS_SHAPEOKO + // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos + // grblShield with a 24V, 4.2A power supply. + #include "defaults/defaults_shapeoko.h" +#endif + +#ifdef DEFAULTS_SHAPEOKO_2 + // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos + // grblShield at 28V. + #include "defaults/defaults_shapeoko2.h" +#endif + +#ifdef DEFAULTS_SHAPEOKO_3 + // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion + #include "defaults/defaults_shapeoko3.h" +#endif + +#ifdef DEFAULTS_X_CARVE_500MM + // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos + // grblShield at 24V. + #include "defaults/defaults_x_carve_500mm.h" +#endif + +#ifdef DEFAULTS_X_CARVE_1000MM + // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos + // grblShield at 24V. + #include "defaults/defaults_x_carve_1000mm.h" +#endif + +#ifdef DEFAULTS_ZEN_TOOLWORKS_7x7 + // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors. + // Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here. + // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers. + #include "defaults/defaults_zen_toolworks_7x7.h" +#endif + +#ifdef DEFAULTS_OXCNC + // Grbl settings for OpenBuilds OX CNC Machine + // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ + #include "defaults/defaults_oxcnc.h" +#endif + +#ifdef DEFAULTS_SIMULATOR + // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim) + #include "defaults/defaults_simulator.h" +#endif + +#endif diff --git a/src/defaults/defaults_generic.h b/src/defaults/defaults_generic.h new file mode 100755 index 0000000..9732f75 --- /dev/null +++ b/src/defaults/defaults_generic.h @@ -0,0 +1,62 @@ +/* + defaults_generic.h - defaults settings configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Grbl generic default settings. Should work across different machines. + #define DEFAULT_X_STEPS_PER_MM 50000.0 + #define DEFAULT_Y_STEPS_PER_MM 50000.0 + #define DEFAULT_Z_STEPS_PER_MM 50000.0 + #define DEFAULT_X_MAX_RATE 100000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 100000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 100000.0 // mm/min + #define DEFAULT_X_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 10000.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 10000.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 10000.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK 7 // 00000111 zyz + #define DEFAULT_STEPPER_IDLE_LOCK_TIME 255 // msec (0-254, 255 keeps steppers enabled) + #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) + #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm + #define DEFAULT_ARC_TOLERANCE 0.002 // mm + #define DEFAULT_REPORT_INCHES 0 // false + #define DEFAULT_INVERT_ST_ENABLE 1 // false + #define DEFAULT_INVERT_LIMIT_PINS 0 // false + #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false + #define DEFAULT_HARD_LIMIT_ENABLE 0 // false + #define DEFAULT_HOMING_ENABLE 0 // false + #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir + #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min + #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min + #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) + #define DEFAULT_HOMING_PULLOFF 1.0 // mm + +#endif diff --git a/src/defaults/defaults_oxcnc.h b/src/defaults/defaults_oxcnc.h new file mode 100755 index 0000000..1c89ab8 --- /dev/null +++ b/src/defaults/defaults_oxcnc.h @@ -0,0 +1,63 @@ +/* + defaults_oxcnc.h - defaults settings configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Grbl settings for OpenBuilds OX CNC Machine + // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ + #define DEFAULT_X_STEPS_PER_MM 26.670 + #define DEFAULT_Y_STEPS_PER_MM 26.670 + #define DEFAULT_Z_STEPS_PER_MM 50 + #define DEFAULT_X_MAX_RATE 500.0 // mm/min + #define DEFAULT_Y_MAX_RATE 500.0 // mm/min + #define DEFAULT_Z_MAX_RATE 500.0 // mm/min + #define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 500.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 750.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 80.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK 0 + #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) + #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) + #define DEFAULT_JUNCTION_DEVIATION 0.02 // mm + #define DEFAULT_ARC_TOLERANCE 0.002 // mm + #define DEFAULT_REPORT_INCHES 0 // false + #define DEFAULT_INVERT_ST_ENABLE 0 // false + #define DEFAULT_INVERT_LIMIT_PINS 0 // false + #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false + #define DEFAULT_HARD_LIMIT_ENABLE 0 // false + #define DEFAULT_HOMING_ENABLE 0 // false + #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir + #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min + #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min + #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) + #define DEFAULT_HOMING_PULLOFF 1.0 // mm + +#endif diff --git a/src/defaults/defaults_shapeoko.h b/src/defaults/defaults_shapeoko.h new file mode 100755 index 0000000..46346ea --- /dev/null +++ b/src/defaults/defaults_shapeoko.h @@ -0,0 +1,70 @@ +/* + defaults_shapeoko.h - defaults settings configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + + // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos + // grblShield with a 24V, 4.2A power supply. + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 400 + #define MM_PER_REV_XY (0.08*18*MM_PER_INCH) // 0.08 in belt pitch, 18 pulley teeth + #define MICROSTEPS_Z 2 + #define STEP_REVS_Z 400 + #define MM_PER_REV_Z 1.250 // 1.25 mm/rev leadscrew + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 1000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 1000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 1000.0 // mm/min + #define DEFAULT_X_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 200.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 200.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos + // grblShield at 28V. + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 200 + #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define MICROSTEPS_Z 2 + #define STEP_REVS_Z 200 + #define MM_PER_REV_Z 1.250 // 1.25 mm/rev leadscrew + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 5000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 5000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 500.0 // mm/min + #define DEFAULT_X_ACCELERATION (250.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (250.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 290.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 290.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 200 + #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define MICROSTEPS_Z 8 + #define STEP_REVS_Z 200 + #define MM_PER_REV_Z (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 5000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 5000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 5000.0 // mm/min + #define DEFAULT_X_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 425.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 465.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 80.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors, + // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding. + #define MICROSTEPS 2 + #define STEPS_PER_REV 200.0 + #define MM_PER_REV (0.050*MM_PER_INCH) // 0.050 inch/rev leadscrew + #define DEFAULT_X_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_Y_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_Z_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_X_MAX_RATE 635.0 // mm/min (25 ipm) + #define DEFAULT_Y_MAX_RATE 635.0 // mm/min + #define DEFAULT_Z_MAX_RATE 635.0 // mm/min + #define DEFAULT_X_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 225.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 125.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 170.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim) + // Grbl generic default settings. Should work across different machines. + #define DEFAULT_X_STEPS_PER_MM 1000.0 + #define DEFAULT_Y_STEPS_PER_MM 1000.0 + #define DEFAULT_Z_STEPS_PER_MM 1000.0 + #define DEFAULT_X_MAX_RATE 1000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 1000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 1000.0 // mm/min + #define DEFAULT_X_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 1000.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 1000.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 1000.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK 0 + #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) + #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) + #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm + #define DEFAULT_ARC_TOLERANCE 0.002 // mm + #define DEFAULT_REPORT_INCHES 0 // false + #define DEFAULT_INVERT_ST_ENABLE 0 // false + #define DEFAULT_INVERT_LIMIT_PINS 0 // false + #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false + #define DEFAULT_HARD_LIMIT_ENABLE 0 // false + #define DEFAULT_HOMING_ENABLE 0 // false + #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir + #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min + #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min + #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) + #define DEFAULT_HOMING_PULLOFF 1.0 // mm + +#endif diff --git a/src/defaults/defaults_x_carve_1000mm.h b/src/defaults/defaults_x_carve_1000mm.h new file mode 100755 index 0000000..f88e5ad --- /dev/null +++ b/src/defaults/defaults_x_carve_1000mm.h @@ -0,0 +1,70 @@ +/* + defaults_x_carve_1000mm.h - defaults settings configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos + // grblShield at 24V. + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 200 + #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define MICROSTEPS_Z 2 + #define STEP_REVS_Z 200 + #define MM_PER_REV_Z 2.117 // ACME 3/8-12 Leadscrew + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 8000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 8000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 500.0 // mm/min + #define DEFAULT_X_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 740.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 790.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos + // grblShield at 24V. + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 200 + #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define MICROSTEPS_Z 2 + #define STEP_REVS_Z 200 + #define MM_PER_REV_Z 2.117 // ACME 3/8-12 Leadscrew + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 8000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 8000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 500.0 // mm/min + #define DEFAULT_X_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 290.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 290.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors. + // Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here. + // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers. + #define MICROSTEPS 8 + #define STEPS_PER_REV 200.0 + #define MM_PER_REV 8.0 // 8 mm/rev leadscrew + #define DEFAULT_X_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_Y_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_Z_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_X_MAX_RATE 6000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 6000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 6000.0 // mm/min + #define DEFAULT_X_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 190.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 180.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 150.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1< +#include + +/* These EEPROM bits have different names on different devices. */ +#ifndef EEPE + #define EEPE EEWE //!< EEPROM program/write enable. + #define EEMPE EEMWE //!< EEPROM master program/write enable. +#endif + +/* These two are unfortunately not defined in the device include files. */ +#define EEPM1 5 //!< EEPROM Programming Mode Bit 1. +#define EEPM0 4 //!< EEPROM Programming Mode Bit 0. + +/* Define to reduce code size. */ +#define EEPROM_IGNORE_SELFPROG //!< Remove SPM flag polling. + +/*! \brief Read byte from EEPROM. + * + * This function reads one byte from a given EEPROM address. + * + * \note The CPU is halted for 4 clock cycles during EEPROM read. + * + * \param addr EEPROM address to read from. + * \return The byte read from the EEPROM address. + */ +unsigned char eeprom_get_char( unsigned int addr ) +{ + do {} while( EECR & (1< 0; size--) { + checksum = (checksum << 1) || (checksum >> 7); + checksum += *source; + eeprom_put_char(destination++, *(source++)); + } + eeprom_put_char(destination, checksum); +} + +int memcpy_from_eeprom_with_checksum(char *destination, unsigned int source, unsigned int size) { + unsigned char data, checksum = 0; + for(; size > 0; size--) { + data = eeprom_get_char(source++); + checksum = (checksum << 1) || (checksum >> 7); + checksum += data; + *(destination++) = data; + } + return(checksum == eeprom_get_char(source)); +} + +// end of file diff --git a/src/eeprom.h b/src/eeprom.h new file mode 100755 index 0000000..c9718a2 --- /dev/null +++ b/src/eeprom.h @@ -0,0 +1,29 @@ +/* + eeprom.h - EEPROM methods + Part of Grbl + + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef eeprom_h +#define eeprom_h + +unsigned char eeprom_get_char(unsigned int addr); +void eeprom_put_char(unsigned int addr, unsigned char new_value); +void memcpy_to_eeprom_with_checksum(unsigned int destination, char *source, unsigned int size); +int memcpy_from_eeprom_with_checksum(char *destination, unsigned int source, unsigned int size); + +#endif diff --git a/src/examples/grblUpload/license.txt b/src/examples/grblUpload/license.txt new file mode 100755 index 0000000..1abcdb9 --- /dev/null +++ b/src/examples/grblUpload/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Sungeun K. Jeon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/src/gcode.c b/src/gcode.c new file mode 100755 index 0000000..51cc4ae --- /dev/null +++ b/src/gcode.c @@ -0,0 +1,1118 @@ +/* + gcode.c - rs274/ngc parser. + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include "uarm_protocol.h" + +// NOTE: Max line number is defined by the g-code standard to be 99999. It seems to be an +// arbitrary value, and some GUIs may require more. So we increased it based on a max safe +// value when converting a float (7.2 digit precision)s to an integer. +#define MAX_LINE_NUMBER 9999999 + +#define AXIS_COMMAND_NONE 0 +#define AXIS_COMMAND_NON_MODAL 1 +#define AXIS_COMMAND_MOTION_MODE 2 +#define AXIS_COMMAND_TOOL_LENGTH_OFFSET 3 // *Undefined but required + +// Declare gc extern struct +parser_state_t gc_state; +parser_block_t gc_block; + +#define FAIL(status) return(status); + + +void gc_init() +{ + memset(&gc_state, 0, sizeof(parser_state_t)); + + // Load default G54 coordinate system. + if (!(settings_read_coord_data(gc_state.modal.coord_select,gc_state.coord_system))) { + report_status_message(STATUS_SETTING_READ_FAIL); + } +} + + +// Sets g-code parser position in mm. Input in steps. Called by the system abort and hard +// limit pull-off routines. +void gc_sync_position() +{ + system_convert_array_steps_to_mpos(gc_state.position,sys.position); +} + + +static uint8_t gc_check_same_position(float *pos_a, float *pos_b) +{ + uint8_t idx; + for (idx=0; idx 'Z')) { FAIL(STATUS_EXPECTED_COMMAND_LETTER); } // [Expected word letter] + char_counter++; + if (!read_float(line, &char_counter, &value)) { FAIL(STATUS_BAD_NUMBER_FORMAT); } // [Expected word value] + + // Convert values to smaller uint8 significand and mantissa values for parsing this word. + // NOTE: Mantissa is multiplied by 100 to catch non-integer command values. This is more + // accurate than the NIST gcode requirement of x10 when used for commands, but not quite + // accurate enough for value words that require integers to within 0.0001. This should be + // a good enough comprimise and catch most all non-integer errors. To make it compliant, + // we would simply need to change the mantissa to int16, but this add compiled flash space. + // Maybe update this later. + int_value = trunc(value); + mantissa = round(100*(value - int_value)); // Compute mantissa for Gxx.x commands. + // NOTE: Rounding must be used to catch small floating point errors. + + // Check if the g-code word is supported or errors due to modal group violations or has + // been repeated in the g-code block. If ok, update the command or record its value. + switch(letter) { + + /* 'G' and 'M' Command Words: Parse commands and check for modal group violations. + NOTE: Modal group numbers are defined in Table 4 of NIST RS274-NGC v3, pg.20 */ + + case 'G': + // Determine 'G' command and its modal group + rtn = uarm_execute_g_cmd( int_value, line+char_counter, &char_counter ); + if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } + + + switch(int_value) { + case 10: case 28: case 30: case 92: + // Check for G10/28/30/92 being called with G0/1/2/3/38 on same block. + // * G43.1 is also an axis command but is not explicitly defined this way. + if (mantissa == 0) { // Ignore G28.1, G30.1, and G92.1 + if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] + axis_command = AXIS_COMMAND_NON_MODAL; + } + // No break. Continues to next line. + case 4: case 53: + word_bit = MODAL_GROUP_G0; + switch(int_value) { + case 4: gc_block.non_modal_command = NON_MODAL_DWELL; break; // G4 + case 10: gc_block.non_modal_command = NON_MODAL_SET_COORDINATE_DATA; break; // G10 + case 28: + switch(mantissa) { + case 0: gc_block.non_modal_command = NON_MODAL_GO_HOME_0; break; // G28 + case 10: gc_block.non_modal_command = NON_MODAL_SET_HOME_0; break; // G28.1 + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G28.x command] + } + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + case 30: + switch(mantissa) { + case 0: gc_block.non_modal_command = NON_MODAL_GO_HOME_1; break; // G30 + case 10: gc_block.non_modal_command = NON_MODAL_SET_HOME_1; break; // G30.1 + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G30.x command] + } + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + case 53: gc_block.non_modal_command = NON_MODAL_ABSOLUTE_OVERRIDE; break; // G53 + case 92: + switch(mantissa) { + case 0: gc_block.non_modal_command = NON_MODAL_SET_COORDINATE_OFFSET; break; // G92 + case 10: gc_block.non_modal_command = NON_MODAL_RESET_COORDINATE_OFFSET; break; // G92.1 + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G92.x command] + } + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + } + break; + case 0: case 1: case 2: case 3: case 38: + // Check for G0/1/2/3/38 being called with G10/28/30/92 on same block. + // * G43.1 is also an axis command but is not explicitly defined this way. + if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] + axis_command = AXIS_COMMAND_MOTION_MODE; + // No break. Continues to next line. + case 80: + word_bit = MODAL_GROUP_G1; + switch(int_value) { + case 0: gc_block.modal.motion = MOTION_MODE_SEEK; break; // G0 + case 1: gc_block.modal.motion = MOTION_MODE_LINEAR; break; // G1 + case 2: gc_block.modal.motion = MOTION_MODE_CW_ARC; break; // G2 + case 3: gc_block.modal.motion = MOTION_MODE_CCW_ARC; break; // G3 + case 38: + switch(mantissa) { + case 20: gc_block.modal.motion = MOTION_MODE_PROBE_TOWARD; break; // G38.2 + case 30: gc_block.modal.motion = MOTION_MODE_PROBE_TOWARD_NO_ERROR; break; // G38.3 + case 40: gc_block.modal.motion = MOTION_MODE_PROBE_AWAY; break; // G38.4 + case 50: gc_block.modal.motion = MOTION_MODE_PROBE_AWAY_NO_ERROR; break; // G38.5 + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G38.x command] + } + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + case 80: gc_block.modal.motion = MOTION_MODE_NONE; break; // G80 + } + break; + case 17: case 18: case 19: + word_bit = MODAL_GROUP_G2; + switch(int_value) { + case 17: gc_block.modal.plane_select = PLANE_SELECT_XY; break; + case 18: gc_block.modal.plane_select = PLANE_SELECT_ZX; break; + case 19: gc_block.modal.plane_select = PLANE_SELECT_YZ; break; + } + break; + case 90: case 91: + if (mantissa == 0) { + word_bit = MODAL_GROUP_G3; + if (int_value == 90) { gc_block.modal.distance = DISTANCE_MODE_ABSOLUTE; } // G90 + else { gc_block.modal.distance = DISTANCE_MODE_INCREMENTAL; } // G91 + } else { + word_bit = MODAL_GROUP_G4; + if ((mantissa != 10) || (int_value == 90)) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G90.1 not supported] + mantissa = 0; // Set to zero to indicate valid non-integer G command. + // Otherwise, arc IJK incremental mode is default. G91.1 does nothing. + } + break; + case 93: case 94: + word_bit = MODAL_GROUP_G5; + if (int_value == 93) { gc_block.modal.feed_rate = FEED_RATE_MODE_INVERSE_TIME; } // G93 + else { gc_block.modal.feed_rate = FEED_RATE_MODE_UNITS_PER_MIN; } // G94 + break; + case 20: case 21: + word_bit = MODAL_GROUP_G6; + if (int_value == 20) { gc_block.modal.units = UNITS_MODE_INCHES; } // G20 + else { gc_block.modal.units = UNITS_MODE_MM; } // G21 + break; + case 40: + word_bit = MODAL_GROUP_G7; + // NOTE: Not required since cutter radius compensation is always disabled. Only here + // to support G40 commands that often appear in g-code program headers to setup defaults. + // gc_block.modal.cutter_comp = CUTTER_COMP_DISABLE; // G40 + break; + case 43: case 49: + word_bit = MODAL_GROUP_G8; + // NOTE: The NIST g-code standard vaguely states that when a tool length offset is changed, + // there cannot be any axis motion or coordinate offsets updated. Meaning G43, G43.1, and G49 + // all are explicit axis commands, regardless if they require axis words or not. + if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] } + axis_command = AXIS_COMMAND_TOOL_LENGTH_OFFSET; + if (int_value == 49) { // G49 + gc_block.modal.tool_length = TOOL_LENGTH_OFFSET_CANCEL; + } else if (mantissa == 10) { // G43.1 + gc_block.modal.tool_length = TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC; + } else { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [Unsupported G43.x command] + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + case 54: case 55: case 56: case 57: case 58: case 59: + // NOTE: G59.x are not supported. (But their int_values would be 60, 61, and 62.) + word_bit = MODAL_GROUP_G12; + gc_block.modal.coord_select = int_value-54; // Shift to array indexing. + break; + case 61: + word_bit = MODAL_GROUP_G13; + if (mantissa != 0) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G61.1 not supported] + // gc_block.modal.control = CONTROL_MODE_EXACT_PATH; // G61 + break; + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G command] + } + if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [Unsupported or invalid Gxx.x command] + // Check for more than one command per modal group violations in the current block + // NOTE: Variable 'word_bit' is always assigned, if the command is valid. + if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } + command_words |= bit(word_bit); + break; + + case 'M': + + // Determine 'M' command and its modal group + if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [No Mxx.x commands] + + rtn = uarm_execute_m_cmd( int_value, line+char_counter, &char_counter ); + if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } + + switch(int_value) { + case 0: case 1: case 2: case 30: + word_bit = MODAL_GROUP_M4; + switch(int_value) { + case 0: gc_block.modal.program_flow = PROGRAM_FLOW_PAUSED; break; // Program pause + case 1: break; // Optional stop not supported. Ignore. + case 2: case 30: gc_block.modal.program_flow = PROGRAM_FLOW_COMPLETED; break; // Program end and reset + } + break; + #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN + case 4: + #endif + case 3: case 5: + word_bit = MODAL_GROUP_M7; + switch(int_value) { + case 3: gc_block.modal.spindle = SPINDLE_ENABLE_CW; break; + #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN + case 4: gc_block.modal.spindle = SPINDLE_ENABLE_CCW; break; + #endif + case 5: gc_block.modal.spindle = SPINDLE_DISABLE; break; + } + break; + #ifdef ENABLE_M7 + case 7: + #endif + case 8: case 9: + word_bit = MODAL_GROUP_M8; + switch(int_value) { + #ifdef ENABLE_M7 + case 7: gc_block.modal.coolant = COOLANT_MIST_ENABLE; break; + #endif + case 8: gc_block.modal.coolant = COOLANT_FLOOD_ENABLE; break; + case 9: gc_block.modal.coolant = COOLANT_DISABLE; break; + } + break; + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported M command] + } + + // Check for more than one command per modal group violations in the current block + // NOTE: Variable 'word_bit' is always assigned, if the command is valid. + if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } + command_words |= bit(word_bit); + break; + case 'P': + if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [No Mxx.x commands] + rtn = uarm_execute_p_cmd( int_value, line+char_counter, &char_counter ); + if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } + + if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } + command_words |= bit(word_bit); + break; + // NOTE: All remaining letters assign values. + default: + + /* Non-Command Words: This initial parsing phase only checks for repeats of the remaining + legal g-code words and stores their value. Error-checking is performed later since some + words (I,J,K,L,P,R) have multiple connotations and/or depend on the issued commands. */ + switch(letter){ + // case 'A': // Not supported + // case 'B': // Not supported + // case 'C': // Not supported + // case 'D': // Not supported + case 'F': word_bit = WORD_F; gc_block.values.f = value; break; + // case 'H': // Not supported + case 'I': word_bit = WORD_I; gc_block.values.ijk[X_AXIS] = value; ijk_words |= (1< MAX_LINE_NUMBER) { FAIL(STATUS_GCODE_INVALID_LINE_NUMBER); } // [Exceeds max line number] + } + // bit_false(value_words,bit(WORD_N)); // NOTE: Single-meaning value word. Set at end of error-checking. + + // Track for unused words at the end of error-checking. + // NOTE: Single-meaning value words are removed all at once at the end of error-checking, because + // they are always used when present. This was done to save a few bytes of flash. For clarity, the + // single-meaning value words may be removed as they are used. Also, axis words are treated in the + // same way. If there is an explicit/implicit axis command, XYZ words are always used and are + // are removed at the end of error-checking. + + // [1. Comments ]: MSG's NOT SUPPORTED. Comment handling performed by protocol. + + // [2. Set feed rate mode ]: G93 F word missing with G1,G2/3 active, implicitly or explicitly. Feed rate + // is not defined after switching to G94 from G93. + if (gc_block.modal.feed_rate == FEED_RATE_MODE_INVERSE_TIME) { // = G93 + // NOTE: G38 can also operate in inverse time, but is undefined as an error. Missing F word check added here. + if (axis_command == AXIS_COMMAND_MOTION_MODE) { + if ((gc_block.modal.motion != MOTION_MODE_NONE) || (gc_block.modal.motion != MOTION_MODE_SEEK)) { + if (bit_isfalse(value_words,bit(WORD_F))) { FAIL(STATUS_GCODE_UNDEFINED_FEED_RATE); } // [F word missing] + } + } + // NOTE: It seems redundant to check for an F word to be passed after switching from G94 to G93. We would + // accomplish the exact same thing if the feed rate value is always reset to zero and undefined after each + // inverse time block, since the commands that use this value already perform undefined checks. This would + // also allow other commands, following this switch, to execute and not error out needlessly. This code is + // combined with the above feed rate mode and the below set feed rate error-checking. + + // [3. Set feed rate ]: F is negative (done.) + // - In inverse time mode: Always implicitly zero the feed rate value before and after block completion. + // NOTE: If in G93 mode or switched into it from G94, just keep F value as initialized zero or passed F word + // value in the block. If no F word is passed with a motion command that requires a feed rate, this will error + // out in the motion modes error-checking. However, if no F word is passed with NO motion command that requires + // a feed rate, we simply move on and the state feed rate value gets updated to zero and remains undefined. + } else { // = G94 + // - In units per mm mode: If F word passed, ensure value is in mm/min, otherwise push last state value. + if (gc_state.modal.feed_rate == FEED_RATE_MODE_UNITS_PER_MIN) { // Last state is also G94 + if (bit_istrue(value_words,bit(WORD_F))) { + if (gc_block.modal.units == UNITS_MODE_INCHES) { gc_block.values.f *= MM_PER_INCH; } + } else { + gc_block.values.f = gc_state.feed_rate; // Push last state feed rate + } + } // Else, switching to G94 from G93, so don't push last state feed rate. Its undefined or the passed F word value. + } + // bit_false(value_words,bit(WORD_F)); // NOTE: Single-meaning value word. Set at end of error-checking. + + // [4. Set spindle speed ]: S is negative (done.) + if (bit_isfalse(value_words,bit(WORD_S))) { gc_block.values.s = gc_state.spindle_speed; } + // bit_false(value_words,bit(WORD_S)); // NOTE: Single-meaning value word. Set at end of error-checking. + + // [5. Select tool ]: NOT SUPPORTED. Only tracks value. T is negative (done.) Not an integer. Greater than max tool value. + // bit_false(value_words,bit(WORD_T)); // NOTE: Single-meaning value word. Set at end of error-checking. + + // [6. Change tool ]: N/A + // [7. Spindle control ]: N/A + // [8. Coolant control ]: N/A + // [9. Enable/disable feed rate or spindle overrides ]: NOT SUPPORTED. + + // [10. Dwell ]: P value missing. P is negative (done.) NOTE: See below. + if (gc_block.non_modal_command == NON_MODAL_DWELL) { + if (bit_isfalse(value_words,bit(WORD_P))) { FAIL(STATUS_GCODE_VALUE_WORD_MISSING); } // [P word missing] + bit_false(value_words,bit(WORD_P)); + } + + // [11. Set active plane ]: N/A + switch (gc_block.modal.plane_select) { + case PLANE_SELECT_XY: + axis_0 = X_AXIS; + axis_1 = Y_AXIS; + axis_linear = Z_AXIS; + break; + case PLANE_SELECT_ZX: + axis_0 = Z_AXIS; + axis_1 = X_AXIS; + axis_linear = Y_AXIS; + break; + default: // case PLANE_SELECT_YZ: + axis_0 = Y_AXIS; + axis_1 = Z_AXIS; + axis_linear = X_AXIS; + } + + // [12. Set length units ]: N/A + // Pre-convert XYZ coordinate values to millimeters, if applicable. + uint8_t idx; + if (gc_block.modal.units == UNITS_MODE_INCHES) { + for (idx=0; idx N_COORDINATE_SYSTEM) { FAIL(STATUS_GCODE_UNSUPPORTED_COORD_SYS); } // [Greater than N sys] + if (gc_state.modal.coord_select != gc_block.modal.coord_select) { + if (!(settings_read_coord_data(gc_block.modal.coord_select,coordinate_data))) { FAIL(STATUS_SETTING_READ_FAIL); } + } + } + + // [16. Set path control mode ]: N/A. Only G61. G61.1 and G64 NOT SUPPORTED. + // [17. Set distance mode ]: N/A. Only G91.1. G90.1 NOT SUPPORTED. + // [18. Set retract mode ]: NOT SUPPORTED. + + // [19. Remaining non-modal actions ]: Check go to predefined position, set G10, or set axis offsets. + // NOTE: We need to separate the non-modal commands that are axis word-using (G10/G28/G30/G92), as these + // commands all treat axis words differently. G10 as absolute offsets or computes current position as + // the axis value, G92 similarly to G10 L20, and G28/30 as an intermediate target position that observes + // all the current coordinate system and G92 offsets. + switch (gc_block.non_modal_command) { + case NON_MODAL_SET_COORDINATE_DATA: + // [G10 Errors]: L missing and is not 2 or 20. P word missing. (Negative P value done.) + // [G10 L2 Errors]: R word NOT SUPPORTED. P value not 0 to nCoordSys(max 9). Axis words missing. + // [G10 L20 Errors]: P must be 0 to nCoordSys(max 9). Axis words missing. + if (!axis_words) { FAIL(STATUS_GCODE_NO_AXIS_WORDS) }; // [No axis words] + if (bit_isfalse(value_words,((1< N_COORDINATE_SYSTEM) { FAIL(STATUS_GCODE_UNSUPPORTED_COORD_SYS); } // [Greater than N sys] + if (gc_block.values.l != 20) { + if (gc_block.values.l == 2) { + if (bit_istrue(value_words,bit(WORD_R))) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G10 L2 R not supported] + } else { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [Unsupported L] + } + bit_false(value_words,(bit(WORD_L)|bit(WORD_P))); + + // Determine coordinate system to change and try to load from EEPROM. + if (coord_select > 0) { coord_select--; } // Adjust P1-P6 index to EEPROM coordinate data indexing. + else { coord_select = gc_block.modal.coord_select; } // Index P0 as the active coordinate system + if (!settings_read_coord_data(coord_select,parameter_data)) { FAIL(STATUS_SETTING_READ_FAIL); } // [EEPROM read fail] + + // Pre-calculate the coordinate data changes. NOTE: Uses parameter_data since coordinate_data may be in use by G54-59. + for (idx=0; idx C -----------------+--------------- T <- [x,y] + | <------ d/2 ---->| + + C - Current position + T - Target position + O - center of circle that pass through both C and T + d - distance from C to T + r - designated radius + h - distance from center of CT to O + + Expanding the equations: + + d -> sqrt(x^2 + y^2) + h -> sqrt(4 * r^2 - x^2 - y^2)/2 + i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 + j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 + + Which can be written: + + i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 + j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 + + Which we for size and speed reasons optimize to: + + h_x2_div_d = sqrt(4 * r^2 - x^2 - y^2)/sqrt(x^2 + y^2) + i = (x - (y * h_x2_div_d))/2 + j = (y + (x * h_x2_div_d))/2 + */ + + // First, use h_x2_div_d to compute 4*h^2 to check if it is negative or r is smaller + // than d. If so, the sqrt of a negative number is complex and error out. + float h_x2_div_d = 4.0 * gc_block.values.r*gc_block.values.r - x*x - y*y; + + if (h_x2_div_d < 0) { FAIL(STATUS_GCODE_ARC_RADIUS_ERROR); } // [Arc radius error] + + // Finish computing h_x2_div_d. + h_x2_div_d = -sqrt(h_x2_div_d)/hypot_f(x,y); // == -(h * 2 / d) + // Invert the sign of h_x2_div_d if the circle is counter clockwise (see sketch below) + if (gc_block.modal.motion == MOTION_MODE_CCW_ARC) { h_x2_div_d = -h_x2_div_d; } + + /* The counter clockwise circle lies to the left of the target direction. When offset is positive, + the left hand circle will be generated - when it is negative the right hand circle is generated. + + T <-- Target position + + ^ + Clockwise circles with this center | Clockwise circles with this center will have + will have > 180 deg of angular travel | < 180 deg of angular travel, which is a good thing! + \ | / + center of arc when h_x2_div_d is positive -> x <----- | -----> x <- center of arc when h_x2_div_d is negative + | + | + + C <-- Current position + */ + // Negative R is g-code-alese for "I want a circle with more than 180 degrees of travel" (go figure!), + // even though it is advised against ever generating such circles in a single line of g-code. By + // inverting the sign of h_x2_div_d the center of the circles is placed on the opposite side of the line of + // travel and thus we get the unadvisably long arcs as prescribed. + if (gc_block.values.r < 0) { + h_x2_div_d = -h_x2_div_d; + gc_block.values.r = -gc_block.values.r; // Finished with r. Set to positive for mc_arc + } + // Complete the operation by calculating the actual center of the arc + gc_block.values.ijk[axis_0] = 0.5*(x-(y*h_x2_div_d)); + gc_block.values.ijk[axis_1] = 0.5*(y+(x*h_x2_div_d)); + + } else { // Arc Center Format Offset Mode + if (!(ijk_words & (bit(axis_0)|bit(axis_1)))) { FAIL(STATUS_GCODE_NO_OFFSETS_IN_PLANE); } // [No offsets in plane] + bit_false(value_words,(bit(WORD_I)|bit(WORD_J)|bit(WORD_K))); + + // Convert IJK values to proper units. + if (gc_block.modal.units == UNITS_MODE_INCHES) { + for (idx=0; idx 0.005) { + if (delta_r > 0.5) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Arc definition error] > 0.5mm + if (delta_r > (0.001*gc_block.values.r)) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Arc definition error] > 0.005mm AND 0.1% radius + } + } + break; + case MOTION_MODE_PROBE_TOWARD: case MOTION_MODE_PROBE_TOWARD_NO_ERROR: + case MOTION_MODE_PROBE_AWAY: case MOTION_MODE_PROBE_AWAY_NO_ERROR: + // [G38 Errors]: Target is same current. No axis words. Cutter compensation is enabled. Feed rate + // is undefined. Probe is triggered. NOTE: Probe check moved to probe cycle. Instead of returning + // an error, it issues an alarm to prevent further motion to the probe. It's also done there to + // allow the planner buffer to empty and move off the probe trigger before another probing cycle. + if (!axis_words) { FAIL(STATUS_GCODE_NO_AXIS_WORDS); } // [No axis words] + if (gc_check_same_position(gc_state.position, gc_block.values.xyz)) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Invalid target] + break; + } + } + } + + // [21. Program flow ]: No error checks required. + + // [0. Non-specific error-checks]: Complete unused value words check, i.e. IJK used when in arc + // radius mode, or axis words that aren't used in the block. + bit_false(value_words,(bit(WORD_N)|bit(WORD_F)|bit(WORD_S)|bit(WORD_T))); // Remove single-meaning value words. + if (axis_command) { bit_false(value_words,(bit(WORD_X)|bit(WORD_Y)|bit(WORD_Z))); } // Remove axis words. + if (value_words) { FAIL(STATUS_GCODE_UNUSED_WORDS); } // [Unused words] + + + /* ------------------------------------------------------------------------------------- + STEP 4: EXECUTE!! + Assumes that all error-checking has been completed and no failure modes exist. We just + need to update the state and execute the block according to the order-of-execution. + */ + + // [0. Non-specific/common error-checks and miscellaneous setup]: + gc_state.line_number = gc_block.values.n; + + // [1. Comments feedback ]: NOT SUPPORTED + + // [2. Set feed rate mode ]: + gc_state.modal.feed_rate = gc_block.modal.feed_rate; + + // [3. Set feed rate ]: + gc_state.feed_rate = gc_block.values.f; // Always copy this value. See feed rate error-checking. + + // [4. Set spindle speed ]: + if (gc_state.spindle_speed != gc_block.values.s) { + // Update running spindle only if not in check mode and not already enabled. + if (gc_state.modal.spindle != SPINDLE_DISABLE) { spindle_run(gc_state.modal.spindle, gc_block.values.s); } + gc_state.spindle_speed = gc_block.values.s; + } + + // [5. Select tool ]: NOT SUPPORTED. Only tracks tool value. + gc_state.tool = gc_block.values.t; + + // [6. Change tool ]: NOT SUPPORTED + + // [7. Spindle control ]: + if (gc_state.modal.spindle != gc_block.modal.spindle) { + // Update spindle control and apply spindle speed when enabling it in this block. + spindle_run(gc_block.modal.spindle, gc_state.spindle_speed); + gc_state.modal.spindle = gc_block.modal.spindle; + } + + // [8. Coolant control ]: + if (gc_state.modal.coolant != gc_block.modal.coolant) { + coolant_run(gc_block.modal.coolant); + gc_state.modal.coolant = gc_block.modal.coolant; + } + + // [9. Enable/disable feed rate or spindle overrides ]: NOT SUPPORTED + + // [10. Dwell ]: + if (gc_block.non_modal_command == NON_MODAL_DWELL) { mc_dwell(gc_block.values.p); } + + // [11. Set active plane ]: + gc_state.modal.plane_select = gc_block.modal.plane_select; + + // [12. Set length units ]: + gc_state.modal.units = gc_block.modal.units; + + // [13. Cutter radius compensation ]: G41/42 NOT SUPPORTED + // gc_state.modal.cutter_comp = gc_block.modal.cutter_comp; // NOTE: Not needed since always disabled. + + // [14. Cutter length compensation ]: G43.1 and G49 supported. G43 NOT SUPPORTED. + // NOTE: If G43 were supported, its operation wouldn't be any different from G43.1 in terms + // of execution. The error-checking step would simply load the offset value into the correct + // axis of the block XYZ value array. + if (axis_command == AXIS_COMMAND_TOOL_LENGTH_OFFSET ) { // Indicates a change. + gc_state.modal.tool_length = gc_block.modal.tool_length; + if (gc_state.modal.tool_length == TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC) { // G43.1 + gc_state.tool_length_offset = gc_block.values.xyz[TOOL_LENGTH_OFFSET_AXIS]; + } else { // G49 + gc_state.tool_length_offset = 0.0; + } + } + + // [15. Coordinate system selection ]: + if (gc_state.modal.coord_select != gc_block.modal.coord_select) { + gc_state.modal.coord_select = gc_block.modal.coord_select; + memcpy(gc_state.coord_system,coordinate_data,sizeof(coordinate_data)); + } + + // [16. Set path control mode ]: G61.1/G64 NOT SUPPORTED + // gc_state.modal.control = gc_block.modal.control; // NOTE: Always default. + + // [17. Set distance mode ]: + gc_state.modal.distance = gc_block.modal.distance; + + // [18. Set retract mode ]: NOT SUPPORTED + + // [19. Go to predefined position, Set G10, or Set axis offsets ]: + + uint8_t rtn_res = (uint8_t)STATUS_OK; + switch(gc_block.non_modal_command) { + case NON_MODAL_SET_COORDINATE_DATA: + settings_write_coord_data(coord_select,parameter_data); + // Update system coordinate system if currently active. + if (gc_state.modal.coord_select == coord_select) { memcpy(gc_state.coord_system,parameter_data,sizeof(parameter_data)); } + break; + case NON_MODAL_GO_HOME_0: case NON_MODAL_GO_HOME_1: + // Move to intermediate position before going home. Obeys current coordinate system and offsets + // and absolute and incremental modes. + if (axis_command) { + #ifdef USE_LINE_NUMBERS + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, false, gc_state.line_number); + #else + rtn_res= (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, false); + #endif + } + #ifdef USE_LINE_NUMBERS + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, parameter_data, gc_state.feed_rate, false, gc_state.line_number); + #else + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, parameter_data, gc_state.feed_rate, false); + #endif + memcpy(gc_state.position, parameter_data, sizeof(parameter_data)); + break; + case NON_MODAL_SET_HOME_0: + settings_write_coord_data(SETTING_INDEX_G28,gc_state.position); + break; + case NON_MODAL_SET_HOME_1: + settings_write_coord_data(SETTING_INDEX_G30,gc_state.position); + break; + case NON_MODAL_SET_COORDINATE_OFFSET: + memcpy(gc_state.coord_offset,gc_block.values.xyz,sizeof(gc_block.values.xyz)); + break; + case NON_MODAL_RESET_COORDINATE_OFFSET: + clear_vector(gc_state.coord_offset); // Disable G92 offsets by zeroing offset vector. + break; + } + + + // [20. Motion modes ]: + // NOTE: Commands G10,G28,G30,G92 lock out and prevent axis words from use in motion modes. + // Enter motion modes only if there are axis words or a motion mode command word in the block. + gc_state.modal.motion = gc_block.modal.motion; + if (gc_state.modal.motion != MOTION_MODE_NONE) { + if (axis_command == AXIS_COMMAND_MOTION_MODE) { + switch (gc_state.modal.motion) { + case MOTION_MODE_SEEK: + #ifdef USE_LINE_NUMBERS + rtn_res = (uint8_t)mc_line(MOTION_MODE_SEEK, gc_block.values.xyz, gc_state.feed_rate, false, gc_state.line_number); + #else + rtn_res = (uint8_t)mc_line(MOTION_MODE_SEEK, gc_block.values.xyz, gc_state.feed_rate, false); + #endif + break; + case MOTION_MODE_LINEAR: + #ifdef USE_LINE_NUMBERS + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, gc_state.line_number); + #else + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR,gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate); + #endif + break; + case MOTION_MODE_CW_ARC: + #ifdef USE_LINE_NUMBERS + mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, + gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, true, gc_state.line_number); + #else + mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, + gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, true); + #endif + break; + case MOTION_MODE_CCW_ARC: + #ifdef USE_LINE_NUMBERS + mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, + gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, false, gc_state.line_number); + #else + mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, + gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, false); + #endif + break; + case MOTION_MODE_PROBE_TOWARD: + // NOTE: gc_block.values.xyz is returned from mc_probe_cycle with the updated position value. So + // upon a successful probing cycle, the machine position and the returned value should be the same. + #ifdef USE_LINE_NUMBERS + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, false, gc_state.line_number); + #else + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, false); + #endif + break; + case MOTION_MODE_PROBE_TOWARD_NO_ERROR: + #ifdef USE_LINE_NUMBERS + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, true, gc_state.line_number); + #else + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, true); + #endif + break; + case MOTION_MODE_PROBE_AWAY: + #ifdef USE_LINE_NUMBERS + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, false, gc_state.line_number); + #else + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, false); + #endif + break; + case MOTION_MODE_PROBE_AWAY_NO_ERROR: + #ifdef USE_LINE_NUMBERS + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, true, gc_state.line_number); + #else + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, true); + #endif + } + + // As far as the parser is concerned, the position is now == target. In reality the + // motion control system might still be processing the action and the real tool position + // in any intermediate location. + memcpy(gc_state.position, gc_block.values.xyz, sizeof(gc_block.values.xyz)); // gc_state.position[] = gc_block.values.xyz[] + } + } + + // [21. Program flow ]: + // M0,M1,M2,M30: Perform non-running program flow actions. During a program pause, the buffer may + // refill and can only be resumed by the cycle start run-time command. + gc_state.modal.program_flow = gc_block.modal.program_flow; + if (gc_state.modal.program_flow) { + protocol_buffer_synchronize(); // Sync and finish all remaining buffered motions before moving on. + if (gc_state.modal.program_flow == PROGRAM_FLOW_PAUSED) { + if (sys.state != STATE_CHECK_MODE) { + bit_true_atomic(sys_rt_exec_state, EXEC_FEED_HOLD); // Use feed hold for program pause. + protocol_execute_realtime(); // Execute suspend. + } + } else { // == PROGRAM_FLOW_COMPLETED + // Upon program complete, only a subset of g-codes reset to certain defaults, according to + // LinuxCNC's program end descriptions and testing. Only modal groups [G-code 1,2,3,5,7,12] + // and [M-code 7,8,9] reset to [G1,G17,G90,G94,G40,G54,M5,M9,M48]. The remaining modal groups + // [G-code 4,6,8,10,13,14,15] and [M-code 4,5,6] and the modal words [F,S,T,H] do not reset. + gc_state.modal.motion = MOTION_MODE_LINEAR; + gc_state.modal.plane_select = PLANE_SELECT_XY; + gc_state.modal.distance = DISTANCE_MODE_ABSOLUTE; + gc_state.modal.feed_rate = FEED_RATE_MODE_UNITS_PER_MIN; + // gc_state.modal.cutter_comp = CUTTER_COMP_DISABLE; // Not supported. + gc_state.modal.coord_select = 0; // G54 + gc_state.modal.spindle = SPINDLE_DISABLE; + gc_state.modal.coolant = COOLANT_DISABLE; + // gc_state.modal.override = OVERRIDE_DISABLE; // Not supported. + + // Execute coordinate change and spindle/coolant stop. + if (sys.state != STATE_CHECK_MODE) { + if (!(settings_read_coord_data(gc_state.modal.coord_select,coordinate_data))) { FAIL(STATUS_SETTING_READ_FAIL); } + memcpy(gc_state.coord_system,coordinate_data,sizeof(coordinate_data)); + spindle_stop(); + coolant_stop(); + } + + report_feedback_message(MESSAGE_PROGRAM_END); + } + gc_state.modal.program_flow = PROGRAM_FLOW_RUNNING; // Reset program flow. + } + + // TODO: % to denote start of program. + return (rtn_res); +} + + +/* + Not supported: + + - Canned cycles + - Tool radius compensation + - A,B,C-axes + - Evaluation of expressions + - Variables + - Override control (TBD) + - Tool changes + - Switches + + (*) Indicates optional parameter, enabled through config.h and re-compile + group 0 = {G92.2, G92.3} (Non modal: Cancel and re-enable G92 offsets) + group 1 = {G81 - G89} (Motion modes: Canned cycles) + group 4 = {M1} (Optional stop, ignored) + group 6 = {M6} (Tool change) + group 7 = {G41, G42} cutter radius compensation (G40 is supported) + group 8 = {G43} tool length offset (G43.1/G49 are supported) + group 8 = {*M7} enable mist coolant (* Compile-option) + group 9 = {M48, M49} enable/disable feed and speed override switches + group 10 = {G98, G99} return mode canned cycles + group 13 = {G61.1, G64} path control mode (G61 is supported) +*/ diff --git a/src/gcode.h b/src/gcode.h new file mode 100755 index 0000000..9a289af --- /dev/null +++ b/src/gcode.h @@ -0,0 +1,212 @@ +/* + gcode.h - rs274/ngc parser. + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef gcode_h +#define gcode_h + + +// Define modal group internal numbers for checking multiple command violations and tracking the +// type of command that is called in the block. A modal group is a group of g-code commands that are +// mutually exclusive, or cannot exist on the same line, because they each toggle a state or execute +// a unique motion. These are defined in the NIST RS274-NGC v3 g-code standard, available online, +// and are similar/identical to other g-code interpreters by manufacturers (Haas,Fanuc,Mazak,etc). +// NOTE: Modal group define values must be sequential and starting from zero. +#define MODAL_GROUP_G0 0 // [G4,G10,G28,G28.1,G30,G30.1,G53,G92,G92.1] Non-modal +#define MODAL_GROUP_G1 1 // [G0,G1,G2,G3,G38.2,G38.3,G38.4,G38.5,G80] Motion +#define MODAL_GROUP_G2 2 // [G17,G18,G19] Plane selection +#define MODAL_GROUP_G3 3 // [G90,G91] Distance mode +#define MODAL_GROUP_G4 4 // [G91.1] Arc IJK distance mode +#define MODAL_GROUP_G5 5 // [G93,G94] Feed rate mode +#define MODAL_GROUP_G6 6 // [G20,G21] Units +#define MODAL_GROUP_G7 7 // [G40] Cutter radius compensation mode. G41/42 NOT SUPPORTED. +#define MODAL_GROUP_G8 8 // [G43.1,G49] Tool length offset +#define MODAL_GROUP_G12 9 // [G54,G55,G56,G57,G58,G59] Coordinate system selection +#define MODAL_GROUP_G13 10 // [G61] Control mode + +#define MODAL_GROUP_M4 11 // [M0,M1,M2,M30] Stopping +#define MODAL_GROUP_M7 12 // [M3,M4,M5] Spindle turning +#define MODAL_GROUP_M8 13 // [M7,M8,M9] Coolant control + +// #define OTHER_INPUT_F 14 +// #define OTHER_INPUT_S 15 +// #define OTHER_INPUT_T 16 + +// Define command actions for within execution-type modal groups (motion, stopping, non-modal). Used +// internally by the parser to know which command to execute. + +// Modal Group G0: Non-modal actions +#define NON_MODAL_NO_ACTION 0 // (Default: Must be zero) +#define NON_MODAL_DWELL 1 // G4 +#define NON_MODAL_SET_COORDINATE_DATA 2 // G10 +#define NON_MODAL_GO_HOME_0 3 // G28 +#define NON_MODAL_SET_HOME_0 4 // G28.1 +#define NON_MODAL_GO_HOME_1 5 // G30 +#define NON_MODAL_SET_HOME_1 6 // G30.1 +#define NON_MODAL_ABSOLUTE_OVERRIDE 7 // G53 +#define NON_MODAL_SET_COORDINATE_OFFSET 8 // G92 +#define NON_MODAL_RESET_COORDINATE_OFFSET 9 //G92.1 + +// Modal Group G1: Motion modes +#define MOTION_MODE_SEEK 0 // G0 (Default: Must be zero) +#define MOTION_MODE_LINEAR 1 // G1 +#define MOTION_MODE_CW_ARC 2 // G2 +#define MOTION_MODE_CCW_ARC 3 // G3 +#define MOTION_MODE_PROBE_TOWARD 4 // G38.2 NOTE: G38.2, G38.3, G38.4, G38.5 must be sequential. See report_gcode_modes(). +#define MOTION_MODE_PROBE_TOWARD_NO_ERROR 5 // G38.3 +#define MOTION_MODE_PROBE_AWAY 6 // G38.4 +#define MOTION_MODE_PROBE_AWAY_NO_ERROR 7 // G38.5 +#define MOTION_MODE_NONE 8 // G80 + +// Modal Group G2: Plane select +#define PLANE_SELECT_XY 0 // G17 (Default: Must be zero) +#define PLANE_SELECT_ZX 1 // G18 +#define PLANE_SELECT_YZ 2 // G19 + +// Modal Group G3: Distance mode +#define DISTANCE_MODE_ABSOLUTE 0 // G90 (Default: Must be zero) +#define DISTANCE_MODE_INCREMENTAL 1 // G91 + +// Modal Group G4: Arc IJK distance mode +#define DISTANCE_ARC_MODE_INCREMENTAL 0 // G91.1 (Default: Must be zero) + +// Modal Group M4: Program flow +#define PROGRAM_FLOW_RUNNING 0 // (Default: Must be zero) +#define PROGRAM_FLOW_PAUSED 1 // M0, M1 +#define PROGRAM_FLOW_COMPLETED 2 // M2, M30 + +// Modal Group G5: Feed rate mode +#define FEED_RATE_MODE_UNITS_PER_MIN 0 // G94 (Default: Must be zero) +#define FEED_RATE_MODE_INVERSE_TIME 1 // G93 + +// Modal Group G6: Units mode +#define UNITS_MODE_MM 0 // G21 (Default: Must be zero) +#define UNITS_MODE_INCHES 1 // G20 + +// Modal Group G7: Cutter radius compensation mode +#define CUTTER_COMP_DISABLE 0 // G40 (Default: Must be zero) + +// Modal Group G13: Control mode +#define CONTROL_MODE_EXACT_PATH 0 // G61 (Default: Must be zero) + +// Modal Group M7: Spindle control +#define SPINDLE_DISABLE 0 // M5 (Default: Must be zero) +#define SPINDLE_ENABLE_CW 1 // M3 +#define SPINDLE_ENABLE_CCW 2 // M4 + +// Modal Group M8: Coolant control +#define COOLANT_DISABLE 0 // M9 (Default: Must be zero) +#define COOLANT_MIST_ENABLE 1 // M7 +#define COOLANT_FLOOD_ENABLE 2 // M8 + +// Modal Group G8: Tool length offset +#define TOOL_LENGTH_OFFSET_CANCEL 0 // G49 (Default: Must be zero) +#define TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC 1 // G43.1 + +// Modal Group G12: Active work coordinate system +// N/A: Stores coordinate system value (54-59) to change to. + + +// Define parameter word mapping. +#define WORD_F 0 +#define WORD_I 1 +#define WORD_J 2 +#define WORD_K 3 +#define WORD_L 4 +#define WORD_N 5 +#define WORD_P 6 +#define WORD_R 7 +#define WORD_S 8 +#define WORD_T 9 +#define WORD_X 10 +#define WORD_Y 11 +#define WORD_Z 12 + + +// NOTE: When this struct is zeroed, the above defines set the defaults for the system. +typedef struct { + uint8_t motion; // {G0,G1,G2,G3,G38.2,G80} + uint8_t feed_rate; // {G93,G94} + uint8_t units; // {G20,G21} + uint8_t distance; // {G90,G91} + // uint8_t distance_arc; // {G91.1} NOTE: Don't track. Only default supported. + uint8_t plane_select; // {G17,G18,G19} + // uint8_t cutter_comp; // {G40} NOTE: Don't track. Only default supported. + uint8_t tool_length; // {G43.1,G49} + uint8_t coord_select; // {G54,G55,G56,G57,G58,G59} + // uint8_t control; // {G61} NOTE: Don't track. Only default supported. + uint8_t program_flow; // {M0,M1,M2,M30} + uint8_t coolant; // {M7,M8,M9} + uint8_t spindle; // {M3,M4,M5} +} gc_modal_t; + +typedef struct { + float f; // Feed + float ijk[3]; // I,J,K Axis arc offsets + uint8_t l; // G10 or canned cycles parameters + int32_t n; // Line number + float p; // G10 or dwell parameters + // float q; // G82 peck drilling + float r; // Arc radius + float s; // Spindle speed + uint8_t t; // Tool selection + float xyz[3]; // X,Y,Z Translational axes +} gc_values_t; + + +typedef struct { + gc_modal_t modal; + + float spindle_speed; // RPM + float feed_rate; // Millimeters/min + uint8_t tool; // Tracks tool number. NOT USED. + int32_t line_number; // Last line number sent + + float position[N_AXIS]; // Where the interpreter considers the tool to be at this point in the code + + float coord_system[N_AXIS]; // Current work coordinate system (G54+). Stores offset from absolute machine + // position in mm. Loaded from EEPROM when called. + float coord_offset[N_AXIS]; // Retains the G92 coordinate offset (work coordinates) relative to + // machine zero in mm. Non-persistent. Cleared upon reset and boot. + float tool_length_offset; // Tracks tool length offset value when enabled. +} parser_state_t; +extern parser_state_t gc_state; + +typedef struct { +// uint16_t command_words; // NOTE: If this bitflag variable fills, G and M words can be separated. +// uint16_t value_words; + + uint8_t non_modal_command; + gc_modal_t modal; + gc_values_t values; + +} parser_block_t; +extern parser_block_t gc_block; + +// Initialize the parser +void gc_init(); + +// Execute one block of rs275/ngc/g-code +uint8_t gc_execute_line(char *line); + +// Set g-code parser position. Input in steps. +void gc_sync_position(); + +#endif diff --git a/src/grbl.h b/src/grbl.h new file mode 100755 index 0000000..300f172 --- /dev/null +++ b/src/grbl.h @@ -0,0 +1,62 @@ +/* + grbl.h - main Grbl include file + Part of Grbl + + Copyright (c) 2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef grbl_h +#define grbl_h + +// Grbl versioning system +#define GRBL_VERSION "0.9j" +#define GRBL_VERSION_BUILD "20160726" + +// Define standard libraries used by Grbl. +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Define the Grbl system include files. NOTE: Do not alter organization. +#include "config.h" +#include "nuts_bolts.h" +#include "settings.h" +#include "system.h" +#include "defaults.h" +#include "cpu_map.h" +#include "coolant_control.h" +#include "eeprom.h" +#include "gcode.h" +#include "limits.h" +#include "motion_control.h" +#include "planner.h" +#include "print.h" +#include "probe.h" +#include "protocol.h" +#include "report.h" +#include "serial.h" +#include "spindle_control.h" +#include "stepper.h" + +#endif diff --git a/src/grblUpload/grblUpload.ino b/src/grblUpload/grblUpload.ino new file mode 100755 index 0000000..8ac87a7 --- /dev/null +++ b/src/grblUpload/grblUpload.ino @@ -0,0 +1,29 @@ +/*********************************************************************** +This sketch compiles and uploads Grbl to your 328p-based Arduino! + +To use: +- First make sure you have imported Grbl source code into your Arduino + IDE. There are details on our Github website on how to do this. + +- Select your Arduino Board and Serial Port in the Tools drop-down menu. + NOTE: Grbl only officially supports 328p-based Arduinos, like the Uno. + Using other boards will likely not work! + +- Then just click 'Upload'. That's it! + +For advanced users: + If you'd like to see what else Grbl can do, there are some additional + options for customization and features you can enable or disable. + Navigate your file system to where the Arduino IDE has stored the Grbl + source code files, open the 'config.h' file in your favorite text + editor. Inside are dozens of feature descriptions and #defines. Simply + comment or uncomment the #defines or alter their assigned values, save + your changes, and then click 'Upload' here. + +Copyright (c) 2015 Sungeun K. Jeon +Released under the MIT-license. See license.txt for details. +***********************************************************************/ + +#include "grbl.h" + +// Do not alter this file! \ No newline at end of file diff --git a/src/limits.c b/src/limits.c new file mode 100755 index 0000000..7c3680a --- /dev/null +++ b/src/limits.c @@ -0,0 +1,370 @@ +/* + limits.c - code pertaining to limit-switches and performing the homing cycle + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +// Homing axis search distance multiplier. Computed by this value times the cycle travel. +#ifndef HOMING_AXIS_SEARCH_SCALAR + #define HOMING_AXIS_SEARCH_SCALAR 1.5 // Must be > 1 to ensure limit switch will be engaged. +#endif +#ifndef HOMING_AXIS_LOCATE_SCALAR + #define HOMING_AXIS_LOCATE_SCALAR 5.0 // Must be > 1 to ensure limit switch is cleared. +#endif + +void limits_init() +{ + LIMIT_DDR &= ~(LIMIT_MASK); // Set as input pins + + #ifdef DISABLE_LIMIT_PIN_PULL_UP + LIMIT_PORT &= ~(LIMIT_MASK); // Normal low operation. Requires external pull-down. + #else + LIMIT_PORT |= (LIMIT_MASK); // Enable internal pull-up resistors. Normal high operation. + #endif + + if (bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)) { + LIMIT_PCMSK |= LIMIT_MASK; // Enable specific pins of the Pin Change Interrupt + PCICR |= (1 << LIMIT_INT); // Enable Pin Change Interrupt + } else { + limits_disable(); + } + + #ifdef ENABLE_SOFTWARE_DEBOUNCE + MCUSR &= ~(1< 0); + + // The active cycle axes should now be homed and machine limits have been located. By + // default, Grbl defines machine space as all negative, as do most CNCs. Since limit switches + // can be on either side of an axes, check and set axes machine zero appropriately. Also, + // set up pull-off maneuver from axes limit switches that have been homed. This provides + // some initial clearance off the switches and should also help prevent them from falsely + // triggering when hard limits are enabled or when more than one axes shares a limit pin. + int32_t set_axis_position; + // Set machine positions for homed limit switches. Don't update non-homed axes. + for (idx=0; idx -settings.max_travel[idx]) { sys.soft_limit = true; } + } else { + if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { sys.soft_limit = true; } + } + #else + // NOTE: max_travel is stored as negative + if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { sys.soft_limit = true; } + #endif + + if (sys.soft_limit) { + // Force feed hold if cycle is active. All buffered blocks are guaranteed to be within + // workspace volume so just come to a controlled stop so position is not lost. When complete + // enter alarm mode. + if (sys.state == STATE_CYCLE) { + bit_true_atomic(sys_rt_exec_state, EXEC_FEED_HOLD); + do { + protocol_execute_realtime(); + if (sys.abort) { return; } + } while ( sys.state != STATE_IDLE ); + } + + mc_reset(); // Issue system reset and ensure spindle and coolant are shutdown. + bit_true_atomic(sys_rt_exec_alarm, (EXEC_ALARM_SOFT_LIMIT|EXEC_CRITICAL_EVENT)); // Indicate soft limit critical event + protocol_execute_realtime(); // Execute to enter critical event loop and system abort + return; + } + } +} diff --git a/src/limits.h b/src/limits.h new file mode 100755 index 0000000..74512ce --- /dev/null +++ b/src/limits.h @@ -0,0 +1,41 @@ +/* + limits.h - code pertaining to limit-switches and performing the homing cycle + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef limits_h +#define limits_h + + +// Initialize the limits module +void limits_init(); + +// Disables hard limits. +void limits_disable(); + +// Returns limit state as a bit-wise uint8 variable. +uint8_t limits_get_state(); + +// Perform one portion of the homing cycle based on the input settings. +void limits_go_home(uint8_t cycle_mask); + +// Check for soft limit violations +void limits_soft_check(float *target); + +#endif \ No newline at end of file diff --git a/src/main.c b/src/main.c new file mode 100755 index 0000000..b91079b --- /dev/null +++ b/src/main.c @@ -0,0 +1,97 @@ +/* + main.c - An embedded CNC Controller with rs274/ngc (g-code) support + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +// Declare system global variable structure +system_t sys; + +#include "uarm_swift.h" + + +int main(void) +{ + // Initialize system upon power-up. + serial_init(); // Setup serial baud rate and interrupts + settings_init(); // Load Grbl settings from EEPROM + stepper_init(); // Configure stepper pins and interrupt timers + system_init(); // Configure pinout pins and pin-change interrupt + + uarm_swift_init(); + + memset(&sys, 0, sizeof(system_t)); // Clear all system variables + sys.abort = true; // Set abort to complete initialization + sei(); // Enable interrupts + + // Check for power-up and set system alarm if homing is enabled to force homing cycle + // by setting Grbl's alarm state. Alarm locks out all g-code commands, including the + // startup scripts, but allows access to settings and internal commands. Only a homing + // cycle '$H' or kill alarm locks '$X' will disable the alarm. + // NOTE: The startup script will run after successful completion of the homing cycle, but + // not after disabling the alarm locks. Prevents motion startup blocks from crashing into + // things uncontrollably. Very bad. + #ifdef HOMING_INIT_LOCK + if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { sys.state = STATE_ALARM; } + #endif + + // Force Grbl into an ALARM state upon a power-cycle or hard reset. + #ifdef FORCE_INITIALIZATION_ALARM + sys.state = STATE_ALARM; + #endif + + // Grbl initialization loop upon power-up or a system abort. For the latter, all processes + // will return to this loop to be cleanly re-initialized. + for(;;) { + + // TODO: Separate configure task that require interrupts to be disabled, especially upon + // a system abort and ensuring any active interrupts are cleanly reset. + + // Reset Grbl primary systems. + serial_reset_read_buffer(); // Clear serial read buffer + gc_init(); // Set g-code parser to default state + spindle_init(); + coolant_init(); + limits_init(); + probe_init(); + plan_reset(); // Clear block buffer and planner variables + st_reset(); // Clear stepper subsystem variables. + + // Sync cleared gcode and planner positions to current system position. + plan_sync_position(); + gc_sync_position(); + + // Reset system variables. + sys.abort = false; + sys_rt_exec_state = 0; + sys_rt_exec_alarm = 0; + sys.suspend = false; + sys.soft_limit = false; + + // Start Grbl main loop. Processes program inputs and executes them. + protocol_main_loop(); + + } + return 0; /* Never reached */ +} + + + diff --git a/src/motion_control.c b/src/motion_control.c new file mode 100755 index 0000000..4ac6d8c --- /dev/null +++ b/src/motion_control.c @@ -0,0 +1,446 @@ +/* + motion_control.c - high level interface for issuing motion commands + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + Copyright (c) 2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include "uarm_protocol.h" +#include "uarm_swift.h" +#include "uarm_coord_convert.h" + +// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second +// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in +// (1 minute)/feed_rate time. +// NOTE: This is the primary gateway to the grbl planner. All line motions, including arc line +// segments, must pass through this routine before being passed to the planner. The seperation of +// mc_line and plan_buffer_line is done primarily to place non-planner-type functions from being +// in the planner and to let backlash compensation or canned cycle integration simple and direct. +#ifdef USE_LINE_NUMBERS + uint8_t mc_line(uint8_t mode, float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number) +#else + uint8_t mc_line(uint8_t mode, float *target, float feed_rate, uint8_t invert_feed_rate) +#endif +{ + + // If enabled, check for soft limit violations. Placed here all line motions are picked up + // from everywhere in Grbl. + if (bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)) { limits_soft_check(target); } + + // If in check gcode mode, prevent motion by blocking planner. Soft limits still work. + if (sys.state == STATE_CHECK_MODE) { return; } + + // NOTE: Backlash compensation may be installed here. It will need direction info to track when + // to insert a backlash line motion(s) before the intended line motion and will require its own + // plan_check_full_buffer() and check for system abort loop. Also for position reporting + // backlash steps will need to be also tracked, which will need to be kept at a system level. + // There are likely some other things that will need to be tracked as well. However, we feel + // that backlash compensation should NOT be handled by Grbl itself, because there are a myriad + // of ways to implement it and can be effective or ineffective for different CNC machines. This + // would be better handled by the interface as a post-processor task, where the original g-code + // is translated and inserts backlash motions that best suits the machine. + // NOTE: Perhaps as a middle-ground, all that needs to be sent is a flag or special command that + // indicates to Grbl what is a backlash compensation motion, so that Grbl executes the move but + // doesn't update the machine position values. Since the position values used by the g-code + // parser and planner are separate from the system machine positions, this is doable. + + // If the buffer is full: good! That means we are well ahead of the robot. + // Remain in this loop until there is room in the buffer. + unsigned int divide_numbers = 0; + float current_coord[3]; + float final_angle[3]; + + float x= target[X_AXIS], y= target[Y_AXIS], z = target[Z_AXIS]; + + coord_effect2arm( &x, &y, &z ); // calculate the effect offset + coord_to_angle( x, y, z, + &final_angle[X_AXIS], &final_angle[Y_AXIS], &final_angle[Z_AXIS] ); // calculate final angle + +/* char l_str[20], r_str[20], b_str[20]; + dtostrf( final_angle[X_AXIS], 5, 4, l_str ); + dtostrf( final_angle[Y_AXIS], 5, 4, r_str ); + dtostrf( final_angle[Z_AXIS], 5, 4, b_str ); + + DB_PRINT_STR( "final_angle: %s, %s, %s\r\n", l_str, r_str, b_str ); */ + + if( is_angle_legal( final_angle[X_AXIS], final_angle[Y_AXIS], final_angle[Z_AXIS] ) == false ){ // check the angle + //DB_PRINT_STR( "E22 position cnan't reach\n" ); + //uarm.coord_error_flag = true; + return UARM_COORD_ERROR; + } + + step_to_coord( uarm.target_step[X_AXIS], uarm.target_step[Y_AXIS], uarm.target_step[Z_AXIS], + ¤t_coord[X_AXIS], ¤t_coord[Y_AXIS], ¤t_coord[Z_AXIS]); // calculate the current coord + settings_init(); + switch( mode ){ + case MOTION_MODE_SEEK: // 100 ){ feed_rate = 100; } + divide_numbers = sqrt((x - current_coord[X_AXIS])*(x - current_coord[X_AXIS]) + // unit is mm + (y - current_coord[Y_AXIS])*(y - current_coord[Y_AXIS]) + + (z - current_coord[Z_AXIS])*(z - current_coord[Z_AXIS])) * 30 / feed_rate; + + if( divide_numbers < 10 ){ divide_numbers = 10; } + + float accel = (0.005+feed_rate*0.02); + settings.acceleration[X_AXIS] = accel * 60 * 60; + settings.acceleration[Y_AXIS] = accel * 60 * 60; + settings.acceleration[Z_AXIS] = accel * 60 * 60; + if( settings.acceleration[Z_AXIS] >= 1.3*60*60 ){ + settings.acceleration[Z_AXIS] = 1.3 * 60 * 60; + } + break; + } + + DB_PRINT_STR( "divide num : %d\r\n", divide_numbers ); + float delta_coord[3]; + delta_coord[X_AXIS] = (x - current_coord[X_AXIS]) / divide_numbers; // calculate delta coord + delta_coord[Y_AXIS] = (y - current_coord[Y_AXIS]) / divide_numbers; + delta_coord[Z_AXIS] = (z - current_coord[Z_AXIS]) / divide_numbers; + + float final_coord[3]; + float final_step[3]; + for( int i = 1; i <= divide_numbers; i++ ){ + final_coord[X_AXIS] = current_coord[X_AXIS] + delta_coord[X_AXIS] * i; + final_coord[Y_AXIS] = current_coord[Y_AXIS] + delta_coord[Y_AXIS] * i; + final_coord[Z_AXIS] = current_coord[Z_AXIS] + delta_coord[Z_AXIS] * i; + + uarm.coord_x = final_coord[X_AXIS]; + uarm.coord_y = final_coord[Y_AXIS]; + uarm.coord_z = final_coord[Z_AXIS]; + + coord_to_step( final_coord[X_AXIS], final_coord[Y_AXIS], final_coord[Z_AXIS], + &final_step[X_AXIS], &final_step[Y_AXIS], &final_step[Z_AXIS] ); + do { + protocol_execute_realtime(); // Check for any run-time commands + //report_parse_result(); + if (sys.abort) { return UARM_SYS_ABORT; } // Bail, if system abort. + if ( plan_check_full_buffer() ) { protocol_auto_cycle_start(); } // Auto-cycle start when buffer is full. + else { break; } + } while (1); + + uarm.target_step[X_AXIS] = final_step[X_AXIS]; + uarm.target_step[Y_AXIS] = final_step[Y_AXIS]; + uarm.target_step[Z_AXIS] = final_step[Z_AXIS]; + + final_step[X_AXIS] = (final_step[X_AXIS]) / (settings.steps_per_mm[X_AXIS]); + final_step[Y_AXIS] = (final_step[Y_AXIS]) / (settings.steps_per_mm[Y_AXIS]); + final_step[Z_AXIS] = (final_step[Z_AXIS]) / (settings.steps_per_mm[Z_AXIS]); + + plan_buffer_line(final_step, feed_rate, invert_feed_rate); + + //DB_PRINT_STR( "%d %d %d\r\n", final_step[X_AXIS], final_step[Y_AXIS], final_step[Z_AXIS] ); + uarm.run_flag = true; + + } + return STATUS_OK; +} + + +// Execute an arc in offset mode format. position == current xyz, target == target xyz, +// offset == offset from current xyz, axis_X defines circle plane in tool space, axis_linear is +// the direction of helical travel, radius == circle radius, isclockwise boolean. Used +// for vector transformation direction. +// The arc is approximated by generating a huge number of tiny, linear segments. The chordal tolerance +// of each segment is configured in settings.arc_tolerance, which is defined to be the maximum normal +// distance from segment to the circle when the end points both lie on the circle. +#ifdef USE_LINE_NUMBERS + void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, + uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc, int32_t line_number) +#else + void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, + uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc) +#endif +{ + float center_axis0 = position[axis_0] + offset[axis_0]; + float center_axis1 = position[axis_1] + offset[axis_1]; + float r_axis0 = -offset[axis_0]; // Radius vector from center to current location + float r_axis1 = -offset[axis_1]; + float rt_axis0 = target[axis_0] - center_axis0; + float rt_axis1 = target[axis_1] - center_axis1; + + // CCW angle between position and target from circle center. Only one atan2() trig computation required. + float angular_travel = atan2(r_axis0*rt_axis1-r_axis1*rt_axis0, r_axis0*rt_axis0+r_axis1*rt_axis1); + if (is_clockwise_arc) { // Correct atan2 output per direction + if (angular_travel >= -ARC_ANGULAR_TRAVEL_EPSILON) { angular_travel -= 2*M_PI; } + } else { + if (angular_travel <= ARC_ANGULAR_TRAVEL_EPSILON) { angular_travel += 2*M_PI; } + } + + // NOTE: Segment end points are on the arc, which can lead to the arc diameter being smaller by up to + // (2x) settings.arc_tolerance. For 99% of users, this is just fine. If a different arc segment fit + // is desired, i.e. least-squares, midpoint on arc, just change the mm_per_arc_segment calculation. + // For the intended uses of Grbl, this value shouldn't exceed 2000 for the strictest of cases. + uint16_t segments = floor(fabs(0.5*angular_travel*radius)/ + sqrt(settings.arc_tolerance*(2*radius - settings.arc_tolerance)) ); + + if (segments) { + // Multiply inverse feed_rate to compensate for the fact that this movement is approximated + // by a number of discrete segments. The inverse feed_rate should be correct for the sum of + // all segments. + if (invert_feed_rate) { feed_rate *= segments; } + + float theta_per_segment = angular_travel/segments; + float linear_per_segment = (target[axis_linear] - position[axis_linear])/segments; + + /* Vector rotation by transformation matrix: r is the original vector, r_T is the rotated vector, + and phi is the angle of rotation. Solution approach by Jens Geisler. + r_T = [cos(phi) -sin(phi); + sin(phi) cos(phi] * r ; + + For arc generation, the center of the circle is the axis of rotation and the radius vector is + defined from the circle center to the initial position. Each line segment is formed by successive + vector rotations. Single precision values can accumulate error greater than tool precision in rare + cases. So, exact arc path correction is implemented. This approach avoids the problem of too many very + expensive trig operations [sin(),cos(),tan()] which can take 100-200 usec each to compute. + + Small angle approximation may be used to reduce computation overhead further. A third-order approximation + (second order sin() has too much error) holds for most, if not, all CNC applications. Note that this + approximation will begin to accumulate a numerical drift error when theta_per_segment is greater than + ~0.25 rad(14 deg) AND the approximation is successively used without correction several dozen times. This + scenario is extremely unlikely, since segment lengths and theta_per_segment are automatically generated + and scaled by the arc tolerance setting. Only a very large arc tolerance setting, unrealistic for CNC + applications, would cause this numerical drift error. However, it is best to set N_ARC_CORRECTION from a + low of ~4 to a high of ~20 or so to avoid trig operations while keeping arc generation accurate. + + This approximation also allows mc_arc to immediately insert a line segment into the planner + without the initial overhead of computing cos() or sin(). By the time the arc needs to be applied + a correction, the planner should have caught up to the lag caused by the initial mc_arc overhead. + This is important when there are successive arc motions. + */ + // Computes: cos_T = 1 - theta_per_segment^2/2, sin_T = theta_per_segment - theta_per_segment^3/6) in ~52usec + float cos_T = 2.0 - theta_per_segment*theta_per_segment; + float sin_T = theta_per_segment*0.16666667*(cos_T + 4.0); + cos_T *= 0.5; + + float sin_Ti; + float cos_Ti; + float r_axisi; + uint16_t i; + uint8_t count = 0; + + for (i = 1; i 0) { + // NOTE: Check and execute realtime commands during dwell every <= DWELL_TIME_STEP milliseconds. + protocol_execute_realtime(); + if (sys.abort) { return; } + _delay_ms(DWELL_TIME_STEP); // Delay DWELL_TIME_STEP increment + } +} + + +// Perform homing cycle to locate and set machine zero. Only '$H' executes this command. +// NOTE: There should be no motions in the buffer and Grbl must be in an idle state before +// executing the homing cycle. This prevents incorrect buffered plans after homing. +void mc_homing_cycle() +{ + // Check and abort homing cycle, if hard limits are already enabled. Helps prevent problems + // with machines with limits wired on both ends of travel to one limit pin. + // TODO: Move the pin-specific LIMIT_PIN call to limits.c as a function. + #ifdef LIMITS_TWO_SWITCHES_ON_AXES + if (limits_get_state()) { + mc_reset(); // Issue system reset and ensure spindle and coolant are shutdown. + bit_true_atomic(sys_rt_exec_alarm, (EXEC_ALARM_HARD_LIMIT|EXEC_CRITICAL_EVENT)); + return; + } + #endif + + limits_disable(); // Disable hard limits pin change register for cycle duration + + // ------------------------------------------------------------------------------------- + // Perform homing routine. NOTE: Special motion case. Only system reset works. + + // Search to engage all axes limit switches at faster homing seek rate. + limits_go_home(HOMING_CYCLE_0); // Homing cycle 0 + #ifdef HOMING_CYCLE_1 + limits_go_home(HOMING_CYCLE_1); // Homing cycle 1 + #endif + #ifdef HOMING_CYCLE_2 + limits_go_home(HOMING_CYCLE_2); // Homing cycle 2 + #endif + + protocol_execute_realtime(); // Check for reset and set system abort. + if (sys.abort) { return; } // Did not complete. Alarm state set by mc_alarm. + + // Homing cycle complete! Setup system for normal operation. + // ------------------------------------------------------------------------------------- + + // Gcode parser position was circumvented by the limits_go_home() routine, so sync position now. + gc_sync_position(); + + // If hard limits feature enabled, re-enable hard limits pin change register after homing cycle. + limits_init(); +} + + +// Perform tool length probe cycle. Requires probe switch. +// NOTE: Upon probe failure, the program will be stopped and placed into ALARM state. +#ifdef USE_LINE_NUMBERS + void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, + uint8_t is_no_error, int32_t line_number) +#else + void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, + uint8_t is_no_error) +#endif +{ + // TODO: Need to update this cycle so it obeys a non-auto cycle start. + if (sys.state == STATE_CHECK_MODE) { return; } + + // Finish all queued commands and empty planner buffer before starting probe cycle. + protocol_buffer_synchronize(); + + // Initialize probing control variables + sys.probe_succeeded = false; // Re-initialize probe history before beginning cycle. + probe_configure_invert_mask(is_probe_away); + + // After syncing, check if probe is already triggered. If so, halt and issue alarm. + // NOTE: This probe initialization error applies to all probing cycles. + if ( probe_get_state() ) { // Check probe pin state. + bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_PROBE_FAIL); + protocol_execute_realtime(); + } + if (sys.abort) { return; } // Return if system reset has been issued. + + // Setup and queue probing motion. Auto cycle-start should not start the cycle. + #ifdef USE_LINE_NUMBERS + mc_line(1, target, feed_rate, invert_feed_rate, line_number); + #else + mc_line(1, target, feed_rate, invert_feed_rate); + #endif + + // Activate the probing state monitor in the stepper module. + sys_probe_state = PROBE_ACTIVE; + + // Perform probing cycle. Wait here until probe is triggered or motion completes. + bit_true_atomic(sys_rt_exec_state, EXEC_CYCLE_START); + do { + protocol_execute_realtime(); + if (sys.abort) { return; } // Check for system abort + } while (sys.state != STATE_IDLE); + + // Probing cycle complete! + + // Set state variables and error out, if the probe failed and cycle with error is enabled. + if (sys_probe_state == PROBE_ACTIVE) { + if (is_no_error) { memcpy(sys.probe_position, sys.position, sizeof(float)*N_AXIS); } + else { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_PROBE_FAIL); } + } else { + sys.probe_succeeded = true; // Indicate to system the probing cycle completed successfully. + } + sys_probe_state = PROBE_OFF; // Ensure probe state monitor is disabled. + protocol_execute_realtime(); // Check and execute run-time commands + if (sys.abort) { return; } // Check for system abort + + // Reset the stepper and planner buffers to remove the remainder of the probe motion. + st_reset(); // Reest step segment buffer. + plan_reset(); // Reset planner buffer. Zero planner positions. Ensure probing motion is cleared. + plan_sync_position(); // Sync planner position to current machine position. + + // TODO: Update the g-code parser code to not require this target calculation but uses a gc_sync_position() call. + // NOTE: The target[] variable updated here will be sent back and synced with the g-code parser. + system_convert_array_steps_to_mpos(target, sys.position); + + #ifdef MESSAGE_PROBE_COORDINATES + // All done! Output the probe position as message. + report_probe_parameters(); + #endif +} + + +// Method to ready the system to reset by setting the realtime reset command and killing any +// active processes in the system. This also checks if a system reset is issued while Grbl +// is in a motion state. If so, kills the steppers and sets the system alarm to flag position +// lost, since there was an abrupt uncontrolled deceleration. Called at an interrupt level by +// realtime abort command and hard limits. So, keep to a minimum. +void mc_reset() +{ + // Only this function can set the system reset. Helps prevent multiple kill calls. + if (bit_isfalse(sys_rt_exec_state, EXEC_RESET)) { + bit_true_atomic(sys_rt_exec_state, EXEC_RESET); + + // Kill spindle and coolant. + spindle_stop(); + coolant_stop(); + + // Kill steppers only if in any motion state, i.e. cycle, actively holding, or homing. + // NOTE: If steppers are kept enabled via the step idle delay setting, this also keeps + // the steppers enabled by avoiding the go_idle call altogether, unless the motion state is + // violated, by which, all bets are off. + if ((sys.state & (STATE_CYCLE | STATE_HOMING)) || (sys.suspend == SUSPEND_ENABLE_HOLD)) { + if (sys.state == STATE_HOMING) { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_HOMING_FAIL); } + else { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_ABORT_CYCLE); } + st_go_idle(); // Force kill steppers. Position has likely been lost. + } + } +} + diff --git a/src/motion_control.h b/src/motion_control.h new file mode 100755 index 0000000..2bb3ae5 --- /dev/null +++ b/src/motion_control.h @@ -0,0 +1,66 @@ +/* + motion_control.h - high level interface for issuing motion commands + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef motion_control_h +#define motion_control_h + + +#define HOMING_CYCLE_LINE_NUMBER -1 + +// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second +// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in +// (1 minute)/feed_rate time. +#ifdef USE_LINE_NUMBERS +uint8_t mc_line(uint8_t mode,float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number); +#else +uint8_t mc_line(uint8_t mode,float *target, float feed_rate, uint8_t invert_feed_rate); +#endif + +// Execute an arc in offset mode format. position == current xyz, target == target xyz, +// offset == offset from current xyz, axis_XXX defines circle plane in tool space, axis_linear is +// the direction of helical travel, radius == circle radius, is_clockwise_arc boolean. Used +// for vector transformation direction. +#ifdef USE_LINE_NUMBERS +void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, + uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc, int32_t line_number); +#else +void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, + uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc); +#endif + +// Dwell for a specific number of seconds +void mc_dwell(float seconds); + +// Perform homing cycle to locate machine zero. Requires limit switches. +void mc_homing_cycle(); + +// Perform tool length probe cycle. Requires probe switch. +#ifdef USE_LINE_NUMBERS +void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, + uint8_t is_no_error, int32_t line_number); +#else +void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, + uint8_t is_no_error); +#endif + +// Performs system reset. If in motion state, kills all motion and sets system alarm. +void mc_reset(); +#endif diff --git a/src/nuts_bolts.c b/src/nuts_bolts.c new file mode 100755 index 0000000..328af84 --- /dev/null +++ b/src/nuts_bolts.c @@ -0,0 +1,148 @@ +/* + nuts_bolts.c - Shared functions + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +#define MAX_INT_DIGITS 8 // Maximum number of digits in int32 (and float) + + +// Extracts a floating point value from a string. The following code is based loosely on +// the avr-libc strtod() function by Michael Stumpf and Dmitry Xmelkov and many freely +// available conversion method examples, but has been highly optimized for Grbl. For known +// CNC applications, the typical decimal value is expected to be in the range of E0 to E-4. +// Scientific notation is officially not supported by g-code, and the 'E' character may +// be a g-code word on some CNC systems. So, 'E' notation will not be recognized. +// NOTE: Thanks to Radu-Eosif Mihailescu for identifying the issues with using strtod(). +uint8_t read_float(char *line, uint8_t *char_counter, float *float_ptr) +{ + char *ptr; + if( char_counter == NULL ){ + ptr = line; + }else{ + ptr = line + *char_counter; + } + unsigned char c; + + // Grab first character and increment pointer. No spaces assumed in line. + c = *ptr++; + + // Capture initial positive/minus character + bool isnegative = false; + if (c == '-') { + isnegative = true; + c = *ptr++; + } else if (c == '+') { + c = *ptr++; + } + + // Extract number into fast integer. Track decimal in terms of exponent value. + uint32_t intval = 0; + int8_t exp = 0; + uint8_t ndigit = 0; + bool isdecimal = false; + while(1) { + c -= '0'; + if (c <= 9) { + ndigit++; + if (ndigit <= MAX_INT_DIGITS) { + if (isdecimal) { exp--; } + intval = (((intval << 2) + intval) << 1) + c; // intval*10 + c + } else { + if (!(isdecimal)) { exp++; } // Drop overflow digits + } + } else if (c == (('.'-'0') & 0xff) && !(isdecimal)) { + isdecimal = true; + } else { + break; + } + c = *ptr++; + } + + // Return if no digits have been read. + if (!ndigit) { return(false); }; + + // Convert integer into floating point. + float fval; + fval = (float)intval; + + // Apply decimal. Should perform no more than two floating point multiplications for the + // expected range of E0 to E-4. + if (fval != 0) { + while (exp <= -2) { + fval *= 0.01; + exp += 2; + } + if (exp < 0) { + fval *= 0.1; + } else if (exp > 0) { + do { + fval *= 10.0; + } while (--exp > 0); + } + } + + // Assign floating point value with correct sign. + if (isnegative) { + *float_ptr = -fval; + } else { + *float_ptr = fval; + } + + *char_counter = ptr - line - 1; // Set char_counter to next statement + + return(true); +} + + +// Delays variable defined milliseconds. Compiler compatibility fix for _delay_ms(), +// which only accepts constants in future compiler releases. +void delay_ms(uint16_t ms) +{ + while ( ms-- ) { _delay_ms(1); } +} + + +// Delays variable defined microseconds. Compiler compatibility fix for _delay_us(), +// which only accepts constants in future compiler releases. Written to perform more +// efficiently with larger delays, as the counter adds parasitic time in each iteration. +void delay_us(uint32_t us) +{ + while (us) { + if (us < 10) { + _delay_us(1); + us--; + } else if (us < 100) { + _delay_us(10); + us -= 10; + } else if (us < 1000) { + _delay_us(100); + us -= 100; + } else { + _delay_ms(1); + us -= 1000; + } + } +} + + +// Simple hypotenuse computation function. +float hypot_f(float x, float y) { return(sqrt(x*x + y*y)); } diff --git a/src/nuts_bolts.h b/src/nuts_bolts.h new file mode 100755 index 0000000..882d337 --- /dev/null +++ b/src/nuts_bolts.h @@ -0,0 +1,78 @@ +/* + nuts_bolts.h - Header file for shared definitions, variables, and functions + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef nuts_bolts_h +#define nuts_bolts_h + +#define false 0 +#define true 1 + +// Axis array index values. Must start with 0 and be continuous. +#define N_AXIS 3 // Number of axes +#define X_AXIS 0 // Axis indexing value. +#define Y_AXIS 1 +#define Z_AXIS 2 +// #define A_AXIS 3 + +// CoreXY motor assignments. DO NOT ALTER. +// NOTE: If the A and B motor axis bindings are changed, this effects the CoreXY equations. +#ifdef COREXY + #define A_MOTOR X_AXIS // Must be X_AXIS + #define B_MOTOR Y_AXIS // Must be Y_AXIS +#endif + +// Conversions +#define MM_PER_INCH (25.40) +#define INCH_PER_MM (0.0393701) +#define TICKS_PER_MICROSECOND (F_CPU/1000000) + +// Useful macros +#define clear_vector(a) memset(a, 0, sizeof(a)) +#define clear_vector_float(a) memset(a, 0.0, sizeof(float)*N_AXIS) +// #define clear_vector_long(a) memset(a, 0.0, sizeof(long)*N_AXIS) +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#define min(a,b) (((a) < (b)) ? (a) : (b)) + +// Bit field and masking macros +#define bit(n) (1 << n) +#define bit_true_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) |= (mask); SREG = sreg; } +#define bit_false_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) &= ~(mask); SREG = sreg; } +#define bit_toggle_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) ^= (mask); SREG = sreg; } +#define bit_true(x,mask) (x) |= (mask) +#define bit_false(x,mask) (x) &= ~(mask) +#define bit_istrue(x,mask) ((x & mask) != 0) +#define bit_isfalse(x,mask) ((x & mask) == 0) + +// Read a floating point value from a string. Line points to the input buffer, char_counter +// is the indexer pointing to the current character of the line, while float_ptr is +// a pointer to the result variable. Returns true when it succeeds +uint8_t read_float(char *line, uint8_t *char_counter, float *float_ptr); + +// Delays variable-defined milliseconds. Compiler compatibility fix for _delay_ms(). +void delay_ms(uint16_t ms); + +// Delays variable-defined microseconds. Compiler compatibility fix for _delay_us(). +void delay_us(uint32_t us); + +// Computes hypotenuse, avoiding avr-gcc's bloated version and the extra error checking. +float hypot_f(float x, float y); + +#endif diff --git a/src/planner.c b/src/planner.c new file mode 100755 index 0000000..5b54410 --- /dev/null +++ b/src/planner.c @@ -0,0 +1,457 @@ +/* + planner.c - buffers movement commands and manages the acceleration profile plan + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + Copyright (c) 2011 Jens Geisler + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + +#define SOME_LARGE_VALUE 1.0E+38 // Used by rapids and acceleration maximization calculations. Just needs + // to be larger than any feasible (mm/min)^2 or mm/sec^2 value. + +static plan_block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instructions +static uint8_t block_buffer_tail; // Index of the block to process now +static uint8_t block_buffer_head; // Index of the next block to be pushed +static uint8_t next_buffer_head; // Index of the next buffer head +static uint8_t block_buffer_planned; // Index of the optimally planned block + +// Define planner variables +typedef struct { + int32_t position[N_AXIS]; // The planner position of the tool in absolute steps. Kept separate + // from g-code position for movements requiring multiple line motions, + // i.e. arcs, canned cycles, and backlash compensation. + float previous_unit_vec[N_AXIS]; // Unit vector of previous path line segment + float previous_nominal_speed_sqr; // Nominal speed of previous path line segment +} planner_t; +static planner_t pl; + + +// Returns the index of the next block in the ring buffer. Also called by stepper segment buffer. +uint8_t plan_next_block_index(uint8_t block_index) +{ + block_index++; + if (block_index == BLOCK_BUFFER_SIZE) { block_index = 0; } + return(block_index); +} + + +// Returns the index of the previous block in the ring buffer +static uint8_t plan_prev_block_index(uint8_t block_index) +{ + if (block_index == 0) { block_index = BLOCK_BUFFER_SIZE; } + block_index--; + return(block_index); +} + + +/* PLANNER SPEED DEFINITION + +--------+ <- current->nominal_speed + / \ + current->entry_speed -> + \ + | + <- next->entry_speed (aka exit speed) + +-------------+ + time --> + + Recalculates the motion plan according to the following basic guidelines: + + 1. Go over every feasible block sequentially in reverse order and calculate the junction speeds + (i.e. current->entry_speed) such that: + a. No junction speed exceeds the pre-computed maximum junction speed limit or nominal speeds of + neighboring blocks. + b. A block entry speed cannot exceed one reverse-computed from its exit speed (next->entry_speed) + with a maximum allowable deceleration over the block travel distance. + c. The last (or newest appended) block is planned from a complete stop (an exit speed of zero). + 2. Go over every block in chronological (forward) order and dial down junction speed values if + a. The exit speed exceeds the one forward-computed from its entry speed with the maximum allowable + acceleration over the block travel distance. + + When these stages are complete, the planner will have maximized the velocity profiles throughout the all + of the planner blocks, where every block is operating at its maximum allowable acceleration limits. In + other words, for all of the blocks in the planner, the plan is optimal and no further speed improvements + are possible. If a new block is added to the buffer, the plan is recomputed according to the said + guidelines for a new optimal plan. + + To increase computational efficiency of these guidelines, a set of planner block pointers have been + created to indicate stop-compute points for when the planner guidelines cannot logically make any further + changes or improvements to the plan when in normal operation and new blocks are streamed and added to the + planner buffer. For example, if a subset of sequential blocks in the planner have been planned and are + bracketed by junction velocities at their maximums (or by the first planner block as well), no new block + added to the planner buffer will alter the velocity profiles within them. So we no longer have to compute + them. Or, if a set of sequential blocks from the first block in the planner (or a optimal stop-compute + point) are all accelerating, they are all optimal and can not be altered by a new block added to the + planner buffer, as this will only further increase the plan speed to chronological blocks until a maximum + junction velocity is reached. However, if the operational conditions of the plan changes from infrequently + used feed holds or feedrate overrides, the stop-compute pointers will be reset and the entire plan is + recomputed as stated in the general guidelines. + + Planner buffer index mapping: + - block_buffer_tail: Points to the beginning of the planner buffer. First to be executed or being executed. + - block_buffer_head: Points to the buffer block after the last block in the buffer. Used to indicate whether + the buffer is full or empty. As described for standard ring buffers, this block is always empty. + - next_buffer_head: Points to next planner buffer block after the buffer head block. When equal to the + buffer tail, this indicates the buffer is full. + - block_buffer_planned: Points to the first buffer block after the last optimally planned block for normal + streaming operating conditions. Use for planning optimizations by avoiding recomputing parts of the + planner buffer that don't change with the addition of a new block, as describe above. In addition, + this block can never be less than block_buffer_tail and will always be pushed forward and maintain + this requirement when encountered by the plan_discard_current_block() routine during a cycle. + + NOTE: Since the planner only computes on what's in the planner buffer, some motions with lots of short + line segments, like G2/3 arcs or complex curves, may seem to move slow. This is because there simply isn't + enough combined distance traveled in the entire buffer to accelerate up to the nominal speed and then + decelerate to a complete stop at the end of the buffer, as stated by the guidelines. If this happens and + becomes an annoyance, there are a few simple solutions: (1) Maximize the machine acceleration. The planner + will be able to compute higher velocity profiles within the same combined distance. (2) Maximize line + motion(s) distance per block to a desired tolerance. The more combined distance the planner has to use, + the faster it can go. (3) Maximize the planner buffer size. This also will increase the combined distance + for the planner to compute over. It also increases the number of computations the planner has to perform + to compute an optimal plan, so select carefully. The Arduino 328p memory is already maxed out, but future + ARM versions should have enough memory and speed for look-ahead blocks numbering up to a hundred or more. + +*/ +static void planner_recalculate() +{ + // Initialize block index to the last block in the planner buffer. + uint8_t block_index = plan_prev_block_index(block_buffer_head); + + // Bail. Can't do anything with one only one plan-able block. + if (block_index == block_buffer_planned) { return; } + + // Reverse Pass: Coarsely maximize all possible deceleration curves back-planning from the last + // block in buffer. Cease planning when the last optimal planned or tail pointer is reached. + // NOTE: Forward pass will later refine and correct the reverse pass to create an optimal plan. + float entry_speed_sqr; + plan_block_t *next; + plan_block_t *current = &block_buffer[block_index]; + + // Calculate maximum entry speed for last block in buffer, where the exit speed is always zero. + current->entry_speed_sqr = min( current->max_entry_speed_sqr, 2*current->acceleration*current->millimeters); + + block_index = plan_prev_block_index(block_index); + if (block_index == block_buffer_planned) { // Only two plannable blocks in buffer. Reverse pass complete. + // Check if the first block is the tail. If so, notify stepper to update its current parameters. + if (block_index == block_buffer_tail) { st_update_plan_block_parameters(); } + } else { // Three or more plan-able blocks + while (block_index != block_buffer_planned) { + next = current; + current = &block_buffer[block_index]; + block_index = plan_prev_block_index(block_index); + + // Check if next block is the tail block(=planned block). If so, update current stepper parameters. + if (block_index == block_buffer_tail) { st_update_plan_block_parameters(); } + + // Compute maximum entry speed decelerating over the current block from its exit speed. + if (current->entry_speed_sqr != current->max_entry_speed_sqr) { + entry_speed_sqr = next->entry_speed_sqr + 2*current->acceleration*current->millimeters; + if (entry_speed_sqr < current->max_entry_speed_sqr) { + current->entry_speed_sqr = entry_speed_sqr; + } else { + current->entry_speed_sqr = current->max_entry_speed_sqr; + } + } + } + } + + // Forward Pass: Forward plan the acceleration curve from the planned pointer onward. + // Also scans for optimal plan breakpoints and appropriately updates the planned pointer. + next = &block_buffer[block_buffer_planned]; // Begin at buffer planned pointer + block_index = plan_next_block_index(block_buffer_planned); + while (block_index != block_buffer_head) { + current = next; + next = &block_buffer[block_index]; + + // Any acceleration detected in the forward pass automatically moves the optimal planned + // pointer forward, since everything before this is all optimal. In other words, nothing + // can improve the plan from the buffer tail to the planned pointer by logic. + if (current->entry_speed_sqr < next->entry_speed_sqr) { + entry_speed_sqr = current->entry_speed_sqr + 2*current->acceleration*current->millimeters; + // If true, current block is full-acceleration and we can move the planned pointer forward. + if (entry_speed_sqr < next->entry_speed_sqr) { + next->entry_speed_sqr = entry_speed_sqr; // Always <= max_entry_speed_sqr. Backward pass sets this. + block_buffer_planned = block_index; // Set optimal plan pointer. + } + } + + // Any block set at its maximum entry speed also creates an optimal plan up to this + // point in the buffer. When the plan is bracketed by either the beginning of the + // buffer and a maximum entry speed or two maximum entry speeds, every block in between + // cannot logically be further improved. Hence, we don't have to recompute them anymore. + if (next->entry_speed_sqr == next->max_entry_speed_sqr) { block_buffer_planned = block_index; } + block_index = plan_next_block_index( block_index ); + } +} + + +void plan_reset() +{ + memset(&pl, 0, sizeof(planner_t)); // Clear planner struct + block_buffer_tail = 0; + block_buffer_head = 0; // Empty = tail + next_buffer_head = 1; // plan_next_block_index(block_buffer_head) + block_buffer_planned = 0; // = block_buffer_tail; +} + + +void plan_discard_current_block() +{ + if (block_buffer_head != block_buffer_tail) { // Discard non-empty buffer. + uint8_t block_index = plan_next_block_index( block_buffer_tail ); + // Push block_buffer_planned pointer, if encountered. + if (block_buffer_tail == block_buffer_planned) { block_buffer_planned = block_index; } + block_buffer_tail = block_index; + } +} + + +plan_block_t *plan_get_current_block() +{ + if (block_buffer_head == block_buffer_tail) { return(NULL); } // Buffer empty + return(&block_buffer[block_buffer_tail]); +} + + +float plan_get_exec_block_exit_speed() +{ + uint8_t block_index = plan_next_block_index(block_buffer_tail); + if (block_index == block_buffer_head) { return( 0.0 ); } + return( sqrt( block_buffer[block_index].entry_speed_sqr ) ); +} + + +// Returns the availability status of the block ring buffer. True, if full. +uint8_t plan_check_full_buffer() +{ + if (block_buffer_tail == next_buffer_head) { return(true); } + return(false); +} + + +/* Add a new linear movement to the buffer. target[N_AXIS] is the signed, absolute target position + in millimeters. Feed rate specifies the speed of the motion. If feed rate is inverted, the feed + rate is taken to mean "frequency" and would complete the operation in 1/feed_rate minutes. + All position data passed to the planner must be in terms of machine position to keep the planner + independent of any coordinate system changes and offsets, which are handled by the g-code parser. + NOTE: Assumes buffer is available. Buffer checks are handled at a higher level by motion_control. + In other words, the buffer head is never equal to the buffer tail. Also the feed rate input value + is used in three ways: as a normal feed rate if invert_feed_rate is false, as inverse time if + invert_feed_rate is true, or as seek/rapids rate if the feed_rate value is negative (and + invert_feed_rate always false). */ +#ifdef USE_LINE_NUMBERS + void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number) +#else + void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate) +#endif +{ + // Prepare and initialize new block + plan_block_t *block = &block_buffer[block_buffer_head]; + block->step_event_count = 0; + block->millimeters = 0; + block->direction_bits = 0; + block->acceleration = SOME_LARGE_VALUE; // Scaled down to maximum acceleration later + #ifdef USE_LINE_NUMBERS + block->line_number = line_number; + #endif + + // Compute and store initial move distance data. + // TODO: After this for-loop, we don't touch the stepper algorithm data. Might be a good idea + // to try to keep these types of things completely separate from the planner for portability. + int32_t target_steps[N_AXIS]; + float unit_vec[N_AXIS], delta_mm; + uint8_t idx; + #ifdef COREXY + target_steps[A_MOTOR] = lround(target[A_MOTOR]*settings.steps_per_mm[A_MOTOR]); + target_steps[B_MOTOR] = lround(target[B_MOTOR]*settings.steps_per_mm[B_MOTOR]); + block->steps[A_MOTOR] = labs((target_steps[X_AXIS]-pl.position[X_AXIS]) + (target_steps[Y_AXIS]-pl.position[Y_AXIS])); + block->steps[B_MOTOR] = labs((target_steps[X_AXIS]-pl.position[X_AXIS]) - (target_steps[Y_AXIS]-pl.position[Y_AXIS])); + #endif + + for (idx=0; idxsteps[idx] = labs(target_steps[idx]-pl.position[idx]); + } + block->step_event_count = max(block->step_event_count, block->steps[idx]); + if (idx == A_MOTOR) { + delta_mm = (target_steps[X_AXIS]-pl.position[X_AXIS] + target_steps[Y_AXIS]-pl.position[Y_AXIS])/settings.steps_per_mm[idx]; + } else if (idx == B_MOTOR) { + delta_mm = (target_steps[X_AXIS]-pl.position[X_AXIS] - target_steps[Y_AXIS]+pl.position[Y_AXIS])/settings.steps_per_mm[idx]; + } else { + delta_mm = (target_steps[idx] - pl.position[idx])/settings.steps_per_mm[idx]; + } + #else + target_steps[idx] = lround(target[idx]*settings.steps_per_mm[idx]); + block->steps[idx] = labs(target_steps[idx]-pl.position[idx]); + block->step_event_count = max(block->step_event_count, block->steps[idx]); + delta_mm = (target_steps[idx] - pl.position[idx])/settings.steps_per_mm[idx]; + #endif + unit_vec[idx] = delta_mm; // Store unit vector numerator. Denominator computed later. + + // Set direction bits. Bit enabled always means direction is negative. + if (delta_mm < 0 ) { block->direction_bits |= get_direction_pin_mask(idx); } + + // Incrementally compute total move distance by Euclidean norm. First add square of each term. + block->millimeters += delta_mm*delta_mm; + } + block->millimeters = sqrt(block->millimeters); // Complete millimeters calculation with sqrt() + + // Bail if this is a zero-length block. Highly unlikely to occur. + if (block->step_event_count == 0) { return; } + + // Adjust feed_rate value to mm/min depending on type of rate input (normal, inverse time, or rapids) + // TODO: Need to distinguish a rapids vs feed move for overrides. Some flag of some sort. + if (feed_rate < 0) { feed_rate = SOME_LARGE_VALUE; } // Scaled down to absolute max/rapids rate later + else if (invert_feed_rate) { feed_rate *= block->millimeters; } + if (feed_rate < MINIMUM_FEED_RATE) { feed_rate = MINIMUM_FEED_RATE; } // Prevents step generation round-off condition. + + // Calculate the unit vector of the line move and the block maximum feed rate and acceleration scaled + // down such that no individual axes maximum values are exceeded with respect to the line direction. + // NOTE: This calculation assumes all axes are orthogonal (Cartesian) and works with ABC-axes, + // if they are also orthogonal/independent. Operates on the absolute value of the unit vector. + float inverse_unit_vec_value; + float inverse_millimeters = 1.0/block->millimeters; // Inverse millimeters to remove multiple float divides + float junction_cos_theta = 0; + for (idx=0; idxacceleration = min(block->acceleration,settings.acceleration[idx]*inverse_unit_vec_value); + + // Incrementally compute cosine of angle between previous and current path. Cos(theta) of the junction + // between the current move and the previous move is simply the dot product of the two unit vectors, + // where prev_unit_vec is negative. Used later to compute maximum junction speed. + junction_cos_theta -= pl.previous_unit_vec[idx] * unit_vec[idx]; + } + } + + // TODO: Need to check this method handling zero junction speeds when starting from rest. + if (block_buffer_head == block_buffer_tail) { + + // Initialize block entry speed as zero. Assume it will be starting from rest. Planner will correct this later. + block->entry_speed_sqr = 0.0; + block->max_junction_speed_sqr = 0.0; // Starting from rest. Enforce start from zero velocity. + + } else { + /* + Compute maximum allowable entry speed at junction by centripetal acceleration approximation. + Let a circle be tangent to both previous and current path line segments, where the junction + deviation is defined as the distance from the junction to the closest edge of the circle, + colinear with the circle center. The circular segment joining the two paths represents the + path of centripetal acceleration. Solve for max velocity based on max acceleration about the + radius of the circle, defined indirectly by junction deviation. This may be also viewed as + path width or max_jerk in the previous Grbl version. This approach does not actually deviate + from path, but used as a robust way to compute cornering speeds, as it takes into account the + nonlinearities of both the junction angle and junction velocity. + + NOTE: If the junction deviation value is finite, Grbl executes the motions in an exact path + mode (G61). If the junction deviation value is zero, Grbl will execute the motion in an exact + stop mode (G61.1) manner. In the future, if continuous mode (G64) is desired, the math here + is exactly the same. Instead of motioning all the way to junction point, the machine will + just follow the arc circle defined here. The Arduino doesn't have the CPU cycles to perform + a continuous mode path, but ARM-based microcontrollers most certainly do. + + NOTE: The max junction speed is a fixed value, since machine acceleration limits cannot be + changed dynamically during operation nor can the line move geometry. This must be kept in + memory in the event of a feedrate override changing the nominal speeds of blocks, which can + change the overall maximum entry speed conditions of all blocks. + */ + // NOTE: Computed without any expensive trig, sin() or acos(), by trig half angle identity of cos(theta). + if (junction_cos_theta > 0.999999) { + // For a 0 degree acute junction, just set minimum junction speed. + block->max_junction_speed_sqr = MINIMUM_JUNCTION_SPEED*MINIMUM_JUNCTION_SPEED; + } else { + junction_cos_theta = max(junction_cos_theta,-0.999999); // Check for numerical round-off to avoid divide by zero. + float sin_theta_d2 = sqrt(0.5*(1.0-junction_cos_theta)); // Trig half angle identity. Always positive. + + // TODO: Technically, the acceleration used in calculation needs to be limited by the minimum of the + // two junctions. However, this shouldn't be a significant problem except in extreme circumstances. + block->max_junction_speed_sqr = max( MINIMUM_JUNCTION_SPEED*MINIMUM_JUNCTION_SPEED, + (block->acceleration * settings.junction_deviation * sin_theta_d2)/(1.0-sin_theta_d2) ); + + } + } + + // Store block nominal speed + block->nominal_speed_sqr = feed_rate*feed_rate; // (mm/min). Always > 0 + + // Compute the junction maximum entry based on the minimum of the junction speed and neighboring nominal speeds. + block->max_entry_speed_sqr = min(block->max_junction_speed_sqr, + min(block->nominal_speed_sqr,pl.previous_nominal_speed_sqr)); + + // Update previous path unit_vector and nominal speed (squared) + memcpy(pl.previous_unit_vec, unit_vec, sizeof(unit_vec)); // pl.previous_unit_vec[] = unit_vec[] + pl.previous_nominal_speed_sqr = block->nominal_speed_sqr; + + // Update planner position + memcpy(pl.position, target_steps, sizeof(target_steps)); // pl.position[] = target_steps[] + + // New block is all set. Update buffer head and next buffer head indices. + block_buffer_head = next_buffer_head; + next_buffer_head = plan_next_block_index(block_buffer_head); + + // Finish up by recalculating the plan with the new block. + planner_recalculate(); +} + + +// Reset the planner position vectors. Called by the system abort/initialization routine. +void plan_sync_position() +{ + // TODO: For motor configurations not in the same coordinate frame as the machine position, + // this function needs to be updated to accomodate the difference. + uint8_t idx; + for (idx=0; idx= block_buffer_tail) { return(block_buffer_head-block_buffer_tail); } + return(BLOCK_BUFFER_SIZE - (block_buffer_tail-block_buffer_head)); +} + + +// Re-initialize buffer plan with a partially completed block, assumed to exist at the buffer tail. +// Called after a steppers have come to a complete stop for a feed hold and the cycle is stopped. +void plan_cycle_reinitialize() +{ + // Re-plan from a complete stop. Reset planner entry speeds and buffer planned pointer. + st_update_plan_block_parameters(); + block_buffer_planned = block_buffer_tail; + planner_recalculate(); +} diff --git a/src/planner.h b/src/planner.h new file mode 100755 index 0000000..02258dd --- /dev/null +++ b/src/planner.h @@ -0,0 +1,97 @@ +/* + planner.h - buffers movement commands and manages the acceleration profile plan + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef planner_h +#define planner_h + + +// The number of linear motions that can be in the plan at any give time +#ifndef BLOCK_BUFFER_SIZE + #ifdef USE_LINE_NUMBERS + #define BLOCK_BUFFER_SIZE 16 + #else + #define BLOCK_BUFFER_SIZE 18 + #endif +#endif + +// This struct stores a linear movement of a g-code block motion with its critical "nominal" values +// are as specified in the source g-code. +typedef struct { + // Fields used by the bresenham algorithm for tracing the line + // NOTE: Used by stepper algorithm to execute the block correctly. Do not alter these values. + uint8_t direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) + uint32_t steps[N_AXIS]; // Step count along each axis + uint32_t step_event_count; // The maximum step axis count and number of steps required to complete this block. + + // Fields used by the motion planner to manage acceleration + float entry_speed_sqr; // The current planned entry speed at block junction in (mm/min)^2 + float max_entry_speed_sqr; // Maximum allowable entry speed based on the minimum of junction limit and + // neighboring nominal speeds with overrides in (mm/min)^2 + float max_junction_speed_sqr; // Junction entry speed limit based on direction vectors in (mm/min)^2 + float nominal_speed_sqr; // Axis-limit adjusted nominal speed for this block in (mm/min)^2 + float acceleration; // Axis-limit adjusted line acceleration in (mm/min^2) + float millimeters; // The remaining distance for this block to be executed in (mm) + // uint8_t max_override; // Maximum override value based on axis speed limits + + #ifdef USE_LINE_NUMBERS + int32_t line_number; + #endif +} plan_block_t; + + +// Initialize and reset the motion plan subsystem +void plan_reset(); + +// Add a new linear movement to the buffer. target[N_AXIS] is the signed, absolute target position +// in millimeters. Feed rate specifies the speed of the motion. If feed rate is inverted, the feed +// rate is taken to mean "frequency" and would complete the operation in 1/feed_rate minutes. +#ifdef USE_LINE_NUMBERS + void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number); +#else + void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate); +#endif + +// Called when the current block is no longer needed. Discards the block and makes the memory +// availible for new blocks. +void plan_discard_current_block(); + +// Gets the current block. Returns NULL if buffer empty +plan_block_t *plan_get_current_block(); + +// Called periodically by step segment buffer. Mostly used internally by planner. +uint8_t plan_next_block_index(uint8_t block_index); + +// Called by step segment buffer when computing executing block velocity profile. +float plan_get_exec_block_exit_speed(); + +// Reset the planner position vector (in steps) +void plan_sync_position(); + +// Reinitialize plan with a partially completed block +void plan_cycle_reinitialize(); + +// Returns the number of active blocks are in the planner buffer. +uint8_t plan_get_block_buffer_count(); + +// Returns the status of the block ring buffer. True, if buffer is full. +uint8_t plan_check_full_buffer(); + +#endif diff --git a/src/print.c b/src/print.c new file mode 100755 index 0000000..6598d48 --- /dev/null +++ b/src/print.c @@ -0,0 +1,219 @@ +/* + print.c - Functions for formatting output strings + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include + + +void printString(const char *s) +{ + while (*s) + serial_write(*s++); +} + + +// Print a string stored in PGM-memory +void printPgmString(const char *s) +{ + char c; + while ((c = pgm_read_byte_near(s++))) + serial_write(c); +} + + +// void printIntegerInBase(unsigned long n, unsigned long base) +// { +// unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. +// unsigned long i = 0; +// +// if (n == 0) { +// serial_write('0'); +// return; +// } +// +// while (n > 0) { +// buf[i++] = n % base; +// n /= base; +// } +// +// for (; i > 0; i--) +// serial_write(buf[i - 1] < 10 ? +// '0' + buf[i - 1] : +// 'A' + buf[i - 1] - 10); +// } + + +// Prints an uint8 variable with base and number of desired digits. +void print_unsigned_int8(uint8_t n, uint8_t base, uint8_t digits) +{ + unsigned char buf[digits]; + uint8_t i = 0; + + for (; i < digits; i++) { + buf[i] = n % base ; + n /= base; + } + + for (; i > 0; i--) + serial_write('0' + buf[i - 1]); +} + + +// Prints an uint8 variable in base 2. +void print_uint8_base2(uint8_t n) { + print_unsigned_int8(n,2,8); +} + + +// Prints an uint8 variable in base 10. +void print_uint8_base10(uint8_t n) +{ + uint8_t digits; + if (n < 10) { digits = 1; } + else if (n < 100) { digits = 2; } + else { digits = 3; } + print_unsigned_int8(n,10,digits); +} + + +void print_uint32_base10(uint32_t n) +{ + if (n == 0) { + serial_write('0'); + return; + } + + unsigned char buf[10]; + uint8_t i = 0; + + while (n > 0) { + buf[i++] = n % 10; + n /= 10; + } + + for (; i > 0; i--) + serial_write('0' + buf[i-1]); +} + + +void printInteger(long n) +{ + if (n < 0) { + serial_write('-'); + print_uint32_base10(-n); + } else { + print_uint32_base10(n); + } +} + + +// Convert float to string by immediately converting to a long integer, which contains +// more digits than a float. Number of decimal places, which are tracked by a counter, +// may be set by the user. The integer is then efficiently converted to a string. +// NOTE: AVR '%' and '/' integer operations are very efficient. Bitshifting speed-up +// techniques are actually just slightly slower. Found this out the hard way. +void printFloat(float n, uint8_t decimal_places) +{ + if (n < 0) { + serial_write('-'); + n = -n; + } + + uint8_t decimals = decimal_places; + while (decimals >= 2) { // Quickly convert values expected to be E0 to E-4. + n *= 100; + decimals -= 2; + } + if (decimals) { n *= 10; } + n += 0.5; // Add rounding factor. Ensures carryover through entire value. + + // Generate digits backwards and store in string. + unsigned char buf[10]; + uint8_t i = 0; + uint32_t a = (long)n; + buf[decimal_places] = '.'; // Place decimal point, even if decimal places are zero. + while(a > 0) { + if (i == decimal_places) { i++; } // Skip decimal point location + buf[i++] = (a % 10) + '0'; // Get digit + a /= 10; + } + while (i < decimal_places) { + buf[i++] = '0'; // Fill in zeros to decimal point for (n < 1) + } + if (i == decimal_places) { // Fill in leading zero, if needed. + i++; + buf[i++] = '0'; + } + + // Print the generated string. + for (; i > 0; i--) + serial_write(buf[i-1]); +} + + +// Floating value printing handlers for special variables types used in Grbl and are defined +// in the config.h. +// - CoordValue: Handles all position or coordinate values in inches or mm reporting. +// - RateValue: Handles feed rate and current velocity in inches or mm reporting. +// - SettingValue: Handles all floating point settings values (always in mm.) +void printFloat_CoordValue(float n) { + if (bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)) { + printFloat(n*INCH_PER_MM,N_DECIMAL_COORDVALUE_INCH); + } else { + printFloat(n,N_DECIMAL_COORDVALUE_MM); + } +} + +void printFloat_RateValue(float n) { + if (bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)) { + printFloat(n*INCH_PER_MM,N_DECIMAL_RATEVALUE_INCH); + } else { + printFloat(n,N_DECIMAL_RATEVALUE_MM); + } +} + +void printFloat_SettingValue(float n) { printFloat(n,N_DECIMAL_SETTINGVALUE); } + + +// Debug tool to print free memory in bytes at the called point. +// NOTE: Keep commented unless using. Part of this function always gets compiled in. +// void printFreeMemory() +// { +// extern int __heap_start, *__brkval; +// uint16_t free; // Up to 64k values. +// free = (int) &free - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); +// printInteger((int32_t)free); +// printString(" "); +// } + +void uart_printf(char *str,...){ + char buf[128]; + unsigned char i = 0; + va_list ptr; + va_start(ptr,str); + vsprintf(buf,str,ptr); + while(buf[i]) + { + serial_write(buf[i]); + i++; + } +} + diff --git a/src/print.h b/src/print.h new file mode 100755 index 0000000..5639e70 --- /dev/null +++ b/src/print.h @@ -0,0 +1,60 @@ +/* + print.h - Functions for formatting output strings + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef print_h +#define print_h + + +void printString(const char *s); + +void printPgmString(const char *s); + +void printInteger(long n); + +void print_uint32_base10(uint32_t n); + +// Prints uint8 variable with base and number of desired digits. +void print_unsigned_int8(uint8_t n, uint8_t base, uint8_t digits); + +// Prints an uint8 variable in base 2. +void print_uint8_base2(uint8_t n); + +// Prints an uint8 variable in base 10. +void print_uint8_base10(uint8_t n); + +void printFloat(float n, uint8_t decimal_places); + +// Floating value printing handlers for special variables types used in Grbl. +// - CoordValue: Handles all position or coordinate values in inches or mm reporting. +// - RateValue: Handles feed rate and current velocity in inches or mm reporting. +// - SettingValue: Handles all floating point settings values (always in mm.) +void printFloat_CoordValue(float n); + +void printFloat_RateValue(float n); + +void printFloat_SettingValue(float n); + +// Debug tool to print free memory in bytes at the called point. Not used otherwise. +void printFreeMemory(); + +void uart_printf(char *str,...); + +#endif \ No newline at end of file diff --git a/src/probe.c b/src/probe.c new file mode 100755 index 0000000..37816bf --- /dev/null +++ b/src/probe.c @@ -0,0 +1,68 @@ +/* + probe.c - code pertaining to probing methods + Part of Grbl + + Copyright (c) 2014-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +// Inverts the probe pin state depending on user settings and probing cycle mode. +uint8_t probe_invert_mask; + + +// Probe pin initialization routine. +void probe_init() +{ + PROBE_DDR &= ~(PROBE_MASK); // Configure as input pins + #ifdef DISABLE_PROBE_PIN_PULL_UP + PROBE_PORT &= ~(PROBE_MASK); // Normal low operation. Requires external pull-down. + #else + PROBE_PORT |= PROBE_MASK; // Enable internal pull-up resistors. Normal high operation. + #endif + // probe_configure_invert_mask(false); // Initialize invert mask. Not required. Updated when in-use. +} + + +// Called by probe_init() and the mc_probe() routines. Sets up the probe pin invert mask to +// appropriately set the pin logic according to setting for normal-high/normal-low operation +// and the probing cycle modes for toward-workpiece/away-from-workpiece. +void probe_configure_invert_mask(uint8_t is_probe_away) +{ + probe_invert_mask = 0; // Initialize as zero. + if (bit_isfalse(settings.flags,BITFLAG_INVERT_PROBE_PIN)) { probe_invert_mask ^= PROBE_MASK; } + if (is_probe_away) { probe_invert_mask ^= PROBE_MASK; } +} + + +// Returns the probe pin state. Triggered = true. Called by gcode parser and probe state monitor. +uint8_t probe_get_state() { return((PROBE_PIN & PROBE_MASK) ^ probe_invert_mask); } + + +// Monitors probe pin state and records the system position when detected. Called by the +// stepper ISR per ISR tick. +// NOTE: This function must be extremely efficient as to not bog down the stepper ISR. +void probe_state_monitor() +{ + if (sys_probe_state == PROBE_ACTIVE) { + if (probe_get_state()) { + sys_probe_state = PROBE_OFF; + memcpy(sys.probe_position, sys.position, sizeof(sys.position)); + bit_true(sys_rt_exec_state, EXEC_MOTION_CANCEL); + } + } +} diff --git a/src/probe.h b/src/probe.h new file mode 100755 index 0000000..81bd486 --- /dev/null +++ b/src/probe.h @@ -0,0 +1,43 @@ +/* + probe.h - code pertaining to probing methods + Part of Grbl + + Copyright (c) 2014-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef probe_h +#define probe_h + +// Values that define the probing state machine. +#define PROBE_OFF 0 // Probing disabled or not in use. (Must be zero.) +#define PROBE_ACTIVE 1 // Actively watching the input pin. + +// Probe pin initialization routine. +void probe_init(); + +// Called by probe_init() and the mc_probe() routines. Sets up the probe pin invert mask to +// appropriately set the pin logic according to setting for normal-high/normal-low operation +// and the probing cycle modes for toward-workpiece/away-from-workpiece. +void probe_configure_invert_mask(uint8_t is_probe_away); + +// Returns probe pin state. Triggered = true. Called by gcode parser and probe state monitor. +uint8_t probe_get_state(); + +// Monitors probe pin state and records the system position when detected. Called by the +// stepper ISR per ISR tick. +void probe_state_monitor(); + +#endif diff --git a/src/protocol.c b/src/protocol.c new file mode 100755 index 0000000..9084676 --- /dev/null +++ b/src/protocol.c @@ -0,0 +1,398 @@ +/* + protocol.c - controls Grbl execution protocol and procedures + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include "uarm_swift.h" +#include "uarm_protocol.h" + +// Define different comment types for pre-parsing. +#define COMMENT_NONE 0 +#define COMMENT_TYPE_PARENTHESES 1 +#define COMMENT_TYPE_SEMICOLON 2 + +static char line[LINE_BUFFER_SIZE]; + +// Directs and executes one line of formatted input from protocol_process. While mostly +// incoming streaming g-code blocks, this also directs and executes Grbl internal commands, +// such as settings, initiating the homing cycle, and toggling switch states. +static void protocol_execute_line(char *line) +{ + protocol_execute_realtime(); // Runtime command check point. + if (sys.abort) { return; } // Bail to calling function upon system abort + + #ifdef REPORT_ECHO_LINE_RECEIVED + report_echo_line_received(line); + #endif + if (line[0] == '$') { + // Grbl '$' system command + report_status_message(system_execute_line(line)); + } else if (sys.state == STATE_ALARM) { + // Everything else is gcode. Block if in alarm mode. + report_status_message(STATUS_ALARM_LOCK); + } else { + // Parse and execute g-code block! + report_status_message(gc_execute_line(line)); + } +} + +/* + GRBL PRIMARY LOOP: +*/ +void protocol_main_loop() +{ + // ------------------------------------------------------------ + // Complete initialization procedures upon a power-up or reset. + // ------------------------------------------------------------ + + // Print welcome message + report_init_message(); + + // Check for and report alarm state after a reset, error, or an initial power up. + if (sys.state == STATE_ALARM) { + report_feedback_message(MESSAGE_ALARM_LOCK); + } else { + // All systems go! But first check for safety door. + if (system_check_safety_door_ajar()) { + bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); + protocol_execute_realtime(); // Enter safety door mode. Should return as IDLE state. + } else { + sys.state = STATE_IDLE; // Set system to ready. Clear all state flags. + } +// system_execute_startup(line); // Execute startup script. + } + + // --------------------------------------------------------------------------------- + // Primary loop! Upon a system abort, this exits back to main() to reset the system. + // --------------------------------------------------------------------------------- + + uint8_t comment = COMMENT_NONE; + uint8_t char_counter = 0; + uint8_t c; + uint8_t line_remain = 0; + uint8_t line_num = 0; + uint8_t line_execute_p = 0; + for (;;) { + + // Process one line of incoming serial data, as the data becomes available. Performs an + // initial filtering by removing spaces and comments and capitalizing all letters. + + // NOTE: While comment, spaces, and block delete(if supported) handling should technically + // be done in the g-code parser, doing it here helps compress the incoming data into Grbl's + // line buffer, which is limited in size. The g-code standard actually states a line can't + // exceed 256 characters, but the Arduino Uno does not have the memory space for this. + // With a better processor, it would be very easy to pull this initial parsing out as a + // seperate task to be shared by the g-code parser and Grbl's system commands. + + while((c = serial_read()) != SERIAL_NO_DATA) { + if ((c == '\n') || (c == '\r')) { // End of line reached + line[char_counter] = 0; // Set string termination character. + receive_cmd_line(line); + comment = COMMENT_NONE; + char_counter = 0; + break; + } else { + if (comment != COMMENT_NONE) { + // Throw away all comment characters + if (c == ')') { + // End of comment. Resume line. But, not if semicolon type comment. + if (comment == COMMENT_TYPE_PARENTHESES) { comment = COMMENT_NONE; } + } + } else { + if (c <= ' ') { + // Throw away whitepace and control characters + } else if (c == '/') { + // Block delete NOT SUPPORTED. Ignore character. + // NOTE: If supported, would simply need to check the system if block delete is enabled. + } else if (c == '(') { + // Enable comments flag and ignore all characters until ')' or EOL. + // NOTE: This doesn't follow the NIST definition exactly, but is good enough for now. + // In the future, we could simply remove the items within the comments, but retain the + // comment control characters, so that the g-code parser can error-check it. + comment = COMMENT_TYPE_PARENTHESES; + } else if (c == ';') { + // NOTE: ';' comment to EOL is a LinuxCNC definition. Not NIST. + comment = COMMENT_TYPE_SEMICOLON; + + // TODO: Install '%' feature + // } else if (c == '%') { + // Program start-end percent sign NOT SUPPORTED. + // NOTE: This maybe installed to tell Grbl when a program is running vs manual input, + // where, during a program, the system auto-cycle start will continue to execute + // everything until the next '%' sign. This will help fix resuming issues with certain + // functions that empty the planner buffer to execute its task on-time. + + } else if (char_counter >= (LINE_BUFFER_SIZE-1)) { + // Detect line buffer overflow. Report error and reset line buffer. + report_status_message(STATUS_OVERFLOW); + comment = COMMENT_NONE; + char_counter = 0; + } else if (c >= 'a' && c <= 'z') { // Upcase lowercase + line[char_counter++] = c-'a'+'A'; + } else { + line[char_counter++] = c; + } + } + } + } + parse_cmd_line(); + + // If there are no more characters in the serial read buffer to be processed and executed, + // this indicates that g-code streaming has either filled the planner buffer or has + // completed. In either case, auto-cycle start, if enabled, any queued moves. + //uarm_swift_tick_run(); + protocol_auto_cycle_start(); + protocol_execute_realtime(); // Runtime command check point. + if (sys.abort) { return; } // Bail to main() program loop to reset system. + + report_parse_result(); +// check_motor_positon(); + } + return; /* Never reached */ +} + + +// Executes run-time commands, when required. This is called from various check points in the main +// program, primarily where there may be a while loop waiting for a buffer to clear space or any +// point where the execution time from the last check point may be more than a fraction of a second. +// This is a way to execute realtime commands asynchronously (aka multitasking) with grbl's g-code +// parsing and planning functions. This function also serves as an interface for the interrupts to +// set the system realtime flags, where only the main program handles them, removing the need to +// define more computationally-expensive volatile variables. This also provides a controlled way to +// execute certain tasks without having two or more instances of the same task, such as the planner +// recalculating the buffer upon a feedhold or override. +// NOTE: The sys_rt_exec_state variable flags are set by any process, step or serial interrupts, pinouts, +// limit switches, or the main program. +void protocol_execute_realtime() +{ + uint8_t rt_exec; // Temp variable to avoid calling volatile multiple times. + + do { // If system is suspended, suspend loop restarts here. + + // Check and execute alarms. + rt_exec = sys_rt_exec_alarm; // Copy volatile sys_rt_exec_alarm. + if (rt_exec) { // Enter only if any bit flag is true + // System alarm. Everything has shutdown by something that has gone severely wrong. Report + // the source of the error to the user. If critical, Grbl disables by entering an infinite + // loop until system reset/abort. + sys.state = STATE_ALARM; // Set system alarm state + if (rt_exec & EXEC_ALARM_HARD_LIMIT) { + report_alarm_message(ALARM_HARD_LIMIT_ERROR); + } else if (rt_exec & EXEC_ALARM_SOFT_LIMIT) { + report_alarm_message(ALARM_SOFT_LIMIT_ERROR); + } else if (rt_exec & EXEC_ALARM_ABORT_CYCLE) { + report_alarm_message(ALARM_ABORT_CYCLE); + } else if (rt_exec & EXEC_ALARM_PROBE_FAIL) { + report_alarm_message(ALARM_PROBE_FAIL); + } else if (rt_exec & EXEC_ALARM_HOMING_FAIL) { + report_alarm_message(ALARM_HOMING_FAIL); + } + // Halt everything upon a critical event flag. Currently hard and soft limits flag this. + if (rt_exec & EXEC_CRITICAL_EVENT) { + report_feedback_message(MESSAGE_CRITICAL_EVENT); + bit_false_atomic(sys_rt_exec_state,EXEC_RESET); // Disable any existing reset + do { + // Nothing. Block EVERYTHING until user issues reset or power cycles. Hard limits + // typically occur while unattended or not paying attention. Gives the user time + // to do what is needed before resetting, like killing the incoming stream. The + // same could be said about soft limits. While the position is not lost, the incoming + // stream could be still engaged and cause a serious crash if it continues afterwards. + + // TODO: Allow status reports during a critical alarm. Still need to think about implications of this. +// if (sys_rt_exec_state & EXEC_STATUS_REPORT) { +// report_realtime_status(); +// bit_false_atomic(sys_rt_exec_state,EXEC_STATUS_REPORT); +// } + } while (bit_isfalse(sys_rt_exec_state,EXEC_RESET)); + } + bit_false_atomic(sys_rt_exec_alarm,0xFF); // Clear all alarm flags + } + + // Check amd execute realtime commands + rt_exec = sys_rt_exec_state; // Copy volatile sys_rt_exec_state. + if (rt_exec) { // Enter only if any bit flag is true + + // Execute system abort. + if (rt_exec & EXEC_RESET) { + sys.abort = true; // Only place this is set true. + return; // Nothing else to do but exit. + } + + // Execute and serial print status + if (rt_exec & EXEC_STATUS_REPORT) { + report_realtime_status(); + bit_false_atomic(sys_rt_exec_state,EXEC_STATUS_REPORT); + } + + // Execute hold states. + // NOTE: The math involved to calculate the hold should be low enough for most, if not all, + // operational scenarios. Once hold is initiated, the system enters a suspend state to block + // all main program processes until either reset or resumed. + if (rt_exec & (EXEC_MOTION_CANCEL | EXEC_FEED_HOLD | EXEC_SAFETY_DOOR)) { + + // TODO: CHECK MODE? How to handle this? Likely nothing, since it only works when IDLE and then resets Grbl. + + // State check for allowable states for hold methods. + if ((sys.state == STATE_IDLE) || (sys.state & (STATE_CYCLE | STATE_HOMING | STATE_MOTION_CANCEL | STATE_HOLD | STATE_SAFETY_DOOR))) { + + // If in CYCLE state, all hold states immediately initiate a motion HOLD. + if (sys.state == STATE_CYCLE) { + st_update_plan_block_parameters(); // Notify stepper module to recompute for hold deceleration. + sys.suspend = SUSPEND_ENABLE_HOLD; // Initiate holding cycle with flag. + } + // If IDLE, Grbl is not in motion. Simply indicate suspend ready state. + if (sys.state == STATE_IDLE) { sys.suspend = SUSPEND_ENABLE_READY; } + + // Execute and flag a motion cancel with deceleration and return to idle. Used primarily by probing cycle + // to halt and cancel the remainder of the motion. + if (rt_exec & EXEC_MOTION_CANCEL) { + // MOTION_CANCEL only occurs during a CYCLE, but a HOLD and SAFETY_DOOR may been initiated beforehand + // to hold the CYCLE. If so, only flag that motion cancel is complete. + if (sys.state == STATE_CYCLE) { sys.state = STATE_MOTION_CANCEL; } + sys.suspend |= SUSPEND_MOTION_CANCEL; // Indicate motion cancel when resuming. Special motion complete. + } + + // Execute a feed hold with deceleration, only during cycle. + if (rt_exec & EXEC_FEED_HOLD) { + // Block SAFETY_DOOR state from prematurely changing back to HOLD. + if (bit_isfalse(sys.state,STATE_SAFETY_DOOR)) { sys.state = STATE_HOLD; } + } + + // Execute a safety door stop with a feed hold, only during a cycle, and disable spindle/coolant. + // NOTE: Safety door differs from feed holds by stopping everything no matter state, disables powered + // devices (spindle/coolant), and blocks resuming until switch is re-engaged. The power-down is + // executed here, if IDLE, or when the CYCLE completes via the EXEC_CYCLE_STOP flag. + if (rt_exec & EXEC_SAFETY_DOOR) { + report_feedback_message(MESSAGE_SAFETY_DOOR_AJAR); + // If already in active, ready-to-resume HOLD, set CYCLE_STOP flag to force de-energize. + // NOTE: Only temporarily sets the 'rt_exec' variable, not the volatile 'rt_exec_state' variable. + if (sys.suspend & SUSPEND_ENABLE_READY) { bit_true(rt_exec,EXEC_CYCLE_STOP); } + sys.suspend |= SUSPEND_ENERGIZE; + sys.state = STATE_SAFETY_DOOR; + } + + } + bit_false_atomic(sys_rt_exec_state,(EXEC_MOTION_CANCEL | EXEC_FEED_HOLD | EXEC_SAFETY_DOOR)); + } + + // Execute a cycle start by starting the stepper interrupt to begin executing the blocks in queue. + if (rt_exec & EXEC_CYCLE_START) { + // Block if called at same time as the hold commands: feed hold, motion cancel, and safety door. + // Ensures auto-cycle-start doesn't resume a hold without an explicit user-input. + if (!(rt_exec & (EXEC_FEED_HOLD | EXEC_MOTION_CANCEL | EXEC_SAFETY_DOOR))) { + // Cycle start only when IDLE or when a hold is complete and ready to resume. + // NOTE: SAFETY_DOOR is implicitly blocked. It reverts to HOLD when the door is closed. + if ((sys.state == STATE_IDLE) || ((sys.state & (STATE_HOLD | STATE_MOTION_CANCEL)) && (sys.suspend & SUSPEND_ENABLE_READY))) { + // Re-energize powered components, if disabled by SAFETY_DOOR. + if (sys.suspend & SUSPEND_ENERGIZE) { + // Delayed Tasks: Restart spindle and coolant, delay to power-up, then resume cycle. + if (gc_state.modal.spindle != SPINDLE_DISABLE) { + spindle_set_state(gc_state.modal.spindle, gc_state.spindle_speed); + delay_ms(SAFETY_DOOR_SPINDLE_DELAY); // TODO: Blocking function call. Need a non-blocking one eventually. + } + if (gc_state.modal.coolant != COOLANT_DISABLE) { + coolant_set_state(gc_state.modal.coolant); + delay_ms(SAFETY_DOOR_COOLANT_DELAY); // TODO: Blocking function call. Need a non-blocking one eventually. + } + // TODO: Install return to pre-park position. + } + // Start cycle only if queued motions exist in planner buffer and the motion is not canceled. + if (plan_get_current_block() && bit_isfalse(sys.suspend,SUSPEND_MOTION_CANCEL)) { + sys.state = STATE_CYCLE; + st_prep_buffer(); // Initialize step segment buffer before beginning cycle. + st_wake_up(); + } else { // Otherwise, do nothing. Set and resume IDLE state. + sys.state = STATE_IDLE; + } + sys.suspend = SUSPEND_DISABLE; // Break suspend state. + } + } + bit_false_atomic(sys_rt_exec_state,EXEC_CYCLE_START); + } + + // Reinitializes the cycle plan and stepper system after a feed hold for a resume. Called by + // realtime command execution in the main program, ensuring that the planner re-plans safely. + // NOTE: Bresenham algorithm variables are still maintained through both the planner and stepper + // cycle reinitializations. The stepper path should continue exactly as if nothing has happened. + // NOTE: EXEC_CYCLE_STOP is set by the stepper subsystem when a cycle or feed hold completes. + if (rt_exec & EXEC_CYCLE_STOP) { + if (sys.state & (STATE_HOLD | STATE_SAFETY_DOOR) && !(sys.soft_limit)) { + // Hold complete. Set to indicate ready to resume. Remain in HOLD or DOOR states until user + // has issued a resume command or reset. + if (sys.suspend & SUSPEND_ENERGIZE) { // De-energize system if safety door has been opened. + spindle_stop(); + coolant_stop(); + } + bit_true(sys.suspend,SUSPEND_ENABLE_READY); + } else { // Motion is complete. Includes CYCLE, HOMING, and MOTION_CANCEL states. + sys.suspend = SUSPEND_DISABLE; + sys.state = STATE_IDLE; + } + bit_false_atomic(sys_rt_exec_state,EXEC_CYCLE_STOP); + } + + } + + // Overrides flag byte (sys.override) and execution should be installed here, since they + // are realtime and require a direct and controlled interface to the main stepper program. + + // Reload step segment buffer + if (sys.state & (STATE_CYCLE | STATE_HOLD | STATE_MOTION_CANCEL | STATE_SAFETY_DOOR | STATE_HOMING)) { st_prep_buffer(); } + + // If safety door was opened, actively check when safety door is closed and ready to resume. + // NOTE: This unlocks the SAFETY_DOOR state to a HOLD state, such that CYCLE_START can activate a resume. + if (sys.state == STATE_SAFETY_DOOR) { + if (bit_istrue(sys.suspend,SUSPEND_ENABLE_READY)) { + if (!(system_check_safety_door_ajar())) { + sys.state = STATE_HOLD; // Update to HOLD state to indicate door is closed and ready to resume. + } + } + } + + } while(sys.suspend); // Check for system suspend state before exiting. + +} + + +// Block until all buffered steps are executed or in a cycle state. Works with feed hold +// during a synchronize call, if it should happen. Also, waits for clean cycle end. +void protocol_buffer_synchronize() +{ + // If system is queued, ensure cycle resumes if the auto start flag is present. + protocol_auto_cycle_start(); + do { + protocol_execute_realtime(); // Check and execute run-time commands + if (sys.abort) { return; } // Check for system abort + } while (plan_get_current_block() || (sys.state == STATE_CYCLE)); +} + + +// Auto-cycle start has two purposes: 1. Resumes a plan_synchronize() call from a function that +// requires the planner buffer to empty (spindle enable, dwell, etc.) 2. As a user setting that +// automatically begins the cycle when a user enters a valid motion command manually. This is +// intended as a beginners feature to help new users to understand g-code. It can be disabled +// as a beginner tool, but (1.) still operates. If disabled, the operation of cycle start is +// manually issuing a cycle start command whenever the user is ready and there is a valid motion +// command in the planner queue. +// NOTE: This function is called from the main loop, buffer sync, and mc_line() only and executes +// when one of these conditions exist respectively: There are no more blocks sent (i.e. streaming +// is finished, single commands), a command that needs to wait for the motions in the buffer to +// execute calls a buffer sync, or the planner buffer is full and ready to go. +void protocol_auto_cycle_start() { bit_true_atomic(sys_rt_exec_state, EXEC_CYCLE_START); } diff --git a/src/protocol.h b/src/protocol.h new file mode 100755 index 0000000..2461a65 --- /dev/null +++ b/src/protocol.h @@ -0,0 +1,58 @@ +/* + protocol.h - controls Grbl execution protocol and procedures + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef protocol_h +#define protocol_h + +// Line buffer size from the serial input stream to be executed. +// NOTE: Not a problem except for extreme cases, but the line buffer size can be too small +// and g-code blocks can get truncated. Officially, the g-code standards support up to 256 +// characters. In future versions, this will be increased, when we know how much extra +// memory space we can invest into here or we re-write the g-code parser not to have this +// buffer. +#ifndef LINE_BUFFER_SIZE + #define LINE_MAX_SIZE 20 + #define LINE_BUFFER_SIZE 80 +#endif + +// Starts Grbl main loop. It handles all incoming characters from the serial port and executes +// them as they complete. It is also responsible for finishing the initialization procedures. +void protocol_main_loop(); + +// Checks and executes a realtime command at various stop points in main program +void protocol_execute_realtime(); + +// Notify the stepper subsystem to start executing the g-code program in buffer. +// void protocol_cycle_start(); + +// Reinitializes the buffer after a feed hold for a resume. +// void protocol_cycle_reinitialize(); + +// Initiates a feed hold of the running program +// void protocol_feed_hold(); + +// Executes the auto cycle feature, if enabled. +void protocol_auto_cycle_start(); + +// Block until all buffered steps are executed +void protocol_buffer_synchronize(); + +#endif diff --git a/src/report.c b/src/report.c new file mode 100755 index 0000000..a8a5037 --- /dev/null +++ b/src/report.c @@ -0,0 +1,522 @@ +/* + report.c - reporting and messaging methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* + This file functions as the primary feedback interface for Grbl. Any outgoing data, such + as the protocol status messages, feedback messages, and status reports, are stored here. + For the most part, these functions primarily are called from protocol.c methods. If a + different style feedback is desired (i.e. JSON), then a user can change these following + methods to accomodate their needs. +*/ + +#include "grbl.h" + + +// Handles the primary confirmation protocol response for streaming interfaces and human-feedback. +// For every incoming line, this method responds with an 'ok' for a successful command or an +// 'error:' to indicate some error event with the line or some critical system error during +// operation. Errors events can originate from the g-code parser, settings module, or asynchronously +// from a critical error, such as a triggered hard limit. Interface should always monitor for these +// responses. +// NOTE: In silent mode, all error codes are greater than zero. +// TODO: Install silent mode to return only numeric values, primarily for GUIs. +void report_status_message(uint8_t status_code) +{ + if (status_code == 0) { // STATUS_OK + printPgmString(PSTR("ok\r\n")); + } else { + printPgmString(PSTR("error: ")); + #ifdef REPORT_GUI_MODE + print_uint8_base10(status_code); + #else + switch(status_code) { + case STATUS_EXPECTED_COMMAND_LETTER: + printPgmString(PSTR("Expected command letter")); break; + case STATUS_BAD_NUMBER_FORMAT: + printPgmString(PSTR("Bad number format")); break; + case STATUS_INVALID_STATEMENT: + printPgmString(PSTR("Invalid statement")); break; + case STATUS_NEGATIVE_VALUE: + printPgmString(PSTR("Value < 0")); break; + case STATUS_SETTING_DISABLED: + printPgmString(PSTR("Setting disabled")); break; + case STATUS_SETTING_STEP_PULSE_MIN: + printPgmString(PSTR("Value < 3 usec")); break; + case STATUS_SETTING_READ_FAIL: + printPgmString(PSTR("EEPROM read fail. Using defaults")); break; + case STATUS_IDLE_ERROR: + printPgmString(PSTR("Not idle")); break; + case STATUS_ALARM_LOCK: + printPgmString(PSTR("Alarm lock")); break; + case STATUS_SOFT_LIMIT_ERROR: + printPgmString(PSTR("Homing not enabled")); break; + case STATUS_OVERFLOW: + printString( "E23\n" ); + //printPgmString(PSTR("Line overflow")); + break; + #ifdef MAX_STEP_RATE_HZ + case STATUS_MAX_STEP_RATE_EXCEEDED: + printPgmString(PSTR("Step rate > 30kHz")); break; + #endif + // Common g-code parser errors. + case STATUS_GCODE_MODAL_GROUP_VIOLATION: + printPgmString(PSTR("Modal group violation")); break; + case STATUS_GCODE_UNSUPPORTED_COMMAND: + printString( "E20\n" ); + //printPgmString(PSTR("Unsupported command")); + + break; + case STATUS_GCODE_UNDEFINED_FEED_RATE: + printPgmString(PSTR("Undefined feed rate")); break; + + case STATUS_UARM_ERROR: + printString( "E21\n" ); + break; + + default: + // Remaining g-code parser errors with error codes + printPgmString(PSTR("Invalid gcode ID:")); + print_uint8_base10(status_code); // Print error code for user reference + } + #endif + printPgmString(PSTR("\r\n")); + + } + +} + +// Prints alarm messages. +void report_alarm_message(int8_t alarm_code) +{ + printPgmString(PSTR("ALARM: ")); + #ifdef REPORT_GUI_MODE + print_uint8_base10(alarm_code); + #else + switch (alarm_code) { + case ALARM_HARD_LIMIT_ERROR: + printPgmString(PSTR("Hard limit")); break; + case ALARM_SOFT_LIMIT_ERROR: + printPgmString(PSTR("Soft limit")); break; + case ALARM_ABORT_CYCLE: + printPgmString(PSTR("Abort during cycle")); break; + case ALARM_PROBE_FAIL: + printPgmString(PSTR("Probe fail")); break; + case ALARM_HOMING_FAIL: + printPgmString(PSTR("Homing fail")); break; + } + #endif + printPgmString(PSTR("\r\n")); + delay_ms(500); // Force delay to ensure message clears serial write buffer. +} + +// Prints feedback messages. This serves as a centralized method to provide additional +// user feedback for things that are not of the status/alarm message protocol. These are +// messages such as setup warnings, switch toggling, and how to exit alarms. +// NOTE: For interfaces, messages are always placed within brackets. And if silent mode +// is installed, the message number codes are less than zero. +// TODO: Install silence feedback messages option in settings +void report_feedback_message(uint8_t message_code) +{ + printPgmString(PSTR("[")); + switch(message_code) { + case MESSAGE_CRITICAL_EVENT: + printPgmString(PSTR("Reset to continue")); break; + case MESSAGE_ALARM_LOCK: + printPgmString(PSTR("'$H'|'$X' to unlock")); break; + case MESSAGE_ALARM_UNLOCK: + printPgmString(PSTR("Caution: Unlocked")); break; + case MESSAGE_ENABLED: + printPgmString(PSTR("Enabled")); break; + case MESSAGE_DISABLED: + printPgmString(PSTR("Disabled")); break; + case MESSAGE_SAFETY_DOOR_AJAR: + printPgmString(PSTR("Check Door")); break; + case MESSAGE_PROGRAM_END: + printPgmString(PSTR("Pgm End")); break; + case MESSAGE_RESTORE_DEFAULTS: + printPgmString(PSTR("Restoring defaults")); break; + } + printPgmString(PSTR("]\r\n")); +} + + +// Welcome message +void report_init_message() +{ + printPgmString(PSTR("\r\nGrbl " GRBL_VERSION " ['$' for help]\r\n")); +} + +// Grbl help message +void report_grbl_help() { + #ifndef REPORT_GUI_MODE + printPgmString(PSTR("$$ (view Grbl settings)\r\n" + "$# (view # parameters)\r\n" + "$G (view parser state)\r\n" + "$I (view build info)\r\n" + "$N (view startup blocks)\r\n" + "$x=value (save Grbl setting)\r\n" + "$Nx=line (save startup block)\r\n" + "$C (check gcode mode)\r\n" + "$X (kill alarm lock)\r\n" + "$H (run homing cycle)\r\n" + "~ (cycle start)\r\n" + "! (feed hold)\r\n" + "? (current status)\r\n" + "ctrl-x (reset Grbl)\r\n")); + #endif +} + + +// Grbl global settings print out. +// NOTE: The numbering scheme here must correlate to storing in settings.c +void report_grbl_settings() { + // Print Grbl settings. + #ifdef REPORT_GUI_MODE + printPgmString(PSTR("$0=")); print_uint8_base10(settings.pulse_microseconds); + printPgmString(PSTR("\r\n$1=")); print_uint8_base10(settings.stepper_idle_lock_time); + printPgmString(PSTR("\r\n$2=")); print_uint8_base10(settings.step_invert_mask); + printPgmString(PSTR("\r\n$3=")); print_uint8_base10(settings.dir_invert_mask); + printPgmString(PSTR("\r\n$4=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)); + printPgmString(PSTR("\r\n$5=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_LIMIT_PINS)); + printPgmString(PSTR("\r\n$6=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_PROBE_PIN)); + printPgmString(PSTR("\r\n$10=")); print_uint8_base10(settings.status_report_mask); + printPgmString(PSTR("\r\n$11=")); printFloat_SettingValue(settings.junction_deviation); + printPgmString(PSTR("\r\n$12=")); printFloat_SettingValue(settings.arc_tolerance); + printPgmString(PSTR("\r\n$13=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)); + printPgmString(PSTR("\r\n$20=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)); + printPgmString(PSTR("\r\n$21=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)); + printPgmString(PSTR("\r\n$22=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)); + printPgmString(PSTR("\r\n$23=")); print_uint8_base10(settings.homing_dir_mask); + printPgmString(PSTR("\r\n$24=")); printFloat_SettingValue(settings.homing_feed_rate); + printPgmString(PSTR("\r\n$25=")); printFloat_SettingValue(settings.homing_seek_rate); + printPgmString(PSTR("\r\n$26=")); print_uint8_base10(settings.homing_debounce_delay); + printPgmString(PSTR("\r\n$27=")); printFloat_SettingValue(settings.homing_pulloff); + printPgmString(PSTR("\r\n")); + #else + printPgmString(PSTR("$0=")); print_uint8_base10(settings.pulse_microseconds); + printPgmString(PSTR(" (step pulse, usec)\r\n$1=")); print_uint8_base10(settings.stepper_idle_lock_time); + printPgmString(PSTR(" (step idle delay, msec)\r\n$2=")); print_uint8_base10(settings.step_invert_mask); + printPgmString(PSTR(" (step port invert mask:")); print_uint8_base2(settings.step_invert_mask); + printPgmString(PSTR(")\r\n$3=")); print_uint8_base10(settings.dir_invert_mask); + printPgmString(PSTR(" (dir port invert mask:")); print_uint8_base2(settings.dir_invert_mask); + printPgmString(PSTR(")\r\n$4=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)); + printPgmString(PSTR(" (step enable invert, bool)\r\n$5=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_LIMIT_PINS)); + printPgmString(PSTR(" (limit pins invert, bool)\r\n$6=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_PROBE_PIN)); + printPgmString(PSTR(" (probe pin invert, bool)\r\n$10=")); print_uint8_base10(settings.status_report_mask); + printPgmString(PSTR(" (status report mask:")); print_uint8_base2(settings.status_report_mask); + printPgmString(PSTR(")\r\n$11=")); printFloat_SettingValue(settings.junction_deviation); + printPgmString(PSTR(" (junction deviation, mm)\r\n$12=")); printFloat_SettingValue(settings.arc_tolerance); + printPgmString(PSTR(" (arc tolerance, mm)\r\n$13=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)); + printPgmString(PSTR(" (report inches, bool)\r\n$20=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)); + printPgmString(PSTR(" (soft limits, bool)\r\n$21=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)); + printPgmString(PSTR(" (hard limits, bool)\r\n$22=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)); + printPgmString(PSTR(" (homing cycle, bool)\r\n$23=")); print_uint8_base10(settings.homing_dir_mask); + printPgmString(PSTR(" (homing dir invert mask:")); print_uint8_base2(settings.homing_dir_mask); + printPgmString(PSTR(")\r\n$24=")); printFloat_SettingValue(settings.homing_feed_rate); + printPgmString(PSTR(" (homing feed, mm/min)\r\n$25=")); printFloat_SettingValue(settings.homing_seek_rate); + printPgmString(PSTR(" (homing seek, mm/min)\r\n$26=")); print_uint8_base10(settings.homing_debounce_delay); + printPgmString(PSTR(" (homing debounce, msec)\r\n$27=")); printFloat_SettingValue(settings.homing_pulloff); + printPgmString(PSTR(" (homing pull-off, mm)\r\n")); + #endif + + // Print axis settings + uint8_t idx, set_idx; + uint8_t val = AXIS_SETTINGS_START_VAL; + for (set_idx=0; set_idxline_number; + } + printInteger(ln); + #endif + + #ifdef REPORT_REALTIME_RATE + // Report realtime rate + printPgmString(PSTR(",F:")); + printFloat_RateValue(st_get_realtime_rate()); + #endif + + if (bit_istrue(settings.status_report_mask,BITFLAG_RT_STATUS_LIMIT_PINS)) { + printPgmString(PSTR(",Lim:")); + print_unsigned_int8(limits_get_state(),2,N_AXIS); + } + + #ifdef REPORT_CONTROL_PIN_STATE + printPgmString(PSTR(",Ctl:")); + print_uint8_base2(CONTROL_PIN & CONTROL_MASK); + #endif + + printPgmString(PSTR(">\r\n")); +} diff --git a/src/report.h b/src/report.h new file mode 100755 index 0000000..c88623f --- /dev/null +++ b/src/report.h @@ -0,0 +1,115 @@ +/* + report.h - reporting and messaging methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ +#ifndef report_h +#define report_h + +// Define Grbl status codes. +#define STATUS_OK 0 +#define STATUS_EXPECTED_COMMAND_LETTER 1 +#define STATUS_BAD_NUMBER_FORMAT 2 +#define STATUS_INVALID_STATEMENT 3 +#define STATUS_NEGATIVE_VALUE 4 +#define STATUS_SETTING_DISABLED 5 +#define STATUS_SETTING_STEP_PULSE_MIN 6 +#define STATUS_SETTING_READ_FAIL 7 +#define STATUS_IDLE_ERROR 8 +#define STATUS_ALARM_LOCK 9 +#define STATUS_SOFT_LIMIT_ERROR 10 +#define STATUS_OVERFLOW 11 +#define STATUS_MAX_STEP_RATE_EXCEEDED 12 + +#define STATUS_GCODE_UNSUPPORTED_COMMAND 20 +#define STATUS_GCODE_MODAL_GROUP_VIOLATION 21 +#define STATUS_GCODE_UNDEFINED_FEED_RATE 22 +#define STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER 23 +#define STATUS_GCODE_AXIS_COMMAND_CONFLICT 24 +#define STATUS_GCODE_WORD_REPEATED 25 +#define STATUS_GCODE_NO_AXIS_WORDS 26 +#define STATUS_GCODE_INVALID_LINE_NUMBER 27 +#define STATUS_GCODE_VALUE_WORD_MISSING 28 +#define STATUS_GCODE_UNSUPPORTED_COORD_SYS 29 +#define STATUS_GCODE_G53_INVALID_MOTION_MODE 30 +#define STATUS_GCODE_AXIS_WORDS_EXIST 31 +#define STATUS_GCODE_NO_AXIS_WORDS_IN_PLANE 32 +#define STATUS_GCODE_INVALID_TARGET 33 +#define STATUS_GCODE_ARC_RADIUS_ERROR 34 +#define STATUS_GCODE_NO_OFFSETS_IN_PLANE 35 +#define STATUS_GCODE_UNUSED_WORDS 36 +#define STATUS_GCODE_G43_DYNAMIC_AXIS_ERROR 37 + +#define STATUS_UARM_ERROR 50 + +// Define Grbl alarm codes. +#define ALARM_HARD_LIMIT_ERROR 1 +#define ALARM_SOFT_LIMIT_ERROR 2 +#define ALARM_ABORT_CYCLE 3 +#define ALARM_PROBE_FAIL 4 +#define ALARM_HOMING_FAIL 5 + +// Define Grbl feedback message codes. +#define MESSAGE_CRITICAL_EVENT 1 +#define MESSAGE_ALARM_LOCK 2 +#define MESSAGE_ALARM_UNLOCK 3 +#define MESSAGE_ENABLED 4 +#define MESSAGE_DISABLED 5 +#define MESSAGE_SAFETY_DOOR_AJAR 6 +#define MESSAGE_PROGRAM_END 7 +#define MESSAGE_RESTORE_DEFAULTS 8 + +// Prints system status messages. +void report_status_message(uint8_t status_code); + +// Prints system alarm messages. +void report_alarm_message(int8_t alarm_code); + +// Prints miscellaneous feedback messages. +void report_feedback_message(uint8_t message_code); + +// Prints welcome message +void report_init_message(); + +// Prints Grbl help and current global settings +void report_grbl_help(); + +// Prints Grbl global settings +void report_grbl_settings(); + +// Prints an echo of the pre-parsed line received right before execution. +void report_echo_line_received(char *line); + +// Prints realtime status report +void report_realtime_status(); + +// Prints recorded probe position +void report_probe_parameters(); + +// Prints Grbl NGC parameters (coordinate offsets, probe) +void report_ngc_parameters(); + +// Prints current g-code parser mode state +void report_gcode_modes(); + +// Prints startup line +void report_startup_line(uint8_t n, char *line); + +// Prints build info and user info +void report_build_info(char *line); + +#endif diff --git a/src/serial.c b/src/serial.c new file mode 100755 index 0000000..56f84e0 --- /dev/null +++ b/src/serial.c @@ -0,0 +1,201 @@ +/* + serial.c - Low level functions for sending and recieving bytes via the serial port + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +uint8_t serial_rx_buffer[RX_BUFFER_SIZE]; +uint8_t serial_rx_buffer_head = 0; +volatile uint8_t serial_rx_buffer_tail = 0; + +uint8_t serial_tx_buffer[TX_BUFFER_SIZE]; +uint8_t serial_tx_buffer_head = 0; +volatile uint8_t serial_tx_buffer_tail = 0; + + +#ifdef ENABLE_XONXOFF + volatile uint8_t flow_ctrl = XON_SENT; // Flow control state variable +#endif + + +// Returns the number of bytes used in the RX serial buffer. +uint8_t serial_get_rx_buffer_count() +{ + uint8_t rtail = serial_rx_buffer_tail; // Copy to limit multiple calls to volatile + if (serial_rx_buffer_head >= rtail) { return(serial_rx_buffer_head-rtail); } + return (RX_BUFFER_SIZE - (rtail-serial_rx_buffer_head)); +} + + +// Returns the number of bytes used in the TX serial buffer. +// NOTE: Not used except for debugging and ensuring no TX bottlenecks. +uint8_t serial_get_tx_buffer_count() +{ + uint8_t ttail = serial_tx_buffer_tail; // Copy to limit multiple calls to volatile + if (serial_tx_buffer_head >= ttail) { return(serial_tx_buffer_head-ttail); } + return (TX_BUFFER_SIZE - (ttail-serial_tx_buffer_head)); +} + + +void serial_init() +{ + // Set baud rate + #if BAUD_RATE < 57600 + uint16_t UBRR0_value = ((F_CPU / (8L * BAUD_RATE)) - 1)/2 ; + UCSR0A &= ~(1 << U2X0); // baud doubler off - Only needed on Uno XXX + #else + uint16_t UBRR0_value = ((F_CPU / (4L * BAUD_RATE)) - 1)/2; + UCSR0A |= (1 << U2X0); // baud doubler on for high baud rates, i.e. 115200 + #endif + UBRR0H = UBRR0_value >> 8; + UBRR0L = UBRR0_value; + + // enable rx and tx + UCSR0B |= 1<= RX_BUFFER_FULL) && flow_ctrl == XON_SENT) { + flow_ctrl = SEND_XOFF; + UCSR0B |= (1 << UDRIE0); // Force TX + } + #endif + + } + //TODO: else alarm on overflow? + } +} + + +void serial_reset_read_buffer() +{ + serial_rx_buffer_tail = serial_rx_buffer_head; + + #ifdef ENABLE_XONXOFF + flow_ctrl = XON_SENT; + #endif +} diff --git a/src/serial.h b/src/serial.h new file mode 100755 index 0000000..4cdbcb0 --- /dev/null +++ b/src/serial.h @@ -0,0 +1,64 @@ +/* + serial.c - Low level functions for sending and recieving bytes via the serial port + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef serial_h +#define serial_h + + +#ifndef RX_BUFFER_SIZE + #define RX_BUFFER_SIZE 128 +#endif +#ifndef TX_BUFFER_SIZE + #define TX_BUFFER_SIZE 128 +#endif + +#define SERIAL_NO_DATA 0xff + +#ifdef ENABLE_XONXOFF + #define RX_BUFFER_FULL 96 // XOFF high watermark + #define RX_BUFFER_LOW 64 // XON low watermark + #define SEND_XOFF 1 + #define SEND_XON 2 + #define XOFF_SENT 3 + #define XON_SENT 4 + #define XOFF_CHAR 0x13 + #define XON_CHAR 0x11 +#endif + +void serial_init(); + +// Writes one byte to the TX serial buffer. Called by main program. +void serial_write(uint8_t data); + +// Fetches the first byte in the serial read buffer. Called by main program. +uint8_t serial_read(); + +// Reset and empty data in read buffer. Used by e-stop and reset. +void serial_reset_read_buffer(); + +// Returns the number of bytes used in the RX serial buffer. +uint8_t serial_get_rx_buffer_count(); + +// Returns the number of bytes used in the TX serial buffer. +// NOTE: Not used except for debugging and ensuring no TX bottlenecks. +uint8_t serial_get_tx_buffer_count(); + +#endif diff --git a/src/settings.c b/src/settings.c new file mode 100755 index 0000000..c85c3fb --- /dev/null +++ b/src/settings.c @@ -0,0 +1,323 @@ +/* + settings.c - eeprom configuration handling + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + +settings_t settings; + + +// Method to store startup lines into EEPROM +void settings_store_startup_line(uint8_t n, char *line) +{ + uint32_t addr = n*(LINE_BUFFER_SIZE+1)+EEPROM_ADDR_STARTUP_BLOCK; + memcpy_to_eeprom_with_checksum(addr,(char*)line, LINE_BUFFER_SIZE); +} + + +// Method to store build info into EEPROM +void settings_store_build_info(char *line) +{ + memcpy_to_eeprom_with_checksum(EEPROM_ADDR_BUILD_INFO,(char*)line, LINE_BUFFER_SIZE); +} + + +// Method to store coord data parameters into EEPROM +void settings_write_coord_data(uint8_t coord_select, float *coord_data) +{ + uint32_t addr = coord_select*(sizeof(float)*N_AXIS+1) + EEPROM_ADDR_PARAMETERS; + memcpy_to_eeprom_with_checksum(addr,(char*)coord_data, sizeof(float)*N_AXIS); +} + + +// Method to store Grbl global settings struct and version number into EEPROM +void write_global_settings() +{ + eeprom_put_char(0, SETTINGS_VERSION); + memcpy_to_eeprom_with_checksum(EEPROM_ADDR_GLOBAL, (char*)&settings, sizeof(settings_t)); +} + + +// Method to restore EEPROM-saved Grbl global settings back to defaults. +void settings_restore(uint8_t restore_flag) { + if (restore_flag & SETTINGS_RESTORE_DEFAULTS) { + settings.pulse_microseconds = DEFAULT_STEP_PULSE_MICROSECONDS; + settings.stepper_idle_lock_time = DEFAULT_STEPPER_IDLE_LOCK_TIME; + settings.step_invert_mask = DEFAULT_STEPPING_INVERT_MASK; + settings.dir_invert_mask = DEFAULT_DIRECTION_INVERT_MASK; + settings.status_report_mask = DEFAULT_STATUS_REPORT_MASK; + settings.junction_deviation = DEFAULT_JUNCTION_DEVIATION; + settings.arc_tolerance = DEFAULT_ARC_TOLERANCE; + settings.homing_dir_mask = DEFAULT_HOMING_DIR_MASK; + settings.homing_feed_rate = DEFAULT_HOMING_FEED_RATE; + settings.homing_seek_rate = DEFAULT_HOMING_SEEK_RATE; + settings.homing_debounce_delay = DEFAULT_HOMING_DEBOUNCE_DELAY; + settings.homing_pulloff = DEFAULT_HOMING_PULLOFF; + + settings.flags = 0; + if (DEFAULT_REPORT_INCHES) { settings.flags |= BITFLAG_REPORT_INCHES; } + if (DEFAULT_INVERT_ST_ENABLE) { settings.flags |= BITFLAG_INVERT_ST_ENABLE; } + if (DEFAULT_INVERT_LIMIT_PINS) { settings.flags |= BITFLAG_INVERT_LIMIT_PINS; } + if (DEFAULT_SOFT_LIMIT_ENABLE) { settings.flags |= BITFLAG_SOFT_LIMIT_ENABLE; } + if (DEFAULT_HARD_LIMIT_ENABLE) { settings.flags |= BITFLAG_HARD_LIMIT_ENABLE; } + if (DEFAULT_HOMING_ENABLE) { settings.flags |= BITFLAG_HOMING_ENABLE; } + + settings.steps_per_mm[X_AXIS] = DEFAULT_X_STEPS_PER_MM; + settings.steps_per_mm[Y_AXIS] = DEFAULT_Y_STEPS_PER_MM; + settings.steps_per_mm[Z_AXIS] = DEFAULT_Z_STEPS_PER_MM; + settings.max_rate[X_AXIS] = DEFAULT_X_MAX_RATE; + settings.max_rate[Y_AXIS] = DEFAULT_Y_MAX_RATE; + settings.max_rate[Z_AXIS] = DEFAULT_Z_MAX_RATE; + settings.acceleration[X_AXIS] = DEFAULT_X_ACCELERATION; + settings.acceleration[Y_AXIS] = DEFAULT_Y_ACCELERATION; + settings.acceleration[Z_AXIS] = DEFAULT_Z_ACCELERATION; + settings.max_travel[X_AXIS] = (-DEFAULT_X_MAX_TRAVEL); + settings.max_travel[Y_AXIS] = (-DEFAULT_Y_MAX_TRAVEL); + settings.max_travel[Z_AXIS] = (-DEFAULT_Z_MAX_TRAVEL); + + write_global_settings(); + } + + if (restore_flag & SETTINGS_RESTORE_PARAMETERS) { + uint8_t idx; + float coord_data[N_AXIS]; + memset(&coord_data, 0, sizeof(coord_data)); + for (idx=0; idx <= SETTING_INDEX_NCOORD; idx++) { settings_write_coord_data(idx, coord_data); } + } + + if (restore_flag & SETTINGS_RESTORE_STARTUP_LINES) { + #if N_STARTUP_LINE > 0 + eeprom_put_char(EEPROM_ADDR_STARTUP_BLOCK, 0); + #endif + #if N_STARTUP_LINE > 1 + eeprom_put_char(EEPROM_ADDR_STARTUP_BLOCK+(LINE_BUFFER_SIZE+1), 0); + #endif + } + + if (restore_flag & SETTINGS_RESTORE_BUILD_INFO) { eeprom_put_char(EEPROM_ADDR_BUILD_INFO , 0); } +} + + +// Reads startup line from EEPROM. Updated pointed line string data. +uint8_t settings_read_startup_line(uint8_t n, char *line) +{ + uint32_t addr = n*(LINE_BUFFER_SIZE+1)+EEPROM_ADDR_STARTUP_BLOCK; + if (!(memcpy_from_eeprom_with_checksum((char*)line, addr, LINE_BUFFER_SIZE))) { + // Reset line with default value + line[0] = 0; // Empty line + settings_store_startup_line(n, line); + return(false); + } + return(true); +} + + +// Reads startup line from EEPROM. Updated pointed line string data. +uint8_t settings_read_build_info(char *line) +{ + if (!(memcpy_from_eeprom_with_checksum((char*)line, EEPROM_ADDR_BUILD_INFO, LINE_BUFFER_SIZE))) { + // Reset line with default value + line[0] = 0; // Empty line + settings_store_build_info(line); + return(false); + } + return(true); +} + + +// Read selected coordinate data from EEPROM. Updates pointed coord_data value. +uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data) +{ + uint32_t addr = coord_select*(sizeof(float)*N_AXIS+1) + EEPROM_ADDR_PARAMETERS; + if (!(memcpy_from_eeprom_with_checksum((char*)coord_data, addr, sizeof(float)*N_AXIS))) { + // Reset with default zero vector + clear_vector_float(coord_data); + settings_write_coord_data(coord_select,coord_data); + return(false); + } + return(true); +} + + +// Reads Grbl global settings struct from EEPROM. +uint8_t read_global_settings() { + // Check version-byte of eeprom + uint8_t version = eeprom_get_char(0); + if (version == SETTINGS_VERSION) { + // Read settings-record and check checksum + if (!(memcpy_from_eeprom_with_checksum((char*)&settings, EEPROM_ADDR_GLOBAL, sizeof(settings_t)))) { + return(false); + } + } else { + return(false); + } + return(true); +} + + +// A helper method to set settings from command line +uint8_t settings_store_global_setting(uint8_t parameter, float value) { + if (value < 0.0) { return(STATUS_NEGATIVE_VALUE); } + if (parameter >= AXIS_SETTINGS_START_VAL) { + // Store axis configuration. Axis numbering sequence set by AXIS_SETTING defines. + // NOTE: Ensure the setting index corresponds to the report.c settings printout. + parameter -= AXIS_SETTINGS_START_VAL; + uint8_t set_idx = 0; + while (set_idx < AXIS_N_SETTINGS) { + if (parameter < N_AXIS) { + // Valid axis setting found. + switch (set_idx) { + case 0: + #ifdef MAX_STEP_RATE_HZ + if (value*settings.max_rate[parameter] > (MAX_STEP_RATE_HZ*60.0)) { return(STATUS_MAX_STEP_RATE_EXCEEDED); } + #endif + settings.steps_per_mm[parameter] = value; + break; + case 1: + #ifdef MAX_STEP_RATE_HZ + if (value*settings.steps_per_mm[parameter] > (MAX_STEP_RATE_HZ*60.0)) { return(STATUS_MAX_STEP_RATE_EXCEEDED); } + #endif + settings.max_rate[parameter] = value; + break; + case 2: settings.acceleration[parameter] = value*60*60; break; // Convert to mm/min^2 for grbl internal use. + case 3: settings.max_travel[parameter] = -value; break; // Store as negative for grbl internal use. + } + break; // Exit while-loop after setting has been configured and proceed to the EEPROM write call. + } else { + set_idx++; + // If axis index greater than N_AXIS or setting index greater than number of axis settings, error out. + if ((parameter < AXIS_SETTINGS_INCREMENT) || (set_idx == AXIS_N_SETTINGS)) { return(STATUS_INVALID_STATEMENT); } + parameter -= AXIS_SETTINGS_INCREMENT; + } + } + } else { + // Store non-axis Grbl settings + uint8_t int_value = trunc(value); + switch(parameter) { + case 0: + if (int_value < 3) { return(STATUS_SETTING_STEP_PULSE_MIN); } + settings.pulse_microseconds = int_value; break; + case 1: settings.stepper_idle_lock_time = int_value; break; + case 2: + settings.step_invert_mask = int_value; + st_generate_step_dir_invert_masks(); // Regenerate step and direction port invert masks. + break; + case 3: + settings.dir_invert_mask = int_value; + st_generate_step_dir_invert_masks(); // Regenerate step and direction port invert masks. + break; + case 4: // Reset to ensure change. Immediate re-init may cause problems. + if (int_value) { settings.flags |= BITFLAG_INVERT_ST_ENABLE; } + else { settings.flags &= ~BITFLAG_INVERT_ST_ENABLE; } + break; + case 5: // Reset to ensure change. Immediate re-init may cause problems. + if (int_value) { settings.flags |= BITFLAG_INVERT_LIMIT_PINS; } + else { settings.flags &= ~BITFLAG_INVERT_LIMIT_PINS; } + break; + case 6: // Reset to ensure change. Immediate re-init may cause problems. + if (int_value) { settings.flags |= BITFLAG_INVERT_PROBE_PIN; } + else { settings.flags &= ~BITFLAG_INVERT_PROBE_PIN; } + break; + case 10: settings.status_report_mask = int_value; break; + case 11: settings.junction_deviation = value; break; + case 12: settings.arc_tolerance = value; break; + case 13: + if (int_value) { settings.flags |= BITFLAG_REPORT_INCHES; } + else { settings.flags &= ~BITFLAG_REPORT_INCHES; } + break; + case 20: + if (int_value) { + if (bit_isfalse(settings.flags, BITFLAG_HOMING_ENABLE)) { return(STATUS_SOFT_LIMIT_ERROR); } + settings.flags |= BITFLAG_SOFT_LIMIT_ENABLE; + } else { settings.flags &= ~BITFLAG_SOFT_LIMIT_ENABLE; } + break; + case 21: + if (int_value) { settings.flags |= BITFLAG_HARD_LIMIT_ENABLE; } + else { settings.flags &= ~BITFLAG_HARD_LIMIT_ENABLE; } + limits_init(); // Re-init to immediately change. NOTE: Nice to have but could be problematic later. + break; + case 22: + if (int_value) { settings.flags |= BITFLAG_HOMING_ENABLE; } + else { + settings.flags &= ~BITFLAG_HOMING_ENABLE; + settings.flags &= ~BITFLAG_SOFT_LIMIT_ENABLE; // Force disable soft-limits. + } + break; + case 23: settings.homing_dir_mask = int_value; break; + case 24: settings.homing_feed_rate = value; break; + case 25: settings.homing_seek_rate = value; break; + case 26: settings.homing_debounce_delay = int_value; break; + case 27: settings.homing_pulloff = value; break; + default: + return(STATUS_INVALID_STATEMENT); + } + } + write_global_settings(); + return(STATUS_OK); +} + + +// Initialize the config subsystem +void settings_init() { + if(!read_global_settings()) { + report_status_message(STATUS_SETTING_READ_FAIL); + settings_restore(SETTINGS_RESTORE_ALL); // Force restore all EEPROM data. + report_grbl_settings(); + } + + // NOTE: Checking paramater data, startup lines, and build info string should be done here, + // but it seems fairly redundant. Each of these can be manually checked and reset or restored. + // Check all parameter data into a dummy variable. If error, reset to zero, otherwise do nothing. + // float coord_data[N_AXIS]; + // uint8_t i; + // for (i=0; i<=SETTING_INDEX_NCOORD; i++) { + // if (!settings_read_coord_data(i, coord_data)) { + // report_status_message(STATUS_SETTING_READ_FAIL); + // } + // } + // NOTE: Startup lines are checked and executed by protocol_main_loop at the end of initialization. +} + + +// Returns step pin mask according to Grbl internal axis indexing. +uint8_t get_step_pin_mask(uint8_t axis_idx) +{ + if ( axis_idx == X_AXIS ) { return((1<. +*/ + +#ifndef settings_h +#define settings_h + +#include "grbl.h" + + +// Version of the EEPROM data. Will be used to migrate existing data from older versions of Grbl +// when firmware is upgraded. Always stored in byte 0 of eeprom +#define SETTINGS_VERSION 9 // NOTE: Check settings_reset() when moving to next version. + +// Define bit flag masks for the boolean settings in settings.flag. +#define BITFLAG_REPORT_INCHES bit(0) +// #define BITFLAG_AUTO_START bit(1) // Obsolete. Don't alter to keep back compatibility. +#define BITFLAG_INVERT_ST_ENABLE bit(2) +#define BITFLAG_HARD_LIMIT_ENABLE bit(3) +#define BITFLAG_HOMING_ENABLE bit(4) +#define BITFLAG_SOFT_LIMIT_ENABLE bit(5) +#define BITFLAG_INVERT_LIMIT_PINS bit(6) +#define BITFLAG_INVERT_PROBE_PIN bit(7) + +// Define status reporting boolean enable bit flags in settings.status_report_mask +#define BITFLAG_RT_STATUS_MACHINE_POSITION bit(0) +#define BITFLAG_RT_STATUS_WORK_POSITION bit(1) +#define BITFLAG_RT_STATUS_PLANNER_BUFFER bit(2) +#define BITFLAG_RT_STATUS_SERIAL_RX bit(3) +#define BITFLAG_RT_STATUS_LIMIT_PINS bit(4) + +// Define settings restore bitflags. +#define SETTINGS_RESTORE_ALL 0xFF // All bitflags +#define SETTINGS_RESTORE_DEFAULTS bit(0) +#define SETTINGS_RESTORE_PARAMETERS bit(1) +#define SETTINGS_RESTORE_STARTUP_LINES bit(2) +#define SETTINGS_RESTORE_BUILD_INFO bit(3) + +// Define EEPROM memory address location values for Grbl settings and parameters +// NOTE: The Atmega328p has 1KB EEPROM. The upper half is reserved for parameters and +// the startup script. The lower half contains the global settings and space for future +// developments. +#define EEPROM_ADDR_GLOBAL 2049U +#define EEPROM_ADDR_PARAMETERS 2560U +#define EEPROM_ADDR_STARTUP_BLOCK 2816U +#define EEPROM_ADDR_BUILD_INFO 2990U + +// Define EEPROM address indexing for coordinate parameters +#define N_COORDINATE_SYSTEM 6 // Number of supported work coordinate systems (from index 1) +#define SETTING_INDEX_NCOORD N_COORDINATE_SYSTEM+1 // Total number of system stored (from index 0) +// NOTE: Work coordinate indices are (0=G54, 1=G55, ... , 6=G59) +#define SETTING_INDEX_G28 N_COORDINATE_SYSTEM // Home position 1 +#define SETTING_INDEX_G30 N_COORDINATE_SYSTEM+1 // Home position 2 +// #define SETTING_INDEX_G92 N_COORDINATE_SYSTEM+2 // Coordinate offset (G92.2,G92.3 not supported) + +// Define Grbl axis settings numbering scheme. Starts at START_VAL, every INCREMENT, over N_SETTINGS. +#define AXIS_N_SETTINGS 4 +#define AXIS_SETTINGS_START_VAL 100 // NOTE: Reserving settings values >= 100 for axis settings. Up to 255. +#define AXIS_SETTINGS_INCREMENT 10 // Must be greater than the number of axis settings + +// Global persistent settings (Stored from byte EEPROM_ADDR_GLOBAL onwards) +typedef struct { + // Axis settings + float steps_per_mm[N_AXIS]; + float max_rate[N_AXIS]; + float acceleration[N_AXIS]; + float max_travel[N_AXIS]; + + // Remaining Grbl settings + uint8_t pulse_microseconds; + uint8_t step_invert_mask; + uint8_t dir_invert_mask; + uint8_t stepper_idle_lock_time; // If max value 255, steppers do not disable. + uint8_t status_report_mask; // Mask to indicate desired report data. + float junction_deviation; + float arc_tolerance; + + uint8_t flags; // Contains default boolean settings + + uint8_t homing_dir_mask; + float homing_feed_rate; + float homing_seek_rate; + uint16_t homing_debounce_delay; + float homing_pulloff; +} settings_t; +extern settings_t settings; + +// Initialize the configuration subsystem (load settings from EEPROM) +void settings_init(); + +// Helper function to clear and restore EEPROM defaults +void settings_restore(uint8_t restore_flag); + +// A helper method to set new settings from command line +uint8_t settings_store_global_setting(uint8_t parameter, float value); + +// Stores the protocol line variable as a startup line in EEPROM +void settings_store_startup_line(uint8_t n, char *line); + +// Reads an EEPROM startup line to the protocol line variable +uint8_t settings_read_startup_line(uint8_t n, char *line); + +// Stores build info user-defined string +void settings_store_build_info(char *line); + +// Reads build info user-defined string +uint8_t settings_read_build_info(char *line); + +// Writes selected coordinate data to EEPROM +void settings_write_coord_data(uint8_t coord_select, float *coord_data); + +// Reads selected coordinate data from EEPROM +uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data); + +// Returns the step pin mask according to Grbl's internal axis numbering +uint8_t get_step_pin_mask(uint8_t i); + +// Returns the direction pin mask according to Grbl's internal axis numbering +uint8_t get_direction_pin_mask(uint8_t i); + +// Returns the limit pin mask according to Grbl's internal axis numbering +uint8_t get_limit_pin_mask(uint8_t i); + + +#endif diff --git a/src/spindle_control.c b/src/spindle_control.c new file mode 100755 index 0000000..b2b6eca --- /dev/null +++ b/src/spindle_control.c @@ -0,0 +1,141 @@ +/* + spindle_control.c - spindle control methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +void spindle_init() +{ + // Configure variable spindle PWM and enable pin, if requried. On the Uno, PWM and enable are + // combined unless configured otherwise. + #ifdef VARIABLE_SPINDLE + SPINDLE_PWM_DDR |= (1< SPINDLE_RPM_RANGE ) { rpm = SPINDLE_RPM_RANGE; } // Prevent integer overflow + } + current_pwm = floor( rpm*(PWM_MAX_VALUE/SPINDLE_RPM_RANGE) + 0.5); + #ifdef MINIMUM_SPINDLE_PWM + if (current_pwm < MINIMUM_SPINDLE_PWM) { current_pwm = MINIMUM_SPINDLE_PWM; } + #endif + OCR_REGISTER = current_pwm; // Set PWM pin output + + // On the Uno, spindle enable and PWM are shared, unless otherwise specified. + #if defined(CPU_MAP_ATMEGA2560) || defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) + #ifdef INVERT_SPINDLE_ENABLE_PIN + SPINDLE_ENABLE_PORT &= ~(1<. +*/ + +#ifndef spindle_control_h +#define spindle_control_h + + +// Initializes spindle pins and hardware PWM, if enabled. +void spindle_init(); + +// Sets spindle direction and spindle rpm via PWM, if enabled. +void spindle_run(uint8_t direction, float rpm); + +void spindle_set_state(uint8_t state, float rpm); + +// Kills spindle. +void spindle_stop(); + +#endif diff --git a/src/stepper.c b/src/stepper.c new file mode 100755 index 0000000..0ea5812 --- /dev/null +++ b/src/stepper.c @@ -0,0 +1,928 @@ +/* + stepper.c - stepper motor driver: executes motion plans using stepper motors + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +// Some useful constants. +#define DT_SEGMENT (1.0/(ACCELERATION_TICKS_PER_SECOND*60.0)) // min/segment +#define REQ_MM_INCREMENT_SCALAR 1.25 +#define RAMP_ACCEL 0 +#define RAMP_CRUISE 1 +#define RAMP_DECEL 2 + +// Define Adaptive Multi-Axis Step-Smoothing(AMASS) levels and cutoff frequencies. The highest level +// frequency bin starts at 0Hz and ends at its cutoff frequency. The next lower level frequency bin +// starts at the next higher cutoff frequency, and so on. The cutoff frequencies for each level must +// be considered carefully against how much it over-drives the stepper ISR, the accuracy of the 16-bit +// timer, and the CPU overhead. Level 0 (no AMASS, normal operation) frequency bin starts at the +// Level 1 cutoff frequency and up to as fast as the CPU allows (over 30kHz in limited testing). +// NOTE: AMASS cutoff frequency multiplied by ISR overdrive factor must not exceed maximum step frequency. +// NOTE: Current settings are set to overdrive the ISR to no more than 16kHz, balancing CPU overhead +// and timer accuracy. Do not alter these settings unless you know what you are doing. +#define MAX_AMASS_LEVEL 3 +// AMASS_LEVEL0: Normal operation. No AMASS. No upper cutoff frequency. Starts at LEVEL1 cutoff frequency. +#define AMASS_LEVEL1 (F_CPU/8000) // Over-drives ISR (x2). Defined as F_CPU/(Cutoff frequency in Hz) +#define AMASS_LEVEL2 (F_CPU/4000) // Over-drives ISR (x4) +#define AMASS_LEVEL3 (F_CPU/2000) // Over-drives ISR (x8) + + +// Stores the planner block Bresenham algorithm execution data for the segments in the segment +// buffer. Normally, this buffer is partially in-use, but, for the worst case scenario, it will +// never exceed the number of accessible stepper buffer segments (SEGMENT_BUFFER_SIZE-1). +// NOTE: This data is copied from the prepped planner blocks so that the planner blocks may be +// discarded when entirely consumed and completed by the segment buffer. Also, AMASS alters this +// data for its own use. +typedef struct { + uint8_t direction_bits; + uint32_t steps[N_AXIS]; + uint32_t step_event_count; +} st_block_t; +static st_block_t st_block_buffer[SEGMENT_BUFFER_SIZE-1]; + +// Primary stepper segment ring buffer. Contains small, short line segments for the stepper +// algorithm to execute, which are "checked-out" incrementally from the first block in the +// planner buffer. Once "checked-out", the steps in the segments buffer cannot be modified by +// the planner, where the remaining planner block steps still can. +typedef struct { + uint16_t n_step; // Number of step events to be executed for this segment + uint8_t st_block_index; // Stepper block data index. Uses this information to execute this segment. + uint16_t cycles_per_tick; // Step distance traveled per ISR tick, aka step rate. + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + uint8_t amass_level; // Indicates AMASS level for the ISR to execute this segment + #else + uint8_t prescaler; // Without AMASS, a prescaler is required to adjust for slow timing. + #endif +} segment_t; +static segment_t segment_buffer[SEGMENT_BUFFER_SIZE]; + +// Stepper ISR data struct. Contains the running data for the main stepper ISR. +typedef struct { + // Used by the bresenham line algorithm + uint32_t counter_x, // Counter variables for the bresenham line tracer + counter_y, + counter_z; + #ifdef STEP_PULSE_DELAY + uint8_t step_bits; // Stores out_bits output to complete the step pulse delay + #endif + + uint8_t execute_step; // Flags step execution for each interrupt. + uint8_t step_pulse_time; // Step pulse reset time after step rise + uint8_t step_outbits; // The next stepping-bits to be output + uint8_t dir_outbits; + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + uint32_t steps[N_AXIS]; + #endif + + uint16_t step_count; // Steps remaining in line segment motion + uint8_t exec_block_index; // Tracks the current st_block index. Change indicates new block. + st_block_t *exec_block; // Pointer to the block data for the segment being executed + segment_t *exec_segment; // Pointer to the segment being executed +} stepper_t; +static stepper_t st; + +// Step segment ring buffer indices +static volatile uint8_t segment_buffer_tail; +static uint8_t segment_buffer_head; +static uint8_t segment_next_head; + +// Step and direction port invert masks. +static uint8_t step_port_invert_mask; +static uint8_t dir_port_invert_mask; + +// Used to avoid ISR nesting of the "Stepper Driver Interrupt". Should never occur though. +static volatile uint8_t busy; + +// Pointers for the step segment being prepped from the planner buffer. Accessed only by the +// main program. Pointers may be planning segments or planner blocks ahead of what being executed. +static plan_block_t *pl_block; // Pointer to the planner block being prepped +static st_block_t *st_prep_block; // Pointer to the stepper block data being prepped + +// Segment preparation data struct. Contains all the necessary information to compute new segments +// based on the current executing planner block. +typedef struct { + uint8_t st_block_index; // Index of stepper common data block being prepped + uint8_t flag_partial_block; // Flag indicating the last block completed. Time to load a new one. + + float steps_remaining; + float step_per_mm; // Current planner block step/millimeter conversion scalar + float req_mm_increment; + float dt_remainder; + + uint8_t ramp_type; // Current segment ramp state + float mm_complete; // End of velocity profile from end of current planner block in (mm). + // NOTE: This value must coincide with a step(no mantissa) when converted. + float current_speed; // Current speed at the end of the segment buffer (mm/min) + float maximum_speed; // Maximum speed of executing block. Not always nominal speed. (mm/min) + float exit_speed; // Exit speed of executing block (mm/min) + float accelerate_until; // Acceleration ramp end measured from end of block (mm) + float decelerate_after; // Deceleration ramp start measured from end of block (mm) +} st_prep_t; +static st_prep_t prep; + + +/* BLOCK VELOCITY PROFILE DEFINITION + __________________________ + /| |\ _________________ ^ + / | | \ /| |\ | + / | | \ / | | \ s + / | | | | | \ p + / | | | | | \ e + +-----+------------------------+---+--+---------------+----+ e + | BLOCK 1 ^ BLOCK 2 | d + | + time -----> EXAMPLE: Block 2 entry speed is at max junction velocity + + The planner block buffer is planned assuming constant acceleration velocity profiles and are + continuously joined at block junctions as shown above. However, the planner only actively computes + the block entry speeds for an optimal velocity plan, but does not compute the block internal + velocity profiles. These velocity profiles are computed ad-hoc as they are executed by the + stepper algorithm and consists of only 7 possible types of profiles: cruise-only, cruise- + deceleration, acceleration-cruise, acceleration-only, deceleration-only, full-trapezoid, and + triangle(no cruise). + + maximum_speed (< nominal_speed) -> + + +--------+ <- maximum_speed (= nominal_speed) /|\ + / \ / | \ + current_speed -> + \ / | + <- exit_speed + | + <- exit_speed / | | + +-------------+ current_speed -> +----+--+ + time --> ^ ^ ^ ^ + | | | | + decelerate_after(in mm) decelerate_after(in mm) + ^ ^ ^ ^ + | | | | + accelerate_until(in mm) accelerate_until(in mm) + + The step segment buffer computes the executing block velocity profile and tracks the critical + parameters for the stepper algorithm to accurately trace the profile. These critical parameters + are shown and defined in the above illustration. +*/ + + +// Stepper state initialization. Cycle should only start if the st.cycle_start flag is +// enabled. Startup init and limits call this function but shouldn't start the cycle. +void st_wake_up() +{ + // Enable stepper drivers. + //if (bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)) { STEPPERS_DISABLE_PORT |= (1<> 3); + // Set delay between direction pin write and step command. + OCR0A = -(((settings.pulse_microseconds)*TICKS_PER_MICROSECOND) >> 3); + #else // Normal operation + // Set step pulse time. Ad hoc computation from oscilloscope. Uses two's complement. + st.step_pulse_time = -(((settings.pulse_microseconds-2)*TICKS_PER_MICROSECOND) >> 3); + #endif + + // Enable Stepper Driver Interrupt + TIMSK1 |= (1<>1; + // Then pulse the stepping pins + #ifdef STEP_PULSE_DELAY + + //st.step_bits = (STEP_PORT & ~STEP_MASK) | st.step_outbits; // Store out_bits to prevent overwriting. + #else // Normal operation + //STEP_PORT = (STEP_PORT & ~STEP_MASK) | st.step_outbits; + + ARML_STEP_PORT = (ARML_STEP_PORT & ~ARML_STEP_MASK) | (st.step_outbits & (1<>2; + #endif + + // Enable step pulse reset timer so that The Stepper Port Reset Interrupt can reset the signal after + // exactly settings.pulse_microseconds microseconds, independent of the main Timer1 prescaler. + TCNT0 = st.step_pulse_time; // Reload Timer0 counter + TCCR0B = (1<prescaler<cycles_per_tick; + st.step_count = st.exec_segment->n_step; // NOTE: Can sometimes be zero when moving slow. + // If the new segment starts a new planner block, initialize stepper variables and counters. + // NOTE: When the segment data index changes, this indicates a new planner block. + if ( st.exec_block_index != st.exec_segment->st_block_index ) { + st.exec_block_index = st.exec_segment->st_block_index; + st.exec_block = &st_block_buffer[st.exec_block_index]; + + // Initialize Bresenham line and distance counters + st.counter_x = st.counter_y = st.counter_z = (st.exec_block->step_event_count >> 1); + } + st.dir_outbits = st.exec_block->direction_bits ^ dir_port_invert_mask; + + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + // With AMASS enabled, adjust Bresenham axis increment counters according to AMASS level. + st.steps[X_AXIS] = st.exec_block->steps[X_AXIS] >> st.exec_segment->amass_level; + st.steps[Y_AXIS] = st.exec_block->steps[Y_AXIS] >> st.exec_segment->amass_level; + st.steps[Z_AXIS] = st.exec_block->steps[Z_AXIS] >> st.exec_segment->amass_level; + #endif + + } else { + // Segment buffer empty. Shutdown. + st_go_idle(); + bit_true_atomic(sys_rt_exec_state,EXEC_CYCLE_STOP); // Flag main program for cycle end + return; // Nothing to do but exit. + } + } + + + // Check probing state. + probe_state_monitor(); + + // Reset step out bits. + st.step_outbits = 0; + + // Execute step displacement profile by Bresenham line algorithm + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + st.counter_x += st.steps[X_AXIS]; + #else + st.counter_x += st.exec_block->steps[X_AXIS]; + #endif + if (st.counter_x > st.exec_block->step_event_count) { + st.step_outbits |= (1<step_event_count; + if (st.exec_block->direction_bits & (1<steps[Y_AXIS]; + #endif + if (st.counter_y > st.exec_block->step_event_count) { + st.step_outbits |= (1<step_event_count; + if (st.exec_block->direction_bits & (1<steps[Z_AXIS]; + #endif + if (st.counter_z > st.exec_block->step_event_count) { + st.step_outbits |= (1<step_event_count; + if (st.exec_block->direction_bits & (1<>2; + + TCCR0B = 0; // Disable Timer0 to prevent re-entering this interrupt when it's not needed. +} +#ifdef STEP_PULSE_DELAY + // This interrupt is used only when STEP_PULSE_DELAY is enabled. Here, the step pulse is + // initiated after the STEP_PULSE_DELAY time period has elapsed. The ISR TIMER2_OVF interrupt + // will then trigger after the appropriate settings.pulse_microseconds, as in normal operation. + // The new timing between direction, step pulse, and step complete events are setup in the + // st_wake_up() routine. + ISR(TIMER0_COMPA_vect) + { + //STEP_PORT = st.step_bits; // Begin step pulse. + // >2; + } +#endif + + +// Generates the step and direction port invert masks used in the Stepper Interrupt Driver. +void st_generate_step_dir_invert_masks() +{ + uint8_t idx; + step_port_invert_mask = 0; + dir_port_invert_mask = 0; + for (idx=0; idx>2; + + ARML_DIRECTION_PORT = (ARML_DIRECTION_PORT & ~ARML_DIRECTION_MASK) | (dir_port_invert_mask & (1<>1; +} + + +// Initialize and start the stepper motor subsystem +void stepper_init() +{ + // Configure step and direction interface pins +// STEP_DDR |= STEP_MASK; +// STEPPERS_DISABLE_DDR |= 1<entry_speed_sqr = prep.current_speed*prep.current_speed; // Update entry speed. + pl_block = NULL; // Flag st_prep_segment() to load new velocity profile. + } +} + + +/* Prepares step segment buffer. Continuously called from main program. + + The segment buffer is an intermediary buffer interface between the execution of steps + by the stepper algorithm and the velocity profiles generated by the planner. The stepper + algorithm only executes steps within the segment buffer and is filled by the main program + when steps are "checked-out" from the first block in the planner buffer. This keeps the + step execution and planning optimization processes atomic and protected from each other. + The number of steps "checked-out" from the planner buffer and the number of segments in + the segment buffer is sized and computed such that no operation in the main program takes + longer than the time it takes the stepper algorithm to empty it before refilling it. + Currently, the segment buffer conservatively holds roughly up to 40-50 msec of steps. + NOTE: Computation units are in steps, millimeters, and minutes. +*/ +void st_prep_buffer() +{ + + if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { + // Check if we still need to generate more segments for a motion suspend. + if (prep.current_speed == 0.0) { return; } // Nothing to do. Bail. + } + + while (segment_buffer_tail != segment_next_head) { // Check if we need to fill the buffer. + + // Determine if we need to load a new planner block or if the block has been replanned. + if (pl_block == NULL) { + pl_block = plan_get_current_block(); // Query planner for a queued block + if (pl_block == NULL) { return; } // No planner blocks. Exit. + + // Check if the segment buffer completed the last planner block. If so, load the Bresenham + // data for the block. If not, we are still mid-block and the velocity profile was updated. + if (prep.flag_partial_block) { + prep.flag_partial_block = false; // Reset flag + } else { + // Increment stepper common data index to store new planner block data. + if ( ++prep.st_block_index == (SEGMENT_BUFFER_SIZE-1) ) { prep.st_block_index = 0; } + + // Prepare and copy Bresenham algorithm segment data from the new planner block, so that + // when the segment buffer completes the planner block, it may be discarded when the + // segment buffer finishes the prepped block, but the stepper ISR is still executing it. + st_prep_block = &st_block_buffer[prep.st_block_index]; + st_prep_block->direction_bits = pl_block->direction_bits; + #ifndef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + st_prep_block->steps[X_AXIS] = pl_block->steps[X_AXIS]; + st_prep_block->steps[Y_AXIS] = pl_block->steps[Y_AXIS]; + st_prep_block->steps[Z_AXIS] = pl_block->steps[Z_AXIS]; + st_prep_block->step_event_count = pl_block->step_event_count; + #else + // With AMASS enabled, simply bit-shift multiply all Bresenham data by the max AMASS + // level, such that we never divide beyond the original data anywhere in the algorithm. + // If the original data is divided, we can lose a step from integer roundoff. + st_prep_block->steps[X_AXIS] = pl_block->steps[X_AXIS] << MAX_AMASS_LEVEL; + st_prep_block->steps[Y_AXIS] = pl_block->steps[Y_AXIS] << MAX_AMASS_LEVEL; + st_prep_block->steps[Z_AXIS] = pl_block->steps[Z_AXIS] << MAX_AMASS_LEVEL; + st_prep_block->step_event_count = pl_block->step_event_count << MAX_AMASS_LEVEL; + #endif + + // Initialize segment buffer data for generating the segments. + prep.steps_remaining = pl_block->step_event_count; + prep.step_per_mm = prep.steps_remaining/pl_block->millimeters; + prep.req_mm_increment = REQ_MM_INCREMENT_SCALAR/prep.step_per_mm; + + prep.dt_remainder = 0.0; // Reset for new planner block + + if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { + // Override planner block entry speed and enforce deceleration during feed hold. + prep.current_speed = prep.exit_speed; + pl_block->entry_speed_sqr = prep.exit_speed*prep.exit_speed; + } + else { prep.current_speed = sqrt(pl_block->entry_speed_sqr); } + } + + /* --------------------------------------------------------------------------------- + Compute the velocity profile of a new planner block based on its entry and exit + speeds, or recompute the profile of a partially-completed planner block if the + planner has updated it. For a commanded forced-deceleration, such as from a feed + hold, override the planner velocities and decelerate to the target exit speed. + */ + prep.mm_complete = 0.0; // Default velocity profile complete at 0.0mm from end of block. + float inv_2_accel = 0.5/pl_block->acceleration; + if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { // [Forced Deceleration to Zero Velocity] + // Compute velocity profile parameters for a feed hold in-progress. This profile overrides + // the planner block profile, enforcing a deceleration to zero speed. + prep.ramp_type = RAMP_DECEL; + // Compute decelerate distance relative to end of block. + float decel_dist = pl_block->millimeters - inv_2_accel*pl_block->entry_speed_sqr; + if (decel_dist < 0.0) { + // Deceleration through entire planner block. End of feed hold is not in this block. + prep.exit_speed = sqrt(pl_block->entry_speed_sqr-2*pl_block->acceleration*pl_block->millimeters); + } else { + prep.mm_complete = decel_dist; // End of feed hold. + prep.exit_speed = 0.0; + } + } else { // [Normal Operation] + // Compute or recompute velocity profile parameters of the prepped planner block. + prep.ramp_type = RAMP_ACCEL; // Initialize as acceleration ramp. + prep.accelerate_until = pl_block->millimeters; + prep.exit_speed = plan_get_exec_block_exit_speed(); + float exit_speed_sqr = prep.exit_speed*prep.exit_speed; + float intersect_distance = + 0.5*(pl_block->millimeters+inv_2_accel*(pl_block->entry_speed_sqr-exit_speed_sqr)); + if (intersect_distance > 0.0) { + if (intersect_distance < pl_block->millimeters) { // Either trapezoid or triangle types + // NOTE: For acceleration-cruise and cruise-only types, following calculation will be 0.0. + prep.decelerate_after = inv_2_accel*(pl_block->nominal_speed_sqr-exit_speed_sqr); + if (prep.decelerate_after < intersect_distance) { // Trapezoid type + prep.maximum_speed = sqrt(pl_block->nominal_speed_sqr); + if (pl_block->entry_speed_sqr == pl_block->nominal_speed_sqr) { + // Cruise-deceleration or cruise-only type. + prep.ramp_type = RAMP_CRUISE; + } else { + // Full-trapezoid or acceleration-cruise types + prep.accelerate_until -= inv_2_accel*(pl_block->nominal_speed_sqr-pl_block->entry_speed_sqr); + } + } else { // Triangle type + prep.accelerate_until = intersect_distance; + prep.decelerate_after = intersect_distance; + prep.maximum_speed = sqrt(2.0*pl_block->acceleration*intersect_distance+exit_speed_sqr); + } + } else { // Deceleration-only type + prep.ramp_type = RAMP_DECEL; + // prep.decelerate_after = pl_block->millimeters; + prep.maximum_speed = prep.current_speed; + } + } else { // Acceleration-only type + prep.accelerate_until = 0.0; + // prep.decelerate_after = 0.0; + prep.maximum_speed = prep.exit_speed; + } + } + } + + // Initialize new segment + segment_t *prep_segment = &segment_buffer[segment_buffer_head]; + + // Set new segment to point to the current segment data block. + prep_segment->st_block_index = prep.st_block_index; + + /*------------------------------------------------------------------------------------ + Compute the average velocity of this new segment by determining the total distance + traveled over the segment time DT_SEGMENT. The following code first attempts to create + a full segment based on the current ramp conditions. If the segment time is incomplete + when terminating at a ramp state change, the code will continue to loop through the + progressing ramp states to fill the remaining segment execution time. However, if + an incomplete segment terminates at the end of the velocity profile, the segment is + considered completed despite having a truncated execution time less than DT_SEGMENT. + The velocity profile is always assumed to progress through the ramp sequence: + acceleration ramp, cruising state, and deceleration ramp. Each ramp's travel distance + may range from zero to the length of the block. Velocity profiles can end either at + the end of planner block (typical) or mid-block at the end of a forced deceleration, + such as from a feed hold. + */ + float dt_max = DT_SEGMENT; // Maximum segment time + float dt = 0.0; // Initialize segment time + float time_var = dt_max; // Time worker variable + float mm_var; // mm-Distance worker variable + float speed_var; // Speed worker variable + float mm_remaining = pl_block->millimeters; // New segment distance from end of block. + float minimum_mm = mm_remaining-prep.req_mm_increment; // Guarantee at least one step. + if (minimum_mm < 0.0) { minimum_mm = 0.0; } + + do { + switch (prep.ramp_type) { + case RAMP_ACCEL: + // NOTE: Acceleration ramp only computes during first do-while loop. + speed_var = pl_block->acceleration*time_var; + mm_remaining -= time_var*(prep.current_speed + 0.5*speed_var); + if (mm_remaining < prep.accelerate_until) { // End of acceleration ramp. + // Acceleration-cruise, acceleration-deceleration ramp junction, or end of block. + mm_remaining = prep.accelerate_until; // NOTE: 0.0 at EOB + time_var = 2.0*(pl_block->millimeters-mm_remaining)/(prep.current_speed+prep.maximum_speed); + if (mm_remaining == prep.decelerate_after) { prep.ramp_type = RAMP_DECEL; } + else { prep.ramp_type = RAMP_CRUISE; } + prep.current_speed = prep.maximum_speed; + } else { // Acceleration only. + prep.current_speed += speed_var; + } + break; + case RAMP_CRUISE: + // NOTE: mm_var used to retain the last mm_remaining for incomplete segment time_var calculations. + // NOTE: If maximum_speed*time_var value is too low, round-off can cause mm_var to not change. To + // prevent this, simply enforce a minimum speed threshold in the planner. + mm_var = mm_remaining - prep.maximum_speed*time_var; + if (mm_var < prep.decelerate_after) { // End of cruise. + // Cruise-deceleration junction or end of block. + time_var = (mm_remaining - prep.decelerate_after)/prep.maximum_speed; + mm_remaining = prep.decelerate_after; // NOTE: 0.0 at EOB + prep.ramp_type = RAMP_DECEL; + } else { // Cruising only. + mm_remaining = mm_var; + } + break; + default: // case RAMP_DECEL: + // NOTE: mm_var used as a misc worker variable to prevent errors when near zero speed. + speed_var = pl_block->acceleration*time_var; // Used as delta speed (mm/min) + if (prep.current_speed > speed_var) { // Check if at or below zero speed. + // Compute distance from end of segment to end of block. + mm_var = mm_remaining - time_var*(prep.current_speed - 0.5*speed_var); // (mm) + if (mm_var > prep.mm_complete) { // Deceleration only. + mm_remaining = mm_var; + prep.current_speed -= speed_var; + break; // Segment complete. Exit switch-case statement. Continue do-while loop. + } + } // End of block or end of forced-deceleration. + time_var = 2.0*(mm_remaining-prep.mm_complete)/(prep.current_speed+prep.exit_speed); + mm_remaining = prep.mm_complete; + } + dt += time_var; // Add computed ramp time to total segment time. + if (dt < dt_max) { time_var = dt_max - dt; } // **Incomplete** At ramp junction. + else { + if (mm_remaining > minimum_mm) { // Check for very slow segments with zero steps. + // Increase segment time to ensure at least one step in segment. Override and loop + // through distance calculations until minimum_mm or mm_complete. + dt_max += DT_SEGMENT; + time_var = dt_max - dt; + } else { + break; // **Complete** Exit loop. Segment execution time maxed. + } + } + } while (mm_remaining > prep.mm_complete); // **Complete** Exit loop. Profile complete. + + + /* ----------------------------------------------------------------------------------- + Compute segment step rate, steps to execute, and apply necessary rate corrections. + NOTE: Steps are computed by direct scalar conversion of the millimeter distance + remaining in the block, rather than incrementally tallying the steps executed per + segment. This helps in removing floating point round-off issues of several additions. + However, since floats have only 7.2 significant digits, long moves with extremely + high step counts can exceed the precision of floats, which can lead to lost steps. + Fortunately, this scenario is highly unlikely and unrealistic in CNC machines + supported by Grbl (i.e. exceeding 10 meters axis travel at 200 step/mm). + */ + float steps_remaining = prep.step_per_mm*mm_remaining; // Convert mm_remaining to steps + float n_steps_remaining = ceil(steps_remaining); // Round-up current steps remaining + float last_n_steps_remaining = ceil(prep.steps_remaining); // Round-up last steps remaining + prep_segment->n_step = last_n_steps_remaining-n_steps_remaining; // Compute number of steps to execute. + + // Bail if we are at the end of a feed hold and don't have a step to execute. + if (prep_segment->n_step == 0) { + if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { + // Less than one step to decelerate to zero speed, but already very close. AMASS + // requires full steps to execute. So, just bail. + prep.current_speed = 0.0; // NOTE: (=0.0) Used to indicate completed segment calcs for hold. + prep.dt_remainder = 0.0; + prep.steps_remaining = n_steps_remaining; + pl_block->millimeters = prep.steps_remaining/prep.step_per_mm; // Update with full steps. + plan_cycle_reinitialize(); + return; // Segment not generated, but current step data still retained. + } + } + + // Compute segment step rate. Since steps are integers and mm distances traveled are not, + // the end of every segment can have a partial step of varying magnitudes that are not + // executed, because the stepper ISR requires whole steps due to the AMASS algorithm. To + // compensate, we track the time to execute the previous segment's partial step and simply + // apply it with the partial step distance to the current segment, so that it minutely + // adjusts the whole segment rate to keep step output exact. These rate adjustments are + // typically very small and do not adversely effect performance, but ensures that Grbl + // outputs the exact acceleration and velocity profiles as computed by the planner. + dt += prep.dt_remainder; // Apply previous segment partial step execute time + float inv_rate = dt/(last_n_steps_remaining - steps_remaining); // Compute adjusted step rate inverse + prep.dt_remainder = (n_steps_remaining - steps_remaining)*inv_rate; // Update segment partial step time + + // Compute CPU cycles per step for the prepped segment. + uint32_t cycles = ceil( (TICKS_PER_MICROSECOND*1000000*60)*inv_rate ); // (cycles/step) + + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + // Compute step timing and multi-axis smoothing level. + // NOTE: AMASS overdrives the timer with each level, so only one prescalar is required. + if (cycles < AMASS_LEVEL1) { prep_segment->amass_level = 0; } + else { + if (cycles < AMASS_LEVEL2) { prep_segment->amass_level = 1; } + else if (cycles < AMASS_LEVEL3) { prep_segment->amass_level = 2; } + else { prep_segment->amass_level = 3; } + cycles >>= prep_segment->amass_level; + prep_segment->n_step <<= prep_segment->amass_level; + } + if (cycles < (1UL << 16)) { prep_segment->cycles_per_tick = cycles; } // < 65536 (4.1ms @ 16MHz) + else { prep_segment->cycles_per_tick = 0xffff; } // Just set the slowest speed possible. + #else + // Compute step timing and timer prescalar for normal step generation. + if (cycles < (1UL << 16)) { // < 65536 (4.1ms @ 16MHz) + prep_segment->prescaler = 1; // prescaler: 0 + prep_segment->cycles_per_tick = cycles; + } else if (cycles < (1UL << 19)) { // < 524288 (32.8ms@16MHz) + prep_segment->prescaler = 2; // prescaler: 8 + prep_segment->cycles_per_tick = cycles >> 3; + } else { + prep_segment->prescaler = 3; // prescaler: 64 + if (cycles < (1UL << 22)) { // < 4194304 (262ms@16MHz) + prep_segment->cycles_per_tick = cycles >> 6; + } else { // Just set the slowest speed possible. (Around 4 step/sec.) + prep_segment->cycles_per_tick = 0xffff; + } + } + #endif + + // Segment complete! Increment segment buffer indices. + segment_buffer_head = segment_next_head; + if ( ++segment_next_head == SEGMENT_BUFFER_SIZE ) { segment_next_head = 0; } + + // Setup initial conditions for next segment. + if (mm_remaining > prep.mm_complete) { + // Normal operation. Block incomplete. Distance remaining in block to be executed. + pl_block->millimeters = mm_remaining; + prep.steps_remaining = steps_remaining; + } else { + // End of planner block or forced-termination. No more distance to be executed. + if (mm_remaining > 0.0) { // At end of forced-termination. + // Reset prep parameters for resuming and then bail. Allow the stepper ISR to complete + // the segment queue, where realtime protocol will set new state upon receiving the + // cycle stop flag from the ISR. Prep_segment is blocked until then. + prep.current_speed = 0.0; // NOTE: (=0.0) Used to indicate completed segment calcs for hold. + prep.dt_remainder = 0.0; + prep.steps_remaining = ceil(steps_remaining); + pl_block->millimeters = prep.steps_remaining/prep.step_per_mm; // Update with full steps. + plan_cycle_reinitialize(); + return; // Bail! + } else { // End of planner block + // The planner block is complete. All steps are set to be executed in the segment buffer. + pl_block = NULL; // Set pointer to indicate check and load next planner block. + plan_discard_current_block(); + } + } + + } +} + + +// Called by realtime status reporting to fetch the current speed being executed. This value +// however is not exactly the current speed, but the speed computed in the last step segment +// in the segment buffer. It will always be behind by up to the number of segment blocks (-1) +// divided by the ACCELERATION TICKS PER SECOND in seconds. +#ifdef REPORT_REALTIME_RATE + float st_get_realtime_rate() + { + if (sys.state & (STATE_CYCLE | STATE_HOMING | STATE_HOLD | STATE_MOTION_CANCEL | STATE_SAFETY_DOOR)){ + return prep.current_speed; + } + return 0.0f; + } +#endif diff --git a/src/stepper.h b/src/stepper.h new file mode 100755 index 0000000..0745704 --- /dev/null +++ b/src/stepper.h @@ -0,0 +1,55 @@ +/* + stepper.h - stepper motor driver: executes motion plans of planner.c using the stepper motors + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef stepper_h +#define stepper_h + +#ifndef SEGMENT_BUFFER_SIZE + #define SEGMENT_BUFFER_SIZE 6 +#endif + +// Initialize and setup the stepper motor subsystem +void stepper_init(); + +// Enable steppers, but cycle does not start unless called by motion control or realtime command. +void st_wake_up(); + +// Immediately disables steppers +void st_go_idle(); + +// Generate the step and direction port invert masks. +void st_generate_step_dir_invert_masks(); + +// Reset the stepper subsystem variables +void st_reset(); + +// Reloads step segment buffer. Called continuously by realtime execution system. +void st_prep_buffer(); + +// Called by planner_recalculate() when the executing block is updated by the new plan. +void st_update_plan_block_parameters(); + +// Called by realtime status reporting if realtime rate reporting is enabled in config.h. +#ifdef REPORT_REALTIME_RATE +float st_get_realtime_rate(); +#endif + +#endif diff --git a/src/system.c b/src/system.c new file mode 100755 index 0000000..17495ce --- /dev/null +++ b/src/system.c @@ -0,0 +1,305 @@ +/* + system.c - Handles system level commands and real-time processes + Part of Grbl + + Copyright (c) 2014-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include "uarm_common.h" + +void system_init() +{ + CONTROL_DDR &= ~(CONTROL_MASK); // Configure as input pins + #ifdef DISABLE_CONTROL_PIN_PULL_UP + CONTROL_PORT &= ~(CONTROL_MASK); // Normal low operation. Requires external pull-down. + #else + CONTROL_PORT |= CONTROL_MASK; // Enable internal pull-up resistors. Normal high operation. + #endif + CONTROL_PCMSK |= CONTROL_MASK; // Enable specific pins of the Pin Change Interrupt + PCICR |= (1 << CONTROL_INT); // Enable Pin Change Interrupt +} + + +// Pin change interrupt for pin-out commands, i.e. cycle start, feed hold, and reset. Sets +// only the realtime command execute variable to have the main program execute these when +// its ready. This works exactly like the character-based realtime commands when picked off +// directly from the incoming serial data stream. +ISR(CONTROL_INT_vect) +{ + uint8_t pin = (CONTROL_PIN & CONTROL_MASK); + #ifndef INVERT_ALL_CONTROL_PINS + pin ^= CONTROL_INVERT_MASK; + #endif + // Enter only if any CONTROL pin is detected as active. + if (pin) { + if (bit_istrue(pin,bit(RESET_BIT))) { + mc_reset(); + } else if (bit_istrue(pin,bit(CYCLE_START_BIT))) { + bit_true(sys_rt_exec_state, EXEC_CYCLE_START); + #ifndef ENABLE_SAFETY_DOOR_INPUT_PIN + } else if (bit_istrue(pin,bit(FEED_HOLD_BIT))) { + bit_true(sys_rt_exec_state, EXEC_FEED_HOLD); + #else + } else if (bit_istrue(pin,bit(SAFETY_DOOR_BIT))) { + bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); + #endif + } + } +} + + +// Returns if safety door is ajar(T) or closed(F), based on pin state. +uint8_t system_check_safety_door_ajar() +{ + #ifdef ENABLE_SAFETY_DOOR_INPUT_PIN + #ifdef INVERT_CONTROL_PIN + return(bit_istrue(CONTROL_PIN,bit(SAFETY_DOOR_BIT))); + #else + return(bit_isfalse(CONTROL_PIN,bit(SAFETY_DOOR_BIT))); + #endif + #else + return(false); // Input pin not enabled, so just return that it's closed. + #endif +} + + +// Executes user startup script, if stored. +void system_execute_startup(char *line) +{ + uint8_t n; + for (n=0; n < N_STARTUP_LINE; n++) { + if (!(settings_read_startup_line(n, line))) { + report_status_message(STATUS_SETTING_READ_FAIL); + } else { + if (line[0] != 0) { + printString(line); // Echo startup line to indicate execution. + report_status_message(gc_execute_line(line)); + } + } + } +} + + +// Directs and executes one line of formatted input from protocol_process. While mostly +// incoming streaming g-code blocks, this also executes Grbl internal commands, such as +// settings, initiating the homing cycle, and toggling switch states. This differs from +// the realtime command module by being susceptible to when Grbl is ready to execute the +// next line during a cycle, so for switches like block delete, the switch only effects +// the lines that are processed afterward, not necessarily real-time during a cycle, +// since there are motions already stored in the buffer. However, this 'lag' should not +// be an issue, since these commands are not typically used during a cycle. +uint8_t system_execute_line(char *line) +{ + uint8_t char_counter = 1; + uint8_t helper_var = 0; // Helper variable + float parameter, value; + switch( line[char_counter] ) { + case 0 : report_grbl_help(); break; + case '$': case 'G': case 'C': case 'X': + if ( line[(char_counter+1)] != 0 ) { return(STATUS_INVALID_STATEMENT); } + switch( line[char_counter] ) { + case '$' : // Prints Grbl settings + if ( sys.state & (STATE_CYCLE | STATE_HOLD) ) { return(STATUS_IDLE_ERROR); } // Block during cycle. Takes too long to print. + else { report_grbl_settings(); } + break; + case 'G' : // Prints gcode parser state + // TODO: Move this to realtime commands for GUIs to request this data during suspend-state. + report_gcode_modes(); + break; + case 'C' : // Set check g-code mode [IDLE/CHECK] + // Perform reset when toggling off. Check g-code mode should only work if Grbl + // is idle and ready, regardless of alarm locks. This is mainly to keep things + // simple and consistent. + if ( sys.state == STATE_CHECK_MODE ) { + mc_reset(); + report_feedback_message(MESSAGE_DISABLED); + } else { + if (sys.state) { return(STATUS_IDLE_ERROR); } // Requires no alarm mode. + sys.state = STATE_CHECK_MODE; + report_feedback_message(MESSAGE_ENABLED); + } + break; + case 'X' : // Disable alarm lock [ALARM] + if (sys.state == STATE_ALARM) { + report_feedback_message(MESSAGE_ALARM_UNLOCK); + sys.state = STATE_IDLE; + // Don't run startup script. Prevents stored moves in startup from causing accidents. + if (system_check_safety_door_ajar()) { // Check safety door switch before returning. + bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); + protocol_execute_realtime(); // Enter safety door mode. + } + } // Otherwise, no effect. + break; + // case 'J' : break; // Jogging methods + // TODO: Here jogging can be placed for execution as a seperate subprogram. It does not need to be + // susceptible to other realtime commands except for e-stop. The jogging function is intended to + // be a basic toggle on/off with controlled acceleration and deceleration to prevent skipped + // steps. The user would supply the desired feedrate, axis to move, and direction. Toggle on would + // start motion and toggle off would initiate a deceleration to stop. One could 'feather' the + // motion by repeatedly toggling to slow the motion to the desired location. Location data would + // need to be updated real-time and supplied to the user through status queries. + // More controlled exact motions can be taken care of by inputting G0 or G1 commands, which are + // handled by the planner. It would be possible for the jog subprogram to insert blocks into the + // block buffer without having the planner plan them. It would need to manage de/ac-celerations + // on its own carefully. This approach could be effective and possibly size/memory efficient. +// } +// break; + } + break; + default : + // Block any system command that requires the state as IDLE/ALARM. (i.e. EEPROM, homing) + if ( !(sys.state == STATE_IDLE || sys.state == STATE_ALARM) ) { return(STATUS_IDLE_ERROR); } + switch( line[char_counter] ) { + case '#' : // Print Grbl NGC parameters + if ( line[++char_counter] != 0 ) { return(STATUS_INVALID_STATEMENT); } + else { report_ngc_parameters(); } + break; + case 'H' : // Perform homing cycle [IDLE/ALARM] + if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { + sys.state = STATE_HOMING; // Set system state variable + // Only perform homing if Grbl is idle or lost. + + // TODO: Likely not required. + if (system_check_safety_door_ajar()) { // Check safety door switch before homing. + bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); + protocol_execute_realtime(); // Enter safety door mode. + } + + + mc_homing_cycle(); + if (!sys.abort) { // Execute startup scripts after successful homing. + sys.state = STATE_IDLE; // Set to IDLE when complete. + + + + st_go_idle(); // Set steppers to the settings idle state before returning. + system_execute_startup(line); + } + } else { return(STATUS_SETTING_DISABLED); } + break; + case 'I' : // Print or store build info. [IDLE/ALARM] + if ( line[++char_counter] == 0 ) { + settings_read_build_info(line); + report_build_info(line); + } else { // Store startup line [IDLE/ALARM] + if(line[char_counter++] != '=') { return(STATUS_INVALID_STATEMENT); } + helper_var = char_counter; // Set helper variable as counter to start of user info line. + do { + line[char_counter-helper_var] = line[char_counter]; + } while (line[char_counter++] != 0); + settings_store_build_info(line); + } + break; + case 'R' : // Restore defaults [IDLE/ALARM] + if (line[++char_counter] != 'S') { return(STATUS_INVALID_STATEMENT); } + if (line[++char_counter] != 'T') { return(STATUS_INVALID_STATEMENT); } + if (line[++char_counter] != '=') { return(STATUS_INVALID_STATEMENT); } + if (line[char_counter+2] != 0) { return(STATUS_INVALID_STATEMENT); } + switch (line[++char_counter]) { + case '$': settings_restore(SETTINGS_RESTORE_DEFAULTS); break; + case '#': settings_restore(SETTINGS_RESTORE_PARAMETERS); break; + case '*': settings_restore(SETTINGS_RESTORE_ALL); break; + default: return(STATUS_INVALID_STATEMENT); + } + report_feedback_message(MESSAGE_RESTORE_DEFAULTS); + mc_reset(); // Force reset to ensure settings are initialized correctly. + break; + case 'N' : // Startup lines. [IDLE/ALARM] + if ( line[++char_counter] == 0 ) { // Print startup lines + for (helper_var=0; helper_var < N_STARTUP_LINE; helper_var++) { + if (!(settings_read_startup_line(helper_var, line))) { + report_status_message(STATUS_SETTING_READ_FAIL); + } else { + report_startup_line(helper_var,line); + } + } + break; + } else { // Store startup line [IDLE Only] Prevents motion during ALARM. + if (sys.state != STATE_IDLE) { return(STATUS_IDLE_ERROR); } // Store only when idle. + helper_var = true; // Set helper_var to flag storing method. + // No break. Continues into default: to read remaining command characters. + } + default : // Storing setting methods [IDLE/ALARM] + if(!read_float(line, &char_counter, ¶meter)) { return(STATUS_BAD_NUMBER_FORMAT); } + if(line[char_counter++] != '=') { return(STATUS_INVALID_STATEMENT); } + if (helper_var) { // Store startup line + // Prepare sending gcode block to gcode parser by shifting all characters + helper_var = char_counter; // Set helper variable as counter to start of gcode block + do { + line[char_counter-helper_var] = line[char_counter]; + } while (line[char_counter++] != 0); + // Execute gcode block to ensure block is valid. + helper_var = gc_execute_line(line); // Set helper_var to returned status code. + if (helper_var) { return(helper_var); } + else { + helper_var = trunc(parameter); // Set helper_var to int value of parameter + settings_store_startup_line(helper_var,line); + } + } else { // Store global setting. + if(!read_float(line, &char_counter, &value)) { return(STATUS_BAD_NUMBER_FORMAT); } + if((line[char_counter] != 0) || (parameter > 255)) { return(STATUS_INVALID_STATEMENT); } + return(settings_store_global_setting((uint8_t)parameter, value)); + } + } + } + return(STATUS_OK); // If '$' command makes it to here, then everything's ok. +} + + +// Returns machine position of axis 'idx'. Must be sent a 'step' array. +// NOTE: If motor steps and machine position are not in the same coordinate frame, this function +// serves as a central place to compute the transformation. +float system_convert_axis_steps_to_mpos(int32_t *steps, uint8_t idx) +{ + float pos; + #ifdef COREXY + if (idx==X_AXIS) { + pos = (float)system_convert_corexy_to_x_axis_steps(steps) / settings.steps_per_mm[A_MOTOR]; + } else if (idx==Y_AXIS) { + pos = (float)system_convert_corexy_to_y_axis_steps(steps) / settings.steps_per_mm[B_MOTOR]; + } else { + pos = steps[idx]/settings.steps_per_mm[idx]; + } + #else + pos = steps[idx]/settings.steps_per_mm[idx]; + #endif + return(pos); +} + + +void system_convert_array_steps_to_mpos(float *position, int32_t *steps) +{ + uint8_t idx; + for (idx=0; idx. +*/ + +#ifndef system_h +#define system_h + +#include "grbl.h" + +// Define system executor bit map. Used internally by realtime protocol as realtime command flags, +// which notifies the main program to execute the specified realtime command asynchronously. +// NOTE: The system executor uses an unsigned 8-bit volatile variable (8 flag limit.) The default +// flags are always false, so the realtime protocol only needs to check for a non-zero value to +// know when there is a realtime command to execute. +#define EXEC_STATUS_REPORT bit(0) // bitmask 00000001 +#define EXEC_CYCLE_START bit(1) // bitmask 00000010 +#define EXEC_CYCLE_STOP bit(2) // bitmask 00000100 +#define EXEC_FEED_HOLD bit(3) // bitmask 00001000 +#define EXEC_RESET bit(4) // bitmask 00010000 +#define EXEC_SAFETY_DOOR bit(5) // bitmask 00100000 +#define EXEC_MOTION_CANCEL bit(6) // bitmask 01000000 + +// Alarm executor bit map. +// NOTE: EXEC_CRITICAL_EVENT is an optional flag that must be set with an alarm flag. When enabled, +// this halts Grbl into an infinite loop until the user aknowledges the problem and issues a soft- +// reset command. For example, a hard limit event needs this type of halt and aknowledgement. +#define EXEC_CRITICAL_EVENT bit(0) // bitmask 00000001 (SPECIAL FLAG. See NOTE:) +#define EXEC_ALARM_HARD_LIMIT bit(1) // bitmask 00000010 +#define EXEC_ALARM_SOFT_LIMIT bit(2) // bitmask 00000100 +#define EXEC_ALARM_ABORT_CYCLE bit(3) // bitmask 00001000 +#define EXEC_ALARM_PROBE_FAIL bit(4) // bitmask 00010000 +#define EXEC_ALARM_HOMING_FAIL bit(5) // bitmask 00100000 + +// Define system state bit map. The state variable primarily tracks the individual functions +// of Grbl to manage each without overlapping. It is also used as a messaging flag for +// critical events. +#define STATE_IDLE 0 // Must be zero. No flags. +#define STATE_ALARM bit(0) // In alarm state. Locks out all g-code processes. Allows settings access. +#define STATE_CHECK_MODE bit(1) // G-code check mode. Locks out planner and motion only. +#define STATE_HOMING bit(2) // Performing homing cycle +#define STATE_CYCLE bit(3) // Cycle is running or motions are being executed. +#define STATE_HOLD bit(4) // Active feed hold +#define STATE_SAFETY_DOOR bit(5) // Safety door is ajar. Feed holds and de-energizes system. +#define STATE_MOTION_CANCEL bit(6) // Motion cancel by feed hold and return to idle. + +// Define system suspend states. +#define SUSPEND_DISABLE 0 // Must be zero. +#define SUSPEND_ENABLE_HOLD bit(0) // Enabled. Indicates the cycle is active and currently undergoing a hold. +#define SUSPEND_ENABLE_READY bit(1) // Ready to resume with a cycle start command. +#define SUSPEND_ENERGIZE bit(2) // Re-energizes output before resume. +#define SUSPEND_MOTION_CANCEL bit(3) // Cancels resume motion. Used by probing routine. + + +// Define global system variables +typedef struct { + uint8_t abort; // System abort flag. Forces exit back to main loop for reset. + uint8_t state; // Tracks the current state of Grbl. + uint8_t suspend; // System suspend bitflag variable that manages holds, cancels, and safety door. + uint8_t soft_limit; // Tracks soft limit errors for the state machine. (boolean) + + int32_t position[N_AXIS]; // Real-time machine (aka home) position vector in steps. + // NOTE: This may need to be a volatile variable, if problems arise. + + int32_t probe_position[N_AXIS]; // Last probe position in machine coordinates and steps. + uint8_t probe_succeeded; // Tracks if last probing cycle was successful. + uint8_t homing_axis_lock; // Locks axes when limits engage. Used as an axis motion mask in the stepper ISR. +} system_t; +extern system_t sys; + +volatile uint8_t sys_probe_state; // Probing state value. Used to coordinate the probing cycle with stepper ISR. +volatile uint8_t sys_rt_exec_state; // Global realtime executor bitflag variable for state management. See EXEC bitmasks. +volatile uint8_t sys_rt_exec_alarm; // Global realtime executor bitflag variable for setting various alarms. + + +// Initialize the serial protocol +void system_init(); + +// Returns if safety door is open or closed, based on pin state. +uint8_t system_check_safety_door_ajar(); + +// Executes an internal system command, defined as a string starting with a '$' +uint8_t system_execute_line(char *line); + +// Execute the startup script lines stored in EEPROM upon initialization +void system_execute_startup(char *line); + +// Returns machine position of axis 'idx'. Must be sent a 'step' array. +float system_convert_axis_steps_to_mpos(int32_t *steps, uint8_t idx); + +// Updates a machine 'position' array based on the 'step' array sent. +void system_convert_array_steps_to_mpos(float *position, int32_t *steps); + +// CoreXY calculation only. Returns x or y-axis "steps" based on CoreXY motor steps. +#ifdef COREXY + int32_t system_convert_corexy_to_x_axis_steps(int32_t *steps); + int32_t system_convert_corexy_to_y_axis_steps(int32_t *steps); +#endif + +#endif diff --git a/src/uarm_angle.c b/src/uarm_angle.c new file mode 100755 index 0000000..306f2b0 --- /dev/null +++ b/src/uarm_angle.c @@ -0,0 +1,223 @@ +#include "uarm_angle.h" +#include "uarm_iic.h" + +//uint16_t reference_param[3] = {0}; + +struct refer_value_t { + uint16_t param_b; + uint16_t param_l; + uint16_t param_r; +} reference = {0}; + +uint16_t reference_param_pointa[3] = {0}; +uint16_t reference_param_pointb[3] = {0}; +uint16_t reference_param_pointc[3] = {0}; + +// max ){ max = temp_value; } + if( temp_value < min ){ min = temp_value; } + sum_value += temp_value; + } + + return ((sum_value - max - min)/3); +} + +float calculate_current_angle(enum angle_channel_e channel){ + uint16_t angle_reg_value = read_angle_reg_value(channel); + int long offset = 0; + float angle = 0.0; + + switch( channel ){ + case CHANNEL_ARML: offset = (int long)reference.param_l - (int long)angle_reg_value; + break; + case CHANNEL_ARMR: offset = (int long)reference.param_r - (int long)angle_reg_value; + break; + case CHANNEL_BASE: offset = (int long)reference.param_b - (int long)angle_reg_value; + break; + } + + + angle = get_point_b_angle(channel) - offset * 360.0 / 4096; + + if(angle > 360){ + angle -= 360; + } + if(angle < 0){ + angle += 360; + } + + return angle; +} + + +static void read_angle_reference_param(void){ + int8_t read_size = sizeof(struct refer_value_t); + unsigned int read_addr = EEPROM_ADDR_ANGLE_REFER; + + char *p = (char *)(&reference); + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + +// DB_PRINT_STR( "refer : %d, %d, %d\r\n", reference.param_l, reference.param_r, reference.param_b ); + +} + +static void write_angle_reference_param(void){ + int8_t write_size = sizeof(struct refer_value_t); + unsigned int write_addr = EEPROM_ADDR_ANGLE_REFER; + + char *p = (char *)(&reference); + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } + read_angle_reference_param(); + uarm.init_arml_angle = calculate_current_angle(CHANNEL_ARML); // anglea + ARMB angle -> angleb + BASE angle -> anglec +*/ +bool is_angle_legal(float anglea, float angleb, float anglec){ + if( isnan(anglea) || isnan(angleb) || isnan(anglec) ){ + //DB_PRINT_STR("value is nan\r\n"); + return false; + } + if( (anglea>ARMA_MAX_ANGLE) || (angleaARMB_MAX_ANGLE) || (angleb ARMA_ARMB_MAX_ANGLE) || (180-anglea-angleb < ARMA_ARMB_MIN_ANGLE) ){ + //DB_PRINT_STR("angle_ab error\r\n"); + return false; + } + if( (anglec>BASE_MAX_ANGLE) || (anglec (ARM_A *sin(*anglea/RAD_TO_DEG)) ){ + *angleb = -*angleb; + } + + // get the base rotation angle + + if( x == 0 ){ + if(y > 0){ + *anglec = 90; + }else{ + *anglec = -90; + } + }else if(x <0){ + *anglec = NAN; // 0){ + anglec = 90 / RAD_TO_DEG; + }else{ + anglec = -90 / RAD_TO_DEG; + } + }else if(*x < 0){ + anglec = NAN; // 0){ + anglec = 90 / RAD_TO_DEG; + }else{ + anglec = -90 / RAD_TO_DEG; + } + }else if(*x < 0){ + anglec = NAN; // 250) + { + arml_iic_stop(); + return 1; + } + } + + ARML_SCK_L; + delay_us(2); + return 0; +} + +static void arml_iic_ack(void) +{ + ARML_SCK_L; + ARML_SDA_L; + delay_us(2); + ARML_SCK_H; + delay_us(5); + + ARML_SCK_L; + delay_us(2); + ARML_SDA_H; + delay_us(2); +} + +static void arml_iic_nack(void) +{ + ARML_SCK_L; + ARML_SDA_H; + delay_us(2); + ARML_SCK_H; + delay_us(5); + + ARML_SCK_L; + delay_us(2); + ARML_SDA_H; + delay_us(2); +} + +static void arml_iic_send_byte(uint8_t data) +{ + uint8_t i; + for(i=0;i<8;i++) + { + ARML_SCK_L; + if(data&0x80) + ARML_SDA_H + else + ARML_SDA_L + delay_us(5); + ARML_SCK_H; + delay_us(5); + ARML_SCK_L; + data<<=1; + delay_us(5); + } + + delay_us(2); + ARML_SDA_H; + delay_us(2); +} + +static uint8_t arml_iic_read_byte(uint8_t ack) +{ + uint8_t i,receive=0; + + delay_us(2); + ARML_SDA_H; + delay_us(2); + + for(i=0;i<8;i++) + { + ARML_SCK_L; + delay_us(5); + ARML_SCK_H; + receive<<=1; + delay_us(5); + ARML_SDA_INPUT; + + if(ARML_READ_SDA) + receive|=0x01; + else + receive&=0xfe; + delay_us(5); + } + if(!ack) + arml_iic_nack(); + else + arml_iic_ack(); + + ARML_SCK_L; + delay_us(2); + + return receive; +} + +static void arml_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) +{ + arml_iic_start(); + arml_iic_send_byte(deviceaddr&0xfe); + arml_iic_wait_ack(); + arml_iic_send_byte(writeaddr); + arml_iic_wait_ack(); + arml_iic_send_byte(writedata); + arml_iic_wait_ack(); + arml_iic_stop(); + delay_us(10); +} + +static uint8_t arml_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) +{ + uint8_t temp; + arml_iic_start(); + arml_iic_send_byte(deviceaddr&0xfe); + arml_iic_wait_ack(); + arml_iic_send_byte(readaddr); + arml_iic_wait_ack(); + + arml_iic_start(); + arml_iic_send_byte(deviceaddr|0x01); + arml_iic_wait_ack(); + temp=arml_iic_read_byte(0); + arml_iic_stop(); + return temp; +} + +static void armr_iic_start(void) +{ + ARMR_SDA_H; + ARMR_SCK_H; + delay_us(5); + ARMR_SDA_L; + delay_us(5); + ARMR_SCK_L; + delay_us(2); +} + +static void armr_iic_stop(void) +{ + ARMR_SCK_L; + ARMR_SDA_L; + delay_us(5); + ARMR_SCK_H; + delay_us(5); + ARMR_SDA_H; + delay_us(5); +} + +static uint8_t armr_iic_wait_ack(void) +{ + uint8_t ucErrTime=0; + ARMR_SDA_H;delay_us(2); + ARMR_SCK_H;delay_us(2); + + + ARMR_SDA_INPUT; + + while(ARMR_READ_SDA) + { + ucErrTime++; + if(ucErrTime>250) + { + armr_iic_stop(); + return 1; + } + } + + ARMR_SCK_L; + delay_us(2); + return 0; +} + +static void armr_iic_ack(void) +{ + ARMR_SCK_L; + ARMR_SDA_L; + delay_us(2); + ARMR_SCK_H; + delay_us(5); + + ARMR_SCK_L; + delay_us(2); + ARMR_SDA_H; + delay_us(2); +} + +static void armr_iic_nack(void) +{ + ARMR_SCK_L; + ARMR_SDA_H; + delay_us(2); + ARMR_SCK_H; + delay_us(5); + + ARMR_SCK_L; + delay_us(2); + ARMR_SDA_H; + delay_us(2); +} + +static void armr_iic_send_byte(uint8_t data) +{ + uint8_t i; + for(i=0;i<8;i++) + { + ARMR_SCK_L; + if(data&0x80) + ARMR_SDA_H + else + ARMR_SDA_L + delay_us(5); + ARMR_SCK_H; + delay_us(5); + ARMR_SCK_L; + data<<=1; + delay_us(5); + } + + delay_us(2); + ARMR_SDA_H; + delay_us(2); +} + +static uint8_t armr_iic_read_byte(uint8_t ack) +{ + uint8_t i,receive=0; + + delay_us(2); + ARMR_SDA_H; + delay_us(2); + + for(i=0;i<8;i++) + { + ARMR_SCK_L; + delay_us(5); + ARMR_SCK_H; + receive<<=1; + delay_us(5); + ARMR_SDA_INPUT; + + if(ARMR_READ_SDA) + receive|=0x01; + else + receive&=0xfe; + delay_us(5); + } + if(!ack) + armr_iic_nack(); + else + armr_iic_ack(); + + ARMR_SCK_L; + delay_us(2); + + return receive; +} + +static void armr_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) +{ + armr_iic_start(); + armr_iic_send_byte(deviceaddr&0xfe); + armr_iic_wait_ack(); + armr_iic_send_byte(writeaddr); + armr_iic_wait_ack(); + armr_iic_send_byte(writedata); + armr_iic_wait_ack(); + armr_iic_stop(); + delay_us(10); +} + +static uint8_t armr_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) +{ + uint8_t temp; + armr_iic_start(); + armr_iic_send_byte(deviceaddr&0xfe); + armr_iic_wait_ack(); + armr_iic_send_byte(readaddr); + armr_iic_wait_ack(); + + armr_iic_start(); + armr_iic_send_byte(deviceaddr|0x01); + armr_iic_wait_ack(); + temp=armr_iic_read_byte(0); + armr_iic_stop(); + return temp; +} + +static void base_iic_start(void) +{ + BASE_SDA_H; + BASE_SCK_H; + delay_us(5); + BASE_SDA_L; + delay_us(5); + BASE_SCK_L; + delay_us(2); +} + +static void base_iic_stop(void) +{ + BASE_SCK_L; + BASE_SDA_L; + delay_us(5); + BASE_SCK_H; + delay_us(5); + BASE_SDA_H; + delay_us(5); +} + +static uint8_t base_iic_wait_ack(void) +{ + uint8_t ucErrTime=0; + BASE_SDA_H;delay_us(2); + BASE_SCK_H;delay_us(2); + + + BASE_SDA_INPUT; + + while(BASE_READ_SDA) + { + ucErrTime++; + if(ucErrTime>250) + { + base_iic_stop(); + return 1; + } + } + + BASE_SCK_L; + delay_us(2); + return 0; +} + +static void base_iic_ack(void) +{ + BASE_SCK_L; + BASE_SDA_L; + delay_us(2); + BASE_SCK_H; + delay_us(5); + + BASE_SCK_L; + delay_us(2); + BASE_SDA_H; + delay_us(2); +} + +static void base_iic_nack(void) +{ + BASE_SCK_L; + BASE_SDA_H; + delay_us(2); + BASE_SCK_H; + delay_us(5); + + BASE_SCK_L; + delay_us(2); + BASE_SDA_H; + delay_us(2); +} + +static void base_iic_send_byte(uint8_t data) +{ + uint8_t i; + for(i=0;i<8;i++) + { + BASE_SCK_L; + if(data&0x80) + BASE_SDA_H + else + BASE_SDA_L + delay_us(5); + BASE_SCK_H; + delay_us(5); + BASE_SCK_L; + data<<=1; + delay_us(5); + } + + delay_us(2); + BASE_SDA_H; + delay_us(2); +} + +static uint8_t base_iic_read_byte(uint8_t ack) +{ + uint8_t i,receive=0; + + delay_us(2); + BASE_SDA_H; + delay_us(2); + + for(i=0;i<8;i++) + { + BASE_SCK_L; + delay_us(5); + BASE_SCK_H; + receive<<=1; + delay_us(5); + BASE_SDA_INPUT; + + if(BASE_READ_SDA) + receive|=0x01; + else + receive&=0xfe; + delay_us(5); + } + if(!ack) + base_iic_nack(); + else + base_iic_ack(); + + BASE_SCK_L; + delay_us(2); + + return receive; +} + +static void base_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) +{ + base_iic_start(); + base_iic_send_byte(deviceaddr&0xfe); + base_iic_wait_ack(); + base_iic_send_byte(writeaddr); + base_iic_wait_ack(); + base_iic_send_byte(writedata); + base_iic_wait_ack(); + base_iic_stop(); + delay_us(10); +} + +static uint8_t base_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) +{ + uint8_t temp; + base_iic_start(); + base_iic_send_byte(deviceaddr&0xfe); + base_iic_wait_ack(); + base_iic_send_byte(readaddr); + base_iic_wait_ack(); + + base_iic_start(); + base_iic_send_byte(deviceaddr|0x01); + base_iic_wait_ack(); + temp=base_iic_read_byte(0); + base_iic_stop(); + return temp; +} + +void angle_iic_init(void){ + ARML_SDA_OUTPUT; + ARML_SCL_OUTPUT; + ARML_SDA_SET; + ARML_SCL_SET; + + ARMR_SDA_OUTPUT; + ARMR_SCL_OUTPUT; + ARMR_SDA_SET; + ARMR_SCL_SET; + + BASE_SDA_OUTPUT; + BASE_SCL_OUTPUT; + BASE_SDA_SET; + BASE_SCL_SET; +} + +void iic_write_byte(uint8_t channel, uint8_t dev_addr, uint8_t write_addr, uint8_t write_data){ + + switch(channel){ + case 0: + arml_iic_write_onebyte(dev_addr, write_addr, write_data); + break; + case 1: + armr_iic_write_onebyte(dev_addr, write_addr, write_data); + break; + case 2: + base_iic_write_onebyte(dev_addr, write_addr, write_data); + break; + } +} + +uint8_t iic_read_byte(uint8_t channel, uint8_t dev_addr, uint8_t read_addr){ + uint8_t read_byte = 0; + switch(channel){ + case 0: + read_byte = arml_iic_read_onebyte(dev_addr, read_addr); + break; + case 1: + read_byte = armr_iic_read_onebyte(dev_addr, read_addr); + break; + case 2: + read_byte = base_iic_read_onebyte(dev_addr, read_addr); + break; + } + return read_byte; +} + + + diff --git a/src/uarm_iic.h b/src/uarm_iic.h new file mode 100755 index 0000000..b027953 --- /dev/null +++ b/src/uarm_iic.h @@ -0,0 +1,11 @@ +#ifndef _UARM_IIC_H_ +#define _UARM_IIC_H_ + +#include "uarm_common.h" + +void angle_iic_init(void); +void iic_write_byte(uint8_t channel, uint8_t dev_addr, uint8_t write_addr, uint8_t write_data); +uint8_t iic_read_byte(uint8_t channel, uint8_t dev_addr, uint8_t read_addr); + +#endif + diff --git a/src/uarm_peripheral.c b/src/uarm_peripheral.c new file mode 100755 index 0000000..5ce9d49 --- /dev/null +++ b/src/uarm_peripheral.c @@ -0,0 +1,446 @@ +#include "uarm_peripheral.h" + + +/* servo driver + * + */ +float duty_ms = 1.7; +void servo_init(void){ + time4_pwm_init(20000); + time4_set_duty( 3, (duty_ms/21.0) * 1023 ); +} + +void servo_set_angle(float angle){ + if( angle > 180 ){ angle = 0; } + if( angle < 0 ){ angle = 180; } + angle = 180 - angle; + + duty_ms = (angle / 180.0) * 2.0 + 0.7; + time4_set_duty( 3, (duty_ms/21.0) * 1023 ); + //delay_ms(500); +} + +void servo_deinit(void){ + time4_stop(); +} + +float servo_get_angle(void){ + return 180 - (duty_ms - 0.7) / 2.0 *180; +} + + /* beep driver + * + */ +uint16_t beep_duration = 520; +static void beep_creater_callback(void){ + static bool state = false; + static uint16_t cnt = 0; + if( !state ){ + state = true; + PORTL |= (1<<5); + }else{ + state = false; + PORTL &= ~(1<<5); + } + if( cnt++ > beep_duration ){ + cnt = 0; + time2_stop(); + } +} + +void beep_tone(unsigned long duration, double frequency){ + DDRL |= 1<<5; + PORTL &= ~(1<<5); + beep_duration = duration * 2; + + time2_set( frequency / 2000000.0, beep_creater_callback ); + time2_start(); +} + + +/* delay time : ms + * + */ +void cycle_report_coord(void){ + float x = 0, y = 0, z = 0, angle_e; + float angle_l = 0, angle_r = 0, angle_b =0; + char l_str[20] = {0}, r_str[20] = {0}, b_str[20] = {0}, e_str[20] = {0}; + + angle_l = calculate_current_angle(CHANNEL_ARML); // = gcode_delay_ms ){ + delay_cnt = 0; + gcode_delay_ms = 0; + uarm.gcode_delay_flag = false; + //DB_PRINT_STR( "delay done\r\n" ); + } + } + + if( cycle_delay_ms ){ // run cycle + + if( cycle_cnt++ >= cycle_delay_ms ){ + cycle_cnt = 0; + uarm.cycle_report_flag = true; + //DB_PRINT_STR( "cycle call\r\n" ); + //cycle_report_coord(); + } + } + + if( (uarm.gcode_delay_flag == false)&&( cycle_tick_flag == false) ){ + time5_stop(); + time_tick_work = false; + gcode_delay_ms = 0; + cycle_delay_ms = 0; + + delay_cnt = 0; + cycle_cnt = 0; + // DB_PRINT_STR( "stop time5\r\n" ); + } + } + + static void time_tick_init(void){ + time5_set( 0.001, tick_callback ); + time5_start(); +// DB_PRINT_STR( "start time5\r\n" ); + } + +void gcode_cmd_delay(int ms){ + gcode_delay_ms = ms; + uarm.gcode_delay_flag = true; + if( !time_tick_work ){ + time_tick_init(); + time_tick_work = true; + } +} + +void cycle_report_start(int ms){ + if( ms <= 0 ){ + cycle_report_stop(); + return; + } + + cycle_delay_ms = ms; + cycle_tick_flag = true; + + if( !time_tick_work ){ + time_tick_init(); + time_tick_work = true; + } + +} + +void cycle_report_stop(void){ + cycle_tick_flag = false; + cycle_delay_ms = 0; +} + + +/* param to eeprom + * + */ + +void read_sys_param(void){ + int8_t read_size = 0; + unsigned int read_addr = 0; + char *p = NULL; + + + p = (char *)(&(uarm.param.work_mode)); + read_size = sizeof(uarm.param.work_mode); + read_addr = EEPROM_MODE_ADDR; + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + + p = (char *)(&(uarm.param.front_offset)); + read_size = sizeof(uarm.param.front_offset); + read_addr = EEPROM_FRONT_ADDR; + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + + p = (char *)(&(uarm.param.high_offset)); + read_size = sizeof(uarm.param.high_offset); + read_addr = EEPROM_HEIGHT_ADDR; + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + +/* char l_str[20], r_str[20], b_str[20]; + dtostrf( uarm.param.work_mode, 5, 4, l_str ); + dtostrf( uarm.param.front_offset, 5, 4, r_str ); + dtostrf( uarm.param.high_offset, 5, 4, b_str ); + + DB_PRINT_STR( "mode:%s, front:%s, high:%s\r\n", l_str, r_str, b_str );*/ + +} + +void save_sys_param(void){ + int8_t write_size = 0; + unsigned int write_addr = 0; + char *p = NULL; + + p = (char *)(&(uarm.param.work_mode)); + write_size = sizeof(uarm.param.work_mode); + write_addr = EEPROM_MODE_ADDR; + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } + + p = (char *)(&(uarm.param.front_offset)); + write_size = sizeof(uarm.param.front_offset); + write_addr = EEPROM_FRONT_ADDR; + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } + + p = (char *)(&(uarm.param.high_offset)); + write_size = sizeof(uarm.param.high_offset); + write_addr = EEPROM_HEIGHT_ADDR; + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } + +} + + +void read_hardware_version(void){ +#define HARD_MASK ( 1<<6 | 1<<5 | 1<<4 | 1<<3 ) + DDRJ &= ~HARD_MASK; + if( (PINJ & HARD_MASK) == (1 <<6) ){ + strcpy( hardware_version, "V3.3.1" ); + settings_store_global_setting( 3, 0 ); + }else if( (PINJ & HARD_MASK) == 0x00 ){ + strcpy( hardware_version, "V3.3.0" ); + settings_store_global_setting( 3, 7 ); + } + settings_init(); +} + +static void _sort(unsigned int array[], unsigned int len) +{ + unsigned char i=0,j=0; + unsigned int temp = 0; + + for(i = 0; i < len; i++) + { + for(j = 0; i+j < (len-1); j++) + { + if(array[j] > array[j+1]) + { + temp = array[j]; + array[j] = array[j+1]; + array[j+1] = temp; + } + } + } +} + + +static int adc_read_value(uint8_t pin){ + uint8_t low, high; + if (pin >= 54) pin -= 54; // allow for channel or pin numbers + + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); + ADMUX = (1 << 6) | (pin & 0x07); + ADCSRA |= (1< 100 ){ + return 1; + }else{ + return 0; + } +} + + + +void check_motor_positon(void){ + if( sys.state == STATE_IDLE ){ + float current_angle_l = 0, current_angle_r = 0, current_angle_b = 0; +// get_current_angle( sys.position[X_AXIS], sys.position[Y_AXIS], sys.position[Z_AXIS], +// ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); + coord_to_angle( uarm.coord_x, uarm.coord_y, uarm.coord_z, ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); + + float reg_angle_l = calculate_current_angle(CHANNEL_ARML); + float reg_angle_r = calculate_current_angle(CHANNEL_ARMR); + float reg_angle_b = calculate_current_angle(CHANNEL_BASE) ; + + if( fabs(current_angle_l-reg_angle_l)>0.5 || fabs(current_angle_r-reg_angle_r)>0.5 || fabs(current_angle_b-reg_angle_b+90)>0.5 ){ + + char l_str[20], r_str[20], b_str[20]; + dtostrf( current_angle_l, 5, 4, l_str ); + dtostrf( current_angle_r, 5, 4, r_str ); + dtostrf( current_angle_b, 5, 4, b_str ); + + DB_PRINT_STR( "angle1: %s, %s, %s\r\n", l_str, r_str, b_str ); + + dtostrf( reg_angle_l, 5, 4, l_str ); + dtostrf( reg_angle_r, 5, 4, r_str ); + dtostrf( reg_angle_b, 5, 4, b_str ); + + DB_PRINT_STR( "angle2: %s, %s, %s\r\n", l_str, r_str, b_str ); + + uarm.init_arml_angle = reg_angle_l; + uarm.init_armr_angle = reg_angle_r; + uarm.init_base_angle = reg_angle_b; + beep_tone(260, 1000); + + float target[3] = {0}; + target[X_AXIS] = uarm.coord_x; + target[Y_AXIS] = uarm.coord_y; + target[Z_AXIS] = uarm.coord_z; + coord_arm2effect( &target[X_AXIS], &target[Y_AXIS], &target[Z_AXIS] ); + mc_line( 0, target, 50, false ); + + } + } +} + + diff --git a/src/uarm_peripheral.h b/src/uarm_peripheral.h new file mode 100755 index 0000000..e30ff67 --- /dev/null +++ b/src/uarm_peripheral.h @@ -0,0 +1,49 @@ +#ifndef _UARM_PERIPHERAL_H_ +#define _UARM_PERIPHERAL_H_ + +#include "uarm_common.h" + +extern char hardware_version[8]; + + +void servo_init(void); +void servo_set_angle(float angle); +void servo_deinit(void); +float servo_get_angle(void); + +void beep_tone(unsigned long duration, double frequency); + +void gcode_cmd_delay(int ms); +void cycle_report_start(int ms); +void cycle_report_stop(void); + +void read_sys_param(void); +void save_sys_param(void); +void cycle_report_coord(void); +void read_hardware_version(void); + +void pump_on(void); +void pump_off(void); +uint8_t get_pump_status(void); + +void gripper_relesae(void); +void gripper_catch(void); +uint8_t get_gripper_status(void); + +void laser_on(void); +void laser_off(void); +uint8_t get_laser_status(void); + + + +uint8_t get_limit_switch_status(void); +uint8_t get_power_status(void); + + +void check_motor_positon(void); + + + + + +#endif diff --git a/src/uarm_protocol.c b/src/uarm_protocol.c new file mode 100755 index 0000000..104861b --- /dev/null +++ b/src/uarm_protocol.c @@ -0,0 +1,1082 @@ +#include "grbl.h" +#include "uarm_protocol.h" +#include "uarm_common.h" +#include "uarm_peripheral.h" +#include "uarm_coord_convert.h" +#include "uarm_angle.h" +#include "uarm_swift.h" + + +struct cmd_pack_t { + char line[CMD_BUFFER_SIZE]; + uint8_t parse_result; + bool line_parse_done; + char report_str[CMD_BUFFER_SIZE]; +}; + +struct cmd_pack_t syn_queue[PACK_MAX_SIZE] = {0}; +struct cmd_pack_t asyn_pack = {0}; +uint8_t syn_pack_remain = 0; +char tail_report_str[TAIL_BUFFER_SIZE] = {0}; +char event_report_str[EVENT_BUFFER_SIZE] = {0}; + +void receive_cmd_line(char *line){ + protocol_execute_realtime(); // Runtime command check point. + if (sys.abort) { return; } // Bail to calling function upon system abort + + char *p = line; + char temp_str[10] = {0}; + if( line[0] == '$' ){ // = PACK_MAX_SIZE ){ + uart_printf( "E23 buffer full\r\n" ); + return; + } + strcpy( syn_queue[syn_receive_sp].line, p ); // = PACK_MAX_SIZE-1 ){ syn_receive_sp = 0; } + syn_pack_remain++; + +// DB_PRINT_STR( "rece sp: %d, cnt :%d\r\n", syn_receive_sp, syn_pack_remain ); + } + +} + + +static void add_result_to_report(uint8_t result, char *str){ // = PACK_MAX_SIZE-1 ){ syn_parse_sp = 0; } + syn_pack_remain--; + +// DB_PRINT_STR( "parse sp: %d, cnt :%d\r\n", syn_parse_sp, syn_pack_remain ); + } +} + + +void report_parse_result(void){ + if( asyn_pack.line_parse_done ){ //= PACK_MAX_SIZE-1 ){ syn_report_sp = 0; } + }else{ break; } + } + } + + if( uarm.cycle_report_flag ){ // G + * + */ +static bool uarm_cmd_g2004(char *payload){ // M + * + */ + +static void uarm_cmd_m17(void){ // 0; write_size-- ){ + eeprom_put_char( write_addr++, 0x0 ); + }*/ + settings_restore(SETTINGS_RESTORE_ALL); + read_hardware_version(); +} + +static bool uarm_cmd_m2222(char *payload){ // ='0'&&line[1]<='1') ){ + uarm_cmd_m2122( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + + break; + case 2201: + if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ + uarm_cmd_m2201( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2202: + if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ + uarm_cmd_m2202( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2203: + if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ + uarm_cmd_m2203( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2210: + if( uarm_cmd_m2210(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } + break; + case 2211: + //DB_PRINT_STR( "M2211\r\n" ); + return UARM_CMD_OK; + break; + case 2212: + //DB_PRINT_STR( "M2212\r\n" ); + return UARM_CMD_OK; + break; + case 2213: + //DB_PRINT_STR( "M2213\r\n" ); + return UARM_CMD_OK; + break; + case 2215: + uarm_cmd_m2215(); + return UARM_CMD_OK; + case 2220: + //DB_PRINT_STR( "M2220\r\n" ); + return UARM_CMD_OK; + break; + case 2221: + //DB_PRINT_STR( "M2221\r\n" ); + return UARM_CMD_OK; + break; + case 2222: + if( uarm_cmd_m2222(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } + break; + case 2231: + //DB_PRINT_STR( "M2231\r\n" ); + if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ + uarm_cmd_m2231( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + + break; + case 2232: + //DB_PRINT_STR( "M2232\r\n" ); + if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ + uarm_cmd_m2232( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2233: + if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ + uarm_cmd_m2233( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2234: + //DB_PRINT_STR( "M2234\r\n" ); + return UARM_CMD_OK; + break; + case 2240: + //DB_PRINT_STR( "M2240\r\n" ); + return UARM_CMD_OK; + break; + case 2241: + //DB_PRINT_STR( "M2241\r\n" ); + return UARM_CMD_OK; + break; + case 2245: + //DB_PRINT_STR( "M2245\r\n" ); + break; + case 2304: + //DB_PRINT_STR( "M2304\r\n" ); + break; + case 2305: + //DB_PRINT_STR( "M2305\r\n" ); + break; + case 2306: + //DB_PRINT_STR( "M2306\r\n" ); + break; + case 2307: + //DB_PRINT_STR( "M2307\r\n" ); + break; + case 2400: + if( (line[0]=='S') && (line[1]>='0'&&line[1]<='3') ){ + uarm_cmd_m2400( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2401: + uarm_cmd_m2401(); + return UARM_CMD_OK; + break; + case 2410: + uarm_cmd_m2410(); + return UARM_CMD_OK; + + break; + case 2411: + if( uarm_cmd_m2411(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } + break; + case 2420: + if( (line[0]=='P') && (line[1]>='0'&&line[1]<='2') ){ + uarm_cmd_m2420(line[1]-'0'); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2421: + if( !uarm_cmd_m2421() ){ return UARM_CMD_ERROR; } + return UARM_CMD_OK; + break; + } + return UARM_CMD_NOTFIND; +} + + + + +/* + * + * CMD -> P + * + */ + +static void uarm_cmd_p2200(void){ // ='0'&&line[1]<='2') ){ + uarm_cmd_p2206(line[1]-'0'); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2220: + uarm_cmd_p2220(); + return UARM_CMD_OK; + break; + case 2221: + uarm_cmd_p2221(); + return UARM_CMD_OK; + break; + case 2231: + uarm_cmd_p2231(); + return UARM_CMD_OK; + break; + case 2232: + uarm_cmd_p2232(); + return UARM_CMD_OK; + break; + case 2233: + uarm_cmd_p2233(); + return UARM_CMD_OK; + break; + case 2234: + uarm_cmd_p2234(); + return UARM_CMD_OK; + break; + case 2235: + uarm_cmd_p2235(); + return UARM_CMD_OK; + break; + case 2240: + return UARM_CMD_OK; + break; + case 2241: + return UARM_CMD_OK; + break; + case 2242: + uarm_cmd_p2242(); + return UARM_CMD_OK; + break; + case 2400: + uarm_cmd_p2400(); + return UARM_CMD_OK; + break; + } + + return UARM_CMD_NOTFIND; +} + + + + + + diff --git a/src/uarm_protocol.h b/src/uarm_protocol.h new file mode 100755 index 0000000..616a562 --- /dev/null +++ b/src/uarm_protocol.h @@ -0,0 +1,37 @@ +#ifndef _UARM_PROTOCOL_H_ +#define _UARM_PROTOCOL_H_ + +#include "uarm_common.h" + +#define TAIL_BUFFER_SIZE (50) +#define EVENT_BUFFER_SIZE (50) +#define CMD_BUFFER_SIZE (50) +#define PACK_MAX_SIZE (20) + +enum uarm_protocol_e { + UARM_CMD_OK = 0, + UARM_CMD_NOTFIND, + UARM_SYS_ABORT, + + UARM_CMD_ERROR = 50, + UARM_COORD_ERROR, +}; + +struct protocol_private_t { +}; + +extern char event_report_str[EVENT_BUFFER_SIZE]; + +enum uarm_protocol_e uarm_execute_g_cmd(uint16_t cmd, char *line, uint8_t *char_counter); +enum uarm_protocol_e uarm_execute_p_cmd(uint16_t cmd, char *line, uint8_t *char_counter); +enum uarm_protocol_e uarm_execute_m_cmd(uint16_t cmd, char *line, uint8_t *char_counter); + + +void receive_cmd_line(char *line); +void parse_cmd_line(void); +void report_parse_result(void); + + + +#endif + diff --git a/src/uarm_swift.c b/src/uarm_swift.c new file mode 100755 index 0000000..75dfd15 --- /dev/null +++ b/src/uarm_swift.c @@ -0,0 +1,40 @@ +#include "uarm_swift.h" + +struct uarm_state_t uarm = {0}; +char hardware_version[8] = {0}; + +void uarm_swift_init(void){ +// DB_PRINT_STR("uarm init\r\n"); + delay_ms(10); + + read_hardware_version(); + angle_sensor_init(); + + servo_init(); + beep_tone(260, 1000); + read_sys_param(); + pump_off(); + gripper_relesae(); + laser_off(); + + angle_to_coord( uarm.init_arml_angle, uarm.init_armr_angle, uarm.init_base_angle-90, + &(uarm.coord_x), &(uarm.coord_y), &(uarm.coord_z) ); + + uarm.target_step[X_AXIS] = sys.position[X_AXIS]; + uarm.target_step[Y_AXIS] = sys.position[Y_AXIS]; + uarm.target_step[Z_AXIS] = sys.position[Z_AXIS]; + + ADCSRA |= ( 0<= 1000000UL) && (F_CPU <= 16000000UL)) { // prescaler set to 64 + TCCR2B |= (1< 16Mhz, prescaler set to 128 + TCCR2B |= ((1<>= 10; + switch( pin ){ + case 3: + DDRH |= 1<<3; + TCCR4A |= _BV(COM4A1); + OCR4A = dutyCycle; + break; + case 4: + DDRH |= 1<<4; + TCCR4A |= _BV(COM4B1); + OCR4B = dutyCycle; + break; + case 5: + DDRH |= 1<<5; + TCCR4A |= _BV(COM4C1); + OCR4C = dutyCycle; + break; + } + + TCCR4B = _BV(WGM43) | time4.clock_select_bits; + +} + +void time4_pwm_init(unsigned long period_us){ + TCCR4B = _BV(WGM43); // set mode as phase and frequency correct pwm, stop the timer + TCCR4A = 0; // clear control register A + time4_set_period(period_us); +} + +/* resolution = 0.001 1ms interrupt + * + */ + +void time5_set(double resolution, void (*callback)()){ + time5.time_callback = callback; + TCCR5A=0; + TCCR5B=(1< Date: Fri, 1 Jun 2018 18:21:11 +0800 Subject: [PATCH 23/74] frist release] --- hex/uArmPro_V4.1.0_release_20180601.hex | 3535 +++++++++++++++++++++++ 1 file changed, 3535 insertions(+) create mode 100755 hex/uArmPro_V4.1.0_release_20180601.hex diff --git a/hex/uArmPro_V4.1.0_release_20180601.hex b/hex/uArmPro_V4.1.0_release_20180601.hex new file mode 100755 index 0000000..f6e703d --- /dev/null +++ b/hex/uArmPro_V4.1.0_release_20180601.hex @@ -0,0 +1,3535 @@ +:10000000CBC40000EAC40000E8C40000E6C400005D +:10001000E4C40000E2C40000E0C40000DEC400004C +:10002000DCC400000C94BB51D8C400000C94B82E62 +:10003000D4C40000D2C40000D0C400000C94193114 +:10004000CCC400000C94703CC8C40000C6C40000BE +:10005000C4C40000C2C40000C0C400000C949D3B96 +:10006000BCC400000C9459450C94BB45B6C40000B8 +:10007000B4C40000B2C40000B0C40000AEC40000AC +:10008000ACC40000AAC40000A8C400000C94033152 +:10009000A4C40000A2C40000A0C400009EC40000CC +:1000A0009CC400009AC4000098C4000096C40000DC +:1000B00094C400000C94CE3090C400008EC40000A4 +:1000C0008CC400008AC400000C94993086C40000DF +:1000D00084C4000082C4000080C400007EC400000C +:1000E0007CC40000661913241324741989199E19FD +:1000F000B3191324BC191324CF191324DE19E819DA +:10010000401A132413241324F719111A2B1AD92275 +:10011000F2222123F22225233C232B2335236023A3 +:10012000672372237D239C239E23A123A3238E4335 +:10013000944397439A439F43A743AF431C441C44B3 +:100140001C44B743BA43C343CC431C441C441C4423 +:100150001C441C441C44D443DE43EA43F443F743A9 +:10016000004409440F44084AD73B3BCE016E84BC8F +:10017000BFFDC12F3D6C74319ABD56833DDA3D0001 +:10018000C77F11BED9E4BB4C3E916BAAAABE00004A +:1001900000803F072C7AA5BA6CC590DA3B9365FCCA +:1001A0008BBC53F810FD3C5692834DBD879D3AB6EB +:1001B0003DCBC9BF5BBE73DA0FC93F05A84CCDB2BA +:1001C000D44EB93836A9020C50B9918688083CA69D +:1001D000AAAA2ABE000000803F0000407A10F35A0D +:1001E00000A0724E18090010A5D4E80000E8764877 +:1001F000170000E40B54020000CA9A3B000000E123 +:10020000F505000080969800000040420F000000B5 +:10021000A08601000000102700000000E803000095 +:1002200000006400000000000A000000000001005F +:10023000000000002C76D888DC674F0823DFC1DF80 +:10024000AE59E1B1B796E5E3E453C63AE651997683 +:1002500096E8E6C28426EB898C9B62ED407C6FFCBD +:10026000EFBC9C9F40F2BAA56FA5F490055A2AF7FF +:100270005C936B6CF9676DC11BFCE0E40D47FEF508 +:1002800020E6B500D0ED902E030094357705008070 +:10029000841E080000204E0A000000C80C333333CF +:1002A000330F986E12831141EF8D2114893BE6556F +:1002B00016CFFEE6DB18D1844B381BF77C1D901D52 +:1002C000A4BBE424203284725E228100C9F124ECB4 +:1002D000A1E53D276364696E6F70737578585B00A4 +:1002E0000D0A4772626C20302E396A205B27242762 +:1002F00020666F722068656C705D0D0A000D0A0043 +:100300003D00244E005D0D0A005B302E396A2E320E +:10031000303136303732363A005D0D0A005B544CCE +:100320004F3A005D0D0A002C005B4739323A005D00 +:100330000D0A002C003A003330003238005B4700D1 +:100340005D0D0A00205300204600205400204D3847 +:1003500000204D3900204D3500204D3400204D3314 +:1003600000204D3200204D3100204D300020473913 +:1003700034002047393300204739310020473930D5 +:100380000020473230002047323100204731390009 +:1003900020473138002047313700204700473338A5 +:1003A0002E004738300047330047320047310047BE +:1003B00030005B002424202876696577204772622C +:1003C0006C2073657474696E6773290D0A24232089 +:1003D0002876696577202320706172616D65746588 +:1003E0007273290D0A244720287669657720706189 +:1003F00072736572207374617465290D0A24492033 +:100400002876696577206275696C6420696E666F0D +:10041000290D0A244E20287669657720737461724D +:1004200074757020626C6F636B73290D0A24783DBC +:1004300076616C7565202873617665204772626C01 +:100440002073657474696E67290D0A244E783D6CBB +:10045000696E6520287361766520737461727475A6 +:100460007020626C6F636B290D0A24432028636837 +:1004700065636B2067636F6465206D6F6465290D2C +:100480000A245820286B696C6C20616C61726D20A5 +:100490006C6F636B290D0A2448202872756E2068E2 +:1004A0006F6D696E67206379636C65290D0A7E2024 +:1004B000286379636C65207374617274290D0A2155 +:1004C00020286665656420686F6C64290D0A3F20EA +:1004D0002863757272656E74207374617475732904 +:1004E0000D0A6374726C2D78202872657365742010 +:1004F0004772626C290D0A000D0A00486F6D696E23 +:1005000067206661696C0050726F62652066616980 +:100510006C0041626F727420647572696E6720634B +:1005200079636C6500536F6674206C696D69740043 +:1005300048617264206C696D697400414C41524D90 +:100540003A20003E0D0A002C4C696D3A002C52589E +:100550003A002C4275663A002C002C57506F733AC3 +:10056000002C002C4D506F733A003C446F6F7200AA +:100570003C436865636B003C416C61726D003C48B4 +:100580006F6D65003C486F6C64003C52756E003CBA +:1005900049646C65005D0D0A00526573746F726981 +:1005A0006E672064656661756C74730050676D20BA +:1005B000456E6400436865636B20446F6F7200444E +:1005C000697361626C656400456E61626C656400AC +:1005D00043617574696F6E3A20556E6C6F636B651D +:1005E0006400272448277C2724582720746F20750F +:1005F0006E6C6F636B00526573657420746F20635B +:100600006F6E74696E7565005B00290D0A00206DC0 +:1006100061782074726176656C2C206D6D002061AC +:100620006363656C2C206D6D2F7365635E320020F3 +:100630006D617820726174652C206D6D2F6D696E0F +:10064000002C20737465702F6D6D007A007900782E +:10065000002028003D0024002028686F6D696E6727 +:100660002070756C6C2D6F66662C206D6D290D0ADF +:10067000002028686F6D696E67206465626F756E13 +:1006800063652C206D736563290D0A2432373D00A4 +:100690002028686F6D696E67207365656B2C206D0F +:1006A0006D2F6D696E290D0A2432363D00202868B1 +:1006B0006F6D696E6720666565642C206D6D2F6DAA +:1006C000696E290D0A2432353D00290D0A24323481 +:1006D0003D002028686F6D696E672064697220692B +:1006E0006E76657274206D61736B3A002028686FB6 +:1006F0006D696E67206379636C652C20626F6F6C27 +:10070000290D0A2432333D00202868617264206C70 +:10071000696D6974732C20626F6F6C290D0A243225 +:10072000323D002028736F6674206C696D697473A4 +:100730002C20626F6F6C290D0A2432313D00202875 +:100740007265706F727420696E636865732C2062C5 +:100750006F6F6C290D0A2432303D002028617263CE +:1007600020746F6C6572616E63652C206D6D290D50 +:100770000A2431333D0020286A756E6374696F6EF8 +:1007800020646576696174696F6E2C206D6D290D2A +:100790000A2431323D00290D0A2431313D00202840 +:1007A000737461747573207265706F7274206D61FB +:1007B000736B3A00202870726F62652070696E203A +:1007C000696E766572742C20626F6F6C290D0A2435 +:1007D00031303D0020286C696D69742070696E733A +:1007E00020696E766572742C20626F6F6C290D0A19 +:1007F00024363D0020287374657020656E61626C3C +:100800006520696E766572742C20626F6F6C290D9D +:100810000A24353D00290D0A24343D00202864694E +:100820007220706F727420696E76657274206D61CB +:10083000736B3A00290D0A24333D00202873746538 +:100840007020706F727420696E76657274206D61AD +:10085000736B3A002028737465702069646C65209E +:1008600064656C61792C206D736563290D0A2432EF +:100870003D002028737465702070756C73652C20A2 +:1008800075736563290D0A24313D0024303D005DF8 +:100890000D0A003A002C005B5052423A000D0A004B +:1008A000496E76616C69642067636F6465204944B2 +:1008B0003A00556E646566696E65642066656564B8 +:1008C0002072617465004D6F64616C2067726F7592 +:1008D000702076696F6C6174696F6E00486F6D6926 +:1008E0006E67206E6F7420656E61626C6564004196 +:1008F0006C61726D206C6F636B004E6F7420696465 +:100900006C6500454550524F4D207265616420660C +:1009100061696C2E205573696E6720646566617528 +:100920006C74730056616C7565203C2033207573C0 +:1009300065630053657474696E67206469736162EE +:100940006C65640056616C7565203C203000496E12 +:1009500076616C69642073746174656D656E740092 +:10096000426164206E756D62657220666F726D61A2 +:100970007400457870656374656420636F6D6D61A4 +:100980006E64206C6574746572006572726F723A81 +:1009900020006F6B0D0A000011241FBECFEFD1E2C3 +:1009A000DEBFCDBF00E00CBF13E0A0E0B2E0E6EF99 +:1009B000FAED00E00BBF02C007900D92A43DB10715 +:1009C000D9F722E1A4EDB3E001C01D92AC3EB2071D +:1009D000E1F70E94B1540C94796D12CB2F923F92A3 +:1009E0004F925F926F927F928F929F92AF92BF923F +:1009F000CF92DF92EF92FF920F931F93CF93DF93EB +:100A0000CDB7DEB7C15DD1090FB6F894DEBF0FBE1A +:100A1000CDBFC154DF4F99838883CF5BD04089E33A +:100A2000EDEBFDE0DF011D928A95E9F78AE0EEE249 +:100A3000FDE0AEEBBDE001900D928A95E1F7FE017D +:100A4000EB55FF4F1082C554DF4F19821882CB5BE4 +:100A5000D040C354DF4F19821882CD5BD040CB53B6 +:100A6000DF4F1882C55CD040CE54DF4F1882C25B86 +:100A7000D040C654DF4F1882CA5BD040BA97C655E3 +:100A8000DF4FF983E883CA5AD0409E012F5A3F4F67 +:100A9000C455DF4F39832883CC5AD040C90108960A +:100AA000C753DF4F99838883C95CD040CB55DF4F54 +:100AB0008881C55AD040C154DF4FE881F981CF5BAE +:100AC000D040E80FF11D1081112311F40C94871A06 +:100AD0009FEB910F9A3110F00C9405248F5FCB554A +:100AE000DF4F8883C55AD040AE014F555F4FBE01DE +:100AF0006B557F4FC154DF4F88819981CF5BD040C8 +:100B00000E94044D882311F40C940724CF55DF4F25 +:100B1000C880D980EA80FB80C15AD040C701B601A5 +:100B20000E949A660E94E763CF53DF4F6883798300 +:100B30008A839B83C15CD040CF53DF4F28803980AC +:100B4000C15CD040B10180E090E00E9413649B0141 +:100B5000AC01C701B6010E94996220E030E048EC88 +:100B600052E40E94CC650E942F660E94E763CA543B +:100B7000DF4F79836883C65BD0401D3411F40C9439 +:100B8000670E103511F40C94D414173411F00C9432 +:100B90005319CB55DF4F8881C55AD040C154DF4F20 +:100BA00028813981CF5BD040280F311D9AE9291661 +:100BB00098E0390609F428C160F4B4ED2B16B7E0CB +:100BC0003B06A1F0E9E92E16E8E03E0609F454C020 +:100BD000DCC5FCE92F16F8E03F0609F498C28DE960 +:100BE000281688E0380609F495C3CFC51A82198201 +:100BF000CE0101969F938F9381EC92E09F938F9308 +:100C00003F932F930E9461670F900F900F900F906A +:100C10000F900F90181619060CF0A8C389819A81BD +:100C20009093540C8093530C91E09093C50C809159 +:100C30004F0C8111ADC521E834E23093D10C2093E3 +:100C4000D00C1092200185E08093210121EF3FEF2D +:100C50003093D30C2093D20C2091D20C3091D30C32 +:100C6000309325012093240180917300816080934B +:100C7000730090934F0C8CC58E010B5E1F4F1F931A +:100C80000F937E0199E2E90EF11CFF92EF926E0143 +:100C9000ADE3CA0ED11CDF92CF92C355DF4FB881AE +:100CA000CD5AD040BF93C455DF4FE881CC5AD040D5 +:100CB000EF9389E192E09F938F933F932F930E944C +:100CC00061670FB6F894DEBF0FBECDBF04970CF47A +:100CD0004DC3EF961CAE1DAE1EAE1FAEEF97E59650 +:100CE0001CAE1DAE1EAE1FAEE597AB961CAE1DAE84 +:100CF0001EAE1FAEAB97A1961CAE1DAE1EAE1FAEB4 +:100D0000A197CE0101965C018CE0D5011D928A95D8 +:100D1000E9F7AE0145585F4F60E070E0CE018F5AB1 +:100D20009F4F0E94044D882309F432C5AE014F58ED +:100D30005F4F60E070E0C6010E94044D882309F413 +:100D400027C5AE0149595F4F60E070E0C7010E94BE +:100D5000044D882309F41CC5AE01435A5F4F60E07F +:100D600070E0C8010E94044D882309F411C520E0F9 +:100D700030E044EB52E4E5966CAD7DAD8EAD9FADB9 +:100D8000E5970E94996221EE3EE245E652E40E9418 +:100D90007A636B017C01E5966CAF7DAF8EAF9FAF40 +:100DA000E597EF964CAC5DAC6EAC7FACEF970E94D4 +:100DB00077639B01AC01C301B2010E94CC656983DA +:100DC0007A838B839C83C701B6010E944F669B0187 +:100DD000AC01C301B2010E94CC656D837E838F8319 +:100DE0009887AB968CAD9DADAEADBFADAB97898707 +:100DF0009A87AB87BC87A1962CAD3DAD4EAD5FAD5C +:100E0000A19700E0B501BCC4E5961CAE1DAE1EAEB8 +:100E10001FAEE597AB961CAE1DAE1EAE1FAEAB97D8 +:100E2000FE0131967F01FF93EF938E010B5E1F4F02 +:100E30001F930F93C555DF4FF881CB5AD040FF93D6 +:100E4000C655DF4F8881CA5AD0408F9382E492E022 +:100E50009F938F933F932F930E9461670FB6F894EF +:100E6000DEBF0FBECDBF03970CF480C2AE014F585A +:100E70005F4F60E070E0C8010E94044D882309F4D0 +:100E800087C4AE0149595F4F60E070E0C7010E941E +:100E9000044D882309F47CC4A1961CAE1DAE1EAE81 +:100EA0001FAEA19765961CAE1DAE1EAE1FAE659718 +:100EB00021961CAE1DAE1EAE1FAE21973E01B9E2BB +:100EC0006B0E711C8CE0F30111928A95E9F7609129 +:100ED000B40C7091B50C8091B60C9091B70C0E9437 +:100EE0001564C255DF4F688379838A839B83CE5A0A +:100EF000D0406091B00C7091B10C8091B20C909187 +:100F0000B30C0E9415649B01AC016091AC0C709114 +:100F1000AD0C8091AE0C9091AF0CC353DF4F288382 +:100F2000CD5CD040C253DF4F3883CE5CD040C0533D +:100F3000DF4F4883C05DD040CF52DF4F5883C15D43 +:100F4000D0400E941564DE01DD964D01FE01EF5A8E +:100F5000FF4F5F0190966D01C255DF4FE880F98029 +:100F60000A811B81CE5AD040C353DF4F2881CD5C0C +:100F7000D040C253DF4F3881CE5CD040C053DF4FEA +:100F80004881C05DD040CF52DF4F5881C15DD04015 +:100F90000E94C02BED968EAD9FADED9781309105EF +:100FA00029F1F4F4892B09F0EEC120E030E044EBA4 +:100FB00052E4E5966CAD7DAD8EAD9FADE5970E9498 +:100FC00099627B018C01E5966CAF7DAF8EAF9FAFD0 +:100FD000E59765962CAD3DAD4EAD5FAD659725C0EF +:100FE00082309105B1F00397E9F1CDC12196ECACC7 +:100FF000FDAC0EAD1FAD219765962CAD3DAD4EAD50 +:101000005FAD6597E5966CAD7DAD8EAD9FADE59717 +:1010100012C02196ECACFDAC0EAD1FAD2197E5964C +:101020002CAD3DAD4EAD5FADE597A1966CAD7DAD00 +:101030008EAD9FADA197FE01F1964F01DE019D9609 +:101040005D0163010E94DB2AA401B501C3010E9476 +:101050007A28AB962CAD3DAD4EAD5FADAB9700E0C1 +:10106000B3018EC3E596CCACDDACEEACFFACE5973E +:1010700020E030E044E353E4C701B6010E949165EB +:10108000181684F020E030E0A901C701B6010E94E3 +:10109000736387FF0AC0C12CD12CE4E3EE2EE3E496 +:1010A000FE2E03C0C12CD12C7601A701960160E071 +:1010B00070E084E393E40E94996220E030E044E32E +:1010C00053E40E947A639B01AC010E949A6223E37D +:1010D00033E343E35FE30E949A62609300027093FC +:1010E0000102809302029093030220E030E048EA7C +:1010F00051E40E947A6320E030EC4FE754E40E9410 +:10110000CC650E94E763CB010E9456303CC1CE0102 +:1011100045969F938F9344969F938F9344969F9366 +:101120008F93C355DF4FB881CD5AD040BF93C4557C +:10113000DF4FE881CC5AD040EF938AE592E09F934D +:101140008F933F932F930E9461670FB6F894DEBF91 +:101150000FBECDBF04970CF409C1EF961CAE1DAEB7 +:101160001EAE1FAEEF97E5961CAE1DAE1EAE1FAEB7 +:10117000E597AB961CAE1DAE1EAE1FAEAB97A1960B +:101180001CAE1DAE1EAE1FAEA197AE0145585F4FFF +:1011900060E070E0CE018F5A9F4F0E94044D88237B +:1011A00009F4F6C2AE014F585F4F60E070E0CE0127 +:1011B000CD960E94044D882309F4EAC2AE01495934 +:1011C0005F4F60E070E0CE0189960E94044D882355 +:1011D00009F4DEC2AE01435A5F4F60E070E0CE0119 +:1011E00045960E94044D882309F4D2C26091B40C44 +:1011F0007091B50C8091B60C9091B70C0E9415645B +:101200002B013C016091B00C7091B10C8091B20C3B +:101210009091B30C0E9415649B01AC016091AC0CE1 +:101220007091AD0C8091AE0C9091AF0CC353DF4F19 +:101230002883CD5CD040C253DF4F3883CE5CD04092 +:10124000C053DF4F4883C05DD040CF52DF4F58833B +:10125000C15DD0400E941564DE0119964D01FE016A +:1012600035965F0118976D0183017201C353DF4FFB +:101270002881CD5CD040C253DF4F3881CE5CD04056 +:10128000C053DF4F4881C05DD040CF52DF4F5881FF +:10129000C15DD0400E943D2CA401B501C6010E9451 +:1012A0007A28EF962CAD3DAD4EAD5FADEF976981DD +:1012B0007A818B819C810E949A6269837A838B8375 +:1012C0009C83E5962CAD3DAD4EAD5FADE5976D8150 +:1012D0007E818F8198850E949A626D837E838F8341 +:1012E0009887AB962CAD3DAD4EAD5FADAB976985A4 +:1012F0007A858B859C850E949A6269877A878B871D +:101300009C87A1962CAD3DAD4EAD5FADA19700E0A1 +:10131000B60136C28E01035A1F4F1F930F937E01F1 +:10132000B7E6EB0EF11CFF92EF926E01E1E7CE0EF5 +:10133000D11CDF92CF92C555DF4FF881CB5AD040F8 +:10134000FF93C655DF4F8881CA5AD0408F9389E1F9 +:1013500092E09F938F933F932F930E9461670FB604 +:10136000F894DEBF0FBECDBF049784F41F9281E0D6 +:101370008F938DE092E09F938F930E9446400F9051 +:101380000F900F900F9082E390E004C2C356DF4F9E +:10139000188219821A821B82CD59D040C756DF4F5E +:1013A000188219821A821B82C959D040CB56DF4F4E +:1013B000188219821A821B82C559D040CF56DF4F3E +:1013C000188219821A821B82C159D0408CE0C45500 +:1013D000DF4FE881F981CC5AD04011928A95E9F724 +:1013E000AE0143565F4F60E070E0CE0185589F4FDD +:1013F0000E94044D882309F4CBC1AE0147565F4FCC +:1014000060E070E0C6010E94044D882309F4C0C169 +:10141000AE014B565F4F60E070E0C7010E94044D83 +:10142000882309F4B5C1AE014F565F4F60E070E00C +:10143000C8010E94044D882309F4AAC1C357DF4F95 +:10144000188219821A821B82CD58D040C757DF4FAD +:10145000188219821A821B82C958D040CB57DF4F9D +:10146000188219821A821B82C558D0406091B40C30 +:101470007091B50C8091B60C9091B70C0E941564D8 +:101480002B013C016091B00C7091B10C8091B20CB9 +:101490009091B30C0E9415649B01AC016091AC0C5F +:1014A0007091AD0C8091AE0C9091AF0CC353DF4F97 +:1014B0002883CD5CD040C253DF4F3883CE5CD04010 +:1014C000C053DF4F4883C05DD040CF52DF4F5883B9 +:1014D000C15DD0400E941564DE01AB57BF4F4D0186 +:1014E000FE01E757FF4F5F0118966D0183017201FE +:1014F000C353DF4F2881CD5CD040C253DF4F3881CA +:10150000CE5CD040C053DF4F4881C05DD040CF5249 +:10151000DF4F5881C15DD0400E94C02B6091B40C58 +:101520007091B50C8091B60C9091B70C0E94156427 +:101530002B013C016091B00C7091B10C8091B20C08 +:101540009091B30C0E9415649B01AC016091AC0CAE +:101550007091AD0C8091AE0C9091AF0CC353DF4FE6 +:101560002883CD5CD040C253DF4F3883CE5CD0405F +:10157000C053DF4F4883C05DD040CF52DF4F588308 +:10158000C15DD0400E941564C753DF4F88809980A9 +:10159000C95CD040E1E5F0E0EC0FFD1F3496C25588 +:1015A000DF4FF983E883CE5AD0405F01DE01AF5AA6 +:1015B000BF4F6D0183017201C353DF4F2881CD5CA2 +:1015C000D040C253DF4F3881CE5CD040C053DF4F94 +:1015D0004881C05DD040CF52DF4F5881C15DD040BF +:1015E0000E943D2CC753DF4F48815981C95CD040D0 +:1015F000C255DF4F68817981CE5AD040C6010E9422 +:101600007A2865966CAD7DAD8EAD9FAD6597699678 +:10161000CCACDDACEEACFFAC69979B01AC010E9499 +:10162000CC654B015C01A7019601C701B6010E9480 +:10163000CC659B01AC01C501B4010E949A620E9475 +:101640005966C356DF4F288139814A815B81CD5964 +:10165000D0400E949A626B017C01C356DF4F6883C1 +:1016600079838A839B83CD59D040C756DF4F288129 +:1016700039814A815B81C959D040CB57DF4F68819E +:1016800079818A819B81C558D0400E949A6221EE5F +:101690003EE245E652E40E947A632B013C010E943F +:1016A00077639B01AC01C701B6010E94CC654B0179 +:1016B0005C0165966CAF7DAF8EAF9FAF6597C30140 +:1016C000B2010E944F669B01AC01C701B6010E94A6 +:1016D000CC6569966CAF7DAF8EAF9FAF6997CB56E7 +:1016E000DF4F288139814A815B81C559D0406D9691 +:1016F0006CAD7DAD8EAD9FAD6D970E949A626D967B +:101700006CAF7DAF8EAF9FAF6D978E01035C1F4FA7 +:1017100024E045E0C501B4010E94076069966CAD04 +:101720007DAD8EAD9FAD69970451110924E045E070 +:101730000E9407606D966CAD7DAD8EAD9FAD6D97CF +:101740000451110924E045E00E940760C356DF4FB1 +:10175000688179818A819B81CD59D04004511109DA +:1017600024E045E00E940760CF56DF4F2881398191 +:101770004A815B81C159D04000E0BE016F5A7F4F62 +:1017800080E00E94F24D90E005C081E090E002C050 +:1017900080E090E09C01215031092230310510F0A9 +:1017A0000C946724B8E22B16310409F445C280F585 +:1017B000F4E12F16310498F421E12216310408F0E7 +:1017C0007AC134E02316310409F479C008F4F6C074 +:1017D0009AE02916310409F45EC00C941324ACE19C +:1017E0002A16310409F457C038F4E6E12E16310404 +:1017F00008F4BFC10C941324FEE12F16310409F440 +:101800004AC026E22216310409F4D8C00C941324ED +:101810003DE32316310409F4FEC110F595E32916C2 +:10182000310409F44CC060F4BBE22B16310409F416 +:10183000B7C1E1E32E16310409F4B2C10C941324AC +:10184000FCE32F16310410F00C941324CF53DF4F18 +:101850008881C15CD04086538093C40DF9E0D5C126 +:101860002CE52216310460F43AE52316310408F021 +:101870003DC180E52816310409F4AEC00C94132450 +:101880009CE52916310439F0AFE52A16310408F435 +:1018900063C10C941324CA54DF4FE881F981C65BFD +:1018A000D040EF2B11F00C942524C654DF4FF88163 +:1018B000CA5BD040FF2309F452C00C9409242CE1E8 +:1018C00022163104D1F148F484E02816310481F065 +:1018D0009AE029163104E9F01FC0AEE12A1631045E +:1018E00009F447C0B5E32B16310409F465C014C0F0 +:1018F00081E010C0BFE12B16310408F051C0EAE0CE +:101900002E16310479F4E1E0C654DF4FE883CA5B58 +:10191000D04082E08093BD0DC255DF4F1882CE5A71 +:10192000D04097C1FCE12F16310409F09CC1F1E0D1 +:10193000C654DF4FF883CA5BD040CA54DF4F2881BA +:101940003981C65BD0402115310539F02A30310587 +:1019500011F00C94132484E015C083E013C0AEE1B1 +:101960002A16310439F631E0C654DF4F3883CA5B9A +:10197000D040CA54DF4F88819981C65BD040009720 +:1019800049F485E08093BD0DC255DF4F1882CE5AD1 +:10199000D04074C10A9711F00C94132486E0F2CF62 +:1019A00025E32216310411F00C94562491E0C6541C +:1019B000DF4F9883CA5BD04087E0ACCFC654DF4F7F +:1019C000F881CA5BD040F1110C94092422E0C6547E +:1019D000DF4F2883CA5BD04032E02316310421F167 +:1019E00060F421143104E1F02A94232809F02BC17A +:1019F00081E08093BE0D21E073C0A6E22A16310477 +:101A0000E9F0B0E52B16310409F451C0E3E02E16DD +:101A1000310409F018C183E08093BE0D81E00DC14F +:101A20001092BE0DF1E0F1C082E08093BE0D31E076 +:101A3000C255DF4F3883CE5AD0400BC1CA54DF4F56 +:101A4000A881B981C65BD040AE31B10531F170F4E7 +:101A5000549711F00C94132484E08093BE0DF1E0B0 +:101A6000C255DF4FF883CE5AD04008C1CA54DF4F69 +:101A7000E881F981C65BD040E832F10599F0F29730 +:101A800011F00C94132487E08093BE0D81E0C255C1 +:101A9000DF4F8883CE5AD040F1C085E08093BE0DE1 +:101AA00021E054C086E08093BE0D31E0BFC088E0E5 +:101AB0008093BE0DC8C0A2E12A16310441F0B3E103 +:101AC0002B16310449F01092C20DE2E063C081E0B0 +:101AD0008093C20DF2E099C082E08093C20D22E0B3 +:101AE000C255DF4F2883CE5AD040B3C0CA54DF4F0F +:101AF00088819981C65BD040892BB9F49AE5291673 +:101B0000310449F41092C10DA3E0C255DF4FA88300 +:101B1000CE5AD040B3C081E08093C10DB3E0C2552E +:101B2000DF4FB883CE5AD040A9C0CA54DF4FE881F6 +:101B3000F981C65BD0403A9711F00C941324FAE572 +:101B40002F16310411F40C94132424E0C255DF4FF6 +:101B50002883CE5AD04092C03DE52316310429F4A3 +:101B600081E08093BF0D85E068C01092BF0D95E0C5 +:101B70006BC0A4E12A16310451F481E08093C00DBA +:101B8000B6E0C255DF4FB883CE5AD04062C0109243 +:101B9000C00DE6E0C255DF4FE883CE5AD04059C0B1 +:101BA000C654DF4FF881CA5BD040F1110C94092470 +:101BB00021E32216310479F41092C30D38E0C255A6 +:101BC000DF4F3883CE5AD04083E0C654DF4F88833E +:101BD000CA5BD04053C0CA54DF4FA881B981C65BED +:101BE000D0401A9711F00C94132481E08093C30D18 +:101BF000B8E0C255DF4FB883CE5AD040E3E0C654B8 +:101C0000DF4FE883CA5BD04039C0C255DF4FF8834D +:101C1000CE5AD0401EC0CA54DF4F28813981C65BDE +:101C2000D040232B11F00C9413243AE0C255DF4F1F +:101C30003883CE5AD04022C087E0C255DF4F888318 +:101C4000CE5AD04006C091E0C255DF4F9883CE5A9D +:101C5000D040CA54DF4FA881B981C65BD040AB2BBE +:101C600069F00C943824C255DF4F1882CE5AD04008 +:101C7000B1E0C654DF4FB883CA5BD04081E090E04A +:101C8000C255DF4F0880CE5AD04002C0880F991F3E +:101C90000A94E2F7C354DF4F28813981CD5BD040ED +:101CA00028233923232B19F085E10C946724C3548E +:101CB000DF4FE881F981CD5BD040E82BF92BC3548D +:101CC000DF4FF983E883CD5BD0400C945605CA54AE +:101CD000DF4F28813981C65BD040232B11F00C9453 +:101CE0003824CB55DF4F8881C55AD040C154DF4FCF +:101CF000E881F981CF5BD040E80FF11D3EEA231661 +:101D000038E0330608F054C08CEA281688E038061C +:101D100008F0D6C09AE4291698E0390609F475C18E +:101D200000F5BCEC2B16310409F4CDC058F431E1B8 +:101D30002316310409F491C082E12816310409F414 +:101D4000BDC088C098E4291698E0390609F4F9C0A6 +:101D500008F054C1B3EE2B16B7E03B0609F4AEC051 +:101D600079C022EA221628E0320609F4D1C198F49B +:101D70008AE9281688E0380609F480C19BE929160B +:101D800098E0390609F4A1C1A9E92A16A8E03A06A3 +:101D900009F060C04DC1B6EA2B16B8E03B0608F466 +:101DA0008FC0E7EA2E16E8E03E0609F4EDC152C006 +:101DB00022EC221628E0320638F530EC231638E003 +:101DC000330608F07DC088EB281688E0380609F451 +:101DD000E2C268F4AEEA2A16A8E03A0609F4DAC1CB +:101DE000B7EB2B16B8E03B0609F4C2C233C029EBAF +:101DF000221628E0320609F4DFC23AEB231638E057 +:101E0000330609F45DC026C08AE6281689E0380644 +:101E100009F480C368F4A0E62A16A9E03A0609F49A +:101E2000EEC2B1E62B16B9E03B0609F45AC312C064 +:101E300024E7221629E0320609F40EC435E72316FA +:101E400039E0330609F460C48BE6281689E03806C9 +:101E500009F4C5C381E090E02DC58A9A80910801FC +:101E60008160809308015F9A0E94A1258FE0809392 +:101E7000C40C80E090E00E94872D6093A00C7093CA +:101E8000A10C8093A20C9093A30C81E090E00E949F +:101E9000872D6093A40C7093A50C8093A60C90934F +:101EA000A70C82E090E00E94872D6093A80C7093AD +:101EB000A90C8093AA0C9093AB0C02C00E944C31E9 +:101EC00080E090E0F7C48E010F5F1F4F1F930F93C8 +:101ED00083E892E09F938F93FF93EF930E94616753 +:101EE0000F900F900F900F900F900F9018161906EB +:101EF0000CF094C31D8A1E8A1F8A188EAE014B5E99 +:101F00005F4F60E070E0C8010E94044D882309F42F +:101F1000CFC44D895E896F89788D88E70E942543FB +:101F20004D895E896F89788D89E70E9425434D89A7 +:101F30005E896F89788D8AE70E9425430E94D34786 +:101F4000BFCF8E010F5F1F4F1F930F938EE892E05C +:101F50009F938F93FF93EF930E9461670F900F9071 +:101F60000F900F900F900F90181619060CF056C393 +:101F7000AE014B5E5F4F60E070E0C8010E94044D0F +:101F8000882309F495C420E030E04AE754E46D89E1 +:101F90007E898F89988D0E94CC650E94E263161617 +:101FA000170664F57093520C6093510C91E0909376 +:101FB000500C80914F0C811183CF21E834E2309393 +:101FC000D10C2093D00C1092200185E08093210148 +:101FD00021EF3FEF3093D30C2093D20C2091D20C01 +:101FE0003091D30C3093250120932401809173000C +:101FF00081608093730090934F0C62CF1092500CCD +:102000001092520C1092510C5BCF8081863509F0F2 +:102010004FC481818053823008F04AC41092C80CAA +:10202000813019F01092C70C4BCF8093C70C48CF6A +:1020300080818E3409F03CC491819053943008F033 +:1020400037C4923061F0933099F08091C40C913094 +:1020500019F05F9A846025C08A9A816022C08091BD +:1020600008018160809308018091C40C826019C0CE +:102070000E94A1258091C40C886013C080818E3499 +:1020800009F016C491819053943008F011C48091E6 +:10209000C40C923061F0933089F0913029F05F9850 +:1020A0008B7F8093C40C0CCF8A988E7FFACF90914F +:1020B00008019E7F909308018D7FF3CF909172006D +:1020C0009E7F90937200877FECCF80818E3409F0E1 +:1020D000EFC381818053843008F0EAC39091C40C2F +:1020E000823081F0833089F0813019F090FF03C095 +:1020F0003CC191FD3AC16EE873E084E69CE00E9429 +:102100002B67DECE92FD31C1F6CF93FFF4CF2DC108 +:102110001AA619A61D8A1E8A1F8A188E8E010F5FA5 +:102120001F4F8AE0D8011D928A95E9F7CE01899662 +:102130009F938F931F930F9387E992E09F938F93C1 +:10214000FF93EF930E9461670FB6F894DEBF0FBE56 +:10215000CDBF02970CF462C2AE014B5E5F4F60E0F0 +:1021600070E0C8010E94044D882309F4A1C32D89A1 +:102170003E894F89588D69A57AA5072E000C880BDA +:10218000990B0E9435259CCE8FEF0E9451440E94EE +:10219000513296CEEF961CAE1DAE1EAE1FAEEF971F +:1021A000E5961CAE1DAE1EAE1FAEE597AB961CAEFF +:1021B0001DAE1EAE1FAEAB9784E15E0129E2A20EFA +:1021C000B11CD501282F1D922A95E9F77E0135E132 +:1021D000E30EF11CD701282F1D922A95E9F7DE01A5 +:1021E00011966D011D928A95E9F78E010B571F4FCD +:1021F0008FEF90E0D8018D939C931F930F93DF9204 +:10220000CF92FF92EF92BF92AF9283EA92E09F93B8 +:102210008F93FF93EF930E9461670FB6F894DEBF30 +:102220000FBECDBF03970CF4F9C1AE0145585F4F07 +:1022300060E070E0C5010E94044D882309F438C3B2 +:10224000AE014F585F4F60E070E0C7010E94044D3F +:10225000882309F42DC3AE0149595F4F60E070E057 +:10226000C6010E94044D882309F422C3D8018D9130 +:102270009C910097D9F1019709F01AC3EF96CCAC65 +:10228000DDACEEACFFACEF9720E030E044EB52E485 +:10229000E5966CAD7DAD8EAD9FADE5970E949962E0 +:1022A00021EE3EE245E652E40E947A634B015C0176 +:1022B0000E9477639B01AC01C701B6010E94CC6507 +:1022C000EF966CAF7DAF8EAF9FAFEF97C501B401B6 +:1022D0000E944F669B01AC01C701B6010E94CC650C +:1022E000E5966CAF7DAF8EAF9FAFE597AE014959D4 +:1022F0005F4FBE016F587F4FCE0185589F4F0E94A0 +:10230000CF27AB96ECACFDAC0EAD1FADAB97E59611 +:102310002CAD3DAD4EAD5FADE597EF966CAD7DADAF +:102320008EAD9FADEF97FE01FD964F01DE01AF5AD6 +:10233000BF4F5D01B0966F010E9425292196ECAC3C +:10234000FDAC0EAD1FAD219765962CAD3DAD4EADEC +:102350005FAD6597A1966CAD7DAD8EAD9FADA1973C +:102360000E948B2C882309F4C6CE62E972E0C5CEA8 +:102370008081863509F09CC281818053823008F0CB +:1023800097C2813019F00E94CB319ACD9C9A9D9AC8 +:10239000A49AA59895CD8081863509F089C281815E +:1023A0008053823008F084C2813019F00E94C83115 +:1023B00087CD3F9A479884CD8081863509F078C2D1 +:1023C00081818053823008F073C2813019F00E94FD +:1023D000B73176CD809101018062809301018091B7 +:1023E00001018064809301018091020180628093E9 +:1023F00002018091020180648093020161CD80819D +:10240000833509F055C281818053843008F050C271 +:10241000823089F1833009F445C08130A9F01092EF +:10242000970C1092960C8AE999E1A5E9B2E48093A1 +:102430009C0C90939D0CA0939E0CB0939F0C8AE9EA +:1024400099E9A2E6B2E444C081E090E09093970C51 +:102450008093960C86EF98E2ACE4B2E480939C0CF7 +:1024600090939D0CA0939E0CB0939F0C8DEC9CECD4 +:10247000A0E8B2E42DC082E090E09093970C8093A6 +:10248000960C89E29CEDA4E9B2E480939C0C9093B5 +:102490009D0CA0939E0CB0939F0C80E090E0A2E670 +:1024A000B2E416C083E090E09093970C8093960C72 +:1024B00080E090E0ACE2B2E480939C0C90939D0CA1 +:1024C000A0939E0CB0939F0C80E090E0ABE8B2E448 +:1024D0008093980C9093990CA0939A0CB0939B0CBA +:1024E0007BC080E090E00E943E2D90934C0C809346 +:1024F0004B0C81E090E00E943E2D90934E0C809317 +:102500004D0C82E090E00E943E2D90934A0C809307 +:10251000490CCBC16091030E7091040E8091050EA1 +:102520009091060E0E9415642B013C016091FF0DF5 +:102530007091000E8091010E9091020E0E94156420 +:102540009B01AC016091FB0D7091FC0D8091FD0D24 +:102550009091FE0DC353DF4F2883CD5CD040C25312 +:10256000DF4F3883CE5CD040C053DF4F4883C05D1F +:10257000D040CF52DF4F5883C15DD0400E941564D8 +:10258000DE0111964D01FE0175965F0198966D0171 +:1025900083017201C353DF4F2881CD5CD040C25309 +:1025A000DF4F3881CE5CD040C053DF4F4881C05DE3 +:1025B000D040CF52DF4F5881C15DD0400E943D2CAA +:1025C00089819A81AB81BC8180939C0C90939D0CF6 +:1025D000A0939E0CB0939F0C0E94082571CC1D8A7D +:1025E0001E8A1F8A188E8E010F5F1F4F84E1D8014B +:1025F0001D928A95E9F71F930F9385EC92E09F93C4 +:102600008F93FF93EF930E9461670F900F900F904D +:102610000F900F900F901816190674F01F9281E01A +:102620008F938DE092E09F938F930E9446400F908E +:102630000F900F900F903CC1AE014B5E5F4F60E07A +:1026400070E0C8010E94044D882309F431C18D89CE +:102650009E89AF89B88D3CCF8081803509F028C133 +:1026600081818053833008F023C18130D9F08230DA +:1026700091F180E090E00E943E2D9093E1038093E1 +:10268000E00381E090E00E943E2D9093E30380936D +:10269000E20382E090E00E943E2D9093E503809358 +:1026A000E4030ECC80E090E00E943E2D9093DB038B +:1026B0008093DA0381E090E00E943E2D9093DD0349 +:1026C0008093DC0382E090E00E943E2D9093DF0334 +:1026D0008093DE03F5CB80E090E00E943E2D909346 +:1026E000D5038093D40381E090E00E943E2D909327 +:1026F000D7038093D60382E090E00E943E2D909312 +:10270000D9038093D803DCCB6091E0037091E1039F +:10271000E090E203F090E3039701262B372B8091A2 +:10272000E4039091E503822B932B892B19F480ED20 +:1027300092E031C0C090DA03D090DB038090DC03DC +:102740009090DD03E091DE03F091DF03C255DF4F8F +:10275000F983E883CE5AD040C4018C299D298E2B61 +:102760009F2B892B19F486ED92E015C0A090D4031D +:10277000B090D5030091D6031091D70398012A2970 +:102780003B298091D8039091D903822B932B892BDD +:1027900049F48CED92E09F938F930E9446400F90F6 +:1027A0000F9086C080E090E00E9413642EE23DEA24 +:1027B0004AE352E40E949A622B013C01B50180E099 +:1027C00090E00E9413642CE337EC4EEC52E40E943C +:1027D0009A629B01AC01C301B2010E949A622B0173 +:1027E0003C01B60180E090E00E9413649B01AC01C3 +:1027F000C301B2010E949A6220E030E040E450E45C +:102800000E947A6320E030E040E05FE30E949A6239 +:102810000E94E76370934C0C60934B0CB70180E00F +:1028200090E00E94136429EE3AE64BE753E40E94DD +:1028300099626B017C01B80180E090E00E94136412 +:1028400027E33EE145E953E40E949A629B01AC0113 +:10285000C701B6010E949A626B017C01B40180E05D +:1028600090E00E9413649B01AC01C701B6010E9475 +:102870009A6220E030E040E450E40E947A6320E075 +:1028800030E040E05FE30E949A620E94E763709349 +:102890004E0C60934D0CC255DF4F28813981CE5AC2 +:1028A000D04030934A0C2093490C0E94372E08CB1D +:1028B00082E390E09C01215031092230310510F073 +:1028C0000C94672436E02316310428F483E028169C +:1028D000310490F026C098E02916310410F40C94CD +:1028E0001324AAE02A16310408F440C0BEE12B16D6 +:1028F000310411F00C941324E2E02E16310461F03F +:10290000FEE12F16310441F0232809F046C081E092 +:102910008093C50D2BE032C082E08093C50D3BE073 +:1029200036C084E02816310471F095E02916310490 +:10293000A1F081E08093C70DACE0C255DF4FA883C2 +:10294000CE5AD04088C482E08093C70DBCE0C25507 +:10295000DF4FB883CE5AD0407EC41092C70DECE052 +:10296000C255DF4FE883CE5AD04075C4F9E02F1628 +:10297000310451F082E08093C60D2DE0C255DF4F47 +:102980002883CE5AD04067C41092C60D3DE0C25590 +:10299000DF4F3883CE5AD0405EC48BE0C255DF4F44 +:1029A0008883CE5AD04057C4CA54DF4FE881F9819A +:1029B000C65BD040EF2B11F00C943824CB55DF4F81 +:1029C0008881C55AD040FDEA2F16F8E03F0609F489 +:1029D000EDC258F53BE9231638E0330609F439C156 +:1029E00078F4A9E92A16A8E03A0609F42CC108F0FF +:1029F0002DC1E8E92E16E8E03E0609F44FC04BC0B1 +:102A0000FDE92F16F8E03F0609F42DC108F428C1AE +:102A10003EE9231638E0330609F428C18CEA28166B +:102A200088E0380609F41CC236C09BEB291698E0F2 +:102A3000390609F4C4C3D8F4B8EB2B16B8E03B064A +:102A400009F49EC338F4F7EB2F16F8E03F0609F4BB +:102A50007DC321C029EB221628E0320609F49BC36E +:102A60003AEB231638E0330609F49DC314C082EC18 +:102A7000281688E0380609F4A9C338F4A0EC2A1611 +:102A8000A8E03A0608F0DAC306C0B0E62B16B9E0B3 +:102A90003B0609F4BDC381E090E0D5C3A1961CAE0E +:102AA0001DAE1EAE1FAEA19765961CAE1DAE1EAE2E +:102AB0001FAE659721961CAE1DAE1EAE1FAE2197B0 +:102AC00084E1FE01B996CA55DF4FF983E883C65AFF +:102AD000D040282F11922A95E9F71E0135E1230EE7 +:102AE000311CD101E82F1D92EA95E9F79E012F5F75 +:102AF0003F4FC855DF4F39832883C85AD040D9018A +:102B00001D928A95E9F76091030E7091040E8091F1 +:102B1000050E9091060E0E9415642B013C016091F8 +:102B2000FF0D7091000E8091010E9091020E0E9497 +:102B300015649B01AC016091FB0D7091FC0D8091BF +:102B4000FD0D9091FE0DC353DF4F2883CD5CD04027 +:102B5000C253DF4F3883CE5CD040C053DF4F488331 +:102B6000C05DD040CF52DF4F5883C15DD0400E943E +:102B70001564FE01FD964F01DE01AF5ABF4F5D01A6 +:102B8000B0966F0183017201C353DF4F2881CD5C82 +:102B9000D040C253DF4F3881CE5CD040C053DF4FAE +:102BA0004881C05DD040CF52DF4F5881C15DD040D9 +:102BB0000E94C02B20E030E044EB52E421966CAD43 +:102BC0007DAD8EAD9FAD21970E949A6221966CAF2C +:102BD0007DAF8EAF9FAF2197A1966CAD7DAD8EADD1 +:102BE0009FADA1978E01075D1F4F24E045E00E9435 +:102BF000076065966CAD7DAD8EAD9FAD659781012B +:102C000024E045E00E94076021966CAD7DAD8EAD5D +:102C10009FAD21970451110924E045E00E9407600F +:102C20003F922F92C955DF4FF881C75AD040FF938A +:102C3000CA55DF4F2881C65AD0402F931F930F9358 +:102C400082EE92E0D7C280EF92E005C08CE59CE076 +:102C500002C08EEF92E09F938F9389EF92E0E0C2E3 +:102C600085E093E0F8CF8CE093E0F5CFC154DF4FDF +:102C7000E881F981CF5BD040E80FF11D80818E346F +:102C800009F0DFC281818053CA54DF4F8883C65B5D +:102C9000D040833008F0D5C2A1961CAE1DAE1EAE4A +:102CA0001FAEA19765961CAE1DAE1EAE1FAE6597FA +:102CB00021961CAE1DAE1EAE1FAE219784E1FE0113 +:102CC000B996CA55DF4FF983E883C65AD040282FFA +:102CD00011922A95E9F71E0135E1230E311CD1012D +:102CE000E82F1D92EA95E9F79E012F5F3F4FC855E7 +:102CF000DF4F39832883C85AD040D9011D928A9565 +:102D0000E9F76091030E7091040E8091050E909189 +:102D1000060E0E9415642B013C016091FF0D70911D +:102D2000000E8091010E9091020E0E9415649B018D +:102D3000AC016091FB0D7091FC0D8091FD0D9091A7 +:102D4000FE0DC353DF4F2883CD5CD040C253DF4F0D +:102D50003883CE5CD040C053DF4F4883C05DD04045 +:102D6000CF52DF4F5883C15DD0400E941564FE01F1 +:102D7000FD964F01DE01AF5ABF4F5D01B0966F0166 +:102D800083017201C353DF4F2881CD5CD040C25311 +:102D9000DF4F3881CE5CD040C053DF4F4881C05DEB +:102DA000D040CF52DF4F5881C15DD0400E94C02B30 +:102DB00020E030E044EB52E421966CAD7DAD8EAD69 +:102DC0009FAD21970E949A6221966CAF7DAF8EAF26 +:102DD0009FAF2197A1966CAD7DAD8EAD9FADA197B4 +:102DE0008E01075D1F4F24E045E00E940760659655 +:102DF0006CAD7DAD8EAD9FAD6597810124E045E062 +:102E00000E94076021966CAD7DAD8EAD9FAD219780 +:102E10000451110924E045E00E940760CA54DF4FC5 +:102E2000F881C65BD040F13079F0F23081F0C955BD +:102E3000DF4F2881C75AD0402F93CA55DF4F3881C2 +:102E4000C65AD0403F9309C03F922F9206C081E0FE +:102E500090E08C0F9D1F9F938F9385E193E0E0C1DD +:102E6000A1961CAE1DAE1EAE1FAEA19765961CAE00 +:102E70001DAE1EAE1FAE659721961CAE1DAE1EAEDA +:102E80001FAE219784E1DE019996CA55DF4FB983C1 +:102E9000A883C65AD040E82F1D92EA95E9F71E0193 +:102EA000F5E12F0E311CD101E82F1D92EA95E9F7CB +:102EB0009E012F5F3F4FC855DF4F39832883C85A83 +:102EC000D040D9011D928A95E9F780E090E00E94F8 +:102ED000872D2B013C0181E090E00E94872DCA5490 +:102EE000DF4F688379838A839B83C65BD04082E00F +:102EF00090E00E94872D20E030E044EB52E40E94F5 +:102F00009962FE01FD964F019E012F5A3F4F5901D4 +:102F1000DE01A35ABF4F6D017B018C01CA54DF4F04 +:102F2000288139814A815B81C65BD040C301B201EF +:102F30000E94DB2AA401B501C6010E947A28A1964D +:102F40006CAD7DAD8EAD9FADA1978E01075D1F4F1E +:102F500024E045E00E94076065966CAD7DAD8EADC6 +:102F60009FAD6597810124E045E00E9407602196AE +:102F70006CAD7DAD8EAD9FAD21970451110924E05C +:102F800045E00E9407601F930F933F922F92C9550F +:102F9000DF4FF881C75AD040FF93CA55DF4F2881D1 +:102FA000C65AD0402F9389E193E024C1A1961CAE6C +:102FB0001DAE1EAE1FAEA19765961CAE1DAE1EAE19 +:102FC0001FAE659721961CAE1DAE1EAE1FAE21979B +:102FD00084E1DE019996CA55DF4FB983A883C65AAA +:102FE000D040E82F1D92EA95E9F71E01F5E12F0E7A +:102FF000311CD101E82F1D92EA95E9F79E012F5F60 +:103000003F4FC855DF4F39832883C85AD040D90174 +:103010001D928A95E9F780E090E00E94872DCA54BE +:10302000DF4F688379838A839B83C65BD04081E0CE +:1030300090E00E94872DCF53DF4F688379838A8386 +:103040009B83C15CD04082E090E00E94872D20E00D +:1030500030E044EB52E40E9499622B013C01FE01F6 +:10306000FD964F019E012F5A3F4F5901CE01835AC1 +:103070009F4F6C0183017201CF53DF4F288139814B +:103080004A815B81C15CD040CA54DF4F688179813D +:103090008A819B81C65BD0400E94DB2AA401B501D6 +:1030A000C6010E947A28A1966CAD7DAD8EAD9FAD14 +:1030B000A1976596CCACDDACEEACFFAC65979B01FF +:1030C000AC010E94CC654B015C01A7019601C701D0 +:1030D000B6010E94CC659B01AC01C501B4010E9400 +:1030E0009A620E9459668E01075D1F4F24E045E0F9 +:1030F0000E94076020E030E044EB52E4C301B201DB +:103100000E949A62810124E045E00E9407602196B6 +:103110006CAD7DAD8EAD9FAD21970451110924E0BA +:1031200045E00E9407601F930F933F922F92C9556D +:10313000DF4FB881C75AD040BF93CA55DF4FE881EF +:10314000C65AD040EF9387E293E054C0A49B1FC0BF +:103150008FE390E00E94D0318C011F938F9385E321 +:1031600093E09F938F930E9446400F900F900F9093 +:103170000F900A30110558F00734110530F009C0DE +:10318000479905C00898009904C082E01DC080E0FE +:103190001BC081E019C082B386958695869591E023 +:1031A0008927817011C08BE390E00E94D03121E02B +:1031B0008536910508F420E01F922F932FC080914F +:1031C000020185FB882780F91F9227C080914A0C55 +:1031D0008F938091490C8F9380914E0C8F938091A7 +:1031E0004D0C8F9380914C0C8F9380914B0C8F934F +:1031F0008DE393E09F938F9384E69CE09F938F935E +:103200000E9432670FB6F894DEBF0FBECDBF16C066 +:103210008091970C8F938091960C8F9386E893E022 +:103220009F938F9384E69CE09F938F930E943267D5 +:103230000F900F900F900F900F900F9080E090E004 +:1032400002C082E390E09C01215031092230310517 +:1032500010F00C94672481E090E0C255DF4F0880A5 +:10326000CE5AD04002C0880F991F0A94E2F7C35487 +:10327000DF4F28813981CD5BD04028233923232B90 +:1032800011F00C94540EC354DF4FA881B981CD5B6B +:10329000D040A82BB92BC354DF4FB983A883CD5B93 +:1032A000D0400C945605812F110F990BAA0BBB0B24 +:1032B000FC01E654F109E531F10510F00C941324FA +:1032C0008827EE58FF4F8F4F0C94FF66C092C80DB1 +:1032D000D092C90DE092CA0DF092CB0DC255DF4FCE +:1032E0001882CE5AD040D2C0C092CC0DD092CD0D13 +:1032F000E092CE0DF092CF0DCB53DF4FB881C55C7D +:10330000D040B160CB53DF4FB883C55CD040E1E023 +:103310004FC0C092D00DD092D10DE092D20DF0925C +:10332000D30DCB53DF4FF881C55CD040F260CB5357 +:10333000DF4FF883C55CD04022E053C0C092D40D6B +:10334000D092D50DE092D60DF092D70DCB53DF4F32 +:103350003881C55CD0403460CB53DF4F3883C55CC7 +:10336000D04083E058C0CF53DF4F9881C15CD0403C +:103370009093D80DA4E069C0C701B6010E94E26332 +:103380006093D90D7093DA0D8093DB0D9093DC0D73 +:10339000B5E0C255DF4FB883CE5AD04077C0C09257 +:1033A000DD0DD092DE0DE092DF0DF092E00DE6E053 +:1033B000C255DF4FE883CE5AD04068C0C092E10DBD +:1033C000D092E20DE092E30DF092E40DF7E059C0E7 +:1033D000C092E50DD092E60DE092E70DF092E80D77 +:1033E00028E0C255DF4F2883CE5AD0404FC0C0924C +:1033F000EA0DD092EB0DE092EC0DF092ED0DCE5473 +:10340000DF4F3881C25BD0403160CE54DF4F38830C +:10341000C25BD0408AE0C255DF4F8883CE5AD0408D +:1034200035C0C092EE0DD092EF0DE092F00DF0920B +:10343000F10DCE54DF4F9881C25BD0409260CE54E4 +:10344000DF4F9883C25BD040ABE0C255DF4FA8830B +:10345000CE5AD0401BC0C092F20DD092F30DE09234 +:10346000F40DF092F50DCE54DF4FB881C25BD04021 +:10347000B460CE54DF4FB883C25BD040ECE098CF4D +:10348000F9E0C255DF4FF883CE5AD04001E010E09A +:10349000C255DF4F0880CE5AD04002C0000F111F26 +:1034A0000A94E2F7C554DF4F88819981CB5BD04005 +:1034B00080239123892B11F00C940B2481E693E057 +:1034C000C255DF4F0880CE5AD04002C095958795EF +:1034D0000A94E2F780FF0BC020E030E0A901C701A9 +:1034E000B6010E94736387FF02C00C940D24C5547B +:1034F000DF4F28813981CB5BD040202B312BC55445 +:10350000DF4F39832883CB5BD0400C945605CE54D3 +:10351000DF4F3881C25BD040332369F0C654DF4FA0 +:103520008881CA5BD040811106C092E0C654DF4F4B +:103530009883CA5BD040C554DF4FA881CB5BD04095 +:10354000A5FF0FC08091D90D9091DA0DA091DB0DF0 +:10355000B091DC0D80389649A849B10514F00C945F +:103560000F248091BF0D813091F4C654DF4FF88154 +:10357000CA5BD040F23009F040C0C554DF4F28810B +:10358000CB5BD04020FD02C00C94192436C0809142 +:103590002F0D811132C0C554DF4F3881CB5BD04035 +:1035A00030FF1BC08091C00D813039F523E333E338 +:1035B0004BEC51E46091C80D7091C90D8091CA0D1A +:1035C0009091CB0D0E94CC656093C80D7093C90D8E +:1035D0008093CA0D9093CB0D10C080913C0D9091BB +:1035E0003D0DA0913E0DB0913F0D8093C80D90937D +:1035F000C90DA093CA0DB093CB0DC554DF4F888180 +:103600009981CB5BD04090FD10C08091380D909196 +:10361000390DA0913A0DB0913B0D8093E50D90933B +:10362000E60DA093E70DB093E80D8091BD0D8130BC +:10363000B9F4C554DF4F9881CB5BD04096FD03C0F1 +:103640008CE10C946724C554DF4FA881B981CB5B12 +:10365000D040AF7BC554DF4FB983A883CB5BD0404C +:103660008091C20D882331F1813091F4B1E0CF53C4 +:10367000DF4FB883C15CD040C154DF4F1882CF5BAD +:10368000D040E2E0CA54DF4FE883C65BD04023C09D +:10369000CF53DF4F1882C15CD040F2E0C154DF4FFE +:1036A000F883CF5BD04021E0CA54DF4F2883C65B4C +:1036B000D04011C032E0CF53DF4F3883C15CD040DF +:1036C00081E0C154DF4F8883CF5BD040CA54DF4FC5 +:1036D0001882C65BD0408091C00D813041F0C65445 +:1036E000DF4F9881CA5BD0409330F1F530C07AEE5D +:1036F000E72E7DE0F72E00E010E0CE54DF4FA881EA +:10370000C25BD040CA2ED12CC601002E02C09595B6 +:1037100087950A94E2F780FF11C023E333E34BEC73 +:1037200051E4F70160817181828193810E94CC65AF +:10373000D7016D937D938D939C9313970F5F1F4FCC +:10374000B4E0EB0EF11C03301105F1F6C8CF809107 +:10375000C30D813049F4CE54DF4FE881C25BD040C5 +:10376000E43011F00C9411248CE0E1E5FDE0DE0181 +:10377000559601900D928A95E1F7C354DF4F288149 +:103780003981CD5BD04031FD0AC09090BD0D32E053 +:103790009316D1F088E0981609F4DDC042C18091FB +:1037A000C40D873018F08DE10C9467249091340D8E +:1037B000981759F3BE016B5E7F4F0E9431448823F6 +:1037C00011F40C942324E1CFCE54DF4F9881C25BD7 +:1037D000D040911103C08AE10C946724C554DF4F97 +:1037E00088819981CB5BD04080759927892B09F41A +:1037F00027CF6091DD0D7091DE0D8091DF0D9091EE +:10380000E00D0E949A660E94E763673060F680913F +:10381000D80D843161F0823011F00C941324C5541A +:10382000DF4FA881CB5BD040A7FF01C0FCC7C554C8 +:10383000DF4FE881F981CB5BD040EF7AC554DF4F91 +:10384000F983E883CB5BD040662339F06150C255E1 +:10385000DF4F6883CE5AD04007C0F091C40DC255E7 +:10386000DF4FF883CE5AD040BE016F5F7F4FC25505 +:10387000DF4F8881CE5AD0400E943144882309F41A +:10388000E2C73090D80D4090690D50906A0D60905D +:103890006B0D70906C0D8E010F5F1F4FC12CD12CE2 +:1038A000E12CF12CCE54DF4F2881C25BD040822E18 +:1038B000912CC4010E2C02C0959587950A94E2F7CD +:1038C00080FF3BC0C6018354924F5C0194E13912E2 +:1038D0002AC0F601E25DF24F27A530A941A952A9FD +:1038E0006789708D818D928D0E949962D5019D9618 +:1038F0002D913D914D915C91D0970E949962F80174 +:103900006083718382839383F2E0EF16F104A9F45C +:10391000A30192010E949962D8016D937D938D93CA +:103920009C9313970AC0F50185A596A5A7A5B0A9F4 +:10393000F80180839183A283B383FFEFEF1AFF0A1C +:1039400024E0C20ED11C0C5F1F4F33E0E316F104DC +:1039500009F0AFCF34C1CE54DF4F8881C25BD04075 +:10396000882309F438CF4090690D50906A0D60901B +:103970006B0D70906C0D0AEE1DE0C12CD12CE12C6A +:10398000F12CA82EB12CF601E25DF24FC5010E2CF0 +:1039900002C0959587950A94E2F780FF2BC0A5E1B8 +:1039A000B0E0AC0FBD1FAC0DBD1D2D913D914D91F3 +:1039B0005C916789708D818D928D0E949962D8018A +:1039C0002D913D914D915C910E949962F801608327 +:1039D000718382839383F2E0EF16F104A1F4A301D3 +:1039E00092010E949962D8016D937D938D939C936F +:1039F000139709C087A590A9A1A9B2A9F80180834E +:103A00009183A283B383FFEFEF1AFF0A24E0C20E73 +:103A1000D11C0C5F1F4F33E0E316F10409F0B3CF64 +:103A2000C9C0C654DF4F8881CA5BD040833061F47F +:103A300095E0991609F49DC0A7E09A1609F4B5C05F +:103A4000B3E09B12B7C084C0CE54DF4FE881C25BA5 +:103A5000D040EE2309F4A3C08090C10D4090690DC1 +:103A600050906A0D60906B0D70906C0D65E4C62EE1 +:103A70006DE0D62E0AEE1DE05E01F5E1AF0EB11C41 +:103A8000E12CF12C2E2E312CC1010E2C02C095956B +:103A900087950A94E2F780FD0BC0F6018081918141 +:103AA000A281B381F80180839183A283B3833FC055 +:103AB000F7E09F16E1F1811029C0D60158962D91AB +:103AC0003D914D915C915B97F5016081718182819F +:103AD00093810E949A62D8012D913D914D915C9104 +:103AE0000E949A62F8016083718382839383F2E07B +:103AF000EF16F104E1F4A30192010E949A62D80149 +:103B00006D937D938D939C93139711C0F601208143 +:103B1000318142815381D8016D917D918D919C912C +:103B20000E949A62F8016083718382839383FFEF1E +:103B3000EF1AFF0A24E0C20ED11C0C5F1F4F34E0C5 +:103B4000A30EB11C83E0E816F10409F09DCF70CFFD +:103B5000CE54DF4F9881C25BD040911105C0C6544E +:103B6000DF4F1882CA5BD040BE016F5F7F4F86E097 +:103B700010C0CE54DF4FA881C25BD040A11105C058 +:103B8000C654DF4F1882CA5BD040BE016F5F7F4FC3 +:103B900087E00E943144882309F455C60BC085E0B4 +:103BA000981671F397E099128EC68091BE0D8230FF +:103BB00008F03BC6C255DF4F1882CE5AD040109154 +:103BC000BE0D183089F4CE54DF4FB881C25BD040AF +:103BD000BB2309F44DC2C654DF4FE881CA5BD04015 +:103BE000E13009F024C664C3C654DF4FF881CA5BD4 +:103BF000D040F23009F03CC2111109C0CE54DF4F61 +:103C00002881C25BD040222309F439C251C320E08D +:103C100030E0A9016091C80D7091C90D8091CA0D65 +:103C20009091CB0D0E947363882309F402C614306F +:103C300028F4123080F4113029F03AC3183008F417 +:103C4000D1C136C3CE54DF4F3881C25BD04033235D +:103C500009F415C22DC3CE54DF4F8881C25BD0401A +:103C6000882309F4B8CDCA54DF4F9881C65BD04091 +:103C7000692E712CC154DF4FB881CF5BD040AB2F80 +:103C8000B0E0C354DF4FB983A883CD5BD04081E05F +:103C900090E09C01C154DF4F0880CF5BD04002C050 +:103CA000220F331F0A94E2F77C01CA54DF4F0880C9 +:103CB000C65BD04002C0EE0CFF1C0A94E2F7E22A79 +:103CC000F32ACE54DF4FE881C25BD0408E2F90E0C4 +:103CD0008E219F21892B09F4AEC5C301880F991F3E +:103CE000880F991FFC01E354F24FDC01A25DB24F33 +:103CF00057962D913D914D915C915A9765A576A56A +:103D000087A590A90E9499621B012C01C354DF4F23 +:103D100088819981CD5BD040880F991F880F991FAA +:103D2000FC01E354F24FDC01A25DB24F57962D9196 +:103D30003D914D915C915A9765A576A587A590A96F +:103D40000E9499624B015C01C554DF4FC880D98045 +:103D5000CB5BD040F0E8CF22DD24C554DF4F288173 +:103D6000CB5BD04027FF4BC0C554DF4F8881998182 +:103D7000CB5BD0408F77C554DF4F99838883CB5B73 +:103D8000D0402091EA0D3091EB0D4091EC0D509117 +:103D9000ED0D6091450D7091460D8091470D90910C +:103DA000480D0E947363811178C12091EE0D30910E +:103DB000EF0D4091F00D5091F10D6091490D709112 +:103DC0004A0D80914B0D90914C0D0E9473638111AF +:103DD00064C12091F20D3091F30D4091F40D50919A +:103DE000F50D60914D0D70914E0D80914F0D90919C +:103DF000500D0E947363811150C181E268C5CB539D +:103E0000DF4F3881C55CD040232F30E0CE54DF4FE8 +:103E100039832883C25BD040E222F322EF2809F4E1 +:103E20000CC5C554DF4F88819981CB5BD040817F21 +:103E3000C554DF4F99838883CB5BD0408091C00D00 +:103E4000813009F486C0F301EE0FFF1FEE0FFF1F54 +:103E5000EF53F24FC384D484E584F684A70196011E +:103E6000C201B1010E9499622B013C01C354DF4F92 +:103E7000E881F981CD5BD040EE0FFF1FEE0FFF1FF1 +:103E8000EF53F24F83859485A585B685CE54DF4FD9 +:103E900088839983AA83BB83C25BD0409C01AD0118 +:103EA000C501B4010E9499624B015C01A30192011A +:103EB000C301B2010E94CC652B013C01A501940114 +:103EC000C501B4010E94CC659B01AC01C301B201E4 +:103ED0000E949A620E9459664B015C01A7019601FB +:103EE000C701B6010E94CC656B017C01CE54DF4F47 +:103EF000288139814A815B81C25BD040CA01B90106 +:103F00000E94CC659B01AC01C701B6010E949A6278 +:103F10000E9459666B017C016093E10D7093E20D84 +:103F20008093E30D9093E40D9B01AC01C501B401B6 +:103F30000E9499624B015C01E894B7F82AE037EDE2 +:103F400043EA5BE3C501B4010E94916518166CF168 +:103F5000AFC10DEB1DE0CE54DF4F88819981C25B6C +:103F6000D0400C2C02C0959587950A94E2F780FF0B +:103F700012C023E333E34BEC51E4D8011F966D915B +:103F80007D918D919C9152970E94CC65F801678735 +:103F9000708B818B928BFFEFCF1ADF0A0C5F1F4F64 +:103FA00023E0C216D104B9F64ECF20E030E040E065 +:103FB0005FE3C501B4010E94916518160CF41DCF92 +:103FC0002FE632E143E85AE3C701B6010E94CC650F +:103FD0009B01AC01C501B4010E94916518160CF457 +:103FE0000CCF66C1CE54DF4F3881C25BD040332343 +:103FF00009F4F1CB2091EA0D3091EB0D4091EC0DDD +:104000005091ED0D6091450D7091460D8091470DD9 +:104010009091480D0E94736381114AC12091EE0D69 +:104020003091EF0D4091F00D5091F10D6091490DDF +:1040300070914A0D80914B0D90914C0D0E947363CD +:10404000811136C12091F20D3091F30D4091F40DA4 +:104050005091F50D60914D0D70914E0D80914F0D69 +:104060009091500D0E947363882309F4C6CE20C13D +:10407000C654DF4F8881CA5BD040811119C1C55435 +:10408000DF4F88819981CB5BD0408E7D9C7FC65469 +:10409000DF4F1882CA5BD04013C18091C00D8130C0 +:1040A000B1F423E333E34BEC51E46091E10D709103 +:1040B000E20D8091E30D9091E40D0E94CC65609338 +:1040C000E10D7093E20D8093E30D9093E40D8091E8 +:1040D000E10D9091E20DA091E30DB091E40DCE546D +:1040E000DF4F88839983AA83BB83C25BD040A20140 +:1040F0009101C201B1010E94CC65CB53DF4F6883AF +:1041000079838A839B83C55CD040A5019401C50156 +:10411000B4010E94CC65C753DF4F688379838A83DB +:104120009B83C95CD04020E030E040E850E4CE54AE +:10413000DF4F688179818A819B81C25BD0400E9478 +:10414000CC65CE54DF4F288139814A815B81C25BC7 +:10415000D0400E94CC65CB53DF4F288139814A8102 +:104160005B81C55CD0400E949962C753DF4F2881B4 +:1041700039814A815B81C95CD0400E9499626B01A0 +:104180007C0120E030E0A9010E94736387FD72C3C7 +:10419000C701B6010E9459666B017C01C753DF4F0E +:1041A000288139814A815B81C95CD040CB53DF4F84 +:1041B000688179818A819B81C55CD0400E949A6226 +:1041C0000E9459669B01AC01C701B60190580E943C +:1041D0007A636B017C01133021F4F7FAF094F7F85D +:1041E000F09420E030E0A901CE54DF4F688179815E +:1041F0008A819B81C25BD0400E94736387FF15C098 +:10420000F7FAF094F7F8F094CE54DF4F8881998153 +:10421000AA81BB81C25BD040B0588093E10D9093DE +:10422000E20DA093E30DB093E40D8301000F111F85 +:10423000000F111F0F53124FA7019601C501B401C2 +:104240000E94CC659B01AC01C201B1010E94996240 +:1042500020E030E040E05FE30E94CC65D8011B968F +:104260006D937D938D939C931E97C354DF4F08816C +:104270001981CD5BD040000F111F000F111F0F538C +:10428000124FA7019601C201B1010E94CC659B01AA +:10429000AC01C501B4010E949A6220E030E040E028 +:1042A0005FE30E94CC65F8016387748785879687F2 +:1042B000C554DF4F88819981CB5BD0408E7D907E45 +:1042C000892B09F0BCC28091D90D9091DA0DA09193 +:1042D000DB0DB091DC0D8093410D9093420DA093C6 +:1042E000430DB093440D8091BF0D80932F0D8091AD +:1042F000C80D9091C90DA091CA0DB091CB0D8093BE +:104300003C0D90933D0DA0933E0DB0933F0DC0909A +:10431000E50DD090E60DE090E70DF090E80DA701D7 +:1043200096016091380D7091390D80913A0D909100 +:104330003B0D0E947363882341F18091370D8823E0 +:10434000A1F09091F80D923081F0C153DF4F888336 +:10435000CF5CD0400E94EA5FB701A601C153DF4F96 +:104360008881CF5CD0400E94FF3E8091E50D909106 +:10437000E60DA091E70DB091E80D8093380D909374 +:10438000390DA0933A0DB0933B0D8091E90D8093C8 +:10439000400D8091C70D9091370D981709F446C0D4 +:1043A0004091380D5091390D60913A0D70913B0D4F +:1043B0009091F80D9230B1F1C053DF4F4883C05D4A +:1043C000D040CF52DF4F5883C15DD040C353DF4F41 +:1043D0006883CD5CD040C253DF4F7883CE5CD04041 +:1043E000C153DF4F8883CF5CD0400E94EA5FC05347 +:1043F000DF4F4881C05DD040CF52DF4F5881C15D53 +:10440000D040C353DF4F6881CD5CD040C253DF4FF3 +:104410007881CE5CD040C153DF4F8881CF5CD040E3 +:104420000E94FF3E8091C70D8093370D1091C60DFD +:104430008091360D811781F08091F80D823041F026 +:104440000E94EA5F123011F45C9A02C00E94AF54DD +:104450008091C60D8093360D8091BD0D813089F01D +:104460008091C20D8093320D8091C00D8093300DEC +:10447000C654DF4F9881CA5BD040933009F074C0B6 +:1044800054C08090DD0D9090DE0DA090DF0DB090B7 +:10449000E00D8091F80D823019F320E030E040EA21 +:1044A00051E4C501B4010E94CC650E9450640E9491 +:1044B000E7636B017C010E94EA5F20E030E04AE79D +:1044C00054E4C501B4010E94CC654B015C0182E358 +:1044D0008C9DB0018D9D700D112480E090E00E94B4 +:1044E00013649B01AC01C501B4010E9499620E9452 +:1044F00050640E94E763CB010E94F94C86010115CC +:10450000110509F4ADCF0E94AF400150110980910F +:10451000F70D8111A5CFAFEFB0E7E2E0A150B040B9 +:10452000E040E1F700C00000EACF8091C30D809326 +:10453000330D813089F48091F20D9091F30DA091AB +:10454000F40DB091F50D8093690D90936A0DA093D1 +:104550006B0DB0936C0D08C01092690D10926A0D2E +:1045600010926B0D10926C0D8091C40D9091340DD2 +:10457000981759F08093340D8CE0FE017596A1E5F3 +:10458000BDE001900D928A95E1F78091C10D809375 +:10459000310DE091BD0D8E2F90E0FC013297E83097 +:1045A000F10508F069C08827E957FF4F8F4F0C9439 +:1045B000FF66BE016F5F7F4FC255DF4F8881CE5AC5 +:1045C000D0400E9428448091340DC255DF4FF881BD +:1045D000CE5AD0408F1350C08CE0FE013196A1E539 +:1045E000BDE03EC0C654DF4F2881CA5BD0402223C5 +:1045F00071F020913C0D30913D0D40913E0D509158 +:104600003F0D00E06AEE7DE081E00E94F24D2091D6 +:104610003C0D30913D0D40913E0D50913F0D00E01D +:10462000BE016F5F7F4F81E00E94F24D182F8CE03A +:10463000FE013196A5E4BDE001900D928A95E1F767 +:104640001CC065E47DE086E003C065E47DE087E0B2 +:104650000E94284411C08CE0EAEEFDE0ADE5BDE02B +:1046600001900D928A95E1F707C08CE0EDE5FDE041 +:10467000DF011D928A95E9F710E08091BE0D8093CD +:104680002E0D883009F470C0C654DF4FB881CA5B64 +:10469000D040B23009F068C090E08830910508F051 +:1046A0005AC0FC0140903C0D50903D0D60903E0D75 +:1046B00070903F0D8827E157FF4F8F4F0C94FF6696 +:1046C00000E0A30192016AEE7DE080E007C0009166 +:1046D0002F0DA30192016AEE7DE081E00E94F24D70 +:1046E000182F39C06091E10D7091E20D8091E30DBA +:1046F0009091E40D8824839409C06091E10D70913C +:10470000E20D8091E30D9091E40D812CCF53DF4FAA +:10471000A880C15CD040C154DF4FC880CF5BD0407F +:10472000CA54DF4FE880C65BD04000912F0DA30133 +:1047300092010E94555D0FC000E001C001E020E041 +:1047400004C000E001C001E021E040912F0DC30151 +:10475000B2010E94AA5C8CE0EAEEFDE0A5E4BDE0B7 +:1047600001900D928A95E1F78091C50D8093350DEA +:10477000882309F466C00E94EA5F9091350D80910C +:10478000F80D913069F48230E9F19FB7F894809187 +:104790006D0D886080936D0D9FBF0E94AF4032C049 +:1047A00091E090932E0D1092320D1092310D1092D7 +:1047B0002F0D1092340D1092370D1092360D82305D +:1047C000A9F0BE016B5E7F4F80E00E9431448823D8 +:1047D000D1F18CE0FE017596A1E5BDE001900D924E +:1047E0008A95E1F70E941E430E94AF5488E096E04C +:1047F0000E94A1408CEA95E00E94A14085E995E0E5 +:104800000E94A1401092350D1CC081E060C082E082 +:104810005EC088E15CC089E15AC084E058C08BE189 +:1048200056C085E254C084E152C08EE150C08FE191 +:104830004EC086E14CC080E24AC083E248C084E2B8 +:1048400046C0812F44C087E042C0EEE12E163104FD +:1048500011F40C94B90C80F42AE02216310411F4FE +:104860000C94890C3CE12316310411F40C949D0C3A +:1048700087E12DC082E22BC085E32816310411F4B4 +:104880000C94DC0C9CE52916310491F7CA54DF4FD7 +:10489000E881F981C65BD040309729F03A9719F644 +:1048A00089E00C94C20C88E00C94C20C3CE5231601 +:1048B000310411F00C94330EA1E0C654DF4FA883ED +:1048C000CA5BD040E3CFA3E09A1274C948C9CF5263 +:1048D000DF4F0FB6F894DEBF0FBECDBFDF91CF9193 +:1048E0001F910F91FF90EF90DF90CF90BF90AF900E +:1048F0009F908F907F906F905F904F903F902F9000 +:1049000008952091530C3091540C21153105B9F0C4 +:1049100080915A0C90915B0C8217930734F40196A6 +:1049200090935B0C80935A0C0AC010925B0C10920F +:104930005A0C1092540C1092530C1092C50C2091EA +:10494000510C3091520C21153105A1F08091580C79 +:104950009091590C8217930734F401969093590C57 +:104960008093580C07C01092590C1092580C81E09B +:104970008093C60C8091C50C81111BC08091500C96 +:10498000811117C0809173008E7F80937300109205 +:104990004F0C1092540C1092530C1092520C109217 +:1049A000510C10925B0C10925A0C1092590C1092F0 +:1049B000580C08958091570C811107C081E08093B5 +:1049C000570C80910B01806205C01092570C8091AA +:1049D0000B018F7D80930B018091550C9091560CAB +:1049E0009C012F5F3F4F3093560C2093550C209124 +:1049F0000402309105022817390748F41092560C2A +:104A00001092550C809170008E7F809370000895F5 +:104A1000CF93DF936091960C84E893E00E94045456 +:104A20006091970C85E893E00E94045488E993E034 +:104A3000EC012196FC01E050F74F60810E94045484 +:104A4000CE01CC39D340A1F78EE893E0EC0121965A +:104A5000FC01E25FF64F60810E940454CE01C2392E +:104A6000D340A1F7DF91CF910895CF92DF92EF92DB +:104A7000FF920F931F93CF93DF9369017A01EAE0CE +:104A8000F1E0208120622083EBE0F1E020812F7DA6 +:104A90002083660F771F709305026093040209EC70 +:104AA0001CE08AED94E2F80191838083C0E7D0E0B6 +:104AB00088818E7F8883E0EBF0E080818C7F80832B +:104AC000E1EBF0E08081877F8083A6EBB0E08C9102 +:104AD0008F7D8C9388818D7F8883808184608083A3 +:104AE00080818C7F808320E034E244EF59E4C70169 +:104AF000B6010E947A6320E034E244E75BE40E945E +:104B0000CC6520E030E040E85CE30E94CC650E9488 +:104B1000E26320E031E0C901861B970BF801938323 +:104B20008283828193818093B200888181608883AF +:104B3000DF91CF911F910F91FF90EF90DF90CF9079 +:104B40000895E1EAF0E080E180831092A000A7E2FE +:104B5000BDE082E016968C93169780E29EE415964F +:104B60009C938E9314979093A7008093A60082E164 +:104B7000808320E030E048EA51E4609100027091C7 +:104B8000010280910202909103020E947A6320E068 +:104B900030EC4FE754E40E94CC650E94E763CB0100 +:104BA0000C945630CF93DF93D82FC8E05E98559A77 +:104BB000D7FF02C05D9A01C05D9865E070E080E0BB +:104BC00090E00E94BB4C5E9A65E070E080E090E06F +:104BD0000E94BB4C5E98DD0F65E070E080E090E0E5 +:104BE0000E94BB4CC15011F762E070E080E090E0A1 +:104BF0000E94BB4C559A5D9A62E070E080E090E0C4 +:104C0000DF91CF910C94BB4C5E98559A5D9865E00E +:104C100070E080E090E00E94BB4C5E9A65E070E03E +:104C200080E090E00E94BB4C559A5D9A65E070E090 +:104C300080E090E00C94BB4CCF93559A5D9A62E073 +:104C400070E080E090E00E94BB4C5E9A62E070E011 +:104C500080E090E00E94BB4C55989BEF89B1C82F33 +:104C6000C07285FF05C09150C9F7CEDFC1E007C013 +:104C70005E9862E070E080E090E00E94BB4C8C2F78 +:104C8000CF910895559A5D9A5E9A65E070E080E054 +:104C900090E00E94BB4C559A5D9865E070E080E022 +:104CA00090E00E94BB4C5E9862E070E080E090E093 +:104CB0000C94BB4CCF93DF93D82FC8E080910201B6 +:104CC0008F778093020180910101846080930101BC +:104CD00080910201D7FF02C0846001C08B7F809366 +:104CE000020165E070E080E090E00E94BB4C8091A2 +:104CF000020180688093020165E070E080E090E04E +:104D00000E94BB4C809102018F7780930201DD0FDE +:104D100065E070E080E090E00E94BB4CC15071F60D +:104D200062E070E080E090E00E94BB4C8091010165 +:104D3000846080930101809102018460809302016C +:104D400062E070E080E090E0DF91CF910C94BB4C8A +:104D50000F931F93CF93DF93C2E0D1E088818F77C9 +:104D6000888301E011E0F80180818460808388817C +:104D70008B7F888365E070E080E090E00E94BB4C10 +:104D800088818068888365E070E080E090E00E9420 +:104D9000BB4CF80180818460808388818460888333 +:104DA00065E070E080E090E0DF91CF911F910F917E +:104DB0000C94BB4CCF9380910101846080930101DE +:104DC0008091020184608093020162E070E080E0E3 +:104DD00090E00E94BB4C80910201806880930201A8 +:104DE00062E070E080E090E00E94BB4C80910101A5 +:104DF0008B7F809301019BEF80910001C82FC470CD +:104E000082FF05C09150C1F7A3DFC1E00BC09091B4 +:104E100002019F779093020162E070E080E090E0F1 +:104E20000E94BB4C8C2FCF9108950F931F93CF936B +:104E3000DF9301E011E0F801808184608083C2E0AB +:104E4000D1E088818460888388818068888365E078 +:104E500070E080E090E00E94BB4CF80180818460AB +:104E6000808388818B7F888365E070E080E090E0BC +:104E70000E94BB4C88818F77888362E070E080E07D +:104E800090E0DF91CF911F910F910C94BB4CCF9389 +:104E9000DF93D82FC8E04398399AD7FF02C0419AD0 +:104EA00001C0419865E070E080E090E00E94BB4C5A +:104EB000439A65E070E080E090E00E94BB4C43982C +:104EC000DD0F65E070E080E090E00E94BB4CC150D7 +:104ED00011F762E070E080E090E00E94BB4C399AEC +:104EE000419A62E070E080E090E0DF91CF910C9415 +:104EF000BB4C4398399A419865E070E080E090E0BF +:104F00000E94BB4C439A65E070E080E090E00E9414 +:104F1000BB4C399A419A65E070E080E090E00C94D7 +:104F2000BB4CCF93399A419A62E070E080E090E008 +:104F30000E94BB4C439A62E070E080E090E00E94E7 +:104F4000BB4C39989BEF86B1C82FC27081FF05C05A +:104F50009150C9F7CEDFC1E007C0439862E070E02E +:104F600080E090E00E94BB4C8C2FCF910895399A3D +:104F7000419A439A65E070E080E090E00E94BB4C6B +:104F8000399A419865E070E080E090E00E94BB4C67 +:104F9000439862E070E080E090E00C94BB4C4F924C +:104FA0005F926F927F92AF92BF92CF92DF92EF9219 +:104FB000FF920F931F93CF93DF935C01EB018A0164 +:104FC000FC01408051806280738020E030E0A901C4 +:104FD000C301B2010E94736320E030E0A901811196 +:104FE00011C0688179818A819B810E949165181620 +:104FF000E4F02AEDC22E2FE0D22E29ECE22E2FEB88 +:10500000F22E22C0C301B2010E94736387FD16C055 +:10501000A3019201688179818A819B810E947A63D0 +:105020000E9438636B017C010FC09AEDC92E9FE08E +:10503000D92E99ECE92E9FE3F92E06C0C12CD12C74 +:1050400080ECE82E8FE7F82EC701B6010E94776347 +:105050002091980C3091990C40919A0C50919B0C96 +:105060000E94CC659B01AC01C301B2010E94996210 +:10507000F5016083718382839383C701B6010E9427 +:105080004F662091980C3091990C40919A0C509158 +:105090009B0C0E94CC659B01AC01688179818A815F +:1050A0009B810E949962688379838A839B83209184 +:1050B0009C0C30919D0C40919E0C50919F0CF801DE +:1050C00060817181828193810E949A62F80160837C +:1050D000718382839383DF91CF911F910F91FF9012 +:1050E000EF90DF90CF90BF90AF907F906F905F90E8 +:1050F0004F9008954F925F926F927F92AF92BF92BE +:10510000CF92DF92EF92FF920F931F93CF93DF9393 +:105110005C01EB018A01FC01408051806280738058 +:1051200020E030E0A901C301B2010E94736320E0D6 +:1051300030E0A901811111C0688179818A819B8148 +:105140000E9491651816E4F02AEDC22E2FE0D22EAF +:1051500029ECE22E2FEBF22E22C0C301B2010E94F5 +:10516000736387FD16C0A3019201688179818A81EA +:105170009B810E947A630E9438636B017C010FC09F +:105180009AEDC92E9FE0D92E99ECE92E9FE3F92ED6 +:1051900006C0C12CD12C80ECE82E8FE7F82EC70179 +:1051A000B6010E9477632091980C3091990C409140 +:1051B0009A0C50919B0C0E94CC659B01AC01C301E1 +:1051C000B2010E949A62F5016083718382839383A6 +:1051D000C701B6010E944F662091980C3091990C3E +:1051E00040919A0C50919B0C0E94CC659B01AC01A4 +:1051F000688179818A819B810E949A626883798320 +:105200008A839B8320919C0C30919D0C40919E0C35 +:1052100050919F0CF80160817181828193810E947D +:105220009962F8016083718382839383DF91CF91C8 +:105230001F910F91FF90EF90DF90CF90BF90AF90B4 +:105240007F906F905F904F9008952F923F924F9272 +:105250005F926F927F928F929F92AF92BF92CF9206 +:10526000DF92EF92FF920F931F93CF93DF93CDB70F +:10527000DEB766970FB6F894DEBF0FBECDBF698369 +:105280007A838B839C832D833E834F8358872701AA +:1052900038011601BA8AA98A84019B01AC010E94D7 +:1052A000CC656B017C012D813E814F815885CA01FF +:1052B000B9010E94CC659B01AC01C701B6010E94F7 +:1052C0009A620E94596623E333E343E551E40E9466 +:1052D000996269877A878B879C8723E333E344ED60 +:1052E00052E4C301B2010E9499622B013C0129855D +:1052F0003A854B855C85CA01B9010E94CC656B017A +:105300007C01A3019201C301B2010E94CC659B0103 +:10531000AC01C701B6010E949A626B017C0128E8CA +:105320003BEE4DE955E40E9499624B015C0120E09F +:1053300038E84DE957E4C701B6010E94CC656D8796 +:105340007E878F87988BA5019401C501B4010E94C7 +:10535000CC659B01AC016D857E858F8598890E9407 +:1053600099620E9459666B8B7C8B8D8B9E8BA701FB +:105370009601C701B6010E949A626D877E878F876A +:10538000988BA501940169857A858B859C850E94FF +:10539000CC654B015C012B893C894D895E89C30139 +:1053A000B2010E94CC659B01AC01C501B4010E9411 +:1053B00099624B015C0120E030E04EE053E46D85E2 +:1053C0007E858F8598890E94CC659B01AC01C501C3 +:1053D000B4010E947A630E948B6221EE3EE245E6B0 +:1053E00052E40E94CC65F1016083718382839383D0 +:1053F00028E83BEE4DE955E4C701B6010E949A62E8 +:105400004B015C0122EE32E045EC57E4C701B601E6 +:105410000E94CC656B017C01A5019401C501B4011A +:105420000E94CC659B01AC01C701B6010E94996244 +:105430000E9459666B017C01A501940169857A85FA +:105440008B859C850E94CC654B015C01A701960170 +:10545000C301B2010E94CC659B01AC01C501B4013E +:105460000E949A626B017C012DEC3CEC4EE153E40E +:105470006D857E858F8598890E94CC659B01AC01E6 +:10548000C701B6010E947A630E948B6221EE3EE260 +:1054900045E652E40E94CC656B017C01E989FA89FA +:1054A000608371838283938321EE3EE245E652E47A +:1054B000F10160817181828193810E947A630E94EF +:1054C0004F6620E030E04EE053E40E94CC659B0143 +:1054D000AC01C301B2010E949165181654F4F7FAA9 +:1054E000F094F7F8F094E989FA89C082D182E282D7 +:1054F000F38220E030E0A90169817A818B819C816F +:105500000E94736320E030E0A901811112C06D8117 +:105510007E818F8198850E94916518162CF480E019 +:1055200090E0A4EBB2E411C080E090E0A4EBB2EC18 +:105530000CC069817A818B819C810E94736387FF93 +:105540000AC080E090E0A0ECBFE7F801808391837F +:10555000A283B38317C029813A814B815C816D811D +:105560007E818F8198850E947A630E94386321EE44 +:105570003EE245E652E40E94CC65F8016083718307 +:105580008283938366960FB6F894DEBF0FBECDBFBD +:10559000DF91CF911F910F91FF90EF90DF90CF900F +:1055A000BF90AF909F908F907F906F905F904F9043 +:1055B0003F902F9008952F923F924F925F926F925B +:1055C0007F928F929F92AF92BF92CF92DF92EF9293 +:1055D000FF920F931F93CF93DF93CDB7DEB72E9734 +:1055E0000FB6F894DEBF0FBECDBF29833A834B833D +:1055F0005C83ED82FE820F831887860115019E86EB +:105600008D8621EE3EE245E652E40E947A632B014C +:105610003C0121EE3EE245E652E469817A818B81CC +:105620009C810E947A634B015C0121EE3EE245E6DB +:1056300052E46D817E818F8198850E947A636B012F +:105640007C01C301B2010E94776369837A838B83F3 +:105650009C83C501B4010E9477636D837E838F8331 +:105660009887C301B2010E944F662B013C01C5011E +:10567000B4010E944F6669877A878B879C8720E0F8 +:1056800030E04EE053E469817A818B819C810E94F5 +:10569000CC654B015C012DEC3CEC4EE153E46D819B +:1056A0007E818F8198850E94CC659B01AC01C501EC +:1056B000B4010E949A6223E333E343E551E40E947C +:1056C0009A624B015C01C701B6010E9477639B019E +:1056D000AC01C501B4010E94CC65F80160837183FF +:1056E00082839383C701B6010E944F669B01AC0180 +:1056F000C501B4010E94CC65F1016083718382838E +:10570000938320E030E04EE053E4C301B2010E94F5 +:10571000CC656B017C012DEC3CEC4EE153E46985DA +:105720007A858B859C850E94CC659B01AC01C70165 +:10573000B6010E94996223E333E344ED52E40E94F0 +:105740009A62ED85FE8560837183828393832E96B2 +:105750000FB6F894DEBF0FBECDBFDF91CF911F9182 +:105760000F91FF90EF90DF90CF90BF90AF909F9000 +:105770008F907F906F905F904F903F902F90089503 +:105780004F925F926F927F928F929F92AF92BF9251 +:10579000CF92DF92EF92FF920F931F93CF93DF93FD +:1057A00000D01F92CDB7DEB729013A01E982FA8213 +:1057B0000B831C8306E91CE020E030E040E253E468 +:1057C0000E947A639B01AC01F80162857385848530 +:1057D00095850E949A62F601608371838283938328 +:1057E00020E030E040E253E4C301B2010E947A635A +:1057F0009B01AC01F80166857785808991890E94BB +:105800009A62F501608371838283938320E030E0A4 +:1058100044EB52E4F80162897389848995890E9476 +:1058200099622B013C0120E030E040E253E46981C1 +:105830007A818B819C810E947A639B01AC01C301B8 +:10584000B2010E949A62F401608371838283938320 +:105850000F900F900F900F90DF91CF911F910F91AC +:10586000FF90EF90DF90CF90BF90AF909F908F9080 +:105870007F906F905F904F9008952F923F924F923C +:105880005F926F927F928F929F92AF92BF92CF92D0 +:10589000DF92EF92FF920F931F93CF93DF93CDB7D9 +:1058A000DEB72C970FB6F894DEBF0FBECDBF160142 +:1058B00035012401FE0131964F0134965F01349683 +:1058C0006F015EDFE980FA800B811C812D813E81B2 +:1058D0004F81588569857A858B859C854201530166 +:1058E000610169DE2C960FB6F894DEBF0FBECDBF06 +:1058F000DF91CF911F910F91FF90EF90DF90CF90AC +:10590000BF90AF909F908F907F906F905F904F90DF +:105910003F902F9008954F925F926F927F928F9257 +:105920009F92AF92BF92CF92DF92EF92FF920F932E +:105930001F932B013C0149015A01670178019B012A +:10594000AC010E94A166811172C0A5019401C5013C +:10595000B4010E94A16681116AC0A7019601C70126 +:10596000B6010E94A166811162C02AE939E947E0C7 +:1059700053E4C301B2010E94916518160CF457C09C +:1059800020E030E040E85FE3C301B2010E947363AE +:1059900087FD4DC02DEC3CEC4FEE52E4C501B40147 +:1059A0000E94916518160CF442C020E030E040E8F7 +:1059B0005FE3C501B4010E94736387FD38C0A30192 +:1059C000920160E070E084E393E40E949962A50193 +:1059D00094010E9499624B015C0120E030E047E1B4 +:1059E00053E40E949165181614F120E030E040E283 +:1059F00051E4C501B4010E94736387FD18C020E023 +:105A000030E044EB52E4C701B6010E9491651816DC +:105A100074F020E030E044EB52ECC701B6010E9484 +:105A20007363881F8827881F91E0892701C080E061 +:105A30001F910F91FF90EF90DF90CF90BF90AF90AC +:105A40009F908F907F906F905F904F9008950F93ED +:105A50001F93CF93DF93C9E4DCE084E393E08C01F0 +:105A60000F5F1F4F0E9463548993C8010A3313408C +:105A7000B1F7DF91CF911F910F910895AF92BF922F +:105A8000CF92DF92EF92FF920F931F93CF93DF930A +:105A9000082F6EE09CD1C82F6FE0802F98D1D0E006 +:105AA000DC2FCC27C82B7E016E0134E0A32EB12C55 +:105AB0006EE0802F8CD1182F6FE0802F88D1212F9E +:105AC00030E0322F2227282BC217D30708F4E90130 +:105AD0002C153D0508F46901E20EF31E81E0A81AB9 +:105AE000B10831F7C7018C1B9D0B8C199D0963E030 +:105AF00070E00E94C966CB01DF91CF911F910F9199 +:105B0000FF90EF90DF90CF90BF90AF9008958F926D +:105B10009F92AF92BF92CF92DF92EF92FF927C0161 +:105B2000ADDF9C0181E0E816F104F9F088F082E035 +:105B3000E816F10439F58091490C90914A0CA0E0E7 +:105B4000B0E0BC01CD01621B730B810991093FC01C +:105B500080914B0C90914C0CA0E0B0E0BC01CD01C9 +:105B6000621B730B810991091DC080914D0C9091AE +:105B70004E0CA0E0B0E0BC01CD01621B730B8109AB +:105B800091091CC081E0E816F104A9F040F082E020 +:105B9000E816F10419F560E070E0CB0118C060E090 +:105BA00070E0CB0142E2842E43E5942E44E0A42E23 +:105BB00042E4B42E16C060E070E0CB0138E1832EE1 +:105BC0003BE5932E3EEAA32E32E4B32E0AC0812C8D +:105BD000912C24EBA22E22E4B22E03C060E070E0F0 +:105BE000CB010E94156420E030E044EB53E40E94B6 +:105BF000CC6520E030E040E859E30E94CC659B0191 +:105C0000AC01C501B4010E9499626B017C0120E0E6 +:105C100030E044EB53E40E949165181654F420E000 +:105C200030E044EB53E4C701B6010E9499626B0176 +:105C30007C0120E030E0A901C701B6010E94736336 +:105C400087FF0AC020E030E044EB53E4C701B6010F +:105C50000E949A626B017C01C701B601FF90EF9030 +:105C6000DF90CF90BF90AF909F908F9008950F934B +:105C70001F93CF93DF93C9E4DCE084E393E0699161 +:105C80008C010F5F1F4F0E940454C8010A33134058 +:105C9000B1F7DDDE80E090E03ADF6093A00C709316 +:105CA000A10C8093A20C9093A30C81E090E02FDFD5 +:105CB0006093A40C7093A50C8093A60C9093A70CF2 +:105CC00082E090E024DF6093A80C7093A90C80938D +:105CD000AA0C9093AB0CDF91CF911F910F91089577 +:105CE000AF92BF92CF92DF92EF92FF920F931F93EA +:105CF000CF93DF9300D01F92CDB7DEB75B012FE6C5 +:105D0000E22E2DE0F22E8C016B018CE0C80ED11C2E +:105D1000F50161917191819191915F01F70121915B +:105D20003191419151917F0129833A834B835C8367 +:105D30000E94156429813A814B815C810E947A63BB +:105D4000F80161937193819391938F01AC14BD0419 +:105D5000F9F60F900F900F900F90DF91CF911F9158 +:105D60000F91FF90EF90DF90CF90BF90AF9008958C +:105D70001F920F920FB60F9211240BB60F922F9312 +:105D80003F934F935F936F937F938F939F93AF93C3 +:105D9000BF93EF93FF9389B18095982F907184FF03 +:105DA00003C091110E94C84DFF91EF91BF91AF9137 +:105DB0009F918F917F916F915F914F913F912F9123 +:105DC0000F900BBE0F900FBE0F901F901895CF93A2 +:105DD000DF93C62F813009F485C038F1823009F095 +:105DE00060C10E9442268CE60E94D2250E941C2699 +:105DF0008C2F0E94D2250E941C260E9442268DE6EE +:105E00000E94D2250E941C2662E070E080E090E0B3 +:105E10000E94BB4C559A5D9A62E070E080E090E091 +:105E20000E94BB4CD8E0C0E0F9C0A1D88CE62FD8C6 +:105E300078D88C2F2CD875D89AD88DE628D871D8D8 +:105E400062E070E080E090E00E94BB4C399A419A99 +:105E500062E070E080E090E00E94BB4CD8E0C0E0DF +:105E6000439865E070E080E090E00E94BB4C439A6C +:105E7000CC0F65E070E080E090E00E94BB4C399868 +:105E80003199C16065E070E080E090E00E94BB4C19 +:105E9000D15031F74398399A419A62E070E080E03E +:105EA00090E00E94BB4C439A65E070E080E090E097 +:105EB0000E94BB4C439862E070E080E090E00E945A +:105EC000BB4C399A419A62E070E080E090E00E9419 +:105ED000BB4C439862E070E080E090E00E94BB4CD5 +:105EE00008D8E0C00E9415278CE60E945A260E941E +:105EF000DA268C2F0E945A260E94DA260E94152745 +:105F00008DE60E945A260E94DA2662E070E080E068 +:105F100090E00E94BB4C809101018460809301015C +:105F20008091020184608093020162E070E080E071 +:105F300090E00E94BB4CD8E0C0E0809102018F77D6 +:105F40008093020165E070E080E090E00E94BB4C2D +:105F500080910201806880930201CC0F65E070E0BF +:105F600080E090E00E94BB4C809101018B7F809388 +:105F700001018091000182FDC16065E070E080E078 +:105F800090E00E94BB4CD150C1F6809102018F7706 +:105F900080930201809101018460809301018091CE +:105FA000020184608093020162E070E080E090E092 +:105FB0000E94BB4C8091020180688093020165E0E1 +:105FC00070E080E090E00E94BB4C809102018F77EE +:105FD0008093020162E070E080E090E00E94BB4CA0 +:105FE00080910101846080930101809102018460AD +:105FF0008093020162E070E080E090E00E94BB4C80 +:10600000809102018F778093020162E070E080E06E +:1060100090E00E94BB4C0E94A82644C05E9865E0B8 +:1060200070E080E090E00E94BB4C5E9ACC0F65E08F +:1060300070E080E090E00E94BB4C55984D99C160A3 +:1060400065E070E080E090E00E94BB4CD15031F7F9 +:106050005E98559A5D9A62E070E080E090E00E9460 +:10606000BB4C5E9A65E070E080E090E00E94BB4C23 +:106070005E9862E070E080E090E00E94BB4C559A30 +:106080005D9A62E070E080E090E00E94BB4C5E9818 +:1060900062E070E080E090E00E94BB4C0E94042629 +:1060A00001C0C0E08C2FDF91CF910895E7E2FDE0C1 +:1060B000A481B5819C010E940767A1E0B1E02C9109 +:1060C00028602C93A0EAB0E02C9120682C93DC018E +:1060D000CB012AE0B695A795979587952A95D1F794 +:1060E0009093A9008093A800868180618093A1008D +:1060F0000895CF93DF9321E5829FC0011124EC0125 +:10610000D55F40E550E0BE0187ED9CE00E946B54F6 +:10611000892B59F41092D70C40E550E067ED7CE0F4 +:10612000CE010E94265480E001C081E0DF91CF9132 +:1061300008951F920F920FB60F9211240BB60F9273 +:106140002F933F934F935F936F937F938F939F937F +:10615000AF93BF93EF93FF938091D20C9091D30CA8 +:106160009093250180932401E091D00CF091D10C03 +:10617000309709F01995FF91EF91BF91AF919F91E1 +:106180008F917F916F915F914F913F912F910F90E0 +:106190000BBE0F900FBE0F901F9018951F920F927D +:1061A0000FB60F9211240BB60F922F933F934F937C +:1061B0005F936F937F938F939F93AF93BF93EF936F +:1061C000FF938091290D90912A0D9093A5008093C3 +:1061D000A400E091270DF091280D309709F0199552 +:1061E000FF91EF91BF91AF919F918F917F916F91AF +:1061F0005F914F913F912F910F900BBE0F900FBE6B +:106200000F901F9018951F920F920FB60F921124A6 +:106210008F939F938091080290910902909395002B +:10622000809394009F918F910F900FBE0F901F90BD +:1062300018951F920F920FB60F9211240BB60F9262 +:106240002F933F934F935F936F937F938F939F937E +:10625000AF93BF93EF93FF938091CB0C9091CC0CB5 +:106260008093B200E091C90CF091CA0C309709F00C +:106270001995FF91EF91BF91AF919F918F917F9170 +:106280006F915F914F913F912F910F900BBE0F90A7 +:106290000FBE0F901F9018958A98E8E0F1E080817A +:1062A0008E7F80835F98E2E7F0E080818E7F80833D +:1062B0001092C40C0895CF93DF93EB018431D1F099 +:1062C00028F4882361F08C30A8F437C08233E9F0D9 +:1062D00018F4873190F10EC0833311F10BC088811F +:1062E000882329F063E973E0CE010E94206765E905 +:1062F00073E020C08881882329F063E973E0CE0130 +:106300000E94206768E973E015C08881882329F01E +:1063100063E973E0CE010E9420676CE973E00AC074 +:106320008881882329F063E973E0CE010E94206709 +:1063300060EA73E0CE010E9420678091640C88239C +:1063400079F064E67CE0CE010E94206782E3E4E617 +:10635000FCE0DF011D928A95E9F7DF91CF91089566 +:1063600064ED72E0CE01DF91CF910C942067E1E003 +:10637000F1E0808180628083808180648083E2E0BC +:10638000F1E080818F7D808380818F7B8083089581 +:106390003F9A479A08959C9A9D9AA498A59A089521 +:1063A000EF92FF920F931F93CF93DF93CDB7DEB79A +:1063B00060970FB6F894DEBF0FBECDBF9AEC980F72 +:1063C000863308F0892FA82FA87087708064FE019B +:1063D0003196BE016F5E7F4FAF0190917B00977F3A +:1063E0009A2B90937B0080937C0090917A0090642C +:1063F00090937A0090917A0096FFFCCF20917800DC +:106400009091790030E0392B21933193E617F7070B +:1064100021F720E030E060E0862F90E0F901E80FFE +:10642000F91F3797D4F4880F991F8A01080F191F95 +:10643000F801A081B18102967A01E80EF91EF701F8 +:10644000808191818A179B0730F4F80191838083C2 +:10645000F701B183A0836F5FDFCF2F5F3F4F2830FD +:106460003105C9F62F8138858D819E81820F931F5A +:1064700029853A85820F931F2B853C85820F931FB8 +:10648000969587959695879560960FB6F894DEBF9A +:106490000FBECDBFDF91CF911F910F91FF90EF9075 +:1064A000089580910401877880930401809103010D +:1064B0008877803451F464EA73E08CE59CE00E94B4 +:1064C0002B6740E050E0BA010EC08091030188774D +:1064D00069F46BEA73E08CE59CE00E942B6740E076 +:1064E00050E060EE70E483E00E9425430C94D347B3 +:1064F000CF93DF93C0919E11D0919F112097B9F057 +:1065000081E08093A1116091B7117091B8118091D1 +:10651000B9119091BA119B01AC010E94CC65698BB5 +:106520007A8B8B8B9C8B10929F1110929E11DF9116 +:10653000CF9108952F923F924F925F926F927F92E8 +:106540008F929F92AF92BF92CF92DF92EF92FF9283 +:106550000F931F93CF93DF93CDB7DEB7CE54D109FE +:106560000FB6F894DEBF0FBECDBF8091F80D8077D7 +:1065700025968FAF2597882389F020E030E0A90188 +:106580006091B7117091B8118091B9119091BA11C1 +:106590000E947363882311F40C946C3B2091B71113 +:1065A0002B8B3091B8113C8B4091B9114D8B509190 +:1065B000BA115E8B8091C7118B839091C8119D8316 +:1065C000A091C911AE83B091CA11BC830091B311DF +:1065D0001091B4115091B5114091B6118091A6114E +:1065E0009091A711A091A811B091A9118FA398A77C +:1065F000A9A7BAA79091A2119FAFA091A31121962C +:10660000AFAF2197B091A4112296BFAF2297E0912E +:10661000A5112396EFAF23978091AE119091AF1102 +:10662000A091B011B091B1118FAB98AFA9AFBAAF33 +:106630009091461124969FAF2497A0912111ADA768 +:10664000B091F9102796BFAF2797E091F810E8A313 +:10665000F091150E2696FFAF269720919E1130914E +:106660009F113A8B298B80914711909148119AA3E1 +:1066700089A38091AA119091AB11A091AC11B09116 +:10668000AD118BAF9CAFADAFBEAF9091BF119F8BE3 +:10669000A091C011A88FB091C111B98FE091C21122 +:1066A000EA8F3090C3112090C411F091C511F98385 +:1066B0002091C6112A833091BB113B8F8091BC1170 +:1066C0008C8F9091BD119D8FA091BE11AE8F809146 +:1066D00020119DA5891709F466C7E989FA89EF2B6E +:1066E00009F089C22796FFAD279728A1F21781F0FC +:1066F000A22EB12C39E23A9DC0013B9D900D112490 +:10670000DC01AA5EB14FBA8BA98BAB2B09F051C04B +:10671000C801A52FB42F8093B3119093B411A09307 +:10672000B511B093B6118F89988DA98DBA8D8093CC +:10673000BF119093C011A093C111B093C2118B8966 +:106740009C89AD89BE898093B7119093B811A093AD +:10675000B911B093BA118B8D9C8DAD8DBE8D809388 +:10676000BB119093BC11A093BD11B093BE118B814E +:106770009D81AE81BC818093C7119093C811A09375 +:10678000C911B093CA11832D922DA981BA8180932A +:10679000C3119093C411A093C511B093C611249650 +:1067A000BFAD2497B093461110929F1110929E1185 +:1067B0004CC78091A111882319F01092A111BFC07C +:1067C0008091A0118F5F853019F08093A01102C0D5 +:1067D0001092A0118091A01151E1589FC001112485 +:1067E000DC01A75BBE4EBAA3A9A3B9E2BA9D900192 +:1067F000BB9D300D1124F901EA5EF14F7F018081CC +:10680000A9A1BAA18C9381819281A381B48123E053 +:10681000880F991FAA1FBB1F2A95D1F7E9A1FAA1DA +:1068200081839283A383B483F70185819681A781B5 +:10683000B08533E0880F991FAA1FBB1F3A95D1F787 +:10684000E9A1FAA185839683A783B087F7018185A3 +:106850009285A385B48543E0880F991FAA1FBB1FAB +:106860004A95D1F7E9A1FAA181879287A387B487D6 +:10687000D7011D966D917D918D919C9150978B01C3 +:106880009C0153E0000F111F221F331F5A95D1F7AF +:10689000058716872787308B0E9413646FAF219678 +:1068A0007FAF219722968FAF229723969FAF239792 +:1068B000D70195962D913D914D915C9198970E94AD +:1068C0007A636FA378A789A79AA79B01AC0160E0C0 +:1068D00070E080EA9FE30E947A636BAF7CAF8DAF7C +:1068E0009EAF2596BFAD2597BB23C1F02F89388D6C +:1068F000498D5A8D6F89788D898D9A8D0E94CC65CE +:10690000F701618B728B838B948BFF89FB8B288DB6 +:106910002C8B398D3D8B4A8D4E8B0DC0D7015196F6 +:106920006D917D918D919C9154970E9459666B8BCE +:106930007C8B8D8B9E8B1FAA18AE19AE1AAEB9E256 +:10694000BA9D9001BB9D300D1124F901EA5EF14F13 +:106950004F01C1A0D2A0E3A0F4A0A701960160E07E +:1069600070E080E09FE30E947A6369877A878B8773 +:106970009C872596FFAD2597FF23E9F122E0209320 +:10698000B211D40195964D905D906D907C90989742 +:1069900051968D909D90AD90BC905497A501940117 +:1069A0000E94CC659B01AC01C301B2010E949962B7 +:1069B0008B0189879D8720E030E0A9010E947363E5 +:1069C00087FF1EC1A7019601C701B6010E949A6206 +:1069D000A30192010E94CC659B01AC01C501B401E9 +:1069E0000E9499620E9459666F8B788F898F9A8F67 +:1069F0003F82288618C11092B211F401F5A1FF83DD +:106A0000D4019696BC91B887F40107A110A5E8A11E +:106A1000EF5FE23109F4E0E02796FFAD2797EF172B +:106A200089F029E22E9FF0011124EA5EF14F61897D +:106A30007289838994890E9459666F8B788F898FB8 +:106A40009A8F04C01F8A188E198E1A8E2F89388D3E +:106A5000498D5A8D6F89788D898D9A8D0E94CC656C +:106A60002B013C0149E24A9D90014B9D300D1124C0 +:106A7000C9018A5E914F5C01DC0151962D913D91D7 +:106A80004D915C9154972D873E874F87588BA3017A +:106A900092016D857E858F8598890E9499629B0100 +:106AA000AC0169857A858B859C850E94CC659B01AC +:106AB000AC016F817885C8010E949A6220E030E0C5 +:106AC00040E05FE30E94CC65362E272E89839A83AF +:106AD00020E030E0A9010E94916518160CF097C0E3 +:106AE0002F813885A801632D722D89819A810E949A +:106AF000736387FF72C0F501858C968CA78CB0A05C +:106B0000A3019201C501B4010E9499629B01AC01ED +:106B100069857A858B859C850E94CC656B837D8396 +:106B20008E839C83232D322D49815A810E94736369 +:106B300087FF34C0C501B4010E9459666B8F7C8FFA +:106B40008D8F9E8FA50194016D857E858F85988997 +:106B50000E947363811106C0F1E0F093B2110983C2 +:106B60001A8361C02D853E854F855889C501B401C2 +:106B70000E9499629B01AC0169857A858B859C8511 +:106B80000E94CC659B01AC016F817885C8010E9491 +:106B900099626F83788789839A8345C0A70196019C +:106BA000C701B6010E949A62232D322D49815A8174 +:106BB0000E94CC65A30192010E949A620E945966CC +:106BC0006B8F7C8F8D8F9E8F3F8228863B822D829C +:106BD00029812E833A813C8326C042E04093B21142 +:106BE00009831A835B895B8F8C898C8F9D899D8F2C +:106BF000AE89AE8F18C03F82288659874D8717C04F +:106C00003F8228861F8A188E198E1A8E10C0BF895F +:106C1000BB8FE88DEC8FF98DFD8F2A8D2E8F1F8213 +:106C2000188619821A8200E010E019861D862496C3 +:106C30005FAD2497452F50E05CA74BA786E0849F6B +:106C4000F001859FF00D1124EE5DFE4E8091A011A4 +:106C50008283A989BA899596BC91BAABE989FA89E8 +:106C6000F6A1FBABA989BA899796BC912896BFAFCC +:106C70002897E989FA89F0A52996FFAF29972BADC6 +:106C80003CAD4DAD5EAD6AA97BA98B2F9F2F0E94B5 +:106C900099626EA77FA788AB99AB20E030E0A9018D +:106CA0000E94736387FF04C01EA61FA618AA19AA14 +:106CB0002091B2112F8F2AA83BA92F963FAF2F9773 +:106CC00028964FAD28972E964FAF2E9729963FAC1A +:106CD00029978EE3C82E83ECD82E8EE2E82E89E326 +:106CE000F82E412C512C3201CBA2DCA2EDA2FEA247 +:106CF0009F8D992321F0913009F496C0D6C0A989BF +:106D0000BA8991962D913D914D915C919497C701CF +:106D1000B6010E94CC654B015C0120E030E040E010 +:106D20005FE30E94CC659B01AC016B897C898D89F6 +:106D30009E890E949A629B01AC01C701B6010E9424 +:106D4000CC659B01AC01622D2F967FAD2F972E96BF +:106D50008FAD2E97932D0E949962262E2F967FAF8E +:106D60002F972E968FAF2E97392E2F8138854981F8 +:106D70005A810E94736387FF4AC02F8138854981F9 +:106D80005A816AA97BA928968FAD289729969FAD2D +:106D900029970E9499629B01AC010E949A626B0143 +:106DA0007C012B8D3C8D4D8D5E8D6B897C898D8911 +:106DB0009E890E949A629B01AC01C701B6010E94A4 +:106DC0007A636B017C012B813D814E815C816F81F7 +:106DD000788589819A810E947363811103C0B2E032 +:106DE000BF8F02C0E1E0EF8FFB8DFB8B2C8D2C8BD6 +:106DF0003D8D3D8B4E8D4E8B2F8058852F965FAFEE +:106E00002F9789812E968FAF2E973A80F0C0A501DB +:106E100094016B897C898D899E890E949A626B8B13 +:106E20007C8B8D8B9E8BE3C0A70196016B8D7C8D37 +:106E30008D8D9E8D0E94CC659B01AC01622D2F969D +:106E40007FAD2F972E968FAD2E97932D0E9499622E +:106E50004B015C012B813D814E815C810E947363FB +:106E600087FFBDC02B813D814E815C81622D2F96B5 +:106E70007FAD2F972E968FAD2E97932D0E949962FE +:106E80002B8D3C8D4D8D5E8D0E947A636B017C0154 +:106E90002B809D812F969FAF2F97AE812E96AFAFFF +:106EA0002E973C80B2E0BF8FA2C0E989FA8921A168 +:106EB00032A143A154A1C701B6010E94CC654B0188 +:106EC0005C019B01AC016B897C898D899E890E9444 +:106ED000916518160CF054C020E030E040E05FE30C +:106EE000C501B4010E94CC659B01AC016B897C8912 +:106EF0008D899E890E9499629B01AC01C701B601F0 +:106F00000E94CC659B01AC01622D2F967FAD2F971F +:106F10002E968FAD2E97932D0E9499622A966FAF71 +:106F20002A972B967FAF2B972C968FAF2C972D9669 +:106F30009FAF2D97980149855D850E949165181630 +:106F4000FCF4A50194016B897C898D899E890E943E +:106F500099626B8B7C8B8D8B9E8B2A962FAC2A979C +:106F60002B96FFAD2B972F96FFAF2F972C962FAD1B +:106F70002C972E962FAF2E972D963FAC2D9737C07E +:106F8000980149855D85622D2F967FAD2F972E96AE +:106F90008FAD2E97932D0E9499629B01AC010E94A8 +:106FA0009A626B017C012F89388D498D5A8D6B89CE +:106FB0007C898D899E890E949A629B01AC01C701E0 +:106FC000B6010E947A636B017C01202E2F961FAFC1 +:106FD0002F9739852E963FAF2E973D8408C0282CD9 +:106FE0002F969FAE2F972E96AFAE2E973B2CA701D4 +:106FF0009601C301B2010E949A622B013C012BA1B0 +:107000003CA14DA15EA10E94736387FF07C0A3014D +:1070100092016BA17CA18DA19EA163C02EA53FA56D +:1070200048A959A9622D2F967FAD2F972E968FAD27 +:107030002E97932D0E94916518160CF442C04F8D27 +:107040004093B211222D2F963FAD2F972E964FAD24 +:107050002E97532D6FA178A589A59AA50E94CC657E +:107060006F8F7BA38EA79AAB0E9460636B017C013C +:107070006FAD21967FAD219722968FAD22972396F3 +:107080009FAD23970E9460634B015C01A7019601AD +:107090000E9499620E94E7636BAB7CAB8DAB9EABA9 +:1070A000A6E08BA59CA5A89FF001A99FF00D112437 +:1070B000EE5DFE4E2BA93CA931832083232B49F1A1 +:1070C000B5C02EE333EC4EE259E36BA17CA18DA158 +:1070D0009EA10E949A626BA37CA38DA39EA3A30191 +:1070E00092010E9499626B017C01980149855D853E +:1070F000622D2F967FAD2F972E968FAD2E97932DC5 +:107100000E94916518160CF4F3CD5F8D5093B21167 +:1071100099CF25968FAD2597882309F487C0C8019C +:10712000A985BD858093B3119093B411A093B51137 +:10713000B093B6118F89988DA98DBA8D8093BF11A8 +:107140009093C011A093C111B093C2118B8D9C8DEF +:10715000AD8DBE8D8093BB119093BC11A093BD11DA +:10716000B093BE118B819D81AE81BC818093C7118C +:107170009093C811A093C911B093CA118F819885BB +:10718000A981BA818093C3119093C411A093C511B2 +:10719000B093C61124969FAD249790934611A98968 +:1071A000BA89B0939F11A0939E112BAD3CAD4DAD0C +:1071B0005EAD2093AA113093AB114093AC11509364 +:1071C000AD1138A13093F81049A15AA1509348113C +:1071D000409347118FA198A5A9A5BAA58093A611A0 +:1071E0009093A711A093A811B093A9119DA5909376 +:1071F00021111092B7111092B8111092B91110927A +:10720000BA111092AE111092AF111092B0111092EB +:10721000B111C092A211D092A311E092A411F092E8 +:10722000A5112FA138A549A55AA56FC12FA938AD21 +:1072300049AD5AADC301B2010E949A622B013C01D3 +:107240002F8D3BA14EA55AA9C501B4010E94996298 +:107250009B01AC01C301B2010E947A634B015C0146 +:107260002F8D3BA14EA55AA9C701B6010E94996274 +:10727000A50194010E94CC656FAB78AF89AF9AAF3E +:1072800020EC31EE44E65EE4C501B4010E94CC6519 +:107290000E9460630E94E763603DB7E07B07810561 +:1072A000910560F446E02BA53CA5429FF001439F69 +:1072B000F00D1124EE5DFE4E158253C0603A5FE082 +:1072C00075078105910560F426E0ABA5BCA52A9F52 +:1072D000F0012B9FF00D1124EE5DFE4E31E011C048 +:1072E00060344FE174078105910568F426E0ABA591 +:1072F000BCA52A9FF0012B9FF00D1124EE5DFE4EE0 +:1073000032E035830CC0A6E04BA55CA5A49FF0013C +:10731000A59FF00D1124EE5DFE4EB3E0B58346E06F +:107320002BA53CA5429FF001439FF00D1124EE5D7B +:10733000FE4E2581022E04C0969587957795679518 +:107340000A94D2F7ABA9BCA902C0AA0FBB1F2A9509 +:10735000E2F7B183A08361157105B1E08B07910558 +:1073600068F446E02BA53CA5429FF001439FF00D39 +:107370001124EE5DFE4E7483638304C08FEF9FEF94 +:1073800094838383BDA4B39496E0B91201C0B12C59 +:10739000980149855D85622D2F967FAD2F972E969A +:1073A0008FAD2E97932D0E9491651816ECF4822DC7 +:1073B0002F969FAD2F972E96AFAD2E97B32DE989BF +:1073C000FA8985A396A3A7A3B0A7FF8DFFAF2BA132 +:1073D00021962FAF21973EA522963FAF22974AA92B +:1073E00023964FAF2397D5C020E030E0A901622D4E +:1073F0002F967FAD2F972E968FAD2E97932D0E94AF +:10740000916518160CF0AEC0C801A985BD858093A2 +:10741000B3119093B411A093B511B093B6118F89A5 +:10742000988DA98DBA8D8093BF119093C011A093B0 +:10743000C111B093C2118B8D9C8DAD8DBE8D80938B +:10744000BB119093BC11A093BD11B093BE118B8161 +:107450009D81AE81BC818093C7119093C811A09388 +:10746000C911B093CA118F819885A981BA8180937F +:10747000C3119093C411A093C511B093C6115DA51B +:107480005093461189899A8990939F1180939E11F8 +:107490002BAD3CAD4DAD5EAD2093AA113093AB1139 +:1074A0004093AC115093AD1138A13093F81049A11D +:1074B0005AA150934811409347118FA198A5A9A5AF +:1074C000BAA58093A6119093A711A093A811B09389 +:1074D000A911B09221111092B7111092B811109207 +:1074E000B9111092BA111092AE111092AF11109200 +:1074F000B0111092B111C092A211D092A311E092DA +:10750000A411F092A5119C01AD01C701B6010E9422 +:107510007A63A989BA8995966D937D938D939C938F +:1075200098970E9478328091F8108093150EC25B74 +:10753000DF4F0FB6F894DEBF0FBECDBFDF91CF9106 +:107540001F910F91FF90EF90DF90CF90BF90AF9081 +:107550009F908F907F906F905F904F903F902F9073 +:107560000C9426482796BFAD2797E8A1BE1779F05F +:107570008E2F8F5F823109F480E0F8A126962FAD1F +:107580002697F21303C026968FAF269788A31A8AF0 +:10759000198A59854D853F8028843DA524963FAFA3 +:1075A0002497BDA694C8C801A52FB42F8093B3110A +:1075B0009093B411A093B511B093B6118F89988DA3 +:1075C000A98DBA8D8093BF119093C011A093C11162 +:1075D000B093C2118B899C89AD89BE898093B71104 +:1075E0009093B811A093B911B093BA118B8D9C8D63 +:1075F000AD8DBE8D8093BB119093BC11A093BD1136 +:10760000B093BE118B819D81AE81BC818093C711E7 +:107610009093C811A093C911B093CA11832D922DD4 +:10762000A981BA818093C3119093C411A093C5110D +:10763000B093C6112496AFAD2497A0934611E98963 +:10764000FA89F0939F11E0939E112BAD3CAD4DADA7 +:107650005EAD2093AA113093AB114093AC115093BF +:10766000AD1138A13093F81049A15AA15093481197 +:10767000409347118FAD21969FAD21972296AFADD4 +:1076800022972396BFAD23978093A2119093A311C5 +:10769000A093A411B093A5118FA198A5A9A5BAA5EF +:1076A0008093A6119093A711A093A811B093A9114C +:1076B0002FA938AD49AD5AAD2093AE113093AF111B +:1076C0004093B0115093B1113DA5309321112696EE +:1076D0004FAD26974093150EC25BDF4F0FB6F8945F +:1076E000DEBF0FBECDBFDF91CF911F910F91FF90F5 +:1076F000EF90DF90CF90BF90AF909F908F907F9052 +:107700006F905F904F903F902F9008956091A00DE3 +:10771000462F90E08091A10D282F60FD91E08170AF +:1077200041FD926021FD826042FD946022FD8460F3 +:107730009093FB108093FA1008951F920F920FB64A +:107740000F9211240BB60F922F933F938F939F9319 +:10775000EF93FF9321B33091FB10832F817090E062 +:1077600036E0880F991F3A95E1F7922F9F7B892B7E +:1077700081BBEBE0F1E090818091FB108270880F7B +:10778000880F977F892B808381B39091FB1092FBA8 +:10779000992790F98E7F892B81BB15BCFF91EF91C2 +:1077A0009F918F913F912F910F900BBE0F900FBE25 +:1077B0000F901F90189580916F008D7F80936F00C0 +:1077C00080918100887F8160809381001092FC10FD +:1077D0008091A20D8F3F21F49091F60D992349F0ED +:1077E0009091F80D943029F090E00E94F94C81E0DE +:1077F00001C080E09091AC0D92FF02C091E089271A +:10780000882341F08A9A8091080181608093080161 +:107810005F9A08958A98809108018E7F809308016D +:107820005F980895CF93DF93C6DF8BE2E0EAF1E142 +:10783000DF011D928A95E9F783E2EDEFF0E1DF01C8 +:107840001D928A95E9F710929F1110929E11109245 +:1078500020111092461181E0809321111092FC10AA +:1078600055DF81B39091FB109170C92FB0E0DB2FF1 +:1078700096E0CC0FDD1F9A95E1F78F7BC82BC1BB3B +:10788000EBE0F1E090818091FB108270880F880F0F +:10789000977F892B808381B39091FB1092FB99276E +:1078A00090F98E7F892B81BB8091FA1080FD8F9A91 +:1078B00080FF8F9880819091FA1092708D7F892B34 +:1078C000808321B39091FA109470892F90E0959560 +:1078D0008795922F9D7F892B81BBDF91CF91089552 +:1078E0001F920F920FB60F9211240BB60F922F9387 +:1078F0003F934F935F936F937F938F939F93AF9338 +:10790000BF93EF93FF938091FC10811139C2809156 +:107910000C1180FD8F9A80FF8F9890910B01482F5A +:1079200042709D7F942B90930B0141B3847090E043 +:1079300095958795942F9D7F892B81BB91B38091DD +:107940000B11282F217030E066E0220F331F6A955B +:10795000E1F79F7B292B21BB90910B01282F2270EF +:10796000220F220F977F922B90930B0121B382FB62 +:10797000992790F9822F8E7F892B81BB80910A11E4 +:1079800086BD82E085BD81E08093FC107894809173 +:107990001E1190911F11892B09F0ACC0809120110C +:1079A00090914611981709F49BC0E09120112E2F59 +:1079B00030E086E0E89FF0011124EE5DFE4EF0938A +:1079C0001F11E0931E11838194819093890080930D +:1079D00088008081918190931A1180931911E2811E +:1079E00080911B118E1761F1E0931B1181E1E89FDB +:1079F000F0011124E75BFE4EF0931D11E0931C1182 +:107A000085859685A785B089B695A795979587951D +:107A10008093051190930611A0930711B09308115C +:107A20008093011190930211A0930311B09304115C +:107A30008093FD109093FE10A093FF10B09300115F +:107A4000E0911C11F0911D119091FA10808189270D +:107A500080930C1186E0829FD001839FB00D11248A +:107A6000AE5DBE4E15962C9181819281A381B48129 +:107A7000022E04C0B695A795979587950A94D2F7DC +:107A800080930D1190930E11A0930F11B0931011CC +:107A900085819681A781B085022E04C0B695A795F1 +:107AA000979587950A94D2F78093111190931211AC +:107AB000A0931311B093141181859285A385B48589 +:107AC00004C0B695A795979587952A95D2F7809388 +:107AD000151190931611A0931711B09318110AC0A5 +:107AE0006ADE9FB7F89480916D0D846080936D0D70 +:107AF0009FBF46C180916E0D8130B1F489B1807114 +:107B00009091BC0D891781F010926E0D8CE0EBEF17 +:107B1000FDE0A7E0BEE001900D928A95E1F780912B +:107B20006D0D806480936D0D10920B1140910D11BD +:107B300050910E1160910F11709110118091FD10F4 +:107B40009091FE10A091FF10B0910011840F951F2D +:107B5000A61FB71F8093FD109093FE10A093FF10F7 +:107B6000B0930011E0911C11F0911D1145855685CF +:107B700067857089481759076A077B0768F521E010 +:107B800020930B114585568567857089841B950B5D +:107B9000A60BB70B8093FD109093FE10A093FF10DF +:107BA000B093001120818091FB0D9091FC0DA0916C +:107BB000FD0DB091FE0D20FF04C00197A109B10990 +:107BC00003C00196A11DB11D8093FB0D9093FC0D88 +:107BD000A093FD0DB093FE0D409111115091121123 +:107BE0006091131170911411809101119091021103 +:107BF000A0910311B0910411840F951FA61FB71F08 +:107C00008093011190930211A0930311B09304117A +:107C10004585568567857089481759076A077B0728 +:107C200078F520910B11226020930B114585568524 +:107C300067857089841B950BA60BB70B8093011188 +:107C400090930211A0930311B093041120818091AD +:107C5000FF0D9091000EA091010EB091020E21FF38 +:107C600004C00197A109B10903C00196A11DB11D6E +:107C70008093FF0D9093000EA093010EB093020E1F +:107C800040911511509116116091171170911811B2 +:107C90008091051190910611A0910711B0910811E2 +:107CA000840F951FA61FB71F80930511909306118F +:107CB000A0930711B0930811458556856785708993 +:107CC000481759076A077B0778F520910B11246044 +:107CD00020930B114585568567857089841B950B0C +:107CE000A60BB70B8093051190930611A093071173 +:107CF000B093081120818091030E9091040EA09101 +:107D0000050EB091060E22FF04C00197A109B1092A +:107D100003C00196A11DB11D8093030E9093040E24 +:107D2000A093050EB093060E8091F80D843039F4BF +:107D30009091140E80910B11892380930B118091E7 +:107D4000191190911A11019790931A11809319119A +:107D5000892B69F410921F1110921E11809120112D +:107D60008F5F80932011863011F410922011909132 +:107D7000FB1080910B11892780930B111092FC103E +:107D8000FF91EF91BF91AF919F918F917F916F91F3 +:107D90005F914F913F912F910F900BBE0F900FBEAF +:107DA0000F901F9018958091AC0D82FF08C08A9AA1 +:107DB000809108018160809308015F9A07C08A98CA +:107DC000809108018E7F809308015F988091F80D63 +:107DD0008C70A1F08091FA1080930C118091FB10AF +:107DE00080930B1180919F0D880F84508195809313 +:107DF0000A1180916F00826080936F000895CF9286 +:107E0000DF92EF92FF926A017B01811105C0FF9022 +:107E1000EF90DF90CF9012C4813011F45C9801C0D4 +:107E20005C9A83E28093A0008091A100807E8A61A9 +:107E30008093A1008FEF9FEF9093A9008093A800FB +:107E400020E030E0A901C701B6010E947363181653 +:107E5000F4F620E030E0A901C701B6010E94736387 +:107E600087FD11C020E030E04AE754E4C701B601C5 +:107E70000E949165181654F4C12CD12C8AE7E82E83 +:107E800084E4F82E03C0C12CD12C76012CEE31E114 +:107E900043E852E4C701B6010E94CC6520E030E01F +:107EA00040E05FE30E949A620E9450640E94E76390 +:107EB0007093AB006093AA005C9AFF90EF90DF9004 +:107EC000CF9008958F929F92AF92BF92CF92DF9200 +:107ED000EF92FF920F931F93CF93DF93CDB7DEB74F +:107EE0002A970FB6F894DEBF0FBECDBF6B017C01A1 +:107EF000042F20E030E0A9010E94736387FF06C0D1 +:107F00008DE267D6F7FAF094F7F8F094102F12305C +:107F100060F020E030E048EC52E4C701B6010E9476 +:107F2000CC656B017C011250F2CF00FF0AC020E04B +:107F300030E040E251E4C701B6010E94CC656B011C +:107F40007C0120E030E040E05FE3C701B6010E9421 +:107F50009A620E94E263E1E0F0E0EC0FFD1FE00FA7 +:107F6000F11D2EE2208310E03AE0832E912CA12C0B +:107F7000B12C6115710581059105A9F0101301C09F +:107F80001F5FEE24E394F12CEC0EFD1EE10EF11CBC +:107F9000A50194010E94DD66605DF7016083B9016F +:107FA000CA011F5FE6CF80E3101748F4E1E0F0E07C +:107FB000EC0FFD1FE10FF11D80831F5FF5CF101344 +:107FC0000BC012E0100F0F5FE1E0F0E0EC0FFD1FBF +:107FD000E00FF11D80E38083112339F0FE01E10FF2 +:107FE000F11D8081F6D51150F7CF2A960FB6F8947F +:107FF000DEBF0FBECDBFDF91CF911F910F91FF90DC +:10800000EF90DF90CF90BF90AF909F908F900895AA +:10801000EF92FF920F931F93CF93DF931F92CDB7F1 +:10802000DEB7362FEDB6FEB66DB77EB7641B7109AD +:108030000FB6F8947EBF0FBE6DBF0DB71EB70F5FB2 +:108040001F4F202FF8019E2F921B941728F4632FA7 +:108050000E94BD669193F7CF442359F0F801E40FD5 +:10806000F11D31978081805D4983B3D549814150AD +:10807000F3CF0FB6F894FEBE0FBEEDBE0F90DF91AA +:10808000CF911F910F91FF90EF9008951F93CF9381 +:10809000DF93CDB7DEB7C058D1090FB6F894DEBF75 +:1080A0000FBECDBFAE0149575F4FFA01619171918B +:1080B000AF01CE0101960E94826710E0E1E0F0E09E +:1080C000EC0FFD1FE10FF11D8081882319F081D590 +:1080D0001F5FF4CFC058DF4F0FB6F894DEBF0FBE5E +:1080E000CDBFDF91CF911F91089543E0EBCE20915A +:1080F000AC0D20FF08C02BE832E441E25DE30E94B2 +:10810000CC6541E001C040E0DDCE2091AC0D20FF08 +:1081100008C02BE832E441E25DE30E94CC6544E014 +:1081200001C043E0CFCE8A3020F0843620F043E017 +:1081300003C041E001C042E06AE06ACF48E062E08B +:1081400067CFCF93DF93FC018491EF0121968823C1 +:1081500019F03FD5FE01F8CFDF91CF9108952F920E +:108160003F924F925F926F927F928F929F92AF92C7 +:10817000BF92CF92DF92EF92FF920F931F93CF9314 +:10818000DF93CDB7DEB768970FB6F894DEBF0FBEAA +:10819000CDBF01E099E2A92E28E0722E30E2632ED5 +:1081A00040E1B42E50E4552E62E0462E7CE0372E9E +:1081B0001091F60D112309F451C00093F80D11FF31 +:1081C00006C08BE395E0BDDF80E395E01FC012FFA2 +:1081D00006C08BE395E0B5DF85E295E017C013FF9D +:1081E00006C08BE395E0ADDF82E195E00FC014FFA0 +:1081F00006C08BE395E0A5DF87E095E007C015FF9B +:108200000DC08BE395E09DDF8BEF94E09ADF88EF64 +:1082100094E097DF84EF91E00E94F94C10FD08C0D4 +:108220008FB7F8949091F60D1092F60D8FBF16C08F +:1082300088E096E086DF86EF95E083DF85E995E0CC +:1082400080DF9FB7F89480916D0D8F7E80936D0DC8 +:108250009FBF80916D0D84FFFCCFE2CF10916D0D1B +:10826000112309F4A9C114FF04C081E08093F70D24 +:10827000B4C110FFE2C0EBEFFDE0DE011D96832DDF +:1082800001900D928A95E1F78091F80D8430E9F024 +:1082900040F48130E9F080F0823001F580E795E02C +:1082A0001CC0803179F018F4883049F017C0803252 +:1082B00091F0803421F012C08FE895E00EC08AE87A +:1082C00095E00BC084E895E008C08EE795E005C016 +:1082D00087E795E002C08AE695E033DF8091A30D41 +:1082E000837039F0BE01635F7F4FCE0101960E941B +:1082F000702E8091A30D80FD05C08091A30D81FF9C +:1083000065C019C083E695E01CDF69817A818B81A5 +:108310009C81FBDE81E695E014DF6D817E818F819B +:108320009885F3DE81E695E00CDF69857A858B859B +:108330009C85EBDEE2CF8AE595E003DF81E5C82E80 +:108340008DE0D82ECE0101967C01212C4701F6014B +:1083500061917191819191916F0120853185428563 +:1083600053850E949A629B01AC01F7016081718183 +:10837000828193810E949962F70160837183828375 +:108380009383F2E02F120FC02091690D30916A0D96 +:1083900040916B0D50916C0D0E949962F7016083C2 +:1083A000718382839383F4E0EF0EF11CF40160810A +:1083B000718182819381A9DEF2E02F1619F088E5A0 +:1083C00095E0BFDE239423E02212C0CF8091A30D5D +:1083D00082FF0CC082E595E0B4DE8091F9109091A7 +:1083E000F810891708F48E5E891B9DDE8091A30D1D +:1083F00083FF0CC08DE495E0A4DE90914B12809138 +:108400004C12891708F48058891B8DDE8091A30DCA +:1084100084FF08C087E495E094DE0E94F25143E0B7 +:1084200062E0F6DD83E495E08CDE9FB7F8948091FE +:108430006D0D8E7F80936D0D9FBF812F887609F41F +:1084400041C08091F80D882349F0982F9C7791F1D5 +:10845000883021F40E9478320093F90D8091F80D54 +:10846000811102C04092F90D16FF09C0883011F445 +:108470005092F80D8091F90D88608093F90D13FFEB +:1084800005C08091F80D85FFB092F80D15FF12C060 +:1084900088E096E056DE84EB95E053DE85E995E0D2 +:1084A00050DE8091F90D81FD146084608093F90D98 +:1084B0006092F80D9FB7F89480916D0D8779809345 +:1084C0006D0D9FBF11FF55C0812F887609F049C0FF +:1084D0008091F80D882339F0807509F442C08091AD +:1084E000F90D81FF3EC08091F90D82FF1FC0809180 +:1084F000370D882369F04091380D5091390D609106 +:108500003A0D70913B0D7BDC80EA9FE00E94F94CB4 +:108510008091360D882351F0823011F45C9A02C0AC +:108520000E94AF5488EE93E00E94F94C8091F810BD +:108530009091F910981789F0A89EC00111248A5EC5 +:10854000914F892B51F08091F90D83FD06C07092F7 +:10855000F80D0E949A3227DC02C01092F80D10929A +:10856000F90D9FB7F89480916D0D8D7F80936D0DFF +:108570009FBF12FF21C08091F80D807389F0809118 +:10858000FA0D81110DC08091F90D82FF03C056D004 +:108590000E94AF548091F90D82608093F90D04C060 +:1085A0001092F90D1092F80D9FB7F89480916D0D0F +:1085B0008B7F80936D0D9FBF8091F80D8C7711F0AC +:1085C0000E949A329091F80D8091F90D903219F431 +:1085D00081FDB092F80D8111EBCD68960FB6F8943D +:1085E000DEBF0FBECDBFDF91CF911F910F91FF90E6 +:1085F000EF90DF90CF90BF90AF909F908F907F9043 +:108600006F905F904F903F902F900895CF93DF939E +:10861000EC018991882311F0DCD2FBCFDF91CF915F +:10862000089569E080E090E00E9404544DE450E039 +:108630006FE67DE081E098E00C942654E0EAF0E0FB +:1086400080818F7D80835C980895CF92DF92EF9236 +:10865000FF92CF93DF93C82F6A017B0120E030E0C7 +:10866000A901C701B6010E94736387FDE3C0C43648 +:1086700008F441C08CE98C0F20E0833098F590E03D +:10868000880F991F880F991F223079F0FC01233041 +:1086900011F1213019F0E159F24F02C0E558F24FC3 +:1086A000C082D182E282F382C2C0EC01C957D24FAC +:1086B00020E030E040E752E4C701B6010E94CC65FB +:1086C00020E030E040E752E40E94CC656883798383 +:1086D0008A839B83ACC0ED56F24FF7FAF094F7F81B +:1086E000F094DECF2F5F8A3008F4A6C0243009F45E +:1086F000A3C08A50C2CFC701B6010E949A660E94E9 +:10870000E7638C2F90E08C31910508F095C0FC0157 +:108710008827E956FF4F8F4F0C94FF66633008F4AB +:108720008DC060939F0D83C06093A20D80C0609345 +:10873000A00D02C06093A10D0E94863B78C080917D +:10874000AC0D662311F084604CC08B7F4AC08091D1 +:10875000AC0D662311F0806444C08F7B42C08091D1 +:10876000AC0D662311F080683CC08F773AC06093EF +:10877000A30D5DC0C092A40DD092A50DE092A60DF0 +:10878000F092A70D54C0C092A80DD092A90DE0920E +:10879000AA0DF092AB0D4BC08091AC0D662311F089 +:1087A00081601FC08E7F1DC08091AC0D662321F0BB +:1087B00084FF46C0806215C08F7D13C08091AC0DD0 +:1087C000662311F0886001C0877F8093AC0D0E9402 +:1087D000F2532DC08091AC0D662311F0806101C071 +:1087E0008F7C8093AC0D23C06093AD0D20C0C092F0 +:1087F000AE0DD092AF0DE092B00DF092B10D17C05A +:10880000C092B20DD092B30DE092B40DF092B50DBE +:108810000EC070E07093B70D6093B60D08C0C092A3 +:10882000B80DD092B90DE092BA0DF092BB0DF9DE01 +:1088300080E007C084E005C083E003C086E001C09B +:108840008AE0DF91CF91FF90EF90DF90CF90089575 +:108850002DE0829FC00111244CE050E0965F0C9403 +:1088600026541F93CF93DF93182FEB018DE0189FB1 +:10887000B0011124765F4CE050E0CE010E946B54B1 +:10888000892B51F48CE0FE0111928A95E9F7BE0123 +:10889000812FDEDF80E001C081E0DF91CF911F9169 +:1088A0000895EF92FF920F931F93CF93DF93CDB76D +:1088B000DEB72C970FB6F894DEBF0FBECDBF182FD2 +:1088C00080FFC6C08AE080939F0D8FEF8093A20D3A +:1088D0001092A00D87E08093A10D83E08093A30DFB +:1088E0008AE097EDA3E2BCE38093A40D9093A50DDD +:1088F000A093A60DB093A70D8FE692E1A3E0BBE392 +:108900008093A80D9093A90DA093AA0DB093AB0DE1 +:108910001092AD0D80E090E0A8ECB1E48093AE0D34 +:108920009093AF0DA093B00DB093B10D80E090E0A7 +:10893000AAEFB3E48093B20D9093B30DA093B40D5E +:10894000B093B50D8AEF90E09093B70D8093B60D7C +:1089500080E090E0A0E8BFE38093B80D9093B90D5C +:10896000A093BA0DB093BB0D84E08093AC0D80E072 +:1089700090E5A3E4B7E480936F0D9093700DA093FE +:10898000710DB093720D8093730D9093740DA0933D +:10899000750DB093760D8093770D9093780DA0931D +:1089A000790DB0937A0D80E090E5A3ECB7E4809365 +:1089B0007B0D90937C0DA0937D0DB0937E0D8093E5 +:1089C0007F0D9093800DA093810DB093820D8093C5 +:1089D000830D9093840DA093850DB093860D80E058 +:1089E00090E4A2E9B5E48093870D9093880DA0935D +:1089F000890DB0938A0D80938B0D90938C0DA0936D +:108A00008D0DB0938E0D80938F0D9093900DA0934C +:108A1000910DB093920D80E090E4ACE1B6EC8093C0 +:108A2000930D9093940DA093950DB093960D809314 +:108A3000970D9093980DA093990DB0939A0D8093F4 +:108A40009B0D90939C0DA0939D0DB0939E0DE9DD21 +:108A500011FF0FC0CE0101967C018CE0F70111924D +:108A60008A95E9F700E0B701802FF2DE0F5F08304A +:108A7000D1F712FF0AC060E080E09BE00E9404543E +:108A800060E081E59BE00E94045413FF05C060E0B4 +:108A90008EEA9BE00E9404542C960FB6F894DEBF39 +:108AA0000FBECDBFDF91CF911F910F91FF90EF903F +:108AB00008951F920F920FB60F9211240BB60F92CA +:108AC0002F933F934F935F936F937F938F939F93D6 +:108AD000AF93BF93EF93FF938091C6008F33A9F0BC +:108AE00050F4883109F1813211F59FB7F8948091E3 +:108AF0006D0D886015C0803471F08E37C1F49FB75A +:108B0000F89480916D0D82600BC09FB7F8948091AE +:108B10006D0D816005C09FB7F89480916D0D8062E6 +:108B200080936D0D9FBF14C00E94C84D11C0E0918D +:108B30004C1291E09E0F903809F490E020914B1276 +:108B4000921731F0F0E0E553FE4E808390934C1283 +:108B5000FF91EF91BF91AF919F918F917F916F9115 +:108B60005F914F913F912F910F900BBE0F900FBED1 +:108B70000F901F9018951F920F920FB60F9211240D +:108B80000BB60F928F939F93EF93FF938091CE122A +:108B9000E82FF0E0E25BFD4E90819093C6008F5F7E +:108BA000803809F480E08093CE1290914D128913A1 +:108BB00005C08091C1008F7D8093C100FF91EF912E +:108BC0009F918F910F900BBE0F900FBE0F901F9033 +:108BD0001895E0914D1291E09E0F903831F490E09D +:108BE00004C020916D0D24FD0FC02091CE1292176C +:108BF000C1F3F0E0E25BFD4E808390934D128091D3 +:108C0000C10080628093C1000895CF93C82F8AE885 +:108C100099E097DAC830B1F190F4C43051F148F4DA +:108C2000C23001F118F5C13009F040C082E799E087 +:108C30001BC0C63009F118F583E399E015C0C431B3 +:108C400069F140F4CA3021F100F1CB3079F582EBC3 +:108C500093E02AC0C63129F1F0F0C23339F58CEB2C +:108C600093E022C080E699E06CDA25C08EE499E0BA +:108C7000FBCF84E499E0F8CF84E299E0F5CF83E07C +:108C800099E0F2CF8AEF98E0EFCF8FEE98E0ECCF4B +:108C90008CED98E0E9CF86EC98E0E6CF87EB93E0A7 +:108CA00003C082EB98E0E0CFB1DC05C080EA98E039 +:108CB00048DA8C2F38DA8DE998E0CF9142CA0F93C9 +:108CC0001F93CF93DF9387E998E03BDAC7EFDDE0AE +:108CD000688979898A899B890E9415640FE61DE05D +:108CE000F80120813181428153810E947A630DDA3B +:108CF00085E998E026DA6C897D898E899F890E94B2 +:108D00001564F80124813581468157810E947A6378 +:108D1000FCD985E998E015DA688D798D8A8D9B8D6F +:108D20000E941564F80120853185428553850E9493 +:108D30007A63EBD983E998E004DA8C8DF4D98FE873 +:108D400098E0DF91CF911F910F91FBC9FF920F9394 +:108D50001F93CF93DF938BE898E0F3D980919F0D19 +:108D6000E2D982E798E0EDD98091A20DDCD984E5C3 +:108D700098E0E7D98091A00DD6D98BE398E0E1D9AE +:108D80008091A00DDBD984E398E0DBD98091A10D1F +:108D9000CAD98CE198E0D5D98091A10DCFD985E1D0 +:108DA00098E0CFD98091AC0D82FB882780F9BBD9A0 +:108DB00084EF97E0C6D98091AC0D86FB882780F9B7 +:108DC000B2D984ED97E0BDD98091AC0D881F88277A +:108DD000881FA9D984EB97E0B4D98091A30DA3D9BA +:108DE0008EE997E0AED98091A30DA8D986E997E0E6 +:108DF000A8D96091A40D7091A50D8091A60D9091B8 +:108E0000A70D73D986E797E09CD96091A80D709162 +:108E1000A90D8091AA0D9091AB0D67D98BE597E0D4 +:108E200090D98091AC0D81707ED98EE397E089D97D +:108E30008091AC0D85FB882780F975D983E297E096 +:108E400080D98091AC0D83FB882780F96CD988E0AC +:108E500097E077D98091AC0D8295817064D98CEEC2 +:108E600096E06FD98091AD0D5ED982ED96E069D91B +:108E70008091AD0D63D98AEC96E063D96091AE0D17 +:108E80007091AF0D8091B00D9091B10D2ED98DEAFA +:108E900096E057D96091B20D7091B30D8091B40DE9 +:108EA0009091B50D22D980E996E04BD98091B60D0D +:108EB0003AD981E796E045D96091B80D7091B90D26 +:108EC0008091BA0D9091BB0D10D988E596E039D903 +:108ED00084E6F82EC0E00FE61DE0D0E086E596E0DF +:108EE00030D98D2F8F0D1FD984E596E02AD9C23055 +:108EF00079F0F801C330C1F0C13029F0608171818F +:108F00008281938118C0648575858685978513C095 +:108F100020E030E041E655E4F801608D718D828DEE +:108F2000938D0E947A6307C084A195A1A6A1B7A1E1 +:108F3000BC01CD019058D9D881E596E002D9D13055 +:108F400029F0D23031F08FE496E005C08DE496E050 +:108F500002C08BE496E0F5D8C23051F0C33059F02E +:108F6000C13019F081E496E008C08FE296E005C0B8 +:108F70008EE196E002C08EE096E0E3D88AE096E0CB +:108F8000E0D8DF5F0C5F1F4FD33009F0A7CFFAE0C6 +:108F9000FF0ECF5F8CE8F8129ECFDF91CF911F912B +:108FA0000F91FF90089580E090E00E946354893013 +:108FB00051F44DE450E061E078E08FE69DE00E94DE +:108FC0006B54892B29F487E020DE8FEF6ADCBECE5C +:108FD00008959FB7F89480916D0D826080936D0D18 +:108FE0009FBF0895E0EDF2E1A7EFBDE014964D912B +:108FF0005D916D917C911797408351836283738358 +:1090000018964D915D916D917C911B97448355838A +:10901000668377831C968D919D910D90BC91A02DB8 +:1090200080879187A287B38708958CE1E0EDF2E114 +:10903000DF011D928A95E9F71092F8101092F9104D +:1090400081E08093CF121092150E08952F923F92D7 +:109050004F925F926F927F928F929F92AF92BF9248 +:10906000CF92DF92EF92FF920F931F93CF93DF93F4 +:10907000C091F910C11101C0C2E1C150D091150ECB +:10908000CD1709F41BC1EC2EF12C29E2C29F8001FF +:1090900011240A5E114FF801A588B688C788D08CC4 +:1090A00061A172A183A194A19B01AC010E949A626B +:1090B000F80125A136A147A150A50E94CC654B011E +:1090C0008C019B01AC01B501C6010E94736387FD51 +:1090D00002C05401680189E28E9DF0018F9DF00D60 +:1090E0001124EA5EF14FC501D601818B928BA38BCF +:1090F000B48BC11101C0C2E1C150CD1761F029E2AA +:109100002E9DC0012F9D900D11249C012A5E314F90 +:109110007901D9E233C08091F810D8135EC00E9463 +:1091200078325BC0AC2EB12CDA9DC001DB9D900D76 +:109130001124FC01EA5EF14F6F01C11101C0C2E1CF +:10914000C1508091F810C81302C00E947832DA9D95 +:109150008001DB9D100D11240A5E114FF8018588F6 +:109160009688A788B08CA50194016189728983894A +:1091700094890E947363811106C076018091150E57 +:10918000C813D0CF2AC0F80161A172A183A194A114 +:109190009B01AC010E949A62F80125A136A147A16A +:1091A00050A50E94CC65F7012189328943895489F1 +:1091B0000E949A622B013C01A50194010E947363F5 +:1091C000F80187FF05C0418A528A638A748AD5CF25 +:1091D000818A928AA38AB48AD0CFD091150EF9E2FF +:1091E000DF9F800111240A5E114FC1E0CD0FC23113 +:1091F00009F4C0E02090F91089E2382EC21509F474 +:109200005BC0CC2ED12C3C9CC0013D9C900D112408 +:109210009C012A5E314F7901F801418852886388A8 +:109220007488F90181889288A388B488A501940183 +:10923000C301B2010E94736387FF24C0F80161A1DA +:1092400072A183A194A19B01AC010E949A62F801D2 +:1092500025A136A147A150A50E94CC659B01AC0178 +:10926000C301B2010E949A622B013C01A501940145 +:109270000E94736387FF06C0F701418A528A638A9E +:10928000748ADC2F3C9CF0013D9CF00D1124EA5EB9 +:10929000F14F258936894789508D61897289838983 +:1092A00094890E947363811101C0DC2FCF5FC231AA +:1092B00009F4C0E08701A2CFD093150EDF91CF91C2 +:1092C0001F910F91FF90EF90DF90CF90BF90AF90E4 +:1092D0009F908F907F906F905F904F903F902F90D6 +:1092E00008952F923F924F925F926F927F928F924A +:1092F0009F92AF92BF92CF92DF92EF92FF920F9325 +:109300001F93CF93DF93CDB7DEB7E7970FB6F894EF +:10931000DEBF0FBECDBF4B8F5C8F6D8F072F2FAB86 +:109320002091F9102EA3422F50E05BA34AA339E20B +:10933000239FF0011124EA5EF14F158616861786E9 +:10934000108A15A216A217A210A6108249E956E7A4 +:1093500066E97EE741A352A363A374A399A388A3FC +:109360004FE65DE058A74FA3CE010D9698AB8FA7AF +:1093700020ED32E13EA72DA7AE014F5F5F4F5DA309 +:109380004CA38EA129E2829FC00111249EAB8DAB1C +:109390005F8F4E8F20ED32E13AA729A74FE65DE0BF +:1093A0005AAB49AB612C712C10E02F01CF010D9607 +:1093B0009CAB8BAB1F0195E2290E311CE8A1F9A1F2 +:1093C0006191719181919191F9A3E8A3E9A9FAA919 +:1093D00081909190A190B190FAABE9ABA501940175 +:1093E0000E94CC650E949C65EFA5F8A961937193DA +:1093F00081939193F8ABEFA7E9A5FAA5C190D1901D +:10940000E190F190FAA7E9A76C197D098E099F09EF +:109410006B017C0197FF07C0CC24DD247601C61ABE +:10942000D70AE80AF90AEDA9FEA9E60DF71DEA5EDA +:10943000F14FC182D282E382F482EBA9FCA92081A0 +:10944000318142815381C216D306E406F50610F439 +:1094500069017A01EBA9FCA9C082D182E282F38280 +:109460000E941564A50194010E947A634B015C017E +:10947000EE8DFF8D6193719381939193FF8FEE8FAA +:1094800020E030E0A9010E94736387FF0DC0112323 +:1094900021F0113021F094E003C091E001C092E08E +:1094A000F2018081892B8083A5019401C501B4015B +:1094B0000E94CC65F10120813181428153810E945B +:1094C0009A62F10160837183828393831F5FF4E06A +:1094D0006F0E711C2CE06216710409F06FCF0E94B0 +:1094E00059664B015C01F101608371838283938330 +:1094F000CD28CE28CF2809F425C220E030E0A901EC +:109500006B8D7C8D8D8D902F0E94736387FD21C0A4 +:10951000FFA9FF2361F0A50194016B8D7C8D8D8DDA +:10952000902F0E94CC656B8F7C8F8D8F092F20E050 +:1095300030E040E85FE36B8D7C8D8D8D902F0E9435 +:10954000736387FF0DC01B8E1C8E20E82D8F0FE3E9 +:1095500007C039E93B8F46E74C8F56E95D8F0EE730 +:10956000A501940160E070E080E89FE30E947A63C7 +:1095700069A77AA78BA79CA7CE010D969A8F898F92 +:10958000C12CD12C760129E2EAA1FBA12E9FC001BA +:109590002F9F900D11249C01295C314F39A328A3E2 +:1095A000ECA1FDA180809180A280B38020E030E01A +:1095B000A901C501B4010E947363882309F475C031 +:1095C00029A53AA54BA55CA5C501B4010E94CC65AF +:1095D0002B013C01ECA1FDA1608371838283938305 +:1095E0009B01AC0160E070E080E89FE30E947A6339 +:1095F0004B015C01E894B7F8EFA1F8A52485358507 +:1096000046855785C501B4010E94CC651B018E8F2C +:10961000192F9B01482F592F6B8D7C8D8D8D902F8D +:109620000E94736387FD05C02B8E3C8EFE8DFD8FDF +:10963000012FE8A1F9A120803180F281FE8FE8A1FD +:10964000F9A11381EFA1F8A5208D318D428D538DA5 +:10965000C501B4010E94CC654B015C019B01AC01CA +:10966000B1018E8D912F0E94736387FD03C0140199 +:10967000AE8E1B2DC101AE8DB12FE8A1F9A1808363 +:109680009183A283B383EDA5FEA524853585468508 +:109690005785C301B2010E94CC659B01AC01C70193 +:1096A000B6010E9499626B017C012CA13DA12C5F47 +:1096B0003F4F3DA32CA34DA55EA54C5F5F4F5EA71A +:1096C0004DA78FA198A5049698A78FA3E98DFA8D31 +:1096D0002E173F0709F064CF8091F810FEA1F81310 +:1096E0000FC089E22AA13BA1829FF001839FF00D68 +:1096F0001124EA5EF14F118A128A138A148A14C067 +:109700002FEE3FEF4FE75FE3C701B6010E9491657F +:1097100018167CF489E24AA15BA1849FF001859F21 +:10972000F00D1124EA5EF14F118E128E138E148EFD +:109730006AC02FEE3FEF4FE75FEBC701B6010E9413 +:109740009165181644F08FEEC82EDD24DA948FE769 +:10975000E82E8FEBF82EA701960160E070E080E81C +:109760009FE30E94996220E030E040E05FE30E94C6 +:10977000CC650E9459666B017C0189E22AA13BA15C +:10978000829FF001839FF00D1124EA5EF14F20913A +:10979000A40D3091A50D4091A60D5091A70D61A18A +:1097A00072A183A194A10E94CC65A70196010E9499 +:1097B000CC654B015C01A701960160E070E080E898 +:1097C0009FE30E9499629B01AC01C501B4010E9414 +:1097D0007A636B017C0120E030E0A9010E94736391 +:1097E00087FF03C0C12CD12C760189E24AA15BA17D +:1097F000849FF001859FF00D1124EA5EF14FC18E28 +:10980000D28EE38EF48E2B8D3C8D4D8D502F6B8D33 +:109810007C8D8D8D902F0E94CC657B018C0189E21F +:109820002AA13BA1829FF001839FF00D1124EA5EE3 +:10983000F14FC701D801858F968FA78FB0A3A18C58 +:10984000B28CC38CD48C6090E8127090E912809036 +:10985000EA129090EB129301A401B701C8010E9493 +:10986000736387FD05C0762D672D982D892D04C063 +:109870007E2D6F2D902F812F272F362F492F582F78 +:10988000B501C6010E94736387FD0DC09301A40159 +:10989000B701C8010E94736387FD03C053016401CF +:1098A00002C05701680189E24AA15BA1849FF001CF +:1098B000859FF00D1124EA5EF14FC501D601858B1D +:1098C000968BA78BB08F8CE0FE013196ACEDB2E1A8 +:1098D00001900D928A95E1F7C701D8018093E812B3 +:1098E0009093E912A093EA12B093EB128CE0FE0180 +:1098F0003D96A0EDB2E101900D928A95E1F780913D +:10990000CF128093F9108F5F823109F480E0809349 +:10991000CF12E7960FB6F894DEBF0FBECDBFDF9132 +:10992000CF911F910F91FF90EF90DF90CF90BF905C +:10993000AF909F908F907F906F905F904F903F90EF +:109940002F9084CBE7960FB6F894DEBF0FBECDBF45 +:10995000DF91CF911F910F91FF90EF90DF90CF900B +:10996000BF90AF909F908F907F906F905F904F903F +:109970003F902F9008956115710581059105C1F102 +:109980006A3071058105910548F425E02A95F1F7C3 +:1099900000006150710981099109EDCF64367105AC +:1099A0008105910548F4E5E3EA95F1F700006A5076 +:1099B000710981099109DFCF683EF3E07F078105D6 +:1099C000910558F4EFE8F1E03197F1F700C000009D +:1099D0006456710981099109CECFEFE9FFE0319713 +:1099E000F1F700C00000685E734081099109C3CFA0 +:1099F0000895009741F0EFE9FFE03197F1F700C0DB +:109A000000000197F6CF08954F925F926F927F9278 +:109A1000AF92BF92CF92DF92EF92FF920F931F937C +:109A2000CF93DF936C01FB015A01309729F08081BD +:109A3000D601A80FB11D01C0DC019C918D019D32A2 +:109A400031F40E5F1F4F11969C91D1E00AC09B32FA +:109A500019F00F5F1F4F04C00E5F1F4F11969C91AE +:109A6000D0E0512C612CC0E020E030E0A901780169 +:109A700060ED762E790E89E08715D8F06394A8E022 +:109A8000A61598F05110C150A5E0B0E00E941667ED +:109A9000DC01CB01880F991FAA1FBB1F9C01AD01E0 +:109AA000270D311D411D511D0BC0511009C0CF5F45 +:109AB00007C0BEEF7B1209C0511007C05524539454 +:109AC0000F5F1F4FD7019C91D2CF662009F450C081 +:109AD0007F01CA01B9010E9413642B013C0120E0FF +:109AE00030E0A9010E947363882349F1CF3F64F4F9 +:109AF0002AE037ED43E25CE3C301B2010E94CC658A +:109B00002B013C01CE5FF2CFCF3F59F42DEC3CEC62 +:109B10004CEC5DE3C301B2010E94CC652B013C011A +:109B20000EC0CC2361F020E030E040E251E4C301FC +:109B3000B2010E94CC652B013C01C150F2CFDD2364 +:109B400051F077FA709477F87094F5014082518261 +:109B50006282738206C0D5014D925D926D927C92B5 +:109B600013970C191D090150F701008381E001C012 +:109B700080E0DF91CF911F910F91FF90EF90DF90E8 +:109B8000CF90BF90AF907F906F905F904F9008956F +:109B900080916D0D84FD25C09FB7F89480916D0D67 +:109BA000806180936D0D9FBF0E941E43D8D6809127 +:109BB000F80D982F9C7021F49091F90D913089F453 +:109BC0009FB7843029F4F8948091F60D806204C028 +:109BD000F8948091F60D88608093F60D9FBF0C94E9 +:109BE000DB3B08952F923F924F925F926F927F924C +:109BF0008F929F92AF92BF92CF92DF92EF92FF929D +:109C00000F931F93CF93DF93CDB7DEB7C755D1091D +:109C10000FB6F894DEBF0FBECDBF382E7B01219664 +:109C20002CAF3DAF4EAF5FAF219764960FAF6497F7 +:109C30008091AC0D85FF4FC06B0100E010E07724F0 +:109C40007394D6018D909D90AD90BD906D0120E0F4 +:109C500030E0A901C501B4010E949165181664F0B5 +:109C6000F801E159F24F24A135A146A157A1C50140 +:109C7000B4010E94736387FD7092FA0D8091FA0D12 +:109C8000882319F18091F80D883061F081DF9FB74A +:109C9000F8948091F60D85608093F60D9FBF0E9429 +:109CA000AF4019C09FB7F89480916D0D8860809384 +:109CB0006D0D9FBF0E94AF408091F70D81110BC0C9 +:109CC0008091F80D8111F6CFE1CF0C5F1F4F0C3062 +:109CD000110509F0B6CF8091F80D823009F431C337 +:109CE000F70180819181A281B38189AF9AAFABAF37 +:109CF000BCAF84819581A681B7818DAB9EABAFABA4 +:109D0000B8AF80859185A285B38589AB9AABABABA3 +:109D1000BCABAE014F5C5F4FBE016B5C7F4FCE01B1 +:109D2000C9960E94CF27E9A8FAA80BA91CA92DA9BA +:109D30003EA94FA958AD69AD7AAD8BAD9CADDE01A2 +:109D400055964D01FE0171965F0118976D010E94B5 +:109D50002529ED88FE880F89188D29893A894B8934 +:109D60005C896D857E858F8598890E948B2C8823E0 +:109D700009F4E3C26091B40C7091B50C8091B60CFB +:109D80009091B70C0E9415642B013C016091B00CBE +:109D90007091B10C8091B20C9091B30C0E9415643B +:109DA0009B01AC016091AC0C7091AD0C8091AE0C3C +:109DB0009091AF0C65962FAF659766963FAF66970B +:109DC00067964FAF679768965FAF68970E94156474 +:109DD000FE01B1964F01DE015D965D0138976F017E +:109DE0008301720165962FAD659766963FAD6697C4 +:109DF00067964FAD679768965FAD68970E943D2C58 +:109E0000D2D8332021F0F1E03F1629F0C9C0222436 +:109E10002394312CC7C020E030E048EC52E4219676 +:109E20006CAD7DAD8EAD9FAD21970E9491651816EA +:109E300054F420E030E048EC52E421962CAF3DAFE2 +:109E40004EAF5FAF2197298D3A8D4B8D5C8D69ADFB +:109E50007AAD8BAD9CAD0E9499622B013C012D8D9A +:109E60003E8D4F8D58A16DA97EA98FA998AD0E94F6 +:109E700099624B015C0129A13AA14BA15CA169A99E +:109E80007AA98BA99CA90E9499626B017C01A3010C +:109E90009201C301B2010E94CC652B013C01A501D6 +:109EA0009401C501B4010E94CC659B01AC01C301C2 +:109EB000B2010E949A624B015C01A7019601C701A1 +:109EC000B6010E94CC659B01AC01C501B4010E94A2 +:109ED0009A620E94596620E030E040EF51E40E940F +:109EE000CC6521962CAD3DAD4EAD5FAD21970E9466 +:109EF0007A630E94E7631B016A30710518F48AE0F7 +:109F0000282E312C2AE037ED43EA5CE321966CAD34 +:109F10007DAD8EAD9FAD21970E94CC652AE037EDD7 +:109F200043EA5BE30E949A6220E030E040E752E4BB +:109F30000E94CC6520E030E040E752E40E94CC650E +:109F40006B017C016093870D7093880D8093890D60 +:109F500090938A0D60938B0D70938C0D80938D0D73 +:109F600090938E0D20E030E442E955E40E94916523 +:109F700087FF09C0C0928F0DD092900DE092910D95 +:109F8000F092920D0FC080E090E4A2E9B5E48093D6 +:109F90008F0D9093900DA093910DB093920D02C0F0 +:109FA000212C312C3F922F9281EC93E09F938F9341 +:109FB0000E944640B10180E090E00E9413646B0172 +:109FC0007C01298D3A8D4B8D5C8D69AD7AAD8BAD61 +:109FD0009CAD0E949962A70196010E947A632B961C +:109FE0006CAF7DAF8EAF9FAF2B972D8D3E8D4F8D7C +:109FF00058A16DA97EA98FA998AD0E949962A70169 +:10A0000096010E947A632F966CAF7DAF8EAF9FAFA3 +:10A010002F9729A13AA14BA15CA169A97AA98BA983 +:10A020009CA90E949962A70196010E947A63639697 +:10A030006CAF7DAF8EAF9FAF63970F900F900F9077 +:10A040000F9041E050E023965FAF4EAF23972396E9 +:10A050004EAD5FAD23972416350608F46CC12396E8 +:10A06000AEADBFAD2397BD01BB0F880B990B0E940E +:10A0700015646B017C019B01AC012B966CAD7DAD31 +:10A080008EAD9FAD2B970E94CC65298D3A8D4B8D5F +:10A090005C8D0E949A622B013C01A70196012F96CC +:10A0A0006CAD7DAD8EAD9FAD2F970E94CC652D8D93 +:10A0B0003E8D4F8D58A10E949A6227966CAF7DAF5E +:10A0C0008EAF9FAF2797A701960163966CAD7DADCC +:10A0D0008EAD9FAD63970E94CC6529A13AA14BA19B +:10A0E0005CA10E949A624092B80C5092B90C6092A6 +:10A0F000BA0C7092BB0C27962CAD3DAD4EAD5FAD4A +:10A1000027972093BC0C3093BD0C4093BE0C50930A +:10A11000BF0C6093C00C7093C10C8093C20C9093E1 +:10A12000C30CAE014B5D5F4F4A01DE0199965D01A4 +:10A13000FE01BD966F017B018C0127962CAD3DADD4 +:10A140004EAD5FAD2797C301B2010E942529CDA076 +:10A15000DEA0EFA0F8A489A49AA4ABA4BCA420918B +:10A16000A00C3091A10C4091A20C5091A30C6DA5B4 +:10A170007EA58FA598A90E94996220E030E040E278 +:10A1800053E40E94CC650E94E263072E000C880B0A +:10A19000990B0E94156469837A838B839C83209139 +:10A1A000A40C3091A50C4091A60C5091A70CC501B0 +:10A1B000B4010E94996220E030E040E253E40E9442 +:10A1C000CC650E94E263072E000C880B990B0E945D +:10A1D00015646D837E838F8398872091A80C3091BE +:10A1E000A90C4091AA0C5091AB0CC701B6010E947A +:10A1F000996220E030E044EB52E40E949A6220E051 +:10A2000030E040E253E40E94CC650E94E263072EF6 +:10A21000000C880B990B0E94156469877A878B87DD +:10A220009C870E94AF408091F70D811188C090916A +:10A23000F8108091CF12981303C00E94E947F1CF24 +:10A2400089809A80AB80BC80C501B4010E94E26322 +:10A250006093AC0C7093AD0C8093AE0C9093AF0CEC +:10A26000CD80DE80EF80F884C701B6010E94E263F2 +:10A270006093B00C7093B10C8093B20C9093B30CBC +:10A2800049845A846B847C84C301B2010E94E263D6 +:10A290006093B40C7093B50C8093B60C9093B70C8C +:10A2A00020916F0D3091700D4091710D5091720D94 +:10A2B000C501B4010E947A6369837A838B839C838E +:10A2C0002091730D3091740D4091750D5091760D64 +:10A2D000C701B6010E947A636D837E838F8398875E +:10A2E0002091770D3091780D4091790D50917A0D34 +:10A2F000C301B2010E947A6369877A878B879C8742 +:10A3000064962FAD649721964CAD5DAD6EAD7FAD7B +:10A310002197CE0101960E947149F1E0F093C80C9B +:10A3200023962EAD3FAD23972F5F3F4F23963FAF30 +:10A330002EAF23978CCE80E004C083E302C082E07E +:10A3400000C0C95ADF4F0FB6F894DEBF0FBECDBFB5 +:10A35000DF91CF911F910F91FF90EF90DF90CF9001 +:10A36000BF90AF909F908F907F906F905F904F9035 +:10A370003F902F9008951F920F920FB60F921124C5 +:10A380000BB60F922F933F934F935F936F937F93EF +:10A390008F939F93AF93BF93EF93FF938091F80DAB +:10A3A000813069F08091F60D811109C0F1DB9FB712 +:10A3B000F8948091F60D83608093F60D9FBFFF9116 +:10A3C000EF91BF91AF919F918F917F916F915F912D +:10A3D0004F913F912F910F900BBE0F900FBE0F909A +:10A3E0001F90189589B180719091AC0D96FD02C0B7 +:10A3F00090E18927882319F011F087E0089580E023 +:10A4000008952F923F924F925F926F927F928F9218 +:10A410009F92AF92BF92CF92DF92EF92FF920F93F3 +:10A420001F93CF93DF93CDB7DEB76B970FB6F8943A +:10A43000DEBF0FBECDBF9091F70D9111AFC1782E49 +:10A4400093E9A92E9DE0B92E9E01235F3F4F49015C +:10A4500000E010E0C12CD12C7601482F50E05B8B3E +:10A460004A8B902F0115110521F0013021F084E075 +:10A4700003C081E001C082E0D4018D934D01EA89DF +:10A48000FB8902C0F595E7959A95E2F7E0FF17C0C2 +:10A4900020E030E040EC5FEBD5016D917D918D9136 +:10A4A0009C910E94CC651B012C019B01AC01C70152 +:10A4B000B6010E949165181614F0610172010F5FD8 +:10A4C0001F4FB4E0AB0EB11C0330110551F6809064 +:10A4D000B20D9090B30DA090B40DB090B50D04E006 +:10A4E00011E0662463946BEF7DE0CE0101960E943B +:10A4F000702E8091AD0DE82FF0E0FD8BEC8BFE010E +:10A50000319627EF3DE0398B288B3B8F2A8F20E057 +:10A5100030E060E090E01601270157FA509457F8B8 +:10A5200050944A895B89022E02C0559547950A943A +:10A53000E2F740FF2AC06F5FAA8DBB8D14961D9273 +:10A540001D921D921C9217974C895D89022E02C0A4 +:10A55000559547950A94E2F740FF03C0112319F07F +:10A5600007C0112329F0C082D182E282F38204C0A5 +:10A5700020823182428253824DE050E04C0F5D1FB9 +:10A58000420F531FDA018C91982B2F5F3F4F349667 +:10A590004A8D5B8D4C5F5F4F5B8F4A8F2330310557 +:10A5A00009F0BFCFF92E70E080E090E00E941364C4 +:10A5B0000E9459669B01AC01C501B4010E94CC65A3 +:10A5C000AB01BC01F092140E4E8B5F8B688F798FBC +:10A5D0000E94F24720E04E895F89688D798DCE0117 +:10A5E00001960E9471490E949A320E94D33E112323 +:10A5F000E1F0F8DEFE013D9620E030E090E0619170 +:10A60000462F4F2159F0AC01022E02C055954795B7 +:10A610000A94E2F740FF02C06095F6222F5F3F4F99 +:10A620002330310561F7F092140E0E949A32809126 +:10A630006D0D8473B1F080916D0D807321F0A8DAF7 +:10A640000E94AF40ABC01111A4C0CCDE8721B9F786 +:10A650009FB7F89480916D0D8B7F80936D0D9FBF98 +:10A6600004C08F2D877009F0C2CF0E94123C0E9457 +:10A6700015488091B60D9091B70DBBD91625C9F03C +:10A6800020E030E040EA50E46091B80D7091B90DDF +:10A690008091BA0D9091BB0D0E94CC656B017C013D +:10A6A0008090AE0D9090AF0DA090B00DB090B10D18 +:10A6B00010C0C090B80DD090B90DE090BA0DF090D8 +:10A6C000BB0D8090B20D9090B30DA090B40DB090E2 +:10A6D000B50D015009F007CFC090AD0DD12C809081 +:10A6E000B80D9090B90DA090BA0DB090BB0D24019B +:10A6F000350177FA709477F870948FE6E82E8DE044 +:10A70000F82E00E010E08A899B89002E02C0959502 +:10A7100087950A94E2F780FF2AC0C601002E02C086 +:10A72000959587950A94E2F7D70180FF10C094961B +:10A730002D913D914D915C919797C501B4010E9477 +:10A740009A62F701208131814281538106C02D91A7 +:10A750003D914D915C91C301B2010E94CC650E9474 +:10A760009C65E889F98964837583868397830F5F85 +:10A770001F4F288939892C5F3F4F398B288B34E054 +:10A78000E30EF11C0330110509F0BDCF0E94F24722 +:10A7900005C080916D0D82FF5BCF51CF6B960FB6D8 +:10A7A000F894DEBF0FBECDBFDF91CF911F910F9107 +:10A7B000FF90EF90DF90CF90BF90AF909F908F90E1 +:10A7C0007F906F905F904F903F902F900895EBE6B1 +:10A7D000F0E080818F7E8083E8E6F0E080818E7FEC +:10A7E0008083089554985C9A8091AC0D83FF0BC0D0 +:10A7F00080916B00806180936B0080916800816024 +:10A80000809368000895E3CFF894F999FECF92BD44 +:10A8100081BD81E08FBB80B58627482F082E000CB4 +:10A82000550B262F30E024233523232B39F06F3F9F +:10A8300019F060BD84E006C084E104C0882321F0E3 +:10A8400060BD84E28FBBF99A789408958F929F92AD +:10A85000AF92BF92CF92DF92EF92FF920F931F932E +:10A86000CF937C014A016B01C40ED51E8B01C0E061 +:10A870005C01A61AB70AC8018A0D9B1D0C151D059F +:10A8800091F0C11108C02C2FCC0F330B232F221FA6 +:10A890002227221F01C021E0F80161918F01C22F00 +:10A8A000C60FB2DFE8CF6C2FC701880D991DCF917D +:10A8B0001F910F91FF90EF90DF90CF90BF90AF90DE +:10A8C0009F908F90A1CFF999FECF92BD81BD81E07D +:10A8D0008FBB80B508958F929F92AF92BF92CF9217 +:10A8E000DF92EF92FF920F931F93CF934B017A0168 +:10A8F0006C01C40ED51E8C01C0E05B01A81AB90A18 +:10A90000C501800F911F0C151D0591F0DCDFC111F1 +:10A9100008C02C2FCC0F330B232F221F2227221FDE +:10A9200001C021E0C22FC80FF80181938F01E8CF49 +:10A93000C4018E0D9F1DC7DF21E030E0C81711F064 +:10A9400020E030E0C901CF911F910F91FF90EF906F +:10A95000DF90CF90BF90AF909F908F9008955C98BC +:10A960000895CF93DF93CDB7DEB7CC56D1090FB69C +:10A97000F894DEBF0FBECDBF8091C000826080938F +:10A98000C0001092C50080E18093C4008091C10096 +:10A9900080618093C1008091C10088608093C10074 +:10A9A0008091C10080688093C1000E94D347869A3D +:10A9B000879A829A80910A01886080930A01809127 +:10A9C0000A01826080930A0180910701816080936F +:10A9D0000701809A819A579A80910701806180933C +:10A9E000070180910701886080930701809107012A +:10A9F0008460809307018091080180618093080141 +:10AA000080910801886080930801809108018B7F04 +:10AA1000809308018091AC0D82FF08C08A9A8091D2 +:10AA200008018160809308015F9A07C08A9880912D +:10AA300008018E7F809308015F98809181008F7E4E +:10AA40008093810080918100886080938100809153 +:10AA500080008C7F80938000809180008F70809335 +:10AA6000800080916E00887F80936E0014BC15BCBE +:10AA700080916E00816080936E0054985C9A809102 +:10AA80006D00806180936D00809168008460809388 +:10AA900068008AE090E00E94F94C0E945132399A95 +:10AAA0003B9A419A439A809101018460809301010D +:10AAB000809101018068809301018091020184608E +:10AAC0008093020180910201806880930201559A6F +:10AAD000569A5D9A5E9A0E94272D80E090E00E942F +:10AAE000872D6093A00C7093A10C8093A20C90937F +:10AAF000A30C81E090E00E94872D6093A40C7093DA +:10AB0000A50C8093A60C9093A70C82E090E00E9485 +:10AB1000872D6093A80C7093A90C8093AA0C909336 +:10AB2000AB0C0E94A12520E030E04AE754E464E049 +:10AB300071E080E090E00E94352584E893E0C3DE78 +:10AB40008093960C85E893E0BEDE8093970C08E92D +:10AB500013E078012FEFE21AF20AC801B4DEF8011F +:10AB6000E050F74F808387013CE9E31633E0F306BA +:10AB700081F70EE813E078018FEFE81AF80AC801B0 +:10AB8000A2DEF801E25FF64F8083870192E9E916C1 +:10AB900093E0F90681F70E94CB310E94C8310E94F0 +:10ABA000B73120E030E044EB52E46091A80C7091A2 +:10ABB000A90C8091AA0C9091AB0C0E9499627B0128 +:10ABC0008C012091A40C3091A50C4091A60C5091C1 +:10ABD000A70C6091A00C7091A10C8091A20C909197 +:10ABE000A30CE0EC8E2EECE09E2EFCEBAF2EFCE0F6 +:10ABF000BF2EA8EBCA2EACE0DA2E0E94DB2A809191 +:10AC0000FB0D9091FC0DA091FD0DB091FE0D809378 +:10AC1000AC0C9093AD0CA093AE0CB093AF0C8091A4 +:10AC2000FF0D9091000EA091010EB091020E809345 +:10AC3000B00C9093B10CA093B20CB093B30C809174 +:10AC4000030E9091040EA091050EB091060E809314 +:10AC5000B40C9093B50CA093B60CB093B70C809144 +:10AC60007A00816880937A009B98A39A8BE493E0A2 +:10AC70000E9406438EE1E7EFFDE0DF011D928A9519 +:10AC8000E9F781E08093F70D78949091AC0D94FDF5 +:10AC90008093F80DFE017596A396FFAFEEAFA397D4 +:10ACA0009E012F5F3F4FA5963FAF2EAFA597809196 +:10ACB0004C1280934B128FE3EEE2FDE0DF011D9218 +:10ACC0008A95E9F761E57DE080E00E9431448111D9 +:10ACD00003C087E00E9405460C9A549A549A0E9439 +:10ACE0001E43549A3CDE7EDD54985C9A0E941548BF +:10ACF0000E94123C0E94F2476BEF7DE085E49DE0EC +:10AD00000E94702E1092F70D10926D0D1092F60D9C +:10AD10001092F90D1092FA0D80EE92E00E94A1407F +:10AD20008091F80D8130E1F488E096E00E94A14026 +:10AD300082EE95E00E94A14085E995E00E94A14045 +:10AD4000312C212CFE01FD966F96FFAFEEAF6F9771 +:10AD50009E01275D3F4FA1963FAF2EAFA1971BC02D +:10AD60001092F80DEDCFE92FF0E0E553FE4E808113 +:10AD70009F5F903809F490E090934B128F3F09F455 +:10AD80001AC48A3079F08D3069F0222009F4EEC3BC +:10AD9000893209F4E6C390914B1280914C128913C9 +:10ADA000E2CF09C407ED1CE0E32DF0E0E952F34FD8 +:10ADB00010820E94AF408091F70D8111CFC38AE0CD +:10ADC000A396AEADBFADA3971D928A95E9F780918A +:10ADD000D70C843209F01CC381E08DAF8091D80C70 +:10ADE000833481F034F4882351F0843209F010C1A7 +:10ADF00009C0873439F0883509F00AC103C084EBF3 +:10AE000093E0F9C19091D90C9111F4C2833409F403 +:10AE1000CEC01CF4843239F0F3C2873461F0883537 +:10AE200009F4E2C0EDC28091F80D887109F0E4C226 +:10AE30000E94A646E5C282EB93E00E94A140809169 +:10AE40002E0D823091F038F4882361F08130A9F41E +:10AE50008CEA93E00CC0833069F0883071F482EAA8 +:10AE600093E005C08FEA93E002C089EA93E00E9474 +:10AE7000A1400CC086EA93E0FACF8DE993E00E94EE +:10AE8000A14080912E0D82500E9493408AE993E068 +:10AE90000E94A1408091340D8A5C0E949340809171 +:10AEA000320D813049F028F0823051F48BE893E084 +:10AEB00005C085E993E002C080E993E00E94A140CB +:10AEC0008091300D811103C086E893E002C081E8D3 +:10AED00093E00E94A1408091310D811103C08CE765 +:10AEE00093E002C087E793E00E94A14080912F0D7C +:10AEF000813019F482E793E002C08DE693E00E946E +:10AF0000A1408091350D813049F028F0823051F414 +:10AF100081E693E005C089E693E002C085E693E010 +:10AF20000E94A1408091370D813031F040F0823095 +:10AF300051F489E593E005C08DE593E002C085E515 +:10AF400093E00E94A1408091360D882329F0823041 +:10AF500039F48DE493E002C081E593E00E94A140C2 +:10AF60008AE493E00E94A1408091400D0E949340AA +:10AF700087E493E00E94A14060913C0D70913D0DEB +:10AF800080913E0D90913F0D0E94774084E493E0C4 +:10AF90000E94A1406091380D7091390D80913A0D59 +:10AFA00090913B0D0E94774080E493E024C1809112 +:10AFB000F80D823049F40E94C84D88E096E00E9466 +:10AFC000A1408FEB95E00BC0811116C282E0809307 +:10AFD000F80D88E096E00E94A14088EC95E00E9480 +:10AFE000A14085E995E007C18091F80D813009F015 +:10AFF00007C288E096E00E94A14080ED95E00E94A3 +:10B00000A14085E995E00E94A1401092F80DF8C199 +:10B010009091F80D923008F0EFC1893409F4C9C05D +:10B0200034F4833259F0883409F480C069C18E3415 +:10B0300009F43AC1823509F4FDC062C182E08DAFE6 +:10B040008091D90C8111D6C110E0BE016F5F7F4F96 +:10B05000812F0E943144811104C087E00E9405467F +:10B06000CFC18DE393E00E94A140163029F0173044 +:10B0700041F487E393E002C08AE393E00E94A14099 +:10B0800004C086E3810F0E94934085E393E00E9411 +:10B09000A140FE0131963F0100E0D3016D917D9109 +:10B0A0008D919D913D010E948540023019F083E30E +:10B0B00093E002C08FE293E00E94A1400F5F033053 +:10B0C00061F71F5F183009F689E293E00E94A14002 +:10B0D0003DE5632E3DE0732E10E0F3016191719127 +:10B0E000819191913F010E948540123019F087E2D1 +:10B0F00093E002C083E293E00E94A1401F5F1330FF +:10B1000061F78DE193E00E94A1406091690D70911B +:10B110006A0D80916B0D90916C0D0E94854089E1C4 +:10B1200093E00E94A1400E945F466AC18091AC0DED +:10B1300084FF5EC184E08093F80D49DB84E061D92F +:10B1400083E05FD90E94AF408091F70D811107C065 +:10B150006BEF7DE085E49DE00E94702E43DB8091E3 +:10B16000F70D81114DC11092F80D0E94DB3B10E0EC +:10B17000812F0E947930811102C087E013C0809135 +:10B18000D70C882389F087ED9CE00E94064387ED69 +:10B190009CE00E94EE04811105C082E999E00E94C2 +:10B1A000A14002C00E940546113009F429C111E0F6 +:10B1B000DFCF82E08DAF8091D90C81111FC040E5B7 +:10B1C00050E06EEA7BE087ED9CE085DB892B49F45B +:10B1D0001092D70C40E550E067ED7CE08EEA9BE0F2 +:10B1E00035DB89E093E00E94A14087ED9CE00E945E +:10B1F000064385E093E00E94A14002C193E09DAF29 +:10B200008D3309F0F7C083E0282F30E0F901E952CF +:10B21000F34F9081D901AC52B34F9C938F5F9081D3 +:10B220009111F2CF8DAF40E550E067ED7CE08EEA02 +:10B230009BE0ACC082E08DAF8091D90C833509F0E2 +:10B24000D9C083E08DAF8091DA0C843509F0D2C08B +:10B2500084E08DAF8091DB0C8D3309F0CBC0809101 +:10B26000DD0C8111C7C085E08DAF8091DC0C84328C +:10B2700039F08A3239F0833209F0BCC082E003C071 +:10B2800081E001C08FEF0E94514488E096E00E9467 +:10B29000A14089E995E00E94A14085E995E00E94DE +:10B2A000A1400E94C84DACC082E08DAF8091D90C06 +:10B2B000811122C010E0812F0E947930811104C0D9 +:10B2C00087E00E94054613C082E093E00E94A140FF +:10B2D000812F0E94934080E093E00E94A14087ED7F +:10B2E0009CE00E9406438DEF92E00E94A140113045 +:10B2F00009F486C011E0DFCF91117EC011E001C0DA +:10B3000010E0AE01475D5F4FBE01635C7F4F87ED8C +:10B310009CE00E94044D811102C082E076C0EDAD38 +:10B3200081E08E0F8DAFF0E0E952F34F90819D33B5 +:10B3300009F060C0112361F1482F50E0282F30E060 +:10B34000D901A952B34F9C91241B350BF901E95245 +:10B35000F34F90838F5F9C919111F0CF8DAF87ED6C +:10B360009CE00E94EE04811149C069A57AA58BA5D5 +:10B370009CA50E949A660E94E763F1E56F9FC00159 +:10B38000112440E550E067ED7CE0955F5FDA38C05E +:10B39000AE014F5F5F4FBE01635C7F4F87ED9CE066 +:10B3A0000E94044D882309F4B8CFEDADF0E0E952D6 +:10B3B000F34F808181111EC049A45AA46BA47CA4C0 +:10B3C00020E030E04FE753E4C301B2010E949165F1 +:10B3D000181684F0C980DA80EB80FC80C301B201CA +:10B3E0000E94E763862FB701A6010E94254306C08D +:10B3F00085E00BC083E009C088E007C0811105C06B +:10B4000082E999E00E94A140A9C00E940546A6C019 +:10B41000833239F5A3962FADA3972F93A2963FAD14 +:10B42000A2973F938FE493E09F938F931F930F9383 +:10B430000E946167A396EEADFFADA3970190002037 +:10B44000E9F7BF01A3968EAD9FADA397681B790B5B +:10B450006952734F0F900F900F900F900F900F90B5 +:10B4600009C0873429F08D3419F0803509F076C091 +:10B4700067ED7CE0DB018C91803539F583EE9BE054 +:10B480000E942B678D898823C1F0A396BFADA39737 +:10B49000BF93A296EFADA297EF9387E593E09F93BA +:10B4A0008F9387E19CE09F938F930E9432670F9068 +:10B4B0000F900F900F900F900F9082E3E7EDFCE05C +:10B4C000DF011D928A95E9F749C08091E803843134 +:10B4D00048F08BE593E09F938F930E9446400F9036 +:10B4E0000F903CC00091E603B6E60B9F800111244B +:10B4F000C80186519C4F0E942B678D898823C1F01B +:10B50000A396EFADA397EF93A296FFADA297FF93FB +:10B5100087E593E09F938F93025E1B4F1F930F93DA +:10B520000E9432670F900F900F900F900F900F9026 +:10B5300082E3E7EDFCE0DF011D928A95E9F7809157 +:10B54000E603833120F48F5F8093E60302C01092FC +:10B55000E6038091E8038F5F8093E803312C212C70 +:10B560002AC0B1E02B1224C0212C15CC813208F462 +:10B5700012CC8F3209F40FCC8832B9F08B33C1F082 +:10B58000EEE4E31528F48BE00E940546312C03CC51 +:10B59000232D30E033949FE9980FF901E952F34FDE +:10B5A0009A3108F480528083F6CB22242394F3CB83 +:10B5B00022E0222EF0CB8091E30B882399F083EEDA +:10B5C0009BE00E94EE048093150C67E17CE00E94F2 +:10B5D0005B3181E08093160C82E3A3EEBBE01D9209 +:10B5E0008A95E9F78091C50C811139C08091E803F3 +:10B5F0008823A9F16090E70306E6069DC0011124A7 +:10B60000FC01E651FC4F3F01CF010E94EE04D30143 +:10B61000D2968C937090E703079D80011124B801A6 +:10B62000625E7B4F06511C4FF80182A90E945B317C +:10B6300081E0D801D3968C9382E3F80111928A9528 +:10B64000E9F7F2E1F71520F073947092E70302C076 +:10B650001092E7038091E80381508093E8030E94F1 +:10B66000E9470E94AF408091F70D811120CB809176 +:10B67000160C882369F087E19CE00E94064382E370 +:10B68000E7E1FCE0DF011D928A95E9F71092160CC4 +:10B690008091F80D882309F4ECC08091C60C8823B2 +:10B6A00009F41AC11092C60C6D961CAE1DAE1EAEEA +:10B6B0001FAE6D9769961CAE1DAE1EAE1FAE69978C +:10B6C00065961CAE1DAE1EAE1FAE659784E16F96EB +:10B6D000AEADBFAD6F97E82F1D92EA95E9F7A19641 +:10B6E000AEADBFADA197E82F1D92EA95E9F7A396FD +:10B6F000AEADBFADA397E82F1D92EA95E9F7A596E9 +:10B70000AEADBFADA5971D928A95E9F780E090E0B8 +:10B710000E94872DA9966CAF7DAF8EAF9FAFA99782 +:10B7200081E090E00E94872DAD966CAF7DAF8EAF2B +:10B730009FAFAD9782E090E00E94872D6B017C0166 +:10B7400023E333E343E35FE360910002709101027E +:10B750008091020290910302ECD620E030E040E0BC +:10B760005FE30E94CC6520E030E044E353E40E94B4 +:10B77000CC659B01AC0160E070E084E393E4D9D632 +:10B780002B013C0120E030E044EB52E4C701B6015C +:10B79000D0D6FE01EF5AFF4F4F019E012B5A3F4F6B +:10B7A0005901DE01A75ABF4F6D017B018C01AD9697 +:10B7B0002CAD3DAD4EAD5FADAD97A9966CAD7DADF9 +:10B7C0008EAD9FADA9970E94DB2AA401B501C601E9 +:10B7D0000E947A286D966CAD7DAD8EAD9FAD6D9754 +:10B7E0008E01035C1F4F24E045E011D469966CADD7 +:10B7F0007DAD8EAD9FAD69970451110924E045E000 +:10B8000006D465966CAD7DAD8EAD9FAD6597045148 +:10B81000110924E045E0FBD30451110924E045E07F +:10B82000C301B201F4D31F930F93A396FFADA39767 +:10B83000FF93A2962FADA2972F93A1963FADA1970C +:10B840003F93A0968FADA0978F936F969FAD6F9704 +:10B850009F936E96AFAD6E97AF938DE693E09F93F7 +:10B860008F930E9446400FB6F894DEBF0FBECDBF47 +:10B8700033C004E110E086E6782E92E3F92E809141 +:10B88000E20B789EC0011124FC01E651FC4F23A974 +:10B89000222309F402CF825E9B4F0E9406438091CF +:10B8A000E20B789E90011124F901E25EFB4FDF016B +:10B8B0009F2D1D929A95E9F7F901E651FC4F13AAC5 +:10B8C000833120F48F5F8093E20B02C01092E20B71 +:10B8D00001501109A1F6E1CE82B301E083FB882774 +:10B8E00080F980279091E9038917D9F08AE090E0E8 +:10B8F0000E94F94C12B313FB112710F91027809105 +:10B90000E903181771F01F921F9381E893E09F934A +:10B910008F930E9446401093E9030F900F900F9071 +:10B920000F908091F80D811136CA8091C70C882341 +:10B9300009F431CA8091C80C882309F42CCAACE8F8 +:10B94000B3E0BF93AF930E9446401092C80C0F9093 +:10B950000F9021CAFF920F931F93CF93DF9300D0D4 +:10B960001F92CDB7DEB7322F2091F80D223009F4A7 +:10B9700092C0F02E132F042F9B01AC0169833A83F0 +:10B980004B835C8327D31092130E1092BC0D8091D1 +:10B99000AC0D29813A814B815C8187FD03C080E138 +:10B9A0008093BC0D112331F09091BC0D80E189276B +:10B9B0008093BC0D89B180719091BC0D891791F075 +:10B9C0009FB7F8948091F60D80618093F60D9FBF2C +:10B9D00029833A834B835C830E94AF405C814B8117 +:10B9E0003A8129818091F70D811155C06AEE7DE081 +:10B9F00081E00E94F24D81E080936E0D9FB7F89434 +:10BA000080916D0D826080936D0D9FBF0E94AF404D +:10BA10008091F70D81113FC08091F80D8111F6CF13 +:10BA200080916E0D8130A9F4FF2051F08CE0EBEF96 +:10BA3000FDE0A7E0BEE001900D928A95E1F70CC011 +:10BA40009FB7F8948091F60D80618093F60D9FBFAB +:10BA500003C081E08093130E10926E0D0E94AF40E0 +:10BA60008091F70D811117C00E94123C0E94154869 +:10BA70000E94F2476BEF7DE08AEE9DE00E94702EFF +:10BA80000F900F900F900F90DF91CF911F910F911A +:10BA9000FF900C945F460F900F900F900F90DF91E6 +:10BAA000CF911F910F91FF9008952F923F924F9247 +:10BAB0005F926F927F928F929F92AF92BF92CF923E +:10BAC000DF92EF92FF920F931F93CF93DF93CDB747 +:10BAD000DEB7E1970FB6F894DEBF0FBECDBF6D8322 +:10BAE0007E838F8398872F87388B498B5A8B0D8B5A +:10BAF000AD868B8A24E0E29E80011124C8018B5B15 +:10BB0000924F9F8B8E8BD801A453B24FB98FA88FC1 +:10BB10008D909D90AD90BC90FC012081318142813F +:10BB20005381C501B40106D56A8F7B8F8C8F9D8FA1 +:10BB3000F4E0CF9E1001112491012B5B324F3F8F17 +:10BB40002E8FC1018453924F99A388A3DC01CD901D +:10BB5000DD90ED90FC90F90120813181428153818B +:10BB6000C701B601E7D46AA37BA38CA39DA32401DC +:10BB7000350177FA709477F87094D701C601B05800 +:10BB800089839A83AB83BC83F801E651F24F2A8DF7 +:10BB90003B8D4C8D5D8D6081718182819381C9D493 +:10BBA0004B015C01F101E651F24F2AA13BA14CA1EE +:10BBB0005DA16081718182819381BBD46B017C0125 +:10BBC000A5019401C301B201E7D769877A878B8702 +:10BBD0009C87A701960169817A818B819C81DCD742 +:10BBE0009B01AC0169857A858B859C85A3D4698787 +:10BBF0007A878B879C87A7019601C301B201CCD7B6 +:10BC00006B017C01A501940169817A818B819C8102 +:10BC1000C3D79B01AC01C701B6018BD429853A85F6 +:10BC20004B855C85FAD46B017C019B89992389F053 +:10BC30002DEB37E346E055EBC701B60172D787FD20 +:10BC40001AC02BED3FE049EC50E4C701B60171D4B6 +:10BC500010C02DEB37E346E055E3C701B60143D5ED +:10BC600018164CF02BED3FE049EC50E4C701B6014B +:10BC700061D46B017C018090A80D9090A90DA090DB +:10BC8000AA0DB090AB0D2D813E814F815885CA0120 +:10BC9000B90150D4A50194014CD49B01AC01C5015C +:10BCA000B4017AD70E9459664B015C0120E030E074 +:10BCB00040E05FE3C701B6016FD72D813E814F8120 +:10BCC00058856AD79F77A501940114D5E9D57FD50A +:10BCD0007C8B6B8BDB01AB2B09F459C14B01A12C85 +:10BCE000B12CBD89BB2371F0C501B4019CD59B016A +:10BCF000AC016F85788989899A894ED76F87788B4F +:10BD0000898B9A8BC501B4018ED54B015C019B01D7 +:10BD1000AC01C701B601EED46D837E838F83988713 +:10BD2000FD85E4E0FE9FC00111249C012B5B324F96 +:10BD30003E872D87FC01E651F24FD9012D913D91AF +:10BD40004D915C916081718182819381F2D3A501D3 +:10BD50009401D0D46EA77FA788AB99AB2D813E818B +:10BD60004F815885CA01B90117D79B01AC0160E02A +:10BD700070E080E090E4DDD36B017C012BEA3AEACD +:10BD80004AE25EE36D817E818F81988505D74B0104 +:10BD90005C0120E030E040E850E4C701B601CAD3BE +:10BDA0009B01AC01C501B401F7D669877A878B87FF +:10BDB0009C8720E030E040E05FE3C701B601ECD6AD +:10BDC0006EA37FA388A799A710E022242394312C87 +:10BDD000EB89FC892E163F0609F4D9C01C3008F007 +:10BDE0003AC02EA13FA148A559A569817A818B81CE +:10BDF0009C81D2D66B017C0129853A854B855C8577 +:10BE0000C301B201C9D6A701960194D37B01082FC3 +:10BE1000D92E2EA13FA148A559A5C301B201BCD678 +:10BE20004B015C0129853A854B855C8569817A8166 +:10BE30008B819C81B1D69B01AC01C501B40179D342 +:10BE40002B013C011F5FC701A02FBD2D89839A8361 +:10BE5000AB83BC835BC0B10180E090E0E4D42D8172 +:10BE60003E814F81588598D66B017C0140D469830F +:10BE70007A838B839C83C701B60111D74B015C0188 +:10BE8000E88DF98DC080D180E280F380F7FAF094DC +:10BE9000F7F8F094A8A1B9A18D919D910D90BC9156 +:10BEA000A02D8AA79BA7ACA7BDA729813A814B816A +:10BEB0005C81C701B60170D62B013C01A50194013C +:10BEC0006AA57BA58CA59DA567D69B01AC01C30186 +:10BED000B20130D32B013C01A5019401C701B60189 +:10BEE0005BD66B017C0129813A814B815C816AA51B +:10BEF0007BA58CA59DA550D69B01AC01C701B601C1 +:10BF000018D369837A838B839C8310E0A301920109 +:10BF10006A8D7B8D8C8D9D8D0DD3EE89FF8960831D +:10BF200071838283938329813A814B815C816AA1E9 +:10BF30007BA18CA19DA1FED2AE8DBF8D6D937D9313 +:10BF40008D939C9313972EA53FA548A959A9ED85DC +:10BF5000FE856081718182819381ECD2AD85BE8541 +:10BF60006D937D938D939C9313970D892F853889BD +:10BF700049895A8965E47DE081E00E94F24D809113 +:10BF8000F70D81110EC0BFEF2B1A3B0A21CF0D898F +:10BF90002F85388949895A896AEE7DE081E00E94BF +:10BFA000F24DE1960FB6F894DEBF0FBECDBFDF9124 +:10BFB000CF911F910F91FF90EF90DF90CF90BF90A6 +:10BFC000AF909F908F907F906F905F904F903F9039 +:10BFD0002F900895CF930E94E947C9E20E94AF4095 +:10BFE0008091F70D811111C08091F8109091F91096 +:10BFF000981739F0C89FC00111248A5E914F892B90 +:10C0000069F78091F80D883049F3CF910895EF9248 +:10C010000F931F93CF93DF93E80147FD02C034E0F5 +:10C0200001C034E1E42F440FFF0BF7FF03C0F1958B +:10C03000E195F109E32E022F2E2FAE0107D0CE019C +:10C04000DF91CF911F910F91EF9008954F925F92E2 +:10C050006F927F929F92AF92BF92CF92DF92EF92B8 +:10C06000FF920F931F93CF93DF93CDB7DEB729973E +:10C070000FB6F894DEBF0FBECDBF6A01122FB02EEF +:10C080002BE3201720F0FF24F394F00E02C0BCE352 +:10C09000FB2E0F2D27E0AE014F5F5F4F64D1AC0147 +:10C0A0008981982F9970913031F0E1FC06C0E0FE53 +:10C0B00006C090E205C09DE203C09BE201C090E093 +:10C0C000EE2DE07183FF3CC0911102C083E001C0FE +:10C0D00084E0811718F4212F281B01C020E0E11112 +:10C0E0000BC0F601822F30E2882319F03193815082 +:10C0F000FBCFC20ED11C20E0992329F0D6019C93DE +:10C10000F60131966F01C6010396E2FE0AC03EE4D5 +:10C11000D6013C9341E411964C93119712963C93AF +:10C1200006C03EE6F601308341E641833283FC01DE +:10C13000322F40E2332309F442C041933150FACF09 +:10C1400082FF44C0911102C083E001C084E08117E6 +:10C1500018F4212F281B01C020E0E1110BC0F601CB +:10C16000822F30E2882319F031938150FBCFC20E29 +:10C17000D11C20E0992329F0D6019C93F601319639 +:10C180006F01C6010396E2FE0BC039E4D6013C9371 +:10C190003EE411963C93119736E412963C9307C007 +:10C1A00039E6F60130833EE6318336E63283FC0120 +:10C1B000322F40E2332319F041933150FBCFFC0181 +:10C1C000E20FF11D10828EEF9FEFB7C0F1E09111E9 +:10C1D00001C0F0E06F2F70E01416150624F49A01E8 +:10C1E0002F5F3F4F02C021E030E0260F371FBB20FA +:10C1F00029F06B2D70E06F5F7F4F02C060E070E050 +:10C20000260F371F612F70E0261737071CF4121B0B +:10C21000212F01C020E03E2D387159F4D601322F74 +:10C2200060E2332319F06D933150FBCFC20ED11C65 +:10C2300020E0FF2331F0D6019C93B6016F5F7F4F62 +:10C240006B01E1110BC0F601922F30E3992319F035 +:10C2500031939150FBCFC20ED11C20E09F2D940F43 +:10C260003A81782F7071A72E84FF03C0313309F40F +:10C270009150191624F4993018F098E001C091E01B +:10C28000E42F852F57FF02C0E0E080E06E2F782F6B +:10C29000E0E0F0E0AEE29A2E3A01691A71082A0154 +:10C2A000461A570A0B2D10E01195019511096F3FA1 +:10C2B0008FEF780729F4D6019C92C60101966C0194 +:10C2C0004617570784F0661677066CF47F01E40C76 +:10C2D000F51CA1E0B0E0AC0FBD1FEA0EFB1ED701BC +:10C2E0001196BC9002C090E3B92E6150710931964D +:10C2F000C60101967C016017710724F0D601BC923B +:10C300006C01D5CF6417750741F4363320F435330B +:10C3100021F4A11002C081E3B82EF601B082F7012A +:10C32000822F90E2882319F091938150FBCFF7017F +:10C33000E20FF11D108280E090E029960FB6F8948C +:10C34000DEBF0FBECDBFDF91CF911F910F91FF9048 +:10C35000EF90DF90CF90BF90AF909F907F906F90C5 +:10C360005F904F900895283008F027E03327DA01D6 +:10C37000990F311D87FD916000966105710539F4B3 +:10C3800032602E5F3D9330E32A95E1F708959F3F99 +:10C3900030F080387105610509F03C5F3C5F3D93EA +:10C3A000913008F08068911DDF93CF931F930F9316 +:10C3B000FF92EF92192F987F9695E92F9695969573 +:10C3C000E90FFF27EC5CFD4F99273327EE24FF246C +:10C3D000A701E70105900894079428F4360FE71E9B +:10C3E000F81E491F511D660F771F881F991F06945D +:10C3F000A1F70590079428F4E70EF81E491F561F71 +:10C40000C11D770F881F991F661F0694A1F705901D +:10C41000079428F4F80E491F561FC71FD11D880F17 +:10C42000991F661F771F0694A1F70590079420F4C3 +:10C43000490F561FC71FD81F990F661F771F881FE8 +:10C440000694A9F784911095177041F0D695C79579 +:10C4500057954795F794E7941A95C1F7EAEDF1E0FF +:10C4600068941590159135916591959105907FE2AD +:10C470007395E118F10A430B560BC90BD009C0F7AD +:10C48000E10CF11E431F561FC91FD01D7EF47033EF +:10C4900011F48A95E6CFE894015030F0080F0AF4C1 +:10C4A0000027021708F4202F2395022F7A3328F053 +:10C4B00079E37D932A95E9F710C07D932A9589F653 +:10C4C000069497956795379517951794E118F10A93 +:10C4D000430B560BC90BD00998F023957E917395A9 +:10C4E0007A3308F070E37C932013B8F77E91706183 +:10C4F0007D9330F0839571E37D9370E32A95E1F7A6 +:10C500001124EF90FF900F911F91CF91DF91992708 +:10C5100087FD909508959F939F77D5D10F90002028 +:10C520003AF49058A2EA2AED3FE049E450E413D0EF +:10C5300096C25058BB27AA270ED091C25AD230F0CB +:10C540005FD220F031F49F3F11F41EF42AC20EF4A2 +:10C55000E095E7FBF7C1E92FA4D280F3BA17620791 +:10C5600073078407950718F071F49EF5D3C20EF493 +:10C57000E0950B2EBA2FA02D0B01B90190010C01F3 +:10C58000CA01A0011124FF27591B99F0593F50F40B +:10C59000503E68F11A16F040A22F232F342F442763 +:10C5A000585FF3CF469537952795A795F04053955B +:10C5B000C9F77EF41F16BA0B620B730B840BBAF02B +:10C5C0009150A1F0FF0FBB1F661F771F881FC2F796 +:10C5D0000EC0BA0F621F731F841F48F487957795AA +:10C5E0006795B795F7959E3F08F0B3CF9395880F61 +:10C5F00008F09927EE0F979587950895FAD158F08E +:10C6000080E891E009F49EEFFBD128F040E851E08A +:10C6100059F45EEF09C0C5C17DC2E92FE07841D26F +:10C6200068F3092E052AC1F326173707480759076B +:10C6300038F00E2E07F8E02569F0E025E0640AC026 +:10C64000EF6307F8009407FADB01B9019D01DC01F3 +:10C65000CA01AD01EF935DD002D20AD05F9155239C +:10C6600031F02BED3FE049E450FD49EC63CF0895F4 +:10C67000DF93DD27B92FBF7740E85FE31616170673 +:10C6800048075B0710F4D92F50D29F938F937F9365 +:10C690006F934DD3E6E6F1E087D1E1D12F913F9141 +:10C6A0004F915F9185D2DD2349F09058A2EA2AED9F +:10C6B0003FE049EC5FE3D0785D274DDFDF91CFC1EC +:10C6C00012D280F09F3740F491110EF424C260E042 +:10C6D00070E080E89FE3089526F01B16611D711D30 +:10C6E000811D36C150C10AD108F481E0089590D16E +:10C6F000E395C6C10CD0B3C183D140F07AD130F0FC +:10C7000021F45F3F19F01EC1511105C24AC1C9D1C0 +:10C7100098F39923C9F35523B1F3951B550BBB2708 +:10C72000AA2762177307840738F09F5F5F4F220FB5 +:10C73000331F441FAA1FA9F333D00E2E3AF0E0E8AE +:10C7400030D091505040E695001CCAF729D0FE2FFA +:10C7500027D0660F771F881FBB1F2617370748078C +:10C76000AB07B0E809F0BB0B802DBF01FF27935842 +:10C770005F4F2AF09E3F510568F0E4C0CCC15F3F97 +:10C78000ECF3983EDCF3869577956795B795F7952A +:10C790009F5FC9F7880F911D9695879597F9089522 +:10C7A000E1E0660F771F881FBB1F621773078407BE +:10C7B000BA0720F0621B730B840BBA0BEE1F88F7CD +:10C7C000E095089504D06894B111A5C1089571D180 +:10C7D00088F09F5790F0B92F9927B751A0F0D1F06A +:10C7E000660F771F881F991F1AF0BA95C9F712C0F4 +:10C7F000B13081F08FD1B1E008958CC1672F782FCF +:10C800008827B85F39F0B93FCCF38695779567955F +:10C81000B395D9F73EF490958095709561957F4FCB +:10C820008F4F9F4F0895E89409C097FB3EF4909571 +:10C830008095709561957F4F8F4F9F4F9923A9F0F9 +:10C84000F92F96E9BB279395F69587957795679588 +:10C85000B795F111F8CFFAF4BB0F11F460FF1BC0CC +:10C860006F5F7F4F8F4F9F4F16C0882311F096E95F +:10C8700011C0772321F09EE8872F762F05C066230D +:10C8800071F096E8862F70E060E02AF09A95660FC6 +:10C89000771F881FDAF7880F9695879597F908957F +:10C8A00022D180F09F3740F491110EF034C160E046 +:10C8B00070E080E89FEB089526F41B16611D711D42 +:10C8C000811D46C060C0DF93CF931F930F938B01F0 +:10C8D000EC01E3E9F1E068D0C2D09801AE018B0130 +:10C8E000EC0160E070E080E89FE323DEE2D1980194 +:10C8F000AE010F911F91CF91DF915AC1990F00089E +:10C90000550FAA0BE0E8FEEF16161706E807F90721 +:10C91000C0F012161306E407F50798F0621B730BBC +:10C92000840B950B39F40A2661F0232B242B252B3D +:10C9300021F408950A2609F4A140A6958FEF811DE0 +:10C94000811D089597F99F6780E870E060E0089581 +:10C95000882371F4772321F09850872B762F07C016 +:10C96000662311F499270DC09051862B70E060E08A +:10C970002AF09A95660F771F881FDAF7880F969529 +:10C98000879597F908959F3F31F0915020F487954E +:10C9900077956795B795880F911D9695879597F927 +:10C9A00008959FEF80EC0895DF93CF931F930F932B +:10C9B000FF92EF92DF927B018C01689405C0DA2E22 +:10C9C000EF01F6D0FE01E894A591259135914591AE +:10C9D0005591AEF3EF01BFDDFE019701A801DA9496 +:10C9E00079F7DF90EF90FF900F911F91CF91DF913A +:10C9F000089500240A9416161706180609060895C5 +:10CA000000240A9412161306140605060895C9CFC9 +:10CA100050D0E8F3E894E0E0BB279F57F0F02AED10 +:10CA20003FE049EC06C0EE0FBB0F661F771F881F63 +:10CA300028F0B23A62077307840728F0B25A620BF3 +:10CA4000730B840BE3959A9572F7803830F49A95BE +:10CA5000BB0F661F771F881FD2F7904896CF092E0D +:10CA60000394000C11F4882352F0BB0F40F4BF2B49 +:10CA700011F460FF04C06F5F7F4F8F4F9F4F089589 +:10CA8000EF93E0FF06C0A2EA2AED3FE049EC5FEB3E +:10CA900062DDE5DF0F90039401FC9058EBEBF1E0D1 +:10CAA0005BC157FD9058440F551F59F05F3F71F01F +:10CAB0004795880F97FB991F61F09F3F79F0879505 +:10CAC0000895121613061406551FF2CF4695F1DF8E +:10CAD00008C0161617061806991FF1CF869571051E +:10CAE000610508940895E5DFA0F0BEE7B91788F462 +:10CAF000BB279F3860F41616B11D672F782F882743 +:10CB0000985FF7CF869577956795B11D9395963980 +:10CB1000C8F30895E894BB2766277727CB0197F9D8 +:10CB20000895ECDE08F48FEF08959B01AC0160E0FE +:10CB300070E080E89FE3DECDBCDF58F19E5758F1EE +:10CB40009851A0F0E9F0983020F5092E9927660F4A +:10CB5000771F881F991F0A94D1F712C0062E672FDE +:10CB6000782F8827985F11F4000C07C0993FB4F321 +:10CB70008695779567959395D9F7611D711D811DF0 +:10CB80003EF490958095709561957F4F8F4F9F4FA4 +:10CB900008956894C0CFBECF0BD061CF2ADF28F0B4 +:10CBA0002FDF18F0952309F0CDCEFBCE1124B3CFA3 +:10CBB00078DFA0F3959FD1F3950F50E0551F629F4A +:10CBC000F001729FBB27F00DB11D639FAA27F00DE6 +:10CBD000B11DAA1F649F6627B00DA11D661F829F0D +:10CBE0002227B00DA11D621F739FB00DA11D621FF2 +:10CBF000839FA00D611D221F749F3327A00D611D0F +:10CC0000231F849F600D211D822F762F6A2F1124F0 +:10CC10009F5750408AF0E1F088234AF0EE0FFF1F43 +:10CC2000BB1F661F771F881F91505040A9F79E3F7A +:10CC3000510570F087CE6FCF5F3FECF3983EDCF389 +:10CC4000869577956795B795F795E7959F5FC1F7B7 +:10CC5000FE2B880F911D9695879597F9089529DFEA +:10CC6000E0F09E37D8F09639B8F49E3848F4672F34 +:10CC7000782F8827985FF9CF869577956795939554 +:10CC80009539D0F3B62FB1706B0F711D811D20F453 +:10CC900087957795679593955BCE75CE3CCF9F939F +:10CCA000B7DE0F9007FCEE5FEBCE11F40EF479CEF9 +:10CCB0006ACEFFDED0F39923D9F3CEF39F57550BFD +:10CCC00087FF43D00024A0E640EA900180585695A3 +:10CCD000979528F4805C660F771F881F20F0261731 +:10CCE0003707480730F4621B730B840B2029312966 +:10CCF0004A2BA69517940794202531254A2758F7E3 +:10CD0000660F771F881F20F026173707480730F473 +:10CD1000620B730B840B200D311D411DA09581F713 +:10CD2000B901842F9158880F9695879508959B0196 +:10CD3000AC0132CFD8DE20F09F3708F4ECCE08CE1D +:10CD400022CEDCDD880B990B089591505040660F80 +:10CD5000771F881FD2F708959F938F937F936F93C8 +:10CD6000FF93EF939B01AC0117DFEF91FF911CDE66 +:10CD70002F913F914F915F910FCF991B79E004C0A4 +:10CD8000991F961708F0961B881F7A95C9F780950A +:10CD90000895AA1BBB1B51E107C0AA1FBB1FA61702 +:10CDA000B70710F0A61BB70B881F991F5A95A9F754 +:10CDB00080959095BC01CD010895A1E21A2EAA1B81 +:10CDC000BB1BFD010DC0AA1FBB1FEE1FFF1FA2173B +:10CDD000B307E407F50720F0A21BB30BE40BF50B38 +:10CDE000661F771F881F991F1A9469F760957095C1 +:10CDF000809590959B01AC01BD01CF010895EE0F88 +:10CE0000FF1F881F8BBF0790F691E02D1994A29FFA +:10CE1000B001B39FC001A39F700D811D1124911D0E +:10CE2000B29F700D811D1124911D0895F0DFA59F03 +:10CE3000900DB49F900DA49F800D911D1124089515 +:10CE4000FB01DC010D900020E9F7119701900D9294 +:10CE50000020E1F70895FB01DC0101900D92002014 +:10CE6000E1F708950F931F93CF93DF93CDB7DEB70C +:10CE70002E970FB6F894DEBF0FBECDBF0E891F8967 +:10CE800086E08C831A8309838FEF9FE79E838D83CF +:10CE9000AE01465E5F4F688D798DCE0101965BD005 +:10CEA0002F813885F801E20FF31F10822E960FB6FE +:10CEB000F894DEBF0FBECDBFDF91CF911F910F91D0 +:10CEC0000895CF93DF93CDB7DEB72E970FB6F894C2 +:10CED000DEBF0FBECDBF85E08C838C899D899A8390 +:10CEE0008983AE01485E5F4F6E897F89CE010196CE +:10CEF000C7D32E960FB6F894DEBF0FBECDBFDF911D +:10CF0000CF9108950F931F93CF93DF93CDB7DEB7E3 +:10CF10002E970FB6F894DEBF0FBECDBF8C0186E012 +:10CF20008C831A8309838FEF9FE79E838D83CE01C5 +:10CF3000019611D02F813885F801E20FF31F10827E +:10CF40002E960FB6F894DEBF0FBECDBFDF91CF9106 +:10CF50001F910F9108952F923F924F925F926F927F +:10CF60007F928F929F92AF92BF92CF92DF92EF9279 +:10CF7000FF920F931F93CF93DF93CDB7DEB72C971C +:10CF80000FB6F894DEBF0FBECDBF7C016B018A01E6 +:10CF9000FC0117821682838181FFB0C1CE01019608 +:10CFA0004C01F7019381F60193FD859193FF8191E7 +:10CFB0006F01882309F49EC1853239F493FD859170 +:10CFC00093FF81916F01853221F4B70190E0DFD4A6 +:10CFD000E8CF512C312C20E02032A0F48B3269F0C4 +:10CFE00030F4803259F0833269F420612CC08D32E4 +:10CFF00039F0803339F4216026C02260246023C0D8 +:10D00000286021C027FD27C030ED380F3A3078F472 +:10D0100026FF06C0FAE05F9E300D1124532E13C088 +:10D020008AE0389E300D1124332E20620CC08E32DF +:10D0300021F426FD5FC1206406C08C3611F42068FF +:10D0400002C0883641F4F60193FD859193FF8191EA +:10D050006F018111C1CF982F9F7D9554933028F493 +:10D060000C5F1F4FFFE3F9830DC0833631F0833728 +:10D0700071F0833509F057C021C0F80180818983A0 +:10D080000E5F1F4F44244394512C540114C03801A7 +:10D09000F2E06F0E711CF801A080B18026FF03C082 +:10D0A000652D70E002C06FEF7FEFC5012C8726D49D +:10D0B0002C0183012C852F77222E16C03801F2E037 +:10D0C0006F0E711CF801A080B18026FF03C0652D92 +:10D0D00070E002C06FEF7FEFC5012C8704D42C01F4 +:10D0E0002C852068222E830123FC19C0832D90E01B +:10D0F00048165906A0F4B70180E290E048D43A946B +:10D10000F5CFF50127FC859127FE81915F01B701DD +:10D1100090E03DD431103A94F1E04F1A5108411497 +:10D12000510479F7DEC0843611F0893631F5F80103 +:10D1300027FF07C060817181828193810C5F1F4F3F +:10D1400008C060817181072E000C880B990B0E5F5F +:10D150001F4F2F76722E97FF09C09095809570957E +:10D1600061957F4F8F4F9F4F2068722E2AE030E0ED +:10D17000A4015ED4A82EA81843C0853729F42F7EB9 +:10D18000B22E2AE030E025C0F22FF97FBF2E8F3675 +:10D19000C1F018F4883579F0ADC0803719F08837C0 +:10D1A00021F0A8C02F2F2061B22EB4FE0DC08B2D10 +:10D1B0008460B82E09C024FF0AC09F2F9660B92E44 +:10D1C00006C028E030E005C020E130E002C020E1E8 +:10D1D00032E0F801B7FE07C06081718182819381DE +:10D1E0000C5F1F4F06C06081718180E090E00E5F90 +:10D1F0001F4FA4011DD4A82EA818FB2DFF777F2E4A +:10D2000076FE0BC0372D3E7FA51450F474FE0AC085 +:10D2100072FC08C0372D3E7E05C0BA2C372D03C0E6 +:10D22000BA2C01C0B52C34FF0DC0FE01EA0DF11D72 +:10D230008081803311F4397E09C032FF06C0B39477 +:10D24000B39404C0832F867809F0B39433FD12C0E1 +:10D2500030FF06C05A2CB31418F4530C5B18B32CCF +:10D26000B31460F4B70180E290E03C8790D3B394AC +:10D270003C85F6CFB31410F43B1801C0312C34FFB9 +:10D2800011C0B70180E390E03C8781D33C8532FF39 +:10D2900016C031FD03C088E790E002C088E590E049 +:10D2A000B7010CC0832F867851F031FF02C08BE2AA +:10D2B00001C080E237FD8DE2B70190E068D3A5148C +:10D2C00030F4B70180E390E062D35A94F8CFAA9487 +:10D2D000F401EA0DF11D8081B70190E058D3A1104F +:10D2E000F6CF332009F45DCEB70180E290E04FD352 +:10D2F0003A94F7CFF7018681978102C08FEF9FEFB5 +:10D300002C960FB6F894DEBF0FBECDBFDF91CF9144 +:10D310001F910F91FF90EF90DF90CF90BF90AF9053 +:10D320009F908F907F906F905F904F903F902F9045 +:10D33000089520FD09C0FC0123FD05C022FF02C0A5 +:10D340007383628351834083089544FD10C046FD7A +:10D3500010C0DB01FC01AA0FBB1FEE1FFF1F1094C2 +:10D36000D1F76A0F7B1F8E1F9F1F31E003C033E090 +:10D3700001C034E0660F771F881F991F3150D1F725 +:10D38000620F711D811D911D08950F931F93CF93FF +:10D39000DF938C01C801BDD2EC0197FD06C090D28D +:10D3A000892BC1F7B801CE012AD3CE01DF91CF91ED +:10D3B0001F910F9108958F929F92AF92BF92CF923B +:10D3C000DF92EF92FF920F931F93CF93DF931F9201 +:10D3D000CDB7DEB78C01C62E7A0129839AD2AC0173 +:10D3E000552729814B32510521F04D32510561F409 +:10D3F0002068CA94C11002C080E06FC0C8012983B0 +:10D4000088D2298197FDF8CF322F3D7FD32E322F3E +:10D41000307339F5803329F5BB24BA94BC0C09F478 +:10D4200049C0C801298375D2298197FD43C0382F8F +:10D430003F7D383561F48D2D8264D82ECA94CA940C +:10D44000CC20C1F1C80165D297FF0BC033C026FFC5 +:10D4500004C02D2D2260D22E03C03D2D3261D32E6B +:10D46000CB2C812C912C540120ED280F283078F002 +:10D47000D4FE03C0B801C3D21AC02A3040F0D6FE91 +:10D48000F9CF2F7D3FEE320F3630A0F727504D2DCC +:10D49000C501B4015ADF4B015C018D2D8260D82E8D +:10D4A000CA94CC2051F0C80134D297FFDDCFD1FC13 +:10D4B00004C0A2CF812C912C5401D7FE08C0B09497 +:10D4C000A09490948094811C911CA11CB11C2D2DC2 +:10D4D000B501A401C7012DDF81E00F90DF91CF914D +:10D4E0001F910F91FF90EF90DF90CF90BF90AF9082 +:10D4F0009F908F9008956F927F928F929F92AF929C +:10D50000BF92CF92DF92EF92FF920F931F93CF9330 +:10D51000DF93CDB7DEB7A1970FB6F894DEBF0FBE8D +:10D52000CDBF5C017A01CE0101966C0180E2F6016B +:10D5300011928A95E9F7F501838040E050E0912C43 +:10D54000712C70E0A1E0B0E0F90183FC859183FECD +:10D5500081918F01982F9F01811103C080E090E09D +:10D560007AC08E3519F44115510549F1E72FF0E0E5 +:10D57000E417F5073CF48D3559F18D3219F4772015 +:10D5800001F103C0711001C0982E892F86958695F0 +:10D5900086958601080F111D892F87703D0101C0F6 +:10D5A000660C8A95EAF7F8018081862980839915AF +:10D5B00059F0991510F49F5FE8CF9150E6CF71E0D4 +:10D5C00004C07724739401C0712C4F5F5F4FBCCFB0 +:10D5D000772019F08E8180628E83711103C09924A7 +:10D5E000939416C0F6019E012F5D3F4F8081809578 +:10D5F0008193E217F307D1F7F2CFE114F10429F098 +:10D60000F7018083C70101967C016150912CE9F0FC +:10D61000C50169A37ED169A197FD15C0282F269564 +:10D6200026952695F601E20FF11D208130E0AC0130 +:10D630004770552702C0359527954A95E2F720FD9A +:10D64000DCCFB501DCD1911089CFE114F10411F0E8 +:10D65000F7011082C801A1960FB6F894DEBF0FBE85 +:10D66000CDBFDF91CF911F910F91FF90EF90DF9091 +:10D67000CF90BF90AF909F908F907F906F900895C4 +:10D680004F925F927F928F929F92AF92BF92CF9272 +:10D69000DF92EF92FF920F931F93CF93DF931F922E +:10D6A000CDB7DEB76C012B015A01FC01178216823F +:10D6B000712CF601F380F201F3FC8591F3FE819168 +:10D6C000382F2F01882309F4E5C090E03983F8D082 +:10D6D0003981892B19F0C60158DEEBCF353241F480 +:10D6E000F201F3FC3591F3FE31912F01353259F4FB +:10D6F000C60139830ED1398197FDCAC03817C9F2E6 +:10D70000B6017DD1C7C03A3239F4F3FC3591F3FE4E +:10D7100031912F0151E001C050E0420110E020EDB5 +:10D72000230F2A3088F45260612F70E080E090E08F +:10D7300040E259830ADE162FF401F3FC3591F3FE23 +:10D7400031914F015981EBCF052F232F240151FF38 +:10D7500003C0111102C09EC01FEF383619F03C36CD +:10D7600059F011C0F401F3FC2591F3FE21912F0132 +:10D77000283649F4052F08600460F201F3FC259176 +:10D78000F3FE21912F01222309F484C0622F70E05F +:10D7900084ED92E029839CD02981892B09F47AC0F9 +:10D7A00000FD07C0F501E080F180C50102965C0133 +:10D7B00002C0E12CF12C2E3649F4F6014681578146 +:10D7C00060E070E0202FC701B4DD73CF233689F409 +:10D7D00001FF11E0C6019DD097FD5AC0E114F1048C +:10D7E00029F0F7018083C70101967C01115091F760 +:10D7F0004BC02B3551F49201A701612FC6017BDE8E +:10D800002C01892B09F040C03AC0C6012983BDDD37 +:10D81000298197FD3DC02F3641F128F4243619F1B6 +:10D82000293631F124C0233769F02537E1F01FC0D4 +:10D83000E114F10429F0F7018082C70101967C010F +:10D84000115059F0C60165D04C0197FD06C038D083 +:10D85000892B71F3B601C401D2D0E114F104A1F017 +:10D86000F701108211C0006203C0006101C00064B2 +:10D87000202FA701612FC6019EDD811105C0F60191 +:10D880008381807329F406C000FD13CF739411CFF8 +:10D89000772019F0872D90E002C08FEF9FEF0F9057 +:10D8A000DF91CF911F910F91FF90EF90DF90CF907C +:10D8B000BF90AF909F908F907F905F904F90089512 +:10D8C000911114C1803219F089508550D0F7089514 +:10D8D000FC010590061621F00020D9F7C00108953B +:10D8E0003197CF010895FC010590615070400110FF +:10D8F000D8F7809590958E0F9F1F0895FC01615079 +:10D90000704001900110D8F7809590958E0F9F1F61 +:10D910000895CF93DF93EC012B8120FF33C026FFC6 +:10D920000AC02F7B2B838E819F8101969F838E83DC +:10D930008A8190E029C022FF0FC0E881F9818081AF +:10D94000082E000C990B009719F420622B831AC043 +:10D950003196F983E8830EC0EA85FB85199597FF18 +:10D9600009C02B81019611F080E201C080E1822B79 +:10D970008B8308C02E813F812F5F3F4F3F832E83D3 +:10D98000992702C08FEF9FEFDF91CF9108950F93FA +:10D990001F93CF93DF93FB01238121FD03C08FEF02 +:10D9A0009FEF28C022FF16C0468157812481358110 +:10D9B0004217530744F4A081B1819D012F5F3F4F6F +:10D9C000318320838C93268137812F5F3F4F3783AC +:10D9D000268310C0EB01092F182F0084F185E02D5C +:10D9E0001995892BE1F68E819F8101969F838E8305 +:10D9F000812F902FDF91CF911F910F910895FB01FF +:10DA0000238120FF12C026FD10C08F3F3FEF9307F8 +:10DA100061F082832F7D206423832681378121500A +:10DA2000310937832683992708958FEF9FEF089553 +:10DA3000FA01AA27283051F1203181F1E8946F933F +:10DA40006E7F6E5F7F4F8F4F9F4FAF4FB1E03ED0E5 +:10DA5000B4E03CD0670F781F891F9A1FA11D680F83 +:10DA6000791F8A1F911DA11D6A0F711D811D911DB6 +:10DA7000A11D20D009F468943F912AE0269F11242B +:10DA80003019305D3193DEF6CF010895462F47708F +:10DA9000405D4193B3E00FD0C9F7F6CF462F4F70EA +:10DAA000405D4A3318F0495D31FD4052419302D048 +:10DAB000A9F7EACFB4E0A6959795879577956795EE +:10DAC000BA95C9F700976105710508959B01AC01EE +:10DAD0000A2E06945795479537952795BA95C9F715 +:10DAE000620F731F841F951FA01D08959927882713 +:06DAF0000895F894FFCF39 +:10DAF6009A99D93F08020000000000000073736382 +:10DB0600616E662025640D0A0053255B302D392D84 +:10DB16002B2E5D52255B302D392D2B2E5D48255B36 +:10DB2600302D392D2B2E5D46255B302D392D2B2E94 +:10DB36005D004E256456255B302D392D2B2E5D4616 +:10DB4600255B302D392D2B2E5D0058255B302D3968 +:10DB56002D2B2E5D59255B302D392D2B2E5D5A250B +:10DB66005B302D392D2B2E5D46255B302D392D2B27 +:10DB76002E5D0041255B302D392D2B2E5D0056255F +:10DB860073002056310A0046255B302D392E5D5430 +:10DB960025640058255B302D392D2B2E5D59255BCC +:10DBA600302D392D2B2E5D5A255B302D392D2B2E00 +:10DBB6005D5025640053255B302D392D2B2E5D00DD +:10DBC6006120300D0A006220300D0A006320300DFE +:10DBD6000A0020422573204C2573205225730A0023 +:10DBE600537769667450726F002025730A005634A5 +:10DBF6002E312E300056342E302E32004646464602 +:10DC06004646464600202573002058257320592590 +:10DC160073205A25730A002053257320522573203A +:10DC26004825730A0061643A25640D0A00204225DE +:10DC360064204C2564205225640A0040310A0023E2 +:10DC4600255B302D395D0024257300453233206273 +:10DC560075666665722066756C6C0D0A0040332029 +:10DC660058257320592573205A2573205225730A87 +:10DC7600004036204E30205625640A004039205692 +:10DC8600300A0020006F6B0045323000453231000B +:10DC96004532320056332E332E310056332E332E74 +:10DCA60030004532330A004532300A004532310A27 +:10DCB60000646976696465206E756D203A20256476 +:04DCC6000D0A000043 +:00000001FF From 43ef7afcdf9538c078c3496e9f9a71d6046213f6 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 1 Jun 2018 18:30:34 +0800 Subject: [PATCH 24/74] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 89e5dcc..a8416bd 100755 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Update Summary for v4.1.0 * Transplant Grbl framework. * Optimize stepper motor performance. -* Fix servo jitter in end-effector. +* Fix servo shake in end-effector. ## Features * **not support study mode temporarily**. From bad6b3ef84118cc6a970fe19af4b2eb058aeb1e7 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 1 Jun 2018 19:00:43 +0800 Subject: [PATCH 25/74] update --- README.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a8416bd..c65ccd3 100755 --- a/README.md +++ b/README.md @@ -4,13 +4,22 @@ ## Update Summary for v4.1.0 * Transplant Grbl framework. -* Optimize stepper motor performance. +* Optimize stepper motor performance,improve motor speed. * Fix servo shake in end-effector. +* -## Features -* **not support study mode temporarily**. -* **not support app control temporarily**. -### For serial terminal control +## Caution +#### The current firmware is not perfect and will be updated periodically +#### Not support learning mode +#### Not support app control +#### For uArmStudio control + +- BLOCKLY is not support **input** and **Grove** module. +- Draw/Laser is not support. +- 3D Printing is not support. + +## Communication protocol +#### For serial terminal control First, connect to uArm using the serial terminal of your choice.Set the baud rate to 115200 as 8-N-1 (8-bits, no parity, and 1-stop bit.) .Cmd list reference to [protocol documents](doc/). @@ -21,14 +30,8 @@ not support temporarily **M2211,M2212,M2213,M2234,M2240,M2241,M2245**. **P2200,P2201,P2202,P2203,P2204,P2205,P2206,P2220,P2221,P2231,P2231,P2232,P2233,P2234,P2242,P2400**. not support temporarily **P2240,P2241**. -### For uArmStudio control - -- BLOCKLY is not support **input** and **Grove** module temporarily. -- Draw/Laser is not support temporarily. -- 3D Printing is not support temporarily. - - ---------- +## How to upgrade uArm ### 1ã€Flashing Firmware to uArm #### To Determine your uArm's COM port: @@ -36,7 +39,7 @@ not support temporarily **P2240,P2241**. * Windows XP: Right click on "My Computer", select "Properties", select "Device Manager". * Windows 7: Click "Start" -> Right click "Computer" -> Select "Manage" -> Select "Device Manager" from left pane. * In the tree, expand "Ports (COM & LPT)". -* Your uArm will be the **Arduino Mega 2560 (COMX)**, where the “X†represents the COM number, for example COM6. +* Your uArm will be the **Arduino Mega 2560 (COMX)**, the “X†represents the COM number, for example COM6. * If there are multiple USB serial ports, right click each one and check the manufacturer, the Arduino will be "FTDI". #### To flash hex to Swift Pro: @@ -57,7 +60,6 @@ you have three ways to control your uArm: * using the uArmStudio - ## License Swift Pro Firmware is published under the [GPL license](/LICENSE) From 0f7cdd5c1aba4cd2764aa86b8321402de323052b Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 1 Jun 2018 19:15:55 +0800 Subject: [PATCH 26/74] frist release --- example/pick_square.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 example/pick_square.txt diff --git a/example/pick_square.txt b/example/pick_square.txt new file mode 100755 index 0000000..59385f7 --- /dev/null +++ b/example/pick_square.txt @@ -0,0 +1,16 @@ + +M2400 S0 +G1 X200 Y0 Z130 F100 +G1 X200 Y0 Z30 F100 +M2231 V1 +G1 X200 Y0 Z130 F100 +G1 X150 Y-150 Z130 F100 +G1 X150 Y-150 Z30 F100 +M2231 V0 +G1 X150 Y-150 Z130 F100 +G1 X150 Y-150 Z30 F100 +M2231 V1 +G1 X150 Y-150 Z130 F100 +G1 X200 Y0 Z130 F100 +G1 X200 Y0 Z30 F100 +M2231 V0 From a00a1f94d8af937e92b24d3b4759e0619d2dcdfc Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 1 Jun 2018 19:18:43 +0800 Subject: [PATCH 27/74] update --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c65ccd3..cbf1bf8 100755 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ ## Update Summary for v4.1.0 * Transplant Grbl framework. -* Optimize stepper motor performance,improve motor speed. +* Optimize stepper motor performance,improve motor speed,fix motor shake. * Fix servo shake in end-effector. -* +* Optimize code efficiency and improve readability. ## Caution #### The current firmware is not perfect and will be updated periodically @@ -55,7 +55,7 @@ The upload process generally takes about 10 seconds to finish. Once completed, a ### 2ã€Control your uArm you have three ways to control your uArm: -* using the serial terminal +* using the serial terminal [example](example) * using the Python library * using the uArmStudio From 4f04bd882a9417884b4c809c8d97db285820e165 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Mon, 4 Jun 2018 09:03:36 +0800 Subject: [PATCH 28/74] update --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cbf1bf8..610857e 100755 --- a/README.md +++ b/README.md @@ -25,10 +25,10 @@ First, connect to uArm using the serial terminal of your choice.Set the baud rat * move cmd support **G0,G1,G2004,G2201,G2202,G2204,G2205**. * setting cmd support **M17,M204,M2019,M2120,M2121,M2122,M2201,M2202,M2203,M2210,M2215,M2220,M2221,M2222,M2231,M2232,M2233,M2400,M2401,M2410,M2411**. -not support temporarily **M2211,M2212,M2213,M2234,M2240,M2241,M2245**. +not support currently **M2211,M2212,M2213,M2234,M2240,M2241,M2245**. * query cmd support **P2200,P2201,P2202,P2203,P2204,P2205,P2206,P2220,P2221,P2231,P2231,P2232,P2233,P2234,P2242,P2400**. -not support temporarily **P2240,P2241**. +not support currently **P2240,P2241**. ---------- ## How to upgrade uArm From 76981a34facbf9a586afdc4b390742ffdb0eaf94 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Mon, 4 Jun 2018 11:37:13 +0800 Subject: [PATCH 29/74] update --- hex/uArmPro_V4.1.0_release_20180601.hex | 4325 +++++++++++------------ src/motion_control.c | 2 +- 2 files changed, 2162 insertions(+), 2165 deletions(-) diff --git a/hex/uArmPro_V4.1.0_release_20180601.hex b/hex/uArmPro_V4.1.0_release_20180601.hex index f6e703d..f283000 100755 --- a/hex/uArmPro_V4.1.0_release_20180601.hex +++ b/hex/uArmPro_V4.1.0_release_20180601.hex @@ -1,6 +1,6 @@ :10000000CBC40000EAC40000E8C40000E6C400005D :10001000E4C40000E2C40000E0C40000DEC400004C -:10002000DCC400000C94BB51D8C400000C94B82E62 +:10002000DCC400000C94AF51D8C400000C94B82E6E :10003000D4C40000D2C40000D0C400000C94193114 :10004000CCC400000C94703CC8C40000C6C40000BE :10005000C4C40000C2C40000C0C400000C949D3B96 @@ -152,16 +152,16 @@ :100970007400457870656374656420636F6D6D61A4 :100980006E64206C6574746572006572726F723A81 :1009900020006F6B0D0A000011241FBECFEFD1E2C3 -:1009A000DEBFCDBF00E00CBF13E0A0E0B2E0E6EF99 -:1009B000FAED00E00BBF02C007900D92A43DB10715 -:1009C000D9F722E1A4EDB3E001C01D92AC3EB2071D -:1009D000E1F70E94B1540C94796D12CB2F923F92A3 +:1009A000DEBFCDBF00E00CBF13E0A0E0B2E0EEED93 +:1009B000FAED00E00BBF02C007900D92A23CB10718 +:1009C000D9F722E1A2ECB3E001C01D92AA3DB20723 +:1009D000E1F70E94A5540C946D6D12CB2F923F92BB :1009E0004F925F926F927F928F929F92AF92BF923F :1009F000CF92DF92EF92FF920F931F93CF93DF93EB :100A0000CDB7DEB7C15DD1090FB6F894DEBF0FBE1A :100A1000CDBFC154DF4F99838883CF5BD04089E33A -:100A2000EDEBFDE0DF011D928A95E9F78AE0EEE249 -:100A3000FDE0AEEBBDE001900D928A95E1F7FE017D +:100A2000EBEAFDE0DF011D928A95E9F78AE0ECE14F +:100A3000FDE0ACEABDE001900D928A95E1F7FE0180 :100A4000EB55FF4F1082C554DF4F19821882CB5BE4 :100A5000D040C354DF4F19821882CD5BD040CB53B6 :100A6000DF4F1882C55CD040CE54DF4F1882C25B86 @@ -176,11 +176,11 @@ :100AF0006B557F4FC154DF4F88819981CF5BD040C8 :100B00000E94044D882311F40C940724CF55DF4F25 :100B1000C880D980EA80FB80C15AD040C701B601A5 -:100B20000E949A660E94E763CF53DF4F6883798300 +:100B20000E948E660E94DB63CF53DF4F6883798318 :100B30008A839B83C15CD040CF53DF4F28803980AC -:100B4000C15CD040B10180E090E00E9413649B0141 -:100B5000AC01C701B6010E94996220E030E048EC88 -:100B600052E40E94CC650E942F660E94E763CA543B +:100B4000C15CD040B10180E090E00E9407649B014D +:100B5000AC01C701B6010E948D6220E030E048EC94 +:100B600052E40E94C0650E9423660E94DB63CA545F :100B7000DF4F79836883C65BD0401D3411F40C9439 :100B8000670E103511F40C94D414173411F00C9432 :100B90005319CB55DF4F8881C55AD040C154DF4F20 @@ -190,19 +190,19 @@ :100BD000DCC5FCE92F16F8E03F0609F498C28DE960 :100BE000281688E0380609F495C3CFC51A82198201 :100BF000CE0101969F938F9381EC92E09F938F9308 -:100C00003F932F930E9461670F900F900F900F906A +:100C00003F932F930E9455670F900F900F900F9076 :100C10000F900F90181619060CF0A8C389819A81BD -:100C20009093540C8093530C91E09093C50C809159 -:100C30004F0C8111ADC521E834E23093D10C2093E3 -:100C4000D00C1092200185E08093210121EF3FEF2D -:100C50003093D30C2093D20C2091D20C3091D30C32 +:100C20009093420C8093410C91E09093B30C80918F +:100C30003D0C8111ADC521E834E23093BF0C209307 +:100C4000BE0C1092200185E08093210121EF3FEF3F +:100C50003093C10C2093C00C2091C00C3091C10C7A :100C6000309325012093240180917300816080934B -:100C7000730090934F0C8CC58E010B5E1F4F1F931A +:100C7000730090933D0C8CC58E010B5E1F4F1F932C :100C80000F937E0199E2E90EF11CFF92EF926E0143 :100C9000ADE3CA0ED11CDF92CF92C355DF4FB881AE :100CA000CD5AD040BF93C455DF4FE881CC5AD040D5 :100CB000EF9389E192E09F938F933F932F930E944C -:100CC00061670FB6F894DEBF0FBECDBF04970CF47A +:100CC00055670FB6F894DEBF0FBECDBF04970CF486 :100CD0004DC3EF961CAE1DAE1EAE1FAEEF97E59650 :100CE0001CAE1DAE1EAE1FAEE597AB961CAE1DAE84 :100CF0001EAE1FAEAB97A1961CAE1DAE1EAE1FAEB4 @@ -214,12 +214,12 @@ :100D5000044D882309F41CC5AE01435A5F4F60E07F :100D600070E0C8010E94044D882309F411C520E0F9 :100D700030E044EB52E4E5966CAD7DAD8EAD9FADB9 -:100D8000E5970E94996221EE3EE245E652E40E9418 -:100D90007A636B017C01E5966CAF7DAF8EAF9FAF40 +:100D8000E5970E948D6221EE3EE245E652E40E9424 +:100D90006E636B017C01E5966CAF7DAF8EAF9FAF4C :100DA000E597EF964CAC5DAC6EAC7FACEF970E94D4 -:100DB00077639B01AC01C301B2010E94CC656983DA -:100DC0007A838B839C83C701B6010E944F669B0187 -:100DD000AC01C301B2010E94CC656D837E838F8319 +:100DB0006B639B01AC01C301B2010E94C0656983F2 +:100DC0007A838B839C83C701B6010E9443669B0193 +:100DD000AC01C301B2010E94C0656D837E838F8325 :100DE0009887AB968CAD9DADAEADBFADAB97898707 :100DF0009A87AB87BC87A1962CAD3DAD4EAD5FAD5C :100E0000A19700E0B501BCC4E5961CAE1DAE1EAEB8 @@ -227,7 +227,7 @@ :100E2000FE0131967F01FF93EF938E010B5E1F4F02 :100E30001F930F93C555DF4FF881CB5AD040FF93D6 :100E4000C655DF4F8881CA5AD0408F9382E492E022 -:100E50009F938F933F932F930E9461670FB6F894EF +:100E50009F938F933F932F930E9455670FB6F894FB :100E6000DEBF0FBECDBF03970CF480C2AE014F585A :100E70005F4F60E070E0C8010E94044D882309F4D0 :100E800087C4AE0149595F4F60E070E0C7010E941E @@ -235,14 +235,14 @@ :100EA0001FAEA19765961CAE1DAE1EAE1FAE659718 :100EB00021961CAE1DAE1EAE1FAE21973E01B9E2BB :100EC0006B0E711C8CE0F30111928A95E9F7609129 -:100ED000B40C7091B50C8091B60C9091B70C0E9437 -:100EE0001564C255DF4F688379838A839B83CE5A0A -:100EF000D0406091B00C7091B10C8091B20C909187 -:100F0000B30C0E9415649B01AC016091AC0C709114 -:100F1000AD0C8091AE0C9091AF0CC353DF4F288382 +:100ED000A20C7091A30C8091A40C9091A50C0E947F +:100EE0000964C255DF4F688379838A839B83CE5A16 +:100EF000D04060919E0C70919F0C8091A00C9091BD +:100F0000A10C0E9409649B01AC0160919A0C709144 +:100F10009B0C80919C0C90919D0CC353DF4F2883B8 :100F2000CD5CD040C253DF4F3883CE5CD040C0533D :100F3000DF4F4883C05DD040CF52DF4F5883C15D43 -:100F4000D0400E941564DE01DD964D01FE01EF5A8E +:100F4000D0400E940964DE01DD964D01FE01EF5A9A :100F5000FF4F5F0190966D01C255DF4FE880F98029 :100F60000A811B81CE5AD040C353DF4F2881CD5C0C :100F7000D040C253DF4F3881CE5CD040C053DF4FEA @@ -250,7 +250,7 @@ :100F90000E94C02BED968EAD9FADED9781309105EF :100FA00029F1F4F4892B09F0EEC120E030E044EBA4 :100FB00052E4E5966CAD7DAD8EAD9FADE5970E9498 -:100FC00099627B018C01E5966CAF7DAF8EAF9FAFD0 +:100FC0008D627B018C01E5966CAF7DAF8EAF9FAFDC :100FD000E59765962CAD3DAD4EAD5FAD659725C0EF :100FE00082309105B1F00397E9F1CDC12196ECACC7 :100FF000FDAC0EAD1FAD219765962CAD3DAD4EAD50 @@ -261,20 +261,20 @@ :101040005D0163010E94DB2AA401B501C3010E9476 :101050007A28AB962CAD3DAD4EAD5FADAB9700E0C1 :10106000B3018EC3E596CCACDDACEEACFFACE5973E -:1010700020E030E044E353E4C701B6010E949165EB +:1010700020E030E044E353E4C701B6010E948565F7 :10108000181684F020E030E0A901C701B6010E94E3 -:10109000736387FF0AC0C12CD12CE4E3EE2EE3E496 +:10109000676387FF0AC0C12CD12CE4E3EE2EE3E4A2 :1010A000FE2E03C0C12CD12C7601A701960160E071 -:1010B00070E084E393E40E94996220E030E044E32E -:1010C00053E40E947A639B01AC010E949A6223E37D -:1010D00033E343E35FE30E949A62609300027093FC +:1010B00070E084E393E40E948D6220E030E044E33A +:1010C00053E40E946E639B01AC010E948E6223E395 +:1010D00033E343E35FE30E948E6260930002709308 :1010E0000102809302029093030220E030E048EA7C -:1010F00051E40E947A6320E030EC4FE754E40E9410 -:10110000CC650E94E763CB010E9456303CC1CE0102 +:1010F00051E40E946E6320E030EC4FE754E40E941C +:10110000C0650E94DB63CB010E9456303CC1CE011A :1011100045969F938F9344969F938F9344969F9366 :101120008F93C355DF4FB881CD5AD040BF93C4557C :10113000DF4FE881CC5AD040EF938AE592E09F934D -:101140008F933F932F930E9461670FB6F894DEBF91 +:101140008F933F932F930E9455670FB6F894DEBF9D :101150000FBECDBF04970CF409C1EF961CAE1DAEB7 :101160001EAE1FAEEF97E5961CAE1DAE1EAE1FAEB7 :10117000E597AB961CAE1DAE1EAE1FAEAB97A1960B @@ -284,30 +284,30 @@ :1011B000CD960E94044D882309F4EAC2AE01495934 :1011C0005F4F60E070E0CE0189960E94044D882355 :1011D00009F4DEC2AE01435A5F4F60E070E0CE0119 -:1011E00045960E94044D882309F4D2C26091B40C44 -:1011F0007091B50C8091B60C9091B70C0E9415645B -:101200002B013C016091B00C7091B10C8091B20C3B -:101210009091B30C0E9415649B01AC016091AC0CE1 -:101220007091AD0C8091AE0C9091AF0CC353DF4F19 +:1011E00045960E94044D882309F4D2C26091A20C56 +:1011F0007091A30C8091A40C9091A50C0E9409649D +:101200002B013C0160919E0C70919F0C8091A00C71 +:101210009091A10C0E9409649B01AC0160919A0C11 +:1012200070919B0C80919C0C90919D0CC353DF4F4F :101230002883CD5CD040C253DF4F3883CE5CD04092 :10124000C053DF4F4883C05DD040CF52DF4F58833B -:10125000C15DD0400E941564DE0119964D01FE016A +:10125000C15DD0400E940964DE0119964D01FE0176 :1012600035965F0118976D0183017201C353DF4FFB :101270002881CD5CD040C253DF4F3881CE5CD04056 :10128000C053DF4F4881C05DD040CF52DF4F5881FF :10129000C15DD0400E943D2CA401B501C6010E9451 :1012A0007A28EF962CAD3DAD4EAD5FADEF976981DD -:1012B0007A818B819C810E949A6269837A838B8375 +:1012B0007A818B819C810E948E6269837A838B8381 :1012C0009C83E5962CAD3DAD4EAD5FADE5976D8150 -:1012D0007E818F8198850E949A626D837E838F8341 +:1012D0007E818F8198850E948E626D837E838F834D :1012E0009887AB962CAD3DAD4EAD5FADAB976985A4 -:1012F0007A858B859C850E949A6269877A878B871D +:1012F0007A858B859C850E948E6269877A878B8729 :101300009C87A1962CAD3DAD4EAD5FADA19700E0A1 :10131000B60136C28E01035A1F4F1F930F937E01F1 :10132000B7E6EB0EF11CFF92EF926E01E1E7CE0EF5 :10133000D11CDF92CF92C555DF4FF881CB5AD040F8 :10134000FF93C655DF4F8881CA5AD0408F9389E1F9 -:1013500092E09F938F933F932F930E9461670FB604 +:1013500092E09F938F933F932F930E9455670FB610 :10136000F894DEBF0FBECDBF049784F41F9281E0D6 :101370008F938DE092E09F938F930E9446400F9051 :101380000F900F900F9082E390E004C2C356DF4F9E @@ -324,25 +324,25 @@ :10143000C8010E94044D882309F4AAC1C357DF4F95 :10144000188219821A821B82CD58D040C757DF4FAD :10145000188219821A821B82C958D040CB57DF4F9D -:10146000188219821A821B82C558D0406091B40C30 -:101470007091B50C8091B60C9091B70C0E941564D8 -:101480002B013C016091B00C7091B10C8091B20CB9 -:101490009091B30C0E9415649B01AC016091AC0C5F -:1014A0007091AD0C8091AE0C9091AF0CC353DF4F97 +:10146000188219821A821B82C558D0406091A20C42 +:101470007091A30C8091A40C9091A50C0E9409641A +:101480002B013C0160919E0C70919F0C8091A00CEF +:101490009091A10C0E9409649B01AC0160919A0C8F +:1014A00070919B0C80919C0C90919D0CC353DF4FCD :1014B0002883CD5CD040C253DF4F3883CE5CD04010 :1014C000C053DF4F4883C05DD040CF52DF4F5883B9 -:1014D000C15DD0400E941564DE01AB57BF4F4D0186 +:1014D000C15DD0400E940964DE01AB57BF4F4D0192 :1014E000FE01E757FF4F5F0118966D0183017201FE :1014F000C353DF4F2881CD5CD040C253DF4F3881CA :10150000CE5CD040C053DF4F4881C05DD040CF5249 -:10151000DF4F5881C15DD0400E94C02B6091B40C58 -:101520007091B50C8091B60C9091B70C0E94156427 -:101530002B013C016091B00C7091B10C8091B20C08 -:101540009091B30C0E9415649B01AC016091AC0CAE -:101550007091AD0C8091AE0C9091AF0CC353DF4FE6 +:10151000DF4F5881C15DD0400E94C02B6091A20C6A +:101520007091A30C8091A40C9091A50C0E94096469 +:101530002B013C0160919E0C70919F0C8091A00C3E +:101540009091A10C0E9409649B01AC0160919A0CDE +:1015500070919B0C80919C0C90919D0CC353DF4F1C :101560002883CD5CD040C253DF4F3883CE5CD0405F :10157000C053DF4F4883C05DD040CF52DF4F588308 -:10158000C15DD0400E941564C753DF4F88809980A9 +:10158000C15DD0400E940964C753DF4F88809980B5 :10159000C95CD040E1E5F0E0EC0FFD1F3496C25588 :1015A000DF4FF983E883CE5AD0405F01DE01AF5AA6 :1015B000BF4F6D0183017201C353DF4F2881CD5CA2 @@ -352,27 +352,27 @@ :1015F000C255DF4F68817981CE5AD040C6010E9422 :101600007A2865966CAD7DAD8EAD9FAD6597699678 :10161000CCACDDACEEACFFAC69979B01AC010E9499 -:10162000CC654B015C01A7019601C701B6010E9480 -:10163000CC659B01AC01C501B4010E949A620E9475 -:101640005966C356DF4F288139814A815B81CD5964 -:10165000D0400E949A626B017C01C356DF4F6883C1 +:10162000C0654B015C01A7019601C701B6010E948C +:10163000C0659B01AC01C501B4010E948E620E948D +:101640004D66C356DF4F288139814A815B81CD5970 +:10165000D0400E948E626B017C01C356DF4F6883CD :1016600079838A839B83CD59D040C756DF4F288129 :1016700039814A815B81C959D040CB57DF4F68819E -:1016800079818A819B81C558D0400E949A6221EE5F -:101690003EE245E652E40E947A632B013C010E943F -:1016A00077639B01AC01C701B6010E94CC654B0179 +:1016800079818A819B81C558D0400E948E6221EE6B +:101690003EE245E652E40E946E632B013C010E944B +:1016A0006B639B01AC01C701B6010E94C0654B0191 :1016B0005C0165966CAF7DAF8EAF9FAF6597C30140 -:1016C000B2010E944F669B01AC01C701B6010E94A6 -:1016D000CC6569966CAF7DAF8EAF9FAF6997CB56E7 +:1016C000B2010E9443669B01AC01C701B6010E94B2 +:1016D000C06569966CAF7DAF8EAF9FAF6997CB56F3 :1016E000DF4F288139814A815B81C559D0406D9691 -:1016F0006CAD7DAD8EAD9FAD6D970E949A626D967B +:1016F0006CAD7DAD8EAD9FAD6D970E948E626D9687 :101700006CAF7DAF8EAF9FAF6D978E01035C1F4FA7 -:1017100024E045E0C501B4010E94076069966CAD04 +:1017100024E045E0C501B4010E94FB5F69966CAD11 :101720007DAD8EAD9FAD69970451110924E045E070 -:101730000E9407606D966CAD7DAD8EAD9FAD6D97CF -:101740000451110924E045E00E940760C356DF4FB1 +:101730000E94FB5F6D966CAD7DAD8EAD9FAD6D97DC +:101740000451110924E045E00E94FB5FC356DF4FBE :10175000688179818A819B81CD59D04004511109DA -:1017600024E045E00E940760CF56DF4F2881398191 +:1017600024E045E00E94FB5FCF56DF4F288139819E :101770004A815B81C159D04000E0BE016F5A7F4F62 :1017800080E00E94F24D90E005C081E090E002C050 :1017900080E090E09C01215031092230310510F0A9 @@ -387,7 +387,7 @@ :10182000310409F44CC060F4BBE22B16310409F416 :10183000B7C1E1E32E16310409F4B2C10C941324AC :10184000FCE32F16310410F00C941324CF53DF4F18 -:101850008881C15CD04086538093C40DF9E0D5C126 +:101850008881C15CD04086538093B20DF9E0D5C138 :101860002CE52216310460F43AE52316310408F021 :101870003DC180E52816310409F4AEC00C94132450 :101880009CE52916310439F0AFE52A16310408F435 @@ -399,52 +399,52 @@ :1018E00009F447C0B5E32B16310409F465C014C0F0 :1018F00081E010C0BFE12B16310408F051C0EAE0CE :101900002E16310479F4E1E0C654DF4FE883CA5B58 -:10191000D04082E08093BD0DC255DF4F1882CE5A71 +:10191000D04082E08093AB0DC255DF4F1882CE5A83 :10192000D04097C1FCE12F16310409F09CC1F1E0D1 :10193000C654DF4FF883CA5BD040CA54DF4F2881BA :101940003981C65BD0402115310539F02A30310587 :1019500011F00C94132484E015C083E013C0AEE1B1 :101960002A16310439F631E0C654DF4F3883CA5B9A :10197000D040CA54DF4F88819981C65BD040009720 -:1019800049F485E08093BD0DC255DF4F1882CE5AD1 +:1019800049F485E08093AB0DC255DF4F1882CE5AE3 :10199000D04074C10A9711F00C94132486E0F2CF62 :1019A00025E32216310411F00C94562491E0C6541C :1019B000DF4F9883CA5BD04087E0ACCFC654DF4F7F :1019C000F881CA5BD040F1110C94092422E0C6547E :1019D000DF4F2883CA5BD04032E02316310421F167 :1019E00060F421143104E1F02A94232809F02BC17A -:1019F00081E08093BE0D21E073C0A6E22A16310477 +:1019F00081E08093AC0D21E073C0A6E22A16310489 :101A0000E9F0B0E52B16310409F451C0E3E02E16DD -:101A1000310409F018C183E08093BE0D81E00DC14F -:101A20001092BE0DF1E0F1C082E08093BE0D31E076 +:101A1000310409F018C183E08093AC0D81E00DC161 +:101A20001092AC0DF1E0F1C082E08093AC0D31E09A :101A3000C255DF4F3883CE5AD0400BC1CA54DF4F56 :101A4000A881B981C65BD040AE31B10531F170F4E7 -:101A5000549711F00C94132484E08093BE0DF1E0B0 +:101A5000549711F00C94132484E08093AC0DF1E0C2 :101A6000C255DF4FF883CE5AD04008C1CA54DF4F69 :101A7000E881F981C65BD040E832F10599F0F29730 -:101A800011F00C94132487E08093BE0D81E0C255C1 -:101A9000DF4F8883CE5AD040F1C085E08093BE0DE1 -:101AA00021E054C086E08093BE0D31E0BFC088E0E5 -:101AB0008093BE0DC8C0A2E12A16310441F0B3E103 -:101AC0002B16310449F01092C20DE2E063C081E0B0 -:101AD0008093C20DF2E099C082E08093C20D22E0B3 +:101A800011F00C94132487E08093AC0D81E0C255D3 +:101A9000DF4F8883CE5AD040F1C085E08093AC0DF3 +:101AA00021E054C086E08093AC0D31E0BFC088E0F7 +:101AB0008093AC0DC8C0A2E12A16310441F0B3E115 +:101AC0002B16310449F01092B00DE2E063C081E0C2 +:101AD0008093B00DF2E099C082E08093B00D22E0D7 :101AE000C255DF4F2883CE5AD040B3C0CA54DF4F0F :101AF00088819981C65BD040892BB9F49AE5291673 -:101B0000310449F41092C10DA3E0C255DF4FA88300 -:101B1000CE5AD040B3C081E08093C10DB3E0C2552E +:101B0000310449F41092AF0DA3E0C255DF4FA88312 +:101B1000CE5AD040B3C081E08093AF0DB3E0C25540 :101B2000DF4FB883CE5AD040A9C0CA54DF4FE881F6 :101B3000F981C65BD0403A9711F00C941324FAE572 :101B40002F16310411F40C94132424E0C255DF4FF6 :101B50002883CE5AD04092C03DE52316310429F4A3 -:101B600081E08093BF0D85E068C01092BF0D95E0C5 -:101B70006BC0A4E12A16310451F481E08093C00DBA +:101B600081E08093AD0D85E068C01092AD0D95E0E9 +:101B70006BC0A4E12A16310451F481E08093AE0DCC :101B8000B6E0C255DF4FB883CE5AD04062C0109243 -:101B9000C00DE6E0C255DF4FE883CE5AD04059C0B1 +:101B9000AE0DE6E0C255DF4FE883CE5AD04059C0C3 :101BA000C654DF4FF881CA5BD040F1110C94092470 -:101BB00021E32216310479F41092C30D38E0C255A6 +:101BB00021E32216310479F41092B10D38E0C255B8 :101BC000DF4F3883CE5AD04083E0C654DF4F88833E :101BD000CA5BD04053C0CA54DF4FA881B981C65BED -:101BE000D0401A9711F00C94132481E08093C30D18 +:101BE000D0401A9711F00C94132481E08093B10D2A :101BF000B8E0C255DF4FB883CE5AD040E3E0C654B8 :101C0000DF4FE883CA5BD04039C0C255DF4FF8834D :101C1000CE5AD0401EC0CA54DF4F28813981C65BDE @@ -485,13 +485,13 @@ :101E400039E0330609F460C48BE6281689E03806C9 :101E500009F4C5C381E090E02DC58A9A80910801FC :101E60008160809308015F9A0E94A1258FE0809392 -:101E7000C40C80E090E00E94872D6093A00C7093CA -:101E8000A10C8093A20C9093A30C81E090E00E949F -:101E9000872D6093A40C7093A50C8093A60C90934F -:101EA000A70C82E090E00E94872D6093A80C7093AD -:101EB000A90C8093AA0C9093AB0C02C00E944C31E9 +:101E7000B20C80E090E00E94872D60938E0C7093EE +:101E80008F0C8093900C9093910C81E090E00E94D5 +:101E9000872D6093920C7093930C8093940C909385 +:101EA000950C82E090E00E94872D6093960C7093D1 +:101EB000970C8093980C9093990C02C00E944C311F :101EC00080E090E0F7C48E010F5F1F4F1F930F93C8 -:101ED00083E892E09F938F93FF93EF930E94616753 +:101ED00083E892E09F938F93FF93EF930E9455675F :101EE0000F900F900F900F900F900F9018161906EB :101EF0000CF094C31D8A1E8A1F8A188EAE014B5E99 :101F00005F4F60E070E0C8010E94044D882309F42F @@ -499,38 +499,38 @@ :101F20004D895E896F89788D89E70E9425434D89A7 :101F30005E896F89788D8AE70E9425430E94D34786 :101F4000BFCF8E010F5F1F4F1F930F938EE892E05C -:101F50009F938F93FF93EF930E9461670F900F9071 +:101F50009F938F93FF93EF930E9455670F900F907D :101F60000F900F900F900F90181619060CF056C393 :101F7000AE014B5E5F4F60E070E0C8010E94044D0F :101F8000882309F495C420E030E04AE754E46D89E1 -:101F90007E898F89988D0E94CC650E94E263161617 -:101FA000170664F57093520C6093510C91E0909376 -:101FB000500C80914F0C811183CF21E834E2309393 -:101FC000D10C2093D00C1092200185E08093210148 -:101FD00021EF3FEF3093D30C2093D20C2091D20C01 -:101FE0003091D30C3093250120932401809173000C -:101FF00081608093730090934F0C62CF1092500CCD -:102000001092520C1092510C5BCF8081863509F0F2 -:102010004FC481818053823008F04AC41092C80CAA -:10202000813019F01092C70C4BCF8093C70C48CF6A +:101F90007E898F89988D0E94C0650E94D66316162F +:101FA000170664F57093400C60933F0C91E090939A +:101FB0003E0C80913D0C811183CF21E834E23093B7 +:101FC000BF0C2093BE0C1092200185E0809321016C +:101FD00021EF3FEF3093C10C2093C00C2091C00C37 +:101FE0003091C10C3093250120932401809173001E +:101FF00081608093730090933D0C62CF10923E0CF1 +:102000001092400C10923F0C5BCF8081863509F016 +:102010004FC481818053823008F04AC41092B60CBC +:10202000813019F01092B50C4BCF8093B50C48CF8E :1020300080818E3409F03CC491819053943008F033 -:1020400037C4923061F0933099F08091C40C913094 +:1020400037C4923061F0933099F08091B20C9130A6 :1020500019F05F9A846025C08A9A816022C08091BD -:1020600008018160809308018091C40C826019C0CE -:102070000E94A1258091C40C886013C080818E3499 +:1020600008018160809308018091B20C826019C0E0 +:102070000E94A1258091B20C886013C080818E34AB :1020800009F016C491819053943008F011C48091E6 -:10209000C40C923061F0933089F0913029F05F9850 -:1020A0008B7F8093C40C0CCF8A988E7FFACF90914F +:10209000B20C923061F0933089F0913029F05F9862 +:1020A0008B7F8093B20C0CCF8A988E7FFACF909161 :1020B00008019E7F909308018D7FF3CF909172006D :1020C0009E7F90937200877FECCF80818E3409F0E1 -:1020D000EFC381818053843008F0EAC39091C40C2F +:1020D000EFC381818053843008F0EAC39091B20C41 :1020E000823081F0833089F0813019F090FF03C095 -:1020F0003CC191FD3AC16EE873E084E69CE00E9429 -:102100002B67DECE92FD31C1F6CF93FFF4CF2DC108 +:1020F0003CC191FD3AC16EE873E082E59CE00E942C +:102100001F67DECE92FD31C1F6CF93FFF4CF2DC114 :102110001AA619A61D8A1E8A1F8A188E8E010F5FA5 :102120001F4F8AE0D8011D928A95E9F7CE01899662 :102130009F938F931F930F9387E992E09F938F93C1 -:10214000FF93EF930E9461670FB6F894DEBF0FBE56 +:10214000FF93EF930E9455670FB6F894DEBF0FBE62 :10215000CDBF02970CF462C2AE014B5E5F4F60E0F0 :1021600070E0C8010E94044D882309F4A1C32D89A1 :102170003E894F89588D69A57AA5072E000C880BDA @@ -543,7 +543,7 @@ :1021E00011966D011D928A95E9F78E010B571F4FCD :1021F0008FEF90E0D8018D939C931F930F93DF9204 :10220000CF92FF92EF92BF92AF9283EA92E09F93B8 -:102210008F93FF93EF930E9461670FB6F894DEBF30 +:102210008F93FF93EF930E9455670FB6F894DEBF3C :102220000FBECDBF03970CF4F9C1AE0145585F4F07 :1022300060E070E0C5010E94044D882309F438C3B2 :10224000AE014F585F4F60E070E0C7010E94044D3F @@ -551,11 +551,11 @@ :10226000C6010E94044D882309F422C3D8018D9130 :102270009C910097D9F1019709F01AC3EF96CCAC65 :10228000DDACEEACFFACEF9720E030E044EB52E485 -:10229000E5966CAD7DAD8EAD9FADE5970E949962E0 -:1022A00021EE3EE245E652E40E947A634B015C0176 -:1022B0000E9477639B01AC01C701B6010E94CC6507 +:10229000E5966CAD7DAD8EAD9FADE5970E948D62EC +:1022A00021EE3EE245E652E40E946E634B015C0182 +:1022B0000E946B639B01AC01C701B6010E94C0651F :1022C000EF966CAF7DAF8EAF9FAFEF97C501B401B6 -:1022D0000E944F669B01AC01C701B6010E94CC650C +:1022D0000E9443669B01AC01C701B6010E94C06524 :1022E000E5966CAF7DAF8EAF9FAFE597AE014959D4 :1022F0005F4FBE016F587F4FCE0185589F4F0E94A0 :10230000CF27AB96ECACFDAC0EAD1FADAB97E59611 @@ -576,93 +576,93 @@ :1023F00002018091020180648093020161CD80819D :10240000833509F055C281818053843008F050C271 :10241000823089F1833009F445C08130A9F01092EF -:10242000970C1092960C8AE999E1A5E9B2E48093A1 -:102430009C0C90939D0CA0939E0CB0939F0C8AE9EA -:1024400099E9A2E6B2E444C081E090E09093970C51 -:102450008093960C86EF98E2ACE4B2E480939C0CF7 -:1024600090939D0CA0939E0CB0939F0C8DEC9CECD4 -:10247000A0E8B2E42DC082E090E09093970C8093A6 -:10248000960C89E29CEDA4E9B2E480939C0C9093B5 -:102490009D0CA0939E0CB0939F0C80E090E0A2E670 -:1024A000B2E416C083E090E09093970C8093960C72 -:1024B00080E090E0ACE2B2E480939C0C90939D0CA1 -:1024C000A0939E0CB0939F0C80E090E0ABE8B2E448 -:1024D0008093980C9093990CA0939A0CB0939B0CBA -:1024E0007BC080E090E00E943E2D90934C0C809346 -:1024F0004B0C81E090E00E943E2D90934E0C809317 -:102500004D0C82E090E00E943E2D90934A0C809307 -:10251000490CCBC16091030E7091040E8091050EA1 -:102520009091060E0E9415642B013C016091FF0DF5 -:102530007091000E8091010E9091020E0E94156420 -:102540009B01AC016091FB0D7091FC0D8091FD0D24 -:102550009091FE0DC353DF4F2883CD5CD040C25312 +:10242000850C1092840C8AE999E1A5E9B2E48093C5 +:102430008A0C90938B0CA0938C0CB0938D0C8AE932 +:1024400099E9A2E6B2E444C081E090E09093850C63 +:102450008093840C86EF98E2ACE4B2E480938A0C1B +:1024600090938B0CA0938C0CB0938D0C8DEC9CEC0A +:10247000A0E8B2E42DC082E090E09093850C8093B8 +:10248000840C89E29CEDA4E9B2E480938A0C9093D9 +:102490008B0CA0938C0CB0938D0C80E090E0A2E6A6 +:1024A000B2E416C083E090E09093850C8093840C96 +:1024B00080E090E0ACE2B2E480938A0C90938B0CC5 +:1024C000A0938C0CB0938D0C80E090E0ABE8B2E46C +:1024D0008093860C9093870CA093880CB093890C02 +:1024E0007BC080E090E00E943E2D90933A0C809358 +:1024F000390C81E090E00E943E2D90933C0C80933B +:102500003B0C82E090E00E943E2D9093380C80932B +:10251000370CCBC16091F10D7091F20D8091F30DEC +:102520009091F40D0E9409642B013C016091ED0D26 +:102530007091EE0D8091EF0D9091F00D0E94096465 +:102540009B01AC016091E90D7091EA0D8091EB0D5A +:102550009091EC0DC353DF4F2883CD5CD040C25324 :10256000DF4F3883CE5CD040C053DF4F4883C05D1F -:10257000D040CF52DF4F5883C15DD0400E941564D8 +:10257000D040CF52DF4F5883C15DD0400E940964E4 :10258000DE0111964D01FE0175965F0198966D0171 :1025900083017201C353DF4F2881CD5CD040C25309 :1025A000DF4F3881CE5CD040C053DF4F4881C05DE3 :1025B000D040CF52DF4F5881C15DD0400E943D2CAA -:1025C00089819A81AB81BC8180939C0C90939D0CF6 -:1025D000A0939E0CB0939F0C0E94082571CC1D8A7D +:1025C00089819A81AB81BC8180938A0C90938B0C1A +:1025D000A0938C0CB0938D0C0E94082571CC1D8AA1 :1025E0001E8A1F8A188E8E010F5F1F4F84E1D8014B :1025F0001D928A95E9F71F930F9385EC92E09F93C4 -:102600008F93FF93EF930E9461670F900F900F904D +:102600008F93FF93EF930E9455670F900F900F9059 :102610000F900F900F901816190674F01F9281E01A :102620008F938DE092E09F938F930E9446400F908E :102630000F900F900F903CC1AE014B5E5F4F60E07A :1026400070E0C8010E94044D882309F431C18D89CE :102650009E89AF89B88D3CCF8081803509F028C133 :1026600081818053833008F023C18130D9F08230DA -:1026700091F180E090E00E943E2D9093E1038093E1 -:10268000E00381E090E00E943E2D9093E30380936D -:10269000E20382E090E00E943E2D9093E503809358 -:1026A000E4030ECC80E090E00E943E2D9093DB038B -:1026B0008093DA0381E090E00E943E2D9093DD0349 -:1026C0008093DC0382E090E00E943E2D9093DF0334 -:1026D0008093DE03F5CB80E090E00E943E2D909346 -:1026E000D5038093D40381E090E00E943E2D909327 -:1026F000D7038093D60382E090E00E943E2D909312 -:10270000D9038093D803DCCB6091E0037091E1039F -:10271000E090E203F090E3039701262B372B8091A2 -:10272000E4039091E503822B932B892B19F480ED20 -:1027300092E031C0C090DA03D090DB038090DC03DC -:102740009090DD03E091DE03F091DF03C255DF4F8F +:1026700091F180E090E00E943E2D9093CF038093F3 +:10268000CE0381E090E00E943E2D9093D103809391 +:10269000D00382E090E00E943E2D9093D30380937C +:1026A000D2030ECC80E090E00E943E2D9093C903AF +:1026B0008093C80381E090E00E943E2D9093CB036D +:1026C0008093CA0382E090E00E943E2D9093CD0358 +:1026D0008093CC03F5CB80E090E00E943E2D909358 +:1026E000C3038093C20381E090E00E943E2D90934B +:1026F000C5038093C40382E090E00E943E2D909336 +:10270000C7038093C603DCCB6091CE037091CF03E7 +:10271000E090D003F090D1039701262B372B8091C6 +:10272000D2039091D303822B932B892B19F480ED44 +:1027300092E031C0C090C803D090C9038090CA0312 +:102740009090CB03E091CC03F091CD03C255DF4FC5 :10275000F983E883CE5AD040C4018C299D298E2B61 -:102760009F2B892B19F486ED92E015C0A090D4031D -:10277000B090D5030091D6031091D70398012A2970 -:102780003B298091D8039091D903822B932B892BDD +:102760009F2B892B19F486ED92E015C0A090C2032F +:10277000B090C3030091C4031091C50398012A29A6 +:102780003B298091C6039091C703822B932B892B01 :1027900049F48CED92E09F938F930E9446400F90F6 -:1027A0000F9086C080E090E00E9413642EE23DEA24 -:1027B0004AE352E40E949A622B013C01B50180E099 -:1027C00090E00E9413642CE337EC4EEC52E40E943C -:1027D0009A629B01AC01C301B2010E949A622B0173 -:1027E0003C01B60180E090E00E9413649B01AC01C3 -:1027F000C301B2010E949A6220E030E040E450E45C -:102800000E947A6320E030E040E05FE30E949A6239 -:102810000E94E76370934C0C60934B0CB70180E00F -:1028200090E00E94136429EE3AE64BE753E40E94DD -:1028300099626B017C01B80180E090E00E94136412 -:1028400027E33EE145E953E40E949A629B01AC0113 -:10285000C701B6010E949A626B017C01B40180E05D -:1028600090E00E9413649B01AC01C701B6010E9475 -:102870009A6220E030E040E450E40E947A6320E075 -:1028800030E040E05FE30E949A620E94E763709349 -:102890004E0C60934D0CC255DF4F28813981CE5AC2 -:1028A000D04030934A0C2093490C0E94372E08CB1D +:1027A0000F9086C080E090E00E9407642EE23DEA30 +:1027B0004AE352E40E948E622B013C01B50180E0A5 +:1027C00090E00E9407642CE337EC4EEC52E40E9448 +:1027D0008E629B01AC01C301B2010E948E622B018B +:1027E0003C01B60180E090E00E9407649B01AC01CF +:1027F000C301B2010E948E6220E030E040E450E468 +:102800000E946E6320E030E040E05FE30E948E6251 +:102810000E94DB6370933A0C6093390CB70180E03F +:1028200090E00E94076429EE3AE64BE753E40E94E9 +:102830008D626B017C01B80180E090E00E9407642A +:1028400027E33EE145E953E40E948E629B01AC011F +:10285000C701B6010E948E626B017C01B40180E069 +:1028600090E00E9407649B01AC01C701B6010E9481 +:102870008E6220E030E040E450E40E946E6320E08D +:1028800030E040E05FE30E948E620E94DB63709361 +:102890003C0C60933B0CC255DF4F28813981CE5AE6 +:1028A000D0403093380C2093370C0E94372E08CB41 :1028B00082E390E09C01215031092230310510F073 :1028C0000C94672436E02316310428F483E028169C :1028D000310490F026C098E02916310410F40C94CD :1028E0001324AAE02A16310408F440C0BEE12B16D6 :1028F000310411F00C941324E2E02E16310461F03F :10290000FEE12F16310441F0232809F046C081E092 -:102910008093C50D2BE032C082E08093C50D3BE073 +:102910008093B30D2BE032C082E08093B30D3BE097 :1029200036C084E02816310471F095E02916310490 -:10293000A1F081E08093C70DACE0C255DF4FA883C2 -:10294000CE5AD04088C482E08093C70DBCE0C25507 -:10295000DF4FB883CE5AD0407EC41092C70DECE052 +:10293000A1F081E08093B50DACE0C255DF4FA883D4 +:10294000CE5AD04088C482E08093B50DBCE0C25519 +:10295000DF4FB883CE5AD0407EC41092B50DECE064 :10296000C255DF4FE883CE5AD04075C4F9E02F1628 -:10297000310451F082E08093C60D2DE0C255DF4F47 -:102980002883CE5AD04067C41092C60D3DE0C25590 +:10297000310451F082E08093B40D2DE0C255DF4F59 +:102980002883CE5AD04067C41092B40D3DE0C255A2 :10299000DF4F3883CE5AD0405EC48BE0C255DF4F44 :1029A0008883CE5AD04057C4CA54DF4FE881F9819A :1029B000C65BD040EF2B11F00C943824CB55DF4F81 @@ -686,27 +686,27 @@ :102AD000D040282F11922A95E9F71E0135E1230EE7 :102AE000311CD101E82F1D92EA95E9F79E012F5F75 :102AF0003F4FC855DF4F39832883C85AD040D9018A -:102B00001D928A95E9F76091030E7091040E8091F1 -:102B1000050E9091060E0E9415642B013C016091F8 -:102B2000FF0D7091000E8091010E9091020E0E9497 -:102B300015649B01AC016091FB0D7091FC0D8091BF -:102B4000FD0D9091FE0DC353DF4F2883CD5CD04027 +:102B00001D928A95E9F76091F10D7091F20D809117 +:102B1000F30D9091F40D0E9409642B013C0160912A +:102B2000ED0D7091EE0D8091EF0D9091F00D0E94E2 +:102B300009649B01AC016091E90D7091EA0D8091EF +:102B4000EB0D9091EC0DC353DF4F2883CD5CD0404B :102B5000C253DF4F3883CE5CD040C053DF4F488331 :102B6000C05DD040CF52DF4F5883C15DD0400E943E -:102B70001564FE01FD964F01DE01AF5ABF4F5D01A6 +:102B70000964FE01FD964F01DE01AF5ABF4F5D01B2 :102B8000B0966F0183017201C353DF4F2881CD5C82 :102B9000D040C253DF4F3881CE5CD040C053DF4FAE :102BA0004881C05DD040CF52DF4F5881C15DD040D9 :102BB0000E94C02B20E030E044EB52E421966CAD43 -:102BC0007DAD8EAD9FAD21970E949A6221966CAF2C +:102BC0007DAD8EAD9FAD21970E948E6221966CAF38 :102BD0007DAF8EAF9FAF2197A1966CAD7DAD8EADD1 :102BE0009FADA1978E01075D1F4F24E045E00E9435 -:102BF000076065966CAD7DAD8EAD9FAD659781012B -:102C000024E045E00E94076021966CAD7DAD8EAD5D -:102C10009FAD21970451110924E045E00E9407600F +:102BF000FB5F65966CAD7DAD8EAD9FAD6597810138 +:102C000024E045E00E94FB5F21966CAD7DAD8EAD6A +:102C10009FAD21970451110924E045E00E94FB5F1C :102C20003F922F92C955DF4FF881C75AD040FF938A :102C3000CA55DF4F2881C65AD0402F931F930F9358 -:102C400082EE92E0D7C280EF92E005C08CE59CE076 +:102C400082EE92E0D7C280EF92E005C08AE49CE079 :102C500002C08EEF92E09F938F9389EF92E0E0C2E3 :102C600085E093E0F8CF8CE093E0F5CFC154DF4FDF :102C7000E881F981CF5BD040E80FF11D80818E346F @@ -718,24 +718,24 @@ :102CD00011922A95E9F71E0135E1230E311CD1012D :102CE000E82F1D92EA95E9F79E012F5F3F4FC855E7 :102CF000DF4F39832883C85AD040D9011D928A9565 -:102D0000E9F76091030E7091040E8091050E909189 -:102D1000060E0E9415642B013C016091FF0D70911D -:102D2000000E8091010E9091020E0E9415649B018D -:102D3000AC016091FB0D7091FC0D8091FD0D9091A7 -:102D4000FE0DC353DF4F2883CD5CD040C253DF4F0D +:102D0000E9F76091F10D7091F20D8091F30D9091C2 +:102D1000F40D0E9409642B013C016091ED0D70914E +:102D2000EE0D8091EF0D9091F00D0E9409649B01D2 +:102D3000AC016091E90D7091EA0D8091EB0D9091DD +:102D4000EC0DC353DF4F2883CD5CD040C253DF4F1F :102D50003883CE5CD040C053DF4F4883C05DD04045 -:102D6000CF52DF4F5883C15DD0400E941564FE01F1 +:102D6000CF52DF4F5883C15DD0400E940964FE01FD :102D7000FD964F01DE01AF5ABF4F5D01B0966F0166 :102D800083017201C353DF4F2881CD5CD040C25311 :102D9000DF4F3881CE5CD040C053DF4F4881C05DEB :102DA000D040CF52DF4F5881C15DD0400E94C02B30 :102DB00020E030E044EB52E421966CAD7DAD8EAD69 -:102DC0009FAD21970E949A6221966CAF7DAF8EAF26 +:102DC0009FAD21970E948E6221966CAF7DAF8EAF32 :102DD0009FAF2197A1966CAD7DAD8EAD9FADA197B4 -:102DE0008E01075D1F4F24E045E00E940760659655 +:102DE0008E01075D1F4F24E045E00E94FB5F659662 :102DF0006CAD7DAD8EAD9FAD6597810124E045E062 -:102E00000E94076021966CAD7DAD8EAD9FAD219780 -:102E10000451110924E045E00E940760CA54DF4FC5 +:102E00000E94FB5F21966CAD7DAD8EAD9FAD21978D +:102E10000451110924E045E00E94FB5FCA54DF4FD2 :102E2000F881C65BD040F13079F0F23081F0C955BD :102E3000DF4F2881C75AD0402F93CA55DF4F3881C2 :102E4000C65AD0403F9309C03F922F9206C081E0FE @@ -750,15 +750,15 @@ :102ED000872D2B013C0181E090E00E94872DCA5490 :102EE000DF4F688379838A839B83C65BD04082E00F :102EF00090E00E94872D20E030E044EB52E40E94F5 -:102F00009962FE01FD964F019E012F5A3F4F5901D4 +:102F00008D62FE01FD964F019E012F5A3F4F5901E0 :102F1000DE01A35ABF4F6D017B018C01CA54DF4F04 :102F2000288139814A815B81C65BD040C301B201EF :102F30000E94DB2AA401B501C6010E947A28A1964D :102F40006CAD7DAD8EAD9FADA1978E01075D1F4F1E -:102F500024E045E00E94076065966CAD7DAD8EADC6 -:102F60009FAD6597810124E045E00E9407602196AE +:102F500024E045E00E94FB5F65966CAD7DAD8EADD3 +:102F60009FAD6597810124E045E00E94FB5F2196BB :102F70006CAD7DAD8EAD9FAD21970451110924E05C -:102F800045E00E9407601F930F933F922F92C9550F +:102F800045E00E94FB5F1F930F933F922F92C9551C :102F9000DF4FF881C75AD040FF93CA55DF4F2881D1 :102FA000C65AD0402F9389E193E024C1A1961CAE6C :102FB0001DAE1EAE1FAEA19765961CAE1DAE1EAE19 @@ -771,20 +771,20 @@ :10302000DF4F688379838A839B83C65BD04081E0CE :1030300090E00E94872DCF53DF4F688379838A8386 :103040009B83C15CD04082E090E00E94872D20E00D -:1030500030E044EB52E40E9499622B013C01FE01F6 +:1030500030E044EB52E40E948D622B013C01FE0102 :10306000FD964F019E012F5A3F4F5901CE01835AC1 :103070009F4F6C0183017201CF53DF4F288139814B :103080004A815B81C15CD040CA54DF4F688179813D :103090008A819B81C65BD0400E94DB2AA401B501D6 :1030A000C6010E947A28A1966CAD7DAD8EAD9FAD14 :1030B000A1976596CCACDDACEEACFFAC65979B01FF -:1030C000AC010E94CC654B015C01A7019601C701D0 -:1030D000B6010E94CC659B01AC01C501B4010E9400 -:1030E0009A620E9459668E01075D1F4F24E045E0F9 -:1030F0000E94076020E030E044EB52E4C301B201DB -:103100000E949A62810124E045E00E9407602196B6 +:1030C000AC010E94C0654B015C01A7019601C701DC +:1030D000B6010E94C0659B01AC01C501B4010E940C +:1030E0008E620E944D668E01075D1F4F24E045E011 +:1030F0000E94FB5F20E030E044EB52E4C301B201E8 +:103100000E948E62810124E045E00E94FB5F2196CF :103110006CAD7DAD8EAD9FAD21970451110924E0BA -:1031200045E00E9407601F930F933F922F92C9556D +:1031200045E00E94FB5F1F930F933F922F92C9557A :10313000DF4FB881C75AD040BF93CA55DF4FE881EF :10314000C65AD040EF9387E293E054C0A49B1FC0BF :103150008FE390E00E94D0318C011F938F9385E321 @@ -794,13 +794,13 @@ :103190001BC081E019C082B386958695869591E023 :1031A0008927817011C08BE390E00E94D03121E02B :1031B0008536910508F420E01F922F932FC080914F -:1031C000020185FB882780F91F9227C080914A0C55 -:1031D0008F938091490C8F9380914E0C8F938091A7 -:1031E0004D0C8F9380914C0C8F9380914B0C8F934F -:1031F0008DE393E09F938F9384E69CE09F938F935E -:103200000E9432670FB6F894DEBF0FBECDBF16C066 -:103210008091970C8F938091960C8F9386E893E022 -:103220009F938F9384E69CE09F938F930E943267D5 +:1031C000020185FB882780F91F9227C08091380C67 +:1031D0008F938091370C8F9380913C0C8F938091CB +:1031E0003B0C8F9380913A0C8F938091390C8F9385 +:1031F0008DE393E09F938F9382E59CE09F938F9361 +:103200000E9426670FB6F894DEBF0FBECDBF16C072 +:103210008091850C8F938091840C8F9386E893E046 +:103220009F938F9382E59CE09F938F930E942667E4 :103230000F900F900F900F900F900F9080E090E004 :1032400002C082E390E09C01215031092230310517 :1032500010F00C94672481E090E0C255DF4F0880A5 @@ -810,33 +810,33 @@ :10329000D040A82BB92BC354DF4FB983A883CD5B93 :1032A000D0400C945605812F110F990BAA0BBB0B24 :1032B000FC01E654F109E531F10510F00C941324FA -:1032C0008827EE58FF4F8F4F0C94FF66C092C80DB1 -:1032D000D092C90DE092CA0DF092CB0DC255DF4FCE -:1032E0001882CE5AD040D2C0C092CC0DD092CD0D13 -:1032F000E092CE0DF092CF0DCB53DF4FB881C55C7D +:1032C0008827EE58FF4F8F4F0C94F366C092B60DCF +:1032D000D092B70DE092B80DF092B90DC255DF4F04 +:1032E0001882CE5AD040D2C0C092BA0DD092BB0D37 +:1032F000E092BC0DF092BD0DCB53DF4FB881C55CA1 :10330000D040B160CB53DF4FB883C55CD040E1E023 -:103310004FC0C092D00DD092D10DE092D20DF0925C -:10332000D30DCB53DF4FF881C55CD040F260CB5357 -:10333000DF4FF883C55CD04022E053C0C092D40D6B -:10334000D092D50DE092D60DF092D70DCB53DF4F32 +:103310004FC0C092BE0DD092BF0DE092C00DF09292 +:10332000C10DCB53DF4FF881C55CD040F260CB5369 +:10333000DF4FF883C55CD04022E053C0C092C20D7D +:10334000D092C30DE092C40DF092C50DCB53DF4F68 :103350003881C55CD0403460CB53DF4F3883C55CC7 :10336000D04083E058C0CF53DF4F9881C15CD0403C -:103370009093D80DA4E069C0C701B6010E94E26332 -:103380006093D90D7093DA0D8093DB0D9093DC0D73 +:103370009093C60DA4E069C0C701B6010E94D66350 +:103380006093C70D7093C80D8093C90D9093CA0DBB :10339000B5E0C255DF4FB883CE5AD04077C0C09257 -:1033A000DD0DD092DE0DE092DF0DF092E00DE6E053 -:1033B000C255DF4FE883CE5AD04068C0C092E10DBD -:1033C000D092E20DE092E30DF092E40DF7E059C0E7 -:1033D000C092E50DD092E60DE092E70DF092E80D77 +:1033A000CB0DD092CC0DE092CD0DF092CE0DE6E09B +:1033B000C255DF4FE883CE5AD04068C0C092CF0DCF +:1033C000D092D00DE092D10DF092D20DF7E059C01D +:1033D000C092D30DD092D40DE092D50DF092D60DBF :1033E00028E0C255DF4F2883CE5AD0404FC0C0924C -:1033F000EA0DD092EB0DE092EC0DF092ED0DCE5473 +:1033F000D80DD092D90DE092DA0DF092DB0DCE54BB :10340000DF4F3881C25BD0403160CE54DF4F38830C :10341000C25BD0408AE0C255DF4F8883CE5AD0408D -:1034200035C0C092EE0DD092EF0DE092F00DF0920B -:10343000F10DCE54DF4F9881C25BD0409260CE54E4 +:1034200035C0C092DC0DD092DD0DE092DE0DF09241 +:10343000DF0DCE54DF4F9881C25BD0409260CE54F6 :10344000DF4F9883C25BD040ABE0C255DF4FA8830B -:10345000CE5AD0401BC0C092F20DD092F30DE09234 -:10346000F40DF092F50DCE54DF4FB881C25BD04021 +:10345000CE5AD0401BC0C092E00DD092E10DE09258 +:10346000E20DF092E30DCE54DF4FB881C25BD04045 :10347000B460CE54DF4FB883C25BD040ECE098CF4D :10348000F9E0C255DF4FF883CE5AD04001E010E09A :10349000C255DF4F0880CE5AD04002C0000F111F26 @@ -844,107 +844,107 @@ :1034B00080239123892B11F00C940B2481E693E057 :1034C000C255DF4F0880CE5AD04002C095958795EF :1034D0000A94E2F780FF0BC020E030E0A901C701A9 -:1034E000B6010E94736387FF02C00C940D24C5547B +:1034E000B6010E94676387FF02C00C940D24C55487 :1034F000DF4F28813981CB5BD040202B312BC55445 :10350000DF4F39832883CB5BD0400C945605CE54D3 :10351000DF4F3881C25BD040332369F0C654DF4FA0 :103520008881CA5BD040811106C092E0C654DF4F4B :103530009883CA5BD040C554DF4FA881CB5BD04095 -:10354000A5FF0FC08091D90D9091DA0DA091DB0DF0 -:10355000B091DC0D80389649A849B10514F00C945F -:103560000F248091BF0D813091F4C654DF4FF88154 +:10354000A5FF0FC08091C70D9091C80DA091C90D26 +:10355000B091CA0D80389649A849B10514F00C9471 +:103560000F248091AD0D813091F4C654DF4FF88166 :10357000CA5BD040F23009F040C0C554DF4F28810B :10358000CB5BD04020FD02C00C94192436C0809142 -:103590002F0D811132C0C554DF4F3881CB5BD04035 -:1035A00030FF1BC08091C00D813039F523E333E338 -:1035B0004BEC51E46091C80D7091C90D8091CA0D1A -:1035C0009091CB0D0E94CC656093C80D7093C90D8E -:1035D0008093CA0D9093CB0D10C080913C0D9091BB -:1035E0003D0DA0913E0DB0913F0D8093C80D90937D -:1035F000C90DA093CA0DB093CB0DC554DF4F888180 -:103600009981CB5BD04090FD10C08091380D909196 -:10361000390DA0913A0DB0913B0D8093E50D90933B -:10362000E60DA093E70DB093E80D8091BD0D8130BC +:103590001D0D811132C0C554DF4F3881CB5BD04047 +:1035A00030FF1BC08091AE0D813039F523E333E34A +:1035B0004BEC51E46091B60D7091B70D8091B80D50 +:1035C0009091B90D0E94C0656093B60D7093B70DD0 +:1035D0008093B80D9093B90D10C080912A0D9091F1 +:1035E0002B0DA0912C0DB0912D0D8093B60D9093C5 +:1035F000B70DA093B80DB093B90DC554DF4F8881B6 +:103600009981CB5BD04090FD10C08091260D9091A8 +:10361000270DA091280DB091290D8093D30D909383 +:10362000D40DA093D50DB093D60D8091AB0D813004 :10363000B9F4C554DF4F9881CB5BD04096FD03C0F1 :103640008CE10C946724C554DF4FA881B981CB5B12 :10365000D040AF7BC554DF4FB983A883CB5BD0404C -:103660008091C20D882331F1813091F4B1E0CF53C4 +:103660008091B00D882331F1813091F4B1E0CF53D6 :10367000DF4FB883C15CD040C154DF4F1882CF5BAD :10368000D040E2E0CA54DF4FE883C65BD04023C09D :10369000CF53DF4F1882C15CD040F2E0C154DF4FFE :1036A000F883CF5BD04021E0CA54DF4F2883C65B4C :1036B000D04011C032E0CF53DF4F3883C15CD040DF :1036C00081E0C154DF4F8883CF5BD040CA54DF4FC5 -:1036D0001882C65BD0408091C00D813041F0C65445 -:1036E000DF4F9881CA5BD0409330F1F530C07AEE5D +:1036D0001882C65BD0408091AE0D813041F0C65457 +:1036E000DF4F9881CA5BD0409330F1F530C078ED60 :1036F000E72E7DE0F72E00E010E0CE54DF4FA881EA :10370000C25BD040CA2ED12CC601002E02C09595B6 :1037100087950A94E2F780FF11C023E333E34BEC73 -:1037200051E4F70160817181828193810E94CC65AF +:1037200051E4F70160817181828193810E94C065BB :10373000D7016D937D938D939C9313970F5F1F4FCC :10374000B4E0EB0EF11C03301105F1F6C8CF809107 -:10375000C30D813049F4CE54DF4FE881C25BD040C5 -:10376000E43011F00C9411248CE0E1E5FDE0DE0181 +:10375000B10D813049F4CE54DF4FE881C25BD040D7 +:10376000E43011F00C9411248CE0EFE3FDE0DE0175 :10377000559601900D928A95E1F7C354DF4F288149 -:103780003981CD5BD04031FD0AC09090BD0D32E053 +:103780003981CD5BD04031FD0AC09090AB0D32E065 :103790009316D1F088E0981609F4DDC042C18091FB -:1037A000C40D873018F08DE10C9467249091340D8E +:1037A000B20D873018F08DE10C9467249091220DB2 :1037B000981759F3BE016B5E7F4F0E9431448823F6 :1037C00011F40C942324E1CFCE54DF4F9881C25BD7 :1037D000D040911103C08AE10C946724C554DF4F97 :1037E00088819981CB5BD04080759927892B09F41A -:1037F00027CF6091DD0D7091DE0D8091DF0D9091EE -:10380000E00D0E949A660E94E763673060F680913F -:10381000D80D843161F0823011F00C941324C5541A +:1037F00027CF6091CB0D7091CC0D8091CD0D909124 +:10380000CE0D0E948E660E94DB63673060F6809169 +:10381000C60D843161F0823011F00C941324C5542C :10382000DF4FA881CB5BD040A7FF01C0FCC7C554C8 :10383000DF4FE881F981CB5BD040EF7AC554DF4F91 :10384000F983E883CB5BD040662339F06150C255E1 -:10385000DF4F6883CE5AD04007C0F091C40DC255E7 +:10385000DF4F6883CE5AD04007C0F091B20DC255F9 :10386000DF4FF883CE5AD040BE016F5F7F4FC25505 :10387000DF4F8881CE5AD0400E943144882309F41A -:10388000E2C73090D80D4090690D50906A0D60905D -:103890006B0D70906C0D8E010F5F1F4FC12CD12CE2 +:10388000E2C73090C60D4090570D5090580D609093 +:10389000590D70905A0D8E010F5F1F4FC12CD12C06 :1038A000E12CF12CCE54DF4F2881C25BD040822E18 :1038B000912CC4010E2C02C0959587950A94E2F7CD -:1038C00080FF3BC0C6018354924F5C0194E13912E2 -:1038D0002AC0F601E25DF24F27A530A941A952A9FD -:1038E0006789708D818D928D0E949962D5019D9618 -:1038F0002D913D914D915C91D0970E949962F80174 +:1038C00080FF3BC0C6018555924F5C0194E13912DF +:1038D0002AC0F601E45EF24F27A530A941A952A9FA +:1038E0006789708D818D928D0E948D62D5019D9624 +:1038F0002D913D914D915C91D0970E948D62F80180 :103900006083718382839383F2E0EF16F104A9F45C -:10391000A30192010E949962D8016D937D938D93CA +:10391000A30192010E948D62D8016D937D938D93D6 :103920009C9313970AC0F50185A596A5A7A5B0A9F4 :10393000F80180839183A283B383FFEFEF1AFF0A1C :1039400024E0C20ED11C0C5F1F4F33E0E316F104DC :1039500009F0AFCF34C1CE54DF4F8881C25BD04075 -:10396000882309F438CF4090690D50906A0D60901B -:103970006B0D70906C0D0AEE1DE0C12CD12CE12C6A -:10398000F12CA82EB12CF601E25DF24FC5010E2CF0 +:10396000882309F438CF4090570D5090580D60903F +:10397000590D70905A0D08ED1DE0C12CD12CE12C91 +:10398000F12CA82EB12CF601E45EF24FC5010E2CED :1039900002C0959587950A94E2F780FF2BC0A5E1B8 :1039A000B0E0AC0FBD1FAC0DBD1D2D913D914D91F3 -:1039B0005C916789708D818D928D0E949962D8018A -:1039C0002D913D914D915C910E949962F801608327 +:1039B0005C916789708D818D928D0E948D62D80196 +:1039C0002D913D914D915C910E948D62F801608333 :1039D000718382839383F2E0EF16F104A1F4A301D3 -:1039E00092010E949962D8016D937D938D939C936F +:1039E00092010E948D62D8016D937D938D939C937B :1039F000139709C087A590A9A1A9B2A9F80180834E :103A00009183A283B383FFEFEF1AFF0A24E0C20E73 :103A1000D11C0C5F1F4F33E0E316F10409F0B3CF64 :103A2000C9C0C654DF4F8881CA5BD040833061F47F :103A300095E0991609F49DC0A7E09A1609F4B5C05F :103A4000B3E09B12B7C084C0CE54DF4FE881C25BA5 -:103A5000D040EE2309F4A3C08090C10D4090690DC1 -:103A600050906A0D60906B0D70906C0D65E4C62EE1 -:103A70006DE0D62E0AEE1DE05E01F5E1AF0EB11C41 +:103A5000D040EE2309F4A3C08090AF0D4090570DE5 +:103A60005090580D6090590D70905A0D63E3C62E1A +:103A70006DE0D62E08ED1DE05E01F5E1AF0EB11C44 :103A8000E12CF12C2E2E312CC1010E2C02C095956B :103A900087950A94E2F780FD0BC0F6018081918141 :103AA000A281B381F80180839183A283B3833FC055 :103AB000F7E09F16E1F1811029C0D60158962D91AB :103AC0003D914D915C915B97F5016081718182819F -:103AD00093810E949A62D8012D913D914D915C9104 -:103AE0000E949A62F8016083718382839383F2E07B -:103AF000EF16F104E1F4A30192010E949A62D80149 +:103AD00093810E948E62D8012D913D914D915C9110 +:103AE0000E948E62F8016083718382839383F2E087 +:103AF000EF16F104E1F4A30192010E948E62D80155 :103B00006D937D938D939C93139711C0F601208143 :103B1000318142815381D8016D917D918D919C912C -:103B20000E949A62F8016083718382839383FFEF1E +:103B20000E948E62F8016083718382839383FFEF2A :103B3000EF1AFF0A24E0C20ED11C0C5F1F4F34E0C5 :103B4000A30EB11C83E0E816F10409F09DCF70CFFD :103B5000CE54DF4F9881C25BD040911105C0C6544E @@ -952,15 +952,15 @@ :103B700010C0CE54DF4FA881C25BD040A11105C058 :103B8000C654DF4F1882CA5BD040BE016F5F7F4FC3 :103B900087E00E943144882309F455C60BC085E0B4 -:103BA000981671F397E099128EC68091BE0D8230FF +:103BA000981671F397E099128EC68091AC0D823011 :103BB00008F03BC6C255DF4F1882CE5AD040109154 -:103BC000BE0D183089F4CE54DF4FB881C25BD040AF +:103BC000AC0D183089F4CE54DF4FB881C25BD040C1 :103BD000BB2309F44DC2C654DF4FE881CA5BD04015 :103BE000E13009F024C664C3C654DF4FF881CA5BD4 :103BF000D040F23009F03CC2111109C0CE54DF4F61 :103C00002881C25BD040222309F439C251C320E08D -:103C100030E0A9016091C80D7091C90D8091CA0D65 -:103C20009091CB0D0E947363882309F402C614306F +:103C100030E0A9016091B60D7091B70D8091B80D9B +:103C20009091B90D0E946763882309F402C614308D :103C300028F4123080F4113029F03AC3183008F417 :103C4000D1C136C3CE54DF4F3881C25BD04033235D :103C500009F415C22DC3CE54DF4F8881C25BD0401A @@ -972,185 +972,185 @@ :103CB000C65BD04002C0EE0CFF1C0A94E2F7E22A79 :103CC000F32ACE54DF4FE881C25BD0408E2F90E0C4 :103CD0008E219F21892B09F4AEC5C301880F991F3E -:103CE000880F991FFC01E354F24FDC01A25DB24F33 +:103CE000880F991FFC01E555F24FDC01A45EB24F2D :103CF00057962D913D914D915C915A9765A576A56A -:103D000087A590A90E9499621B012C01C354DF4F23 +:103D000087A590A90E948D621B012C01C354DF4F2F :103D100088819981CD5BD040880F991F880F991FAA -:103D2000FC01E354F24FDC01A25DB24F57962D9196 +:103D2000FC01E555F24FDC01A45EB24F57962D9190 :103D30003D914D915C915A9765A576A587A590A96F -:103D40000E9499624B015C01C554DF4FC880D98045 +:103D40000E948D624B015C01C554DF4FC880D98051 :103D5000CB5BD040F0E8CF22DD24C554DF4F288173 :103D6000CB5BD04027FF4BC0C554DF4F8881998182 :103D7000CB5BD0408F77C554DF4F99838883CB5B73 -:103D8000D0402091EA0D3091EB0D4091EC0D509117 -:103D9000ED0D6091450D7091460D8091470D90910C -:103DA000480D0E947363811178C12091EE0D30910E -:103DB000EF0D4091F00D5091F10D6091490D709112 -:103DC0004A0D80914B0D90914C0D0E9473638111AF -:103DD00064C12091F20D3091F30D4091F40D50919A -:103DE000F50D60914D0D70914E0D80914F0D90919C -:103DF000500D0E947363811150C181E268C5CB539D +:103D8000D0402091D80D3091D90D4091DA0D50914D +:103D9000DB0D6091330D7091340D8091350D909154 +:103DA000360D0E946763811178C12091DC0D30913E +:103DB000DD0D4091DE0D5091DF0D6091370D70915A +:103DC000380D8091390D90913A0D0E9467638111F1 +:103DD00064C12091E00D3091E10D4091E20D5091D0 +:103DE000E30D60913B0D70913C0D80913D0D9091E4 +:103DF0003E0D0E946763811150C181E268C5CB53BB :103E0000DF4F3881C55CD040232F30E0CE54DF4FE8 :103E100039832883C25BD040E222F322EF2809F4E1 :103E20000CC5C554DF4F88819981CB5BD040817F21 -:103E3000C554DF4F99838883CB5BD0408091C00D00 +:103E3000C554DF4F99838883CB5BD0408091AE0D12 :103E4000813009F486C0F301EE0FFF1FEE0FFF1F54 -:103E5000EF53F24FC384D484E584F684A70196011E -:103E6000C201B1010E9499622B013C01C354DF4F92 +:103E5000E155F24FC384D484E584F684A70196012A +:103E6000C201B1010E948D622B013C01C354DF4F9E :103E7000E881F981CD5BD040EE0FFF1FEE0FFF1FF1 -:103E8000EF53F24F83859485A585B685CE54DF4FD9 +:103E8000E155F24F83859485A585B685CE54DF4FE5 :103E900088839983AA83BB83C25BD0409C01AD0118 -:103EA000C501B4010E9499624B015C01A30192011A -:103EB000C301B2010E94CC652B013C01A501940114 -:103EC000C501B4010E94CC659B01AC01C301B201E4 -:103ED0000E949A620E9459664B015C01A7019601FB -:103EE000C701B6010E94CC656B017C01CE54DF4F47 +:103EA000C501B4010E948D624B015C01A301920126 +:103EB000C301B2010E94C0652B013C01A501940120 +:103EC000C501B4010E94C0659B01AC01C301B201F0 +:103ED0000E948E620E944D664B015C01A701960113 +:103EE000C701B6010E94C0656B017C01CE54DF4F53 :103EF000288139814A815B81C25BD040CA01B90106 -:103F00000E94CC659B01AC01C701B6010E949A6278 -:103F10000E9459666B017C016093E10D7093E20D84 -:103F20008093E30D9093E40D9B01AC01C501B401B6 -:103F30000E9499624B015C01E894B7F82AE037EDE2 -:103F400043EA5BE3C501B4010E94916518166CF168 -:103F5000AFC10DEB1DE0CE54DF4F88819981C25B6C +:103F00000E94C0659B01AC01C701B6010E948E6290 +:103F10000E944D666B017C016093CF0D7093D00DB4 +:103F20008093D10D9093D20D9B01AC01C501B401DA +:103F30000E948D624B015C01E894B7F82AE037EDEE +:103F400043EA5BE3C501B4010E94856518166CF174 +:103F5000AFC10BEA1DE0CE54DF4F88819981C25B6F :103F6000D0400C2C02C0959587950A94E2F780FF0B :103F700012C023E333E34BEC51E4D8011F966D915B -:103F80007D918D919C9152970E94CC65F801678735 +:103F80007D918D919C9152970E94C065F801678741 :103F9000708B818B928BFFEFCF1ADF0A0C5F1F4F64 :103FA00023E0C216D104B9F64ECF20E030E040E065 -:103FB0005FE3C501B4010E94916518160CF41DCF92 -:103FC0002FE632E143E85AE3C701B6010E94CC650F -:103FD0009B01AC01C501B4010E94916518160CF457 +:103FB0005FE3C501B4010E94856518160CF41DCF9E +:103FC0002FE632E143E85AE3C701B6010E94C0651B +:103FD0009B01AC01C501B4010E94856518160CF463 :103FE0000CCF66C1CE54DF4F3881C25BD040332343 -:103FF00009F4F1CB2091EA0D3091EB0D4091EC0DDD -:104000005091ED0D6091450D7091460D8091470DD9 -:104010009091480D0E94736381114AC12091EE0D69 -:104020003091EF0D4091F00D5091F10D6091490DDF -:1040300070914A0D80914B0D90914C0D0E947363CD -:10404000811136C12091F20D3091F30D4091F40DA4 -:104050005091F50D60914D0D70914E0D80914F0D69 -:104060009091500D0E947363882309F4C6CE20C13D +:103FF00009F4F1CB2091D80D3091D90D4091DA0D13 +:104000005091DB0D6091330D7091340D8091350D21 +:104010009091360D0E94676381114AC12091DC0D99 +:104020003091DD0D4091DE0D5091DF0D6091370D27 +:104030007091380D8091390D90913A0D0E9467630F +:10404000811136C12091E00D3091E10D4091E20DDA +:104050005091E30D60913B0D70913C0D80913D0DB1 +:1040600090913E0D0E946763882309F4C6CE20C15B :10407000C654DF4F8881CA5BD040811119C1C55435 :10408000DF4F88819981CB5BD0408E7D9C7FC65469 -:10409000DF4F1882CA5BD04013C18091C00D8130C0 -:1040A000B1F423E333E34BEC51E46091E10D709103 -:1040B000E20D8091E30D9091E40D0E94CC65609338 -:1040C000E10D7093E20D8093E30D9093E40D8091E8 -:1040D000E10D9091E20DA091E30DB091E40DCE546D +:10409000DF4F1882CA5BD04013C18091AE0D8130D2 +:1040A000B1F423E333E34BEC51E46091CF0D709115 +:1040B000D00D8091D10D9091D20D0E94C06560937A +:1040C000CF0D7093D00D8093D10D9093D20D809130 +:1040D000CF0D9091D00DA091D10DB091D20DCE54B5 :1040E000DF4F88839983AA83BB83C25BD040A20140 -:1040F0009101C201B1010E94CC65CB53DF4F6883AF +:1040F0009101C201B1010E94C065CB53DF4F6883BB :1041000079838A839B83C55CD040A5019401C50156 -:10411000B4010E94CC65C753DF4F688379838A83DB +:10411000B4010E94C065C753DF4F688379838A83E7 :104120009B83C95CD04020E030E040E850E4CE54AE :10413000DF4F688179818A819B81C25BD0400E9478 -:10414000CC65CE54DF4F288139814A815B81C25BC7 -:10415000D0400E94CC65CB53DF4F288139814A8102 -:104160005B81C55CD0400E949962C753DF4F2881B4 -:1041700039814A815B81C95CD0400E9499626B01A0 -:104180007C0120E030E0A9010E94736387FD72C3C7 -:10419000C701B6010E9459666B017C01C753DF4F0E +:10414000C065CE54DF4F288139814A815B81C25BD3 +:10415000D0400E94C065CB53DF4F288139814A810E +:104160005B81C55CD0400E948D62C753DF4F2881C0 +:1041700039814A815B81C95CD0400E948D626B01AC +:104180007C0120E030E0A9010E94676387FD72C3D3 +:10419000C701B6010E944D666B017C01C753DF4F1A :1041A000288139814A815B81C95CD040CB53DF4F84 -:1041B000688179818A819B81C55CD0400E949A6226 -:1041C0000E9459669B01AC01C701B60190580E943C -:1041D0007A636B017C01133021F4F7FAF094F7F85D +:1041B000688179818A819B81C55CD0400E948E6232 +:1041C0000E944D669B01AC01C701B60190580E9448 +:1041D0006E636B017C01133021F4F7FAF094F7F869 :1041E000F09420E030E0A901CE54DF4F688179815E -:1041F0008A819B81C25BD0400E94736387FF15C098 +:1041F0008A819B81C25BD0400E94676387FF15C0A4 :10420000F7FAF094F7F8F094CE54DF4F8881998153 -:10421000AA81BB81C25BD040B0588093E10D9093DE -:10422000E20DA093E30DB093E40D8301000F111F85 -:10423000000F111F0F53124FA7019601C501B401C2 -:104240000E94CC659B01AC01C201B1010E94996240 -:1042500020E030E040E05FE30E94CC65D8011B968F +:10421000AA81BB81C25BD040B0588093CF0D9093F0 +:10422000D00DA093D10DB093D20D8301000F111FBB +:10423000000F111F0155124FA7019601C501B401CE +:104240000E94C0659B01AC01C201B1010E948D6258 +:1042500020E030E040E05FE30E94C065D8011B969B :104260006D937D938D939C931E97C354DF4F08816C -:104270001981CD5BD040000F111F000F111F0F538C -:10428000124FA7019601C201B1010E94CC659B01AA -:10429000AC01C501B4010E949A6220E030E040E028 -:1042A0005FE30E94CC65F8016387748785879687F2 +:104270001981CD5BD040000F111F000F111F015598 +:10428000124FA7019601C201B1010E94C0659B01B6 +:10429000AC01C501B4010E948E6220E030E040E034 +:1042A0005FE30E94C065F8016387748785879687FE :1042B000C554DF4F88819981CB5BD0408E7D907E45 -:1042C000892B09F0BCC28091D90D9091DA0DA09193 -:1042D000DB0DB091DC0D8093410D9093420DA093C6 -:1042E000430DB093440D8091BF0D80932F0D8091AD -:1042F000C80D9091C90DA091CA0DB091CB0D8093BE -:104300003C0D90933D0DA0933E0DB0933F0DC0909A -:10431000E50DD090E60DE090E70DF090E80DA701D7 -:1043200096016091380D7091390D80913A0D909100 -:104330003B0D0E947363882341F18091370D8823E0 -:10434000A1F09091F80D923081F0C153DF4F888336 -:10435000CF5CD0400E94EA5FB701A601C153DF4F96 -:104360008881CF5CD0400E94FF3E8091E50D909106 -:10437000E60DA091E70DB091E80D8093380D909374 -:10438000390DA0933A0DB0933B0D8091E90D8093C8 -:10439000400D8091C70D9091370D981709F446C0D4 -:1043A0004091380D5091390D60913A0D70913B0D4F -:1043B0009091F80D9230B1F1C053DF4F4883C05D4A +:1042C000892B09F0BCC28091C70D9091C80DA091B7 +:1042D000C90DB091CA0D80932F0D9093300DA0930E +:1042E000310DB093320D8091AD0D80931D0D8091F5 +:1042F000B60D9091B70DA091B80DB091B90D809306 +:104300002A0D90932B0DA0932C0DB0932D0DC090E2 +:10431000D30DD090D40DE090D50DF090D60DA7011F +:1043200096016091260D7091270D8091280D909136 +:10433000290D0E946763882341F18091250D882310 +:10434000A1F09091E60D923081F0C153DF4F888348 +:10435000CF5CD0400E94DE5FB701A601C153DF4FA2 +:104360008881CF5CD0400E94FF3E8091D30D909118 +:10437000D40DA091D50DB091D60D8093260D9093BC +:10438000270DA093280DB093290D8091D70D809310 +:104390002E0D8091B50D9091250D981709F446C00A +:1043A0004091260D5091270D6091280D7091290D97 +:1043B0009091E60D9230B1F1C053DF4F4883C05D5C :1043C000D040CF52DF4F5883C15DD040C353DF4F41 :1043D0006883CD5CD040C253DF4F7883CE5CD04041 -:1043E000C153DF4F8883CF5CD0400E94EA5FC05347 +:1043E000C153DF4F8883CF5CD0400E94DE5FC05353 :1043F000DF4F4881C05DD040CF52DF4F5881C15D53 :10440000D040C353DF4F6881CD5CD040C253DF4FF3 :104410007881CE5CD040C153DF4F8881CF5CD040E3 -:104420000E94FF3E8091C70D8093370D1091C60DFD -:104430008091360D811781F08091F80D823041F026 -:104440000E94EA5F123011F45C9A02C00E94AF54DD -:104450008091C60D8093360D8091BD0D813089F01D -:104460008091C20D8093320D8091C00D8093300DEC +:104420000E94FF3E8091B50D8093250D1091B40D33 +:104430008091240D811781F08091E60D823041F04A +:104440000E94DE5F123011F45C9A02C00E94A354F5 +:104450008091B40D8093240D8091AB0D813089F053 +:104460008091B00D8093200D8091AE0D80931E0D34 :10447000C654DF4F9881CA5BD040933009F074C0B6 -:1044800054C08090DD0D9090DE0DA090DF0DB090B7 -:10449000E00D8091F80D823019F320E030E040EA21 -:1044A00051E4C501B4010E94CC650E9450640E9491 -:1044B000E7636B017C010E94EA5F20E030E04AE79D -:1044C00054E4C501B4010E94CC654B015C0182E358 +:1044800054C08090CB0D9090CC0DA090CD0DB090ED +:10449000CE0D8091E60D823019F320E030E040EA45 +:1044A00051E4C501B4010E94C0650E9444640E94A9 +:1044B000DB636B017C010E94DE5F20E030E04AE7B5 +:1044C00054E4C501B4010E94C0654B015C0182E364 :1044D0008C9DB0018D9D700D112480E090E00E94B4 -:1044E00013649B01AC01C501B4010E9499620E9452 -:1044F00050640E94E763CB010E94F94C86010115CC +:1044E00007649B01AC01C501B4010E948D620E946A +:1044F00044640E94DB63CB010E94F94C86010115E4 :10450000110509F4ADCF0E94AF400150110980910F -:10451000F70D8111A5CFAFEFB0E7E2E0A150B040B9 -:10452000E040E1F700C00000EACF8091C30D809326 -:10453000330D813089F48091F20D9091F30DA091AB -:10454000F40DB091F50D8093690D90936A0DA093D1 -:104550006B0DB0936C0D08C01092690D10926A0D2E -:1045600010926B0D10926C0D8091C40D9091340DD2 -:10457000981759F08093340D8CE0FE017596A1E5F3 -:10458000BDE001900D928A95E1F78091C10D809375 -:10459000310DE091BD0D8E2F90E0FC013297E83097 +:10451000E50D8111A5CFAFEFB0E7E2E0A150B040CB +:10452000E040E1F700C00000EACF8091B10D809338 +:10453000210D813089F48091E00D9091E10DA091E1 +:10454000E20DB091E30D8093570D9093580DA09319 +:10455000590DB0935A0D08C01092570D1092580D76 +:104560001092590D10925A0D8091B20D9091220D1A +:10457000981759F08093220D8CE0FE017596AFE3F9 +:10458000BDE001900D928A95E1F78091AF0D809387 +:104590001F0DE091AB0D8E2F90E0FC013297E830BB :1045A000F10508F069C08827E957FF4F8F4F0C9439 -:1045B000FF66BE016F5F7F4FC255DF4F8881CE5AC5 -:1045C000D0400E9428448091340DC255DF4FF881BD -:1045D000CE5AD0408F1350C08CE0FE013196A1E539 +:1045B000F366BE016F5F7F4FC255DF4F8881CE5AD1 +:1045C000D0400E9428448091220DC255DF4FF881CF +:1045D000CE5AD0408F1350C08CE0FE013196AFE32D :1045E000BDE03EC0C654DF4F2881CA5BD0402223C5 -:1045F00071F020913C0D30913D0D40913E0D509158 -:104600003F0D00E06AEE7DE081E00E94F24D2091D6 -:104610003C0D30913D0D40913E0D50913F0D00E01D +:1045F00071F020912A0D30912B0D40912C0D50918E +:104600002D0D00E068ED7DE081E00E94F24D2091EB +:104610002A0D30912B0D40912C0D50912D0D00E065 :10462000BE016F5F7F4F81E00E94F24D182F8CE03A -:10463000FE013196A5E4BDE001900D928A95E1F767 -:104640001CC065E47DE086E003C065E47DE087E0B2 -:104650000E94284411C08CE0EAEEFDE0ADE5BDE02B -:1046600001900D928A95E1F707C08CE0EDE5FDE041 -:10467000DF011D928A95E9F710E08091BE0D8093CD -:104680002E0D883009F470C0C654DF4FB881CA5B64 +:10463000FE013196A3E3BDE001900D928A95E1F76A +:104640001CC063E37DE086E003C063E37DE087E0B8 +:104650000E94284411C08CE0E8EDFDE0ABE4BDE031 +:1046600001900D928A95E1F707C08CE0EBE4FDE044 +:10467000DF011D928A95E9F710E08091AC0D8093DF +:104680001C0D883009F470C0C654DF4FB881CA5B76 :10469000D040B23009F068C090E08830910508F051 -:1046A0005AC0FC0140903C0D50903D0D60903E0D75 -:1046B00070903F0D8827E157FF4F8F4F0C94FF6696 -:1046C00000E0A30192016AEE7DE080E007C0009166 -:1046D0002F0DA30192016AEE7DE081E00E94F24D70 -:1046E000182F39C06091E10D7091E20D8091E30DBA -:1046F0009091E40D8824839409C06091E10D70913C -:10470000E20D8091E30D9091E40D812CCF53DF4FAA +:1046A0005AC0FC0140902A0D50902B0D60902C0DAB +:1046B00070902D0D8827E157FF4F8F4F0C94F366B4 +:1046C00000E0A301920168ED7DE080E007C0009169 +:1046D0001D0DA301920168ED7DE081E00E94F24D85 +:1046E000182F39C06091CF0D7091D00D8091D10DF0 +:1046F0009091D20D8824839409C06091CF0D709160 +:10470000D00D8091D10D9091D20D812CCF53DF4FE0 :10471000A880C15CD040C154DF4FC880CF5BD0407F -:10472000CA54DF4FE880C65BD04000912F0DA30133 -:1047300092010E94555D0FC000E001C001E020E041 -:1047400004C000E001C001E021E040912F0DC30151 -:10475000B2010E94AA5C8CE0EAEEFDE0A5E4BDE0B7 -:1047600001900D928A95E1F78091C50D8093350DEA -:10477000882309F466C00E94EA5F9091350D80910C -:10478000F80D913069F48230E9F19FB7F894809187 -:104790006D0D886080936D0D9FBF0E94AF4032C049 -:1047A00091E090932E0D1092320D1092310D1092D7 -:1047B0002F0D1092340D1092370D1092360D82305D +:10472000CA54DF4FE880C65BD04000911D0DA30145 +:1047300092010E94495D0FC000E001C001E020E04D +:1047400004C000E001C001E021E040911D0DC30163 +:10475000B2010E949E5C8CE0E8EDFDE0A3E3BDE0C9 +:1047600001900D928A95E1F78091B30D8093230D0E +:10477000882309F466C00E94DE5F9091230D80912A +:10478000E60D913069F48230E9F19FB7F894809199 +:104790005B0D886080935B0D9FBF0E94AF4032C06D +:1047A00091E090931C0D1092200D10921F0D10920D +:1047B0001D0D1092220D1092250D1092240D8230A5 :1047C000A9F0BE016B5E7F4F80E00E9431448823D8 -:1047D000D1F18CE0FE017596A1E5BDE001900D924E -:1047E0008A95E1F70E941E430E94AF5488E096E04C +:1047D000D1F18CE0FE017596AFE3BDE001900D9242 +:1047E0008A95E1F70E941E430E94A35488E096E058 :1047F0000E94A1408CEA95E00E94A14085E995E0E5 -:104800000E94A1401092350D1CC081E060C082E082 +:104800000E94A1401092230D1CC081E060C082E094 :104810005EC088E15CC089E15AC084E058C08BE189 :1048200056C085E254C084E152C08EE150C08FE191 :104830004EC086E14CC080E24AC083E248C084E2B8 @@ -1166,48 +1166,48 @@ :1048D000DF4F0FB6F894DEBF0FBECDBFDF91CF9193 :1048E0001F910F91FF90EF90DF90CF90BF90AF900E :1048F0009F908F907F906F905F904F903F902F9000 -:1049000008952091530C3091540C21153105B9F0C4 -:1049100080915A0C90915B0C8217930734F40196A6 -:1049200090935B0C80935A0C0AC010925B0C10920F -:104930005A0C1092540C1092530C1092C50C2091EA -:10494000510C3091520C21153105A1F08091580C79 -:104950009091590C8217930734F401969093590C57 -:104960008093580C07C01092590C1092580C81E09B -:104970008093C60C8091C50C81111BC08091500C96 +:1049000008952091410C3091420C21153105B9F0E8 +:104910008091480C9091490C8217930734F40196CA +:104920009093490C8093480C0AC01092490C109245 +:10493000480C1092420C1092410C1092B30C209132 +:104940003F0C3091400C21153105A1F08091460CAF +:104950009091470C8217930734F401969093470C7B +:104960008093460C07C01092470C1092460C81E0D1 +:104970008093B40C8091B30C81111BC080913E0CCC :10498000811117C0809173008E7F80937300109205 -:104990004F0C1092540C1092530C1092520C109217 -:1049A000510C10925B0C10925A0C1092590C1092F0 -:1049B000580C08958091570C811107C081E08093B5 -:1049C000570C80910B01806205C01092570C8091AA -:1049D0000B018F7D80930B018091550C9091560CAB -:1049E0009C012F5F3F4F3093560C2093550C209124 -:1049F0000402309105022817390748F41092560C2A -:104A00001092550C809170008E7F809370000895F5 -:104A1000CF93DF936091960C84E893E00E94045456 -:104A20006091970C85E893E00E94045488E993E034 -:104A3000EC012196FC01E050F74F60810E94045484 +:104990003D0C1092420C1092410C1092400C10925F +:1049A0003F0C1092490C1092480C1092470C109238 +:1049B000460C08958091450C811107C081E08093D9 +:1049C000450C80910B01806205C01092450C8091CE +:1049D0000B018F7D80930B018091430C9091440CCF +:1049E0009C012F5F3F4F3093440C2093430C209148 +:1049F0000402309105022817390748F41092440C3C +:104A00001092430C809170008E7F80937000089507 +:104A1000CF93DF936091840C84E893E00E94F85375 +:104A20006091850C85E893E00E94F85388E993E053 +:104A3000EC012196FC01E251F74F60810E94F8538E :104A4000CE01CC39D340A1F78EE893E0EC0121965A -:104A5000FC01E25FF64F60810E940454CE01C2392E +:104A5000FC01E450F74F60810E94F853CE01C23947 :104A6000D340A1F7DF91CF910895CF92DF92EF92DB :104A7000FF920F931F93CF93DF9369017A01EAE0CE :104A8000F1E0208120622083EBE0F1E020812F7DA6 -:104A90002083660F771F709305026093040209EC70 +:104A90002083660F771F709305026093040207EB73 :104AA0001CE08AED94E2F80191838083C0E7D0E0B6 :104AB00088818E7F8883E0EBF0E080818C7F80832B :104AC000E1EBF0E08081877F8083A6EBB0E08C9102 :104AD0008F7D8C9388818D7F8883808184608083A3 :104AE00080818C7F808320E034E244EF59E4C70169 -:104AF000B6010E947A6320E034E244E75BE40E945E -:104B0000CC6520E030E040E85CE30E94CC650E9488 -:104B1000E26320E031E0C901861B970BF801938323 +:104AF000B6010E946E6320E034E244E75BE40E946A +:104B0000C06520E030E040E85CE30E94C0650E94A0 +:104B1000D66320E031E0C901861B970BF80193832F :104B20008283828193818093B200888181608883AF :104B3000DF91CF911F910F91FF90EF90DF90CF9079 -:104B40000895E1EAF0E080E180831092A000A7E2FE +:104B40000895E1EAF0E080E180831092A000A5E101 :104B5000BDE082E016968C93169780E29EE415964F :104B60009C938E9314979093A7008093A60082E164 :104B7000808320E030E048EA51E4609100027091C7 -:104B8000010280910202909103020E947A6320E068 -:104B900030EC4FE754E40E94CC650E94E763CB0100 +:104B8000010280910202909103020E946E6320E074 +:104B900030EC4FE754E40E94C0650E94DB63CB0118 :104BA0000C945630CF93DF93D82FC8E05E98559A77 :104BB000D7FF02C05D9A01C05D9865E070E080E0BB :104BC00090E00E94BB4C5E9A65E070E080E090E06F @@ -1275,44 +1275,44 @@ :104FA0005F926F927F92AF92BF92CF92DF92EF9219 :104FB000FF920F931F93CF93DF935C01EB018A0164 :104FC000FC01408051806280738020E030E0A901C4 -:104FD000C301B2010E94736320E030E0A901811196 -:104FE00011C0688179818A819B810E949165181620 +:104FD000C301B2010E94676320E030E0A9018111A2 +:104FE00011C0688179818A819B810E94856518162C :104FF000E4F02AEDC22E2FE0D22E29ECE22E2FEB88 -:10500000F22E22C0C301B2010E94736387FD16C055 -:10501000A3019201688179818A819B810E947A63D0 -:105020000E9438636B017C010FC09AEDC92E9FE08E +:10500000F22E22C0C301B2010E94676387FD16C061 +:10501000A3019201688179818A819B810E946E63DC +:105020000E942C636B017C010FC09AEDC92E9FE09A :10503000D92E99ECE92E9FE3F92E06C0C12CD12C74 -:1050400080ECE82E8FE7F82EC701B6010E94776347 -:105050002091980C3091990C40919A0C50919B0C96 -:105060000E94CC659B01AC01C301B2010E94996210 +:1050400080ECE82E8FE7F82EC701B6010E946B6353 +:105050002091860C3091870C4091880C5091890CDE +:105060000E94C0659B01AC01C301B2010E948D6228 :10507000F5016083718382839383C701B6010E9427 -:105080004F662091980C3091990C40919A0C509158 -:105090009B0C0E94CC659B01AC01688179818A815F -:1050A0009B810E949962688379838A839B83209184 -:1050B0009C0C30919D0C40919E0C50919F0CF801DE -:1050C00060817181828193810E949A62F80160837C +:1050800043662091860C3091870C4091880C50919A +:10509000890C0E94C0659B01AC01688179818A817D +:1050A0009B810E948D62688379838A839B83209190 +:1050B0008A0C30918B0C40918C0C50918D0CF80126 +:1050C00060817181828193810E948E62F801608388 :1050D000718382839383DF91CF911F910F91FF9012 :1050E000EF90DF90CF90BF90AF907F906F905F90E8 :1050F0004F9008954F925F926F927F92AF92BF92BE :10510000CF92DF92EF92FF920F931F93CF93DF9393 :105110005C01EB018A01FC01408051806280738058 -:1051200020E030E0A901C301B2010E94736320E0D6 +:1051200020E030E0A901C301B2010E94676320E0E2 :1051300030E0A901811111C0688179818A819B8148 -:105140000E9491651816E4F02AEDC22E2FE0D22EAF +:105140000E9485651816E4F02AEDC22E2FE0D22EBB :1051500029ECE22E2FEBF22E22C0C301B2010E94F5 -:10516000736387FD16C0A3019201688179818A81EA -:105170009B810E947A630E9438636B017C010FC09F +:10516000676387FD16C0A3019201688179818A81F6 +:105170009B810E946E630E942C636B017C010FC0B7 :105180009AEDC92E9FE0D92E99ECE92E9FE3F92ED6 :1051900006C0C12CD12C80ECE82E8FE7F82EC70179 -:1051A000B6010E9477632091980C3091990C409140 -:1051B0009A0C50919B0C0E94CC659B01AC01C301E1 -:1051C000B2010E949A62F5016083718382839383A6 -:1051D000C701B6010E944F662091980C3091990C3E -:1051E00040919A0C50919B0C0E94CC659B01AC01A4 -:1051F000688179818A819B810E949A626883798320 -:105200008A839B8320919C0C30919D0C40919E0C35 -:1052100050919F0CF80160817181828193810E947D -:105220009962F8016083718382839383DF91CF91C8 +:1051A000B6010E946B632091860C3091870C409170 +:1051B000880C5091890C0E94C0659B01AC01C30111 +:1051C000B2010E948E62F5016083718382839383B2 +:1051D000C701B6010E9443662091860C3091870C6E +:1051E0004091880C5091890C0E94C0659B01AC01D4 +:1051F000688179818A819B810E948E62688379832C +:105200008A839B8320918A0C30918B0C40918C0C6B +:1052100050918D0CF80160817181828193810E948F +:105220008D62F8016083718382839383DF91CF91D4 :105230001F910F91FF90EF90DF90CF90BF90AF90B4 :105240007F906F905F904F9008952F923F924F9272 :105250005F926F927F928F929F92AF92BF92CF9206 @@ -1320,52 +1320,52 @@ :10527000DEB766970FB6F894DEBF0FBECDBF698369 :105280007A838B839C832D833E834F8358872701AA :1052900038011601BA8AA98A84019B01AC010E94D7 -:1052A000CC656B017C012D813E814F815885CA01FF -:1052B000B9010E94CC659B01AC01C701B6010E94F7 -:1052C0009A620E94596623E333E343E551E40E9466 -:1052D000996269877A878B879C8723E333E344ED60 -:1052E00052E4C301B2010E9499622B013C0129855D -:1052F0003A854B855C85CA01B9010E94CC656B017A -:105300007C01A3019201C301B2010E94CC659B0103 -:10531000AC01C701B6010E949A626B017C0128E8CA -:105320003BEE4DE955E40E9499624B015C0120E09F -:1053300038E84DE957E4C701B6010E94CC656D8796 +:1052A000C0656B017C012D813E814F815885CA010B +:1052B000B9010E94C0659B01AC01C701B6010E9403 +:1052C0008E620E944D6623E333E343E551E40E947E +:1052D0008D6269877A878B879C8723E333E344ED6C +:1052E00052E4C301B2010E948D622B013C01298569 +:1052F0003A854B855C85CA01B9010E94C0656B0186 +:105300007C01A3019201C301B2010E94C0659B010F +:10531000AC01C701B6010E948E626B017C0128E8D6 +:105320003BEE4DE955E40E948D624B015C0120E0AB +:1053300038E84DE957E4C701B6010E94C0656D87A2 :105340007E878F87988BA5019401C501B4010E94C7 -:10535000CC659B01AC016D857E858F8598890E9407 -:1053600099620E9459666B8B7C8B8D8B9E8BA701FB -:105370009601C701B6010E949A626D877E878F876A +:10535000C0659B01AC016D857E858F8598890E9413 +:105360008D620E944D666B8B7C8B8D8B9E8BA70113 +:105370009601C701B6010E948E626D877E878F8776 :10538000988BA501940169857A858B859C850E94FF -:10539000CC654B015C012B893C894D895E89C30139 -:1053A000B2010E94CC659B01AC01C501B4010E9411 -:1053B00099624B015C0120E030E04EE053E46D85E2 -:1053C0007E858F8598890E94CC659B01AC01C501C3 -:1053D000B4010E947A630E948B6221EE3EE245E6B0 -:1053E00052E40E94CC65F1016083718382839383D0 -:1053F00028E83BEE4DE955E4C701B6010E949A62E8 +:10539000C0654B015C012B893C894D895E89C30145 +:1053A000B2010E94C0659B01AC01C501B4010E941D +:1053B0008D624B015C0120E030E04EE053E46D85EE +:1053C0007E858F8598890E94C0659B01AC01C501CF +:1053D000B4010E946E630E947F6221EE3EE245E6C8 +:1053E00052E40E94C065F1016083718382839383DC +:1053F00028E83BEE4DE955E4C701B6010E948E62F4 :105400004B015C0122EE32E045EC57E4C701B601E6 -:105410000E94CC656B017C01A5019401C501B4011A -:105420000E94CC659B01AC01C701B6010E94996244 -:105430000E9459666B017C01A501940169857A85FA -:105440008B859C850E94CC654B015C01A701960170 -:10545000C301B2010E94CC659B01AC01C501B4013E -:105460000E949A626B017C012DEC3CEC4EE153E40E -:105470006D857E858F8598890E94CC659B01AC01E6 -:10548000C701B6010E947A630E948B6221EE3EE260 -:1054900045E652E40E94CC656B017C01E989FA89FA +:105410000E94C0656B017C01A5019401C501B40126 +:105420000E94C0659B01AC01C701B6010E948D625C +:105430000E944D666B017C01A501940169857A8506 +:105440008B859C850E94C0654B015C01A70196017C +:10545000C301B2010E94C0659B01AC01C501B4014A +:105460000E948E626B017C012DEC3CEC4EE153E41A +:105470006D857E858F8598890E94C0659B01AC01F2 +:10548000C701B6010E946E630E947F6221EE3EE278 +:1054900045E652E40E94C0656B017C01E989FA8906 :1054A000608371838283938321EE3EE245E652E47A -:1054B000F10160817181828193810E947A630E94EF -:1054C0004F6620E030E04EE053E40E94CC659B0143 -:1054D000AC01C301B2010E949165181654F4F7FAA9 +:1054B000F10160817181828193810E946E630E94FB +:1054C000436620E030E04EE053E40E94C0659B015B +:1054D000AC01C301B2010E948565181654F4F7FAB5 :1054E000F094F7F8F094E989FA89C082D182E282D7 :1054F000F38220E030E0A90169817A818B819C816F -:105500000E94736320E030E0A901811112C06D8117 -:105510007E818F8198850E94916518162CF480E019 +:105500000E94676320E030E0A901811112C06D8123 +:105510007E818F8198850E94856518162CF480E025 :1055200090E0A4EBB2E411C080E090E0A4EBB2EC18 -:105530000CC069817A818B819C810E94736387FF93 +:105530000CC069817A818B819C810E94676387FF9F :105540000AC080E090E0A0ECBFE7F801808391837F :10555000A283B38317C029813A814B815C816D811D -:105560007E818F8198850E947A630E94386321EE44 -:105570003EE245E652E40E94CC65F8016083718307 +:105560007E818F8198850E946E630E942C6321EE5C +:105570003EE245E652E40E94C065F8016083718313 :105580008283938366960FB6F894DEBF0FBECDBFBD :10559000DF91CF911F910F91FF90EF90DF90CF900F :1055A000BF90AF909F908F907F906F905F904F9043 @@ -1374,43 +1374,43 @@ :1055D000FF920F931F93CF93DF93CDB7DEB72E9734 :1055E0000FB6F894DEBF0FBECDBF29833A834B833D :1055F0005C83ED82FE820F831887860115019E86EB -:105600008D8621EE3EE245E652E40E947A632B014C +:105600008D8621EE3EE245E652E40E946E632B0158 :105610003C0121EE3EE245E652E469817A818B81CC -:105620009C810E947A634B015C0121EE3EE245E6DB -:1056300052E46D817E818F8198850E947A636B012F -:105640007C01C301B2010E94776369837A838B83F3 -:105650009C83C501B4010E9477636D837E838F8331 -:105660009887C301B2010E944F662B013C01C5011E -:10567000B4010E944F6669877A878B879C8720E0F8 +:105620009C810E946E634B015C0121EE3EE245E6E7 +:1056300052E46D817E818F8198850E946E636B013B +:105640007C01C301B2010E946B6369837A838B83FF +:105650009C83C501B4010E946B636D837E838F833D +:105660009887C301B2010E9443662B013C01C5012A +:10567000B4010E94436669877A878B879C8720E004 :1056800030E04EE053E469817A818B819C810E94F5 -:10569000CC654B015C012DEC3CEC4EE153E46D819B -:1056A0007E818F8198850E94CC659B01AC01C501EC -:1056B000B4010E949A6223E333E343E551E40E947C -:1056C0009A624B015C01C701B6010E9477639B019E -:1056D000AC01C501B4010E94CC65F80160837183FF -:1056E00082839383C701B6010E944F669B01AC0180 -:1056F000C501B4010E94CC65F1016083718382838E +:10569000C0654B015C012DEC3CEC4EE153E46D81A7 +:1056A0007E818F8198850E94C0659B01AC01C501F8 +:1056B000B4010E948E6223E333E343E551E40E9488 +:1056C0008E624B015C01C701B6010E946B639B01B6 +:1056D000AC01C501B4010E94C065F801608371830B +:1056E00082839383C701B6010E9443669B01AC018C +:1056F000C501B4010E94C065F1016083718382839A :10570000938320E030E04EE053E4C301B2010E94F5 -:10571000CC656B017C012DEC3CEC4EE153E46985DA -:105720007A858B859C850E94CC659B01AC01C70165 -:10573000B6010E94996223E333E344ED52E40E94F0 -:105740009A62ED85FE8560837183828393832E96B2 +:10571000C0656B017C012DEC3CEC4EE153E46985E6 +:105720007A858B859C850E94C0659B01AC01C70171 +:10573000B6010E948D6223E333E344ED52E40E94FC +:105740008E62ED85FE8560837183828393832E96BE :105750000FB6F894DEBF0FBECDBFDF91CF911F9182 :105760000F91FF90EF90DF90CF90BF90AF909F9000 :105770008F907F906F905F904F903F902F90089503 :105780004F925F926F927F928F929F92AF92BF9251 :10579000CF92DF92EF92FF920F931F93CF93DF93FD :1057A00000D01F92CDB7DEB729013A01E982FA8213 -:1057B0000B831C8306E91CE020E030E040E253E468 -:1057C0000E947A639B01AC01F80162857385848530 -:1057D00095850E949A62F601608371838283938328 -:1057E00020E030E040E253E4C301B2010E947A635A +:1057B0000B831C8304E81CE020E030E040E253E46B +:1057C0000E946E639B01AC01F8016285738584853C +:1057D00095850E948E62F601608371838283938334 +:1057E00020E030E040E253E4C301B2010E946E6366 :1057F0009B01AC01F80166857785808991890E94BB -:105800009A62F501608371838283938320E030E0A4 +:105800008E62F501608371838283938320E030E0B0 :1058100044EB52E4F80162897389848995890E9476 -:1058200099622B013C0120E030E040E253E46981C1 -:105830007A818B819C810E947A639B01AC01C301B8 -:10584000B2010E949A62F401608371838283938320 +:105820008D622B013C0120E030E040E253E46981CD +:105830007A818B819C810E946E639B01AC01C301C4 +:10584000B2010E948E62F40160837183828393832C :105850000F900F900F900F90DF91CF911F910F91AC :10586000FF90EF90DF90CF90BF90AF909F908F9080 :105870007F906F905F904F9008952F923F924F923C @@ -1426,25 +1426,25 @@ :105910003F902F9008954F925F926F927F928F9257 :105920009F92AF92BF92CF92DF92EF92FF920F932E :105930001F932B013C0149015A01670178019B012A -:10594000AC010E94A166811172C0A5019401C5013C -:10595000B4010E94A16681116AC0A7019601C70126 -:10596000B6010E94A166811162C02AE939E947E0C7 -:1059700053E4C301B2010E94916518160CF457C09C -:1059800020E030E040E85FE3C301B2010E947363AE +:10594000AC010E949566811172C0A5019401C50148 +:10595000B4010E94956681116AC0A7019601C70132 +:10596000B6010E949566811162C02AE939E947E0D3 +:1059700053E4C301B2010E94856518160CF457C0A8 +:1059800020E030E040E85FE3C301B2010E946763BA :1059900087FD4DC02DEC3CEC4FEE52E4C501B40147 -:1059A0000E94916518160CF442C020E030E040E8F7 -:1059B0005FE3C501B4010E94736387FD38C0A30192 -:1059C000920160E070E084E393E40E949962A50193 -:1059D00094010E9499624B015C0120E030E047E1B4 -:1059E00053E40E949165181614F120E030E040E283 -:1059F00051E4C501B4010E94736387FD18C020E023 -:105A000030E044EB52E4C701B6010E9491651816DC +:1059A0000E94856518160CF442C020E030E040E803 +:1059B0005FE3C501B4010E94676387FD38C0A3019E +:1059C000920160E070E084E393E40E948D62A5019F +:1059D00094010E948D624B015C0120E030E047E1C0 +:1059E00053E40E948565181614F120E030E040E28F +:1059F00051E4C501B4010E94676387FD18C020E02F +:105A000030E044EB52E4C701B6010E9485651816E8 :105A100074F020E030E044EB52ECC701B6010E9484 -:105A20007363881F8827881F91E0892701C080E061 +:105A20006763881F8827881F91E0892701C080E06D :105A30001F910F91FF90EF90DF90CF90BF90AF90AC :105A40009F908F907F906F905F904F9008950F93ED -:105A50001F93CF93DF93C9E4DCE084E393E08C01F0 -:105A60000F5F1F4F0E9463548993C8010A3313408C +:105A50001F93CF93DF93C7E3DCE084E393E08C01F3 +:105A60000F5F1F4F0E9457548993C8010A33134098 :105A7000B1F7DF91CF911F910F910895AF92BF922F :105A8000CF92DF92EF92FF920F931F93CF93DF930A :105A9000082F6EE09CD1C82F6FE0802F98D1D0E006 @@ -1453,43 +1453,43 @@ :105AC00030E0322F2227282BC217D30708F4E90130 :105AD0002C153D0508F46901E20EF31E81E0A81AB9 :105AE000B10831F7C7018C1B9D0B8C199D0963E030 -:105AF00070E00E94C966CB01DF91CF911F910F9199 +:105AF00070E00E94BD66CB01DF91CF911F910F91A5 :105B0000FF90EF90DF90CF90BF90AF9008958F926D :105B10009F92AF92BF92CF92DF92EF92FF927C0161 :105B2000ADDF9C0181E0E816F104F9F088F082E035 -:105B3000E816F10439F58091490C90914A0CA0E0E7 +:105B3000E816F10439F58091370C9091380CA0E00B :105B4000B0E0BC01CD01621B730B810991093FC01C -:105B500080914B0C90914C0CA0E0B0E0BC01CD01C9 -:105B6000621B730B810991091DC080914D0C9091AE -:105B70004E0CA0E0B0E0BC01CD01621B730B8109AB +:105B50008091390C90913A0CA0E0B0E0BC01CD01ED +:105B6000621B730B810991091DC080913B0C9091C0 +:105B70003C0CA0E0B0E0BC01CD01621B730B8109BD :105B800091091CC081E0E816F104A9F040F082E020 :105B9000E816F10419F560E070E0CB0118C060E090 :105BA00070E0CB0142E2842E43E5942E44E0A42E23 :105BB00042E4B42E16C060E070E0CB0138E1832EE1 :105BC0003BE5932E3EEAA32E32E4B32E0AC0812C8D :105BD000912C24EBA22E22E4B22E03C060E070E0F0 -:105BE000CB010E94156420E030E044EB53E40E94B6 -:105BF000CC6520E030E040E859E30E94CC659B0191 -:105C0000AC01C501B4010E9499626B017C0120E0E6 -:105C100030E044EB53E40E949165181654F420E000 -:105C200030E044EB53E4C701B6010E9499626B0176 -:105C30007C0120E030E0A901C701B6010E94736336 +:105BE000CB010E94096420E030E044EB53E40E94C2 +:105BF000C06520E030E040E859E30E94C0659B01A9 +:105C0000AC01C501B4010E948D626B017C0120E0F2 +:105C100030E044EB53E40E948565181654F420E00C +:105C200030E044EB53E4C701B6010E948D626B0182 +:105C30007C0120E030E0A901C701B6010E94676342 :105C400087FF0AC020E030E044EB53E4C701B6010F -:105C50000E949A626B017C01C701B601FF90EF9030 +:105C50000E948E626B017C01C701B601FF90EF903C :105C6000DF90CF90BF90AF909F908F9008950F934B -:105C70001F93CF93DF93C9E4DCE084E393E0699161 -:105C80008C010F5F1F4F0E940454C8010A33134058 -:105C9000B1F7DDDE80E090E03ADF6093A00C709316 -:105CA000A10C8093A20C9093A30C81E090E02FDFD5 -:105CB0006093A40C7093A50C8093A60C9093A70CF2 -:105CC00082E090E024DF6093A80C7093A90C80938D -:105CD000AA0C9093AB0CDF91CF911F910F91089577 +:105C70001F93CF93DF93C7E3DCE084E393E0699164 +:105C80008C010F5F1F4F0E94F853C8010A33134065 +:105C9000B1F7DDDE80E090E03ADF60938E0C709328 +:105CA0008F0C8093900C9093910C81E090E02FDF0B +:105CB0006093920C7093930C8093940C9093950C3A +:105CC00082E090E024DF6093960C7093970C8093B1 +:105CD000980C9093990CDF91CF911F910F9108959B :105CE000AF92BF92CF92DF92EF92FF920F931F93EA -:105CF000CF93DF9300D01F92CDB7DEB75B012FE6C5 +:105CF000CF93DF9300D01F92CDB7DEB75B012DE5C8 :105D0000E22E2DE0F22E8C016B018CE0C80ED11C2E :105D1000F50161917191819191915F01F70121915B :105D20003191419151917F0129833A834B835C8367 -:105D30000E94156429813A814B815C810E947A63BB +:105D30000E94096429813A814B815C810E946E63D3 :105D4000F80161937193819391938F01AC14BD0419 :105D5000F9F60F900F900F900F90DF91CF911F9158 :105D60000F91FF90EF90DF90CF90BF90AF9008958C @@ -1544,26 +1544,26 @@ :106070005E9862E070E080E090E00E94BB4C559A30 :106080005D9A62E070E080E090E00E94BB4C5E9818 :1060900062E070E080E090E00E94BB4C0E94042629 -:1060A00001C0C0E08C2FDF91CF910895E7E2FDE0C1 -:1060B000A481B5819C010E940767A1E0B1E02C9109 +:1060A00001C0C0E08C2FDF91CF910895E5E1FDE0C4 +:1060B000A481B5819C010E94FB66A1E0B1E02C9116 :1060C00028602C93A0EAB0E02C9120682C93DC018E :1060D000CB012AE0B695A795979587952A95D1F794 :1060E0009093A9008093A800868180618093A1008D :1060F0000895CF93DF9321E5829FC0011124EC0125 -:10610000D55F40E550E0BE0187ED9CE00E946B54F6 -:10611000892B59F41092D70C40E550E067ED7CE0F4 -:10612000CE010E94265480E001C081E0DF91CF9132 +:10610000D55F40E550E0BE0185EC9CE00E945F5405 +:10611000892B59F41092C50C40E550E065EC7CE009 +:10612000CE010E941A5480E001C081E0DF91CF913E :1061300008951F920F920FB60F9211240BB60F9273 :106140002F933F934F935F936F937F938F939F937F -:10615000AF93BF93EF93FF938091D20C9091D30CA8 -:106160009093250180932401E091D00CF091D10C03 +:10615000AF93BF93EF93FF938091C00C9091C10CCC +:106160009093250180932401E091BE0CF091BF0C27 :10617000309709F01995FF91EF91BF91AF919F91E1 :106180008F917F916F915F914F913F912F910F90E0 :106190000BBE0F900FBE0F901F9018951F920F927D :1061A0000FB60F9211240BB60F922F933F934F937C :1061B0005F936F937F938F939F93AF93BF93EF936F -:1061C000FF938091290D90912A0D9093A5008093C3 -:1061D000A400E091270DF091280D309709F0199552 +:1061C000FF938091170D9091180D9093A5008093E7 +:1061D000A400E091150DF091160D309709F0199576 :1061E000FF91EF91BF91AF919F918F917F916F91AF :1061F0005F914F913F912F910F900BBE0F900FBE6B :106200000F901F9018951F920F920FB60F921124A6 @@ -1571,24 +1571,24 @@ :10622000809394009F918F910F900FBE0F901F90BD :1062300018951F920F920FB60F9211240BB60F9262 :106240002F933F934F935F936F937F938F939F937E -:10625000AF93BF93EF93FF938091CB0C9091CC0CB5 -:106260008093B200E091C90CF091CA0C309709F00C +:10625000AF93BF93EF93FF938091B90C9091BA0CD9 +:106260008093B200E091B70CF091B80C309709F030 :106270001995FF91EF91BF91AF919F918F917F9170 :106280006F915F914F913F912F910F900BBE0F90A7 :106290000FBE0F901F9018958A98E8E0F1E080817A :1062A0008E7F80835F98E2E7F0E080818E7F80833D -:1062B0001092C40C0895CF93DF93EB018431D1F099 +:1062B0001092B20C0895CF93DF93EB018431D1F0AB :1062C00028F4882361F08C30A8F437C08233E9F0D9 :1062D00018F4873190F10EC0833311F10BC088811F -:1062E000882329F063E973E0CE010E94206765E905 +:1062E000882329F063E973E0CE010E94146765E911 :1062F00073E020C08881882329F063E973E0CE0130 -:106300000E94206768E973E015C08881882329F01E -:1063100063E973E0CE010E9420676CE973E00AC074 -:106320008881882329F063E973E0CE010E94206709 -:1063300060EA73E0CE010E9420678091640C88239C -:1063400079F064E67CE0CE010E94206782E3E4E617 +:106300000E94146768E973E015C08881882329F02A +:1063100063E973E0CE010E9414676CE973E00AC080 +:106320008881882329F063E973E0CE010E94146715 +:1063300060EA73E0CE010E9414678091520C8823BA +:1063400079F062E57CE0CE010E94146782E3E2E529 :10635000FCE0DF011D928A95E9F7DF91CF91089566 -:1063600064ED72E0CE01DF91CF910C942067E1E003 +:1063600064ED72E0CE01DF91CF910C941467E1E00F :10637000F1E0808180628083808180648083E2E0BC :10638000F1E080818F7D808380818F7B8083089581 :106390003F9A479A08959C9A9D9AA498A59A089521 @@ -1609,59 +1609,59 @@ :10648000969587959695879560960FB6F894DEBF9A :106490000FBECDBFDF91CF911F910F91FF90EF9075 :1064A000089580910401877880930401809103010D -:1064B0008877803451F464EA73E08CE59CE00E94B4 -:1064C0002B6740E050E0BA010EC08091030188774D -:1064D00069F46BEA73E08CE59CE00E942B6740E076 +:1064B0008877803451F464EA73E08AE49CE00E94B7 +:1064C0001F6740E050E0BA010EC080910301887759 +:1064D00069F46BEA73E08AE49CE00E941F6740E085 :1064E00050E060EE70E483E00E9425430C94D347B3 -:1064F000CF93DF93C0919E11D0919F112097B9F057 -:1065000081E08093A1116091B7117091B8118091D1 -:10651000B9119091BA119B01AC010E94CC65698BB5 -:106520007A8B8B8B9C8B10929F1110929E11DF9116 +:1064F000CF93DF93C0918C11D0918D112097B9F07B +:1065000081E080938F116091A5117091A611809107 +:10651000A7119091A8119B01AC010E94C065698BE5 +:106520007A8B8B8B9C8B10928D1110928C11DF913A :10653000CF9108952F923F924F925F926F927F92E8 :106540008F929F92AF92BF92CF92DF92EF92FF9283 :106550000F931F93CF93DF93CDB7DEB7CE54D109FE -:106560000FB6F894DEBF0FBECDBF8091F80D8077D7 +:106560000FB6F894DEBF0FBECDBF8091E60D8077E9 :1065700025968FAF2597882389F020E030E0A90188 -:106580006091B7117091B8118091B9119091BA11C1 -:106590000E947363882311F40C946C3B2091B71113 -:1065A0002B8B3091B8113C8B4091B9114D8B509190 -:1065B000BA115E8B8091C7118B839091C8119D8316 -:1065C000A091C911AE83B091CA11BC830091B311DF -:1065D0001091B4115091B5114091B6118091A6114E -:1065E0009091A711A091A811B091A9118FA398A77C -:1065F000A9A7BAA79091A2119FAFA091A31121962C -:10660000AFAF2197B091A4112296BFAF2297E0912E -:10661000A5112396EFAF23978091AE119091AF1102 -:10662000A091B011B091B1118FAB98AFA9AFBAAF33 -:106630009091461124969FAF2497A0912111ADA768 -:10664000B091F9102796BFAF2797E091F810E8A313 -:10665000F091150E2696FFAF269720919E1130914E -:106660009F113A8B298B80914711909148119AA3E1 -:1066700089A38091AA119091AB11A091AC11B09116 -:10668000AD118BAF9CAFADAFBEAF9091BF119F8BE3 -:10669000A091C011A88FB091C111B98FE091C21122 -:1066A000EA8F3090C3112090C411F091C511F98385 -:1066B0002091C6112A833091BB113B8F8091BC1170 -:1066C0008C8F9091BD119D8FA091BE11AE8F809146 -:1066D00020119DA5891709F466C7E989FA89EF2B6E +:106580006091A5117091A6118091A7119091A81109 +:106590000E946763882311F40C946C3B2091A51131 +:1065A0002B8B3091A6113C8B4091A7114D8B5091B4 +:1065B000A8115E8B8091B5118B839091B6119D834C +:1065C000A091B711AE83B091B811BC830091A11115 +:1065D0001091A2115091A3114091A4118091941196 +:1065E00090919511A0919611B09197118FA398A7B2 +:1065F000A9A7BAA7909190119FAFA0919111219650 +:10660000AFAF2197B09192112296BFAF2297E09140 +:1066100093112396EFAF239780919C1190919D1138 +:10662000A0919E11B0919F118FAB98AFA9AFBAAF57 +:106630009091341124969FAF2497A0910F11ADA78C +:10664000B091E7102796BFAF2797E091E610E8A337 +:10665000F091030E2696FFAF269720918C11309172 +:106660008D113A8B298B80913511909136119AA317 +:1066700089A38091981190919911A0919A11B0914C +:106680009B118BAF9CAFADAFBEAF9091AD119F8B07 +:10669000A091AE11A88FB091AF11B98FE091B01158 +:1066A000EA8F3090B1112090B211F091B311F983BB +:1066B0002091B4112A833091A9113B8F8091AA11A6 +:1066C0008C8F9091AB119D8FA091AC11AE8F80916A +:1066D0000E119DA5891709F466C7E989FA89EF2B80 :1066E00009F089C22796FFAD279728A1F21781F0FC :1066F000A22EB12C39E23A9DC0013B9D900D112490 -:10670000DC01AA5EB14FBA8BA98BAB2B09F051C04B -:10671000C801A52FB42F8093B3119093B411A09307 -:10672000B511B093B6118F89988DA98DBA8D8093CC -:10673000BF119093C011A093C111B093C2118B8966 -:106740009C89AD89BE898093B7119093B811A093AD -:10675000B911B093BA118B8D9C8DAD8DBE8D809388 -:10676000BB119093BC11A093BD11B093BE118B814E -:106770009D81AE81BC818093C7119093C811A09375 -:10678000C911B093CA11832D922DA981BA8180932A -:10679000C3119093C411A093C511B093C611249650 -:1067A000BFAD2497B093461110929F1110929E1185 -:1067B0004CC78091A111882319F01092A111BFC07C -:1067C0008091A0118F5F853019F08093A01102C0D5 -:1067D0001092A0118091A01151E1589FC001112485 -:1067E000DC01A75BBE4EBAA3A9A3B9E2BA9D900192 -:1067F000BB9D300D1124F901EA5EF14F7F018081CC +:10670000DC01AC5FB14FBA8BA98BAB2B09F051C048 +:10671000C801A52FB42F8093A1119093A211A0932B +:10672000A311B093A4118F89988DA98DBA8D8093F0 +:10673000AD119093AE11A093AF11B093B0118B89AE +:106740009C89AD89BE898093A5119093A611A093D1 +:10675000A711B093A8118B8D9C8DAD8DBE8D8093AC +:10676000A9119093AA11A093AB11B093AC118B8196 +:106770009D81AE81BC818093B5119093B611A09399 +:10678000B711B093B811832D922DA981BA8180934E +:10679000B1119093B211A093B311B093B411249698 +:1067A000BFAD2497B093341110928D1110928C11BB +:1067B0004CC780918F11882319F010928F11BFC0A0 +:1067C00080918E118F5F853019F080938E1102C0F9 +:1067D00010928E1180918E1151E1589FC0011124A9 +:1067E000DC01A95CBE4EBAA3A9A3B9E2BA9D90018F +:1067F000BB9D300D1124F901EC5FF14F7F018081C9 :10680000A9A1BAA18C9381819281A381B48123E053 :10681000880F991FAA1FBB1F2A95D1F7E9A1FAA1DA :1068200081839283A383B483F70185819681A781B5 @@ -1671,208 +1671,208 @@ :106860004A95D1F7E9A1FAA181879287A387B487D6 :10687000D7011D966D917D918D919C9150978B01C3 :106880009C0153E0000F111F221F331F5A95D1F7AF -:10689000058716872787308B0E9413646FAF219678 +:10689000058716872787308B0E9407646FAF219684 :1068A0007FAF219722968FAF229723969FAF239792 :1068B000D70195962D913D914D915C9198970E94AD -:1068C0007A636FA378A789A79AA79B01AC0160E0C0 -:1068D00070E080EA9FE30E947A636BAF7CAF8DAF7C +:1068C0006E636FA378A789A79AA79B01AC0160E0CC +:1068D00070E080EA9FE30E946E636BAF7CAF8DAF88 :1068E0009EAF2596BFAD2597BB23C1F02F89388D6C -:1068F000498D5A8D6F89788D898D9A8D0E94CC65CE +:1068F000498D5A8D6F89788D898D9A8D0E94C065DA :10690000F701618B728B838B948BFF89FB8B288DB6 :106910002C8B398D3D8B4A8D4E8B0DC0D7015196F6 -:106920006D917D918D919C9154970E9459666B8BCE +:106920006D917D918D919C9154970E944D666B8BDA :106930007C8B8D8B9E8B1FAA18AE19AE1AAEB9E256 -:10694000BA9D9001BB9D300D1124F901EA5EF14F13 +:10694000BA9D9001BB9D300D1124F901EC5FF14F10 :106950004F01C1A0D2A0E3A0F4A0A701960160E07E -:1069600070E080E09FE30E947A6369877A878B8773 +:1069600070E080E09FE30E946E6369877A878B877F :106970009C872596FFAD2597FF23E9F122E0209320 -:10698000B211D40195964D905D906D907C90989742 +:10698000A011D40195964D905D906D907C90989754 :1069900051968D909D90AD90BC905497A501940117 -:1069A0000E94CC659B01AC01C301B2010E949962B7 -:1069B0008B0189879D8720E030E0A9010E947363E5 -:1069C00087FF1EC1A7019601C701B6010E949A6206 -:1069D000A30192010E94CC659B01AC01C501B401E9 -:1069E0000E9499620E9459666F8B788F898F9A8F67 -:1069F0003F82288618C11092B211F401F5A1FF83DD +:1069A0000E94C0659B01AC01C301B2010E948D62CF +:1069B0008B0189879D8720E030E0A9010E946763F1 +:1069C00087FF1EC1A7019601C701B6010E948E6212 +:1069D000A30192010E94C0659B01AC01C501B401F5 +:1069E0000E948D620E944D666F8B788F898F9A8F7F +:1069F0003F82288618C11092A011F401F5A1FF83EF :106A0000D4019696BC91B887F40107A110A5E8A11E :106A1000EF5FE23109F4E0E02796FFAD2797EF172B -:106A200089F029E22E9FF0011124EA5EF14F61897D -:106A30007289838994890E9459666F8B788F898FB8 +:106A200089F029E22E9FF0011124EC5FF14F61897A +:106A30007289838994890E944D666F8B788F898FC4 :106A40009A8F04C01F8A188E198E1A8E2F89388D3E -:106A5000498D5A8D6F89788D898D9A8D0E94CC656C +:106A5000498D5A8D6F89788D898D9A8D0E94C06578 :106A60002B013C0149E24A9D90014B9D300D1124C0 -:106A7000C9018A5E914F5C01DC0151962D913D91D7 +:106A7000C9018C5F914F5C01DC0151962D913D91D4 :106A80004D915C9154972D873E874F87588BA3017A -:106A900092016D857E858F8598890E9499629B0100 -:106AA000AC0169857A858B859C850E94CC659B01AC -:106AB000AC016F817885C8010E949A6220E030E0C5 -:106AC00040E05FE30E94CC65362E272E89839A83AF -:106AD00020E030E0A9010E94916518160CF097C0E3 +:106A900092016D857E858F8598890E948D629B010C +:106AA000AC0169857A858B859C850E94C0659B01B8 +:106AB000AC016F817885C8010E948E6220E030E0D1 +:106AC00040E05FE30E94C065362E272E89839A83BB +:106AD00020E030E0A9010E94856518160CF097C0EF :106AE0002F813885A801632D722D89819A810E949A -:106AF000736387FF72C0F501858C968CA78CB0A05C -:106B0000A3019201C501B4010E9499629B01AC01ED -:106B100069857A858B859C850E94CC656B837D8396 -:106B20008E839C83232D322D49815A810E94736369 -:106B300087FF34C0C501B4010E9459666B8F7C8FFA +:106AF000676387FF72C0F501858C968CA78CB0A068 +:106B0000A3019201C501B4010E948D629B01AC01F9 +:106B100069857A858B859C850E94C0656B837D83A2 +:106B20008E839C83232D322D49815A810E94676375 +:106B300087FF34C0C501B4010E944D666B8F7C8F06 :106B40008D8F9E8FA50194016D857E858F85988997 -:106B50000E947363811106C0F1E0F093B2110983C2 +:106B50000E946763811106C0F1E0F093A0110983E0 :106B60001A8361C02D853E854F855889C501B401C2 -:106B70000E9499629B01AC0169857A858B859C8511 -:106B80000E94CC659B01AC016F817885C8010E9491 -:106B900099626F83788789839A8345C0A70196019C -:106BA000C701B6010E949A62232D322D49815A8174 -:106BB0000E94CC65A30192010E949A620E945966CC +:106B70000E948D629B01AC0169857A858B859C851D +:106B80000E94C0659B01AC016F817885C8010E949D +:106B90008D626F83788789839A8345C0A7019601A8 +:106BA000C701B6010E948E62232D322D49815A8180 +:106BB0000E94C065A30192010E948E620E944D66F0 :106BC0006B8F7C8F8D8F9E8F3F8228863B822D829C -:106BD00029812E833A813C8326C042E04093B21142 +:106BD00029812E833A813C8326C042E04093A01154 :106BE00009831A835B895B8F8C898C8F9D899D8F2C :106BF000AE89AE8F18C03F82288659874D8717C04F :106C00003F8228861F8A188E198E1A8E10C0BF895F :106C1000BB8FE88DEC8FF98DFD8F2A8D2E8F1F8213 :106C2000188619821A8200E010E019861D862496C3 :106C30005FAD2497452F50E05CA74BA786E0849F6B -:106C4000F001859FF00D1124EE5DFE4E8091A011A4 +:106C4000F001859FF00D1124E05FFE4E80918E11C2 :106C50008283A989BA899596BC91BAABE989FA89E8 :106C6000F6A1FBABA989BA899796BC912896BFAFCC :106C70002897E989FA89F0A52996FFAF29972BADC6 :106C80003CAD4DAD5EAD6AA97BA98B2F9F2F0E94B5 -:106C900099626EA77FA788AB99AB20E030E0A9018D -:106CA0000E94736387FF04C01EA61FA618AA19AA14 -:106CB0002091B2112F8F2AA83BA92F963FAF2F9773 +:106C90008D626EA77FA788AB99AB20E030E0A90199 +:106CA0000E94676387FF04C01EA61FA618AA19AA20 +:106CB0002091A0112F8F2AA83BA92F963FAF2F9785 :106CC00028964FAD28972E964FAF2E9729963FAC1A :106CD00029978EE3C82E83ECD82E8EE2E82E89E326 :106CE000F82E412C512C3201CBA2DCA2EDA2FEA247 :106CF0009F8D992321F0913009F496C0D6C0A989BF :106D0000BA8991962D913D914D915C919497C701CF -:106D1000B6010E94CC654B015C0120E030E040E010 -:106D20005FE30E94CC659B01AC016B897C898D89F6 -:106D30009E890E949A629B01AC01C701B6010E9424 -:106D4000CC659B01AC01622D2F967FAD2F972E96BF -:106D50008FAD2E97932D0E949962262E2F967FAF8E +:106D1000B6010E94C0654B015C0120E030E040E01C +:106D20005FE30E94C0659B01AC016B897C898D8902 +:106D30009E890E948E629B01AC01C701B6010E9430 +:106D4000C0659B01AC01622D2F967FAD2F972E96CB +:106D50008FAD2E97932D0E948D62262E2F967FAF9A :106D60002F972E968FAF2E97392E2F8138854981F8 -:106D70005A810E94736387FF4AC02F8138854981F9 +:106D70005A810E94676387FF4AC02F813885498105 :106D80005A816AA97BA928968FAD289729969FAD2D -:106D900029970E9499629B01AC010E949A626B0143 +:106D900029970E948D629B01AC010E948E626B015B :106DA0007C012B8D3C8D4D8D5E8D6B897C898D8911 -:106DB0009E890E949A629B01AC01C701B6010E94A4 -:106DC0007A636B017C012B813D814E815C816F81F7 -:106DD000788589819A810E947363811103C0B2E032 +:106DB0009E890E948E629B01AC01C701B6010E94B0 +:106DC0006E636B017C012B813D814E815C816F8103 +:106DD000788589819A810E946763811103C0B2E03E :106DE000BF8F02C0E1E0EF8FFB8DFB8B2C8D2C8BD6 :106DF0003D8D3D8B4E8D4E8B2F8058852F965FAFEE :106E00002F9789812E968FAF2E973A80F0C0A501DB -:106E100094016B897C898D899E890E949A626B8B13 +:106E100094016B897C898D899E890E948E626B8B1F :106E20007C8B8D8B9E8BE3C0A70196016B8D7C8D37 -:106E30008D8D9E8D0E94CC659B01AC01622D2F969D -:106E40007FAD2F972E968FAD2E97932D0E9499622E -:106E50004B015C012B813D814E815C810E947363FB +:106E30008D8D9E8D0E94C0659B01AC01622D2F96A9 +:106E40007FAD2F972E968FAD2E97932D0E948D623A +:106E50004B015C012B813D814E815C810E94676307 :106E600087FFBDC02B813D814E815C81622D2F96B5 -:106E70007FAD2F972E968FAD2E97932D0E949962FE -:106E80002B8D3C8D4D8D5E8D0E947A636B017C0154 +:106E70007FAD2F972E968FAD2E97932D0E948D620A +:106E80002B8D3C8D4D8D5E8D0E946E636B017C0160 :106E90002B809D812F969FAF2F97AE812E96AFAFFF :106EA0002E973C80B2E0BF8FA2C0E989FA8921A168 -:106EB00032A143A154A1C701B6010E94CC654B0188 +:106EB00032A143A154A1C701B6010E94C0654B0194 :106EC0005C019B01AC016B897C898D899E890E9444 -:106ED000916518160CF054C020E030E040E05FE30C -:106EE000C501B4010E94CC659B01AC016B897C8912 -:106EF0008D899E890E9499629B01AC01C701B601F0 -:106F00000E94CC659B01AC01622D2F967FAD2F971F -:106F10002E968FAD2E97932D0E9499622A966FAF71 +:106ED000856518160CF054C020E030E040E05FE318 +:106EE000C501B4010E94C0659B01AC016B897C891E +:106EF0008D899E890E948D629B01AC01C701B601FC +:106F00000E94C0659B01AC01622D2F967FAD2F972B +:106F10002E968FAD2E97932D0E948D622A966FAF7D :106F20002A972B967FAF2B972C968FAF2C972D9669 -:106F30009FAF2D97980149855D850E949165181630 +:106F30009FAF2D97980149855D850E94856518163C :106F4000FCF4A50194016B897C898D899E890E943E -:106F500099626B8B7C8B8D8B9E8B2A962FAC2A979C +:106F50008D626B8B7C8B8D8B9E8B2A962FAC2A97A8 :106F60002B96FFAD2B972F96FFAF2F972C962FAD1B :106F70002C972E962FAF2E972D963FAC2D9737C07E :106F8000980149855D85622D2F967FAD2F972E96AE -:106F90008FAD2E97932D0E9499629B01AC010E94A8 -:106FA0009A626B017C012F89388D498D5A8D6B89CE -:106FB0007C898D899E890E949A629B01AC01C701E0 -:106FC000B6010E947A636B017C01202E2F961FAFC1 +:106F90008FAD2E97932D0E948D629B01AC010E94B4 +:106FA0008E626B017C012F89388D498D5A8D6B89DA +:106FB0007C898D899E890E948E629B01AC01C701EC +:106FC000B6010E946E636B017C01202E2F961FAFCD :106FD0002F9739852E963FAF2E973D8408C0282CD9 :106FE0002F969FAE2F972E96AFAE2E973B2CA701D4 -:106FF0009601C301B2010E949A622B013C012BA1B0 -:107000003CA14DA15EA10E94736387FF07C0A3014D +:106FF0009601C301B2010E948E622B013C012BA1BC +:107000003CA14DA15EA10E94676387FF07C0A30159 :1070100092016BA17CA18DA19EA163C02EA53FA56D :1070200048A959A9622D2F967FAD2F972E968FAD27 -:107030002E97932D0E94916518160CF442C04F8D27 -:107040004093B211222D2F963FAD2F972E964FAD24 -:107050002E97532D6FA178A589A59AA50E94CC657E -:107060006F8F7BA38EA79AAB0E9460636B017C013C +:107030002E97932D0E94856518160CF442C04F8D33 +:107040004093A011222D2F963FAD2F972E964FAD36 +:107050002E97532D6FA178A589A59AA50E94C0658A +:107060006F8F7BA38EA79AAB0E9454636B017C0148 :107070006FAD21967FAD219722968FAD22972396F3 -:107080009FAD23970E9460634B015C01A7019601AD -:107090000E9499620E94E7636BAB7CAB8DAB9EABA9 +:107080009FAD23970E9454634B015C01A7019601B9 +:107090000E948D620E94DB636BAB7CAB8DAB9EABC1 :1070A000A6E08BA59CA5A89FF001A99FF00D112437 -:1070B000EE5DFE4E2BA93CA931832083232B49F1A1 +:1070B000E05FFE4E2BA93CA931832083232B49F1AD :1070C000B5C02EE333EC4EE259E36BA17CA18DA158 -:1070D0009EA10E949A626BA37CA38DA39EA3A30191 -:1070E00092010E9499626B017C01980149855D853E +:1070D0009EA10E948E626BA37CA38DA39EA3A3019D +:1070E00092010E948D626B017C01980149855D854A :1070F000622D2F967FAD2F972E968FAD2E97932DC5 -:107100000E94916518160CF4F3CD5F8D5093B21167 +:107100000E94856518160CF4F3CD5F8D5093A01185 :1071100099CF25968FAD2597882309F487C0C8019C -:10712000A985BD858093B3119093B411A093B51137 -:10713000B093B6118F89988DA98DBA8D8093BF11A8 -:107140009093C011A093C111B093C2118B8D9C8DEF -:10715000AD8DBE8D8093BB119093BC11A093BD11DA -:10716000B093BE118B819D81AE81BC818093C7118C -:107170009093C811A093C911B093CA118F819885BB -:10718000A981BA818093C3119093C411A093C511B2 -:10719000B093C61124969FAD249790934611A98968 -:1071A000BA89B0939F11A0939E112BAD3CAD4DAD0C -:1071B0005EAD2093AA113093AB114093AC11509364 -:1071C000AD1138A13093F81049A15AA1509348113C -:1071D000409347118FA198A5A9A5BAA58093A611A0 -:1071E0009093A711A093A811B093A9119DA5909376 -:1071F00021111092B7111092B8111092B91110927A -:10720000BA111092AE111092AF111092B0111092EB -:10721000B111C092A211D092A311E092A411F092E8 -:10722000A5112FA138A549A55AA56FC12FA938AD21 -:1072300049AD5AADC301B2010E949A622B013C01D3 -:107240002F8D3BA14EA55AA9C501B4010E94996298 -:107250009B01AC01C301B2010E947A634B015C0146 -:107260002F8D3BA14EA55AA9C701B6010E94996274 -:10727000A50194010E94CC656FAB78AF89AF9AAF3E -:1072800020EC31EE44E65EE4C501B4010E94CC6519 -:107290000E9460630E94E763603DB7E07B07810561 +:10712000A985BD858093A1119093A211A093A3116D +:10713000B093A4118F89988DA98DBA8D8093AD11CC +:107140009093AE11A093AF11B093B0118B8D9C8D25 +:10715000AD8DBE8D8093A9119093AA11A093AB1110 +:10716000B093AC118B819D81AE81BC818093B511B0 +:107170009093B611A093B711B093B8118F819885F1 +:10718000A981BA818093B1119093B211A093B311E8 +:10719000B093B41124969FAD249790933411A9898C +:1071A000BA89B0938D11A0938C112BAD3CAD4DAD30 +:1071B0005EAD209398113093991140939A1150939A +:1071C0009B1138A13093E61049A15AA15093361172 +:1071D000409335118FA198A5A9A5BAA580939411C4 +:1071E00090939511A0939611B09397119DA59093AC +:1071F0000F111092A5111092A6111092A7111092C2 +:10720000A81110929C1110929D1110929E11109233 +:107210009F11C0929011D0929111E0929211F09230 +:1072200093112FA138A549A55AA56FC12FA938AD33 +:1072300049AD5AADC301B2010E948E622B013C01DF +:107240002F8D3BA14EA55AA9C501B4010E948D62A4 +:107250009B01AC01C301B2010E946E634B015C0152 +:107260002F8D3BA14EA55AA9C701B6010E948D6280 +:10727000A50194010E94C0656FAB78AF89AF9AAF4A +:1072800020EC31EE44E65EE4C501B4010E94C06525 +:107290000E9454630E94DB63603DB7E07B07810579 :1072A000910560F446E02BA53CA5429FF001439F69 -:1072B000F00D1124EE5DFE4E158253C0603A5FE082 +:1072B000F00D1124E05FFE4E158253C0603A5FE08E :1072C00075078105910560F426E0ABA5BCA52A9F52 -:1072D000F0012B9FF00D1124EE5DFE4E31E011C048 +:1072D000F0012B9FF00D1124E05FFE4E31E011C054 :1072E00060344FE174078105910568F426E0ABA591 -:1072F000BCA52A9FF0012B9FF00D1124EE5DFE4EE0 +:1072F000BCA52A9FF0012B9FF00D1124E05FFE4EEC :1073000032E035830CC0A6E04BA55CA5A49FF0013C -:10731000A59FF00D1124EE5DFE4EB3E0B58346E06F -:107320002BA53CA5429FF001439FF00D1124EE5D7B +:10731000A59FF00D1124E05FFE4EB3E0B58346E07B +:107320002BA53CA5429FF001439FF00D1124E05F87 :10733000FE4E2581022E04C0969587957795679518 :107340000A94D2F7ABA9BCA902C0AA0FBB1F2A9509 :10735000E2F7B183A08361157105B1E08B07910558 :1073600068F446E02BA53CA5429FF001439FF00D39 -:107370001124EE5DFE4E7483638304C08FEF9FEF94 +:107370001124E05FFE4E7483638304C08FEF9FEFA0 :1073800094838383BDA4B39496E0B91201C0B12C59 :10739000980149855D85622D2F967FAD2F972E969A -:1073A0008FAD2E97932D0E9491651816ECF4822DC7 +:1073A0008FAD2E97932D0E9485651816ECF4822DD3 :1073B0002F969FAD2F972E96AFAD2E97B32DE989BF :1073C000FA8985A396A3A7A3B0A7FF8DFFAF2BA132 :1073D00021962FAF21973EA522963FAF22974AA92B :1073E00023964FAF2397D5C020E030E0A901622D4E :1073F0002F967FAD2F972E968FAD2E97932D0E94AF -:10740000916518160CF0AEC0C801A985BD858093A2 -:10741000B3119093B411A093B511B093B6118F89A5 -:10742000988DA98DBA8D8093BF119093C011A093B0 -:10743000C111B093C2118B8D9C8DAD8DBE8D80938B -:10744000BB119093BC11A093BD11B093BE118B8161 -:107450009D81AE81BC818093C7119093C811A09388 -:10746000C911B093CA118F819885A981BA8180937F -:10747000C3119093C411A093C511B093C6115DA51B -:107480005093461189899A8990939F1180939E11F8 -:107490002BAD3CAD4DAD5EAD2093AA113093AB1139 -:1074A0004093AC115093AD1138A13093F81049A11D -:1074B0005AA150934811409347118FA198A5A9A5AF -:1074C000BAA58093A6119093A711A093A811B09389 -:1074D000A911B09221111092B7111092B811109207 -:1074E000B9111092BA111092AE111092AF11109200 -:1074F000B0111092B111C092A211D092A311E092DA -:10750000A411F092A5119C01AD01C701B6010E9422 -:107510007A63A989BA8995966D937D938D939C938F -:1075200098970E9478328091F8108093150EC25B74 +:10740000856518160CF0AEC0C801A985BD858093AE +:10741000A1119093A211A093A311B093A4118F89ED +:10742000988DA98DBA8D8093AD119093AE11A093D4 +:10743000AF11B093B0118B8D9C8DAD8DBE8D8093AF +:10744000A9119093AA11A093AB11B093AC118B81A9 +:107450009D81AE81BC818093B5119093B611A093AC +:10746000B711B093B8118F819885A981BA818093A3 +:10747000B1119093B211A093B311B093B4115DA563 +:107480005093341189899A8990938D1180938C112E +:107490002BAD3CAD4DAD5EAD20939811309399115D +:1074A00040939A1150939B1138A13093E61049A153 +:1074B0005AA150933611409335118FA198A5A9A5D3 +:1074C000BAA58093941190939511A0939611B093BF +:1074D0009711B0920F111092A5111092A61110924F +:1074E000A7111092A81110929C1110929D11109248 +:1074F0009E1110929F11C0929011D0929111E09222 +:107500009211F09293119C01AD01C701B6010E9446 +:107510006E63A989BA8995966D937D938D939C939B +:1075200098970E9478328091E6108093030EC25B98 :10753000DF4F0FB6F894DEBF0FBECDBFDF91CF9106 :107540001F910F91FF90EF90DF90CF90BF90AF9081 :107550009F908F907F906F905F904F903F902F9073 @@ -1880,166 +1880,166 @@ :107570008E2F8F5F823109F480E0F8A126962FAD1F :107580002697F21303C026968FAF269788A31A8AF0 :10759000198A59854D853F8028843DA524963FAFA3 -:1075A0002497BDA694C8C801A52FB42F8093B3110A -:1075B0009093B411A093B511B093B6118F89988DA3 -:1075C000A98DBA8D8093BF119093C011A093C11162 -:1075D000B093C2118B899C89AD89BE898093B71104 -:1075E0009093B811A093B911B093BA118B8D9C8D63 -:1075F000AD8DBE8D8093BB119093BC11A093BD1136 -:10760000B093BE118B819D81AE81BC818093C711E7 -:107610009093C811A093C911B093CA11832D922DD4 -:10762000A981BA818093C3119093C411A093C5110D -:10763000B093C6112496AFAD2497A0934611E98963 -:10764000FA89F0939F11E0939E112BAD3CAD4DADA7 -:107650005EAD2093AA113093AB114093AC115093BF -:10766000AD1138A13093F81049A15AA15093481197 -:10767000409347118FAD21969FAD21972296AFADD4 -:1076800022972396BFAD23978093A2119093A311C5 -:10769000A093A411B093A5118FA198A5A9A5BAA5EF -:1076A0008093A6119093A711A093A811B093A9114C -:1076B0002FA938AD49AD5AAD2093AE113093AF111B -:1076C0004093B0115093B1113DA5309321112696EE -:1076D0004FAD26974093150EC25BDF4F0FB6F8945F +:1075A0002497BDA694C8C801A52FB42F8093A1111C +:1075B0009093A211A093A311B093A4118F89988DD9 +:1075C000A98DBA8D8093AD119093AE11A093AF1198 +:1075D000B093B0118B899C89AD89BE898093A51128 +:1075E0009093A611A093A711B093A8118B8D9C8D99 +:1075F000AD8DBE8D8093A9119093AA11A093AB116C +:10760000B093AC118B819D81AE81BC818093B5110B +:107610009093B611A093B711B093B811832D922D0A +:10762000A981BA818093B1119093B211A093B31143 +:10763000B093B4112496AFAD2497A0933411E98987 +:10764000FA89F0938D11E0938C112BAD3CAD4DADCB +:107650005EAD209398113093991140939A115093F5 +:107660009B1138A13093E61049A15AA150933611CD +:10767000409335118FAD21969FAD21972296AFADE6 +:1076800022972396BFAD23978093901190939111E9 +:10769000A0939211B09393118FA198A5A9A5BAA513 +:1076A0008093941190939511A0939611B093971194 +:1076B0002FA938AD49AD5AAD20939C1130939D113F +:1076C00040939E1150939F113DA530930F11269624 +:1076D0004FAD26974093030EC25BDF4F0FB6F89471 :1076E000DEBF0FBECDBFDF91CF911F910F91FF90F5 :1076F000EF90DF90CF90BF90AF909F908F907F9052 -:107700006F905F904F903F902F9008956091A00DE3 -:10771000462F90E08091A10D282F60FD91E08170AF +:107700006F905F904F903F902F90089560918E0DF5 +:10771000462F90E080918F0D282F60FD91E08170C1 :1077200041FD926021FD826042FD946022FD8460F3 -:107730009093FB108093FA1008951F920F920FB64A +:107730009093E9108093E81008951F920F920FB66E :107740000F9211240BB60F922F933F938F939F9319 -:10775000EF93FF9321B33091FB10832F817090E062 +:10775000EF93FF9321B33091E910832F817090E074 :1077600036E0880F991F3A95E1F7922F9F7B892B7E -:1077700081BBEBE0F1E090818091FB108270880F7B -:10778000880F977F892B808381B39091FB1092FBA8 +:1077700081BBEBE0F1E090818091E9108270880F8D +:10778000880F977F892B808381B39091E91092FBBA :10779000992790F98E7F892B81BB15BCFF91EF91C2 :1077A0009F918F913F912F910F900BBE0F900FBE25 :1077B0000F901F90189580916F008D7F80936F00C0 -:1077C00080918100887F8160809381001092FC10FD -:1077D0008091A20D8F3F21F49091F60D992349F0ED -:1077E0009091F80D943029F090E00E94F94C81E0DE -:1077F00001C080E09091AC0D92FF02C091E089271A +:1077C00080918100887F8160809381001092EA100F +:1077D0008091900D8F3F21F49091E40D992349F011 +:1077E0009091E60D943029F090E00E94F94C81E0F0 +:1077F00001C080E090919A0D92FF02C091E089272C :10780000882341F08A9A8091080181608093080161 :107810005F9A08958A98809108018E7F809308016D -:107820005F980895CF93DF93C6DF8BE2E0EAF1E142 -:10783000DF011D928A95E9F783E2EDEFF0E1DF01C8 -:107840001D928A95E9F710929F1110929E11109245 -:1078500020111092461181E0809321111092FC10AA -:1078600055DF81B39091FB109170C92FB0E0DB2FF1 +:107820005F980895CF93DF93C6DF8BE2EEE8F1E136 +:10783000DF011D928A95E9F783E2EBEEF0E1DF01CB +:107840001D928A95E9F710928D1110928C11109269 +:107850000E111092341181E080930F111092EA10F2 +:1078600055DF81B39091E9109170C92FB0E0DB2F03 :1078700096E0CC0FDD1F9A95E1F78F7BC82BC1BB3B -:10788000EBE0F1E090818091FB108270880F880F0F -:10789000977F892B808381B39091FB1092FB99276E -:1078A00090F98E7F892B81BB8091FA1080FD8F9A91 -:1078B00080FF8F9880819091FA1092708D7F892B34 -:1078C000808321B39091FA109470892F90E0959560 +:10788000EBE0F1E090818091E9108270880F880F21 +:10789000977F892B808381B39091E91092FB992780 +:1078A00090F98E7F892B81BB8091E81080FD8F9AA3 +:1078B00080FF8F9880819091E81092708D7F892B46 +:1078C000808321B39091E8109470892F90E0959572 :1078D0008795922F9D7F892B81BBDF91CF91089552 :1078E0001F920F920FB60F9211240BB60F922F9387 :1078F0003F934F935F936F937F938F939F93AF9338 -:10790000BF93EF93FF938091FC10811139C2809156 -:107910000C1180FD8F9A80FF8F9890910B01482F5A +:10790000BF93EF93FF938091EA10811139C2809168 +:10791000FA1080FD8F9A80FF8F9890910B01482F6D :1079200042709D7F942B90930B0141B3847090E043 :1079300095958795942F9D7F892B81BB91B38091DD -:107940000B11282F217030E066E0220F331F6A955B +:10794000F910282F217030E066E0220F331F6A956E :10795000E1F79F7B292B21BB90910B01282F2270EF :10796000220F220F977F922B90930B0121B382FB62 -:10797000992790F9822F8E7F892B81BB80910A11E4 -:1079800086BD82E085BD81E08093FC107894809173 -:107990001E1190911F11892B09F0ACC0809120110C -:1079A00090914611981709F49BC0E09120112E2F59 -:1079B00030E086E0E89FF0011124EE5DFE4EF0938A -:1079C0001F11E0931E11838194819093890080930D -:1079D00088008081918190931A1180931911E2811E -:1079E00080911B118E1761F1E0931B1181E1E89FDB -:1079F000F0011124E75BFE4EF0931D11E0931C1182 +:10797000992790F9822F8E7F892B81BB8091F810F7 +:1079800086BD82E085BD81E08093EA107894809185 +:107990000C1190910D11892B09F0ACC080910E1142 +:1079A00090913411981709F49BC0E0910E112E2F7D +:1079B00030E086E0E89FF0011124E05FFE4EF09396 +:1079C0000D11E0930C118381948190938900809331 +:1079D0008800808191819093081180930711E28142 +:1079E000809109118E1761F1E093091181E1E89FFF +:1079F000F0011124E95CFE4EF0930B11E0930A11A3 :107A000085859685A785B089B695A795979587951D -:107A10008093051190930611A0930711B09308115C -:107A20008093011190930211A0930311B09304115C -:107A30008093FD109093FE10A093FF10B09300115F -:107A4000E0911C11F0911D119091FA10808189270D -:107A500080930C1186E0829FD001839FB00D11248A -:107A6000AE5DBE4E15962C9181819281A381B48129 +:107A10008093F3109093F410A093F510B093F610A8 +:107A20008093EF109093F010A093F110B093F210A8 +:107A30008093EB109093EC10A093ED10B093EE10A8 +:107A4000E0910A11F0910B119091E8108081892743 +:107A50008093FA1086E0829FD001839FB00D11249D +:107A6000A05FBE4E15962C9181819281A381B48135 :107A7000022E04C0B695A795979587950A94D2F7DC -:107A800080930D1190930E11A0930F11B0931011CC +:107A80008093FB109093FC10A093FD10B093FE1018 :107A900085819681A781B085022E04C0B695A795F1 -:107AA000979587950A94D2F78093111190931211AC -:107AB000A0931311B093141181859285A385B48589 +:107AA000979587950A94D2F78093FF1090930011D1 +:107AB000A0930111B093021181859285A385B485AD :107AC00004C0B695A795979587952A95D2F7809388 -:107AD000151190931611A0931711B09318110AC0A5 -:107AE0006ADE9FB7F89480916D0D846080936D0D70 -:107AF0009FBF46C180916E0D8130B1F489B1807114 -:107B00009091BC0D891781F010926E0D8CE0EBEF17 -:107B1000FDE0A7E0BEE001900D928A95E1F780912B -:107B20006D0D806480936D0D10920B1140910D11BD -:107B300050910E1160910F11709110118091FD10F4 -:107B40009091FE10A091FF10B0910011840F951F2D -:107B5000A61FB71F8093FD109093FE10A093FF10F7 -:107B6000B0930011E0911C11F0911D1145855685CF +:107AD000031190930411A0930511B09306110AC0ED +:107AE0006ADE9FB7F89480915B0D846080935B0D94 +:107AF0009FBF46C180915C0D8130B1F489B1807126 +:107B00009091AA0D891781F010925C0D8CE0E9EE3E +:107B1000FDE0A5EFBDE001900D928A95E1F780911F +:107B20005B0D806480935B0D1092F9104091FB1007 +:107B30005091FC106091FD107091FE108091EB103F +:107B40009091EC10A091ED10B091EE10840F951F64 +:107B5000A61FB71F8093EB109093EC10A093ED102D +:107B6000B093EE10E0910A11F0910B114585568506 :107B700067857089481759076A077B0768F521E010 -:107B800020930B114585568567857089841B950B5D -:107B9000A60BB70B8093FD109093FE10A093FF10DF -:107BA000B093001120818091FB0D9091FC0DA0916C -:107BB000FD0DB091FE0D20FF04C00197A109B10990 -:107BC00003C00196A11DB11D8093FB0D9093FC0D88 -:107BD000A093FD0DB093FE0D409111115091121123 -:107BE0006091131170911411809101119091021103 -:107BF000A0910311B0910411840F951FA61FB71F08 -:107C00008093011190930211A0930311B09304117A +:107B80002093F9104585568567857089841B950B70 +:107B9000A60BB70B8093EB109093EC10A093ED1015 +:107BA000B093EE1020818091E90D9091EA0DA091A3 +:107BB000EB0DB091EC0D20FF04C00197A109B109B4 +:107BC00003C00196A11DB11D8093E90D9093EA0DAC +:107BD000A093EB0DB093EC0D4091FF10509100116C +:107BE00060910111709102118091EF109091F0104D +:107BF000A091F110B091F210840F951FA61FB71F2E +:107C00008093EF109093F010A093F110B093F210C6 :107C10004585568567857089481759076A077B0728 -:107C200078F520910B11226020930B114585568524 -:107C300067857089841B950BA60BB70B8093011188 -:107C400090930211A0930311B093041120818091AD -:107C5000FF0D9091000EA091010EB091020E21FF38 +:107C200078F52091F91022602093F910458556854A +:107C300067857089841B950BA60BB70B8093EF109B +:107C40009093F010A093F110B093F21020818091E6 +:107C5000ED0D9091EE0DA091EF0DB091F00D21FF83 :107C600004C00197A109B10903C00196A11DB11D6E -:107C70008093FF0D9093000EA093010EB093020E1F -:107C800040911511509116116091171170911811B2 -:107C90008091051190910611A0910711B0910811E2 -:107CA000840F951FA61FB71F80930511909306118F -:107CB000A0930711B0930811458556856785708993 -:107CC000481759076A077B0778F520910B11246044 -:107CD00020930B114585568567857089841B950B0C -:107CE000A60BB70B8093051190930611A093071173 -:107CF000B093081120818091030E9091040EA09101 -:107D0000050EB091060E22FF04C00197A109B1092A -:107D100003C00196A11DB11D8093030E9093040E24 -:107D2000A093050EB093060E8091F80D843039F4BF -:107D30009091140E80910B11892380930B118091E7 -:107D4000191190911A11019790931A11809319119A -:107D5000892B69F410921F1110921E11809120112D -:107D60008F5F80932011863011F410922011909132 -:107D7000FB1080910B11892780930B111092FC103E +:107C70008093ED0D9093EE0DA093EF0DB093F00D6A +:107C800040910311509104116091051170910611FA +:107C90008091F3109091F410A091F510B091F6102E +:107CA000840F951FA61FB71F8093F3109093F410B5 +:107CB000A093F510B093F6104585568567857089B9 +:107CC000481759076A077B0778F52091F910246057 +:107CD0002093F9104585568567857089841B950B1F +:107CE000A60BB70B8093F3109093F410A093F510AC +:107CF000B093F61020818091F10D9091F20DA0913A +:107D0000F30DB091F40D22FF04C00197A109B10950 +:107D100003C00196A11DB11D8093F10D9093F20D4A +:107D2000A093F30DB093F40D8091E60D843039F4F7 +:107D30009091020E8091F91089238093F91080911F +:107D400007119091081101979093081180930711E2 +:107D5000892B69F410920D1110920C1180910E1163 +:107D60008F5F80930E11863011F410920E11909156 +:107D7000E9108091F91089278093F9101092EA1088 :107D8000FF91EF91BF91AF919F918F917F916F91F3 :107D90005F914F913F912F910F900BBE0F900FBEAF -:107DA0000F901F9018958091AC0D82FF08C08A9AA1 +:107DA0000F901F90189580919A0D82FF08C08A9AB3 :107DB000809108018160809308015F9A07C08A98CA -:107DC000809108018E7F809308015F988091F80D63 -:107DD0008C70A1F08091FA1080930C118091FB10AF -:107DE00080930B1180919F0D880F84508195809313 -:107DF0000A1180916F00826080936F000895CF9286 +:107DC000809108018E7F809308015F988091E60D75 +:107DD0008C70A1F08091E8108093FA108091E910E6 +:107DE0008093F91080918D0D880F84508195809338 +:107DF000F81080916F00826080936F000895CF9299 :107E0000DF92EF92FF926A017B01811105C0FF9022 :107E1000EF90DF90CF9012C4813011F45C9801C0D4 :107E20005C9A83E28093A0008091A100807E8A61A9 :107E30008093A1008FEF9FEF9093A9008093A800FB -:107E400020E030E0A901C701B6010E947363181653 -:107E5000F4F620E030E0A901C701B6010E94736387 +:107E400020E030E0A901C701B6010E94676318165F +:107E5000F4F620E030E0A901C701B6010E94676393 :107E600087FD11C020E030E04AE754E4C701B601C5 -:107E70000E949165181654F4C12CD12C8AE7E82E83 +:107E70000E948565181654F4C12CD12C8AE7E82E8F :107E800084E4F82E03C0C12CD12C76012CEE31E114 -:107E900043E852E4C701B6010E94CC6520E030E01F -:107EA00040E05FE30E949A620E9450640E94E76390 +:107E900043E852E4C701B6010E94C06520E030E02B +:107EA00040E05FE30E948E620E9444640E94DB63B4 :107EB0007093AB006093AA005C9AFF90EF90DF9004 :107EC000CF9008958F929F92AF92BF92CF92DF9200 :107ED000EF92FF920F931F93CF93DF93CDB7DEB74F :107EE0002A970FB6F894DEBF0FBECDBF6B017C01A1 -:107EF000042F20E030E0A9010E94736387FF06C0D1 +:107EF000042F20E030E0A9010E94676387FF06C0DD :107F00008DE267D6F7FAF094F7F8F094102F12305C :107F100060F020E030E048EC52E4C701B6010E9476 -:107F2000CC656B017C011250F2CF00FF0AC020E04B -:107F300030E040E251E4C701B6010E94CC656B011C +:107F2000C0656B017C011250F2CF00FF0AC020E057 +:107F300030E040E251E4C701B6010E94C0656B0128 :107F40007C0120E030E040E05FE3C701B6010E9421 -:107F50009A620E94E263E1E0F0E0EC0FFD1FE00FA7 +:107F50008E620E94D663E1E0F0E0EC0FFD1FE00FBF :107F6000F11D2EE2208310E03AE0832E912CA12C0B :107F7000B12C6115710581059105A9F0101301C09F :107F80001F5FEE24E394F12CEC0EFD1EE10EF11CBC -:107F9000A50194010E94DD66605DF7016083B9016F +:107F9000A50194010E94D166605DF7016083B9017B :107FA000CA011F5FE6CF80E3101748F4E1E0F0E07C :107FB000EC0FFD1FE10FF11D80831F5FF5CF101344 :107FC0000BC012E0100F0F5FE1E0F0E0EC0FFD1FBF @@ -2051,19 +2051,19 @@ :10802000DEB7362FEDB6FEB66DB77EB7641B7109AD :108030000FB6F8947EBF0FBE6DBF0DB71EB70F5FB2 :108040001F4F202FF8019E2F921B941728F4632FA7 -:108050000E94BD669193F7CF442359F0F801E40FD5 +:108050000E94B1669193F7CF442359F0F801E40FE1 :10806000F11D31978081805D4983B3D549814150AD :10807000F3CF0FB6F894FEBE0FBEEDBE0F90DF91AA :10808000CF911F910F91FF90EF9008951F93CF9381 :10809000DF93CDB7DEB7C058D1090FB6F894DEBF75 :1080A0000FBECDBFAE0149575F4FFA01619171918B -:1080B000AF01CE0101960E94826710E0E1E0F0E09E +:1080B000AF01CE0101960E94766710E0E1E0F0E0AA :1080C000EC0FFD1FE10FF11D8081882319F081D590 :1080D0001F5FF4CFC058DF4F0FB6F894DEBF0FBE5E :1080E000CDBFDF91CF911F91089543E0EBCE20915A -:1080F000AC0D20FF08C02BE832E441E25DE30E94B2 -:10810000CC6541E001C040E0DDCE2091AC0D20FF08 -:1081100008C02BE832E441E25DE30E94CC6544E014 +:1080F0009A0D20FF08C02BE832E441E25DE30E94C4 +:10810000C06541E001C040E0DDCE20919A0D20FF26 +:1081100008C02BE832E441E25DE30E94C06544E020 :1081200001C043E0CFCE8A3020F0843620F043E017 :1081300003C041E001C042E06AE06ACF48E062E08B :1081400067CFCF93DF93FC018491EF0121968823C1 @@ -2073,171 +2073,171 @@ :10818000DF93CDB7DEB768970FB6F894DEBF0FBEAA :10819000CDBF01E099E2A92E28E0722E30E2632ED5 :1081A00040E1B42E50E4552E62E0462E7CE0372E9E -:1081B0001091F60D112309F451C00093F80D11FF31 +:1081B0001091E40D112309F451C00093E60D11FF55 :1081C00006C08BE395E0BDDF80E395E01FC012FFA2 :1081D00006C08BE395E0B5DF85E295E017C013FF9D :1081E00006C08BE395E0ADDF82E195E00FC014FFA0 :1081F00006C08BE395E0A5DF87E095E007C015FF9B :108200000DC08BE395E09DDF8BEF94E09ADF88EF64 :1082100094E097DF84EF91E00E94F94C10FD08C0D4 -:108220008FB7F8949091F60D1092F60D8FBF16C08F +:108220008FB7F8949091E40D1092E40D8FBF16C0B3 :1082300088E096E086DF86EF95E083DF85E995E0CC -:1082400080DF9FB7F89480916D0D8F7E80936D0DC8 -:108250009FBF80916D0D84FFFCCFE2CF10916D0D1B -:10826000112309F4A9C114FF04C081E08093F70D24 -:10827000B4C110FFE2C0EBEFFDE0DE011D96832DDF -:1082800001900D928A95E1F78091F80D8430E9F024 +:1082400080DF9FB7F89480915B0D8F7E80935B0DEC +:108250009FBF80915B0D84FFFCCFE2CF10915B0D3F +:10826000112309F4A9C114FF04C081E08093E50D36 +:10827000B4C110FFE2C0E9EEFDE0DE011D96832DE2 +:1082800001900D928A95E1F78091E60D8430E9F036 :1082900040F48130E9F080F0823001F580E795E02C :1082A0001CC0803179F018F4883049F017C0803252 :1082B00091F0803421F012C08FE895E00EC08AE87A :1082C00095E00BC084E895E008C08EE795E005C016 -:1082D00087E795E002C08AE695E033DF8091A30D41 +:1082D00087E795E002C08AE695E033DF8091910D53 :1082E000837039F0BE01635F7F4FCE0101960E941B -:1082F000702E8091A30D80FD05C08091A30D81FF9C +:1082F000702E8091910D80FD05C08091910D81FFC0 :1083000065C019C083E695E01CDF69817A818B81A5 :108310009C81FBDE81E695E014DF6D817E818F819B :108320009885F3DE81E695E00CDF69857A858B859B -:108330009C85EBDEE2CF8AE595E003DF81E5C82E80 +:108330009C85EBDEE2CF8AE595E003DF8FE3C82E74 :108340008DE0D82ECE0101967C01212C4701F6014B :1083500061917191819191916F0120853185428563 -:1083600053850E949A629B01AC01F7016081718183 -:10837000828193810E949962F70160837183828375 -:108380009383F2E02F120FC02091690D30916A0D96 -:1083900040916B0D50916C0D0E949962F7016083C2 +:1083600053850E948E629B01AC01F701608171818F +:10837000828193810E948D62F70160837183828381 +:108380009383F2E02F120FC02091570D3091580DBA +:108390004091590D50915A0D0E948D62F7016083F2 :1083A000718382839383F4E0EF0EF11CF40160810A :1083B000718182819381A9DEF2E02F1619F088E5A0 -:1083C00095E0BFDE239423E02212C0CF8091A30D5D -:1083D00082FF0CC082E595E0B4DE8091F9109091A7 -:1083E000F810891708F48E5E891B9DDE8091A30D1D -:1083F00083FF0CC08DE495E0A4DE90914B12809138 -:108400004C12891708F48058891B8DDE8091A30DCA -:1084100084FF08C087E495E094DE0E94F25143E0B7 +:1083C00095E0BFDE239423E02212C0CF8091910D6F +:1083D00082FF0CC082E595E0B4DE8091E7109091B9 +:1083E000E610891708F48E5E891B9DDE8091910D41 +:1083F00083FF0CC08DE495E0A4DE9091391280914A +:108400003A12891708F48058891B8DDE8091910DEE +:1084100084FF08C087E495E094DE0E94E65143E0C3 :1084200062E0F6DD83E495E08CDE9FB7F8948091FE -:108430006D0D8E7F80936D0D9FBF812F887609F41F -:1084400041C08091F80D882349F0982F9C7791F1D5 -:10845000883021F40E9478320093F90D8091F80D54 -:10846000811102C04092F90D16FF09C0883011F445 -:108470005092F80D8091F90D88608093F90D13FFEB -:1084800005C08091F80D85FFB092F80D15FF12C060 +:108430005B0D8E7F80935B0D9FBF812F887609F443 +:1084400041C08091E60D882349F0982F9C7791F1E7 +:10845000883021F40E9478320093E70D8091E60D78 +:10846000811102C04092E70D16FF09C0883011F457 +:108470005092E60D8091E70D88608093E70D13FF21 +:1084800005C08091E60D85FFB092E60D15FF12C084 :1084900088E096E056DE84EB95E053DE85E995E0D2 -:1084A00050DE8091F90D81FD146084608093F90D98 -:1084B0006092F80D9FB7F89480916D0D8779809345 -:1084C0006D0D9FBF11FF55C0812F887609F049C0FF -:1084D0008091F80D882339F0807509F442C08091AD -:1084E000F90D81FF3EC08091F90D82FF1FC0809180 -:1084F000370D882369F04091380D5091390D609106 -:108500003A0D70913B0D7BDC80EA9FE00E94F94CB4 -:108510008091360D882351F0823011F45C9A02C0AC -:108520000E94AF5488EE93E00E94F94C8091F810BD -:108530009091F910981789F0A89EC00111248A5EC5 -:10854000914F892B51F08091F90D83FD06C07092F7 -:10855000F80D0E949A3227DC02C01092F80D10929A -:10856000F90D9FB7F89480916D0D8D7F80936D0DFF -:108570009FBF12FF21C08091F80D807389F0809118 -:10858000FA0D81110DC08091F90D82FF03C056D004 -:108590000E94AF548091F90D82608093F90D04C060 -:1085A0001092F90D1092F80D9FB7F89480916D0D0F -:1085B0008B7F80936D0D9FBF8091F80D8C7711F0AC -:1085C0000E949A329091F80D8091F90D903219F431 -:1085D00081FDB092F80D8111EBCD68960FB6F8943D +:1084A00050DE8091E70D81FD146084608093E70DBC +:1084B0006092E60D9FB7F89480915B0D8779809369 +:1084C0005B0D9FBF11FF55C0812F887609F049C011 +:1084D0008091E60D882339F0807509F442C08091BF +:1084E000E70D81FF3EC08091E70D82FF1FC08091A4 +:1084F000250D882369F04091260D5091270D60913C +:10850000280D7091290D7BDC80EA9FE00E94F94CD8 +:108510008091240D882351F0823011F45C9A02C0BE +:108520000E94A35488EE93E00E94F94C8091E610DB +:108530009091E710981789F0A89EC00111248C5FD4 +:10854000914F892B51F08091E70D83FD06C0709209 +:10855000E60D0E949A3227DC02C01092E60D1092BE +:10856000E70D9FB7F89480915B0D8D7F80935B0D35 +:108570009FBF12FF21C08091E60D807389F080912A +:10858000E80D81110DC08091E70D82FF03C056D028 +:108590000E94A3548091E70D82608093E70D04C090 +:1085A0001092E70D1092E60D9FB7F89480915B0D45 +:1085B0008B7F80935B0D9FBF8091E60D8C7711F0D0 +:1085C0000E949A329091E60D8091E70D903219F455 +:1085D00081FDB092E60D8111EBCD68960FB6F8944F :1085E000DEBF0FBECDBFDF91CF911F910F91FF90E6 :1085F000EF90DF90CF90BF90AF909F908F907F9043 :108600006F905F904F903F902F900895CF93DF939E :10861000EC018991882311F0DCD2FBCFDF91CF915F -:10862000089569E080E090E00E9404544DE450E039 -:108630006FE67DE081E098E00C942654E0EAF0E0FB +:10862000089569E080E090E00E94F8534DE450E046 +:108630006DE57DE081E098E00C941A54E0EAF0E00A :1086400080818F7D80835C980895CF92DF92EF9236 :10865000FF92CF93DF93C82F6A017B0120E030E0C7 -:10866000A901C701B6010E94736387FDE3C0C43648 +:10866000A901C701B6010E94676387FDE3C0C43654 :1086700008F441C08CE98C0F20E0833098F590E03D :10868000880F991F880F991F223079F0FC01233041 -:1086900011F1213019F0E159F24F02C0E558F24FC3 -:1086A000C082D182E282F382C2C0EC01C957D24FAC -:1086B00020E030E040E752E4C701B6010E94CC65FB -:1086C00020E030E040E752E40E94CC656883798383 -:1086D0008A839B83ACC0ED56F24FF7FAF094F7F81B +:1086900011F1213019F0E35AF24F02C0E759F24FBD +:1086A000C082D182E282F382C2C0EC01CB58D24FA9 +:1086B00020E030E040E752E4C701B6010E94C06507 +:1086C00020E030E040E752E40E94C065688379838F +:1086D0008A839B83ACC0EF57F24FF7FAF094F7F818 :1086E000F094DECF2F5F8A3008F4A6C0243009F45E -:1086F000A3C08A50C2CFC701B6010E949A660E94E9 -:10870000E7638C2F90E08C31910508F095C0FC0157 -:108710008827E956FF4F8F4F0C94FF66633008F4AB -:108720008DC060939F0D83C06093A20D80C0609345 -:10873000A00D02C06093A10D0E94863B78C080917D -:10874000AC0D662311F084604CC08B7F4AC08091D1 -:10875000AC0D662311F0806444C08F7B42C08091D1 -:10876000AC0D662311F080683CC08F773AC06093EF -:10877000A30D5DC0C092A40DD092A50DE092A60DF0 -:10878000F092A70D54C0C092A80DD092A90DE0920E -:10879000AA0DF092AB0D4BC08091AC0D662311F089 -:1087A00081601FC08E7F1DC08091AC0D662321F0BB -:1087B00084FF46C0806215C08F7D13C08091AC0DD0 -:1087C000662311F0886001C0877F8093AC0D0E9402 -:1087D000F2532DC08091AC0D662311F0806101C071 -:1087E0008F7C8093AC0D23C06093AD0D20C0C092F0 -:1087F000AE0DD092AF0DE092B00DF092B10D17C05A -:10880000C092B20DD092B30DE092B40DF092B50DBE -:108810000EC070E07093B70D6093B60D08C0C092A3 -:10882000B80DD092B90DE092BA0DF092BB0DF9DE01 +:1086F000A3C08A50C2CFC701B6010E948E660E94F5 +:10870000DB638C2F90E08C31910508F095C0FC0163 +:108710008827E956FF4F8F4F0C94F366633008F4B7 +:108720008DC060938D0D83C06093900D80C0609369 +:108730008E0D02C060938F0D0E94863B78C08091A1 +:108740009A0D662311F084604CC08B7F4AC08091E3 +:108750009A0D662311F0806444C08F7B42C08091E3 +:108760009A0D662311F080683CC08F773AC0609301 +:10877000910D5DC0C092920DD092930DE092940D38 +:10878000F092950D54C0C092960DD092970DE09244 +:10879000980DF092990D4BC080919A0D662311F0BF +:1087A00081601FC08E7F1DC080919A0D662321F0CD +:1087B00084FF46C0806215C08F7D13C080919A0DE2 +:1087C000662311F0886001C0877F80939A0D0E9414 +:1087D000E6532DC080919A0D662311F0806101C08F +:1087E0008F7C80939A0D23C060939B0D20C0C09214 +:1087F0009C0DD0929D0DE0929E0DF0929F0D17C0A2 +:10880000C092A00DD092A10DE092A20DF092A30D06 +:108810000EC070E07093A50D6093A40D08C0C092C7 +:10882000A60DD092A70DE092A80DF092A90DF9DE49 :1088300080E007C084E005C083E003C086E001C09B :108840008AE0DF91CF91FF90EF90DF90CF90089575 :108850002DE0829FC00111244CE050E0965F0C9403 -:1088600026541F93CF93DF93182FEB018DE0189FB1 -:10887000B0011124765F4CE050E0CE010E946B54B1 +:108860001A541F93CF93DF93182FEB018DE0189FBD +:10887000B0011124765F4CE050E0CE010E945F54BD :10888000892B51F48CE0FE0111928A95E9F7BE0123 :10889000812FDEDF80E001C081E0DF91CF911F9169 :1088A0000895EF92FF920F931F93CF93DF93CDB76D :1088B000DEB72C970FB6F894DEBF0FBECDBF182FD2 -:1088C00080FFC6C08AE080939F0D8FEF8093A20D3A -:1088D0001092A00D87E08093A10D83E08093A30DFB -:1088E0008AE097EDA3E2BCE38093A40D9093A50DDD -:1088F000A093A60DB093A70D8FE692E1A3E0BBE392 -:108900008093A80D9093A90DA093AA0DB093AB0DE1 -:108910001092AD0D80E090E0A8ECB1E48093AE0D34 -:108920009093AF0DA093B00DB093B10D80E090E0A7 -:10893000AAEFB3E48093B20D9093B30DA093B40D5E -:10894000B093B50D8AEF90E09093B70D8093B60D7C -:1089500080E090E0A0E8BFE38093B80D9093B90D5C -:10896000A093BA0DB093BB0D84E08093AC0D80E072 -:1089700090E5A3E4B7E480936F0D9093700DA093FE -:10898000710DB093720D8093730D9093740DA0933D -:10899000750DB093760D8093770D9093780DA0931D -:1089A000790DB0937A0D80E090E5A3ECB7E4809365 -:1089B0007B0D90937C0DA0937D0DB0937E0D8093E5 -:1089C0007F0D9093800DA093810DB093820D8093C5 -:1089D000830D9093840DA093850DB093860D80E058 -:1089E00090E4A2E9B5E48093870D9093880DA0935D -:1089F000890DB0938A0D80938B0D90938C0DA0936D -:108A00008D0DB0938E0D80938F0D9093900DA0934C -:108A1000910DB093920D80E090E4ACE1B6EC8093C0 -:108A2000930D9093940DA093950DB093960D809314 -:108A3000970D9093980DA093990DB0939A0D8093F4 -:108A40009B0D90939C0DA0939D0DB0939E0DE9DD21 +:1088C00080FFC6C08AE080938D0D8FEF8093900D5E +:1088D00010928E0D87E080938F0D83E08093910D31 +:1088E0008AE097EDA3E2BCE38093920D9093930D01 +:1088F000A093940DB093950D8FE692E1A3E0BBE3B6 +:108900008093960D9093970DA093980DB093990D29 +:1089100010929B0D80E090E0A8ECB1E480939C0D58 +:1089200090939D0DA0939E0DB0939F0D80E090E0DD +:10893000AAEFB3E48093A00D9093A10DA093A20D94 +:10894000B093A30D8AEF90E09093A50D8093A40DB2 +:1089500080E090E0A0E8BFE38093A60D9093A70D80 +:10896000A093A80DB093A90D84E080939A0D80E0A8 +:1089700090E5A3E4B7E480935D0D90935E0DA09322 +:108980005F0DB093600D8093610D9093620DA09385 +:10899000630DB093640D8093650D9093660DA09365 +:1089A000670DB093680D80E090E5A3ECB7E4809389 +:1089B000690D90936A0DA0936B0DB0936C0D80932D +:1089C0006D0D90936E0DA0936F0DB093700D80930D +:1089D000710D9093720DA093730DB093740D80E0A0 +:1089E00090E4A2E9B5E48093750D9093760DA09381 +:1089F000770DB093780D8093790D90937A0DA093B5 +:108A00007B0DB0937C0D80937D0D90937E0DA09394 +:108A10007F0DB093800D80E090E4ACE1B6EC8093E4 +:108A2000810D9093820DA093830DB093840D80935C +:108A3000850D9093860DA093870DB093880D80933C +:108A4000890D90938A0DA0938B0DB0938C0DE9DD69 :108A500011FF0FC0CE0101967C018CE0F70111924D :108A60008A95E9F700E0B701802FF2DE0F5F08304A -:108A7000D1F712FF0AC060E080E09BE00E9404543E -:108A800060E081E59BE00E94045413FF05C060E0B4 -:108A90008EEA9BE00E9404542C960FB6F894DEBF39 +:108A7000D1F712FF0AC060E080E09BE00E94F8534B +:108A800060E081E59BE00E94F85313FF05C060E0C1 +:108A90008EEA9BE00E94F8532C960FB6F894DEBF46 :108AA0000FBECDBFDF91CF911F910F91FF90EF903F :108AB00008951F920F920FB60F9211240BB60F92CA :108AC0002F933F934F935F936F937F938F939F93D6 :108AD000AF93BF93EF93FF938091C6008F33A9F0BC :108AE00050F4883109F1813211F59FB7F8948091E3 -:108AF0006D0D886015C0803471F08E37C1F49FB75A -:108B0000F89480916D0D82600BC09FB7F8948091AE -:108B10006D0D816005C09FB7F89480916D0D8062E6 -:108B200080936D0D9FBF14C00E94C84D11C0E0918D -:108B30004C1291E09E0F903809F490E020914B1276 -:108B4000921731F0F0E0E553FE4E808390934C1283 +:108AF0005B0D886015C0803471F08E37C1F49FB76C +:108B0000F89480915B0D82600BC09FB7F8948091C0 +:108B10005B0D816005C09FB7F89480915B0D80620A +:108B200080935B0D9FBF14C00E94C84D11C0E0919F +:108B30003A1291E09E0F903809F490E0209139129A +:108B4000921731F0F0E0E754FE4E808390933A1292 :108B5000FF91EF91BF91AF919F918F917F916F9115 :108B60005F914F913F912F910F900BBE0F900FBED1 :108B70000F901F9018951F920F920FB60F9211240D -:108B80000BB60F928F939F93EF93FF938091CE122A -:108B9000E82FF0E0E25BFD4E90819093C6008F5F7E -:108BA000803809F480E08093CE1290914D128913A1 +:108B80000BB60F928F939F93EF93FF938091BC123C +:108B9000E82FF0E0E45CFD4E90819093C6008F5F7B +:108BA000803809F480E08093BC1290913B128913C5 :108BB00005C08091C1008F7D8093C100FF91EF912E :108BC0009F918F910F900BBE0F900FBE0F901F9033 -:108BD0001895E0914D1291E09E0F903831F490E09D -:108BE00004C020916D0D24FD0FC02091CE1292176C -:108BF000C1F3F0E0E25BFD4E808390934D128091D3 +:108BD0001895E0913B1291E09E0F903831F490E0AF +:108BE00004C020915B0D24FD0FC02091BC12921790 +:108BF000C1F3F0E0E45CFD4E808390933B128091E2 :108C0000C10080628093C1000895CF93C82F8AE885 :108C100099E097DAC830B1F190F4C43051F148F4DA :108C2000C23001F118F5C13009F040C082E799E087 @@ -2250,45 +2250,45 @@ :108C90008CED98E0E9CF86EC98E0E6CF87EB93E0A7 :108CA00003C082EB98E0E0CFB1DC05C080EA98E039 :108CB00048DA8C2F38DA8DE998E0CF9142CA0F93C9 -:108CC0001F93CF93DF9387E998E03BDAC7EFDDE0AE -:108CD000688979898A899B890E9415640FE61DE05D -:108CE000F80120813181428153810E947A630DDA3B +:108CC0001F93CF93DF9387E998E03BDAC5EEDDE0B1 +:108CD000688979898A899B890E9409640DE51DE06C +:108CE000F80120813181428153810E946E630DDA47 :108CF00085E998E026DA6C897D898E899F890E94B2 -:108D00001564F80124813581468157810E947A6378 +:108D00000964F80124813581468157810E946E6390 :108D1000FCD985E998E015DA688D798D8A8D9B8D6F -:108D20000E941564F80120853185428553850E9493 -:108D30007A63EBD983E998E004DA8C8DF4D98FE873 +:108D20000E940964F80120853185428553850E949F +:108D30006E63EBD983E998E004DA8C8DF4D98FE87F :108D400098E0DF91CF911F910F91FBC9FF920F9394 -:108D50001F93CF93DF938BE898E0F3D980919F0D19 -:108D6000E2D982E798E0EDD98091A20DDCD984E5C3 -:108D700098E0E7D98091A00DD6D98BE398E0E1D9AE -:108D80008091A00DDBD984E398E0DBD98091A10D1F -:108D9000CAD98CE198E0D5D98091A10DCFD985E1D0 -:108DA00098E0CFD98091AC0D82FB882780F9BBD9A0 -:108DB00084EF97E0C6D98091AC0D86FB882780F9B7 -:108DC000B2D984ED97E0BDD98091AC0D881F88277A -:108DD000881FA9D984EB97E0B4D98091A30DA3D9BA -:108DE0008EE997E0AED98091A30DA8D986E997E0E6 -:108DF000A8D96091A40D7091A50D8091A60D9091B8 -:108E0000A70D73D986E797E09CD96091A80D709162 -:108E1000A90D8091AA0D9091AB0D67D98BE597E0D4 -:108E200090D98091AC0D81707ED98EE397E089D97D -:108E30008091AC0D85FB882780F975D983E297E096 -:108E400080D98091AC0D83FB882780F96CD988E0AC -:108E500097E077D98091AC0D8295817064D98CEEC2 -:108E600096E06FD98091AD0D5ED982ED96E069D91B -:108E70008091AD0D63D98AEC96E063D96091AE0D17 -:108E80007091AF0D8091B00D9091B10D2ED98DEAFA -:108E900096E057D96091B20D7091B30D8091B40DE9 -:108EA0009091B50D22D980E996E04BD98091B60D0D -:108EB0003AD981E796E045D96091B80D7091B90D26 -:108EC0008091BA0D9091BB0D10D988E596E039D903 -:108ED00084E6F82EC0E00FE61DE0D0E086E596E0DF +:108D50001F93CF93DF938BE898E0F3D980918D0D2B +:108D6000E2D982E798E0EDD98091900DDCD984E5D5 +:108D700098E0E7D980918E0DD6D98BE398E0E1D9C0 +:108D800080918E0DDBD984E398E0DBD980918F0D43 +:108D9000CAD98CE198E0D5D980918F0DCFD985E1E2 +:108DA00098E0CFD980919A0D82FB882780F9BBD9B2 +:108DB00084EF97E0C6D980919A0D86FB882780F9C9 +:108DC000B2D984ED97E0BDD980919A0D881F88278C +:108DD000881FA9D984EB97E0B4D98091910DA3D9CC +:108DE0008EE997E0AED98091910DA8D986E997E0F8 +:108DF000A8D96091920D7091930D8091940D9091EE +:108E0000950D73D986E797E09CD96091960D709186 +:108E1000970D8091980D9091990D67D98BE597E00A +:108E200090D980919A0D81707ED98EE397E089D98F +:108E300080919A0D85FB882780F975D983E297E0A8 +:108E400080D980919A0D83FB882780F96CD988E0BE +:108E500097E077D980919A0D8295817064D98CEED4 +:108E600096E06FD980919B0D5ED982ED96E069D92D +:108E700080919B0D63D98AEC96E063D960919C0D3B +:108E800070919D0D80919E0D90919F0D2ED98DEA30 +:108E900096E057D96091A00D7091A10D8091A20D1F +:108EA0009091A30D22D980E996E04BD98091A40D31 +:108EB0003AD981E796E045D96091A60D7091A70D4A +:108EC0008091A80D9091A90D10D988E596E039D927 +:108ED00084E6F82EC0E00DE51DE0D0E086E596E0E2 :108EE00030D98D2F8F0D1FD984E596E02AD9C23055 :108EF00079F0F801C330C1F0C13029F0608171818F :108F00008281938118C0648575858685978513C095 :108F100020E030E041E655E4F801608D718D828DEE -:108F2000938D0E947A6307C084A195A1A6A1B7A1E1 +:108F2000938D0E946E6307C084A195A1A6A1B7A1ED :108F3000BC01CD019058D9D881E596E002D9D13055 :108F400029F0D23031F08FE496E005C08DE496E050 :108F500002C08BE496E0F5D8C23051F0C33059F02E @@ -2296,158 +2296,158 @@ :108F70008EE196E002C08EE096E0E3D88AE096E0CB :108F8000E0D8DF5F0C5F1F4FD33009F0A7CFFAE0C6 :108F9000FF0ECF5F8CE8F8129ECFDF91CF911F912B -:108FA0000F91FF90089580E090E00E946354893013 -:108FB00051F44DE450E061E078E08FE69DE00E94DE -:108FC0006B54892B29F487E020DE8FEF6ADCBECE5C -:108FD00008959FB7F89480916D0D826080936D0D18 -:108FE0009FBF0895E0EDF2E1A7EFBDE014964D912B +:108FA0000F91FF90089580E090E00E94575489301F +:108FB00051F44DE450E061E078E08DE59DE00E94E1 +:108FC0005F54892B29F487E020DE8FEF6ADCBECE68 +:108FD00008959FB7F89480915B0D826080935B0D3C +:108FE0009FBF0895EEEBF2E1A5EEBDE014964D9122 :108FF0005D916D917C911797408351836283738358 :1090000018964D915D916D917C911B97448355838A :10901000668377831C968D919D910D90BC91A02DB8 -:1090200080879187A287B38708958CE1E0EDF2E114 -:10903000DF011D928A95E9F71092F8101092F9104D -:1090400081E08093CF121092150E08952F923F92D7 +:1090200080879187A287B38708958CE1EEEBF2E108 +:10903000DF011D928A95E9F71092E6101092E71071 +:1090400081E08093BD121092030E08952F923F92FB :109050004F925F926F927F928F929F92AF92BF9248 :10906000CF92DF92EF92FF920F931F93CF93DF93F4 -:10907000C091F910C11101C0C2E1C150D091150ECB +:10907000C091E710C11101C0C2E1C150D091030EEF :10908000CD1709F41BC1EC2EF12C29E2C29F8001FF -:1090900011240A5E114FF801A588B688C788D08CC4 -:1090A00061A172A183A194A19B01AC010E949A626B -:1090B000F80125A136A147A150A50E94CC654B011E -:1090C0008C019B01AC01B501C6010E94736387FD51 +:1090900011240C5F114FF801A588B688C788D08CC1 +:1090A00061A172A183A194A19B01AC010E948E6277 +:1090B000F80125A136A147A150A50E94C0654B012A +:1090C0008C019B01AC01B501C6010E94676387FD5D :1090D00002C05401680189E28E9DF0018F9DF00D60 -:1090E0001124EA5EF14FC501D601818B928BA38BCF +:1090E0001124EC5FF14FC501D601818B928BA38BCC :1090F000B48BC11101C0C2E1C150CD1761F029E2AA -:109100002E9DC0012F9D900D11249C012A5E314F90 -:109110007901D9E233C08091F810D8135EC00E9463 +:109100002E9DC0012F9D900D11249C012C5F314F8D +:109110007901D9E233C08091E610D8135EC00E9475 :1091200078325BC0AC2EB12CDA9DC001DB9D900D76 -:109130001124FC01EA5EF14F6F01C11101C0C2E1CF -:10914000C1508091F810C81302C00E947832DA9D95 -:109150008001DB9D100D11240A5E114FF8018588F6 +:109130001124FC01EC5FF14F6F01C11101C0C2E1CC +:10914000C1508091E610C81302C00E947832DA9DA7 +:109150008001DB9D100D11240C5F114FF8018588F3 :109160009688A788B08CA50194016189728983894A -:1091700094890E947363811106C076018091150E57 +:1091700094890E946763811106C076018091030E75 :10918000C813D0CF2AC0F80161A172A183A194A114 -:109190009B01AC010E949A62F80125A136A147A16A -:1091A00050A50E94CC65F7012189328943895489F1 -:1091B0000E949A622B013C01A50194010E947363F5 +:109190009B01AC010E948E62F80125A136A147A176 +:1091A00050A50E94C065F7012189328943895489FD +:1091B0000E948E622B013C01A50194010E9467630D :1091C000F80187FF05C0418A528A638A748AD5CF25 -:1091D000818A928AA38AB48AD0CFD091150EF9E2FF -:1091E000DF9F800111240A5E114FC1E0CD0FC23113 -:1091F00009F4C0E02090F91089E2382EC21509F474 +:1091D000818A928AA38AB48AD0CFD091030EF9E211 +:1091E000DF9F800111240C5F114FC1E0CD0FC23110 +:1091F00009F4C0E02090E71089E2382EC21509F486 :109200005BC0CC2ED12C3C9CC0013D9C900D112408 -:109210009C012A5E314F7901F801418852886388A8 +:109210009C012C5F314F7901F801418852886388A5 :109220007488F90181889288A388B488A501940183 -:10923000C301B2010E94736387FF24C0F80161A1DA -:1092400072A183A194A19B01AC010E949A62F801D2 -:1092500025A136A147A150A50E94CC659B01AC0178 -:10926000C301B2010E949A622B013C01A501940145 -:109270000E94736387FF06C0F701418A528A638A9E -:10928000748ADC2F3C9CF0013D9CF00D1124EA5EB9 +:10923000C301B2010E94676387FF24C0F80161A1E6 +:1092400072A183A194A19B01AC010E948E62F801DE +:1092500025A136A147A150A50E94C0659B01AC0184 +:10926000C301B2010E948E622B013C01A501940151 +:109270000E94676387FF06C0F701418A528A638AAA +:10928000748ADC2F3C9CF0013D9CF00D1124EC5FB6 :10929000F14F258936894789508D61897289838983 -:1092A00094890E947363811101C0DC2FCF5FC231AA -:1092B00009F4C0E08701A2CFD093150EDF91CF91C2 +:1092A00094890E946763811101C0DC2FCF5FC231B6 +:1092B00009F4C0E08701A2CFD093030EDF91CF91D4 :1092C0001F910F91FF90EF90DF90CF90BF90AF90E4 :1092D0009F908F907F906F905F904F903F902F90D6 :1092E00008952F923F924F925F926F927F928F924A :1092F0009F92AF92BF92CF92DF92EF92FF920F9325 :109300001F93CF93DF93CDB7DEB7E7970FB6F894EF :10931000DEBF0FBECDBF4B8F5C8F6D8F072F2FAB86 -:109320002091F9102EA3422F50E05BA34AA339E20B -:10933000239FF0011124EA5EF14F158616861786E9 +:109320002091E7102EA3422F50E05BA34AA339E21D +:10933000239FF0011124EC5FF14F158616861786E6 :10934000108A15A216A217A210A6108249E956E7A4 :1093500066E97EE741A352A363A374A399A388A3FC -:109360004FE65DE058A74FA3CE010D9698AB8FA7AF -:1093700020ED32E13EA72DA7AE014F5F5F4F5DA309 +:109360004DE55DE058A74FA3CE010D9698AB8FA7B2 +:109370002EEB32E13EA72DA7AE014F5F5F4F5DA3FD :109380004CA38EA129E2829FC00111249EAB8DAB1C -:109390005F8F4E8F20ED32E13AA729A74FE65DE0BF +:109390005F8F4E8F2EEB32E13AA729A74DE55DE0B6 :1093A0005AAB49AB612C712C10E02F01CF010D9607 :1093B0009CAB8BAB1F0195E2290E311CE8A1F9A1F2 :1093C0006191719181919191F9A3E8A3E9A9FAA919 :1093D00081909190A190B190FAABE9ABA501940175 -:1093E0000E94CC650E949C65EFA5F8A961937193DA +:1093E0000E94C0650E949065EFA5F8A961937193F2 :1093F00081939193F8ABEFA7E9A5FAA5C190D1901D :10940000E190F190FAA7E9A76C197D098E099F09EF :109410006B017C0197FF07C0CC24DD247601C61ABE -:10942000D70AE80AF90AEDA9FEA9E60DF71DEA5EDA +:10942000D70AE80AF90AEDA9FEA9E60DF71DEC5FD7 :10943000F14FC182D282E382F482EBA9FCA92081A0 :10944000318142815381C216D306E406F50610F439 :1094500069017A01EBA9FCA9C082D182E282F38280 -:109460000E941564A50194010E947A634B015C017E +:109460000E940964A50194010E946E634B015C0196 :10947000EE8DFF8D6193719381939193FF8FEE8FAA -:1094800020E030E0A9010E94736387FF0DC0112323 +:1094800020E030E0A9010E94676387FF0DC011232F :1094900021F0113021F094E003C091E001C092E08E :1094A000F2018081892B8083A5019401C501B4015B -:1094B0000E94CC65F10120813181428153810E945B -:1094C0009A62F10160837183828393831F5FF4E06A +:1094B0000E94C065F10120813181428153810E9467 +:1094C0008E62F10160837183828393831F5FF4E076 :1094D0006F0E711C2CE06216710409F06FCF0E94B0 -:1094E00059664B015C01F101608371838283938330 +:1094E0004D664B015C01F10160837183828393833C :1094F000CD28CE28CF2809F425C220E030E0A901EC -:109500006B8D7C8D8D8D902F0E94736387FD21C0A4 +:109500006B8D7C8D8D8D902F0E94676387FD21C0B0 :10951000FFA9FF2361F0A50194016B8D7C8D8D8DDA -:10952000902F0E94CC656B8F7C8F8D8F092F20E050 +:10952000902F0E94C0656B8F7C8F8D8F092F20E05C :1095300030E040E85FE36B8D7C8D8D8D902F0E9435 -:10954000736387FF0DC01B8E1C8E20E82D8F0FE3E9 +:10954000676387FF0DC01B8E1C8E20E82D8F0FE3F5 :1095500007C039E93B8F46E74C8F56E95D8F0EE730 -:10956000A501940160E070E080E89FE30E947A63C7 +:10956000A501940160E070E080E89FE30E946E63D3 :1095700069A77AA78BA79CA7CE010D969A8F898F92 :10958000C12CD12C760129E2EAA1FBA12E9FC001BA -:109590002F9F900D11249C01295C314F39A328A3E2 +:109590002F9F900D11249C012B5D314F39A328A3DF :1095A000ECA1FDA180809180A280B38020E030E01A -:1095B000A901C501B4010E947363882309F475C031 -:1095C00029A53AA54BA55CA5C501B4010E94CC65AF +:1095B000A901C501B4010E946763882309F475C03D +:1095C00029A53AA54BA55CA5C501B4010E94C065BB :1095D0002B013C01ECA1FDA1608371838283938305 -:1095E0009B01AC0160E070E080E89FE30E947A6339 +:1095E0009B01AC0160E070E080E89FE30E946E6345 :1095F0004B015C01E894B7F8EFA1F8A52485358507 -:1096000046855785C501B4010E94CC651B018E8F2C +:1096000046855785C501B4010E94C0651B018E8F38 :10961000192F9B01482F592F6B8D7C8D8D8D902F8D -:109620000E94736387FD05C02B8E3C8EFE8DFD8FDF +:109620000E94676387FD05C02B8E3C8EFE8DFD8FEB :10963000012FE8A1F9A120803180F281FE8FE8A1FD :10964000F9A11381EFA1F8A5208D318D428D538DA5 -:10965000C501B4010E94CC654B015C019B01AC01CA -:10966000B1018E8D912F0E94736387FD03C0140199 +:10965000C501B4010E94C0654B015C019B01AC01D6 +:10966000B1018E8D912F0E94676387FD03C01401A5 :10967000AE8E1B2DC101AE8DB12FE8A1F9A1808363 :109680009183A283B383EDA5FEA524853585468508 -:109690005785C301B2010E94CC659B01AC01C70193 -:1096A000B6010E9499626B017C012CA13DA12C5F47 +:109690005785C301B2010E94C0659B01AC01C7019F +:1096A000B6010E948D626B017C012CA13DA12C5F53 :1096B0003F4F3DA32CA34DA55EA54C5F5F4F5EA71A :1096C0004DA78FA198A5049698A78FA3E98DFA8D31 -:1096D0002E173F0709F064CF8091F810FEA1F81310 +:1096D0002E173F0709F064CF8091E610FEA1F81322 :1096E0000FC089E22AA13BA1829FF001839FF00D68 -:1096F0001124EA5EF14F118A128A138A148A14C067 -:109700002FEE3FEF4FE75FE3C701B6010E9491657F +:1096F0001124EC5FF14F118A128A138A148A14C064 +:109700002FEE3FEF4FE75FE3C701B6010E9485658B :1097100018167CF489E24AA15BA1849FF001859F21 -:10972000F00D1124EA5EF14F118E128E138E148EFD +:10972000F00D1124EC5FF14F118E128E138E148EFA :109730006AC02FEE3FEF4FE75FEBC701B6010E9413 -:109740009165181644F08FEEC82EDD24DA948FE769 +:109740008565181644F08FEEC82EDD24DA948FE775 :10975000E82E8FEBF82EA701960160E070E080E81C -:109760009FE30E94996220E030E040E05FE30E94C6 -:10977000CC650E9459666B017C0189E22AA13BA15C -:10978000829FF001839FF00D1124EA5EF14F20913A -:10979000A40D3091A50D4091A60D5091A70D61A18A -:1097A00072A183A194A10E94CC65A70196010E9499 -:1097B000CC654B015C01A701960160E070E080E898 -:1097C0009FE30E9499629B01AC01C501B4010E9414 -:1097D0007A636B017C0120E030E0A9010E94736391 +:109760009FE30E948D6220E030E040E05FE30E94D2 +:10977000C0650E944D666B017C0189E22AA13BA174 +:10978000829FF001839FF00D1124EC5FF14F209137 +:10979000920D3091930D4091940D5091950D61A1D2 +:1097A00072A183A194A10E94C065A70196010E94A5 +:1097B000C0654B015C01A701960160E070E080E8A4 +:1097C0009FE30E948D629B01AC01C501B4010E9420 +:1097D0006E636B017C0120E030E0A9010E946763A9 :1097E00087FF03C0C12CD12C760189E24AA15BA17D -:1097F000849FF001859FF00D1124EA5EF14FC18E28 +:1097F000849FF001859FF00D1124EC5FF14FC18E25 :10980000D28EE38EF48E2B8D3C8D4D8D502F6B8D33 -:109810007C8D8D8D902F0E94CC657B018C0189E21F -:109820002AA13BA1829FF001839FF00D1124EA5EE3 +:109810007C8D8D8D902F0E94C0657B018C0189E22B +:109820002AA13BA1829FF001839FF00D1124EC5FE0 :10983000F14FC701D801858F968FA78FB0A3A18C58 -:10984000B28CC38CD48C6090E8127090E912809036 -:10985000EA129090EB129301A401B701C8010E9493 -:10986000736387FD05C0762D672D982D892D04C063 +:10984000B28CC38CD48C6090D6127090D71280905A +:10985000D8129090D9129301A401B701C8010E94B7 +:10986000676387FD05C0762D672D982D892D04C06F :109870007E2D6F2D902F812F272F362F492F582F78 -:10988000B501C6010E94736387FD0DC09301A40159 -:10989000B701C8010E94736387FD03C053016401CF +:10988000B501C6010E94676387FD0DC09301A40165 +:10989000B701C8010E94676387FD03C053016401DB :1098A00002C05701680189E24AA15BA1849FF001CF -:1098B000859FF00D1124EA5EF14FC501D601858B1D -:1098C000968BA78BB08F8CE0FE013196ACEDB2E1A8 -:1098D00001900D928A95E1F7C701D8018093E812B3 -:1098E0009093E912A093EA12B093EB128CE0FE0180 -:1098F0003D96A0EDB2E101900D928A95E1F780913D -:10990000CF128093F9108F5F823109F480E0809349 -:10991000CF12E7960FB6F894DEBF0FBECDBFDF9132 +:1098B000859FF00D1124EC5FF14FC501D601858B1A +:1098C000968BA78BB08F8CE0FE013196AAECB2E1AB +:1098D00001900D928A95E1F7C701D8018093D612C5 +:1098E0009093D712A093D812B093D9128CE0FE01B6 +:1098F0003D96AEEBB2E101900D928A95E1F7809131 +:10990000BD128093E7108F5F823109F480E080936D +:10991000BD12E7960FB6F894DEBF0FBECDBFDF9144 :10992000CF911F910F91FF90EF90DF90CF90BF905C :10993000AF909F908F907F906F905F904F903F90EF :109940002F9084CBE7960FB6F894DEBF0FBECDBF45 @@ -2470,44 +2470,44 @@ :109A500019F00F5F1F4F04C00E5F1F4F11969C91AE :109A6000D0E0512C612CC0E020E030E0A901780169 :109A700060ED762E790E89E08715D8F06394A8E022 -:109A8000A61598F05110C150A5E0B0E00E941667ED +:109A8000A61598F05110C150A5E0B0E00E940A67F9 :109A9000DC01CB01880F991FAA1FBB1F9C01AD01E0 :109AA000270D311D411D511D0BC0511009C0CF5F45 :109AB00007C0BEEF7B1209C0511007C05524539454 :109AC0000F5F1F4FD7019C91D2CF662009F450C081 -:109AD0007F01CA01B9010E9413642B013C0120E0FF -:109AE00030E0A9010E947363882349F1CF3F64F4F9 -:109AF0002AE037ED43E25CE3C301B2010E94CC658A +:109AD0007F01CA01B9010E9407642B013C0120E00B +:109AE00030E0A9010E946763882349F1CF3F64F405 +:109AF0002AE037ED43E25CE3C301B2010E94C06596 :109B00002B013C01CE5FF2CFCF3F59F42DEC3CEC62 -:109B10004CEC5DE3C301B2010E94CC652B013C011A +:109B10004CEC5DE3C301B2010E94C0652B013C0126 :109B20000EC0CC2361F020E030E040E251E4C301FC -:109B3000B2010E94CC652B013C01C150F2CFDD2364 +:109B3000B2010E94C0652B013C01C150F2CFDD2370 :109B400051F077FA709477F87094F5014082518261 :109B50006282738206C0D5014D925D926D927C92B5 :109B600013970C191D090150F701008381E001C012 :109B700080E0DF91CF911F910F91FF90EF90DF90E8 :109B8000CF90BF90AF907F906F905F904F9008956F -:109B900080916D0D84FD25C09FB7F89480916D0D67 -:109BA000806180936D0D9FBF0E941E43D8D6809127 -:109BB000F80D982F9C7021F49091F90D913089F453 -:109BC0009FB7843029F4F8948091F60D806204C028 -:109BD000F8948091F60D88608093F60D9FBF0C94E9 +:109B900080915B0D84FD25C09FB7F89480915B0D8B +:109BA000806180935B0D9FBF0E941E43CCD6809145 +:109BB000E60D982F9C7021F49091E70D913089F477 +:109BC0009FB7843029F4F8948091E40D806204C03A +:109BD000F8948091E40D88608093E40D9FBF0C940D :109BE000DB3B08952F923F924F925F926F927F924C :109BF0008F929F92AF92BF92CF92DF92EF92FF929D :109C00000F931F93CF93DF93CDB7DEB7C755D1091D :109C10000FB6F894DEBF0FBECDBF382E7B01219664 :109C20002CAF3DAF4EAF5FAF219764960FAF6497F7 -:109C30008091AC0D85FF4FC06B0100E010E07724F0 +:109C300080919A0D85FF4FC06B0100E010E0772402 :109C40007394D6018D909D90AD90BD906D0120E0F4 -:109C500030E0A901C501B4010E949165181664F0B5 -:109C6000F801E159F24F24A135A146A157A1C50140 -:109C7000B4010E94736387FD7092FA0D8091FA0D12 -:109C8000882319F18091F80D883061F081DF9FB74A -:109C9000F8948091F60D85608093F60D9FBF0E9429 -:109CA000AF4019C09FB7F89480916D0D8860809384 -:109CB0006D0D9FBF0E94AF408091F70D81110BC0C9 -:109CC0008091F80D8111F6CFE1CF0C5F1F4F0C3062 -:109CD000110509F0B6CF8091F80D823009F431C337 +:109C500030E0A901C501B4010E948565181664F0C1 +:109C6000F801E35AF24F24A135A146A157A1C5013D +:109C7000B4010E94676387FD7092E80D8091E80D42 +:109C8000882319F18091E60D883061F081DF9FB75C +:109C9000F8948091E40D85608093E40D9FBF0E944D +:109CA000AF4019C09FB7F89480915B0D8860809396 +:109CB0005B0D9FBF0E94AF408091E50D81110BC0ED +:109CC0008091E60D8111F6CFE1CF0C5F1F4F0C3074 +:109CD000110509F0B6CF8091E60D823009F425C355 :109CE000F70180819181A281B38189AF9AAFABAF37 :109CF000BCAF84819581A681B7818DAB9EABAFABA4 :109D0000B8AF80859185A285B38589AB9AABABABA3 @@ -2517,1019 +2517,1016 @@ :109D400055964D01FE0171965F0118976D010E94B5 :109D50002529ED88FE880F89188D29893A894B8934 :109D60005C896D857E858F8598890E948B2C8823E0 -:109D700009F4E3C26091B40C7091B50C8091B60CFB -:109D80009091B70C0E9415642B013C016091B00CBE -:109D90007091B10C8091B20C9091B30C0E9415643B -:109DA0009B01AC016091AC0C7091AD0C8091AE0C3C -:109DB0009091AF0C65962FAF659766963FAF66970B -:109DC00067964FAF679768965FAF68970E94156474 +:109D700009F4D7C26091A20C7091A30C8091A40C3D +:109D80009091A50C0E9409642B013C0160919E0CEE +:109D900070919F0C8091A00C9091A10C0E9409647D +:109DA0009B01AC0160919A0C70919B0C80919C0C72 +:109DB00090919D0C65962FAF659766963FAF66971D +:109DC00067964FAF679768965FAF68970E94096480 :109DD000FE01B1964F01DE015D965D0138976F017E :109DE0008301720165962FAD659766963FAD6697C4 :109DF00067964FAD679768965FAD68970E943D2C58 :109E0000D2D8332021F0F1E03F1629F0C9C0222436 :109E10002394312CC7C020E030E048EC52E4219676 -:109E20006CAD7DAD8EAD9FAD21970E9491651816EA +:109E20006CAD7DAD8EAD9FAD21970E9485651816F6 :109E300054F420E030E048EC52E421962CAF3DAFE2 :109E40004EAF5FAF2197298D3A8D4B8D5C8D69ADFB -:109E50007AAD8BAD9CAD0E9499622B013C012D8D9A +:109E50007AAD8BAD9CAD0E948D622B013C012D8DA6 :109E60003E8D4F8D58A16DA97EA98FA998AD0E94F6 -:109E700099624B015C0129A13AA14BA15CA169A99E -:109E80007AA98BA99CA90E9499626B017C01A3010C -:109E90009201C301B2010E94CC652B013C01A501D6 -:109EA0009401C501B4010E94CC659B01AC01C301C2 -:109EB000B2010E949A624B015C01A7019601C701A1 -:109EC000B6010E94CC659B01AC01C501B4010E94A2 -:109ED0009A620E94596620E030E040EF51E40E940F -:109EE000CC6521962CAD3DAD4EAD5FAD21970E9466 -:109EF0007A630E94E7631B016A30710518F48AE0F7 +:109E70008D624B015C0129A13AA14BA15CA169A9AA +:109E80007AA98BA99CA90E948D626B017C01A30118 +:109E90009201C301B2010E94C0652B013C01A501E2 +:109EA0009401C501B4010E94C0659B01AC01C301CE +:109EB000B2010E948E624B015C01A7019601C701AD +:109EC000B6010E94C0659B01AC01C501B4010E94AE +:109ED0008E620E944D6620E030E040EF51E40E9427 +:109EE000C06521962CAD3DAD4EAD5FAD21970E9472 +:109EF0006E630E94DB631B016A30710518F48AE00F :109F0000282E312C2AE037ED43EA5CE321966CAD34 -:109F10007DAD8EAD9FAD21970E94CC652AE037EDD7 -:109F200043EA5BE30E949A6220E030E040E752E4BB -:109F30000E94CC6520E030E040E752E40E94CC650E -:109F40006B017C016093870D7093880D8093890D60 -:109F500090938A0D60938B0D70938C0D80938D0D73 -:109F600090938E0D20E030E442E955E40E94916523 -:109F700087FF09C0C0928F0DD092900DE092910D95 -:109F8000F092920D0FC080E090E4A2E9B5E48093D6 -:109F90008F0D9093900DA093910DB093920D02C0F0 -:109FA000212C312C3F922F9281EC93E09F938F9341 -:109FB0000E944640B10180E090E00E9413646B0172 -:109FC0007C01298D3A8D4B8D5C8D69AD7AAD8BAD61 -:109FD0009CAD0E949962A70196010E947A632B961C -:109FE0006CAF7DAF8EAF9FAF2B972D8D3E8D4F8D7C -:109FF00058A16DA97EA98FA998AD0E949962A70169 -:10A0000096010E947A632F966CAF7DAF8EAF9FAFA3 -:10A010002F9729A13AA14BA15CA169A97AA98BA983 -:10A020009CA90E949962A70196010E947A63639697 -:10A030006CAF7DAF8EAF9FAF63970F900F900F9077 -:10A040000F9041E050E023965FAF4EAF23972396E9 -:10A050004EAD5FAD23972416350608F46CC12396E8 -:10A06000AEADBFAD2397BD01BB0F880B990B0E940E -:10A0700015646B017C019B01AC012B966CAD7DAD31 -:10A080008EAD9FAD2B970E94CC65298D3A8D4B8D5F -:10A090005C8D0E949A622B013C01A70196012F96CC -:10A0A0006CAD7DAD8EAD9FAD2F970E94CC652D8D93 -:10A0B0003E8D4F8D58A10E949A6227966CAF7DAF5E -:10A0C0008EAF9FAF2797A701960163966CAD7DADCC -:10A0D0008EAD9FAD63970E94CC6529A13AA14BA19B -:10A0E0005CA10E949A624092B80C5092B90C6092A6 -:10A0F000BA0C7092BB0C27962CAD3DAD4EAD5FAD4A -:10A1000027972093BC0C3093BD0C4093BE0C50930A -:10A11000BF0C6093C00C7093C10C8093C20C9093E1 -:10A12000C30CAE014B5D5F4F4A01DE0199965D01A4 -:10A13000FE01BD966F017B018C0127962CAD3DADD4 -:10A140004EAD5FAD2797C301B2010E942529CDA076 -:10A15000DEA0EFA0F8A489A49AA4ABA4BCA420918B -:10A16000A00C3091A10C4091A20C5091A30C6DA5B4 -:10A170007EA58FA598A90E94996220E030E040E278 -:10A1800053E40E94CC650E94E263072E000C880B0A -:10A19000990B0E94156469837A838B839C83209139 -:10A1A000A40C3091A50C4091A60C5091A70CC501B0 -:10A1B000B4010E94996220E030E040E253E40E9442 -:10A1C000CC650E94E263072E000C880B990B0E945D -:10A1D00015646D837E838F8398872091A80C3091BE -:10A1E000A90C4091AA0C5091AB0CC701B6010E947A -:10A1F000996220E030E044EB52E40E949A6220E051 -:10A2000030E040E253E40E94CC650E94E263072EF6 -:10A21000000C880B990B0E94156469877A878B87DD -:10A220009C870E94AF408091F70D811188C090916A -:10A23000F8108091CF12981303C00E94E947F1CF24 -:10A2400089809A80AB80BC80C501B4010E94E26322 -:10A250006093AC0C7093AD0C8093AE0C9093AF0CEC -:10A26000CD80DE80EF80F884C701B6010E94E263F2 -:10A270006093B00C7093B10C8093B20C9093B30CBC -:10A2800049845A846B847C84C301B2010E94E263D6 -:10A290006093B40C7093B50C8093B60C9093B70C8C -:10A2A00020916F0D3091700D4091710D5091720D94 -:10A2B000C501B4010E947A6369837A838B839C838E -:10A2C0002091730D3091740D4091750D5091760D64 -:10A2D000C701B6010E947A636D837E838F8398875E -:10A2E0002091770D3091780D4091790D50917A0D34 -:10A2F000C301B2010E947A6369877A878B879C8742 -:10A3000064962FAD649721964CAD5DAD6EAD7FAD7B -:10A310002197CE0101960E947149F1E0F093C80C9B -:10A3200023962EAD3FAD23972F5F3F4F23963FAF30 -:10A330002EAF23978CCE80E004C083E302C082E07E -:10A3400000C0C95ADF4F0FB6F894DEBF0FBECDBFB5 -:10A35000DF91CF911F910F91FF90EF90DF90CF9001 -:10A36000BF90AF909F908F907F906F905F904F9035 -:10A370003F902F9008951F920F920FB60F921124C5 -:10A380000BB60F922F933F934F935F936F937F93EF -:10A390008F939F93AF93BF93EF93FF938091F80DAB -:10A3A000813069F08091F60D811109C0F1DB9FB712 -:10A3B000F8948091F60D83608093F60D9FBFFF9116 -:10A3C000EF91BF91AF919F918F917F916F915F912D -:10A3D0004F913F912F910F900BBE0F900FBE0F909A -:10A3E0001F90189589B180719091AC0D96FD02C0B7 -:10A3F00090E18927882319F011F087E0089580E023 -:10A4000008952F923F924F925F926F927F928F9218 -:10A410009F92AF92BF92CF92DF92EF92FF920F93F3 -:10A420001F93CF93DF93CDB7DEB76B970FB6F8943A -:10A43000DEBF0FBECDBF9091F70D9111AFC1782E49 -:10A4400093E9A92E9DE0B92E9E01235F3F4F49015C -:10A4500000E010E0C12CD12C7601482F50E05B8B3E -:10A460004A8B902F0115110521F0013021F084E075 -:10A4700003C081E001C082E0D4018D934D01EA89DF -:10A48000FB8902C0F595E7959A95E2F7E0FF17C0C2 -:10A4900020E030E040EC5FEBD5016D917D918D9136 -:10A4A0009C910E94CC651B012C019B01AC01C70152 -:10A4B000B6010E949165181614F0610172010F5FD8 -:10A4C0001F4FB4E0AB0EB11C0330110551F6809064 -:10A4D000B20D9090B30DA090B40DB090B50D04E006 -:10A4E00011E0662463946BEF7DE0CE0101960E943B -:10A4F000702E8091AD0DE82FF0E0FD8BEC8BFE010E -:10A50000319627EF3DE0398B288B3B8F2A8F20E057 -:10A5100030E060E090E01601270157FA509457F8B8 -:10A5200050944A895B89022E02C0559547950A943A -:10A53000E2F740FF2AC06F5FAA8DBB8D14961D9273 -:10A540001D921D921C9217974C895D89022E02C0A4 -:10A55000559547950A94E2F740FF03C0112319F07F -:10A5600007C0112329F0C082D182E282F38204C0A5 -:10A5700020823182428253824DE050E04C0F5D1FB9 -:10A58000420F531FDA018C91982B2F5F3F4F349667 -:10A590004A8D5B8D4C5F5F4F5B8F4A8F2330310557 -:10A5A00009F0BFCFF92E70E080E090E00E941364C4 -:10A5B0000E9459669B01AC01C501B4010E94CC65A3 -:10A5C000AB01BC01F092140E4E8B5F8B688F798FBC -:10A5D0000E94F24720E04E895F89688D798DCE0117 -:10A5E00001960E9471490E949A320E94D33E112323 -:10A5F000E1F0F8DEFE013D9620E030E090E0619170 -:10A60000462F4F2159F0AC01022E02C055954795B7 -:10A610000A94E2F740FF02C06095F6222F5F3F4F99 -:10A620002330310561F7F092140E0E949A32809126 -:10A630006D0D8473B1F080916D0D807321F0A8DAF7 -:10A640000E94AF40ABC01111A4C0CCDE8721B9F786 -:10A650009FB7F89480916D0D8B7F80936D0D9FBF98 -:10A6600004C08F2D877009F0C2CF0E94123C0E9457 -:10A6700015488091B60D9091B70DBBD91625C9F03C -:10A6800020E030E040EA50E46091B80D7091B90DDF -:10A690008091BA0D9091BB0D0E94CC656B017C013D -:10A6A0008090AE0D9090AF0DA090B00DB090B10D18 -:10A6B00010C0C090B80DD090B90DE090BA0DF090D8 -:10A6C000BB0D8090B20D9090B30DA090B40DB090E2 -:10A6D000B50D015009F007CFC090AD0DD12C809081 -:10A6E000B80D9090B90DA090BA0DB090BB0D24019B -:10A6F000350177FA709477F870948FE6E82E8DE044 -:10A70000F82E00E010E08A899B89002E02C0959502 -:10A7100087950A94E2F780FF2AC0C601002E02C086 -:10A72000959587950A94E2F7D70180FF10C094961B -:10A730002D913D914D915C919797C501B4010E9477 -:10A740009A62F701208131814281538106C02D91A7 -:10A750003D914D915C91C301B2010E94CC650E9474 -:10A760009C65E889F98964837583868397830F5F85 -:10A770001F4F288939892C5F3F4F398B288B34E054 -:10A78000E30EF11C0330110509F0BDCF0E94F24722 -:10A7900005C080916D0D82FF5BCF51CF6B960FB6D8 -:10A7A000F894DEBF0FBECDBFDF91CF911F910F9107 -:10A7B000FF90EF90DF90CF90BF90AF909F908F90E1 -:10A7C0007F906F905F904F903F902F900895EBE6B1 -:10A7D000F0E080818F7E8083E8E6F0E080818E7FEC -:10A7E0008083089554985C9A8091AC0D83FF0BC0D0 -:10A7F00080916B00806180936B0080916800816024 -:10A80000809368000895E3CFF894F999FECF92BD44 -:10A8100081BD81E08FBB80B58627482F082E000CB4 -:10A82000550B262F30E024233523232B39F06F3F9F -:10A8300019F060BD84E006C084E104C0882321F0E3 -:10A8400060BD84E28FBBF99A789408958F929F92AD -:10A85000AF92BF92CF92DF92EF92FF920F931F932E -:10A86000CF937C014A016B01C40ED51E8B01C0E061 -:10A870005C01A61AB70AC8018A0D9B1D0C151D059F -:10A8800091F0C11108C02C2FCC0F330B232F221FA6 -:10A890002227221F01C021E0F80161918F01C22F00 -:10A8A000C60FB2DFE8CF6C2FC701880D991DCF917D -:10A8B0001F910F91FF90EF90DF90CF90BF90AF90DE -:10A8C0009F908F90A1CFF999FECF92BD81BD81E07D -:10A8D0008FBB80B508958F929F92AF92BF92CF9217 -:10A8E000DF92EF92FF920F931F93CF934B017A0168 -:10A8F0006C01C40ED51E8C01C0E05B01A81AB90A18 -:10A90000C501800F911F0C151D0591F0DCDFC111F1 -:10A9100008C02C2FCC0F330B232F221F2227221FDE -:10A9200001C021E0C22FC80FF80181938F01E8CF49 -:10A93000C4018E0D9F1DC7DF21E030E0C81711F064 -:10A9400020E030E0C901CF911F910F91FF90EF906F -:10A95000DF90CF90BF90AF909F908F9008955C98BC -:10A960000895CF93DF93CDB7DEB7CC56D1090FB69C -:10A97000F894DEBF0FBECDBF8091C000826080938F -:10A98000C0001092C50080E18093C4008091C10096 -:10A9900080618093C1008091C10088608093C10074 -:10A9A0008091C10080688093C1000E94D347869A3D -:10A9B000879A829A80910A01886080930A01809127 -:10A9C0000A01826080930A0180910701816080936F -:10A9D0000701809A819A579A80910701806180933C -:10A9E000070180910701886080930701809107012A -:10A9F0008460809307018091080180618093080141 -:10AA000080910801886080930801809108018B7F04 -:10AA1000809308018091AC0D82FF08C08A9A8091D2 -:10AA200008018160809308015F9A07C08A9880912D -:10AA300008018E7F809308015F98809181008F7E4E -:10AA40008093810080918100886080938100809153 -:10AA500080008C7F80938000809180008F70809335 -:10AA6000800080916E00887F80936E0014BC15BCBE -:10AA700080916E00816080936E0054985C9A809102 -:10AA80006D00806180936D00809168008460809388 -:10AA900068008AE090E00E94F94C0E945132399A95 -:10AAA0003B9A419A439A809101018460809301010D -:10AAB000809101018068809301018091020184608E -:10AAC0008093020180910201806880930201559A6F -:10AAD000569A5D9A5E9A0E94272D80E090E00E942F -:10AAE000872D6093A00C7093A10C8093A20C90937F -:10AAF000A30C81E090E00E94872D6093A40C7093DA -:10AB0000A50C8093A60C9093A70C82E090E00E9485 -:10AB1000872D6093A80C7093A90C8093AA0C909336 -:10AB2000AB0C0E94A12520E030E04AE754E464E049 -:10AB300071E080E090E00E94352584E893E0C3DE78 -:10AB40008093960C85E893E0BEDE8093970C08E92D -:10AB500013E078012FEFE21AF20AC801B4DEF8011F -:10AB6000E050F74F808387013CE9E31633E0F306BA -:10AB700081F70EE813E078018FEFE81AF80AC801B0 -:10AB8000A2DEF801E25FF64F8083870192E9E916C1 -:10AB900093E0F90681F70E94CB310E94C8310E94F0 -:10ABA000B73120E030E044EB52E46091A80C7091A2 -:10ABB000A90C8091AA0C9091AB0C0E9499627B0128 -:10ABC0008C012091A40C3091A50C4091A60C5091C1 -:10ABD000A70C6091A00C7091A10C8091A20C909197 -:10ABE000A30CE0EC8E2EECE09E2EFCEBAF2EFCE0F6 -:10ABF000BF2EA8EBCA2EACE0DA2E0E94DB2A809191 -:10AC0000FB0D9091FC0DA091FD0DB091FE0D809378 -:10AC1000AC0C9093AD0CA093AE0CB093AF0C8091A4 -:10AC2000FF0D9091000EA091010EB091020E809345 -:10AC3000B00C9093B10CA093B20CB093B30C809174 -:10AC4000030E9091040EA091050EB091060E809314 -:10AC5000B40C9093B50CA093B60CB093B70C809144 -:10AC60007A00816880937A009B98A39A8BE493E0A2 -:10AC70000E9406438EE1E7EFFDE0DF011D928A9519 -:10AC8000E9F781E08093F70D78949091AC0D94FDF5 -:10AC90008093F80DFE017596A396FFAFEEAFA397D4 -:10ACA0009E012F5F3F4FA5963FAF2EAFA597809196 -:10ACB0004C1280934B128FE3EEE2FDE0DF011D9218 -:10ACC0008A95E9F761E57DE080E00E9431448111D9 -:10ACD00003C087E00E9405460C9A549A549A0E9439 -:10ACE0001E43549A3CDE7EDD54985C9A0E941548BF -:10ACF0000E94123C0E94F2476BEF7DE085E49DE0EC -:10AD00000E94702E1092F70D10926D0D1092F60D9C -:10AD10001092F90D1092FA0D80EE92E00E94A1407F -:10AD20008091F80D8130E1F488E096E00E94A14026 -:10AD300082EE95E00E94A14085E995E00E94A14045 -:10AD4000312C212CFE01FD966F96FFAFEEAF6F9771 -:10AD50009E01275D3F4FA1963FAF2EAFA1971BC02D -:10AD60001092F80DEDCFE92FF0E0E553FE4E808113 -:10AD70009F5F903809F490E090934B128F3F09F455 -:10AD80001AC48A3079F08D3069F0222009F4EEC3BC -:10AD9000893209F4E6C390914B1280914C128913C9 -:10ADA000E2CF09C407ED1CE0E32DF0E0E952F34FD8 -:10ADB00010820E94AF408091F70D8111CFC38AE0CD -:10ADC000A396AEADBFADA3971D928A95E9F780918A -:10ADD000D70C843209F01CC381E08DAF8091D80C70 -:10ADE000833481F034F4882351F0843209F010C1A7 -:10ADF00009C0873439F0883509F00AC103C084EBF3 -:10AE000093E0F9C19091D90C9111F4C2833409F403 -:10AE1000CEC01CF4843239F0F3C2873461F0883537 -:10AE200009F4E2C0EDC28091F80D887109F0E4C226 -:10AE30000E94A646E5C282EB93E00E94A140809169 -:10AE40002E0D823091F038F4882361F08130A9F41E -:10AE50008CEA93E00CC0833069F0883071F482EAA8 -:10AE600093E005C08FEA93E002C089EA93E00E9474 -:10AE7000A1400CC086EA93E0FACF8DE993E00E94EE -:10AE8000A14080912E0D82500E9493408AE993E068 -:10AE90000E94A1408091340D8A5C0E949340809171 -:10AEA000320D813049F028F0823051F48BE893E084 -:10AEB00005C085E993E002C080E993E00E94A140CB -:10AEC0008091300D811103C086E893E002C081E8D3 -:10AED00093E00E94A1408091310D811103C08CE765 -:10AEE00093E002C087E793E00E94A14080912F0D7C -:10AEF000813019F482E793E002C08DE693E00E946E -:10AF0000A1408091350D813049F028F0823051F414 -:10AF100081E693E005C089E693E002C085E693E010 -:10AF20000E94A1408091370D813031F040F0823095 -:10AF300051F489E593E005C08DE593E002C085E515 -:10AF400093E00E94A1408091360D882329F0823041 -:10AF500039F48DE493E002C081E593E00E94A140C2 -:10AF60008AE493E00E94A1408091400D0E949340AA -:10AF700087E493E00E94A14060913C0D70913D0DEB -:10AF800080913E0D90913F0D0E94774084E493E0C4 -:10AF90000E94A1406091380D7091390D80913A0D59 -:10AFA00090913B0D0E94774080E493E024C1809112 -:10AFB000F80D823049F40E94C84D88E096E00E9466 -:10AFC000A1408FEB95E00BC0811116C282E0809307 -:10AFD000F80D88E096E00E94A14088EC95E00E9480 -:10AFE000A14085E995E007C18091F80D813009F015 -:10AFF00007C288E096E00E94A14080ED95E00E94A3 -:10B00000A14085E995E00E94A1401092F80DF8C199 -:10B010009091F80D923008F0EFC1893409F4C9C05D -:10B0200034F4833259F0883409F480C069C18E3415 -:10B0300009F43AC1823509F4FDC062C182E08DAFE6 -:10B040008091D90C8111D6C110E0BE016F5F7F4F96 -:10B05000812F0E943144811104C087E00E9405467F -:10B06000CFC18DE393E00E94A140163029F0173044 -:10B0700041F487E393E002C08AE393E00E94A14099 -:10B0800004C086E3810F0E94934085E393E00E9411 -:10B09000A140FE0131963F0100E0D3016D917D9109 -:10B0A0008D919D913D010E948540023019F083E30E -:10B0B00093E002C08FE293E00E94A1400F5F033053 -:10B0C00061F71F5F183009F689E293E00E94A14002 -:10B0D0003DE5632E3DE0732E10E0F3016191719127 -:10B0E000819191913F010E948540123019F087E2D1 -:10B0F00093E002C083E293E00E94A1401F5F1330FF -:10B1000061F78DE193E00E94A1406091690D70911B -:10B110006A0D80916B0D90916C0D0E94854089E1C4 -:10B1200093E00E94A1400E945F466AC18091AC0DED -:10B1300084FF5EC184E08093F80D49DB84E061D92F -:10B1400083E05FD90E94AF408091F70D811107C065 -:10B150006BEF7DE085E49DE00E94702E43DB8091E3 -:10B16000F70D81114DC11092F80D0E94DB3B10E0EC -:10B17000812F0E947930811102C087E013C0809135 -:10B18000D70C882389F087ED9CE00E94064387ED69 -:10B190009CE00E94EE04811105C082E999E00E94C2 -:10B1A000A14002C00E940546113009F429C111E0F6 -:10B1B000DFCF82E08DAF8091D90C81111FC040E5B7 -:10B1C00050E06EEA7BE087ED9CE085DB892B49F45B -:10B1D0001092D70C40E550E067ED7CE08EEA9BE0F2 -:10B1E00035DB89E093E00E94A14087ED9CE00E945E -:10B1F000064385E093E00E94A14002C193E09DAF29 -:10B200008D3309F0F7C083E0282F30E0F901E952CF -:10B21000F34F9081D901AC52B34F9C938F5F9081D3 -:10B220009111F2CF8DAF40E550E067ED7CE08EEA02 -:10B230009BE0ACC082E08DAF8091D90C833509F0E2 -:10B24000D9C083E08DAF8091DA0C843509F0D2C08B -:10B2500084E08DAF8091DB0C8D3309F0CBC0809101 -:10B26000DD0C8111C7C085E08DAF8091DC0C84328C -:10B2700039F08A3239F0833209F0BCC082E003C071 -:10B2800081E001C08FEF0E94514488E096E00E9467 -:10B29000A14089E995E00E94A14085E995E00E94DE -:10B2A000A1400E94C84DACC082E08DAF8091D90C06 -:10B2B000811122C010E0812F0E947930811104C0D9 -:10B2C00087E00E94054613C082E093E00E94A140FF -:10B2D000812F0E94934080E093E00E94A14087ED7F -:10B2E0009CE00E9406438DEF92E00E94A140113045 -:10B2F00009F486C011E0DFCF91117EC011E001C0DA -:10B3000010E0AE01475D5F4FBE01635C7F4F87ED8C -:10B310009CE00E94044D811102C082E076C0EDAD38 -:10B3200081E08E0F8DAFF0E0E952F34F90819D33B5 -:10B3300009F060C0112361F1482F50E0282F30E060 -:10B34000D901A952B34F9C91241B350BF901E95245 -:10B35000F34F90838F5F9C919111F0CF8DAF87ED6C -:10B360009CE00E94EE04811149C069A57AA58BA5D5 -:10B370009CA50E949A660E94E763F1E56F9FC00159 -:10B38000112440E550E067ED7CE0955F5FDA38C05E -:10B39000AE014F5F5F4FBE01635C7F4F87ED9CE066 -:10B3A0000E94044D882309F4B8CFEDADF0E0E952D6 -:10B3B000F34F808181111EC049A45AA46BA47CA4C0 -:10B3C00020E030E04FE753E4C301B2010E949165F1 -:10B3D000181684F0C980DA80EB80FC80C301B201CA -:10B3E0000E94E763862FB701A6010E94254306C08D -:10B3F00085E00BC083E009C088E007C0811105C06B -:10B4000082E999E00E94A140A9C00E940546A6C019 -:10B41000833239F5A3962FADA3972F93A2963FAD14 -:10B42000A2973F938FE493E09F938F931F930F9383 -:10B430000E946167A396EEADFFADA3970190002037 -:10B44000E9F7BF01A3968EAD9FADA397681B790B5B -:10B450006952734F0F900F900F900F900F900F90B5 -:10B4600009C0873429F08D3419F0803509F076C091 -:10B4700067ED7CE0DB018C91803539F583EE9BE054 -:10B480000E942B678D898823C1F0A396BFADA39737 -:10B49000BF93A296EFADA297EF9387E593E09F93BA -:10B4A0008F9387E19CE09F938F930E9432670F9068 -:10B4B0000F900F900F900F900F9082E3E7EDFCE05C -:10B4C000DF011D928A95E9F749C08091E803843134 -:10B4D00048F08BE593E09F938F930E9446400F9036 -:10B4E0000F903CC00091E603B6E60B9F800111244B -:10B4F000C80186519C4F0E942B678D898823C1F01B -:10B50000A396EFADA397EF93A296FFADA297FF93FB -:10B5100087E593E09F938F93025E1B4F1F930F93DA -:10B520000E9432670F900F900F900F900F900F9026 -:10B5300082E3E7EDFCE0DF011D928A95E9F7809157 -:10B54000E603833120F48F5F8093E60302C01092FC -:10B55000E6038091E8038F5F8093E803312C212C70 -:10B560002AC0B1E02B1224C0212C15CC813208F462 -:10B5700012CC8F3209F40FCC8832B9F08B33C1F082 -:10B58000EEE4E31528F48BE00E940546312C03CC51 -:10B59000232D30E033949FE9980FF901E952F34FDE -:10B5A0009A3108F480528083F6CB22242394F3CB83 -:10B5B00022E0222EF0CB8091E30B882399F083EEDA -:10B5C0009BE00E94EE048093150C67E17CE00E94F2 -:10B5D0005B3181E08093160C82E3A3EEBBE01D9209 -:10B5E0008A95E9F78091C50C811139C08091E803F3 -:10B5F0008823A9F16090E70306E6069DC0011124A7 -:10B60000FC01E651FC4F3F01CF010E94EE04D30143 -:10B61000D2968C937090E703079D80011124B801A6 -:10B62000625E7B4F06511C4FF80182A90E945B317C -:10B6300081E0D801D3968C9382E3F80111928A9528 -:10B64000E9F7F2E1F71520F073947092E70302C076 -:10B650001092E7038091E80381508093E8030E94F1 -:10B66000E9470E94AF408091F70D811120CB809176 -:10B67000160C882369F087E19CE00E94064382E370 -:10B68000E7E1FCE0DF011D928A95E9F71092160CC4 -:10B690008091F80D882309F4ECC08091C60C8823B2 -:10B6A00009F41AC11092C60C6D961CAE1DAE1EAEEA -:10B6B0001FAE6D9769961CAE1DAE1EAE1FAE69978C -:10B6C00065961CAE1DAE1EAE1FAE659784E16F96EB -:10B6D000AEADBFAD6F97E82F1D92EA95E9F7A19641 -:10B6E000AEADBFADA197E82F1D92EA95E9F7A396FD -:10B6F000AEADBFADA397E82F1D92EA95E9F7A596E9 -:10B70000AEADBFADA5971D928A95E9F780E090E0B8 -:10B710000E94872DA9966CAF7DAF8EAF9FAFA99782 -:10B7200081E090E00E94872DAD966CAF7DAF8EAF2B -:10B730009FAFAD9782E090E00E94872D6B017C0166 -:10B7400023E333E343E35FE360910002709101027E -:10B750008091020290910302ECD620E030E040E0BC -:10B760005FE30E94CC6520E030E044E353E40E94B4 -:10B77000CC659B01AC0160E070E084E393E4D9D632 -:10B780002B013C0120E030E044EB52E4C701B6015C -:10B79000D0D6FE01EF5AFF4F4F019E012B5A3F4F6B -:10B7A0005901DE01A75ABF4F6D017B018C01AD9697 -:10B7B0002CAD3DAD4EAD5FADAD97A9966CAD7DADF9 -:10B7C0008EAD9FADA9970E94DB2AA401B501C601E9 -:10B7D0000E947A286D966CAD7DAD8EAD9FAD6D9754 -:10B7E0008E01035C1F4F24E045E011D469966CADD7 -:10B7F0007DAD8EAD9FAD69970451110924E045E000 -:10B8000006D465966CAD7DAD8EAD9FAD6597045148 -:10B81000110924E045E0FBD30451110924E045E07F -:10B82000C301B201F4D31F930F93A396FFADA39767 -:10B83000FF93A2962FADA2972F93A1963FADA1970C -:10B840003F93A0968FADA0978F936F969FAD6F9704 -:10B850009F936E96AFAD6E97AF938DE693E09F93F7 -:10B860008F930E9446400FB6F894DEBF0FBECDBF47 -:10B8700033C004E110E086E6782E92E3F92E809141 -:10B88000E20B789EC0011124FC01E651FC4F23A974 -:10B89000222309F402CF825E9B4F0E9406438091CF -:10B8A000E20B789E90011124F901E25EFB4FDF016B -:10B8B0009F2D1D929A95E9F7F901E651FC4F13AAC5 -:10B8C000833120F48F5F8093E20B02C01092E20B71 -:10B8D00001501109A1F6E1CE82B301E083FB882774 -:10B8E00080F980279091E9038917D9F08AE090E0E8 -:10B8F0000E94F94C12B313FB112710F91027809105 -:10B90000E903181771F01F921F9381E893E09F934A -:10B910008F930E9446401093E9030F900F900F9071 -:10B920000F908091F80D811136CA8091C70C882341 -:10B9300009F431CA8091C80C882309F42CCAACE8F8 -:10B94000B3E0BF93AF930E9446401092C80C0F9093 -:10B950000F9021CAFF920F931F93CF93DF9300D0D4 -:10B960001F92CDB7DEB7322F2091F80D223009F4A7 -:10B9700092C0F02E132F042F9B01AC0169833A83F0 -:10B980004B835C8327D31092130E1092BC0D8091D1 -:10B99000AC0D29813A814B815C8187FD03C080E138 -:10B9A0008093BC0D112331F09091BC0D80E189276B -:10B9B0008093BC0D89B180719091BC0D891791F075 -:10B9C0009FB7F8948091F60D80618093F60D9FBF2C -:10B9D00029833A834B835C830E94AF405C814B8117 -:10B9E0003A8129818091F70D811155C06AEE7DE081 -:10B9F00081E00E94F24D81E080936E0D9FB7F89434 -:10BA000080916D0D826080936D0D9FBF0E94AF404D -:10BA10008091F70D81113FC08091F80D8111F6CF13 -:10BA200080916E0D8130A9F4FF2051F08CE0EBEF96 -:10BA3000FDE0A7E0BEE001900D928A95E1F70CC011 -:10BA40009FB7F8948091F60D80618093F60D9FBFAB -:10BA500003C081E08093130E10926E0D0E94AF40E0 -:10BA60008091F70D811117C00E94123C0E94154869 -:10BA70000E94F2476BEF7DE08AEE9DE00E94702EFF -:10BA80000F900F900F900F90DF91CF911F910F911A -:10BA9000FF900C945F460F900F900F900F90DF91E6 -:10BAA000CF911F910F91FF9008952F923F924F9247 -:10BAB0005F926F927F928F929F92AF92BF92CF923E -:10BAC000DF92EF92FF920F931F93CF93DF93CDB747 -:10BAD000DEB7E1970FB6F894DEBF0FBECDBF6D8322 -:10BAE0007E838F8398872F87388B498B5A8B0D8B5A -:10BAF000AD868B8A24E0E29E80011124C8018B5B15 -:10BB0000924F9F8B8E8BD801A453B24FB98FA88FC1 -:10BB10008D909D90AD90BC90FC012081318142813F -:10BB20005381C501B40106D56A8F7B8F8C8F9D8FA1 -:10BB3000F4E0CF9E1001112491012B5B324F3F8F17 -:10BB40002E8FC1018453924F99A388A3DC01CD901D -:10BB5000DD90ED90FC90F90120813181428153818B -:10BB6000C701B601E7D46AA37BA38CA39DA32401DC -:10BB7000350177FA709477F87094D701C601B05800 -:10BB800089839A83AB83BC83F801E651F24F2A8DF7 -:10BB90003B8D4C8D5D8D6081718182819381C9D493 -:10BBA0004B015C01F101E651F24F2AA13BA14CA1EE -:10BBB0005DA16081718182819381BBD46B017C0125 -:10BBC000A5019401C301B201E7D769877A878B8702 -:10BBD0009C87A701960169817A818B819C81DCD742 -:10BBE0009B01AC0169857A858B859C85A3D4698787 -:10BBF0007A878B879C87A7019601C301B201CCD7B6 -:10BC00006B017C01A501940169817A818B819C8102 -:10BC1000C3D79B01AC01C701B6018BD429853A85F6 -:10BC20004B855C85FAD46B017C019B89992389F053 -:10BC30002DEB37E346E055EBC701B60172D787FD20 -:10BC40001AC02BED3FE049EC50E4C701B60171D4B6 -:10BC500010C02DEB37E346E055E3C701B60143D5ED -:10BC600018164CF02BED3FE049EC50E4C701B6014B -:10BC700061D46B017C018090A80D9090A90DA090DB -:10BC8000AA0DB090AB0D2D813E814F815885CA0120 -:10BC9000B90150D4A50194014CD49B01AC01C5015C -:10BCA000B4017AD70E9459664B015C0120E030E074 -:10BCB00040E05FE3C701B6016FD72D813E814F8120 -:10BCC00058856AD79F77A501940114D5E9D57FD50A -:10BCD0007C8B6B8BDB01AB2B09F459C14B01A12C85 -:10BCE000B12CBD89BB2371F0C501B4019CD59B016A -:10BCF000AC016F85788989899A894ED76F87788B4F -:10BD0000898B9A8BC501B4018ED54B015C019B01D7 -:10BD1000AC01C701B601EED46D837E838F83988713 -:10BD2000FD85E4E0FE9FC00111249C012B5B324F96 -:10BD30003E872D87FC01E651F24FD9012D913D91AF -:10BD40004D915C916081718182819381F2D3A501D3 -:10BD50009401D0D46EA77FA788AB99AB2D813E818B -:10BD60004F815885CA01B90117D79B01AC0160E02A -:10BD700070E080E090E4DDD36B017C012BEA3AEACD -:10BD80004AE25EE36D817E818F81988505D74B0104 -:10BD90005C0120E030E040E850E4C701B601CAD3BE -:10BDA0009B01AC01C501B401F7D669877A878B87FF -:10BDB0009C8720E030E040E05FE3C701B601ECD6AD -:10BDC0006EA37FA388A799A710E022242394312C87 -:10BDD000EB89FC892E163F0609F4D9C01C3008F007 -:10BDE0003AC02EA13FA148A559A569817A818B81CE -:10BDF0009C81D2D66B017C0129853A854B855C8577 -:10BE0000C301B201C9D6A701960194D37B01082FC3 -:10BE1000D92E2EA13FA148A559A5C301B201BCD678 -:10BE20004B015C0129853A854B855C8569817A8166 -:10BE30008B819C81B1D69B01AC01C501B40179D342 -:10BE40002B013C011F5FC701A02FBD2D89839A8361 -:10BE5000AB83BC835BC0B10180E090E0E4D42D8172 -:10BE60003E814F81588598D66B017C0140D469830F -:10BE70007A838B839C83C701B60111D74B015C0188 -:10BE8000E88DF98DC080D180E280F380F7FAF094DC -:10BE9000F7F8F094A8A1B9A18D919D910D90BC9156 -:10BEA000A02D8AA79BA7ACA7BDA729813A814B816A -:10BEB0005C81C701B60170D62B013C01A50194013C -:10BEC0006AA57BA58CA59DA567D69B01AC01C30186 -:10BED000B20130D32B013C01A5019401C701B60189 -:10BEE0005BD66B017C0129813A814B815C816AA51B -:10BEF0007BA58CA59DA550D69B01AC01C701B601C1 -:10BF000018D369837A838B839C8310E0A301920109 -:10BF10006A8D7B8D8C8D9D8D0DD3EE89FF8960831D -:10BF200071838283938329813A814B815C816AA1E9 -:10BF30007BA18CA19DA1FED2AE8DBF8D6D937D9313 -:10BF40008D939C9313972EA53FA548A959A9ED85DC -:10BF5000FE856081718182819381ECD2AD85BE8541 -:10BF60006D937D938D939C9313970D892F853889BD -:10BF700049895A8965E47DE081E00E94F24D809113 -:10BF8000F70D81110EC0BFEF2B1A3B0A21CF0D898F -:10BF90002F85388949895A896AEE7DE081E00E94BF -:10BFA000F24DE1960FB6F894DEBF0FBECDBFDF9124 -:10BFB000CF911F910F91FF90EF90DF90CF90BF90A6 -:10BFC000AF909F908F907F906F905F904F903F9039 -:10BFD0002F900895CF930E94E947C9E20E94AF4095 -:10BFE0008091F70D811111C08091F8109091F91096 -:10BFF000981739F0C89FC00111248A5E914F892B90 -:10C0000069F78091F80D883049F3CF910895EF9248 -:10C010000F931F93CF93DF93E80147FD02C034E0F5 -:10C0200001C034E1E42F440FFF0BF7FF03C0F1958B -:10C03000E195F109E32E022F2E2FAE0107D0CE019C -:10C04000DF91CF911F910F91EF9008954F925F92E2 -:10C050006F927F929F92AF92BF92CF92DF92EF92B8 -:10C06000FF920F931F93CF93DF93CDB7DEB729973E -:10C070000FB6F894DEBF0FBECDBF6A01122FB02EEF -:10C080002BE3201720F0FF24F394F00E02C0BCE352 -:10C09000FB2E0F2D27E0AE014F5F5F4F64D1AC0147 -:10C0A0008981982F9970913031F0E1FC06C0E0FE53 -:10C0B00006C090E205C09DE203C09BE201C090E093 -:10C0C000EE2DE07183FF3CC0911102C083E001C0FE -:10C0D00084E0811718F4212F281B01C020E0E11112 -:10C0E0000BC0F601822F30E2882319F03193815082 -:10C0F000FBCFC20ED11C20E0992329F0D6019C93DE -:10C10000F60131966F01C6010396E2FE0AC03EE4D5 -:10C11000D6013C9341E411964C93119712963C93AF -:10C1200006C03EE6F601308341E641833283FC01DE -:10C13000322F40E2332309F442C041933150FACF09 -:10C1400082FF44C0911102C083E001C084E08117E6 -:10C1500018F4212F281B01C020E0E1110BC0F601CB -:10C16000822F30E2882319F031938150FBCFC20E29 -:10C17000D11C20E0992329F0D6019C93F601319639 -:10C180006F01C6010396E2FE0BC039E4D6013C9371 -:10C190003EE411963C93119736E412963C9307C007 -:10C1A00039E6F60130833EE6318336E63283FC0120 -:10C1B000322F40E2332319F041933150FBCFFC0181 -:10C1C000E20FF11D10828EEF9FEFB7C0F1E09111E9 -:10C1D00001C0F0E06F2F70E01416150624F49A01E8 -:10C1E0002F5F3F4F02C021E030E0260F371FBB20FA -:10C1F00029F06B2D70E06F5F7F4F02C060E070E050 -:10C20000260F371F612F70E0261737071CF4121B0B -:10C21000212F01C020E03E2D387159F4D601322F74 -:10C2200060E2332319F06D933150FBCFC20ED11C65 -:10C2300020E0FF2331F0D6019C93B6016F5F7F4F62 -:10C240006B01E1110BC0F601922F30E3992319F035 -:10C2500031939150FBCFC20ED11C20E09F2D940F43 -:10C260003A81782F7071A72E84FF03C0313309F40F -:10C270009150191624F4993018F098E001C091E01B -:10C28000E42F852F57FF02C0E0E080E06E2F782F6B -:10C29000E0E0F0E0AEE29A2E3A01691A71082A0154 -:10C2A000461A570A0B2D10E01195019511096F3FA1 -:10C2B0008FEF780729F4D6019C92C60101966C0194 -:10C2C0004617570784F0661677066CF47F01E40C76 -:10C2D000F51CA1E0B0E0AC0FBD1FEA0EFB1ED701BC -:10C2E0001196BC9002C090E3B92E6150710931964D -:10C2F000C60101967C016017710724F0D601BC923B -:10C300006C01D5CF6417750741F4363320F435330B -:10C3100021F4A11002C081E3B82EF601B082F7012A -:10C32000822F90E2882319F091938150FBCFF7017F -:10C33000E20FF11D108280E090E029960FB6F8948C -:10C34000DEBF0FBECDBFDF91CF911F910F91FF9048 -:10C35000EF90DF90CF90BF90AF909F907F906F90C5 -:10C360005F904F900895283008F027E03327DA01D6 -:10C37000990F311D87FD916000966105710539F4B3 -:10C3800032602E5F3D9330E32A95E1F708959F3F99 -:10C3900030F080387105610509F03C5F3C5F3D93EA -:10C3A000913008F08068911DDF93CF931F930F9316 -:10C3B000FF92EF92192F987F9695E92F9695969573 -:10C3C000E90FFF27EC5CFD4F99273327EE24FF246C -:10C3D000A701E70105900894079428F4360FE71E9B -:10C3E000F81E491F511D660F771F881F991F06945D -:10C3F000A1F70590079428F4E70EF81E491F561F71 -:10C40000C11D770F881F991F661F0694A1F705901D -:10C41000079428F4F80E491F561FC71FD11D880F17 -:10C42000991F661F771F0694A1F70590079420F4C3 -:10C43000490F561FC71FD81F990F661F771F881FE8 -:10C440000694A9F784911095177041F0D695C79579 -:10C4500057954795F794E7941A95C1F7EAEDF1E0FF -:10C4600068941590159135916591959105907FE2AD -:10C470007395E118F10A430B560BC90BD009C0F7AD -:10C48000E10CF11E431F561FC91FD01D7EF47033EF -:10C4900011F48A95E6CFE894015030F0080F0AF4C1 -:10C4A0000027021708F4202F2395022F7A3328F053 -:10C4B00079E37D932A95E9F710C07D932A9589F653 -:10C4C000069497956795379517951794E118F10A93 -:10C4D000430B560BC90BD00998F023957E917395A9 -:10C4E0007A3308F070E37C932013B8F77E91706183 -:10C4F0007D9330F0839571E37D9370E32A95E1F7A6 -:10C500001124EF90FF900F911F91CF91DF91992708 -:10C5100087FD909508959F939F77D5D10F90002028 -:10C520003AF49058A2EA2AED3FE049E450E413D0EF -:10C5300096C25058BB27AA270ED091C25AD230F0CB -:10C540005FD220F031F49F3F11F41EF42AC20EF4A2 -:10C55000E095E7FBF7C1E92FA4D280F3BA17620791 -:10C5600073078407950718F071F49EF5D3C20EF493 -:10C57000E0950B2EBA2FA02D0B01B90190010C01F3 -:10C58000CA01A0011124FF27591B99F0593F50F40B -:10C59000503E68F11A16F040A22F232F342F442763 -:10C5A000585FF3CF469537952795A795F04053955B -:10C5B000C9F77EF41F16BA0B620B730B840BBAF02B -:10C5C0009150A1F0FF0FBB1F661F771F881FC2F796 -:10C5D0000EC0BA0F621F731F841F48F487957795AA -:10C5E0006795B795F7959E3F08F0B3CF9395880F61 -:10C5F00008F09927EE0F979587950895FAD158F08E -:10C6000080E891E009F49EEFFBD128F040E851E08A -:10C6100059F45EEF09C0C5C17DC2E92FE07841D26F -:10C6200068F3092E052AC1F326173707480759076B -:10C6300038F00E2E07F8E02569F0E025E0640AC026 -:10C64000EF6307F8009407FADB01B9019D01DC01F3 -:10C65000CA01AD01EF935DD002D20AD05F9155239C -:10C6600031F02BED3FE049E450FD49EC63CF0895F4 -:10C67000DF93DD27B92FBF7740E85FE31616170673 -:10C6800048075B0710F4D92F50D29F938F937F9365 -:10C690006F934DD3E6E6F1E087D1E1D12F913F9141 -:10C6A0004F915F9185D2DD2349F09058A2EA2AED9F -:10C6B0003FE049EC5FE3D0785D274DDFDF91CFC1EC -:10C6C00012D280F09F3740F491110EF424C260E042 -:10C6D00070E080E89FE3089526F01B16611D711D30 -:10C6E000811D36C150C10AD108F481E0089590D16E -:10C6F000E395C6C10CD0B3C183D140F07AD130F0FC -:10C7000021F45F3F19F01EC1511105C24AC1C9D1C0 -:10C7100098F39923C9F35523B1F3951B550BBB2708 -:10C72000AA2762177307840738F09F5F5F4F220FB5 -:10C73000331F441FAA1FA9F333D00E2E3AF0E0E8AE -:10C7400030D091505040E695001CCAF729D0FE2FFA -:10C7500027D0660F771F881FBB1F2617370748078C -:10C76000AB07B0E809F0BB0B802DBF01FF27935842 -:10C770005F4F2AF09E3F510568F0E4C0CCC15F3F97 -:10C78000ECF3983EDCF3869577956795B795F7952A -:10C790009F5FC9F7880F911D9695879597F9089522 -:10C7A000E1E0660F771F881FBB1F621773078407BE -:10C7B000BA0720F0621B730B840BBA0BEE1F88F7CD -:10C7C000E095089504D06894B111A5C1089571D180 -:10C7D00088F09F5790F0B92F9927B751A0F0D1F06A -:10C7E000660F771F881F991F1AF0BA95C9F712C0F4 -:10C7F000B13081F08FD1B1E008958CC1672F782FCF -:10C800008827B85F39F0B93FCCF38695779567955F -:10C81000B395D9F73EF490958095709561957F4FCB -:10C820008F4F9F4F0895E89409C097FB3EF4909571 -:10C830008095709561957F4F8F4F9F4F9923A9F0F9 -:10C84000F92F96E9BB279395F69587957795679588 -:10C85000B795F111F8CFFAF4BB0F11F460FF1BC0CC -:10C860006F5F7F4F8F4F9F4F16C0882311F096E95F -:10C8700011C0772321F09EE8872F762F05C066230D -:10C8800071F096E8862F70E060E02AF09A95660FC6 -:10C89000771F881FDAF7880F9695879597F908957F -:10C8A00022D180F09F3740F491110EF034C160E046 -:10C8B00070E080E89FEB089526F41B16611D711D42 -:10C8C000811D46C060C0DF93CF931F930F938B01F0 -:10C8D000EC01E3E9F1E068D0C2D09801AE018B0130 -:10C8E000EC0160E070E080E89FE323DEE2D1980194 -:10C8F000AE010F911F91CF91DF915AC1990F00089E -:10C90000550FAA0BE0E8FEEF16161706E807F90721 -:10C91000C0F012161306E407F50798F0621B730BBC -:10C92000840B950B39F40A2661F0232B242B252B3D -:10C9300021F408950A2609F4A140A6958FEF811DE0 -:10C94000811D089597F99F6780E870E060E0089581 -:10C95000882371F4772321F09850872B762F07C016 -:10C96000662311F499270DC09051862B70E060E08A -:10C970002AF09A95660F771F881FDAF7880F969529 -:10C98000879597F908959F3F31F0915020F487954E -:10C9900077956795B795880F911D9695879597F927 -:10C9A00008959FEF80EC0895DF93CF931F930F932B -:10C9B000FF92EF92DF927B018C01689405C0DA2E22 -:10C9C000EF01F6D0FE01E894A591259135914591AE -:10C9D0005591AEF3EF01BFDDFE019701A801DA9496 -:10C9E00079F7DF90EF90FF900F911F91CF91DF913A -:10C9F000089500240A9416161706180609060895C5 -:10CA000000240A9412161306140605060895C9CFC9 -:10CA100050D0E8F3E894E0E0BB279F57F0F02AED10 -:10CA20003FE049EC06C0EE0FBB0F661F771F881F63 -:10CA300028F0B23A62077307840728F0B25A620BF3 -:10CA4000730B840BE3959A9572F7803830F49A95BE -:10CA5000BB0F661F771F881FD2F7904896CF092E0D -:10CA60000394000C11F4882352F0BB0F40F4BF2B49 -:10CA700011F460FF04C06F5F7F4F8F4F9F4F089589 -:10CA8000EF93E0FF06C0A2EA2AED3FE049EC5FEB3E -:10CA900062DDE5DF0F90039401FC9058EBEBF1E0D1 -:10CAA0005BC157FD9058440F551F59F05F3F71F01F -:10CAB0004795880F97FB991F61F09F3F79F0879505 -:10CAC0000895121613061406551FF2CF4695F1DF8E -:10CAD00008C0161617061806991FF1CF869571051E -:10CAE000610508940895E5DFA0F0BEE7B91788F462 -:10CAF000BB279F3860F41616B11D672F782F882743 -:10CB0000985FF7CF869577956795B11D9395963980 -:10CB1000C8F30895E894BB2766277727CB0197F9D8 -:10CB20000895ECDE08F48FEF08959B01AC0160E0FE -:10CB300070E080E89FE3DECDBCDF58F19E5758F1EE -:10CB40009851A0F0E9F0983020F5092E9927660F4A -:10CB5000771F881F991F0A94D1F712C0062E672FDE -:10CB6000782F8827985F11F4000C07C0993FB4F321 -:10CB70008695779567959395D9F7611D711D811DF0 -:10CB80003EF490958095709561957F4F8F4F9F4FA4 -:10CB900008956894C0CFBECF0BD061CF2ADF28F0B4 -:10CBA0002FDF18F0952309F0CDCEFBCE1124B3CFA3 -:10CBB00078DFA0F3959FD1F3950F50E0551F629F4A -:10CBC000F001729FBB27F00DB11D639FAA27F00DE6 -:10CBD000B11DAA1F649F6627B00DA11D661F829F0D -:10CBE0002227B00DA11D621F739FB00DA11D621FF2 -:10CBF000839FA00D611D221F749F3327A00D611D0F -:10CC0000231F849F600D211D822F762F6A2F1124F0 -:10CC10009F5750408AF0E1F088234AF0EE0FFF1F43 -:10CC2000BB1F661F771F881F91505040A9F79E3F7A -:10CC3000510570F087CE6FCF5F3FECF3983EDCF389 -:10CC4000869577956795B795F795E7959F5FC1F7B7 -:10CC5000FE2B880F911D9695879597F9089529DFEA -:10CC6000E0F09E37D8F09639B8F49E3848F4672F34 -:10CC7000782F8827985FF9CF869577956795939554 -:10CC80009539D0F3B62FB1706B0F711D811D20F453 -:10CC900087957795679593955BCE75CE3CCF9F939F -:10CCA000B7DE0F9007FCEE5FEBCE11F40EF479CEF9 -:10CCB0006ACEFFDED0F39923D9F3CEF39F57550BFD -:10CCC00087FF43D00024A0E640EA900180585695A3 -:10CCD000979528F4805C660F771F881F20F0261731 -:10CCE0003707480730F4621B730B840B2029312966 -:10CCF0004A2BA69517940794202531254A2758F7E3 -:10CD0000660F771F881F20F026173707480730F473 -:10CD1000620B730B840B200D311D411DA09581F713 -:10CD2000B901842F9158880F9695879508959B0196 -:10CD3000AC0132CFD8DE20F09F3708F4ECCE08CE1D -:10CD400022CEDCDD880B990B089591505040660F80 -:10CD5000771F881FD2F708959F938F937F936F93C8 -:10CD6000FF93EF939B01AC0117DFEF91FF911CDE66 -:10CD70002F913F914F915F910FCF991B79E004C0A4 -:10CD8000991F961708F0961B881F7A95C9F780950A -:10CD90000895AA1BBB1B51E107C0AA1FBB1FA61702 -:10CDA000B70710F0A61BB70B881F991F5A95A9F754 -:10CDB00080959095BC01CD010895A1E21A2EAA1B81 -:10CDC000BB1BFD010DC0AA1FBB1FEE1FFF1FA2173B -:10CDD000B307E407F50720F0A21BB30BE40BF50B38 -:10CDE000661F771F881F991F1A9469F760957095C1 -:10CDF000809590959B01AC01BD01CF010895EE0F88 -:10CE0000FF1F881F8BBF0790F691E02D1994A29FFA -:10CE1000B001B39FC001A39F700D811D1124911D0E -:10CE2000B29F700D811D1124911D0895F0DFA59F03 -:10CE3000900DB49F900DA49F800D911D1124089515 -:10CE4000FB01DC010D900020E9F7119701900D9294 -:10CE50000020E1F70895FB01DC0101900D92002014 -:10CE6000E1F708950F931F93CF93DF93CDB7DEB70C -:10CE70002E970FB6F894DEBF0FBECDBF0E891F8967 -:10CE800086E08C831A8309838FEF9FE79E838D83CF -:10CE9000AE01465E5F4F688D798DCE0101965BD005 -:10CEA0002F813885F801E20FF31F10822E960FB6FE -:10CEB000F894DEBF0FBECDBFDF91CF911F910F91D0 -:10CEC0000895CF93DF93CDB7DEB72E970FB6F894C2 -:10CED000DEBF0FBECDBF85E08C838C899D899A8390 -:10CEE0008983AE01485E5F4F6E897F89CE010196CE -:10CEF000C7D32E960FB6F894DEBF0FBECDBFDF911D -:10CF0000CF9108950F931F93CF93DF93CDB7DEB7E3 -:10CF10002E970FB6F894DEBF0FBECDBF8C0186E012 -:10CF20008C831A8309838FEF9FE79E838D83CE01C5 -:10CF3000019611D02F813885F801E20FF31F10827E -:10CF40002E960FB6F894DEBF0FBECDBFDF91CF9106 -:10CF50001F910F9108952F923F924F925F926F927F -:10CF60007F928F929F92AF92BF92CF92DF92EF9279 -:10CF7000FF920F931F93CF93DF93CDB7DEB72C971C -:10CF80000FB6F894DEBF0FBECDBF7C016B018A01E6 -:10CF9000FC0117821682838181FFB0C1CE01019608 -:10CFA0004C01F7019381F60193FD859193FF8191E7 -:10CFB0006F01882309F49EC1853239F493FD859170 -:10CFC00093FF81916F01853221F4B70190E0DFD4A6 -:10CFD000E8CF512C312C20E02032A0F48B3269F0C4 -:10CFE00030F4803259F0833269F420612CC08D32E4 -:10CFF00039F0803339F4216026C02260246023C0D8 -:10D00000286021C027FD27C030ED380F3A3078F472 -:10D0100026FF06C0FAE05F9E300D1124532E13C088 -:10D020008AE0389E300D1124332E20620CC08E32DF -:10D0300021F426FD5FC1206406C08C3611F42068FF -:10D0400002C0883641F4F60193FD859193FF8191EA -:10D050006F018111C1CF982F9F7D9554933028F493 -:10D060000C5F1F4FFFE3F9830DC0833631F0833728 -:10D0700071F0833509F057C021C0F80180818983A0 -:10D080000E5F1F4F44244394512C540114C03801A7 -:10D09000F2E06F0E711CF801A080B18026FF03C082 -:10D0A000652D70E002C06FEF7FEFC5012C8726D49D -:10D0B0002C0183012C852F77222E16C03801F2E037 -:10D0C0006F0E711CF801A080B18026FF03C0652D92 -:10D0D00070E002C06FEF7FEFC5012C8704D42C01F4 -:10D0E0002C852068222E830123FC19C0832D90E01B -:10D0F00048165906A0F4B70180E290E048D43A946B -:10D10000F5CFF50127FC859127FE81915F01B701DD -:10D1100090E03DD431103A94F1E04F1A5108411497 -:10D12000510479F7DEC0843611F0893631F5F80103 -:10D1300027FF07C060817181828193810C5F1F4F3F -:10D1400008C060817181072E000C880B990B0E5F5F -:10D150001F4F2F76722E97FF09C09095809570957E -:10D1600061957F4F8F4F9F4F2068722E2AE030E0ED -:10D17000A4015ED4A82EA81843C0853729F42F7EB9 -:10D18000B22E2AE030E025C0F22FF97FBF2E8F3675 -:10D19000C1F018F4883579F0ADC0803719F08837C0 -:10D1A00021F0A8C02F2F2061B22EB4FE0DC08B2D10 -:10D1B0008460B82E09C024FF0AC09F2F9660B92E44 -:10D1C00006C028E030E005C020E130E002C020E1E8 -:10D1D00032E0F801B7FE07C06081718182819381DE -:10D1E0000C5F1F4F06C06081718180E090E00E5F90 -:10D1F0001F4FA4011DD4A82EA818FB2DFF777F2E4A -:10D2000076FE0BC0372D3E7FA51450F474FE0AC085 -:10D2100072FC08C0372D3E7E05C0BA2C372D03C0E6 -:10D22000BA2C01C0B52C34FF0DC0FE01EA0DF11D72 -:10D230008081803311F4397E09C032FF06C0B39477 -:10D24000B39404C0832F867809F0B39433FD12C0E1 -:10D2500030FF06C05A2CB31418F4530C5B18B32CCF -:10D26000B31460F4B70180E290E03C8790D3B394AC -:10D270003C85F6CFB31410F43B1801C0312C34FFB9 -:10D2800011C0B70180E390E03C8781D33C8532FF39 -:10D2900016C031FD03C088E790E002C088E590E049 -:10D2A000B7010CC0832F867851F031FF02C08BE2AA -:10D2B00001C080E237FD8DE2B70190E068D3A5148C -:10D2C00030F4B70180E390E062D35A94F8CFAA9487 -:10D2D000F401EA0DF11D8081B70190E058D3A1104F -:10D2E000F6CF332009F45DCEB70180E290E04FD352 -:10D2F0003A94F7CFF7018681978102C08FEF9FEFB5 -:10D300002C960FB6F894DEBF0FBECDBFDF91CF9144 -:10D310001F910F91FF90EF90DF90CF90BF90AF9053 -:10D320009F908F907F906F905F904F903F902F9045 -:10D33000089520FD09C0FC0123FD05C022FF02C0A5 -:10D340007383628351834083089544FD10C046FD7A -:10D3500010C0DB01FC01AA0FBB1FEE1FFF1F1094C2 -:10D36000D1F76A0F7B1F8E1F9F1F31E003C033E090 -:10D3700001C034E0660F771F881F991F3150D1F725 -:10D38000620F711D811D911D08950F931F93CF93FF -:10D39000DF938C01C801BDD2EC0197FD06C090D28D -:10D3A000892BC1F7B801CE012AD3CE01DF91CF91ED -:10D3B0001F910F9108958F929F92AF92BF92CF923B -:10D3C000DF92EF92FF920F931F93CF93DF931F9201 -:10D3D000CDB7DEB78C01C62E7A0129839AD2AC0173 -:10D3E000552729814B32510521F04D32510561F409 -:10D3F0002068CA94C11002C080E06FC0C8012983B0 -:10D4000088D2298197FDF8CF322F3D7FD32E322F3E -:10D41000307339F5803329F5BB24BA94BC0C09F478 -:10D4200049C0C801298375D2298197FD43C0382F8F -:10D430003F7D383561F48D2D8264D82ECA94CA940C -:10D44000CC20C1F1C80165D297FF0BC033C026FFC5 -:10D4500004C02D2D2260D22E03C03D2D3261D32E6B -:10D46000CB2C812C912C540120ED280F283078F002 -:10D47000D4FE03C0B801C3D21AC02A3040F0D6FE91 -:10D48000F9CF2F7D3FEE320F3630A0F727504D2DCC -:10D49000C501B4015ADF4B015C018D2D8260D82E8D -:10D4A000CA94CC2051F0C80134D297FFDDCFD1FC13 -:10D4B00004C0A2CF812C912C5401D7FE08C0B09497 -:10D4C000A09490948094811C911CA11CB11C2D2DC2 -:10D4D000B501A401C7012DDF81E00F90DF91CF914D -:10D4E0001F910F91FF90EF90DF90CF90BF90AF9082 -:10D4F0009F908F9008956F927F928F929F92AF929C -:10D50000BF92CF92DF92EF92FF920F931F93CF9330 -:10D51000DF93CDB7DEB7A1970FB6F894DEBF0FBE8D -:10D52000CDBF5C017A01CE0101966C0180E2F6016B -:10D5300011928A95E9F7F501838040E050E0912C43 -:10D54000712C70E0A1E0B0E0F90183FC859183FECD -:10D5500081918F01982F9F01811103C080E090E09D -:10D560007AC08E3519F44115510549F1E72FF0E0E5 -:10D57000E417F5073CF48D3559F18D3219F4772015 -:10D5800001F103C0711001C0982E892F86958695F0 -:10D5900086958601080F111D892F87703D0101C0F6 -:10D5A000660C8A95EAF7F8018081862980839915AF -:10D5B00059F0991510F49F5FE8CF9150E6CF71E0D4 -:10D5C00004C07724739401C0712C4F5F5F4FBCCFB0 -:10D5D000772019F08E8180628E83711103C09924A7 -:10D5E000939416C0F6019E012F5D3F4F8081809578 -:10D5F0008193E217F307D1F7F2CFE114F10429F098 -:10D60000F7018083C70101967C016150912CE9F0FC -:10D61000C50169A37ED169A197FD15C0282F269564 -:10D6200026952695F601E20FF11D208130E0AC0130 -:10D630004770552702C0359527954A95E2F720FD9A -:10D64000DCCFB501DCD1911089CFE114F10411F0E8 -:10D65000F7011082C801A1960FB6F894DEBF0FBE85 -:10D66000CDBFDF91CF911F910F91FF90EF90DF9091 -:10D67000CF90BF90AF909F908F907F906F900895C4 -:10D680004F925F927F928F929F92AF92BF92CF9272 -:10D69000DF92EF92FF920F931F93CF93DF931F922E -:10D6A000CDB7DEB76C012B015A01FC01178216823F -:10D6B000712CF601F380F201F3FC8591F3FE819168 -:10D6C000382F2F01882309F4E5C090E03983F8D082 -:10D6D0003981892B19F0C60158DEEBCF353241F480 -:10D6E000F201F3FC3591F3FE31912F01353259F4FB -:10D6F000C60139830ED1398197FDCAC03817C9F2E6 -:10D70000B6017DD1C7C03A3239F4F3FC3591F3FE4E -:10D7100031912F0151E001C050E0420110E020EDB5 -:10D72000230F2A3088F45260612F70E080E090E08F -:10D7300040E259830ADE162FF401F3FC3591F3FE23 -:10D7400031914F015981EBCF052F232F240151FF38 -:10D7500003C0111102C09EC01FEF383619F03C36CD -:10D7600059F011C0F401F3FC2591F3FE21912F0132 -:10D77000283649F4052F08600460F201F3FC259176 -:10D78000F3FE21912F01222309F484C0622F70E05F -:10D7900084ED92E029839CD02981892B09F47AC0F9 -:10D7A00000FD07C0F501E080F180C50102965C0133 -:10D7B00002C0E12CF12C2E3649F4F6014681578146 -:10D7C00060E070E0202FC701B4DD73CF233689F409 -:10D7D00001FF11E0C6019DD097FD5AC0E114F1048C -:10D7E00029F0F7018083C70101967C01115091F760 -:10D7F0004BC02B3551F49201A701612FC6017BDE8E -:10D800002C01892B09F040C03AC0C6012983BDDD37 -:10D81000298197FD3DC02F3641F128F4243619F1B6 -:10D82000293631F124C0233769F02537E1F01FC0D4 -:10D83000E114F10429F0F7018082C70101967C010F -:10D84000115059F0C60165D04C0197FD06C038D083 -:10D85000892B71F3B601C401D2D0E114F104A1F017 -:10D86000F701108211C0006203C0006101C00064B2 -:10D87000202FA701612FC6019EDD811105C0F60191 -:10D880008381807329F406C000FD13CF739411CFF8 -:10D89000772019F0872D90E002C08FEF9FEF0F9057 -:10D8A000DF91CF911F910F91FF90EF90DF90CF907C -:10D8B000BF90AF909F908F907F905F904F90089512 -:10D8C000911114C1803219F089508550D0F7089514 -:10D8D000FC010590061621F00020D9F7C00108953B -:10D8E0003197CF010895FC010590615070400110FF -:10D8F000D8F7809590958E0F9F1F0895FC01615079 -:10D90000704001900110D8F7809590958E0F9F1F61 -:10D910000895CF93DF93EC012B8120FF33C026FFC6 -:10D920000AC02F7B2B838E819F8101969F838E83DC -:10D930008A8190E029C022FF0FC0E881F9818081AF -:10D94000082E000C990B009719F420622B831AC043 -:10D950003196F983E8830EC0EA85FB85199597FF18 -:10D9600009C02B81019611F080E201C080E1822B79 -:10D970008B8308C02E813F812F5F3F4F3F832E83D3 -:10D98000992702C08FEF9FEFDF91CF9108950F93FA -:10D990001F93CF93DF93FB01238121FD03C08FEF02 -:10D9A0009FEF28C022FF16C0468157812481358110 -:10D9B0004217530744F4A081B1819D012F5F3F4F6F -:10D9C000318320838C93268137812F5F3F4F3783AC -:10D9D000268310C0EB01092F182F0084F185E02D5C -:10D9E0001995892BE1F68E819F8101969F838E8305 -:10D9F000812F902FDF91CF911F910F910895FB01FF -:10DA0000238120FF12C026FD10C08F3F3FEF9307F8 -:10DA100061F082832F7D206423832681378121500A -:10DA2000310937832683992708958FEF9FEF089553 -:10DA3000FA01AA27283051F1203181F1E8946F933F -:10DA40006E7F6E5F7F4F8F4F9F4FAF4FB1E03ED0E5 -:10DA5000B4E03CD0670F781F891F9A1FA11D680F83 -:10DA6000791F8A1F911DA11D6A0F711D811D911DB6 -:10DA7000A11D20D009F468943F912AE0269F11242B -:10DA80003019305D3193DEF6CF010895462F47708F -:10DA9000405D4193B3E00FD0C9F7F6CF462F4F70EA -:10DAA000405D4A3318F0495D31FD4052419302D048 -:10DAB000A9F7EACFB4E0A6959795879577956795EE -:10DAC000BA95C9F700976105710508959B01AC01EE -:10DAD0000A2E06945795479537952795BA95C9F715 -:10DAE000620F731F841F951FA01D08959927882713 -:06DAF0000895F894FFCF39 -:10DAF6009A99D93F08020000000000000073736382 -:10DB0600616E662025640D0A0053255B302D392D84 -:10DB16002B2E5D52255B302D392D2B2E5D48255B36 -:10DB2600302D392D2B2E5D46255B302D392D2B2E94 -:10DB36005D004E256456255B302D392D2B2E5D4616 -:10DB4600255B302D392D2B2E5D0058255B302D3968 -:10DB56002D2B2E5D59255B302D392D2B2E5D5A250B -:10DB66005B302D392D2B2E5D46255B302D392D2B27 -:10DB76002E5D0041255B302D392D2B2E5D0056255F -:10DB860073002056310A0046255B302D392E5D5430 -:10DB960025640058255B302D392D2B2E5D59255BCC -:10DBA600302D392D2B2E5D5A255B302D392D2B2E00 -:10DBB6005D5025640053255B302D392D2B2E5D00DD -:10DBC6006120300D0A006220300D0A006320300DFE -:10DBD6000A0020422573204C2573205225730A0023 -:10DBE600537769667450726F002025730A005634A5 -:10DBF6002E312E300056342E302E32004646464602 -:10DC06004646464600202573002058257320592590 -:10DC160073205A25730A002053257320522573203A -:10DC26004825730A0061643A25640D0A00204225DE -:10DC360064204C2564205225640A0040310A0023E2 -:10DC4600255B302D395D0024257300453233206273 -:10DC560075666665722066756C6C0D0A0040332029 -:10DC660058257320592573205A2573205225730A87 -:10DC7600004036204E30205625640A004039205692 -:10DC8600300A0020006F6B0045323000453231000B -:10DC96004532320056332E332E310056332E332E74 -:10DCA60030004532330A004532300A004532310A27 -:10DCB60000646976696465206E756D203A20256476 -:04DCC6000D0A000043 +:109F10007DAD8EAD9FAD21970E94C0652AE037EDE3 +:109F200043EA5BE30E948E6220E030E040E752E4C7 +:109F30000E94C06520E030E040E752E40E94C06526 +:109F40006B017C016093750D7093760D8093770D96 +:109F50009093780D6093790D70937A0D80937B0DBB +:109F600090937C0D20E030E442E955E40E94856541 +:109F700087FF09C0C0927D0DD0927E0DE0927F0DCB +:109F8000F092800D0FC080E090E4A2E9B5E48093E8 +:109F90007D0D90937E0DA0937F0DB093800D02C038 +:109FA000212C312CB10180E090E00E9407646B010C +:109FB0007C01298D3A8D4B8D5C8D69AD7AAD8BAD71 +:109FC0009CAD0E948D62A70196010E946E632B9644 +:109FD0006CAF7DAF8EAF9FAF2B972D8D3E8D4F8D8C +:109FE00058A16DA97EA98FA998AD0E948D62A70185 +:109FF00096010E946E632F966CAF7DAF8EAF9FAFC0 +:10A000002F9729A13AA14BA15CA169A97AA98BA993 +:10A010009CA90E948D62A70196010E946E636396BF +:10A020006CAF7DAF8EAF9FAF639741E050E023965A +:10A030005FAF4EAF239723964EAD5FAD23972416A7 +:10A04000350608F46CC12396AEADBFAD2397BD01B4 +:10A05000BB0F880B990B0E9409646B017C019B016B +:10A06000AC012B966CAD7DAD8EAD9FAD2B970E9454 +:10A07000C065298D3A8D4B8D5C8D0E948E622B01BF +:10A080003C01A70196012F966CAD7DAD8EAD9FADC5 +:10A090002F970E94C0652D8D3E8D4F8D58A10E9437 +:10A0A0008E6227966CAF7DAF8EAF9FAF2797A701CB +:10A0B000960163966CAD7DAD8EAD9FAD63970E94AA +:10A0C000C06529A13AA14BA15CA10E948E62409279 +:10A0D000A60C5092A70C6092A80C7092A90C27961F +:10A0E0002CAD3DAD4EAD5FAD27972093AA0C3093BC +:10A0F000AB0C4093AC0C5093AD0C6093AE0C7093D2 +:10A10000AF0C8093B00C9093B10CAE014B5D5F4FE0 +:10A110004A01DE0199965D01FE01BD966F017B014A +:10A120008C0127962CAD3DAD4EAD5FAD2797C30199 +:10A13000B2010E942529CDA0DEA0EFA0F8A489A439 +:10A140009AA4ABA4BCA420918E0C30918F0C4091AA +:10A15000900C5091910C6DA57EA58FA598A90E9499 +:10A160008D6220E030E040E253E40E94C0650E942E +:10A17000D663072E000C880B990B0E940964698333 +:10A180007A838B839C832091920C3091930C409125 +:10A19000940C5091950CC501B4010E948D6220E091 +:10A1A00030E040E253E40E94C0650E94D663072E6F +:10A1B000000C880B990B0E9409646D837E838F834A +:10A1C00098872091960C3091970C4091980C509163 +:10A1D000990CC701B6010E948D6220E030E044EB8B +:10A1E00052E40E948E6220E030E040E253E40E949C +:10A1F000C0650E94D663072E000C880B990B0E9445 +:10A20000096469877A878B879C870E94AF40809119 +:10A21000E50D811188C09091E6108091BD129813D0 +:10A2200003C00E94E947F1CF89809A80AB80BC804F +:10A23000C501B4010E94D66360939A0C70939B0C85 +:10A2400080939C0C90939D0CCD80DE80EF80F884F1 +:10A25000C701B6010E94D66360939E0C70939F0C59 +:10A260008093A00C9093A10C49845A846B847C84C5 +:10A27000C301B2010E94D6636093A20C7093A30C39 +:10A280008093A40C9093A50C20915D0D30915E0DF0 +:10A2900040915F0D5091600DC501B4010E946E6345 +:10A2A00069837A838B839C832091610D3091620D49 +:10A2B0004091630D5091640DC701B6010E946E6319 +:10A2C0006D837E838F8398872091650D3091660D15 +:10A2D0004091670D5091680DC301B2010E946E63F9 +:10A2E00069877A878B879C8764962FAD64972196C0 +:10A2F0004CAD5DAD6EAD7FAD2197CE0101960E9454 +:10A300007149F1E0F093B60C23962EAD3FAD239743 +:10A310002F5F3F4F23963FAF2EAF23978CCE80E029 +:10A3200004C083E302C082E000C0C95ADF4F0FB609 +:10A33000F894DEBF0FBECDBFDF91CF911F910F917B +:10A34000FF90EF90DF90CF90BF90AF909F908F9055 +:10A350007F906F905F904F903F902F9008951F9245 +:10A360000F920FB60F9211240BB60F922F933F93BB +:10A370004F935F936F937F938F939F93AF93BF930D +:10A38000EF93FF938091E60D813069F08091E40DA9 +:10A39000811109C0FDDB9FB7F8948091E40D8360C3 +:10A3A0008093E40D9FBFFF91EF91BF91AF919F917B +:10A3B0008F917F916F915F914F913F912F910F906E +:10A3C0000BBE0F900FBE0F901F90189589B1807132 +:10A3D00090919A0D96FD02C090E18927882319F08B +:10A3E00011F087E0089580E008952F923F924F92F8 +:10A3F0005F926F927F928F929F92AF92BF92CF9215 +:10A40000DF92EF92FF920F931F93CF93DF93CDB71D +:10A41000DEB76B970FB6F894DEBF0FBECDBF90913D +:10A42000E50D9111AFC1782E91E8A92E9DE0B92ECE +:10A430009E01235F3F4F490100E010E0C12CD12C69 +:10A440007601482F50E05B8B4A8B902F0115110548 +:10A4500021F0013021F084E003C081E001C082E0FE +:10A46000D4018D934D01EA89FB8902C0F595E795EA +:10A470009A95E2F7E0FF17C020E030E040EC5FEB98 +:10A48000D5016D917D918D919C910E94C0651B01BC +:10A490002C019B01AC01C701B6010E94856518160D +:10A4A00014F0610172010F5F1F4FB4E0AB0EB11CDD +:10A4B0000330110551F68090A00D9090A10DA09051 +:10A4C000A20DB090A30D04E011E06624639469EE40 +:10A4D0007DE0CE0101960E94702E80919B0DE82FA9 +:10A4E000F0E0FD8BEC8BFE01319625EE3DE0398BE3 +:10A4F000288B3B8F2A8F20E030E060E090E016014F +:10A50000270157FA509457F850944A895B89022ED4 +:10A5100002C0559547950A94E2F740FF2AC06F5F45 +:10A52000AA8DBB8D14961D921D921D921C92179799 +:10A530004C895D89022E02C0559547950A94E2F731 +:10A5400040FF03C0112319F007C0112329F0C08276 +:10A55000D182E282F38204C020823182428253821D +:10A560004DE050E04C0F5D1F420F531FDA018C91FC +:10A57000982B2F5F3F4F34964A8D5B8D4C5F5F4F1A +:10A580005B8F4A8F2330310509F0BFCFF92E70E081 +:10A5900080E090E00E9407640E944D669B01AC0140 +:10A5A000C501B4010E94C065AB01BC01F092020E6E +:10A5B0004E8B5F8B688F798F0E94F24720E04E8927 +:10A5C0005F89688D798DCE0101960E9471490E9444 +:10A5D0009A320E94D33E1123E1F0F8DEFE013D964F +:10A5E00020E030E090E06191462F4F2159F0AC011E +:10A5F000022E02C0559547950A94E2F740FF02C02B +:10A600006095F6222F5F3F4F2330310561F7F092BE +:10A61000020E0E949A3280915B0D8473B1F080919A +:10A620005B0D807321F0B4DA0E94AF40ABC0111112 +:10A63000A4C0CCDE8721B9F79FB7F89480915B0D59 +:10A640008B7F80935B0D9FBF04C08F2D877009F0B7 +:10A65000C2CF0E94123C0E9415488091A40D909197 +:10A66000A50DC7D91625C9F020E030E040EA50E436 +:10A670006091A60D7091A70D8091A80D9091A90DE4 +:10A680000E94C0656B017C0180909C0D90909D0D97 +:10A69000A0909E0DB0909F0D10C0C090A60DD090C0 +:10A6A000A70DE090A80DF090A90D8090A00D9090BE +:10A6B000A10DA090A20DB090A30D015009F007CFFD +:10A6C000C0909B0DD12C8090A60D9090A70DA090CE +:10A6D000A80DB090A90D2401350177FA709477F890 +:10A6E00070948DE5E82E8DE0F82E00E010E08A8968 +:10A6F0009B89002E02C0959587950A94E2F780FF0A +:10A700002AC0C601002E02C0959587950A94E2F7EB +:10A71000D70180FF10C094962D913D914D915C9191 +:10A720009797C501B4010E948E62F70120813181A3 +:10A730004281538106C02D913D914D915C91C301A1 +:10A74000B2010E94C0650E949065E889F98964831E +:10A750007583868397830F5F1F4F288939892C5F04 +:10A760003F4F398B288B34E0E30EF11C0330110589 +:10A7700009F0BDCF0E94F24705C080915B0D82FFBA +:10A780005BCF51CF6B960FB6F894DEBF0FBECDBF37 +:10A79000DF91CF911F910F91FF90EF90DF90CF90BD +:10A7A000BF90AF909F908F907F906F905F904F90F1 +:10A7B0003F902F900895EBE6F0E080818F7E8083BC +:10A7C000E8E6F0E080818E7F8083089554985C9A5B +:10A7D00080919A0D83FF0BC080916B008061809304 +:10A7E0006B00809168008160809368000895E3CFDA +:10A7F000F894F999FECF92BD81BD81E08FBB80B501 +:10A800008627482F082E000C550B262F30E02423D6 +:10A810003523232B39F06F3F19F060BD84E006C06B +:10A8200084E104C0882321F060BD84E28FBBF99AE3 +:10A83000789408958F929F92AF92BF92CF92DF92B9 +:10A84000EF92FF920F931F93CF937C014A016B010C +:10A85000C40ED51E8B01C0E05C01A61AB70AC80160 +:10A860008A0D9B1D0C151D0591F0C11108C02C2FE0 +:10A87000CC0F330B232F221F2227221F01C021E0E0 +:10A88000F80161918F01C22FC60FB2DFE8CF6C2FA4 +:10A89000C701880D991DCF911F910F91FF90EF90E7 +:10A8A000DF90CF90BF90AF909F908F90A1CFF999FC +:10A8B000FECF92BD81BD81E08FBB80B508958F92A0 +:10A8C0009F92AF92BF92CF92DF92EF92FF920F933F +:10A8D0001F93CF934B017A016C01C40ED51E8C01DE +:10A8E000C0E05B01A81AB90AC501800F911F0C15C1 +:10A8F0001D0591F0DCDFC11108C02C2FCC0F330BEC +:10A90000232F221F2227221F01C021E0C22FC80FA0 +:10A91000F80181938F01E8CFC4018E0D9F1DC7DF21 +:10A9200021E030E0C81711F020E030E0C901CF91FC +:10A930001F910F91FF90EF90DF90CF90BF90AF905D +:10A940009F908F9008955C980895CF93DF93CDB733 +:10A95000DEB7CC56D1090FB6F894DEBF0FBECDBF1F +:10A960008091C00082608093C0001092C50080E199 +:10A970008093C4008091C10080618093C100809168 +:10A98000C10088608093C1008091C100806880937D +:10A99000C1000E94D347869A879A829A80910A01C1 +:10A9A000886080930A0180910A01826080930A0185 +:10A9B00080910701816080930701809A819A579A5C +:10A9C0008091070180618093070180910701886071 +:10A9D0008093070180910701846080930701809133 +:10A9E000080180618093080180910801886080934C +:10A9F0000801809108018B7F8093080180919A0D56 +:10AA000082FF08C08A9A80910801816080930801C2 +:10AA10005F9A07C08A98809108018E7F8093080111 +:10AA20005F98809181008F7E80938100809181006A +:10AA3000886080938100809180008C7F809380006B +:10AA4000809180008F708093800080916E00887F5D +:10AA500080936E0014BC15BC80916E008160809361 +:10AA60006E0054985C9A80916D00806180936D00B7 +:10AA7000809168008460809368008AE090E00E9482 +:10AA8000F94C0E945132399A3B9A419A439A8091EB +:10AA900001018460809301018091010180688093AD +:10AAA0000101809102018460809302018091020182 +:10AAB000806880930201559A569A5D9A5E9A0E9428 +:10AAC000272D80E090E00E94872D60938E0C70937C +:10AAD0008F0C8093900C9093910C81E090E00E94F9 +:10AAE000872D6093920C7093930C8093940C9093A9 +:10AAF000950C82E090E00E94872D6093960C7093F5 +:10AB0000970C8093980C9093990C0E94A12520E0BB +:10AB100030E04AE754E464E071E080E090E00E94B5 +:10AB2000352584E893E0C3DE8093840C85E893E0C8 +:10AB3000BEDE8093850C08E913E078012FEFE21A5E +:10AB4000F20AC801B4DEF801E251F74F80838701B1 +:10AB50003CE9E31633E0F30681F70EE813E07801F1 +:10AB60008FEFE81AF80AC801A2DEF801E450F74FA7 +:10AB70008083870192E9E91693E0F90681F70E9444 +:10AB8000CB310E94C8310E94B73120E030E044EB65 +:10AB900052E46091960C7091970C8091980C909172 +:10ABA000990C0E948D627B018C012091920C309156 +:10ABB000930C4091940C5091950C60918E0C709177 +:10ABC0008F0C8091900C9091910CEEEA8E2EECE01F +:10ABD0009E2EFAEAAF2EFCE0BF2EA6EACA2EACE00B +:10ABE000DA2E0E94DB2A8091E90D9091EA0DA09166 +:10ABF000EB0DB091EC0D80939A0C90939B0CA0936D +:10AC00009C0CB0939D0C8091ED0D9091EE0DA09158 +:10AC1000EF0DB091F00D80939E0C90939F0CA0933C +:10AC2000A00CB093A10C8091F10D9091F20DA09128 +:10AC3000F30DB091F40D8093A20C9093A30CA0930C +:10AC4000A40CB093A50C80917A00816880937A005F +:10AC50009B98A39A8BE493E00E9406438EE1E5EE75 +:10AC6000FDE0DF011D928A95E9F781E08093E50D13 +:10AC7000789490919A0D94FD8093E60DFE0175965F +:10AC8000A396FFAFEEAFA3979E012F5F3F4FA59610 +:10AC90003FAF2EAFA59780913A12809339128FE380 +:10ACA000ECE1FDE0DF011D928A95E9F76FE37DE0BD +:10ACB00080E00E943144811103C087E00E94054674 +:10ACC0000C9A549A549A0E941E43549A3CDE7EDD9C +:10ACD00054985C9A0E9415480E94123C0E94F247C8 +:10ACE00069EE7DE083E39DE00E94702E1092E50DF9 +:10ACF00010925B0D1092E40D1092E70D1092E80D8A +:10AD000080EE92E00E94A1408091E60D8130E1F456 +:10AD100088E096E00E94A14082EE95E00E94A1406A +:10AD200085E995E00E94A140312C212CFE01FD9681 +:10AD30006F96FFAFEEAF6F979E01275D3F4FA196D5 +:10AD40003FAF2EAFA1971BC01092E60DEDCFE92FBC +:10AD5000F0E0E754FE4E80819F5F903809F490E068 +:10AD6000909339128F3F09F41AC48A3079F08D30EC +:10AD700069F0222009F4EEC3893209F4E6C3909108 +:10AD8000391280913A128913E2CF09C405EC1CE014 +:10AD9000E32DF0E0EB53F34F10820E94AF4080911F +:10ADA000E50D8111CFC38AE0A396AEADBFADA397E9 +:10ADB0001D928A95E9F78091C50C843209F01CC375 +:10ADC00081E08DAF8091C60C833481F034F4882308 +:10ADD00051F0843209F010C109C0873439F0883548 +:10ADE00009F00AC103C084EB93E0F9C19091C70C4C +:10ADF0009111F4C2833409F4CEC01CF4843239F0CA +:10AE0000F3C2873461F0883509F4E2C0EDC2809165 +:10AE1000E60D887109F0E4C20E94A646E5C282EB05 +:10AE200093E00E94A14080911C0D823091F038F493 +:10AE3000882361F08130A9F48CEA93E00CC0833060 +:10AE400069F0883071F482EA93E005C08FEA93E0FC +:10AE500002C089EA93E00E94A1400CC086EA93E018 +:10AE6000FACF8DE993E00E94A14080911C0D8250A1 +:10AE70000E9493408AE993E00E94A1408091220DB4 +:10AE80008A5C0E9493408091200D813049F028F027 +:10AE9000823051F48BE893E005C085E993E002C06D +:10AEA00080E993E00E94A14080911E0D811103C0B2 +:10AEB00086E893E002C081E893E00E94A14080917F +:10AEC0001F0D811103C08CE793E002C087E793E078 +:10AED0000E94A14080911D0D813019F482E793E01A +:10AEE00002C08DE693E00E94A1408091230D813045 +:10AEF00049F028F0823051F481E693E005C089E6FC +:10AF000093E002C085E693E00E94A1408091250D68 +:10AF1000813031F040F0823051F489E593E005C092 +:10AF20008DE593E002C085E593E00E94A140809109 +:10AF3000240D882329F0823039F48DE493E002C097 +:10AF400081E593E00E94A1408AE493E00E94A14041 +:10AF500080912E0D0E94934087E493E00E94A140CF +:10AF600060912A0D70912B0D80912C0D90912D0DDB +:10AF70000E94774084E493E00E94A1406091260DF6 +:10AF80007091270D8091280D9091290D0E94774096 +:10AF900080E493E024C18091E60D823049F40E9460 +:10AFA000C84D88E096E00E94A1408FEB95E00BC071 +:10AFB000811116C282E08093E60D88E096E00E943F +:10AFC000A14088EC95E00E94A14085E995E007C189 +:10AFD0008091E60D813009F007C288E096E00E947A +:10AFE000A14080ED95E00E94A14085E995E00E9496 +:10AFF000A1401092E60DF8C19091E60D923008F054 +:10B00000EFC1893409F4C9C034F4833259F088346B +:10B0100009F480C069C18E3409F43AC1823509F45B +:10B02000FDC062C182E08DAF8091C70C8111D6C195 +:10B0300010E0BE016F5F7F4F812F0E94314481116C +:10B0400004C087E00E940546CFC18DE393E00E94D3 +:10B05000A140163029F0173041F487E393E002C095 +:10B060008AE393E00E94A14004C086E3810F0E941E +:10B07000934085E393E00E94A140FE0131963F0199 +:10B0800000E0D3016D917D918D919D913D010E94D4 +:10B090008540023019F083E393E002C08FE293E031 +:10B0A0000E94A1400F5F033061F71F5F183009F65F +:10B0B00089E293E00E94A1403BE4632E3DE0732EC1 +:10B0C00010E0F30161917191819191913F010E9492 +:10B0D0008540123019F087E293E002C083E293E0EA +:10B0E0000E94A1401F5F133061F78DE193E00E9441 +:10B0F000A1406091570D7091580D8091590D90911C +:10B100005A0D0E94854089E193E00E94A1400E946F +:10B110005F466AC180919A0D84FF5EC184E080938E +:10B12000E60D49DB84E061D983E05FD90E94AF403E +:10B130008091E50D811107C069EE7DE083E39DE01C +:10B140000E94702E43DB8091E50D81114DC110925C +:10B15000E60D0E94DB3B10E0812F0E9479308111C7 +:10B1600002C087E013C08091C50C882389F085EC6C +:10B170009CE00E94064385EC9CE00E94EE04811155 +:10B1800005C082E999E00E94A14002C00E940546E4 +:10B19000113009F429C111E0DFCF82E08DAF809139 +:10B1A000C70C81111FC040E550E06EEA7BE085ECE2 +:10B1B0009CE085DB892B49F41092C50C40E550E0FA +:10B1C00065EC7CE08EEA9BE035DB89E093E00E9451 +:10B1D000A14085EC9CE00E94064385E093E00E943C +:10B1E000A14002C193E09DAF8D3309F0F7C083E029 +:10B1F000282F30E0F901EB53F34F9081D901AE5382 +:10B20000B34F9C938F5F90819111F2CF8DAF40E54A +:10B2100050E065EC7CE08EEA9BE0ACC082E08DAF54 +:10B220008091C70C833509F0D9C083E08DAF809140 +:10B23000C80C843509F0D2C084E08DAF8091C90C70 +:10B240008D3309F0CBC08091CB0C8111C7C085E054 +:10B250008DAF8091CA0C843239F08A3239F0833252 +:10B2600009F0BCC082E003C081E001C08FEF0E9402 +:10B27000514488E096E00E94A14089E995E00E944F +:10B28000A14085E995E00E94A1400E94C84DACC054 +:10B2900082E08DAF8091C70C811122C010E0812F18 +:10B2A0000E947930811104C087E00E94054613C0D6 +:10B2B00082E093E00E94A140812F0E94934080E0B1 +:10B2C00093E00E94A14085EC9CE00E9406438DEF34 +:10B2D00092E00E94A140113009F486C011E0DFCF56 +:10B2E00091117EC011E001C010E0AE01475D5F4FDB +:10B2F000BE01635C7F4F85EC9CE00E94044D811190 +:10B3000002C082E076C0EDAD81E08E0F8DAFF0E03F +:10B31000EB53F34F90819D3309F060C0112361F12D +:10B32000482F50E0282F30E0D901AB53B34F9C9108 +:10B33000241B350BF901EB53F34F90838F5F9C91E6 +:10B340009111F0CF8DAF85EC9CE00E94EE0481114D +:10B3500049C069A57AA58BA59CA50E948E660E940E +:10B36000DB63F1E56F9FC001112440E550E065EC1F +:10B370007CE0955F5FDA38C0AE014F5F5F4FBE0182 +:10B38000635C7F4F85EC9CE00E94044D882309F4A8 +:10B39000B8CFEDADF0E0EB53F34F808181111EC0CB +:10B3A00049A45AA46BA47CA420E030E04FE753E406 +:10B3B000C301B2010E948565181684F0C980DA8045 +:10B3C000EB80FC80C301B2010E94DB63862FB701D2 +:10B3D000A6010E94254306C085E00BC083E009C09A +:10B3E00088E007C0811105C082E999E00E94A14070 +:10B3F000A9C00E940546A6C0833239F5A3962FAD99 +:10B40000A3972F93A2963FADA2973F938FE493E02B +:10B410009F938F931F930F930E945567A396EEAD52 +:10B42000FFADA39701900020E9F7BF01A3968EAD71 +:10B430009FADA397681B790B6B53734F0F900F90C1 +:10B440000F900F900F900F9009C0873429F08D3422 +:10B4500019F0803509F076C065EC7CE0DB018C9159 +:10B46000803539F581ED9BE00E941F678D89882327 +:10B47000C1F0A396BFADA397BF93A296EFADA297DD +:10B48000EF9387E593E09F938F9385E09CE09F93F4 +:10B490008F930E9426670F900F900F900F900F9040 +:10B4A0000F9082E3E5ECFCE0DF011D928A95E9F75D +:10B4B00049C08091D603843148F08BE593E09F9397 +:10B4C0008F930E9446400F900F903CC00091D40390 +:10B4D000B6E60B9F80011124C80188529C4F0E9440 +:10B4E0001F678D898823C1F0A396EFADA397EF93D3 +:10B4F000A296FFADA297FF9387E593E09F938F936A +:10B50000045F1B4F1F930F930E9426670F900F90AD +:10B510000F900F900F900F9082E3E5ECFCE0DF01BD +:10B520001D928A95E9F78091D403833120F48F5FCF +:10B530008093D40302C01092D4038091D6038F5F0E +:10B540008093D603312C212C2AC0B1E02B1224C0C9 +:10B55000212C15CC813208F412CC8F3209F40FCC97 +:10B560008832B9F08B33C1F0EEE4E31528F48BE0B8 +:10B570000E940546312C03CC232D30E033949FE903 +:10B58000980FF901EB53F34F9A3108F480528083FE +:10B59000F6CB22242394F3CB22E0222EF0CB809111 +:10B5A000D10B882399F081ED9BE00E94EE048093FB +:10B5B000030C65E07CE00E945B3181E08093040C29 +:10B5C00082E3A1EDBBE01D928A95E9F78091B30C6F +:10B5D000811139C08091D6038823A9F16090D503E9 +:10B5E00006E6069DC0011124FC01E852FC4F3F0114 +:10B5F000CF010E94EE04D301D2968C937090D503B4 +:10B60000079D80011124B801645F7B4F08521C4FD5 +:10B61000F80182A90E945B3181E0D801D3968C9316 +:10B6200082E3F80111928A95E9F7F2E1F71520F02B +:10B6300073947092D50302C01092D5038091D60303 +:10B6400081508093D6030E94E9470E94AF408091C9 +:10B65000E50D811120CB8091040C882369F085E0F1 +:10B660009CE00E94064382E3E5E0FCE0DF011D92DE +:10B670008A95E9F71092040C8091E60D882309F46D +:10B68000ECC08091B40C882309F41AC11092B40C58 +:10B690006D961CAE1DAE1EAE1FAE6D9769961CAEAC +:10B6A0001DAE1EAE1FAE699765961CAE1DAE1EAEDA +:10B6B0001FAE659784E16F96AEADBFAD6F97E82F73 +:10B6C0001D92EA95E9F7A196AEADBFADA197E82F1F +:10B6D0001D92EA95E9F7A396AEADBFADA397E82F0B +:10B6E0001D92EA95E9F7A596AEADBFADA5971D925F +:10B6F0008A95E9F780E090E00E94872DA9966CAFCB +:10B700007DAF8EAF9FAFA99781E090E00E94872D1B +:10B71000AD966CAF7DAF8EAF9FAFAD9782E090E0FE +:10B720000E94872D6B017C0123E333E343E35FE356 +:10B7300060910002709101028091020290910302D7 +:10B74000ECD620E030E040E05FE30E94C06520E0FE +:10B7500030E044E353E40E94C0659B01AC0160E02B +:10B7600070E084E393E4D9D62B013C0120E030E083 +:10B7700044EB52E4C701B601D0D6FE01EF5AFF4FA9 +:10B780004F019E012B5A3F4F5901DE01A75ABF4F6F +:10B790006D017B018C01AD962CAD3DAD4EAD5FAD25 +:10B7A000AD97A9966CAD7DAD8EAD9FADA9970E946A +:10B7B000DB2AA401B501C6010E947A286D966CAD02 +:10B7C0007DAD8EAD9FAD6D978E01035C1F4F24E064 +:10B7D00045E011D469966CAD7DAD8EAD9FAD699796 +:10B7E0000451110924E045E006D465966CAD7DADA9 +:10B7F0008EAD9FAD65970451110924E045E0FBD360 +:10B800000451110924E045E0C301B201F4D31F93B0 +:10B810000F93A396FFADA397FF93A2962FADA29788 +:10B820002F93A1963FADA1973F93A0968FADA09780 +:10B830008F936F969FAD6F979F936E96AFAD6E97F8 +:10B84000AF938DE693E09F938F930E9446400FB68F +:10B85000F894DEBF0FBECDBF33C004E110E086E632 +:10B86000782E92E3F92E8091D00B789EC00111249E +:10B87000FC01E852FC4F23A9222309F402CF845F84 +:10B880009B4F0E9406438091D00B789E900111241B +:10B89000F901E45FFB4FDF019F2D1D929A95E9F7B7 +:10B8A000F901E852FC4F13AA833120F48F5F809393 +:10B8B000D00B02C01092D00B01501109A1F6E1CEBD +:10B8C00082B301E083FB882780F980279091D7031A +:10B8D0008917D9F08AE090E00E94F94C12B313FB6B +:10B8E000112710F910278091D703181771F01F92B4 +:10B8F0001F9381E893E09F938F930E94464010939B +:10B90000D7030F900F900F900F908091E60D81114B +:10B9100036CA8091B50C882309F431CA8091B60CDF +:10B92000882309F42CCAACE8B3E0BF93AF930E941C +:10B9300046401092B60C0F900F9021CAFF920F93C1 +:10B940001F93CF93DF9300D01F92CDB7DEB7322F76 +:10B950002091E60D223009F492C0F02E132F042F0F +:10B960009B01AC0169833A834B835C8327D310929C +:10B97000010E1092AA0D80919A0D29813A814B8176 +:10B980005C8187FD03C080E18093AA0D112331F013 +:10B990009091AA0D80E189278093AA0D89B18071C9 +:10B9A0009091AA0D891791F09FB7F8948091E40DBA +:10B9B00080618093E40D9FBF29833A834B835C832E +:10B9C0000E94AF405C814B813A8129818091E50DD5 +:10B9D000811155C068ED7DE081E00E94F24D81E06B +:10B9E00080935C0D9FB7F89480915B0D826080938B +:10B9F0005B0D9FBF0E94AF408091E50D81113FC05C +:10BA00008091E60D8111F6CF80915C0D8130A9F413 +:10BA1000FF2051F08CE0E9EEFDE0A5EFBDE00190E4 +:10BA20000D928A95E1F70CC09FB7F8948091E40DD0 +:10BA300080618093E40D9FBF03C081E08093010E7D +:10BA400010925C0D0E94AF408091E50D811117C0EE +:10BA50000E94123C0E9415480E94F24769EE7DE068 +:10BA600088ED9DE00E94702E0F900F900F900F9028 +:10BA7000DF91CF911F910F91FF900C945F460F9033 +:10BA80000F900F900F90DF91CF911F910F91FF902A +:10BA900008952F923F924F925F926F927F928F9272 +:10BAA0009F92AF92BF92CF92DF92EF92FF920F934D +:10BAB0001F93CF93DF93CDB7DEB7E1970FB6F8941E +:10BAC000DEBF0FBECDBF6D837E838F8398872F87A8 +:10BAD000388B498B5A8B0D8BAD868B8A24E0E29E86 +:10BAE00080011124C8018D5C924F9F8B8E8BD801F1 +:10BAF000A654B24FB98FA88F8D909D90AD90BC90F9 +:10BB0000FC012081318142815381C501B40106D5F8 +:10BB10006A8F7B8F8C8F9D8FF4E0CF9E1001112454 +:10BB200091012D5C324F3F8F2E8FC1018654924F71 +:10BB300099A388A3DC01CD90DD90ED90FC90F901F4 +:10BB40002081318142815381C701B601E7D46AA3C4 +:10BB50007BA38CA39DA32401350177FA709477F819 +:10BB60007094D701C601B05889839A83AB83BC8394 +:10BB7000F801E852F24F2A8D3B8D4C8D5D8D60812E +:10BB8000718182819381C9D44B015C01F101E8523A +:10BB9000F24F2AA13BA14CA15DA1608171818281FC +:10BBA0009381BBD46B017C01A5019401C301B20157 +:10BBB000E7D769877A878B879C87A7019601698178 +:10BBC0007A818B819C81DCD79B01AC0169857A8568 +:10BBD0008B859C85A3D469877A878B879C87A701EF +:10BBE0009601C301B201CCD76B017C01A501940180 +:10BBF00069817A818B819C81C3D79B01AC01C7018C +:10BC0000B6018BD429853A854B855C85FAD46B01C6 +:10BC10007C019B89992389F02DEB37E346E055EBB6 +:10BC2000C701B60172D787FD1AC02BED3FE049EC82 +:10BC300050E4C701B60171D410C02DEB37E346E0E4 +:10BC400055E3C701B60143D518164CF02BED3FE084 +:10BC500049EC50E4C701B60161D46B017C018090CE +:10BC6000960D9090970DA090980DB090990D2D8104 +:10BC70003E814F815885CA01B90150D4A501940174 +:10BC80004CD49B01AC01C501B4017AD70E944D662A +:10BC90004B015C0120E030E040E05FE3C701B6010A +:10BCA0006FD72D813E814F8158856AD79F77A50137 +:10BCB000940114D5E9D57FD57C8B6B8BDB01AB2B45 +:10BCC00009F459C14B01A12CB12CBD89BB2371F0E2 +:10BCD000C501B4019CD59B01AC016F857889898928 +:10BCE0009A894ED76F87788B898B9A8BC501B4015F +:10BCF0008ED54B015C019B01AC01C701B601EED4AE +:10BD00006D837E838F839887FD85E4E0FE9FC0016D +:10BD100011249C012D5C324F3E872D87FC01E85297 +:10BD2000F24FD9012D913D914D915C9160817181CE +:10BD300082819381F2D3A5019401D0D46EA77FA70D +:10BD400088AB99AB2D813E814F815885CA01B901DD +:10BD500017D79B01AC0160E070E080E090E4DDD398 +:10BD60006B017C012BEA3AEA4AE25EE36D817E8157 +:10BD70008F81988505D74B015C0120E030E040E8D9 +:10BD800050E4C701B601CAD39B01AC01C501B4019F +:10BD9000F7D669877A878B879C8720E030E040E080 +:10BDA0005FE3C701B601ECD66EA37FA388A799A76E +:10BDB00010E022242394312CEB89FC892E163F06B7 +:10BDC00009F4D9C01C3008F03AC02EA13FA148A503 +:10BDD00059A569817A818B819C81D2D66B017C01C6 +:10BDE00029853A854B855C85C301B201C9D6A70177 +:10BDF000960194D37B01082FD92E2EA13FA148A5EF +:10BE000059A5C301B201BCD64B015C0129853A8515 +:10BE10004B855C8569817A818B819C81B1D69B0140 +:10BE2000AC01C501B40179D32B013C011F5FC701EF +:10BE3000A02FBD2D89839A83AB83BC835BC0B101E6 +:10BE400080E090E0E4D42D813E814F81588598D6E2 +:10BE50006B017C0140D469837A838B839C83C70107 +:10BE6000B60111D74B015C01E88DF98DC080D180FE +:10BE7000E280F380F7FAF094F7F8F094A8A1B9A162 +:10BE80008D919D910D90BC91A02D8AA79BA7ACA7E9 +:10BE9000BDA729813A814B815C81C701B60170D66B +:10BEA0002B013C01A50194016AA57BA58CA59DA54C +:10BEB00067D69B01AC01C301B20130D32B013C0119 +:10BEC000A5019401C701B6015BD66B017C012981F4 +:10BED0003A814B815C816AA57BA58CA59DA550D636 +:10BEE0009B01AC01C701B60118D369837A838B83A8 +:10BEF0009C8310E0A30192016A8D7B8D8C8D9D8DBA +:10BF00000DD3EE89FF8960837183828393832981B6 +:10BF10003A814B815C816AA17BA18CA19DA1FED25B +:10BF2000AE8DBF8D6D937D938D939C9313972EA5AE +:10BF30003FA548A959A9ED85FE856081718182815F +:10BF40009381ECD2AD85BE856D937D938D939C934B +:10BF500013970D892F85388949895A8963E37DE0D4 +:10BF600081E00E94F24D8091E50D81110EC0BFEF7E +:10BF70002B1A3B0A21CF0D892F85388949895A8987 +:10BF800068ED7DE081E00E94F24DE1960FB6F894F5 +:10BF9000DEBF0FBECDBFDF91CF911F910F91FF90FC +:10BFA000EF90DF90CF90BF90AF909F908F907F9059 +:10BFB0006F905F904F903F902F900895CF930E9485 +:10BFC000E947C9E20E94AF408091E50D811111C09F +:10BFD0008091E6109091E710981739F0C89FC00142 +:10BFE00011248C5F914F892B69F78091E60D883081 +:10BFF00049F3CF910895EF920F931F93CF93DF935F +:10C00000E80147FD02C034E001C034E1E42F440FF1 +:10C01000FF0BF7FF03C0F195E195F109E32E022F25 +:10C020002E2FAE0107D0CE01DF91CF911F910F913E +:10C03000EF9008954F925F926F927F929F92AF928E +:10C04000BF92CF92DF92EF92FF920F931F93CF9305 +:10C05000DF93CDB7DEB729970FB6F894DEBF0FBEDA +:10C06000CDBF6A01122FB02E2BE3201720F0FF2442 +:10C07000F394F00E02C0BCE3FB2E0F2D27E0AE01BF +:10C080004F5F5F4F64D1AC018981982F99709130D7 +:10C0900031F0E1FC06C0E0FE06C090E205C09DE282 +:10C0A00003C09BE201C090E0EE2DE07183FF3CC035 +:10C0B000911102C083E001C084E0811718F4212FA0 +:10C0C000281B01C020E0E1110BC0F601822F30E2F5 +:10C0D000882319F031938150FBCFC20ED11C20E090 +:10C0E000992329F0D6019C93F60131966F01C60180 +:10C0F0000396E2FE0AC03EE4D6013C9341E4119669 +:10C100004C93119712963C9306C03EE6F60130839D +:10C1100041E641833283FC01322F40E2332309F4AC +:10C1200042C041933150FACF82FF44C0911102C006 +:10C1300083E001C084E0811718F4212F281B01C07F +:10C1400020E0E1110BC0F601822F30E2882319F0C4 +:10C1500031938150FBCFC20ED11C20E0992329F0EE +:10C16000D6019C93F60131966F01C6010396E2FE5B +:10C170000BC039E4D6013C933EE411963C931197F1 +:10C1800036E412963C9307C039E6F60130833EE66A +:10C19000318336E63283FC01322F40E2332319F03B +:10C1A00041933150FBCFFC01E20FF11D10828EEF65 +:10C1B0009FEFB7C0F1E0911101C0F0E06F2F70E088 +:10C1C0001416150624F49A012F5F3F4F02C021E098 +:10C1D00030E0260F371FBB2029F06B2D70E06F5F1A +:10C1E0007F4F02C060E070E0260F371F612F70E0C4 +:10C1F000261737071CF4121B212F01C020E03E2D0B +:10C20000387159F4D601322F60E2332319F06D935F +:10C210003150FBCFC20ED11C20E0FF2331F0D601FC +:10C220009C93B6016F5F7F4F6B01E1110BC0F6016C +:10C23000922F30E3992319F031939150FBCFC20E26 +:10C24000D11C20E09F2D940F3A81782F7071A72E7A +:10C2500084FF03C0313309F49150191624F4993046 +:10C2600018F098E001C091E0E42F852F57FF02C03D +:10C27000E0E080E06E2F782FE0E0F0E0AEE29A2E72 +:10C280003A01691A71082A01461A570A0B2D10E063 +:10C290001195019511096F3F8FEF780729F4D601A9 +:10C2A0009C92C60101966C014617570784F06616EA +:10C2B00077066CF47F01E40CF51CA1E0B0E0AC0F54 +:10C2C000BD1FEA0EFB1ED7011196BC9002C090E381 +:10C2D000B92E615071093196C60101967C01601733 +:10C2E000710724F0D601BC926C01D5CF6417750795 +:10C2F00041F4363320F4353321F4A11002C081E338 +:10C30000B82EF601B082F701822F90E2882319F04F +:10C3100091938150FBCFF701E20FF11D108280E075 +:10C3200090E029960FB6F894DEBF0FBECDBFDF9127 +:10C33000CF911F910F91FF90EF90DF90CF90BF9022 +:10C34000AF909F907F906F905F904F9008952830AE +:10C3500008F027E03327DA01990F311D87FD91603E +:10C3600000966105710539F432602E5F3D9330E32C +:10C370002A95E1F708959F3F30F0803871056105F7 +:10C3800009F03C5F3C5F3D93913008F08068911D5F +:10C39000DF93CF931F930F93FF92EF92192F987F04 +:10C3A0009695E92F96959695E90FFF27EC5CFD4F42 +:10C3B00099273327EE24FF24A701E701059008946D +:10C3C000079428F4360FE71EF81E491F511D660F0B +:10C3D000771F881F991F0694A1F70590079428F4EA +:10C3E000E70EF81E491F561FC11D770F881F991FA2 +:10C3F000661F0694A1F70590079428F4F80E491FCC +:10C40000561FC71FD11D880F991F661F771F0694DF +:10C41000A1F70590079420F4490F561FC71FD81F96 +:10C42000990F661F771F881F0694A9F784911095AE +:10C43000177041F0D695C79557954795F794E794AF +:10C440001A95C1F7EAEDF1E06894159015913591D0 +:10C450006591959105907FE27395E118F10A430B80 +:10C46000560BC90BD009C0F7E10CF11E431F561F34 +:10C47000C91FD01D7EF4703311F48A95E6CFE8947D +:10C48000015030F0080F0AF40027021708F4202F9B +:10C490002395022F7A3328F079E37D932A95E9F7E3 +:10C4A00010C07D932A9589F60694979567953795E0 +:10C4B00017951794E118F10A430B560BC90BD009D5 +:10C4C00098F023957E9173957A3308F070E37C930E +:10C4D0002013B8F77E9170617D9330F0839571E3FE +:10C4E0007D9370E32A95E1F71124EF90FF900F916F +:10C4F0001F91CF91DF91992787FD909508959F9384 +:10C500009F77D5D10F9000203AF49058A2EA2AEDF7 +:10C510003FE049E450E413D096C25058BB27AA2705 +:10C520000ED091C25AD230F05FD220F031F49F3F4A +:10C5300011F41EF42AC20EF4E095E7FBF7C1E92FCF +:10C54000A4D280F3BA17620773078407950718F01F +:10C5500071F49EF5D3C20EF4E0950B2EBA2FA02DE8 +:10C560000B01B90190010C01CA01A0011124FF27A0 +:10C57000591B99F0593F50F4503E68F11A16F0409B +:10C58000A22F232F342F4427585FF3CF469537959A +:10C590002795A795F0405395C9F77EF41F16BA0B5F +:10C5A000620B730B840BBAF09150A1F0FF0FBB1F0D +:10C5B000661F771F881FC2F70EC0BA0F621F731F56 +:10C5C000841F48F4879577956795B795F7959E3FB3 +:10C5D00008F0B3CF9395880F08F09927EE0F979541 +:10C5E00087950895FAD158F080E891E009F49EEF1C +:10C5F000FBD128F040E851E059F45EEF09C0C5C115 +:10C600007DC2E92FE07841D268F3092E052AC1F3F3 +:10C61000261737074807590738F00E2E07F8E02588 +:10C6200069F0E025E0640AC0EF6307F8009407FAB8 +:10C63000DB01B9019D01DC01CA01AD01EF935DD0C1 +:10C6400002D20AD05F91552331F02BED3FE049E44F +:10C6500050FD49EC63CF0895DF93DD27B92FBF77F5 +:10C6600040E85FE31616170648075B0710F4D92F5A +:10C6700050D29F938F937F936F934DD3E6E6F1E073 +:10C6800087D1E1D12F913F914F915F9185D2DD23E9 +:10C6900049F09058A2EA2AED3FE049EC5FE3D078F8 +:10C6A0005D274DDFDF91CFC112D280F09F3740F47C +:10C6B00091110EF424C260E070E080E89FE30895D9 +:10C6C00026F01B16611D711D811D36C150C10AD196 +:10C6D00008F481E0089590D1E395C6C10CD0B3C1B0 +:10C6E00083D140F07AD130F021F45F3F19F01EC1C0 +:10C6F000511105C24AC1C9D198F39923C9F35523F1 +:10C70000B1F3951B550BBB27AA2762177307840744 +:10C7100038F09F5F5F4F220F331F441FAA1FA9F3FA +:10C7200033D00E2E3AF0E0E830D091505040E695EC +:10C73000001CCAF729D0FE2F27D0660F771F881F4D +:10C74000BB1F261737074807AB07B0E809F0BB0B3C +:10C75000802DBF01FF2793585F4F2AF09E3F510560 +:10C7600068F0E4C0CCC15F3FECF3983EDCF3869503 +:10C7700077956795B795F7959F5FC9F7880F911DD6 +:10C780009695879597F90895E1E0660F771F881FC2 +:10C79000BB1F621773078407BA0720F0621B730B75 +:10C7A000840BBA0BEE1F88F7E095089504D06894C7 +:10C7B000B111A5C1089571D188F09F5790F0B92F9C +:10C7C0009927B751A0F0D1F0660F771F881F991FE6 +:10C7D0001AF0BA95C9F712C0B13081F08FD1B1E02B +:10C7E00008958CC1672F782F8827B85F39F0B93F3B +:10C7F000CCF3869577956795B395D9F73EF49095E8 +:10C800008095709561957F4F8F4F9F4F0895E89465 +:10C8100009C097FB3EF490958095709561957F4F88 +:10C820008F4F9F4F9923A9F0F92F96E9BB27939536 +:10C83000F695879577956795B795F111F8CFFAF446 +:10C84000BB0F11F460FF1BC06F5F7F4F8F4F9F4F77 +:10C8500016C0882311F096E911C0772321F09EE8D5 +:10C86000872F762F05C0662371F096E8862F70E03B +:10C8700060E02AF09A95660F771F881FDAF7880F15 +:10C880009695879597F9089522D180F09F3740F4C7 +:10C8900091110EF034C160E070E080E89FEB0895E4 +:10C8A00026F41B16611D711D811D46C060C0DF93FB +:10C8B000CF931F930F938B01EC01E3E9F1E068D074 +:10C8C000C2D09801AE018B01EC0160E070E080E81D +:10C8D0009FE323DEE2D19801AE010F911F91CF912A +:10C8E000DF915AC1990F0008550FAA0BE0E8FEEF3F +:10C8F00016161706E807F907C0F012161306E40724 +:10C90000F50798F0621B730B840B950B39F40A261C +:10C9100061F0232B242B252B21F408950A2609F4FA +:10C92000A140A6958FEF811D811D089597F99F67FE +:10C9300080E870E060E00895882371F4772321F0A7 +:10C940009850872B762F07C0662311F499270DC0C6 +:10C950009051862B70E060E02AF09A95660F771F61 +:10C96000881FDAF7880F9695879597F908959F3F66 +:10C9700031F0915020F4879577956795B795880F9A +:10C98000911D9695879597F908959FEF80EC0895EE +:10C99000DF93CF931F930F93FF92EF92DF927B0170 +:10C9A0008C01689405C0DA2EEF01F6D0FE01E89400 +:10C9B000A5912591359145915591AEF3EF01BFDDDC +:10C9C000FE019701A801DA9479F7DF90EF90FF90CC +:10C9D0000F911F91CF91DF91089500240A941616AC +:10C9E000170618060906089500240A94121613065D +:10C9F000140605060895C9CF50D0E8F3E894E0E0A6 +:10CA0000BB279F57F0F02AED3FE049EC06C0EE0F40 +:10CA1000BB0F661F771F881F28F0B23A62077307A3 +:10CA2000840728F0B25A620B730B840BE3959A9536 +:10CA300072F7803830F49A95BB0F661F771F881FF6 +:10CA4000D2F7904896CF092E0394000C11F4882356 +:10CA500052F0BB0F40F4BF2B11F460FF04C06F5FB6 +:10CA60007F4F8F4F9F4F0895EF93E0FF06C0A2EADC +:10CA70002AED3FE049EC5FEB62DDE5DF0F900394C8 +:10CA800001FC9058EBEBF1E05BC157FD9058440F6F +:10CA9000551F59F05F3F71F04795880F97FB991F1D +:10CAA00061F09F3F79F087950895121613061406DA +:10CAB000551FF2CF4695F1DF08C016161706180667 +:10CAC000991FF1CF86957105610508940895E5DFFA +:10CAD000A0F0BEE7B91788F4BB279F3860F416169C +:10CAE000B11D672F782F8827985FF7CF86957795A8 +:10CAF0006795B11D93959639C8F30895E894BB27BF +:10CB000066277727CB0197F90895ECDE08F48FEFBD +:10CB100008959B01AC0160E070E080E89FE3DECD0A +:10CB2000BCDF58F19E5758F19851A0F0E9F09830C9 +:10CB300020F5092E9927660F771F881F991F0A94E1 +:10CB4000D1F712C0062E672F782F8827985F11F42F +:10CB5000000C07C0993FB4F3869577956795939538 +:10CB6000D9F7611D711D811D3EF4909580957095DA +:10CB700061957F4F8F4F9F4F08956894C0CFBECF70 +:10CB80000BD061CF2ADF28F02FDF18F0952309F0B2 +:10CB9000CDCEFBCE1124B3CF78DFA0F3959FD1F398 +:10CBA000950F50E0551F629FF001729FBB27F00D5B +:10CBB000B11D639FAA27F00DB11DAA1F649F6627B0 +:10CBC000B00DA11D661F829F2227B00DA11D621FFF +:10CBD000739FB00DA11D621F839FA00D611D221FB9 +:10CBE000749F3327A00D611D231F849F600D211D9D +:10CBF000822F762F6A2F11249F5750408AF0E1F040 +:10CC000088234AF0EE0FFF1FBB1F661F771F881F88 +:10CC100091505040A9F79E3F510570F087CE6FCFDD +:10CC20005F3FECF3983EDCF3869577956795B79573 +:10CC3000F795E7959F5FC1F7FE2B880F911D96959D +:10CC4000879597F9089529DFE0F09E37D8F0963957 +:10CC5000B8F49E3848F4672F782F8827985FF9CF6B +:10CC600086957795679593959539D0F3B62FB170E2 +:10CC70006B0F711D811D20F48795779567959395AE +:10CC80005BCE75CE3CCF9F93B7DE0F9007FCEE5F77 +:10CC9000EBCE11F40EF479CE6ACEFFDED0F39923F9 +:10CCA000D9F3CEF39F57550B87FF43D00024A0E65E +:10CCB00040EA900180585695979528F4805C660F5D +:10CCC000771F881F20F026173707480730F4621BAC +:10CCD000730B840B202931294A2BA69517940794AE +:10CCE000202531254A2758F7660F771F881F20F027 +:10CCF00026173707480730F4620B730B840B200D9F +:10CD0000311D411DA09581F7B901842F9158880FDD +:10CD10009695879508959B01AC0132CFD8DE20F01F +:10CD20009F3708F4ECCE08CE22CEDCDD880B990BC1 +:10CD3000089591505040660F771F881FD2F70895CD +:10CD40009F938F937F936F93FF93EF939B01AC011E +:10CD500017DFEF91FF911CDE2F913F914F915F9173 +:10CD60000FCF991B79E004C0991F961708F0961B06 +:10CD7000881F7A95C9F780950895AA1BBB1B51E1BE +:10CD800007C0AA1FBB1FA617B70710F0A61BB70B3B +:10CD9000881F991F5A95A9F780959095BC01CD01E0 +:10CDA0000895A1E21A2EAA1BBB1BFD010DC0AA1FEC +:10CDB000BB1FEE1FFF1FA217B307E407F50720F004 +:10CDC000A21BB30BE40BF50B661F771F881F991F7F +:10CDD0001A9469F760957095809590959B01AC01C8 +:10CDE000BD01CF010895EE0FFF1F881F8BBF079075 +:10CDF000F691E02D1994A29FB001B39FC001A39FAB +:10CE0000700D811D1124911DB29F700D811D112483 +:10CE1000911D0895F0DFA59F900DB49F900DA49FE4 +:10CE2000800D911D11240895FB01DC010D9000205F +:10CE3000E9F7119701900D920020E1F70895FB01A9 +:10CE4000DC0101900D920020E1F708950F931F93EC +:10CE5000CF93DF93CDB7DEB72E970FB6F894DEBF32 +:10CE60000FBECDBF0E891F8986E08C831A8309838C +:10CE70008FEF9FE79E838D83AE01465E5F4F688D87 +:10CE8000798DCE0101965BD02F813885F801E20FB4 +:10CE9000F31F10822E960FB6F894DEBF0FBECDBFE3 +:10CEA000DF91CF911F910F910895CF93DF93CDB76D +:10CEB000DEB72E970FB6F894DEBF0FBECDBF85E06C +:10CEC0008C838C899D899A838983AE01485E5F4FEC +:10CED0006E897F89CE010196C7D32E960FB6F8943E +:10CEE000DEBF0FBECDBFDF91CF9108950F931F938B +:10CEF000CF93DF93CDB7DEB72E970FB6F894DEBF92 +:10CF00000FBECDBF8C0186E08C831A8309838FEF1F +:10CF10009FE79E838D83CE01019611D02F813885A6 +:10CF2000F801E20FF31F10822E960FB6F894DEBFC1 +:10CF30000FBECDBFDF91CF911F910F9108952F921A +:10CF40003F924F925F926F927F928F929F92AF9299 +:10CF5000BF92CF92DF92EF92FF920F931F93CF93E6 +:10CF6000DF93CDB7DEB72C970FB6F894DEBF0FBEB8 +:10CF7000CDBF7C016B018A01FC011782168283817F +:10CF800081FFB0C1CE0101964C01F7019381F601FA +:10CF900093FD859193FF81916F01882309F49EC1D0 +:10CFA000853239F493FD859193FF81916F0185322C +:10CFB00021F4B70190E0DFD4E8CF512C312C20E0F0 +:10CFC0002032A0F48B3269F030F4803259F0833291 +:10CFD00069F420612CC08D3239F0803339F421603E +:10CFE00026C02260246023C0286021C027FD27C0FE +:10CFF00030ED380F3A3078F426FF06C0FAE05F9E35 +:10D00000300D1124532E13C08AE0389E300D1124A8 +:10D01000332E20620CC08E3221F426FD5FC12064C5 +:10D0200006C08C3611F4206802C0883641F4F6013F +:10D0300093FD859193FF81916F018111C1CF982F4D +:10D040009F7D9554933028F40C5F1F4FFFE3F983C5 +:10D050000DC0833631F0833771F0833509F057C046 +:10D0600021C0F801808189830E5F1F4F44244394BF +:10D07000512C540114C03801F2E06F0E711CF801FC +:10D08000A080B18026FF03C0652D70E002C06FEF65 +:10D090007FEFC5012C8726D42C0183012C852F77A7 +:10D0A000222E16C03801F2E06F0E711CF801A0802C +:10D0B000B18026FF03C0652D70E002C06FEF7FEFE7 +:10D0C000C5012C8704D42C012C852068222E8301D5 +:10D0D00023FC19C0832D90E048165906A0F4B7012F +:10D0E00080E290E048D43A94F5CFF50127FC859191 +:10D0F00027FE81915F01B70190E03DD431103A9451 +:10D10000F1E04F1A51084114510479F7DEC084361A +:10D1100011F0893631F5F80127FF07C06081718170 +:10D12000828193810C5F1F4F08C060817181072E3F +:10D13000000C880B990B0E5F1F4F2F76722E97FFF6 +:10D1400009C090958095709561957F4F8F4F9F4F47 +:10D150002068722E2AE030E0A4015ED4A82EA81820 +:10D1600043C0853729F42F7EB22E2AE030E025C057 +:10D17000F22FF97FBF2E8F36C1F018F4883579F081 +:10D18000ADC0803719F0883721F0A8C02F2F20615B +:10D19000B22EB4FE0DC08B2D8460B82E09C024FFC2 +:10D1A0000AC09F2F9660B92E06C028E030E005C067 +:10D1B00020E130E002C020E132E0F801B7FE07C014 +:10D1C00060817181828193810C5F1F4F06C06081F5 +:10D1D000718180E090E00E5F1F4FA4011DD4A82E46 +:10D1E000A818FB2DFF777F2E76FE0BC0372D3E7FD4 +:10D1F000A51450F474FE0AC072FC08C0372D3E7EA0 +:10D2000005C0BA2C372D03C0BA2C01C0B52C34FF91 +:10D210000DC0FE01EA0DF11D8081803311F4397ECD +:10D2200009C032FF06C0B394B39404C0832F86783C +:10D2300009F0B39433FD12C030FF06C05A2CB3146A +:10D2400018F4530C5B18B32CB31460F4B70180E2EC +:10D2500090E03C8790D3B3943C85F6CFB31410F4A0 +:10D260003B1801C0312C34FF11C0B70180E390E0BE +:10D270003C8781D33C8532FF16C031FD03C088E76F +:10D2800090E002C088E590E0B7010CC0832F86785B +:10D2900051F031FF02C08BE201C080E237FD8DE228 +:10D2A000B70190E068D3A51430F4B70180E390E0B3 +:10D2B00062D35A94F8CFAA94F401EA0DF11D80814B +:10D2C000B70190E058D3A110F6CF332009F45DCE1A +:10D2D000B70180E290E04FD33A94F7CFF70186810F +:10D2E000978102C08FEF9FEF2C960FB6F894DEBFA8 +:10D2F0000FBECDBFDF91CF911F910F91FF90EF90A7 +:10D30000DF90CF90BF90AF909F908F907F906F9065 +:10D310005F904F903F902F90089520FD09C0FC0131 +:10D3200023FD05C022FF02C07383628351834083C3 +:10D33000089544FD10C046FD10C0DB01FC01AA0F9A +:10D34000BB1FEE1FFF1F1094D1F76A0F7B1F8E1FAC +:10D350009F1F31E003C033E001C034E0660F771F48 +:10D36000881F991F3150D1F7620F711D811D911DCA +:10D3700008950F931F93CF93DF938C01C801BDD203 +:10D38000EC0197FD06C090D2892BC1F7B801CE0100 +:10D390002AD3CE01DF91CF911F910F9108958F92E3 +:10D3A0009F92AF92BF92CF92DF92EF92FF920F9334 +:10D3B0001F93CF93DF931F92CDB7DEB78C01C62E9C +:10D3C0007A0129839AD2AC01552729814B32510524 +:10D3D00021F04D32510561F42068CA94C11002C099 +:10D3E00080E06FC0C801298388D2298197FDF8CFDA +:10D3F000322F3D7FD32E322F307339F5803329F50C +:10D40000BB24BA94BC0C09F449C0C801298375D265 +:10D41000298197FD43C0382F3F7D383561F48D2D2C +:10D420008264D82ECA94CA94CC20C1F1C80165D2B6 +:10D4300097FF0BC033C026FF04C02D2D2260D22ED3 +:10D4400003C03D2D3261D32ECB2C812C912C540165 +:10D4500020ED280F283078F0D4FE03C0B801C3D2E5 +:10D460001AC02A3040F0D6FEF9CF2F7D3FEE320FA2 +:10D470003630A0F727504D2DC501B4015ADF4B01BE +:10D480005C018D2D8260D82ECA94CC2051F0C80149 +:10D4900034D297FFDDCFD1FC04C0A2CF812C912CD8 +:10D4A0005401D7FE08C0B094A09490948094811C3D +:10D4B000911CA11CB11C2D2DB501A401C7012DDFAC +:10D4C00081E00F90DF91CF911F910F91FF90EF902E +:10D4D000DF90CF90BF90AF909F908F9008956F9204 +:10D4E0007F928F929F92AF92BF92CF92DF92EF92F4 +:10D4F000FF920F931F93CF93DF93CDB7DEB7A19722 +:10D500000FB6F894DEBF0FBECDBF5C017A01CE012D +:10D5100001966C0180E2F60111928A95E9F7F50116 +:10D52000838040E050E0912C712C70E0A1E0B0E0ED +:10D53000F90183FC859183FE81918F01982F9F01D2 +:10D54000811103C080E090E07AC08E3519F4411556 +:10D55000510549F1E72FF0E0E417F5073CF48D356C +:10D5600059F18D3219F4772001F103C0711001C017 +:10D57000982E892F8695869586958601080F111D10 +:10D58000892F87703D0101C0660C8A95EAF7F80182 +:10D59000808186298083991559F0991510F49F5F31 +:10D5A000E8CF9150E6CF71E004C07724739401C0B6 +:10D5B000712C4F5F5F4FBCCF772019F08E81806256 +:10D5C0008E83711103C09924939416C0F6019E01B5 +:10D5D0002F5D3F4F808180958193E217F307D1F74C +:10D5E000F2CFE114F10429F0F7018083C70101961D +:10D5F0007C016150912CE9F0C50169A37ED169A13C +:10D6000097FD15C0282F269526952695F601E20F41 +:10D61000F11D208130E0AC014770552702C03595DF +:10D6200027954A95E2F720FDDCCFB501DCD19110BA +:10D6300089CFE114F10411F0F7011082C801A1961D +:10D640000FB6F894DEBF0FBECDBFDF91CF911F9113 +:10D650000F91FF90EF90DF90CF90BF90AF909F9091 +:10D660008F907F906F9008954F925F927F928F92EC +:10D670009F92AF92BF92CF92DF92EF92FF920F9361 +:10D680001F93CF93DF931F92CDB7DEB76C012B01B1 +:10D690005A01FC0117821682712CF601F380F20107 +:10D6A000F3FC8591F3FE8191382F2F01882309F433 +:10D6B000E5C090E03983F8D03981892B19F0C60193 +:10D6C00058DEEBCF353241F4F201F3FC3591F3FE35 +:10D6D00031912F01353259F4C60139830ED1398188 +:10D6E00097FDCAC03817C9F2B6017DD1C7C03A321A +:10D6F00039F4F3FC3591F3FE31912F0151E001C073 +:10D7000050E0420110E020ED230F2A3088F45260EF +:10D71000612F70E080E090E040E259830ADE162F2E +:10D72000F401F3FC3591F3FE31914F015981EBCFB8 +:10D73000052F232F240151FF03C0111102C09EC0E9 +:10D740001FEF383619F03C3659F011C0F401F3FCE4 +:10D750002591F3FE21912F01283649F4052F086009 +:10D760000460F201F3FC2591F3FE21912F012223A5 +:10D7700009F484C0622F70E084ED92E029839CD08C +:10D780002981892B09F47AC000FD07C0F501E080EA +:10D79000F180C50102965C0102C0E12CF12C2E360D +:10D7A00049F4F6014681578160E070E0202FC701FF +:10D7B000B4DD73CF233689F401FF11E0C6019DD09B +:10D7C00097FD5AC0E114F10429F0F7018083C701E5 +:10D7D00001967C01115091F74BC02B3551F4920109 +:10D7E000A701612FC6017BDE2C01892B09F040C007 +:10D7F0003AC0C6012983BDDD298197FD3DC02F3682 +:10D8000041F128F4243619F1293631F124C02337A7 +:10D8100069F02537E1F01FC0E114F10429F0F701A8 +:10D820008082C70101967C01115059F0C60165D074 +:10D830004C0197FD06C038D0892B71F3B601C401A5 +:10D84000D2D0E114F104A1F0F701108211C00062FE +:10D8500003C0006101C00064202FA701612FC60131 +:10D860009EDD811105C0F6018381807329F406C015 +:10D8700000FD13CF739411CF772019F0872D90E01E +:10D8800002C08FEF9FEF0F90DF91CF911F910F910B +:10D89000FF90EF90DF90CF90BF90AF909F908F90D0 +:10D8A0007F905F904F900895911114C1803219F0CC +:10D8B00089508550D0F70895FC010590061621F097 +:10D8C0000020D9F7C00108953197CF010895FC01D8 +:10D8D0000590615070400110D8F7809590958E0F9B +:10D8E0009F1F0895FC016150704001900110D8F70E +:10D8F000809590958E0F9F1F0895CF93DF93EC0135 +:10D900002B8120FF33C026FF0AC02F7B2B838E8103 +:10D910009F8101969F838E838A8190E029C022FF98 +:10D920000FC0E881F9818081082E000C990B0097C7 +:10D9300019F420622B831AC03196F983E8830EC054 +:10D94000EA85FB85199597FF09C02B81019611F097 +:10D9500080E201C080E1822B8B8308C02E813F8151 +:10D960002F5F3F4F3F832E83992702C08FEF9FEF9A +:10D97000DF91CF9108950F931F93CF93DF93FB0116 +:10D98000238121FD03C08FEF9FEF28C022FF16C027 +:10D9900046815781248135814217530744F4A08181 +:10D9A000B1819D012F5F3F4F318320838C9326816E +:10D9B00037812F5F3F4F3783268310C0EB01092F3C +:10D9C000182F0084F185E02D1995892BE1F68E81C1 +:10D9D0009F8101969F838E83812F902FDF91CF911E +:10D9E0001F910F910895FB01238120FF12C026FD96 +:10D9F00010C08F3F3FEF930761F082832F7D20643B +:10DA00002383268137812150310937832683992743 +:10DA100008958FEF9FEF0895FA01AA27283051F15A +:10DA2000203181F1E8946F936E7F6E5F7F4F8F4F4F +:10DA30009F4FAF4FB1E03ED0B4E03CD0670F781FAE +:10DA4000891F9A1FA11D680F791F8A1F911DA11D93 +:10DA50006A0F711D811D911DA11D20D009F46894CC +:10DA60003F912AE0269F11243019305D3193DEF674 +:10DA7000CF010895462F4770405D4193B3E00FD02A +:10DA8000C9F7F6CF462F4F70405D4A3318F0495D15 +:10DA900031FD4052419302D0A9F7EACFB4E0A695F8 +:10DAA0009795879577956795BA95C9F7009761051A +:10DAB000710508959B01AC010A2E06945795479570 +:10DAC00037952795BA95C9F7620F731F841F951F65 +:0EDAD000A01D0895992788270895F894FFCF88 +:10DADE009A99D93F0802000000000000007373639A +:10DAEE00616E662025640D0A0053255B302D392D9D +:10DAFE002B2E5D52255B302D392D2B2E5D48255B4F +:10DB0E00302D392D2B2E5D46255B302D392D2B2EAC +:10DB1E005D004E256456255B302D392D2B2E5D462E +:10DB2E00255B302D392D2B2E5D0058255B302D3980 +:10DB3E002D2B2E5D59255B302D392D2B2E5D5A2523 +:10DB4E005B302D392D2B2E5D46255B302D392D2B3F +:10DB5E002E5D0041255B302D392D2B2E5D00562577 +:10DB6E0073002056310A0046255B302D392E5D5448 +:10DB7E0025640058255B302D392D2B2E5D59255BE4 +:10DB8E00302D392D2B2E5D5A255B302D392D2B2E18 +:10DB9E005D5025640053255B302D392D2B2E5D00F5 +:10DBAE006120300D0A006220300D0A006320300D16 +:10DBBE000A0020422573204C2573205225730A003B +:10DBCE00537769667450726F002025730A005634BD +:10DBDE002E312E300056342E302E3200464646461A +:10DBEE0046464646002025730020582573205925A9 +:10DBFE0073205A25730A0020532573205225732053 +:10DC0E004825730A0061643A25640D0A00204225F6 +:10DC1E0064204C2564205225640A0040310A0023FA +:10DC2E00255B302D395D002425730045323320628B +:10DC3E0075666665722066756C6C0D0A0040332041 +:10DC4E0058257320592573205A2573205225730A9F +:10DC5E00004036204E30205625640A0040392056AA +:10DC6E00300A0020006F6B00453230004532310023 +:10DC7E004532320056332E332E310056332E332E8C +:10DC8E0030004532330A004532300A004532310A3F +:02DC9E00000084 :00000001FF diff --git a/src/motion_control.c b/src/motion_control.c index 4ac6d8c..6636cab 100755 --- a/src/motion_control.c +++ b/src/motion_control.c @@ -113,7 +113,7 @@ break; } - DB_PRINT_STR( "divide num : %d\r\n", divide_numbers ); +// DB_PRINT_STR( "divide num : %d\r\n", divide_numbers ); float delta_coord[3]; delta_coord[X_AXIS] = (x - current_coord[X_AXIS]) / divide_numbers; // calculate delta coord delta_coord[Y_AXIS] = (y - current_coord[Y_AXIS]) / divide_numbers; From 7d49b8fddf96defbe35555df7b7a24540d4d93ff Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Wed, 20 Jun 2018 18:07:04 +0800 Subject: [PATCH 30/74] Create --- imagaes/1.png | Bin 0 -> 57796 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 imagaes/1.png diff --git a/imagaes/1.png b/imagaes/1.png new file mode 100755 index 0000000000000000000000000000000000000000..ebf99da1db549e5596a614910e99c13fb066586c GIT binary patch literal 57796 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®P9w-u8L~q6T|y&U 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 Date: Wed, 20 Jun 2018 19:17:39 +0800 Subject: [PATCH 31/74] update --- imagaes/2.png | Bin 0 -> 30952 bytes imagaes/3.png | Bin 0 -> 38637 bytes imagaes/4.png | Bin 0 -> 142381 bytes imagaes/5.png | Bin 0 -> 34909 bytes imagaes/6.png | Bin 0 -> 28120 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 imagaes/2.png create mode 100755 imagaes/3.png create mode 100755 imagaes/4.png create mode 100755 imagaes/5.png create mode 100755 imagaes/6.png diff --git a/imagaes/2.png b/imagaes/2.png new file mode 100755 index 0000000000000000000000000000000000000000..aa4a64b00d503b62c86e08e1590da0f288bce633 GIT binary patch literal 30952 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 eAWGJ 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 z zgB|e%N`JTHP)VsFvVSe(dPvAN7PG-!RG_ni9X-Fj1NvXMI3l$VHrYRLM%(v2;fEgj z{hi9*G>`{xTK6fk%HN1^(=CuCg4=P)%QtqQTCbX;wT7*5zKSiKqbbU0yZL%2+c5nr znjPpi#F3Lr%faUcJR(&Vlu?1^gqFwYj{!?v9si6=O6uu}!I&e^Du!f+XT}k$z7vUfuMQ{Z+wZ(579a!WfTgq}JRJ9cNpwi<$#+@Lsq5D{_5;=j6mCRCds@gY(-L z9lZ|d{iwA;@UFl!^{W|UnwmFm=f!3uN$1qSH%5#cZBD3uVAa0g_U7 zZd3<5mg%X{%f|RI60?udXZ9h8>`qSjq*7`~`A&!rFHAh4hR8H`8@~7JD4I_*n{3^M zYy6hW2$9sAO`A&Mn6?QQM>yabuN)KF13o*Wf6YK)89NAL z5MF@3 z1oY+?-I?;9(%V=>dokmLhWrOQN_?S%V8|pN7iaMm7pV;pud%V(pf-1>SG;INwpf|t z<>qevaIBwNy@&pOf&N$32>zpqiXgwNKMvZiyV5uwJ7Q@KnQK3EzHhv^Y1g5J9$LOB z%)9=3VNeBZzo2Ps7-J$2W)m1jF^bFuJS%Ja2%F8Lkyo#n2_8OwuWp`q35@r(Cf1QU zCqCX4OKKA3?-fG-=O9ZZqBN(%JNz<>6aLnzrEXpY$%FC3^W})ca`qdlymFh^0@h&P za{Tva(E{pQmb^KcS>Ne(WwHBj-aSt)Q0n-GH5{cC=S6fq%O8cRir);FJ*Ux)Rwpi> zGD0bl_LDuJ>V-RU#|$joYfxeKTd&>s?tq%(A^$wEHB<|)}K$KA)NHyZ^Ys_m3Clv9KHVi}S7|6IvEiyLiu?cwRJ`$8Z_ z`E;d~EVbacctK6xD(AOu8TH^)<;x2M4H_=|+|~IfN*y90iR;mGj)mcu(Aa;zE{Y*!U@Gcg2H`UL8ncX^tdwRXvMO*mn{XO}?1rnV8Jz>8m5o{0 z|GA%ml5^z`M_p4fLeqxrotQD^s*sG&zo#i3*(dSG}LW~!#NNh>2*`7{33v}X(W zy6#h?6POk!aB$3KWDJ+wM4MZ5zz_A+tzt zUr{c_zhNgA+p^8VbY`~wb_3F21|UF`s{#$Ee^c82>eA628zM*ApPI&$_-HE#>Jsh4ji7tMGtxo519*ebe)^Ofh+G{ zQE^OUch$w0He88*4mzj%Q+U>1X2yrRnGyZeHR)xg;>V2~wWz5jWU%}p3xc|W? zQ;*HmL~iv{|24Y6A>O72%wx%mCyWK#>BdFgwkbOt6R-_`ze?CXz5paNs+orW0QSNx=$%(qk0@-3unyh*ZIB^Kj}IBTc_VcA zXX`Ij?_EFqpt4AkZ864Hdd>meBYdt6psQ>b~-~8^@VY*^Ys;^&j z%ISw~TZ^1|4mkkUT}@I7SQ6es=x`#T`iOpm3=V&WWZ_cHP>oR3%t8B|mm1i;wWDNz zdaPROvbex>U~5RYnNSpJk-IP|w!Zu!eGV%071lniX&KKrEnUjB^6T+;zhoZO<|C%* zxwrQ=`32u26{)tT!|trUF!Y*be(~}PT~9xH27ik_H4YT}V|RKjIy1e8I8w_4jjHQ; zqstjT^qRNPhKub3zt9CgE28a%8QZAni%!iH z-e&!BJDltfz0PB3Pn(->Ku^%SKbEz+frw?r_8jeuod@#`kO$^@ zeC{lqAs7gpl$#d{HBkGA<6}0F9a2}v67i_*5`~~`!IJ#FyXtmmr+nan|1C(c@kD@w zK51W12|taIz>3{KR)Kny>7K%J~iO*TUA*#oC{iYUT=6{ z(!a8gt{2R=XLY+o-Whp4_U#*N*}bWc)ls;;ubd0-x4+RgrraM~L7=^8aUPr_Er}C&PpVD zf0}pZe3Ff2vG3SV=+gX7){|tmnMVIZ1M2j9XmuZI(Lu58T3MI<6Sb^XGwT5Eyq9~Z zK{9kiCwTBzb?X5(W7892+Arc$rFoY}XPYhv!@1!1OHg>Ue*jpf@+p~x{jf6%|Nf8S zy`$F9n&1nx`^~TW-k2Ic&e7L9yAt@@i@uBEbHDg`Gr!k`t*rn^_ZN6yjJCHW&Yvek zg4tfSLn*$rqwjNiQ(ceRoO#fGt!AZj3#;dEOxEYGj`c8%Z+(J=)fFBmZoY(V;7iIT z!n&^Lx6VHM*5n;C%=en4JTNtNzK)c3pX%Mk8k~88G>Z;230s>G-m^HRE4o89Ejw2h zd>`@hp0#i4!r;5&&J<%GGdK;jCsvf6d#i2R!sK_^asoKt^*(RL-FM;Xz7FVBuACnk z#gpn>Ni3^I;5OBbXr*pl7T8a=TKG&!oXu4HIEJg9gC{2Cf@b5CFgQ|RjX5iTct*w& zm~3;)-^bE9;@peZD{GCncHfhmvO4un8P$t$oDWp8|T6eP&9S%SdN@=C}r_?;d2!ZqlhM2;F%uoPGt zh8R^YgxcHM1tc08#eZlWtsS-n$#oMdFVvRb<&<5+$60$fHJU_h34JH?(5x^&607sS zw|f4XgMOX!WPF7G>d0Z_akGfg=r@Ho<2j_gf#momeAY_rbr+8yvR6`)_Zm5)7UJo% zg>S9L`*yfc@^=Fglqq#eCpz_@(2I*dwpAl^m_GBa=RGSg2t4e3t{A8FoR_F(?DgA^ zo<6EENY*-UD(KMWf40$RVUzReJ{;a^`;(M}^u4JmG$)cFXdQma6Cz}aAOXc-^;+G(Y*Irb6wHoO{Sg6v_L5ss&TURx@1)gm&X^t@S2QK!QB{qP5 z7rZqqJhfY{0&$z|v$|1dwxC+5!F(zaOE8#D44R-lW9sfU9iI?XocO>HqHeUzEvV?b z3^kc{-2d@~N#j$+pLDq;T2A7lV%Dyj?imp3} zF%B(@J^Z@;fnN;|NKJ1?qOsV7VSnwQ&g*`fNulP-z3MnZ5{O;iErg3#{@-ITM$GS? z)9YgZt=lYkq4kc|ydiZwP3b`>()}cae`il5sd-hmthFKh6#{!Z1oX1>o9oIyx*Uxc z=Dav8Q)~e=%~OE8-|UwIdL2-HB}=Uy8C}#3onW4$w9?=(pDXG&lLaI?<}QSyA(8^G zKg>JifWeACjCLV5c3$v_>#z9UcWK)jM5pcdKfD@@CeBvvg0*}MI#RMnD9Ju;Dj%mF zEW*XUJ}0#PDRTj0F6LyIDF7q$i>J(NZnSWss`RP4LIv12s<5(Rz4yEGy*Az(1VhyQ zw(vH`-tXQkmq@$VqBd6EV!aZ~6ri3!dXFF6XP&#d^H^BMga@*py$p=8WEyoSBFVtr zUu?!~HOH>MqQk^P?CYEMtkY533w z1~{lbE{~YB+<*1cXqd3E^FgLU+iCSUz6Dj4z@NPzqH5h64IhzsJ+FL9&&qRg7Vo-x z*Reim!^sA$-WAyu^}`;WGr#B4QCH13%y+1*1z~-db$eR9JsvQ!2uynT_%!R;%$y@w zlB4>%8HRo?NtJ>#^*Hw)Y=}9Fs zJ^*J_G=r%_2k6irdpjc9avf<)+njhoZxEFOv*Fg+Q8G~xl&qd#aNNVG>}t8V2D`SQ zcA5-w_FMVnewyNkn7^PGMttt;Hs;mr=a9A`vLdu2`zE`hWbF@<`fmUKXXZC7my<0{*lD%9evV+t=p48_nEmH=2Y)SJmj4E zT+<3@h5ca?>EVL&jG0J=t+Ib%vShyf^l9EMWGU7sDxU8L=gakdo6!S*>OH@@=ZnLE z?}XRp?J>4=RF@d;(zxFhd+jTISN;~uU+jk4xG)HG#dtW;Sy=A)Ek`_M*6k4~?L*u; z$ngU(+bRk}?^ZzSO!xQ*_8H2a;28Jo0cmj7#+~mEy^GIQyxSic-d;Bp71ud^@8duu zzatuwvR(Ku{y1W0yKjf9w&&!m;o6UW>H{2q-_Q0!d+U_M+U?))<>q@|MkZTsuIR2^ z5l)`1t3?eOn}gSoWZ7?F678%?kb)+bXLP2ZNW`|2@HY{723*e%sSyq*`wkCcEx$ra za1V34pG?6%l&{$ZcZETalxhoHKiBkD*w{g2tj5u+ix*;xvifiYGHXOu7dQoWJO`G1 zy@qw@TU&N|mRHmF3>KGX!GHK~lhkgVcW?g@3?zlerY>Pz$O z33e<(P)`m?tas0gYOps=H~f`h9Fy*|4x~Hdi{QekFpI-YKWXv@Bn?->9wsF@6?eRN zQR2nHMq4|#G_v^3hgdO~53>jI(G)2m*4E>>lB$kgD&-#E&FPm7Q{J_8SQ~orDHs96 zEBE;p!}|X=-$v`}lyky`kh!)v>G$S;)rT%8@Qv8Ydh#wcBL!)QT<$07j~)Hjag@41 zbs%sM9R#NCk8K+K& zx-gYAnLMs-MnWx}!p!#`kY-3BLS3c$avb=qGClb}Z*LiId= zlG;D_0qBR$*4p!QnEJqUy9``E4YiQ%rxP&@hs^#b50Tnr-X@Fmhm**{?5O<0&>76M zM_T(*#S`jU$=fC=!9eLJmQKV(r!Uzxg?bNyT}G;KgMi}*vmD?t=FW^C1l-n_)i!8= zg6^7jLDBik6y`xIAG8@o1`m-~fV1G1Ai{&RT`1<8!v992VNDuks zWlEj^IbCYUUzT5h{*!|K6nF7>P8EeLwg*0M;svWeo5W{>Y3Dzc{qoh!-g<98;@}A<|O)G@p?`=m^e#kyvH8vI8Th5<3a|wF?@jn8~HTY$_2d4R!2YRjw}#@+dJhIzn>`UonY&pPpjo9*)Hcsm-SoxBTaAlR~! zqH}GMoiFa}c$`ZojVKuUb>J_lsNpD!&~?b3&*Q#v9}WFnc^@^wrQys8tk7amcyV!c zjfb#??Zq>Bo9-Jcu*w+2vK<~ZtRs}n(6Wj2hBS^H2tNwq8`;^r@P+e*pe{LM9hK<$ zPEO_CRzu>ybS$b+Tz)J4<<=6Js8z=}hB2IDf%-i&_a-Vw61c@W3_j zOf2B-UKO@2Q~{(nZPt)lN*JAvi=ow#|2yxGgGdV}Z}YI-nLYfx-3hsvtga_-UXlAQgnc{k3$hJqXv+upl3>ArLDTH-4z5UT#v2=2Y{Pkd(5eihO!%pV}y2 zy{#e(Xe1(~hGW1Pf&B2Xs z5Uoa#bLy9S^3x>!EOQ@#@{UQjqlG%ZhHh|T1jSZ0z+@C1@so{gWjj z+81uLgC}T$3_dMSnhjGg%|H+;wJA&X%wYkAJmC|UOmN4Io<^!X8rozfMPWJa!<6|* z@sTDw{j{Q3#9a$=JNJa{I30tq^C8-_(}m}H78F3vvGJo+^r|C>6g{%mOIyq7^2xqv zxF0gA(;ESNbtonoId4$yo#@Dpr*A^gdJh+>o%rQ;`J`RK29zO7J`2$^?)-gYML9z#L~+bw_(akZqPBu>Ph z;bgeV@0u^}yo!m7btIS6>Q=D-flZpY(Ma4_x+5*}zv~w_`74ahUM%L5SyEB|{~a>< z9Lys*ILV2S*M_5$y&Rkl)vP4m-&7ldtZ_#4gZ_v2p~*lsXvf{4`NfG5QHHIfN5-}^ zJCc+82d-ZR{aNgPZQlxMdNI8jANTFXDNSAuiXspR*hm8$C;e>bZo$-qAwO z!Z~ha|AFj~WqMVaLFEf;+cnboQXVv6j#|KsCPSz7?n$&`wVi(={5sALQ}%xi8Pk76 zqv{MJQi`2KHZC$m^0hs+{5X8*N=9Q|Q3sDCS#B1au3kq~p8dCz93A{+=BJwGnPEW} z(icg6nCbXpriAISB5Ju2!W4$oT)dJr?7F77s)(WHTs{MOShF9i0pkDm$mvHS5KDOm z>GdA+9>j!c3qQZChDV1rvn$6G`f%`eTpsnyH(t@Wp zAA8$27t&T+hCb}pp^}MHs0?Qiqn+V}~* zhfMZo6|WU%a5jlQ{hu^Qopz)YIQY3mF!X7j$>-r{(ywRD>cN)GPG5Yaxmx<*7>yeU zfK3lMrk^YME({Z1v4H3MlQl$jB(o&@;hJ#GC~a&zSZ~C87Q7r1n%XC{UU2J6`CCqq z4`{V#W`FI{XTNyutmAkR>t5ylQwvN2V0s03FunG?gLpvTF{nvglo@(mQlft|3|)4e z-uiXQN#l6)0?-y0ran474A3UV@yp7}0>||-5Q(%5Mw2BmWwHRBt{Kdq`X}48gNAbE zbB)L|Nb}QC1c6r(dn}Xd*a5P>O13CTrNGkXBgoWF0T`2V)gm#KbA+3A#e&lR;R5Jz z*lrRQ09;Bpobt+#zd`GyrsWv{91~+c0Nvic2}X_SgbE*P39u;uvVFM#?uga8Y#DBY zTS%0KI2L;((R@R*>&Qoo1o)d1pF=e<2Zx5hFdW$QG8(AxCl(+G8HmKM?N(L?p*9Ax zx*MUHAIl^is>>RWKM}Tj^G$BFvyCJta2ZhrA-=KHU}j)# z9cB2Y6@qP2?eC;>I&m{T*50MI5xu$*QERwRt>K8GS3!(HzdQNYIFk?uN9^ASx(EF- zN$h1+9ul+!B1P-{fZy#(@=ZRvH{q4>B*P$86}rls{?n7?cB_F;WEQqQHPhtAJ~QD5 z%VkGg(E}=1E@rc0WP;CX{FS7VV+|yGprm5e`@ch42vdPWfUa-t)&>hC2Lb)N5e|+e z%v8y2&T(y&D9%IQ(!omNidYO2F4uf`3AAVkqE&gdfg7QWmaoWz;EaD-sLt(jd*B16 z&$yhWHbxz;_lwu|uwJNmb;(pSz`H8DA zCK^Sz8gn21;5=kXz@LApe65yi-1JQG`ENEM<$AW-O8%-PlkmzC!!~5YvYXh&8aO$= zf^5tGYM{V{8X}v6?QhTGtNN*zrEttZ*L#C{$~zcC5A4UsNl{g$njUi7`PGtLiMbGp z7d<=pZ}ep+VeP9F_&?DXg`)`ul5h`vya@8$uR4_##%2jV(Yk}fFXVDFIQAC*jlGg` zi&W)wnEs8p0xHVxvKk{fW{|T>SWj@i)S+^TrP8%OT62=Z=a{HXmSCMOZ1gUj>xloB4;tWu*Pp&e@O>2X88K_0F9HcJZdc zXJw>9S~7|;LVIT611j5uVJCjRe?54Q(Pl9>@ru|Ck=VYKspTxADSm|+EFxUqcG>e( zR@6*2=Wn*nm655&Xs9*B#KJ2z_XZAnOv9SCt za8ddSe?6&WX~Ze03oj{qFVwh2pPy9`Zb-yS>@y_-3e*p95wwXuI;Yok#(r>rV=QXc z`4nsSZC(0ulx)f23s<$0EbGG4L=i_fPq(K&37_OFSjPpvZ&X+YRy3=T$+i$B3ptii z3iDpQjK8Hr63CyRlbn{Fk`c;;pZGAINmeRF2@7xkN;~Tp_~Goj!ZG6cE!hv28!@)Y z|IqRuD@BZ6X1_{l;#6c}`{%}tA^muZAH5D4l)H7awbKum15e%pi`)u!d{J?kaar$* zb!O%Tg7=P!0DYCcDCGm@bI=Q&HZwTkU200@(&0_YrIVq}J5XBx{PrCo>E6MON14bk z^E|X`t;6io2%>Rq<00?dw1&Xia0`Z{HSMot2CaB;EXd1gydrb?qwYW3fNL5~qu#nG z>k`7B-HeYPK7j3oz`0ba%u+kJu4I&@J3{Wl#hoaB%_g1$m9+fFzzq012 zsq(~X^U;0DyLsaLAwN5u>s_>fw4$Nwopair)LW0kygs4vz=tU*o+;NyKK{=l0R+}} zZ$rEj(HDO9j>pil7zxGiV3VpHK5ffgeJYlowmUjM-l4- z{Y&YyY*fw%-#9n4e>Xoic=18hX!4WswAK|=0a8`#7_JRR@=q0;4!+2o8A>%dPeayY z$11HlCiBLt5R9)Zn$H-OW}JfE;29`V>tg_iTP0F(P7}X{OzpIoBM!rQKfHN=vEUs_sbbj=dazu-@V|I{4vm`Mq(LGGksXk zp)#5nHM7ShXh)VH`r`v9s}ai$u$}`=;Sk#*lH2Rmy@WE5se1ClP`Nm@A0JV0W6gRl zK3ctTC5^>oklx22C9RorP9AzEOD3fDb!~htYe9IN={hFx;3tt7`k4sW2`%Z_31ea- z$o;3)_5CfD5hVDqbK2<#IJ>x{aiCzUjO#;%t_iH&Wo76d=YfmlpDjMm97NoXFnfD@ z>FqzFB-ULm=}-t0zLtIP)SP{>lAMEGXGKJ8{D?(JZKj}!3u;8I8KfGYH@G*56V@K5 zN}~}=aYsBLa-vti6BnXo`BsiAbf1NftL9}~G zhQLkC)y`Bu4Ny8j_UtrFi7e-zlvxE+faKz4_H*AcdUn$YQnRu`(g?k_=Gna((IxCs zU)fUf%nI?^LO;(twtyA20N3+%)Lln{7*fIY%!lheHqij%9b|-aQvBnOVlsBq$D*60 zot9G7%QWArf;5|DI=-3RNLQt;n%`QR(3GF_o6NdpjvjoXkYZ$BXSSMZ82e1$VQEmY zzbm&!&6>~T73+E5_-d$0ctiten(UE0G(J2x11~VG3o!xgRBg=x&Ll$NuC}G&{)vFV zHfda8@Lo%Bdt4dMY%~9Wf}%Sw zC3A^s3S^za8WT_LQc!28^ffj8Hu*xFh)U%LC#+IPeq=neC5S8eTMPRPgDc@PX0zeNHxZ#=xbTeD@#s9EwNHMyFY z3)H=BRfRZTUDudIF%?83KU9Tz>PeMx=?uM6IT5AUn0E6^grv`TmcdLaP7f2G8iZGu z2#B&(d^N98ehn6q>E8Nc*R;jn^oT3CFT%0UPI1HV=IdzT#k8)&-1;?pZt_lDx`h^LB>H)uQLST!7`UePiCg2%Z|BMp3Sk;G9Y8qI5Xq&27Nr`~XKkI&K zD&xaxV6f0*CWgcFPs8$MF?p#!GfKS;z%apY6F?pUtk*OXh9*4_9y9Z_qu(V*#()>B z5|n>_veZEN1lX(jL^2wnqXVI6sXpRL1+g+4mQ)sx5`d)|7@Wkx3md-ZG)x$Nf$fZ9 zz7j#JrF4?E9|NK?IGCMei(M)b>`Cq4H++EDJBMCXZEh*K8{hDQ__>NaS?3SB5-Bb9 zlKdR$yq59&H31AO^&1f!VE-UBSB!C#ib)HVi!RbxqF^FP+!DoMg~ky!1JZEJVHpqiRp5t@ zzN%JJMQf&{vfL)f1qd?(DQ)VJJO20r1skFc`7PtpWlHZ;BD%gmQpJ6(~KJHyJhSDG(Djiv(>&Eq>dr~gE;q&XYppVF{OJ*A?Bbl zZYvz%|14p22*4%ol}&;yit<{}c$g&r-ZH_^{zas?V64iDUQfT$SAq;KKpQWQX>xn} zbW)B`?BZektGT(~J5-NodHc|;QJ2|9iijCr&nUG2vl1tceO{-$cnY~Upr$zqF4zNf ze(Nza>vBJPH_Go4!}BI&QS*HC@{G)~TEo!WffW(gR$9=W1Tpyw{q;gQos z=Pk|qV}PG4NVQ-@|NO*h>$!dby6(BfO{P#PR{*Q&fb&`7It<3_T?S zSa~xF2bI7(K04l;26qo0@lgo}ISyeO&kl1?PwR@rY4BE4<-7-_OgCON)08dF@H5-G zcw7*kt7dJkRdcYNH$}(WcH{+N_oc&kQ$ggMnNC#O+b&{~ z^)A#IZvC!&iRwfkZ2V#uncCNUSgKj_R84OPhtkO3Vn^@p?cx;6xJmix?OuBAenyNu zb-z%w?r?GG?D4Fi1!k+B&|dWU!LuAA0SwNI z1+M`AVBcwGJ>3Q-rzU?8XvrB)T)ec;=`$=%mGBL-xXCas{Bef)C*fD(Ei;DN|5+$5 z)#x%PnYWzHY#=(f5X~Z2g26vYEcNK4UjP$W8p0j4 zvJ7_ohxowA+G$lD&sn&{Y-ILG-@D$aV#4iAt^RM``y@7%|7{bXS$=>PEj6n7)lPCI zJCCREWL=|OHlSbrgu!>(_{MS!H{oKY91yB-z&+<&nc@1bb#F$-cbqzDyC;O7Mk%Y8 z1WOb0No5Z&DYv3WR2qh9@B@Oh4WI^Qg*@vdsRcV#Jc>h*-4n-r^6X5sS1wRSR=CEg zLxIH!#)z?xaztYYEM2weQvxWm7KAlS!cuzT?Rpzd6|iJLh~Dc^$0(WJ70n;ZxBmRk zt3El5kzE9eX;w`T$IJZ}1JK6QfK^HP_QjdA5o6FdY@a~Yr0@9`EPb?#;yHi>cnXy) z@c_dyI}sy~Sge%c-&6~OJQawWdU|T_b|)~74D}@oUIPz=sjysA0qnf_PQ|uXoAnV* zKKizjw9tb>Yr*hKzSW;a+#I!DXr5$Bm~zPF_?|7O+9ex<(}HCW?5!u|G146BXHiP zo1Hd@zbIvkT6~Es{U(ys6x*BOp4_$A;xZOr8P*jtq20FFqG7hU%q8G8dPvAv{RyakSVo7UdCb_7x^4b&p9uiL@O*l0VRSsK*kDJ57>Q@+e>6yYOa2fwXTky*(b2d zW#>ck>%PgxJ5O*RF0rR$Ws6aHUv?P<&+Yj8)yeRP)RVn~^K}%J8dI9p^GC3zS<>|y zb$IxZsgh#3U+O$*4-fiPT~YGw{c?kqwTTEtb%Yqv8dtdL>zwoKw`uD5(pkSK?H}*8 zS(=Q8`oQ_qj;5zDDV$&CN1a~P0` zeM+oG4?Vs#P9n-)nplYGo|vZAI#>m?ryo5aZnzxFP*s+iF?zD>3^Pw_-^E8E^p?$U zb2+PtBgl|RQz^$X=OfX60vA#P=rT?H)z&D3=LU#Lu$dT~t$LXnv%&Z8la;@@7;gb= zTvczZ^P=hv)E80TeUp+-u)UOL(?q5Y-&i#VBv49>UW~E6{rdX^P-ZYRy2Os4Mm)=~ zc^mN~wRUvpM35&6sXRQP=~A|vqAx_~fri8|`%iO}YE3E!S;*Kp!yc}`zm!5G zpCKoSSUKf6c}8$B6v`?$Z;cYVe&nhvMPm*`!0TCp4q?j6Ker1`2R%r2>M02s{AejV zq*@G|-83Ow*-0c@x(liJlCO1OoIGoVw_cB#ke@qzI+|N_+X>HIHAMn0KrQ~a0L}a{ z0FaIRzeQ&olZpr}inM|fqY4x=j1GD!XzNWW-1H3NOGDVV84O(wVp}839R*1vmZ&vW zjCkpjLjnL`k7-sp-$2<%xzA#u7i}&M%PpV6qF#cQs4xBh>j|1b!qiP0X2x6$&`>jelnxOq=waQO=NzvV01{{ZlL z$8;K3{j!7f))ttoN*1p|*9-X%1!*kKkVXWlB7=#>ki))zyk>{VG<*iQ;)D9x>7w;G zrH~NGgchn~$fZ6D^h*;BUVk`Pe>8naw!`-y*C*-Pyyn@wCh04iZ&W;AAAvxYCLAk2 z)dY1^Xcb*SEaU3ID5iy}o8cynBX0>8LAmYYIcw{vR6!w2_pfP34I2^+1WemOwt5zE zo-TWTsVT{&K&Ea<6V7z8WBJD5%cIZA9Xj&c@T%A9^=FRP=&HJ6zA<)2=on!1$rMca zygLo4U&7h_gip875ePn;XuoCiA(nj0vXp)qZn7x{(MKz@$|3VL_n!byC+4aZsJ6)o z_sue6S&V_XJZzLr1Wf^Ts@y4drE66xk?7A2ct}3gA3|_szWV|ZW4kUtJzSCa!{?m( zGkfD~#@PrtA-Orz2?xg#6ns}j9STZ;S<%mUfkK!nEpAJT1qp~MKD136uw6qqwZtrx z{Xsrz3&A%((@TF>C)Vz9ncJtg^pIbJDq+u7w^2kKf~DG{I|`wBK<>buzKV#3e9=nb8+={P5n{nJ`@Jo8tu3lh3qSXz>T zs$~Hb2_p)kWIM??gXkcsS3niY;i3r56;$PwHm0pWPO9468;n*B3qSLwL$Jkfm5rB6 z-yfSJjdq^*JlnapoBC^m25)EtYxFV!w^FBO#1`HXTReURxyV|0nxk2a{kg5@a()FM zW9cdUQQR5rVbHhp1r;yY3@lgX3ZI&?yYgjU)dP-_WwSHr4tsUbb6cmodhfLp^2N*X z{U+(`m7QKjnEZs~!{{2mz;iBC4Xr9i$@*AlE%e@8!)UqNLmQU+8y4|s4f5Jqg;{6K zcqgHA=`M%MTGQ;6Zy7d8sl*6I3a`E{=((xP=YF;h>#@-0cOCMt#t^uWl8(m|h`!3d z$o}FeD%ZvaGLQlS3?*!i`jZ9RtDJw}ayNpjPJu;i^QA(2j@?pC0D$h{M#q!q-fR!L zJmr7|K79+-x`98j*=mui%Z|V1e!X?`5o-VO?Df308f^to*%N%iH?3e15cqcKYh+{u zc1K&k;g(*>)9B;kOyCaiXlZFY1I`jA=3;z2F99aYzIF&@lq4R+k>?iy5V3qi%Uz(4 zxdd(I`gX~mEN;zv#+(gS``ZRLeKf3*e_7s#R@+=$5JJ8k#o$`p&t0aNHkzOTTdzOp z3}P^=38~GxIKb4b>iHwJMHw-i5mop=p4QO#6n+b7YC?OhoL9gNUtRb0JuT5erM4YaShA*+w zwp56aV*p#SfR^8-MYk~CH)G$41Rm4<#6sabI4lLE@7^I_D7+Y02q11rVTD!RWKa$^Q^X@4JsN``C;tgyOW z`po!y>K8TqpMu0m6=}A~saGTEoZ?xlhG?)QGO0-#7}2s7a&R@cLAufHgfo)g&K7Rr zW0Q~~1yk>ft1e2jJ9InVM9Ewj)B;dq!NDgmpO$f zcV$)!ulv5`fR9#I8MTO@L2@_JQ>Q_m@S4v6&xO582G3SP&&}KoZ2!8{ZC2@=_zs3w z0p({hAV>N-VOy&VF-90MMj3UIw0u*uFj1-vD2k;s%^;Os{99&_)65<7pap(6E259r z2*h9Rj!xhVcb%W6>!~1u{Vsv~o-}$UmnlQQo@db~myMbI&6^@&uE}mC`Ch=NC(OY5 zKqOuUmX9P(z6-O;2*(^$5k;b}Ir3aRDxHDk^W*?ejS6NHY?0*&)(SbbMC$EoapFvn zWbZ3YAiRUD%*rIYmteWRi@;GyJ`4s&;(kr>0HiXWNHepS! z*2J~7rP$nnzLbwKUx7`fH^#91n=4QVJTM`G+eAH)N;&WP!kkE942Q-Ei~r3b zbUHLkU?{^%{{OaUl(g&!25qB6{Ayxe8-`4;dY%4qsQ^$E{3%;e&lMg$I(E-zK~sba zO7o(j22F5a){*raIhHy{(|Dp8x}lIeIBCzC3lfV8DPjki%8TPgE&*UJb1;3Jij zmBHTqz@yurMUGVSC}H%oVLZiuLk$*jP5P$7Zx zf4BhJSTkl|f1}*06|T?o=qHJ`N8L)n!l~w->{P%TR8hz4_?(aXEP1mBGWM5n7gL7OQQTe=X1#!X_e9+^Dl&ycz%5hN!&ZFOdjM@Fsi0bAON?B?&5 zR%WiA>*O!AYtm0Yv9`<@{f7G%edaj9MkC+~N@}Z}Fr%%Khi#6E&Kv82~C($x))hMP5&G z)0LVaz)O4NC$|s5$`aJVar=i&jFJ$R73PYVESUcbiu(G`Yp~?es>uKabqvCi#5J^_ zLi?Vm{~gx&D5i)GlFLOlrke)C5{^Wk#j*}H?Ar8$&#i$ZD-GGH+ZbW{xx(#0PMWgZ zthZv_k-+3I-5Z;konqm0$E^}sZC7-m*&tPs3)tEw#8M8KUtOnX``>b3r;?0y34NL= z$XGj_LHCf@P0siuxJL#aZMn;Ub( z{k7;2ss8UG2u53`t#b)khmrz5o%W&*4OZ^4iZlfuk!F!uNAkNO(3cjzR_pQx*pY#x z(S*?jzR+ty42{dhQh6wk7Xm=)?T0~(3TZP>e-QjsYC zoY-)gWaucQo3R86WzFC!6o(D3e<+TMBFwX>M zl)A?%zdTqLQ#G98*6@CwmU|9@a}oQW`nJKLboYD|+d%v|1NIrgB`|EZp|9)~i^}I9 zN`GP#Hf}_Ee7U=x9V$hv*!aql>`>Ewy19o&T|0nBvR+BYK}7lyxCZ&p_caVy)ZI>K z9UHO@e`UyB+*TJ&onz!~fQf)Lp}uoS+iCL*$yoqTQ2l2U8zUr~#Vabks|CqGcv8Yn zCu;Uxx^ww7>uLW^XBT!?{z!F7Gy90`)z|T$HU!F{2UB?_nfXYZ~cm+0B~|Py9Q~n zbmsYVI26*S{&45aRthZUe1^y7$iRMV5vqtyE#SbV||x`x$MkSdFJ{xZ+oe=-j%uX7~0&C{5}fG zs`sd=nw-mU{zcjZPS_3vA%YSp>}Mm$gPi)nd5g~=>PfrIl+V#>U-k%2mBs!Y)llf? zQBuztDM8h;+aQNYvbE?Rd{rl_VOH0lEjo}8<2lg00aJ2*H&J55s zJ7$FVZg_eXZIQj+?`S3tRQtZ0eiw090|^qKel-#<4tBYmV|c?i1qSpU_nPY&3SSFZ ztyj@DoKXdXWxEhAQqU-EFj$smaF*)@TLOPGF?-m-bDf|HWq1QWLEDXB3!FSlo9-H6 zsg_$!3b4?u0z&I?UgxH$f~vXEif-1LKb@5VcR{zEF@ujbCCQH6=;ek7Ss+xC`B%7; zt~a69Fm>JpZGqH22WXxTDf${)#JroESX?6~Ma*Cc1n)^^=2zuqOnU%bmGnII%k2hS zT&$v-EN2H+OstAI=|LxVvYwn?S4J&VQ{#gDYLZd^)yqa7j39LtAqk!9Y=Ng5og-W9 z#Wc?T+(DUugA2ezKcG_IF;T3XiFX5qHjEPZf!l7XPxn1?#{#EkA#vFw_CCLmx&;ne zJyb}Ki374ni~#rg@8+^t+X41qjve^Z~HcuzSpeUL} zg48_E1oqidnjLN3Pi7QGC)B|rpZfuFTZ4@r#d<1$P+t6xe$R<5MC z$?jwAIp*Z@1J1ezW-AZbdFy^gzZ&DhCb1f-4>&Mj+KF7qYA5*a&S2v_qpyBJgpot3 z;JE1M$NMWE>sJ1REBFY*bcF%=-aI6O55vu5*m-dr9oRp~5#-<~DP@l`w^+Dreai%2 zID6AM6-vtSkcDdluqENa9l<#M_&4T>{kRX`uL-~brHVg!Dd9MItA4~RRX+NrkoP@M zME;iGQ4Ek1TiJdZ6>pZm)fV57cL_d+8I!z~5aTh?c7tZ}Q4g^Z*lvk%C^ji66xBrI_lrXOzw(?6LUS2ErJc+GM&R=M%O@RsDZg+wljboC}H zp7{IN#?@3;k0j}at1%yKszi^!4iklN!Cx*$H9Wg1v8J-X?7@!-;RQiKx!7k0Yr{r^J+Z$IUinn}Sl$|EKZ$|)-w ztJh85%F+zdRqOxXSYvU{aYA(>G4wN~DPXG0tm=B<1$MqyhO5;PCrk2VMWw6hA=KK5 zW*jhm$l(e9f&i?Mnc};=teV_XgKnkSm$m%2sCih}v;c_#kVzXpUabG5P1**qsieZY z6b&hMrp&ORwbHfQ_nF~etuc*=|Gz*YE(GAH7Qo46GBvVxsuH`+d(D!R`>JyGVx$DN zVJgsgS09M_@25bX+DMVlm?Q8w1oL>sRxBV zKhM#HpHhNDCirV3!QC8@j|9@Tz9t{uL}f1{XQ{DK0f;fG?f{%}O$xTnl{g)A^)|HW zgJux_5g=`6qIWmq3-8&WvbhSfh1P~(Kkv^)3Mm4n9Ut!=kCgR^&C3jD|5WMtD16ZR z`8w4N_nM#+TR0%l zbjG?g%k(1j12F)J64fW_94OqZh2VZdKhL#$j*%AnSAaN*pR~_JqWwtLGciTr;p*&~ ztZu*Z%e}&>N=k@)tbH?7im6InYN}_T(X``)i#p9wtnLDrz%SjS7i#Fb62WznkJ4s< zR=ynkCv^XXV3N*FVZ#Q6ugf;ZuWP{?ZZL8P@*Z4DPNkwQ|5xXVCwqX@i1YuBn3WY5 zkQ)dxxT{Ji$~#xBkW3uCgiBGx8$itjy~kc#gV#@Ejgf{5(0)zkdY))%5+9ItxO-tLq7|eL)>lxld*x7*bG? z=WILE0sw*PXk(BM)78-em!A^Ej#kwxzuW%N!b@awEf^zJMx?z1W)MdA2yl+7?8}Y3 z0eu&=pJ$rwF1E*soe+II3we#zmAa>c2{UEb&0l*}%wT`xd)<%YI*FrlDW;(q*?W5W zVi-xxbU|7A}Npd(Du`P~&x5oWN zQ#0P^5q99<82|cBAE@C4@ElAv_J@;+cf{>{O>hMS?cC9DB5thk9aO|nw?!7Wd1#Si z&Y&imLCbeKL_;ads_gOh7F)2b+8y>|f;OH`-yGq|ObOhx+6yNqK1*mh6BqIAj1o0F zVe9t4ihU8#5-3JY@d$D>5UP77m@&gAR=6h){efUfLaLx&+;DheNcGQv-VcM_g_ho} zH{j{8e7rSWbK+=I4bLtN048Y<)Pp-+{u<5X{TL*V%*n5X;t?A@aJo=shI~>(Pb2k6 z=(@#4Rxslhor4=A4FJHzZl31AbLFzy5TJa4B}8u3FRVB~U;_fBx_UzX#?BXupH3zT z$#|IDVrxqTF@FkEtYV+9)aT?A2rf!i)V-^_1a}?%s|&{U}@!X114(r4LdeygD-dIL-Gzt=w|%noB_`m4;L= zEz6xV`r1l`GWmS~Oke*WGI9Js1O))m760$p*uXUmr}1M|7>4{~w*frA1lO;7c^R9A zEsTHjYl%X2y%nNhmEVMQa-WE|(MfhUB52o%mj1c8@i1bc8po;}JJM-BFQE#nALT!y z1Ab=6BelB0Y_PF9zBpu<9$O)C1(L8y=|RdN5rMf8>5_XrGHHNyeB*!JX}}`>8(f@X zC_qtA;j!4vX2l+X&S3+ygf4dqRGH)I)%l!{Jg_IH`qXsJEzH-soVs*2tcA{b0h*a2 zZ$O+YoCG11)p-?Qxq3(v;}wGP-E@VwHL$wnS&|rsCb-wZp3ARBjuwI~R92bm9`~t5 zk@6#hwlD1#Y{CaDM%VFaVkiF+Xfx`O$W-YTDd-W>^`X$_F9D^O1U1enyKaIm!nDc> zgBR+i6!qeAWol0&9{MM4rMAQL>ItFSv_~hURZ=}O7<0UdnU(<{R{fIt3N%*4QyzCsl9asNCZwnGVl5))SU+Fdzrp`@XIOQ zA1lfDx0@A=fUjkTFJ|{658b7A%KlQ%&s2lApz%Og@_>&<6$!YZThpj8oN2MB5Nko% ziu1XyGZv23g2PeARzYRc>h;Q6uP|1X)zGBtA~FEpke2!`Fi@d>=7Tr0kfimi*9QY>x2 zJgFoJut!W2aAqc`B;!FHf&^5yn!Szu^dNP4vwc38ph3VuI8cR$#8=O!8hsk$$l{># zviZS>Z8scp@Z*4z66HE#DOyC2UF?>b=C9k6+Z)DNr;8+ z_l*EJW%+!8IX=;E`bZ$35ttL{_JsXnN z^J{>@Ak(s(jf(#0(ZO6l-BW*3xg zAJ$7P%#hnZRIp08Xh!bs-Dm*lq0oqW|LYx+GyIcujmnoZU$PGmWRFf#nKj2TU~f&b3-nTWF)Js!mhE7-I05819V^$ z;`y8T+^*(mn(~ho%x=g+tXCo(qjw)`jMdRSo$@{4>t)va*-CfHlwQ-IRGp)s?A*TLx1bU-20FL+pt5*uV2>n0wx*!U@3Dk4O;jh)C z!(`52oP|@8Ef(Wh>3jb)H{Vfq(JSx2*-?Aawg}3zh+G;8v~~}q7Fm9@|09Yw!n!he zEeRl!L9670Wm}LC>k)5*>C}!b`pq+Vi8n~}F#OZgFbnH5cn!uU>)VH^GX&vCD4(6& zgCmOLZU#w@v(F9X)9}jw6gFgv@uVp@I~_s~)&`<{)EiS40h%wN{Ts8>4;Gj$c*3M6 zy0)Tau@Voo7KTBI#)bk(Dx}<*JuG8#G4^9hBq}mn?W}j-5w5x1mE!{uE}VuFbu)V1 z%EH1FAmSAxQ!XtN1+@$y2B>{LjUd*G1Z=pJnuBv1Fcy~9yn;Wz)hy;x_Ng>i&K!;? z@CYjB46d(u(127tmBO&kb}-I675Ba9|EuDU5aoaMRKX*Ss{f4uL#9t^NVTScdoZXs zf5Oi>LPhSc&v&Ywe}S7bPd7aTLf-;sW>M*oC92WWdtWn}Ic4Ew8(teJq2#ZOENC84 z_4ffSoIJ|1qV0=jAW*{4Q_$rWdg+-?zrb@Z>+gR0Webn?kuiCImtb;AK1gU~6Hom| z6h#wO?^kd2GnIr*bb;qx*0G22hjwO2{%cI9M1|?oq78pDVJWIrPgN8yKZuIE_^<&WKN;=>`!@C^U3(MN7^# zkg5N=CD=Ked%uZvmSZ&5$|xLUSSy0(&bGpE}|L;hd{d1AQ*1-gwvq68IxIg^7Uh`C7{ zS`GH*LAc2n`b0q~sZTdJby)&P7NS$< za;H>Dn}B>J4(R)Be?*?_XLF!ohXblL=#sF`{L0FXuR(PHj9ZE)z&oL5M*oRsYX6T@ zlF~#MsbM;jO)Q5>r(y}8$E}$`m(9O}&?>{S(ytrRq$W6y?Z?FlAZ)O(D@Beta7!vS zV}>=lXl(eclOsrjet6#kps+A$I+moU^>|?Vrb@)-j7u2VdWJx#l}5i^V6iB!I3qoA z0n&?2*z}aZKiO4E3#|V%WFDK5$?MCsv?KHK!s{r@Bwf{g9w6m|U+!>c`!!|=VAH$U z@5qGw3Z1NikW{=$y~-O!+e6<|BoEyY(w`FODLGdoVW;|fK4uI)wo(y$_T|mZvjkm( zZr~rkQ)*}=o;-=Vm)B6$}97^FL$8gS5lHkyHs)y29%V=o~dcJ?C1Z>9@^wO$uYi($!{(C|DN_ z&`2`w$0(Ca`Z$+w!!7_%5S1JdyJ3Ys#KzsjTldHK{v8S7@_4f8TMX&0yK+q=OQmD0 z{NNsqM`MMc5xul9I}^(0LPzE#`9VN@ZrWfQ?W zcl4|Iea#9iGC%<$2>f4j9>tSSPsRvqhunGYGM95uhK%cuh^xRFd6YhcB;e%j=iuJS zyrNzJEitj9cFnoWLIMwVB7wTS@Ms9u#q2YIskY}=>(^*rkg4|(xYEGc4o|N3J2!h4 zpX7;SEORrD6S07Ye(h_Tp+4C2VAM0HO_m6j8nByOFvsd<;JjtyaO=t6JpOKgN zevtSt6i9Z7zL`zE#$G!^+q3xGLZ@i;S5lImaSOZ;otOTC_%BcqpZh3pzqLPE+HZ%v zK|andKQ=PL(fHawE~P&)+U;fH@&EV{?DPySXI5|7Y~wQm!l2oj6k)wD`fq3BI+b>{ z#?Fk6FVi=L`X3IHzWvRdtKasOiy&4%@|DSBE|B}@)>vYg(;Gm+wIQA4LkSd`s)~tW zPI?=okml(sb>6g1f=pjx%+jqOzA{PUla7SsTU5q5Qb27r7=KtFogMjjJ3qG+W(F^F1GcYrAb-CJ{ggh%fA078_r7h= z2K~I&@7j*?ehmz-=k`2;ej2RF%Dqgxd@JoNykvU0wq<|i>XHzErw1xP8H4l+S=f9}r1K@8)XuhF=|%LqrTd6m@MJKh2|N7Qcb{+0%(>5cUku(J z^S&EO#ak68?gvUw!Tq*Y>HHmVDNf>OX>#v{;z!AgGuJ_rZ2i{*3N<80B$tKVq`>kE zJb;Dtq5|?%mTR3Fj7Bv1)30vJ(^{Ar8$Bu_YyPVR5Xb3@dgKwh_KLsch336hUrglT zGt&1Zx^VBjFyF2T#t+JRd$7*)r0e|Pe7o}QDD@h?b6$k0tE*qTUDCgToOMq0sQR>3 zpZfkAjqE0}4ct1z0e6-)Q*tVAF-f~x+Ke#qvHt**@vERlo zKXp&my4*g%?Ft4{@G+>ywY;ygk6%BllC+&JR5e7VCtkTeH?>>r=^HOw^hHKMLKgTU z9^I!}5Q<)^H^=^*6BO#U%K)#YR6bt{Xe6Zm2Qz92J8$12vfD)~U`u8;fE?(A%50N) zTLf5)P?o?#%_=FWBgW-x+x#H(gvlYcp6X`y&_?@R0vgX9-#fxfcZW{e=+yS?bQ4@K z^GNXfn|qcI;Iz1ky_Y50AE;0FkDmA*Z*+xnud>PSE7Om?OZS^rFCUk$M|3^j9Bu*q zd(NNZQ@_8Xc=2-Bu4nisen;_K7!7{x^Yp^U$N%thaS$Q*xN55Gf%H1pmx}fW&;rf3 zVZL)o1z$b5AG*>^y(Cc{&g^j7`=-40VIkhroJ@4J-7O0&5QA(u`q?Q5JlK_?e>I;F zksyBC30ax6e(`eou%0a6cfmB0a(OWC`tl!48?Uv2zIVo-5;Oc1&m#`b$K?qA4Of>9 zMyB^Z6Obh?Pysw*ffGR%CF@r?zW}XAWG-&mZy@AILOvrXoX9E=nI@7M#?GXnxc6W? z4@b1zWZHp!o9!?=%4oWW=uJICA2?gcS#IFst6bZiusKM-Oz_xv^erVZyQI6r9N>(3 z&6m&B!-OplQb|83Z6M@#YaeFK2w3ccnHI55H_3|CCjM4$zaT#O!4r_4)t->y5+rf_ z+SMGd`FI||jZ_0)PwzSLUf{BDjBc}bV*Of&>k>3#v7C}VG`xnfKoXi4LNXYAmg&@& zg+GO-E|O;ih%GRTaAR$+UuwLhVP0Mnvng(NUgZQ$NO}aP=2xK>?i!Y%z+PrX%CHZ| zm&+z9IgR4~1Ek@|R)P|k7pGXHiAkXO861BCGwFD;cvI)rhvoqfVqY<=q1-2+LXO_! z0G%K%#FDM%Wik>kD_Q4e&{m`0V;Rxe^Bi;wMt(7t7S1j)N^o+C4!2*BAFqx@BGbBW zaF69k+pyrspZK5fp9~>lzptQPUTY7EnYWS7(K7r_sH0q+QU}&5RBuv=7SP5Y$u0|S z#Ys1+EBp~_Z-M&F)VOgjAtMlfA01nSt&@8D7YBqb3L`f4PzEQpK zo%qhqxE?XZ(8*hWjw){lzi8<@mQm-t)xgeGZPRW0x&-|WOj_%xRWPt+a^1=DL}byV4q%P6z$eg07T>bh89JjUx6Nxjkfv!Te%-R( z#dEiNG~>CrC}p>C=V#|Gj4vRN{{06v_;Q<2>&$@N_(Ot!j9%=4Ucv!%sL>%j5)@4K zjjIayBtciKEtFJI)TFOurFZ&$1!hOuL!Y;q?j5Pw~= zs1k}IB8n*wF_fMN>UF4eydAX!=`{pyOK&dg~rO#{1~fAc~zk&$U})lnNeF z;K-*dXYIUaO}O{wv!tANfy)60@vriSM`#=LHdW-lNKnT&A<) zmv}4rp^uV5C3LeGz*_;g1f)uzOD-wE{_f=gP+@ts92}R&E_uE8wr?xF=PP)-=B7JG zqCj;~hU*-V&){>t2bgbD4YMA3(g9@sfH<8~S6xrVCb1(%pl_xt?M#3yDE=2ZM7w7L z1&Rktd)V^(ojE^QBc`blS>8$s|I3>hi>x3Oi@@k=ax8V(H%g|ibwICh;7!aLA0zhA z)3-+VEDMo;@?-i80o$CvFvYX?&hRl@P3j24|IDjx>ch~l@TecB0vk0sV2=*nSsRI2 zDZpqD_8|4le$GX>J=*eviQfdPA}Q{mEB?%>6gne!4}G-$wdB~eL};U}kea#*yz%+6 z!%h3fv6Q7!uJCygf+Y(5%z1abbM>rcqxGt?f~(W7Q92pp!fzXTN|^dT^|^-!DOf;j z1q>iBsh+}_J^aH?{3Bb*0Hl2O{|iW*|Nb>l`@~ssWEPl1sjIx9N=QJ2negS#?SsY3 zWg+Z+`EoU;G{dhfNO@>#(^9cQw4!k5KEOFMCe*|6LT-vkes;(B6J!{^Vi*Z@z6E*{R5@79_WRp7nD-3f;La-ATAWkiDzbm<1 zQqfD85Koh@1zpoBZRFip--+_c#P(b!#?#10P!Hb|5SK{6bmP99eXurY<_4X9IKk$q zzeuGP7DfFYB6gGqi19jpdbeyL(FpJtr!}Ch*g`It?Y;5^y2@-k(nHtreF9A*@S9*S zkjlaNi}&5RPs@f6e6GANZ;q=7nc$MzNrkd>a?f4@b6 zSyKS$z@`x#PMU66>xlW@hd+06=D*Hoa+Ln0M%Q@-)aQ4I>S5&5WY*2ULI!oQrT>aW zEb*?HE<|G)k4T_iFJ~A@;EzIn_21OEC~uj=`eA8`nWaIM?TSF;H`h_V$%)xn-(WV! z(*fLX@IGRD{{q;}dtbi1AhQS|v+v$zVBXkHFs&ew7D*a1=jO!a?$wdl0RaHq&VHH5 zgyE2A({g{i$lOroeWj+F{efh>-PS0i)88Qapsab?rs)5+;Kx9FdKxaU899Gu?xq25 z^>W`^`EG+)+5MF9WAA*u3(}2NGY}fdf7Zsn7V_b2)EU&+bPorhG{*ZMozpY<(v&Lt z#@^>eU2C_QZ@Hlioo0I5bwB&5=IAQ<8cX0pqlKLwgnI_AR+<{Zgb1DymWZ5!Vt&j~ zWNyw_e`r0(oVdg=Ufv|n-Zv4a|i&(RZ%>W2MLUAaj?)+6!76of|uisjo`SDwb7C&=_D;KR>K!(xdrSDuoMEP!%lbJfO&B^wl z%1RlGyWpu-^TR2ms+vAdmvwkg!3amIi;QP5o_-C>GXhjb0QeX?c+)S80CVN-nJr+9 zVcgq49pW|&US6dbU5vs1(L|+t3s5R?-HJFV-91C({o44Z(sZakrRbm4H+f@ZQ!w^J zFM;Yeq9M|`emGl|6GMlg4y?0c{txYgjOU%IA9VAiwkp2HxXT-j*3S}#FK%?<($I`U zbp{WL8S+;Hj)y6*%j1r4=-T7h@{|zSPUOd3Uv4JhW?tpJTlj8T1FjZMBdSV29hwX7 z*lsS)Kc`jEtq-sTjjFDP(pR)kA*-DTC)Pfg@`qyEvwN@SPsI$n@E)u)c8pCN%FP2K zZ?Qp1Z`|O!F>wyHd}eo@b$E}SIz3AD-&m)OaRG8Au&~ZLy0C?$bUoQ~%%XeNU zI+?SUf{q1bpZo8|=AoU!-}Bx#FRhX)9b##ZYvI3NGF=BM4xMOa?V;u0@tX})?IxWt z%e<-P?1b|J4HsG!{SX4cZNI1e&~+jqTgyI)o0EU)9nw-y5RDxGAfZBjr-rP}&rO!6 ztf(XOW{;kw;?O3$tO$+{hi)iLm!a-q>fV0VJzCWy;uyAW;m4Y5pIAw@mA*{R8p99h z8fkP6(1wu@K4ub@U5OWg;1VFBii$WoA>q#;pShAs)kdib-{Rp>Gy$aad ztu@3uFvKv$@Q-w8WhfGvby!vO(R^HSuNqGd`9!)FF)*lXa6WI{ek-#(R7bGasq7)zDthts2jQ)`<$B&`+xi{- zJv{jPQ*1Qw+kW`f4mJ?}YZ-#pA%ryJ2nkymSfVxI5sY3#VJIo6CudF@ zbUK05N23{#n>_%(SA~+IO+#X1K#Xm&$wb%tp1{Qnr`TF;f=DPKe795@XNVPJh>^5n zJ7Cqa(INz7lkJgEr0%ePo}1PPhP7`j(Wk7s>~HWpgKb)b*cJI|VMJp*%_mv{lgcm= zNaNF|is))q!I1{&iP3S3{@Y+x;-?XWm&u_s0{5GO&efhu^{qQbrk}`mAoQaY;Lu#Z zfF3#@J1%?g>noi{~6 zQ!i2y8jtI6C7FLVlPGcG=efKmz5g~(cxlAwvh*82CFq&FB*t%B^l#VMBp<@_i~j!Q ziW_$M?~}z-lf&?9$CwDq1APY?K>iir%Zg157?mt6dn;Ji%4pku*6mgpE4CAeOG)iy z@UcG>_W!vjC#cP`bFji2oVP$9N2YmJ3@^%qn9>O3eI0Y50oQQ~W1V>Rh=gqO%u{C? zuWu(vQ|bUzUZcY0b#u_paY2 zNa7_KN8*q$yLLEIc=X2(&vOqis|kwR1Rmg$%<7nvm|44OCd-rqG1)rWev^QD z&+*fPSISB>eoZ5DvL|EI2j3;n%4=oQbdkj+3%IED8DL)$BF-}wuYZoO8o07|ABDdI zY+yg_G-6ZzyfK7T6HaJtk0MZ7@5ajh#m0&+(JwD8Pd65&X!#*|exPvvdod3(_lpj# z>3c)|(;%EH#{f0%;vwG|!QhHoxL;<$@eNyy9gg0Ibj5br%MT|EV%9j7&PXOR~sX9LaoY#z!FY!{)WmptUU+R@f;q2*qFgf!0BtDo-Oo{aj|GW zPaf>Cxx0(0ZT{ZT5D1#5v4nQ8UaVdBla>bxg`hk?{8V`81?8&$%RQHt_L|Ni*}&!B zmyGnz2wzVZt8EQW3zhHU@>RFC|B=B5s{I7q=Iy&V>f&!d9lY7dDQjhF7QZjikMR$! zbqaHF`v(0jc~49B+!*o=3o4kL2O7t86V@U!0)JVo> z3N)&~Ayq89McSZYeKnc2Qu9v3aNo4r_OaEy5CRmoEhi|7V$4pzJXCsL7N#vu`z+BJ(&3S75MbofBZI?B9qJ;>Fo zWxOQ3=4RI14D}aQuYK%A)=}IJ=wl5~!nLs{)RR_lR9_Wma!Cf{_9`ZbkRitbqoyp%|{n@wLvci`x1*I4>LIsQ5a^8R?7+Yqt zK7waioEcPr@iAP`2yKcmGt3J08qZ!tBVDDSceWdHh;0i zG9O}mpPZq;4b)%WclXh1&gkE&smFD{3jpt=$YQb_-K^Wro*33!*RMUph~8c_0aL%T z{%fg_NV#@ zxp1?nf^Z={6_HM~FsXW!2t#23m7P%48tvcDCaOti+(xfB3++}ADq)0z4Z3A+ma4Q< z93VmFTjU~lOni8KHbteNue(NfY^Y_RTH!^*r)6o-Nl+nT{)xx~da0STzbv+%4DXw9 z9NjVYS~z8FxO<2KGcp24XHHNzp(%&E${eAau?5uLC)680eSN>plQ>)IRvR_#HJIlo zji>oCUX({sG8cV8sOuSfbxJ%q1zUW&Z`hYQhkmZ{Lw3Dw%`OK+A6;?&1>A5?$nful z>G+1Keq+QcF{Q}@8Isy?it*DoRhg(vaEM}sjxgI!5y9aGH2c|y6ozMr?l_fZPQ}RT z_;;6afv@7oOgZ1_VdBCRLQn}kEN^hnD^@Bk^>nF{_<0-h1XT-ha&b)9EppOg0*;`r zTr`X|4fxxMORnyQVdBtf8)ux4h)6`1e2hts<_d-3y6@=4dHW|~kE zb!RMet89Pm_DC}9R}8z!D-dA*J9%DGtly*OKN+u#vD1B(d=?G>B^*d3N~I7;GExt9 z>N?MB7oY;=Y%5%OR>g|kT8f{!gc9m=USh|9Mcb=Sri$o%bRHW{1(i{AZ~H(@zZmKJ zP?68d2^YnKk{huknr3f;aWoQb*(u=cg3n08*ovu~!g}!U5-`4*1i5S(p&#a?%FkFu ze*QJmB(|CwZbei2PYE(^JqU@Gt?n{cqjjpI{dcjKM^l7?@B}O@HIDUm!R16ogf+2@ zo*GiIJ4vabl%Wx{V2#mZt%ZFxm+tpkp^N2vO#7qwLLYdgnrkoSJ(3qe23iGyeIqx( zMCeLH+_o>BQhBP+{QPUT(ak10$D~{j!cFNRCjgcOz)i=cX_}eM*VK0~?-=Mxfw_kC zNCw7W6uTd@f=uxB4ARlcta4O05--ph4)Z6(DEd!^wNWdQDu8pHS4&crhuDG>BCDWI zl%qJwuA(Y~Qj+TYE|tjm;0%y*rIUCbtY3>B6EN7na}+A9Rs~5eeUrfTwhptW15AV< z^zt|GT*qPaJkB6LGc4mhJ#;-DXZa*elNrD6FGTS^Ww2EpUIF4G66J4QFY{Gfby@G! z>Ac=v+&N2^w}%#Vhv7VGjv_%5Kc?AOha3{*<9O9B@^*!bEZ!xZaIVrJT_%64b?~_} z$HOeRKfzM3Xg;uvqWa~8Wg~=M(RsoY>0#B|!aQ8K`R7PYO+=nf6$@+rT4~gvGw2hYVi*2Q0$yY`Au)O^4jopDEV2Y(NY-(ym_(GET&BGu4oqE>v7j8Da{Gso2+ zWw)8N%2sS(Y{<{w+|r6Hn2#k;yXpwOjnz`z_|C6X!UDcVk@u%xJ7C8 zaz#7NNImp>vi5XC7U4qGDh!Y^|COl)mBB-aIqD-r(L-&mm z_YnLz`^Ni?EuBndK9NWc5hJM2kQ!7al{mJjOW$M9fyP!=F{np|X|}gy-CrdhP$yIt z#GHu8y;C%mN_W?d~kn7tC~1BriiZ&8LSbx6Y8!}0^RkUmi7uVPUX43ZuZGw!f9uF#~hs~ z@RUu(YcTSxa3ahaOcJBmsIyL|9ajr`DxhC?JVxpx84VT|tfA_Yrok?%?W1BDg-`{<^TA>l)EcNoN z2f7zmY?Q5fJ~w~d$h(|m3Yy3}9}VFL*3t1o4DDbP*h4ORUA`p!31HVOZg#@yayvGS zzu%^~ffOVT7<>Gjw;Na7+k(>A3i|vaPXz3oVjAP2JXA{_d0Y#Zwff?r^C?-x(f*Ae z(($whbgBHF1%`kQMET6$Niv{{3hKq5c2AGGnkaLJ;#h~0K0`{)KsUWeM z9cPtncM3bMjIn|(A#zInVpOV7;Z$-bmKSaId{R~$_q)wic-t#O#k4<`-Nup{S6rW?~NUJ ze==RRD6r|rb8BzxOwR|^`sXrnA$#Uz2wuUvx%mh!FurNtrk{f+6P;LKE>vE0r5n|W zeAE0aIyX@EAjNKSTmI_`ePOWMXxmf-4DN<jhaIfQ-d&$YXM@@Tl?AhX$+yBWShGd&dnvV-XNGg2yGoXh&feu|9noNX zWQdq5O6X07dmSJ^6E#CyRhh1!ozLs*ELUy0cHZwqZ%0K#+nX1SC$4{fS7b;koq^eO zAu~AlKsp>#Bqy+zz)V#eYAY59p7dy^@%DjqemKz)B+GLZY9L-r8(0zO6IxyG^TG*7 zwFz*U`xSttmQABB3Hr)uU87!Kb}{`pu@^ySZ0q(2kQ*1gH*Q`dyWik|3v)(pTRBw; z)*S0AL-jJ5e-6hjCX>lNu6!4*>2NecA0tX&EUvW%t6JbEs|WH(0IR37niJC63MwC? z_^%d#M|femhx5oo6I{JbCOArQ9|GgGj1d3rEotjXKFj~Iy`_zJJmVL3ZyUGkl)TMb zpmEa(^WREJ7+5u+CgEv~a|btqkzFzYiM5A`jLW%W+o7T$#iF)Qax07$dyrVYv|6sa zWjs70sGi}>0$9(Jd1{I-^4bAQ)hZvV-=7~zVL>cqDdVP{`mI1j;|BQUJ&1S1FUndKBbnajS*WvUG$ru9a?O1=MfOn zd@G!_*aY?&agy~SQ1u&V{Fd136BCe(=S3SIhSciLId|p8%|2yYx8P;~!sl7UmwUja zi(iYdyEDN&F~yei;ec~9$h604EjR%y22$^`7*1~2A~LTvCASWP^jfHPOLA1$b~!BV zmyN+o9&K%zpm(0Ww4VA}2o|yeO8T(6udeeUe!$>G*QnSv!Kpo$#d9nN$LB*JcobGr z+rLD>hzADkW?J##GdJfcNV~2`V62SdH(~uv^OHUV(^^}~tXzx24!P~9@K?0{sI#F_ zg4OWqH?ra7iB9Hs`%+EWeRBmYurMT`+OmW2U?Ow1vQ^NHMp)QPuGM^e)zPd~tEjGs zJJ=AIAxvd=N@_yy_f4#)ry<@>hZibTOY2r-GPggW!k*a(g7=f4i^J*HHw_q2)?xHo93=VvyztD4YYzt6pWV0? zkgHz?rATBW*0$>)7fs@qA5UU(7MZVsQHn&iFO3u{9 zC?5K`7Mem%>0>#*OTGcOHg6t3{Xp%TS+>-=pV#Ve|ND`QkQkn(@Jhej4e;;`*^03& z@hUis12CVyZK6(<7gM_G=Il`|1V~ zX0ki*rQ|r!&nGaHx%dk((HTL#BA9StByD3;p<9$Shj^_6=$2HsW$05~ZOsW8SK{a) zCklOqzu~)EOx7{;#y&pTh9H9kO;g=yDEalJYax>Ny_`E5MT;|-9q*pdzE9H&&W%)s)XTgq~kSqUO zcMs%$cZINqDX?6H^ZqUB5Q8g#ov0FyX*{CPI$hshiAvs;(dicja>v&nsAZX(JWPZX zD7qj6q=PL@*FMIcsJ*ag)Po>$Dv!qxRZdr2PPYyAA=BhHf=8IxU(7vm?VV^@ED8;H z$m)wh$OMV}i_|~q`qLem!d3F^12i(ET$YEMfu>}-8{Lr9g_YPDG<)T#$_OmLXm}5e zDL1=PhIs0%E>mU}Clyzn5Kp-tnA0w6SX^F?nHGS0@60Kps z-QS2LI1I6g4NaH@JgHCn&~DPzU=27K7{epA4Ut7A1kzD|MP%BtgH64*!H6eA(tN++ z{D|djAE@Zs=F}bhX|WRQGm>1eON@eBC%>MOXI)jaxz|>+>U~BSts{O0MV-8O>t}ziR zD|%^O7q+`k@KkOM&#s3+npY2p^gK!LzUoXoT1HQGEspC{1)c-*9=;5VPoL_6mjn#p zWr+@v*(EI}M@lr{RG@e98!TT@UPp=|yK(h#wUKq45@re(KsJhPNMzVe4r5A%WVsWn z)xYq3hpP97+A<@&;dn*N;#x*7D2l5}<&t#r`&0ELas0YoChvyNLUEsX4T+#2!DetAjuZz0T0S_V^!W47*l zMI~2B>%Ht^xi~taPtJH?t5&G~%lT)e-R5iQN#bVX6E~MKNsMNF(T*ecs0%HFFwBrp z*=UAWICBY{>dhBq_J4&}6l5M^q$lL;yasEKFR`%ZK)_hOR0L@@d;Un!K5Ci8W#FvW zImQlk^R_c6Hp_(Z>_y$vc=u4@P?079pdqK+Kz3K14J<16+K9AfRnVBaki8lU1j&w3Qu9jn^28HV7|;2HMX?o;QrZZn#l0F!fXu!3V5(AOb1)p8 z8!OeRp|a{Ws|7kI5p0st8{<}N&h^Yew}eZ&de;%H)_PUt^7fV;KLf zYqt^hE&C1!)z>PN#RTS@5~kqLY~_s&&i*hf)9OzcR$C7+d9{yy@H8nwcn+SSlo?uP zQBz{M6+cRBK}kGI_SLgydLObAWI4@Y?!nrD5mKk*z~>jCZTr7QZNopeB7fReCQ6V& zDpYCuDo)qzMsyN69dtXu>CjO!RuQvzRZIk`Z;CT^2e5JtY8X#?M*t6NcX=1xX;i{>dD@Y3s3p{o}9r6sxXjB##dG6TFsUS z91dWJ4JVJ@_2^r?UFR{7qUO~HV{IUFn+wOBHKGU~QrM zdO=RhsHzWoHhUf~`|K7x-51i}QwDgx_iZ#lSYE0RwPfcbI)+S9sw~ z{r(oumi8CG>6@RlKJ1^adG|w@dzyEfQ(7SGhsatc>RlY{bv4k3wARmFftItNU1+S_ z;`OIZFWgSptX>6Kj_oG6my)f`%lk^(91xZ66`4o|qb-(0&uu-1uGqZKLWaX7akl({ zt9Ob&4Zhc{7MiGsYe_+kM)dO#X?@Q>6?g9%KW#SJE!untOM;=LleipiA$N6PS<{+O z2(mkJfyBByZsqt{Bxfi?x%v0q0{=epB@Y?i8aTAYE64vOCo!c}%LhK`cr@1|OJBat z;S2k~>W>`gcr=2gkiS>FtphjQ!t~T$xvGP_*bUrueqC^We`vMZ1c9%%35tIO4IdE3 z2K?|mg|7nId>D=3%L97#5Ckc0)#v~H%BE(3L!Y$R#FN9R5u{8Lv}y98uXBr`O~7I; zl@N`V-odwIwF_@pXtzff)VvOY|Nl|-&V7}>-}~^+wq4U?H`z_iG}*RoYp2P!HEAYe zvbi%RduP|quDj3s`}+NHKZSLj*E-ia&I9^O%&R2l#_R+SiLHe!1JQi5Nyq#>zoWOV zX`zH*{Za3rAN*WOZH17SBE1Z-2r8y@UZ9i&5SEsPiab!%5e zZd+HxLIBO!hdIBUR{Pnx6za{2lhF!{$vz48bn8DiqrUv60<=Sa4P2HvXs?p zu-Iph0Ej!|g}mX>;xx1NjE)+#Or-lhv-ld>y27B_>xb?4AeTEg2TvF@Y>V$2{H?KF zkZ46)!=9_^dT|f18@h8l6zeM@n)yJ-GGewcf| z+S)Vco#OfSFATvsn|y$1F2mmEv*&WU#|Ez%c@Jrr_UhEw1k|Sy0AIERg+inFpglAd zwU3k7WRhG#@Csk{i;Q}8qd(=4^IgvGC1(8;!U5fCXJ$HaKThK>!hnRq@rt&V_C(a5W{B)9X~f)aVs28`!_1G$gvmxISFLx@B~q6IuQSWBy&sLc9{W8)P$eHm5?w6L@gmJYqlm*f221R4tBg?m! zN>d|zfDxkkc90Z+>vta7xZyC#KUiJid^SD zfOcmn9^r_`iASQ2$8(woP_sh+(RKP(<;C8<9fe)xdC23jf!D!y=@h}u$n(tkWZ2Ln z=YBSsT@yjinKme@tra1#*NSaAn6HN>g)z$MtQ13UmpW1vftx~c8{c)L8ihP-#(`g)z@ZuTcG16xj?y;|1;SvFgEFj0Cl zq3_XoSnZ8SiFTl>Z$nHhD)>DAVHfo_&4f%CQB!DE*igdLp6c*?nybvqP^t?t2eoY_ zbgEj|^6|yxI@wN=m5^y)w2Y{GkxH=$TyWhYeW`*Z`s&`53_TuAt-8s+hTxKk{UMa% ziTJ%djRmeA)SuJ*aFW?&A$c3-mAne8H&4F{Y*Ilh&@!H?0+?@0s< zIO5E?r( zTP40tQ{@94UJ{wVq~MIkj$tVN4;9rDMG|BF{Uc;Yf->o=UTdH}v{SvLQKF}V)UnLf zr7h-5A%cxmAY%f;!VK}HFLD1V0p`}=GvL$-CtqAhA?~NE2zd_0MynGPtAj)Df*-oY zAXP?=qkUf?%$Ent{I?sy3J7o$BKnF0Q?|Jt9PrU1ULI#_n;H@Bs?I~_g?p_{an{Cr zS4IWaR@R^qUh9@c0#h-OEpnH}Yj<^(Xb{{zj8OX9S_%W2pRTic0P{pSj*dZ_zOavz zG%J&#Qv?8D06Ms8(=co^PZZ&RmlymiJhQjdsh@hSiYJCb(EHO#GxUt8hTTC3nCpyi zm*1ll&GxNL5=f{Jam{|=O}??9)9H@IZB%H0i#*LTGOdr+ctKHs8kCsT?2^l^s{{qp zouU5k9>9-4-A7U{3$inLX09+F(?HDDvP~nhHj0`r>&<037c{>JoVT*T!2S{Afhk6Q zeEE&8+mNp5Kf*#W+sP?k6uyuhw!N2h6B^9voVayj35-e^k1J01ti`rZeL5@{4j{>q zlK6ss(zKbo{5h;P^$}F4?TzS*9k|)Cz9T*jb(My8Y{13q0+}?2IRLKqyk9C>ZcUd5 z1^Dg*a@O@idEdSB^Sd;9bDMXmIu`m$9AJ1tu0bzCr<;5jR#k*^lhvUxT`=Ky;+|ru7N~+eenl!h)~Us!)bD7l>rD5M?TJ^?5;kdoUFgs2i3~&%(W$ahrLVR%LRg$2URi<@pEBs@@f#-z1$i5F^6*MfZu7Kg4tNKg zUx&`q?MLW)oz**W{#39I@z183KNLtMKO89dgg!e%^S(8nS&$@x=$O0tGrAkaBajL5 z{P=9_e?h(k`TftHJ%cNoi`R$C$D#@Pi(zR$_g0gU$JQq<%jN=pcl>2;!Ofehm0)fX zjiW=O^~tS;P9_M59PO<_Q~)65xQx;4Wz^yrJ2!`bk+368SR&E2esQhdxoJ8ct-BCn zfO28b1_#5}eFD0>Pxt%AK(}fsz2@a)!FZh5-u#GRQ z-BJRs*509+z9t9;2ASQ8#p2jbXxofbkAR3}J?=9PTM?#d7!=(W1M6yvIS&12cWW1` z2y!to(fT;H4i5jaa4@EV^Sur+#$8qv$9arRtEp1i3V!jH?LV1mTnVW3T8FN#IEl%G zsb>1M$gvYIKM0Q)o1w%J|4loen-)_=(C<3a1N5RH{&i90TAS}|aqY_YaT8pF%VSa? z5H-$HyWD@b_Jw!r-%O1IWVQ>|jC7)4Tw2zWQVOuK|1uu;AfJn!)d&w}as-0{qAqq1 z>bZVSvwS-?cZU7};mfcI)HtrbUD7A3o8~9`SuED zN30HC=PW`wg&%UR2e2X%3&QLrBzu<(qG#aPyw%x>LC|~FJQxyfj!Lv z?yU$R_X5_#m5DD1Gw!I*Z!Oe*zt_b`=G8L4^h|EoLTosVrSGqx$}KX9=BSI^W=qDX zWf9#GQ#}kSb%LiiS6sI0cN-3A<1ZR!b*OgjZ$u1k1@;pDZJd^AFX5I;=aZC(0}=`? zeCQ+CM54z*u@iW73AC6)R+KB|UL#JeVd6M2;Gem!o@DSnYGD8&9Cw%$(NMFkQ7Yd= z!h|0I6&;CC_7-)O$Bb0U(RTGO|J6SEv-R?MObYiG)JQxbSLX|h8)kJ3|IY_YKeNd} zVYC2vI^4>oS_)&p&ll(^Mtz*gN9bTno6kb^^M#~7k7h=Mbf$v=~A7P~-&s&FytKg=4-KA~{@U+OM7#_dHI3C}vPw_kE@yY@3tUX7Y zKGToS4NkrHg_%|2B+y@jd%w!Hf%mJGL#K;jnU6_7dOAwmG!JRip@U6!zQQmYwnO1c2`S&qv zG@%pu5(^PDmwy?CIc|A80jl=6VG3Qhl#XCxfYC35#>#5-0=3Z?FJ=BSVr6TBvx${~ z&2)>6n~(w*mT(gUjn02NIClRB_sQj$+vkh`41MhCkrUK|yu2p!1s9t5fnBza>QY-< zZ3TIFsTG03P!_pL-uS*f974KWC}r$wSp4r78UR&Jn1vN8t@Y@_KpeuX{T% z0A{cH5C~n}(1H0jF_J(Z?&bbhzKmnb^5Ur#O%yO7+q^Lu1*o1n0!BgDUu_FS=mhXy z8+DB8c5l<QH58F;3N0ymIQ3FD zPwdBU{c@DR>D#0XTMw=pb7dz1l1_R+_5~fEXEv_H9OL%&8s_2ANtX~VK6*J{Z2-p0 z5yHzWdGqjgO{P>`GG>oBDM&5yLx8j=I)nh zJW$;vQu6R$KH9@i<-~?JrPJA(2IJ!QJlXXINO6>gx4Rf^KzH5-z{? zM!KVW#@Q1j$`ltbsXs)j83!40MBNZ!Nux3})v;aL$=6U_jZ8GY6u%Jy%$ zNeer}W6HB{G;$KDLmXk*%H^h=ETn9a$ma5D;yYoYr0)%mA0gXe9l6P%h8WZEJnKTm z4r%_JfTRi*sV#_oyXwCqULcgy!K>4IE}+|M=jI&Or*Zd&1QJb+fhmh42F6h6OO(2j zetMu2C0fqS7LOzS6Z6bw7`}LpZuBygcCvg27`TY7aNgXP*$rYG6N51KLQYcKuvR$VbQH1GSOR$)BGraZHm zT2{g@v)2W{(E_N~6V$u}JK-*!`2nL2%(}8^dp@fV^BFw@r;ikJ4;+Ui^)39MB^Kic zF{t|CJB~AhPLWI&Lkh0NV>xF8Jd)NFT`y>Gsg-R)8k)s(u4;)T>M=C_4Ll|+>ZT7q z(D@+w_doIZEvE1yAEk=;HU0eW>KbacA}(|<+t0-ssEj+$ivCRHDU#pRWCe>w{@KVV zORuAs)%mk^%iB+vAIZ7Du4!%&s8|-BrwIK^V@K(}TS=7LqcII?xlnC>{4-14P0;~W z_A=nLGh@rZ zkDc*2&m}25lUC^e(;U}B);uHZe|**qHh+Ki(l$&7K>E<0Q)|E%QgYCKCVW189Iee{ zBG8VVKs>%3dGlHpVxoo5BO}oLj zV8mxi$0{pqQBVsCiEgGXZXUdA_isDPZAAF#Ur7TOIVl@&ZEmk3Y|9JgerT9r%yW!1 zeuz12px^;tR|DT4ch+pKaLfgjWN={A_=kiezj209Is&H&r(d4Dqi4;`!!lGp|JMNf31O>%p&bhGj7<-L2JP_0GZueK*>+D-@pIbMu@?A0uP_s1));fYJO z!0eAl+kBOIMq!vdo=&@cet442f;IcsdVvz(^QYz~(h0iP>oYi>CcAbg|3yIPbp+PJ zp!3~>G6~GW_c)ph*_~DFx9@%td^q0p!`rw^mQf<1@_G@G4{Vl5#P7xa6VJ6AxW~k8 zPQRlo%8%Ae0mM@v_lE6y^9uNd5;H)T2OLl|faCM#VK?l`+2PCtq8RvJq13HAQUI~L z-fl-F@q3aH{PO$UK(A#KJtSqXS_8!lj@lS2&X2fs9!|mvc|L%ya|C{hW<&HliKoY7 zY0*~Eswe>;LbD%()v|WYm^t%9_g!^7dauBnJ&%^1^NaqI?i(X|Jr{R*1?Q+<-@UHc zqQznlwsf0ivQ5Fo)-xU8qvvLLv!W1E{=g>0xaIw_rvFuix5D891xc7t_;mG>3ucVs zWtY#-CX%U>i8CD0%4DhL_pi_v#aWEO!DJ;9=Q_aRH;)N=-=2cHe+?}tW36ztR(2Fd zbs3`_>oSikYq_gOgbzsBbk~Nk9$I1q?rB3=d>2O_uuHB8>k;!U9!Aw^8O>Qikw5Gg zvS#j^pug5o&q~USXp`#34k&eQ-diC=tT$sEE+hhBIDdcUCUUFv!L3TNdruH{uN%ob zLE2gM)nM_=%Sr5$HcHjB22O7%+fP49q*bjIGFUDye2E_+%oT=@*v2TxS6G!wBX2)) zeS?Xc!h7U6a^Vh)-_l|{{p`d?tl1|wKUIAaazmnE!viE26TTAgyR8U-@f5yl%z;x4 z+dz+_H*&>Q@QVWcYJWv<8GDr8!NGl8Nzwd|f%!mDq^*8P4hQVu9 zu~O7hDe89JJ=}4{nD1%jev1u5v^6J@KP@?fZMNcqe$Bh1nt+!3qKxo{JZ#4k9{M2N zDZorqZ9{2l1_#1WebDqw9@wtfRo~(-d}-<`O7IJW_WcPfY%9IydE^zCx2C-zfOqzY zzWL7QcP3)-XS+ph$g>h{RVDwTmIAN!^$iCyiUEW!6Jiv8Ek}^Rcp!kspe#bYHSgsn z>PmNS6>Rsc_FaYYIrV4Q`o;j5)!g7iyAPf96vfPkY2I|^^%He-yMN_7uIG=p(?oqI zMuI1Z%;UPZ6n`n-+>zQv(E*N=q}q|zGY=3QKcd@d{Cq5i7A6R-(Kj%7Aa7{@8*ikJ zJbM;Vtn={oWX-)gvJ7#W`*%}mYNOoueZ&?8^be|VDx1tln^DfE zw*)>F{WOei87^pabHLzjR~OIK#HV2|Nr{UBm)G9Z^vH6$_pP{<<@T*vLnd`A&`cyH zJEh^{=&I%figpZSlV_?|(_n$lAe>jk`I%?Arh@6$*N$sdK^3AZ)0xXgSDGG ztqio`W62vBqsRAecJ+tnwpm=81IayaC@$l`x)O~|sUp5poM_9qpmh)oC@_k*Q5huQ zayvx^GIyDFT{{}YRLf6a{>9(-i-T!NOfSwdvqNLu@R+=PhQ{a0|7;ep`7Y=sQ4Km$ zg{1w)mKO4#oDFO(p0y>P+N+?VcTC#JCFW}XRK!6nW!l}j8Z`%&kP+qGHs z{h}21iJ-~2S4dwJbIX|aXSJjD4JzL8 z){VEGLCb+FC7jpx!oXGAyPw4G|X)mqbqdOoc0bRS2pLK;e41`LeR$5f^}FgtgC7)YiAfB4y<74dQ#Bsm^U zh2z&^n_>&ydkNni9=?rxZo(Ypw4YReM7+k`?xc7eD`EFs&W69^cYWxehD@atgrM>z z+1c5<)W0*{zT4cHs=ag`IE#?7b}AS@7$BizNG!spwWNFcT&yA5V~poKK2B{hi7JAE zsX+w6X9ZE~L_ptr(DN4V-R<6VcRP7d4Rtb5)Nd=%4Ws0yo#}g3H~s;QcOt@ISY#E2 zP3TI@vaFFba-)yR&oy66FQ^)G zwU-FFWjOjsNU3ynv|aw+eySI0lH0$1_&ChtZ(GOSr8_@qc9{+%?9r=&!3Xzb`5 z!IoT!ezh3+QNzH3C34-}#^n~3%FiCwp6L3-E+pL==5&gTEdF3ky>KsKru&dW3JdaL z?JM4yCf51EgIJle6J!cY7k}oI7_E2MPU(>b$e;qd(FaSI~= z@qOq0{(~WJIx2lwx*aFk1e+O=wo4Av_2S{!L}%<__~ zuB|Edd_9cEU6^xhlXr92KKF@LtH3S*W-G*a%MSqLVcy-<`c} zqXyogKF!vLnh;t6D;#59z~%f&I@W+(e#*|kN4H?21^1P7c4TmYT)dhG+9eqga`dTS z2Oj^nEPK>QNlrGeZCm`OqnlZV&5}W{`JU@O)eu|Ux9*baP155+qSktt%i#WmdZH#yw&3k^Bs~Y(3p2j5^ zrvZqB(&dZ3WxKFnq#3G(hDi2*?#*lvHbsI>!h+BQ_aE_KjE`{7(yVv#jiqD>Y--b2sX^HqK;0<#iG6K|LLcv;Xb9@ah_E44qIx{D5cO`b0O{Gt`6jgZ+uoQVfpTG2L!R%6o zHDNUOG2T#dRao5Vlww@&4q11x5y}ROhnv=a$sQu64zPy zKfZ1|yPG-yM?G|oJXch8W(3xOLBS9?X4sphszr=RaQ9e)C4|6K>|^1h zW3BhL{p|WuEiR!#bbr#{FYz6&(}QO|yV6=tFNiu#y+!K_e1@;YA~ z{tp?}3)}xUtk1x0^#^+*GJ2F$8<4}A*Nr@8X;G?Lu0LPA^I&|bS92LH9T0sfjpspB zeF)EG-KHP;<{~#;=4iq98ZVfUo*f=B zai3(ODO1cAT(!R@1;2K}?4H7^I^YKPl1rX?v+SG3h^xPF^Q?T`-Lc+T+9fu+-B0V3 z=k{(Dj{QP*7{x>9Bf?RpR<<+6QnT?%fv3*^I$=yGpczYJ-?Y#4xOn3K9szC!Sn4Rn z;(J{x>r=03OTPRfMpvmeQin?1do)K(BP?q~$k~Pb;>73hLCI#=rTmyY%^CM-UAx@=ckhMSc|S2i0UA=|vHk~*%4 zR~&+z0l@ze3pxnQ=vErm#$~1Xd1DfIJFgpGB$DVs$F8qF4~TQelbDF6d716JYO4&%jWHCk5MtgMtTUvRTkDXWnjs8t6WZRS9yA0WNl$y z;fobr;fg8_8uS>kAQ{CUyA!!}Y~&OW=QdSXLbVfSB&#k@!)!#sXt7PhJxG+wZ%&X_S{Zf*RA;sL` zf6N_1<~iL~?SlyT2I<2LY~@Gg5$HQXuV*PN`hj-HUPu0ah^u2Q5!FrAejE^g(InaV zclULXh4Eq6s8{99DQIr%_pg%iV>zrf?Mc~jYX27L#b!6^#Jib17-bTY`F|1>z9~bE zTkWab1vLpoA9t)Y?PEv^RdxsEU`I+)>)QeGSYr&DL1Ms`Ya6G&oi099RqiBS8{4X~ zI7ZCur_9(^IL(uzHgU-)f@Rv8kzSWC1C9&^Bo(-V2GDX^3}@WPc7_`EiwQQhmeFNI zEF(!d-=~#F2p3#zxIc45PVPH{W0?9t1AG$1%OKInAIxdMlLlE*MTNcxKE_#k5{WuX ziL}}+=jc4aU2$Fx)baoGK~Qds z(sWe$c8gxfF2eqOY7ZI1id!u6?~AZHG6Zf@A-;gv2q7XhW>(RdcuSZp4MLoDEtM%Z}@> zw1is7->Uq-ya6cF<~oG+6mzfh*uoy#&?Jm<4AmxmsZvtmE-2uYe^CTbuy7iU{a!ME z8xweri(>^^X(!LtwV+N^1a?s4fS%hGnimtMZbQd8uq-c$T zc2Kn|+AtHN<(oCr8)c0R>g;d6OFaRl69MP|-Ww5o(ejx*b41 z1$ol!VvBB$f!1_zWC+4m!AhRji2cq(2qc$x-AY^ApG`P1Hvl5&c(-~rAUogG^_Yv$ z@btg3kr)DRD-3%rMW40#0^VLy35HxXdHmgwC<=my7rvacsyuKe4yE}jlO-#KxCIAo&g;_n02?!I0lE8Sf0|cYl|K2!& zum{yj?k+KPfhkLH&{CRo>Mj4T;_jh6Xp)OP#lMVC9akRUbuMy z57J)JPZ#2wh2fh&4yImEMed4xIUxjBo6keMzF^kCzHYzcGEG;^{}ro(lHzGP9K2L# z3K?VrI+MN}J$5#kOFw3C;wAY{p;lUaL^_@~<;}ujm0V*C&Q>(lXl(wvT-s|bUO2B8 zl~~1t>L&9RE_#w7EoBXS*n%@@ymX~d+NCbG^7XRMzits3iAGLLaU3rt`23vSlJ)e!*&gS z#i%sWx`jnNfS#%#uAFvO{DO!Ke*;DF{)($TWT21$Q%*HeFPtL!^XeeNI|x1 znCKM!aLGe?!4yEUr*~Sv`|PRyBDS2LptzAve^iloO(_01bJ%e4I0}RZWo_^XMgMiY z$njYANB?!;dAv&R?jU@*{G#Rv-{{{FdeNaRY^d2|=m(baQ0T!nLnUC@TPS7mJD9-R ztjJE`?MaBOvo^iFNlP>D+45-8I=%Z5MF!PPg*j_#b(P#vBJEbjVbwHSs?%22Q7Et9 z$_c-b;bw=G6z6V5(pD0fuQo4rSxVS`c(j^`6a4#g(GF~bzw`RK%j-Jaj;i?$L@Yo( zu`>3?SZQ6sq=NTP4uG&^pJJPh%6)w$(S!B22tR&qEnDpSnin&0#+;02e~-QDfe zLzS4nx{mk{{y#22JHx6u>e!C#o&Rc&qZKykokA$1EnLI};QWJ{cGva#9@gxQdWH}{ko(BJD-`rE1QZ7sPx`Ns3@vX#@&Bh4w z*zD>2KY>Y>#B{E6xRT4_Z@=76F=#jtWj9fgH1`UmAFI{b7qOt&V-h&PP&y$Jq7PT|d8Xi) zs$B0?5_mh^%^Wq&Hwl^{3pPl4a?kcRnbABK*+0t&Hu@x%Jn?R#oMZX6qr;|1*B+^P z{EbyT<3uhNGxfC}>`3Fm35;K<#N$5tl+cgtb>?93)3?xr6YPq=N}*P>gz=WQ?B8}{ zTe$(#nB9ss5>+4+*0+b-1^sdpX6YnF0#%@& z3%1sGY)apArpa%rSE9~e0)*4je(+}p(l;_i=LGVed^sg*xqqZMFuE)Yz#!^Uy$xs) z`$@vQ?oEpYNKx(WXS6nO9!aKgfj@XnX|?M?MZI z$|Uf`E{&Asnj@<-wE4MqVw+f>J%se#kOtf}!^rUI*#3F;15UD5L*gegQ3(4D_|oOp zOXdw+sv~OX2>6CJuV{9Am~{@?nw)ZRH|z!48FGrLF9X zg)lMJG@DgZfdGGG1(|pK_o$9wfzoxT#P;=QYG|65;n*$XPw3EY1Ij-EDAnUZ)>dpN z>3kr6*C$`{;mq2VQlJ%V?X~GUm*k$v|*c$Jb|m z7jP{uBFCC0`*l27d!I+58=Ge*;-#N(&QZlrM;#+C*~%I8=RN#9PerqG!fOAS#>))6ZqHIulbqDGo^f1MiI0<$^3O9 zQ=H!4DDd;iKKkAqz!ixDUIr|v^5CQ!el@_!Z|~^H2qIb{yqYnONjeV3zDadIu4PIS z%k6VjQ(AtjUxuZ1=MtqG*SCzM>HoP)`e|cmSn`)Z(=D&13BgRBB4v(zUS|t#&K9On zSelwdc(%f{^9C1G58|9lCpVPtdx6t+t70?b#b;R75Qzxr-pEughIL=b;2qGV#D_zP z-{-&qQ^+HmFmgCK5L?7&U)u~Lr0hKTUI>o-+tqyv0ojND#adYa^7-vSJl?_ou#Id9 z=%we4`z{2jcycm%OSKqPI;O8grIM(1F8-jFfrW1itRfCanbCWEK5>FLSf73e{!PGQ zsP2C9v44_?sja=g^%J*4J>ASVOph&TCev^l9%3I_t^!AYL#Nk2mHjsK5hc>(^1aA9 z730A2HTSIEL}FMZdV4f7M^Ni?p=MNX_?>aorhQY3#_yrX~NWKIx(c#i4`E1o=4zDfgD);Ozj05KF!A@kBEh12mOddefOC+#Y$I%OxN-7 z!Np`;0@8wfZ$j>aKG^|)K&YCagl^b-P%OcFpyRXvr)_7i{SB!t+5G&Jj$}EPFJqsk z2|jy94Ic>q_bS1!0e4HrK%ak?Q*uad4;xQ)*k$+1oP~tZe7Hc20Tz%s-c)#$qAE~HLN#|%5n$KgVTYb13K#u6jjReoEJ!ZpkH4)M2P`cdJ0@)np z6cPoFgs=jB706ANz>8rl>XZfNPV@kFQZDU{Qc|)q8v8knzaAG?tD55kz@L1z`T=`r z8jsuCt6_E+JBi&u~vfLUx(Wp5z71HeJOT%YRfp)_nS8i+SO|7aUhO~ zAC$v%*)hbO%GC}9AC5@L={^>zh$63&SmB@Xd2Hv;DY^xxG-&^L$W{!Y6v1TpP6iuM zjPV-T6#lq91!?45VKjy!N&)nJwNikemAoxU9;Oyn2WxVGlY5D~@>#Z$8m8V$0?E8n zEZp(xPTDF&*1m*e!U>P2-#|ddm^hNA%t5QPY&eGqJvV9slGmb`ZT&e?;Jr` zSu^oPtN&ISVx_S;Dr}A_XbgY?L5k2~a%sXNSyu#;sNsB;qRO?p^)DaXXOamH;W1am z6YfUxf()rAY0-lye6X9b$D~8?5yjYk2ldNil8Pvqc0$J@#N-}T&t|Xxw}qlHTUpYT za=6s)Sq6wt56F#JP)vdNTPEVlphM}mA6v>sQ(Q)Oj=zME*?{<9S<(;Zc>ELjhVAv# zHgeo6M|ma&%fA7fN%*=2k&P?_vM?_BBqdl$*Xlz#@zT8(|g2@HuTfVCV#WQwEVTYaCndxMlxt@1UYpoFht*rkT>Zp8k+` zMqb0M$JDNQfo^8k;pAX0uatvsPO&m0kmU#$?x|2h?e2H5zq_UkBgRds)(~Ix@hyG~ zXA~Eh!QJ4>8I7hlM9$daXcqslkD$^Xz1(v9uGZAXtif%v8sgAVe!Q1GhF6f%>8Kh< zMTey<|CNJ$6svcJ0_O~VFHghB=CI3cyo1PM`X`HNAi@k|T3jn4YU{^kH>|}i(q`Zg za|E^U^|mVa7xSM=<Tt_elm~J;HwauG3hSJvq&3as5eD*a8u2U9qSCXf9iFky&K?w z$}zrp4<#Mh?b+sVqCUVl4l$jcL`>ZT5V=t&^OilcpDxo*)nBccY=9vWleE@& zcpxrrFcWI$>n?mN=iBe2GdWHYK*aHjgT$Axo;($F2G^8=E3~|!YnG=Cxt{;?QvKl) zsBHO^^r!{2yIIz`)X{fiU1>opSw-Jj99tdqc4wDw784w}TlrPKK1qI1SsnX8jrBQd zCg!#RXd^|e5jn-#|HvNX!5|W+4CSx-kg{f7h_l{SOS|IV?(u;;@f(FPG%v$6X-7AC z=dhNOw+{?|laPh?j9X=J*jhnRUs-GAa=I*4mH%5h4HTsBNR|hhI`1T32Qk*D30`L- zL6H~*j~2gignSz)E)r?MrOfIn2yxpXa*<<40}XtcVFPv*d0P;KOm z!{Ce~TX`u|6*LHE4eEfD;SmeXY~`BF_AN{-hw!Z^)ce!0%`9ZHHld7YR1mgKuREYf zR%M6YY)wtreZLn=PxFcHnO-oCr)1n+0JQ`u2QO2`1qqfPdWiF$C7_c6dP?qn{hgjauA`X)G-4`UL}qt>w7IGsHTQ~jR=f1l00nYO~d-m*E8?zP}HMLQN7|;!?&$y?-;X~YLG%I&o&mYK;GKA!2TmpT`&CK zcyki-wQEnRBo(=s)-k?1YZ*g-Wptjbh+auWgphu^PPc}fT>R=4wf{{FJ$Uy`lPf@O znogU86#+TM*!Qr>H09bNbS!i1OE|_55usT(lEonF+pqO${GVo=cVvw{|AlQ|^?Dc* zu#CB^N`)b}m-^^(%__?ZDe9Asy8@#U0?>t?RXCO(HMC&9?ytNe?BJ|! zD;n1s%DTAWOwpS$rjeZtaSVus6id%9UcrR!`e_rVv4|yxw>J z==hS~2VKRu)~75~j}Xzlxg5Ux|R)8uY=T z^7rObuKw7CU+&DXZ4OUYaBiETu(bkz&n6JWK-WlSU8-L3gaTN+;Riuhp~_d zF_E$Kzq9rXXMq@+PLQwxaSoA0bz4aFJbuL60lb6@_K|qsB4YcocW<=Gg(_7bv)F;( z`bicWcl}`lM*8Hoa6p{~DadF3`p52CK`Q&AEDXnKzdNl9bPLB9p>JXNW8i$J>~#Nw z4eNiK>3Msmz*e#k?5Y}TaU@rr!tGRn-TIy9kAs(NA7?fPaDE3s{FWWbXM+m?OYQln8#V@TTnKRF(*ZP^e+~;OT5c+SdlW^W3l{^ zM%38a_M{Yek)^5LO40cR{t=6GdFc7k(1YqUw^bfF+1w|7@jCrn{#fxISeNu;90Q_cV;;nc%hM893w@f@hx_{1VU%15sDDRzgZA7VtK2&G zOf@g~zugyelH&e#4REe9s_OcW5&dT&-5$;&ov9=^5@tXgmDWer(7s#-_4HjCTvjbn z{OU3|I@}CW(R7s3xwVucUNwv#1;G!Q0~Os2s^+MvQ+IDuAmN^yRLrKl2U(cP# z@0{@<#9;4^+4Nr$iJ1e9bfgG~>)y>Y9M?~^aroyES1}GT*TWBC^{1}?-l_otZzHuiYd0RTuaVgm0h4a59`F4Y;UR6W#yW0jZdk@&%-3^(#}V&-K~ zszWTl?vb!Re-5JqJ7XW;5Wv+Sh>H4rzWt{(aFdgIMyX?%;r>+VANF#Hz><2KUPgRb z7nE`%ZU-HS1G;MDpdNsopYI{WgXh5(kRlF&0U>E=TG*QovdMH&<~J>-;uhsXd{TVN zXFAxU9dVq($4uoI7FqdK!;RWpWVauODumGhYn>C#C6M+A1$xv?-r1m}|2d>zDIoWn zrLGfIzE5EwdQf1hK3{LXkqlDqTf#}nVxtrJc|UyuW~!GxiG?erqo*|kugK<>i8Hpl z_-A-OVMMJ{fj-`8Ilq2jHdUudLE1!B*T>8i_Nmn)7G$axm9F}$9i|0tsA<;(T1#HaD?V!!D zR>Q$v`>#DIbCN$-Hm%bLp>d5aI6K{%_u`V9>M|h#G7r*^IhJVEHnCD9=!BX(8Ba6} z7$;4DUf0~T<3f|L&RHyaE~gr#`9%#-r{tv>jtEg0o|8t$ju(Qy3707|4EQ~$$)UkU z#MbQ1!g}iUvkC@7Tnhn1f4SUcc-(FST4Cm>R9J~rFTRcAttd;GJc$}x&%4kzyJ7mI zg##x8@vPz=?L8AzTyMjzZ$K2n*mReQu2*r!#NS455+_x?SuH5v<}hAkE(m)TC>kGs z_DnF;CMOI9Zi{;Cfuw71-eFx7*>oOUbwscY7Ti1%7_(u|(f|w24dJ2ZYJMf2g1^k? z?AC*?wr~MRdbGc!TI6m3cNVf)WvV_ArEX8IVug^m_=~X0liz6vgT)ArAYGS zPn#7kXjI(&GYIa&d7j~1GEO0K$Y-aBTeECBW?y#LDEe7l-<|pL*YD3if277!^)2Kv z8Xo!j!p>6Q^Mkn;jza4H#!?5C)%0*D1d?V>j@2e(xDuqr_LvL&4Pa0HwN`BG2OI8c zeHt66_Xa5Q|K{C&yEFgt@yAOVz-t-1tbQLHH^~*cK8#3qQAEAm~cu@1)#tvqjLq7lrGrmzkSE=#OtOLJz-_u9oV2hzg#;2UzgoYz zX-4lST33ewABR`i0oT~I0iPe+A#5e|-GQW1W91WWpeqz~kUEFgVo*?~$%u2$OC16( z`O^Clk}w#bq;16VXgGoe2khStG1vzVe=(43=ayEpizoAr3~luAsFkpVwqyKytc6_HBE-qTP>9lT9!Kw>s0Kiufk*5O6rYwrnTQL zjA*$Dks+D6S*c%g@d$~qC^Y^_FyCl~c_X3$l(v*ocVs4ZB@Kb#z*=qn0!o zVaH!k&Ta&)o^idqeOTROc9a_vabag-xyTR?eVOMpBoQl&aZVzdfX(VBUaH*6+7@!O zfI)o${OR3tttN2;DuQJ%m1v;t2f0ElSyrY(nH4>Q-Rs5TPw zx3HRf9%Zyq#KUf*gs|AY{lbM8ItX zfyemXOC^GiCJ-Cy^99pbK`7>2;Mob6%hx^xAp?)TIh`%BKJ8$4x8S^iB1}4t9ZY+N zrso}YMLj%-Be*qyh-hl9+i_CL9(rSigg}NQAG0Uj8%npaX*%RVR%XZL!z2;H*lgQ} zu_B<$<7&o;%LaY1IU@ktLs;qOe}S}4Xp0Xc3?nelV=C$y(sMtk%<8;BN9N-OaIg{) za_XjH@A7!ngNZ{mlQPm<-psRcRA5s(8yZSf1RLmqGU!&(sh5K+(Lm5mWVyXL8}ox^ zBzJFvMo^{yA*A>vcOx5tY0?o?n8?kX4|*`ql0 z1W;ABHTpy$k`BE;KIG)BgR!JWT+=O4&s|TRiKMmGo`4zF5iJzTs+L1o z?$U$4Dl{r(1al?EiHCIMQF@j$H!+%-MTpCMC{|&NEay}ldTGv?6WmUE*F$|xC%0km zmFt0){_ad|BL!sOJ= z#{}=w@)g1#`*)Mf6?Vup!Xci3^*y5H?PW~JgLeie)Uruj*ROo5C*~tJ+2!) zDneqN_kK0aNgS0r_O#!hSp<;(>rp`<`@L>jZ6XU@qjlUt6#Zd~NAyGKx-I?^rsEJ5 z??280!Eya8f{urhsykJ@YHi3l!MLmvE1vQ1O>5Qh?8+q z=B1n0cUNy#$?NFe2zEV1fl2nDmADZ0h(TPPRy~IlbFk$u_(&>bhgR1F<=QbZ_^e?+ zY-4)ldJMH%I!8}8+)!DlW=mg|=M$%@|omN3yZazoWc78y_ zjp57&NRq|t4M+Oy%_i$i@4xe2##VwL{eWGv7WhLDrko+5=QhLmdz1IYdJ81Wq7TaA z^F-)Gupp08?sh)3SK8#&;FiNK7-;(!xh#>gPlL3c@6RR&a8X)DO|D0?#*tNm=Hk^K zne&ECFP6#fF85%wa%;woQ)3ahOQWu;0Y9l~)V2b2WTX`7v*{7uRdd-I+mjm6Z(X-H zq?r*GjiSHw5d?49pO)e-BDa`ez&d<$zV9+;1^rXy`}x(|cNFjg>v}y!7kY=kqFIBV zdOJhtxDozDUVi*NCAi1BTyXUkr=$w`rDou`27gt64g2f;<RB z_l8$FW5-?Q=H}60O1VNQ5B^#;hA{^f^X=-VWf((OgXGv;M@3kQ!<;YDf1>`}DoD+N zscwgY5QW}`IRz#^oB_F~?G0UD zMpW}r-hPzw9(v8qaUQ{!-){vbn(j7GG?{xdvl@fT=<{~W`Cwv7r8y*{IPk+sP0J56 zCx!%OXWWI}?xkv&Lj;;x9%K&`DsgqS)7C~w?zJtlzIZ)L0&89#FpEX~{REX7=8mo( zYD*PIYgHBomLE`Sx(4CYuk&fY5iuuogNr(qOmdm~KavEsTN}aR9EC&QPq9U>x>CZ+ z!4`Q7$YP7XQ);)C;(OD+)WPd%bT6>_-X~fY7H`(w7lm7PERg_j_nz#{V^4K@x(m}xmqKM8^_ zuzk2;)x`G{r}44>zgd8;#L(usLe-Jutj*lu^&qh@y*hIRX~ds*-!*oR0|5Que?j!%MxUxw}70kELkC7D5j+JFYAQaJ*_WicdQqJV6u3k6#M4cWHhU7TkAp=$J2W7qaIpzt{^6#6kx z1V_h!ukXl5?&>pLWwdN6&8sGu9SQ%5_iis+Q=^u|6PcT+ese@Ns!iu>MPCvMW zc{2#xm)^r6**($LIWqU_K-Ippg;N)jV_%*bG9MRpKHODC^)cN|cMj7A7`KI~F=RL}3w?FOqd9v<3ikG`$xt_#}=VzRHFWo9% z;)h4+Tn!oQe1)|dl*Gb`rn90fWGI|w^e(+ZVVt??O%{=`6GvY1#mS6C_INf*fEikV zxy7d)yAn^$k-93*j+n-;Cw@ILKMF90$5%EP%o;^W7hF(7y{Fe#MVRaeE&NEMliON= z5{TbxS7Z0?>($*g69cTq*|MiGXcGu$(|3aP4c$<=u?crLnYBMDKlTjT5q;^gO$_}v zgQ-1@K!z{J-6y@CG0H7>|Gu}JFW+$9uQD4&HT^pYM+l-1LLX1Nx--&;%R;IL{tH@apz#Ekbun5I6l8hVJR0MB z{Lj#5^FH=8xK|$8s~mS5g<3 zBH55?Apol`k8!TA%C{+36YXAGD`mOiAyPKV+CynL+NdAZ&TX>oDG`=RtMASl2$Yj9 z6AD^Wmgk<+EIJ8>V7?>df9o1JeFRg_Y)Q&;i(5^@=zb`mpKjlN$=VrI&Cjcgi`8?f-$xvKYqF(^oysi#Dm-FFaI)I#dUs8d8nb5YznEc$(ChN&L8)Q zjPEA7^E1`+EpAo`!)-WGlBi>Hd5ZB{M)(!Eyw*y8u>(k>JOqW;1M z=Xe_ZwN$o~l!SsRKGXbT3Qq0T*|qjKL-b4%4!f8AMBmiz0tdf0?sHzlKR7++WQV@$ zbH9u6@Oy_2)RL$?*#A`1Z=)4<+X{D1m za-erFaNX)iD7Eu#X(`Aioc_e#fN%k}<0c6lT7tqnqRE58nsx|;^IZSta$ZYzdsW`- zYM7E+=BD^C9@<_*L60!SHWz9c`jwStVvp;WKR%5hDvY8ECazppilYTlOL1FaC>Hyr z@s{xA4imLsw9ZuCQ*w)~PES^4x=Ev3-f?y*=W0q{eq}>XD!Td+gHCl(e_Y*sLAmhF zx07#@Mvu=Xf!1vOzIA1COrESHBrkbj@@PtK^A@va*0#QUql@YXfoBfOfQlSiwu8pu z=L7d^irsPc&+)Des<2fd+?2{}=)rTu!!@sQ#EESvPPa&kPDFXfvLL$mplMRc93@ni zf{H54g=Ku|?PuBc=p04JY&Bvxcsw-DwWQkl`;wGJ22;3BWB#CMrFC6uKLOmYWhQbo ze2iAQwLGG|d)uH0pmR-cM|vsO5`GC$8c6T_dsl`($A_=>tO#a;)9CQt!^X~rm6bX^ zvOe}O%bC&Nx`TAFaQ zr>Mivz#lVasw*~o{O+h%@~NymmlZuow7guzu1Y4nJBo0@T1n!}bzdC(#pJU$!6=sI=v5#J1UpBi!y=vzc^|yER zc~;E><-R;_guH{;yR4Cy|Ohv00T#gxJ6*!s} zpB=??dQd<7S|cOeMlH_J3i%;bXfn4WHs~J&;g`?kxoV@8h(+CVT3QU1V>)V>gXPIQ z?#hpgI+I*O$edy*)Vk^slZ-RvUK~OirFzuuXk&@~rL-J0eluJ@{;ifI7;%{L4?|mb zu0&Pmx>%Qddof@bpnHr*ih<%+mNZBK+BdPl;~0j|Wci4c8QQ70g07OJLPpD7Xrkx- zbP@M}=3@qpKXnO`g57Q4$NmEc!fM_BLW?L1Qw%J1UzP|v`7|A&s9oP_jMx z?j9!gcm}=#D{}Mzc&muhp0N{nb~CFiUg3@!#uTZr0czCh62!t73N@nNLxFXFYq$dL zem?!%3mzB`JzKBT9Z6JG@)FNGr?@R!R6)$T=R_7>w$oQ01y`1xNCcyyc^{sx1+Wk< ze`CRv)zXZZm`$V4Y&&-BeT#7ydihBwm7RgkSxrPcrSQTakB8D+valChKxVi(Y-hrR zLLcmN@;a@&kve2@^zw&krNF)eVo)1$)L8L&40h}oL?na$Oys_AA_7*PV2(3iuk*lq zmqaaKsAXOgaE7Jk0}N$js$-v3YjI@ETC$ctw%L>x+~+mIue?Rzy&F{ib&}oM-QEb^ zd;KlG#O}(H6IdW6u`^z_gfN3;anON?kYP_oPENk7PUh7mnZmm=>&qOjhjwKoSlnSK^-Es ztuzdY_QJEc6&+KI_S`HFl0&>|;+`k_Pb~`o!%&A3OHP`DwLJVlnEe-E&{lLon3J_m z?A*)IEweTj4YR^hV{Qy0$sv@lMl+#=(ni+@H^zc`swA4$nW57syA)d1PqlJ=DX&PZ zcdi4mQ34PsgNmW&xJ?a!Lw|Sch?9!0>o$N4@Y+?=_}V`6uPNH6_Fq{ih2EG%(9k7) z8PbNNi&YPJ73mO&%}|(jzY1+#__eE>+0Xw@VX^297o8D~yqE(~5}Wkfh~__EtbdS; za1cm;ziQMmHj8pzM}l8iWmjpo+SDl*F+%@fEAQG)S}2iy%hs>l>%mo8UvRm%+iWcVi7L(SP)n8L>f{I$$M=oHLF` zJ^jv2WRzkrJ~d}55~H(&R9nXqiH;g?ofm_o^GGp?G;JVDV~@^xk{A{dSs)`b)vZQi zr8S`j)0~w&8>~orA=y4#6T$`mk!RBtgGTfaDvLKnn_x>A=_djvz{K&T)%&OcSpP=R zug1~!?^xPM%-(9*M=Pu92?a5IPs8yP5ran6peOxe&!puhh^|3(JLTLzZgh9@BVVbZ z2Xsax>GD)Gr+&st?Pz_|Puy>Rqd`ISHl3%{pgtI?H+%3?*qa~A#JZVv+jUPU-?4fL zS34XPVswrFx>^%h4c%(Z6P2%>oUxhb$}w^*As07O%hk|5Q>0G<)eB$=R=T0vM9Itg z(N~a^hhQn-_}u5X{CgK{!ng~elxjSK&JprOPmww;R<&1gj7bd0e49I|mbu-XOWu+f z0e0@j>YZ}K>H{LFsY?8U(NONYPCK0QC_TFaG+@>l!aWS<|85N&Sb1sITo!ll1u6=E zOM@SkW0JCy%g>okmT!hD^bSc6lOPe@? z;a7nCYlRSRZo^D}sCAN{YJL!n_WKPbGmz}s*ocRyW8)cWr2EG@NA5hNS&5IQ2fXpg z$&&`C)timwFiuy+!ds^RVxvUy9J;hGo2Z0;4H_eC03QvWZpN6U44WHs7i9QUOc{*Z znA%q>biMpSRenRLVXSjyslG#XZW0;O0f!2pS>rnn<`E***_b(5h-P6uL75d!BKq+WwCoeA;=&7mR68`jd2>hw}=R7VAXh5qe($sY)?_*`)v!rrg8|@^7?J8J?WE{X z&X*ZH$r~5gVEyKUHWHrj@jR}@?j?)1p3U4tnd=TOaBL(3!B?J@-CDT&OE~`m`&LyA zSoeGkmuvrWm^n!7s%hgoJM>juM_Ui$mAMyYU8*&j^GHUyD(n4#Uozl>zI~z3>;~m# z3b}Q9cwy9D2O=mLDK`E4Xli0&zbjGl=Uuk%*|Md!1&5}zvYH@b{va)}k40`1O6sbm zb1g;5TcK#pGYgFUt)(HgE8iFj27B+q5KP)P_?Rg|$TSXr7{<*-?e_9jyuhKU@zg68 zEogRUbq_+GqTk>ph-dQE8BS#}L)GKdY(#b1cPo3zBydqth0G#Qs+ggF{jWQC4_Xv3FKf8KvPnH*!@zeIXKP6}!#RbB}U zZe*v3q*Rr{pBT)P_c8n9X>#poOijpN{3_%CW`=EiyTw~6V3^$GXSaIod$1q8THDwF zhCQX&68vSaFUTSUq&t7FHtfV>R@P;kr;?FQGhACE8qY8;G#q?j@~h^Bh&Q8)QIB6) z%NwZrn<&z-*w4g5tH5B9m|G_{clOK`NL!UcTSM`kmXoERDH>gTIBM?Yurkm-vrN46iNGcDKMh-B|w{sQ;Mqf{=9G2RiTlAL~9woaaQ?*jq3IxHaxt^=A)AtY*WrJ z&v5q(9)S*U?BXNOuYkdWi=x`aRp^KklTtSiHP_dg$n{Eac`Cj_mdG`;5Hn?u)j`M;R#fnt8S8z)>%4UC8&)XT)aP0uz2yid|jg)wPL z?PYw|hc`5WLL=}pix1(-W9%pA47UA}-(G%>fzS|S?*+l5t4V5l)`&q5cD;NYy4W3;mxBy!Y}u+Zsv5eV?5C%I$ox4H+(% z>2|EzR#W(jODq%9k4NWj`UEN7p3VFrE~rZ2-ptUsZE=bA4`w3GqE3w5OV7Xe6?i4k z?AOgnnP4#>ctp_!`0P-_9mev9hdWXGe27hOUU&SnNN?b&ob=zBqb8mHzo#0}S(0N% zbvQd#Z1=2dPQB*rt4NP9<>XtWhm_2W_67*!*s~a(()-rli_uLj6eTCrWho(yVh(ep zUHjVdFDX>%MOvEd?vhklVW<5cKE0U|SwvQ5R=3~Sd`dxMWUPJ6U&uTCvhb@}05ZXo z((ji3;}htjLG5Rl^@4WAI!DedKoe9V(IGJkQ!}&O9u`ZY9Hp35PI!x7EB!#6S75`~ z5&!OCOE?=)GM<~!WnqrsF~0mU8jdpdg7_Euw;x<3lBOFFt)%1C6H=023rZWGo37XF z<0bNo3toTlUQBkf<@zjTWg?&DJC`r;cy4#~axBeLr#ZF`TF`*|n0)rMP&@c3VV0O& zXYWO>H_N_+^!DefnwwXjbD^zpQzn$`dtqSS%LY1Du>Sp$hd9U76}rvTq@Bze5%`y| z$rVJ2S5ARB#+$|)N1*)pFV;|~5qw;8{M0i$`3*spMa ziwl(~ZQN3;?f=%xJLz6u?Xb}DkeoUP*;nBdH6ywhDpteJ`kU9yFEaZPfF9l}@0xHd zsgJU{(-v7FFi$L{!+NnD(3X7Sd`Gt3#1h0x%B1`CKqBRPhsCz{LD#fS3!1iT)BdF- zB0#PBqwMCR)qdk2U{C?SC0K0NO1CPuqaOkyBHMD|3Z*p;FnYZq+c~I#%@4N%t@DtG zSY@jWU8)G{`1KRz%cluA6>|q1lW|DF1B&9WHcTzDoMIBS|Lm~;=^E;oP(5V(w^m3` z>N34zxiURskb(v(w|{ptHP{#W=0XkQV^JIKq_LVjnZEzUAscs%4v4xUm|Nf5sMu6y zwiNhK{vmUJa`WGhL=PYlPsPp#gE;#sPpMZiaZUxacUSG+kE$hhtK9vRetMgN2@oK+ z$&we6s94r;mNzaRXQrKA8^Ex*HIp{kyu-B^qZMUrsK92zUNK(hX@i_d19}< zPf$wLg-E^XBFq&F+Uk|U63LD1wWOZ?;a?cYaU%LXz--oVWc!=NMs;4Z zZP7UMt8$i*Fddj)b=R;o=y}}lT&-p%g45$ofH*^(JLq9oka+uwp+7~)&w%xto}5LM zB+v&|eKBIMO$aw?xP95izO_C9XZ|twfxH%z=6xwBLFmD!tx`{FU6XyJ$^+uXr_!4L zuPcB{>`;I6OHbhd3m{@I2zX>c8r|X5jgKuGyZl$JNig|E)}Q*qT0t3b)TyV8h|Jxz zK8`aLv%{$1FKlE zX94aGM>^b64Rz=Os1@J12KH+BO1;|E>wg)CdP}=P$RYGHT*JgI;TTCB9Xfz>!R@OF z$)eW^Nu`dc80mF^6S4V4IG*#ACAorceFN|N8>okEEI=0M#30}@$;?J{-u3e`L|pY? zS1-%eA}eCFX9UMHa@@#B4r2ZJYuc<35Tdofi}{=NUw$!M3N8c~TSCHD%`Z{%O%x;t zmA4MT(E^LW>(#y2r4TAEb#}O^ zC^nrkHVmn*ni9zJ$glD81H24lM;04tlAK7h*-k1jJfwhDK{*;n2+=>19Spb@!<>> zDw_!VP+TeI2rdZ6Ibe|(;n>3@>G8YUI2@8~g~hgEOkwJUpo=cOSiw+s_}TOXDi?9y z7EpTIl8;U~%${fH>;;$Ws15z$d~4z3a=R!>9*mFI1Zto0ug&EkKBY{QJ4{mWKATx z^$;~u4twi&IZ(2H)ugO6T24IL%f3uB?{t5j{r>D)+we$xcFODhe8UelZFUqM;eXPE!mM>9Oye`VpMe;SYAz7RAhIla z0QcJUs!GI&zqcq7vexu3N7aJGiNZX^?`5|?Au-qs1_5|ufnIg(AeUM0^F2@AfOCQI z$?B1MSxf;vU@qr>Q5OQ@+4uc^al0T+$X0_$&_*qBUFM2?UyszqCL2&&0; z*LS1_Pef0N1$p1Xhe$1jReWBo66zQzvi`45aeVoBr7nrJ~Nwg9A&B?g3~HF(KDS5?Cp(h#9Tev+&cPW>Z$4Ks-AB)^Bc;^q+v)hr4D8q zw}6ab6vQB>JD4@}WU^DT%0uQryf;B0A_qzbWV5hD#-Te@$kpiN(D*P1mSFsHVBlfm=B+qtD^AA ze>=EE47`^(Ut^^=`~0t#%;scmb*~6)JkGPh-jzvO(^)&y69^zuESL-xcs;C^ba0Sjx%wS7b;=we!!5b z_PLiIbI;4ib@4TK?|pSCfIe)nZue4ZgJNxSj?f4n8aaHa@!aazqIpv*1AIex^4VGUv=NXr z^d7eeCjIxl?Wx$4y1R~%SPsjYOScNK#T=VFE=Q*d{@bXsmpX>cNRk>|5?-<6652#- zjRf^En)fY+Tb zMaeWd|0@(7LAc>5f3h(v!AF4Q&tAP%llwO^pX(0y1HrWUC~9S{SgQqnW)Z{m66zs> z)N&?YCDoeCNJKQfm;auM6X3=MfO~*%NILEaiaC zs0XKZWo|s^eP4e*+6FXn5R{W7(Jgke)kXbiC!O>SS#^cQnc?*qpmOZaJ`!4A1|Av9 zRaPW>C!1H!VOx5{_yAZ{NI9?kVUOpl(%_6-DuBzhn zLUc7S8c*WIskJEcl9i<$O@1?oLzx~~{F9*7Y3+DE+9+MeFZ;~*Uos*I)9NzZIBn~8 z2R=_LrH~EflA63|-7chl?V>0jai_wJ&UVJA%@ohZNmlVgnB~zf#OoOe3rhFz_F(4y z&Ha7j_Ef1tK1?4$g9TvIH?%RFyV$|F=JGUuox-0H#^iUBXt3yxj7Z4UPX;jr)L3!* zN*PC1k{YKoPBN}k>B@rpM~ydy>sZo(kDaL6W15zi$rnt{GYw{H3-|K)UXl6d z;~%^KfPgcZ%5M*knjg>_)9w^)gDlPZw#<623JULx{681OibloH9-SucLS^b$i}S70 ztudVl$~V$g$OMH=?^h^H*S!%}rV=vCtNPW-hio>Nis@N>rB5P-XMZi?qhV^#H??~x%DFF7Cw%ESUxPeo10d^w^T5 z9hyQQ5GyB5G*{`PUHQv@2fbLuUOP1buyZy@Ki%JIr}19I=jE%3gUWuAS@|2GJ@~Q) z>BX!Qr@R%N;k-{ECDx@>TqZSN7oaOp`^s~V*R4D$kp936N~`y*==Qgt9$(Fm-AnNO zLGACV`Ec&;#oO$tAs>+Ds&b?0`Y#7^#uGiS$i98S<#Rc;wlALG+l#068}3 z<>m5+-3~eI5S`loVlf+O9pC3>g+}4736Mt<&RuT9jHjr9a)kxMQMCtqUVlmALq|0;Y*2O6PFhE6*%mA^$_?&&aZ!^FTBsHP2j zqkjtzO1b*8equYL*rBZ-_6b{doWB8A7E>KKoVhWTjz`S_!V)>Kj)qe>}l;AGus=X z^Ss`|QLQK;nji1f9@I<0HBT$bXBqfoZ(&1pJMQguOJWPjZ5N{p9$UWOw-S`5Nmigt zXYzfAepD+x>DOm0V#^sZ=N`Bn3~i;U}sU7ue>JBPBMn|`73V+f?7Vv-$mxWAyQ}tm zZ~0#6u`LZLrC3ET>Kln25WP#c2#wk$2k!@GG0bSj7vWyi{6ph-qDv1s$Y#C?Z2|q6; z94i-oDlu#czbbfw5pfFss1R1mK#?zK{ky&A1&&!sMhx1`;jEtMd811ftm5$`rp$aO zHpF?iLH1=ZQn7mJoUU@>0Z|lG8$jIh`J*79Bsr+Orj0UYWGe-Sni`J2PV z<<;;W^H(G>>ti`E-m(sjULupp^732%yZA&@XClo?MuPH;>ihoU5Pl#xSQpI7mW)@k zigy*pXk?~0`UhrffYSemMJDqv-#!0;l%NOr-k1tuaYqJnF7O7Oh`pw7$}JGOq};al zKCy3g!|0`&h>rTMW|HcEkV55`!icz^<0O@YLzyZ5d77D&nCT$LHu|ddVADE^Npo~e zjux?UENZ-n975SZ9I9CHq>T*4qTT(k(a8#bSrOFX>;oQ6J zL$%tLa#U^}QiMp!nv;-^T)zrN_!UBdjHyq$r;z;9IsReZ&Npp}{v8L&|e<&FLi zj11$TsWTqKgxEIl3$<3bV?i?V%2x`@qYH-Jw@u#5S z2@=FJhAE~$cEex%V&CPKDY)`RlE-LIembGDWoPqK!AJn5<%NP|u{dQoV}bW zofi^Q@i>Jm_0{=!K~^#dc@MNutr7#DQgUcm-JqOqRl`DJvK0_}qIMS~0qLq5lG|Q4 z;$#*{4`y`2)bc1l|B_59SK43@-?nH~my>6Glf2ml)79%Lk$ zrQ$5!Ej4(?mBJcKAkiApjviQKV1IH|DZ3hj>qu&p-ys(&n&*mzn7dqp&S)ZL6#@VG z2kgMvJQ&ly&^LHBq5@%-p#`KDoJ*!jaGoVEFC=-l^rbJ+qr4JKWqo*2IF`J@y}TOe zpz}1kCXxr}=C^_S4ZE_y2q<_m{d~oWeIuz5&Jn^gTL^lLVI@3De|KkZ-DN8qHkNy+ z8%FHsbS-7QOcuLZJe$nW*Q;qR1wBN7cz+(xVC7a8{0pmSbd+{>#4F?1x!L6)5ks*H z##AblD=;D_pk1YKQ~V|^#$Vx+nGuQm#$V|^y12_nhW+YLq|ZnQW=?a3Q_(EWcB1j) zSz$1{`jTP682Lbw7Cp`SFk-kpdOX#Dc1|yTeNeo!H6iAB5K0xeUKQd^=b`fZh+ppU zUs*H^BJMI;-8D$)C0}e#;5kva*=-J=$EB+Y+HHaxGjCMO5vHecZ_4$7rh$c;CG>IC zdNbR6vm-j_;*Ja7+)WO=D0sFN7w zj8$GtPGe1w8}ZaE;Bea9)|`x*SR=pp?*n3yW3zK4RegDA5o4Hv90z-9`IJ8@<5;N? zyZshFtPW#A6SDTGG%DYk)kCHR)~+9q&h17rH;5EJKrvZLpGCMFIR=1X#E1Vy@+(ng}cMJH(ycxE+=|ldmcY<{ckEZ z!2?bOIvxuy`!dnhp8Y_(-=C=jUiCNO(H*+sRb3~#pAg^tZjrC5PTo8>pJt`~kxL9z zKTA)>y&6$x-{xh&oQFzh0x)**Y?z|F?!RMFEn5j&4tNk;kGo#TO_;_tuz#bnfalt=0vOqroG!?a9=9=|G)8Y$Xb4}0A zm#qH!9o^|ZiOXbNNdeOA;5wMFB#s|h(s!?^w`~`P0&}PcFPv?iK=U*0o3a+jT1_C-K5EYWg3Wqo2Z`X8o zq)I}$2@r$8_+w^GHcL#8S<%&M=ESK4l;YM(4PQ?LDB%GCfq36hf0MiQ{c%E7YV9Jl z-NkmjzDR4qbr(o?(UUoVSmO!nn_IG%2Pv(7>u=r&&cw7swVfsYd{HQgvJnbX-8K$7q?Op<}U0ZI?Ty-9*Ztcpuq;vp2mpY zwx>3O0-hvo6%AmC-app4*RK6eyPrU7jh0!@wg{41ab$9nx`og2V=tSXJZImlY6-Fz zPsDFFdR&B`j=4=Psm+=AJ_d11U`>J76Cn($Q+rRvV7tK_xzwx8MSjR|y@-WdMgCHy zb@?Mq{v`Oq0mvOR?S;_)!__zI zF`wz@`_t?B3+}z=o|(JX-tV;z?T5~ZOYd>RlS)FF`5f`&q%NN+9QzU5246>{a$H%y z;cx+yJo`aYRU4cqKwtSbX?rA^Jbpx$+7ohut)%ds;6#_bcKI$;uzYmP-wkKw`bB-Y z%O68`{;wq8`Dxb=R_Awg#|=u1u*$Pc87P#Q#}@xasXh24j`ZAXt|{vsT`h}o0Nx&x z=ek>hb};7B@SE8owff2;#&6M~=2%l9D0ZYvub^AW$KA31klxEctoKL7iWxn@)`-gw zWRcfC8u<+@^zy;-;f>Yk0rb9=e)9|la6yK*a@=#{uL9J+O(w*t zI<$E{Llz%aNB%_QAnK15d%H@!N-cOr?0Xw35D14Lq1(6iM#_*Ep8V*fjD95oggb*~ zccx*KBdRU|Atpn3IB+kcL{56%Aipa#z-ovnVxY{A1(UwuS*F1&KV^llet>tYrB>dZ zsmnkFFMxl2E4E_G1IyX>niU10?w`PJSLR3Mk0&H_t#8X`eRJkQdnfKpi*MSN#zpU2 zg$En1@h7}9d~>EWU(zenvwgZXFdofX_dW6>s~K*!Yi8Q!Sq}pa_n$)%=@9Ex&5iJW zltm8_+14MdE#R{{8MZ}jJwW6NPOL2nw&^feQ~2cNQ4_|lECGSTPCccy#wSrD-l8Gr z785dc5G)SR>snm7Rb2OQRcp@Ay@ZPZ$8T?YO<4R9Nh#$fkgwZA1$G`Aq9`VGACP_M zgyYVmZv9ZAkCkkd`bjeoCa;IAua9E|s!@bj@i33eKVs3}Do^ZXDR2Y?|6IRXNPP9* zsCcP`?dMhb?VQWeDwo{7-xVeYePZ9eWk!u+u)IQDB-IFyU|ag3jjm}L$-3i1MI~x_ z-G_R{e6q@{e`6@n_7X@$q9@OlBs8wcc&x9N!CD#n&9d;B3L#s))bW|1-8@8-umO+? zc`urQII2HwvPT9eO|ld83`~2=-39Q%91s|=?25iY{9^lnxpzShdV+k9V^p?X;juvq ziWEJ2lU}Jj+v__{&Ewq)Z{PO1It9Gb=nv%px)JPwfY90gXdqqD>DykxqK>$3;9Ixc z3(2p)IaixOkEpNjI-(&#TT~BzS`W_q54_vcTtTo4OQLU$Cn4Y0uH%Yk&*ygAQ+%K{ zi1wc2xl~}xg?@=%X1Xo|ISnWC+@NYc9G`b;k{fRvmyxxz-3GdS#Y zWI4L-P&#q)6VcZ@e~Q#1bBTYlQ0mzsLvgahroG00YUHTQX?Yj;y1Ts@7gs7zN%LF| z6xBzfC;X*s~_iplo|HGABO-1^I$&lu=N!TA%#1ZG+s)`;?^SEQO9_OYW5KZi85U84QnzV zId4KL(F7$lN700+xbk_8^Dij*$65)pEMe9zF6L4Dq-Hcdo|k>QCpA}r_1@c_!N2Ao zehs9qhtfUbI6xPS+spixBIjrLjUKNElaj8E**9A~Bflwy4E z#ryXq>8tM__mGBt{+*kxRG;Fx#l9g9}Qv!7iFd+2tsdOSq{yfIvgxg+oXK^-mC9OY{|De?(e~E!EHR<+8 z4eU-TvFM5;-O8`wo^_dhv+}Da)t(NiN)+DH321Xg`Pd|4@$BtZ!z8^ZzEBRn7gfH1 z#ngnIFaF)bv=R;uZ|VmvL=ISlFu}OoG11XO;I0u7%T{T26>pG1Ag;pH z8!vOcl3gS_TRPhentV6czqd_w*7EDZi`0A0L*#bz?$nAN|2gA&cFbwI6VjhaCzpAt!~ zcVHhs2B!E`X$I6)xWMIBQ4tNfhvU>Y^`IEUXA(==c(5fdQOAn~Z798B@=NA9@6O7Q zjn$uo<^w(Kz`j<9F9F+KXlB1;r_eO>G!+D>R~&FX%3& z%iOXl*q{PeD)`t_>KPk-octwzX3)bvzX-(a2Mwcp8Ua4^5@s`!lQ9P4pSMNWezZTa zvI!yln3m`Lg|CK-Yn;&?35y#VXeeaptEiP2J8iu;y$ea^ z=UrWj$CgZ5z+#XVjtKzMXTR~e7T0(xJ-S-|H23)L?VYx`DOTv*`JU&b9VE z*58@pqpMtC5RfSCmRe3wYv|YE_02#~MeAJ5YnH)J59|>8Z4+7w*%vBDrlC4Tt7WgA zZjhI0Wi@3|v~h=HqkYmZx~NF@JhVYUU2f#u=?S?; z0Nb;HokPg!!_F!9Y8uYpm*o7Ts<)s+nHAe>i*0}&gnp^yE5r|HZEpc%c6;p5qj<}7 z|McV1U`Ku?$Id5@iH5ebYnJV<#nZZ{JDyMv)B=@?&nE!(U(dK$aW0$G4=)?~O*Z^v zaT~sI$)UUJji5)Xm%Y*m_1F+gh{rD7;?;jI}W+7gC$ zRye`{NJk_VQT46%rY(v*(N|DgVt!(<5MJ%nE#3>R!t1D#(ArtISB=eUa^z`2%+2}w z+qI{{qW4tsF$KL*UPL*8-t)gf0>+r@-^UTpnLh>l{mQc^Y3|ZO4&U1Qp58zts`^Ev zVXN1C_osL33e#Z;UBXmxH1UMp%5bZNGi2wruk#0qyh-PBU+9WSu3-7q{_NhQ#hYZR zp>RSu(u~Y-*TX0OYocUP>mzOSy522>uI<_g$@ z2$4cFwcZPhQGj!@7g`KfR z%>sF@mD^HnFQ5wiYKk3iNKwY94O)sK2>PC4wPq@~u?(Jbeh$v!RdAz}Z59j{adRs@ zd1-?l!$X0SiH#XojMR_$Fm3aupL5qbE(3)v5oOD)#oRJ$@<0l4qNbnw z!ohe*Pr(|R$MWDn#V*?#LG^@Vui^7`4I#Jm|NQr_r^1CVGRdJHaU6}BlwBUfp;(0rMMH3Go1KAq(*De<&i zx5h5lhzSYY16Z&)4Cv5J$6tB48_#;IY)gsv=G z$*JL&w<8Kc>aSrM#U4L%>b!4{$#WQwQC=wxy*xor#&G#d#$!>r*tSV?(QiUqJ2SRPM5WV zCtHq^Go!1^|9@zlg8v_j^5p$;-fk8cNV*mD@#eITHh8xwO1FbCtYSk?nnn2J*y_mI z>6yV(kWqWAx_!)qi78m{@CPK&#%4Sgr?6RzCSM}g8%rIlnbh$s^yu#8jWGb_t^Na6 zR#p}aD%qC8JK3A3c2SIp-EfxUu@#8G>UJXV>U<&<4dCAzy*K%FG0&g1VzT;*(&4(Z zpR^C|C_4RvV+h9!8uYkSie$F6s-$L!j6w8_dpiC4A72eNU>u?z}(mtcaK_?j3 zdlJVezL##A%ir(b^_b`NT?dxNt1ngezr+a4QR=1Yq)RAHrdMf~o`nBBHP$^rU?@rg zx@yzQ=Vu&Z6cx4+>|c3EpRto@$)oo+DZCyrZJPwuo(Q4Fm_!aeU&ws`Bh4=N#g>5$mp!W&LvNsF8Sd`3>C@RuKorQsZsS0)p{pB=kM~eJ zIt=-_>zE>WngzJdRODKC5R7lPO$!DE0Txpy?5ms|&;7Lptu5maLSK8|pHHvmWXYB? z-1BofsL~$=rEersyv%wMpd-1t?c4*5MB~Dwi zhD@bivN%P8&nHYjs5`4MQ)Dd?f2XA~SH*E%3(6o%fsa8#kgu^2ILFuD6+i(yoJofe zHG9w)4|M{3k?C)-_Adr*D20rDSeKe8H#>jX&FDZoHCCN>YVV0acD(&cC+GBp;6ckD zn%I+;#9!)^Z9r6Pps4G0FDj~wCEtSe_ICLMH_Q8JxgG<@Rj9tQuh$)|8sxP-h~U>b z{+kcM`}wxA<)Pd6&Q6(u=8bb!)nX5K?W%HD3Uh4JcTMhnt#El%bx3ZfG{{9Mtb9e+ zgM%NfZn*JGav+9;OyQ%H$e92`IvcgqQgXcMx|O6vX)2bF31g;KO+$JcTMDD*@uN$qmzxhsA;2h{ZJ2g<3* z{vST*68(4Gf>{WOUOGF=cg^q8F`$A$QiXFy_5bh~ld~|ixtVzDsFbX8qaR%JgZCa< z(APU2OTZ^07kdvp2d$6!#(v7T)<|HBHP?{a z0CYqSa}cKcr5o;sP??`}q-A-@Ju9O6_fRc{6uusyu6Qd}T`FC3cp{KB&|2%9sD9!F z-NQJmSbgG%Ged(z&d2?T9Wn&J;mG0g#h^rHn|t;jSt24T!2cLXwbr?$@57h)_oI2sj1hB7n48> zeDmpNAcBK4>(Gr@Yu#W;n6j)J?OKdDdUF&}qS^I0s)G!XeVw8lndoMAuTVr+UI>~ zxxJoulQjO`2ZnLta6``mUa!Y$sRQ0KOp_tSSO4DK`c<(KZ1a_;pPQC1*Z_g+fmk;* z;g}VXWu)zY`_LKrFjdcgFqQhK7q8@m{3xa);qq0w)Lhot(F(6MHc3*@3s(|cQZ)u+p?WO< z_`@xez-2wtLNDFp1Oeli%;#T5>40iWg%pdtMV$4EfivQc)6IBM_H-CqP&U<0XQW$k z6&06Lh*LFHbgMpkExDzA?~O`+!?J27W--T%6CsqBs>ek-fcTu;LoS`ltmJ{0zS`pH zPUlzkY;dI}$8$}5QN~HcXre1MWgt6S;=no{km&d6<(}m&{^3X-}=YpQG2`KQ2Tg zCNtT*?ELV*q<>S(J$v9ffbb`p5e9@1f%@n?1i<4*3xVr#x`JOzK~Kak!k=fAH3o$f zuiB$gNPojriR_(Dk(bM$`bOxKvj>RV=27RN7^D)$kh%*y`qeX>@;9~;r$f7GP9weu zRR*$blqoIKq1OBOkyeAs{l6(cOvtKsgSehp);VP&%fHUIX1M(4|FyJ4hVvJ{L-^4) zvR79)@b|VzbDHa>`RS-|+qj@fPp!cSt-kv50 zHF^>6Nk8SM#f7U@3`qfbFLh)g;@_HO2Z~1KB{2?O0m7D$hcKBO(6je$w22NdK@NuM zOj*YIOO6PjuYSat>-K-}Y7U{_?%huHo2J0n-*@7x*sDm`(i@fSt^vWm(;4o<&Cgo> zfmG9=6NZ<+AB9#2$Px}0Sr+$2^4XrGJF)Q97R~o`UlrxYJi!-&ZB;yC1m!@c zQ``|JRMv61`W=uv++7eGALWAUaMvbNhwJPKHF2`L;e$T*Pb=Mn!fYT3H$FKzKAC5G zc+!g0jcV0!9oJlW|6=`=*`}3S&+M*KMzl5HWXxGgWJ$Oe*Y^yYNVK+;Y*Vx;POZZoZp3#Q8uEMFLx9${{*-i8l_ z+MF*3H&%ikWOXg7(}1|mX$on(EJc99X9c3-Vzp8Fb`=xFdL+>4`o+{ERHa7mb%mep zWP4n=qTg+ojH}NY{}3LqJV5F>26TN>#p;ixxJ1xPuigNEBY7>bOfbXt;7Nu696XO^ zyJyYfzKD+IxfPQgtjI>{-^ZJVO6eq9YMg~?{T7ai z062|D=&)tpk#kr~OrT8#_Q5xn+eBgBT4gN3o-#GVb-kxw_*y?|NlZj7RTQ~kft=4U z`*o~#J}2XW+N{CE&_jvpt?>^(UhpkiAd=_N-CBdb)&7pA4q8gSL!^oi3l|eJKJD)* z5&NW7edO`o(~VLKr&)y8PFs9=f2oYtUaO?c%KPXh#D6?xTwRexk%flYBS?*9eZexp z9uwbvR1PT?()nITSw2zvgn1^u+(SrA{cQ{XQo( zw=^qOGEw=9|6u5(R<^VICNe4{t!|x5FIMR>*9bX@&tA5zj9B-@ElRMXmDb;N@myuM z@b>UijNus}fPX$QTb$j3NMHw(Kc0Ao=HEM}ve+O`z=c;ScS~ z*4z_L;`F0Av2l-{uoMwGBCT=a=dThj*vX{~m1N^T?G+V1NtdN1b827Vy84IX5-zr3 z_IqE#%1&flmMUUmG#0pjQEYHE%&eWy-l_g}EKJnO@vpb>J6fz$9G*=FR?~PHn?-5} z=p((6fm$%~b|ZH&Zos)BGrQ@z!aHXc4h?|;pwN@lLAB$OtEMvNr5JaI$0M*-x&g)m z)+>hZxfz~7xx%3^BE^WKC+6h}T_z=&k3P)b9$B=&U#loq%>MsbON(#O=bMU-chJ}0 z5fZQ5Kb%cgzavQ;Wwl#3s1cN4f2nlU;?Ut78%R-#tg;+K$jtB>~2E_t~c=bkzQP`Bt|&b51ct@0iIqO0A?HhA0oNVYW-)Y4p}n*z{=Z3)C*9a^f>A` zN6Ef{B}laWb-e4_l+Vi@*ZHa>X8CU*buHFy1Yc#m^Re;>!|tjR;tsd)j0x#8P9 zP2fV`pRbms(Z&l%L)Eb29si>`&t>M9bakXr0o_e7)rqLvSF0#lm+XlS@32CG{;<4< zdMx8TEE(nUDhF0TXLp}{-z>n}>IC=rX%v&$aU=X76K#7z5w6@B>2yWu zA? z%wu9op=*;A#Du;)k_!ZyXCll0!bZTdWPyLd#88ss#A#l#z}n?i9>h!``^z9Ok`3ds zQ9X&Sp(MTIpBdW8*o)|wq>Swl{CUDRr_Q;GYj5e-O#+`MZb3JyJ@#i$vErv{>ac1O&G-vzenc}K4aj}5S>dfpGi?%0#G}qbv(A29 zVU5=drp**@84p-mg+=3KZx1Ys1${6Z$&;p^?Ew7>I`2ML7NQu7M2vM;yV&w4_xmGg zd#&uOg%P@SgP_~A*$85C@jqJe+D$>`U9VfC)6vk*WX5N#zXYw9h=aO*j_p^8g?%eEudH4_0(TUn zhKo`%B!cc>k5c6qSz$$zWZe?|oWEsCqvTE#qcOHvW0zll&;){Q?5Ls41OKnUPL*;} zlm8PQdt;W~F3k#lT!Z$Vfyu9bsZVr@e6{{Yfc0`~Y;&h#T<0C}R_C8UA*o`#Wxt}T zhkxF0WQV6eu+A6bGzdTr<>P-_M2Rvjfh0yhhL^Mh|yJn};e8`M?y>_VL2c z`K`;7rRq8V&dXX_Utw2jo)x+KEBdp$#}(ONzfy!_4GQY8rRFl7V1aw=aV+39eVL|y zG0fufv|M8ic9H_*0oC^s-wx^&G1Wb$9!0q(9Y#kYwOJ&GjS(KV2w~@# ze5NO^VVvN&_^9*FOd7TQBpd<=8CTV~(>?{hMI}v2->ENlTi@q#Rnf62ZVmdoOSnWM zddpD6w%qTZYh&Z|3QLA_(`J^;7!(plLpSlh(5XsdmODHhB0ouX_l7B|R&g*O>`%h2 zY+p}E+PdRMkWVAE=lXxc?hLr#r|4^WLvpe8@RDM@i;FvsA`f`D*bJMVR<;FYLeluC z$NtoaNg(bEBTJ#FJ!F1LPC>k((t|tv?zr^oZ(U%bs<^-2B~7A0SIYsS@xUl`STv}& zHtxs~yEDcnozvtAv_RU<1xtC~!i7Or=D{<8X&=b-oXMp5tO@&=l3~uCaJb2p(T#On zbj-;z5AUXC1U$m<@Ilhcoly&2|0XCeIWx~4R3ZJmh>y2s5^szjIU{!J`Im;7QhG^; z5sHGestTV*goK2Gtr?ms8n0%;qg`Z1IV9ws){;aHhC__IB51r*!nZH*1BnG{>+bHY zo0Exu$+cbCAZdNzRf$M`8W`Q)o6k@^$V|~aVg3F7<)A#{%$C1U!t7=v!AD($>@b&C zg)k~HLdzm?-GlmZ&zHTwlBd<`bhRfQ^C%Y$-1QTjfM)%eBE zVb2_-M>SX*tOWz%hN15NQ_oua2x%ol7XtVY+hOb4O|m33rH)4HG7$?ytUY3lxkp3M zkyNEVE6%lpxXJqn@F~9i&ok|pSnCpI>m5jnz{6_L`sjC^q#Zf~#VfMDUSzLmU|kYA zYfR^SDVie{NmP7Zcf*DJrvN#$liIVRWLE+5-&NQ#LLw?KE+ zHr}nVIg|Zky-sk`w&I1=Id;VrZ?sPxu&2%qd8d!Mh;)lqm`ff)hUJ;>Fp#1RqD<@Z zLTF<=q;uRQWuTG?HyJhm$m9r?>J&-XVV z6wIUS48IBe=!SJsi)PCNr|+!|m^(Q&Qrae_33$G1bO`fWFD_r%{LJWK&;_ClPpUo? z66&HGeBrM>>XXYE=ee`C>>=cHKU8w3I1cbD#f+)^Iaps|E$Ew#8>vGNACsY5|Dx5W zV48BbKoe8Vy+y}qK88+n;O=;Z=$e1(zSQb58#ECFS*(?;+YG&1N9p!}nv->9CKDKj z(EE*>qMWp~yuR2(fWUYtx<$3l$h^m?DIR~GCeaYCB7>vCRt}F-#SpF9`Z*%OJjFAP z_rOe#5G~JJ#J+;89_=@rYVN}+a1$?xP_GA&eoc3xFp#J!#p+-bL;`WwKED%aFltrk z(!X+7^1T$rxlb`g>g{8&{ZZyj<3=!tcgI|6ve4!}1fkENHZz)I&MQ+`_Rmww*CC4!= zV58?~KF96qOR4!jucWqqcwL+)HV8iGcQ6`u+?y{Ud3h(D!g1#jUlm;p+0^I}RCz+e ze?5c{tsEZ9yy+jnlAyLeKN@)^HJVc0NEBVfKah|5sB11~; zm`qX@DU#8;R^3AhBot$)IB%zPzlO}**5@m=#*&}%dYq7%uiW>}=c(naGq_>{I!J6)Wv+tf_^8N5VYZC=+ssTIoV-F)yBXMaH>DbXf zTwQ1kl~ldj$-nTgPiPy5zpy^REb(<^$EELZSE50;4;O1;S^i z)*(p3)G=plX%iM8?WlfrZW{kgz8&ea9{kU+ghm&j`}gucXIMi`gejn4@;c{Cb|4IETpwV)`K!Yw2MS7yaX!l4%by=+B|i! zsJ}MkvQ(!!>p640(6uZRBx+5JmovRw_rG|YN#ZaRQOCBhH0r}|@;>~9@2E-Lnu@Rv|DKTAr0}1letR2Ft zfV6!Wb$)ZKpErwZPUdg62I42!Oj<35ib(Obl;WD9l`@rIe%GGSQyjH|1qMiG6 zEys!+v#dI>d1#wW@Y(+${ZoxMbI>wCr->qmaS@V?p#JYBBE|CF^7lg+#A6gU=C7|J z4V>2$Cd^T*%q3HrR*@Uarx)*?&S7L4@46?mSrH!j20K5O7_hG`RB@_MFp!*6Qdmy> z!f~_(z5cgjzJ*Xr^x-jh^H{yVxAio%IVQ9-*!f|GxgVj2={yzcM>uPQ!4K z31SK|$yN^ZZ!#GLi@B#C5IuQ|{_L}rS1rHAOo)+iu58Q-)LQTEI+Yu5{Os0<4i-lH zp(0TFTaS*dgam<#H+qj7ry7JKHLy-|SY`_a=m(!zYHfzQ02a}r(*0!rTV0R63_po% zh?3o#7|G7)9KXK3W%Fz_*{|oHP;;m{);X?^Hn>a7R=<}6Yb)#G;>@mBtqTUaFZ+;8 z0-wGHh!?-P=cjhymdWMv)h^|$U;>}ZV&C8-Y{o3r%WVzAmnv9w5K^ccG%F99zpSoD z=qq8cC8Z0{n&xz=pK>VBpHh3H%=fb9NMw2RERNq6p~*bM840sQ!jRQ;9#c{)L)6g4 zwS}ufZH}&ce|#prPSm|GdFPAYKQ5I>3Og7XYq)v+1Xj9VeOs;|cW-T;$zMd<;n|#4 z-^qlay}QC_GE5~C&%rX7xrS}_S! zo>@nxvlj8+0GWHv)Wd7$O3#Ou^CtuOnX&;Qp0|@RCD~kWp1Qs9Ul4LcNvVF^3PkV4 z!R9zoTr9Vn2VlZNAm@H&K~HIdTUj>SnM;sFW!>n6!cz(MYCHdc*yt21oyFPdbfq{G z1;=DHQyM55sAi8Z-_Ynr2tVE)d;)#DC(-@0vRv#4t^%;)&_o^!lV1^3br|K6W-S|G zWA>|+vSJ75u&9Q?WsXFyg>Iznv2j0J>Lasu8zc#JDRp%m9VS`BRVoKjT=J57l^arT zo9>RB?X%T0a_Jl93V-kWICoOFd_m@ErO3^DvU}~-%z<0)!F`X4ckfBiF*Pf{GGNMr zan(aFeuzCnTq|HxSV552wfKu7<4*-Q0$Fi6oUUxB1aY|b;jhid@F>8jU{}T^}`X`~o^G>_DbegHXS7z~-6ytGq6BN$psw83ga<By&J&8?fYbVZRI-3uwRWVjE5kAFMRd+fY0>f#LTVo4 zfWT(LPQ3=pGXFxY@mLK;@#qcT_@~)e-;gw&tXnOz1I#VnK|DSlqW<6OVy9^w7{h0< z<}HjKFX~06#wboovSNU<{{Lc_6lkTZLLmZG~@h;({^pM?+ulC zbOsH+rvka@E4nzx160B5XfpJ>ly79D+1r}#><{~x#3J1gAn(hzEIRjda3o$1Lq-;> z*Un6lntZ*}rnaZA#9BuWe4&WV}VUpYN9IUs{6kO|rXez`YidHcf zN+VNf3cNeVqx?v@)t!P`WSAV`aNSJvz-V0|Ju#Pf_Eo7m&2wd~avI=WE*GU?ilANkw|a0= z)eNm>U$H{dx%OfZNiF0{yd6#zIf3du&-NjwvE=xS_EM?6IA5BSix;}zFbyBx*YC00 z#KVgNEQjN37kOdp?vn`J9pCsFXmH%A%Nz*x*St@kSC8aKO*BfcRHRzZ#a>YrpLr|6 zVSKd>A87SV#fpm?1O!78|HVNJ93GapJlV%Df(R&QeJ`I*MAz5lc29C?PwG?=xK6@} zp#(LTmv$aj>Qn7DvOC0Uf)KEc#tk-0Tj~_6$5m^8C88yd#x*gA<@DD|$`O@bV3~o& zD)2DN=M~K&Bp;5Y%))uB1_Lh+NAuGTd;MLA?zLIM5dJK~}wzOZ6h22S_xDZa)VLI_k1$akf7f)((G0 zuE z5#5P+HQ@>-TO)&0*yzJ0OHr<+g6&CCmTmo44^hrMRbl*ebW;BrDbZ*X>*&lyM zSDw+_QYIV}?SE;#Cd<8SA%2$m@Oa|*5|kpY8I_7yn|x*<370*piMsj0r{laf$({}P z{9y!GmP(iI7;n4Aq&1lPLulcik!_U`4HI*R%T3`3O$Zd_ST=b@`ylv-O7HB>g`}L7 zb9~K3t>_46+g=uLzU88_$bH;TRW-c}TIB-RXG*)($6h&m*kjY-NUuZ;3R^F8_p+Mr zBe0jtXVt5wT34RQ4&?e48%!sI2KcDDy%q;_IwzigFMG_LuYC(7abWWblx za8*fX7DGj6rkwm2isi5#ax`Q zQPpjWW6&IuX|KNntlXLC#fXGuqLTo)kxeWi@aRfC!bP=|!*$fIZ%T%`*j6@}BX?bv zeiik1J}M^ZY{KR^%u&;)NgBp+CK*fj;k^=Gt3j)5G!OJ|_x9VYJ9a9H7gtiKsT&?3377WFGQ0&PLNx=ok!W*62>njnvmCobTolDwe;oy6LoLOzVK9Ns|be3b^B7pqt8B%WmWM z+4|Ws!RK@m{?$TVocU*TL2)qG4|vO5>S1&KuKQ31ie3};f2F>KDLd&BdJ(j83JPvM zocXEa={(2FFpP@GGdZ>l%$cY7dY?~7`eX2%mF=gO&{utpYXzH^`Qe@2l9H>rSCPG(Hh*0U*a$Wvw+&HAQ+B zh!)J*zjxahBLYPIDN1ff8*|~XME%TVllVkg+#4iajEjsdLjS2yUB3C=ayO{8w?zFf zSbqn6X0S%>Fi0eC)hg2B-Jz2qVJnaVU|B|o&ISZ5t`#U&^x{Ff|U2llo2r!wZIE+f`T-jYwx z@ZS^7Dl0nrrQE7(RSgqZ=+?s{-+#fTzq80`sWIXdCR(VX)$rWgMIl6E{OegRdGHgs zZTgW678uR^-Sf#IG z)ioHg@VJmu_V+C?6iMI31MJyM#V-M^ff-l0TYX*V{_@Y!m_bbiY^7A7keD4|aD`qTj?;K%IUoa(L+t-G;5k9<;nUo4qi3LjkZ zrI`;WPUx_igbHm>;c;5}1~r$A8ZYhH&l!u#ckLA>aBQ}y&u-?`w*k$ut)BxHS+;wB zEKZR|F%`<U3kKq!Sc9k(8;XFB z+y6_pf+m$mnG)IofkcNu;Lh6vz?nK|3}%7=Y#@im;_&M|;vV+nIg;G>tMYFGa9eQk zM79Lh*U$Nm<2NQiM4S9h>87c8gHZWQ%g#EmMwd55G{JP$d=0VC5)2CPc5wtVZs&Z| zhl6>7E)-ZF*Je+cHG`!7&o>={Dajmx{#OHVSTsQ%DWbGkGP+k2(Ileb(C9SQ`(35` ziRd*p#tToZc3b4Ldy=_w=XTUd_qiA-Rni1yu>$h8RLj-%X765s#F(PP)iUoYzrD?! zNypoh;*N*@A63@X_CKnuG<-q_2`RmdJn3P!`$Vy?*GhBrg4-TSv5OB7@^D!93-=5h zkxV>Q=P3Kq0TyCaS_B@oCnfdZ7EM&b+xr`Ls@MB_Urzh1{i%vMn7?GH{Wa2jV&Bt$ zeE$|$&>sXiSGDZ30Hq~!F#O*b>TerHt{mpg#iJheF-J?ued04qHqtClakmhY_)Cq7 zF3EhL0qVd~cMjZ*3eTEMctR3CAIns;UfVc>x7a&6d2ohd!*HxG%N)n}r?{^+8gomd z5)PEgr{(hdOYugByp`Ehl=g3Bn`HKibN-mOTcDGxpnfbx|IC?zp7)NRj~-ei&GarL zKOpJg&JKxgWUMy}B0`b2o(KS(3O#wXeW2G7XphsDf0kwE1)g@C)SkL%8(V0N!zF%l z62(_q9Qn)Xpp8>gymmViQJ5&9?z5Aiu16N#WYE5(>v=KwJV;eC)8`%{&xuWhM)LCf zT~S83yE~AVTuI%o>pwjw=n?hDvNapfNvD-J>-4Lquf6!K))sL2An9$GY<4#5Iql#5 z-~N*;bJ;qVJIoZ4F;$o8sN8M1ePX%7R68b46?X*T zWn(!5ZSI7qY^QS{+A&vbZh6ZRR z`fT4PhO>}#bVP%8gX-=p2~G0FOaoP94xgrW2;R(VLJ8kG2QB4q{m2d_ELiEO1G`*9!%ZcHP&9^Q8b#IRAWWI;Rp@yBJC#o0OS8erwaD+5sGjD%4Pphg+RyLFr9+G=DzDr_NcE;9R zViI`)5CP<})!pHuy8AY%)3lVs2yj^^8zQB-#qAk@Zrt|#(o=64o0^y)b0ZFB*FWh^=eX)qEOjS-s+*c7 z@YvfL9kQvw6vyT*BgtiDavbMj;m4w`pd>Ls%4pc(#_2{T#;4EVEf@k16pJs$(tA<7 z`v^GM)c|E$ryCgB-xe0Ryv|{mZ4d~nG^F(nb%tA9g;>btPVe$$agq%j&Ns~9+sV6t zLD=Wc3wJr3)Nv;dt#->gw#MK8djN0-IoI;@dA2fjP;M?ST}{KN5s-*Fh?HGoq(My{ zKiTqmJnys?S%aU?i|9<4M*tor8b8Q{g3Zh7B16fD~v zd^e;9`KWfcx}vyi$0`B6k%Uq_{9YA=-%Tx!c%mJD3&9h<{9b58KE2ToL(UgSX*oAp zUF>-pQg*OiSPTjZ47)+OWL#_<60~k>C-`J=nz{48hJh8mUnh=f_x2@5%>5zSQM;0t z!8v}v=nDKHKkhzWgC=MDG}$^)2!V4z(M^Roy!Wo6{v1#sk+Bam@JG7Y)6p}I9+UcM zIJG(VsXG?z4qA&aL04oxXw(+SMl5$K*|%AcWw^c8inLn#L>$uV zC&+F0Y~2sO5#@VX)EUKj?9pI|V@xo+xthxS1(Qd?rAPknLIp_4>WozVquCn64L0|bxD2hl^s}?YfY>Z2b&x@Z6{MHn*^6=A3vFZY(3YPC#X;@eH;gEkPd|jibYGIb&Y zg5wVmndt*T+Q1i!7%hyH2d|&zV!bZOeEie`l){P9djI68=7E`rO~aMs9c-EGXJ^Xp z-SK-#lgEZ2OwM%4PXF$D|?4hVuE2r?kZ9+W{I%^K%oYp1DKc#fY_AN@wZo)>~32!bHa zWa~XoFDu#vcQ79`{!wo>`(}eNg3L>*!80Tv<~;fWKOBcAX#bL&f#rPUsx&p0 z>8rDDopyWr@yYu(e+GqzR0@;J0oO43mt9ktbI9fVv&ft-{*M|{1VIp_E%;pSU&yax z-G5|T$)|2~i?%=ZZO|iI178sAihh>-^L$%;9UusTAc%|(5pwtG*y&{m-*GlWltci+8wpnrnZz`0<$e^@CYsKm6Fl`|Yi%w0>gh zvUH!BcYaZLd@gkQPB0KPK4K}`Z68d{AfUXCi+ui~z}KYj#fQ^yap)qFBS@BKbI zr)%)(H{S~D&cL@}1%CFzcKGtx*zxZQ-XFmEIrsrP=n0daW|D3rWacrdBrzdwO?Y2%v_u%P|F2b&hQ;D#u zKcD(2<>S|DdYM4kOCNQoeDw^kNX?L_Uf#6J3H@Hj;&N}e#t$Cb0^hoLK=R9TCp__; zq3GXFehMGoJPiAu9_sq=5CmyIMCkkX`Pp6%BjuA{z^B_^hwtu+-v0K}ldvn(fV=<2 z?+^UV58&(MzW>;9*mvL>{OVqr16%Y%#s-JsiFiO_yWoTGQ?1^KCl92;o$-9?A@%Vi zdCg3@&ElrCko+*3!hGUX1>(nskm3h{!V)bn2~r2ZxRv;xFH{@kC55>-@)}R#=jYM$ zSj!bZ_%dv~77lzZdG*M%L;^o~4g9dpTE1OU?=W|C{`@s<@yJ*-r3@K!evmKpaVl|< z)n)1}QE8#Y`RItn>(E?{N#VAU&o$RxD4G7*UxQ>na#J}$e<41PCR_wTDu+b%5}|M3 z$uqqkN+l4tmrqw@TZZ5p+l4AB#Qh#@e6&bEnq%Lag_)B8e?c^cAKiol;_+%iE+VC= z>RPAq>m{<_51RKc{$CVpr1d@4AeHd}>QSy!#29tH5S`F1dyq7yp_ASehz)q=~I%hmiIZ=~?+%B* zB#C(=E8vkE+EYKe2)}xAJ50<(b-UjD9R2(d1hL{bzxF%59zq7s+XsL4=Hc+(_f;w& zeQV-%*ah!v_Sgv<|BF~fuF-eo{15=mykU&=OlEXo@a}`B&hbE`>Q{NLx&F0{~sPnZw%*Vu4?-$i)>C2qzp$Vb|?SW zb-g0}$%b3+!LvX7Ve-E2>&N!KM@^_>w_)E$r#bCh)nmB~?>#vM-w1`c-H$c<9z4GF z*O_(cp>;c>e}uVVR!cPX_8CS~W)Y`KiQgfDAP9o=5^9oVCR8L3Te}6nb^?(D+G*-V zx<=cdT`bb?reFj?kbZ*%R*)1`7nzS7b#sZLZ4o(a?dI3;(msCf=~M($W#JFbRY}=J zQ>pU!sy;j#8LY+mLN6ZK%Vec!ZknwmE^Ep~5ClP*3GrLr{ni(-+uXFmWA20RUE9~i zBUZ^;Hg|3O>a{w!11XJBF!FuYFu#rda;Rfe-2(+f1VIpF5Kvj{$_aj|#j%7`pb7#g zjpM>?UijDKhs*^TDBgJMa$`)+ndA}dbd+PT3H~r{*KW;pq^(zeZb{To_M)TjOMbLj zhhJfva7L=&nq+$-*Qx_-5ClOGq_z0WQJ<{4Ub0Fu83Hwa4M1jt=l@ql%E~aCs(TA@ zIPK-rSE`1Om_(4KL!$o>#FqDOW#8lV(?Zx2tiZv?k1pIQg`dqB92b4}$kKX!1e=a& z`i;|@Jmp1bDHS+_oR2}%eFPB%K@gdlTJntzjTrf8=25gsEeiZoWPgnQHkGDeXX{8 zbJVKsK;4i9qNpDD)+8{v13?f3=?BE9-X1=y*Q9aMExhg5e5iaBr5!dWKyh+gQO;O7WAA*biP15 zrxp~x5ClOGOTJiK%+(QJzvoW>JbDwZOHDHj&&_A*>e`3U7Hj#HdW!;1)X&ecpX}R`=5@U zy@rL>lkIV#+vxT{Uv$$)FNTg&Sqpqx#N)DhzL4Xsk!@l5lDzl*_!>yBx56bHgH551 zgj`|u#9xjSkGom%g}+wGcv)!^!OB_KvwjbpT`6W*4}wLQD6yX_!Quq0U%wvK?>P&1 z{qkebop;$eDZ=8!`sh5uvghoIvfawrJxRN?Ou%LTE}Y$y)=ez3oS7@qdb*9xo#B|d z_KtIn^e=bs-h~%lcmY29>@!2lI9FVFZx8%6@YlY~)FlOi@uOXD4YFe7TmEH9uE!&$ef>6HBXSkgqar#iH95mrf`nkfK^Y+4;2Jc3Kvu z3MH?qfDI&%_~o+rvSkQ@q>!hC1hFt!^vkHeafrk9O8M=zIl9*yItEuBT!CXl%~$Ud zVe`b;9E{K3hX+@VfyZIefo0@cv5E3_ReH>QSR zcTNUp`jr-dGe%% z@MlL=_tT>He@O@WQX#!qLsau1)(@`W*H&BwueMV_JxG+QVx2)>nzYIPbVKT67`6=c zdJJw5!SdJ$`~D5VmSMa7h%h!gxeZ=Ax+(nnj=%`(W7FfXjrFalht)fS6+Fgl<-HdQb|x>QY>%ZyhW(Abx78)E1Y)CcKp38D(hP71V0;d zvP(f~h7(dfVsaJCuIAn4CR)){OQ`G`XwY>*%!#Q9Fss#~=FEx3OnvhIA~AKQrb6D_ zs4@{o=F!v?xfle>dUl+Ni9K4gWu||kf!Z(zb8sCdcWjW3Lp&Dim$jv)%ROgdg&V_} zyV-u%JI;yC`7UOzkrlXoeH%Q!$>IZDT7YG$?elW=bK|4>`c3=cAY6b;tI=F8%#Fk7 zUN*N`^YHP@nz>#%mzv#Rb1Es!DqSn;4xyG0^n*^SAwl!+b8Rd@2M#*Ia)M`q=l5j>Fu-QuKxh z4Z{Ez$jTqGdg%hl)j8o}e+uCI{rhl#KHPt70~~?#k?Amee|>UR5L{xRY{vyScq2A3 z&I6pW_+Rz_01GHdL_t(Kx2mjX$64M&`kjH1E2m*{+k9fqoEgdAREd^qI_zK^hN-#o z%CRBi82;fOJvh2V%$j7(#B>QTzjPFaxSO`;?alQ2U`CdQ%x+Gs&zC#?QaC87FegBS zvva4G;o$yMLS(|{hK140xMlU8Hv~t|hoWC7$Zgm_CSsZ%llHrJ2V6LKBboo%eX6cfFHN*cpl=%2Le?Ec`>Y~wYq@X{v1%{XJPz~48LMSx6bdX4X;rkUJavv{5 zq=bw8`B*sGJ4zS-q#b>~40l$AU5FWxY0QYgF*XO+i5*c@A0H>_myC06%&0ljqBs^6 z7()SUj1zW>V>u_b=L@Np?bMbViD0EY=haJaVcSa?zeDE#cYkytY@cd#W%Z=*y+}srk6bJP>pBOIGG$q~9Sz-(-5uo4c6qr*n~o8CRL8uJJ@sPIAN)$I_T=efP#MpQEhr8IB(q#xL*G`ta6IE^!dz z8!7NHsCn-QTv~k`ZZ98%APR+tfD5P8nx16_G>#Z4w`TJSHDpR88^W*Dbfe2wk z^7_>~MAAQ>Xgi5Ecx+(_rjM69OL7i(mcxHW%k7W!2Sm$f6#7(9t)Ak$s@s-p+P=q> z@-$}5igC0~W^WU9 zU&iF=1PvmX%J>R8Sm=v^kI)Ye3%UkAy z#l_T*lKSjLff%a#O^r~qtZChHHgJHTM{BbaB`x#wNTm_h>kogHBg9#D#-g@h; z;zC~=7^L7x*?lqATz0Z`T%ur!iZin?D<;mkh|AQb1=Opig}(~bsF>tYR$m(3BE`0; zE<)YDY#-BH`d{h`$(5ulM7SbF@fjw)RQLB}V;rLJB++OBGHv-3}mSJq~ zxkUKk_a#xTEV!fUc@SA8skE0Vxa#^L^=$o6 z6|V2($2|YtmdPC4nqxa=+1jJK>SZ#GbPZu+wwWt~tfL#hOg78OCmO-lgU7xjKbklQ zULfS(gV-!9G)X$n_i2J}=WOa!z&#Bldk&sZ@0Rn=%2KHlnoaxEExd?dLV?b@b%xzd z4)3P%8@}ACd2n3Je)88(!=XcmocbsNpESB-b3;QA1nCm=$sM!*R(wa>`*4Z-H?`Q9 zlI?rqdM+N;as5=uN4EW%&QsP;ypPrS$8_Jvuf)9aQ(=_*Oo#9Jk6D{VTs27D$$J)U z2#(3By;!hQUZAE&+PEgmHarq2o`*n~2e19kp$LK?jltyZE#1dr{gJ2Cf}AT(PH+pr zC?EtGrH-s0{r(-pIVa-_(te8wlcse_Om7oCe;1NhTLDuo_%X8~`yW9#J;^dBHE>B5%s7E0KZ4 zd?A{C@zoraj35YtR7NH?pbN+1afcR1zu1BTUls&G5Tt*x6+BG-$}&xsPOvm-1+~ch!Hw&hMdk^~cx}g3X#9y;x%fGE z-^UMWH~hs`;#Z!@FT~WNkCtErL6E*hCj6xSY;qyZT43UvNlewUc!Esd))wWO^AL(c zU%|ClEBLiJfns$q(_{yn10#A48Gl8Rljsg$c>(gyuSvdY?v*&V65)* zAFV3gi=vXe{I}0uxbLtXvd0z2AsZr1mgGqVKKAN^=G6k#c@*`5KoA5$)OgXu%ptuy z`|*9&kC*PW-WoyP$Zg{mP$s9CQ^>LLddjRGT$l(~7i6pGI;GDgo0S*Rar0x)j#KpC zi*`~SA$gnh>#t?@$sI3#&1w8(g3MrR{21-f_L&8j^uq1-=Sse_0skc`^NN=uf*?rG zi8N)Ra2NZ42TYM7Zm%XdPw4|#p%$yj zQM*RWn5R#%k3nV6HP&~Jfl`RhkvozDl+e_i>rejNm6r-ID9v^YsHQVQEzDFKruWG&Y9FA}b2|s1==j zlaGN>=|}A9|Y+WQ0s>@j@bH>u7N?6X&+QVNuU*2*f!M~ zM7H^gZL;)t{C=$7GYBZktxRF5kYJ?2E7GN{`1+f%f@Z`Yb=ye(_UNlsIu{qZBGuPq z&+itfVM7qa1rz|0CQ)aUZ57o0__QMF(3-OT58ktSn=$W$i^4a9f3H;P0rButX?&Y; zlR=QWU|K%}X%w0iE_p#nuJy|bM2;y=gmLiwn_?7<-RI&eijLJ)0I?7L$c>GAKX`(l zfu{UQK@bFyf!aQ#F<6)`RRN>5`k8Bd4V^GN9?m!A(RIXX{1%bFDEL)O-B0c?`v~ff zV~Scv5Tv=F(1$bznRZPgbY!01VbVxdsd%wXAyc?pmjICJ1Wy+RPVjSnGKS+XhBiF1 z20;)6K}umTw{{(!uvxe-MgI)fJcU&u%dyB&Sn%_rpdH1*>h-kh4{eo66)el-quMS* zmi>pvHIJQ(DjRd?Aqax>1#GF&Xuza-?KD1qI{Cr_^|quRU!mozNZ=AJZn-QdhW(u_ z&8Gf+jlkD#A3q{^kQ1v%h%iRw5F5U(32N;0kQ4yAlspKf)4@4H5TpeZ(RlSaraZc? enz5?1rvDEBl0r$QU(tL30000=jlGc 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 E02G~l&;S4c literal 0 HcmV?d00001 diff --git a/imagaes/6.png b/imagaes/6.png new file mode 100755 index 0000000000000000000000000000000000000000..29f608af3373a5339c3717598ff55a7694fb2866 GIT binary patch literal 28120 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 HZRmdk5m82p literal 0 HcmV?d00001 From 90fa477f6a3223809e7b8dd9f612391843d9deae Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Thu, 21 Jun 2018 14:49:45 +0800 Subject: [PATCH 32/74] update --- src/motion_control.c | 6 +++--- src/protocol.c | 2 +- src/uarm_angle.c | 4 ++-- src/uarm_common.h | 4 ++-- src/uarm_peripheral.c | 39 ++++++++++++++++++++++----------------- src/uarm_peripheral.h | 1 - src/uarm_protocol.c | 42 ++++++++++++++++++++++++++++++++++-------- src/uarm_swift.c | 5 +++-- src/uarm_swift.h | 4 ++-- 9 files changed, 69 insertions(+), 38 deletions(-) diff --git a/src/motion_control.c b/src/motion_control.c index 6636cab..cceebd8 100755 --- a/src/motion_control.c +++ b/src/motion_control.c @@ -71,13 +71,13 @@ coord_effect2arm( &x, &y, &z ); // calculate the effect offset coord_to_angle( x, y, z, &final_angle[X_AXIS], &final_angle[Y_AXIS], &final_angle[Z_AXIS] ); // calculate final angle - -/* char l_str[20], r_str[20], b_str[20]; +/* + char l_str[20], r_str[20], b_str[20]; dtostrf( final_angle[X_AXIS], 5, 4, l_str ); dtostrf( final_angle[Y_AXIS], 5, 4, r_str ); dtostrf( final_angle[Z_AXIS], 5, 4, b_str ); - DB_PRINT_STR( "final_angle: %s, %s, %s\r\n", l_str, r_str, b_str ); */ + DB_PRINT_STR( "final_angle: %s, %s, %s\r\n", l_str, r_str, b_str );*/ if( is_angle_legal( final_angle[X_AXIS], final_angle[Y_AXIS], final_angle[Z_AXIS] ) == false ){ // check the angle //DB_PRINT_STR( "E22 position cnan't reach\n" ); diff --git a/src/protocol.c b/src/protocol.c index 9084676..f225ed0 100755 --- a/src/protocol.c +++ b/src/protocol.c @@ -163,7 +163,7 @@ void protocol_main_loop() if (sys.abort) { return; } // Bail to main() program loop to reset system. report_parse_result(); -// check_motor_positon(); + check_motor_positon(); } return; /* Never reached */ } diff --git a/src/uarm_angle.c b/src/uarm_angle.c index 306f2b0..64b357e 100755 --- a/src/uarm_angle.c +++ b/src/uarm_angle.c @@ -203,8 +203,8 @@ void angle_sensor_init(void){ uarm.init_base_angle = calculate_current_angle(CHANNEL_BASE); - -/* char l_str[20], r_str[20], b_str[20]; +/* + char l_str[20], r_str[20], b_str[20]; dtostrf( uarm.init_arml_angle, 5, 4, l_str ); dtostrf( uarm.init_armr_angle, 5, 4, r_str ); dtostrf( uarm.init_base_angle, 5, 4, b_str ); diff --git a/src/uarm_common.h b/src/uarm_common.h index c688ada..1f0aee8 100755 --- a/src/uarm_common.h +++ b/src/uarm_common.h @@ -38,8 +38,6 @@ enum uarm_work_mode_e { #define DEFAULT_PEN_HEIGHT 43 #define DEFAULT_PEN_FRONT 69.5 -#define DEFAULT_GRIPPER_HEIGHT 51.5 -#define DEFAULT_GRIPPER_FRONT 105 struct key_param_t { enum uarm_work_mode_e work_mode; @@ -65,6 +63,8 @@ struct uarm_state_t { volatile bool cycle_report_flag; volatile bool run_done_report_flag; volatile bool run_flag; + + bool power_state; }; diff --git a/src/uarm_peripheral.c b/src/uarm_peripheral.c index 5ce9d49..d439e78 100755 --- a/src/uarm_peripheral.c +++ b/src/uarm_peripheral.c @@ -391,6 +391,7 @@ uint8_t get_limit_switch_status(void){ uint8_t get_power_status(void){ uint16_t power_adc_value = getAnalogPinValue(59); +// DB_PRINT_STR( "%d\r\n", power_adc_value ); if( power_adc_value > 100 ){ return 1; @@ -399,13 +400,10 @@ uint8_t get_power_status(void){ } } - - void check_motor_positon(void){ - if( sys.state == STATE_IDLE ){ + if( sys.state == STATE_IDLE && uarm.motor_state_bits == 0x0F /*&& uarm.power_state*/ ){ float current_angle_l = 0, current_angle_r = 0, current_angle_b = 0; -// get_current_angle( sys.position[X_AXIS], sys.position[Y_AXIS], sys.position[Z_AXIS], -// ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); + coord_to_angle( uarm.coord_x, uarm.coord_y, uarm.coord_z, ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); float reg_angle_l = calculate_current_angle(CHANNEL_ARML); @@ -413,25 +411,32 @@ void check_motor_positon(void){ float reg_angle_b = calculate_current_angle(CHANNEL_BASE) ; if( fabs(current_angle_l-reg_angle_l)>0.5 || fabs(current_angle_r-reg_angle_r)>0.5 || fabs(current_angle_b-reg_angle_b+90)>0.5 ){ - char l_str[20], r_str[20], b_str[20]; - dtostrf( current_angle_l, 5, 4, l_str ); - dtostrf( current_angle_r, 5, 4, r_str ); - dtostrf( current_angle_b, 5, 4, b_str ); - - DB_PRINT_STR( "angle1: %s, %s, %s\r\n", l_str, r_str, b_str ); - - dtostrf( reg_angle_l, 5, 4, l_str ); - dtostrf( reg_angle_r, 5, 4, r_str ); - dtostrf( reg_angle_b, 5, 4, b_str ); - - DB_PRINT_STR( "angle2: %s, %s, %s\r\n", l_str, r_str, b_str ); + memset(&sys, 0, sizeof(system_t)); // Clear all system variables + plan_sync_position(); + gc_sync_position(); + uarm.init_arml_angle = reg_angle_l; uarm.init_armr_angle = reg_angle_r; uarm.init_base_angle = reg_angle_b; beep_tone(260, 1000); + uarm.target_step[X_AXIS] = sys.position[X_AXIS]; + uarm.target_step[Y_AXIS] = sys.position[Y_AXIS]; + uarm.target_step[Z_AXIS] = sys.position[Z_AXIS]; + + /* angle_to_coord( uarm.init_arml_angle, uarm.init_armr_angle, uarm.init_base_angle-90, + &(uarm.coord_x), &(uarm.coord_y), &(uarm.coord_z) ); + + + dtostrf( uarm.coord_x, 5, 4, l_str ); + dtostrf( uarm.coord_y, 5, 4, r_str ); + dtostrf( uarm.coord_z, 5, 4, b_str ); + + DB_PRINT_STR( "coord: %s, %s, %s\r\n", l_str, r_str, b_str );*/ + + float target[3] = {0}; target[X_AXIS] = uarm.coord_x; target[Y_AXIS] = uarm.coord_y; diff --git a/src/uarm_peripheral.h b/src/uarm_peripheral.h index e30ff67..aa99471 100755 --- a/src/uarm_peripheral.h +++ b/src/uarm_peripheral.h @@ -39,7 +39,6 @@ uint8_t get_laser_status(void); uint8_t get_limit_switch_status(void); uint8_t get_power_status(void); - void check_motor_positon(void); diff --git a/src/uarm_protocol.c b/src/uarm_protocol.c index 104861b..0abbe74 100755 --- a/src/uarm_protocol.c +++ b/src/uarm_protocol.c @@ -176,17 +176,30 @@ void report_parse_result(void){ cycle_report_coord(); } - static uint8_t per_status = 0; // Date: Thu, 21 Jun 2018 15:12:05 +0800 Subject: [PATCH 33/74] update --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 610857e..8cde5bf 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ -# Swift Pro Firmware V4.1.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.1.1 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- - +## Update Summary for v4.1.1 +* Fix cmd M17 bug +* Add out of step back features ## Update Summary for v4.1.0 * Transplant Grbl framework. * Optimize stepper motor performance,improve motor speed,fix motor shake. @@ -48,7 +50,7 @@ not support currently **P2240,P2241**. * Open XLoader and select your uArm's COM port from the drop down menu on the lower left. * Select the appropriate device from the dropdown list titled "Device". * Check that Xloader set the correct baud rate for the device: 115200 for Mega (ATMEGA2560). -* Now use the browse button on the top right of the form to browse to your grbl hex file. +* Now use the browse button on the top right of the form to browse to your hex file. * Once your hex file is selected, click "Upload" The upload process generally takes about 10 seconds to finish. Once completed, a message will appear in the bottom left corner of XLoader telling you how many bytes were uploaded. If there was an error, it would show instead of the total bytes uploaded. Steps should be similar and may be done through the command prompt. From b42f66e939b4b5ef8f9791528c7113ca12c23188 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Thu, 21 Jun 2018 15:16:13 +0800 Subject: [PATCH 34/74] update --- hex/uArmPro_V4.1.1_release_20180621.hex | 3577 +++++++++++++++++++++++ 1 file changed, 3577 insertions(+) create mode 100755 hex/uArmPro_V4.1.1_release_20180621.hex diff --git a/hex/uArmPro_V4.1.1_release_20180621.hex b/hex/uArmPro_V4.1.1_release_20180621.hex new file mode 100755 index 0000000..90bf5d0 --- /dev/null +++ b/hex/uArmPro_V4.1.1_release_20180621.hex @@ -0,0 +1,3577 @@ +:10000000CBC40000EAC40000E8C40000E6C400005D +:10001000E4C40000E2C40000E0C40000DEC400004C +:10002000DCC400000C94FF51D8C400000C94BE4105 +:10003000D4C40000D2C40000D0C400000C94253603 +:10004000CCC400000C941F25C8C40000C6C4000026 +:10005000C4C40000C2C40000C0C400000C94704BB3 +:10006000BCC400000C944C2A0C94AE2AB6C4000008 +:10007000B4C40000B2C40000B0C40000AEC40000AC +:10008000ACC40000AAC40000A8C400000C940F3641 +:10009000A4C40000A2C40000A0C400009EC40000CC +:1000A0009CC400009AC4000098C4000096C40000DC +:1000B00094C400000C94DA3590C400008EC4000093 +:1000C0008CC400008AC400000C94A53586C40000CE +:1000D00084C4000082C4000080C400007EC400000C +:1000E0007CC40000C7196D246D24D519EA19FF19C5 +:1000F000141A6D241D1A6D24301A6D243F1A491AE2 +:10010000A11A6D246D246D24581A721A8C1A372383 +:100110004F237E234F238223982387239123BC23BD +:10012000C323CE23D923F823FA23FD23FF238128D9 +:1001300087288A288D2892289A28A2280F290F29F3 +:100140000F29AA28AD28B628BF280F290F290F2963 +:100150000F290F290F29C728D128DD28E728EA28E9 +:10016000F328FC280229084AD73B3BCE016E84BC09 +:10017000BFFDC12F3D6C74319ABD56833DDA3D0001 +:10018000C77F11BED9E4BB4C3E916BAAAABE00004A +:1001900000803F072C7AA5BA6CC590DA3B9365FCCA +:1001A0008BBC53F810FD3C5692834DBD879D3AB6EB +:1001B0003DCBC9BF5BBE73DA0FC93F05A84CCDB2BA +:1001C000D44EB93836A9020C50B9918688083CA69D +:1001D000AAAA2ABE000000803F0000407A10F35A0D +:1001E00000A0724E18090010A5D4E80000E8764877 +:1001F000170000E40B54020000CA9A3B000000E123 +:10020000F505000080969800000040420F000000B5 +:10021000A08601000000102700000000E803000095 +:1002200000006400000000000A000000000001005F +:10023000000000002C76D888DC674F0823DFC1DF80 +:10024000AE59E1B1B796E5E3E453C63AE651997683 +:1002500096E8E6C28426EB898C9B62ED407C6FFCBD +:10026000EFBC9C9F40F2BAA56FA5F490055A2AF7FF +:100270005C936B6CF9676DC11BFCE0E40D47FEF508 +:1002800020E6B500D0ED902E030094357705008070 +:10029000841E080000204E0A000000C80C333333CF +:1002A000330F986E12831141EF8D2114893BE6556F +:1002B00016CFFEE6DB18D1844B381BF77C1D901D52 +:1002C000A4BBE424203284725E228100C9F124ECB4 +:1002D000A1E53D276364696E6F70737578585B00A4 +:1002E0000D0A4772626C20302E396A205B27242762 +:1002F00020666F722068656C705D0D0A000D0A0043 +:100300003D00244E005D0D0A005B302E396A2E320E +:10031000303136303732363A005D0D0A005B544CCE +:100320004F3A005D0D0A002C005B4739323A005D00 +:100330000D0A002C003A003330003238005B4700D1 +:100340005D0D0A00205300204600205400204D3847 +:1003500000204D3900204D3500204D3400204D3314 +:1003600000204D3200204D3100204D300020473913 +:1003700034002047393300204739310020473930D5 +:100380000020473230002047323100204731390009 +:1003900020473138002047313700204700473338A5 +:1003A0002E004738300047330047320047310047BE +:1003B00030005B002424202876696577204772622C +:1003C0006C2073657474696E6773290D0A24232089 +:1003D0002876696577202320706172616D65746588 +:1003E0007273290D0A244720287669657720706189 +:1003F00072736572207374617465290D0A24492033 +:100400002876696577206275696C6420696E666F0D +:10041000290D0A244E20287669657720737461724D +:1004200074757020626C6F636B73290D0A24783DBC +:1004300076616C7565202873617665204772626C01 +:100440002073657474696E67290D0A244E783D6CBB +:10045000696E6520287361766520737461727475A6 +:100460007020626C6F636B290D0A24432028636837 +:1004700065636B2067636F6465206D6F6465290D2C +:100480000A245820286B696C6C20616C61726D20A5 +:100490006C6F636B290D0A2448202872756E2068E2 +:1004A0006F6D696E67206379636C65290D0A7E2024 +:1004B000286379636C65207374617274290D0A2155 +:1004C00020286665656420686F6C64290D0A3F20EA +:1004D0002863757272656E74207374617475732904 +:1004E0000D0A6374726C2D78202872657365742010 +:1004F0004772626C290D0A00290D0A00206D61788F +:100500002074726176656C2C206D6D0020616363D0 +:10051000656C2C206D6D2F7365635E3200206D61FC +:100520007820726174652C206D6D2F6D696E002CC2 +:1005300020737465702F6D6D007A0079007800204B +:1005400028003D0024002028686F6D696E672070C8 +:10055000756C6C2D6F66662C206D6D290D0A002060 +:1005600028686F6D696E67206465626F756E63657C +:100570002C206D736563290D0A2432373D00202835 +:10058000686F6D696E67207365656B2C206D6D2FCC +:100590006D696E290D0A2432363D002028686F6D82 +:1005A000696E6720666565642C206D6D2F6D696EC0 +:1005B000290D0A2432353D00290D0A2432343D002C +:1005C0002028686F6D696E672064697220696E7695 +:1005D000657274206D61736B3A002028686F6D69D5 +:1005E0006E67206379636C652C20626F6F6C290DD8 +:1005F0000A2432333D00202868617264206C696DE2 +:100600006974732C20626F6F6C290D0A2432323D9D +:10061000002028736F6674206C696D6974732C20D8 +:10062000626F6F6C290D0A2432313D0020287265FB +:10063000706F727420696E636865732C20626F6FCF +:100640006C290D0A2432303D002028617263207429 +:100650006F6C6572616E63652C206D6D290D0A24C7 +:1006600031333D0020286A756E6374696F6E2064B3 +:100670006576696174696F6E2C206D6D290D0A2491 +:1006800031323D00290D0A2431313D002028737498 +:1006900061747573207265706F7274206D61736B15 +:1006A0003A00202870726F62652070696E20696E52 +:1006B000766572742C20626F6F6C290D0A243130BC +:1006C0003D0020286C696D69742070696E73206923 +:1006D0006E766572742C20626F6F6C290D0A243659 +:1006E0003D0020287374657020656E61626C652022 +:1006F000696E766572742C20626F6F6C290D0A2406 +:10070000353D00290D0A24343D00202864697220FB +:10071000706F727420696E76657274206D61736B90 +:100720003A00290D0A24333D002028737465702097 +:10073000706F727420696E76657274206D61736B70 +:100740003A002028737465702069646C65206465C4 +:100750006C61792C206D736563290D0A24323D008C +:100760002028737465702070756C73652C20757308 +:100770006563290D0A24313D0024303D005D0D0ADA +:10078000003A002C005B5052423A000D0A00496EBC +:1007900076616C69642067636F64652049443A0040 +:1007A000556E646566696E65642066656564207271 +:1007B000617465004D6F64616C2067726F757020A5 +:1007C00076696F6C6174696F6E00486F6D696E67F2 +:1007D000206E6F7420656E61626C656400416C61AF +:1007E000726D206C6F636B004E6F742069646C6572 +:1007F00000454550524F4D20726561642066616925 +:100800006C2E205573696E672064656661756C7423 +:10081000730056616C7565203C20332075736563E9 +:100820000053657474696E672064697361626C65F6 +:10083000640056616C7565203C203000496E76611D +:100840006C69642073746174656D656E74004261D7 +:1008500064206E756D62657220666F726D617400E2 +:10086000457870656374656420636F6D6D616E6457 +:10087000206C6574746572006572726F723A200044 +:100880006F6B0D0A000D0A00486F6D696E67206678 +:1008900061696C0050726F6265206661696C00412D +:1008A000626F727420647572696E67206379636C1D +:1008B0006500536F6674206C696D697400486172DD +:1008C00064206C696D697400414C41524D3A2000BE +:1008D0003E0D0A002C4C696D3A002C52583A002CFF +:1008E0004275663A002C002C57506F733A002C006A +:1008F0002C4D506F733A003C446F6F72003C43685C +:1009000065636B003C416C61726D003C486F6D65C6 +:10091000003C486F6C64003C52756E003C49646C4E +:1009200065005D0D0A00526573746F72696E672011 +:1009300064656661756C74730050676D20456E6404 +:1009400000436865636B20446F6F72004469736194 +:10095000626C656400456E61626C6564004361753C +:1009600074696F6E3A20556E6C6F636B6564002717 +:100970002448277C2724582720746F20756E6C6FBD +:10098000636B00526573657420746F20636F6E74BF +:10099000696E7565005B000011241FBECFEFD1E2C8 +:1009A000DEBFCDBF00E00CBF13E0A0E0B2E0ECEA98 +:1009B000FDED00E00BBF02C007900D92A23CB10715 +:1009C000D9F722E1A2ECB3E001C01D92AB3DB20722 +:1009D000E1F70E94FA540C94D46E12CB2F923F92FE +:1009E0004F925F926F927F928F929F92AF92BF923F +:1009F000CF92DF92EF92FF920F931F93CF93DF93EB +:100A0000CDB7DEB7C15DD1090FB6F894DEBF0FBE1A +:100A1000CDBFC154DF4F99838883CF5BD04089E33A +:100A2000EAEBFEE0DF011D928A95E9F78AE0EBE24E +:100A3000FEE0ABEBBEE001900D928A95E1F7FE017E +:100A4000EB55FF4F1082C554DF4F19821882CB5BE4 +:100A5000D040C354DF4F19821882CD5BD040CB53B6 +:100A6000DF4F1882C55CD040CE54DF4F1882C25B86 +:100A7000D040C654DF4F1882CA5BD040BA97C655E3 +:100A8000DF4FF983E883CA5AD0409E012F5A3F4F67 +:100A9000C455DF4F39832883CC5AD040C90108960A +:100AA000C753DF4F99838883C95CD040CB55DF4F54 +:100AB0008881C55AD040C154DF4FE881F981CF5BAE +:100AC000D040E80FF11D1081112311F40C94E81AA5 +:100AD0009FEB910F9A3110F00C945F248F5FCB55F0 +:100AE000DF4F8883C55AD040AE014F555F4FBE01DE +:100AF0006B557F4FC154DF4F88819981CF5BD040C8 +:100B00000E94534D882311F40C946124CF55DF4F7C +:100B1000C880D980EA80FB80C15AD040C701B601A5 +:100B20000E94F5670E944265CF53DF4F6883798347 +:100B30008A839B83C15CD040CF53DF4F28803980AC +:100B4000C15CD040B10180E090E00E946E659B01E5 +:100B5000AC01C701B6010E94F46320E030E048EC2C +:100B600052E40E9427670E948A670E944265CA5425 +:100B7000DF4F79836883C65BD0401D3411F40C9439 +:100B8000670E103511F40C943515173411F00C94D0 +:100B9000B419CB55DF4F8881C55AD040C154DF4FBF +:100BA00028813981CF5BD040280F311D9AE9291661 +:100BB00098E0390609F428C160F4B4ED2B16B7E0CB +:100BC0003B06A1F0E9E92E16E8E03E0609F454C020 +:100BD000DCC5FCE92F16F8E03F0609F498C28DE960 +:100BE000281688E0380609F495C3CFC51A82198201 +:100BF000CE0101969F938F9381EC92E09F938F9308 +:100C00003F932F930E94BC680F900F900F900F900E +:100C10000F900F90181619060CF0A8C389819A81BD +:100C20009093170F8093160F91E09093C10D8091D0 +:100C3000120F8111ADC524E837E33093CE0D209318 +:100C4000CD0D1092200185E08093210121EF3FEF2F +:100C50003093D00D2093CF0D2091CF0D3091D00D3A +:100C6000309325012093240180917300816080934B +:100C700073009093120F8CC58E010B5E1F4F1F9354 +:100C80000F937E0199E2E90EF11CFF92EF926E0143 +:100C9000ADE3CA0ED11CDF92CF92C355DF4FB881AE +:100CA000CD5AD040BF93C455DF4FE881CC5AD040D5 +:100CB000EF9389E192E09F938F933F932F930E944C +:100CC000BC680FB6F894DEBF0FBECDBF04970CF41E +:100CD0004DC3EF961CAE1DAE1EAE1FAEEF97E59650 +:100CE0001CAE1DAE1EAE1FAEE597AB961CAE1DAE84 +:100CF0001EAE1FAEAB97A1961CAE1DAE1EAE1FAEB4 +:100D0000A197CE0101965C018CE0D5011D928A95D8 +:100D1000E9F7AE0145585F4F60E070E0CE018F5AB1 +:100D20009F4F0E94534D882309F432C5AE014F589E +:100D30005F4F60E070E0C6010E94534D882309F4C4 +:100D400027C5AE0149595F4F60E070E0C7010E94BE +:100D5000534D882309F41CC5AE01435A5F4F60E030 +:100D600070E0C8010E94534D882309F411C520E0AA +:100D700030E044EB52E4E5966CAD7DAD8EAD9FADB9 +:100D8000E5970E94F46321EE3EE245E652E40E94BC +:100D9000D5646B017C01E5966CAF7DAF8EAF9FAFE4 +:100DA000E597EF964CAC5DAC6EAC7FACEF970E94D4 +:100DB000D2649B01AC01C301B2010E942767698321 +:100DC0007A838B839C83C701B6010E94AA679B012B +:100DD000AC01C301B2010E9427676D837E838F83BC +:100DE0009887AB968CAD9DADAEADBFADAB97898707 +:100DF0009A87AB87BC87A1962CAD3DAD4EAD5FAD5C +:100E0000A19700E0B501BCC4E5961CAE1DAE1EAEB8 +:100E10001FAEE597AB961CAE1DAE1EAE1FAEAB97D8 +:100E2000FE0131967F01FF93EF938E010B5E1F4F02 +:100E30001F930F93C555DF4FF881CB5AD040FF93D6 +:100E4000C655DF4F8881CA5AD0408F9382E492E022 +:100E50009F938F933F932F930E94BC680FB6F89493 +:100E6000DEBF0FBECDBF03970CF480C2AE014F585A +:100E70005F4F60E070E0C8010E94534D882309F481 +:100E800087C4AE0149595F4F60E070E0C7010E941E +:100E9000534D882309F47CC4A1961CAE1DAE1EAE32 +:100EA0001FAEA19765961CAE1DAE1EAE1FAE659718 +:100EB00021961CAE1DAE1EAE1FAE21973E01B9E2BB +:100EC0006B0E711C8CE0F30111928A95E9F7609129 +:100ED000B00D7091B10D8091B20D9091B30D0E9443 +:100EE0007065C255DF4F688379838A839B83CE5AAE +:100EF000D0406091AC0D7091AD0D8091AE0D909190 +:100F0000AF0D0E9470659B01AC016091A80D7091BE +:100F1000A90D8091AA0D9091AB0DC353DF4F28838B +:100F2000CD5CD040C253DF4F3883CE5CD040C0533D +:100F3000DF4F4883C05DD040CF52DF4F5883C15D43 +:100F4000D0400E947065DE01DD964D01FE01EF5A32 +:100F5000FF4F5F0190966D01C255DF4FE880F98029 +:100F60000A811B81CE5AD040C353DF4F2881CD5C0C +:100F7000D040C253DF4F3881CE5CD040C053DF4FEA +:100F80004881C05DD040CF52DF4F5881C15DD04015 +:100F90000E94103FED968EAD9FADED97813091058B +:100FA00029F1F4F4892B09F0EEC120E030E044EBA4 +:100FB00052E4E5966CAD7DAD8EAD9FADE5970E9498 +:100FC000F4637B018C01E5966CAF7DAF8EAF9FAF74 +:100FD000E59765962CAD3DAD4EAD5FAD659725C0EF +:100FE00082309105B1F00397E9F1CDC12196ECACC7 +:100FF000FDAC0EAD1FAD219765962CAD3DAD4EAD50 +:101000005FAD6597E5966CAD7DAD8EAD9FADE59717 +:1010100012C02196ECACFDAC0EAD1FAD2197E5964C +:101020002CAD3DAD4EAD5FADE597A1966CAD7DAD00 +:101030008EAD9FADA197FE01F1964F01DE019D9609 +:101040005D0163010E942B3EA401B501C3010E9412 +:101050007C3BAB962CAD3DAD4EAD5FADAB9700E0AC +:10106000B3018EC3E596CCACDDACEEACFFACE5973E +:1010700020E030E044E353E4C701B6010E94EC668F +:10108000181684F020E030E0A901C701B6010E94E3 +:10109000CE6487FF0AC0C12CD12CB4E3EB2EB3E49D +:1010A000FB2E03C0C12CD12C7601A701960160E074 +:1010B00070E084E393E40E94F46320E030E044E3D2 +:1010C00053E40E94D5649B01AC010E94F56323E3C5 +:1010D00033E343E35FE30E94F563609300027093A0 +:1010E0000102809302029093030220E030E048EA7C +:1010F00051E40E94D56420E030EC4FE754E40E94B4 +:1011000027670E944265CB010E94623541C3CE0130 +:1011100045969F938F9344969F938F9344969F9366 +:101120008F93C355DF4FB881CD5AD040BF93C4557C +:10113000DF4FE881CC5AD040EF938AE592E09F934D +:101140008F933F932F930E94BC680FB6F894DEBF35 +:101150000FBECDBF04970CF409C1EF961CAE1DAEB7 +:101160001EAE1FAEEF97E5961CAE1DAE1EAE1FAEB7 +:10117000E597AB961CAE1DAE1EAE1FAEAB97A1960B +:101180001CAE1DAE1EAE1FAEA197AE0145585F4FFF +:1011900060E070E0CE018F5A9F4F0E94534D88232C +:1011A00009F4F6C2AE014F585F4F60E070E0CE0127 +:1011B000CD960E94534D882309F4EAC2AE014959E5 +:1011C0005F4F60E070E0CE0189960E94534D882306 +:1011D00009F4DEC2AE01435A5F4F60E070E0CE0119 +:1011E00045960E94534D882309F4D2C26091B00DF8 +:1011F0007091B10D8091B20D9091B30D0E94706508 +:101200002B013C016091AC0D7091AD0D8091AE0D44 +:101210009091AF0D0E9470659B01AC016091A80D8B +:101220007091A90D8091AA0D9091AB0DC353DF4F22 +:101230002883CD5CD040C253DF4F3883CE5CD04092 +:10124000C053DF4F4883C05DD040CF52DF4F58833B +:10125000C15DD0400E947065DE0119964D01FE010E +:1012600035965F0118976D0183017201C353DF4FFB +:101270002881CD5CD040C253DF4F3881CE5CD04056 +:10128000C053DF4F4881C05DD040CF52DF4F5881FF +:10129000C15DD0400E94273CA401B501C6010E9457 +:1012A0007C3BEF962CAD3DAD4EAD5FADEF976981C8 +:1012B0007A818B819C810E94F56369837A838B8319 +:1012C0009C83E5962CAD3DAD4EAD5FADE5976D8150 +:1012D0007E818F8198850E94F5636D837E838F83E5 +:1012E0009887AB962CAD3DAD4EAD5FADAB976985A4 +:1012F0007A858B859C850E94F56369877A878B87C1 +:101300009C87A1962CAD3DAD4EAD5FADA19700E0A1 +:10131000B60136C28E01035A1F4F1F930F937E01F1 +:10132000B7E6EB0EF11CFF92EF926E01E1E7CE0EF5 +:10133000D11CDF92CF92C555DF4FF881CB5AD040F8 +:10134000FF93C655DF4F8881CA5AD0408F9389E1F9 +:1013500092E09F938F933F932F930E94BC680FB6A8 +:10136000F894DEBF0FBECDBF049784F41F9281E0D6 +:101370008F938DE092E09F938F930E94C92D0F90E1 +:101380000F900F900F9082E390E004C2C356DF4F9E +:10139000188219821A821B82CD59D040C756DF4F5E +:1013A000188219821A821B82C959D040CB56DF4F4E +:1013B000188219821A821B82C559D040CF56DF4F3E +:1013C000188219821A821B82C159D0408CE0C45500 +:1013D000DF4FE881F981CC5AD04011928A95E9F724 +:1013E000AE0143565F4F60E070E0CE0185589F4FDD +:1013F0000E94534D882309F4CBC1AE0147565F4F7D +:1014000060E070E0C6010E94534D882309F4C0C11A +:10141000AE014B565F4F60E070E0C7010E94534D34 +:10142000882309F4B5C1AE014F565F4F60E070E00C +:10143000C8010E94534D882309F4AAC1C357DF4F46 +:10144000188219821A821B82CD58D040C757DF4FAD +:10145000188219821A821B82C958D040CB57DF4F9D +:10146000188219821A821B82C558D0406091B00D33 +:101470007091B10D8091B20D9091B30D0E94706585 +:101480002B013C016091AC0D7091AD0D8091AE0DC2 +:101490009091AF0D0E9470659B01AC016091A80D09 +:1014A0007091A90D8091AA0D9091AB0DC353DF4FA0 +:1014B0002883CD5CD040C253DF4F3883CE5CD04010 +:1014C000C053DF4F4883C05DD040CF52DF4F5883B9 +:1014D000C15DD0400E947065DE01AB57BF4F4D012A +:1014E000FE01E757FF4F5F0118966D0183017201FE +:1014F000C353DF4F2881CD5CD040C253DF4F3881CA +:10150000CE5CD040C053DF4F4881C05DD040CF5249 +:10151000DF4F5881C15DD0400E94103F6091B00DF7 +:101520007091B10D8091B20D9091B30D0E947065D4 +:101530002B013C016091AC0D7091AD0D8091AE0D11 +:101540009091AF0D0E9470659B01AC016091A80D58 +:101550007091A90D8091AA0D9091AB0DC353DF4FEF +:101560002883CD5CD040C253DF4F3883CE5CD0405F +:10157000C053DF4F4883C05DD040CF52DF4F588308 +:10158000C15DD0400E947065C753DF4F888099804D +:10159000C95CD040E1E5F0E0EC0FFD1F3496C25588 +:1015A000DF4FF983E883CE5AD0405F01DE01AF5AA6 +:1015B000BF4F6D0183017201C353DF4F2881CD5CA2 +:1015C000D040C253DF4F3881CE5CD040C053DF4F94 +:1015D0004881C05DD040CF52DF4F5881C15DD040BF +:1015E0000E94273CC753DF4F48815981C95CD040D6 +:1015F000C255DF4F68817981CE5AD040C6010E9422 +:101600007C3B65966CAD7DAD8EAD9FAD6597699663 +:10161000CCACDDACEEACFFAC69979B01AC010E9499 +:1016200027674B015C01A7019601C701B6010E9423 +:1016300027679B01AC01C501B4010E94F5630E94BC +:10164000B467C356DF4F288139814A815B81CD5908 +:10165000D0400E94F5636B017C01C356DF4F688365 +:1016600079838A839B83CD59D040C756DF4F288129 +:1016700039814A815B81C959D040CB57DF4F68819E +:1016800079818A819B81C558D0400E94F56321EE03 +:101690003EE245E652E40E94D5642B013C010E94E3 +:1016A000D2649B01AC01C701B6010E9427674B01C0 +:1016B0005C0165966CAF7DAF8EAF9FAF6597C30140 +:1016C000B2010E94AA679B01AC01C701B6010E944A +:1016D000276769966CAF7DAF8EAF9FAF6997CB568A +:1016E000DF4F288139814A815B81C559D0406D9691 +:1016F0006CAD7DAD8EAD9FAD6D970E94F5636D961F +:101700006CAF7DAF8EAF9FAF6D978E01035C1F4FA7 +:1017100024E045E0C501B4010E94626169966CADA8 +:101720007DAD8EAD9FAD69970451110924E045E070 +:101730000E9462616D966CAD7DAD8EAD9FAD6D9773 +:101740000451110924E045E00E946261C356DF4F55 +:10175000688179818A819B81CD59D04004511109DA +:1017600024E045E00E946261CF56DF4F2881398135 +:101770004A815B81C159D04000E0BE016F5A7F4F62 +:1017800080E00E94414E90E005C081E090E002C000 +:1017900080E090E09C01215031092230310510F0A9 +:1017A0000C94C124B8E22B16310409F445C280F52B +:1017B000F4E12F16310498F421E12216310408F0E7 +:1017C0007AC134E02316310409F479C008F4F6C074 +:1017D0009AE02916310409F45EC00C946D24ACE142 +:1017E0002A16310409F457C038F4E6E12E16310404 +:1017F00008F4BFC10C946D24FEE12F16310409F4E6 +:101800004AC026E22216310409F4D8C00C946D2493 +:101810003DE32316310409F4FEC110F595E32916C2 +:10182000310409F44CC060F4BBE22B16310409F416 +:10183000B7C1E1E32E16310409F4B2C10C946D2452 +:10184000FCE32F16310410F00C946D24CF53DF4FBE +:101850008881C15CD04086538093C10EF9E0D5C128 +:101860002CE52216310460F43AE52316310408F021 +:101870003DC180E52816310409F4AEC00C946D24F6 +:101880009CE52916310439F0AFE52A16310408F435 +:1018900063C10C946D24CA54DF4FE881F981C65BA3 +:1018A000D040EF2B11F00C947F24C654DF4FF88109 +:1018B000CA5BD040FF2309F452C00C9463242CE18E +:1018C00022163104D1F148F484E02816310481F065 +:1018D0009AE029163104E9F01FC0AEE12A1631045E +:1018E00009F447C0B5E32B16310409F465C014C0F0 +:1018F00081E010C0BFE12B16310408F051C0EAE0CE +:101900002E16310479F4E1E0C654DF4FE883CA5B58 +:10191000D04082E08093BA0EC255DF4F1882CE5A73 +:10192000D04097C1FCE12F16310409F09CC1F1E0D1 +:10193000C654DF4FF883CA5BD040CA54DF4F2881BA +:101940003981C65BD0402115310539F02A30310587 +:1019500011F00C946D2484E015C083E013C0AEE157 +:101960002A16310439F631E0C654DF4F3883CA5B9A +:10197000D040CA54DF4F88819981C65BD040009720 +:1019800049F485E08093BA0EC255DF4F1882CE5AD3 +:10199000D04074C10A9711F00C946D2486E0F2CF08 +:1019A00025E32216310411F00C94B02491E0C654C2 +:1019B000DF4F9883CA5BD04087E0ACCFC654DF4F7F +:1019C000F881CA5BD040F1110C94632422E0C65424 +:1019D000DF4F2883CA5BD04032E02316310421F167 +:1019E00060F421143104E1F02A94232809F02BC17A +:1019F00081E08093BB0E21E073C0A6E22A16310479 +:101A0000E9F0B0E52B16310409F451C0E3E02E16DD +:101A1000310409F018C183E08093BB0E81E00DC151 +:101A20001092BB0EF1E0F1C082E08093BB0E31E07A +:101A3000C255DF4F3883CE5AD0400BC1CA54DF4F56 +:101A4000A881B981C65BD040AE31B10531F170F4E7 +:101A5000549711F00C946D2484E08093BB0EF1E058 +:101A6000C255DF4FF883CE5AD04008C1CA54DF4F69 +:101A7000E881F981C65BD040E832F10599F0F29730 +:101A800011F00C946D2487E08093BB0E81E0C25569 +:101A9000DF4F8883CE5AD040F1C085E08093BB0EE3 +:101AA00021E054C086E08093BB0E31E0BFC088E0E7 +:101AB0008093BB0EC8C0A2E12A16310441F0B3E105 +:101AC0002B16310449F01092BF0EE2E063C081E0B2 +:101AD0008093BF0EF2E099C082E08093BF0E22E0B7 +:101AE000C255DF4F2883CE5AD040B3C0CA54DF4F0F +:101AF00088819981C65BD040892BB9F49AE5291673 +:101B0000310449F41092BE0EA3E0C255DF4FA88302 +:101B1000CE5AD040B3C081E08093BE0EB3E0C25530 +:101B2000DF4FB883CE5AD040A9C0CA54DF4FE881F6 +:101B3000F981C65BD0403A9711F00C946D24FAE518 +:101B40002F16310411F40C946D2424E0C255DF4F9C +:101B50002883CE5AD04092C03DE52316310429F4A3 +:101B600081E08093BC0E85E068C01092BC0E95E0C9 +:101B70006BC0A4E12A16310451F481E08093BD0EBC +:101B8000B6E0C255DF4FB883CE5AD04062C0109243 +:101B9000BD0EE6E0C255DF4FE883CE5AD04059C0B3 +:101BA000C654DF4FF881CA5BD040F1110C94632416 +:101BB00021E32216310479F41092C00E38E0C255A8 +:101BC000DF4F3883CE5AD04083E0C654DF4F88833E +:101BD000CA5BD04053C0CA54DF4FA881B981C65BED +:101BE000D0401A9711F00C946D2481E08093C00EC0 +:101BF000B8E0C255DF4FB883CE5AD040E3E0C654B8 +:101C0000DF4FE883CA5BD04039C0C255DF4FF8834D +:101C1000CE5AD0401EC0CA54DF4F28813981C65BDE +:101C2000D040232B11F00C946D243AE0C255DF4FC5 +:101C30003883CE5AD04022C087E0C255DF4F888318 +:101C4000CE5AD04006C091E0C255DF4F9883CE5A9D +:101C5000D040CA54DF4FA881B981C65BD040AB2BBE +:101C600069F00C949224C255DF4F1882CE5AD040AE +:101C7000B1E0C654DF4FB883CA5BD04081E090E04A +:101C8000C255DF4F0880CE5AD04002C0880F991F3E +:101C90000A94E2F7C354DF4F28813981CD5BD040ED +:101CA00028233923232B19F085E10C94C124C35434 +:101CB000DF4FE881F981CD5BD040E82BF92BC3548D +:101CC000DF4FF983E883CD5BD0400C945605CA54AE +:101CD000DF4F28813981C65BD040232B11F00C9453 +:101CE0009224CB55DF4F8881C55AD040C154DF4F75 +:101CF000E881F981CF5BD040E80FF11D3EEA231661 +:101D000038E0330608F054C08CEA281688E038061C +:101D100008F037C19AE4291698E0390609F4D6C1CB +:101D200000F5BCEC2B16310409F42EC158F431E156 +:101D30002316310409F491C082E12816310409F414 +:101D40001EC188C098E4291698E0390609F45AC1E2 +:101D500008F0B5C1B3EE2B16B7E03B0609F40FC18E +:101D600079C022EA221628E0320609F432C298F439 +:101D70008AE9281688E0380609F4E1C19BE92916AA +:101D800098E0390609F402C2A9E92A16A8E03A0641 +:101D900009F060C0AEC1B6EA2B16B8E03B0608F405 +:101DA000F0C0E7EA2E16E8E03E0609F44EC252C043 +:101DB00022EC221628E0320638F530EC231638E003 +:101DC000330608F0DEC088EB281688E0380609F4F0 +:101DD00043C368F4AEEA2A16A8E03A0609F43BC207 +:101DE000B7EB2B16B8E03B0609F423C333C029EB4D +:101DF000221628E0320609F440C33AEB231638E0F5 +:101E0000330609F4BEC026C08AE6281689E03806E3 +:101E100009F4E1C368F4A0E62A16A9E03A0609F439 +:101E20004FC3B1E62B16B9E03B0609F4BBC312C0A1 +:101E300024E7221629E0320609F46FC435E7231699 +:101E400039E0330609F4C1C48BE6281689E0380668 +:101E500009F426C481E090E08EC58A9A8091080139 +:101E60008160809308015F9A0E94A4388FE080937C +:101E7000C00D8EE1E4EFFEE0DF011D928A95E9F7E7 +:101E80000E9497300E94475480E090E00E948D406D +:101E900060939C0D70939D0D80939E0D90939F0D6C +:101EA00081E090E00E948D406093A00D7093A10DA1 +:101EB0008093A20D9093A30D82E090E00E948D404C +:101EC0006093A40D7093A50D8093A60D9093A70D1C +:101ED0000091F80E1091F90E2091FA0E3091FB0E40 +:101EE0000093A80D1093A90D2093AA0D3093AB0D6C +:101EF0000091FC0E1091FD0E2091FE0E3091FF0E10 +:101F00000093AC0D1093AD0D2093AE0D3093AF0D3B +:101F10000091000F1091010F2091020F3091030FDB +:101F20000093B00D1093B10D2093B20D3093B30D0B +:101F300020E030E044EB52E40E94F4637B018C012A +:101F40002091A00D3091A10D4091A20D5091A30DB3 +:101F500060919C0D70919D0D80919E0D90919F0DB3 +:101F6000ECEB8E2EEDE09E2EF8EBAF2EFDE0BF2EBB +:101F7000A4EBCA2EADE0DA2E0E942B3E02C00E94D6 +:101F8000583680E090E0F7C48E010F5F1F4F1F931B +:101F90000F9383E892E09F938F93FF93EF930E94B8 +:101FA000BC680F900F900F900F900F900F90181625 +:101FB00019060CF094C31D8A1E8A1F8A188EAE0162 +:101FC0004B5E5F4F60E070E0C8010E94534D882374 +:101FD00009F4CFC44D895E896F89788D88E70E94A6 +:101FE00018284D895E896F89788D89E70E941828A5 +:101FF0004D895E896F89788D8AE70E9418280E9432 +:10200000C62CBFCF8E010F5F1F4F1F930F938EE81B +:1020100092E09F938F93FF93EF930E94BC680F9081 +:102020000F900F900F900F900F90181619060CF04C +:1020300056C3AE014B5E5F4F60E070E0C8010E9486 +:10204000534D882309F495C420E030E04AE754E476 +:102050006D897E898F89988D0E9427670E943D65D2 +:102060001616170664F57093150F6093140F91E020 +:102070009093130F8091120F811183CF24E837E3DF +:102080003093CE0D2093CD0D1092200185E08093EA +:10209000210121EF3FEF3093D00D2093CF0D209100 +:1020A000CF0D3091D00D30932501209324018091E4 +:1020B00073008160809373009093120F62CF10922F +:1020C000130F1092150F1092140F5BCF808186357D +:1020D00009F04FC481818053823008F04AC41092C5 +:1020E000C40D813019F01092C30D4BCF8093C30DF6 +:1020F00048CF80818E3409F03CC491819053943054 +:1021000008F037C4923061F0933099F08091C00D9F +:10211000913019F05F9A846025C08A9A816022C04C +:10212000809108018160809308018091C00D8260D8 +:1021300019C00E94A4388091C00D886013C08081AE +:102140008E3409F016C491819053943008F011C474 +:102150008091C00D923061F0933089F0913029F078 +:102160005F988B7F8093C00D0CCF8A988E7FFACFBB +:10217000909108019E7F909308018D7FF3CF9091FD +:1021800072009E7F90937200877FECCF80818E34A7 +:1021900009F0EFC381818053843008F0EAC3909145 +:1021A000C00D823081F0833089F0813019F090FFCA +:1021B00003C03CC191FD3AC16EE873E080E69DE04A +:1021C0000E948668DECE92FD31C1F6CF93FFF4CF38 +:1021D0002DC11AA619A61D8A1E8A1F8A188E8E0165 +:1021E0000F5F1F4F8AE0D8011D928A95E9F7CE0153 +:1021F00089969F938F931F930F9387E992E09F9304 +:102200008F93FF93EF930E94BC680FB6F894DEBFE4 +:102210000FBECDBF02970CF462C2AE014B5E5F4FA2 +:1022200060E070E0C8010E94534D882309F4A1C307 +:102230002D893E894F89588D69A57AA5072E000CF6 +:10224000880B990B0E9438389CCE8FEF0E9444294E +:102250000E945D3796CEEF961CAE1DAE1EAE1FAE31 +:10226000EF97E5961CAE1DAE1EAE1FAEE597AB9682 +:102270001CAE1DAE1EAE1FAEAB9784E15E0129E21F +:10228000A20EB11CD501282F1D922A95E9F77E01D7 +:1022900035E1E30EF11CD701282F1D922A95E9F7AD +:1022A000DE0111966D011D928A95E9F78E010B579B +:1022B0001F4F8FEF90E0D8018D939C931F930F9346 +:1022C000DF92CF92FF92EF92BF92AF9283EA92E0B9 +:1022D0009F938F93FF93EF930E94BC680FB6F8947F +:1022E000DEBF0FBECDBF03970CF4F9C1AE01455858 +:1022F0005F4F60E070E0C5010E94534D882309F4F0 +:1023000038C3AE014F585F4F60E070E0C7010E94D4 +:10231000534D882309F42DC3AE0149595F4F60E046 +:1023200070E0C6010E94534D882309F422C3D801EE +:102330008D919C910097D9F1019709F01AC3EF96FE +:10234000CCACDDACEEACFFACEF9720E030E044EB82 +:1023500052E4E5966CAD7DAD8EAD9FADE5970E94E4 +:10236000F46321EE3EE245E652E40E94D5644B015F +:102370005C010E94D2649B01AC01C701B6010E94BE +:102380002767EF966CAF7DAF8EAF9FAFEF97C5011C +:10239000B4010E94AA679B01AC01C701B6010E946B +:1023A0002767E5966CAF7DAF8EAF9FAFE597AE0127 +:1023B00049595F4FBE016F587F4FCE0185589F4FDF +:1023C0000E94D13AAB96ECACFDAC0EAD1FADAB9715 +:1023D000E5962CAD3DAD4EAD5FADE597EF966CAD9E +:1023E0007DAD8EAD9FADEF97FE01FD964F01DE01F5 +:1023F000AF5ABF4F5D01B0966F010E94753C2196A8 +:10240000ECACFDAC0EAD1FAD219765962CAD3DAD8E +:102410004EAD5FAD6597A1966CAD7DAD8EAD9FADB8 +:10242000A1970E948D3F882309F4C6CE62E972E02D +:10243000C5CE8081863509F09CC28181805382306F +:1024400008F097C2813019F00E94D7369ACD9C9A35 +:102450009D9AA49AA59895CD8081863509F089C268 +:1024600081818053823008F084C2813019F00E944B +:10247000D43687CD3F9A479884CD8081863509F040 +:1024800078C281818053823008F073C2813019F0A4 +:102490000E94C33676CD8091010180628093010154 +:1024A000809101018064809301018091020180622A +:1024B000809302018091020180648093020161CDCA +:1024C0008081833509F055C281818053843008F0C2 +:1024D00050C2823089F1833009F445C08130A9F0BF +:1024E0001092930D1092920D8AE999E1A5E9B2E458 +:1024F0008093980D9093990DA0939A0DB0939B0D96 +:102500008AE999E9A2E6B2E444C081E090E09093C0 +:10251000930D8093920D86EF98E2ACE4B2E4809341 +:10252000980D9093990DA0939A0DB0939B0D8DECFF +:102530009CECA0E8B2E42DC082E090E09093930D73 +:102540008093920D89E29CEDA4E9B2E48093980D0A +:102550009093990DA0939A0DB0939B0D80E090E01D +:10256000A2E6B2E416C083E090E09093930D8093CE +:10257000920D80E090E0ACE2B2E48093980D9093ED +:10258000990DA0939A0DB0939B0D80E090E0ABE87D +:10259000B2E48093940D9093950DA093960DB09313 +:1025A000970D7BC080E090E00E9440409093A8127D +:1025B0008093A71281E090E00E9440409093AA127D +:1025C0008093A91282E090E00E9440409093A6126E +:1025D0008093A512CBC16091000F7091010F809183 +:1025E000020F9091030F0E9470652B013C016091D6 +:1025F000FC0E7091FD0E8091FE0E9091FF0E0E94D8 +:1026000070659B01AC016091F80E7091F90E80919C +:10261000FA0E9091FB0EC353DF4F2883CD5CD04060 +:10262000C253DF4F3883CE5CD040C053DF4F488366 +:10263000C05DD040CF52DF4F5883C15DD0400E9473 +:102640007065DE0111964D01FE0175965F01989649 +:102650006D0183017201C353DF4F2881CD5CD040EF +:10266000C253DF4F3881CE5CD040C053DF4F48812A +:10267000C05DD040CF52DF4F5881C15DD0400E9435 +:10268000273C89819A81AB81BC818093980D90937E +:10269000990DA0939A0DB0939B0D0E940B3871CCAD +:1026A0001D8A1E8A1F8A188E8E010F5F1F4F84E1BC +:1026B000D8011D928A95E9F71F930F9385EC92E05C +:1026C0009F938F93FF93EF930E94BC680F900F909E +:1026D0000F900F900F900F901816190674F01F921C +:1026E00081E08F938DE092E09F938F930E94C92D9C +:1026F0000F900F900F900F903CC1AE014B5E5F4F5B +:1027000060E070E0C8010E94534D882309F431C194 +:102710008D899E89AF89B88D3CCF8081803509F045 +:1027200028C181818053833008F023C18130D9F0E2 +:10273000823091F180E090E00E9440409093CF037E +:102740008093CE0381E090E00E9440409093D103BB +:102750008093D00382E090E00E9440409093D303A6 +:102760008093D2030ECC80E090E00E944040909392 +:10277000C9038093C80381E090E00E944040909399 +:10278000CB038093CA0382E090E00E944040909384 +:10279000CD038093CC03F5CB80E090E00E944040D5 +:1027A0009093C3038093C20381E090E00E94404075 +:1027B0009093C5038093C40382E090E00E94404060 +:1027C0009093C7038093C603DCCB6091CE037091D6 +:1027D000CF03E090D003F090D1039701262B372B45 +:1027E0008091D2039091D303822B932B892B19F4E0 +:1027F00080ED92E031C0C090C803D090C9038090B2 +:10280000CA039090CB03E091CC03F091CD03C25565 +:10281000DF4FF983E883CE5AD040C4018C299D292B +:102820008E2B9F2B892B19F486ED92E015C0A0907A +:10283000C203B090C3030091C4031091C503980173 +:102840002A293B298091C6039091C703822B932BA1 +:10285000892B49F48CED92E09F938F930E94C92DB0 +:102860000F900F9086C080E090E00E946E652EE28F +:102870003DEA4AE352E40E94F5632B013C01B501B5 +:1028800080E090E00E946E652CE337EC4EEC52E461 +:102890000E94F5639B01AC01C301B2010E94F56384 +:1028A0002B013C01B60180E090E00E946E659B0127 +:1028B000AC01C301B2010E94F56320E030E040E4C6 +:1028C00050E40E94D56420E030E040E05FE30E94E5 +:1028D000F5630E9442657093A8126093A712B70136 +:1028E00080E090E00E946E6529EE3AE64BE753E403 +:1028F0000E94F4636B017C01B80180E090E00E94CB +:102900006E6527E33EE145E953E40E94F5639B01D0 +:10291000AC01C701B6010E94F5636B017C01B401F3 +:1029200080E090E00E946E659B01AC01C701B6019A +:102930000E94F56320E030E040E450E40E94D5645A +:1029400020E030E040E05FE30E94F5630E944265D2 +:102950007093AA126093A912C255DF4F2881398162 +:10296000CE5AD0403093A6122093A5120E943D412A +:1029700008CB82E390E09C012150310922303105DF +:1029800010F00C94C12436E02316310428F483E0BF +:102990002816310490F026C098E02916310410F46E +:1029A0000C946D24AAE02A16310408F440C0BEE15C +:1029B0002B16310411F00C946D24E2E02E16310434 +:1029C00061F0FEE12F16310441F0232809F046C0E2 +:1029D00081E08093C20E2BE032C082E08093C20E71 +:1029E0003BE036C084E02816310471F095E02916EA +:1029F0003104A1F081E08093C40EACE0C255DF4FFA +:102A0000A883CE5AD04088C482E08093C40EBCE034 +:102A1000C255DF4FB883CE5AD0407EC41092C40E48 +:102A2000ECE0C255DF4FE883CE5AD04075C4F9E0E0 +:102A30002F16310451F082E08093C30E2DE0C25571 +:102A4000DF4F2883CE5AD04067C41092C30E3DE0BA +:102A5000C255DF4F3883CE5AD0405EC48BE0C2559A +:102A6000DF4F8883CE5AD04057C4CA54DF4FE88125 +:102A7000F981C65BD040EF2B11F00C949224CB551A +:102A8000DF4F8881C55AD040FDEA2F16F8E03F0697 +:102A900009F4EDC258F53BE9231638E0330609F492 +:102AA00039C178F4A9E92A16A8E03A0609F42CC13C +:102AB00008F02DC1E8E92E16E8E03E0609F44FC003 +:102AC0004BC0FDE92F16F8E03F0609F42DC108F4CC +:102AD00028C13EE9231638E0330609F428C18CEA00 +:102AE000281688E0380609F41CC236C09BEB29166C +:102AF00098E0390609F4C4C3D8F4B8EB2B16B8E053 +:102B00003B0609F49EC338F4F7EB2F16F8E03F06B6 +:102B100009F47DC321C029EB221628E0320609F40E +:102B20009BC33AEB231638E0330609F49DC314C067 +:102B300082EC281688E0380609F4A9C338F4A0EC22 +:102B40002A16A8E03A0608F0DAC306C0B0E62B164B +:102B5000B9E03B0609F4BDC381E090E0D5C3A1967E +:102B60001CAE1DAE1EAE1FAEA19765961CAE1DAE6F +:102B70001EAE1FAE659721961CAE1DAE1EAE1FAEDB +:102B8000219784E1FE01B996CA55DF4FF983E883A6 +:102B9000C65AD040282F11922A95E9F71E0135E137 +:102BA000230E311CD101E82F1D92EA95E9F79E0111 +:102BB0002F5F3F4FC855DF4F39832883C85AD04015 +:102BC000D9011D928A95E9F76091000F7091010F6C +:102BD0008091020F9091030F0E9470652B013C01C0 +:102BE0006091FC0E7091FD0E8091FE0E9091FF0E93 +:102BF0000E9470659B01AC016091F80E7091F90E16 +:102C00008091FA0E9091FB0EC353DF4F2883CD5C69 +:102C1000D040C253DF4F3883CE5CD040C053DF4F2B +:102C20004883C05DD040CF52DF4F5883C15DD04054 +:102C30000E947065FE01FD964F01DE01AF5ABF4F45 +:102C40005D01B0966F0183017201C353DF4F28818C +:102C5000CD5CD040C253DF4F3881CE5CD040C053F2 +:102C6000DF4F4881C05DD040CF52DF4F5881C15DFA +:102C7000D0400E94103F20E030E044EB52E4219627 +:102C80006CAD7DAD8EAD9FAD21970E94F563219611 +:102C90006CAF7DAF8EAF9FAF2197A1966CAD7DAD30 +:102CA0008EAD9FADA1978E01075D1F4F24E045E0DB +:102CB0000E94626165966CAD7DAD8EAD9FAD6597EE +:102CC000810124E045E00E94626121966CAD7DADFA +:102CD0008EAD9FAD21970451110924E045E00E947B +:102CE00062613F922F92C955DF4FF881C75AD04099 +:102CF000FF93CA55DF4F2881C65AD0402F931F93A8 +:102D00000F9382EE92E0D7C280EF92E005C088E593 +:102D10009DE002C08EEF92E09F938F9389EF92E047 +:102D2000E0C285E093E0F8CF8CE093E0F5CFC154AA +:102D3000DF4FE881F981CF5BD040E80FF11D808142 +:102D40008E3409F0DFC281818053CA54DF4F8883FB +:102D5000C65BD040833008F0D5C2A1961CAE1DAE34 +:102D60001EAE1FAEA19765961CAE1DAE1EAE1FAE69 +:102D7000659721961CAE1DAE1EAE1FAE219784E155 +:102D8000FE01B996CA55DF4FF983E883C65AD04091 +:102D9000282F11922A95E9F71E0135E1230E311CE7 +:102DA000D101E82F1D92EA95E9F79E012F5F3F4F71 +:102DB000C855DF4F39832883C85AD040D9011D92A6 +:102DC0008A95E9F76091000F7091010F8091020FD1 +:102DD0009091030F0E9470652B013C016091FC0EE5 +:102DE0007091FD0E8091FE0E9091FF0E0E94706515 +:102DF0009B01AC016091F80E7091F90E8091FA0E72 +:102E00009091FB0EC353DF4F2883CD5CD040C2535B +:102E1000DF4F3883CE5CD040C053DF4F4883C05D66 +:102E2000D040CF52DF4F5883C15DD0400E947065C3 +:102E3000FE01FD964F01DE01AF5ABF4F5D01B09616 +:102E40006F0183017201C353DF4F2881CD5CD040F5 +:102E5000C253DF4F3881CE5CD040C053DF4F488132 +:102E6000C05DD040CF52DF4F5881C15DD0400E943D +:102E7000103F20E030E044EB52E421966CAD7DAD94 +:102E80008EAD9FAD21970E94F56321966CAF7DAF0B +:102E90008EAF9FAF2197A1966CAD7DAD8EAD9FADEE +:102EA000A1978E01075D1F4F24E045E00E946261FB +:102EB00065966CAD7DAD8EAD9FAD6597810124E0CB +:102EC00045E00E94626121966CAD7DAD8EAD9FADF7 +:102ED00021970451110924E045E00E946261CA541F +:102EE000DF4FF881C65BD040F13079F0F23081F0ED +:102EF000C955DF4F2881C75AD0402F93CA55DF4F9D +:102F00003881C65AD0403F9309C03F922F9206C0E5 +:102F100081E090E08C0F9D1F9F938F9385E193E05C +:102F2000E0C1A1961CAE1DAE1EAE1FAEA197659668 +:102F30001CAE1DAE1EAE1FAE659721961CAE1DAE1B +:102F40001EAE1FAE219784E1DE019996CA55DF4F70 +:102F5000B983A883C65AD040E82F1D92EA95E9F7B5 +:102F60001E01F5E12F0E311CD101E82F1D92EA95CB +:102F7000E9F79E012F5F3F4FC855DF4F3983288304 +:102F8000C85AD040D9011D928A95E9F780E090E0B7 +:102F90000E948D402B013C0181E090E00E948D4019 +:102FA000CA54DF4F688379838A839B83C65BD04092 +:102FB00082E090E00E948D4020E030E044EB52E45B +:102FC0000E94F463FE01FD964F019E012F5A3F4F70 +:102FD0005901DE01A35ABF4F6D017B018C01CA5418 +:102FE000DF4F288139814A815B81C65BD040C301B4 +:102FF000B2010E942B3EA401B501C6010E947C3B98 +:10300000A1966CAD7DAD8EAD9FADA1978E01075D94 +:103010001F4F24E045E00E94626165966CAD7DAD76 +:103020008EAD9FAD6597810124E045E00E9462610D +:1030300021966CAD7DAD8EAD9FAD219704511109E8 +:1030400024E045E00E9462611F930F933F922F920C +:10305000C955DF4FF881C75AD040FF93CA55DF4F9B +:103060002881C65AD0402F9389E193E024C1A196CC +:103070001CAE1DAE1EAE1FAEA19765961CAE1DAE5A +:103080001EAE1FAE659721961CAE1DAE1EAE1FAEC6 +:10309000219784E1DE019996CA55DF4FB983A88351 +:1030A000C65AD040E82F1D92EA95E9F71E01F5E1D6 +:1030B0002F0E311CD101E82F1D92EA95E9F79E01F0 +:1030C0002F5F3F4FC855DF4F39832883C85AD04000 +:1030D000D9011D928A95E9F780E090E00E948D4029 +:1030E000CA54DF4F688379838A839B83C65BD04051 +:1030F00081E090E00E948D40CF53DF4F6883798359 +:103100008A839B83C15CD04082E090E00E948D4026 +:1031100020E030E044EB52E40E94F4632B013C01D8 +:10312000FE01FD964F019E012F5A3F4F5901CE01DE +:10313000835A9F4F6C0183017201CF53DF4F288167 +:1031400039814A815B81C15CD040CA54DF4F6881BC +:1031500079818A819B81C65BD0400E942B3EA4016D +:10316000B501C6010E947C3BA1966CAD7DAD8EADD4 +:103170009FADA1976596CCACDDACEEACFFAC65978E +:103180009B01AC010E9427674B015C01A7019601DE +:10319000C701B6010E9427679B01AC01C501B401BC +:1031A0000E94F5630E94B4678E01075D1F4F24E003 +:1031B00045E00E94626120E030E044EB52E4C3014C +:1031C000B2010E94F563810124E045E00E94626142 +:1031D00021966CAD7DAD8EAD9FAD21970451110947 +:1031E00024E045E00E9462611F930F933F922F926B +:1031F000C955DF4FB881C75AD040BF93CA55DF4F7A +:10320000E881C65AD040EF9387E293E054C0A49B74 +:103210001FC08FE390E00E94DC368C011F938F93D8 +:1032200085E393E09F938F930E94C92D0F900F9099 +:103230000F900F900A30110558F00734110530F047 +:1032400009C0479905C00898009904C082E01DC0D4 +:1032500080E01BC081E019C082B386958695869573 +:1032600091E08927817011C08BE390E00E94DC36E9 +:1032700021E08536910508F420E01F922F932FC09E +:103280008091020185FB882780F91F9227C08091D9 +:10329000A6128F938091A5128F938091AA128F937B +:1032A0008091A9128F938091A8128F938091A71279 +:1032B0008F938DE393E09F938F9380E69DE09F93A0 +:1032C0008F930E948D680FB6F894DEBF0FBECDBFFE +:1032D00016C08091930D8F938091920D8F9386E805 +:1032E00093E09F938F9380E69DE09F938F930E943E +:1032F0008D680F900F900F900F900F900F9080E0BF +:1033000090E002C082E390E09C012150310922301C +:10331000310510F00C94C12481E090E0C255DF4FDC +:103320000880CE5AD04002C0880F991F0A94E2F755 +:10333000C354DF4F28813981CD5BD0402823392306 +:10334000232B11F00C94540EC354DF4FA881B98184 +:10335000CD5BD040A82BB92BC354DF4FB983A883D2 +:10336000CD5BD0400C945605812F110F990BAA0B01 +:10337000BB0BFC01E654F109E531F10510F00C94AA +:103380006D248827EE58FF4F8F4F0C945A68C092D7 +:10339000C50ED092C60EE092C70EF092C80EC2556E +:1033A000DF4F1882CE5AD040D2C0C092C90ED09200 +:1033B000CA0EE092CB0EF092CC0ECB53DF4FB88109 +:1033C000C55CD040B160CB53DF4FB883C55CD04003 +:1033D000E1E04FC0C092CD0ED092CE0EE092CF0E63 +:1033E000F092D00ECB53DF4FF881C55CD040F26035 +:1033F000CB53DF4FF883C55CD04022E053C0C0926E +:10340000D10ED092D20EE092D30EF092D40ECB53C6 +:10341000DF4F3881C55CD0403460CB53DF4F3883F9 +:10342000C55CD04083E058C0CF53DF4F9881C15C6A +:10343000D0409093D50EA4E069C0C701B6010E94A8 +:103440003D656093D60E7093D70E8093D80E9093FF +:10345000D90EB5E0C255DF4FB883CE5AD04077C001 +:10346000C092DA0ED092DB0EE092DC0EF092DD0E0E +:10347000E6E0C255DF4FE883CE5AD04068C0C09224 +:10348000DE0ED092DF0EE092E00EF092E10EF7E059 +:1034900059C0C092E20ED092E30EE092E40EF09298 +:1034A000E50E28E0C255DF4F2883CE5AD0404FC0EA +:1034B000C092E70ED092E80EE092E90EF092EA0E8A +:1034C000CE54DF4F3881C25BD0403160CE54DF4FE5 +:1034D0003883C25BD0408AE0C255DF4F8883CE5A22 +:1034E000D04035C0C092EB0ED092EC0EE092ED0EC3 +:1034F000F092EE0ECE54DF4F9881C25BD0409260C6 +:10350000CE54DF4F9883C25BD040ABE0C255DF4F53 +:10351000A883CE5AD0401BC0C092EF0ED092F00EBE +:10352000E092F10EF092F20ECE54DF4FB881C25B02 +:10353000D040B460CE54DF4FB883C25BD040ECE0E3 +:1035400098CFF9E0C255DF4FF883CE5AD04001E062 +:1035500010E0C255DF4F0880CE5AD04002C0000FA5 +:10356000111F0A94E2F7C554DF4F88819981CB5B24 +:10357000D04080239123892B11F00C94652481E69F +:1035800093E0C255DF4F0880CE5AD04002C09595D7 +:1035900087950A94E2F780FF0BC020E030E0A90194 +:1035A000C701B6010E94CE6487FF02C00C94672455 +:1035B000C554DF4F28813981CB5BD040202B312B84 +:1035C000C554DF4F39832883CB5BD0400C9456051C +:1035D000CE54DF4F3881C25BD040332369F0C654EC +:1035E000DF4F8881CA5BD040811106C092E0C6548B +:1035F000DF4F9883CA5BD040C554DF4FA881CB5BB7 +:10360000D040A5FF0FC08091D60E9091D70EA0910B +:10361000D80EB091D90E80389649A849B10514F05A +:103620000C9469248091BC0E813091F4C654DF4F14 +:10363000F881CA5BD040F23009F040C0C554DF4F7A +:103640002881CB5BD04020FD02C00C94732436C08F +:1036500080912C0E811132C0C554DF4F3881CB5B75 +:10366000D04030FF1BC08091BD0E813039F523E37F +:1036700033E34BEC51E46091C50E7091C60E80911E +:10368000C70E9091C80E0E9427676093C50E709375 +:10369000C60E8093C70E9093C80E10C08091390E4D +:1036A00090913A0EA0913B0EB0913C0E8093C50EC6 +:1036B0009093C60EA093C70EB093C80EC554DF4FAB +:1036C00088819981CB5BD04090FD10C08091350EF0 +:1036D0009091360EA091370EB091380E8093E20E85 +:1036E0009093E30EA093E40EB093E50E8091BA0E92 +:1036F0008130B9F4C554DF4F9881CB5BD04096FD43 +:1037000003C08CE10C94C124C554DF4FA881B9815A +:10371000CB5BD040AF7BC554DF4FB983A883CB5B75 +:10372000D0408091BF0E882331F1813091F4B1E017 +:10373000CF53DF4FB883C15CD040C154DF4F1882F4 +:10374000CF5BD040E2E0CA54DF4FE883C65BD04095 +:1037500023C0CF53DF4F1882C15CD040F2E0C15488 +:10376000DF4FF883CF5BD04021E0CA54DF4F28837E +:10377000C65BD04011C032E0CF53DF4F3883C15C0D +:10378000D04081E0C154DF4F8883CF5BD040CA5422 +:10379000DF4F1882C65BD0408091BD0E813041F072 +:1037A000C654DF4F9881CA5BD0409330F1F530C0EA +:1037B00077EEE72E7EE0F72E00E010E0CE54DF4FEC +:1037C000A881C25BD040CA2ED12CC601002E02C0F7 +:1037D000959587950A94E2F780FF11C023E333E3C0 +:1037E0004BEC51E4F70160817181828193810E94E9 +:1037F0002767D7016D937D938D939C9313970F5FEC +:103800001F4FB4E0EB0EF11C03301105F1F6C8CFE9 +:103810008091C00E813049F4CE54DF4FE881C25B05 +:10382000D040E43011F00C946B248CE0EEE4FEE028 +:10383000DE01559601900D928A95E1F7C354DF4F52 +:1038400028813981CD5BD04031FD0AC09090BA0EFD +:1038500032E09316D1F088E0981609F4DCC041C13B +:103860008091C10E873018F08DE10C94C1249091A5 +:10387000310E981759F3BE016B5E7F4F0E942429C9 +:10388000882311F40C947D24E1CFCE54DF4F98812E +:10389000C25BD040911103C08AE10C94C124C5548D +:1038A000DF4F88819981CB5BD04080759927892B28 +:1038B00009F427CF6091DA0E7091DB0E8091DC0E57 +:1038C0009091DD0E0E94F5670E944265673060F6B8 +:1038D0008091D50E843159F0823009F0FEC7C5546D +:1038E000DF4FA881CB5BD040A7FF01C0F6C7C5540E +:1038F000DF4FE881F981CB5BD040EF7AC554DF4FD1 +:10390000F983E883CB5BD040662339F06150C25520 +:10391000DF4F6883CE5AD04007C0F091C10EC25528 +:10392000DF4FF883CE5AD040BE016F5F7F4FC25544 +:10393000DF4F8881CE5AD0400E942429882309F481 +:10394000DCC73090D50E4090660E5090670E6090A8 +:10395000680E7090690E8E010F5F1F4FC12CD12C25 +:10396000E12CF12CCE54DF4F2881C25BD040822E57 +:10397000912CC4010E2C02C0959587950A94E2F70C +:1039800080FF3BC0C6018654914F5C0194E139121F +:103990002AC0F601E55DF14F27A530A941A952A93A +:1039A0006789708D818D928D0E94F463D5019D96FB +:1039B0002D913D914D915C91D0970E94F463F80157 +:1039C0006083718382839383F2E0EF16F104A9F49C +:1039D000A30192010E94F463D8016D937D938D93AE +:1039E0009C9313970AC0F50185A596A5A7A5B0A934 +:1039F000F80180839183A283B383FFEFEF1AFF0A5C +:103A000024E0C20ED11C0C5F1F4F33E0E316F1041B +:103A100009F0AFCF34C1CE54DF4F8881C25BD040B4 +:103A2000882309F439CF4090660E5090670E60905D +:103A3000680E7090690E07EE1EE0C12CD12CE12CAF +:103A4000F12CA82EB12CF601E55DF14FC5010E2C2D +:103A500002C0959587950A94E2F780FF2BC0A5E1F7 +:103A6000B0E0AC0FBD1FAC0DBD1D2D913D914D9132 +:103A70005C916789708D818D928D0E94F463D8016D +:103A80002D913D914D915C910E94F463F80160830A +:103A9000718382839383F2E0EF16F104A1F4A30112 +:103AA00092010E94F463D8016D937D938D939C9352 +:103AB000139709C087A590A9A1A9B2A9F80180838D +:103AC0009183A283B383FFEFEF1AFF0A24E0C20EB3 +:103AD000D11C0C5F1F4F33E0E316F10409F0B3CFA4 +:103AE000C9C0C654DF4F8881CA5BD040833061F4BF +:103AF00095E0991609F49DC0A7E09A1609F4B5C09F +:103B0000B3E09B12B7C084C0CE54DF4FE881C25BE4 +:103B1000D040EE2309F4A3C08090BE0E4090660E04 +:103B20005090670E6090680E7090690E62E4C62E29 +:103B30006EE0D62E07EE1EE05E01F5E1AF0EB11C81 +:103B4000E12CF12C2E2E312CC1010E2C02C09595AA +:103B500087950A94E2F780FD0BC0F6018081918180 +:103B6000A281B381F80180839183A283B3833FC094 +:103B7000F7E09F16E1F1811029C0D60158962D91EA +:103B80003D914D915C915B97F501608171818281DE +:103B900093810E94F563D8012D913D914D915C91E7 +:103BA0000E94F563F8016083718382839383F2E05E +:103BB000EF16F104E1F4A30192010E94F563D8012C +:103BC0006D937D938D939C93139711C0F601208183 +:103BD000318142815381D8016D917D918D919C916C +:103BE0000E94F563F8016083718382839383FFEF02 +:103BF000EF1AFF0A24E0C20ED11C0C5F1F4F34E005 +:103C0000A30EB11C83E0E816F10409F09DCF70CF3C +:103C1000CE54DF4F9881C25BD040911105C0C6548D +:103C2000DF4F1882CA5BD040BE016F5F7F4F86E0D6 +:103C300010C0CE54DF4FA881C25BD040A11105C097 +:103C4000C654DF4F1882CA5BD040BE016F5F7F4F02 +:103C500087E00E942429882309F44FC60BC085E021 +:103C6000981671F397E0991288C68091BB0E823046 +:103C700008F035C6C255DF4F1882CE5AD040109199 +:103C8000BB0E183089F4CE54DF4FB881C25BD040F0 +:103C9000BB2309F44DC2C654DF4FE881CA5BD04054 +:103CA000E13009F01EC664C3C654DF4FF881CA5B19 +:103CB000D040F23009F03CC2111109C0CE54DF4FA0 +:103CC0002881C25BD040222309F439C251C320E0CD +:103CD00030E0A9016091C50E7091C60E8091C70EAB +:103CE0009091C80E0E94CE64882309F4FCC514305C +:103CF00028F4123080F4113029F03AC3183008F457 +:103D0000D1C136C3CE54DF4F3881C25BD04033239C +:103D100009F415C22DC3CE54DF4F8881C25BD04059 +:103D2000882309F4B9CDCA54DF4F9881C65BD040CF +:103D3000692E712CC154DF4FB881CF5BD040AB2FBF +:103D4000B0E0C354DF4FB983A883CD5BD04081E09E +:103D500090E09C01C154DF4F0880CF5BD04002C08F +:103D6000220F331F0A94E2F77C01CA54DF4F088008 +:103D7000C65BD04002C0EE0CFF1C0A94E2F7E22AB8 +:103D8000F32ACE54DF4FE881C25BD0408E2F90E003 +:103D90008E219F21892B09F4A8C5C301880F991F83 +:103DA000880F991FFC01E654F14FDC01A55DB14F6E +:103DB00057962D913D914D915C915A9765A576A5A9 +:103DC00087A590A90E94F4631B012C01C354DF4F07 +:103DD00088819981CD5BD040880F991F880F991FEA +:103DE000FC01E654F14FDC01A55DB14F57962D91D2 +:103DF0003D914D915C915A9765A576A587A590A9AF +:103E00000E94F4634B015C01C554DF4FC880D98028 +:103E1000CB5BD040F0E8CF22DD24C554DF4F2881B2 +:103E2000CB5BD04027FF4BC0C554DF4F88819981C1 +:103E3000CB5BD0408F77C554DF4F99838883CB5BB2 +:103E4000D0402091E70E3091E80E4091E90E50915C +:103E5000EA0E6091420E7091430E8091440E909153 +:103E6000450E0E94CE64811178C12091EB0E3091F5 +:103E7000EC0E4091ED0E5091EE0E6091460E709159 +:103E8000470E8091480E9091490E0E94CE64811198 +:103E900064C12091EF0E3091F00E4091F10E5091DF +:103EA000F20E60914A0E70914B0E80914C0E9091E3 +:103EB0004D0E0E94CE64811150C181E262C5CB5388 +:103EC000DF4F3881C55CD040232F30E0CE54DF4F28 +:103ED00039832883C25BD040E222F322EF2809F421 +:103EE00006C5C554DF4F88819981CB5BD040817F67 +:103EF000C554DF4F99838883CB5BD0408091BD0E42 +:103F0000813009F486C0F301EE0FFF1FEE0FFF1F93 +:103F1000E254F14FC384D484E584F684A70196016A +:103F2000C201B1010E94F4632B013C01C354DF4F75 +:103F3000E881F981CD5BD040EE0FFF1FEE0FFF1F30 +:103F4000E254F14F83859485A585B685CE54DF4F25 +:103F500088839983AA83BB83C25BD0409C01AD0157 +:103F6000C501B4010E94F4634B015C01A3019201FD +:103F7000C301B2010E9427672B013C01A5019401F6 +:103F8000C501B4010E9427679B01AC01C301B201C6 +:103F90000E94F5630E94B4674B015C01A701960182 +:103FA000C701B6010E9427676B017C01CE54DF4F29 +:103FB000288139814A815B81C25BD040CA01B90145 +:103FC0000E9427679B01AC01C701B6010E94F563FF +:103FD0000E94B4676B017C016093DE0E7093DF0E6C +:103FE0008093E00E9093E10E9B01AC01C501B401FA +:103FF0000E94F4634B015C01E894B7F82AE037EDC6 +:1040000043EA5BE3C501B4010E94EC6618166CF14B +:10401000AFC10AEB1EE0CE54DF4F88819981C25BAD +:10402000D0400C2C02C0959587950A94E2F780FF4A +:1040300012C023E333E34BEC51E4D8011F966D919A +:104040007D918D919C9152970E942767F801678717 +:10405000708B818B928BFFEFCF1ADF0A0C5F1F4FA3 +:1040600023E0C216D104B9F64ECF20E030E040E0A4 +:104070005FE3C501B4010E94EC6618160CF41DCF75 +:104080002FE632E143E85AE3C701B6010E942767F1 +:104090009B01AC01C501B4010E94EC6618160CF43A +:1040A0000CCF66C1CE54DF4F3881C25BD040332382 +:1040B00009F4F2CB2091E70E3091E80E4091E90E21 +:1040C0005091EA0E6091420E7091430E8091440E21 +:1040D0009091450E0E94CE6481114AC12091EB0E51 +:1040E0003091EC0E4091ED0E5091EE0E6091460E27 +:1040F0007091470E8091480E9091490E0E94CE64B7 +:10410000811136C12091EF0E3091F00E4091F10EE9 +:104110005091F20E60914A0E70914B0E80914C0EB0 +:1041200090914D0E0E94CE64882309F4C6CE20C122 +:10413000C654DF4F8881CA5BD040811119C1C55474 +:10414000DF4F88819981CB5BD0408E7D9C7FC654A8 +:10415000DF4F1882CA5BD04013C18091BD0E813001 +:10416000B1F423E333E34BEC51E46091DE0E709144 +:10417000DF0E8091E00E9091E10E0E942767609320 +:10418000DE0E7093DF0E8093E00E9093E10E80912F +:10419000DE0E9091DF0EA091E00EB091E10ECE54B4 +:1041A000DF4F88839983AA83BB83C25BD040A2017F +:1041B0009101C201B1010E942767CB53DF4F688391 +:1041C00079838A839B83C55CD040A5019401C50196 +:1041D000B4010E942767C753DF4F688379838A83BE +:1041E0009B83C95CD04020E030E040E850E4CE54EE +:1041F000DF4F688179818A819B81C25BD0400E94B8 +:104200002767CE54DF4F288139814A815B81C25BA9 +:10421000D0400E942767CB53DF4F288139814A81E4 +:104220005B81C55CD0400E94F463C753DF4F288197 +:1042300039814A815B81C95CD0400E94F4636B0183 +:104240007C0120E030E0A9010E94CE6487FD6CC3B0 +:10425000C701B6010E94B4676B017C01C753DF4FF1 +:10426000288139814A815B81C95CD040CB53DF4FC3 +:10427000688179818A819B81C55CD0400E94F56309 +:104280000E94B4679B01AC01C701B60190580E941F +:10429000D5646B017C01133021F4F7FAF094F7F840 +:1042A000F09420E030E0A901CE54DF4F688179819D +:1042B0008A819B81C25BD0400E94CE6487FF15C07B +:1042C000F7FAF094F7F8F094CE54DF4F8881998193 +:1042D000AA81BB81C25BD040B0588093DE0E909320 +:1042E000DF0EA093E00EB093E10E8301000F111FCB +:1042F000000F111F0254114FA7019601C501B4010F +:104300000E9427679B01AC01C201B1010E94F463C6 +:1043100020E030E040E05FE30E942767D8011B9671 +:104320006D937D938D939C931E97C354DF4F0881AB +:104330001981CD5BD040000F111F000F111F0254D7 +:10434000114FA7019601C201B1010E9427679B018D +:10435000AC01C501B4010E94F56320E030E040E00B +:104360005FE30E942767F8016387748785879687D4 +:10437000C554DF4F88819981CB5BD0408E7D907E84 +:10438000892B09F0B6C28091D60E9091D70EA091DC +:10439000D80EB091D90E80933E0E90933F0EA0930D +:1043A000400EB093410E8091BC0E80932C0E8091F4 +:1043B000C50E9091C60EA091C70EB091C80E809305 +:1043C000390E90933A0EA0933B0EB0933C0EC090E2 +:1043D000E20ED090E30EE090E40EF090E50EA7011F +:1043E00096016091350E7091360E8091370E909146 +:1043F000380E0E94CE64882339F18091340E8823D0 +:1044000099F09091F50E923079F0C153DF4F888387 +:10441000CF5CD0400E94065EB701A601C153DF4FBA +:104420008881CF5CD040A1D58091E20E9091E30EBF +:10443000A091E40EB091E50E8093350E9093360E68 +:10444000A093370EB093380E8091E60E80933D0E08 +:104450008091C40E9091340E981709F445C0409194 +:10446000350E5091360E6091370E7091380E909146 +:10447000F50E9230A9F1C053DF4F4883C05DD040A4 +:10448000CF52DF4F5883C15DD040C353DF4F6883A5 +:10449000CD5CD040C253DF4F7883CE5CD040C15357 +:1044A000DF4F8883CF5CD0400E94065EC053DF4F51 +:1044B0004881C05DD040CF52DF4F5881C15DD040B0 +:1044C000C353DF4F6881CD5CD040C253DF4F78814A +:1044D000CE5CD040C153DF4F8881CF5CD04045D502 +:1044E0008091C40E8093340E1091C30E8091330ED0 +:1044F000811781F08091F50E823041F00E94065EB6 +:10450000123011F45C9A02C00E94F8548091C30EDC +:104510008093330E8091BA0E813089F08091BF0E66 +:1045200080932F0E8091BD0E80932D0EC654DF4FC9 +:104530009881CA5BD040933009F074C054C0809019 +:10454000DA0E9090DB0EA090DC0EB090DD0E809124 +:10455000F50E823019F320E030E040EA51E4C50165 +:10456000B4010E9427670E94AB650E9442656B01FF +:104570007C010E94065E20E030E04AE754E4C50179 +:10458000B4010E9427674B015C0182E38C9DB0015E +:104590008D9D700D112480E090E00E946E659B015E +:1045A000AC01C501B4010E94F4630E94AB650E9496 +:1045B0004265CB010E94484D86010115110509F4A1 +:1045C000ADCF0E94322E015011098091F40E81115D +:1045D000A5CFAFEFB0E7E2E0A150B040E040E1F797 +:1045E00000C00000EACF8091C00E8093300E813071 +:1045F00089F48091EF0E9091F00EA091F10EB091A0 +:10460000F20E8093660E9093670EA093680EB0939F +:10461000690E08C01092660E1092670E1092680E16 +:104620001092690E8091C10E9091310E981759F039 +:104630008093310E8CE0FE017596AEE4BEE00190F1 +:104640000D928A95E1F78091BE0E80932E0EE09137 +:10465000BA0E8E2F90E0FC013297E830F10508F099 +:1046600067C08827E957FF4F8F4F0C945A68BE01E7 +:104670006F5F7F4FC255DF4F8881CE5AD040DBD568 +:104680008091310EC255DF4FF881CE5AD0408F1342 +:104690004FC08CE0FE013196AEE4BEE03DC0C65492 +:1046A000DF4F2881CA5BD040222371F02091390E60 +:1046B00030913A0E40913B0E50913C0E00E067EE77 +:1046C0007EE081E00E94414E2091390E30913A0EF9 +:1046D00040913B0E50913C0E00E0BE016F5F7F4F5A +:1046E00081E00E94414E182F8CE0FE013196A2E439 +:1046F000BEE001900D928A95E1F71BC062E47EE076 +:1047000086E003C062E47EE087E095D511C08CE0CE +:10471000E7EEFEE0AAE5BEE001900D928A95E1F792 +:1047200007C08CE0EAE5FEE0DF011D928A95E9F71B +:1047300010E08091BB0E80932B0E883009F470C07E +:10474000C654DF4FB881CA5BD040B23009F068C0B0 +:1047500090E08830910508F05AC0FC014090390E75 +:1047600050903A0E60903B0E70903C0E8827E157B7 +:10477000FF4F8F4F0C945A6800E0A301920167EE3F +:104780007EE080E007C000912C0EA301920167EE4D +:104790007EE081E00E94414E182F39C06091DE0E0C +:1047A0007091DF0E8091E00E9091E10E8824839449 +:1047B00009C06091DE0E7091DF0E8091E00E909145 +:1047C000E10E812CCF53DF4FA880C15CD040C15493 +:1047D000DF4FC880CF5BD040CA54DF4FE880C65B54 +:1047E000D04000912C0EA30192010E94CE5E0FC01A +:1047F00000E001C001E020E004C000E001C001E0F1 +:1048000021E040912C0EC301B2010E94235E8CE096 +:10481000E7EEFEE0A2E4BEE001900D928A95E1F79A +:104820008091C20E8093320E882309F464C00E94E6 +:10483000065E9091320E8091F50E913069F48230CF +:10484000D9F19FB7F89480916A0E886080936A0EC0 +:104850009FBF0E94322E30C091E090932B0E109299 +:104860002F0E10922E0E10922C0E1092310E1092CE +:10487000340E1092330E823099F0BE016B5E7F4F82 +:1048800080E0E2D48823C9F18CE0FE017596AEE4A5 +:10489000BEE001900D928A95E1F760D30E94F85432 +:1048A00085E999E00E94242E89E399E00E94242E54 +:1048B00082E299E00E94242E1092320E1CC081E008 +:1048C00060C082E05EC088E15CC089E15AC084E0DB +:1048D00058C08BE156C085E254C084E152C08EE1DD +:1048E00050C08FE14EC086E14CC080E24AC083E2F6 +:1048F00048C084E246C0812F44C087E042C0EEE158 +:104900002E16310411F40C94B90C80F42AE022160E +:10491000310411F40C94890C3CE12316310411F498 +:104920000C949D0C87E12DC082E22BC085E32816F4 +:10493000310411F40C94DC0C9CE52916310491F738 +:10494000CA54DF4FE881F981C65BD040309729F027 +:104950003A9719F689E00C94C20C88E00C94C20CCA +:104960003CE52316310411F00C94330EA1E0C6543B +:10497000DF4FA883CA5BD040E3CFA3E09A127AC985 +:104980004EC9CF52DF4F0FB6F894DEBF0FBECDBF7A +:10499000DF91CF911F910F91FF90EF90DF90CF901B +:1049A000BF90AF909F908F907F906F905F904F904F +:1049B0003F902F90089569E080E090E00E944D5470 +:1049C0004DE450E06CE67EE081E098E00C946F549A +:1049D00080916F008D7F80936F0080918100887F30 +:1049E0008160809381001092210F80919F0E8F3FF4 +:1049F00021F49091F30E992349F09091F50E9430A3 +:104A000029F090E00E94484D81E001C080E0909143 +:104A1000A90E92FF02C091E08927882341F08A9A6B +:104A2000809108018160809308015F9A08958A98B7 +:104A3000809108018E7F809308015F9808951F92EE +:104A40000F920FB60F9211240BB60F922F933F9334 +:104A50004F935F936F937F938F939F93AF93BF9386 +:104A6000EF93FF938091210F811139C28091310F13 +:104A700080FD8F9A80FF8F9890910B01482F427094 +:104A80009D7F942B90930B0141B3847090E095959A +:104A90008795942F9D7F892B81BB91B38091300F97 +:104AA000282F217030E066E0220F331F6A95E1F76E +:104AB0009F7B292B21BB90910B01282F2270220F65 +:104AC000220F977F922B90930B0121B382FB9927A2 +:104AD00090F9822F8E7F892B81BB80912F0F86BD0D +:104AE00082E085BD81E08093210F78948091430F0F +:104AF0009091440F892B09F0ACC080912A129091BB +:104B00004F12981709F49BC0E0912A122E2F30E023 +:104B100086E0E89FF0011124E55DFD4EF093440F1F +:104B2000E093430F83819481909389008093880060 +:104B30008081918190933F0F80933E0FE28180911D +:104B4000400F8E1761F1E093400F81E1E89FF00183 +:104B50001124E05BFD4EF093420FE093410F8585F9 +:104B60009685A785B089B695A795979587958093E3 +:104B70002A0F90932B0FA0932C0FB0932D0F80939F +:104B8000260F9093270FA093280FB093290F80939F +:104B9000220F9093230FA093240FB093250FE09141 +:104BA000410FF091420F90911F0F808189278093D0 +:104BB000310F86E0829FD001839FB00D1124A55D47 +:104BC000BD4E15962C9181819281A381B481022ED4 +:104BD00004C0B695A795979587950A94D2F78093C8 +:104BE000320F9093330FA093340FB093350F85811C +:104BF0009681A781B085022E04C0B695A79597959A +:104C000087950A94D2F78093360F9093370FA0932D +:104C1000380FB093390F81859285A385B48504C080 +:104C2000B695A795979587952A95D2F780933A0FD1 +:104C300090933B0FA0933C0FB0933D0F0AC0C8DE8A +:104C40009FB7F89480916A0E846080936A0E9FBF2C +:104C500046C180916B0E8130B1F489B18071909121 +:104C6000B90E891781F010926B0E8CE0E8EFFEE030 +:104C7000A4E0BFE001900D928A95E1F780916A0E61 +:104C8000806480936A0E1092300F4091320F5091E1 +:104C9000330F6091340F7091350F8091220F9091F6 +:104CA000230FA091240FB091250F840F951FA61FED +:104CB000B71F8093220F9093230FA093240FB093DC +:104CC000250FE091410FF091420F4585568567858C +:104CD0007089481759076A077B0768F521E0209318 +:104CE000300F4585568567857089841B950BA60B0B +:104CF000B70B8093220F9093230FA093240FB093B0 +:104D0000250F20818091F80E9091F90EA091FA0E56 +:104D1000B091FB0E20FF04C00197A109B10903C0A7 +:104D20000196A11DB11D8093F80E9093F90EA093EA +:104D3000FA0EB093FB0E4091360F5091370F6091F1 +:104D4000380F7091390F8091260F9091270FA09105 +:104D5000280FB091290F840F951FA61FB71F8093AE +:104D6000260F9093270FA093280FB093290F458506 +:104D7000568567857089481759076A077B0778F554 +:104D80002091300F22602093300F4585568567852E +:104D90007089841B950BA60BB70B8093260F9093FD +:104DA000270FA093280FB093290F20818091FC0E2C +:104DB0009091FD0EA091FE0EB091FF0E21FF04C058 +:104DC0000197A109B10903C00196A11DB11D8093EE +:104DD000FC0E9093FD0EA093FE0EB093FF0E40913B +:104DE0003A0F50913B0F60913C0F70913D0F8091B5 +:104DF0002A0F90912B0FA0912C0FB0912D0F840FA3 +:104E0000951FA61FB71F80932A0F90932B0FA09377 +:104E10002C0FB0932D0F45855685678570894817EF +:104E200059076A077B0778F52091300F246020939B +:104E3000300F4585568567857089841B950BA60BB9 +:104E4000B70B80932A0F90932B0FA0932C0FB09346 +:104E50002D0F20818091000F9091010FA091020FE2 +:104E6000B091030F22FF04C00197A109B10903C04B +:104E70000196A11DB11D8093000F9093010FA09387 +:104E8000020FB093030F8091F50E843039F49091A6 +:104E9000110F8091300F89238093300F80913E0F46 +:104EA00090913F0F019790933F0F80933E0F892B76 +:104EB00069F41092440F1092430F80912A128F5F71 +:104EC00080932A12863011F410922A129091200FAA +:104ED0008091300F89278093300F1092210FFF911E +:104EE000EF91BF91AF919F918F917F916F915F9162 +:104EF0004F913F912F910F900BBE0F900FBE0F90CF +:104F00001F9018958091A90E82FF08C08A9A8091FF +:104F100008018160809308015F9A07C08A98809198 +:104F200008018E7F809308015F988091F50E8C7048 +:104F3000A1F080911F0F8093310F8091200F8093FB +:104F4000300F80919C0E880F8450819580932F0F95 +:104F500080916F00826080936F000895E0EAF0E036 +:104F600080818F7D80835C980895CF92DF92EF924D +:104F7000FF926A017B01811105C0FF90EF90DF90E5 +:104F8000CF90ECCF813011F45C9801C05C9A83E241 +:104F90008093A0008091A100807E8A618093A1000F +:104FA0008FEF9FEF9093A9008093A80020E030E05E +:104FB000A901C701B6010E94CE641816F4F620E0DC +:104FC00030E0A901C701B6010E94CE6487FD11C07F +:104FD00020E030E04AE754E4C701B6010E94EC66E5 +:104FE000181654F4C12CD12C8AE7E82E84E4F82E4C +:104FF00003C0C12CD12C76012CEE31E143E852E400 +:10500000C701B6010E94276720E030E040E05FE37F +:105010000E94F5630E94AB650E9442657093AB00ED +:105020006093AA005C9AFF90EF90DF90CF90089574 +:10503000CF92DF92EF92FF92CF93DF93C82F6A0156 +:105040007B0120E030E0A901C701B6010E94CE64D7 +:1050500087FDE3C0C43608F441C08CE98C0F20E022 +:10506000833098F590E0880F991F880F991F2230A0 +:1050700079F0FC01233011F1213019F0E459F14F9E +:1050800002C0E858F14FC082D182E282F382C2C0EE +:10509000EC01CC57D14F20E030E040E752E4C701AB +:1050A000B6010E94276720E030E040E752E40E940A +:1050B0002767688379838A839B83ACC0E057F14F6D +:1050C000F7FAF094F7F8F094DECF2F5F8A3008F407 +:1050D000A6C0243009F4A3C08A50C2CFC701B601CC +:1050E0000E94F5670E9442658C2F90E08C319105FB +:1050F00008F095C0FC018827E956FF4F8F4F0C94AC +:105100005A68633008F48DC060939C0E83C060932E +:105110009F0E80C060939D0E02C060939E0E0E9401 +:10512000FA4A78C08091A90E662311F084604CC0C1 +:105130008B7F4AC08091A90E662311F0806444C021 +:105140008F7B42C08091A90E662311F080683CC01D +:105150008F773AC06093A00E5DC0C092A10ED0922E +:10516000A20EE092A30EF092A40E54C0C092A50E1F +:10517000D092A60EE092A70EF092A80E4BC080919E +:10518000A90E662311F081601FC08E7F1DC0809123 +:10519000A90E662321F084FF46C0806215C08F7D72 +:1051A00013C08091A90E662311F0886001C0877F2B +:1051B0008093A90E0E9435542DC08091A90E6623BC +:1051C00011F0806101C08F7C8093A90E23C0609391 +:1051D000AA0E20C0C092AB0ED092AC0EE092AD0EE3 +:1051E000F092AE0E17C0C092AF0ED092B00EE09209 +:1051F000B10EF092B20E0EC070E07093B40E6093D8 +:10520000B30E08C0C092B50ED092B60EE092B70EA3 +:10521000F092B80ED0DB80E007C084E005C083E0E8 +:1052200003C086E001C08AE0DF91CF91FF90EF904C +:10523000DF90CF9008952DE0829FC00111244CE0B3 +:1052400050E0965F0C946F541F93CF93DF93182F09 +:10525000EB018DE0189FB0011124765F4CE050E027 +:10526000CE010E94B454892B51F48CE0FE011192BE +:105270008A95E9F7BE01812FDEDF80E001C081E081 +:10528000DF91CF911F910895EF92FF920F931F939B +:10529000CF93DF93CDB7DEB72C970FB6F894DEBF70 +:1052A0000FBECDBF182F80FFC6C08AE080939C0E32 +:1052B0008FEF80939F0E10929D0E87E080939E0E3D +:1052C00083E08093A00E8AE097EDA3E2BCE3809395 +:1052D000A10E9093A20EA093A30EB093A40E8FE6FE +:1052E00092E1A3E0BBE38093A50E9093A60EA0935A +:1052F000A70EB093A80E1092AA0E80E090E0A8EC42 +:10530000B1E48093AB0E9093AC0EA093AD0EB0932E +:10531000AE0E80E090E0AAEFB3E48093AF0E9093DE +:10532000B00EA093B10EB093B20E8AEF90E09093BE +:10533000B40E8093B30E80E090E0A0E8BFE38093CA +:10534000B50E9093B60EA093B70EB093B80E84E04E +:105350008093A90E80E090E5A3E4B7E480936C0EFF +:1053600090936D0EA0936E0EB0936F0E8093700E9F +:105370009093710EA093720EB093730E8093740E7F +:105380009093750EA093760EB093770E80E090E523 +:10539000A3ECB7E48093780E9093790EA0937A0EE5 +:1053A000B0937B0E80937C0E90937D0EA0937E0E27 +:1053B000B0937F0E8093800E9093810EA093820E07 +:1053C000B093830E80E090E4A2E9B5E48093840E6C +:1053D0009093850EA093860EB093870E8093880ECF +:1053E0009093890EA0938A0EB0938B0E80938C0EAF +:1053F00090938D0EA0938E0EB0938F0E80E090E46C +:10540000ACE1B6EC8093900E9093910EA093920E27 +:10541000B093930E8093940E9093950EA093960E56 +:10542000B093970E8093980E9093990EA0939A0E36 +:10543000B0939B0EC0DA11FF0FC0CE0101967C0124 +:105440008CE0F70111928A95E9F700E0B701802F0F +:10545000F2DE0F5F0830D1F712FF0AC060E080E093 +:105460009BE00E944D5460E081E59BE00E944D541A +:1054700013FF05C060E08EEA9BE00E944D542C961D +:105480000FB6F894DEBF0FBECDBFDF91CF911F9155 +:105490000F91FF90EF9008951F920F920FB60F9209 +:1054A00011240BB60F922F933F934F935F936F93FB +:1054B0007F938F939F93AF93BF93EF93FF938091CD +:1054C000C6008F33A9F050F4883109F1813211F50B +:1054D0009FB7F89480916A0E886015C0803471F08F +:1054E0008E37C1F49FB7F89480916A0E82600BC02A +:1054F0009FB7F89480916A0E816005C09FB7F894B9 +:1055000080916A0E806280936A0E9FBF14C00E94D1 +:10551000174E11C0E091B80C91E09E0F903809F43D +:1055200090E02091B70C921731F0F0E0E95CF34F76 +:1055300080839093B80CFF91EF91BF91AF919F91B1 +:105540008F917F916F915F914F913F912F910F902C +:105550000BBE0F900FBE0F901F9018951F920F92C9 +:105560000FB60F9211240BB60F928F939F93EF9368 +:10557000FF9380913A0DE82FF0E0E654F34F9081CD +:105580009093C6008F5F803809F480E080933A0DD5 +:105590009091B90C891305C08091C1008F7D8093D3 +:1055A000C100FF91EF919F918F910F900BBE0F90D3 +:1055B0000FBE0F901F901895E091B90C91E09E0FCF +:1055C000903831F490E004C020916A0E24FD0FC0A1 +:1055D00020913A0D9217C1F3F0E0E654F34F808327 +:1055E0009093B90C8091C10080628093C1000895AE +:1055F000CF93C82F88E798E027D3C830B1F190F453 +:10560000C43051F148F4C23001F118F5C13009F04D +:1056100040C080E698E01BC0C63009F118F581E271 +:1056200098E015C0C43169F140F4CA3021F100F1AD +:10563000CB3079F583E993E02AC0C63129F1F0F047 +:10564000C23339F58DE993E022C08EE498E0FCD2B4 +:1056500025C08CE398E0FBCF82E398E0F8CF82E1AD +:1056600098E0F5CF81EF97E0F2CF88EE97E0EFCFAB +:105670008DED97E0ECCF8AEC97E0E9CF84EB97E0F3 +:10568000E6CF88E993E003C080EA97E0E0CF44D515 +:1056900005C08EE897E0D8D28C2FC8D28BE897E06F +:1056A000CF91D2C20F931F93CF93DF9385E897E0FA +:1056B000CBD2C4EFDEE0688979898A899B890E9410 +:1056C00070650CE61EE0F801208131814281538132 +:1056D0000E94D5649DD283E897E0B6D26C897D891B +:1056E0008E899F890E947065F801248135814681E9 +:1056F00057810E94D5648CD283E897E0A5D2688D4B +:10570000798D8A8D9B8D0E947065F8012085318589 +:10571000428553850E94D5647BD281E897E094D27C +:105720008C8D84D28DE797E0DF91CF911F910F91FF +:105730008BC2FF920F931F93CF93DF9389E797E07C +:1057400083D280919C0E72D280E697E07DD28091C8 +:105750009F0E6CD282E497E077D280919D0E66D244 +:1057600089E297E071D280919D0E6BD282E297E040 +:105770006BD280919E0E5AD28AE097E065D28091DA +:105780009E0E5FD283E097E05FD28091A90E82FBEC +:10579000882780F94BD282EE96E056D28091A90EEE +:1057A00086FB882780F942D282EC96E04DD2809128 +:1057B000A90E881F8827881F39D282EA96E044D232 +:1057C0008091A00E33D28CE896E03ED28091A00E5C +:1057D00038D284E896E038D26091A10E7091A20E82 +:1057E0008091A30E9091A40E03D284E696E02CD271 +:1057F0006091A50E7091A60E8091A70E9091A80EB3 +:10580000F7D189E496E020D28091A90E81700ED262 +:105810008CE296E019D28091A90E85FB882780F949 +:1058200005D281E196E010D28091A90E83FB8827F2 +:1058300080F9FCD186EF95E007D28091A90E829580 +:105840008170F4D18AED95E0FFD18091AA0EEED15E +:1058500080EC95E0F9D18091AA0EF3D188EB95E028 +:10586000F3D16091AB0E7091AC0E8091AD0E909122 +:10587000AE0EBED18BE995E0E7D16091AF0E70918D +:10588000B00E8091B10E9091B20EB2D18EE795E03C +:10589000DBD18091B30ECAD18FE595E0D5D160916F +:1058A000B50E7091B60E8091B70E9091B80EA0D142 +:1058B00086E495E0C9D184E6F82EC0E00CE61EE04F +:1058C000D0E084E495E0C0D18D2F8F0DAFD182E47C +:1058D00095E0BAD1C23079F0F801C330C1F0C130DF +:1058E00029F0608171818281938118C064857585FA +:1058F0008685978513C020E030E041E655E4F80145 +:10590000608D718D828D938D0E94D56407C084A1B6 +:1059100095A1A6A1B7A1BC01CD01905869D18FE393 +:1059200095E092D1D13029F0D23031F08DE395E07D +:1059300005C08BE395E002C089E395E085D1C230D4 +:1059400051F0C33059F0C13019F08FE295E008C032 +:105950008DE195E005C08CE095E002C08CEF94E00D +:1059600073D188EF94E070D1DF5F0C5F1F4FD330AD +:1059700009F0A7CFFAE0FF0ECF5F8CE8F8129ECFB8 +:10598000DF91CF911F910F91FF90089580E090E0FB +:105990000E94AC54893051F44DE450E061E078E06D +:1059A0008CE69EE00E94B454892B29F487E020DE27 +:1059B0008FEF6ADCBECE08959FB7F89480916A0E8F +:1059C000826080936A0E9FBF08958F929F92AF92DC +:1059D000BF92CF92DF92EF92FF920F931F93CF93DC +:1059E000DF93CDB7DEB72A970FB6F894DEBF0FBEB0 +:1059F000CDBF6B017C01042F20E030E0A9010E94A3 +:105A0000CE6487FF06C08DE2D7DDF7FAF094F7F891 +:105A1000F094102F123060F020E030E048EC52E4B7 +:105A2000C701B6010E9427676B017C011250F2CFBB +:105A300000FF0AC020E030E040E251E4C701B601B7 +:105A40000E9427676B017C0120E030E040E05FE3CB +:105A5000C701B6010E94F5630E943D65E1E0F0E0F8 +:105A6000EC0FFD1FE00FF11D2EE2208310E03AE065 +:105A7000832E912CA12CB12C611571058105910506 +:105A8000A9F0101301C01F5FEE24E394F12CEC0E7B +:105A9000FD1EE10EF11CA50194010E943868605DB5 +:105AA000F7016083B901CA011F5FE6CF80E31017D9 +:105AB00048F4E1E0F0E0EC0FFD1FE10FF11D808301 +:105AC0001F5FF5CF10130BC012E0100F0F5FE1E066 +:105AD000F0E0EC0FFD1FE00FF11D80E38083112348 +:105AE00039F0FE01E10FF11D808166DD1150F7CF25 +:105AF0002A960FB6F894DEBF0FBECDBFDF91CF91CF +:105B00001F910F91FF90EF90DF90CF90BF90AF90DB +:105B10009F908F900895EF92FF920F931F93CF93D2 +:105B2000DF931F92CDB7DEB7362FEDB6FEB66DB759 +:105B30007EB7641B71090FB6F8947EBF0FBE6DBFB0 +:105B40000DB71EB70F5F1F4F202FF8019E2F921B1E +:105B5000941728F4632F0E9418689193F7CF442379 +:105B600059F0F801E40FF11D31978081805D498380 +:105B700023DD49814150F3CF0FB6F894FEBE0FBE2E +:105B8000EDBE0F90DF91CF911F910F91FF90EF909D +:105B900008951F93CF93DF93CDB7DEB7C058D109D7 +:105BA0000FB6F894DEBF0FBECDBFAE0149575F4FB1 +:105BB000FA0161917191AF01CE0101960E94DD68F9 +:105BC00010E0E1E0F0E0EC0FFD1FE10FF11D80813E +:105BD000882319F0F1DC1F5FF4CFC058DF4F0FB6F8 +:105BE000F894DEBF0FBECDBFDF91CF911F91089516 +:105BF00043E0EBCE2091A90E20FF08C02BE832E451 +:105C000041E25DE30E94276741E001C040E0DDCE54 +:105C10002091A90E20FF08C02BE832E441E25DE3A9 +:105C20000E94276744E001C043E0CFCE8A3020F0D5 +:105C3000843620F043E003C041E001C042E06AE066 +:105C40006ACF48E062E067CFCF93DF93FC01849195 +:105C5000EF012196882319F0AFDCFE01F8CFDF9128 +:105C6000CF9108952F923F924F925F926F927F92C1 +:105C70008F929F92AF92BF92CF92DF92EF92FF925C +:105C80000F931F93CF93DF93CDB7DEB768970FB60F +:105C9000F894DEBF0FBECDBF01E099E2A92E28E047 +:105CA000722E30E2632E40E1B42E50E4552E62E0B5 +:105CB000462E7CE0372E1091F30E112309F451C0CB +:105CC0000093F50E11FF06C088EC98E0BDDF8DEB68 +:105CD00098E01FC012FF06C088EC98E0B5DF82EBA9 +:105CE00098E017C013FF06C088EC98E0ADDF8FE99D +:105CF00098E00FC014FF06C088EC98E0A5DF84E9A7 +:105D000098E007C015FF0DC088EC98E09DDF88E89B +:105D100098E09ADF85E898E097DF84EF91E00E94B1 +:105D2000484D10FD08C08FB7F8949091F30E109273 +:105D3000F30E8FBF16C085E999E086DF83E899E00E +:105D400083DF82E299E080DF9FB7F89480916A0E4A +:105D50008F7E80936A0E9FBF80916A0E84FFFCCF76 +:105D6000E2CF10916A0E112309F4ACC114FF04C0F4 +:105D700081E08093F40EB7C110FFE2C0E8EFFEE0CF +:105D8000DE011D96832D01900D928A95E1F7809199 +:105D9000F50E8430E9F040F48130E9F080F0823093 +:105DA00001F58DEF98E01CC0803179F018F488304F +:105DB00049F017C0803291F0803421F012C08CE19C +:105DC00099E00EC087E199E00BC081E199E008C03D +:105DD0008BE099E005C084E099E002C087EF98E08D +:105DE00033DF8091A00E837039F0BE01635F7F4F77 +:105DF000CE0101960E9476418091A00E80FD05C0E3 +:105E00008091A00E81FF65C019C080EF98E01CDF73 +:105E100069817A818B819C81FBDE8EEE98E014DFB4 +:105E20006D817E818F819885F3DE8EEE98E00CDFA8 +:105E300069857A858B859C85EBDEE2CF87EE98E0DD +:105E400003DF8EE4C82E8EE0D82ECE0101967C01B1 +:105E5000212C4701F60161917191819191916F011E +:105E600020853185428553850E94F5639B01AC01F5 +:105E7000F70160817181828193810E94F463F7014F +:105E80006083718382839383F2E02F120FC020918D +:105E9000660E3091670E4091680E5091690E0E9417 +:105EA000F463F7016083718382839383F4E0EF0EE0 +:105EB000F11CF4016081718182819381A9DEF2E09D +:105EC0002F1619F085EE98E0BFDE239423E022120E +:105ED000C0CF8091A00E82FF0CC08FED98E0B4DEA1 +:105EE0008091291290912812891708F48E5E891BDF +:105EF0009DDE8091A00E83FF0CC08AED98E0A4DEA9 +:105F00009091B70C8091B80C891708F48058891BC0 +:105F10008DDE8091A00E84FF08C084ED98E094DEB1 +:105F20000E94365243E062E0F6DD80ED98E08CDEC0 +:105F30009FB7F89480916A0E8E7F80936A0E9FBF00 +:105F4000812F887609F441C08091F50E882349F0AD +:105F5000982F9C7791F1883021F40E94ED410093B5 +:105F6000F60E8091F50E811102C04092F60E16FFDA +:105F700009C0883011F45092F50E8091F60E8860B9 +:105F80008093F60E13FF05C08091F50E85FFB09249 +:105F9000F50E15FF12C085E999E056DE81E499E01F +:105FA00053DE82E299E050DE8091F60E81FD1460AE +:105FB00084608093F60E6092F50E9FB7F8948091FE +:105FC0006A0E877980936A0E9FBF11FF57C0812F99 +:105FD000887609F04BC08091F50E882339F08075E2 +:105FE00009F444C08091F60E81FF40C08091F60E06 +:105FF00082FF20C08091340E882371F04091350ECD +:106000005091360E6091370E7091380E0E94B52770 +:1060100080EA9FE00E94484D8091330E882351F022 +:10602000823011F45C9A02C00E94F85488EE93E02A +:106030000E94484D8091281290912912981791F052 +:10604000A89EC00111248A5B904F892B59F0809142 +:10605000F60E83FD07C07092F50E0E940F420E945B +:10606000822702C01092F50E1092F60E9FB7F89498 +:1060700080916A0E8D7F80936A0E9FBF12FF22C0AF +:106080008091F50E807391F08091F70E81110EC012 +:106090008091F60E82FF04C00E94AE270E94F85441 +:1060A0008091F60E82608093F60E04C01092F60E78 +:1060B0001092F50E9FB7F89480916A0E8B7F8093B3 +:1060C0006A0E9FBF8091F50E8C7711F00E940F42EF +:1060D0009091F50E8091F60E903219F481FDB092F8 +:1060E000F50E8111E8CD68960FB6F894DEBF0FBEAD +:1060F000CDBFDF91CF911F910F91FF90EF90DF9077 +:10610000CF90BF90AF909F908F907F906F905F9057 +:106110004F903F902F900895CF93DF93EC0189919A +:10612000882311F049DAFBCFDF91CF910895ECE39A +:10613000FDE0A4EFBEE014964D915D916D917C91D0 +:106140001797408351836283738318964D915D91B5 +:106150006D917C911B9744835583668377831C964E +:106160008D919D910D90BC91A02D80879187A287E4 +:10617000B38708952F923F924F925F926F927F92D2 +:106180008F929F92AF92BF92CF92DF92EF92FF9247 +:106190000F931F93CF93DF93CDB7DEB7E7970FB67B +:1061A000F894DEBF0FBECDBF4B8F5C8F6D8F072F76 +:1061B0002FAB209129122EA3422F50E05BA34AA3BC +:1061C00039E2239FF0011124EA5BF04F1586168611 +:1061D0001786108A15A216A217A210A6108249E9E6 +:1061E00056E766E97EE741A352A363A374A399A38C +:1061F00088A34CE65EE058A74FA3CE010D9698AB5E +:106200008FA72CE33DE03EA72DA7AE014F5F5F4F68 +:106210005DA34CA38EA129E2829FC00111249EABF5 +:106220008DAB5F8F4E8F2CE33DE03AA729A74CE65C +:106230005EE05AAB49AB612C712C10E02F01CF010D +:106240000D969CAB8BAB1F0195E2290E311CE8A18A +:10625000F9A16191719181919191F9A3E8A3E9A9C3 +:10626000FAA981909190A190B190FAABE9ABA50108 +:1062700094010E9427670E94F766EFA5F8A9619331 +:10628000719381939193F8ABEFA7E9A5FAA5C1901B +:10629000D190E190F190FAA7E9A76C197D098E09D8 +:1062A0009F096B017C0197FF07C0CC24DD24760198 +:1062B000C61AD70AE80AF90AEDA9FEA9E60DF71DE4 +:1062C000EA5BF04FC182D282E382F482EBA9FCA99F +:1062D0002081318142815381C216D306E406F5063E +:1062E00010F469017A01EBA9FCA9C082D182E28293 +:1062F000F3820E947065A50194010E94D5644B0150 +:106300005C01EE8DFF8D6193719381939193FF8F6B +:10631000EE8F20E030E0A9010E94CE6487FF0DC01F +:10632000112321F0113021F094E003C091E001C06D +:1063300092E0F2018081892B8083A5019401C5013F +:10634000B4010E942767F10120813181428153818C +:106350000E94F563F10160837183828393831F5FE1 +:10636000F4E06F0E711C2CE06216710409F06FCF1F +:106370000E94B4674B015C01F101608371838283E9 +:106380009383CD28CE28CF2809F426C220E030E020 +:10639000A9016B8D7C8D8D8D902F0E94CE6487FD21 +:1063A00021C0FFA9FF2361F0A50194016B8D7C8DB5 +:1063B0008D8D902F0E9427676B8F7C8F8D8F092F7B +:1063C00020E030E040E85FE36B8D7C8D8D8D902F79 +:1063D0000E94CE6487FF0DC01B8E1C8E20E82D8F7F +:1063E0000FE307C039E93B8F46E74C8F56E95D8FD5 +:1063F0000EE7A501940160E070E080E89FE30E9451 +:10640000D56469A77AA78BA79CA7CE010D969A8F12 +:10641000898FC12CD12C760129E2EAA1FBA12E9F04 +:10642000C0012F9F900D11249C012959304F39A391 +:1064300028A3ECA1FDA180809180A280B38020E000 +:1064400030E0A901C501B4010E94CE64882309F49B +:1064500075C029A53AA54BA55CA5C501B4010E944C +:1064600027672B013C01ECA1FDA16083718382832E +:1064700093839B01AC0160E070E080E89FE30E94A1 +:10648000D5644B015C01E894B7F8EFA1F8A5248529 +:10649000358546855785C501B4010E9427671B01D4 +:1064A0008E8F192F9B01482F592F6B8D7C8D8D8DD1 +:1064B000902F0E94CE6487FD05C02B8E3C8EFE8DF2 +:1064C000FD8F012FE8A1F9A120803180F281FE8F9C +:1064D000E8A1F9A11381EFA1F8A5208D318D428D9E +:1064E000538DC501B4010E9427674B015C019B01DC +:1064F000AC01B1018E8D912F0E94CE6487FD03C047 +:106500001401AE8E1B2DC101AE8DB12FE8A1F9A1F2 +:1065100080839183A283B383EDA5FEA52485358571 +:1065200046855785C301B2010E9427679B01AC01D4 +:10653000C701B6010E94F4636B017C012CA13DA14F +:106540002C5F3F4F3DA32CA34DA55EA54C5F5F4F35 +:106550005EA74DA78FA198A5049698A78FA3E98D54 +:10656000FA8D2E173F0709F064CF80912812FEA103 +:10657000F8130FC089E22AA13BA1829FF001839FFB +:10658000F00D1124EA5BF04F118A128A138A148AE3 +:1065900014C02FEE3FEF4FE75FE3C701B6010E9443 +:1065A000EC6618167CF489E24AA15BA1849FF00195 +:1065B000859FF00D1124EA5BF04F118E128E138E21 +:1065C000148E6AC02FEE3FEF4FE75FEBC701B601B5 +:1065D0000E94EC66181644F08FEEC82EDD24DA9483 +:1065E0008FE7E82E8FEBF82EA701960160E070E0B0 +:1065F00080E89FE30E94F46320E030E040E05FE346 +:106600000E9427670E94B4676B017C0189E22AA17E +:106610003BA1829FF001839FF00D1124EA5BF04FB4 +:106620002091A10E3091A20E4091A30E5091A40E84 +:1066300061A172A183A194A10E942767A70196017D +:106640000E9427674B015C01A701960160E070E0A2 +:1066500080E89FE30E94F4639B01AC01C501B40193 +:106660000E94D5646B017C0120E030E0A9010E940A +:10667000CE6487FF03C0C12CD12C760189E24AA1E8 +:106680005BA1849FF001859FF00D1124EA5BF04F20 +:10669000C18ED28EE38EF48E2B8D3C8D4D8D502F7E +:1066A0006B8D7C8D8D8D902F0E9427677B018C01D7 +:1066B00089E22AA13BA1829FF001839FF00D112462 +:1066C000EA5BF04FC701D801858F968FA78FB0A3E3 +:1066D000A18CB28CC38CD48C6090540D7090550DED +:1066E0008090560D9090570D9301A401B701C801F9 +:1066F0000E94CE6487FD05C0762D672D982D892DCB +:1067000004C07E2D6F2D902F812F272F362F492FDC +:10671000582FB501C6010E94CE6487FD0DC09301BC +:10672000A401B701C8010E94CE6487FD03C05301D4 +:10673000640102C05701680189E24AA15BA1849FFC +:10674000F001859FF00D1124EA5BF04FC501D601E1 +:10675000858B968BA78BB08F8CE0FE013196A8E4D9 +:10676000BDE001900D928A95E1F7C701D8018093B1 +:10677000540D9093550DA093560DB093570D8CE08A +:10678000FE013D96ACE3BDE001900D928A95E1F7E4 +:1067900080913B0D809329128F5F823109F480E054 +:1067A00080933B0DE7960FB6F894DEBF0FBECDBFCA +:1067B000DF91CF911F910F91FF90EF90DF90CF90DD +:1067C000BF90AF909F908F907F906F905F904F9011 +:1067D0003F902F900C94BF4BE7960FB6F894DEBF16 +:1067E0000FBECDBFDF91CF911F910F91FF90EF9022 +:1067F000DF90CF90BF90AF909F908F907F906F90E1 +:106800005F904F903F902F900895CF93DF93C62FC6 +:10681000813009F47DC0F8F0823009F04EC134D5E2 +:106820008CE6C2D40BD58C2FBFD408D52DD58DE6E0 +:10683000BBD404D562E070E080E090E00E940A4D95 +:10684000559A5D9A62E070E080E090E00E940A4D07 +:10685000D8E0C0E0F0C08DD68CE61BD664D68C2F75 +:1068600018D661D686D68DE614D65DD662E070E085 +:1068700080E090E00E940A4D399A419A62E070E00F +:1068800080E090E00E940A4DD8E0C0E0439865E0C7 +:1068900070E080E090E00E940A4D439ACC0F65E0E2 +:1068A00070E080E090E00E940A4D39983199C16013 +:1068B00065E070E080E090E00E940A4DD15031F731 +:1068C0004398399A419A62E070E080E090E00E943B +:1068D0000A4D439A65E070E080E090E00E940A4D26 +:1068E000439862E070E080E090E00E940A4D399A9F +:1068F000419A62E070E080E090E00E940A4D439887 +:1069000062E070E080E090E00E940A4DF4D5D6C0CD +:106910008ED58CE6D1D450D58C2FCED44DD587D5FD +:106920008DE6CAD449D562E070E080E090E00E9434 +:106930000A4D8091010184608093010180910201E0 +:1069400084608093020162E070E080E090E00E9449 +:106950000A4DD8E0C0E0809102018F778093020158 +:1069600065E070E080E090E00E940A4D80910201B5 +:10697000806880930201CC0F65E070E080E090E0D9 +:106980000E940A4D809101018B7F809301018091CB +:10699000000182FDC16065E070E080E090E00E944F +:1069A0000A4DD150C1F6809102018F778093020188 +:1069B00080910101846080930101809102018460D3 +:1069C0008093020162E070E080E090E00E940A4D56 +:1069D0008091020180688093020165E070E080E0B0 +:1069E00090E00E940A4D809102018F77809302010E +:1069F00062E070E080E090E00E940A4D8091010129 +:106A0000846080930101809102018460809302017F +:106A100062E070E080E090E00E940A4D8091020107 +:106A20008F778093020162E070E080E090E00E9446 +:106A30000A4D90D443C05E9865E070E080E090E03D +:106A40000E940A4D5E9ACC0F65E070E080E090E015 +:106A50000E940A4D55984D99C16065E070E080E054 +:106A600090E00E940A4DD15031F75E98559A5D9A98 +:106A700062E070E080E090E00E940A4D5E9A65E07E +:106A800070E080E090E00E940A4D5E9862E070E065 +:106A900080E090E00E940A4D559A5D9A62E070E0B5 +:106AA00080E090E00E940A4D5E9862E070E080E035 +:106AB00090E00E940A4DAAD301C0C0E08C2FDF9164 +:106AC000CF910895E4E2FEE0A481B5819C010E948B +:106AD0006268A1E0B1E02C9128602C93A0EAB0E0BC +:106AE0002C9120682C93DC01CB012AE0B695A79568 +:106AF000979587952A95D1F79093A9008093A80040 +:106B0000868180618093A1000895CF93DF9321E572 +:106B1000829FC0011124EC01D55F40E550E0BE0129 +:106B200084ED9DE00E94B454892B59F41092D40D49 +:106B300040E550E064ED7DE0CE010E946F5480E0BE +:106B400001C081E0DF91CF9108951F920F920FB69F +:106B50000F9211240BB60F922F933F934F935F9395 +:106B60006F937F938F939F93AF93BF93EF93FF9315 +:106B70008091CF0D9091D00D9093250180932401A9 +:106B8000E091CD0DF091CE0D309709F01995FF9160 +:106B9000EF91BF91AF919F918F917F916F915F9195 +:106BA0004F913F912F910F900BBE0F900FBE0F9002 +:106BB0001F9018951F920F920FB60F9211240BB6CB +:106BC0000F922F933F934F935F936F937F938F9386 +:106BD0009F93AF93BF93EF93FF938091260E909175 +:106BE000270E9093A5008093A400E091240EF091CD +:106BF000250E309709F01995FF91EF91BF91AF9154 +:106C00009F918F917F916F915F914F913F912F91C4 +:106C10000F900BBE0F900FBE0F901F9018951F92F4 +:106C20000F920FB60F9211248F939F9380910802B9 +:106C30009091090290939500809394009F918F9179 +:106C40000F900FBE0F901F9018951F920F920FB6C6 +:106C50000F9211240BB60F922F933F934F935F9394 +:106C60006F937F938F939F93AF93BF93EF93FF9314 +:106C70008091C80D9091C90D8093B200E091C60D2E +:106C8000F091C70D309709F01995FF91EF91BF91E1 +:106C9000AF919F918F917F916F915F914F913F91B4 +:106CA0002F910F900BBE0F900FBE0F901F90189555 +:106CB0008A98E8E0F1E080818E7F80835F98E2E748 +:106CC000F0E080818E7F80831092C00D0895CF9375 +:106CD000DF93EB018431D1F028F4882361F08C300C +:106CE000A8F437C08233E9F018F4873190F10EC070 +:106CF000833311F10BC08881882329F062EA73E0A5 +:106D0000CE010E947B6864EA73E020C088818823FA +:106D100029F062EA73E0CE010E947B6867EA73E0C3 +:106D200015C08881882329F062EA73E0CE010E94B1 +:106D30007B686BEA73E00AC08881882329F062EAE5 +:106D400073E0CE010E947B686FEA73E0CE010E947F +:106D50007B688091600D882379F060E67DE0CE014C +:106D60000E947B6882E3E0E6FDE0DF011D928A95E8 +:106D7000E9F7DF91CF91089564ED72E0CE01DF91E4 +:106D8000CF910C947B68E1E0F1E0808180628083A8 +:106D9000808180648083E2E0F1E080818F7D808368 +:106DA00080818F7B808308953F9A479A08959C9AAB +:106DB0009D9AA498A59A0895EF92FF920F931F931E +:106DC000CF93DF93CDB7DEB760970FB6F894DEBFF1 +:106DD0000FBECDBF9AEC980F863308F0892FA82FED +:106DE000A87087708064FE013196BE016F5E7F4F90 +:106DF000AF0190917B00977F9A2B90937B008093BB +:106E00007C0090917A00906490937A0090917A003F +:106E100096FFFCCF209178009091790030E0392BDB +:106E200021933193E617F70721F720E030E060E087 +:106E3000862F90E0F901E80FF91F3797D4F4880FF7 +:106E4000991F8A01080F191FF801A081B1810296CC +:106E50007A01E80EF91EF701808191818A179B075C +:106E600030F4F80191838083F701B183A0836F5FD1 +:106E7000DFCF2F5F3F4F28303105C9F62F8138858E +:106E80008D819E81820F931F29853A85820F931FE2 +:106E90002B853C85820F931F9695879596958795B0 +:106EA00060960FB6F894DEBF0FBECDBFDF91CF91D5 +:106EB0001F910F91FF90EF900895809104018778C2 +:106EC00080930401809103018877803451F463EB4F +:106ED00073E088E59DE00E94866840E050E0BA01DA +:106EE0000EC080910301887769F46AEB73E088E54E +:106EF0009DE00E94866840E050E060EE70E483E030 +:106F00000E9418280C94C62C2091160F3091170F50 +:106F100021153105B9F080911D0F90911E0F821738 +:106F2000930734F4019690931E0F80931D0F0AC0AF +:106F300010921E0F10921D0F1092170F1092160F25 +:106F40001092C10D2091140F3091150F21153105AC +:106F5000A1F080911B0F90911C0F8217930734F4BE +:106F6000019690931C0F80931B0F07C010921C0F6B +:106F700010921B0F81E08093C20D8091C10D811191 +:106F80001BC08091130F811117C0809173008E7FF9 +:106F9000809373001092120F1092170F1092160F19 +:106FA0001092150F1092140F10921E0F10921D0FB9 +:106FB00010921C0F10921B0F089580911A0F8111CF +:106FC00007C081E080931A0F80910B01806205C099 +:106FD00010921A0F80910B018F7D80930B0180918D +:106FE000180F9091190F9C012F5F3F4F3093190F8D +:106FF0002093180F209104023091050228173907B9 +:1070000048F41092190F1092180F809170008E7F23 +:10701000809370000895CF93DF936091920D84E880 +:1070200093E00E944D546091930D85E893E00E9497 +:107030004D5488E993E0EC012196FC01E450F64FB1 +:1070400060810E944D54CE01CC39D340A1F78EE827 +:1070500093E0EC012196FC01E65FF54F60810E9410 +:107060004D54CE01C239D340A1F7DF91CF9108959D +:10707000CF92DF92EF92FF920F931F93CF93DF9304 +:1070800069017A01EAE0F1E0208120622083EBE0EF +:10709000F1E020812F7D2083660F771F709305021A +:1070A0006093040206EC1DE08DED97E3F8019183F7 +:1070B0008083C0E7D0E088818E7F8883E0EBF0E0BA +:1070C00080818C7F8083E1EBF0E08081877F80830B +:1070D000A6EBB0E08C918F7D8C9388818D7F888327 +:1070E00080818460808380818C7F808320E034E293 +:1070F00044EF59E4C701B6010E94D56420E034E2B0 +:1071000044E75BE40E94276720E030E040E85CE36E +:107110000E9427670E943D6520E031E0C901861B7F +:10712000970BF80193838283828193818093B200CD +:10713000888181608883DF91CF911F910F91FF90AB +:10714000EF90DF90CF900895E1EAF0E080E1808356 +:107150001092A000A4E2BEE082E016968C931697EF +:1071600080E29EE415969C938E9314979093A700CB +:107170008093A60082E1808320E030E048EA51E479 +:1071800060910002709101028091020290910302CD +:107190000E94D56420E030EC4FE754E40E9427675A +:1071A0000E944265CB018ECCCF93DF93D82FC8E0ED +:1071B0005E98559AD7FF02C05D9A01C05D9865E060 +:1071C00070E080E090E00E940A4D5E9A65E070E019 +:1071D00080E090E00E940A4D5E98DD0F65E070E06F +:1071E00080E090E00E940A4DC15011F762E070E02B +:1071F00080E090E00E940A4D559A5D9A62E070E04E +:1072000080E090E0DF91CF910C940A4D5E98559A02 +:107210005D9865E070E080E090E00E940A4D5E9A23 +:1072200065E070E080E090E00E940A4D559A5D9A1A +:1072300065E070E080E090E00C940A4DCF93559AA1 +:107240005D9A62E070E080E090E00E940A4D5E9AF4 +:1072500062E070E080E090E00E940A4D55989BEF5C +:1072600089B1C82FC07285FF05C09150C9F7CEDF24 +:10727000C1E007C05E9862E070E080E090E00E94AC +:107280000A4D8C2FCF910895559A5D9A5E9A65E0CC +:1072900070E080E090E00E940A4D559A5D9865E0AC +:1072A00070E080E090E00E940A4D5E9862E070E03D +:1072B00080E090E00C940A4DCF93DF93D82FC8E084 +:1072C000809102018F778093020180910101846097 +:1072D0008093010180910201D7FF02C0846001C048 +:1072E0008B7F8093020165E070E080E090E00E9477 +:1072F0000A4D8091020180688093020165E070E090 +:1073000080E090E00E940A4D809102018F77809387 +:107310000201DD0F65E070E080E090E00E940A4D20 +:10732000C15071F662E070E080E090E00E940A4D8A +:107330008091010184608093010180910201846049 +:107340008093020162E070E080E090E0DF91CF91F5 +:107350000C940A4D0F931F93CF93DF93C2E0D1E0BB +:1073600088818F77888301E011E0F8018081846053 +:10737000808388818B7F888365E070E080E090E087 +:107380000E940A4D88818068888365E070E080E013 +:1073900090E00E940A4DF80180818460808388819A +:1073A0008460888365E070E080E090E0DF91CF91B9 +:1073B0001F910F910C940A4DCF938091010184602D +:1073C000809301018091020184608093020162E058 +:1073D00070E080E090E00E940A4D80910201806898 +:1073E0008093020162E070E080E090E00E940A4D2C +:1073F000809101018B7F809301019BEF80910001BF +:10740000C82FC47082FF05C09150C1F7A3DFC1E04F +:107410000BC0909102019F779093020162E070E0AF +:1074200080E090E00E940A4D8C2FCF9108950F9339 +:107430001F93CF93DF9301E011E0F8018081846016 +:107440008083C2E0D1E088818460888388818068FD +:10745000888365E070E080E090E00E940A4DF801CA +:1074600080818460808388818B7F888365E070E081 +:1074700080E090E00E940A4D88818F77888362E0E7 +:1074800070E080E090E0DF91CF911F910F910C941C +:107490000A4DCF93DF93D82FC8E04398399AD7FF8E +:1074A00002C0419A01C0419865E070E080E090E040 +:1074B0000E940A4D439A65E070E080E090E00E94EF +:1074C0000A4D4398DD0F65E070E080E090E00E9497 +:1074D0000A4DC15011F762E070E080E090E00E9438 +:1074E0000A4D399A419A62E070E080E090E0DF91C5 +:1074F000CF910C940A4D4398399A419865E070E019 +:1075000080E090E00E940A4D439A65E070E080E0E0 +:1075100090E00E940A4D399A419A65E070E080E05F +:1075200090E00C940A4DCF93399A419A62E070E052 +:1075300080E090E00E940A4D439A62E070E080E0B3 +:1075400090E00E940A4D39989BEF86B1C82FC27017 +:1075500081FF05C09150C9F7CEDFC1E007C0439855 +:1075600062E070E080E090E00E940A4D8C2FCF91A5 +:107570000895399A419A439A65E070E080E090E07E +:107580000E940A4D399A419865E070E080E090E0F1 +:107590000E940A4D439862E070E080E090E00C9415 +:1075A0000A4D4F925F926F927F92AF92BF92CF92AD +:1075B000DF92EF92FF920F931F93CF93DF935C01C3 +:1075C000EB018A01FC01408051806280738020E0E1 +:1075D00030E0A901C301B2010E94CE6420E030E096 +:1075E000A901811111C0688179818A819B810E94E2 +:1075F000EC661816E4F02AEDC22E2FE0D22E29EC0C +:10760000E22E2FEBF22E22C0C301B2010E94CE6403 +:1076100087FD16C0A3019201688179818A819B81CF +:107620000E94D5640E9493646B017C010FC09AEDA7 +:10763000C92E9FE0D92E99ECE92E9FE3F92E06C0C2 +:10764000C12CD12C80ECE82E8FE7F82EC701B601B3 +:107650000E94D2642091940D3091950D4091960D29 +:107660005091970D0E9427679B01AC01C301B201A5 +:107670000E94F463F5016083718382839383C70161 +:10768000B6010E94AA672091940D3091950D40910A +:10769000960D5091970D0E9427679B01AC01688160 +:1076A00079818A819B810E94F463688379838A83CC +:1076B0009B832091980D3091990D40919A0D509196 +:1076C0009B0DF80160817181828193810E94F56335 +:1076D000F8016083718382839383DF91CF911F913F +:1076E0000F91FF90EF90DF90CF90BF90AF907F9081 +:1076F0006F905F904F9008954F925F926F927F923C +:10770000AF92BF92CF92DF92EF92FF920F931F93AF +:10771000CF93DF935C01EB018A01FC014080518033 +:107720006280738020E030E0A901C301B2010E94B1 +:10773000CE6420E030E0A901811111C06881798117 +:107740008A819B810E94EC661816E4F02AEDC22E15 +:107750002FE0D22E29ECE22E2FEBF22E22C0C30115 +:10776000B2010E94CE6487FD16C0A3019201688118 +:1077700079818A819B810E94D5640E9493646B0108 +:107780007C010FC09AEDC92E9FE0D92E99ECE92E0D +:107790009FE3F92E06C0C12CD12C80ECE82E8FE798 +:1077A000F82EC701B6010E94D2642091940D309149 +:1077B000950D4091960D5091970D0E9427679B0162 +:1077C000AC01C301B2010E94F563F50160837183CE +:1077D00082839383C701B6010E94AA672091940D0A +:1077E0003091950D4091960D5091970D0E9427670D +:1077F0009B01AC01688179818A819B810E94F5633C +:10780000688379838A839B832091980D3091990DA9 +:1078100040919A0D50919B0DF80160817181828198 +:1078200093810E94F463F801608371838283938360 +:10783000DF91CF911F910F91FF90EF90DF90CF904C +:10784000BF90AF907F906F905F904F9008952F9270 +:107850003F924F925F926F927F928F929F92AF92E0 +:10786000BF92CF92DF92EF92FF920F931F93CF932D +:10787000DF93CDB7DEB72C970FB6F894DEBF0FBEFF +:10788000CDBF160135012401FE0131964F0134961A +:107890005F0134966F01C4D2E980FA800B811C81AC +:1078A0002D813E814F81588569857A858B859C85A0 +:1078B000420153016101CFD12C960FB6F894DEBF7F +:1078C0000FBECDBFDF91CF911F910F91FF90EF9031 +:1078D000DF90CF90BF90AF909F908F907F906F90F0 +:1078E0005F904F903F902F9008952F923F924F922C +:1078F0005F926F927F928F929F92AF92BF92CF9240 +:10790000DF92EF92FF920F931F93CF93DF93CDB748 +:10791000DEB766970FB6F894DEBF0FBECDBF6983A2 +:107920007A838B839C832D833E834F8358872701E3 +:1079300038011601BA8AA98A84019B01AC010E9410 +:1079400027676B017C012D813E814F815885CA01DB +:10795000B9010E9427679B01AC01C701B6010E94D3 +:10796000F5630E94B46723E333E343E551E40E94E7 +:10797000F46369877A878B879C8723E333E344ED3D +:1079800052E4C301B2010E94F4632B013C0129853A +:107990003A854B855C85CA01B9010E9427676B0156 +:1079A0007C01A3019201C301B2010E9427679B01E0 +:1079B000AC01C701B6010E94F5636B017C0128E8A8 +:1079C0003BEE4DE955E40E94F4634B015C0120E07D +:1079D00038E84DE957E4C701B6010E9427676D8773 +:1079E0007E878F87988BA5019401C501B4010E9401 +:1079F00027679B01AC016D857E858F8598890E94E4 +:107A0000F4630E94B4676B8B7C8B8D8B9E8BA7017C +:107A10009601C701B6010E94F5636D877E878F8747 +:107A2000988BA501940169857A858B859C850E9438 +:107A300027674B015C012B893C894D895E89C30115 +:107A4000B2010E9427679B01AC01C501B4010E94ED +:107A5000F4634B015C0120E030E04EE053E46D85BF +:107A60007E858F8598890E9427679B01AC01C5019F +:107A7000B4010E94D5640E94E66321EE3EE245E631 +:107A800052E40E942767F1016083718382839383AC +:107A900028E83BEE4DE955E4C701B6010E94F563C5 +:107AA0004B015C0122EE32E045EC57E4C701B60120 +:107AB0000E9427676B017C01A5019401C501B401F7 +:107AC0000E9427679B01AC01C701B6010E94F463C5 +:107AD0000E94B4676B017C01A501940169857A85D8 +:107AE0008B859C850E9427674B015C01A70196014D +:107AF000C301B2010E9427679B01AC01C501B4011B +:107B00000E94F5636B017C012DEC3CEC4EE153E4EB +:107B10006D857E858F8598890E9427679B01AC01C2 +:107B2000C701B6010E94D5640E94E66321EE3EE2E1 +:107B300045E652E40E9427676B017C01E989FA89D6 +:107B4000608371838283938321EE3EE245E652E4B3 +:107B5000F10160817181828193810E94D5640E94CC +:107B6000AA6720E030E04EE053E40E9427679B01C3 +:107B7000AC01C301B2010E94EC66181654F4F7FA86 +:107B8000F094F7F8F094E989FA89C082D182E28210 +:107B9000F38220E030E0A90169817A818B819C81A8 +:107BA0000E94CE6420E030E0A901811112C06D81F5 +:107BB0007E818F8198850E94EC6618162CF480E0F7 +:107BC00090E0A4EBB2E411C080E090E0A4EBB2EC52 +:107BD0000CC069817A818B819C810E94CE6487FF71 +:107BE0000AC080E090E0A0ECBFE7F80180839183B9 +:107BF000A283B38317C029813A814B815C816D8157 +:107C00007E818F8198850E94D5640E94936421EEC5 +:107C10003EE245E652E40E942767F80160837183E3 +:107C20008283938366960FB6F894DEBF0FBECDBFF6 +:107C3000DF91CF911F910F91FF90EF90DF90CF9048 +:107C4000BF90AF909F908F907F906F905F904F907C +:107C50003F902F9008952F923F924F925F926F9294 +:107C60007F928F929F92AF92BF92CF92DF92EF92CC +:107C7000FF920F931F93CF93DF93CDB7DEB72E976D +:107C80000FB6F894DEBF0FBECDBF29833A834B8376 +:107C90005C83ED82FE820F831887860115019E8624 +:107CA0008D8621EE3EE245E652E40E94D5642B012A +:107CB0003C0121EE3EE245E652E469817A818B8106 +:107CC0009C810E94D5644B015C0121EE3EE245E6B9 +:107CD00052E46D817E818F8198850E94D5646B010D +:107CE0007C01C301B2010E94D26469837A838B83D1 +:107CF0009C83C501B4010E94D2646D837E838F830F +:107D00009887C301B2010E94AA672B013C01C501FB +:107D1000B4010E94AA6769877A878B879C8720E0D5 +:107D200030E04EE053E469817A818B819C810E942E +:107D300027674B015C012DEC3CEC4EE153E46D8177 +:107D40007E818F8198850E9427679B01AC01C501C8 +:107D5000B4010E94F56323E333E343E551E40E9459 +:107D6000F5634B015C01C701B6010E94D2649B011F +:107D7000AC01C501B4010E942767F80160837183DB +:107D800082839383C701B6010E94AA679B01AC015D +:107D9000C501B4010E942767F1016083718382836A +:107DA000938320E030E04EE053E4C301B2010E942F +:107DB00027676B017C012DEC3CEC4EE153E46985B7 +:107DC0007A858B859C850E9427679B01AC01C70142 +:107DD000B6010E94F46323E333E344ED52E40E94CE +:107DE000F563ED85FE8560837183828393832E9690 +:107DF0000FB6F894DEBF0FBECDBFDF91CF911F91BC +:107E00000F91FF90EF90DF90CF90BF90AF909F9039 +:107E10008F907F906F905F904F903F902F9008953C +:107E20004F925F926F927F928F929F92AF92BF928A +:107E3000CF92DF92EF92FF920F931F93CF93DF9336 +:107E400000D01F92CDB7DEB729013A01E982FA824C +:107E50000B831C8302E91DE020E030E040E253E4A4 +:107E60000E94D5649B01AC01F8016285738584850D +:107E700095850E94F563F601608371838283938305 +:107E800020E030E040E253E4C301B2010E94D56437 +:107E90009B01AC01F80166857785808991890E94F4 +:107EA000F563F501608371838283938320E030E082 +:107EB00044EB52E4F80162897389848995890E94B0 +:107EC000F4632B013C0120E030E040E253E469819F +:107ED0007A818B819C810E94D5649B01AC01C30196 +:107EE000B2010E94F563F4016083718382839383FE +:107EF0000F900F900F900F90DF91CF911F910F91E6 +:107F0000FF90EF90DF90CF90BF90AF909F908F90B9 +:107F10007F906F905F904F9008954F925F926F9215 +:107F20007F928F929F92AF92BF92CF92DF92EF9209 +:107F3000FF920F931F932B013C0149015A016701E6 +:107F400078019B01AC010E94FC67811172C0A50100 +:107F50009401C501B4010E94FC6781116AC0A701A8 +:107F60009601C701B6010E94FC67811162C02AE92F +:107F700039E947E053E4C301B2010E94EC661816E8 +:107F80000CF457C020E030E040E85FE3C301B201E9 +:107F90000E94CE6487FD4DC02DEC3CEC4FEE52E4C8 +:107FA000C501B4010E94EC6618160CF442C020E032 +:107FB00030E040E85FE3C501B4010E94CE6487FD74 +:107FC00038C0A301920160E070E084E393E40E9472 +:107FD000F463A50194010E94F4634B015C0120E06D +:107FE00030E047E153E40E94EC66181614F120E0FB +:107FF00030E040E251E4C501B4010E94CE6487FD47 +:1080000018C020E030E044EB52E4C701B6010E9402 +:10801000EC66181674F020E030E044EB52ECC70137 +:10802000B6010E94CE64881F8827881F91E08927A7 +:1080300001C080E01F910F91FF90EF90DF90CF90F3 +:10804000BF90AF909F908F907F906F905F904F9078 +:1080500008950F931F93CF93DF93C5EAD2E184E392 +:1080600093E08C010F5F1F4F0E94AC548993C801AD +:108070000A331340B1F7DF91CF911F910F9108950B +:10808000AF92BF92CF92DF92EF92FF920F931F9326 +:10809000CF93DF93082F6EE00E940534C82F6FE066 +:1080A000802F0E940534D0E0DC2FCC27C82B7E0126 +:1080B0006E0134E0A32EB12C6EE0802F0E940534B7 +:1080C000182F6FE0802F0E940534212F30E0322FCF +:1080D0002227282BC217D30708F4E9012C153D05E8 +:1080E00008F46901E20EF31E81E0A81AB10821F735 +:1080F000C7018C1B9D0B8C199D0963E070E00E94E9 +:108100002468CB01DF91CF911F910F91FF90EF90E9 +:10811000DF90CF90BF90AF9008958F929F92AF92D3 +:10812000BF92CF92DF92EF92FF927C01A9DF9C0178 +:1081300081E0E816F104F9F088F082E0E816F10435 +:1081400039F58091A5129091A612A0E0B0E0BC0193 +:10815000CD01621B730B810991093FC08091A71269 +:108160009091A812A0E0B0E0BC01CD01621B730B9E +:10817000810991091DC08091A9129091AA12A0E0D5 +:10818000B0E0BC01CD01621B730B810991091CC0D9 +:1081900081E0E816F104A9F040F082E0E816F1046D +:1081A00019F560E070E0CB0118C060E070E0CB0131 +:1081B00042E2842E43E5942E44E0A42E42E4B42E01 +:1081C00016C060E070E0CB0138E1832E3BE5932ED2 +:1081D0003EEAA32E32E4B32E0AC0812C912C24EB6C +:1081E000A22E22E4B22E03C060E070E0CB010E9418 +:1081F000706520E030E044EB53E40E94276720E004 +:1082000030E040E859E30E9427679B01AC01C501BB +:10821000B4010E94F4636B017C0120E030E044EB88 +:1082200053E40E94EC66181654F420E030E044EB6E +:1082300053E4C701B6010E94F4636B017C0120E0A6 +:1082400030E0A901C701B6010E94CE6487FF0AC0D1 +:1082500020E030E044EB53E4C701B6010E94F5632F +:108260006B017C01C701B601FF90EF90DF90CF90CA +:10827000BF90AF909F908F9008950F931F93CF93CF +:10828000DF93C5EAD2E184E393E069918C010F5F4B +:108290001F4F0E944D54C8010A331340B1F7D9DE75 +:1082A00080E090E03ADF60939C0D70939D0D809389 +:1082B0009E0D90939F0D81E090E02FDF6093A00DC5 +:1082C0007093A10D8093A20D9093A30D82E090E096 +:1082D00024DF6093A40D7093A50D8093A60D909359 +:1082E000A70DDF91CF911F910F910895AF92BF928B +:1082F000CF92DF92EF92FF920F931F93CF93DF9372 +:1083000000D01F92CDB7DEB75B012CE6E22E2EE047 +:10831000F22E8C016B018CE0C80ED11CF50161912D +:108320007191819191915F01F70121913191419179 +:1083300051917F0129833A834B835C830E9470654E +:1083400029813A814B815C810E94D564F801619357 +:108350007193819391938F01AC14BD04F9F60F9042 +:108360000F900F900F90DF91CF911F910F91FF9081 +:10837000EF90DF90CF90BF90AF9008951F920F9233 +:108380000FB60F9211240BB60F922F933F934F937A +:108390005F936F937F938F939F93AF93BF93EF936D +:1083A000FF9389B18095982F907184FF03C091113C +:1083B0000E94174EFF91EF91BF91AF919F918F91C6 +:1083C0007F916F915F914F913F912F910F900BBED5 +:1083D0000F900FBE0F901F901895CF93DF93C09111 +:1083E000AE12D091AF122097B9F081E08093B11214 +:1083F0006091C7127091C8128091C9129091CA12EF +:108400009B01AC010E942767698B7A8B8B8B9C8BBD +:108410001092AF121092AE12DF91CF9108952F9269 +:108420003F924F925F926F927F928F929F92AF9204 +:10843000BF92CF92DF92EF92FF920F931F93CF9351 +:10844000DF93CDB7DEB7CE54D1090FB6F894DEBFB7 +:108450000FBECDBF8091F50E807725968FAF259703 +:10846000882389F020E030E0A9016091C712709163 +:10847000C8128091C9129091CA120E94CE648823BA +:1084800011F40C94E04A2091C7122B8B3091C81242 +:108490003C8B4091C9124D8B5091CA125E8B8091DA +:1084A000D7128B839091D8129D83A091D912AE835D +:1084B000B091DA12BC830091C3121091C412509192 +:1084C000C5124091C6128091B6129091B712A09138 +:1084D000B812B091B9128FA398A7A9A7BAA7909183 +:1084E000B2129FAFA091B3122196AFAF2197B09176 +:1084F000B4122296BFAF2297E091B5122396EFAF48 +:1085000023978091BE129091BF12A091C012B0919A +:10851000C1128FAB98AFA9AFBAAF90914F1224960A +:108520009FAF2497A091AB12ADA7B09129122796C7 +:10853000BFAF2797E0912812E8A3F091450F269648 +:10854000FFAF26972091AE123091AF123A8B298B54 +:108550008091AC129091AD129AA389A38091BA1226 +:108560009091BB12A091BC12B091BD128BAF9CAF89 +:10857000ADAFBEAF9091CF129F8BA091D012A88FBC +:10858000B091D112B98FE091D212EA8F3090D3120C +:108590002090D412F091D512F9832091D6122A831B +:1085A0003091CB123B8F8091CC128C8F9091CD1259 +:1085B0009D8FA091CE12AE8F80912A129DA5891712 +:1085C00009F465C7E989FA89EF2B09F089C2279672 +:1085D000FFAD279728A1F21781F0A22EB12C39E226 +:1085E0003A9DC0013B9D900D1124DC01AA5BB04F68 +:1085F000BA8BA98BAB2B09F051C0C801A52FB42FA2 +:108600008093C3129093C412A093C512B093C61264 +:108610008F89988DA98DBA8D8093CF129093D012A7 +:10862000A093D112B093D2128B899C89AD89BE8957 +:108630008093C7129093C812A093C912B093CA1224 +:108640008B8D9C8DAD8DBE8D8093CB129093CC1273 +:10865000A093CD12B093CE128B819D81AE81BC814F +:108660008093D7129093D812A093D912B093DA12B4 +:10867000832D922DA981BA818093D3129093D41225 +:10868000A093D512B093D6122496BFAD2497B09381 +:108690004F121092AF121092AE124BC78091B112CE +:1086A000882319F01092B112BFC08091B0128F5F71 +:1086B000853019F08093B01202C01092B0128091F0 +:1086C000B01251E1589FC0011124DC01A05BBD4EE6 +:1086D000BAA3A9A3B9E2BA9D9001BB9D300D1124A4 +:1086E000F901EA5BF04F7F018081A9A1BAA18C93C7 +:1086F00081819281A381B48123E0880F991FAA1FF1 +:10870000BB1F2A95D1F7E9A1FAA181839283A383A4 +:10871000B483F70185819681A781B08533E0880F06 +:10872000991FAA1FBB1F3A95D1F7E9A1FAA185832A +:108730009683A783B087F70181859285A385B48549 +:1087400043E0880F991FAA1FBB1F4A95D1F7E9A1E3 +:10875000FAA181879287A387B487D7011D966D916F +:108760007D918D919C9150978B019C0153E0000F5E +:10877000111F221F331F5A95D1F7058716872787A8 +:10878000308B0E946E656FAF21967FAF2197229646 +:108790008FAF229723969FAF2397D70195962D9160 +:1087A0003D914D915C9198970E94D5646FA378A7F5 +:1087B00089A79AA79B01AC0160E070E080EA9FE383 +:1087C0000E94D5646BAF7CAF8DAF9EAF2596BFADD9 +:1087D0002597BB23C1F02F89388D498D5A8D6F891C +:1087E000788D898D9A8D0E942767F701618B728B36 +:1087F000838B948BFF89FB8B288D2C8B398D3D8B44 +:108800004A8D4E8B0DC0D70151966D917D918D9102 +:108810009C9154970E94B4676B8B7C8B8D8B9E8B45 +:108820001FAA18AE19AE1AAEB9E2BA9D9001BB9D4F +:10883000300D1124F901EA5BF04F4F01C1A0D2A025 +:10884000E3A0F4A0A701960160E070E080E09FE360 +:108850000E94D56469877A878B879C872596FFADB0 +:108860002597FF23E9F122E02093C212D4019596C7 +:108870004D905D906D907C90989751968D909D90C5 +:10888000AD90BC905497A50194010E9427679B016D +:10889000AC01C301B2010E94F4638B0189879D87FB +:1088A00020E030E0A9010E94CE6487FF1EC1A7012D +:1088B0009601C701B6010E94F563A30192010E94CF +:1088C00027679B01AC01C501B4010E94F4630E94BB +:1088D000B4676F8B788F898F9A8F3F82288618C1F3 +:1088E0001092C212F401F5A1FF83D4019696BC91B7 +:1088F000B887F40107A110A5E8A1EF5FE23109F400 +:10890000E0E02796FFAD2797EF1789F029E22E9F29 +:10891000F0011124EA5BF04F61897289838994899F +:108920000E94B4676F8B788F898F9A8F04C01F8ADB +:10893000188E198E1A8E2F89388D498D5A8D6F8910 +:10894000788D898D9A8D0E9427672B013C0149E221 +:108950004A9D90014B9D300D1124C9018A5B904FB7 +:108960005C01DC0151962D913D914D915C915497A4 +:108970002D873E874F87588BA30192016D857E8599 +:108980008F8598890E94F4639B01AC0169857A8583 +:108990008B859C850E9427679B01AC016F81788540 +:1089A000C8010E94F56320E030E040E05FE30E94F0 +:1089B0002767362E272E89839A8320E030E0A9018D +:1089C0000E94EC6618160CF097C02F813885A8011C +:1089D000632D722D89819A810E94CE6487FF72C0B7 +:1089E000F501858C968CA78CB0A0A3019201C501DE +:1089F000B4010E94F4639B01AC0169857A858B8583 +:108A00009C850E9427676B837D838E839C83232DA7 +:108A1000322D49815A810E94CE6487FF34C0C5013E +:108A2000B4010E94B4676B8F7C8F8D8F9E8FA501E0 +:108A300094016D857E858F8598890E94CE64811111 +:108A400006C0F1E0F093C21209831A8361C02D853C +:108A50003E854F855889C501B4010E94F4639B018E +:108A6000AC0169857A858B859C850E9427679B016F +:108A7000AC016F817885C8010E94F4636F837887A9 +:108A800089839A8345C0A7019601C701B6010E9458 +:108A9000F563232D322D49815A810E942767A30156 +:108AA00092010E94F5630E94B4676B8F7C8F8D8F5B +:108AB0009E8F3F8228863B822D8229812E833A8198 +:108AC0003C8326C042E04093C21209831A835B892B +:108AD0005B8F8C898C8F9D899D8FAE89AE8F18C0DE +:108AE0003F82288659874D8717C03F8228861F8A74 +:108AF000188E198E1A8E10C0BF89BB8FE88DEC8F2F +:108B0000F98DFD8F2A8D2E8F1F82188619821A8269 +:108B100000E010E019861D8624965FAD2497452F4E +:108B200050E05CA74BA786E0849FF001859FF00D85 +:108B30001124E55DFD4E8091B0128283A989BA8926 +:108B40009596BC91BAABE989FA89F6A1FBABA989E4 +:108B5000BA899796BC912896BFAF2897E989FA8978 +:108B6000F0A52996FFAF29972BAD3CAD4DAD5EAD7D +:108B70006AA97BA98B2F9F2F0E94F4636EA77FA702 +:108B800088AB99AB20E030E0A9010E94CE6487FF5A +:108B900004C01EA61FA618AA19AA2091C2122F8FC0 +:108BA0002AA83BA92F963FAF2F9728964FAD28971D +:108BB0002E964FAF2E9729963FAC29978EE3C82E5D +:108BC00083ECD82E8EE2E82E89E3F82E412C512C2E +:108BD0003201CBA2DCA2EDA2FEA29F8D992321F04F +:108BE000913009F496C0D6C0A989BA8991962D9181 +:108BF0003D914D915C919497C701B6010E94276702 +:108C00004B015C0120E030E040E05FE30E94276719 +:108C10009B01AC016B897C898D899E890E94F563DB +:108C20009B01AC01C701B6010E9427679B01AC0103 +:108C3000622D2F967FAD2F972E968FAD2E97932D69 +:108C40000E94F463262E2F967FAF2F972E968FAF1C +:108C50002E97392E2F81388549815A810E94CE6402 +:108C600087FF4AC02F81388549815A816AA97BA92B +:108C700028968FAD289729969FAD29970E94F46377 +:108C80009B01AC010E94F5636B017C012B8D3C8D37 +:108C90004D8D5E8D6B897C898D899E890E94F563DF +:108CA0009B01AC01C701B6010E94D5646B017C0138 +:108CB0002B813D814E815C816F81788589819A818C +:108CC0000E94CE64811103C0B2E0BF8F02C0E1E018 +:108CD000EF8FFB8DFB8B2C8D2C8B3D8D3D8B4E8D2B +:108CE0004E8B2F8058852F965FAF2F9789812E96B8 +:108CF0008FAF2E973A80F0C0A50194016B897C89D3 +:108D00008D899E890E94F5636B8B7C8B8D8B9E8BEE +:108D1000E3C0A70196016B8D7C8D8D8D9E8D0E9489 +:108D200027679B01AC01622D2F967FAD2F972E9662 +:108D30008FAD2E97932D0E94F4634B015C012B8124 +:108D40003D814E815C810E94CE6487FFBDC02B8136 +:108D50003D814E815C81622D2F967FAD2F972E969F +:108D60008FAD2E97932D0E94F4632B8D3C8D4D8DEE +:108D70005E8D0E94D5646B017C012B809D812F96B6 +:108D80009FAF2F97AE812E96AFAF2E973C80B2E06B +:108D9000BF8FA2C0E989FA8921A132A143A154A1C0 +:108DA000C701B6010E9427674B015C019B01AC0122 +:108DB0006B897C898D899E890E94EC6618160CF05F +:108DC00054C020E030E040E05FE3C501B4010E9400 +:108DD00027679B01AC016B897C898D899E890E94E4 +:108DE000F4639B01AC01C701B6010E9427679B0198 +:108DF000AC01622D2F967FAD2F972E968FAD2E97BB +:108E0000932D0E94F4632A966FAF2A972B967FAF1B +:108E10002B972C968FAF2C972D969FAF2D9798015F +:108E200049855D850E94EC661816FCF4A501940145 +:108E30006B897C898D899E890E94F4636B8B7C8B06 +:108E40008D8B9E8B2A962FAC2A972B96FFAD2B9756 +:108E50002F96FFAF2F972C962FAD2C972E962FAFD6 +:108E60002E972D963FAC2D9737C0980149855D858B +:108E7000622D2F967FAD2F972E968FAD2E97932D27 +:108E80000E94F4639B01AC010E94F5636B017C01BD +:108E90002F89388D498D5A8D6B897C898D899E8962 +:108EA0000E94F5639B01AC01C701B6010E94D56425 +:108EB0006B017C01202E2F961FAF2F9739852E96A0 +:108EC0003FAF2E973D8408C0282C2F969FAE2F973A +:108ED0002E96AFAE2E973B2CA7019601C301B2018F +:108EE0000E94F5632B013C012BA13CA14DA15EA189 +:108EF0000E94CE6487FF07C0A30192016BA17CA1F1 +:108F00008DA19EA163C02EA53FA548A959A9622D98 +:108F10002F967FAD2F972E968FAD2E97932D0E9473 +:108F2000EC6618160CF442C04F8D4093C212222DED +:108F30002F963FAD2F972E964FAD2E97532D6FA1A5 +:108F400078A589A59AA50E9427676F8F7BA38EA716 +:108F50009AAB0E94BB646B017C016FAD21967FAD23 +:108F6000219722968FAD229723969FAD23970E943B +:108F7000BB644B015C01A70196010E94F4630E944F +:108F800042656BAB7CAB8DAB9EABA6E08BA59CA585 +:108F9000A89FF001A99FF00D1124E55DFD4E2BA9BE +:108FA0003CA931832083232B49F1B5C02EE333EC58 +:108FB0004EE259E36BA17CA18DA19EA10E94F563B5 +:108FC0006BA37CA38DA39EA3A30192010E94F463D3 +:108FD0006B017C01980149855D85622D2F967FADDF +:108FE0002F972E968FAD2E97932D0E94EC66181614 +:108FF0000CF4F3CD5F8D5093C21299CF25968FADAF +:109000002597882309F487C0C801A985BD85809369 +:10901000C3129093C412A093C512B093C6128F8945 +:10902000988DA98DBA8D8093CF129093D012A09372 +:10903000D112B093D2128B8D9C8DAD8DBE8D80934D +:10904000CB129093CC12A093CD12B093CE128B8101 +:109050009D81AE81BC818093D7129093D812A0934A +:10906000D912B093DA128F819885A981BA81809341 +:10907000D3129093D412A093D512B093D612249603 +:109080009FAD249790934F12A989BA89B093AF12DC +:10909000A093AE122BAD3CAD4DAD5EAD2093BA1298 +:1090A0003093BB124093BC125093BD1238A1309341 +:1090B000281249A15AA15093AD124093AC128FA12E +:1090C00098A5A9A5BAA58093B6129093B712A093BC +:1090D000B812B093B9129DA59093AB121092C7121B +:1090E0001092C8121092C9121092CA121092BE1297 +:1090F0001092BF121092C0121092C112C092B212FE +:10910000D092B312E092B412F092B5122FA138A50A +:1091100049A55AA56FC12FA938AD49AD5AADC301B4 +:10912000B2010E94F5632B013C012F8D3BA14EA59E +:109130005AA9C501B4010E94F4639B01AC01C301AB +:10914000B2010E94D5644B015C012F8D3BA14EA55D +:109150005AA9C701B6010E94F463A50194010E94B7 +:1091600027676FAB78AF89AF9AAF20EC31EE44E65A +:109170005EE4C501B4010E9427670E94BB640E949F +:109180004265603DB7E07B078105910560F446E0EC +:109190002BA53CA5429FF001439FF00D1124E55DF6 +:1091A000FD4E158253C0603A5FE075078105910559 +:1091B00060F426E0ABA5BCA52A9FF0012B9FF00D23 +:1091C0001124E55DFD4E31E011C060344FE17407BC +:1091D0008105910568F426E0ABA5BCA52A9FF001A6 +:1091E0002B9FF00D1124E55DFD4E32E035830CC060 +:1091F000A6E04BA55CA5A49FF001A59FF00D11244E +:10920000E55DFD4EB3E0B58346E02BA53CA5429F4E +:10921000F001439FF00D1124E55DFD4E2581022EE6 +:1092200004C096958795779567950A94D2F7ABA970 +:10923000BCA902C0AA0FBB1F2A95E2F7B183A08385 +:1092400061157105B1E08B07910568F446E02BA527 +:109250003CA5429FF001439FF00D1124E55DFD4EBA +:109260007483638304C08FEF9FEF94838383BDA4D3 +:10927000B39496E0B91201C0B12C980149855D857F +:10928000622D2F967FAD2F972E968FAD2E97932D13 +:109290000E94EC661816ECF4822D2F969FAD2F9746 +:1092A0002E96AFAD2E97B32DE989FA8985A396A3A3 +:1092B000A7A3B0A7FF8DFFAF2BA121962FAF2197BA +:1092C0003EA522963FAF22974AA923964FAF2397F8 +:1092D000D4C020E030E0A901622D2F967FAD2F97FA +:1092E0002E968FAD2E97932D0E94EC6618160CF0DB +:1092F000ADC0C801A985BD858093C3129093C412E7 +:10930000A093C512B093C6128F89988DA98DBA8D7E +:109310008093CF129093D012A093D112B093D21217 +:109320008B8D9C8DAD8DBE8D8093CB129093CC1286 +:10933000A093CD12B093CE128B819D81AE81BC8162 +:109340008093D7129093D812A093D912B093DA12C7 +:109350008F819885A981BA818093D3129093D4127A +:10936000A093D512B093D6125DA550934F12898960 +:109370009A899093AF128093AE122BAD3CAD4DAD58 +:109380005EAD2093BA123093BB124093BC1250933F +:10939000BD1238A13093281249A15AA15093AD12A1 +:1093A0004093AC128FA198A5A9A5BAA58093B61237 +:1093B0009093B712A093B812B093B912B092AB12B7 +:1093C0001092C7121092C8121092C9121092CA12AB +:1093D0001092BE121092BF121092C0121092C112BF +:1093E000C092B212D092B312E092B412F092B512BF +:1093F0009C01AD01C701B6010E94D564A989BA8953 +:1094000095966D937D938D939C9398970E94ED41D3 +:10941000809128128093450FC25BDF4F0FB6F894FE +:10942000DEBF0FBECDBFDF91CF911F910F91FF9097 +:10943000EF90DF90CF90BF90AF909F908F907F90F4 +:109440006F905F904F903F902F9099C12796BFAD3E +:109450002797E8A1BE1779F08E2F8F5F823109F42C +:1094600080E0F8A126962FAD2697F21303C026962A +:109470008FAF269788A31A8A198A59854D853F8010 +:1094800028843DA524963FAF2497BDA695C8C80162 +:10949000A52FB42F8093C3129093C412A093C5122A +:1094A000B093C6128F89988DA98DBA8D8093CF12F3 +:1094B0009093D012A093D112B093D2128B899C8931 +:1094C000AD89BE898093C7129093C812A093C91228 +:1094D000B093CA128B8D9C8DAD8DBE8D8093CB12B7 +:1094E0009093CC12A093CD12B093CE128B819D811C +:1094F000AE81BC818093D7129093D812A093D912D9 +:10950000B093DA12832D922DA981BA818093D31260 +:109510009093D412A093D512B093D6122496AFADE7 +:109520002497A0934F12E989FA89F093AF12E09340 +:10953000AE122BAD3CAD4DAD5EAD2093BA12309363 +:10954000BB124093BC125093BD1238A13093281225 +:1095500049A15AA15093AD124093AC128FAD219600 +:109560009FAD21972296AFAD22972396BFAD23974B +:109570008093B2129093B312A093B412B093B51229 +:109580008FA198A5A9A5BAA58093B6129093B712FA +:10959000A093B812B093B9122FA938AD49AD5AAD06 +:1095A0002093BE123093BF124093C0125093C11249 +:1095B0003DA53093AB1226964FAD26974093450FAD +:1095C000C25BDF4F0FB6F894DEBF0FBECDBFDF9199 +:1095D000CF911F910F91FF90EF90DF90CF90BF90B0 +:1095E000AF909F908F907F906F905F904F903F9043 +:1095F0002F90089560919D0E462F90E080919E0ED1 +:10960000282F60FD91E0817041FD926021FD826014 +:1096100042FD946022FD84609093200F80931F0F81 +:109620000895CF93DF930E94E8248BE2E0EBF2E110 +:10963000DF011D928A95E9F783E2E2E2FFE0DF01B4 +:109640001D928A95E9F71092AF121092AE12109205 +:109650002A1210924F1281E08093AB121092210FC8 +:10966000C9DF81B39091200F9170C92FB0E0DB2F3B +:1096700096E0CC0FDD1F9A95E1F78F7BC82BC1BB1D +:10968000EBE0F1E090818091200F8270880F880FCD +:10969000977F892B808381B39091200F92FB99272C +:1096A00090F98E7F892B81BB80911F0F80FD8F9A4F +:1096B00080FF8F98808190911F0F92708D7F892BF2 +:1096C000808321B390911F0F9470892F90E095951E +:1096D0008795922F9D7F892B81BBDF91CF91089534 +:1096E0001F920F920FB60F9211240BB60F922F9369 +:1096F0003F938F939F93EF93FF9321B33091200F6C +:10970000832F817090E036E0880F991F3A95E1F73A +:10971000922F9F7B892B81BBEBE0F1E090818091C0 +:10972000200F8270880F880F977F892B808381B3E9 +:109730009091200F92FB992790F98E7F892B81BB06 +:1097400015BCFF91EF919F918F913F912F910F90B9 +:109750000BBE0F900FBE0F901F9018958CE1ECE39D +:10976000FDE0DF011D928A95E9F710922812109210 +:10977000291281E080933B0D1092450F08952F929E +:109780003F924F925F926F927F928F929F92AF9291 +:10979000BF92CF92DF92EF92FF920F931F93CF93DE +:1097A000DF93C0912912C11101C0C2E1C150D09113 +:1097B000450FCD1709F41BC1EC2EF12C29E2C29FF5 +:1097C000800111240A5B104FF801A588B688C7886C +:1097D000D08C61A172A183A194A19B01AC010E94D4 +:1097E000F563F80125A136A147A150A50E9427677E +:1097F0004B018C019B01AC01B501C6010E94CE64F6 +:1098000087FD02C05401680189E28E9DF0018F9DA1 +:10981000F00D1124EA5BF04FC501D601818B928BCC +:10982000A38BB48BC11101C0C2E1C150CD1761F04F +:1098300029E22E9DC0012F9D900D11249C012A5BD1 +:10984000304F7901D9E233C080912812D8135EC01D +:109850000E94ED415BC0AC2EB12CDA9DC001DB9DB6 +:10986000900D1124FC01EA5BF04F6F01C11101C0A2 +:10987000C2E1C15080912812C81302C00E94ED417C +:10988000DA9D8001DB9D100D11240A5B104FF80159 +:1098900085889688A788B08CA50194016189728912 +:1098A000838994890E94CE64811106C076018091DB +:1098B000450FC813D0CF2AC0F80161A172A183A1BE +:1098C00094A19B01AC010E94F563F80125A136A18A +:1098D00047A150A50E942767F70121893289438952 +:1098E00054890E94F5632B013C01A50194010E945B +:1098F000CE64F80187FF05C0418A528A638A748A60 +:10990000D5CF818A928AA38AB48AD0CFD091450FCD +:10991000F9E2DF9F800111240A5B104FC1E0CD0FF7 +:10992000C23109F4C0E02090291289E2382EC21514 +:1099300009F45BC0CC2ED12C3C9CC0013D9C900D09 +:1099400011249C012A5B304F7901F801418852882B +:1099500063887488F90181889288A388B488A501F6 +:109960009401C301B2010E94CE6487FF24C0F801B4 +:1099700061A172A183A194A19B01AC010E94F56336 +:10998000F80125A136A147A150A50E9427679B0198 +:10999000AC01C301B2010E94F5632B013C01A5019A +:1099A00094010E94CE6487FF06C0F701418A528A63 +:1099B000638A748ADC2F3C9CF0013D9CF00D1124DD +:1099C000EA5BF04F258936894789508D6189728914 +:1099D000838994890E94CE64811101C0DC2FCF5FFE +:1099E000C23109F4C0E08701A2CFD093450FDF91C7 +:1099F000CF911F910F91FF90EF90DF90CF90BF908C +:109A0000AF909F908F907F906F905F904F903F901E +:109A10002F9008956115710581059105C1F16A3096 +:109A200071058105910548F425E02A95F1F70000BC +:109A30006150710981099109EDCF64367105810585 +:109A4000910548F4E5E3EA95F1F700006A507109E1 +:109A500081099109DFCF683EF3E07F078105910519 +:109A600058F4EFE8F1E03197F1F700C000006456D8 +:109A7000710981099109CECFEFE9FFE03197F1F744 +:109A800000C00000685E734081099109C3CF08954A +:109A9000009741F0EFE9FFE03197F1F700C00000D7 +:109AA0000197F6CF08954F925F926F927F92AF9297 +:109AB000BF92CF92DF92EF92FF920F931F93CF93BB +:109AC000DF936C01FB015A01309729F08081D601A8 +:109AD000A80FB11D01C0DC019C918D019D3231F4B4 +:109AE0000E5F1F4F11969C91D1E00AC09B3219F076 +:109AF0000F5F1F4F04C00E5F1F4F11969C91D0E067 +:109B0000512C612CC0E020E030E0A901780160ED2B +:109B1000762E790E89E08715D8F06394A8E0A61513 +:109B200098F05110C150A5E0B0E00E947168DC01CE +:109B3000CB01880F991FAA1FBB1F9C01AD01270DE8 +:109B4000311D411D511D0BC0511009C0CF5F07C011 +:109B5000BEEF7B1209C0511007C0552453940F5F0C +:109B60001F4FD7019C91D2CF662009F450C07F01CE +:109B7000CA01B9010E946E652B013C0120E030E072 +:109B8000A9010E94CE64882349F1CF3F64F42AE002 +:109B900037ED43E25CE3C301B2010E9427672B016A +:109BA0003C01CE5FF2CFCF3F59F42DEC3CEC4CECB6 +:109BB0005DE3C301B2010E9427672B013C010EC087 +:109BC000CC2361F020E030E040E251E4C301B20177 +:109BD0000E9427672B013C01C150F2CFDD2351F0D9 +:109BE00077FA709477F87094F5014082518262821E +:109BF000738206C0D5014D925D926D927C9213974F +:109C00000C191D090150F701008381E001C080E0BB +:109C1000DF91CF911F910F91FF90EF90DF90CF9048 +:109C2000BF90AF907F906F905F904F90089580911C +:109C30006A0E84FD25C09FB7F89480916A0E8061FA +:109C400080936A0E9FBF0E94AE27D2D68091F50EF8 +:109C5000982F9C7021F49091F60E913089F49FB763 +:109C6000843029F4F8948091F30E806204C0F89453 +:109C70008091F30E88608093F30E9FBF0C94E824CC +:109C800008952F923F924F925F926F927F928F92A0 +:109C90009F92AF92BF92CF92DF92EF92FF920F937B +:109CA0001F93CF93DF93CDB7DEB7C755D1090FB65A +:109CB000F894DEBF0FBECDBF382E7B0121962CAFAE +:109CC0003DAF4EAF5FAF219764960FAF6497809121 +:109CD000A90E85FF4FC06B0100E010E0772473945C +:109CE000D6018D909D90AD90BD906D0120E030E04B +:109CF000A901C501B4010E94EC66181664F0F801D0 +:109D0000E459F14F24A135A146A157A1C501B401E1 +:109D10000E94CE6487FD7092F70E8091F70E882323 +:109D200019F18091F50E883061F081DF9FB7F894CA +:109D30008091F30E85608093F30E9FBF0E94322EB8 +:109D400019C09FB7F89480916A0E886080936A0E5C +:109D50009FBF0E94322E8091F40E81110BC0809122 +:109D6000F50E8111F6CFE1CF0C5F1F4F0C301105BE +:109D700009F0B6CF8091F50E823009F426C3F701C1 +:109D800080819181A281B38189AF9AAFABAFBCAF23 +:109D900084819581A681B7818DAB9EABAFABB8AF07 +:109DA00080859185A285B38589AB9AABABABBCAB03 +:109DB000AE014F5C5F4FBE016B5C7F4FCE01C99619 +:109DC0000E94D13AE9A8FAA80BA91CA92DA93EA97D +:109DD0004FA958AD69AD7AAD8BAD9CADDE015596FE +:109DE0004D01FE0171965F0118976D010E94753C4F +:109DF000ED88FE880F89188D29893A894B895C89FD +:109E00006D857E858F8598890E948D3F882309F412 +:109E1000D8C26091B00D7091B10D8091B20D90914A +:109E2000B30D0E9470652B013C016091AC0D7091E7 +:109E3000AD0D8091AE0D9091AF0D0E9470659B01AC +:109E4000AC016091A80D7091A90D8091AA0D90911F +:109E5000AB0D65962FAF659766963FAF6697679691 +:109E60004FAF679768965FAF68970E947065FE0175 +:109E7000B1964F01DE015D965D0138976F01830158 +:109E8000720165962FAD659766963FAD66976796AA +:109E90004FAD679768965FAD68970E94273C0E9418 +:109EA000C62C332021F0F1E03F1629F0C9C022244E +:109EB0002394312CC7C020E030E048EC52E42196D6 +:109EC0006CAD7DAD8EAD9FAD21970E94EC661816EE +:109ED00054F420E030E048EC52E421962CAF3DAF42 +:109EE0004EAF5FAF2197298D3A8D4B8D5C8D69AD5B +:109EF0007AAD8BAD9CAD0E94F4632B013C012D8D9E +:109F00003E8D4F8D58A16DA97EA98FA998AD0E9455 +:109F1000F4634B015C0129A13AA14BA15CA169A9A1 +:109F20007AA98BA99CA90E94F4636B017C01A3010F +:109F30009201C301B2010E9427672B013C01A501D8 +:109F40009401C501B4010E9427679B01AC01C301C4 +:109F5000B2010E94F5634B015C01A7019601C701A4 +:109F6000B6010E9427679B01AC01C501B4010E94A4 +:109F7000F5630E94B46720E030E040EF51E40E94B6 +:109F8000276721962CAD3DAD4EAD5FAD21970E9468 +:109F9000D5640E9442651B016A30710518F48AE09D +:109FA000282E312C2AE037ED43EA5CE321966CAD94 +:109FB0007DAD8EAD9FAD21970E9427672AE037EDDA +:109FC00043EA5BE30E94F56320E030E040E752E4BF +:109FD0000E94276720E030E040E752E40E942767B4 +:109FE0006B017C016093840E7093850E8093860EC6 +:109FF0009093870E6093880E7093890E80938A0EDB +:10A0000090938B0E20E030E442E955E40E94EC6628 +:10A0100087FF09C0C0928C0ED0928D0EE0928E0EFA +:10A02000F0928F0E0FC080E090E4A2E9B5E4809337 +:10A030008C0E90938D0EA0938E0EB0938F0E02C057 +:10A04000212C312CB10180E090E00E946E656B0103 +:10A050007C01298D3A8D4B8D5C8D69AD7AAD8BADD0 +:10A060009CAD0E94F463A70196010E94D5642B96D3 +:10A070006CAF7DAF8EAF9FAF2B972D8D3E8D4F8DEB +:10A0800058A16DA97EA98FA998AD0E94F463A7017C +:10A0900096010E94D5642F966CAF7DAF8EAF9FAFB7 +:10A0A0002F9729A13AA14BA15CA169A97AA98BA9F3 +:10A0B0009CA90E94F463A70196010E94D56463964F +:10A0C0006CAF7DAF8EAF9FAF639741E050E02396BA +:10A0D0005FAF4EAF239723964EAD5FAD2397241607 +:10A0E000350608F46CC12396AEADBFAD2397BD0114 +:10A0F000BB0F880B990B0E9470656B017C019B0163 +:10A10000AC012B966CAD7DAD8EAD9FAD2B970E94B3 +:10A110002767298D3A8D4B8D5C8D0E94F5632B014D +:10A120003C01A70196012F966CAD7DAD8EAD9FAD24 +:10A130002F970E9427672D8D3E8D4F8D58A10E942D +:10A14000F56327966CAF7DAF8EAF9FAF2797A701C2 +:10A15000960163966CAD7DAD8EAD9FAD63970E9409 +:10A16000276729A13AA14BA15CA10E94F563409207 +:10A17000B40D5092B50D6092B60D7092B70D279642 +:10A180002CAD3DAD4EAD5FAD27972093B80D30930C +:10A19000B90D4093BA0D5093BB0D6093BC0D7093F5 +:10A1A000BD0D8093BE0D9093BF0DAE014B5D5F4F13 +:10A1B0004A01DE0199965D01FE01BD966F017B01AA +:10A1C0008C0127962CAD3DAD4EAD5FAD2797C301F9 +:10A1D000B2010E94753CCDA0DEA0EFA0F8A489A436 +:10A1E0009AA4ABA4BCA420919C0D30919D0D4091EC +:10A1F0009E0D50919F0D6DA57EA58FA598A90E94DB +:10A20000F46320E030E040E253E40E9427670E94BC +:10A210003D65072E000C880B990B0E9470656983C1 +:10A220007A838B839C832091A00D3091A10D409166 +:10A23000A20D5091A30DC501B4010E94F46320E06A +:10A2400030E040E253E40E9427670E943D65072EFC +:10A25000000C880B990B0E9470656D837E838F8341 +:10A2600098872091A40D3091A50D4091A60D509195 +:10A27000A70DC701B6010E94F46320E030E044EB73 +:10A2800052E40E94F56320E030E040E253E40E9493 +:10A2900027670E943D65072E000C880B990B0E94D2 +:10A2A000706569877A878B879C870E94322E8091A0 +:10A2B000F40E811188C09091281280913B0D981363 +:10A2C00003C00E94DC2CF1CF89809A80AB80BC80D7 +:10A2D000C501B4010E943D656093A80D7093A90D5E +:10A2E0008093AA0D9093AB0DCD80DE80EF80F88433 +:10A2F000C701B6010E943D656093AC0D7093AD0D32 +:10A300008093AE0D9093AF0D49845A846B847C8406 +:10A31000C301B2010E943D656093B00D7093B10D11 +:10A320008093B20D9093B30D20916C0E30916D0E11 +:10A3300040916E0E50916F0EC501B4010E94D5641C +:10A3400069837A838B839C832091700E3091710E88 +:10A350004091720E5091730EC701B6010E94D564F0 +:10A360006D837E838F8398872091740E3091750E54 +:10A370004091760E5091770EC301B2010E94D564D0 +:10A3800069877A878B879C8764962FAD649721961F +:10A390004CAD5DAD6EAD7FAD2197CE0101960E94B3 +:10A3A000BA30F1E0F093C40D23962EAD3FAD239764 +:10A3B0002F5F3F4F23963FAF2EAF23978CCE80E089 +:10A3C00004C083E302C082E000C0C95ADF4F0FB669 +:10A3D000F894DEBF0FBECDBFDF91CF911F910F91DB +:10A3E000FF90EF90DF90CF90BF90AF909F908F90B5 +:10A3F0007F906F905F904F903F902F9008951F92A5 +:10A400000F920FB60F9211240BB60F922F933F931A +:10A410004F935F936F937F938F939F93AF93BF936C +:10A42000EF93FF938091F50E813069F08091F30EE8 +:10A43000811109C0FCDB9FB7F8948091F30E836013 +:10A440008093F30E9FBFFF91EF91BF91AF919F91CA +:10A450008F917F916F915F914F913F912F910F90CD +:10A460000BBE0F900FBE0F901F90189589B1807191 +:10A470009091A90E96FD02C090E18927882319F0DA +:10A4800011F087E0089580E008952F923F924F9257 +:10A490005F926F927F928F929F92AF92BF92CF9274 +:10A4A000DF92EF92FF920F931F93CF93DF93CDB77D +:10A4B000DEB76B970FB6F894DEBF0FBECDBF90919D +:10A4C000F40E9111AEC1782E90E9A92E9EE0B92E1E +:10A4D0009E01235F3F4F490100E010E0C12CD12CC9 +:10A4E0007601482F50E05B8B4A8B902F01151105A8 +:10A4F00021F0013021F084E003C081E001C082E05E +:10A50000D4018D934D01EA89FB8902C0F595E79549 +:10A510009A95E2F7E0FF17C020E030E040EC5FEBF7 +:10A52000D5016D917D918D919C910E9427671B01B2 +:10A530002C019B01AC01C701B6010E94EC66181604 +:10A5400014F0610172010F5F1F4FB4E0AB0EB11C3C +:10A550000330110551F68090AF0E9090B00EA09090 +:10A56000B10EB090B20E04E011E06624639468EF7F +:10A570007EE0CE0101960E9476418091AA0EE82FDE +:10A58000F0E0FD8BEC8BFE01319624EF3EE0398B41 +:10A59000288B3B8F2A8F20E030E060E090E01601AE +:10A5A000270157FA509457F850944A895B89022E34 +:10A5B00002C0559547950A94E2F740FF2AC06F5FA5 +:10A5C000AA8DBB8D14961D921D921D921C921797F9 +:10A5D0004C895D89022E02C0559547950A94E2F791 +:10A5E00040FF03C0112319F007C0112329F0C082D6 +:10A5F000D182E282F38204C020823182428253827D +:10A600004DE050E04C0F5D1F420F531FDA018C915B +:10A61000982B2F5F3F4F34964A8D5B8D4C5F5F4F79 +:10A620005B8F4A8F2330310509F0BFCFF92E70E0E0 +:10A6300080E090E00E946E650E94B4679B01AC01CF +:10A64000C501B4010E942767AB01BC01F092110F54 +:10A650004E8B5F8B688F798F0E94973020E04E89F8 +:10A660005F89688D798DCE0101960E94BA300E9473 +:10A670000F420E9482271123E1F0F8DEFE013D9691 +:10A6800020E030E090E06191462F4F2159F0AC017D +:10A69000022E02C0559547950A94E2F740FF02C08A +:10A6A0006095F6222F5F3F4F2330310561F7F0921E +:10A6B000110F0E940F4280916A0E8473B1F0809155 +:10A6C0006A0E807321F0B3DA0E94322EAAC01111F3 +:10A6D000A3C0CCDE8721B9F79FB7F89480916A0EAA +:10A6E0008B7F80936A0E9FBF04C08F2D877009F007 +:10A6F000C2CF0E94114B32D88091B30E9091B40E0C +:10A70000C7D91625C9F020E030E040EA50E4609156 +:10A71000B50E7091B60E8091B70E9091B80E0E9452 +:10A7200027676B017C018090AB0E9090AC0EA090DF +:10A73000AD0EB090AE0E10C0C090B50ED090B60E5B +:10A74000E090B70EF090B80E8090AF0E9090B00EE3 +:10A75000A090B10EB090B20E015009F008CFC09099 +:10A76000AA0ED12C8090B50E9090B60EA090B70E88 +:10A77000B090B80E2401350177FA709477F8709490 +:10A780008CE6E82E8EE0F82E00E010E08A899B89A6 +:10A79000002E02C0959587950A94E2F780FF2AC0A3 +:10A7A000C601002E02C0959587950A94E2F7D7015D +:10A7B00080FF10C094962D913D914D915C9197979B +:10A7C000C501B4010E94F563F70120813181428106 +:10A7D000538106C02D913D914D915C91C301B20111 +:10A7E0000E9427670E94F766E889F9896483758368 +:10A7F000868397830F5F1F4F288939892C5F3F4FCE +:10A80000398B288B34E0E30EF11C0330110509F07D +:10A81000BDCF0E94973005C080916A0E82FF5CCF49 +:10A8200052CF6B960FB6F894DEBF0FBECDBFDF914F +:10A83000CF911F910F91FF90EF90DF90CF90BF903D +:10A84000AF909F908F907F906F905F904F903F90D0 +:10A850002F900895EBE6F0E080818F7E8083E8E61C +:10A86000F0E080818E7F8083089554985C9A809177 +:10A87000A90E83FF0BC080916B00806180936B00F9 +:10A88000809168008160809368000895E3CF68EF4D +:10A890007EE082E49EE00C947641F894F999FECF34 +:10A8A00092BD81BD81E08FBB80B58627482F082EE1 +:10A8B000000C550B262F30E024233523232B39F0B1 +:10A8C0006F3F19F060BD84E006C084E104C08823B6 +:10A8D00021F060BD84E28FBBF99A789408958F923D +:10A8E0009F92AF92BF92CF92DF92EF92FF920F931F +:10A8F0001F93CF937C014A016B01C40ED51E8B01BF +:10A90000C0E05C01A61AB70AC8018A0D9B1D0C1590 +:10A910001D0591F0C11108C02C2FCC0F330B232F34 +:10A92000221F2227221F01C021E0F80161918F011F +:10A93000C22FC60FB2DFE8CF6C2FC701880D991D5B +:10A94000CF911F910F91FF90EF90DF90CF90BF902C +:10A95000AF909F908F90A1CFF999FECF92BD81BD0E +:10A9600081E08FBB80B508958F929F92AF92BF9286 +:10A97000CF92DF92EF92FF920F931F93CF934B01F1 +:10A980007A016C01C40ED51E8C01C0E05B01A81ACF +:10A99000B90AC501800F911F0C151D0591F0DCDF70 +:10A9A000C11108C02C2FCC0F330B232F221F2227BD +:10A9B000221F01C021E0C22FC80FF80181938F012F +:10A9C000E8CFC4018E0D9F1DC7DF21E030E0C8171E +:10A9D00011F020E030E0C901CF911F910F91FF905D +:10A9E000EF90DF90CF90BF90AF909F908F900895A1 +:10A9F0005C980895CF93DF93CDB7DEB7CC56D109DD +:10AA00000FB6F894DEBF0FBECDBF8091C00082604C +:10AA10008093C0001092C50080E18093C4008091B3 +:10AA2000C10080618093C1008091C10088608093E3 +:10AA3000C1008091C10080688093C1000E94C62C33 +:10AA4000869A879A829A80910A01886080930A0187 +:10AA500080910A01826080930A01809107018160E0 +:10AA600080930701809A819A579A809107018061AB +:10AA7000809307018091070188608093070180918E +:10AA800007018460809307018091080180618093B1 +:10AA90000801809108018860809308018091080175 +:10AAA0008B7F809308018091A90E82FF08C08A9A4B +:10AAB000809108018160809308015F9A07C08A989D +:10AAC000809108018E7F809308015F9880918100BA +:10AAD0008F7E8093810080918100886080938100C7 +:10AAE000809180008C7F80938000809180008F70A7 +:10AAF0008093800080916E00887F80936E0014BCEC +:10AB000015BC80916E00816080936E0054985C9AB1 +:10AB100080916D00806180936D00809168008460F9 +:10AB2000809368008AE090E00E94484D0E945D3763 +:10AB3000399A3B9A419A439A8091010184608093AB +:10AB400001018091010180688093010180910201DF +:10AB500084608093020180910201806880930201E9 +:10AB6000559A569A5D9A5E9A0E94294080E090E03C +:10AB70000E948D4060939C0D70939D0D80939E0D5F +:10AB800090939F0D81E090E00E948D406093A00D16 +:10AB90007093A10D8093A20D9093A30D82E090E09D +:10ABA0000E948D406093A40D7093A50D8093A60D17 +:10ABB0009093A70D0E94A43820E030E04AE754E4C7 +:10ABC00064E071E080E090E00E94383884E893E02F +:10ABD000C3DE8093920D85E893E0BEDE8093930DF3 +:10ABE00008E913E078012FEFE21AF20AC801B4DE97 +:10ABF000F801E450F64F808387013CE9E31633E027 +:10AC0000F30681F70EE813E078018FEFE81AF80AEF +:10AC1000C801A2DEF801E65FF54F8083870192E963 +:10AC2000E91693E0F90681F70E94D7360E94D436E0 +:10AC30000E94C33620E030E044EB52E46091A40D62 +:10AC40007091A50D8091A60D9091A70D0E94F463BF +:10AC50007B018C012091A00D3091A10D4091A20D9E +:10AC60005091A30D60919C0D70919D0D80919E0D52 +:10AC700090919F0DECEB8E2EEDE09E2EF8EBAF2E1B +:10AC8000FDE0BF2EA4EBCA2EADE0DA2E0E942B3ED3 +:10AC90008091F80E9091F90EA091FA0EB091FB0EF2 +:10ACA0008093A80D9093A90DA093AA0DB093AB0D1E +:10ACB0008091FC0E9091FD0EA091FE0EB091FF0EC2 +:10ACC0008093AC0D9093AD0DA093AE0DB093AF0DEE +:10ACD0008091000F9091010FA091020FB091030F8E +:10ACE0008093B00D9093B10DA093B20DB093B30DBE +:10ACF00080917A00816880937A009B98A39A8FE074 +:10AD00008093C00D8BE493E00E948C308EE1E4EFE1 +:10AD1000FEE0DF011D928A95E9F781E08093F40E51 +:10AD200078949091A90E94FD8093F50EFE01FD9606 +:10AD3000A196FFAFEEAFA1971E01F5E12F0E311CDA +:10AD40009E012F5F3F4FA3963FAF2EAFA3978091F9 +:10AD5000B80C8093B70C8FE3EBE2FEE0DF011D92AD +:10AD60008A95E9F76EE47EE080E00E942429811153 +:10AD700003C087E00E94F82A0C9A549A549A0E94C1 +:10AD8000AE27549A35DE71DD54985C9A0E94AE4B22 +:10AD90000E94114B0E9497307ADD1092F40E1092AF +:10ADA0006A0E1092F30E1092F60E1092F70E80EECD +:10ADB00092E00E94242E8091F50E8130C9F485E93D +:10ADC00099E00E94242E8FE699E00E94242E82E2D0 +:10ADD00099E00E94242EA4961FAEA497A5961FAEBC +:10ADE000A597FE01B9966F96FFAFEEAF6F971EC0A5 +:10ADF0001092F50EF0CFE92FF0E0E95CF34F80817F +:10AE00009F5F903809F490E09093B70C8F3F09F45E +:10AE100018C48A3091F08D3081F0A596BFADA5970A +:10AE2000BB2309F4D5C3893209F4CCC39091B70C84 +:10AE30008091B80C8913DFCF04C404ED1DE0A49603 +:10AE40002FADA497E22FF0E0EC52F24F10820E9457 +:10AE5000322E8091F40E8111AEC38AE0D1011D9291 +:10AE60008A95E9F78091D40D843209F017C381E007 +:10AE70008DAF8091D50D833481F034F4882351F067 +:10AE8000843209F010C109C0873439F0883509F0DF +:10AE90000AC103C084EB93E0F4C19091D60D9111E7 +:10AEA000EFC2833409F4CEC01CF4843239F0EEC210 +:10AEB000873461F0883509F4E2C0E8C28091F50E6C +:10AEC000887109F0DFC20E94992BE0C282EB93E007 +:10AED0000E94242E80912B0E823091F038F488232A +:10AEE00061F08130A9F48CEA93E00CC0833069F002 +:10AEF000883071F482EA93E005C08FEA93E002C0E3 +:10AF000089EA93E00E94242E0CC086EA93E0FACFEF +:10AF10008DE993E00E94242E80912B0E82500E9496 +:10AF2000162E8AE993E00E94242E8091310E8A5CCD +:10AF30000E94162E80912F0E813049F028F0823029 +:10AF400051F48BE893E005C085E993E002C080E905 +:10AF500093E00E94242E80912D0E811103C086E87B +:10AF600093E002C081E893E00E94242E80912E0E8F +:10AF7000811103C08CE793E002C087E793E00E9451 +:10AF8000242E80912C0E813019F482E793E002C0C8 +:10AF90008DE693E00E94242E8091320E813049F09C +:10AFA00028F0823051F481E693E005C089E693E011 +:10AFB00002C085E693E00E94242E8091340E8130F9 +:10AFC00031F040F0823051F489E593E005C08DE521 +:10AFD00093E002C085E593E00E94242E8091330E19 +:10AFE000882329F0823039F48DE493E002C081E5B2 +:10AFF00093E00E94242E8AE493E00E94242E809104 +:10B000003D0E0E94162E87E493E00E94242E60914C +:10B01000390E70913A0E80913B0E90913C0E0E9439 +:10B02000FA2D84E493E00E94242E6091350E7091F5 +:10B03000360E8091370E9091380E0E94FA2D80E4E2 +:10B0400093E01FC18091F50E823049F40E94174EA3 +:10B0500085E999E00E94242E8CE499E00BC08111CF +:10B0600011C282E08093F50E85E999E00E94242EBA +:10B0700085E599E00E94242E82E299E002C1809148 +:10B08000F50E813009F002C285E999E00E94242E74 +:10B090008DE599E00E94242E82E299E00E94242E00 +:10B0A0001092F50EF3C19091F50E923008F0EAC1BE +:10B0B000893409F4C4C034F4833259F0883409F473 +:10B0C00080C064C18E3409F435C1823509F4F8C0FA +:10B0D0005DC182E08DAF8091D60D8111D1C110E0AC +:10B0E000BE016F5F7F4F812F0E942429811104C010 +:10B0F00087E00E94F82ACAC18DE393E00E94242EC3 +:10B10000163029F0173041F487E393E002C08AE358 +:10B1100093E00E94242E04C086E3810F0E94162E25 +:10B1200085E393E00E94242EFE0131967F0100E02A +:10B13000D7016D917D918D919D917D010E94082E89 +:10B14000023019F083E393E002C08FE293E00E94A3 +:10B15000242E0F5F033061F71F5F183009F689E274 +:10B1600093E00E94242E2AE5E22E2EE0F22E10E03B +:10B17000F70161917191819191917F010E94082E57 +:10B18000123019F087E293E002C083E293E00E945C +:10B19000242E1F5F133061F78DE193E00E94242E6F +:10B1A0006091660E7091670E8091680E9091690EA5 +:10B1B0000E94082E89E193E00E94242E0E94522BC7 +:10B1C00065C18091A90E84FF59C184E08093F50E7A +:10B1D00041DB84E05AD983E058D90E94322E809115 +:10B1E000F40E811102C053DB40DB8091F40E81111B +:10B1F0004DC11092F50E0E94E82410E0812F0E94AC +:10B200008535811102C087E013C08091D40D882359 +:10B2100089F084ED9DE00E948C3084ED9DE00E94D9 +:10B22000EE04811105C080E898E00E94242E02C03F +:10B230000E94F82A113009F429C111E0DFCF82E021 +:10B240008DAF8091D60D81111FC040E550E06EEAB0 +:10B250007BE084ED9DE088DB892B49F41092D40DCE +:10B2600040E550E064ED7DE08EEA9BE038DB89E06C +:10B2700093E00E94242E84ED9DE00E948C3085E0B6 +:10B2800093E00E94242E02C193E09DAF8D3309F01C +:10B29000F7C083E0282F30E0F901EC52F24F9081A3 +:10B2A000D901AF52B24F9C938F5F90819111F2CF31 +:10B2B0008DAF40E550E064ED7DE08EEA9BE0ACC0F0 +:10B2C00082E08DAF8091D60D833509F0D9C083E03F +:10B2D0008DAF8091D70D843509F0D2C084E08DAF59 +:10B2E0008091D80D8D3309F0CBC08091DA0D81119A +:10B2F000C7C085E08DAF8091D90D843239F08A3294 +:10B3000039F0833209F0BCC082E003C081E001C0A3 +:10B310008FEF0E94442985E999E00E94242E86E25D +:10B3200099E00E94242E82E299E00E94242E0E943D +:10B33000174EACC082E08DAF8091D60D811122C036 +:10B3400010E0812F0E948535811104C087E00E94A2 +:10B35000F82A13C082E093E00E94242E812F0E94DD +:10B36000162E80E093E00E94242E84ED9DE00E9442 +:10B370008C308DEF92E00E94242E113009F486C0AB +:10B3800011E0DFCF91117EC011E001C010E0AE01ED +:10B39000475D5F4FBE01635C7F4F84ED9DE00E947F +:10B3A000534D811102C082E076C0EDAD81E08E0F79 +:10B3B0008DAFF0E0EC52F24F90819D3309F060C008 +:10B3C000112361F1482F50E0282F30E0D901AC5211 +:10B3D000B24F9C91241B350BF901EC52F24F908334 +:10B3E0008F5F9C919111F0CF8DAF84ED9DE00E9415 +:10B3F000EE04811149C069A57AA58BA59CA50E9480 +:10B40000F5670E944265F1E56F9FC001112440E598 +:10B4100050E064ED7DE0955F62DA38C0AE014F5FC9 +:10B420005F4FBE01635C7F4F84ED9DE00E94534DF2 +:10B43000882309F4B8CFEDADF0E0EC52F24F8081F3 +:10B4400081111EC0C9A4DAA4EBA4FCA420E030E062 +:10B450004FE753E4C701B6010E94EC66181684F06A +:10B4600089809A80AB80BC80C701B6010E9442658A +:10B47000862FB501A4010E94182806C085E00BC0E4 +:10B4800083E009C088E007C0811105C080E898E02A +:10B490000E94242E90C00E94F82A8DC08332D1F4DD +:10B4A0003F922F928FE493E09F938F931F930F937C +:10B4B0000E94BC68F10101900020E9F7BF01621908 +:10B4C00073096C52724F0F900F900F900F900F9066 +:10B4D0000F9009C0873429F08D3419F0803509F0B8 +:10B4E0006AC064ED7DE0DB018C91803509F581ED6A +:10B4F0009BE00E9486688D89882391F03F922F926D +:10B5000087E593E09F938F9385E09CE09F938F93D3 +:10B510000E948D680F900F900F900F900F900F90DA +:10B5200082E3E4EDFDE0DF011D928A95E9F743C077 +:10B530008091D603843148F08BE593E09F938F93FD +:10B540000E94C92D0F900F9036C00091D403B6E62B +:10B550000B9F80011124C80188529C4F0E9486686D +:10B560008D89882391F03F922F9287E593E09F93F6 +:10B570008F93045F1B4F1F930F930E948D680F9052 +:10B580000F900F900F900F900F9082E3E4EDFDE08D +:10B59000DF011D928A95E9F78091D403833120F46D +:10B5A0008F5F8093D40302C01092D4038091D6039E +:10B5B0008F5F8093D603A4961FAEA497A5961FAE67 +:10B5C000A5973FC0B13071F5A5961FAEA5972ECCBB +:10B5D000813208F42BCC8F3209F428CC883239F12F +:10B5E0008B3351F1A496EFADA497EF3438F08BE094 +:10B5F0000E94F82AA4961FAEA49718CCA496FFAD7B +:10B60000A4972F2F30E04F2F4F5F9FE9980FF9013C +:10B61000EC52F24F9A3108F480528083A4964FAFD7 +:10B62000A49704CC22E0A5962FAFA597FFCB31E0DD +:10B63000A5963FAFA597FACB82E0A5968FAFA597C9 +:10B64000F5CB8091D10B882399F081ED9BE00E948E +:10B65000EE048093030C65E07CE00E94673681E095 +:10B660008093040C82E3A1EDBBE01D928A95E9F77B +:10B670008091C10D811139C08091D6038823A9F131 +:10B68000E090D50306E60E9DC0011124FC01E852AE +:10B69000FC4F7F01CF010E94EE04D701D2968C931C +:10B6A000F090D5030F9D80011124B801645F7B4F9A +:10B6B00008521C4FF80182A90E94673681E0D80128 +:10B6C000D3968C9382E3F80111928A95E9F7F2E11F +:10B6D000FF1520F0F394F092D50302C01092D50329 +:10B6E0008091D60381508093D6030E94DC2C0E9467 +:10B6F000322E8091F40E81112ACB8091040C882384 +:10B7000069F085E09CE00E948C3082E3E5E0FCE09B +:10B71000DF011D928A95E9F71092040C8091F50ED5 +:10B72000882309F4E4C08091C20D882309F412C172 +:10B730001092C20D6D961CAE1DAE1EAE1FAE6D9763 +:10B7400069961CAE1DAE1EAE1FAE699765961CAE07 +:10B750001DAE1EAE1FAE659784E1A196AEADBFAD26 +:10B76000A197E82F1D92EA95E9F76F96AEADBFADB0 +:10B770006F97E82F1D92EA95E9F7D101E82F1D9206 +:10B78000EA95E9F7A396AEADBFADA3971D928A9552 +:10B79000E9F780E090E00E948D40A9966CAF7DAF04 +:10B7A0008EAF9FAFA99781E090E00E948D40AD964B +:10B7B0006CAF7DAF8EAF9FAFAD9782E090E00E94FF +:10B7C0008D406B017C0123E333E343E35FE360914E +:10B7D00000027091010280910202909103020E9486 +:10B7E000F46320E030E040E05FE30E94276720E060 +:10B7F00030E044E353E40E9427679B01AC0160E022 +:10B8000070E084E393E4F0D72B013C0120E030E0CA +:10B8100044EB52E4C701B601E7D7FE01EF5AFF4FF0 +:10B820004F019E012B5A3F4F5901DE01A75ABF4FCE +:10B830006D017B018C01AD962CAD3DAD4EAD5FAD84 +:10B84000AD97A9966CAD7DAD8EAD9FADA9970E94C9 +:10B850002B3EA401B501C6010E947C3B6D966CADE8 +:10B860007DAD8EAD9FAD6D978E01035C1F4F24E0C3 +:10B8700045E028D569966CAD7DAD8EAD9FAD6997DD +:10B880000451110924E045E01DD565966CAD7DADF0 +:10B890008EAD9FAD6597810124E045E013D58E0103 +:10B8A0000F5F1F4F24E045E0C301B2010BD51F938A +:10B8B0000F933F922F926F96FFAD6F97FF936E9607 +:10B8C0002FAD6E972F93A1963FADA1973F93A09672 +:10B8D0008FADA0978F938DE693E09F938F930E94F7 +:10B8E000C92D0FB6F894DEBF0FBECDBF33C004E143 +:10B8F00010E086E6F82E92E3E92E8091D00BF89EB8 +:10B90000C0011124FC01E852FC4F23A9222309F4B1 +:10B910000ACF845F9B4F0E948C308091D00BF89EA1 +:10B9200090011124F901E45FFB4FDF019E2D1D9270 +:10B930009A95E9F7F901E852FC4F13AA833120F4F4 +:10B940008F5F8093D00B02C01092D00B0150110971 +:10B95000A1F6E9CE82B301E083FB882780F9802736 +:10B960009091D7038917D9F08AE090E00E94484D62 +:10B9700012B313FB112710F910278091D703181762 +:10B9800071F01F921F9381E893E09F938F930E9421 +:10B99000C92D1093D7030F900F900F900F908091A7 +:10B9A000F50E811112C08091C30D882371F0809132 +:10B9B000C40D882351F08CE893E09F938F930E94ED +:10B9C000C92D1092C40D0F900F908091F50E81112A +:10B9D0002DCA8091C00D8F3009F028CA21961CAE67 +:10B9E0001DAE1EAE1FAE219719A61AA61BA61CA639 +:10B9F0001D8A1E8A1F8A188EE090BC0DF090BD0D26 +:10BA00000091BE0D1091BF0D2091B80D3091B90D70 +:10BA10004091BA0D5091BB0D6091B40D7091B50D70 +:10BA20008091B60D9091B70D4101FE01B9965F016D +:10BA3000DE01DD966D010E94753C80E090E00E9481 +:10BA40008D404B015C0181E090E00E948D406B01D4 +:10BA50007C0182E090E00E948D402B013C01A50119 +:10BA6000940121966CAD7DAD8EAD9FAD2197BCD676 +:10BA70009F7720E030E040E05FE30E94EC6618161C +:10BA800034F1A701960169A57AA58BA59CA5ACD632 +:10BA90009F7720E030E040E05FE30E94EC661816FC +:10BAA000B4F0A30192016D897E898F89988D9CD60F +:10BAB00020E030E044EB52E498D69F7720E030E07D +:10BAC00040E05FE30E94EC6618160CF0AFC98EE10F +:10BAD000E4EFFEE0DF011D928A95E9F70E949730BE +:10BAE0000E94475480929C0D90929D0DA0929E0DB5 +:10BAF000B0929F0DC092A00DD092A10DE092A20D28 +:10BB0000F092A30D4092A40D5092A50D6092A60D47 +:10BB10007092A70D20E030E04AE754E464E071E061 +:10BB200080E090E00E9438388091F80E9091F90EF4 +:10BB3000A091FA0EB091FB0E8093A80D9093A90DE1 +:10BB4000A093AA0DB093AB0D8091FC0E9091FD0EC9 +:10BB5000A091FE0EB091FF0E8093AC0D9093AD0DB1 +:10BB6000A093AE0DB093AF0D8091000F9091010F97 +:10BB7000A091020FB091030F8093B00D9093B10D7F +:10BB8000A093B20DB093B30D8CE0A396EEADFFADD4 +:10BB9000A39711928A95E9F78091B40D9091B50D14 +:10BBA000A091B60DB091B70D89839A83AB83BC8306 +:10BBB0008091B80D9091B90DA091BA0DB091BB0DC7 +:10BBC0008D839E83AF83B8878091BC0D9091BD0D0E +:10BBD000A091BE0DB091BF0D89879A87AB87BC87B6 +:10BBE000AE01475F5F4FBE016B5F7F4FCE01019695 +:10BBF0000E947C3B00E020E030E048E452E4BE01DB +:10BC00006F5F7F4F80E00E94414E10C9CF930E942A +:10BC1000DC2CC9E20E94322E8091F40E811111C0F9 +:10BC20008091281290912912981739F0C89FC0016D +:10BC300011248A5B904F892B69F78091F50E88302B +:10BC400049F3CF910895FF920F931F93CF93DF9302 +:10BC500000D01F92CDB7DEB7322F2091F50E2230E3 +:10BC600009F492C0F02E132F042F9B01AC016983BD +:10BC70003A834B835C83CADF1092100F1092B90E87 +:10BC80008091A90E29813A814B815C8187FD03C097 +:10BC900080E18093B90E112331F09091B90E80E1CB +:10BCA00089278093B90E89B180719091B90E891757 +:10BCB00091F09FB7F8948091F30E80618093F30E1A +:10BCC0009FBF29833A834B835C830E94322E5C8121 +:10BCD0004B813A8129818091F40E811155C067EE24 +:10BCE0007EE081E00E94414E81E080936B0E9FB721 +:10BCF000F89480916A0E826080936A0E9FBF0E94C2 +:10BD0000322E8091F40E81113FC08091F50E811189 +:10BD1000F6CF80916B0E8130A9F4FF2051F08CE0BA +:10BD2000E8EFFEE0A4E0BFE001900D928A95E1F714 +:10BD30000CC09FB7F8948091F30E80618093F30E4E +:10BD40009FBF03C081E08093100F10926B0E0E9482 +:10BD5000322E8091F40E811117C00E94114B0E9467 +:10BD6000AE4B0E94973068EF7EE087EE9EE00E9427 +:10BD700076410F900F900F900F90DF91CF911F9110 +:10BD80000F91FF900C94522B0F900F900F900F90EB +:10BD9000DF91CF911F910F91FF9008952F923F92C5 +:10BDA0004F925F926F927F928F929F92AF92BF92CB +:10BDB000CF92DF92EF92FF920F931F93CF93DF9377 +:10BDC000CDB7DEB7E1970FB6F894DEBF0FBECDBF9B +:10BDD0006D837E838F8398872F87388B498B5A8B0F +:10BDE0000D8BAD868B8A24E0E29E80011124C80170 +:10BDF0008E5B914F9F8B8E8BD801A753B14FB98F1C +:10BE0000A88F8D909D90AD90BC90FC0120813181D8 +:10BE100042815381C501B401E8D46A8F7B8F8C8F36 +:10BE20009D8FF4E0CF9E1001112491012E5B314FC4 +:10BE30003F8F2E8FC1018753914F99A388A3DC01B7 +:10BE4000CD90DD90ED90FC90F9012081318142810F +:10BE50005381C701B601C9D46AA37BA38CA39DA358 +:10BE60002401350177FA709477F87094D701C601F0 +:10BE7000B05889839A83AB83BC83F801E951F14FB1 +:10BE80002A8D3B8D4C8D5D8D608171818281938186 +:10BE9000ABD44B015C01F101E951F14F2AA13BA167 +:10BEA0004CA15DA160817181828193819DD46B01E0 +:10BEB0007C01A5019401C301B201C9D769877A87C2 +:10BEC0008B879C87A701960169817A818B819C81F0 +:10BED000BED79B01AC0169857A858B859C8585D40D +:10BEE00069877A878B879C87A7019601C301B20176 +:10BEF000AED76B017C01A501940169817A818B81A8 +:10BF00009C81A5D79B01AC01C701B6016DD42985E1 +:10BF10003A854B855C85DCD46B017C019B89992338 +:10BF200089F02DEB37E346E055EBC701B60154D756 +:10BF300087FD1AC02BED3FE049EC50E4C701B60184 +:10BF400053D410C02DEB37E346E055E3C701B601EB +:10BF500025D518164CF02BED3FE049EC50E4C70115 +:10BF6000B60143D46B017C018090A50E9090A60E83 +:10BF7000A090A70EB090A80E2D813E814F815885CC +:10BF8000CA01B90132D4A50194012ED49B01AC01A0 +:10BF9000C501B4015CD7E8D74B015C0120E030E07B +:10BFA00040E05FE3C701B60152D72D813E814F814A +:10BFB00058854DD79F77A5019401F7D4CCD562D58C +:10BFC0007C8B6B8BDB01AB2B09F459C14B01A12C92 +:10BFD000B12CBD89BB2371F0C501B4017FD59B0194 +:10BFE000AC016F85788989899A8931D76F87788B79 +:10BFF000898B9A8BC501B40171D54B015C019B0102 +:10C00000AC01C701B601D1D46D837E838F8398873D +:10C01000FD85E4E0FE9FC00111249C012E5B314FA1 +:10C020003E872D87FC01E951F14FD9012D913D91BA +:10C030004D915C916081718182819381D5D3A501FD +:10C040009401B3D46EA77FA788AB99AB2D813E81B5 +:10C050004F815885CA01B901FAD69B01AC0160E055 +:10C0600070E080E090E4C0D36B017C012BEA3AEAF7 +:10C070004AE25EE36D817E818F819885E8D64B012F +:10C080005C0120E030E040E850E4C701B601ADD3E8 +:10C090009B01AC01C501B401DAD669877A878B8729 +:10C0A0009C8720E030E040E05FE3C701B601CFD6D7 +:10C0B0006EA37FA388A799A710E022242394312C94 +:10C0C000EB89FC892E163F0609F4D9C01C3008F014 +:10C0D0003AC02EA13FA148A559A569817A818B81DB +:10C0E0009C81B5D66B017C0129853A854B855C85A1 +:10C0F000C301B201ACD6A701960177D37B01082F0B +:10C10000D92E2EA13FA148A559A5C301B2019FD6A2 +:10C110004B015C0129853A854B855C8569817A8173 +:10C120008B819C8194D69B01AC01C501B4015CD389 +:10C130002B013C011F5FC701A02FBD2D89839A836E +:10C14000AB83BC835BC0B10180E090E0C7D42D819C +:10C150003E814F8158857BD66B017C0123D4698356 +:10C160007A838B839C83C701B601F4D64B015C01B3 +:10C17000E88DF98DC080D180E280F380F7FAF094E9 +:10C18000F7F8F094A8A1B9A18D919D910D90BC9163 +:10C19000A02D8AA79BA7ACA7BDA729813A814B8177 +:10C1A0005C81C701B60153D62B013C01A501940166 +:10C1B0006AA57BA58CA59DA54AD69B01AC01C301B0 +:10C1C000B20113D32B013C01A5019401C701B601B3 +:10C1D0003ED66B017C0129813A814B815C816AA545 +:10C1E0007BA58CA59DA533D69B01AC01C701B601EB +:10C1F000FBD269837A838B839C8310E0A301920135 +:10C200006A8D7B8D8C8D9D8DF0D2EE89FF89608348 +:10C2100071838283938329813A814B815C816AA1F6 +:10C220007BA18CA19DA1E1D2AE8DBF8D6D937D933D +:10C230008D939C9313972EA53FA548A959A9ED85E9 +:10C24000FE856081718182819381CFD2AD85BE856B +:10C250006D937D938D939C9313970D892F853889CA +:10C2600049895A8962E47EE081E00E94414E8091D2 +:10C27000F40E81110EC0BFEF2B1A3B0A21CF0D899E +:10C280002F85388949895A8967EE7EE081E00E94CE +:10C29000414EE1960FB6F894DEBF0FBECDBFDF91E1 +:10C2A000CF911F910F91FF90EF90DF90CF90BF90B3 +:10C2B000AF909F908F907F906F905F904F903F9046 +:10C2C0002F900895EF920F931F93CF93DF93E80180 +:10C2D00047FD02C034E001C034E1E42F440FFF0BFE +:10C2E000F7FF03C0F195E195F109E32E022F2E2F00 +:10C2F000AE0107D0CE01DF91CF911F910F91EF904A +:10C3000008954F925F926F927F929F92AF92BF92E9 +:10C31000CF92DF92EF92FF920F931F93CF93DF9311 +:10C32000CDB7DEB729970FB6F894DEBF0FBECDBFED +:10C330006A01122FB02E2BE3201720F0FF24F39474 +:10C34000F00E02C0BCE3FB2E0F2D27E0AE014F5FC5 +:10C350005F4F64D1AC018981982F9970913031F091 +:10C36000E1FC06C0E0FE06C090E205C09DE203C00D +:10C370009BE201C090E0EE2DE07183FF3CC0911183 +:10C3800002C083E001C084E0811718F4212F281B2C +:10C3900001C020E0E1110BC0F601822F30E28823BA +:10C3A00019F031938150FBCFC20ED11C20E09923AC +:10C3B00029F0D6019C93F60131966F01C6010396D0 +:10C3C000E2FE0AC03EE4D6013C9341E411964C9350 +:10C3D000119712963C9306C03EE6F601308341E683 +:10C3E00041833283FC01322F40E2332309F442C0FF +:10C3F00041933150FACF82FF44C0911102C083E0D3 +:10C4000001C084E0811718F4212F281B01C020E00F +:10C41000E1110BC0F601822F30E2882319F031932D +:10C420008150FBCFC20ED11C20E0992329F0D60108 +:10C430009C93F60131966F01C6010396E2FE0BC094 +:10C4400039E4D6013C933EE411963C93119736E4CF +:10C4500012963C9307C039E6F60130833EE63183FD +:10C4600036E63283FC01322F40E2332319F0419348 +:10C470003150FBCFFC01E20FF11D10828EEF9FEFD8 +:10C48000B7C0F1E0911101C0F0E06F2F70E0141619 +:10C49000150624F49A012F5F3F4F02C021E030E0DF +:10C4A000260F371FBB2029F06B2D70E06F5F7F4F89 +:10C4B00002C060E070E0260F371F612F70E0261782 +:10C4C00037071CF4121B212F01C020E03E2D3871CC +:10C4D00059F4D601322F60E2332319F06D933150B5 +:10C4E000FBCFC20ED11C20E0FF2331F0D6019C937C +:10C4F000B6016F5F7F4F6B01E1110BC0F601922F08 +:10C5000030E3992319F031939150FBCFC20ED11C27 +:10C5100020E09F2D940F3A81782F7071A72E84FF11 +:10C5200003C0313309F49150191624F4993018F0EE +:10C5300098E001C091E0E42F852F57FF02C0E0E0B2 +:10C5400080E06E2F782FE0E0F0E0AEE29A2E3A0124 +:10C55000691A71082A01461A570A0B2D10E0119525 +:10C56000019511096F3F8FEF780729F4D6019C924E +:10C57000C60101966C014617570784F066167706C8 +:10C580006CF47F01E40CF51CA1E0B0E0AC0FBD1F22 +:10C59000EA0EFB1ED7011196BC9002C090E3B92EA3 +:10C5A000615071093196C60101967C0160177107CF +:10C5B00024F0D601BC926C01D5CF6417750741F405 +:10C5C000363320F4353321F4A11002C081E3B82EB4 +:10C5D000F601B082F701822F90E2882319F091933F +:10C5E0008150FBCFF701E20FF11D108280E090E057 +:10C5F00029960FB6F894DEBF0FBECDBFDF91CF9165 +:10C600001F910F91FF90EF90DF90CF90BF90AF9070 +:10C610009F907F906F905F904F900895283008F022 +:10C6200027E03327DA01990F311D87FD91600096CD +:10C630006105710539F432602E5F3D9330E32A9530 +:10C64000E1F708959F3F30F080387105610509F0EA +:10C650003C5F3C5F3D93913008F08068911DDF9313 +:10C66000CF931F930F93FF92EF92192F987F969578 +:10C67000E92F96959695E90FFF27EC5CFD4F9927DA +:10C680003327EE24FF24A701E701059008940794BF +:10C6900028F4360FE71EF81E491F511D660F771F3D +:10C6A000881F991F0694A1F70590079428F4E70EB8 +:10C6B000F81E491F561FC11D770F881F991F661F3F +:10C6C0000694A1F70590079428F4F80E491F561F09 +:10C6D000C71FD11D880F991F661F771F0694A1F7EA +:10C6E0000590079420F4490F561FC71FD81F990FB4 +:10C6F000661F771F881F0694A9F7849110951770FD +:10C7000041F0D695C79557954795F794E7941A95B4 +:10C71000C1F7EAEDF1E068941590159135916591B6 +:10C72000959105907FE27395E118F10A430B560B42 +:10C73000C90BD009C0F7E10CF11E431F561FC91FDA +:10C74000D01D7EF4703311F48A95E6CFE894015041 +:10C7500030F0080F0AF40027021708F4202F239561 +:10C76000022F7A3328F079E37D932A95E9F710C0F8 +:10C770007D932A9589F60694979567953795179531 +:10C780001794E118F10A430B560BC90BD00998F026 +:10C7900023957E9173957A3308F070E37C93201390 +:10C7A000B8F77E9170617D9330F0839571E37D934E +:10C7B00070E32A95E1F71124EF90FF900F911F91FC +:10C7C000CF91DF91992787FD909508959F939F774B +:10C7D000D5D10F9000203AF49058A2EA2AED3FE01C +:10C7E00049E450E413D096C25058BB27AA270ED074 +:10C7F00091C25AD230F05FD220F031F49F3F11F451 +:10C800001EF42AC20EF4E095E7FBF7C1E92FA4D28B +:10C8100080F3BA17620773078407950718F071F45D +:10C820009EF5D3C20EF4E0950B2EBA2FA02D0B016E +:10C83000B90190010C01CA01A0011124FF27591B65 +:10C8400099F0593F50F4503E68F11A16F040A22F6B +:10C85000232F342F4427585FF3CF469537952795DC +:10C86000A795F0405395C9F77EF41F16BA0B620BDB +:10C87000730B840BBAF09150A1F0FF0FBB1F661F22 +:10C88000771F881FC2F70EC0BA0F621F731F841F65 +:10C8900048F4879577956795B795F7959E3F08F08B +:10C8A000B3CF9395880F08F09927EE0F979587954A +:10C8B0000895FAD158F080E891E009F49EEFFBD199 +:10C8C00028F040E851E059F45EEF09C0C5C17DC2CF +:10C8D000E92FE07841D268F3092E052AC1F3261723 +:10C8E00037074807590738F00E2E07F8E02569F09A +:10C8F000E025E0640AC0EF6307F8009407FADB0163 +:10C90000B9019D01DC01CA01AD01EF935DD002D2F6 +:10C910000AD05F91552331F02BED3FE049E450FD03 +:10C9200049EC63CF0895DF93DD27B92FBF7740E847 +:10C930005FE31616170648075B0710F4D92F50D28D +:10C940009F938F937F936F934DD3E6E6F1E087D16A +:10C95000E1D12F913F914F915F9185D2DD2349F035 +:10C960009058A2EA2AED3FE049EC5FE3D0785D27DA +:10C970004DDFDF91CFC112D280F09F3740F491118B +:10C980000EF424C260E070E080E89FE3089526F092 +:10C990001B16611D711D811D36C150C10AD108F4DD +:10C9A00081E0089590D1E395C6C10CD0B3C183D185 +:10C9B00040F07AD130F021F45F3F19F01EC15111DF +:10C9C00005C24AC1C9D198F39923C9F35523B1F3DC +:10C9D000951B550BBB27AA2762177307840738F0EE +:10C9E0009F5F5F4F220F331F441FAA1FA9F333D04D +:10C9F0000E2E3AF0E0E830D091505040E695001C01 +:10CA0000CAF729D0FE2F27D0660F771F881FBB1FBC +:10CA1000261737074807AB07B0E809F0BB0B802D96 +:10CA2000BF01FF2793585F4F2AF09E3F510568F0E2 +:10CA3000E4C0CCC15F3FECF3983EDCF3869577957C +:10CA40006795B795F7959F5FC9F7880F911D9695E4 +:10CA5000879597F90895E1E0660F771F881FBB1F40 +:10CA6000621773078407BA0720F0621B730B840BED +:10CA7000BA0BEE1F88F7E095089504D06894B111C1 +:10CA8000A5C1089571D188F09F5790F0B92F9927CB +:10CA9000B751A0F0D1F0660F771F881F991F1AF0C9 +:10CAA000BA95C9F712C0B13081F08FD1B1E00895C5 +:10CAB0008CC1672F782F8827B85F39F0B93FCCF346 +:10CAC000869577956795B395D9F73EF490958095BF +:10CAD000709561957F4F8F4F9F4F0895E89409C0DF +:10CAE00097FB3EF490958095709561957F4F8F4FA1 +:10CAF0009F4F9923A9F0F92F96E9BB279395F695B7 +:10CB0000879577956795B795F111F8CFFAF4BB0F34 +:10CB100011F460FF1BC06F5F7F4F8F4F9F4F16C098 +:10CB2000882311F096E911C0772321F09EE8872F22 +:10CB3000762F05C0662371F096E8862F70E060E0DE +:10CB40002AF09A95660F771F881FDAF7880F969557 +:10CB5000879597F9089522D180F09F3740F491117D +:10CB60000EF034C160E070E080E89FEB089526F499 +:10CB70001B16611D711D811D46C060C0DF93CF93E0 +:10CB80001F930F938B01EC01E3E9F1E068D0C2D071 +:10CB90009801AE018B01EC0160E070E080E89FE35A +:10CBA00023DEE2D19801AE010F911F91CF91DF9169 +:10CBB0005AC1990F0008550FAA0BE0E8FEEF1616B0 +:10CBC0001706E807F907C0F012161306E407F50781 +:10CBD00098F0621B730B840B950B39F40A2661F0F5 +:10CBE000232B242B252B21F408950A2609F4A14098 +:10CBF000A6958FEF811D811D089597F99F6780E8A5 +:10CC000070E060E00895882371F4772321F0985054 +:10CC1000872B762F07C0662311F499270DC09051FA +:10CC2000862B70E060E02AF09A95660F771F881FC8 +:10CC3000DAF7880F9695879597F908959F3F31F019 +:10CC4000915020F4879577956795B795880F911D3A +:10CC50009695879597F908959FEF80EC0895DF9357 +:10CC6000CF931F930F93FF92EF92DF927B018C0182 +:10CC7000689405C0DA2EEF01F6D0FE01E894A59184 +:10CC80002591359145915591AEF3EF01BFDDFE0140 +:10CC90009701A801DA9479F7DF90EF90FF900F9158 +:10CCA0001F91CF91DF91089500240A94161617065C +:10CCB00018060906089500240A941216130614068D +:10CCC00005060895C9CF50D0E8F3E894E0E0BB270B +:10CCD0009F57F0F02AED3FE049EC06C0EE0FBB0F86 +:10CCE000661F771F881F28F0B23A62077307840710 +:10CCF00028F0B25A620B730B840BE3959A9572F786 +:10CD0000803830F49A95BB0F661F771F881FD2F7C3 +:10CD1000904896CF092E0394000C11F4882352F00A +:10CD2000BB0F40F4BF2B11F460FF04C06F5F7F4F57 +:10CD30008F4F9F4F0895EF93E0FF06C0A2EA2AEDC0 +:10CD40003FE049EC5FEB62DDE5DF0F90039401FC0F +:10CD50009058EBEBF1E05BC157FD9058440F551F25 +:10CD600059F05F3F71F04795880F97FB991F61F06D +:10CD70009F3F79F087950895121613061406551FE4 +:10CD8000F2CF4695F1DF08C0161617061806991F50 +:10CD9000F1CF86957105610508940895E5DFA0F04F +:10CDA000BEE7B91788F4BB279F3860F41616B11D8B +:10CDB000672F782F8827985FF7CF869577956795A7 +:10CDC000B11D93959639C8F30895E894BB2766275B +:10CDD0007727CB0197F90895ECDE08F48FEF0895DB +:10CDE0009B01AC0160E070E080E89FE3DECDBCDF3A +:10CDF00058F19E5758F19851A0F0E9F0983020F57D +:10CE0000092E9927660F771F881F991F0A94D1F75B +:10CE100012C0062E672F782F8827985F11F4000C18 +:10CE200007C0993FB4F38695779567959395D9F7A1 +:10CE3000611D711D811D3EF49095809570956195E1 +:10CE40007F4F8F4F9F4F08956894C0CFBECF0BD0B8 +:10CE500061CF2ADF28F02FDF18F0952309F0CDCE1F +:10CE6000FBCE1124B3CF78DFA0F3959FD1F3950FBC +:10CE700050E0551F629FF001729FBB27F00DB11D5E +:10CE8000639FAA27F00DB11DAA1F649F6627B00DEE +:10CE9000A11D661F829F2227B00DA11D621F739FD7 +:10CEA000B00DA11D621F839FA00D611D221F749FE5 +:10CEB0003327A00D611D231F849F600D211D822F2C +:10CEC000762F6A2F11249F5750408AF0E1F0882373 +:10CED0004AF0EE0FFF1FBB1F661F771F881F915080 +:10CEE0005040A9F79E3F510570F087CE6FCF5F3F4E +:10CEF000ECF3983EDCF3869577956795B795F795B3 +:10CF0000E7959F5FC1F7FE2B880F911D969587953A +:10CF100097F9089529DFE0F09E37D8F09639B8F4F4 +:10CF20009E3848F4672F782F8827985FF9CF869529 +:10CF30007795679593959539D0F3B62FB1706B0FB0 +:10CF4000711D811D20F487957795679593955BCE2C +:10CF500075CE3CCF9F93B7DE0F9007FCEE5FEBCE14 +:10CF600011F40EF479CE6ACEFFDED0F39923D9F313 +:10CF7000CEF39F57550B87FF43D00024A0E640EA2D +:10CF8000900180585695979528F4805C660F771F1E +:10CF9000881F20F026173707480730F4621B730BF1 +:10CFA000840B202931294A2BA69517940794202514 +:10CFB00031254A2758F7660F771F881F20F026175C +:10CFC0003707480730F4620B730B840B200D311DBB +:10CFD000411DA09581F7B901842F9158880F96952E +:10CFE000879508959B01AC0132CFD8DE20F09F37A2 +:10CFF00008F4ECCE08CE22CEDCDD880B990B089528 +:10D0000091505040660F771F881FD2F708959F9365 +:10D010008F937F936F93FF93EF939B01AC0117DF87 +:10D02000EF91FF911CDE2F913F914F915F910FCFB8 +:10D03000991B79E004C0991F961708F0961B881F6A +:10D040007A95C9F780950895AA1BBB1B51E107C0CB +:10D05000AA1FBB1FA617B70710F0A61BB70B881F88 +:10D06000991F5A95A9F780959095BC01CD01089517 +:10D07000A1E21A2EAA1BBB1BFD010DC0AA1FBB1FDC +:10D08000EE1FFF1FA217B307E407F50720F0A21B4E +:10D09000B30BE40BF50B661F771F881F991F1A94BB +:10D0A00069F760957095809590959B01AC01BD01E5 +:10D0B000CF010895EE0FFF1F881F8BBF0790F691D9 +:10D0C000E02D1994A29FB001B39FC001A39F700DE2 +:10D0D000811D1124911DB29F700D811D1124911D80 +:10D0E0000895F0DFA59F900DB49F900DA49F800D33 +:10D0F000911D11240895FB01DC010D900020E9F73A +:10D10000119701900D920020E1F70895FB01DC01D9 +:10D1100001900D920020E1F708950F931F93CF9394 +:10D12000DF93CDB7DEB72E970FB6F894DEBF0FBEF4 +:10D13000CDBF0E891F8986E08C831A8309838FEF08 +:10D140009FE79E838D83AE01465E5F4F688D798D2C +:10D15000CE0101965BD02F813885F801E20FF31FD5 +:10D1600010822E960FB6F894DEBF0FBECDBFDF91B2 +:10D17000CF911F910F910895CF93DF93CDB7DEB775 +:10D180002E970FB6F894DEBF0FBECDBF85E08C831F +:10D190008C899D899A838983AE01485E5F4F6E8931 +:10D1A0007F89CE010196C7D32E960FB6F894DEBFC5 +:10D1B0000FBECDBFDF91CF9108950F931F93CF93F3 +:10D1C000DF93CDB7DEB72E970FB6F894DEBF0FBE54 +:10D1D000CDBF8C0186E08C831A8309838FEF9FE794 +:10D1E0009E838D83CE01019611D02F813885F80161 +:10D1F000E20FF31F10822E960FB6F894DEBF0FBE1B +:10D20000CDBFDF91CF911F910F9108952F923F9243 +:10D210004F925F926F927F928F929F92AF92BF9246 +:10D22000CF92DF92EF92FF920F931F93CF93DF93F2 +:10D23000CDB7DEB72C970FB6F894DEBF0FBECDBFCB +:10D240007C016B018A01FC0117821682838181FFB8 +:10D25000B0C1CE0101964C01F7019381F60193FD17 +:10D26000859193FF81916F01882309F49EC18532D6 +:10D2700039F493FD859193FF81916F01853221F4FB +:10D28000B70190E0DFD4E8CF512C312C20E02032E0 +:10D29000A0F48B3269F030F4803259F0833269F4B3 +:10D2A00020612CC08D3239F0803339F4216026C0E2 +:10D2B0002260246023C0286021C027FD27C030EDF4 +:10D2C000380F3A3078F426FF06C0FAE05F9E300D42 +:10D2D0001124532E13C08AE0389E300D1124332EB2 +:10D2E00020620CC08E3221F426FD5FC1206406C08E +:10D2F0008C3611F4206802C0883641F4F60193FDA3 +:10D30000859193FF81916F018111C1CF982F9F7DEE +:10D310009554933028F40C5F1F4FFFE3F9830DC041 +:10D32000833631F0833771F0833509F057C021C05F +:10D33000F801808189830E5F1F4F44244394512C50 +:10D34000540114C03801F2E06F0E711CF801A08086 +:10D35000B18026FF03C0652D70E002C06FEF7FEF44 +:10D36000C5012C8726D42C0183012C852F77222EF2 +:10D3700016C03801F2E06F0E711CF801A080B18078 +:10D3800026FF03C0652D70E002C06FEF7FEFC5017F +:10D390002C8704D42C012C852068222E830123FCA9 +:10D3A00019C0832D90E048165906A0F4B70180E219 +:10D3B00090E048D43A94F5CFF50127FC859127FEFB +:10D3C00081915F01B70190E03DD431103A94F1E0D2 +:10D3D0004F1A51084114510479F7DEC0843611F018 +:10D3E000893631F5F80127FF07C06081718182819C +:10D3F00093810C5F1F4F08C060817181072E000C64 +:10D40000880B990B0E5F1F4F2F76722E97FF09C066 +:10D4100090958095709561957F4F8F4F9F4F2068B5 +:10D42000722E2AE030E0A4015ED4A82EA81843C0D2 +:10D43000853729F42F7EB22E2AE030E025C0F22F66 +:10D44000F97FBF2E8F36C1F018F4883579F0ADC062 +:10D45000803719F0883721F0A8C02F2F2061B22E15 +:10D46000B4FE0DC08B2D8460B82E09C024FF0AC005 +:10D470009F2F9660B92E06C028E030E005C020E15D +:10D4800030E002C020E132E0F801B7FE07C0608161 +:10D490007181828193810C5F1F4F06C06081718111 +:10D4A00080E090E00E5F1F4FA4011DD4A82EA818A5 +:10D4B000FB2DFF777F2E76FE0BC0372D3E7FA51408 +:10D4C00050F474FE0AC072FC08C0372D3E7E05C0C1 +:10D4D000BA2C372D03C0BA2C01C0B52C34FF0DC0B7 +:10D4E000FE01EA0DF11D8081803311F4397E09C0FF +:10D4F00032FF06C0B394B39404C0832F867809F03A +:10D50000B39433FD12C030FF06C05A2CB31418F484 +:10D51000530C5B18B32CB31460F4B70180E290E0B5 +:10D520003C8790D3B3943C85F6CFB31410F43B18EA +:10D5300001C0312C34FF11C0B70180E390E03C877B +:10D5400081D33C8532FF16C031FD03C088E790E0EF +:10D5500002C088E590E0B7010CC0832F867851F0B7 +:10D5600031FF02C08BE201C080E237FD8DE2B701DE +:10D5700090E068D3A51430F4B70180E390E062D363 +:10D580005A94F8CFAA94F401EA0DF11D8081B701F5 +:10D5900090E058D3A110F6CF332009F45DCEB70147 +:10D5A00080E290E04FD33A94F7CFF70186819781DC +:10D5B00002C08FEF9FEF2C960FB6F894DEBF0FBE20 +:10D5C000CDBFDF91CF911F910F91FF90EF90DF9032 +:10D5D000CF90BF90AF909F908F907F906F905F9013 +:10D5E0004F903F902F90089520FD09C0FC0123FD2E +:10D5F00005C022FF02C07383628351834083089574 +:10D6000044FD10C046FD10C0DB01FC01AA0FBB1F8A +:10D61000EE1FFF1F1094D1F76A0F7B1F8E1F9F1FF5 +:10D6200031E003C033E001C034E0660F771F881F8C +:10D63000991F3150D1F7620F711D811D911D089501 +:10D640000F931F93CF93DF938C01C801BDD2EC01E0 +:10D6500097FD06C090D2892BC1F7B801CE012AD31D +:10D66000CE01DF91CF911F910F9108958F929F92DC +:10D67000AF92BF92CF92DF92EF92FF920F931F93E0 +:10D68000CF93DF931F92CDB7DEB78C01C62E7A0100 +:10D6900029839AD2AC01552729814B32510521F0BB +:10D6A0004D32510561F42068CA94C11002C080E077 +:10D6B0006FC0C801298388D2298197FDF8CF322F06 +:10D6C0003D7FD32E322F307339F5803329F5BB24BB +:10D6D000BA94BC0C09F449C0C801298375D22981C8 +:10D6E00097FD43C0382F3F7D383561F48D2D82641E +:10D6F000D82ECA94CA94CC20C1F1C80165D297FF34 +:10D700000BC033C026FF04C02D2D2260D22E03C0D3 +:10D710003D2D3261D32ECB2C812C912C540120ED48 +:10D72000280F283078F0D4FE03C0B801C3D21AC045 +:10D730002A3040F0D6FEF9CF2F7D3FEE320F363043 +:10D74000A0F727504D2DC501B4015ADF4B015C01F4 +:10D750008D2D8260D82ECA94CC2051F0C80134D2CD +:10D7600097FFDDCFD1FC04C0A2CF812C912C5401B6 +:10D77000D7FE08C0B094A09490948094811C911C12 +:10D78000A11CB11C2D2DB501A401C7012DDF81E025 +:10D790000F90DF91CF911F910F91FF90EF90DF904D +:10D7A000CF90BF90AF909F908F9008956F927F928F +:10D7B0008F929F92AF92BF92CF92DF92EF92FF92A1 +:10D7C0000F931F93CF93DF93CDB7DEB7A1970FB61B +:10D7D000F894DEBF0FBECDBF5C017A01CE01019689 +:10D7E0006C0180E2F60111928A95E9F7F5018380D8 +:10D7F00040E050E0912C712C70E0A1E0B0E0F90124 +:10D8000083FC859183FE81918F01982F9F01811167 +:10D8100003C080E090E07AC08E3519F441155105BF +:10D8200049F1E72FF0E0E417F5073CF48D3559F1A5 +:10D830008D3219F4772001F103C0711001C0982EC8 +:10D84000892F8695869586958601080F111D892F4B +:10D8500087703D0101C0660C8A95EAF7F801808166 +:10D8600086298083991559F0991510F49F5FE8CFA8 +:10D870009150E6CF71E004C07724739401C0712CFD +:10D880004F5F5F4FBCCF772019F08E8180628E830F +:10D89000711103C09924939416C0F6019E012F5D67 +:10D8A0003F4F808180958193E217F307D1F7F2CF44 +:10D8B000E114F10429F0F7018083C70101967C018E +:10D8C0006150912CE9F0C50169A37ED169A197FD52 +:10D8D00015C0282F269526952695F601E20FF11DF5 +:10D8E000208130E0AC014770552702C0359527955F +:10D8F0004A95E2F720FDDCCFB501DCD1911089CF4C +:10D90000E114F10411F0F7011082C801A1960FB6DD +:10D91000F894DEBF0FBECDBFDF91CF911F910F9165 +:10D92000FF90EF90DF90CF90BF90AF909F908F903F +:10D930007F906F9008954F925F927F928F929F9207 +:10D94000AF92BF92CF92DF92EF92FF920F931F930D +:10D95000CF93DF931F92CDB7DEB76C012B015A0135 +:10D96000FC0117821682712CF601F380F201F3FCA0 +:10D970008591F3FE8191382F2F01882309F4E5C0AA +:10D9800090E03983F8D03981892B19F0C60158DE2F +:10D99000EBCF353241F4F201F3FC3591F3FE3191D6 +:10D9A0002F01353259F4C60139830ED1398197FDE3 +:10D9B000CAC03817C9F2B6017DD1C7C03A3239F4AE +:10D9C000F3FC3591F3FE31912F0151E001C050E09D +:10D9D000420110E020ED230F2A3088F45260612FBD +:10D9E00070E080E090E040E259830ADE162FF401F7 +:10D9F000F3FC3591F3FE31914F015981EBCF052FA7 +:10DA0000232F240151FF03C0111102C09EC01FEF3C +:10DA1000383619F03C3659F011C0F401F3FC259169 +:10DA2000F3FE21912F01283649F4052F0860046088 +:10DA3000F201F3FC2591F3FE21912F01222309F439 +:10DA400084C0622F70E084ED92E029839CD029810C +:10DA5000892B09F47AC000FD07C0F501E080F18050 +:10DA6000C50102965C0102C0E12CF12C2E3649F46E +:10DA7000F6014681578160E070E0202FC701B4DDD8 +:10DA800073CF233689F401FF11E0C6019DD097FDC5 +:10DA90005AC0E114F10429F0F7018083C70101960F +:10DAA0007C01115091F74BC02B3551F49201A70125 +:10DAB000612FC6017BDE2C01892B09F040C03AC0E2 +:10DAC000C6012983BDDD298197FD3DC02F3641F177 +:10DAD00028F4243619F1293631F124C0233769F0AE +:10DAE0002537E1F01FC0E114F10429F0F70180822D +:10DAF000C70101967C01115059F0C60165D04C0157 +:10DB000097FD06C038D0892B71F3B601C401D2D07D +:10DB1000E114F104A1F0F701108211C0006203C00A +:10DB2000006101C00064202FA701612FC6019EDDA6 +:10DB3000811105C0F6018381807329F406C000FDC0 +:10DB400013CF739411CF772019F0872D90E002C086 +:10DB50008FEF9FEF0F90DF91CF911F910F91FF906B +:10DB6000EF90DF90CF90BF90AF909F908F907F907D +:10DB70005F904F900895911114C1803219F089502F +:10DB80008550D0F70895FC010590061621F000207D +:10DB9000D9F7C00108953197CF010895FC01059090 +:10DBA000615070400110D8F7809590958E0F9F1F9F +:10DBB0000895FC016150704001900110D8F78095E4 +:10DBC00090958E0F9F1F0895CF93DF93EC012B81CB +:10DBD00020FF33C026FF0AC02F7B2B838E819F81BD +:10DBE00001969F838E838A8190E029C022FF0FC017 +:10DBF000E881F9818081082E000C990B009719F4B7 +:10DC000020622B831AC03196F983E8830EC0EA851F +:10DC1000FB85199597FF09C02B81019611F080E2D1 +:10DC200001C080E1822B8B8308C02E813F812F5F52 +:10DC30003F4F3F832E83992702C08FEF9FEFDF91E5 +:10DC4000CF9108950F931F93CF93DF93FB0123810F +:10DC500021FD03C08FEF9FEF28C022FF16C0468131 +:10DC60005781248135814217530744F4A081B18143 +:10DC70009D012F5F3F4F318320838C932681378115 +:10DC80002F5F3F4F3783268310C0EB01092F182FDA +:10DC90000084F185E02D1995892BE1F68E819F8115 +:10DCA00001969F838E83812F902FDF91CF911F91BB +:10DCB0000F910895FB01238120FF12C026FD10C0A3 +:10DCC0008F3F3FEF930761F082832F7D2064238392 +:10DCD000268137812150310937832683992708957A +:10DCE0008FEF9FEF0895FA01AA27283051F12031D4 +:10DCF00081F1E8946F936E7F6E5F7F4F8F4F9F4FE0 +:10DD0000AF4FB1E03ED0B4E03CD0670F781F891F21 +:10DD10009A1FA11D680F791F8A1F911DA11D6A0FEF +:10DD2000711D811D911DA11D20D009F468943F91A2 +:10DD30002AE0269F11243019305D3193DEF6CF01A1 +:10DD40000895462F4770405D4193B3E00FD0C9F767 +:10DD5000F6CF462F4F70405D4A3318F0495D31FDD4 +:10DD60004052419302D0A9F7EACFB4E0A695979527 +:10DD7000879577956795BA95C9F7009761057105FD +:10DD800008959B01AC010A2E069457954795379547 +:10DD90002795BA95C9F7620F731F841F951FA01DA1 +:0CDDA0000895992788270895F894FFCF74 +:10DDAC009A99D93F080200000000000000737363C9 +:10DDBC00616E662025640D0A0053255B302D392DCC +:10DDCC002B2E5D52255B302D392D2B2E5D48255B7E +:10DDDC00302D392D2B2E5D46255B302D392D2B2EDC +:10DDEC005D004E256456255B302D392D2B2E5D465E +:10DDFC00255B302D392D2B2E5D0058255B302D39B0 +:10DE0C002D2B2E5D59255B302D392D2B2E5D5A2552 +:10DE1C005B302D392D2B2E5D46255B302D392D2B6E +:10DE2C002E5D0041255B302D392D2B2E5D005625A6 +:10DE3C0073002056310A0046255B302D392E5D5477 +:10DE4C0025640058255B302D392D2B2E5D59255B13 +:10DE5C00302D392D2B2E5D5A255B302D392D2B2E47 +:10DE6C005D5025640053255B302D392D2B2E5D0024 +:10DE7C006120300D0A006220300D0A006320300D45 +:10DE8C000A0020422573204C2573205225730A006A +:10DE9C00537769667450726F002025730A005634EC +:10DEAC002E312E310056342E302E31004646464649 +:10DEBC0046464646002025730020582573205925D8 +:10DECC0073205A25730A0020532573205225732082 +:10DEDC004825730A0061643A25640D0A0020422526 +:10DEEC0064204C2564205225640A0040310A00232A +:10DEFC00255B302D395D00242573004532332062BB +:10DF0C0075666665722066756C6C0D0A0040332070 +:10DF1C0058257320592573205A2573205225730ACE +:10DF2C00004036204E30205625640A0040392056D9 +:10DF3C00300A004532330A004532300A004532318E +:10DF4C000A0020006F6B004532300045323100452D +:10DF5C0032320056332E332E310056332E332E30C0 +:02DF6C000000B3 +:00000001FF From d84e55c01885596f2d1d1000cedddc8e1d80a99b Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 6 Jul 2018 16:39:59 +0800 Subject: [PATCH 35/74] update --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8cde5bf..f4de42f 100755 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ---------- ## Update Summary for v4.1.1 * Fix cmd M17 bug -* Add out of step back features +* Add closed-loop stepper control (step losing detection and auto-adjusting) ## Update Summary for v4.1.0 * Transplant Grbl framework. * Optimize stepper motor performance,improve motor speed,fix motor shake. @@ -16,9 +16,9 @@ #### Not support app control #### For uArmStudio control -- BLOCKLY is not support **input** and **Grove** module. -- Draw/Laser is not support. -- 3D Printing is not support. +- input and Grove module in BLOCKLY are not supported. +- Draw/Laser is not supported. +- 3D Printing is not supported. ## Communication protocol #### For serial terminal control From 00e4e7d12e6fb55fc30333825e6ec17972ca5f78 Mon Sep 17 00:00:00 2001 From: TopgunZh <39727447+TopgunZh@users.noreply.github.com> Date: Mon, 27 Aug 2018 10:26:26 +0800 Subject: [PATCH 36/74] Delete uArmPro_V4.1.1_release_20180621.hex --- hex/uArmPro_V4.1.1_release_20180621.hex | 3577 ----------------------- 1 file changed, 3577 deletions(-) delete mode 100755 hex/uArmPro_V4.1.1_release_20180621.hex diff --git a/hex/uArmPro_V4.1.1_release_20180621.hex b/hex/uArmPro_V4.1.1_release_20180621.hex deleted file mode 100755 index 90bf5d0..0000000 --- a/hex/uArmPro_V4.1.1_release_20180621.hex +++ /dev/null @@ -1,3577 +0,0 @@ -:10000000CBC40000EAC40000E8C40000E6C400005D -:10001000E4C40000E2C40000E0C40000DEC400004C -:10002000DCC400000C94FF51D8C400000C94BE4105 -:10003000D4C40000D2C40000D0C400000C94253603 -:10004000CCC400000C941F25C8C40000C6C4000026 -:10005000C4C40000C2C40000C0C400000C94704BB3 -:10006000BCC400000C944C2A0C94AE2AB6C4000008 -:10007000B4C40000B2C40000B0C40000AEC40000AC -:10008000ACC40000AAC40000A8C400000C940F3641 -:10009000A4C40000A2C40000A0C400009EC40000CC -:1000A0009CC400009AC4000098C4000096C40000DC -:1000B00094C400000C94DA3590C400008EC4000093 -:1000C0008CC400008AC400000C94A53586C40000CE -:1000D00084C4000082C4000080C400007EC400000C -:1000E0007CC40000C7196D246D24D519EA19FF19C5 -:1000F000141A6D241D1A6D24301A6D243F1A491AE2 -:10010000A11A6D246D246D24581A721A8C1A372383 -:100110004F237E234F238223982387239123BC23BD -:10012000C323CE23D923F823FA23FD23FF238128D9 -:1001300087288A288D2892289A28A2280F290F29F3 -:100140000F29AA28AD28B628BF280F290F290F2963 -:100150000F290F290F29C728D128DD28E728EA28E9 -:10016000F328FC280229084AD73B3BCE016E84BC09 -:10017000BFFDC12F3D6C74319ABD56833DDA3D0001 -:10018000C77F11BED9E4BB4C3E916BAAAABE00004A -:1001900000803F072C7AA5BA6CC590DA3B9365FCCA -:1001A0008BBC53F810FD3C5692834DBD879D3AB6EB -:1001B0003DCBC9BF5BBE73DA0FC93F05A84CCDB2BA -:1001C000D44EB93836A9020C50B9918688083CA69D -:1001D000AAAA2ABE000000803F0000407A10F35A0D -:1001E00000A0724E18090010A5D4E80000E8764877 -:1001F000170000E40B54020000CA9A3B000000E123 -:10020000F505000080969800000040420F000000B5 -:10021000A08601000000102700000000E803000095 -:1002200000006400000000000A000000000001005F -:10023000000000002C76D888DC674F0823DFC1DF80 -:10024000AE59E1B1B796E5E3E453C63AE651997683 -:1002500096E8E6C28426EB898C9B62ED407C6FFCBD -:10026000EFBC9C9F40F2BAA56FA5F490055A2AF7FF -:100270005C936B6CF9676DC11BFCE0E40D47FEF508 -:1002800020E6B500D0ED902E030094357705008070 -:10029000841E080000204E0A000000C80C333333CF -:1002A000330F986E12831141EF8D2114893BE6556F -:1002B00016CFFEE6DB18D1844B381BF77C1D901D52 -:1002C000A4BBE424203284725E228100C9F124ECB4 -:1002D000A1E53D276364696E6F70737578585B00A4 -:1002E0000D0A4772626C20302E396A205B27242762 -:1002F00020666F722068656C705D0D0A000D0A0043 -:100300003D00244E005D0D0A005B302E396A2E320E -:10031000303136303732363A005D0D0A005B544CCE -:100320004F3A005D0D0A002C005B4739323A005D00 -:100330000D0A002C003A003330003238005B4700D1 -:100340005D0D0A00205300204600205400204D3847 -:1003500000204D3900204D3500204D3400204D3314 -:1003600000204D3200204D3100204D300020473913 -:1003700034002047393300204739310020473930D5 -:100380000020473230002047323100204731390009 -:1003900020473138002047313700204700473338A5 -:1003A0002E004738300047330047320047310047BE -:1003B00030005B002424202876696577204772622C -:1003C0006C2073657474696E6773290D0A24232089 -:1003D0002876696577202320706172616D65746588 -:1003E0007273290D0A244720287669657720706189 -:1003F00072736572207374617465290D0A24492033 -:100400002876696577206275696C6420696E666F0D -:10041000290D0A244E20287669657720737461724D -:1004200074757020626C6F636B73290D0A24783DBC -:1004300076616C7565202873617665204772626C01 -:100440002073657474696E67290D0A244E783D6CBB -:10045000696E6520287361766520737461727475A6 -:100460007020626C6F636B290D0A24432028636837 -:1004700065636B2067636F6465206D6F6465290D2C -:100480000A245820286B696C6C20616C61726D20A5 -:100490006C6F636B290D0A2448202872756E2068E2 -:1004A0006F6D696E67206379636C65290D0A7E2024 -:1004B000286379636C65207374617274290D0A2155 -:1004C00020286665656420686F6C64290D0A3F20EA -:1004D0002863757272656E74207374617475732904 -:1004E0000D0A6374726C2D78202872657365742010 -:1004F0004772626C290D0A00290D0A00206D61788F -:100500002074726176656C2C206D6D0020616363D0 -:10051000656C2C206D6D2F7365635E3200206D61FC -:100520007820726174652C206D6D2F6D696E002CC2 -:1005300020737465702F6D6D007A0079007800204B -:1005400028003D0024002028686F6D696E672070C8 -:10055000756C6C2D6F66662C206D6D290D0A002060 -:1005600028686F6D696E67206465626F756E63657C -:100570002C206D736563290D0A2432373D00202835 -:10058000686F6D696E67207365656B2C206D6D2FCC -:100590006D696E290D0A2432363D002028686F6D82 -:1005A000696E6720666565642C206D6D2F6D696EC0 -:1005B000290D0A2432353D00290D0A2432343D002C -:1005C0002028686F6D696E672064697220696E7695 -:1005D000657274206D61736B3A002028686F6D69D5 -:1005E0006E67206379636C652C20626F6F6C290DD8 -:1005F0000A2432333D00202868617264206C696DE2 -:100600006974732C20626F6F6C290D0A2432323D9D -:10061000002028736F6674206C696D6974732C20D8 -:10062000626F6F6C290D0A2432313D0020287265FB -:10063000706F727420696E636865732C20626F6FCF -:100640006C290D0A2432303D002028617263207429 -:100650006F6C6572616E63652C206D6D290D0A24C7 -:1006600031333D0020286A756E6374696F6E2064B3 -:100670006576696174696F6E2C206D6D290D0A2491 -:1006800031323D00290D0A2431313D002028737498 -:1006900061747573207265706F7274206D61736B15 -:1006A0003A00202870726F62652070696E20696E52 -:1006B000766572742C20626F6F6C290D0A243130BC -:1006C0003D0020286C696D69742070696E73206923 -:1006D0006E766572742C20626F6F6C290D0A243659 -:1006E0003D0020287374657020656E61626C652022 -:1006F000696E766572742C20626F6F6C290D0A2406 -:10070000353D00290D0A24343D00202864697220FB -:10071000706F727420696E76657274206D61736B90 -:100720003A00290D0A24333D002028737465702097 -:10073000706F727420696E76657274206D61736B70 -:100740003A002028737465702069646C65206465C4 -:100750006C61792C206D736563290D0A24323D008C -:100760002028737465702070756C73652C20757308 -:100770006563290D0A24313D0024303D005D0D0ADA -:10078000003A002C005B5052423A000D0A00496EBC -:1007900076616C69642067636F64652049443A0040 -:1007A000556E646566696E65642066656564207271 -:1007B000617465004D6F64616C2067726F757020A5 -:1007C00076696F6C6174696F6E00486F6D696E67F2 -:1007D000206E6F7420656E61626C656400416C61AF -:1007E000726D206C6F636B004E6F742069646C6572 -:1007F00000454550524F4D20726561642066616925 -:100800006C2E205573696E672064656661756C7423 -:10081000730056616C7565203C20332075736563E9 -:100820000053657474696E672064697361626C65F6 -:10083000640056616C7565203C203000496E76611D -:100840006C69642073746174656D656E74004261D7 -:1008500064206E756D62657220666F726D617400E2 -:10086000457870656374656420636F6D6D616E6457 -:10087000206C6574746572006572726F723A200044 -:100880006F6B0D0A000D0A00486F6D696E67206678 -:1008900061696C0050726F6265206661696C00412D -:1008A000626F727420647572696E67206379636C1D -:1008B0006500536F6674206C696D697400486172DD -:1008C00064206C696D697400414C41524D3A2000BE -:1008D0003E0D0A002C4C696D3A002C52583A002CFF -:1008E0004275663A002C002C57506F733A002C006A -:1008F0002C4D506F733A003C446F6F72003C43685C -:1009000065636B003C416C61726D003C486F6D65C6 -:10091000003C486F6C64003C52756E003C49646C4E -:1009200065005D0D0A00526573746F72696E672011 -:1009300064656661756C74730050676D20456E6404 -:1009400000436865636B20446F6F72004469736194 -:10095000626C656400456E61626C6564004361753C -:1009600074696F6E3A20556E6C6F636B6564002717 -:100970002448277C2724582720746F20756E6C6FBD -:10098000636B00526573657420746F20636F6E74BF -:10099000696E7565005B000011241FBECFEFD1E2C8 -:1009A000DEBFCDBF00E00CBF13E0A0E0B2E0ECEA98 -:1009B000FDED00E00BBF02C007900D92A23CB10715 -:1009C000D9F722E1A2ECB3E001C01D92AB3DB20722 -:1009D000E1F70E94FA540C94D46E12CB2F923F92FE -:1009E0004F925F926F927F928F929F92AF92BF923F -:1009F000CF92DF92EF92FF920F931F93CF93DF93EB -:100A0000CDB7DEB7C15DD1090FB6F894DEBF0FBE1A -:100A1000CDBFC154DF4F99838883CF5BD04089E33A -:100A2000EAEBFEE0DF011D928A95E9F78AE0EBE24E -:100A3000FEE0ABEBBEE001900D928A95E1F7FE017E -:100A4000EB55FF4F1082C554DF4F19821882CB5BE4 -:100A5000D040C354DF4F19821882CD5BD040CB53B6 -:100A6000DF4F1882C55CD040CE54DF4F1882C25B86 -:100A7000D040C654DF4F1882CA5BD040BA97C655E3 -:100A8000DF4FF983E883CA5AD0409E012F5A3F4F67 -:100A9000C455DF4F39832883CC5AD040C90108960A -:100AA000C753DF4F99838883C95CD040CB55DF4F54 -:100AB0008881C55AD040C154DF4FE881F981CF5BAE -:100AC000D040E80FF11D1081112311F40C94E81AA5 -:100AD0009FEB910F9A3110F00C945F248F5FCB55F0 -:100AE000DF4F8883C55AD040AE014F555F4FBE01DE -:100AF0006B557F4FC154DF4F88819981CF5BD040C8 -:100B00000E94534D882311F40C946124CF55DF4F7C -:100B1000C880D980EA80FB80C15AD040C701B601A5 -:100B20000E94F5670E944265CF53DF4F6883798347 -:100B30008A839B83C15CD040CF53DF4F28803980AC -:100B4000C15CD040B10180E090E00E946E659B01E5 -:100B5000AC01C701B6010E94F46320E030E048EC2C -:100B600052E40E9427670E948A670E944265CA5425 -:100B7000DF4F79836883C65BD0401D3411F40C9439 -:100B8000670E103511F40C943515173411F00C94D0 -:100B9000B419CB55DF4F8881C55AD040C154DF4FBF -:100BA00028813981CF5BD040280F311D9AE9291661 -:100BB00098E0390609F428C160F4B4ED2B16B7E0CB -:100BC0003B06A1F0E9E92E16E8E03E0609F454C020 -:100BD000DCC5FCE92F16F8E03F0609F498C28DE960 -:100BE000281688E0380609F495C3CFC51A82198201 -:100BF000CE0101969F938F9381EC92E09F938F9308 -:100C00003F932F930E94BC680F900F900F900F900E -:100C10000F900F90181619060CF0A8C389819A81BD -:100C20009093170F8093160F91E09093C10D8091D0 -:100C3000120F8111ADC524E837E33093CE0D209318 -:100C4000CD0D1092200185E08093210121EF3FEF2F -:100C50003093D00D2093CF0D2091CF0D3091D00D3A -:100C6000309325012093240180917300816080934B -:100C700073009093120F8CC58E010B5E1F4F1F9354 -:100C80000F937E0199E2E90EF11CFF92EF926E0143 -:100C9000ADE3CA0ED11CDF92CF92C355DF4FB881AE -:100CA000CD5AD040BF93C455DF4FE881CC5AD040D5 -:100CB000EF9389E192E09F938F933F932F930E944C -:100CC000BC680FB6F894DEBF0FBECDBF04970CF41E -:100CD0004DC3EF961CAE1DAE1EAE1FAEEF97E59650 -:100CE0001CAE1DAE1EAE1FAEE597AB961CAE1DAE84 -:100CF0001EAE1FAEAB97A1961CAE1DAE1EAE1FAEB4 -:100D0000A197CE0101965C018CE0D5011D928A95D8 -:100D1000E9F7AE0145585F4F60E070E0CE018F5AB1 -:100D20009F4F0E94534D882309F432C5AE014F589E -:100D30005F4F60E070E0C6010E94534D882309F4C4 -:100D400027C5AE0149595F4F60E070E0C7010E94BE -:100D5000534D882309F41CC5AE01435A5F4F60E030 -:100D600070E0C8010E94534D882309F411C520E0AA -:100D700030E044EB52E4E5966CAD7DAD8EAD9FADB9 -:100D8000E5970E94F46321EE3EE245E652E40E94BC -:100D9000D5646B017C01E5966CAF7DAF8EAF9FAFE4 -:100DA000E597EF964CAC5DAC6EAC7FACEF970E94D4 -:100DB000D2649B01AC01C301B2010E942767698321 -:100DC0007A838B839C83C701B6010E94AA679B012B -:100DD000AC01C301B2010E9427676D837E838F83BC -:100DE0009887AB968CAD9DADAEADBFADAB97898707 -:100DF0009A87AB87BC87A1962CAD3DAD4EAD5FAD5C -:100E0000A19700E0B501BCC4E5961CAE1DAE1EAEB8 -:100E10001FAEE597AB961CAE1DAE1EAE1FAEAB97D8 -:100E2000FE0131967F01FF93EF938E010B5E1F4F02 -:100E30001F930F93C555DF4FF881CB5AD040FF93D6 -:100E4000C655DF4F8881CA5AD0408F9382E492E022 -:100E50009F938F933F932F930E94BC680FB6F89493 -:100E6000DEBF0FBECDBF03970CF480C2AE014F585A -:100E70005F4F60E070E0C8010E94534D882309F481 -:100E800087C4AE0149595F4F60E070E0C7010E941E -:100E9000534D882309F47CC4A1961CAE1DAE1EAE32 -:100EA0001FAEA19765961CAE1DAE1EAE1FAE659718 -:100EB00021961CAE1DAE1EAE1FAE21973E01B9E2BB -:100EC0006B0E711C8CE0F30111928A95E9F7609129 -:100ED000B00D7091B10D8091B20D9091B30D0E9443 -:100EE0007065C255DF4F688379838A839B83CE5AAE -:100EF000D0406091AC0D7091AD0D8091AE0D909190 -:100F0000AF0D0E9470659B01AC016091A80D7091BE -:100F1000A90D8091AA0D9091AB0DC353DF4F28838B -:100F2000CD5CD040C253DF4F3883CE5CD040C0533D -:100F3000DF4F4883C05DD040CF52DF4F5883C15D43 -:100F4000D0400E947065DE01DD964D01FE01EF5A32 -:100F5000FF4F5F0190966D01C255DF4FE880F98029 -:100F60000A811B81CE5AD040C353DF4F2881CD5C0C -:100F7000D040C253DF4F3881CE5CD040C053DF4FEA -:100F80004881C05DD040CF52DF4F5881C15DD04015 -:100F90000E94103FED968EAD9FADED97813091058B -:100FA00029F1F4F4892B09F0EEC120E030E044EBA4 -:100FB00052E4E5966CAD7DAD8EAD9FADE5970E9498 -:100FC000F4637B018C01E5966CAF7DAF8EAF9FAF74 -:100FD000E59765962CAD3DAD4EAD5FAD659725C0EF -:100FE00082309105B1F00397E9F1CDC12196ECACC7 -:100FF000FDAC0EAD1FAD219765962CAD3DAD4EAD50 -:101000005FAD6597E5966CAD7DAD8EAD9FADE59717 -:1010100012C02196ECACFDAC0EAD1FAD2197E5964C -:101020002CAD3DAD4EAD5FADE597A1966CAD7DAD00 -:101030008EAD9FADA197FE01F1964F01DE019D9609 -:101040005D0163010E942B3EA401B501C3010E9412 -:101050007C3BAB962CAD3DAD4EAD5FADAB9700E0AC -:10106000B3018EC3E596CCACDDACEEACFFACE5973E -:1010700020E030E044E353E4C701B6010E94EC668F -:10108000181684F020E030E0A901C701B6010E94E3 -:10109000CE6487FF0AC0C12CD12CB4E3EB2EB3E49D -:1010A000FB2E03C0C12CD12C7601A701960160E074 -:1010B00070E084E393E40E94F46320E030E044E3D2 -:1010C00053E40E94D5649B01AC010E94F56323E3C5 -:1010D00033E343E35FE30E94F563609300027093A0 -:1010E0000102809302029093030220E030E048EA7C -:1010F00051E40E94D56420E030EC4FE754E40E94B4 -:1011000027670E944265CB010E94623541C3CE0130 -:1011100045969F938F9344969F938F9344969F9366 -:101120008F93C355DF4FB881CD5AD040BF93C4557C -:10113000DF4FE881CC5AD040EF938AE592E09F934D -:101140008F933F932F930E94BC680FB6F894DEBF35 -:101150000FBECDBF04970CF409C1EF961CAE1DAEB7 -:101160001EAE1FAEEF97E5961CAE1DAE1EAE1FAEB7 -:10117000E597AB961CAE1DAE1EAE1FAEAB97A1960B -:101180001CAE1DAE1EAE1FAEA197AE0145585F4FFF -:1011900060E070E0CE018F5A9F4F0E94534D88232C -:1011A00009F4F6C2AE014F585F4F60E070E0CE0127 -:1011B000CD960E94534D882309F4EAC2AE014959E5 -:1011C0005F4F60E070E0CE0189960E94534D882306 -:1011D00009F4DEC2AE01435A5F4F60E070E0CE0119 -:1011E00045960E94534D882309F4D2C26091B00DF8 -:1011F0007091B10D8091B20D9091B30D0E94706508 -:101200002B013C016091AC0D7091AD0D8091AE0D44 -:101210009091AF0D0E9470659B01AC016091A80D8B -:101220007091A90D8091AA0D9091AB0DC353DF4F22 -:101230002883CD5CD040C253DF4F3883CE5CD04092 -:10124000C053DF4F4883C05DD040CF52DF4F58833B -:10125000C15DD0400E947065DE0119964D01FE010E -:1012600035965F0118976D0183017201C353DF4FFB -:101270002881CD5CD040C253DF4F3881CE5CD04056 -:10128000C053DF4F4881C05DD040CF52DF4F5881FF -:10129000C15DD0400E94273CA401B501C6010E9457 -:1012A0007C3BEF962CAD3DAD4EAD5FADEF976981C8 -:1012B0007A818B819C810E94F56369837A838B8319 -:1012C0009C83E5962CAD3DAD4EAD5FADE5976D8150 -:1012D0007E818F8198850E94F5636D837E838F83E5 -:1012E0009887AB962CAD3DAD4EAD5FADAB976985A4 -:1012F0007A858B859C850E94F56369877A878B87C1 -:101300009C87A1962CAD3DAD4EAD5FADA19700E0A1 -:10131000B60136C28E01035A1F4F1F930F937E01F1 -:10132000B7E6EB0EF11CFF92EF926E01E1E7CE0EF5 -:10133000D11CDF92CF92C555DF4FF881CB5AD040F8 -:10134000FF93C655DF4F8881CA5AD0408F9389E1F9 -:1013500092E09F938F933F932F930E94BC680FB6A8 -:10136000F894DEBF0FBECDBF049784F41F9281E0D6 -:101370008F938DE092E09F938F930E94C92D0F90E1 -:101380000F900F900F9082E390E004C2C356DF4F9E -:10139000188219821A821B82CD59D040C756DF4F5E -:1013A000188219821A821B82C959D040CB56DF4F4E -:1013B000188219821A821B82C559D040CF56DF4F3E -:1013C000188219821A821B82C159D0408CE0C45500 -:1013D000DF4FE881F981CC5AD04011928A95E9F724 -:1013E000AE0143565F4F60E070E0CE0185589F4FDD -:1013F0000E94534D882309F4CBC1AE0147565F4F7D -:1014000060E070E0C6010E94534D882309F4C0C11A -:10141000AE014B565F4F60E070E0C7010E94534D34 -:10142000882309F4B5C1AE014F565F4F60E070E00C -:10143000C8010E94534D882309F4AAC1C357DF4F46 -:10144000188219821A821B82CD58D040C757DF4FAD -:10145000188219821A821B82C958D040CB57DF4F9D -:10146000188219821A821B82C558D0406091B00D33 -:101470007091B10D8091B20D9091B30D0E94706585 -:101480002B013C016091AC0D7091AD0D8091AE0DC2 -:101490009091AF0D0E9470659B01AC016091A80D09 -:1014A0007091A90D8091AA0D9091AB0DC353DF4FA0 -:1014B0002883CD5CD040C253DF4F3883CE5CD04010 -:1014C000C053DF4F4883C05DD040CF52DF4F5883B9 -:1014D000C15DD0400E947065DE01AB57BF4F4D012A -:1014E000FE01E757FF4F5F0118966D0183017201FE -:1014F000C353DF4F2881CD5CD040C253DF4F3881CA -:10150000CE5CD040C053DF4F4881C05DD040CF5249 -:10151000DF4F5881C15DD0400E94103F6091B00DF7 -:101520007091B10D8091B20D9091B30D0E947065D4 -:101530002B013C016091AC0D7091AD0D8091AE0D11 -:101540009091AF0D0E9470659B01AC016091A80D58 -:101550007091A90D8091AA0D9091AB0DC353DF4FEF -:101560002883CD5CD040C253DF4F3883CE5CD0405F -:10157000C053DF4F4883C05DD040CF52DF4F588308 -:10158000C15DD0400E947065C753DF4F888099804D -:10159000C95CD040E1E5F0E0EC0FFD1F3496C25588 -:1015A000DF4FF983E883CE5AD0405F01DE01AF5AA6 -:1015B000BF4F6D0183017201C353DF4F2881CD5CA2 -:1015C000D040C253DF4F3881CE5CD040C053DF4F94 -:1015D0004881C05DD040CF52DF4F5881C15DD040BF -:1015E0000E94273CC753DF4F48815981C95CD040D6 -:1015F000C255DF4F68817981CE5AD040C6010E9422 -:101600007C3B65966CAD7DAD8EAD9FAD6597699663 -:10161000CCACDDACEEACFFAC69979B01AC010E9499 -:1016200027674B015C01A7019601C701B6010E9423 -:1016300027679B01AC01C501B4010E94F5630E94BC -:10164000B467C356DF4F288139814A815B81CD5908 -:10165000D0400E94F5636B017C01C356DF4F688365 -:1016600079838A839B83CD59D040C756DF4F288129 -:1016700039814A815B81C959D040CB57DF4F68819E -:1016800079818A819B81C558D0400E94F56321EE03 -:101690003EE245E652E40E94D5642B013C010E94E3 -:1016A000D2649B01AC01C701B6010E9427674B01C0 -:1016B0005C0165966CAF7DAF8EAF9FAF6597C30140 -:1016C000B2010E94AA679B01AC01C701B6010E944A -:1016D000276769966CAF7DAF8EAF9FAF6997CB568A -:1016E000DF4F288139814A815B81C559D0406D9691 -:1016F0006CAD7DAD8EAD9FAD6D970E94F5636D961F -:101700006CAF7DAF8EAF9FAF6D978E01035C1F4FA7 -:1017100024E045E0C501B4010E94626169966CADA8 -:101720007DAD8EAD9FAD69970451110924E045E070 -:101730000E9462616D966CAD7DAD8EAD9FAD6D9773 -:101740000451110924E045E00E946261C356DF4F55 -:10175000688179818A819B81CD59D04004511109DA -:1017600024E045E00E946261CF56DF4F2881398135 -:101770004A815B81C159D04000E0BE016F5A7F4F62 -:1017800080E00E94414E90E005C081E090E002C000 -:1017900080E090E09C01215031092230310510F0A9 -:1017A0000C94C124B8E22B16310409F445C280F52B -:1017B000F4E12F16310498F421E12216310408F0E7 -:1017C0007AC134E02316310409F479C008F4F6C074 -:1017D0009AE02916310409F45EC00C946D24ACE142 -:1017E0002A16310409F457C038F4E6E12E16310404 -:1017F00008F4BFC10C946D24FEE12F16310409F4E6 -:101800004AC026E22216310409F4D8C00C946D2493 -:101810003DE32316310409F4FEC110F595E32916C2 -:10182000310409F44CC060F4BBE22B16310409F416 -:10183000B7C1E1E32E16310409F4B2C10C946D2452 -:10184000FCE32F16310410F00C946D24CF53DF4FBE -:101850008881C15CD04086538093C10EF9E0D5C128 -:101860002CE52216310460F43AE52316310408F021 -:101870003DC180E52816310409F4AEC00C946D24F6 -:101880009CE52916310439F0AFE52A16310408F435 -:1018900063C10C946D24CA54DF4FE881F981C65BA3 -:1018A000D040EF2B11F00C947F24C654DF4FF88109 -:1018B000CA5BD040FF2309F452C00C9463242CE18E -:1018C00022163104D1F148F484E02816310481F065 -:1018D0009AE029163104E9F01FC0AEE12A1631045E -:1018E00009F447C0B5E32B16310409F465C014C0F0 -:1018F00081E010C0BFE12B16310408F051C0EAE0CE -:101900002E16310479F4E1E0C654DF4FE883CA5B58 -:10191000D04082E08093BA0EC255DF4F1882CE5A73 -:10192000D04097C1FCE12F16310409F09CC1F1E0D1 -:10193000C654DF4FF883CA5BD040CA54DF4F2881BA -:101940003981C65BD0402115310539F02A30310587 -:1019500011F00C946D2484E015C083E013C0AEE157 -:101960002A16310439F631E0C654DF4F3883CA5B9A -:10197000D040CA54DF4F88819981C65BD040009720 -:1019800049F485E08093BA0EC255DF4F1882CE5AD3 -:10199000D04074C10A9711F00C946D2486E0F2CF08 -:1019A00025E32216310411F00C94B02491E0C654C2 -:1019B000DF4F9883CA5BD04087E0ACCFC654DF4F7F -:1019C000F881CA5BD040F1110C94632422E0C65424 -:1019D000DF4F2883CA5BD04032E02316310421F167 -:1019E00060F421143104E1F02A94232809F02BC17A -:1019F00081E08093BB0E21E073C0A6E22A16310479 -:101A0000E9F0B0E52B16310409F451C0E3E02E16DD -:101A1000310409F018C183E08093BB0E81E00DC151 -:101A20001092BB0EF1E0F1C082E08093BB0E31E07A -:101A3000C255DF4F3883CE5AD0400BC1CA54DF4F56 -:101A4000A881B981C65BD040AE31B10531F170F4E7 -:101A5000549711F00C946D2484E08093BB0EF1E058 -:101A6000C255DF4FF883CE5AD04008C1CA54DF4F69 -:101A7000E881F981C65BD040E832F10599F0F29730 -:101A800011F00C946D2487E08093BB0E81E0C25569 -:101A9000DF4F8883CE5AD040F1C085E08093BB0EE3 -:101AA00021E054C086E08093BB0E31E0BFC088E0E7 -:101AB0008093BB0EC8C0A2E12A16310441F0B3E105 -:101AC0002B16310449F01092BF0EE2E063C081E0B2 -:101AD0008093BF0EF2E099C082E08093BF0E22E0B7 -:101AE000C255DF4F2883CE5AD040B3C0CA54DF4F0F -:101AF00088819981C65BD040892BB9F49AE5291673 -:101B0000310449F41092BE0EA3E0C255DF4FA88302 -:101B1000CE5AD040B3C081E08093BE0EB3E0C25530 -:101B2000DF4FB883CE5AD040A9C0CA54DF4FE881F6 -:101B3000F981C65BD0403A9711F00C946D24FAE518 -:101B40002F16310411F40C946D2424E0C255DF4F9C -:101B50002883CE5AD04092C03DE52316310429F4A3 -:101B600081E08093BC0E85E068C01092BC0E95E0C9 -:101B70006BC0A4E12A16310451F481E08093BD0EBC -:101B8000B6E0C255DF4FB883CE5AD04062C0109243 -:101B9000BD0EE6E0C255DF4FE883CE5AD04059C0B3 -:101BA000C654DF4FF881CA5BD040F1110C94632416 -:101BB00021E32216310479F41092C00E38E0C255A8 -:101BC000DF4F3883CE5AD04083E0C654DF4F88833E -:101BD000CA5BD04053C0CA54DF4FA881B981C65BED -:101BE000D0401A9711F00C946D2481E08093C00EC0 -:101BF000B8E0C255DF4FB883CE5AD040E3E0C654B8 -:101C0000DF4FE883CA5BD04039C0C255DF4FF8834D -:101C1000CE5AD0401EC0CA54DF4F28813981C65BDE -:101C2000D040232B11F00C946D243AE0C255DF4FC5 -:101C30003883CE5AD04022C087E0C255DF4F888318 -:101C4000CE5AD04006C091E0C255DF4F9883CE5A9D -:101C5000D040CA54DF4FA881B981C65BD040AB2BBE -:101C600069F00C949224C255DF4F1882CE5AD040AE -:101C7000B1E0C654DF4FB883CA5BD04081E090E04A -:101C8000C255DF4F0880CE5AD04002C0880F991F3E -:101C90000A94E2F7C354DF4F28813981CD5BD040ED -:101CA00028233923232B19F085E10C94C124C35434 -:101CB000DF4FE881F981CD5BD040E82BF92BC3548D -:101CC000DF4FF983E883CD5BD0400C945605CA54AE -:101CD000DF4F28813981C65BD040232B11F00C9453 -:101CE0009224CB55DF4F8881C55AD040C154DF4F75 -:101CF000E881F981CF5BD040E80FF11D3EEA231661 -:101D000038E0330608F054C08CEA281688E038061C -:101D100008F037C19AE4291698E0390609F4D6C1CB -:101D200000F5BCEC2B16310409F42EC158F431E156 -:101D30002316310409F491C082E12816310409F414 -:101D40001EC188C098E4291698E0390609F45AC1E2 -:101D500008F0B5C1B3EE2B16B7E03B0609F40FC18E -:101D600079C022EA221628E0320609F432C298F439 -:101D70008AE9281688E0380609F4E1C19BE92916AA -:101D800098E0390609F402C2A9E92A16A8E03A0641 -:101D900009F060C0AEC1B6EA2B16B8E03B0608F405 -:101DA000F0C0E7EA2E16E8E03E0609F44EC252C043 -:101DB00022EC221628E0320638F530EC231638E003 -:101DC000330608F0DEC088EB281688E0380609F4F0 -:101DD00043C368F4AEEA2A16A8E03A0609F43BC207 -:101DE000B7EB2B16B8E03B0609F423C333C029EB4D -:101DF000221628E0320609F440C33AEB231638E0F5 -:101E0000330609F4BEC026C08AE6281689E03806E3 -:101E100009F4E1C368F4A0E62A16A9E03A0609F439 -:101E20004FC3B1E62B16B9E03B0609F4BBC312C0A1 -:101E300024E7221629E0320609F46FC435E7231699 -:101E400039E0330609F4C1C48BE6281689E0380668 -:101E500009F426C481E090E08EC58A9A8091080139 -:101E60008160809308015F9A0E94A4388FE080937C -:101E7000C00D8EE1E4EFFEE0DF011D928A95E9F7E7 -:101E80000E9497300E94475480E090E00E948D406D -:101E900060939C0D70939D0D80939E0D90939F0D6C -:101EA00081E090E00E948D406093A00D7093A10DA1 -:101EB0008093A20D9093A30D82E090E00E948D404C -:101EC0006093A40D7093A50D8093A60D9093A70D1C -:101ED0000091F80E1091F90E2091FA0E3091FB0E40 -:101EE0000093A80D1093A90D2093AA0D3093AB0D6C -:101EF0000091FC0E1091FD0E2091FE0E3091FF0E10 -:101F00000093AC0D1093AD0D2093AE0D3093AF0D3B -:101F10000091000F1091010F2091020F3091030FDB -:101F20000093B00D1093B10D2093B20D3093B30D0B -:101F300020E030E044EB52E40E94F4637B018C012A -:101F40002091A00D3091A10D4091A20D5091A30DB3 -:101F500060919C0D70919D0D80919E0D90919F0DB3 -:101F6000ECEB8E2EEDE09E2EF8EBAF2EFDE0BF2EBB -:101F7000A4EBCA2EADE0DA2E0E942B3E02C00E94D6 -:101F8000583680E090E0F7C48E010F5F1F4F1F931B -:101F90000F9383E892E09F938F93FF93EF930E94B8 -:101FA000BC680F900F900F900F900F900F90181625 -:101FB00019060CF094C31D8A1E8A1F8A188EAE0162 -:101FC0004B5E5F4F60E070E0C8010E94534D882374 -:101FD00009F4CFC44D895E896F89788D88E70E94A6 -:101FE00018284D895E896F89788D89E70E941828A5 -:101FF0004D895E896F89788D8AE70E9418280E9432 -:10200000C62CBFCF8E010F5F1F4F1F930F938EE81B -:1020100092E09F938F93FF93EF930E94BC680F9081 -:102020000F900F900F900F900F90181619060CF04C -:1020300056C3AE014B5E5F4F60E070E0C8010E9486 -:10204000534D882309F495C420E030E04AE754E476 -:102050006D897E898F89988D0E9427670E943D65D2 -:102060001616170664F57093150F6093140F91E020 -:102070009093130F8091120F811183CF24E837E3DF -:102080003093CE0D2093CD0D1092200185E08093EA -:10209000210121EF3FEF3093D00D2093CF0D209100 -:1020A000CF0D3091D00D30932501209324018091E4 -:1020B00073008160809373009093120F62CF10922F -:1020C000130F1092150F1092140F5BCF808186357D -:1020D00009F04FC481818053823008F04AC41092C5 -:1020E000C40D813019F01092C30D4BCF8093C30DF6 -:1020F00048CF80818E3409F03CC491819053943054 -:1021000008F037C4923061F0933099F08091C00D9F -:10211000913019F05F9A846025C08A9A816022C04C -:10212000809108018160809308018091C00D8260D8 -:1021300019C00E94A4388091C00D886013C08081AE -:102140008E3409F016C491819053943008F011C474 -:102150008091C00D923061F0933089F0913029F078 -:102160005F988B7F8093C00D0CCF8A988E7FFACFBB -:10217000909108019E7F909308018D7FF3CF9091FD -:1021800072009E7F90937200877FECCF80818E34A7 -:1021900009F0EFC381818053843008F0EAC3909145 -:1021A000C00D823081F0833089F0813019F090FFCA -:1021B00003C03CC191FD3AC16EE873E080E69DE04A -:1021C0000E948668DECE92FD31C1F6CF93FFF4CF38 -:1021D0002DC11AA619A61D8A1E8A1F8A188E8E0165 -:1021E0000F5F1F4F8AE0D8011D928A95E9F7CE0153 -:1021F00089969F938F931F930F9387E992E09F9304 -:102200008F93FF93EF930E94BC680FB6F894DEBFE4 -:102210000FBECDBF02970CF462C2AE014B5E5F4FA2 -:1022200060E070E0C8010E94534D882309F4A1C307 -:102230002D893E894F89588D69A57AA5072E000CF6 -:10224000880B990B0E9438389CCE8FEF0E9444294E -:102250000E945D3796CEEF961CAE1DAE1EAE1FAE31 -:10226000EF97E5961CAE1DAE1EAE1FAEE597AB9682 -:102270001CAE1DAE1EAE1FAEAB9784E15E0129E21F -:10228000A20EB11CD501282F1D922A95E9F77E01D7 -:1022900035E1E30EF11CD701282F1D922A95E9F7AD -:1022A000DE0111966D011D928A95E9F78E010B579B -:1022B0001F4F8FEF90E0D8018D939C931F930F9346 -:1022C000DF92CF92FF92EF92BF92AF9283EA92E0B9 -:1022D0009F938F93FF93EF930E94BC680FB6F8947F -:1022E000DEBF0FBECDBF03970CF4F9C1AE01455858 -:1022F0005F4F60E070E0C5010E94534D882309F4F0 -:1023000038C3AE014F585F4F60E070E0C7010E94D4 -:10231000534D882309F42DC3AE0149595F4F60E046 -:1023200070E0C6010E94534D882309F422C3D801EE -:102330008D919C910097D9F1019709F01AC3EF96FE -:10234000CCACDDACEEACFFACEF9720E030E044EB82 -:1023500052E4E5966CAD7DAD8EAD9FADE5970E94E4 -:10236000F46321EE3EE245E652E40E94D5644B015F -:102370005C010E94D2649B01AC01C701B6010E94BE -:102380002767EF966CAF7DAF8EAF9FAFEF97C5011C -:10239000B4010E94AA679B01AC01C701B6010E946B -:1023A0002767E5966CAF7DAF8EAF9FAFE597AE0127 -:1023B00049595F4FBE016F587F4FCE0185589F4FDF -:1023C0000E94D13AAB96ECACFDAC0EAD1FADAB9715 -:1023D000E5962CAD3DAD4EAD5FADE597EF966CAD9E -:1023E0007DAD8EAD9FADEF97FE01FD964F01DE01F5 -:1023F000AF5ABF4F5D01B0966F010E94753C2196A8 -:10240000ECACFDAC0EAD1FAD219765962CAD3DAD8E -:102410004EAD5FAD6597A1966CAD7DAD8EAD9FADB8 -:10242000A1970E948D3F882309F4C6CE62E972E02D -:10243000C5CE8081863509F09CC28181805382306F -:1024400008F097C2813019F00E94D7369ACD9C9A35 -:102450009D9AA49AA59895CD8081863509F089C268 -:1024600081818053823008F084C2813019F00E944B -:10247000D43687CD3F9A479884CD8081863509F040 -:1024800078C281818053823008F073C2813019F0A4 -:102490000E94C33676CD8091010180628093010154 -:1024A000809101018064809301018091020180622A -:1024B000809302018091020180648093020161CDCA -:1024C0008081833509F055C281818053843008F0C2 -:1024D00050C2823089F1833009F445C08130A9F0BF -:1024E0001092930D1092920D8AE999E1A5E9B2E458 -:1024F0008093980D9093990DA0939A0DB0939B0D96 -:102500008AE999E9A2E6B2E444C081E090E09093C0 -:10251000930D8093920D86EF98E2ACE4B2E4809341 -:10252000980D9093990DA0939A0DB0939B0D8DECFF -:102530009CECA0E8B2E42DC082E090E09093930D73 -:102540008093920D89E29CEDA4E9B2E48093980D0A -:102550009093990DA0939A0DB0939B0D80E090E01D -:10256000A2E6B2E416C083E090E09093930D8093CE -:10257000920D80E090E0ACE2B2E48093980D9093ED -:10258000990DA0939A0DB0939B0D80E090E0ABE87D -:10259000B2E48093940D9093950DA093960DB09313 -:1025A000970D7BC080E090E00E9440409093A8127D -:1025B0008093A71281E090E00E9440409093AA127D -:1025C0008093A91282E090E00E9440409093A6126E -:1025D0008093A512CBC16091000F7091010F809183 -:1025E000020F9091030F0E9470652B013C016091D6 -:1025F000FC0E7091FD0E8091FE0E9091FF0E0E94D8 -:1026000070659B01AC016091F80E7091F90E80919C -:10261000FA0E9091FB0EC353DF4F2883CD5CD04060 -:10262000C253DF4F3883CE5CD040C053DF4F488366 -:10263000C05DD040CF52DF4F5883C15DD0400E9473 -:102640007065DE0111964D01FE0175965F01989649 -:102650006D0183017201C353DF4F2881CD5CD040EF -:10266000C253DF4F3881CE5CD040C053DF4F48812A -:10267000C05DD040CF52DF4F5881C15DD0400E9435 -:10268000273C89819A81AB81BC818093980D90937E -:10269000990DA0939A0DB0939B0D0E940B3871CCAD -:1026A0001D8A1E8A1F8A188E8E010F5F1F4F84E1BC -:1026B000D8011D928A95E9F71F930F9385EC92E05C -:1026C0009F938F93FF93EF930E94BC680F900F909E -:1026D0000F900F900F900F901816190674F01F921C -:1026E00081E08F938DE092E09F938F930E94C92D9C -:1026F0000F900F900F900F903CC1AE014B5E5F4F5B -:1027000060E070E0C8010E94534D882309F431C194 -:102710008D899E89AF89B88D3CCF8081803509F045 -:1027200028C181818053833008F023C18130D9F0E2 -:10273000823091F180E090E00E9440409093CF037E -:102740008093CE0381E090E00E9440409093D103BB -:102750008093D00382E090E00E9440409093D303A6 -:102760008093D2030ECC80E090E00E944040909392 -:10277000C9038093C80381E090E00E944040909399 -:10278000CB038093CA0382E090E00E944040909384 -:10279000CD038093CC03F5CB80E090E00E944040D5 -:1027A0009093C3038093C20381E090E00E94404075 -:1027B0009093C5038093C40382E090E00E94404060 -:1027C0009093C7038093C603DCCB6091CE037091D6 -:1027D000CF03E090D003F090D1039701262B372B45 -:1027E0008091D2039091D303822B932B892B19F4E0 -:1027F00080ED92E031C0C090C803D090C9038090B2 -:10280000CA039090CB03E091CC03F091CD03C25565 -:10281000DF4FF983E883CE5AD040C4018C299D292B -:102820008E2B9F2B892B19F486ED92E015C0A0907A -:10283000C203B090C3030091C4031091C503980173 -:102840002A293B298091C6039091C703822B932BA1 -:10285000892B49F48CED92E09F938F930E94C92DB0 -:102860000F900F9086C080E090E00E946E652EE28F -:102870003DEA4AE352E40E94F5632B013C01B501B5 -:1028800080E090E00E946E652CE337EC4EEC52E461 -:102890000E94F5639B01AC01C301B2010E94F56384 -:1028A0002B013C01B60180E090E00E946E659B0127 -:1028B000AC01C301B2010E94F56320E030E040E4C6 -:1028C00050E40E94D56420E030E040E05FE30E94E5 -:1028D000F5630E9442657093A8126093A712B70136 -:1028E00080E090E00E946E6529EE3AE64BE753E403 -:1028F0000E94F4636B017C01B80180E090E00E94CB -:102900006E6527E33EE145E953E40E94F5639B01D0 -:10291000AC01C701B6010E94F5636B017C01B401F3 -:1029200080E090E00E946E659B01AC01C701B6019A -:102930000E94F56320E030E040E450E40E94D5645A -:1029400020E030E040E05FE30E94F5630E944265D2 -:102950007093AA126093A912C255DF4F2881398162 -:10296000CE5AD0403093A6122093A5120E943D412A -:1029700008CB82E390E09C012150310922303105DF -:1029800010F00C94C12436E02316310428F483E0BF -:102990002816310490F026C098E02916310410F46E -:1029A0000C946D24AAE02A16310408F440C0BEE15C -:1029B0002B16310411F00C946D24E2E02E16310434 -:1029C00061F0FEE12F16310441F0232809F046C0E2 -:1029D00081E08093C20E2BE032C082E08093C20E71 -:1029E0003BE036C084E02816310471F095E02916EA -:1029F0003104A1F081E08093C40EACE0C255DF4FFA -:102A0000A883CE5AD04088C482E08093C40EBCE034 -:102A1000C255DF4FB883CE5AD0407EC41092C40E48 -:102A2000ECE0C255DF4FE883CE5AD04075C4F9E0E0 -:102A30002F16310451F082E08093C30E2DE0C25571 -:102A4000DF4F2883CE5AD04067C41092C30E3DE0BA -:102A5000C255DF4F3883CE5AD0405EC48BE0C2559A -:102A6000DF4F8883CE5AD04057C4CA54DF4FE88125 -:102A7000F981C65BD040EF2B11F00C949224CB551A -:102A8000DF4F8881C55AD040FDEA2F16F8E03F0697 -:102A900009F4EDC258F53BE9231638E0330609F492 -:102AA00039C178F4A9E92A16A8E03A0609F42CC13C -:102AB00008F02DC1E8E92E16E8E03E0609F44FC003 -:102AC0004BC0FDE92F16F8E03F0609F42DC108F4CC -:102AD00028C13EE9231638E0330609F428C18CEA00 -:102AE000281688E0380609F41CC236C09BEB29166C -:102AF00098E0390609F4C4C3D8F4B8EB2B16B8E053 -:102B00003B0609F49EC338F4F7EB2F16F8E03F06B6 -:102B100009F47DC321C029EB221628E0320609F40E -:102B20009BC33AEB231638E0330609F49DC314C067 -:102B300082EC281688E0380609F4A9C338F4A0EC22 -:102B40002A16A8E03A0608F0DAC306C0B0E62B164B -:102B5000B9E03B0609F4BDC381E090E0D5C3A1967E -:102B60001CAE1DAE1EAE1FAEA19765961CAE1DAE6F -:102B70001EAE1FAE659721961CAE1DAE1EAE1FAEDB -:102B8000219784E1FE01B996CA55DF4FF983E883A6 -:102B9000C65AD040282F11922A95E9F71E0135E137 -:102BA000230E311CD101E82F1D92EA95E9F79E0111 -:102BB0002F5F3F4FC855DF4F39832883C85AD04015 -:102BC000D9011D928A95E9F76091000F7091010F6C -:102BD0008091020F9091030F0E9470652B013C01C0 -:102BE0006091FC0E7091FD0E8091FE0E9091FF0E93 -:102BF0000E9470659B01AC016091F80E7091F90E16 -:102C00008091FA0E9091FB0EC353DF4F2883CD5C69 -:102C1000D040C253DF4F3883CE5CD040C053DF4F2B -:102C20004883C05DD040CF52DF4F5883C15DD04054 -:102C30000E947065FE01FD964F01DE01AF5ABF4F45 -:102C40005D01B0966F0183017201C353DF4F28818C -:102C5000CD5CD040C253DF4F3881CE5CD040C053F2 -:102C6000DF4F4881C05DD040CF52DF4F5881C15DFA -:102C7000D0400E94103F20E030E044EB52E4219627 -:102C80006CAD7DAD8EAD9FAD21970E94F563219611 -:102C90006CAF7DAF8EAF9FAF2197A1966CAD7DAD30 -:102CA0008EAD9FADA1978E01075D1F4F24E045E0DB -:102CB0000E94626165966CAD7DAD8EAD9FAD6597EE -:102CC000810124E045E00E94626121966CAD7DADFA -:102CD0008EAD9FAD21970451110924E045E00E947B -:102CE00062613F922F92C955DF4FF881C75AD04099 -:102CF000FF93CA55DF4F2881C65AD0402F931F93A8 -:102D00000F9382EE92E0D7C280EF92E005C088E593 -:102D10009DE002C08EEF92E09F938F9389EF92E047 -:102D2000E0C285E093E0F8CF8CE093E0F5CFC154AA -:102D3000DF4FE881F981CF5BD040E80FF11D808142 -:102D40008E3409F0DFC281818053CA54DF4F8883FB -:102D5000C65BD040833008F0D5C2A1961CAE1DAE34 -:102D60001EAE1FAEA19765961CAE1DAE1EAE1FAE69 -:102D7000659721961CAE1DAE1EAE1FAE219784E155 -:102D8000FE01B996CA55DF4FF983E883C65AD04091 -:102D9000282F11922A95E9F71E0135E1230E311CE7 -:102DA000D101E82F1D92EA95E9F79E012F5F3F4F71 -:102DB000C855DF4F39832883C85AD040D9011D92A6 -:102DC0008A95E9F76091000F7091010F8091020FD1 -:102DD0009091030F0E9470652B013C016091FC0EE5 -:102DE0007091FD0E8091FE0E9091FF0E0E94706515 -:102DF0009B01AC016091F80E7091F90E8091FA0E72 -:102E00009091FB0EC353DF4F2883CD5CD040C2535B -:102E1000DF4F3883CE5CD040C053DF4F4883C05D66 -:102E2000D040CF52DF4F5883C15DD0400E947065C3 -:102E3000FE01FD964F01DE01AF5ABF4F5D01B09616 -:102E40006F0183017201C353DF4F2881CD5CD040F5 -:102E5000C253DF4F3881CE5CD040C053DF4F488132 -:102E6000C05DD040CF52DF4F5881C15DD0400E943D -:102E7000103F20E030E044EB52E421966CAD7DAD94 -:102E80008EAD9FAD21970E94F56321966CAF7DAF0B -:102E90008EAF9FAF2197A1966CAD7DAD8EAD9FADEE -:102EA000A1978E01075D1F4F24E045E00E946261FB -:102EB00065966CAD7DAD8EAD9FAD6597810124E0CB -:102EC00045E00E94626121966CAD7DAD8EAD9FADF7 -:102ED00021970451110924E045E00E946261CA541F -:102EE000DF4FF881C65BD040F13079F0F23081F0ED -:102EF000C955DF4F2881C75AD0402F93CA55DF4F9D -:102F00003881C65AD0403F9309C03F922F9206C0E5 -:102F100081E090E08C0F9D1F9F938F9385E193E05C -:102F2000E0C1A1961CAE1DAE1EAE1FAEA197659668 -:102F30001CAE1DAE1EAE1FAE659721961CAE1DAE1B -:102F40001EAE1FAE219784E1DE019996CA55DF4F70 -:102F5000B983A883C65AD040E82F1D92EA95E9F7B5 -:102F60001E01F5E12F0E311CD101E82F1D92EA95CB -:102F7000E9F79E012F5F3F4FC855DF4F3983288304 -:102F8000C85AD040D9011D928A95E9F780E090E0B7 -:102F90000E948D402B013C0181E090E00E948D4019 -:102FA000CA54DF4F688379838A839B83C65BD04092 -:102FB00082E090E00E948D4020E030E044EB52E45B -:102FC0000E94F463FE01FD964F019E012F5A3F4F70 -:102FD0005901DE01A35ABF4F6D017B018C01CA5418 -:102FE000DF4F288139814A815B81C65BD040C301B4 -:102FF000B2010E942B3EA401B501C6010E947C3B98 -:10300000A1966CAD7DAD8EAD9FADA1978E01075D94 -:103010001F4F24E045E00E94626165966CAD7DAD76 -:103020008EAD9FAD6597810124E045E00E9462610D -:1030300021966CAD7DAD8EAD9FAD219704511109E8 -:1030400024E045E00E9462611F930F933F922F920C -:10305000C955DF4FF881C75AD040FF93CA55DF4F9B -:103060002881C65AD0402F9389E193E024C1A196CC -:103070001CAE1DAE1EAE1FAEA19765961CAE1DAE5A -:103080001EAE1FAE659721961CAE1DAE1EAE1FAEC6 -:10309000219784E1DE019996CA55DF4FB983A88351 -:1030A000C65AD040E82F1D92EA95E9F71E01F5E1D6 -:1030B0002F0E311CD101E82F1D92EA95E9F79E01F0 -:1030C0002F5F3F4FC855DF4F39832883C85AD04000 -:1030D000D9011D928A95E9F780E090E00E948D4029 -:1030E000CA54DF4F688379838A839B83C65BD04051 -:1030F00081E090E00E948D40CF53DF4F6883798359 -:103100008A839B83C15CD04082E090E00E948D4026 -:1031100020E030E044EB52E40E94F4632B013C01D8 -:10312000FE01FD964F019E012F5A3F4F5901CE01DE -:10313000835A9F4F6C0183017201CF53DF4F288167 -:1031400039814A815B81C15CD040CA54DF4F6881BC -:1031500079818A819B81C65BD0400E942B3EA4016D -:10316000B501C6010E947C3BA1966CAD7DAD8EADD4 -:103170009FADA1976596CCACDDACEEACFFAC65978E -:103180009B01AC010E9427674B015C01A7019601DE -:10319000C701B6010E9427679B01AC01C501B401BC -:1031A0000E94F5630E94B4678E01075D1F4F24E003 -:1031B00045E00E94626120E030E044EB52E4C3014C -:1031C000B2010E94F563810124E045E00E94626142 -:1031D00021966CAD7DAD8EAD9FAD21970451110947 -:1031E00024E045E00E9462611F930F933F922F926B -:1031F000C955DF4FB881C75AD040BF93CA55DF4F7A -:10320000E881C65AD040EF9387E293E054C0A49B74 -:103210001FC08FE390E00E94DC368C011F938F93D8 -:1032200085E393E09F938F930E94C92D0F900F9099 -:103230000F900F900A30110558F00734110530F047 -:1032400009C0479905C00898009904C082E01DC0D4 -:1032500080E01BC081E019C082B386958695869573 -:1032600091E08927817011C08BE390E00E94DC36E9 -:1032700021E08536910508F420E01F922F932FC09E -:103280008091020185FB882780F91F9227C08091D9 -:10329000A6128F938091A5128F938091AA128F937B -:1032A0008091A9128F938091A8128F938091A71279 -:1032B0008F938DE393E09F938F9380E69DE09F93A0 -:1032C0008F930E948D680FB6F894DEBF0FBECDBFFE -:1032D00016C08091930D8F938091920D8F9386E805 -:1032E00093E09F938F9380E69DE09F938F930E943E -:1032F0008D680F900F900F900F900F900F9080E0BF -:1033000090E002C082E390E09C012150310922301C -:10331000310510F00C94C12481E090E0C255DF4FDC -:103320000880CE5AD04002C0880F991F0A94E2F755 -:10333000C354DF4F28813981CD5BD0402823392306 -:10334000232B11F00C94540EC354DF4FA881B98184 -:10335000CD5BD040A82BB92BC354DF4FB983A883D2 -:10336000CD5BD0400C945605812F110F990BAA0B01 -:10337000BB0BFC01E654F109E531F10510F00C94AA -:103380006D248827EE58FF4F8F4F0C945A68C092D7 -:10339000C50ED092C60EE092C70EF092C80EC2556E -:1033A000DF4F1882CE5AD040D2C0C092C90ED09200 -:1033B000CA0EE092CB0EF092CC0ECB53DF4FB88109 -:1033C000C55CD040B160CB53DF4FB883C55CD04003 -:1033D000E1E04FC0C092CD0ED092CE0EE092CF0E63 -:1033E000F092D00ECB53DF4FF881C55CD040F26035 -:1033F000CB53DF4FF883C55CD04022E053C0C0926E -:10340000D10ED092D20EE092D30EF092D40ECB53C6 -:10341000DF4F3881C55CD0403460CB53DF4F3883F9 -:10342000C55CD04083E058C0CF53DF4F9881C15C6A -:10343000D0409093D50EA4E069C0C701B6010E94A8 -:103440003D656093D60E7093D70E8093D80E9093FF -:10345000D90EB5E0C255DF4FB883CE5AD04077C001 -:10346000C092DA0ED092DB0EE092DC0EF092DD0E0E -:10347000E6E0C255DF4FE883CE5AD04068C0C09224 -:10348000DE0ED092DF0EE092E00EF092E10EF7E059 -:1034900059C0C092E20ED092E30EE092E40EF09298 -:1034A000E50E28E0C255DF4F2883CE5AD0404FC0EA -:1034B000C092E70ED092E80EE092E90EF092EA0E8A -:1034C000CE54DF4F3881C25BD0403160CE54DF4FE5 -:1034D0003883C25BD0408AE0C255DF4F8883CE5A22 -:1034E000D04035C0C092EB0ED092EC0EE092ED0EC3 -:1034F000F092EE0ECE54DF4F9881C25BD0409260C6 -:10350000CE54DF4F9883C25BD040ABE0C255DF4F53 -:10351000A883CE5AD0401BC0C092EF0ED092F00EBE -:10352000E092F10EF092F20ECE54DF4FB881C25B02 -:10353000D040B460CE54DF4FB883C25BD040ECE0E3 -:1035400098CFF9E0C255DF4FF883CE5AD04001E062 -:1035500010E0C255DF4F0880CE5AD04002C0000FA5 -:10356000111F0A94E2F7C554DF4F88819981CB5B24 -:10357000D04080239123892B11F00C94652481E69F -:1035800093E0C255DF4F0880CE5AD04002C09595D7 -:1035900087950A94E2F780FF0BC020E030E0A90194 -:1035A000C701B6010E94CE6487FF02C00C94672455 -:1035B000C554DF4F28813981CB5BD040202B312B84 -:1035C000C554DF4F39832883CB5BD0400C9456051C -:1035D000CE54DF4F3881C25BD040332369F0C654EC -:1035E000DF4F8881CA5BD040811106C092E0C6548B -:1035F000DF4F9883CA5BD040C554DF4FA881CB5BB7 -:10360000D040A5FF0FC08091D60E9091D70EA0910B -:10361000D80EB091D90E80389649A849B10514F05A -:103620000C9469248091BC0E813091F4C654DF4F14 -:10363000F881CA5BD040F23009F040C0C554DF4F7A -:103640002881CB5BD04020FD02C00C94732436C08F -:1036500080912C0E811132C0C554DF4F3881CB5B75 -:10366000D04030FF1BC08091BD0E813039F523E37F -:1036700033E34BEC51E46091C50E7091C60E80911E -:10368000C70E9091C80E0E9427676093C50E709375 -:10369000C60E8093C70E9093C80E10C08091390E4D -:1036A00090913A0EA0913B0EB0913C0E8093C50EC6 -:1036B0009093C60EA093C70EB093C80EC554DF4FAB -:1036C00088819981CB5BD04090FD10C08091350EF0 -:1036D0009091360EA091370EB091380E8093E20E85 -:1036E0009093E30EA093E40EB093E50E8091BA0E92 -:1036F0008130B9F4C554DF4F9881CB5BD04096FD43 -:1037000003C08CE10C94C124C554DF4FA881B9815A -:10371000CB5BD040AF7BC554DF4FB983A883CB5B75 -:10372000D0408091BF0E882331F1813091F4B1E017 -:10373000CF53DF4FB883C15CD040C154DF4F1882F4 -:10374000CF5BD040E2E0CA54DF4FE883C65BD04095 -:1037500023C0CF53DF4F1882C15CD040F2E0C15488 -:10376000DF4FF883CF5BD04021E0CA54DF4F28837E -:10377000C65BD04011C032E0CF53DF4F3883C15C0D -:10378000D04081E0C154DF4F8883CF5BD040CA5422 -:10379000DF4F1882C65BD0408091BD0E813041F072 -:1037A000C654DF4F9881CA5BD0409330F1F530C0EA -:1037B00077EEE72E7EE0F72E00E010E0CE54DF4FEC -:1037C000A881C25BD040CA2ED12CC601002E02C0F7 -:1037D000959587950A94E2F780FF11C023E333E3C0 -:1037E0004BEC51E4F70160817181828193810E94E9 -:1037F0002767D7016D937D938D939C9313970F5FEC -:103800001F4FB4E0EB0EF11C03301105F1F6C8CFE9 -:103810008091C00E813049F4CE54DF4FE881C25B05 -:10382000D040E43011F00C946B248CE0EEE4FEE028 -:10383000DE01559601900D928A95E1F7C354DF4F52 -:1038400028813981CD5BD04031FD0AC09090BA0EFD -:1038500032E09316D1F088E0981609F4DCC041C13B -:103860008091C10E873018F08DE10C94C1249091A5 -:10387000310E981759F3BE016B5E7F4F0E942429C9 -:10388000882311F40C947D24E1CFCE54DF4F98812E -:10389000C25BD040911103C08AE10C94C124C5548D -:1038A000DF4F88819981CB5BD04080759927892B28 -:1038B00009F427CF6091DA0E7091DB0E8091DC0E57 -:1038C0009091DD0E0E94F5670E944265673060F6B8 -:1038D0008091D50E843159F0823009F0FEC7C5546D -:1038E000DF4FA881CB5BD040A7FF01C0F6C7C5540E -:1038F000DF4FE881F981CB5BD040EF7AC554DF4FD1 -:10390000F983E883CB5BD040662339F06150C25520 -:10391000DF4F6883CE5AD04007C0F091C10EC25528 -:10392000DF4FF883CE5AD040BE016F5F7F4FC25544 -:10393000DF4F8881CE5AD0400E942429882309F481 -:10394000DCC73090D50E4090660E5090670E6090A8 -:10395000680E7090690E8E010F5F1F4FC12CD12C25 -:10396000E12CF12CCE54DF4F2881C25BD040822E57 -:10397000912CC4010E2C02C0959587950A94E2F70C -:1039800080FF3BC0C6018654914F5C0194E139121F -:103990002AC0F601E55DF14F27A530A941A952A93A -:1039A0006789708D818D928D0E94F463D5019D96FB -:1039B0002D913D914D915C91D0970E94F463F80157 -:1039C0006083718382839383F2E0EF16F104A9F49C -:1039D000A30192010E94F463D8016D937D938D93AE -:1039E0009C9313970AC0F50185A596A5A7A5B0A934 -:1039F000F80180839183A283B383FFEFEF1AFF0A5C -:103A000024E0C20ED11C0C5F1F4F33E0E316F1041B -:103A100009F0AFCF34C1CE54DF4F8881C25BD040B4 -:103A2000882309F439CF4090660E5090670E60905D -:103A3000680E7090690E07EE1EE0C12CD12CE12CAF -:103A4000F12CA82EB12CF601E55DF14FC5010E2C2D -:103A500002C0959587950A94E2F780FF2BC0A5E1F7 -:103A6000B0E0AC0FBD1FAC0DBD1D2D913D914D9132 -:103A70005C916789708D818D928D0E94F463D8016D -:103A80002D913D914D915C910E94F463F80160830A -:103A9000718382839383F2E0EF16F104A1F4A30112 -:103AA00092010E94F463D8016D937D938D939C9352 -:103AB000139709C087A590A9A1A9B2A9F80180838D -:103AC0009183A283B383FFEFEF1AFF0A24E0C20EB3 -:103AD000D11C0C5F1F4F33E0E316F10409F0B3CFA4 -:103AE000C9C0C654DF4F8881CA5BD040833061F4BF -:103AF00095E0991609F49DC0A7E09A1609F4B5C09F -:103B0000B3E09B12B7C084C0CE54DF4FE881C25BE4 -:103B1000D040EE2309F4A3C08090BE0E4090660E04 -:103B20005090670E6090680E7090690E62E4C62E29 -:103B30006EE0D62E07EE1EE05E01F5E1AF0EB11C81 -:103B4000E12CF12C2E2E312CC1010E2C02C09595AA -:103B500087950A94E2F780FD0BC0F6018081918180 -:103B6000A281B381F80180839183A283B3833FC094 -:103B7000F7E09F16E1F1811029C0D60158962D91EA -:103B80003D914D915C915B97F501608171818281DE -:103B900093810E94F563D8012D913D914D915C91E7 -:103BA0000E94F563F8016083718382839383F2E05E -:103BB000EF16F104E1F4A30192010E94F563D8012C -:103BC0006D937D938D939C93139711C0F601208183 -:103BD000318142815381D8016D917D918D919C916C -:103BE0000E94F563F8016083718382839383FFEF02 -:103BF000EF1AFF0A24E0C20ED11C0C5F1F4F34E005 -:103C0000A30EB11C83E0E816F10409F09DCF70CF3C -:103C1000CE54DF4F9881C25BD040911105C0C6548D -:103C2000DF4F1882CA5BD040BE016F5F7F4F86E0D6 -:103C300010C0CE54DF4FA881C25BD040A11105C097 -:103C4000C654DF4F1882CA5BD040BE016F5F7F4F02 -:103C500087E00E942429882309F44FC60BC085E021 -:103C6000981671F397E0991288C68091BB0E823046 -:103C700008F035C6C255DF4F1882CE5AD040109199 -:103C8000BB0E183089F4CE54DF4FB881C25BD040F0 -:103C9000BB2309F44DC2C654DF4FE881CA5BD04054 -:103CA000E13009F01EC664C3C654DF4FF881CA5B19 -:103CB000D040F23009F03CC2111109C0CE54DF4FA0 -:103CC0002881C25BD040222309F439C251C320E0CD -:103CD00030E0A9016091C50E7091C60E8091C70EAB -:103CE0009091C80E0E94CE64882309F4FCC514305C -:103CF00028F4123080F4113029F03AC3183008F457 -:103D0000D1C136C3CE54DF4F3881C25BD04033239C -:103D100009F415C22DC3CE54DF4F8881C25BD04059 -:103D2000882309F4B9CDCA54DF4F9881C65BD040CF -:103D3000692E712CC154DF4FB881CF5BD040AB2FBF -:103D4000B0E0C354DF4FB983A883CD5BD04081E09E -:103D500090E09C01C154DF4F0880CF5BD04002C08F -:103D6000220F331F0A94E2F77C01CA54DF4F088008 -:103D7000C65BD04002C0EE0CFF1C0A94E2F7E22AB8 -:103D8000F32ACE54DF4FE881C25BD0408E2F90E003 -:103D90008E219F21892B09F4A8C5C301880F991F83 -:103DA000880F991FFC01E654F14FDC01A55DB14F6E -:103DB00057962D913D914D915C915A9765A576A5A9 -:103DC00087A590A90E94F4631B012C01C354DF4F07 -:103DD00088819981CD5BD040880F991F880F991FEA -:103DE000FC01E654F14FDC01A55DB14F57962D91D2 -:103DF0003D914D915C915A9765A576A587A590A9AF -:103E00000E94F4634B015C01C554DF4FC880D98028 -:103E1000CB5BD040F0E8CF22DD24C554DF4F2881B2 -:103E2000CB5BD04027FF4BC0C554DF4F88819981C1 -:103E3000CB5BD0408F77C554DF4F99838883CB5BB2 -:103E4000D0402091E70E3091E80E4091E90E50915C -:103E5000EA0E6091420E7091430E8091440E909153 -:103E6000450E0E94CE64811178C12091EB0E3091F5 -:103E7000EC0E4091ED0E5091EE0E6091460E709159 -:103E8000470E8091480E9091490E0E94CE64811198 -:103E900064C12091EF0E3091F00E4091F10E5091DF -:103EA000F20E60914A0E70914B0E80914C0E9091E3 -:103EB0004D0E0E94CE64811150C181E262C5CB5388 -:103EC000DF4F3881C55CD040232F30E0CE54DF4F28 -:103ED00039832883C25BD040E222F322EF2809F421 -:103EE00006C5C554DF4F88819981CB5BD040817F67 -:103EF000C554DF4F99838883CB5BD0408091BD0E42 -:103F0000813009F486C0F301EE0FFF1FEE0FFF1F93 -:103F1000E254F14FC384D484E584F684A70196016A -:103F2000C201B1010E94F4632B013C01C354DF4F75 -:103F3000E881F981CD5BD040EE0FFF1FEE0FFF1F30 -:103F4000E254F14F83859485A585B685CE54DF4F25 -:103F500088839983AA83BB83C25BD0409C01AD0157 -:103F6000C501B4010E94F4634B015C01A3019201FD -:103F7000C301B2010E9427672B013C01A5019401F6 -:103F8000C501B4010E9427679B01AC01C301B201C6 -:103F90000E94F5630E94B4674B015C01A701960182 -:103FA000C701B6010E9427676B017C01CE54DF4F29 -:103FB000288139814A815B81C25BD040CA01B90145 -:103FC0000E9427679B01AC01C701B6010E94F563FF -:103FD0000E94B4676B017C016093DE0E7093DF0E6C -:103FE0008093E00E9093E10E9B01AC01C501B401FA -:103FF0000E94F4634B015C01E894B7F82AE037EDC6 -:1040000043EA5BE3C501B4010E94EC6618166CF14B -:10401000AFC10AEB1EE0CE54DF4F88819981C25BAD -:10402000D0400C2C02C0959587950A94E2F780FF4A -:1040300012C023E333E34BEC51E4D8011F966D919A -:104040007D918D919C9152970E942767F801678717 -:10405000708B818B928BFFEFCF1ADF0A0C5F1F4FA3 -:1040600023E0C216D104B9F64ECF20E030E040E0A4 -:104070005FE3C501B4010E94EC6618160CF41DCF75 -:104080002FE632E143E85AE3C701B6010E942767F1 -:104090009B01AC01C501B4010E94EC6618160CF43A -:1040A0000CCF66C1CE54DF4F3881C25BD040332382 -:1040B00009F4F2CB2091E70E3091E80E4091E90E21 -:1040C0005091EA0E6091420E7091430E8091440E21 -:1040D0009091450E0E94CE6481114AC12091EB0E51 -:1040E0003091EC0E4091ED0E5091EE0E6091460E27 -:1040F0007091470E8091480E9091490E0E94CE64B7 -:10410000811136C12091EF0E3091F00E4091F10EE9 -:104110005091F20E60914A0E70914B0E80914C0EB0 -:1041200090914D0E0E94CE64882309F4C6CE20C122 -:10413000C654DF4F8881CA5BD040811119C1C55474 -:10414000DF4F88819981CB5BD0408E7D9C7FC654A8 -:10415000DF4F1882CA5BD04013C18091BD0E813001 -:10416000B1F423E333E34BEC51E46091DE0E709144 -:10417000DF0E8091E00E9091E10E0E942767609320 -:10418000DE0E7093DF0E8093E00E9093E10E80912F -:10419000DE0E9091DF0EA091E00EB091E10ECE54B4 -:1041A000DF4F88839983AA83BB83C25BD040A2017F -:1041B0009101C201B1010E942767CB53DF4F688391 -:1041C00079838A839B83C55CD040A5019401C50196 -:1041D000B4010E942767C753DF4F688379838A83BE -:1041E0009B83C95CD04020E030E040E850E4CE54EE -:1041F000DF4F688179818A819B81C25BD0400E94B8 -:104200002767CE54DF4F288139814A815B81C25BA9 -:10421000D0400E942767CB53DF4F288139814A81E4 -:104220005B81C55CD0400E94F463C753DF4F288197 -:1042300039814A815B81C95CD0400E94F4636B0183 -:104240007C0120E030E0A9010E94CE6487FD6CC3B0 -:10425000C701B6010E94B4676B017C01C753DF4FF1 -:10426000288139814A815B81C95CD040CB53DF4FC3 -:10427000688179818A819B81C55CD0400E94F56309 -:104280000E94B4679B01AC01C701B60190580E941F -:10429000D5646B017C01133021F4F7FAF094F7F840 -:1042A000F09420E030E0A901CE54DF4F688179819D -:1042B0008A819B81C25BD0400E94CE6487FF15C07B -:1042C000F7FAF094F7F8F094CE54DF4F8881998193 -:1042D000AA81BB81C25BD040B0588093DE0E909320 -:1042E000DF0EA093E00EB093E10E8301000F111FCB -:1042F000000F111F0254114FA7019601C501B4010F -:104300000E9427679B01AC01C201B1010E94F463C6 -:1043100020E030E040E05FE30E942767D8011B9671 -:104320006D937D938D939C931E97C354DF4F0881AB -:104330001981CD5BD040000F111F000F111F0254D7 -:10434000114FA7019601C201B1010E9427679B018D -:10435000AC01C501B4010E94F56320E030E040E00B -:104360005FE30E942767F8016387748785879687D4 -:10437000C554DF4F88819981CB5BD0408E7D907E84 -:10438000892B09F0B6C28091D60E9091D70EA091DC -:10439000D80EB091D90E80933E0E90933F0EA0930D -:1043A000400EB093410E8091BC0E80932C0E8091F4 -:1043B000C50E9091C60EA091C70EB091C80E809305 -:1043C000390E90933A0EA0933B0EB0933C0EC090E2 -:1043D000E20ED090E30EE090E40EF090E50EA7011F -:1043E00096016091350E7091360E8091370E909146 -:1043F000380E0E94CE64882339F18091340E8823D0 -:1044000099F09091F50E923079F0C153DF4F888387 -:10441000CF5CD0400E94065EB701A601C153DF4FBA -:104420008881CF5CD040A1D58091E20E9091E30EBF -:10443000A091E40EB091E50E8093350E9093360E68 -:10444000A093370EB093380E8091E60E80933D0E08 -:104450008091C40E9091340E981709F445C0409194 -:10446000350E5091360E6091370E7091380E909146 -:10447000F50E9230A9F1C053DF4F4883C05DD040A4 -:10448000CF52DF4F5883C15DD040C353DF4F6883A5 -:10449000CD5CD040C253DF4F7883CE5CD040C15357 -:1044A000DF4F8883CF5CD0400E94065EC053DF4F51 -:1044B0004881C05DD040CF52DF4F5881C15DD040B0 -:1044C000C353DF4F6881CD5CD040C253DF4F78814A -:1044D000CE5CD040C153DF4F8881CF5CD04045D502 -:1044E0008091C40E8093340E1091C30E8091330ED0 -:1044F000811781F08091F50E823041F00E94065EB6 -:10450000123011F45C9A02C00E94F8548091C30EDC -:104510008093330E8091BA0E813089F08091BF0E66 -:1045200080932F0E8091BD0E80932D0EC654DF4FC9 -:104530009881CA5BD040933009F074C054C0809019 -:10454000DA0E9090DB0EA090DC0EB090DD0E809124 -:10455000F50E823019F320E030E040EA51E4C50165 -:10456000B4010E9427670E94AB650E9442656B01FF -:104570007C010E94065E20E030E04AE754E4C50179 -:10458000B4010E9427674B015C0182E38C9DB0015E -:104590008D9D700D112480E090E00E946E659B015E -:1045A000AC01C501B4010E94F4630E94AB650E9496 -:1045B0004265CB010E94484D86010115110509F4A1 -:1045C000ADCF0E94322E015011098091F40E81115D -:1045D000A5CFAFEFB0E7E2E0A150B040E040E1F797 -:1045E00000C00000EACF8091C00E8093300E813071 -:1045F00089F48091EF0E9091F00EA091F10EB091A0 -:10460000F20E8093660E9093670EA093680EB0939F -:10461000690E08C01092660E1092670E1092680E16 -:104620001092690E8091C10E9091310E981759F039 -:104630008093310E8CE0FE017596AEE4BEE00190F1 -:104640000D928A95E1F78091BE0E80932E0EE09137 -:10465000BA0E8E2F90E0FC013297E830F10508F099 -:1046600067C08827E957FF4F8F4F0C945A68BE01E7 -:104670006F5F7F4FC255DF4F8881CE5AD040DBD568 -:104680008091310EC255DF4FF881CE5AD0408F1342 -:104690004FC08CE0FE013196AEE4BEE03DC0C65492 -:1046A000DF4F2881CA5BD040222371F02091390E60 -:1046B00030913A0E40913B0E50913C0E00E067EE77 -:1046C0007EE081E00E94414E2091390E30913A0EF9 -:1046D00040913B0E50913C0E00E0BE016F5F7F4F5A -:1046E00081E00E94414E182F8CE0FE013196A2E439 -:1046F000BEE001900D928A95E1F71BC062E47EE076 -:1047000086E003C062E47EE087E095D511C08CE0CE -:10471000E7EEFEE0AAE5BEE001900D928A95E1F792 -:1047200007C08CE0EAE5FEE0DF011D928A95E9F71B -:1047300010E08091BB0E80932B0E883009F470C07E -:10474000C654DF4FB881CA5BD040B23009F068C0B0 -:1047500090E08830910508F05AC0FC014090390E75 -:1047600050903A0E60903B0E70903C0E8827E157B7 -:10477000FF4F8F4F0C945A6800E0A301920167EE3F -:104780007EE080E007C000912C0EA301920167EE4D -:104790007EE081E00E94414E182F39C06091DE0E0C -:1047A0007091DF0E8091E00E9091E10E8824839449 -:1047B00009C06091DE0E7091DF0E8091E00E909145 -:1047C000E10E812CCF53DF4FA880C15CD040C15493 -:1047D000DF4FC880CF5BD040CA54DF4FE880C65B54 -:1047E000D04000912C0EA30192010E94CE5E0FC01A -:1047F00000E001C001E020E004C000E001C001E0F1 -:1048000021E040912C0EC301B2010E94235E8CE096 -:10481000E7EEFEE0A2E4BEE001900D928A95E1F79A -:104820008091C20E8093320E882309F464C00E94E6 -:10483000065E9091320E8091F50E913069F48230CF -:10484000D9F19FB7F89480916A0E886080936A0EC0 -:104850009FBF0E94322E30C091E090932B0E109299 -:104860002F0E10922E0E10922C0E1092310E1092CE -:10487000340E1092330E823099F0BE016B5E7F4F82 -:1048800080E0E2D48823C9F18CE0FE017596AEE4A5 -:10489000BEE001900D928A95E1F760D30E94F85432 -:1048A00085E999E00E94242E89E399E00E94242E54 -:1048B00082E299E00E94242E1092320E1CC081E008 -:1048C00060C082E05EC088E15CC089E15AC084E0DB -:1048D00058C08BE156C085E254C084E152C08EE1DD -:1048E00050C08FE14EC086E14CC080E24AC083E2F6 -:1048F00048C084E246C0812F44C087E042C0EEE158 -:104900002E16310411F40C94B90C80F42AE022160E -:10491000310411F40C94890C3CE12316310411F498 -:104920000C949D0C87E12DC082E22BC085E32816F4 -:10493000310411F40C94DC0C9CE52916310491F738 -:10494000CA54DF4FE881F981C65BD040309729F027 -:104950003A9719F689E00C94C20C88E00C94C20CCA -:104960003CE52316310411F00C94330EA1E0C6543B -:10497000DF4FA883CA5BD040E3CFA3E09A127AC985 -:104980004EC9CF52DF4F0FB6F894DEBF0FBECDBF7A -:10499000DF91CF911F910F91FF90EF90DF90CF901B -:1049A000BF90AF909F908F907F906F905F904F904F -:1049B0003F902F90089569E080E090E00E944D5470 -:1049C0004DE450E06CE67EE081E098E00C946F549A -:1049D00080916F008D7F80936F0080918100887F30 -:1049E0008160809381001092210F80919F0E8F3FF4 -:1049F00021F49091F30E992349F09091F50E9430A3 -:104A000029F090E00E94484D81E001C080E0909143 -:104A1000A90E92FF02C091E08927882341F08A9A6B -:104A2000809108018160809308015F9A08958A98B7 -:104A3000809108018E7F809308015F9808951F92EE -:104A40000F920FB60F9211240BB60F922F933F9334 -:104A50004F935F936F937F938F939F93AF93BF9386 -:104A6000EF93FF938091210F811139C28091310F13 -:104A700080FD8F9A80FF8F9890910B01482F427094 -:104A80009D7F942B90930B0141B3847090E095959A -:104A90008795942F9D7F892B81BB91B38091300F97 -:104AA000282F217030E066E0220F331F6A95E1F76E -:104AB0009F7B292B21BB90910B01282F2270220F65 -:104AC000220F977F922B90930B0121B382FB9927A2 -:104AD00090F9822F8E7F892B81BB80912F0F86BD0D -:104AE00082E085BD81E08093210F78948091430F0F -:104AF0009091440F892B09F0ACC080912A129091BB -:104B00004F12981709F49BC0E0912A122E2F30E023 -:104B100086E0E89FF0011124E55DFD4EF093440F1F -:104B2000E093430F83819481909389008093880060 -:104B30008081918190933F0F80933E0FE28180911D -:104B4000400F8E1761F1E093400F81E1E89FF00183 -:104B50001124E05BFD4EF093420FE093410F8585F9 -:104B60009685A785B089B695A795979587958093E3 -:104B70002A0F90932B0FA0932C0FB0932D0F80939F -:104B8000260F9093270FA093280FB093290F80939F -:104B9000220F9093230FA093240FB093250FE09141 -:104BA000410FF091420F90911F0F808189278093D0 -:104BB000310F86E0829FD001839FB00D1124A55D47 -:104BC000BD4E15962C9181819281A381B481022ED4 -:104BD00004C0B695A795979587950A94D2F78093C8 -:104BE000320F9093330FA093340FB093350F85811C -:104BF0009681A781B085022E04C0B695A79597959A -:104C000087950A94D2F78093360F9093370FA0932D -:104C1000380FB093390F81859285A385B48504C080 -:104C2000B695A795979587952A95D2F780933A0FD1 -:104C300090933B0FA0933C0FB0933D0F0AC0C8DE8A -:104C40009FB7F89480916A0E846080936A0E9FBF2C -:104C500046C180916B0E8130B1F489B18071909121 -:104C6000B90E891781F010926B0E8CE0E8EFFEE030 -:104C7000A4E0BFE001900D928A95E1F780916A0E61 -:104C8000806480936A0E1092300F4091320F5091E1 -:104C9000330F6091340F7091350F8091220F9091F6 -:104CA000230FA091240FB091250F840F951FA61FED -:104CB000B71F8093220F9093230FA093240FB093DC -:104CC000250FE091410FF091420F4585568567858C -:104CD0007089481759076A077B0768F521E0209318 -:104CE000300F4585568567857089841B950BA60B0B -:104CF000B70B8093220F9093230FA093240FB093B0 -:104D0000250F20818091F80E9091F90EA091FA0E56 -:104D1000B091FB0E20FF04C00197A109B10903C0A7 -:104D20000196A11DB11D8093F80E9093F90EA093EA -:104D3000FA0EB093FB0E4091360F5091370F6091F1 -:104D4000380F7091390F8091260F9091270FA09105 -:104D5000280FB091290F840F951FA61FB71F8093AE -:104D6000260F9093270FA093280FB093290F458506 -:104D7000568567857089481759076A077B0778F554 -:104D80002091300F22602093300F4585568567852E -:104D90007089841B950BA60BB70B8093260F9093FD -:104DA000270FA093280FB093290F20818091FC0E2C -:104DB0009091FD0EA091FE0EB091FF0E21FF04C058 -:104DC0000197A109B10903C00196A11DB11D8093EE -:104DD000FC0E9093FD0EA093FE0EB093FF0E40913B -:104DE0003A0F50913B0F60913C0F70913D0F8091B5 -:104DF0002A0F90912B0FA0912C0FB0912D0F840FA3 -:104E0000951FA61FB71F80932A0F90932B0FA09377 -:104E10002C0FB0932D0F45855685678570894817EF -:104E200059076A077B0778F52091300F246020939B -:104E3000300F4585568567857089841B950BA60BB9 -:104E4000B70B80932A0F90932B0FA0932C0FB09346 -:104E50002D0F20818091000F9091010FA091020FE2 -:104E6000B091030F22FF04C00197A109B10903C04B -:104E70000196A11DB11D8093000F9093010FA09387 -:104E8000020FB093030F8091F50E843039F49091A6 -:104E9000110F8091300F89238093300F80913E0F46 -:104EA00090913F0F019790933F0F80933E0F892B76 -:104EB00069F41092440F1092430F80912A128F5F71 -:104EC00080932A12863011F410922A129091200FAA -:104ED0008091300F89278093300F1092210FFF911E -:104EE000EF91BF91AF919F918F917F916F915F9162 -:104EF0004F913F912F910F900BBE0F900FBE0F90CF -:104F00001F9018958091A90E82FF08C08A9A8091FF -:104F100008018160809308015F9A07C08A98809198 -:104F200008018E7F809308015F988091F50E8C7048 -:104F3000A1F080911F0F8093310F8091200F8093FB -:104F4000300F80919C0E880F8450819580932F0F95 -:104F500080916F00826080936F000895E0EAF0E036 -:104F600080818F7D80835C980895CF92DF92EF924D -:104F7000FF926A017B01811105C0FF90EF90DF90E5 -:104F8000CF90ECCF813011F45C9801C05C9A83E241 -:104F90008093A0008091A100807E8A618093A1000F -:104FA0008FEF9FEF9093A9008093A80020E030E05E -:104FB000A901C701B6010E94CE641816F4F620E0DC -:104FC00030E0A901C701B6010E94CE6487FD11C07F -:104FD00020E030E04AE754E4C701B6010E94EC66E5 -:104FE000181654F4C12CD12C8AE7E82E84E4F82E4C -:104FF00003C0C12CD12C76012CEE31E143E852E400 -:10500000C701B6010E94276720E030E040E05FE37F -:105010000E94F5630E94AB650E9442657093AB00ED -:105020006093AA005C9AFF90EF90DF90CF90089574 -:10503000CF92DF92EF92FF92CF93DF93C82F6A0156 -:105040007B0120E030E0A901C701B6010E94CE64D7 -:1050500087FDE3C0C43608F441C08CE98C0F20E022 -:10506000833098F590E0880F991F880F991F2230A0 -:1050700079F0FC01233011F1213019F0E459F14F9E -:1050800002C0E858F14FC082D182E282F382C2C0EE -:10509000EC01CC57D14F20E030E040E752E4C701AB -:1050A000B6010E94276720E030E040E752E40E940A -:1050B0002767688379838A839B83ACC0E057F14F6D -:1050C000F7FAF094F7F8F094DECF2F5F8A3008F407 -:1050D000A6C0243009F4A3C08A50C2CFC701B601CC -:1050E0000E94F5670E9442658C2F90E08C319105FB -:1050F00008F095C0FC018827E956FF4F8F4F0C94AC -:105100005A68633008F48DC060939C0E83C060932E -:105110009F0E80C060939D0E02C060939E0E0E9401 -:10512000FA4A78C08091A90E662311F084604CC0C1 -:105130008B7F4AC08091A90E662311F0806444C021 -:105140008F7B42C08091A90E662311F080683CC01D -:105150008F773AC06093A00E5DC0C092A10ED0922E -:10516000A20EE092A30EF092A40E54C0C092A50E1F -:10517000D092A60EE092A70EF092A80E4BC080919E -:10518000A90E662311F081601FC08E7F1DC0809123 -:10519000A90E662321F084FF46C0806215C08F7D72 -:1051A00013C08091A90E662311F0886001C0877F2B -:1051B0008093A90E0E9435542DC08091A90E6623BC -:1051C00011F0806101C08F7C8093A90E23C0609391 -:1051D000AA0E20C0C092AB0ED092AC0EE092AD0EE3 -:1051E000F092AE0E17C0C092AF0ED092B00EE09209 -:1051F000B10EF092B20E0EC070E07093B40E6093D8 -:10520000B30E08C0C092B50ED092B60EE092B70EA3 -:10521000F092B80ED0DB80E007C084E005C083E0E8 -:1052200003C086E001C08AE0DF91CF91FF90EF904C -:10523000DF90CF9008952DE0829FC00111244CE0B3 -:1052400050E0965F0C946F541F93CF93DF93182F09 -:10525000EB018DE0189FB0011124765F4CE050E027 -:10526000CE010E94B454892B51F48CE0FE011192BE -:105270008A95E9F7BE01812FDEDF80E001C081E081 -:10528000DF91CF911F910895EF92FF920F931F939B -:10529000CF93DF93CDB7DEB72C970FB6F894DEBF70 -:1052A0000FBECDBF182F80FFC6C08AE080939C0E32 -:1052B0008FEF80939F0E10929D0E87E080939E0E3D -:1052C00083E08093A00E8AE097EDA3E2BCE3809395 -:1052D000A10E9093A20EA093A30EB093A40E8FE6FE -:1052E00092E1A3E0BBE38093A50E9093A60EA0935A -:1052F000A70EB093A80E1092AA0E80E090E0A8EC42 -:10530000B1E48093AB0E9093AC0EA093AD0EB0932E -:10531000AE0E80E090E0AAEFB3E48093AF0E9093DE -:10532000B00EA093B10EB093B20E8AEF90E09093BE -:10533000B40E8093B30E80E090E0A0E8BFE38093CA -:10534000B50E9093B60EA093B70EB093B80E84E04E -:105350008093A90E80E090E5A3E4B7E480936C0EFF -:1053600090936D0EA0936E0EB0936F0E8093700E9F -:105370009093710EA093720EB093730E8093740E7F -:105380009093750EA093760EB093770E80E090E523 -:10539000A3ECB7E48093780E9093790EA0937A0EE5 -:1053A000B0937B0E80937C0E90937D0EA0937E0E27 -:1053B000B0937F0E8093800E9093810EA093820E07 -:1053C000B093830E80E090E4A2E9B5E48093840E6C -:1053D0009093850EA093860EB093870E8093880ECF -:1053E0009093890EA0938A0EB0938B0E80938C0EAF -:1053F00090938D0EA0938E0EB0938F0E80E090E46C -:10540000ACE1B6EC8093900E9093910EA093920E27 -:10541000B093930E8093940E9093950EA093960E56 -:10542000B093970E8093980E9093990EA0939A0E36 -:10543000B0939B0EC0DA11FF0FC0CE0101967C0124 -:105440008CE0F70111928A95E9F700E0B701802F0F -:10545000F2DE0F5F0830D1F712FF0AC060E080E093 -:105460009BE00E944D5460E081E59BE00E944D541A -:1054700013FF05C060E08EEA9BE00E944D542C961D -:105480000FB6F894DEBF0FBECDBFDF91CF911F9155 -:105490000F91FF90EF9008951F920F920FB60F9209 -:1054A00011240BB60F922F933F934F935F936F93FB -:1054B0007F938F939F93AF93BF93EF93FF938091CD -:1054C000C6008F33A9F050F4883109F1813211F50B -:1054D0009FB7F89480916A0E886015C0803471F08F -:1054E0008E37C1F49FB7F89480916A0E82600BC02A -:1054F0009FB7F89480916A0E816005C09FB7F894B9 -:1055000080916A0E806280936A0E9FBF14C00E94D1 -:10551000174E11C0E091B80C91E09E0F903809F43D -:1055200090E02091B70C921731F0F0E0E95CF34F76 -:1055300080839093B80CFF91EF91BF91AF919F91B1 -:105540008F917F916F915F914F913F912F910F902C -:105550000BBE0F900FBE0F901F9018951F920F92C9 -:105560000FB60F9211240BB60F928F939F93EF9368 -:10557000FF9380913A0DE82FF0E0E654F34F9081CD -:105580009093C6008F5F803809F480E080933A0DD5 -:105590009091B90C891305C08091C1008F7D8093D3 -:1055A000C100FF91EF919F918F910F900BBE0F90D3 -:1055B0000FBE0F901F901895E091B90C91E09E0FCF -:1055C000903831F490E004C020916A0E24FD0FC0A1 -:1055D00020913A0D9217C1F3F0E0E654F34F808327 -:1055E0009093B90C8091C10080628093C1000895AE -:1055F000CF93C82F88E798E027D3C830B1F190F453 -:10560000C43051F148F4C23001F118F5C13009F04D -:1056100040C080E698E01BC0C63009F118F581E271 -:1056200098E015C0C43169F140F4CA3021F100F1AD -:10563000CB3079F583E993E02AC0C63129F1F0F047 -:10564000C23339F58DE993E022C08EE498E0FCD2B4 -:1056500025C08CE398E0FBCF82E398E0F8CF82E1AD -:1056600098E0F5CF81EF97E0F2CF88EE97E0EFCFAB -:105670008DED97E0ECCF8AEC97E0E9CF84EB97E0F3 -:10568000E6CF88E993E003C080EA97E0E0CF44D515 -:1056900005C08EE897E0D8D28C2FC8D28BE897E06F -:1056A000CF91D2C20F931F93CF93DF9385E897E0FA -:1056B000CBD2C4EFDEE0688979898A899B890E9410 -:1056C00070650CE61EE0F801208131814281538132 -:1056D0000E94D5649DD283E897E0B6D26C897D891B -:1056E0008E899F890E947065F801248135814681E9 -:1056F00057810E94D5648CD283E897E0A5D2688D4B -:10570000798D8A8D9B8D0E947065F8012085318589 -:10571000428553850E94D5647BD281E897E094D27C -:105720008C8D84D28DE797E0DF91CF911F910F91FF -:105730008BC2FF920F931F93CF93DF9389E797E07C -:1057400083D280919C0E72D280E697E07DD28091C8 -:105750009F0E6CD282E497E077D280919D0E66D244 -:1057600089E297E071D280919D0E6BD282E297E040 -:105770006BD280919E0E5AD28AE097E065D28091DA -:105780009E0E5FD283E097E05FD28091A90E82FBEC -:10579000882780F94BD282EE96E056D28091A90EEE -:1057A00086FB882780F942D282EC96E04DD2809128 -:1057B000A90E881F8827881F39D282EA96E044D232 -:1057C0008091A00E33D28CE896E03ED28091A00E5C -:1057D00038D284E896E038D26091A10E7091A20E82 -:1057E0008091A30E9091A40E03D284E696E02CD271 -:1057F0006091A50E7091A60E8091A70E9091A80EB3 -:10580000F7D189E496E020D28091A90E81700ED262 -:105810008CE296E019D28091A90E85FB882780F949 -:1058200005D281E196E010D28091A90E83FB8827F2 -:1058300080F9FCD186EF95E007D28091A90E829580 -:105840008170F4D18AED95E0FFD18091AA0EEED15E -:1058500080EC95E0F9D18091AA0EF3D188EB95E028 -:10586000F3D16091AB0E7091AC0E8091AD0E909122 -:10587000AE0EBED18BE995E0E7D16091AF0E70918D -:10588000B00E8091B10E9091B20EB2D18EE795E03C -:10589000DBD18091B30ECAD18FE595E0D5D160916F -:1058A000B50E7091B60E8091B70E9091B80EA0D142 -:1058B00086E495E0C9D184E6F82EC0E00CE61EE04F -:1058C000D0E084E495E0C0D18D2F8F0DAFD182E47C -:1058D00095E0BAD1C23079F0F801C330C1F0C130DF -:1058E00029F0608171818281938118C064857585FA -:1058F0008685978513C020E030E041E655E4F80145 -:10590000608D718D828D938D0E94D56407C084A1B6 -:1059100095A1A6A1B7A1BC01CD01905869D18FE393 -:1059200095E092D1D13029F0D23031F08DE395E07D -:1059300005C08BE395E002C089E395E085D1C230D4 -:1059400051F0C33059F0C13019F08FE295E008C032 -:105950008DE195E005C08CE095E002C08CEF94E00D -:1059600073D188EF94E070D1DF5F0C5F1F4FD330AD -:1059700009F0A7CFFAE0FF0ECF5F8CE8F8129ECFB8 -:10598000DF91CF911F910F91FF90089580E090E0FB -:105990000E94AC54893051F44DE450E061E078E06D -:1059A0008CE69EE00E94B454892B29F487E020DE27 -:1059B0008FEF6ADCBECE08959FB7F89480916A0E8F -:1059C000826080936A0E9FBF08958F929F92AF92DC -:1059D000BF92CF92DF92EF92FF920F931F93CF93DC -:1059E000DF93CDB7DEB72A970FB6F894DEBF0FBEB0 -:1059F000CDBF6B017C01042F20E030E0A9010E94A3 -:105A0000CE6487FF06C08DE2D7DDF7FAF094F7F891 -:105A1000F094102F123060F020E030E048EC52E4B7 -:105A2000C701B6010E9427676B017C011250F2CFBB -:105A300000FF0AC020E030E040E251E4C701B601B7 -:105A40000E9427676B017C0120E030E040E05FE3CB -:105A5000C701B6010E94F5630E943D65E1E0F0E0F8 -:105A6000EC0FFD1FE00FF11D2EE2208310E03AE065 -:105A7000832E912CA12CB12C611571058105910506 -:105A8000A9F0101301C01F5FEE24E394F12CEC0E7B -:105A9000FD1EE10EF11CA50194010E943868605DB5 -:105AA000F7016083B901CA011F5FE6CF80E31017D9 -:105AB00048F4E1E0F0E0EC0FFD1FE10FF11D808301 -:105AC0001F5FF5CF10130BC012E0100F0F5FE1E066 -:105AD000F0E0EC0FFD1FE00FF11D80E38083112348 -:105AE00039F0FE01E10FF11D808166DD1150F7CF25 -:105AF0002A960FB6F894DEBF0FBECDBFDF91CF91CF -:105B00001F910F91FF90EF90DF90CF90BF90AF90DB -:105B10009F908F900895EF92FF920F931F93CF93D2 -:105B2000DF931F92CDB7DEB7362FEDB6FEB66DB759 -:105B30007EB7641B71090FB6F8947EBF0FBE6DBFB0 -:105B40000DB71EB70F5F1F4F202FF8019E2F921B1E -:105B5000941728F4632F0E9418689193F7CF442379 -:105B600059F0F801E40FF11D31978081805D498380 -:105B700023DD49814150F3CF0FB6F894FEBE0FBE2E -:105B8000EDBE0F90DF91CF911F910F91FF90EF909D -:105B900008951F93CF93DF93CDB7DEB7C058D109D7 -:105BA0000FB6F894DEBF0FBECDBFAE0149575F4FB1 -:105BB000FA0161917191AF01CE0101960E94DD68F9 -:105BC00010E0E1E0F0E0EC0FFD1FE10FF11D80813E -:105BD000882319F0F1DC1F5FF4CFC058DF4F0FB6F8 -:105BE000F894DEBF0FBECDBFDF91CF911F91089516 -:105BF00043E0EBCE2091A90E20FF08C02BE832E451 -:105C000041E25DE30E94276741E001C040E0DDCE54 -:105C10002091A90E20FF08C02BE832E441E25DE3A9 -:105C20000E94276744E001C043E0CFCE8A3020F0D5 -:105C3000843620F043E003C041E001C042E06AE066 -:105C40006ACF48E062E067CFCF93DF93FC01849195 -:105C5000EF012196882319F0AFDCFE01F8CFDF9128 -:105C6000CF9108952F923F924F925F926F927F92C1 -:105C70008F929F92AF92BF92CF92DF92EF92FF925C -:105C80000F931F93CF93DF93CDB7DEB768970FB60F -:105C9000F894DEBF0FBECDBF01E099E2A92E28E047 -:105CA000722E30E2632E40E1B42E50E4552E62E0B5 -:105CB000462E7CE0372E1091F30E112309F451C0CB -:105CC0000093F50E11FF06C088EC98E0BDDF8DEB68 -:105CD00098E01FC012FF06C088EC98E0B5DF82EBA9 -:105CE00098E017C013FF06C088EC98E0ADDF8FE99D -:105CF00098E00FC014FF06C088EC98E0A5DF84E9A7 -:105D000098E007C015FF0DC088EC98E09DDF88E89B -:105D100098E09ADF85E898E097DF84EF91E00E94B1 -:105D2000484D10FD08C08FB7F8949091F30E109273 -:105D3000F30E8FBF16C085E999E086DF83E899E00E -:105D400083DF82E299E080DF9FB7F89480916A0E4A -:105D50008F7E80936A0E9FBF80916A0E84FFFCCF76 -:105D6000E2CF10916A0E112309F4ACC114FF04C0F4 -:105D700081E08093F40EB7C110FFE2C0E8EFFEE0CF -:105D8000DE011D96832D01900D928A95E1F7809199 -:105D9000F50E8430E9F040F48130E9F080F0823093 -:105DA00001F58DEF98E01CC0803179F018F488304F -:105DB00049F017C0803291F0803421F012C08CE19C -:105DC00099E00EC087E199E00BC081E199E008C03D -:105DD0008BE099E005C084E099E002C087EF98E08D -:105DE00033DF8091A00E837039F0BE01635F7F4F77 -:105DF000CE0101960E9476418091A00E80FD05C0E3 -:105E00008091A00E81FF65C019C080EF98E01CDF73 -:105E100069817A818B819C81FBDE8EEE98E014DFB4 -:105E20006D817E818F819885F3DE8EEE98E00CDFA8 -:105E300069857A858B859C85EBDEE2CF87EE98E0DD -:105E400003DF8EE4C82E8EE0D82ECE0101967C01B1 -:105E5000212C4701F60161917191819191916F011E -:105E600020853185428553850E94F5639B01AC01F5 -:105E7000F70160817181828193810E94F463F7014F -:105E80006083718382839383F2E02F120FC020918D -:105E9000660E3091670E4091680E5091690E0E9417 -:105EA000F463F7016083718382839383F4E0EF0EE0 -:105EB000F11CF4016081718182819381A9DEF2E09D -:105EC0002F1619F085EE98E0BFDE239423E022120E -:105ED000C0CF8091A00E82FF0CC08FED98E0B4DEA1 -:105EE0008091291290912812891708F48E5E891BDF -:105EF0009DDE8091A00E83FF0CC08AED98E0A4DEA9 -:105F00009091B70C8091B80C891708F48058891BC0 -:105F10008DDE8091A00E84FF08C084ED98E094DEB1 -:105F20000E94365243E062E0F6DD80ED98E08CDEC0 -:105F30009FB7F89480916A0E8E7F80936A0E9FBF00 -:105F4000812F887609F441C08091F50E882349F0AD -:105F5000982F9C7791F1883021F40E94ED410093B5 -:105F6000F60E8091F50E811102C04092F60E16FFDA -:105F700009C0883011F45092F50E8091F60E8860B9 -:105F80008093F60E13FF05C08091F50E85FFB09249 -:105F9000F50E15FF12C085E999E056DE81E499E01F -:105FA00053DE82E299E050DE8091F60E81FD1460AE -:105FB00084608093F60E6092F50E9FB7F8948091FE -:105FC0006A0E877980936A0E9FBF11FF57C0812F99 -:105FD000887609F04BC08091F50E882339F08075E2 -:105FE00009F444C08091F60E81FF40C08091F60E06 -:105FF00082FF20C08091340E882371F04091350ECD -:106000005091360E6091370E7091380E0E94B52770 -:1060100080EA9FE00E94484D8091330E882351F022 -:10602000823011F45C9A02C00E94F85488EE93E02A -:106030000E94484D8091281290912912981791F052 -:10604000A89EC00111248A5B904F892B59F0809142 -:10605000F60E83FD07C07092F50E0E940F420E945B -:10606000822702C01092F50E1092F60E9FB7F89498 -:1060700080916A0E8D7F80936A0E9FBF12FF22C0AF -:106080008091F50E807391F08091F70E81110EC012 -:106090008091F60E82FF04C00E94AE270E94F85441 -:1060A0008091F60E82608093F60E04C01092F60E78 -:1060B0001092F50E9FB7F89480916A0E8B7F8093B3 -:1060C0006A0E9FBF8091F50E8C7711F00E940F42EF -:1060D0009091F50E8091F60E903219F481FDB092F8 -:1060E000F50E8111E8CD68960FB6F894DEBF0FBEAD -:1060F000CDBFDF91CF911F910F91FF90EF90DF9077 -:10610000CF90BF90AF909F908F907F906F905F9057 -:106110004F903F902F900895CF93DF93EC0189919A -:10612000882311F049DAFBCFDF91CF910895ECE39A -:10613000FDE0A4EFBEE014964D915D916D917C91D0 -:106140001797408351836283738318964D915D91B5 -:106150006D917C911B9744835583668377831C964E -:106160008D919D910D90BC91A02D80879187A287E4 -:10617000B38708952F923F924F925F926F927F92D2 -:106180008F929F92AF92BF92CF92DF92EF92FF9247 -:106190000F931F93CF93DF93CDB7DEB7E7970FB67B -:1061A000F894DEBF0FBECDBF4B8F5C8F6D8F072F76 -:1061B0002FAB209129122EA3422F50E05BA34AA3BC -:1061C00039E2239FF0011124EA5BF04F1586168611 -:1061D0001786108A15A216A217A210A6108249E9E6 -:1061E00056E766E97EE741A352A363A374A399A38C -:1061F00088A34CE65EE058A74FA3CE010D9698AB5E -:106200008FA72CE33DE03EA72DA7AE014F5F5F4F68 -:106210005DA34CA38EA129E2829FC00111249EABF5 -:106220008DAB5F8F4E8F2CE33DE03AA729A74CE65C -:106230005EE05AAB49AB612C712C10E02F01CF010D -:106240000D969CAB8BAB1F0195E2290E311CE8A18A -:10625000F9A16191719181919191F9A3E8A3E9A9C3 -:10626000FAA981909190A190B190FAABE9ABA50108 -:1062700094010E9427670E94F766EFA5F8A9619331 -:10628000719381939193F8ABEFA7E9A5FAA5C1901B -:10629000D190E190F190FAA7E9A76C197D098E09D8 -:1062A0009F096B017C0197FF07C0CC24DD24760198 -:1062B000C61AD70AE80AF90AEDA9FEA9E60DF71DE4 -:1062C000EA5BF04FC182D282E382F482EBA9FCA99F -:1062D0002081318142815381C216D306E406F5063E -:1062E00010F469017A01EBA9FCA9C082D182E28293 -:1062F000F3820E947065A50194010E94D5644B0150 -:106300005C01EE8DFF8D6193719381939193FF8F6B -:10631000EE8F20E030E0A9010E94CE6487FF0DC01F -:10632000112321F0113021F094E003C091E001C06D -:1063300092E0F2018081892B8083A5019401C5013F -:10634000B4010E942767F10120813181428153818C -:106350000E94F563F10160837183828393831F5FE1 -:10636000F4E06F0E711C2CE06216710409F06FCF1F -:106370000E94B4674B015C01F101608371838283E9 -:106380009383CD28CE28CF2809F426C220E030E020 -:10639000A9016B8D7C8D8D8D902F0E94CE6487FD21 -:1063A00021C0FFA9FF2361F0A50194016B8D7C8DB5 -:1063B0008D8D902F0E9427676B8F7C8F8D8F092F7B -:1063C00020E030E040E85FE36B8D7C8D8D8D902F79 -:1063D0000E94CE6487FF0DC01B8E1C8E20E82D8F7F -:1063E0000FE307C039E93B8F46E74C8F56E95D8FD5 -:1063F0000EE7A501940160E070E080E89FE30E9451 -:10640000D56469A77AA78BA79CA7CE010D969A8F12 -:10641000898FC12CD12C760129E2EAA1FBA12E9F04 -:10642000C0012F9F900D11249C012959304F39A391 -:1064300028A3ECA1FDA180809180A280B38020E000 -:1064400030E0A901C501B4010E94CE64882309F49B -:1064500075C029A53AA54BA55CA5C501B4010E944C -:1064600027672B013C01ECA1FDA16083718382832E -:1064700093839B01AC0160E070E080E89FE30E94A1 -:10648000D5644B015C01E894B7F8EFA1F8A5248529 -:10649000358546855785C501B4010E9427671B01D4 -:1064A0008E8F192F9B01482F592F6B8D7C8D8D8DD1 -:1064B000902F0E94CE6487FD05C02B8E3C8EFE8DF2 -:1064C000FD8F012FE8A1F9A120803180F281FE8F9C -:1064D000E8A1F9A11381EFA1F8A5208D318D428D9E -:1064E000538DC501B4010E9427674B015C019B01DC -:1064F000AC01B1018E8D912F0E94CE6487FD03C047 -:106500001401AE8E1B2DC101AE8DB12FE8A1F9A1F2 -:1065100080839183A283B383EDA5FEA52485358571 -:1065200046855785C301B2010E9427679B01AC01D4 -:10653000C701B6010E94F4636B017C012CA13DA14F -:106540002C5F3F4F3DA32CA34DA55EA54C5F5F4F35 -:106550005EA74DA78FA198A5049698A78FA3E98D54 -:10656000FA8D2E173F0709F064CF80912812FEA103 -:10657000F8130FC089E22AA13BA1829FF001839FFB -:10658000F00D1124EA5BF04F118A128A138A148AE3 -:1065900014C02FEE3FEF4FE75FE3C701B6010E9443 -:1065A000EC6618167CF489E24AA15BA1849FF00195 -:1065B000859FF00D1124EA5BF04F118E128E138E21 -:1065C000148E6AC02FEE3FEF4FE75FEBC701B601B5 -:1065D0000E94EC66181644F08FEEC82EDD24DA9483 -:1065E0008FE7E82E8FEBF82EA701960160E070E0B0 -:1065F00080E89FE30E94F46320E030E040E05FE346 -:106600000E9427670E94B4676B017C0189E22AA17E -:106610003BA1829FF001839FF00D1124EA5BF04FB4 -:106620002091A10E3091A20E4091A30E5091A40E84 -:1066300061A172A183A194A10E942767A70196017D -:106640000E9427674B015C01A701960160E070E0A2 -:1066500080E89FE30E94F4639B01AC01C501B40193 -:106660000E94D5646B017C0120E030E0A9010E940A -:10667000CE6487FF03C0C12CD12C760189E24AA1E8 -:106680005BA1849FF001859FF00D1124EA5BF04F20 -:10669000C18ED28EE38EF48E2B8D3C8D4D8D502F7E -:1066A0006B8D7C8D8D8D902F0E9427677B018C01D7 -:1066B00089E22AA13BA1829FF001839FF00D112462 -:1066C000EA5BF04FC701D801858F968FA78FB0A3E3 -:1066D000A18CB28CC38CD48C6090540D7090550DED -:1066E0008090560D9090570D9301A401B701C801F9 -:1066F0000E94CE6487FD05C0762D672D982D892DCB -:1067000004C07E2D6F2D902F812F272F362F492FDC -:10671000582FB501C6010E94CE6487FD0DC09301BC -:10672000A401B701C8010E94CE6487FD03C05301D4 -:10673000640102C05701680189E24AA15BA1849FFC -:10674000F001859FF00D1124EA5BF04FC501D601E1 -:10675000858B968BA78BB08F8CE0FE013196A8E4D9 -:10676000BDE001900D928A95E1F7C701D8018093B1 -:10677000540D9093550DA093560DB093570D8CE08A -:10678000FE013D96ACE3BDE001900D928A95E1F7E4 -:1067900080913B0D809329128F5F823109F480E054 -:1067A00080933B0DE7960FB6F894DEBF0FBECDBFCA -:1067B000DF91CF911F910F91FF90EF90DF90CF90DD -:1067C000BF90AF909F908F907F906F905F904F9011 -:1067D0003F902F900C94BF4BE7960FB6F894DEBF16 -:1067E0000FBECDBFDF91CF911F910F91FF90EF9022 -:1067F000DF90CF90BF90AF909F908F907F906F90E1 -:106800005F904F903F902F900895CF93DF93C62FC6 -:10681000813009F47DC0F8F0823009F04EC134D5E2 -:106820008CE6C2D40BD58C2FBFD408D52DD58DE6E0 -:10683000BBD404D562E070E080E090E00E940A4D95 -:10684000559A5D9A62E070E080E090E00E940A4D07 -:10685000D8E0C0E0F0C08DD68CE61BD664D68C2F75 -:1068600018D661D686D68DE614D65DD662E070E085 -:1068700080E090E00E940A4D399A419A62E070E00F -:1068800080E090E00E940A4DD8E0C0E0439865E0C7 -:1068900070E080E090E00E940A4D439ACC0F65E0E2 -:1068A00070E080E090E00E940A4D39983199C16013 -:1068B00065E070E080E090E00E940A4DD15031F731 -:1068C0004398399A419A62E070E080E090E00E943B -:1068D0000A4D439A65E070E080E090E00E940A4D26 -:1068E000439862E070E080E090E00E940A4D399A9F -:1068F000419A62E070E080E090E00E940A4D439887 -:1069000062E070E080E090E00E940A4DF4D5D6C0CD -:106910008ED58CE6D1D450D58C2FCED44DD587D5FD -:106920008DE6CAD449D562E070E080E090E00E9434 -:106930000A4D8091010184608093010180910201E0 -:1069400084608093020162E070E080E090E00E9449 -:106950000A4DD8E0C0E0809102018F778093020158 -:1069600065E070E080E090E00E940A4D80910201B5 -:10697000806880930201CC0F65E070E080E090E0D9 -:106980000E940A4D809101018B7F809301018091CB -:10699000000182FDC16065E070E080E090E00E944F -:1069A0000A4DD150C1F6809102018F778093020188 -:1069B00080910101846080930101809102018460D3 -:1069C0008093020162E070E080E090E00E940A4D56 -:1069D0008091020180688093020165E070E080E0B0 -:1069E00090E00E940A4D809102018F77809302010E -:1069F00062E070E080E090E00E940A4D8091010129 -:106A0000846080930101809102018460809302017F -:106A100062E070E080E090E00E940A4D8091020107 -:106A20008F778093020162E070E080E090E00E9446 -:106A30000A4D90D443C05E9865E070E080E090E03D -:106A40000E940A4D5E9ACC0F65E070E080E090E015 -:106A50000E940A4D55984D99C16065E070E080E054 -:106A600090E00E940A4DD15031F75E98559A5D9A98 -:106A700062E070E080E090E00E940A4D5E9A65E07E -:106A800070E080E090E00E940A4D5E9862E070E065 -:106A900080E090E00E940A4D559A5D9A62E070E0B5 -:106AA00080E090E00E940A4D5E9862E070E080E035 -:106AB00090E00E940A4DAAD301C0C0E08C2FDF9164 -:106AC000CF910895E4E2FEE0A481B5819C010E948B -:106AD0006268A1E0B1E02C9128602C93A0EAB0E0BC -:106AE0002C9120682C93DC01CB012AE0B695A79568 -:106AF000979587952A95D1F79093A9008093A80040 -:106B0000868180618093A1000895CF93DF9321E572 -:106B1000829FC0011124EC01D55F40E550E0BE0129 -:106B200084ED9DE00E94B454892B59F41092D40D49 -:106B300040E550E064ED7DE0CE010E946F5480E0BE -:106B400001C081E0DF91CF9108951F920F920FB69F -:106B50000F9211240BB60F922F933F934F935F9395 -:106B60006F937F938F939F93AF93BF93EF93FF9315 -:106B70008091CF0D9091D00D9093250180932401A9 -:106B8000E091CD0DF091CE0D309709F01995FF9160 -:106B9000EF91BF91AF919F918F917F916F915F9195 -:106BA0004F913F912F910F900BBE0F900FBE0F9002 -:106BB0001F9018951F920F920FB60F9211240BB6CB -:106BC0000F922F933F934F935F936F937F938F9386 -:106BD0009F93AF93BF93EF93FF938091260E909175 -:106BE000270E9093A5008093A400E091240EF091CD -:106BF000250E309709F01995FF91EF91BF91AF9154 -:106C00009F918F917F916F915F914F913F912F91C4 -:106C10000F900BBE0F900FBE0F901F9018951F92F4 -:106C20000F920FB60F9211248F939F9380910802B9 -:106C30009091090290939500809394009F918F9179 -:106C40000F900FBE0F901F9018951F920F920FB6C6 -:106C50000F9211240BB60F922F933F934F935F9394 -:106C60006F937F938F939F93AF93BF93EF93FF9314 -:106C70008091C80D9091C90D8093B200E091C60D2E -:106C8000F091C70D309709F01995FF91EF91BF91E1 -:106C9000AF919F918F917F916F915F914F913F91B4 -:106CA0002F910F900BBE0F900FBE0F901F90189555 -:106CB0008A98E8E0F1E080818E7F80835F98E2E748 -:106CC000F0E080818E7F80831092C00D0895CF9375 -:106CD000DF93EB018431D1F028F4882361F08C300C -:106CE000A8F437C08233E9F018F4873190F10EC070 -:106CF000833311F10BC08881882329F062EA73E0A5 -:106D0000CE010E947B6864EA73E020C088818823FA -:106D100029F062EA73E0CE010E947B6867EA73E0C3 -:106D200015C08881882329F062EA73E0CE010E94B1 -:106D30007B686BEA73E00AC08881882329F062EAE5 -:106D400073E0CE010E947B686FEA73E0CE010E947F -:106D50007B688091600D882379F060E67DE0CE014C -:106D60000E947B6882E3E0E6FDE0DF011D928A95E8 -:106D7000E9F7DF91CF91089564ED72E0CE01DF91E4 -:106D8000CF910C947B68E1E0F1E0808180628083A8 -:106D9000808180648083E2E0F1E080818F7D808368 -:106DA00080818F7B808308953F9A479A08959C9AAB -:106DB0009D9AA498A59A0895EF92FF920F931F931E -:106DC000CF93DF93CDB7DEB760970FB6F894DEBFF1 -:106DD0000FBECDBF9AEC980F863308F0892FA82FED -:106DE000A87087708064FE013196BE016F5E7F4F90 -:106DF000AF0190917B00977F9A2B90937B008093BB -:106E00007C0090917A00906490937A0090917A003F -:106E100096FFFCCF209178009091790030E0392BDB -:106E200021933193E617F70721F720E030E060E087 -:106E3000862F90E0F901E80FF91F3797D4F4880FF7 -:106E4000991F8A01080F191FF801A081B1810296CC -:106E50007A01E80EF91EF701808191818A179B075C -:106E600030F4F80191838083F701B183A0836F5FD1 -:106E7000DFCF2F5F3F4F28303105C9F62F8138858E -:106E80008D819E81820F931F29853A85820F931FE2 -:106E90002B853C85820F931F9695879596958795B0 -:106EA00060960FB6F894DEBF0FBECDBFDF91CF91D5 -:106EB0001F910F91FF90EF900895809104018778C2 -:106EC00080930401809103018877803451F463EB4F -:106ED00073E088E59DE00E94866840E050E0BA01DA -:106EE0000EC080910301887769F46AEB73E088E54E -:106EF0009DE00E94866840E050E060EE70E483E030 -:106F00000E9418280C94C62C2091160F3091170F50 -:106F100021153105B9F080911D0F90911E0F821738 -:106F2000930734F4019690931E0F80931D0F0AC0AF -:106F300010921E0F10921D0F1092170F1092160F25 -:106F40001092C10D2091140F3091150F21153105AC -:106F5000A1F080911B0F90911C0F8217930734F4BE -:106F6000019690931C0F80931B0F07C010921C0F6B -:106F700010921B0F81E08093C20D8091C10D811191 -:106F80001BC08091130F811117C0809173008E7FF9 -:106F9000809373001092120F1092170F1092160F19 -:106FA0001092150F1092140F10921E0F10921D0FB9 -:106FB00010921C0F10921B0F089580911A0F8111CF -:106FC00007C081E080931A0F80910B01806205C099 -:106FD00010921A0F80910B018F7D80930B0180918D -:106FE000180F9091190F9C012F5F3F4F3093190F8D -:106FF0002093180F209104023091050228173907B9 -:1070000048F41092190F1092180F809170008E7F23 -:10701000809370000895CF93DF936091920D84E880 -:1070200093E00E944D546091930D85E893E00E9497 -:107030004D5488E993E0EC012196FC01E450F64FB1 -:1070400060810E944D54CE01CC39D340A1F78EE827 -:1070500093E0EC012196FC01E65FF54F60810E9410 -:107060004D54CE01C239D340A1F7DF91CF9108959D -:10707000CF92DF92EF92FF920F931F93CF93DF9304 -:1070800069017A01EAE0F1E0208120622083EBE0EF -:10709000F1E020812F7D2083660F771F709305021A -:1070A0006093040206EC1DE08DED97E3F8019183F7 -:1070B0008083C0E7D0E088818E7F8883E0EBF0E0BA -:1070C00080818C7F8083E1EBF0E08081877F80830B -:1070D000A6EBB0E08C918F7D8C9388818D7F888327 -:1070E00080818460808380818C7F808320E034E293 -:1070F00044EF59E4C701B6010E94D56420E034E2B0 -:1071000044E75BE40E94276720E030E040E85CE36E -:107110000E9427670E943D6520E031E0C901861B7F -:10712000970BF80193838283828193818093B200CD -:10713000888181608883DF91CF911F910F91FF90AB -:10714000EF90DF90CF900895E1EAF0E080E1808356 -:107150001092A000A4E2BEE082E016968C931697EF -:1071600080E29EE415969C938E9314979093A700CB -:107170008093A60082E1808320E030E048EA51E479 -:1071800060910002709101028091020290910302CD -:107190000E94D56420E030EC4FE754E40E9427675A -:1071A0000E944265CB018ECCCF93DF93D82FC8E0ED -:1071B0005E98559AD7FF02C05D9A01C05D9865E060 -:1071C00070E080E090E00E940A4D5E9A65E070E019 -:1071D00080E090E00E940A4D5E98DD0F65E070E06F -:1071E00080E090E00E940A4DC15011F762E070E02B -:1071F00080E090E00E940A4D559A5D9A62E070E04E -:1072000080E090E0DF91CF910C940A4D5E98559A02 -:107210005D9865E070E080E090E00E940A4D5E9A23 -:1072200065E070E080E090E00E940A4D559A5D9A1A -:1072300065E070E080E090E00C940A4DCF93559AA1 -:107240005D9A62E070E080E090E00E940A4D5E9AF4 -:1072500062E070E080E090E00E940A4D55989BEF5C -:1072600089B1C82FC07285FF05C09150C9F7CEDF24 -:10727000C1E007C05E9862E070E080E090E00E94AC -:107280000A4D8C2FCF910895559A5D9A5E9A65E0CC -:1072900070E080E090E00E940A4D559A5D9865E0AC -:1072A00070E080E090E00E940A4D5E9862E070E03D -:1072B00080E090E00C940A4DCF93DF93D82FC8E084 -:1072C000809102018F778093020180910101846097 -:1072D0008093010180910201D7FF02C0846001C048 -:1072E0008B7F8093020165E070E080E090E00E9477 -:1072F0000A4D8091020180688093020165E070E090 -:1073000080E090E00E940A4D809102018F77809387 -:107310000201DD0F65E070E080E090E00E940A4D20 -:10732000C15071F662E070E080E090E00E940A4D8A -:107330008091010184608093010180910201846049 -:107340008093020162E070E080E090E0DF91CF91F5 -:107350000C940A4D0F931F93CF93DF93C2E0D1E0BB -:1073600088818F77888301E011E0F8018081846053 -:10737000808388818B7F888365E070E080E090E087 -:107380000E940A4D88818068888365E070E080E013 -:1073900090E00E940A4DF80180818460808388819A -:1073A0008460888365E070E080E090E0DF91CF91B9 -:1073B0001F910F910C940A4DCF938091010184602D -:1073C000809301018091020184608093020162E058 -:1073D00070E080E090E00E940A4D80910201806898 -:1073E0008093020162E070E080E090E00E940A4D2C -:1073F000809101018B7F809301019BEF80910001BF -:10740000C82FC47082FF05C09150C1F7A3DFC1E04F -:107410000BC0909102019F779093020162E070E0AF -:1074200080E090E00E940A4D8C2FCF9108950F9339 -:107430001F93CF93DF9301E011E0F8018081846016 -:107440008083C2E0D1E088818460888388818068FD -:10745000888365E070E080E090E00E940A4DF801CA -:1074600080818460808388818B7F888365E070E081 -:1074700080E090E00E940A4D88818F77888362E0E7 -:1074800070E080E090E0DF91CF911F910F910C941C -:107490000A4DCF93DF93D82FC8E04398399AD7FF8E -:1074A00002C0419A01C0419865E070E080E090E040 -:1074B0000E940A4D439A65E070E080E090E00E94EF -:1074C0000A4D4398DD0F65E070E080E090E00E9497 -:1074D0000A4DC15011F762E070E080E090E00E9438 -:1074E0000A4D399A419A62E070E080E090E0DF91C5 -:1074F000CF910C940A4D4398399A419865E070E019 -:1075000080E090E00E940A4D439A65E070E080E0E0 -:1075100090E00E940A4D399A419A65E070E080E05F -:1075200090E00C940A4DCF93399A419A62E070E052 -:1075300080E090E00E940A4D439A62E070E080E0B3 -:1075400090E00E940A4D39989BEF86B1C82FC27017 -:1075500081FF05C09150C9F7CEDFC1E007C0439855 -:1075600062E070E080E090E00E940A4D8C2FCF91A5 -:107570000895399A419A439A65E070E080E090E07E -:107580000E940A4D399A419865E070E080E090E0F1 -:107590000E940A4D439862E070E080E090E00C9415 -:1075A0000A4D4F925F926F927F92AF92BF92CF92AD -:1075B000DF92EF92FF920F931F93CF93DF935C01C3 -:1075C000EB018A01FC01408051806280738020E0E1 -:1075D00030E0A901C301B2010E94CE6420E030E096 -:1075E000A901811111C0688179818A819B810E94E2 -:1075F000EC661816E4F02AEDC22E2FE0D22E29EC0C -:10760000E22E2FEBF22E22C0C301B2010E94CE6403 -:1076100087FD16C0A3019201688179818A819B81CF -:107620000E94D5640E9493646B017C010FC09AEDA7 -:10763000C92E9FE0D92E99ECE92E9FE3F92E06C0C2 -:10764000C12CD12C80ECE82E8FE7F82EC701B601B3 -:107650000E94D2642091940D3091950D4091960D29 -:107660005091970D0E9427679B01AC01C301B201A5 -:107670000E94F463F5016083718382839383C70161 -:10768000B6010E94AA672091940D3091950D40910A -:10769000960D5091970D0E9427679B01AC01688160 -:1076A00079818A819B810E94F463688379838A83CC -:1076B0009B832091980D3091990D40919A0D509196 -:1076C0009B0DF80160817181828193810E94F56335 -:1076D000F8016083718382839383DF91CF911F913F -:1076E0000F91FF90EF90DF90CF90BF90AF907F9081 -:1076F0006F905F904F9008954F925F926F927F923C -:10770000AF92BF92CF92DF92EF92FF920F931F93AF -:10771000CF93DF935C01EB018A01FC014080518033 -:107720006280738020E030E0A901C301B2010E94B1 -:10773000CE6420E030E0A901811111C06881798117 -:107740008A819B810E94EC661816E4F02AEDC22E15 -:107750002FE0D22E29ECE22E2FEBF22E22C0C30115 -:10776000B2010E94CE6487FD16C0A3019201688118 -:1077700079818A819B810E94D5640E9493646B0108 -:107780007C010FC09AEDC92E9FE0D92E99ECE92E0D -:107790009FE3F92E06C0C12CD12C80ECE82E8FE798 -:1077A000F82EC701B6010E94D2642091940D309149 -:1077B000950D4091960D5091970D0E9427679B0162 -:1077C000AC01C301B2010E94F563F50160837183CE -:1077D00082839383C701B6010E94AA672091940D0A -:1077E0003091950D4091960D5091970D0E9427670D -:1077F0009B01AC01688179818A819B810E94F5633C -:10780000688379838A839B832091980D3091990DA9 -:1078100040919A0D50919B0DF80160817181828198 -:1078200093810E94F463F801608371838283938360 -:10783000DF91CF911F910F91FF90EF90DF90CF904C -:10784000BF90AF907F906F905F904F9008952F9270 -:107850003F924F925F926F927F928F929F92AF92E0 -:10786000BF92CF92DF92EF92FF920F931F93CF932D -:10787000DF93CDB7DEB72C970FB6F894DEBF0FBEFF -:10788000CDBF160135012401FE0131964F0134961A -:107890005F0134966F01C4D2E980FA800B811C81AC -:1078A0002D813E814F81588569857A858B859C85A0 -:1078B000420153016101CFD12C960FB6F894DEBF7F -:1078C0000FBECDBFDF91CF911F910F91FF90EF9031 -:1078D000DF90CF90BF90AF909F908F907F906F90F0 -:1078E0005F904F903F902F9008952F923F924F922C -:1078F0005F926F927F928F929F92AF92BF92CF9240 -:10790000DF92EF92FF920F931F93CF93DF93CDB748 -:10791000DEB766970FB6F894DEBF0FBECDBF6983A2 -:107920007A838B839C832D833E834F8358872701E3 -:1079300038011601BA8AA98A84019B01AC010E9410 -:1079400027676B017C012D813E814F815885CA01DB -:10795000B9010E9427679B01AC01C701B6010E94D3 -:10796000F5630E94B46723E333E343E551E40E94E7 -:10797000F46369877A878B879C8723E333E344ED3D -:1079800052E4C301B2010E94F4632B013C0129853A -:107990003A854B855C85CA01B9010E9427676B0156 -:1079A0007C01A3019201C301B2010E9427679B01E0 -:1079B000AC01C701B6010E94F5636B017C0128E8A8 -:1079C0003BEE4DE955E40E94F4634B015C0120E07D -:1079D00038E84DE957E4C701B6010E9427676D8773 -:1079E0007E878F87988BA5019401C501B4010E9401 -:1079F00027679B01AC016D857E858F8598890E94E4 -:107A0000F4630E94B4676B8B7C8B8D8B9E8BA7017C -:107A10009601C701B6010E94F5636D877E878F8747 -:107A2000988BA501940169857A858B859C850E9438 -:107A300027674B015C012B893C894D895E89C30115 -:107A4000B2010E9427679B01AC01C501B4010E94ED -:107A5000F4634B015C0120E030E04EE053E46D85BF -:107A60007E858F8598890E9427679B01AC01C5019F -:107A7000B4010E94D5640E94E66321EE3EE245E631 -:107A800052E40E942767F1016083718382839383AC -:107A900028E83BEE4DE955E4C701B6010E94F563C5 -:107AA0004B015C0122EE32E045EC57E4C701B60120 -:107AB0000E9427676B017C01A5019401C501B401F7 -:107AC0000E9427679B01AC01C701B6010E94F463C5 -:107AD0000E94B4676B017C01A501940169857A85D8 -:107AE0008B859C850E9427674B015C01A70196014D -:107AF000C301B2010E9427679B01AC01C501B4011B -:107B00000E94F5636B017C012DEC3CEC4EE153E4EB -:107B10006D857E858F8598890E9427679B01AC01C2 -:107B2000C701B6010E94D5640E94E66321EE3EE2E1 -:107B300045E652E40E9427676B017C01E989FA89D6 -:107B4000608371838283938321EE3EE245E652E4B3 -:107B5000F10160817181828193810E94D5640E94CC -:107B6000AA6720E030E04EE053E40E9427679B01C3 -:107B7000AC01C301B2010E94EC66181654F4F7FA86 -:107B8000F094F7F8F094E989FA89C082D182E28210 -:107B9000F38220E030E0A90169817A818B819C81A8 -:107BA0000E94CE6420E030E0A901811112C06D81F5 -:107BB0007E818F8198850E94EC6618162CF480E0F7 -:107BC00090E0A4EBB2E411C080E090E0A4EBB2EC52 -:107BD0000CC069817A818B819C810E94CE6487FF71 -:107BE0000AC080E090E0A0ECBFE7F80180839183B9 -:107BF000A283B38317C029813A814B815C816D8157 -:107C00007E818F8198850E94D5640E94936421EEC5 -:107C10003EE245E652E40E942767F80160837183E3 -:107C20008283938366960FB6F894DEBF0FBECDBFF6 -:107C3000DF91CF911F910F91FF90EF90DF90CF9048 -:107C4000BF90AF909F908F907F906F905F904F907C -:107C50003F902F9008952F923F924F925F926F9294 -:107C60007F928F929F92AF92BF92CF92DF92EF92CC -:107C7000FF920F931F93CF93DF93CDB7DEB72E976D -:107C80000FB6F894DEBF0FBECDBF29833A834B8376 -:107C90005C83ED82FE820F831887860115019E8624 -:107CA0008D8621EE3EE245E652E40E94D5642B012A -:107CB0003C0121EE3EE245E652E469817A818B8106 -:107CC0009C810E94D5644B015C0121EE3EE245E6B9 -:107CD00052E46D817E818F8198850E94D5646B010D -:107CE0007C01C301B2010E94D26469837A838B83D1 -:107CF0009C83C501B4010E94D2646D837E838F830F -:107D00009887C301B2010E94AA672B013C01C501FB -:107D1000B4010E94AA6769877A878B879C8720E0D5 -:107D200030E04EE053E469817A818B819C810E942E -:107D300027674B015C012DEC3CEC4EE153E46D8177 -:107D40007E818F8198850E9427679B01AC01C501C8 -:107D5000B4010E94F56323E333E343E551E40E9459 -:107D6000F5634B015C01C701B6010E94D2649B011F -:107D7000AC01C501B4010E942767F80160837183DB -:107D800082839383C701B6010E94AA679B01AC015D -:107D9000C501B4010E942767F1016083718382836A -:107DA000938320E030E04EE053E4C301B2010E942F -:107DB00027676B017C012DEC3CEC4EE153E46985B7 -:107DC0007A858B859C850E9427679B01AC01C70142 -:107DD000B6010E94F46323E333E344ED52E40E94CE -:107DE000F563ED85FE8560837183828393832E9690 -:107DF0000FB6F894DEBF0FBECDBFDF91CF911F91BC -:107E00000F91FF90EF90DF90CF90BF90AF909F9039 -:107E10008F907F906F905F904F903F902F9008953C -:107E20004F925F926F927F928F929F92AF92BF928A -:107E3000CF92DF92EF92FF920F931F93CF93DF9336 -:107E400000D01F92CDB7DEB729013A01E982FA824C -:107E50000B831C8302E91DE020E030E040E253E4A4 -:107E60000E94D5649B01AC01F8016285738584850D -:107E700095850E94F563F601608371838283938305 -:107E800020E030E040E253E4C301B2010E94D56437 -:107E90009B01AC01F80166857785808991890E94F4 -:107EA000F563F501608371838283938320E030E082 -:107EB00044EB52E4F80162897389848995890E94B0 -:107EC000F4632B013C0120E030E040E253E469819F -:107ED0007A818B819C810E94D5649B01AC01C30196 -:107EE000B2010E94F563F4016083718382839383FE -:107EF0000F900F900F900F90DF91CF911F910F91E6 -:107F0000FF90EF90DF90CF90BF90AF909F908F90B9 -:107F10007F906F905F904F9008954F925F926F9215 -:107F20007F928F929F92AF92BF92CF92DF92EF9209 -:107F3000FF920F931F932B013C0149015A016701E6 -:107F400078019B01AC010E94FC67811172C0A50100 -:107F50009401C501B4010E94FC6781116AC0A701A8 -:107F60009601C701B6010E94FC67811162C02AE92F -:107F700039E947E053E4C301B2010E94EC661816E8 -:107F80000CF457C020E030E040E85FE3C301B201E9 -:107F90000E94CE6487FD4DC02DEC3CEC4FEE52E4C8 -:107FA000C501B4010E94EC6618160CF442C020E032 -:107FB00030E040E85FE3C501B4010E94CE6487FD74 -:107FC00038C0A301920160E070E084E393E40E9472 -:107FD000F463A50194010E94F4634B015C0120E06D -:107FE00030E047E153E40E94EC66181614F120E0FB -:107FF00030E040E251E4C501B4010E94CE6487FD47 -:1080000018C020E030E044EB52E4C701B6010E9402 -:10801000EC66181674F020E030E044EB52ECC70137 -:10802000B6010E94CE64881F8827881F91E08927A7 -:1080300001C080E01F910F91FF90EF90DF90CF90F3 -:10804000BF90AF909F908F907F906F905F904F9078 -:1080500008950F931F93CF93DF93C5EAD2E184E392 -:1080600093E08C010F5F1F4F0E94AC548993C801AD -:108070000A331340B1F7DF91CF911F910F9108950B -:10808000AF92BF92CF92DF92EF92FF920F931F9326 -:10809000CF93DF93082F6EE00E940534C82F6FE066 -:1080A000802F0E940534D0E0DC2FCC27C82B7E0126 -:1080B0006E0134E0A32EB12C6EE0802F0E940534B7 -:1080C000182F6FE0802F0E940534212F30E0322FCF -:1080D0002227282BC217D30708F4E9012C153D05E8 -:1080E00008F46901E20EF31E81E0A81AB10821F735 -:1080F000C7018C1B9D0B8C199D0963E070E00E94E9 -:108100002468CB01DF91CF911F910F91FF90EF90E9 -:10811000DF90CF90BF90AF9008958F929F92AF92D3 -:10812000BF92CF92DF92EF92FF927C01A9DF9C0178 -:1081300081E0E816F104F9F088F082E0E816F10435 -:1081400039F58091A5129091A612A0E0B0E0BC0193 -:10815000CD01621B730B810991093FC08091A71269 -:108160009091A812A0E0B0E0BC01CD01621B730B9E -:10817000810991091DC08091A9129091AA12A0E0D5 -:10818000B0E0BC01CD01621B730B810991091CC0D9 -:1081900081E0E816F104A9F040F082E0E816F1046D -:1081A00019F560E070E0CB0118C060E070E0CB0131 -:1081B00042E2842E43E5942E44E0A42E42E4B42E01 -:1081C00016C060E070E0CB0138E1832E3BE5932ED2 -:1081D0003EEAA32E32E4B32E0AC0812C912C24EB6C -:1081E000A22E22E4B22E03C060E070E0CB010E9418 -:1081F000706520E030E044EB53E40E94276720E004 -:1082000030E040E859E30E9427679B01AC01C501BB -:10821000B4010E94F4636B017C0120E030E044EB88 -:1082200053E40E94EC66181654F420E030E044EB6E -:1082300053E4C701B6010E94F4636B017C0120E0A6 -:1082400030E0A901C701B6010E94CE6487FF0AC0D1 -:1082500020E030E044EB53E4C701B6010E94F5632F -:108260006B017C01C701B601FF90EF90DF90CF90CA -:10827000BF90AF909F908F9008950F931F93CF93CF -:10828000DF93C5EAD2E184E393E069918C010F5F4B -:108290001F4F0E944D54C8010A331340B1F7D9DE75 -:1082A00080E090E03ADF60939C0D70939D0D809389 -:1082B0009E0D90939F0D81E090E02FDF6093A00DC5 -:1082C0007093A10D8093A20D9093A30D82E090E096 -:1082D00024DF6093A40D7093A50D8093A60D909359 -:1082E000A70DDF91CF911F910F910895AF92BF928B -:1082F000CF92DF92EF92FF920F931F93CF93DF9372 -:1083000000D01F92CDB7DEB75B012CE6E22E2EE047 -:10831000F22E8C016B018CE0C80ED11CF50161912D -:108320007191819191915F01F70121913191419179 -:1083300051917F0129833A834B835C830E9470654E -:1083400029813A814B815C810E94D564F801619357 -:108350007193819391938F01AC14BD04F9F60F9042 -:108360000F900F900F90DF91CF911F910F91FF9081 -:10837000EF90DF90CF90BF90AF9008951F920F9233 -:108380000FB60F9211240BB60F922F933F934F937A -:108390005F936F937F938F939F93AF93BF93EF936D -:1083A000FF9389B18095982F907184FF03C091113C -:1083B0000E94174EFF91EF91BF91AF919F918F91C6 -:1083C0007F916F915F914F913F912F910F900BBED5 -:1083D0000F900FBE0F901F901895CF93DF93C09111 -:1083E000AE12D091AF122097B9F081E08093B11214 -:1083F0006091C7127091C8128091C9129091CA12EF -:108400009B01AC010E942767698B7A8B8B8B9C8BBD -:108410001092AF121092AE12DF91CF9108952F9269 -:108420003F924F925F926F927F928F929F92AF9204 -:10843000BF92CF92DF92EF92FF920F931F93CF9351 -:10844000DF93CDB7DEB7CE54D1090FB6F894DEBFB7 -:108450000FBECDBF8091F50E807725968FAF259703 -:10846000882389F020E030E0A9016091C712709163 -:10847000C8128091C9129091CA120E94CE648823BA -:1084800011F40C94E04A2091C7122B8B3091C81242 -:108490003C8B4091C9124D8B5091CA125E8B8091DA -:1084A000D7128B839091D8129D83A091D912AE835D -:1084B000B091DA12BC830091C3121091C412509192 -:1084C000C5124091C6128091B6129091B712A09138 -:1084D000B812B091B9128FA398A7A9A7BAA7909183 -:1084E000B2129FAFA091B3122196AFAF2197B09176 -:1084F000B4122296BFAF2297E091B5122396EFAF48 -:1085000023978091BE129091BF12A091C012B0919A -:10851000C1128FAB98AFA9AFBAAF90914F1224960A -:108520009FAF2497A091AB12ADA7B09129122796C7 -:10853000BFAF2797E0912812E8A3F091450F269648 -:10854000FFAF26972091AE123091AF123A8B298B54 -:108550008091AC129091AD129AA389A38091BA1226 -:108560009091BB12A091BC12B091BD128BAF9CAF89 -:10857000ADAFBEAF9091CF129F8BA091D012A88FBC -:10858000B091D112B98FE091D212EA8F3090D3120C -:108590002090D412F091D512F9832091D6122A831B -:1085A0003091CB123B8F8091CC128C8F9091CD1259 -:1085B0009D8FA091CE12AE8F80912A129DA5891712 -:1085C00009F465C7E989FA89EF2B09F089C2279672 -:1085D000FFAD279728A1F21781F0A22EB12C39E226 -:1085E0003A9DC0013B9D900D1124DC01AA5BB04F68 -:1085F000BA8BA98BAB2B09F051C0C801A52FB42FA2 -:108600008093C3129093C412A093C512B093C61264 -:108610008F89988DA98DBA8D8093CF129093D012A7 -:10862000A093D112B093D2128B899C89AD89BE8957 -:108630008093C7129093C812A093C912B093CA1224 -:108640008B8D9C8DAD8DBE8D8093CB129093CC1273 -:10865000A093CD12B093CE128B819D81AE81BC814F -:108660008093D7129093D812A093D912B093DA12B4 -:10867000832D922DA981BA818093D3129093D41225 -:10868000A093D512B093D6122496BFAD2497B09381 -:108690004F121092AF121092AE124BC78091B112CE -:1086A000882319F01092B112BFC08091B0128F5F71 -:1086B000853019F08093B01202C01092B0128091F0 -:1086C000B01251E1589FC0011124DC01A05BBD4EE6 -:1086D000BAA3A9A3B9E2BA9D9001BB9D300D1124A4 -:1086E000F901EA5BF04F7F018081A9A1BAA18C93C7 -:1086F00081819281A381B48123E0880F991FAA1FF1 -:10870000BB1F2A95D1F7E9A1FAA181839283A383A4 -:10871000B483F70185819681A781B08533E0880F06 -:10872000991FAA1FBB1F3A95D1F7E9A1FAA185832A -:108730009683A783B087F70181859285A385B48549 -:1087400043E0880F991FAA1FBB1F4A95D1F7E9A1E3 -:10875000FAA181879287A387B487D7011D966D916F -:108760007D918D919C9150978B019C0153E0000F5E -:10877000111F221F331F5A95D1F7058716872787A8 -:10878000308B0E946E656FAF21967FAF2197229646 -:108790008FAF229723969FAF2397D70195962D9160 -:1087A0003D914D915C9198970E94D5646FA378A7F5 -:1087B00089A79AA79B01AC0160E070E080EA9FE383 -:1087C0000E94D5646BAF7CAF8DAF9EAF2596BFADD9 -:1087D0002597BB23C1F02F89388D498D5A8D6F891C -:1087E000788D898D9A8D0E942767F701618B728B36 -:1087F000838B948BFF89FB8B288D2C8B398D3D8B44 -:108800004A8D4E8B0DC0D70151966D917D918D9102 -:108810009C9154970E94B4676B8B7C8B8D8B9E8B45 -:108820001FAA18AE19AE1AAEB9E2BA9D9001BB9D4F -:10883000300D1124F901EA5BF04F4F01C1A0D2A025 -:10884000E3A0F4A0A701960160E070E080E09FE360 -:108850000E94D56469877A878B879C872596FFADB0 -:108860002597FF23E9F122E02093C212D4019596C7 -:108870004D905D906D907C90989751968D909D90C5 -:10888000AD90BC905497A50194010E9427679B016D -:10889000AC01C301B2010E94F4638B0189879D87FB -:1088A00020E030E0A9010E94CE6487FF1EC1A7012D -:1088B0009601C701B6010E94F563A30192010E94CF -:1088C00027679B01AC01C501B4010E94F4630E94BB -:1088D000B4676F8B788F898F9A8F3F82288618C1F3 -:1088E0001092C212F401F5A1FF83D4019696BC91B7 -:1088F000B887F40107A110A5E8A1EF5FE23109F400 -:10890000E0E02796FFAD2797EF1789F029E22E9F29 -:10891000F0011124EA5BF04F61897289838994899F -:108920000E94B4676F8B788F898F9A8F04C01F8ADB -:10893000188E198E1A8E2F89388D498D5A8D6F8910 -:10894000788D898D9A8D0E9427672B013C0149E221 -:108950004A9D90014B9D300D1124C9018A5B904FB7 -:108960005C01DC0151962D913D914D915C915497A4 -:108970002D873E874F87588BA30192016D857E8599 -:108980008F8598890E94F4639B01AC0169857A8583 -:108990008B859C850E9427679B01AC016F81788540 -:1089A000C8010E94F56320E030E040E05FE30E94F0 -:1089B0002767362E272E89839A8320E030E0A9018D -:1089C0000E94EC6618160CF097C02F813885A8011C -:1089D000632D722D89819A810E94CE6487FF72C0B7 -:1089E000F501858C968CA78CB0A0A3019201C501DE -:1089F000B4010E94F4639B01AC0169857A858B8583 -:108A00009C850E9427676B837D838E839C83232DA7 -:108A1000322D49815A810E94CE6487FF34C0C5013E -:108A2000B4010E94B4676B8F7C8F8D8F9E8FA501E0 -:108A300094016D857E858F8598890E94CE64811111 -:108A400006C0F1E0F093C21209831A8361C02D853C -:108A50003E854F855889C501B4010E94F4639B018E -:108A6000AC0169857A858B859C850E9427679B016F -:108A7000AC016F817885C8010E94F4636F837887A9 -:108A800089839A8345C0A7019601C701B6010E9458 -:108A9000F563232D322D49815A810E942767A30156 -:108AA00092010E94F5630E94B4676B8F7C8F8D8F5B -:108AB0009E8F3F8228863B822D8229812E833A8198 -:108AC0003C8326C042E04093C21209831A835B892B -:108AD0005B8F8C898C8F9D899D8FAE89AE8F18C0DE -:108AE0003F82288659874D8717C03F8228861F8A74 -:108AF000188E198E1A8E10C0BF89BB8FE88DEC8F2F -:108B0000F98DFD8F2A8D2E8F1F82188619821A8269 -:108B100000E010E019861D8624965FAD2497452F4E -:108B200050E05CA74BA786E0849FF001859FF00D85 -:108B30001124E55DFD4E8091B0128283A989BA8926 -:108B40009596BC91BAABE989FA89F6A1FBABA989E4 -:108B5000BA899796BC912896BFAF2897E989FA8978 -:108B6000F0A52996FFAF29972BAD3CAD4DAD5EAD7D -:108B70006AA97BA98B2F9F2F0E94F4636EA77FA702 -:108B800088AB99AB20E030E0A9010E94CE6487FF5A -:108B900004C01EA61FA618AA19AA2091C2122F8FC0 -:108BA0002AA83BA92F963FAF2F9728964FAD28971D -:108BB0002E964FAF2E9729963FAC29978EE3C82E5D -:108BC00083ECD82E8EE2E82E89E3F82E412C512C2E -:108BD0003201CBA2DCA2EDA2FEA29F8D992321F04F -:108BE000913009F496C0D6C0A989BA8991962D9181 -:108BF0003D914D915C919497C701B6010E94276702 -:108C00004B015C0120E030E040E05FE30E94276719 -:108C10009B01AC016B897C898D899E890E94F563DB -:108C20009B01AC01C701B6010E9427679B01AC0103 -:108C3000622D2F967FAD2F972E968FAD2E97932D69 -:108C40000E94F463262E2F967FAF2F972E968FAF1C -:108C50002E97392E2F81388549815A810E94CE6402 -:108C600087FF4AC02F81388549815A816AA97BA92B -:108C700028968FAD289729969FAD29970E94F46377 -:108C80009B01AC010E94F5636B017C012B8D3C8D37 -:108C90004D8D5E8D6B897C898D899E890E94F563DF -:108CA0009B01AC01C701B6010E94D5646B017C0138 -:108CB0002B813D814E815C816F81788589819A818C -:108CC0000E94CE64811103C0B2E0BF8F02C0E1E018 -:108CD000EF8FFB8DFB8B2C8D2C8B3D8D3D8B4E8D2B -:108CE0004E8B2F8058852F965FAF2F9789812E96B8 -:108CF0008FAF2E973A80F0C0A50194016B897C89D3 -:108D00008D899E890E94F5636B8B7C8B8D8B9E8BEE -:108D1000E3C0A70196016B8D7C8D8D8D9E8D0E9489 -:108D200027679B01AC01622D2F967FAD2F972E9662 -:108D30008FAD2E97932D0E94F4634B015C012B8124 -:108D40003D814E815C810E94CE6487FFBDC02B8136 -:108D50003D814E815C81622D2F967FAD2F972E969F -:108D60008FAD2E97932D0E94F4632B8D3C8D4D8DEE -:108D70005E8D0E94D5646B017C012B809D812F96B6 -:108D80009FAF2F97AE812E96AFAF2E973C80B2E06B -:108D9000BF8FA2C0E989FA8921A132A143A154A1C0 -:108DA000C701B6010E9427674B015C019B01AC0122 -:108DB0006B897C898D899E890E94EC6618160CF05F -:108DC00054C020E030E040E05FE3C501B4010E9400 -:108DD00027679B01AC016B897C898D899E890E94E4 -:108DE000F4639B01AC01C701B6010E9427679B0198 -:108DF000AC01622D2F967FAD2F972E968FAD2E97BB -:108E0000932D0E94F4632A966FAF2A972B967FAF1B -:108E10002B972C968FAF2C972D969FAF2D9798015F -:108E200049855D850E94EC661816FCF4A501940145 -:108E30006B897C898D899E890E94F4636B8B7C8B06 -:108E40008D8B9E8B2A962FAC2A972B96FFAD2B9756 -:108E50002F96FFAF2F972C962FAD2C972E962FAFD6 -:108E60002E972D963FAC2D9737C0980149855D858B -:108E7000622D2F967FAD2F972E968FAD2E97932D27 -:108E80000E94F4639B01AC010E94F5636B017C01BD -:108E90002F89388D498D5A8D6B897C898D899E8962 -:108EA0000E94F5639B01AC01C701B6010E94D56425 -:108EB0006B017C01202E2F961FAF2F9739852E96A0 -:108EC0003FAF2E973D8408C0282C2F969FAE2F973A -:108ED0002E96AFAE2E973B2CA7019601C301B2018F -:108EE0000E94F5632B013C012BA13CA14DA15EA189 -:108EF0000E94CE6487FF07C0A30192016BA17CA1F1 -:108F00008DA19EA163C02EA53FA548A959A9622D98 -:108F10002F967FAD2F972E968FAD2E97932D0E9473 -:108F2000EC6618160CF442C04F8D4093C212222DED -:108F30002F963FAD2F972E964FAD2E97532D6FA1A5 -:108F400078A589A59AA50E9427676F8F7BA38EA716 -:108F50009AAB0E94BB646B017C016FAD21967FAD23 -:108F6000219722968FAD229723969FAD23970E943B -:108F7000BB644B015C01A70196010E94F4630E944F -:108F800042656BAB7CAB8DAB9EABA6E08BA59CA585 -:108F9000A89FF001A99FF00D1124E55DFD4E2BA9BE -:108FA0003CA931832083232B49F1B5C02EE333EC58 -:108FB0004EE259E36BA17CA18DA19EA10E94F563B5 -:108FC0006BA37CA38DA39EA3A30192010E94F463D3 -:108FD0006B017C01980149855D85622D2F967FADDF -:108FE0002F972E968FAD2E97932D0E94EC66181614 -:108FF0000CF4F3CD5F8D5093C21299CF25968FADAF -:109000002597882309F487C0C801A985BD85809369 -:10901000C3129093C412A093C512B093C6128F8945 -:10902000988DA98DBA8D8093CF129093D012A09372 -:10903000D112B093D2128B8D9C8DAD8DBE8D80934D -:10904000CB129093CC12A093CD12B093CE128B8101 -:109050009D81AE81BC818093D7129093D812A0934A -:10906000D912B093DA128F819885A981BA81809341 -:10907000D3129093D412A093D512B093D612249603 -:109080009FAD249790934F12A989BA89B093AF12DC -:10909000A093AE122BAD3CAD4DAD5EAD2093BA1298 -:1090A0003093BB124093BC125093BD1238A1309341 -:1090B000281249A15AA15093AD124093AC128FA12E -:1090C00098A5A9A5BAA58093B6129093B712A093BC -:1090D000B812B093B9129DA59093AB121092C7121B -:1090E0001092C8121092C9121092CA121092BE1297 -:1090F0001092BF121092C0121092C112C092B212FE -:10910000D092B312E092B412F092B5122FA138A50A -:1091100049A55AA56FC12FA938AD49AD5AADC301B4 -:10912000B2010E94F5632B013C012F8D3BA14EA59E -:109130005AA9C501B4010E94F4639B01AC01C301AB -:10914000B2010E94D5644B015C012F8D3BA14EA55D -:109150005AA9C701B6010E94F463A50194010E94B7 -:1091600027676FAB78AF89AF9AAF20EC31EE44E65A -:109170005EE4C501B4010E9427670E94BB640E949F -:109180004265603DB7E07B078105910560F446E0EC -:109190002BA53CA5429FF001439FF00D1124E55DF6 -:1091A000FD4E158253C0603A5FE075078105910559 -:1091B00060F426E0ABA5BCA52A9FF0012B9FF00D23 -:1091C0001124E55DFD4E31E011C060344FE17407BC -:1091D0008105910568F426E0ABA5BCA52A9FF001A6 -:1091E0002B9FF00D1124E55DFD4E32E035830CC060 -:1091F000A6E04BA55CA5A49FF001A59FF00D11244E -:10920000E55DFD4EB3E0B58346E02BA53CA5429F4E -:10921000F001439FF00D1124E55DFD4E2581022EE6 -:1092200004C096958795779567950A94D2F7ABA970 -:10923000BCA902C0AA0FBB1F2A95E2F7B183A08385 -:1092400061157105B1E08B07910568F446E02BA527 -:109250003CA5429FF001439FF00D1124E55DFD4EBA -:109260007483638304C08FEF9FEF94838383BDA4D3 -:10927000B39496E0B91201C0B12C980149855D857F -:10928000622D2F967FAD2F972E968FAD2E97932D13 -:109290000E94EC661816ECF4822D2F969FAD2F9746 -:1092A0002E96AFAD2E97B32DE989FA8985A396A3A3 -:1092B000A7A3B0A7FF8DFFAF2BA121962FAF2197BA -:1092C0003EA522963FAF22974AA923964FAF2397F8 -:1092D000D4C020E030E0A901622D2F967FAD2F97FA -:1092E0002E968FAD2E97932D0E94EC6618160CF0DB -:1092F000ADC0C801A985BD858093C3129093C412E7 -:10930000A093C512B093C6128F89988DA98DBA8D7E -:109310008093CF129093D012A093D112B093D21217 -:109320008B8D9C8DAD8DBE8D8093CB129093CC1286 -:10933000A093CD12B093CE128B819D81AE81BC8162 -:109340008093D7129093D812A093D912B093DA12C7 -:109350008F819885A981BA818093D3129093D4127A -:10936000A093D512B093D6125DA550934F12898960 -:109370009A899093AF128093AE122BAD3CAD4DAD58 -:109380005EAD2093BA123093BB124093BC1250933F -:10939000BD1238A13093281249A15AA15093AD12A1 -:1093A0004093AC128FA198A5A9A5BAA58093B61237 -:1093B0009093B712A093B812B093B912B092AB12B7 -:1093C0001092C7121092C8121092C9121092CA12AB -:1093D0001092BE121092BF121092C0121092C112BF -:1093E000C092B212D092B312E092B412F092B512BF -:1093F0009C01AD01C701B6010E94D564A989BA8953 -:1094000095966D937D938D939C9398970E94ED41D3 -:10941000809128128093450FC25BDF4F0FB6F894FE -:10942000DEBF0FBECDBFDF91CF911F910F91FF9097 -:10943000EF90DF90CF90BF90AF909F908F907F90F4 -:109440006F905F904F903F902F9099C12796BFAD3E -:109450002797E8A1BE1779F08E2F8F5F823109F42C -:1094600080E0F8A126962FAD2697F21303C026962A -:109470008FAF269788A31A8A198A59854D853F8010 -:1094800028843DA524963FAF2497BDA695C8C80162 -:10949000A52FB42F8093C3129093C412A093C5122A -:1094A000B093C6128F89988DA98DBA8D8093CF12F3 -:1094B0009093D012A093D112B093D2128B899C8931 -:1094C000AD89BE898093C7129093C812A093C91228 -:1094D000B093CA128B8D9C8DAD8DBE8D8093CB12B7 -:1094E0009093CC12A093CD12B093CE128B819D811C -:1094F000AE81BC818093D7129093D812A093D912D9 -:10950000B093DA12832D922DA981BA818093D31260 -:109510009093D412A093D512B093D6122496AFADE7 -:109520002497A0934F12E989FA89F093AF12E09340 -:10953000AE122BAD3CAD4DAD5EAD2093BA12309363 -:10954000BB124093BC125093BD1238A13093281225 -:1095500049A15AA15093AD124093AC128FAD219600 -:109560009FAD21972296AFAD22972396BFAD23974B -:109570008093B2129093B312A093B412B093B51229 -:109580008FA198A5A9A5BAA58093B6129093B712FA -:10959000A093B812B093B9122FA938AD49AD5AAD06 -:1095A0002093BE123093BF124093C0125093C11249 -:1095B0003DA53093AB1226964FAD26974093450FAD -:1095C000C25BDF4F0FB6F894DEBF0FBECDBFDF9199 -:1095D000CF911F910F91FF90EF90DF90CF90BF90B0 -:1095E000AF909F908F907F906F905F904F903F9043 -:1095F0002F90089560919D0E462F90E080919E0ED1 -:10960000282F60FD91E0817041FD926021FD826014 -:1096100042FD946022FD84609093200F80931F0F81 -:109620000895CF93DF930E94E8248BE2E0EBF2E110 -:10963000DF011D928A95E9F783E2E2E2FFE0DF01B4 -:109640001D928A95E9F71092AF121092AE12109205 -:109650002A1210924F1281E08093AB121092210FC8 -:10966000C9DF81B39091200F9170C92FB0E0DB2F3B -:1096700096E0CC0FDD1F9A95E1F78F7BC82BC1BB1D -:10968000EBE0F1E090818091200F8270880F880FCD -:10969000977F892B808381B39091200F92FB99272C -:1096A00090F98E7F892B81BB80911F0F80FD8F9A4F -:1096B00080FF8F98808190911F0F92708D7F892BF2 -:1096C000808321B390911F0F9470892F90E095951E -:1096D0008795922F9D7F892B81BBDF91CF91089534 -:1096E0001F920F920FB60F9211240BB60F922F9369 -:1096F0003F938F939F93EF93FF9321B33091200F6C -:10970000832F817090E036E0880F991F3A95E1F73A -:10971000922F9F7B892B81BBEBE0F1E090818091C0 -:10972000200F8270880F880F977F892B808381B3E9 -:109730009091200F92FB992790F98E7F892B81BB06 -:1097400015BCFF91EF919F918F913F912F910F90B9 -:109750000BBE0F900FBE0F901F9018958CE1ECE39D -:10976000FDE0DF011D928A95E9F710922812109210 -:10977000291281E080933B0D1092450F08952F929E -:109780003F924F925F926F927F928F929F92AF9291 -:10979000BF92CF92DF92EF92FF920F931F93CF93DE -:1097A000DF93C0912912C11101C0C2E1C150D09113 -:1097B000450FCD1709F41BC1EC2EF12C29E2C29FF5 -:1097C000800111240A5B104FF801A588B688C7886C -:1097D000D08C61A172A183A194A19B01AC010E94D4 -:1097E000F563F80125A136A147A150A50E9427677E -:1097F0004B018C019B01AC01B501C6010E94CE64F6 -:1098000087FD02C05401680189E28E9DF0018F9DA1 -:10981000F00D1124EA5BF04FC501D601818B928BCC -:10982000A38BB48BC11101C0C2E1C150CD1761F04F -:1098300029E22E9DC0012F9D900D11249C012A5BD1 -:10984000304F7901D9E233C080912812D8135EC01D -:109850000E94ED415BC0AC2EB12CDA9DC001DB9DB6 -:10986000900D1124FC01EA5BF04F6F01C11101C0A2 -:10987000C2E1C15080912812C81302C00E94ED417C -:10988000DA9D8001DB9D100D11240A5B104FF80159 -:1098900085889688A788B08CA50194016189728912 -:1098A000838994890E94CE64811106C076018091DB -:1098B000450FC813D0CF2AC0F80161A172A183A1BE -:1098C00094A19B01AC010E94F563F80125A136A18A -:1098D00047A150A50E942767F70121893289438952 -:1098E00054890E94F5632B013C01A50194010E945B -:1098F000CE64F80187FF05C0418A528A638A748A60 -:10990000D5CF818A928AA38AB48AD0CFD091450FCD -:10991000F9E2DF9F800111240A5B104FC1E0CD0FF7 -:10992000C23109F4C0E02090291289E2382EC21514 -:1099300009F45BC0CC2ED12C3C9CC0013D9C900D09 -:1099400011249C012A5B304F7901F801418852882B -:1099500063887488F90181889288A388B488A501F6 -:109960009401C301B2010E94CE6487FF24C0F801B4 -:1099700061A172A183A194A19B01AC010E94F56336 -:10998000F80125A136A147A150A50E9427679B0198 -:10999000AC01C301B2010E94F5632B013C01A5019A -:1099A00094010E94CE6487FF06C0F701418A528A63 -:1099B000638A748ADC2F3C9CF0013D9CF00D1124DD -:1099C000EA5BF04F258936894789508D6189728914 -:1099D000838994890E94CE64811101C0DC2FCF5FFE -:1099E000C23109F4C0E08701A2CFD093450FDF91C7 -:1099F000CF911F910F91FF90EF90DF90CF90BF908C -:109A0000AF909F908F907F906F905F904F903F901E -:109A10002F9008956115710581059105C1F16A3096 -:109A200071058105910548F425E02A95F1F70000BC -:109A30006150710981099109EDCF64367105810585 -:109A4000910548F4E5E3EA95F1F700006A507109E1 -:109A500081099109DFCF683EF3E07F078105910519 -:109A600058F4EFE8F1E03197F1F700C000006456D8 -:109A7000710981099109CECFEFE9FFE03197F1F744 -:109A800000C00000685E734081099109C3CF08954A -:109A9000009741F0EFE9FFE03197F1F700C00000D7 -:109AA0000197F6CF08954F925F926F927F92AF9297 -:109AB000BF92CF92DF92EF92FF920F931F93CF93BB -:109AC000DF936C01FB015A01309729F08081D601A8 -:109AD000A80FB11D01C0DC019C918D019D3231F4B4 -:109AE0000E5F1F4F11969C91D1E00AC09B3219F076 -:109AF0000F5F1F4F04C00E5F1F4F11969C91D0E067 -:109B0000512C612CC0E020E030E0A901780160ED2B -:109B1000762E790E89E08715D8F06394A8E0A61513 -:109B200098F05110C150A5E0B0E00E947168DC01CE -:109B3000CB01880F991FAA1FBB1F9C01AD01270DE8 -:109B4000311D411D511D0BC0511009C0CF5F07C011 -:109B5000BEEF7B1209C0511007C0552453940F5F0C -:109B60001F4FD7019C91D2CF662009F450C07F01CE -:109B7000CA01B9010E946E652B013C0120E030E072 -:109B8000A9010E94CE64882349F1CF3F64F42AE002 -:109B900037ED43E25CE3C301B2010E9427672B016A -:109BA0003C01CE5FF2CFCF3F59F42DEC3CEC4CECB6 -:109BB0005DE3C301B2010E9427672B013C010EC087 -:109BC000CC2361F020E030E040E251E4C301B20177 -:109BD0000E9427672B013C01C150F2CFDD2351F0D9 -:109BE00077FA709477F87094F5014082518262821E -:109BF000738206C0D5014D925D926D927C9213974F -:109C00000C191D090150F701008381E001C080E0BB -:109C1000DF91CF911F910F91FF90EF90DF90CF9048 -:109C2000BF90AF907F906F905F904F90089580911C -:109C30006A0E84FD25C09FB7F89480916A0E8061FA -:109C400080936A0E9FBF0E94AE27D2D68091F50EF8 -:109C5000982F9C7021F49091F60E913089F49FB763 -:109C6000843029F4F8948091F30E806204C0F89453 -:109C70008091F30E88608093F30E9FBF0C94E824CC -:109C800008952F923F924F925F926F927F928F92A0 -:109C90009F92AF92BF92CF92DF92EF92FF920F937B -:109CA0001F93CF93DF93CDB7DEB7C755D1090FB65A -:109CB000F894DEBF0FBECDBF382E7B0121962CAFAE -:109CC0003DAF4EAF5FAF219764960FAF6497809121 -:109CD000A90E85FF4FC06B0100E010E0772473945C -:109CE000D6018D909D90AD90BD906D0120E030E04B -:109CF000A901C501B4010E94EC66181664F0F801D0 -:109D0000E459F14F24A135A146A157A1C501B401E1 -:109D10000E94CE6487FD7092F70E8091F70E882323 -:109D200019F18091F50E883061F081DF9FB7F894CA -:109D30008091F30E85608093F30E9FBF0E94322EB8 -:109D400019C09FB7F89480916A0E886080936A0E5C -:109D50009FBF0E94322E8091F40E81110BC0809122 -:109D6000F50E8111F6CFE1CF0C5F1F4F0C301105BE -:109D700009F0B6CF8091F50E823009F426C3F701C1 -:109D800080819181A281B38189AF9AAFABAFBCAF23 -:109D900084819581A681B7818DAB9EABAFABB8AF07 -:109DA00080859185A285B38589AB9AABABABBCAB03 -:109DB000AE014F5C5F4FBE016B5C7F4FCE01C99619 -:109DC0000E94D13AE9A8FAA80BA91CA92DA93EA97D -:109DD0004FA958AD69AD7AAD8BAD9CADDE015596FE -:109DE0004D01FE0171965F0118976D010E94753C4F -:109DF000ED88FE880F89188D29893A894B895C89FD -:109E00006D857E858F8598890E948D3F882309F412 -:109E1000D8C26091B00D7091B10D8091B20D90914A -:109E2000B30D0E9470652B013C016091AC0D7091E7 -:109E3000AD0D8091AE0D9091AF0D0E9470659B01AC -:109E4000AC016091A80D7091A90D8091AA0D90911F -:109E5000AB0D65962FAF659766963FAF6697679691 -:109E60004FAF679768965FAF68970E947065FE0175 -:109E7000B1964F01DE015D965D0138976F01830158 -:109E8000720165962FAD659766963FAD66976796AA -:109E90004FAD679768965FAD68970E94273C0E9418 -:109EA000C62C332021F0F1E03F1629F0C9C022244E -:109EB0002394312CC7C020E030E048EC52E42196D6 -:109EC0006CAD7DAD8EAD9FAD21970E94EC661816EE -:109ED00054F420E030E048EC52E421962CAF3DAF42 -:109EE0004EAF5FAF2197298D3A8D4B8D5C8D69AD5B -:109EF0007AAD8BAD9CAD0E94F4632B013C012D8D9E -:109F00003E8D4F8D58A16DA97EA98FA998AD0E9455 -:109F1000F4634B015C0129A13AA14BA15CA169A9A1 -:109F20007AA98BA99CA90E94F4636B017C01A3010F -:109F30009201C301B2010E9427672B013C01A501D8 -:109F40009401C501B4010E9427679B01AC01C301C4 -:109F5000B2010E94F5634B015C01A7019601C701A4 -:109F6000B6010E9427679B01AC01C501B4010E94A4 -:109F7000F5630E94B46720E030E040EF51E40E94B6 -:109F8000276721962CAD3DAD4EAD5FAD21970E9468 -:109F9000D5640E9442651B016A30710518F48AE09D -:109FA000282E312C2AE037ED43EA5CE321966CAD94 -:109FB0007DAD8EAD9FAD21970E9427672AE037EDDA -:109FC00043EA5BE30E94F56320E030E040E752E4BF -:109FD0000E94276720E030E040E752E40E942767B4 -:109FE0006B017C016093840E7093850E8093860EC6 -:109FF0009093870E6093880E7093890E80938A0EDB -:10A0000090938B0E20E030E442E955E40E94EC6628 -:10A0100087FF09C0C0928C0ED0928D0EE0928E0EFA -:10A02000F0928F0E0FC080E090E4A2E9B5E4809337 -:10A030008C0E90938D0EA0938E0EB0938F0E02C057 -:10A04000212C312CB10180E090E00E946E656B0103 -:10A050007C01298D3A8D4B8D5C8D69AD7AAD8BADD0 -:10A060009CAD0E94F463A70196010E94D5642B96D3 -:10A070006CAF7DAF8EAF9FAF2B972D8D3E8D4F8DEB -:10A0800058A16DA97EA98FA998AD0E94F463A7017C -:10A0900096010E94D5642F966CAF7DAF8EAF9FAFB7 -:10A0A0002F9729A13AA14BA15CA169A97AA98BA9F3 -:10A0B0009CA90E94F463A70196010E94D56463964F -:10A0C0006CAF7DAF8EAF9FAF639741E050E02396BA -:10A0D0005FAF4EAF239723964EAD5FAD2397241607 -:10A0E000350608F46CC12396AEADBFAD2397BD0114 -:10A0F000BB0F880B990B0E9470656B017C019B0163 -:10A10000AC012B966CAD7DAD8EAD9FAD2B970E94B3 -:10A110002767298D3A8D4B8D5C8D0E94F5632B014D -:10A120003C01A70196012F966CAD7DAD8EAD9FAD24 -:10A130002F970E9427672D8D3E8D4F8D58A10E942D -:10A14000F56327966CAF7DAF8EAF9FAF2797A701C2 -:10A15000960163966CAD7DAD8EAD9FAD63970E9409 -:10A16000276729A13AA14BA15CA10E94F563409207 -:10A17000B40D5092B50D6092B60D7092B70D279642 -:10A180002CAD3DAD4EAD5FAD27972093B80D30930C -:10A19000B90D4093BA0D5093BB0D6093BC0D7093F5 -:10A1A000BD0D8093BE0D9093BF0DAE014B5D5F4F13 -:10A1B0004A01DE0199965D01FE01BD966F017B01AA -:10A1C0008C0127962CAD3DAD4EAD5FAD2797C301F9 -:10A1D000B2010E94753CCDA0DEA0EFA0F8A489A436 -:10A1E0009AA4ABA4BCA420919C0D30919D0D4091EC -:10A1F0009E0D50919F0D6DA57EA58FA598A90E94DB -:10A20000F46320E030E040E253E40E9427670E94BC -:10A210003D65072E000C880B990B0E9470656983C1 -:10A220007A838B839C832091A00D3091A10D409166 -:10A23000A20D5091A30DC501B4010E94F46320E06A -:10A2400030E040E253E40E9427670E943D65072EFC -:10A25000000C880B990B0E9470656D837E838F8341 -:10A2600098872091A40D3091A50D4091A60D509195 -:10A27000A70DC701B6010E94F46320E030E044EB73 -:10A2800052E40E94F56320E030E040E253E40E9493 -:10A2900027670E943D65072E000C880B990B0E94D2 -:10A2A000706569877A878B879C870E94322E8091A0 -:10A2B000F40E811188C09091281280913B0D981363 -:10A2C00003C00E94DC2CF1CF89809A80AB80BC80D7 -:10A2D000C501B4010E943D656093A80D7093A90D5E -:10A2E0008093AA0D9093AB0DCD80DE80EF80F88433 -:10A2F000C701B6010E943D656093AC0D7093AD0D32 -:10A300008093AE0D9093AF0D49845A846B847C8406 -:10A31000C301B2010E943D656093B00D7093B10D11 -:10A320008093B20D9093B30D20916C0E30916D0E11 -:10A3300040916E0E50916F0EC501B4010E94D5641C -:10A3400069837A838B839C832091700E3091710E88 -:10A350004091720E5091730EC701B6010E94D564F0 -:10A360006D837E838F8398872091740E3091750E54 -:10A370004091760E5091770EC301B2010E94D564D0 -:10A3800069877A878B879C8764962FAD649721961F -:10A390004CAD5DAD6EAD7FAD2197CE0101960E94B3 -:10A3A000BA30F1E0F093C40D23962EAD3FAD239764 -:10A3B0002F5F3F4F23963FAF2EAF23978CCE80E089 -:10A3C00004C083E302C082E000C0C95ADF4F0FB669 -:10A3D000F894DEBF0FBECDBFDF91CF911F910F91DB -:10A3E000FF90EF90DF90CF90BF90AF909F908F90B5 -:10A3F0007F906F905F904F903F902F9008951F92A5 -:10A400000F920FB60F9211240BB60F922F933F931A -:10A410004F935F936F937F938F939F93AF93BF936C -:10A42000EF93FF938091F50E813069F08091F30EE8 -:10A43000811109C0FCDB9FB7F8948091F30E836013 -:10A440008093F30E9FBFFF91EF91BF91AF919F91CA -:10A450008F917F916F915F914F913F912F910F90CD -:10A460000BBE0F900FBE0F901F90189589B1807191 -:10A470009091A90E96FD02C090E18927882319F0DA -:10A4800011F087E0089580E008952F923F924F9257 -:10A490005F926F927F928F929F92AF92BF92CF9274 -:10A4A000DF92EF92FF920F931F93CF93DF93CDB77D -:10A4B000DEB76B970FB6F894DEBF0FBECDBF90919D -:10A4C000F40E9111AEC1782E90E9A92E9EE0B92E1E -:10A4D0009E01235F3F4F490100E010E0C12CD12CC9 -:10A4E0007601482F50E05B8B4A8B902F01151105A8 -:10A4F00021F0013021F084E003C081E001C082E05E -:10A50000D4018D934D01EA89FB8902C0F595E79549 -:10A510009A95E2F7E0FF17C020E030E040EC5FEBF7 -:10A52000D5016D917D918D919C910E9427671B01B2 -:10A530002C019B01AC01C701B6010E94EC66181604 -:10A5400014F0610172010F5F1F4FB4E0AB0EB11C3C -:10A550000330110551F68090AF0E9090B00EA09090 -:10A56000B10EB090B20E04E011E06624639468EF7F -:10A570007EE0CE0101960E9476418091AA0EE82FDE -:10A58000F0E0FD8BEC8BFE01319624EF3EE0398B41 -:10A59000288B3B8F2A8F20E030E060E090E01601AE -:10A5A000270157FA509457F850944A895B89022E34 -:10A5B00002C0559547950A94E2F740FF2AC06F5FA5 -:10A5C000AA8DBB8D14961D921D921D921C921797F9 -:10A5D0004C895D89022E02C0559547950A94E2F791 -:10A5E00040FF03C0112319F007C0112329F0C082D6 -:10A5F000D182E282F38204C020823182428253827D -:10A600004DE050E04C0F5D1F420F531FDA018C915B -:10A61000982B2F5F3F4F34964A8D5B8D4C5F5F4F79 -:10A620005B8F4A8F2330310509F0BFCFF92E70E0E0 -:10A6300080E090E00E946E650E94B4679B01AC01CF -:10A64000C501B4010E942767AB01BC01F092110F54 -:10A650004E8B5F8B688F798F0E94973020E04E89F8 -:10A660005F89688D798DCE0101960E94BA300E9473 -:10A670000F420E9482271123E1F0F8DEFE013D9691 -:10A6800020E030E090E06191462F4F2159F0AC017D -:10A69000022E02C0559547950A94E2F740FF02C08A -:10A6A0006095F6222F5F3F4F2330310561F7F0921E -:10A6B000110F0E940F4280916A0E8473B1F0809155 -:10A6C0006A0E807321F0B3DA0E94322EAAC01111F3 -:10A6D000A3C0CCDE8721B9F79FB7F89480916A0EAA -:10A6E0008B7F80936A0E9FBF04C08F2D877009F007 -:10A6F000C2CF0E94114B32D88091B30E9091B40E0C -:10A70000C7D91625C9F020E030E040EA50E4609156 -:10A71000B50E7091B60E8091B70E9091B80E0E9452 -:10A7200027676B017C018090AB0E9090AC0EA090DF -:10A73000AD0EB090AE0E10C0C090B50ED090B60E5B -:10A74000E090B70EF090B80E8090AF0E9090B00EE3 -:10A75000A090B10EB090B20E015009F008CFC09099 -:10A76000AA0ED12C8090B50E9090B60EA090B70E88 -:10A77000B090B80E2401350177FA709477F8709490 -:10A780008CE6E82E8EE0F82E00E010E08A899B89A6 -:10A79000002E02C0959587950A94E2F780FF2AC0A3 -:10A7A000C601002E02C0959587950A94E2F7D7015D -:10A7B00080FF10C094962D913D914D915C9197979B -:10A7C000C501B4010E94F563F70120813181428106 -:10A7D000538106C02D913D914D915C91C301B20111 -:10A7E0000E9427670E94F766E889F9896483758368 -:10A7F000868397830F5F1F4F288939892C5F3F4FCE -:10A80000398B288B34E0E30EF11C0330110509F07D -:10A81000BDCF0E94973005C080916A0E82FF5CCF49 -:10A8200052CF6B960FB6F894DEBF0FBECDBFDF914F -:10A83000CF911F910F91FF90EF90DF90CF90BF903D -:10A84000AF909F908F907F906F905F904F903F90D0 -:10A850002F900895EBE6F0E080818F7E8083E8E61C -:10A86000F0E080818E7F8083089554985C9A809177 -:10A87000A90E83FF0BC080916B00806180936B00F9 -:10A88000809168008160809368000895E3CF68EF4D -:10A890007EE082E49EE00C947641F894F999FECF34 -:10A8A00092BD81BD81E08FBB80B58627482F082EE1 -:10A8B000000C550B262F30E024233523232B39F0B1 -:10A8C0006F3F19F060BD84E006C084E104C08823B6 -:10A8D00021F060BD84E28FBBF99A789408958F923D -:10A8E0009F92AF92BF92CF92DF92EF92FF920F931F -:10A8F0001F93CF937C014A016B01C40ED51E8B01BF -:10A90000C0E05C01A61AB70AC8018A0D9B1D0C1590 -:10A910001D0591F0C11108C02C2FCC0F330B232F34 -:10A92000221F2227221F01C021E0F80161918F011F -:10A93000C22FC60FB2DFE8CF6C2FC701880D991D5B -:10A94000CF911F910F91FF90EF90DF90CF90BF902C -:10A95000AF909F908F90A1CFF999FECF92BD81BD0E -:10A9600081E08FBB80B508958F929F92AF92BF9286 -:10A97000CF92DF92EF92FF920F931F93CF934B01F1 -:10A980007A016C01C40ED51E8C01C0E05B01A81ACF -:10A99000B90AC501800F911F0C151D0591F0DCDF70 -:10A9A000C11108C02C2FCC0F330B232F221F2227BD -:10A9B000221F01C021E0C22FC80FF80181938F012F -:10A9C000E8CFC4018E0D9F1DC7DF21E030E0C8171E -:10A9D00011F020E030E0C901CF911F910F91FF905D -:10A9E000EF90DF90CF90BF90AF909F908F900895A1 -:10A9F0005C980895CF93DF93CDB7DEB7CC56D109DD -:10AA00000FB6F894DEBF0FBECDBF8091C00082604C -:10AA10008093C0001092C50080E18093C4008091B3 -:10AA2000C10080618093C1008091C10088608093E3 -:10AA3000C1008091C10080688093C1000E94C62C33 -:10AA4000869A879A829A80910A01886080930A0187 -:10AA500080910A01826080930A01809107018160E0 -:10AA600080930701809A819A579A809107018061AB -:10AA7000809307018091070188608093070180918E -:10AA800007018460809307018091080180618093B1 -:10AA90000801809108018860809308018091080175 -:10AAA0008B7F809308018091A90E82FF08C08A9A4B -:10AAB000809108018160809308015F9A07C08A989D -:10AAC000809108018E7F809308015F9880918100BA -:10AAD0008F7E8093810080918100886080938100C7 -:10AAE000809180008C7F80938000809180008F70A7 -:10AAF0008093800080916E00887F80936E0014BCEC -:10AB000015BC80916E00816080936E0054985C9AB1 -:10AB100080916D00806180936D00809168008460F9 -:10AB2000809368008AE090E00E94484D0E945D3763 -:10AB3000399A3B9A419A439A8091010184608093AB -:10AB400001018091010180688093010180910201DF -:10AB500084608093020180910201806880930201E9 -:10AB6000559A569A5D9A5E9A0E94294080E090E03C -:10AB70000E948D4060939C0D70939D0D80939E0D5F -:10AB800090939F0D81E090E00E948D406093A00D16 -:10AB90007093A10D8093A20D9093A30D82E090E09D -:10ABA0000E948D406093A40D7093A50D8093A60D17 -:10ABB0009093A70D0E94A43820E030E04AE754E4C7 -:10ABC00064E071E080E090E00E94383884E893E02F -:10ABD000C3DE8093920D85E893E0BEDE8093930DF3 -:10ABE00008E913E078012FEFE21AF20AC801B4DE97 -:10ABF000F801E450F64F808387013CE9E31633E027 -:10AC0000F30681F70EE813E078018FEFE81AF80AEF -:10AC1000C801A2DEF801E65FF54F8083870192E963 -:10AC2000E91693E0F90681F70E94D7360E94D436E0 -:10AC30000E94C33620E030E044EB52E46091A40D62 -:10AC40007091A50D8091A60D9091A70D0E94F463BF -:10AC50007B018C012091A00D3091A10D4091A20D9E -:10AC60005091A30D60919C0D70919D0D80919E0D52 -:10AC700090919F0DECEB8E2EEDE09E2EF8EBAF2E1B -:10AC8000FDE0BF2EA4EBCA2EADE0DA2E0E942B3ED3 -:10AC90008091F80E9091F90EA091FA0EB091FB0EF2 -:10ACA0008093A80D9093A90DA093AA0DB093AB0D1E -:10ACB0008091FC0E9091FD0EA091FE0EB091FF0EC2 -:10ACC0008093AC0D9093AD0DA093AE0DB093AF0DEE -:10ACD0008091000F9091010FA091020FB091030F8E -:10ACE0008093B00D9093B10DA093B20DB093B30DBE -:10ACF00080917A00816880937A009B98A39A8FE074 -:10AD00008093C00D8BE493E00E948C308EE1E4EFE1 -:10AD1000FEE0DF011D928A95E9F781E08093F40E51 -:10AD200078949091A90E94FD8093F50EFE01FD9606 -:10AD3000A196FFAFEEAFA1971E01F5E12F0E311CDA -:10AD40009E012F5F3F4FA3963FAF2EAFA3978091F9 -:10AD5000B80C8093B70C8FE3EBE2FEE0DF011D92AD -:10AD60008A95E9F76EE47EE080E00E942429811153 -:10AD700003C087E00E94F82A0C9A549A549A0E94C1 -:10AD8000AE27549A35DE71DD54985C9A0E94AE4B22 -:10AD90000E94114B0E9497307ADD1092F40E1092AF -:10ADA0006A0E1092F30E1092F60E1092F70E80EECD -:10ADB00092E00E94242E8091F50E8130C9F485E93D -:10ADC00099E00E94242E8FE699E00E94242E82E2D0 -:10ADD00099E00E94242EA4961FAEA497A5961FAEBC -:10ADE000A597FE01B9966F96FFAFEEAF6F971EC0A5 -:10ADF0001092F50EF0CFE92FF0E0E95CF34F80817F -:10AE00009F5F903809F490E09093B70C8F3F09F45E -:10AE100018C48A3091F08D3081F0A596BFADA5970A -:10AE2000BB2309F4D5C3893209F4CCC39091B70C84 -:10AE30008091B80C8913DFCF04C404ED1DE0A49603 -:10AE40002FADA497E22FF0E0EC52F24F10820E9457 -:10AE5000322E8091F40E8111AEC38AE0D1011D9291 -:10AE60008A95E9F78091D40D843209F017C381E007 -:10AE70008DAF8091D50D833481F034F4882351F067 -:10AE8000843209F010C109C0873439F0883509F0DF -:10AE90000AC103C084EB93E0F4C19091D60D9111E7 -:10AEA000EFC2833409F4CEC01CF4843239F0EEC210 -:10AEB000873461F0883509F4E2C0E8C28091F50E6C -:10AEC000887109F0DFC20E94992BE0C282EB93E007 -:10AED0000E94242E80912B0E823091F038F488232A -:10AEE00061F08130A9F48CEA93E00CC0833069F002 -:10AEF000883071F482EA93E005C08FEA93E002C0E3 -:10AF000089EA93E00E94242E0CC086EA93E0FACFEF -:10AF10008DE993E00E94242E80912B0E82500E9496 -:10AF2000162E8AE993E00E94242E8091310E8A5CCD -:10AF30000E94162E80912F0E813049F028F0823029 -:10AF400051F48BE893E005C085E993E002C080E905 -:10AF500093E00E94242E80912D0E811103C086E87B -:10AF600093E002C081E893E00E94242E80912E0E8F -:10AF7000811103C08CE793E002C087E793E00E9451 -:10AF8000242E80912C0E813019F482E793E002C0C8 -:10AF90008DE693E00E94242E8091320E813049F09C -:10AFA00028F0823051F481E693E005C089E693E011 -:10AFB00002C085E693E00E94242E8091340E8130F9 -:10AFC00031F040F0823051F489E593E005C08DE521 -:10AFD00093E002C085E593E00E94242E8091330E19 -:10AFE000882329F0823039F48DE493E002C081E5B2 -:10AFF00093E00E94242E8AE493E00E94242E809104 -:10B000003D0E0E94162E87E493E00E94242E60914C -:10B01000390E70913A0E80913B0E90913C0E0E9439 -:10B02000FA2D84E493E00E94242E6091350E7091F5 -:10B03000360E8091370E9091380E0E94FA2D80E4E2 -:10B0400093E01FC18091F50E823049F40E94174EA3 -:10B0500085E999E00E94242E8CE499E00BC08111CF -:10B0600011C282E08093F50E85E999E00E94242EBA -:10B0700085E599E00E94242E82E299E002C1809148 -:10B08000F50E813009F002C285E999E00E94242E74 -:10B090008DE599E00E94242E82E299E00E94242E00 -:10B0A0001092F50EF3C19091F50E923008F0EAC1BE -:10B0B000893409F4C4C034F4833259F0883409F473 -:10B0C00080C064C18E3409F435C1823509F4F8C0FA -:10B0D0005DC182E08DAF8091D60D8111D1C110E0AC -:10B0E000BE016F5F7F4F812F0E942429811104C010 -:10B0F00087E00E94F82ACAC18DE393E00E94242EC3 -:10B10000163029F0173041F487E393E002C08AE358 -:10B1100093E00E94242E04C086E3810F0E94162E25 -:10B1200085E393E00E94242EFE0131967F0100E02A -:10B13000D7016D917D918D919D917D010E94082E89 -:10B14000023019F083E393E002C08FE293E00E94A3 -:10B15000242E0F5F033061F71F5F183009F689E274 -:10B1600093E00E94242E2AE5E22E2EE0F22E10E03B -:10B17000F70161917191819191917F010E94082E57 -:10B18000123019F087E293E002C083E293E00E945C -:10B19000242E1F5F133061F78DE193E00E94242E6F -:10B1A0006091660E7091670E8091680E9091690EA5 -:10B1B0000E94082E89E193E00E94242E0E94522BC7 -:10B1C00065C18091A90E84FF59C184E08093F50E7A -:10B1D00041DB84E05AD983E058D90E94322E809115 -:10B1E000F40E811102C053DB40DB8091F40E81111B -:10B1F0004DC11092F50E0E94E82410E0812F0E94AC -:10B200008535811102C087E013C08091D40D882359 -:10B2100089F084ED9DE00E948C3084ED9DE00E94D9 -:10B22000EE04811105C080E898E00E94242E02C03F -:10B230000E94F82A113009F429C111E0DFCF82E021 -:10B240008DAF8091D60D81111FC040E550E06EEAB0 -:10B250007BE084ED9DE088DB892B49F41092D40DCE -:10B2600040E550E064ED7DE08EEA9BE038DB89E06C -:10B2700093E00E94242E84ED9DE00E948C3085E0B6 -:10B2800093E00E94242E02C193E09DAF8D3309F01C -:10B29000F7C083E0282F30E0F901EC52F24F9081A3 -:10B2A000D901AF52B24F9C938F5F90819111F2CF31 -:10B2B0008DAF40E550E064ED7DE08EEA9BE0ACC0F0 -:10B2C00082E08DAF8091D60D833509F0D9C083E03F -:10B2D0008DAF8091D70D843509F0D2C084E08DAF59 -:10B2E0008091D80D8D3309F0CBC08091DA0D81119A -:10B2F000C7C085E08DAF8091D90D843239F08A3294 -:10B3000039F0833209F0BCC082E003C081E001C0A3 -:10B310008FEF0E94442985E999E00E94242E86E25D -:10B3200099E00E94242E82E299E00E94242E0E943D -:10B33000174EACC082E08DAF8091D60D811122C036 -:10B3400010E0812F0E948535811104C087E00E94A2 -:10B35000F82A13C082E093E00E94242E812F0E94DD -:10B36000162E80E093E00E94242E84ED9DE00E9442 -:10B370008C308DEF92E00E94242E113009F486C0AB -:10B3800011E0DFCF91117EC011E001C010E0AE01ED -:10B39000475D5F4FBE01635C7F4F84ED9DE00E947F -:10B3A000534D811102C082E076C0EDAD81E08E0F79 -:10B3B0008DAFF0E0EC52F24F90819D3309F060C008 -:10B3C000112361F1482F50E0282F30E0D901AC5211 -:10B3D000B24F9C91241B350BF901EC52F24F908334 -:10B3E0008F5F9C919111F0CF8DAF84ED9DE00E9415 -:10B3F000EE04811149C069A57AA58BA59CA50E9480 -:10B40000F5670E944265F1E56F9FC001112440E598 -:10B4100050E064ED7DE0955F62DA38C0AE014F5FC9 -:10B420005F4FBE01635C7F4F84ED9DE00E94534DF2 -:10B43000882309F4B8CFEDADF0E0EC52F24F8081F3 -:10B4400081111EC0C9A4DAA4EBA4FCA420E030E062 -:10B450004FE753E4C701B6010E94EC66181684F06A -:10B4600089809A80AB80BC80C701B6010E9442658A -:10B47000862FB501A4010E94182806C085E00BC0E4 -:10B4800083E009C088E007C0811105C080E898E02A -:10B490000E94242E90C00E94F82A8DC08332D1F4DD -:10B4A0003F922F928FE493E09F938F931F930F937C -:10B4B0000E94BC68F10101900020E9F7BF01621908 -:10B4C00073096C52724F0F900F900F900F900F9066 -:10B4D0000F9009C0873429F08D3419F0803509F0B8 -:10B4E0006AC064ED7DE0DB018C91803509F581ED6A -:10B4F0009BE00E9486688D89882391F03F922F926D -:10B5000087E593E09F938F9385E09CE09F938F93D3 -:10B510000E948D680F900F900F900F900F900F90DA -:10B5200082E3E4EDFDE0DF011D928A95E9F743C077 -:10B530008091D603843148F08BE593E09F938F93FD -:10B540000E94C92D0F900F9036C00091D403B6E62B -:10B550000B9F80011124C80188529C4F0E9486686D -:10B560008D89882391F03F922F9287E593E09F93F6 -:10B570008F93045F1B4F1F930F930E948D680F9052 -:10B580000F900F900F900F900F9082E3E4EDFDE08D -:10B59000DF011D928A95E9F78091D403833120F46D -:10B5A0008F5F8093D40302C01092D4038091D6039E -:10B5B0008F5F8093D603A4961FAEA497A5961FAE67 -:10B5C000A5973FC0B13071F5A5961FAEA5972ECCBB -:10B5D000813208F42BCC8F3209F428CC883239F12F -:10B5E0008B3351F1A496EFADA497EF3438F08BE094 -:10B5F0000E94F82AA4961FAEA49718CCA496FFAD7B -:10B60000A4972F2F30E04F2F4F5F9FE9980FF9013C -:10B61000EC52F24F9A3108F480528083A4964FAFD7 -:10B62000A49704CC22E0A5962FAFA597FFCB31E0DD -:10B63000A5963FAFA597FACB82E0A5968FAFA597C9 -:10B64000F5CB8091D10B882399F081ED9BE00E948E -:10B65000EE048093030C65E07CE00E94673681E095 -:10B660008093040C82E3A1EDBBE01D928A95E9F77B -:10B670008091C10D811139C08091D6038823A9F131 -:10B68000E090D50306E60E9DC0011124FC01E852AE -:10B69000FC4F7F01CF010E94EE04D701D2968C931C -:10B6A000F090D5030F9D80011124B801645F7B4F9A -:10B6B00008521C4FF80182A90E94673681E0D80128 -:10B6C000D3968C9382E3F80111928A95E9F7F2E11F -:10B6D000FF1520F0F394F092D50302C01092D50329 -:10B6E0008091D60381508093D6030E94DC2C0E9467 -:10B6F000322E8091F40E81112ACB8091040C882384 -:10B7000069F085E09CE00E948C3082E3E5E0FCE09B -:10B71000DF011D928A95E9F71092040C8091F50ED5 -:10B72000882309F4E4C08091C20D882309F412C172 -:10B730001092C20D6D961CAE1DAE1EAE1FAE6D9763 -:10B7400069961CAE1DAE1EAE1FAE699765961CAE07 -:10B750001DAE1EAE1FAE659784E1A196AEADBFAD26 -:10B76000A197E82F1D92EA95E9F76F96AEADBFADB0 -:10B770006F97E82F1D92EA95E9F7D101E82F1D9206 -:10B78000EA95E9F7A396AEADBFADA3971D928A9552 -:10B79000E9F780E090E00E948D40A9966CAF7DAF04 -:10B7A0008EAF9FAFA99781E090E00E948D40AD964B -:10B7B0006CAF7DAF8EAF9FAFAD9782E090E00E94FF -:10B7C0008D406B017C0123E333E343E35FE360914E -:10B7D00000027091010280910202909103020E9486 -:10B7E000F46320E030E040E05FE30E94276720E060 -:10B7F00030E044E353E40E9427679B01AC0160E022 -:10B8000070E084E393E4F0D72B013C0120E030E0CA -:10B8100044EB52E4C701B601E7D7FE01EF5AFF4FF0 -:10B820004F019E012B5A3F4F5901DE01A75ABF4FCE -:10B830006D017B018C01AD962CAD3DAD4EAD5FAD84 -:10B84000AD97A9966CAD7DAD8EAD9FADA9970E94C9 -:10B850002B3EA401B501C6010E947C3B6D966CADE8 -:10B860007DAD8EAD9FAD6D978E01035C1F4F24E0C3 -:10B8700045E028D569966CAD7DAD8EAD9FAD6997DD -:10B880000451110924E045E01DD565966CAD7DADF0 -:10B890008EAD9FAD6597810124E045E013D58E0103 -:10B8A0000F5F1F4F24E045E0C301B2010BD51F938A -:10B8B0000F933F922F926F96FFAD6F97FF936E9607 -:10B8C0002FAD6E972F93A1963FADA1973F93A09672 -:10B8D0008FADA0978F938DE693E09F938F930E94F7 -:10B8E000C92D0FB6F894DEBF0FBECDBF33C004E143 -:10B8F00010E086E6F82E92E3E92E8091D00BF89EB8 -:10B90000C0011124FC01E852FC4F23A9222309F4B1 -:10B910000ACF845F9B4F0E948C308091D00BF89EA1 -:10B9200090011124F901E45FFB4FDF019E2D1D9270 -:10B930009A95E9F7F901E852FC4F13AA833120F4F4 -:10B940008F5F8093D00B02C01092D00B0150110971 -:10B95000A1F6E9CE82B301E083FB882780F9802736 -:10B960009091D7038917D9F08AE090E00E94484D62 -:10B9700012B313FB112710F910278091D703181762 -:10B9800071F01F921F9381E893E09F938F930E9421 -:10B99000C92D1093D7030F900F900F900F908091A7 -:10B9A000F50E811112C08091C30D882371F0809132 -:10B9B000C40D882351F08CE893E09F938F930E94ED -:10B9C000C92D1092C40D0F900F908091F50E81112A -:10B9D0002DCA8091C00D8F3009F028CA21961CAE67 -:10B9E0001DAE1EAE1FAE219719A61AA61BA61CA639 -:10B9F0001D8A1E8A1F8A188EE090BC0DF090BD0D26 -:10BA00000091BE0D1091BF0D2091B80D3091B90D70 -:10BA10004091BA0D5091BB0D6091B40D7091B50D70 -:10BA20008091B60D9091B70D4101FE01B9965F016D -:10BA3000DE01DD966D010E94753C80E090E00E9481 -:10BA40008D404B015C0181E090E00E948D406B01D4 -:10BA50007C0182E090E00E948D402B013C01A50119 -:10BA6000940121966CAD7DAD8EAD9FAD2197BCD676 -:10BA70009F7720E030E040E05FE30E94EC6618161C -:10BA800034F1A701960169A57AA58BA59CA5ACD632 -:10BA90009F7720E030E040E05FE30E94EC661816FC -:10BAA000B4F0A30192016D897E898F89988D9CD60F -:10BAB00020E030E044EB52E498D69F7720E030E07D -:10BAC00040E05FE30E94EC6618160CF0AFC98EE10F -:10BAD000E4EFFEE0DF011D928A95E9F70E949730BE -:10BAE0000E94475480929C0D90929D0DA0929E0DB5 -:10BAF000B0929F0DC092A00DD092A10DE092A20D28 -:10BB0000F092A30D4092A40D5092A50D6092A60D47 -:10BB10007092A70D20E030E04AE754E464E071E061 -:10BB200080E090E00E9438388091F80E9091F90EF4 -:10BB3000A091FA0EB091FB0E8093A80D9093A90DE1 -:10BB4000A093AA0DB093AB0D8091FC0E9091FD0EC9 -:10BB5000A091FE0EB091FF0E8093AC0D9093AD0DB1 -:10BB6000A093AE0DB093AF0D8091000F9091010F97 -:10BB7000A091020FB091030F8093B00D9093B10D7F -:10BB8000A093B20DB093B30D8CE0A396EEADFFADD4 -:10BB9000A39711928A95E9F78091B40D9091B50D14 -:10BBA000A091B60DB091B70D89839A83AB83BC8306 -:10BBB0008091B80D9091B90DA091BA0DB091BB0DC7 -:10BBC0008D839E83AF83B8878091BC0D9091BD0D0E -:10BBD000A091BE0DB091BF0D89879A87AB87BC87B6 -:10BBE000AE01475F5F4FBE016B5F7F4FCE01019695 -:10BBF0000E947C3B00E020E030E048E452E4BE01DB -:10BC00006F5F7F4F80E00E94414E10C9CF930E942A -:10BC1000DC2CC9E20E94322E8091F40E811111C0F9 -:10BC20008091281290912912981739F0C89FC0016D -:10BC300011248A5B904F892B69F78091F50E88302B -:10BC400049F3CF910895FF920F931F93CF93DF9302 -:10BC500000D01F92CDB7DEB7322F2091F50E2230E3 -:10BC600009F492C0F02E132F042F9B01AC016983BD -:10BC70003A834B835C83CADF1092100F1092B90E87 -:10BC80008091A90E29813A814B815C8187FD03C097 -:10BC900080E18093B90E112331F09091B90E80E1CB -:10BCA00089278093B90E89B180719091B90E891757 -:10BCB00091F09FB7F8948091F30E80618093F30E1A -:10BCC0009FBF29833A834B835C830E94322E5C8121 -:10BCD0004B813A8129818091F40E811155C067EE24 -:10BCE0007EE081E00E94414E81E080936B0E9FB721 -:10BCF000F89480916A0E826080936A0E9FBF0E94C2 -:10BD0000322E8091F40E81113FC08091F50E811189 -:10BD1000F6CF80916B0E8130A9F4FF2051F08CE0BA -:10BD2000E8EFFEE0A4E0BFE001900D928A95E1F714 -:10BD30000CC09FB7F8948091F30E80618093F30E4E -:10BD40009FBF03C081E08093100F10926B0E0E9482 -:10BD5000322E8091F40E811117C00E94114B0E9467 -:10BD6000AE4B0E94973068EF7EE087EE9EE00E9427 -:10BD700076410F900F900F900F90DF91CF911F9110 -:10BD80000F91FF900C94522B0F900F900F900F90EB -:10BD9000DF91CF911F910F91FF9008952F923F92C5 -:10BDA0004F925F926F927F928F929F92AF92BF92CB -:10BDB000CF92DF92EF92FF920F931F93CF93DF9377 -:10BDC000CDB7DEB7E1970FB6F894DEBF0FBECDBF9B -:10BDD0006D837E838F8398872F87388B498B5A8B0F -:10BDE0000D8BAD868B8A24E0E29E80011124C80170 -:10BDF0008E5B914F9F8B8E8BD801A753B14FB98F1C -:10BE0000A88F8D909D90AD90BC90FC0120813181D8 -:10BE100042815381C501B401E8D46A8F7B8F8C8F36 -:10BE20009D8FF4E0CF9E1001112491012E5B314FC4 -:10BE30003F8F2E8FC1018753914F99A388A3DC01B7 -:10BE4000CD90DD90ED90FC90F9012081318142810F -:10BE50005381C701B601C9D46AA37BA38CA39DA358 -:10BE60002401350177FA709477F87094D701C601F0 -:10BE7000B05889839A83AB83BC83F801E951F14FB1 -:10BE80002A8D3B8D4C8D5D8D608171818281938186 -:10BE9000ABD44B015C01F101E951F14F2AA13BA167 -:10BEA0004CA15DA160817181828193819DD46B01E0 -:10BEB0007C01A5019401C301B201C9D769877A87C2 -:10BEC0008B879C87A701960169817A818B819C81F0 -:10BED000BED79B01AC0169857A858B859C8585D40D -:10BEE00069877A878B879C87A7019601C301B20176 -:10BEF000AED76B017C01A501940169817A818B81A8 -:10BF00009C81A5D79B01AC01C701B6016DD42985E1 -:10BF10003A854B855C85DCD46B017C019B89992338 -:10BF200089F02DEB37E346E055EBC701B60154D756 -:10BF300087FD1AC02BED3FE049EC50E4C701B60184 -:10BF400053D410C02DEB37E346E055E3C701B601EB -:10BF500025D518164CF02BED3FE049EC50E4C70115 -:10BF6000B60143D46B017C018090A50E9090A60E83 -:10BF7000A090A70EB090A80E2D813E814F815885CC -:10BF8000CA01B90132D4A50194012ED49B01AC01A0 -:10BF9000C501B4015CD7E8D74B015C0120E030E07B -:10BFA00040E05FE3C701B60152D72D813E814F814A -:10BFB00058854DD79F77A5019401F7D4CCD562D58C -:10BFC0007C8B6B8BDB01AB2B09F459C14B01A12C92 -:10BFD000B12CBD89BB2371F0C501B4017FD59B0194 -:10BFE000AC016F85788989899A8931D76F87788B79 -:10BFF000898B9A8BC501B40171D54B015C019B0102 -:10C00000AC01C701B601D1D46D837E838F8398873D -:10C01000FD85E4E0FE9FC00111249C012E5B314FA1 -:10C020003E872D87FC01E951F14FD9012D913D91BA -:10C030004D915C916081718182819381D5D3A501FD -:10C040009401B3D46EA77FA788AB99AB2D813E81B5 -:10C050004F815885CA01B901FAD69B01AC0160E055 -:10C0600070E080E090E4C0D36B017C012BEA3AEAF7 -:10C070004AE25EE36D817E818F819885E8D64B012F -:10C080005C0120E030E040E850E4C701B601ADD3E8 -:10C090009B01AC01C501B401DAD669877A878B8729 -:10C0A0009C8720E030E040E05FE3C701B601CFD6D7 -:10C0B0006EA37FA388A799A710E022242394312C94 -:10C0C000EB89FC892E163F0609F4D9C01C3008F014 -:10C0D0003AC02EA13FA148A559A569817A818B81DB -:10C0E0009C81B5D66B017C0129853A854B855C85A1 -:10C0F000C301B201ACD6A701960177D37B01082F0B -:10C10000D92E2EA13FA148A559A5C301B2019FD6A2 -:10C110004B015C0129853A854B855C8569817A8173 -:10C120008B819C8194D69B01AC01C501B4015CD389 -:10C130002B013C011F5FC701A02FBD2D89839A836E -:10C14000AB83BC835BC0B10180E090E0C7D42D819C -:10C150003E814F8158857BD66B017C0123D4698356 -:10C160007A838B839C83C701B601F4D64B015C01B3 -:10C17000E88DF98DC080D180E280F380F7FAF094E9 -:10C18000F7F8F094A8A1B9A18D919D910D90BC9163 -:10C19000A02D8AA79BA7ACA7BDA729813A814B8177 -:10C1A0005C81C701B60153D62B013C01A501940166 -:10C1B0006AA57BA58CA59DA54AD69B01AC01C301B0 -:10C1C000B20113D32B013C01A5019401C701B601B3 -:10C1D0003ED66B017C0129813A814B815C816AA545 -:10C1E0007BA58CA59DA533D69B01AC01C701B601EB -:10C1F000FBD269837A838B839C8310E0A301920135 -:10C200006A8D7B8D8C8D9D8DF0D2EE89FF89608348 -:10C2100071838283938329813A814B815C816AA1F6 -:10C220007BA18CA19DA1E1D2AE8DBF8D6D937D933D -:10C230008D939C9313972EA53FA548A959A9ED85E9 -:10C24000FE856081718182819381CFD2AD85BE856B -:10C250006D937D938D939C9313970D892F853889CA -:10C2600049895A8962E47EE081E00E94414E8091D2 -:10C27000F40E81110EC0BFEF2B1A3B0A21CF0D899E -:10C280002F85388949895A8967EE7EE081E00E94CE -:10C29000414EE1960FB6F894DEBF0FBECDBFDF91E1 -:10C2A000CF911F910F91FF90EF90DF90CF90BF90B3 -:10C2B000AF909F908F907F906F905F904F903F9046 -:10C2C0002F900895EF920F931F93CF93DF93E80180 -:10C2D00047FD02C034E001C034E1E42F440FFF0BFE -:10C2E000F7FF03C0F195E195F109E32E022F2E2F00 -:10C2F000AE0107D0CE01DF91CF911F910F91EF904A -:10C3000008954F925F926F927F929F92AF92BF92E9 -:10C31000CF92DF92EF92FF920F931F93CF93DF9311 -:10C32000CDB7DEB729970FB6F894DEBF0FBECDBFED -:10C330006A01122FB02E2BE3201720F0FF24F39474 -:10C34000F00E02C0BCE3FB2E0F2D27E0AE014F5FC5 -:10C350005F4F64D1AC018981982F9970913031F091 -:10C36000E1FC06C0E0FE06C090E205C09DE203C00D -:10C370009BE201C090E0EE2DE07183FF3CC0911183 -:10C3800002C083E001C084E0811718F4212F281B2C -:10C3900001C020E0E1110BC0F601822F30E28823BA -:10C3A00019F031938150FBCFC20ED11C20E09923AC -:10C3B00029F0D6019C93F60131966F01C6010396D0 -:10C3C000E2FE0AC03EE4D6013C9341E411964C9350 -:10C3D000119712963C9306C03EE6F601308341E683 -:10C3E00041833283FC01322F40E2332309F442C0FF -:10C3F00041933150FACF82FF44C0911102C083E0D3 -:10C4000001C084E0811718F4212F281B01C020E00F -:10C41000E1110BC0F601822F30E2882319F031932D -:10C420008150FBCFC20ED11C20E0992329F0D60108 -:10C430009C93F60131966F01C6010396E2FE0BC094 -:10C4400039E4D6013C933EE411963C93119736E4CF -:10C4500012963C9307C039E6F60130833EE63183FD -:10C4600036E63283FC01322F40E2332319F0419348 -:10C470003150FBCFFC01E20FF11D10828EEF9FEFD8 -:10C48000B7C0F1E0911101C0F0E06F2F70E0141619 -:10C49000150624F49A012F5F3F4F02C021E030E0DF -:10C4A000260F371FBB2029F06B2D70E06F5F7F4F89 -:10C4B00002C060E070E0260F371F612F70E0261782 -:10C4C00037071CF4121B212F01C020E03E2D3871CC -:10C4D00059F4D601322F60E2332319F06D933150B5 -:10C4E000FBCFC20ED11C20E0FF2331F0D6019C937C -:10C4F000B6016F5F7F4F6B01E1110BC0F601922F08 -:10C5000030E3992319F031939150FBCFC20ED11C27 -:10C5100020E09F2D940F3A81782F7071A72E84FF11 -:10C5200003C0313309F49150191624F4993018F0EE -:10C5300098E001C091E0E42F852F57FF02C0E0E0B2 -:10C5400080E06E2F782FE0E0F0E0AEE29A2E3A0124 -:10C55000691A71082A01461A570A0B2D10E0119525 -:10C56000019511096F3F8FEF780729F4D6019C924E -:10C57000C60101966C014617570784F066167706C8 -:10C580006CF47F01E40CF51CA1E0B0E0AC0FBD1F22 -:10C59000EA0EFB1ED7011196BC9002C090E3B92EA3 -:10C5A000615071093196C60101967C0160177107CF -:10C5B00024F0D601BC926C01D5CF6417750741F405 -:10C5C000363320F4353321F4A11002C081E3B82EB4 -:10C5D000F601B082F701822F90E2882319F091933F -:10C5E0008150FBCFF701E20FF11D108280E090E057 -:10C5F00029960FB6F894DEBF0FBECDBFDF91CF9165 -:10C600001F910F91FF90EF90DF90CF90BF90AF9070 -:10C610009F907F906F905F904F900895283008F022 -:10C6200027E03327DA01990F311D87FD91600096CD -:10C630006105710539F432602E5F3D9330E32A9530 -:10C64000E1F708959F3F30F080387105610509F0EA -:10C650003C5F3C5F3D93913008F08068911DDF9313 -:10C66000CF931F930F93FF92EF92192F987F969578 -:10C67000E92F96959695E90FFF27EC5CFD4F9927DA -:10C680003327EE24FF24A701E701059008940794BF -:10C6900028F4360FE71EF81E491F511D660F771F3D -:10C6A000881F991F0694A1F70590079428F4E70EB8 -:10C6B000F81E491F561FC11D770F881F991F661F3F -:10C6C0000694A1F70590079428F4F80E491F561F09 -:10C6D000C71FD11D880F991F661F771F0694A1F7EA -:10C6E0000590079420F4490F561FC71FD81F990FB4 -:10C6F000661F771F881F0694A9F7849110951770FD -:10C7000041F0D695C79557954795F794E7941A95B4 -:10C71000C1F7EAEDF1E068941590159135916591B6 -:10C72000959105907FE27395E118F10A430B560B42 -:10C73000C90BD009C0F7E10CF11E431F561FC91FDA -:10C74000D01D7EF4703311F48A95E6CFE894015041 -:10C7500030F0080F0AF40027021708F4202F239561 -:10C76000022F7A3328F079E37D932A95E9F710C0F8 -:10C770007D932A9589F60694979567953795179531 -:10C780001794E118F10A430B560BC90BD00998F026 -:10C7900023957E9173957A3308F070E37C93201390 -:10C7A000B8F77E9170617D9330F0839571E37D934E -:10C7B00070E32A95E1F71124EF90FF900F911F91FC -:10C7C000CF91DF91992787FD909508959F939F774B -:10C7D000D5D10F9000203AF49058A2EA2AED3FE01C -:10C7E00049E450E413D096C25058BB27AA270ED074 -:10C7F00091C25AD230F05FD220F031F49F3F11F451 -:10C800001EF42AC20EF4E095E7FBF7C1E92FA4D28B -:10C8100080F3BA17620773078407950718F071F45D -:10C820009EF5D3C20EF4E0950B2EBA2FA02D0B016E -:10C83000B90190010C01CA01A0011124FF27591B65 -:10C8400099F0593F50F4503E68F11A16F040A22F6B -:10C85000232F342F4427585FF3CF469537952795DC -:10C86000A795F0405395C9F77EF41F16BA0B620BDB -:10C87000730B840BBAF09150A1F0FF0FBB1F661F22 -:10C88000771F881FC2F70EC0BA0F621F731F841F65 -:10C8900048F4879577956795B795F7959E3F08F08B -:10C8A000B3CF9395880F08F09927EE0F979587954A -:10C8B0000895FAD158F080E891E009F49EEFFBD199 -:10C8C00028F040E851E059F45EEF09C0C5C17DC2CF -:10C8D000E92FE07841D268F3092E052AC1F3261723 -:10C8E00037074807590738F00E2E07F8E02569F09A -:10C8F000E025E0640AC0EF6307F8009407FADB0163 -:10C90000B9019D01DC01CA01AD01EF935DD002D2F6 -:10C910000AD05F91552331F02BED3FE049E450FD03 -:10C9200049EC63CF0895DF93DD27B92FBF7740E847 -:10C930005FE31616170648075B0710F4D92F50D28D -:10C940009F938F937F936F934DD3E6E6F1E087D16A -:10C95000E1D12F913F914F915F9185D2DD2349F035 -:10C960009058A2EA2AED3FE049EC5FE3D0785D27DA -:10C970004DDFDF91CFC112D280F09F3740F491118B -:10C980000EF424C260E070E080E89FE3089526F092 -:10C990001B16611D711D811D36C150C10AD108F4DD -:10C9A00081E0089590D1E395C6C10CD0B3C183D185 -:10C9B00040F07AD130F021F45F3F19F01EC15111DF -:10C9C00005C24AC1C9D198F39923C9F35523B1F3DC -:10C9D000951B550BBB27AA2762177307840738F0EE -:10C9E0009F5F5F4F220F331F441FAA1FA9F333D04D -:10C9F0000E2E3AF0E0E830D091505040E695001C01 -:10CA0000CAF729D0FE2F27D0660F771F881FBB1FBC -:10CA1000261737074807AB07B0E809F0BB0B802D96 -:10CA2000BF01FF2793585F4F2AF09E3F510568F0E2 -:10CA3000E4C0CCC15F3FECF3983EDCF3869577957C -:10CA40006795B795F7959F5FC9F7880F911D9695E4 -:10CA5000879597F90895E1E0660F771F881FBB1F40 -:10CA6000621773078407BA0720F0621B730B840BED -:10CA7000BA0BEE1F88F7E095089504D06894B111C1 -:10CA8000A5C1089571D188F09F5790F0B92F9927CB -:10CA9000B751A0F0D1F0660F771F881F991F1AF0C9 -:10CAA000BA95C9F712C0B13081F08FD1B1E00895C5 -:10CAB0008CC1672F782F8827B85F39F0B93FCCF346 -:10CAC000869577956795B395D9F73EF490958095BF -:10CAD000709561957F4F8F4F9F4F0895E89409C0DF -:10CAE00097FB3EF490958095709561957F4F8F4FA1 -:10CAF0009F4F9923A9F0F92F96E9BB279395F695B7 -:10CB0000879577956795B795F111F8CFFAF4BB0F34 -:10CB100011F460FF1BC06F5F7F4F8F4F9F4F16C098 -:10CB2000882311F096E911C0772321F09EE8872F22 -:10CB3000762F05C0662371F096E8862F70E060E0DE -:10CB40002AF09A95660F771F881FDAF7880F969557 -:10CB5000879597F9089522D180F09F3740F491117D -:10CB60000EF034C160E070E080E89FEB089526F499 -:10CB70001B16611D711D811D46C060C0DF93CF93E0 -:10CB80001F930F938B01EC01E3E9F1E068D0C2D071 -:10CB90009801AE018B01EC0160E070E080E89FE35A -:10CBA00023DEE2D19801AE010F911F91CF91DF9169 -:10CBB0005AC1990F0008550FAA0BE0E8FEEF1616B0 -:10CBC0001706E807F907C0F012161306E407F50781 -:10CBD00098F0621B730B840B950B39F40A2661F0F5 -:10CBE000232B242B252B21F408950A2609F4A14098 -:10CBF000A6958FEF811D811D089597F99F6780E8A5 -:10CC000070E060E00895882371F4772321F0985054 -:10CC1000872B762F07C0662311F499270DC09051FA -:10CC2000862B70E060E02AF09A95660F771F881FC8 -:10CC3000DAF7880F9695879597F908959F3F31F019 -:10CC4000915020F4879577956795B795880F911D3A -:10CC50009695879597F908959FEF80EC0895DF9357 -:10CC6000CF931F930F93FF92EF92DF927B018C0182 -:10CC7000689405C0DA2EEF01F6D0FE01E894A59184 -:10CC80002591359145915591AEF3EF01BFDDFE0140 -:10CC90009701A801DA9479F7DF90EF90FF900F9158 -:10CCA0001F91CF91DF91089500240A94161617065C -:10CCB00018060906089500240A941216130614068D -:10CCC00005060895C9CF50D0E8F3E894E0E0BB270B -:10CCD0009F57F0F02AED3FE049EC06C0EE0FBB0F86 -:10CCE000661F771F881F28F0B23A62077307840710 -:10CCF00028F0B25A620B730B840BE3959A9572F786 -:10CD0000803830F49A95BB0F661F771F881FD2F7C3 -:10CD1000904896CF092E0394000C11F4882352F00A -:10CD2000BB0F40F4BF2B11F460FF04C06F5F7F4F57 -:10CD30008F4F9F4F0895EF93E0FF06C0A2EA2AEDC0 -:10CD40003FE049EC5FEB62DDE5DF0F90039401FC0F -:10CD50009058EBEBF1E05BC157FD9058440F551F25 -:10CD600059F05F3F71F04795880F97FB991F61F06D -:10CD70009F3F79F087950895121613061406551FE4 -:10CD8000F2CF4695F1DF08C0161617061806991F50 -:10CD9000F1CF86957105610508940895E5DFA0F04F -:10CDA000BEE7B91788F4BB279F3860F41616B11D8B -:10CDB000672F782F8827985FF7CF869577956795A7 -:10CDC000B11D93959639C8F30895E894BB2766275B -:10CDD0007727CB0197F90895ECDE08F48FEF0895DB -:10CDE0009B01AC0160E070E080E89FE3DECDBCDF3A -:10CDF00058F19E5758F19851A0F0E9F0983020F57D -:10CE0000092E9927660F771F881F991F0A94D1F75B -:10CE100012C0062E672F782F8827985F11F4000C18 -:10CE200007C0993FB4F38695779567959395D9F7A1 -:10CE3000611D711D811D3EF49095809570956195E1 -:10CE40007F4F8F4F9F4F08956894C0CFBECF0BD0B8 -:10CE500061CF2ADF28F02FDF18F0952309F0CDCE1F -:10CE6000FBCE1124B3CF78DFA0F3959FD1F3950FBC -:10CE700050E0551F629FF001729FBB27F00DB11D5E -:10CE8000639FAA27F00DB11DAA1F649F6627B00DEE -:10CE9000A11D661F829F2227B00DA11D621F739FD7 -:10CEA000B00DA11D621F839FA00D611D221F749FE5 -:10CEB0003327A00D611D231F849F600D211D822F2C -:10CEC000762F6A2F11249F5750408AF0E1F0882373 -:10CED0004AF0EE0FFF1FBB1F661F771F881F915080 -:10CEE0005040A9F79E3F510570F087CE6FCF5F3F4E -:10CEF000ECF3983EDCF3869577956795B795F795B3 -:10CF0000E7959F5FC1F7FE2B880F911D969587953A -:10CF100097F9089529DFE0F09E37D8F09639B8F4F4 -:10CF20009E3848F4672F782F8827985FF9CF869529 -:10CF30007795679593959539D0F3B62FB1706B0FB0 -:10CF4000711D811D20F487957795679593955BCE2C -:10CF500075CE3CCF9F93B7DE0F9007FCEE5FEBCE14 -:10CF600011F40EF479CE6ACEFFDED0F39923D9F313 -:10CF7000CEF39F57550B87FF43D00024A0E640EA2D -:10CF8000900180585695979528F4805C660F771F1E -:10CF9000881F20F026173707480730F4621B730BF1 -:10CFA000840B202931294A2BA69517940794202514 -:10CFB00031254A2758F7660F771F881F20F026175C -:10CFC0003707480730F4620B730B840B200D311DBB -:10CFD000411DA09581F7B901842F9158880F96952E -:10CFE000879508959B01AC0132CFD8DE20F09F37A2 -:10CFF00008F4ECCE08CE22CEDCDD880B990B089528 -:10D0000091505040660F771F881FD2F708959F9365 -:10D010008F937F936F93FF93EF939B01AC0117DF87 -:10D02000EF91FF911CDE2F913F914F915F910FCFB8 -:10D03000991B79E004C0991F961708F0961B881F6A -:10D040007A95C9F780950895AA1BBB1B51E107C0CB -:10D05000AA1FBB1FA617B70710F0A61BB70B881F88 -:10D06000991F5A95A9F780959095BC01CD01089517 -:10D07000A1E21A2EAA1BBB1BFD010DC0AA1FBB1FDC -:10D08000EE1FFF1FA217B307E407F50720F0A21B4E -:10D09000B30BE40BF50B661F771F881F991F1A94BB -:10D0A00069F760957095809590959B01AC01BD01E5 -:10D0B000CF010895EE0FFF1F881F8BBF0790F691D9 -:10D0C000E02D1994A29FB001B39FC001A39F700DE2 -:10D0D000811D1124911DB29F700D811D1124911D80 -:10D0E0000895F0DFA59F900DB49F900DA49F800D33 -:10D0F000911D11240895FB01DC010D900020E9F73A -:10D10000119701900D920020E1F70895FB01DC01D9 -:10D1100001900D920020E1F708950F931F93CF9394 -:10D12000DF93CDB7DEB72E970FB6F894DEBF0FBEF4 -:10D13000CDBF0E891F8986E08C831A8309838FEF08 -:10D140009FE79E838D83AE01465E5F4F688D798D2C -:10D15000CE0101965BD02F813885F801E20FF31FD5 -:10D1600010822E960FB6F894DEBF0FBECDBFDF91B2 -:10D17000CF911F910F910895CF93DF93CDB7DEB775 -:10D180002E970FB6F894DEBF0FBECDBF85E08C831F -:10D190008C899D899A838983AE01485E5F4F6E8931 -:10D1A0007F89CE010196C7D32E960FB6F894DEBFC5 -:10D1B0000FBECDBFDF91CF9108950F931F93CF93F3 -:10D1C000DF93CDB7DEB72E970FB6F894DEBF0FBE54 -:10D1D000CDBF8C0186E08C831A8309838FEF9FE794 -:10D1E0009E838D83CE01019611D02F813885F80161 -:10D1F000E20FF31F10822E960FB6F894DEBF0FBE1B -:10D20000CDBFDF91CF911F910F9108952F923F9243 -:10D210004F925F926F927F928F929F92AF92BF9246 -:10D22000CF92DF92EF92FF920F931F93CF93DF93F2 -:10D23000CDB7DEB72C970FB6F894DEBF0FBECDBFCB -:10D240007C016B018A01FC0117821682838181FFB8 -:10D25000B0C1CE0101964C01F7019381F60193FD17 -:10D26000859193FF81916F01882309F49EC18532D6 -:10D2700039F493FD859193FF81916F01853221F4FB -:10D28000B70190E0DFD4E8CF512C312C20E02032E0 -:10D29000A0F48B3269F030F4803259F0833269F4B3 -:10D2A00020612CC08D3239F0803339F4216026C0E2 -:10D2B0002260246023C0286021C027FD27C030EDF4 -:10D2C000380F3A3078F426FF06C0FAE05F9E300D42 -:10D2D0001124532E13C08AE0389E300D1124332EB2 -:10D2E00020620CC08E3221F426FD5FC1206406C08E -:10D2F0008C3611F4206802C0883641F4F60193FDA3 -:10D30000859193FF81916F018111C1CF982F9F7DEE -:10D310009554933028F40C5F1F4FFFE3F9830DC041 -:10D32000833631F0833771F0833509F057C021C05F -:10D33000F801808189830E5F1F4F44244394512C50 -:10D34000540114C03801F2E06F0E711CF801A08086 -:10D35000B18026FF03C0652D70E002C06FEF7FEF44 -:10D36000C5012C8726D42C0183012C852F77222EF2 -:10D3700016C03801F2E06F0E711CF801A080B18078 -:10D3800026FF03C0652D70E002C06FEF7FEFC5017F -:10D390002C8704D42C012C852068222E830123FCA9 -:10D3A00019C0832D90E048165906A0F4B70180E219 -:10D3B00090E048D43A94F5CFF50127FC859127FEFB -:10D3C00081915F01B70190E03DD431103A94F1E0D2 -:10D3D0004F1A51084114510479F7DEC0843611F018 -:10D3E000893631F5F80127FF07C06081718182819C -:10D3F00093810C5F1F4F08C060817181072E000C64 -:10D40000880B990B0E5F1F4F2F76722E97FF09C066 -:10D4100090958095709561957F4F8F4F9F4F2068B5 -:10D42000722E2AE030E0A4015ED4A82EA81843C0D2 -:10D43000853729F42F7EB22E2AE030E025C0F22F66 -:10D44000F97FBF2E8F36C1F018F4883579F0ADC062 -:10D45000803719F0883721F0A8C02F2F2061B22E15 -:10D46000B4FE0DC08B2D8460B82E09C024FF0AC005 -:10D470009F2F9660B92E06C028E030E005C020E15D -:10D4800030E002C020E132E0F801B7FE07C0608161 -:10D490007181828193810C5F1F4F06C06081718111 -:10D4A00080E090E00E5F1F4FA4011DD4A82EA818A5 -:10D4B000FB2DFF777F2E76FE0BC0372D3E7FA51408 -:10D4C00050F474FE0AC072FC08C0372D3E7E05C0C1 -:10D4D000BA2C372D03C0BA2C01C0B52C34FF0DC0B7 -:10D4E000FE01EA0DF11D8081803311F4397E09C0FF -:10D4F00032FF06C0B394B39404C0832F867809F03A -:10D50000B39433FD12C030FF06C05A2CB31418F484 -:10D51000530C5B18B32CB31460F4B70180E290E0B5 -:10D520003C8790D3B3943C85F6CFB31410F43B18EA -:10D5300001C0312C34FF11C0B70180E390E03C877B -:10D5400081D33C8532FF16C031FD03C088E790E0EF -:10D5500002C088E590E0B7010CC0832F867851F0B7 -:10D5600031FF02C08BE201C080E237FD8DE2B701DE -:10D5700090E068D3A51430F4B70180E390E062D363 -:10D580005A94F8CFAA94F401EA0DF11D8081B701F5 -:10D5900090E058D3A110F6CF332009F45DCEB70147 -:10D5A00080E290E04FD33A94F7CFF70186819781DC -:10D5B00002C08FEF9FEF2C960FB6F894DEBF0FBE20 -:10D5C000CDBFDF91CF911F910F91FF90EF90DF9032 -:10D5D000CF90BF90AF909F908F907F906F905F9013 -:10D5E0004F903F902F90089520FD09C0FC0123FD2E -:10D5F00005C022FF02C07383628351834083089574 -:10D6000044FD10C046FD10C0DB01FC01AA0FBB1F8A -:10D61000EE1FFF1F1094D1F76A0F7B1F8E1F9F1FF5 -:10D6200031E003C033E001C034E0660F771F881F8C -:10D63000991F3150D1F7620F711D811D911D089501 -:10D640000F931F93CF93DF938C01C801BDD2EC01E0 -:10D6500097FD06C090D2892BC1F7B801CE012AD31D -:10D66000CE01DF91CF911F910F9108958F929F92DC -:10D67000AF92BF92CF92DF92EF92FF920F931F93E0 -:10D68000CF93DF931F92CDB7DEB78C01C62E7A0100 -:10D6900029839AD2AC01552729814B32510521F0BB -:10D6A0004D32510561F42068CA94C11002C080E077 -:10D6B0006FC0C801298388D2298197FDF8CF322F06 -:10D6C0003D7FD32E322F307339F5803329F5BB24BB -:10D6D000BA94BC0C09F449C0C801298375D22981C8 -:10D6E00097FD43C0382F3F7D383561F48D2D82641E -:10D6F000D82ECA94CA94CC20C1F1C80165D297FF34 -:10D700000BC033C026FF04C02D2D2260D22E03C0D3 -:10D710003D2D3261D32ECB2C812C912C540120ED48 -:10D72000280F283078F0D4FE03C0B801C3D21AC045 -:10D730002A3040F0D6FEF9CF2F7D3FEE320F363043 -:10D74000A0F727504D2DC501B4015ADF4B015C01F4 -:10D750008D2D8260D82ECA94CC2051F0C80134D2CD -:10D7600097FFDDCFD1FC04C0A2CF812C912C5401B6 -:10D77000D7FE08C0B094A09490948094811C911C12 -:10D78000A11CB11C2D2DB501A401C7012DDF81E025 -:10D790000F90DF91CF911F910F91FF90EF90DF904D -:10D7A000CF90BF90AF909F908F9008956F927F928F -:10D7B0008F929F92AF92BF92CF92DF92EF92FF92A1 -:10D7C0000F931F93CF93DF93CDB7DEB7A1970FB61B -:10D7D000F894DEBF0FBECDBF5C017A01CE01019689 -:10D7E0006C0180E2F60111928A95E9F7F5018380D8 -:10D7F00040E050E0912C712C70E0A1E0B0E0F90124 -:10D8000083FC859183FE81918F01982F9F01811167 -:10D8100003C080E090E07AC08E3519F441155105BF -:10D8200049F1E72FF0E0E417F5073CF48D3559F1A5 -:10D830008D3219F4772001F103C0711001C0982EC8 -:10D84000892F8695869586958601080F111D892F4B -:10D8500087703D0101C0660C8A95EAF7F801808166 -:10D8600086298083991559F0991510F49F5FE8CFA8 -:10D870009150E6CF71E004C07724739401C0712CFD -:10D880004F5F5F4FBCCF772019F08E8180628E830F -:10D89000711103C09924939416C0F6019E012F5D67 -:10D8A0003F4F808180958193E217F307D1F7F2CF44 -:10D8B000E114F10429F0F7018083C70101967C018E -:10D8C0006150912CE9F0C50169A37ED169A197FD52 -:10D8D00015C0282F269526952695F601E20FF11DF5 -:10D8E000208130E0AC014770552702C0359527955F -:10D8F0004A95E2F720FDDCCFB501DCD1911089CF4C -:10D90000E114F10411F0F7011082C801A1960FB6DD -:10D91000F894DEBF0FBECDBFDF91CF911F910F9165 -:10D92000FF90EF90DF90CF90BF90AF909F908F903F -:10D930007F906F9008954F925F927F928F929F9207 -:10D94000AF92BF92CF92DF92EF92FF920F931F930D -:10D95000CF93DF931F92CDB7DEB76C012B015A0135 -:10D96000FC0117821682712CF601F380F201F3FCA0 -:10D970008591F3FE8191382F2F01882309F4E5C0AA -:10D9800090E03983F8D03981892B19F0C60158DE2F -:10D99000EBCF353241F4F201F3FC3591F3FE3191D6 -:10D9A0002F01353259F4C60139830ED1398197FDE3 -:10D9B000CAC03817C9F2B6017DD1C7C03A3239F4AE -:10D9C000F3FC3591F3FE31912F0151E001C050E09D -:10D9D000420110E020ED230F2A3088F45260612FBD -:10D9E00070E080E090E040E259830ADE162FF401F7 -:10D9F000F3FC3591F3FE31914F015981EBCF052FA7 -:10DA0000232F240151FF03C0111102C09EC01FEF3C -:10DA1000383619F03C3659F011C0F401F3FC259169 -:10DA2000F3FE21912F01283649F4052F0860046088 -:10DA3000F201F3FC2591F3FE21912F01222309F439 -:10DA400084C0622F70E084ED92E029839CD029810C -:10DA5000892B09F47AC000FD07C0F501E080F18050 -:10DA6000C50102965C0102C0E12CF12C2E3649F46E -:10DA7000F6014681578160E070E0202FC701B4DDD8 -:10DA800073CF233689F401FF11E0C6019DD097FDC5 -:10DA90005AC0E114F10429F0F7018083C70101960F -:10DAA0007C01115091F74BC02B3551F49201A70125 -:10DAB000612FC6017BDE2C01892B09F040C03AC0E2 -:10DAC000C6012983BDDD298197FD3DC02F3641F177 -:10DAD00028F4243619F1293631F124C0233769F0AE -:10DAE0002537E1F01FC0E114F10429F0F70180822D -:10DAF000C70101967C01115059F0C60165D04C0157 -:10DB000097FD06C038D0892B71F3B601C401D2D07D -:10DB1000E114F104A1F0F701108211C0006203C00A -:10DB2000006101C00064202FA701612FC6019EDDA6 -:10DB3000811105C0F6018381807329F406C000FDC0 -:10DB400013CF739411CF772019F0872D90E002C086 -:10DB50008FEF9FEF0F90DF91CF911F910F91FF906B -:10DB6000EF90DF90CF90BF90AF909F908F907F907D -:10DB70005F904F900895911114C1803219F089502F -:10DB80008550D0F70895FC010590061621F000207D -:10DB9000D9F7C00108953197CF010895FC01059090 -:10DBA000615070400110D8F7809590958E0F9F1F9F -:10DBB0000895FC016150704001900110D8F78095E4 -:10DBC00090958E0F9F1F0895CF93DF93EC012B81CB -:10DBD00020FF33C026FF0AC02F7B2B838E819F81BD -:10DBE00001969F838E838A8190E029C022FF0FC017 -:10DBF000E881F9818081082E000C990B009719F4B7 -:10DC000020622B831AC03196F983E8830EC0EA851F -:10DC1000FB85199597FF09C02B81019611F080E2D1 -:10DC200001C080E1822B8B8308C02E813F812F5F52 -:10DC30003F4F3F832E83992702C08FEF9FEFDF91E5 -:10DC4000CF9108950F931F93CF93DF93FB0123810F -:10DC500021FD03C08FEF9FEF28C022FF16C0468131 -:10DC60005781248135814217530744F4A081B18143 -:10DC70009D012F5F3F4F318320838C932681378115 -:10DC80002F5F3F4F3783268310C0EB01092F182FDA -:10DC90000084F185E02D1995892BE1F68E819F8115 -:10DCA00001969F838E83812F902FDF91CF911F91BB -:10DCB0000F910895FB01238120FF12C026FD10C0A3 -:10DCC0008F3F3FEF930761F082832F7D2064238392 -:10DCD000268137812150310937832683992708957A -:10DCE0008FEF9FEF0895FA01AA27283051F12031D4 -:10DCF00081F1E8946F936E7F6E5F7F4F8F4F9F4FE0 -:10DD0000AF4FB1E03ED0B4E03CD0670F781F891F21 -:10DD10009A1FA11D680F791F8A1F911DA11D6A0FEF -:10DD2000711D811D911DA11D20D009F468943F91A2 -:10DD30002AE0269F11243019305D3193DEF6CF01A1 -:10DD40000895462F4770405D4193B3E00FD0C9F767 -:10DD5000F6CF462F4F70405D4A3318F0495D31FDD4 -:10DD60004052419302D0A9F7EACFB4E0A695979527 -:10DD7000879577956795BA95C9F7009761057105FD -:10DD800008959B01AC010A2E069457954795379547 -:10DD90002795BA95C9F7620F731F841F951FA01DA1 -:0CDDA0000895992788270895F894FFCF74 -:10DDAC009A99D93F080200000000000000737363C9 -:10DDBC00616E662025640D0A0053255B302D392DCC -:10DDCC002B2E5D52255B302D392D2B2E5D48255B7E -:10DDDC00302D392D2B2E5D46255B302D392D2B2EDC -:10DDEC005D004E256456255B302D392D2B2E5D465E -:10DDFC00255B302D392D2B2E5D0058255B302D39B0 -:10DE0C002D2B2E5D59255B302D392D2B2E5D5A2552 -:10DE1C005B302D392D2B2E5D46255B302D392D2B6E -:10DE2C002E5D0041255B302D392D2B2E5D005625A6 -:10DE3C0073002056310A0046255B302D392E5D5477 -:10DE4C0025640058255B302D392D2B2E5D59255B13 -:10DE5C00302D392D2B2E5D5A255B302D392D2B2E47 -:10DE6C005D5025640053255B302D392D2B2E5D0024 -:10DE7C006120300D0A006220300D0A006320300D45 -:10DE8C000A0020422573204C2573205225730A006A -:10DE9C00537769667450726F002025730A005634EC -:10DEAC002E312E310056342E302E31004646464649 -:10DEBC0046464646002025730020582573205925D8 -:10DECC0073205A25730A0020532573205225732082 -:10DEDC004825730A0061643A25640D0A0020422526 -:10DEEC0064204C2564205225640A0040310A00232A -:10DEFC00255B302D395D00242573004532332062BB -:10DF0C0075666665722066756C6C0D0A0040332070 -:10DF1C0058257320592573205A2573205225730ACE -:10DF2C00004036204E30205625640A0040392056D9 -:10DF3C00300A004532330A004532300A004532318E -:10DF4C000A0020006F6B004532300045323100452D -:10DF5C0032320056332E332E310056332E332E30C0 -:02DF6C000000B3 -:00000001FF From 51cff044050879bc91be5a77fe27be0e665a98bd Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Mon, 27 Aug 2018 10:32:49 +0800 Subject: [PATCH 37/74] Create --- README.md | 14 +- Source code/config.h | 414 ++++++ Source code/coolant_control.c | 64 + Source code/coolant_control.h | 30 + Source code/cpu_map.h | 48 + Source code/cpu_map/cpu_map_atmega2560.h | 217 ++++ Source code/cpu_map/cpu_map_atmega328p.h | 147 +++ Source code/defaults.h | 91 ++ Source code/defaults/defaults_generic.h | 62 + Source code/defaults/defaults_oxcnc.h | 63 + Source code/defaults/defaults_shapeoko.h | 70 ++ Source code/defaults/defaults_shapeoko2.h | 69 + Source code/defaults/defaults_shapeoko3.h | 68 + Source code/defaults/defaults_sherline.h | 66 + Source code/defaults/defaults_simulator.h | 63 + .../defaults/defaults_x_carve_1000mm.h | 70 ++ Source code/defaults/defaults_x_carve_500mm.h | 70 ++ .../defaults/defaults_zen_toolworks_7x7.h | 68 + Source code/eeprom.c | 151 +++ Source code/eeprom.h | 29 + Source code/examples/grblUpload/license.txt | 21 + Source code/gcode.c | 1118 +++++++++++++++++ Source code/gcode.h | 212 ++++ Source code/grbl.h | 62 + Source code/grblUpload/grblUpload.ino | 29 + Source code/limits.c | 370 ++++++ Source code/limits.h | 41 + Source code/main.c | 97 ++ Source code/motion_control.c | 446 +++++++ Source code/motion_control.h | 66 + Source code/nuts_bolts.c | 148 +++ Source code/nuts_bolts.h | 78 ++ Source code/planner.c | 457 +++++++ Source code/planner.h | 97 ++ Source code/print.c | 219 ++++ Source code/print.h | 60 + Source code/probe.c | 68 + Source code/probe.h | 43 + Source code/protocol.c | 398 ++++++ Source code/protocol.h | 58 + Source code/report.c | 522 ++++++++ Source code/report.h | 115 ++ Source code/serial.c | 201 +++ Source code/serial.h | 64 + Source code/settings.c | 323 +++++ Source code/settings.h | 142 +++ Source code/spindle_control.c | 141 +++ Source code/spindle_control.h | 37 + Source code/stepper.c | 928 ++++++++++++++ Source code/stepper.h | 55 + Source code/system.c | 305 +++++ Source code/system.h | 115 ++ Source code/uarm_angle.c | 223 ++++ Source code/uarm_angle.h | 24 + Source code/uarm_common.h | 75 ++ Source code/uarm_coord_convert.c | 187 +++ Source code/uarm_coord_convert.h | 24 + Source code/uarm_debug.h | 19 + Source code/uarm_iic.c | 587 +++++++++ Source code/uarm_iic.h | 11 + Source code/uarm_peripheral.c | 446 +++++++ Source code/uarm_peripheral.h | 49 + Source code/uarm_protocol.c | 1082 ++++++++++++++++ Source code/uarm_protocol.h | 37 + Source code/uarm_swift.c | 40 + Source code/uarm_swift.h | 18 + Source code/uarm_timer.c | 214 ++++ Source code/uarm_timer.h | 29 + 68 files changed, 11967 insertions(+), 8 deletions(-) create mode 100755 Source code/config.h create mode 100755 Source code/coolant_control.c create mode 100755 Source code/coolant_control.h create mode 100755 Source code/cpu_map.h create mode 100755 Source code/cpu_map/cpu_map_atmega2560.h create mode 100755 Source code/cpu_map/cpu_map_atmega328p.h create mode 100755 Source code/defaults.h create mode 100755 Source code/defaults/defaults_generic.h create mode 100755 Source code/defaults/defaults_oxcnc.h create mode 100755 Source code/defaults/defaults_shapeoko.h create mode 100755 Source code/defaults/defaults_shapeoko2.h create mode 100755 Source code/defaults/defaults_shapeoko3.h create mode 100755 Source code/defaults/defaults_sherline.h create mode 100755 Source code/defaults/defaults_simulator.h create mode 100755 Source code/defaults/defaults_x_carve_1000mm.h create mode 100755 Source code/defaults/defaults_x_carve_500mm.h create mode 100755 Source code/defaults/defaults_zen_toolworks_7x7.h create mode 100755 Source code/eeprom.c create mode 100755 Source code/eeprom.h create mode 100755 Source code/examples/grblUpload/license.txt create mode 100755 Source code/gcode.c create mode 100755 Source code/gcode.h create mode 100755 Source code/grbl.h create mode 100755 Source code/grblUpload/grblUpload.ino create mode 100755 Source code/limits.c create mode 100755 Source code/limits.h create mode 100755 Source code/main.c create mode 100755 Source code/motion_control.c create mode 100755 Source code/motion_control.h create mode 100755 Source code/nuts_bolts.c create mode 100755 Source code/nuts_bolts.h create mode 100755 Source code/planner.c create mode 100755 Source code/planner.h create mode 100755 Source code/print.c create mode 100755 Source code/print.h create mode 100755 Source code/probe.c create mode 100755 Source code/probe.h create mode 100755 Source code/protocol.c create mode 100755 Source code/protocol.h create mode 100755 Source code/report.c create mode 100755 Source code/report.h create mode 100755 Source code/serial.c create mode 100755 Source code/serial.h create mode 100755 Source code/settings.c create mode 100755 Source code/settings.h create mode 100755 Source code/spindle_control.c create mode 100755 Source code/spindle_control.h create mode 100755 Source code/stepper.c create mode 100755 Source code/stepper.h create mode 100755 Source code/system.c create mode 100755 Source code/system.h create mode 100755 Source code/uarm_angle.c create mode 100755 Source code/uarm_angle.h create mode 100755 Source code/uarm_common.h create mode 100755 Source code/uarm_coord_convert.c create mode 100755 Source code/uarm_coord_convert.h create mode 100755 Source code/uarm_debug.h create mode 100755 Source code/uarm_iic.c create mode 100755 Source code/uarm_iic.h create mode 100755 Source code/uarm_peripheral.c create mode 100755 Source code/uarm_peripheral.h create mode 100755 Source code/uarm_protocol.c create mode 100755 Source code/uarm_protocol.h create mode 100755 Source code/uarm_swift.c create mode 100755 Source code/uarm_swift.h create mode 100755 Source code/uarm_timer.c create mode 100755 Source code/uarm_timer.h diff --git a/README.md b/README.md index f4de42f..610857e 100755 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ -# Swift Pro Firmware V4.1.1 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.1.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- -## Update Summary for v4.1.1 -* Fix cmd M17 bug -* Add closed-loop stepper control (step losing detection and auto-adjusting) + ## Update Summary for v4.1.0 * Transplant Grbl framework. * Optimize stepper motor performance,improve motor speed,fix motor shake. @@ -16,9 +14,9 @@ #### Not support app control #### For uArmStudio control -- input and Grove module in BLOCKLY are not supported. -- Draw/Laser is not supported. -- 3D Printing is not supported. +- BLOCKLY is not support **input** and **Grove** module. +- Draw/Laser is not support. +- 3D Printing is not support. ## Communication protocol #### For serial terminal control @@ -50,7 +48,7 @@ not support currently **P2240,P2241**. * Open XLoader and select your uArm's COM port from the drop down menu on the lower left. * Select the appropriate device from the dropdown list titled "Device". * Check that Xloader set the correct baud rate for the device: 115200 for Mega (ATMEGA2560). -* Now use the browse button on the top right of the form to browse to your hex file. +* Now use the browse button on the top right of the form to browse to your grbl hex file. * Once your hex file is selected, click "Upload" The upload process generally takes about 10 seconds to finish. Once completed, a message will appear in the bottom left corner of XLoader telling you how many bytes were uploaded. If there was an error, it would show instead of the total bytes uploaded. Steps should be similar and may be done through the command prompt. diff --git a/Source code/config.h b/Source code/config.h new file mode 100755 index 0000000..c5eefa3 --- /dev/null +++ b/Source code/config.h @@ -0,0 +1,414 @@ +/* + config.h - compile time configuration + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +// This file contains compile-time configurations for Grbl's internal system. For the most part, +// users will not need to directly modify these, but they are here for specific needs, i.e. +// performance tuning or adjusting to non-typical machines. + +// IMPORTANT: Any changes here requires a full re-compiling of the source code to propagate them. + +#ifndef config_h +#define config_h +#include "grbl.h" // For Arduino IDE compatibility. + + +// Default settings. Used when resetting EEPROM. Change to desired name in defaults.h +#define DEFAULTS_GENERIC + +// Serial baud rate +#define BAUD_RATE 115200 + +// Default cpu mappings. Grbl officially supports the Arduino Uno only. Other processor types +// may exist from user-supplied templates or directly user-defined in cpu_map.h +//#define CPU_MAP_ATMEGA328P // Arduino Uno CPU +#define CPU_MAP_ATMEGA2560 + +// Define realtime command special characters. These characters are 'picked-off' directly from the +// serial read data stream and are not passed to the grbl line execution parser. Select characters +// that do not and must not exist in the streamed g-code program. ASCII control characters may be +// used, if they are available per user setup. Also, extended ASCII codes (>127), which are never in +// g-code programs, maybe selected for interface programs. +// NOTE: If changed, manually update help message in report.c. +#define CMD_STATUS_REPORT '?' +#define CMD_FEED_HOLD '!' +#define CMD_CYCLE_START '~' +#define CMD_RESET 0x18 // ctrl-x. +#define CMD_SAFETY_DOOR '@' + +// If homing is enabled, homing init lock sets Grbl into an alarm state upon power up. This forces +// the user to perform the homing cycle (or override the locks) before doing anything else. This is +// mainly a safety feature to remind the user to home, since position is unknown to Grbl. +#define HOMING_INIT_LOCK // Comment to disable + +// Define the homing cycle patterns with bitmasks. The homing cycle first performs a search mode +// to quickly engage the limit switches, followed by a slower locate mode, and finished by a short +// pull-off motion to disengage the limit switches. The following HOMING_CYCLE_x defines are executed +// in order starting with suffix 0 and completes the homing routine for the specified-axes only. If +// an axis is omitted from the defines, it will not home, nor will the system update its position. +// Meaning that this allows for users with non-standard cartesian machines, such as a lathe (x then z, +// with no y), to configure the homing cycle behavior to their needs. +// NOTE: The homing cycle is designed to allow sharing of limit pins, if the axes are not in the same +// cycle, but this requires some pin settings changes in cpu_map.h file. For example, the default homing +// cycle can share the Z limit pin with either X or Y limit pins, since they are on different cycles. +// By sharing a pin, this frees up a precious IO pin for other purposes. In theory, all axes limit pins +// may be reduced to one pin, if all axes are homed with seperate cycles, or vice versa, all three axes +// on separate pin, but homed in one cycle. Also, it should be noted that the function of hard limits +// will not be affected by pin sharing. +// NOTE: Defaults are set for a traditional 3-axis CNC machine. Z-axis first to clear, followed by X & Y. +#define HOMING_CYCLE_0 (1< 3us, and, when added with the +// user-supplied step pulse time, the total time must not exceed 127us. Reported successful +// values for certain setups have ranged from 5 to 20us. +// #define STEP_PULSE_DELAY 10 // Step pulse delay in microseconds. Default disabled. + +// The number of linear motions in the planner buffer to be planned at any give time. The vast +// majority of RAM that Grbl uses is based on this buffer size. Only increase if there is extra +// available RAM, like when re-compiling for a Mega or Sanguino. Or decrease if the Arduino +// begins to crash due to the lack of available RAM or if the CPU is having trouble keeping +// up with planning new incoming motions as they are executed. +// #define BLOCK_BUFFER_SIZE 18 // Uncomment to override default in planner.h. + +// Governs the size of the intermediary step segment buffer between the step execution algorithm +// and the planner blocks. Each segment is set of steps executed at a constant velocity over a +// fixed time defined by ACCELERATION_TICKS_PER_SECOND. They are computed such that the planner +// block velocity profile is traced exactly. The size of this buffer governs how much step +// execution lead time there is for other Grbl processes have to compute and do their thing +// before having to come back and refill this buffer, currently at ~50msec of step moves. +// #define SEGMENT_BUFFER_SIZE 6 // Uncomment to override default in stepper.h. + +// Line buffer size from the serial input stream to be executed. Also, governs the size of +// each of the startup blocks, as they are each stored as a string of this size. Make sure +// to account for the available EEPROM at the defined memory address in settings.h and for +// the number of desired startup blocks. +// NOTE: 80 characters is not a problem except for extreme cases, but the line buffer size +// can be too small and g-code blocks can get truncated. Officially, the g-code standards +// support up to 256 characters. In future versions, this default will be increased, when +// we know how much extra memory space we can re-invest into this. +// #define LINE_BUFFER_SIZE 80 // Uncomment to override default in protocol.h + +// Serial send and receive buffer size. The receive buffer is often used as another streaming +// buffer to store incoming blocks to be processed by Grbl when its ready. Most streaming +// interfaces will character count and track each block send to each block response. So, +// increase the receive buffer if a deeper receive buffer is needed for streaming and avaiable +// memory allows. The send buffer primarily handles messages in Grbl. Only increase if large +// messages are sent and Grbl begins to stall, waiting to send the rest of the message. +// NOTE: Buffer size values must be greater than zero and less than 256. +// #define RX_BUFFER_SIZE 128 // Uncomment to override defaults in serial.h +// #define TX_BUFFER_SIZE 64 + +// Toggles XON/XOFF software flow control for serial communications. Not officially supported +// due to problems involving the Atmega8U2 USB-to-serial chips on current Arduinos. The firmware +// on these chips do not support XON/XOFF flow control characters and the intermediate buffer +// in the chips cause latency and overflow problems with standard terminal programs. However, +// using specifically-programmed UI's to manage this latency problem has been confirmed to work. +// As well as, older FTDI FT232RL-based Arduinos(Duemilanove) are known to work with standard +// terminal programs since their firmware correctly manage these XON/XOFF characters. In any +// case, please report any successes to grbl administrators! +// #define ENABLE_XONXOFF // Default disabled. Uncomment to enable. + +// A simple software debouncing feature for hard limit switches. When enabled, the interrupt +// monitoring the hard limit switch pins will enable the Arduino's watchdog timer to re-check +// the limit pin state after a delay of about 32msec. This can help with CNC machines with +// problematic false triggering of their hard limit switches, but it WILL NOT fix issues with +// electrical interference on the signal cables from external sources. It's recommended to first +// use shielded signal cables with their shielding connected to ground (old USB/computer cables +// work well and are cheap to find) and wire in a low-pass circuit into each limit pin. +// #define ENABLE_SOFTWARE_DEBOUNCE // Default disabled. Uncomment to enable. + +// Force Grbl to check the state of the hard limit switches when the processor detects a pin +// change inside the hard limit ISR routine. By default, Grbl will trigger the hard limits +// alarm upon any pin change, since bouncing switches can cause a state check like this to +// misread the pin. When hard limits are triggered, they should be 100% reliable, which is the +// reason that this option is disabled by default. Only if your system/electronics can guarantee +// that the switches don't bounce, we recommend enabling this option. This will help prevent +// triggering a hard limit when the machine disengages from the switch. +// NOTE: This option has no effect if SOFTWARE_DEBOUNCE is enabled. +// #define HARD_LIMIT_FORCE_STATE_CHECK // Default disabled. Uncomment to enable. + + +// --------------------------------------------------------------------------------------- +// COMPILE-TIME ERROR CHECKING OF DEFINE VALUES: + +#ifndef HOMING_CYCLE_0 + #error "Required HOMING_CYCLE_0 not defined." +#endif + +#if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(VARIABLE_SPINDLE) + #error "USE_SPINDLE_DIR_AS_ENABLE_PIN may only be used with VARIABLE_SPINDLE enabled" +#endif + +#if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(CPU_MAP_ATMEGA328P) + #error "USE_SPINDLE_DIR_AS_ENABLE_PIN may only be used with a 328p processor" +#endif + +// --------------------------------------------------------------------------------------- + + +#endif diff --git a/Source code/coolant_control.c b/Source code/coolant_control.c new file mode 100755 index 0000000..4429dd4 --- /dev/null +++ b/Source code/coolant_control.c @@ -0,0 +1,64 @@ +/* + coolant_control.c - coolant control methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +void coolant_init() +{ + COOLANT_FLOOD_DDR |= (1 << COOLANT_FLOOD_BIT); + #ifdef ENABLE_M7 + COOLANT_MIST_DDR |= (1 << COOLANT_MIST_BIT); + #endif + coolant_stop(); +} + + +void coolant_stop() +{ + COOLANT_FLOOD_PORT &= ~(1 << COOLANT_FLOOD_BIT); + #ifdef ENABLE_M7 + COOLANT_MIST_PORT &= ~(1 << COOLANT_MIST_BIT); + #endif +} + + +void coolant_set_state(uint8_t mode) +{ + if (mode == COOLANT_FLOOD_ENABLE) { + COOLANT_FLOOD_PORT |= (1 << COOLANT_FLOOD_BIT); + + #ifdef ENABLE_M7 + } else if (mode == COOLANT_MIST_ENABLE) { + COOLANT_MIST_PORT |= (1 << COOLANT_MIST_BIT); + #endif + + } else { + coolant_stop(); + } +} + + +void coolant_run(uint8_t mode) +{ + if (sys.state == STATE_CHECK_MODE) { return; } + protocol_buffer_synchronize(); // Ensure coolant turns on when specified in program. + coolant_set_state(mode); +} diff --git a/Source code/coolant_control.h b/Source code/coolant_control.h new file mode 100755 index 0000000..7694a78 --- /dev/null +++ b/Source code/coolant_control.h @@ -0,0 +1,30 @@ +/* + coolant_control.h - spindle control methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef coolant_control_h +#define coolant_control_h + + +void coolant_init(); +void coolant_stop(); +void coolant_set_state(uint8_t mode); +void coolant_run(uint8_t mode); + +#endif \ No newline at end of file diff --git a/Source code/cpu_map.h b/Source code/cpu_map.h new file mode 100755 index 0000000..1804d25 --- /dev/null +++ b/Source code/cpu_map.h @@ -0,0 +1,48 @@ +/* + cpu_map.h - CPU and pin mapping configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The cpu_map.h files serve as a central pin mapping selection file for different processor + types, i.e. AVR 328p or AVR Mega 2560. Each processor has its own pin mapping file. + (i.e. cpu_map_atmega328p.h) Grbl officially supports the Arduino Uno, but the + other supplied pin mappings are supplied by users, so your results may vary. */ + +// NOTE: With new processors, only add the define name and filename to use. + +#ifndef cpu_map_h +#define cpu_map_h + + +#ifdef CPU_MAP_ATMEGA328P // (Arduino Uno) Officially supported by Grbl. + #include "cpu_map/cpu_map_atmega328p.h" +#endif + +#ifdef CPU_MAP_ATMEGA2560 // (Arduino Mega 2560) Working @EliteEng + #include "cpu_map/cpu_map_atmega2560.h" +#endif + +/* +#ifdef CPU_MAP_CUSTOM_PROC + // For a custom pin map or different processor, copy and edit one of the available cpu + // map files and modify it to your needs. Make sure the defined name is also changed in + // the config.h file. +#endif +*/ + +#endif diff --git a/Source code/cpu_map/cpu_map_atmega2560.h b/Source code/cpu_map/cpu_map_atmega2560.h new file mode 100755 index 0000000..042d2c8 --- /dev/null +++ b/Source code/cpu_map/cpu_map_atmega2560.h @@ -0,0 +1,217 @@ +/* + cpu_map_atmega2560.h - CPU and pin mapping configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* This cpu_map file serves as a central pin mapping settings file for AVR Mega 2560 */ + + +#ifdef GRBL_PLATFORM +#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM +#endif + + +#define GRBL_PLATFORM "Atmega2560" + +// Serial port pins +#define SERIAL_RX USART0_RX_vect +#define SERIAL_UDRE USART0_UDRE_vect + +// Increase Buffers to make use of extra SRAM +//#define RX_BUFFER_SIZE 256 +//#define TX_BUFFER_SIZE 128 +//#define BLOCK_BUFFER_SIZE 36 +//#define LINE_BUFFER_SIZE 100 + +/* +// Define step pulse output pins. NOTE: All step bit pins must be on the same port. +#define STEP_DDR DDRA +#define STEP_PORT PORTA +#define STEP_PIN PINA +#define X_STEP_BIT 2 // MEGA2560 Digital Pin 24 +#define Y_STEP_BIT 3 // MEGA2560 Digital Pin 25 +#define Z_STEP_BIT 4 // MEGA2560 Digital Pin 26 +#define STEP_MASK ((1< grbl x axis +#define ARML_STEP_DDR DDRF +#define ARML_STEP_PORT PORTF +#define ARML_STEP_PIN 6 //PF6 +#define ARML_STEP_MASK (1< grbl y axis +#define ARMR_STEP_DDR DDRL +#define ARMR_STEP_PORT PORTL +#define ARMR_STEP_PIN 3 // PL3 +#define ARMR_STEP_MASK (1< grbl z axis +#define BASE_STEP_DDR DDRF +#define BASE_STEP_PORT PORTF +#define BASE_STEP_PIN 0 // PF0 +#define BASE_STEP_MASK (1<. +*/ + +/* Grbl officially supports the Arduino Uno, but the other supplied pin mappings are + supplied by users, so your results may vary. This cpu_map file serves as a central + pin mapping settings file for AVR 328p used on the Arduino Uno. */ + +#ifdef GRBL_PLATFORM +#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM +#endif + + +#define GRBL_PLATFORM "Atmega328p" + +// Define serial port pins and interrupt vectors. +#define SERIAL_RX USART_RX_vect +#define SERIAL_UDRE USART_UDRE_vect + +// Define step pulse output pins. NOTE: All step bit pins must be on the same port. +#define STEP_DDR DDRD +#define STEP_PORT PORTD +#define X_STEP_BIT 2 // Uno Digital Pin 2 +#define Y_STEP_BIT 3 // Uno Digital Pin 3 +#define Z_STEP_BIT 4 // Uno Digital Pin 4 +#define STEP_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings selector for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + files listed here are supplied by users, so your results may vary. However, this should + give you a good starting point as you get to know your machine and tweak the settings for + your nefarious needs. + Ensure one and only one of these DEFAULTS_XXX values is defined in config.h */ + +#ifndef defaults_h + +// Only define the DEFAULT_XXX with where to find the corresponding default_XXX.h file. +// Don't #define defaults_h here, let the selected file do it. Prevents including more than one. + +#ifdef DEFAULTS_GENERIC + // Grbl generic default settings. Should work across different machines. + #include "defaults/defaults_generic.h" +#endif + +#ifdef DEFAULTS_SHERLINE_5400 + // Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors, + // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding. + #include "defaults/defaults_sherline.h" +#endif + +#ifdef DEFAULTS_SHAPEOKO + // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos + // grblShield with a 24V, 4.2A power supply. + #include "defaults/defaults_shapeoko.h" +#endif + +#ifdef DEFAULTS_SHAPEOKO_2 + // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos + // grblShield at 28V. + #include "defaults/defaults_shapeoko2.h" +#endif + +#ifdef DEFAULTS_SHAPEOKO_3 + // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion + #include "defaults/defaults_shapeoko3.h" +#endif + +#ifdef DEFAULTS_X_CARVE_500MM + // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos + // grblShield at 24V. + #include "defaults/defaults_x_carve_500mm.h" +#endif + +#ifdef DEFAULTS_X_CARVE_1000MM + // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos + // grblShield at 24V. + #include "defaults/defaults_x_carve_1000mm.h" +#endif + +#ifdef DEFAULTS_ZEN_TOOLWORKS_7x7 + // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors. + // Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here. + // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers. + #include "defaults/defaults_zen_toolworks_7x7.h" +#endif + +#ifdef DEFAULTS_OXCNC + // Grbl settings for OpenBuilds OX CNC Machine + // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ + #include "defaults/defaults_oxcnc.h" +#endif + +#ifdef DEFAULTS_SIMULATOR + // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim) + #include "defaults/defaults_simulator.h" +#endif + +#endif diff --git a/Source code/defaults/defaults_generic.h b/Source code/defaults/defaults_generic.h new file mode 100755 index 0000000..9732f75 --- /dev/null +++ b/Source code/defaults/defaults_generic.h @@ -0,0 +1,62 @@ +/* + defaults_generic.h - defaults settings configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Grbl generic default settings. Should work across different machines. + #define DEFAULT_X_STEPS_PER_MM 50000.0 + #define DEFAULT_Y_STEPS_PER_MM 50000.0 + #define DEFAULT_Z_STEPS_PER_MM 50000.0 + #define DEFAULT_X_MAX_RATE 100000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 100000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 100000.0 // mm/min + #define DEFAULT_X_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 10000.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 10000.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 10000.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK 7 // 00000111 zyz + #define DEFAULT_STEPPER_IDLE_LOCK_TIME 255 // msec (0-254, 255 keeps steppers enabled) + #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) + #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm + #define DEFAULT_ARC_TOLERANCE 0.002 // mm + #define DEFAULT_REPORT_INCHES 0 // false + #define DEFAULT_INVERT_ST_ENABLE 1 // false + #define DEFAULT_INVERT_LIMIT_PINS 0 // false + #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false + #define DEFAULT_HARD_LIMIT_ENABLE 0 // false + #define DEFAULT_HOMING_ENABLE 0 // false + #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir + #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min + #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min + #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) + #define DEFAULT_HOMING_PULLOFF 1.0 // mm + +#endif diff --git a/Source code/defaults/defaults_oxcnc.h b/Source code/defaults/defaults_oxcnc.h new file mode 100755 index 0000000..1c89ab8 --- /dev/null +++ b/Source code/defaults/defaults_oxcnc.h @@ -0,0 +1,63 @@ +/* + defaults_oxcnc.h - defaults settings configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Grbl settings for OpenBuilds OX CNC Machine + // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ + #define DEFAULT_X_STEPS_PER_MM 26.670 + #define DEFAULT_Y_STEPS_PER_MM 26.670 + #define DEFAULT_Z_STEPS_PER_MM 50 + #define DEFAULT_X_MAX_RATE 500.0 // mm/min + #define DEFAULT_Y_MAX_RATE 500.0 // mm/min + #define DEFAULT_Z_MAX_RATE 500.0 // mm/min + #define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 500.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 750.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 80.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK 0 + #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) + #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) + #define DEFAULT_JUNCTION_DEVIATION 0.02 // mm + #define DEFAULT_ARC_TOLERANCE 0.002 // mm + #define DEFAULT_REPORT_INCHES 0 // false + #define DEFAULT_INVERT_ST_ENABLE 0 // false + #define DEFAULT_INVERT_LIMIT_PINS 0 // false + #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false + #define DEFAULT_HARD_LIMIT_ENABLE 0 // false + #define DEFAULT_HOMING_ENABLE 0 // false + #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir + #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min + #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min + #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) + #define DEFAULT_HOMING_PULLOFF 1.0 // mm + +#endif diff --git a/Source code/defaults/defaults_shapeoko.h b/Source code/defaults/defaults_shapeoko.h new file mode 100755 index 0000000..46346ea --- /dev/null +++ b/Source code/defaults/defaults_shapeoko.h @@ -0,0 +1,70 @@ +/* + defaults_shapeoko.h - defaults settings configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + + // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos + // grblShield with a 24V, 4.2A power supply. + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 400 + #define MM_PER_REV_XY (0.08*18*MM_PER_INCH) // 0.08 in belt pitch, 18 pulley teeth + #define MICROSTEPS_Z 2 + #define STEP_REVS_Z 400 + #define MM_PER_REV_Z 1.250 // 1.25 mm/rev leadscrew + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 1000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 1000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 1000.0 // mm/min + #define DEFAULT_X_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 200.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 200.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos + // grblShield at 28V. + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 200 + #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define MICROSTEPS_Z 2 + #define STEP_REVS_Z 200 + #define MM_PER_REV_Z 1.250 // 1.25 mm/rev leadscrew + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 5000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 5000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 500.0 // mm/min + #define DEFAULT_X_ACCELERATION (250.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (250.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 290.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 290.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 200 + #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define MICROSTEPS_Z 8 + #define STEP_REVS_Z 200 + #define MM_PER_REV_Z (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 5000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 5000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 5000.0 // mm/min + #define DEFAULT_X_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 425.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 465.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 80.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors, + // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding. + #define MICROSTEPS 2 + #define STEPS_PER_REV 200.0 + #define MM_PER_REV (0.050*MM_PER_INCH) // 0.050 inch/rev leadscrew + #define DEFAULT_X_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_Y_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_Z_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_X_MAX_RATE 635.0 // mm/min (25 ipm) + #define DEFAULT_Y_MAX_RATE 635.0 // mm/min + #define DEFAULT_Z_MAX_RATE 635.0 // mm/min + #define DEFAULT_X_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 225.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 125.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 170.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim) + // Grbl generic default settings. Should work across different machines. + #define DEFAULT_X_STEPS_PER_MM 1000.0 + #define DEFAULT_Y_STEPS_PER_MM 1000.0 + #define DEFAULT_Z_STEPS_PER_MM 1000.0 + #define DEFAULT_X_MAX_RATE 1000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 1000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 1000.0 // mm/min + #define DEFAULT_X_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 1000.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 1000.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 1000.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK 0 + #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) + #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) + #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm + #define DEFAULT_ARC_TOLERANCE 0.002 // mm + #define DEFAULT_REPORT_INCHES 0 // false + #define DEFAULT_INVERT_ST_ENABLE 0 // false + #define DEFAULT_INVERT_LIMIT_PINS 0 // false + #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false + #define DEFAULT_HARD_LIMIT_ENABLE 0 // false + #define DEFAULT_HOMING_ENABLE 0 // false + #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir + #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min + #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min + #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) + #define DEFAULT_HOMING_PULLOFF 1.0 // mm + +#endif diff --git a/Source code/defaults/defaults_x_carve_1000mm.h b/Source code/defaults/defaults_x_carve_1000mm.h new file mode 100755 index 0000000..f88e5ad --- /dev/null +++ b/Source code/defaults/defaults_x_carve_1000mm.h @@ -0,0 +1,70 @@ +/* + defaults_x_carve_1000mm.h - defaults settings configuration file + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos + // grblShield at 24V. + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 200 + #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define MICROSTEPS_Z 2 + #define STEP_REVS_Z 200 + #define MM_PER_REV_Z 2.117 // ACME 3/8-12 Leadscrew + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 8000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 8000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 500.0 // mm/min + #define DEFAULT_X_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 740.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 790.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos + // grblShield at 24V. + #define MICROSTEPS_XY 8 + #define STEP_REVS_XY 200 + #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth + #define MICROSTEPS_Z 2 + #define STEP_REVS_Z 200 + #define MM_PER_REV_Z 2.117 // ACME 3/8-12 Leadscrew + #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) + #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) + #define DEFAULT_X_MAX_RATE 8000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 8000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 500.0 // mm/min + #define DEFAULT_X_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 290.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 290.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1<. +*/ + +/* The defaults.h file serves as a central default settings file for different machine + types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings + here are supplied by users, so your results may vary. However, this should give you + a good starting point as you get to know your machine and tweak the settings for your + nefarious needs. */ + +#ifndef defaults_h +#define defaults_h + + // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors. + // Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here. + // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers. + #define MICROSTEPS 8 + #define STEPS_PER_REV 200.0 + #define MM_PER_REV 8.0 // 8 mm/rev leadscrew + #define DEFAULT_X_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_Y_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_Z_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) + #define DEFAULT_X_MAX_RATE 6000.0 // mm/min + #define DEFAULT_Y_MAX_RATE 6000.0 // mm/min + #define DEFAULT_Z_MAX_RATE 6000.0 // mm/min + #define DEFAULT_X_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 + #define DEFAULT_Y_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 + #define DEFAULT_Z_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 + #define DEFAULT_X_MAX_TRAVEL 190.0 // mm + #define DEFAULT_Y_MAX_TRAVEL 180.0 // mm + #define DEFAULT_Z_MAX_TRAVEL 150.0 // mm + #define DEFAULT_STEP_PULSE_MICROSECONDS 10 + #define DEFAULT_STEPPING_INVERT_MASK 0 + #define DEFAULT_DIRECTION_INVERT_MASK ((1< +#include + +/* These EEPROM bits have different names on different devices. */ +#ifndef EEPE + #define EEPE EEWE //!< EEPROM program/write enable. + #define EEMPE EEMWE //!< EEPROM master program/write enable. +#endif + +/* These two are unfortunately not defined in the device include files. */ +#define EEPM1 5 //!< EEPROM Programming Mode Bit 1. +#define EEPM0 4 //!< EEPROM Programming Mode Bit 0. + +/* Define to reduce code size. */ +#define EEPROM_IGNORE_SELFPROG //!< Remove SPM flag polling. + +/*! \brief Read byte from EEPROM. + * + * This function reads one byte from a given EEPROM address. + * + * \note The CPU is halted for 4 clock cycles during EEPROM read. + * + * \param addr EEPROM address to read from. + * \return The byte read from the EEPROM address. + */ +unsigned char eeprom_get_char( unsigned int addr ) +{ + do {} while( EECR & (1< 0; size--) { + checksum = (checksum << 1) || (checksum >> 7); + checksum += *source; + eeprom_put_char(destination++, *(source++)); + } + eeprom_put_char(destination, checksum); +} + +int memcpy_from_eeprom_with_checksum(char *destination, unsigned int source, unsigned int size) { + unsigned char data, checksum = 0; + for(; size > 0; size--) { + data = eeprom_get_char(source++); + checksum = (checksum << 1) || (checksum >> 7); + checksum += data; + *(destination++) = data; + } + return(checksum == eeprom_get_char(source)); +} + +// end of file diff --git a/Source code/eeprom.h b/Source code/eeprom.h new file mode 100755 index 0000000..c9718a2 --- /dev/null +++ b/Source code/eeprom.h @@ -0,0 +1,29 @@ +/* + eeprom.h - EEPROM methods + Part of Grbl + + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef eeprom_h +#define eeprom_h + +unsigned char eeprom_get_char(unsigned int addr); +void eeprom_put_char(unsigned int addr, unsigned char new_value); +void memcpy_to_eeprom_with_checksum(unsigned int destination, char *source, unsigned int size); +int memcpy_from_eeprom_with_checksum(char *destination, unsigned int source, unsigned int size); + +#endif diff --git a/Source code/examples/grblUpload/license.txt b/Source code/examples/grblUpload/license.txt new file mode 100755 index 0000000..1abcdb9 --- /dev/null +++ b/Source code/examples/grblUpload/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Sungeun K. Jeon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/Source code/gcode.c b/Source code/gcode.c new file mode 100755 index 0000000..51cc4ae --- /dev/null +++ b/Source code/gcode.c @@ -0,0 +1,1118 @@ +/* + gcode.c - rs274/ngc parser. + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include "uarm_protocol.h" + +// NOTE: Max line number is defined by the g-code standard to be 99999. It seems to be an +// arbitrary value, and some GUIs may require more. So we increased it based on a max safe +// value when converting a float (7.2 digit precision)s to an integer. +#define MAX_LINE_NUMBER 9999999 + +#define AXIS_COMMAND_NONE 0 +#define AXIS_COMMAND_NON_MODAL 1 +#define AXIS_COMMAND_MOTION_MODE 2 +#define AXIS_COMMAND_TOOL_LENGTH_OFFSET 3 // *Undefined but required + +// Declare gc extern struct +parser_state_t gc_state; +parser_block_t gc_block; + +#define FAIL(status) return(status); + + +void gc_init() +{ + memset(&gc_state, 0, sizeof(parser_state_t)); + + // Load default G54 coordinate system. + if (!(settings_read_coord_data(gc_state.modal.coord_select,gc_state.coord_system))) { + report_status_message(STATUS_SETTING_READ_FAIL); + } +} + + +// Sets g-code parser position in mm. Input in steps. Called by the system abort and hard +// limit pull-off routines. +void gc_sync_position() +{ + system_convert_array_steps_to_mpos(gc_state.position,sys.position); +} + + +static uint8_t gc_check_same_position(float *pos_a, float *pos_b) +{ + uint8_t idx; + for (idx=0; idx 'Z')) { FAIL(STATUS_EXPECTED_COMMAND_LETTER); } // [Expected word letter] + char_counter++; + if (!read_float(line, &char_counter, &value)) { FAIL(STATUS_BAD_NUMBER_FORMAT); } // [Expected word value] + + // Convert values to smaller uint8 significand and mantissa values for parsing this word. + // NOTE: Mantissa is multiplied by 100 to catch non-integer command values. This is more + // accurate than the NIST gcode requirement of x10 when used for commands, but not quite + // accurate enough for value words that require integers to within 0.0001. This should be + // a good enough comprimise and catch most all non-integer errors. To make it compliant, + // we would simply need to change the mantissa to int16, but this add compiled flash space. + // Maybe update this later. + int_value = trunc(value); + mantissa = round(100*(value - int_value)); // Compute mantissa for Gxx.x commands. + // NOTE: Rounding must be used to catch small floating point errors. + + // Check if the g-code word is supported or errors due to modal group violations or has + // been repeated in the g-code block. If ok, update the command or record its value. + switch(letter) { + + /* 'G' and 'M' Command Words: Parse commands and check for modal group violations. + NOTE: Modal group numbers are defined in Table 4 of NIST RS274-NGC v3, pg.20 */ + + case 'G': + // Determine 'G' command and its modal group + rtn = uarm_execute_g_cmd( int_value, line+char_counter, &char_counter ); + if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } + + + switch(int_value) { + case 10: case 28: case 30: case 92: + // Check for G10/28/30/92 being called with G0/1/2/3/38 on same block. + // * G43.1 is also an axis command but is not explicitly defined this way. + if (mantissa == 0) { // Ignore G28.1, G30.1, and G92.1 + if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] + axis_command = AXIS_COMMAND_NON_MODAL; + } + // No break. Continues to next line. + case 4: case 53: + word_bit = MODAL_GROUP_G0; + switch(int_value) { + case 4: gc_block.non_modal_command = NON_MODAL_DWELL; break; // G4 + case 10: gc_block.non_modal_command = NON_MODAL_SET_COORDINATE_DATA; break; // G10 + case 28: + switch(mantissa) { + case 0: gc_block.non_modal_command = NON_MODAL_GO_HOME_0; break; // G28 + case 10: gc_block.non_modal_command = NON_MODAL_SET_HOME_0; break; // G28.1 + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G28.x command] + } + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + case 30: + switch(mantissa) { + case 0: gc_block.non_modal_command = NON_MODAL_GO_HOME_1; break; // G30 + case 10: gc_block.non_modal_command = NON_MODAL_SET_HOME_1; break; // G30.1 + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G30.x command] + } + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + case 53: gc_block.non_modal_command = NON_MODAL_ABSOLUTE_OVERRIDE; break; // G53 + case 92: + switch(mantissa) { + case 0: gc_block.non_modal_command = NON_MODAL_SET_COORDINATE_OFFSET; break; // G92 + case 10: gc_block.non_modal_command = NON_MODAL_RESET_COORDINATE_OFFSET; break; // G92.1 + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G92.x command] + } + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + } + break; + case 0: case 1: case 2: case 3: case 38: + // Check for G0/1/2/3/38 being called with G10/28/30/92 on same block. + // * G43.1 is also an axis command but is not explicitly defined this way. + if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] + axis_command = AXIS_COMMAND_MOTION_MODE; + // No break. Continues to next line. + case 80: + word_bit = MODAL_GROUP_G1; + switch(int_value) { + case 0: gc_block.modal.motion = MOTION_MODE_SEEK; break; // G0 + case 1: gc_block.modal.motion = MOTION_MODE_LINEAR; break; // G1 + case 2: gc_block.modal.motion = MOTION_MODE_CW_ARC; break; // G2 + case 3: gc_block.modal.motion = MOTION_MODE_CCW_ARC; break; // G3 + case 38: + switch(mantissa) { + case 20: gc_block.modal.motion = MOTION_MODE_PROBE_TOWARD; break; // G38.2 + case 30: gc_block.modal.motion = MOTION_MODE_PROBE_TOWARD_NO_ERROR; break; // G38.3 + case 40: gc_block.modal.motion = MOTION_MODE_PROBE_AWAY; break; // G38.4 + case 50: gc_block.modal.motion = MOTION_MODE_PROBE_AWAY_NO_ERROR; break; // G38.5 + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G38.x command] + } + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + case 80: gc_block.modal.motion = MOTION_MODE_NONE; break; // G80 + } + break; + case 17: case 18: case 19: + word_bit = MODAL_GROUP_G2; + switch(int_value) { + case 17: gc_block.modal.plane_select = PLANE_SELECT_XY; break; + case 18: gc_block.modal.plane_select = PLANE_SELECT_ZX; break; + case 19: gc_block.modal.plane_select = PLANE_SELECT_YZ; break; + } + break; + case 90: case 91: + if (mantissa == 0) { + word_bit = MODAL_GROUP_G3; + if (int_value == 90) { gc_block.modal.distance = DISTANCE_MODE_ABSOLUTE; } // G90 + else { gc_block.modal.distance = DISTANCE_MODE_INCREMENTAL; } // G91 + } else { + word_bit = MODAL_GROUP_G4; + if ((mantissa != 10) || (int_value == 90)) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G90.1 not supported] + mantissa = 0; // Set to zero to indicate valid non-integer G command. + // Otherwise, arc IJK incremental mode is default. G91.1 does nothing. + } + break; + case 93: case 94: + word_bit = MODAL_GROUP_G5; + if (int_value == 93) { gc_block.modal.feed_rate = FEED_RATE_MODE_INVERSE_TIME; } // G93 + else { gc_block.modal.feed_rate = FEED_RATE_MODE_UNITS_PER_MIN; } // G94 + break; + case 20: case 21: + word_bit = MODAL_GROUP_G6; + if (int_value == 20) { gc_block.modal.units = UNITS_MODE_INCHES; } // G20 + else { gc_block.modal.units = UNITS_MODE_MM; } // G21 + break; + case 40: + word_bit = MODAL_GROUP_G7; + // NOTE: Not required since cutter radius compensation is always disabled. Only here + // to support G40 commands that often appear in g-code program headers to setup defaults. + // gc_block.modal.cutter_comp = CUTTER_COMP_DISABLE; // G40 + break; + case 43: case 49: + word_bit = MODAL_GROUP_G8; + // NOTE: The NIST g-code standard vaguely states that when a tool length offset is changed, + // there cannot be any axis motion or coordinate offsets updated. Meaning G43, G43.1, and G49 + // all are explicit axis commands, regardless if they require axis words or not. + if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] } + axis_command = AXIS_COMMAND_TOOL_LENGTH_OFFSET; + if (int_value == 49) { // G49 + gc_block.modal.tool_length = TOOL_LENGTH_OFFSET_CANCEL; + } else if (mantissa == 10) { // G43.1 + gc_block.modal.tool_length = TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC; + } else { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [Unsupported G43.x command] + mantissa = 0; // Set to zero to indicate valid non-integer G command. + break; + case 54: case 55: case 56: case 57: case 58: case 59: + // NOTE: G59.x are not supported. (But their int_values would be 60, 61, and 62.) + word_bit = MODAL_GROUP_G12; + gc_block.modal.coord_select = int_value-54; // Shift to array indexing. + break; + case 61: + word_bit = MODAL_GROUP_G13; + if (mantissa != 0) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G61.1 not supported] + // gc_block.modal.control = CONTROL_MODE_EXACT_PATH; // G61 + break; + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G command] + } + if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [Unsupported or invalid Gxx.x command] + // Check for more than one command per modal group violations in the current block + // NOTE: Variable 'word_bit' is always assigned, if the command is valid. + if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } + command_words |= bit(word_bit); + break; + + case 'M': + + // Determine 'M' command and its modal group + if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [No Mxx.x commands] + + rtn = uarm_execute_m_cmd( int_value, line+char_counter, &char_counter ); + if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } + + switch(int_value) { + case 0: case 1: case 2: case 30: + word_bit = MODAL_GROUP_M4; + switch(int_value) { + case 0: gc_block.modal.program_flow = PROGRAM_FLOW_PAUSED; break; // Program pause + case 1: break; // Optional stop not supported. Ignore. + case 2: case 30: gc_block.modal.program_flow = PROGRAM_FLOW_COMPLETED; break; // Program end and reset + } + break; + #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN + case 4: + #endif + case 3: case 5: + word_bit = MODAL_GROUP_M7; + switch(int_value) { + case 3: gc_block.modal.spindle = SPINDLE_ENABLE_CW; break; + #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN + case 4: gc_block.modal.spindle = SPINDLE_ENABLE_CCW; break; + #endif + case 5: gc_block.modal.spindle = SPINDLE_DISABLE; break; + } + break; + #ifdef ENABLE_M7 + case 7: + #endif + case 8: case 9: + word_bit = MODAL_GROUP_M8; + switch(int_value) { + #ifdef ENABLE_M7 + case 7: gc_block.modal.coolant = COOLANT_MIST_ENABLE; break; + #endif + case 8: gc_block.modal.coolant = COOLANT_FLOOD_ENABLE; break; + case 9: gc_block.modal.coolant = COOLANT_DISABLE; break; + } + break; + default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported M command] + } + + // Check for more than one command per modal group violations in the current block + // NOTE: Variable 'word_bit' is always assigned, if the command is valid. + if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } + command_words |= bit(word_bit); + break; + case 'P': + if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [No Mxx.x commands] + rtn = uarm_execute_p_cmd( int_value, line+char_counter, &char_counter ); + if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } + + if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } + command_words |= bit(word_bit); + break; + // NOTE: All remaining letters assign values. + default: + + /* Non-Command Words: This initial parsing phase only checks for repeats of the remaining + legal g-code words and stores their value. Error-checking is performed later since some + words (I,J,K,L,P,R) have multiple connotations and/or depend on the issued commands. */ + switch(letter){ + // case 'A': // Not supported + // case 'B': // Not supported + // case 'C': // Not supported + // case 'D': // Not supported + case 'F': word_bit = WORD_F; gc_block.values.f = value; break; + // case 'H': // Not supported + case 'I': word_bit = WORD_I; gc_block.values.ijk[X_AXIS] = value; ijk_words |= (1< MAX_LINE_NUMBER) { FAIL(STATUS_GCODE_INVALID_LINE_NUMBER); } // [Exceeds max line number] + } + // bit_false(value_words,bit(WORD_N)); // NOTE: Single-meaning value word. Set at end of error-checking. + + // Track for unused words at the end of error-checking. + // NOTE: Single-meaning value words are removed all at once at the end of error-checking, because + // they are always used when present. This was done to save a few bytes of flash. For clarity, the + // single-meaning value words may be removed as they are used. Also, axis words are treated in the + // same way. If there is an explicit/implicit axis command, XYZ words are always used and are + // are removed at the end of error-checking. + + // [1. Comments ]: MSG's NOT SUPPORTED. Comment handling performed by protocol. + + // [2. Set feed rate mode ]: G93 F word missing with G1,G2/3 active, implicitly or explicitly. Feed rate + // is not defined after switching to G94 from G93. + if (gc_block.modal.feed_rate == FEED_RATE_MODE_INVERSE_TIME) { // = G93 + // NOTE: G38 can also operate in inverse time, but is undefined as an error. Missing F word check added here. + if (axis_command == AXIS_COMMAND_MOTION_MODE) { + if ((gc_block.modal.motion != MOTION_MODE_NONE) || (gc_block.modal.motion != MOTION_MODE_SEEK)) { + if (bit_isfalse(value_words,bit(WORD_F))) { FAIL(STATUS_GCODE_UNDEFINED_FEED_RATE); } // [F word missing] + } + } + // NOTE: It seems redundant to check for an F word to be passed after switching from G94 to G93. We would + // accomplish the exact same thing if the feed rate value is always reset to zero and undefined after each + // inverse time block, since the commands that use this value already perform undefined checks. This would + // also allow other commands, following this switch, to execute and not error out needlessly. This code is + // combined with the above feed rate mode and the below set feed rate error-checking. + + // [3. Set feed rate ]: F is negative (done.) + // - In inverse time mode: Always implicitly zero the feed rate value before and after block completion. + // NOTE: If in G93 mode or switched into it from G94, just keep F value as initialized zero or passed F word + // value in the block. If no F word is passed with a motion command that requires a feed rate, this will error + // out in the motion modes error-checking. However, if no F word is passed with NO motion command that requires + // a feed rate, we simply move on and the state feed rate value gets updated to zero and remains undefined. + } else { // = G94 + // - In units per mm mode: If F word passed, ensure value is in mm/min, otherwise push last state value. + if (gc_state.modal.feed_rate == FEED_RATE_MODE_UNITS_PER_MIN) { // Last state is also G94 + if (bit_istrue(value_words,bit(WORD_F))) { + if (gc_block.modal.units == UNITS_MODE_INCHES) { gc_block.values.f *= MM_PER_INCH; } + } else { + gc_block.values.f = gc_state.feed_rate; // Push last state feed rate + } + } // Else, switching to G94 from G93, so don't push last state feed rate. Its undefined or the passed F word value. + } + // bit_false(value_words,bit(WORD_F)); // NOTE: Single-meaning value word. Set at end of error-checking. + + // [4. Set spindle speed ]: S is negative (done.) + if (bit_isfalse(value_words,bit(WORD_S))) { gc_block.values.s = gc_state.spindle_speed; } + // bit_false(value_words,bit(WORD_S)); // NOTE: Single-meaning value word. Set at end of error-checking. + + // [5. Select tool ]: NOT SUPPORTED. Only tracks value. T is negative (done.) Not an integer. Greater than max tool value. + // bit_false(value_words,bit(WORD_T)); // NOTE: Single-meaning value word. Set at end of error-checking. + + // [6. Change tool ]: N/A + // [7. Spindle control ]: N/A + // [8. Coolant control ]: N/A + // [9. Enable/disable feed rate or spindle overrides ]: NOT SUPPORTED. + + // [10. Dwell ]: P value missing. P is negative (done.) NOTE: See below. + if (gc_block.non_modal_command == NON_MODAL_DWELL) { + if (bit_isfalse(value_words,bit(WORD_P))) { FAIL(STATUS_GCODE_VALUE_WORD_MISSING); } // [P word missing] + bit_false(value_words,bit(WORD_P)); + } + + // [11. Set active plane ]: N/A + switch (gc_block.modal.plane_select) { + case PLANE_SELECT_XY: + axis_0 = X_AXIS; + axis_1 = Y_AXIS; + axis_linear = Z_AXIS; + break; + case PLANE_SELECT_ZX: + axis_0 = Z_AXIS; + axis_1 = X_AXIS; + axis_linear = Y_AXIS; + break; + default: // case PLANE_SELECT_YZ: + axis_0 = Y_AXIS; + axis_1 = Z_AXIS; + axis_linear = X_AXIS; + } + + // [12. Set length units ]: N/A + // Pre-convert XYZ coordinate values to millimeters, if applicable. + uint8_t idx; + if (gc_block.modal.units == UNITS_MODE_INCHES) { + for (idx=0; idx N_COORDINATE_SYSTEM) { FAIL(STATUS_GCODE_UNSUPPORTED_COORD_SYS); } // [Greater than N sys] + if (gc_state.modal.coord_select != gc_block.modal.coord_select) { + if (!(settings_read_coord_data(gc_block.modal.coord_select,coordinate_data))) { FAIL(STATUS_SETTING_READ_FAIL); } + } + } + + // [16. Set path control mode ]: N/A. Only G61. G61.1 and G64 NOT SUPPORTED. + // [17. Set distance mode ]: N/A. Only G91.1. G90.1 NOT SUPPORTED. + // [18. Set retract mode ]: NOT SUPPORTED. + + // [19. Remaining non-modal actions ]: Check go to predefined position, set G10, or set axis offsets. + // NOTE: We need to separate the non-modal commands that are axis word-using (G10/G28/G30/G92), as these + // commands all treat axis words differently. G10 as absolute offsets or computes current position as + // the axis value, G92 similarly to G10 L20, and G28/30 as an intermediate target position that observes + // all the current coordinate system and G92 offsets. + switch (gc_block.non_modal_command) { + case NON_MODAL_SET_COORDINATE_DATA: + // [G10 Errors]: L missing and is not 2 or 20. P word missing. (Negative P value done.) + // [G10 L2 Errors]: R word NOT SUPPORTED. P value not 0 to nCoordSys(max 9). Axis words missing. + // [G10 L20 Errors]: P must be 0 to nCoordSys(max 9). Axis words missing. + if (!axis_words) { FAIL(STATUS_GCODE_NO_AXIS_WORDS) }; // [No axis words] + if (bit_isfalse(value_words,((1< N_COORDINATE_SYSTEM) { FAIL(STATUS_GCODE_UNSUPPORTED_COORD_SYS); } // [Greater than N sys] + if (gc_block.values.l != 20) { + if (gc_block.values.l == 2) { + if (bit_istrue(value_words,bit(WORD_R))) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G10 L2 R not supported] + } else { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [Unsupported L] + } + bit_false(value_words,(bit(WORD_L)|bit(WORD_P))); + + // Determine coordinate system to change and try to load from EEPROM. + if (coord_select > 0) { coord_select--; } // Adjust P1-P6 index to EEPROM coordinate data indexing. + else { coord_select = gc_block.modal.coord_select; } // Index P0 as the active coordinate system + if (!settings_read_coord_data(coord_select,parameter_data)) { FAIL(STATUS_SETTING_READ_FAIL); } // [EEPROM read fail] + + // Pre-calculate the coordinate data changes. NOTE: Uses parameter_data since coordinate_data may be in use by G54-59. + for (idx=0; idx C -----------------+--------------- T <- [x,y] + | <------ d/2 ---->| + + C - Current position + T - Target position + O - center of circle that pass through both C and T + d - distance from C to T + r - designated radius + h - distance from center of CT to O + + Expanding the equations: + + d -> sqrt(x^2 + y^2) + h -> sqrt(4 * r^2 - x^2 - y^2)/2 + i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 + j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 + + Which can be written: + + i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 + j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 + + Which we for size and speed reasons optimize to: + + h_x2_div_d = sqrt(4 * r^2 - x^2 - y^2)/sqrt(x^2 + y^2) + i = (x - (y * h_x2_div_d))/2 + j = (y + (x * h_x2_div_d))/2 + */ + + // First, use h_x2_div_d to compute 4*h^2 to check if it is negative or r is smaller + // than d. If so, the sqrt of a negative number is complex and error out. + float h_x2_div_d = 4.0 * gc_block.values.r*gc_block.values.r - x*x - y*y; + + if (h_x2_div_d < 0) { FAIL(STATUS_GCODE_ARC_RADIUS_ERROR); } // [Arc radius error] + + // Finish computing h_x2_div_d. + h_x2_div_d = -sqrt(h_x2_div_d)/hypot_f(x,y); // == -(h * 2 / d) + // Invert the sign of h_x2_div_d if the circle is counter clockwise (see sketch below) + if (gc_block.modal.motion == MOTION_MODE_CCW_ARC) { h_x2_div_d = -h_x2_div_d; } + + /* The counter clockwise circle lies to the left of the target direction. When offset is positive, + the left hand circle will be generated - when it is negative the right hand circle is generated. + + T <-- Target position + + ^ + Clockwise circles with this center | Clockwise circles with this center will have + will have > 180 deg of angular travel | < 180 deg of angular travel, which is a good thing! + \ | / + center of arc when h_x2_div_d is positive -> x <----- | -----> x <- center of arc when h_x2_div_d is negative + | + | + + C <-- Current position + */ + // Negative R is g-code-alese for "I want a circle with more than 180 degrees of travel" (go figure!), + // even though it is advised against ever generating such circles in a single line of g-code. By + // inverting the sign of h_x2_div_d the center of the circles is placed on the opposite side of the line of + // travel and thus we get the unadvisably long arcs as prescribed. + if (gc_block.values.r < 0) { + h_x2_div_d = -h_x2_div_d; + gc_block.values.r = -gc_block.values.r; // Finished with r. Set to positive for mc_arc + } + // Complete the operation by calculating the actual center of the arc + gc_block.values.ijk[axis_0] = 0.5*(x-(y*h_x2_div_d)); + gc_block.values.ijk[axis_1] = 0.5*(y+(x*h_x2_div_d)); + + } else { // Arc Center Format Offset Mode + if (!(ijk_words & (bit(axis_0)|bit(axis_1)))) { FAIL(STATUS_GCODE_NO_OFFSETS_IN_PLANE); } // [No offsets in plane] + bit_false(value_words,(bit(WORD_I)|bit(WORD_J)|bit(WORD_K))); + + // Convert IJK values to proper units. + if (gc_block.modal.units == UNITS_MODE_INCHES) { + for (idx=0; idx 0.005) { + if (delta_r > 0.5) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Arc definition error] > 0.5mm + if (delta_r > (0.001*gc_block.values.r)) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Arc definition error] > 0.005mm AND 0.1% radius + } + } + break; + case MOTION_MODE_PROBE_TOWARD: case MOTION_MODE_PROBE_TOWARD_NO_ERROR: + case MOTION_MODE_PROBE_AWAY: case MOTION_MODE_PROBE_AWAY_NO_ERROR: + // [G38 Errors]: Target is same current. No axis words. Cutter compensation is enabled. Feed rate + // is undefined. Probe is triggered. NOTE: Probe check moved to probe cycle. Instead of returning + // an error, it issues an alarm to prevent further motion to the probe. It's also done there to + // allow the planner buffer to empty and move off the probe trigger before another probing cycle. + if (!axis_words) { FAIL(STATUS_GCODE_NO_AXIS_WORDS); } // [No axis words] + if (gc_check_same_position(gc_state.position, gc_block.values.xyz)) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Invalid target] + break; + } + } + } + + // [21. Program flow ]: No error checks required. + + // [0. Non-specific error-checks]: Complete unused value words check, i.e. IJK used when in arc + // radius mode, or axis words that aren't used in the block. + bit_false(value_words,(bit(WORD_N)|bit(WORD_F)|bit(WORD_S)|bit(WORD_T))); // Remove single-meaning value words. + if (axis_command) { bit_false(value_words,(bit(WORD_X)|bit(WORD_Y)|bit(WORD_Z))); } // Remove axis words. + if (value_words) { FAIL(STATUS_GCODE_UNUSED_WORDS); } // [Unused words] + + + /* ------------------------------------------------------------------------------------- + STEP 4: EXECUTE!! + Assumes that all error-checking has been completed and no failure modes exist. We just + need to update the state and execute the block according to the order-of-execution. + */ + + // [0. Non-specific/common error-checks and miscellaneous setup]: + gc_state.line_number = gc_block.values.n; + + // [1. Comments feedback ]: NOT SUPPORTED + + // [2. Set feed rate mode ]: + gc_state.modal.feed_rate = gc_block.modal.feed_rate; + + // [3. Set feed rate ]: + gc_state.feed_rate = gc_block.values.f; // Always copy this value. See feed rate error-checking. + + // [4. Set spindle speed ]: + if (gc_state.spindle_speed != gc_block.values.s) { + // Update running spindle only if not in check mode and not already enabled. + if (gc_state.modal.spindle != SPINDLE_DISABLE) { spindle_run(gc_state.modal.spindle, gc_block.values.s); } + gc_state.spindle_speed = gc_block.values.s; + } + + // [5. Select tool ]: NOT SUPPORTED. Only tracks tool value. + gc_state.tool = gc_block.values.t; + + // [6. Change tool ]: NOT SUPPORTED + + // [7. Spindle control ]: + if (gc_state.modal.spindle != gc_block.modal.spindle) { + // Update spindle control and apply spindle speed when enabling it in this block. + spindle_run(gc_block.modal.spindle, gc_state.spindle_speed); + gc_state.modal.spindle = gc_block.modal.spindle; + } + + // [8. Coolant control ]: + if (gc_state.modal.coolant != gc_block.modal.coolant) { + coolant_run(gc_block.modal.coolant); + gc_state.modal.coolant = gc_block.modal.coolant; + } + + // [9. Enable/disable feed rate or spindle overrides ]: NOT SUPPORTED + + // [10. Dwell ]: + if (gc_block.non_modal_command == NON_MODAL_DWELL) { mc_dwell(gc_block.values.p); } + + // [11. Set active plane ]: + gc_state.modal.plane_select = gc_block.modal.plane_select; + + // [12. Set length units ]: + gc_state.modal.units = gc_block.modal.units; + + // [13. Cutter radius compensation ]: G41/42 NOT SUPPORTED + // gc_state.modal.cutter_comp = gc_block.modal.cutter_comp; // NOTE: Not needed since always disabled. + + // [14. Cutter length compensation ]: G43.1 and G49 supported. G43 NOT SUPPORTED. + // NOTE: If G43 were supported, its operation wouldn't be any different from G43.1 in terms + // of execution. The error-checking step would simply load the offset value into the correct + // axis of the block XYZ value array. + if (axis_command == AXIS_COMMAND_TOOL_LENGTH_OFFSET ) { // Indicates a change. + gc_state.modal.tool_length = gc_block.modal.tool_length; + if (gc_state.modal.tool_length == TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC) { // G43.1 + gc_state.tool_length_offset = gc_block.values.xyz[TOOL_LENGTH_OFFSET_AXIS]; + } else { // G49 + gc_state.tool_length_offset = 0.0; + } + } + + // [15. Coordinate system selection ]: + if (gc_state.modal.coord_select != gc_block.modal.coord_select) { + gc_state.modal.coord_select = gc_block.modal.coord_select; + memcpy(gc_state.coord_system,coordinate_data,sizeof(coordinate_data)); + } + + // [16. Set path control mode ]: G61.1/G64 NOT SUPPORTED + // gc_state.modal.control = gc_block.modal.control; // NOTE: Always default. + + // [17. Set distance mode ]: + gc_state.modal.distance = gc_block.modal.distance; + + // [18. Set retract mode ]: NOT SUPPORTED + + // [19. Go to predefined position, Set G10, or Set axis offsets ]: + + uint8_t rtn_res = (uint8_t)STATUS_OK; + switch(gc_block.non_modal_command) { + case NON_MODAL_SET_COORDINATE_DATA: + settings_write_coord_data(coord_select,parameter_data); + // Update system coordinate system if currently active. + if (gc_state.modal.coord_select == coord_select) { memcpy(gc_state.coord_system,parameter_data,sizeof(parameter_data)); } + break; + case NON_MODAL_GO_HOME_0: case NON_MODAL_GO_HOME_1: + // Move to intermediate position before going home. Obeys current coordinate system and offsets + // and absolute and incremental modes. + if (axis_command) { + #ifdef USE_LINE_NUMBERS + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, false, gc_state.line_number); + #else + rtn_res= (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, false); + #endif + } + #ifdef USE_LINE_NUMBERS + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, parameter_data, gc_state.feed_rate, false, gc_state.line_number); + #else + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, parameter_data, gc_state.feed_rate, false); + #endif + memcpy(gc_state.position, parameter_data, sizeof(parameter_data)); + break; + case NON_MODAL_SET_HOME_0: + settings_write_coord_data(SETTING_INDEX_G28,gc_state.position); + break; + case NON_MODAL_SET_HOME_1: + settings_write_coord_data(SETTING_INDEX_G30,gc_state.position); + break; + case NON_MODAL_SET_COORDINATE_OFFSET: + memcpy(gc_state.coord_offset,gc_block.values.xyz,sizeof(gc_block.values.xyz)); + break; + case NON_MODAL_RESET_COORDINATE_OFFSET: + clear_vector(gc_state.coord_offset); // Disable G92 offsets by zeroing offset vector. + break; + } + + + // [20. Motion modes ]: + // NOTE: Commands G10,G28,G30,G92 lock out and prevent axis words from use in motion modes. + // Enter motion modes only if there are axis words or a motion mode command word in the block. + gc_state.modal.motion = gc_block.modal.motion; + if (gc_state.modal.motion != MOTION_MODE_NONE) { + if (axis_command == AXIS_COMMAND_MOTION_MODE) { + switch (gc_state.modal.motion) { + case MOTION_MODE_SEEK: + #ifdef USE_LINE_NUMBERS + rtn_res = (uint8_t)mc_line(MOTION_MODE_SEEK, gc_block.values.xyz, gc_state.feed_rate, false, gc_state.line_number); + #else + rtn_res = (uint8_t)mc_line(MOTION_MODE_SEEK, gc_block.values.xyz, gc_state.feed_rate, false); + #endif + break; + case MOTION_MODE_LINEAR: + #ifdef USE_LINE_NUMBERS + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, gc_state.line_number); + #else + rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR,gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate); + #endif + break; + case MOTION_MODE_CW_ARC: + #ifdef USE_LINE_NUMBERS + mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, + gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, true, gc_state.line_number); + #else + mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, + gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, true); + #endif + break; + case MOTION_MODE_CCW_ARC: + #ifdef USE_LINE_NUMBERS + mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, + gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, false, gc_state.line_number); + #else + mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, + gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, false); + #endif + break; + case MOTION_MODE_PROBE_TOWARD: + // NOTE: gc_block.values.xyz is returned from mc_probe_cycle with the updated position value. So + // upon a successful probing cycle, the machine position and the returned value should be the same. + #ifdef USE_LINE_NUMBERS + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, false, gc_state.line_number); + #else + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, false); + #endif + break; + case MOTION_MODE_PROBE_TOWARD_NO_ERROR: + #ifdef USE_LINE_NUMBERS + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, true, gc_state.line_number); + #else + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, true); + #endif + break; + case MOTION_MODE_PROBE_AWAY: + #ifdef USE_LINE_NUMBERS + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, false, gc_state.line_number); + #else + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, false); + #endif + break; + case MOTION_MODE_PROBE_AWAY_NO_ERROR: + #ifdef USE_LINE_NUMBERS + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, true, gc_state.line_number); + #else + mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, true); + #endif + } + + // As far as the parser is concerned, the position is now == target. In reality the + // motion control system might still be processing the action and the real tool position + // in any intermediate location. + memcpy(gc_state.position, gc_block.values.xyz, sizeof(gc_block.values.xyz)); // gc_state.position[] = gc_block.values.xyz[] + } + } + + // [21. Program flow ]: + // M0,M1,M2,M30: Perform non-running program flow actions. During a program pause, the buffer may + // refill and can only be resumed by the cycle start run-time command. + gc_state.modal.program_flow = gc_block.modal.program_flow; + if (gc_state.modal.program_flow) { + protocol_buffer_synchronize(); // Sync and finish all remaining buffered motions before moving on. + if (gc_state.modal.program_flow == PROGRAM_FLOW_PAUSED) { + if (sys.state != STATE_CHECK_MODE) { + bit_true_atomic(sys_rt_exec_state, EXEC_FEED_HOLD); // Use feed hold for program pause. + protocol_execute_realtime(); // Execute suspend. + } + } else { // == PROGRAM_FLOW_COMPLETED + // Upon program complete, only a subset of g-codes reset to certain defaults, according to + // LinuxCNC's program end descriptions and testing. Only modal groups [G-code 1,2,3,5,7,12] + // and [M-code 7,8,9] reset to [G1,G17,G90,G94,G40,G54,M5,M9,M48]. The remaining modal groups + // [G-code 4,6,8,10,13,14,15] and [M-code 4,5,6] and the modal words [F,S,T,H] do not reset. + gc_state.modal.motion = MOTION_MODE_LINEAR; + gc_state.modal.plane_select = PLANE_SELECT_XY; + gc_state.modal.distance = DISTANCE_MODE_ABSOLUTE; + gc_state.modal.feed_rate = FEED_RATE_MODE_UNITS_PER_MIN; + // gc_state.modal.cutter_comp = CUTTER_COMP_DISABLE; // Not supported. + gc_state.modal.coord_select = 0; // G54 + gc_state.modal.spindle = SPINDLE_DISABLE; + gc_state.modal.coolant = COOLANT_DISABLE; + // gc_state.modal.override = OVERRIDE_DISABLE; // Not supported. + + // Execute coordinate change and spindle/coolant stop. + if (sys.state != STATE_CHECK_MODE) { + if (!(settings_read_coord_data(gc_state.modal.coord_select,coordinate_data))) { FAIL(STATUS_SETTING_READ_FAIL); } + memcpy(gc_state.coord_system,coordinate_data,sizeof(coordinate_data)); + spindle_stop(); + coolant_stop(); + } + + report_feedback_message(MESSAGE_PROGRAM_END); + } + gc_state.modal.program_flow = PROGRAM_FLOW_RUNNING; // Reset program flow. + } + + // TODO: % to denote start of program. + return (rtn_res); +} + + +/* + Not supported: + + - Canned cycles + - Tool radius compensation + - A,B,C-axes + - Evaluation of expressions + - Variables + - Override control (TBD) + - Tool changes + - Switches + + (*) Indicates optional parameter, enabled through config.h and re-compile + group 0 = {G92.2, G92.3} (Non modal: Cancel and re-enable G92 offsets) + group 1 = {G81 - G89} (Motion modes: Canned cycles) + group 4 = {M1} (Optional stop, ignored) + group 6 = {M6} (Tool change) + group 7 = {G41, G42} cutter radius compensation (G40 is supported) + group 8 = {G43} tool length offset (G43.1/G49 are supported) + group 8 = {*M7} enable mist coolant (* Compile-option) + group 9 = {M48, M49} enable/disable feed and speed override switches + group 10 = {G98, G99} return mode canned cycles + group 13 = {G61.1, G64} path control mode (G61 is supported) +*/ diff --git a/Source code/gcode.h b/Source code/gcode.h new file mode 100755 index 0000000..9a289af --- /dev/null +++ b/Source code/gcode.h @@ -0,0 +1,212 @@ +/* + gcode.h - rs274/ngc parser. + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef gcode_h +#define gcode_h + + +// Define modal group internal numbers for checking multiple command violations and tracking the +// type of command that is called in the block. A modal group is a group of g-code commands that are +// mutually exclusive, or cannot exist on the same line, because they each toggle a state or execute +// a unique motion. These are defined in the NIST RS274-NGC v3 g-code standard, available online, +// and are similar/identical to other g-code interpreters by manufacturers (Haas,Fanuc,Mazak,etc). +// NOTE: Modal group define values must be sequential and starting from zero. +#define MODAL_GROUP_G0 0 // [G4,G10,G28,G28.1,G30,G30.1,G53,G92,G92.1] Non-modal +#define MODAL_GROUP_G1 1 // [G0,G1,G2,G3,G38.2,G38.3,G38.4,G38.5,G80] Motion +#define MODAL_GROUP_G2 2 // [G17,G18,G19] Plane selection +#define MODAL_GROUP_G3 3 // [G90,G91] Distance mode +#define MODAL_GROUP_G4 4 // [G91.1] Arc IJK distance mode +#define MODAL_GROUP_G5 5 // [G93,G94] Feed rate mode +#define MODAL_GROUP_G6 6 // [G20,G21] Units +#define MODAL_GROUP_G7 7 // [G40] Cutter radius compensation mode. G41/42 NOT SUPPORTED. +#define MODAL_GROUP_G8 8 // [G43.1,G49] Tool length offset +#define MODAL_GROUP_G12 9 // [G54,G55,G56,G57,G58,G59] Coordinate system selection +#define MODAL_GROUP_G13 10 // [G61] Control mode + +#define MODAL_GROUP_M4 11 // [M0,M1,M2,M30] Stopping +#define MODAL_GROUP_M7 12 // [M3,M4,M5] Spindle turning +#define MODAL_GROUP_M8 13 // [M7,M8,M9] Coolant control + +// #define OTHER_INPUT_F 14 +// #define OTHER_INPUT_S 15 +// #define OTHER_INPUT_T 16 + +// Define command actions for within execution-type modal groups (motion, stopping, non-modal). Used +// internally by the parser to know which command to execute. + +// Modal Group G0: Non-modal actions +#define NON_MODAL_NO_ACTION 0 // (Default: Must be zero) +#define NON_MODAL_DWELL 1 // G4 +#define NON_MODAL_SET_COORDINATE_DATA 2 // G10 +#define NON_MODAL_GO_HOME_0 3 // G28 +#define NON_MODAL_SET_HOME_0 4 // G28.1 +#define NON_MODAL_GO_HOME_1 5 // G30 +#define NON_MODAL_SET_HOME_1 6 // G30.1 +#define NON_MODAL_ABSOLUTE_OVERRIDE 7 // G53 +#define NON_MODAL_SET_COORDINATE_OFFSET 8 // G92 +#define NON_MODAL_RESET_COORDINATE_OFFSET 9 //G92.1 + +// Modal Group G1: Motion modes +#define MOTION_MODE_SEEK 0 // G0 (Default: Must be zero) +#define MOTION_MODE_LINEAR 1 // G1 +#define MOTION_MODE_CW_ARC 2 // G2 +#define MOTION_MODE_CCW_ARC 3 // G3 +#define MOTION_MODE_PROBE_TOWARD 4 // G38.2 NOTE: G38.2, G38.3, G38.4, G38.5 must be sequential. See report_gcode_modes(). +#define MOTION_MODE_PROBE_TOWARD_NO_ERROR 5 // G38.3 +#define MOTION_MODE_PROBE_AWAY 6 // G38.4 +#define MOTION_MODE_PROBE_AWAY_NO_ERROR 7 // G38.5 +#define MOTION_MODE_NONE 8 // G80 + +// Modal Group G2: Plane select +#define PLANE_SELECT_XY 0 // G17 (Default: Must be zero) +#define PLANE_SELECT_ZX 1 // G18 +#define PLANE_SELECT_YZ 2 // G19 + +// Modal Group G3: Distance mode +#define DISTANCE_MODE_ABSOLUTE 0 // G90 (Default: Must be zero) +#define DISTANCE_MODE_INCREMENTAL 1 // G91 + +// Modal Group G4: Arc IJK distance mode +#define DISTANCE_ARC_MODE_INCREMENTAL 0 // G91.1 (Default: Must be zero) + +// Modal Group M4: Program flow +#define PROGRAM_FLOW_RUNNING 0 // (Default: Must be zero) +#define PROGRAM_FLOW_PAUSED 1 // M0, M1 +#define PROGRAM_FLOW_COMPLETED 2 // M2, M30 + +// Modal Group G5: Feed rate mode +#define FEED_RATE_MODE_UNITS_PER_MIN 0 // G94 (Default: Must be zero) +#define FEED_RATE_MODE_INVERSE_TIME 1 // G93 + +// Modal Group G6: Units mode +#define UNITS_MODE_MM 0 // G21 (Default: Must be zero) +#define UNITS_MODE_INCHES 1 // G20 + +// Modal Group G7: Cutter radius compensation mode +#define CUTTER_COMP_DISABLE 0 // G40 (Default: Must be zero) + +// Modal Group G13: Control mode +#define CONTROL_MODE_EXACT_PATH 0 // G61 (Default: Must be zero) + +// Modal Group M7: Spindle control +#define SPINDLE_DISABLE 0 // M5 (Default: Must be zero) +#define SPINDLE_ENABLE_CW 1 // M3 +#define SPINDLE_ENABLE_CCW 2 // M4 + +// Modal Group M8: Coolant control +#define COOLANT_DISABLE 0 // M9 (Default: Must be zero) +#define COOLANT_MIST_ENABLE 1 // M7 +#define COOLANT_FLOOD_ENABLE 2 // M8 + +// Modal Group G8: Tool length offset +#define TOOL_LENGTH_OFFSET_CANCEL 0 // G49 (Default: Must be zero) +#define TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC 1 // G43.1 + +// Modal Group G12: Active work coordinate system +// N/A: Stores coordinate system value (54-59) to change to. + + +// Define parameter word mapping. +#define WORD_F 0 +#define WORD_I 1 +#define WORD_J 2 +#define WORD_K 3 +#define WORD_L 4 +#define WORD_N 5 +#define WORD_P 6 +#define WORD_R 7 +#define WORD_S 8 +#define WORD_T 9 +#define WORD_X 10 +#define WORD_Y 11 +#define WORD_Z 12 + + +// NOTE: When this struct is zeroed, the above defines set the defaults for the system. +typedef struct { + uint8_t motion; // {G0,G1,G2,G3,G38.2,G80} + uint8_t feed_rate; // {G93,G94} + uint8_t units; // {G20,G21} + uint8_t distance; // {G90,G91} + // uint8_t distance_arc; // {G91.1} NOTE: Don't track. Only default supported. + uint8_t plane_select; // {G17,G18,G19} + // uint8_t cutter_comp; // {G40} NOTE: Don't track. Only default supported. + uint8_t tool_length; // {G43.1,G49} + uint8_t coord_select; // {G54,G55,G56,G57,G58,G59} + // uint8_t control; // {G61} NOTE: Don't track. Only default supported. + uint8_t program_flow; // {M0,M1,M2,M30} + uint8_t coolant; // {M7,M8,M9} + uint8_t spindle; // {M3,M4,M5} +} gc_modal_t; + +typedef struct { + float f; // Feed + float ijk[3]; // I,J,K Axis arc offsets + uint8_t l; // G10 or canned cycles parameters + int32_t n; // Line number + float p; // G10 or dwell parameters + // float q; // G82 peck drilling + float r; // Arc radius + float s; // Spindle speed + uint8_t t; // Tool selection + float xyz[3]; // X,Y,Z Translational axes +} gc_values_t; + + +typedef struct { + gc_modal_t modal; + + float spindle_speed; // RPM + float feed_rate; // Millimeters/min + uint8_t tool; // Tracks tool number. NOT USED. + int32_t line_number; // Last line number sent + + float position[N_AXIS]; // Where the interpreter considers the tool to be at this point in the code + + float coord_system[N_AXIS]; // Current work coordinate system (G54+). Stores offset from absolute machine + // position in mm. Loaded from EEPROM when called. + float coord_offset[N_AXIS]; // Retains the G92 coordinate offset (work coordinates) relative to + // machine zero in mm. Non-persistent. Cleared upon reset and boot. + float tool_length_offset; // Tracks tool length offset value when enabled. +} parser_state_t; +extern parser_state_t gc_state; + +typedef struct { +// uint16_t command_words; // NOTE: If this bitflag variable fills, G and M words can be separated. +// uint16_t value_words; + + uint8_t non_modal_command; + gc_modal_t modal; + gc_values_t values; + +} parser_block_t; +extern parser_block_t gc_block; + +// Initialize the parser +void gc_init(); + +// Execute one block of rs275/ngc/g-code +uint8_t gc_execute_line(char *line); + +// Set g-code parser position. Input in steps. +void gc_sync_position(); + +#endif diff --git a/Source code/grbl.h b/Source code/grbl.h new file mode 100755 index 0000000..300f172 --- /dev/null +++ b/Source code/grbl.h @@ -0,0 +1,62 @@ +/* + grbl.h - main Grbl include file + Part of Grbl + + Copyright (c) 2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef grbl_h +#define grbl_h + +// Grbl versioning system +#define GRBL_VERSION "0.9j" +#define GRBL_VERSION_BUILD "20160726" + +// Define standard libraries used by Grbl. +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Define the Grbl system include files. NOTE: Do not alter organization. +#include "config.h" +#include "nuts_bolts.h" +#include "settings.h" +#include "system.h" +#include "defaults.h" +#include "cpu_map.h" +#include "coolant_control.h" +#include "eeprom.h" +#include "gcode.h" +#include "limits.h" +#include "motion_control.h" +#include "planner.h" +#include "print.h" +#include "probe.h" +#include "protocol.h" +#include "report.h" +#include "serial.h" +#include "spindle_control.h" +#include "stepper.h" + +#endif diff --git a/Source code/grblUpload/grblUpload.ino b/Source code/grblUpload/grblUpload.ino new file mode 100755 index 0000000..8ac87a7 --- /dev/null +++ b/Source code/grblUpload/grblUpload.ino @@ -0,0 +1,29 @@ +/*********************************************************************** +This sketch compiles and uploads Grbl to your 328p-based Arduino! + +To use: +- First make sure you have imported Grbl source code into your Arduino + IDE. There are details on our Github website on how to do this. + +- Select your Arduino Board and Serial Port in the Tools drop-down menu. + NOTE: Grbl only officially supports 328p-based Arduinos, like the Uno. + Using other boards will likely not work! + +- Then just click 'Upload'. That's it! + +For advanced users: + If you'd like to see what else Grbl can do, there are some additional + options for customization and features you can enable or disable. + Navigate your file system to where the Arduino IDE has stored the Grbl + source code files, open the 'config.h' file in your favorite text + editor. Inside are dozens of feature descriptions and #defines. Simply + comment or uncomment the #defines or alter their assigned values, save + your changes, and then click 'Upload' here. + +Copyright (c) 2015 Sungeun K. Jeon +Released under the MIT-license. See license.txt for details. +***********************************************************************/ + +#include "grbl.h" + +// Do not alter this file! \ No newline at end of file diff --git a/Source code/limits.c b/Source code/limits.c new file mode 100755 index 0000000..7c3680a --- /dev/null +++ b/Source code/limits.c @@ -0,0 +1,370 @@ +/* + limits.c - code pertaining to limit-switches and performing the homing cycle + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +// Homing axis search distance multiplier. Computed by this value times the cycle travel. +#ifndef HOMING_AXIS_SEARCH_SCALAR + #define HOMING_AXIS_SEARCH_SCALAR 1.5 // Must be > 1 to ensure limit switch will be engaged. +#endif +#ifndef HOMING_AXIS_LOCATE_SCALAR + #define HOMING_AXIS_LOCATE_SCALAR 5.0 // Must be > 1 to ensure limit switch is cleared. +#endif + +void limits_init() +{ + LIMIT_DDR &= ~(LIMIT_MASK); // Set as input pins + + #ifdef DISABLE_LIMIT_PIN_PULL_UP + LIMIT_PORT &= ~(LIMIT_MASK); // Normal low operation. Requires external pull-down. + #else + LIMIT_PORT |= (LIMIT_MASK); // Enable internal pull-up resistors. Normal high operation. + #endif + + if (bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)) { + LIMIT_PCMSK |= LIMIT_MASK; // Enable specific pins of the Pin Change Interrupt + PCICR |= (1 << LIMIT_INT); // Enable Pin Change Interrupt + } else { + limits_disable(); + } + + #ifdef ENABLE_SOFTWARE_DEBOUNCE + MCUSR &= ~(1< 0); + + // The active cycle axes should now be homed and machine limits have been located. By + // default, Grbl defines machine space as all negative, as do most CNCs. Since limit switches + // can be on either side of an axes, check and set axes machine zero appropriately. Also, + // set up pull-off maneuver from axes limit switches that have been homed. This provides + // some initial clearance off the switches and should also help prevent them from falsely + // triggering when hard limits are enabled or when more than one axes shares a limit pin. + int32_t set_axis_position; + // Set machine positions for homed limit switches. Don't update non-homed axes. + for (idx=0; idx -settings.max_travel[idx]) { sys.soft_limit = true; } + } else { + if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { sys.soft_limit = true; } + } + #else + // NOTE: max_travel is stored as negative + if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { sys.soft_limit = true; } + #endif + + if (sys.soft_limit) { + // Force feed hold if cycle is active. All buffered blocks are guaranteed to be within + // workspace volume so just come to a controlled stop so position is not lost. When complete + // enter alarm mode. + if (sys.state == STATE_CYCLE) { + bit_true_atomic(sys_rt_exec_state, EXEC_FEED_HOLD); + do { + protocol_execute_realtime(); + if (sys.abort) { return; } + } while ( sys.state != STATE_IDLE ); + } + + mc_reset(); // Issue system reset and ensure spindle and coolant are shutdown. + bit_true_atomic(sys_rt_exec_alarm, (EXEC_ALARM_SOFT_LIMIT|EXEC_CRITICAL_EVENT)); // Indicate soft limit critical event + protocol_execute_realtime(); // Execute to enter critical event loop and system abort + return; + } + } +} diff --git a/Source code/limits.h b/Source code/limits.h new file mode 100755 index 0000000..74512ce --- /dev/null +++ b/Source code/limits.h @@ -0,0 +1,41 @@ +/* + limits.h - code pertaining to limit-switches and performing the homing cycle + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef limits_h +#define limits_h + + +// Initialize the limits module +void limits_init(); + +// Disables hard limits. +void limits_disable(); + +// Returns limit state as a bit-wise uint8 variable. +uint8_t limits_get_state(); + +// Perform one portion of the homing cycle based on the input settings. +void limits_go_home(uint8_t cycle_mask); + +// Check for soft limit violations +void limits_soft_check(float *target); + +#endif \ No newline at end of file diff --git a/Source code/main.c b/Source code/main.c new file mode 100755 index 0000000..b91079b --- /dev/null +++ b/Source code/main.c @@ -0,0 +1,97 @@ +/* + main.c - An embedded CNC Controller with rs274/ngc (g-code) support + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +// Declare system global variable structure +system_t sys; + +#include "uarm_swift.h" + + +int main(void) +{ + // Initialize system upon power-up. + serial_init(); // Setup serial baud rate and interrupts + settings_init(); // Load Grbl settings from EEPROM + stepper_init(); // Configure stepper pins and interrupt timers + system_init(); // Configure pinout pins and pin-change interrupt + + uarm_swift_init(); + + memset(&sys, 0, sizeof(system_t)); // Clear all system variables + sys.abort = true; // Set abort to complete initialization + sei(); // Enable interrupts + + // Check for power-up and set system alarm if homing is enabled to force homing cycle + // by setting Grbl's alarm state. Alarm locks out all g-code commands, including the + // startup scripts, but allows access to settings and internal commands. Only a homing + // cycle '$H' or kill alarm locks '$X' will disable the alarm. + // NOTE: The startup script will run after successful completion of the homing cycle, but + // not after disabling the alarm locks. Prevents motion startup blocks from crashing into + // things uncontrollably. Very bad. + #ifdef HOMING_INIT_LOCK + if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { sys.state = STATE_ALARM; } + #endif + + // Force Grbl into an ALARM state upon a power-cycle or hard reset. + #ifdef FORCE_INITIALIZATION_ALARM + sys.state = STATE_ALARM; + #endif + + // Grbl initialization loop upon power-up or a system abort. For the latter, all processes + // will return to this loop to be cleanly re-initialized. + for(;;) { + + // TODO: Separate configure task that require interrupts to be disabled, especially upon + // a system abort and ensuring any active interrupts are cleanly reset. + + // Reset Grbl primary systems. + serial_reset_read_buffer(); // Clear serial read buffer + gc_init(); // Set g-code parser to default state + spindle_init(); + coolant_init(); + limits_init(); + probe_init(); + plan_reset(); // Clear block buffer and planner variables + st_reset(); // Clear stepper subsystem variables. + + // Sync cleared gcode and planner positions to current system position. + plan_sync_position(); + gc_sync_position(); + + // Reset system variables. + sys.abort = false; + sys_rt_exec_state = 0; + sys_rt_exec_alarm = 0; + sys.suspend = false; + sys.soft_limit = false; + + // Start Grbl main loop. Processes program inputs and executes them. + protocol_main_loop(); + + } + return 0; /* Never reached */ +} + + + diff --git a/Source code/motion_control.c b/Source code/motion_control.c new file mode 100755 index 0000000..6636cab --- /dev/null +++ b/Source code/motion_control.c @@ -0,0 +1,446 @@ +/* + motion_control.c - high level interface for issuing motion commands + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + Copyright (c) 2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include "uarm_protocol.h" +#include "uarm_swift.h" +#include "uarm_coord_convert.h" + +// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second +// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in +// (1 minute)/feed_rate time. +// NOTE: This is the primary gateway to the grbl planner. All line motions, including arc line +// segments, must pass through this routine before being passed to the planner. The seperation of +// mc_line and plan_buffer_line is done primarily to place non-planner-type functions from being +// in the planner and to let backlash compensation or canned cycle integration simple and direct. +#ifdef USE_LINE_NUMBERS + uint8_t mc_line(uint8_t mode, float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number) +#else + uint8_t mc_line(uint8_t mode, float *target, float feed_rate, uint8_t invert_feed_rate) +#endif +{ + + // If enabled, check for soft limit violations. Placed here all line motions are picked up + // from everywhere in Grbl. + if (bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)) { limits_soft_check(target); } + + // If in check gcode mode, prevent motion by blocking planner. Soft limits still work. + if (sys.state == STATE_CHECK_MODE) { return; } + + // NOTE: Backlash compensation may be installed here. It will need direction info to track when + // to insert a backlash line motion(s) before the intended line motion and will require its own + // plan_check_full_buffer() and check for system abort loop. Also for position reporting + // backlash steps will need to be also tracked, which will need to be kept at a system level. + // There are likely some other things that will need to be tracked as well. However, we feel + // that backlash compensation should NOT be handled by Grbl itself, because there are a myriad + // of ways to implement it and can be effective or ineffective for different CNC machines. This + // would be better handled by the interface as a post-processor task, where the original g-code + // is translated and inserts backlash motions that best suits the machine. + // NOTE: Perhaps as a middle-ground, all that needs to be sent is a flag or special command that + // indicates to Grbl what is a backlash compensation motion, so that Grbl executes the move but + // doesn't update the machine position values. Since the position values used by the g-code + // parser and planner are separate from the system machine positions, this is doable. + + // If the buffer is full: good! That means we are well ahead of the robot. + // Remain in this loop until there is room in the buffer. + unsigned int divide_numbers = 0; + float current_coord[3]; + float final_angle[3]; + + float x= target[X_AXIS], y= target[Y_AXIS], z = target[Z_AXIS]; + + coord_effect2arm( &x, &y, &z ); // calculate the effect offset + coord_to_angle( x, y, z, + &final_angle[X_AXIS], &final_angle[Y_AXIS], &final_angle[Z_AXIS] ); // calculate final angle + +/* char l_str[20], r_str[20], b_str[20]; + dtostrf( final_angle[X_AXIS], 5, 4, l_str ); + dtostrf( final_angle[Y_AXIS], 5, 4, r_str ); + dtostrf( final_angle[Z_AXIS], 5, 4, b_str ); + + DB_PRINT_STR( "final_angle: %s, %s, %s\r\n", l_str, r_str, b_str ); */ + + if( is_angle_legal( final_angle[X_AXIS], final_angle[Y_AXIS], final_angle[Z_AXIS] ) == false ){ // check the angle + //DB_PRINT_STR( "E22 position cnan't reach\n" ); + //uarm.coord_error_flag = true; + return UARM_COORD_ERROR; + } + + step_to_coord( uarm.target_step[X_AXIS], uarm.target_step[Y_AXIS], uarm.target_step[Z_AXIS], + ¤t_coord[X_AXIS], ¤t_coord[Y_AXIS], ¤t_coord[Z_AXIS]); // calculate the current coord + settings_init(); + switch( mode ){ + case MOTION_MODE_SEEK: // 100 ){ feed_rate = 100; } + divide_numbers = sqrt((x - current_coord[X_AXIS])*(x - current_coord[X_AXIS]) + // unit is mm + (y - current_coord[Y_AXIS])*(y - current_coord[Y_AXIS]) + + (z - current_coord[Z_AXIS])*(z - current_coord[Z_AXIS])) * 30 / feed_rate; + + if( divide_numbers < 10 ){ divide_numbers = 10; } + + float accel = (0.005+feed_rate*0.02); + settings.acceleration[X_AXIS] = accel * 60 * 60; + settings.acceleration[Y_AXIS] = accel * 60 * 60; + settings.acceleration[Z_AXIS] = accel * 60 * 60; + if( settings.acceleration[Z_AXIS] >= 1.3*60*60 ){ + settings.acceleration[Z_AXIS] = 1.3 * 60 * 60; + } + break; + } + +// DB_PRINT_STR( "divide num : %d\r\n", divide_numbers ); + float delta_coord[3]; + delta_coord[X_AXIS] = (x - current_coord[X_AXIS]) / divide_numbers; // calculate delta coord + delta_coord[Y_AXIS] = (y - current_coord[Y_AXIS]) / divide_numbers; + delta_coord[Z_AXIS] = (z - current_coord[Z_AXIS]) / divide_numbers; + + float final_coord[3]; + float final_step[3]; + for( int i = 1; i <= divide_numbers; i++ ){ + final_coord[X_AXIS] = current_coord[X_AXIS] + delta_coord[X_AXIS] * i; + final_coord[Y_AXIS] = current_coord[Y_AXIS] + delta_coord[Y_AXIS] * i; + final_coord[Z_AXIS] = current_coord[Z_AXIS] + delta_coord[Z_AXIS] * i; + + uarm.coord_x = final_coord[X_AXIS]; + uarm.coord_y = final_coord[Y_AXIS]; + uarm.coord_z = final_coord[Z_AXIS]; + + coord_to_step( final_coord[X_AXIS], final_coord[Y_AXIS], final_coord[Z_AXIS], + &final_step[X_AXIS], &final_step[Y_AXIS], &final_step[Z_AXIS] ); + do { + protocol_execute_realtime(); // Check for any run-time commands + //report_parse_result(); + if (sys.abort) { return UARM_SYS_ABORT; } // Bail, if system abort. + if ( plan_check_full_buffer() ) { protocol_auto_cycle_start(); } // Auto-cycle start when buffer is full. + else { break; } + } while (1); + + uarm.target_step[X_AXIS] = final_step[X_AXIS]; + uarm.target_step[Y_AXIS] = final_step[Y_AXIS]; + uarm.target_step[Z_AXIS] = final_step[Z_AXIS]; + + final_step[X_AXIS] = (final_step[X_AXIS]) / (settings.steps_per_mm[X_AXIS]); + final_step[Y_AXIS] = (final_step[Y_AXIS]) / (settings.steps_per_mm[Y_AXIS]); + final_step[Z_AXIS] = (final_step[Z_AXIS]) / (settings.steps_per_mm[Z_AXIS]); + + plan_buffer_line(final_step, feed_rate, invert_feed_rate); + + //DB_PRINT_STR( "%d %d %d\r\n", final_step[X_AXIS], final_step[Y_AXIS], final_step[Z_AXIS] ); + uarm.run_flag = true; + + } + return STATUS_OK; +} + + +// Execute an arc in offset mode format. position == current xyz, target == target xyz, +// offset == offset from current xyz, axis_X defines circle plane in tool space, axis_linear is +// the direction of helical travel, radius == circle radius, isclockwise boolean. Used +// for vector transformation direction. +// The arc is approximated by generating a huge number of tiny, linear segments. The chordal tolerance +// of each segment is configured in settings.arc_tolerance, which is defined to be the maximum normal +// distance from segment to the circle when the end points both lie on the circle. +#ifdef USE_LINE_NUMBERS + void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, + uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc, int32_t line_number) +#else + void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, + uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc) +#endif +{ + float center_axis0 = position[axis_0] + offset[axis_0]; + float center_axis1 = position[axis_1] + offset[axis_1]; + float r_axis0 = -offset[axis_0]; // Radius vector from center to current location + float r_axis1 = -offset[axis_1]; + float rt_axis0 = target[axis_0] - center_axis0; + float rt_axis1 = target[axis_1] - center_axis1; + + // CCW angle between position and target from circle center. Only one atan2() trig computation required. + float angular_travel = atan2(r_axis0*rt_axis1-r_axis1*rt_axis0, r_axis0*rt_axis0+r_axis1*rt_axis1); + if (is_clockwise_arc) { // Correct atan2 output per direction + if (angular_travel >= -ARC_ANGULAR_TRAVEL_EPSILON) { angular_travel -= 2*M_PI; } + } else { + if (angular_travel <= ARC_ANGULAR_TRAVEL_EPSILON) { angular_travel += 2*M_PI; } + } + + // NOTE: Segment end points are on the arc, which can lead to the arc diameter being smaller by up to + // (2x) settings.arc_tolerance. For 99% of users, this is just fine. If a different arc segment fit + // is desired, i.e. least-squares, midpoint on arc, just change the mm_per_arc_segment calculation. + // For the intended uses of Grbl, this value shouldn't exceed 2000 for the strictest of cases. + uint16_t segments = floor(fabs(0.5*angular_travel*radius)/ + sqrt(settings.arc_tolerance*(2*radius - settings.arc_tolerance)) ); + + if (segments) { + // Multiply inverse feed_rate to compensate for the fact that this movement is approximated + // by a number of discrete segments. The inverse feed_rate should be correct for the sum of + // all segments. + if (invert_feed_rate) { feed_rate *= segments; } + + float theta_per_segment = angular_travel/segments; + float linear_per_segment = (target[axis_linear] - position[axis_linear])/segments; + + /* Vector rotation by transformation matrix: r is the original vector, r_T is the rotated vector, + and phi is the angle of rotation. Solution approach by Jens Geisler. + r_T = [cos(phi) -sin(phi); + sin(phi) cos(phi] * r ; + + For arc generation, the center of the circle is the axis of rotation and the radius vector is + defined from the circle center to the initial position. Each line segment is formed by successive + vector rotations. Single precision values can accumulate error greater than tool precision in rare + cases. So, exact arc path correction is implemented. This approach avoids the problem of too many very + expensive trig operations [sin(),cos(),tan()] which can take 100-200 usec each to compute. + + Small angle approximation may be used to reduce computation overhead further. A third-order approximation + (second order sin() has too much error) holds for most, if not, all CNC applications. Note that this + approximation will begin to accumulate a numerical drift error when theta_per_segment is greater than + ~0.25 rad(14 deg) AND the approximation is successively used without correction several dozen times. This + scenario is extremely unlikely, since segment lengths and theta_per_segment are automatically generated + and scaled by the arc tolerance setting. Only a very large arc tolerance setting, unrealistic for CNC + applications, would cause this numerical drift error. However, it is best to set N_ARC_CORRECTION from a + low of ~4 to a high of ~20 or so to avoid trig operations while keeping arc generation accurate. + + This approximation also allows mc_arc to immediately insert a line segment into the planner + without the initial overhead of computing cos() or sin(). By the time the arc needs to be applied + a correction, the planner should have caught up to the lag caused by the initial mc_arc overhead. + This is important when there are successive arc motions. + */ + // Computes: cos_T = 1 - theta_per_segment^2/2, sin_T = theta_per_segment - theta_per_segment^3/6) in ~52usec + float cos_T = 2.0 - theta_per_segment*theta_per_segment; + float sin_T = theta_per_segment*0.16666667*(cos_T + 4.0); + cos_T *= 0.5; + + float sin_Ti; + float cos_Ti; + float r_axisi; + uint16_t i; + uint8_t count = 0; + + for (i = 1; i 0) { + // NOTE: Check and execute realtime commands during dwell every <= DWELL_TIME_STEP milliseconds. + protocol_execute_realtime(); + if (sys.abort) { return; } + _delay_ms(DWELL_TIME_STEP); // Delay DWELL_TIME_STEP increment + } +} + + +// Perform homing cycle to locate and set machine zero. Only '$H' executes this command. +// NOTE: There should be no motions in the buffer and Grbl must be in an idle state before +// executing the homing cycle. This prevents incorrect buffered plans after homing. +void mc_homing_cycle() +{ + // Check and abort homing cycle, if hard limits are already enabled. Helps prevent problems + // with machines with limits wired on both ends of travel to one limit pin. + // TODO: Move the pin-specific LIMIT_PIN call to limits.c as a function. + #ifdef LIMITS_TWO_SWITCHES_ON_AXES + if (limits_get_state()) { + mc_reset(); // Issue system reset and ensure spindle and coolant are shutdown. + bit_true_atomic(sys_rt_exec_alarm, (EXEC_ALARM_HARD_LIMIT|EXEC_CRITICAL_EVENT)); + return; + } + #endif + + limits_disable(); // Disable hard limits pin change register for cycle duration + + // ------------------------------------------------------------------------------------- + // Perform homing routine. NOTE: Special motion case. Only system reset works. + + // Search to engage all axes limit switches at faster homing seek rate. + limits_go_home(HOMING_CYCLE_0); // Homing cycle 0 + #ifdef HOMING_CYCLE_1 + limits_go_home(HOMING_CYCLE_1); // Homing cycle 1 + #endif + #ifdef HOMING_CYCLE_2 + limits_go_home(HOMING_CYCLE_2); // Homing cycle 2 + #endif + + protocol_execute_realtime(); // Check for reset and set system abort. + if (sys.abort) { return; } // Did not complete. Alarm state set by mc_alarm. + + // Homing cycle complete! Setup system for normal operation. + // ------------------------------------------------------------------------------------- + + // Gcode parser position was circumvented by the limits_go_home() routine, so sync position now. + gc_sync_position(); + + // If hard limits feature enabled, re-enable hard limits pin change register after homing cycle. + limits_init(); +} + + +// Perform tool length probe cycle. Requires probe switch. +// NOTE: Upon probe failure, the program will be stopped and placed into ALARM state. +#ifdef USE_LINE_NUMBERS + void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, + uint8_t is_no_error, int32_t line_number) +#else + void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, + uint8_t is_no_error) +#endif +{ + // TODO: Need to update this cycle so it obeys a non-auto cycle start. + if (sys.state == STATE_CHECK_MODE) { return; } + + // Finish all queued commands and empty planner buffer before starting probe cycle. + protocol_buffer_synchronize(); + + // Initialize probing control variables + sys.probe_succeeded = false; // Re-initialize probe history before beginning cycle. + probe_configure_invert_mask(is_probe_away); + + // After syncing, check if probe is already triggered. If so, halt and issue alarm. + // NOTE: This probe initialization error applies to all probing cycles. + if ( probe_get_state() ) { // Check probe pin state. + bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_PROBE_FAIL); + protocol_execute_realtime(); + } + if (sys.abort) { return; } // Return if system reset has been issued. + + // Setup and queue probing motion. Auto cycle-start should not start the cycle. + #ifdef USE_LINE_NUMBERS + mc_line(1, target, feed_rate, invert_feed_rate, line_number); + #else + mc_line(1, target, feed_rate, invert_feed_rate); + #endif + + // Activate the probing state monitor in the stepper module. + sys_probe_state = PROBE_ACTIVE; + + // Perform probing cycle. Wait here until probe is triggered or motion completes. + bit_true_atomic(sys_rt_exec_state, EXEC_CYCLE_START); + do { + protocol_execute_realtime(); + if (sys.abort) { return; } // Check for system abort + } while (sys.state != STATE_IDLE); + + // Probing cycle complete! + + // Set state variables and error out, if the probe failed and cycle with error is enabled. + if (sys_probe_state == PROBE_ACTIVE) { + if (is_no_error) { memcpy(sys.probe_position, sys.position, sizeof(float)*N_AXIS); } + else { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_PROBE_FAIL); } + } else { + sys.probe_succeeded = true; // Indicate to system the probing cycle completed successfully. + } + sys_probe_state = PROBE_OFF; // Ensure probe state monitor is disabled. + protocol_execute_realtime(); // Check and execute run-time commands + if (sys.abort) { return; } // Check for system abort + + // Reset the stepper and planner buffers to remove the remainder of the probe motion. + st_reset(); // Reest step segment buffer. + plan_reset(); // Reset planner buffer. Zero planner positions. Ensure probing motion is cleared. + plan_sync_position(); // Sync planner position to current machine position. + + // TODO: Update the g-code parser code to not require this target calculation but uses a gc_sync_position() call. + // NOTE: The target[] variable updated here will be sent back and synced with the g-code parser. + system_convert_array_steps_to_mpos(target, sys.position); + + #ifdef MESSAGE_PROBE_COORDINATES + // All done! Output the probe position as message. + report_probe_parameters(); + #endif +} + + +// Method to ready the system to reset by setting the realtime reset command and killing any +// active processes in the system. This also checks if a system reset is issued while Grbl +// is in a motion state. If so, kills the steppers and sets the system alarm to flag position +// lost, since there was an abrupt uncontrolled deceleration. Called at an interrupt level by +// realtime abort command and hard limits. So, keep to a minimum. +void mc_reset() +{ + // Only this function can set the system reset. Helps prevent multiple kill calls. + if (bit_isfalse(sys_rt_exec_state, EXEC_RESET)) { + bit_true_atomic(sys_rt_exec_state, EXEC_RESET); + + // Kill spindle and coolant. + spindle_stop(); + coolant_stop(); + + // Kill steppers only if in any motion state, i.e. cycle, actively holding, or homing. + // NOTE: If steppers are kept enabled via the step idle delay setting, this also keeps + // the steppers enabled by avoiding the go_idle call altogether, unless the motion state is + // violated, by which, all bets are off. + if ((sys.state & (STATE_CYCLE | STATE_HOMING)) || (sys.suspend == SUSPEND_ENABLE_HOLD)) { + if (sys.state == STATE_HOMING) { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_HOMING_FAIL); } + else { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_ABORT_CYCLE); } + st_go_idle(); // Force kill steppers. Position has likely been lost. + } + } +} + diff --git a/Source code/motion_control.h b/Source code/motion_control.h new file mode 100755 index 0000000..2bb3ae5 --- /dev/null +++ b/Source code/motion_control.h @@ -0,0 +1,66 @@ +/* + motion_control.h - high level interface for issuing motion commands + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef motion_control_h +#define motion_control_h + + +#define HOMING_CYCLE_LINE_NUMBER -1 + +// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second +// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in +// (1 minute)/feed_rate time. +#ifdef USE_LINE_NUMBERS +uint8_t mc_line(uint8_t mode,float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number); +#else +uint8_t mc_line(uint8_t mode,float *target, float feed_rate, uint8_t invert_feed_rate); +#endif + +// Execute an arc in offset mode format. position == current xyz, target == target xyz, +// offset == offset from current xyz, axis_XXX defines circle plane in tool space, axis_linear is +// the direction of helical travel, radius == circle radius, is_clockwise_arc boolean. Used +// for vector transformation direction. +#ifdef USE_LINE_NUMBERS +void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, + uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc, int32_t line_number); +#else +void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, + uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc); +#endif + +// Dwell for a specific number of seconds +void mc_dwell(float seconds); + +// Perform homing cycle to locate machine zero. Requires limit switches. +void mc_homing_cycle(); + +// Perform tool length probe cycle. Requires probe switch. +#ifdef USE_LINE_NUMBERS +void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, + uint8_t is_no_error, int32_t line_number); +#else +void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, + uint8_t is_no_error); +#endif + +// Performs system reset. If in motion state, kills all motion and sets system alarm. +void mc_reset(); +#endif diff --git a/Source code/nuts_bolts.c b/Source code/nuts_bolts.c new file mode 100755 index 0000000..328af84 --- /dev/null +++ b/Source code/nuts_bolts.c @@ -0,0 +1,148 @@ +/* + nuts_bolts.c - Shared functions + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +#define MAX_INT_DIGITS 8 // Maximum number of digits in int32 (and float) + + +// Extracts a floating point value from a string. The following code is based loosely on +// the avr-libc strtod() function by Michael Stumpf and Dmitry Xmelkov and many freely +// available conversion method examples, but has been highly optimized for Grbl. For known +// CNC applications, the typical decimal value is expected to be in the range of E0 to E-4. +// Scientific notation is officially not supported by g-code, and the 'E' character may +// be a g-code word on some CNC systems. So, 'E' notation will not be recognized. +// NOTE: Thanks to Radu-Eosif Mihailescu for identifying the issues with using strtod(). +uint8_t read_float(char *line, uint8_t *char_counter, float *float_ptr) +{ + char *ptr; + if( char_counter == NULL ){ + ptr = line; + }else{ + ptr = line + *char_counter; + } + unsigned char c; + + // Grab first character and increment pointer. No spaces assumed in line. + c = *ptr++; + + // Capture initial positive/minus character + bool isnegative = false; + if (c == '-') { + isnegative = true; + c = *ptr++; + } else if (c == '+') { + c = *ptr++; + } + + // Extract number into fast integer. Track decimal in terms of exponent value. + uint32_t intval = 0; + int8_t exp = 0; + uint8_t ndigit = 0; + bool isdecimal = false; + while(1) { + c -= '0'; + if (c <= 9) { + ndigit++; + if (ndigit <= MAX_INT_DIGITS) { + if (isdecimal) { exp--; } + intval = (((intval << 2) + intval) << 1) + c; // intval*10 + c + } else { + if (!(isdecimal)) { exp++; } // Drop overflow digits + } + } else if (c == (('.'-'0') & 0xff) && !(isdecimal)) { + isdecimal = true; + } else { + break; + } + c = *ptr++; + } + + // Return if no digits have been read. + if (!ndigit) { return(false); }; + + // Convert integer into floating point. + float fval; + fval = (float)intval; + + // Apply decimal. Should perform no more than two floating point multiplications for the + // expected range of E0 to E-4. + if (fval != 0) { + while (exp <= -2) { + fval *= 0.01; + exp += 2; + } + if (exp < 0) { + fval *= 0.1; + } else if (exp > 0) { + do { + fval *= 10.0; + } while (--exp > 0); + } + } + + // Assign floating point value with correct sign. + if (isnegative) { + *float_ptr = -fval; + } else { + *float_ptr = fval; + } + + *char_counter = ptr - line - 1; // Set char_counter to next statement + + return(true); +} + + +// Delays variable defined milliseconds. Compiler compatibility fix for _delay_ms(), +// which only accepts constants in future compiler releases. +void delay_ms(uint16_t ms) +{ + while ( ms-- ) { _delay_ms(1); } +} + + +// Delays variable defined microseconds. Compiler compatibility fix for _delay_us(), +// which only accepts constants in future compiler releases. Written to perform more +// efficiently with larger delays, as the counter adds parasitic time in each iteration. +void delay_us(uint32_t us) +{ + while (us) { + if (us < 10) { + _delay_us(1); + us--; + } else if (us < 100) { + _delay_us(10); + us -= 10; + } else if (us < 1000) { + _delay_us(100); + us -= 100; + } else { + _delay_ms(1); + us -= 1000; + } + } +} + + +// Simple hypotenuse computation function. +float hypot_f(float x, float y) { return(sqrt(x*x + y*y)); } diff --git a/Source code/nuts_bolts.h b/Source code/nuts_bolts.h new file mode 100755 index 0000000..882d337 --- /dev/null +++ b/Source code/nuts_bolts.h @@ -0,0 +1,78 @@ +/* + nuts_bolts.h - Header file for shared definitions, variables, and functions + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef nuts_bolts_h +#define nuts_bolts_h + +#define false 0 +#define true 1 + +// Axis array index values. Must start with 0 and be continuous. +#define N_AXIS 3 // Number of axes +#define X_AXIS 0 // Axis indexing value. +#define Y_AXIS 1 +#define Z_AXIS 2 +// #define A_AXIS 3 + +// CoreXY motor assignments. DO NOT ALTER. +// NOTE: If the A and B motor axis bindings are changed, this effects the CoreXY equations. +#ifdef COREXY + #define A_MOTOR X_AXIS // Must be X_AXIS + #define B_MOTOR Y_AXIS // Must be Y_AXIS +#endif + +// Conversions +#define MM_PER_INCH (25.40) +#define INCH_PER_MM (0.0393701) +#define TICKS_PER_MICROSECOND (F_CPU/1000000) + +// Useful macros +#define clear_vector(a) memset(a, 0, sizeof(a)) +#define clear_vector_float(a) memset(a, 0.0, sizeof(float)*N_AXIS) +// #define clear_vector_long(a) memset(a, 0.0, sizeof(long)*N_AXIS) +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#define min(a,b) (((a) < (b)) ? (a) : (b)) + +// Bit field and masking macros +#define bit(n) (1 << n) +#define bit_true_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) |= (mask); SREG = sreg; } +#define bit_false_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) &= ~(mask); SREG = sreg; } +#define bit_toggle_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) ^= (mask); SREG = sreg; } +#define bit_true(x,mask) (x) |= (mask) +#define bit_false(x,mask) (x) &= ~(mask) +#define bit_istrue(x,mask) ((x & mask) != 0) +#define bit_isfalse(x,mask) ((x & mask) == 0) + +// Read a floating point value from a string. Line points to the input buffer, char_counter +// is the indexer pointing to the current character of the line, while float_ptr is +// a pointer to the result variable. Returns true when it succeeds +uint8_t read_float(char *line, uint8_t *char_counter, float *float_ptr); + +// Delays variable-defined milliseconds. Compiler compatibility fix for _delay_ms(). +void delay_ms(uint16_t ms); + +// Delays variable-defined microseconds. Compiler compatibility fix for _delay_us(). +void delay_us(uint32_t us); + +// Computes hypotenuse, avoiding avr-gcc's bloated version and the extra error checking. +float hypot_f(float x, float y); + +#endif diff --git a/Source code/planner.c b/Source code/planner.c new file mode 100755 index 0000000..5b54410 --- /dev/null +++ b/Source code/planner.c @@ -0,0 +1,457 @@ +/* + planner.c - buffers movement commands and manages the acceleration profile plan + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + Copyright (c) 2011 Jens Geisler + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + +#define SOME_LARGE_VALUE 1.0E+38 // Used by rapids and acceleration maximization calculations. Just needs + // to be larger than any feasible (mm/min)^2 or mm/sec^2 value. + +static plan_block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instructions +static uint8_t block_buffer_tail; // Index of the block to process now +static uint8_t block_buffer_head; // Index of the next block to be pushed +static uint8_t next_buffer_head; // Index of the next buffer head +static uint8_t block_buffer_planned; // Index of the optimally planned block + +// Define planner variables +typedef struct { + int32_t position[N_AXIS]; // The planner position of the tool in absolute steps. Kept separate + // from g-code position for movements requiring multiple line motions, + // i.e. arcs, canned cycles, and backlash compensation. + float previous_unit_vec[N_AXIS]; // Unit vector of previous path line segment + float previous_nominal_speed_sqr; // Nominal speed of previous path line segment +} planner_t; +static planner_t pl; + + +// Returns the index of the next block in the ring buffer. Also called by stepper segment buffer. +uint8_t plan_next_block_index(uint8_t block_index) +{ + block_index++; + if (block_index == BLOCK_BUFFER_SIZE) { block_index = 0; } + return(block_index); +} + + +// Returns the index of the previous block in the ring buffer +static uint8_t plan_prev_block_index(uint8_t block_index) +{ + if (block_index == 0) { block_index = BLOCK_BUFFER_SIZE; } + block_index--; + return(block_index); +} + + +/* PLANNER SPEED DEFINITION + +--------+ <- current->nominal_speed + / \ + current->entry_speed -> + \ + | + <- next->entry_speed (aka exit speed) + +-------------+ + time --> + + Recalculates the motion plan according to the following basic guidelines: + + 1. Go over every feasible block sequentially in reverse order and calculate the junction speeds + (i.e. current->entry_speed) such that: + a. No junction speed exceeds the pre-computed maximum junction speed limit or nominal speeds of + neighboring blocks. + b. A block entry speed cannot exceed one reverse-computed from its exit speed (next->entry_speed) + with a maximum allowable deceleration over the block travel distance. + c. The last (or newest appended) block is planned from a complete stop (an exit speed of zero). + 2. Go over every block in chronological (forward) order and dial down junction speed values if + a. The exit speed exceeds the one forward-computed from its entry speed with the maximum allowable + acceleration over the block travel distance. + + When these stages are complete, the planner will have maximized the velocity profiles throughout the all + of the planner blocks, where every block is operating at its maximum allowable acceleration limits. In + other words, for all of the blocks in the planner, the plan is optimal and no further speed improvements + are possible. If a new block is added to the buffer, the plan is recomputed according to the said + guidelines for a new optimal plan. + + To increase computational efficiency of these guidelines, a set of planner block pointers have been + created to indicate stop-compute points for when the planner guidelines cannot logically make any further + changes or improvements to the plan when in normal operation and new blocks are streamed and added to the + planner buffer. For example, if a subset of sequential blocks in the planner have been planned and are + bracketed by junction velocities at their maximums (or by the first planner block as well), no new block + added to the planner buffer will alter the velocity profiles within them. So we no longer have to compute + them. Or, if a set of sequential blocks from the first block in the planner (or a optimal stop-compute + point) are all accelerating, they are all optimal and can not be altered by a new block added to the + planner buffer, as this will only further increase the plan speed to chronological blocks until a maximum + junction velocity is reached. However, if the operational conditions of the plan changes from infrequently + used feed holds or feedrate overrides, the stop-compute pointers will be reset and the entire plan is + recomputed as stated in the general guidelines. + + Planner buffer index mapping: + - block_buffer_tail: Points to the beginning of the planner buffer. First to be executed or being executed. + - block_buffer_head: Points to the buffer block after the last block in the buffer. Used to indicate whether + the buffer is full or empty. As described for standard ring buffers, this block is always empty. + - next_buffer_head: Points to next planner buffer block after the buffer head block. When equal to the + buffer tail, this indicates the buffer is full. + - block_buffer_planned: Points to the first buffer block after the last optimally planned block for normal + streaming operating conditions. Use for planning optimizations by avoiding recomputing parts of the + planner buffer that don't change with the addition of a new block, as describe above. In addition, + this block can never be less than block_buffer_tail and will always be pushed forward and maintain + this requirement when encountered by the plan_discard_current_block() routine during a cycle. + + NOTE: Since the planner only computes on what's in the planner buffer, some motions with lots of short + line segments, like G2/3 arcs or complex curves, may seem to move slow. This is because there simply isn't + enough combined distance traveled in the entire buffer to accelerate up to the nominal speed and then + decelerate to a complete stop at the end of the buffer, as stated by the guidelines. If this happens and + becomes an annoyance, there are a few simple solutions: (1) Maximize the machine acceleration. The planner + will be able to compute higher velocity profiles within the same combined distance. (2) Maximize line + motion(s) distance per block to a desired tolerance. The more combined distance the planner has to use, + the faster it can go. (3) Maximize the planner buffer size. This also will increase the combined distance + for the planner to compute over. It also increases the number of computations the planner has to perform + to compute an optimal plan, so select carefully. The Arduino 328p memory is already maxed out, but future + ARM versions should have enough memory and speed for look-ahead blocks numbering up to a hundred or more. + +*/ +static void planner_recalculate() +{ + // Initialize block index to the last block in the planner buffer. + uint8_t block_index = plan_prev_block_index(block_buffer_head); + + // Bail. Can't do anything with one only one plan-able block. + if (block_index == block_buffer_planned) { return; } + + // Reverse Pass: Coarsely maximize all possible deceleration curves back-planning from the last + // block in buffer. Cease planning when the last optimal planned or tail pointer is reached. + // NOTE: Forward pass will later refine and correct the reverse pass to create an optimal plan. + float entry_speed_sqr; + plan_block_t *next; + plan_block_t *current = &block_buffer[block_index]; + + // Calculate maximum entry speed for last block in buffer, where the exit speed is always zero. + current->entry_speed_sqr = min( current->max_entry_speed_sqr, 2*current->acceleration*current->millimeters); + + block_index = plan_prev_block_index(block_index); + if (block_index == block_buffer_planned) { // Only two plannable blocks in buffer. Reverse pass complete. + // Check if the first block is the tail. If so, notify stepper to update its current parameters. + if (block_index == block_buffer_tail) { st_update_plan_block_parameters(); } + } else { // Three or more plan-able blocks + while (block_index != block_buffer_planned) { + next = current; + current = &block_buffer[block_index]; + block_index = plan_prev_block_index(block_index); + + // Check if next block is the tail block(=planned block). If so, update current stepper parameters. + if (block_index == block_buffer_tail) { st_update_plan_block_parameters(); } + + // Compute maximum entry speed decelerating over the current block from its exit speed. + if (current->entry_speed_sqr != current->max_entry_speed_sqr) { + entry_speed_sqr = next->entry_speed_sqr + 2*current->acceleration*current->millimeters; + if (entry_speed_sqr < current->max_entry_speed_sqr) { + current->entry_speed_sqr = entry_speed_sqr; + } else { + current->entry_speed_sqr = current->max_entry_speed_sqr; + } + } + } + } + + // Forward Pass: Forward plan the acceleration curve from the planned pointer onward. + // Also scans for optimal plan breakpoints and appropriately updates the planned pointer. + next = &block_buffer[block_buffer_planned]; // Begin at buffer planned pointer + block_index = plan_next_block_index(block_buffer_planned); + while (block_index != block_buffer_head) { + current = next; + next = &block_buffer[block_index]; + + // Any acceleration detected in the forward pass automatically moves the optimal planned + // pointer forward, since everything before this is all optimal. In other words, nothing + // can improve the plan from the buffer tail to the planned pointer by logic. + if (current->entry_speed_sqr < next->entry_speed_sqr) { + entry_speed_sqr = current->entry_speed_sqr + 2*current->acceleration*current->millimeters; + // If true, current block is full-acceleration and we can move the planned pointer forward. + if (entry_speed_sqr < next->entry_speed_sqr) { + next->entry_speed_sqr = entry_speed_sqr; // Always <= max_entry_speed_sqr. Backward pass sets this. + block_buffer_planned = block_index; // Set optimal plan pointer. + } + } + + // Any block set at its maximum entry speed also creates an optimal plan up to this + // point in the buffer. When the plan is bracketed by either the beginning of the + // buffer and a maximum entry speed or two maximum entry speeds, every block in between + // cannot logically be further improved. Hence, we don't have to recompute them anymore. + if (next->entry_speed_sqr == next->max_entry_speed_sqr) { block_buffer_planned = block_index; } + block_index = plan_next_block_index( block_index ); + } +} + + +void plan_reset() +{ + memset(&pl, 0, sizeof(planner_t)); // Clear planner struct + block_buffer_tail = 0; + block_buffer_head = 0; // Empty = tail + next_buffer_head = 1; // plan_next_block_index(block_buffer_head) + block_buffer_planned = 0; // = block_buffer_tail; +} + + +void plan_discard_current_block() +{ + if (block_buffer_head != block_buffer_tail) { // Discard non-empty buffer. + uint8_t block_index = plan_next_block_index( block_buffer_tail ); + // Push block_buffer_planned pointer, if encountered. + if (block_buffer_tail == block_buffer_planned) { block_buffer_planned = block_index; } + block_buffer_tail = block_index; + } +} + + +plan_block_t *plan_get_current_block() +{ + if (block_buffer_head == block_buffer_tail) { return(NULL); } // Buffer empty + return(&block_buffer[block_buffer_tail]); +} + + +float plan_get_exec_block_exit_speed() +{ + uint8_t block_index = plan_next_block_index(block_buffer_tail); + if (block_index == block_buffer_head) { return( 0.0 ); } + return( sqrt( block_buffer[block_index].entry_speed_sqr ) ); +} + + +// Returns the availability status of the block ring buffer. True, if full. +uint8_t plan_check_full_buffer() +{ + if (block_buffer_tail == next_buffer_head) { return(true); } + return(false); +} + + +/* Add a new linear movement to the buffer. target[N_AXIS] is the signed, absolute target position + in millimeters. Feed rate specifies the speed of the motion. If feed rate is inverted, the feed + rate is taken to mean "frequency" and would complete the operation in 1/feed_rate minutes. + All position data passed to the planner must be in terms of machine position to keep the planner + independent of any coordinate system changes and offsets, which are handled by the g-code parser. + NOTE: Assumes buffer is available. Buffer checks are handled at a higher level by motion_control. + In other words, the buffer head is never equal to the buffer tail. Also the feed rate input value + is used in three ways: as a normal feed rate if invert_feed_rate is false, as inverse time if + invert_feed_rate is true, or as seek/rapids rate if the feed_rate value is negative (and + invert_feed_rate always false). */ +#ifdef USE_LINE_NUMBERS + void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number) +#else + void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate) +#endif +{ + // Prepare and initialize new block + plan_block_t *block = &block_buffer[block_buffer_head]; + block->step_event_count = 0; + block->millimeters = 0; + block->direction_bits = 0; + block->acceleration = SOME_LARGE_VALUE; // Scaled down to maximum acceleration later + #ifdef USE_LINE_NUMBERS + block->line_number = line_number; + #endif + + // Compute and store initial move distance data. + // TODO: After this for-loop, we don't touch the stepper algorithm data. Might be a good idea + // to try to keep these types of things completely separate from the planner for portability. + int32_t target_steps[N_AXIS]; + float unit_vec[N_AXIS], delta_mm; + uint8_t idx; + #ifdef COREXY + target_steps[A_MOTOR] = lround(target[A_MOTOR]*settings.steps_per_mm[A_MOTOR]); + target_steps[B_MOTOR] = lround(target[B_MOTOR]*settings.steps_per_mm[B_MOTOR]); + block->steps[A_MOTOR] = labs((target_steps[X_AXIS]-pl.position[X_AXIS]) + (target_steps[Y_AXIS]-pl.position[Y_AXIS])); + block->steps[B_MOTOR] = labs((target_steps[X_AXIS]-pl.position[X_AXIS]) - (target_steps[Y_AXIS]-pl.position[Y_AXIS])); + #endif + + for (idx=0; idxsteps[idx] = labs(target_steps[idx]-pl.position[idx]); + } + block->step_event_count = max(block->step_event_count, block->steps[idx]); + if (idx == A_MOTOR) { + delta_mm = (target_steps[X_AXIS]-pl.position[X_AXIS] + target_steps[Y_AXIS]-pl.position[Y_AXIS])/settings.steps_per_mm[idx]; + } else if (idx == B_MOTOR) { + delta_mm = (target_steps[X_AXIS]-pl.position[X_AXIS] - target_steps[Y_AXIS]+pl.position[Y_AXIS])/settings.steps_per_mm[idx]; + } else { + delta_mm = (target_steps[idx] - pl.position[idx])/settings.steps_per_mm[idx]; + } + #else + target_steps[idx] = lround(target[idx]*settings.steps_per_mm[idx]); + block->steps[idx] = labs(target_steps[idx]-pl.position[idx]); + block->step_event_count = max(block->step_event_count, block->steps[idx]); + delta_mm = (target_steps[idx] - pl.position[idx])/settings.steps_per_mm[idx]; + #endif + unit_vec[idx] = delta_mm; // Store unit vector numerator. Denominator computed later. + + // Set direction bits. Bit enabled always means direction is negative. + if (delta_mm < 0 ) { block->direction_bits |= get_direction_pin_mask(idx); } + + // Incrementally compute total move distance by Euclidean norm. First add square of each term. + block->millimeters += delta_mm*delta_mm; + } + block->millimeters = sqrt(block->millimeters); // Complete millimeters calculation with sqrt() + + // Bail if this is a zero-length block. Highly unlikely to occur. + if (block->step_event_count == 0) { return; } + + // Adjust feed_rate value to mm/min depending on type of rate input (normal, inverse time, or rapids) + // TODO: Need to distinguish a rapids vs feed move for overrides. Some flag of some sort. + if (feed_rate < 0) { feed_rate = SOME_LARGE_VALUE; } // Scaled down to absolute max/rapids rate later + else if (invert_feed_rate) { feed_rate *= block->millimeters; } + if (feed_rate < MINIMUM_FEED_RATE) { feed_rate = MINIMUM_FEED_RATE; } // Prevents step generation round-off condition. + + // Calculate the unit vector of the line move and the block maximum feed rate and acceleration scaled + // down such that no individual axes maximum values are exceeded with respect to the line direction. + // NOTE: This calculation assumes all axes are orthogonal (Cartesian) and works with ABC-axes, + // if they are also orthogonal/independent. Operates on the absolute value of the unit vector. + float inverse_unit_vec_value; + float inverse_millimeters = 1.0/block->millimeters; // Inverse millimeters to remove multiple float divides + float junction_cos_theta = 0; + for (idx=0; idxacceleration = min(block->acceleration,settings.acceleration[idx]*inverse_unit_vec_value); + + // Incrementally compute cosine of angle between previous and current path. Cos(theta) of the junction + // between the current move and the previous move is simply the dot product of the two unit vectors, + // where prev_unit_vec is negative. Used later to compute maximum junction speed. + junction_cos_theta -= pl.previous_unit_vec[idx] * unit_vec[idx]; + } + } + + // TODO: Need to check this method handling zero junction speeds when starting from rest. + if (block_buffer_head == block_buffer_tail) { + + // Initialize block entry speed as zero. Assume it will be starting from rest. Planner will correct this later. + block->entry_speed_sqr = 0.0; + block->max_junction_speed_sqr = 0.0; // Starting from rest. Enforce start from zero velocity. + + } else { + /* + Compute maximum allowable entry speed at junction by centripetal acceleration approximation. + Let a circle be tangent to both previous and current path line segments, where the junction + deviation is defined as the distance from the junction to the closest edge of the circle, + colinear with the circle center. The circular segment joining the two paths represents the + path of centripetal acceleration. Solve for max velocity based on max acceleration about the + radius of the circle, defined indirectly by junction deviation. This may be also viewed as + path width or max_jerk in the previous Grbl version. This approach does not actually deviate + from path, but used as a robust way to compute cornering speeds, as it takes into account the + nonlinearities of both the junction angle and junction velocity. + + NOTE: If the junction deviation value is finite, Grbl executes the motions in an exact path + mode (G61). If the junction deviation value is zero, Grbl will execute the motion in an exact + stop mode (G61.1) manner. In the future, if continuous mode (G64) is desired, the math here + is exactly the same. Instead of motioning all the way to junction point, the machine will + just follow the arc circle defined here. The Arduino doesn't have the CPU cycles to perform + a continuous mode path, but ARM-based microcontrollers most certainly do. + + NOTE: The max junction speed is a fixed value, since machine acceleration limits cannot be + changed dynamically during operation nor can the line move geometry. This must be kept in + memory in the event of a feedrate override changing the nominal speeds of blocks, which can + change the overall maximum entry speed conditions of all blocks. + */ + // NOTE: Computed without any expensive trig, sin() or acos(), by trig half angle identity of cos(theta). + if (junction_cos_theta > 0.999999) { + // For a 0 degree acute junction, just set minimum junction speed. + block->max_junction_speed_sqr = MINIMUM_JUNCTION_SPEED*MINIMUM_JUNCTION_SPEED; + } else { + junction_cos_theta = max(junction_cos_theta,-0.999999); // Check for numerical round-off to avoid divide by zero. + float sin_theta_d2 = sqrt(0.5*(1.0-junction_cos_theta)); // Trig half angle identity. Always positive. + + // TODO: Technically, the acceleration used in calculation needs to be limited by the minimum of the + // two junctions. However, this shouldn't be a significant problem except in extreme circumstances. + block->max_junction_speed_sqr = max( MINIMUM_JUNCTION_SPEED*MINIMUM_JUNCTION_SPEED, + (block->acceleration * settings.junction_deviation * sin_theta_d2)/(1.0-sin_theta_d2) ); + + } + } + + // Store block nominal speed + block->nominal_speed_sqr = feed_rate*feed_rate; // (mm/min). Always > 0 + + // Compute the junction maximum entry based on the minimum of the junction speed and neighboring nominal speeds. + block->max_entry_speed_sqr = min(block->max_junction_speed_sqr, + min(block->nominal_speed_sqr,pl.previous_nominal_speed_sqr)); + + // Update previous path unit_vector and nominal speed (squared) + memcpy(pl.previous_unit_vec, unit_vec, sizeof(unit_vec)); // pl.previous_unit_vec[] = unit_vec[] + pl.previous_nominal_speed_sqr = block->nominal_speed_sqr; + + // Update planner position + memcpy(pl.position, target_steps, sizeof(target_steps)); // pl.position[] = target_steps[] + + // New block is all set. Update buffer head and next buffer head indices. + block_buffer_head = next_buffer_head; + next_buffer_head = plan_next_block_index(block_buffer_head); + + // Finish up by recalculating the plan with the new block. + planner_recalculate(); +} + + +// Reset the planner position vectors. Called by the system abort/initialization routine. +void plan_sync_position() +{ + // TODO: For motor configurations not in the same coordinate frame as the machine position, + // this function needs to be updated to accomodate the difference. + uint8_t idx; + for (idx=0; idx= block_buffer_tail) { return(block_buffer_head-block_buffer_tail); } + return(BLOCK_BUFFER_SIZE - (block_buffer_tail-block_buffer_head)); +} + + +// Re-initialize buffer plan with a partially completed block, assumed to exist at the buffer tail. +// Called after a steppers have come to a complete stop for a feed hold and the cycle is stopped. +void plan_cycle_reinitialize() +{ + // Re-plan from a complete stop. Reset planner entry speeds and buffer planned pointer. + st_update_plan_block_parameters(); + block_buffer_planned = block_buffer_tail; + planner_recalculate(); +} diff --git a/Source code/planner.h b/Source code/planner.h new file mode 100755 index 0000000..02258dd --- /dev/null +++ b/Source code/planner.h @@ -0,0 +1,97 @@ +/* + planner.h - buffers movement commands and manages the acceleration profile plan + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef planner_h +#define planner_h + + +// The number of linear motions that can be in the plan at any give time +#ifndef BLOCK_BUFFER_SIZE + #ifdef USE_LINE_NUMBERS + #define BLOCK_BUFFER_SIZE 16 + #else + #define BLOCK_BUFFER_SIZE 18 + #endif +#endif + +// This struct stores a linear movement of a g-code block motion with its critical "nominal" values +// are as specified in the source g-code. +typedef struct { + // Fields used by the bresenham algorithm for tracing the line + // NOTE: Used by stepper algorithm to execute the block correctly. Do not alter these values. + uint8_t direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) + uint32_t steps[N_AXIS]; // Step count along each axis + uint32_t step_event_count; // The maximum step axis count and number of steps required to complete this block. + + // Fields used by the motion planner to manage acceleration + float entry_speed_sqr; // The current planned entry speed at block junction in (mm/min)^2 + float max_entry_speed_sqr; // Maximum allowable entry speed based on the minimum of junction limit and + // neighboring nominal speeds with overrides in (mm/min)^2 + float max_junction_speed_sqr; // Junction entry speed limit based on direction vectors in (mm/min)^2 + float nominal_speed_sqr; // Axis-limit adjusted nominal speed for this block in (mm/min)^2 + float acceleration; // Axis-limit adjusted line acceleration in (mm/min^2) + float millimeters; // The remaining distance for this block to be executed in (mm) + // uint8_t max_override; // Maximum override value based on axis speed limits + + #ifdef USE_LINE_NUMBERS + int32_t line_number; + #endif +} plan_block_t; + + +// Initialize and reset the motion plan subsystem +void plan_reset(); + +// Add a new linear movement to the buffer. target[N_AXIS] is the signed, absolute target position +// in millimeters. Feed rate specifies the speed of the motion. If feed rate is inverted, the feed +// rate is taken to mean "frequency" and would complete the operation in 1/feed_rate minutes. +#ifdef USE_LINE_NUMBERS + void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number); +#else + void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate); +#endif + +// Called when the current block is no longer needed. Discards the block and makes the memory +// availible for new blocks. +void plan_discard_current_block(); + +// Gets the current block. Returns NULL if buffer empty +plan_block_t *plan_get_current_block(); + +// Called periodically by step segment buffer. Mostly used internally by planner. +uint8_t plan_next_block_index(uint8_t block_index); + +// Called by step segment buffer when computing executing block velocity profile. +float plan_get_exec_block_exit_speed(); + +// Reset the planner position vector (in steps) +void plan_sync_position(); + +// Reinitialize plan with a partially completed block +void plan_cycle_reinitialize(); + +// Returns the number of active blocks are in the planner buffer. +uint8_t plan_get_block_buffer_count(); + +// Returns the status of the block ring buffer. True, if buffer is full. +uint8_t plan_check_full_buffer(); + +#endif diff --git a/Source code/print.c b/Source code/print.c new file mode 100755 index 0000000..6598d48 --- /dev/null +++ b/Source code/print.c @@ -0,0 +1,219 @@ +/* + print.c - Functions for formatting output strings + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include + + +void printString(const char *s) +{ + while (*s) + serial_write(*s++); +} + + +// Print a string stored in PGM-memory +void printPgmString(const char *s) +{ + char c; + while ((c = pgm_read_byte_near(s++))) + serial_write(c); +} + + +// void printIntegerInBase(unsigned long n, unsigned long base) +// { +// unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. +// unsigned long i = 0; +// +// if (n == 0) { +// serial_write('0'); +// return; +// } +// +// while (n > 0) { +// buf[i++] = n % base; +// n /= base; +// } +// +// for (; i > 0; i--) +// serial_write(buf[i - 1] < 10 ? +// '0' + buf[i - 1] : +// 'A' + buf[i - 1] - 10); +// } + + +// Prints an uint8 variable with base and number of desired digits. +void print_unsigned_int8(uint8_t n, uint8_t base, uint8_t digits) +{ + unsigned char buf[digits]; + uint8_t i = 0; + + for (; i < digits; i++) { + buf[i] = n % base ; + n /= base; + } + + for (; i > 0; i--) + serial_write('0' + buf[i - 1]); +} + + +// Prints an uint8 variable in base 2. +void print_uint8_base2(uint8_t n) { + print_unsigned_int8(n,2,8); +} + + +// Prints an uint8 variable in base 10. +void print_uint8_base10(uint8_t n) +{ + uint8_t digits; + if (n < 10) { digits = 1; } + else if (n < 100) { digits = 2; } + else { digits = 3; } + print_unsigned_int8(n,10,digits); +} + + +void print_uint32_base10(uint32_t n) +{ + if (n == 0) { + serial_write('0'); + return; + } + + unsigned char buf[10]; + uint8_t i = 0; + + while (n > 0) { + buf[i++] = n % 10; + n /= 10; + } + + for (; i > 0; i--) + serial_write('0' + buf[i-1]); +} + + +void printInteger(long n) +{ + if (n < 0) { + serial_write('-'); + print_uint32_base10(-n); + } else { + print_uint32_base10(n); + } +} + + +// Convert float to string by immediately converting to a long integer, which contains +// more digits than a float. Number of decimal places, which are tracked by a counter, +// may be set by the user. The integer is then efficiently converted to a string. +// NOTE: AVR '%' and '/' integer operations are very efficient. Bitshifting speed-up +// techniques are actually just slightly slower. Found this out the hard way. +void printFloat(float n, uint8_t decimal_places) +{ + if (n < 0) { + serial_write('-'); + n = -n; + } + + uint8_t decimals = decimal_places; + while (decimals >= 2) { // Quickly convert values expected to be E0 to E-4. + n *= 100; + decimals -= 2; + } + if (decimals) { n *= 10; } + n += 0.5; // Add rounding factor. Ensures carryover through entire value. + + // Generate digits backwards and store in string. + unsigned char buf[10]; + uint8_t i = 0; + uint32_t a = (long)n; + buf[decimal_places] = '.'; // Place decimal point, even if decimal places are zero. + while(a > 0) { + if (i == decimal_places) { i++; } // Skip decimal point location + buf[i++] = (a % 10) + '0'; // Get digit + a /= 10; + } + while (i < decimal_places) { + buf[i++] = '0'; // Fill in zeros to decimal point for (n < 1) + } + if (i == decimal_places) { // Fill in leading zero, if needed. + i++; + buf[i++] = '0'; + } + + // Print the generated string. + for (; i > 0; i--) + serial_write(buf[i-1]); +} + + +// Floating value printing handlers for special variables types used in Grbl and are defined +// in the config.h. +// - CoordValue: Handles all position or coordinate values in inches or mm reporting. +// - RateValue: Handles feed rate and current velocity in inches or mm reporting. +// - SettingValue: Handles all floating point settings values (always in mm.) +void printFloat_CoordValue(float n) { + if (bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)) { + printFloat(n*INCH_PER_MM,N_DECIMAL_COORDVALUE_INCH); + } else { + printFloat(n,N_DECIMAL_COORDVALUE_MM); + } +} + +void printFloat_RateValue(float n) { + if (bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)) { + printFloat(n*INCH_PER_MM,N_DECIMAL_RATEVALUE_INCH); + } else { + printFloat(n,N_DECIMAL_RATEVALUE_MM); + } +} + +void printFloat_SettingValue(float n) { printFloat(n,N_DECIMAL_SETTINGVALUE); } + + +// Debug tool to print free memory in bytes at the called point. +// NOTE: Keep commented unless using. Part of this function always gets compiled in. +// void printFreeMemory() +// { +// extern int __heap_start, *__brkval; +// uint16_t free; // Up to 64k values. +// free = (int) &free - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); +// printInteger((int32_t)free); +// printString(" "); +// } + +void uart_printf(char *str,...){ + char buf[128]; + unsigned char i = 0; + va_list ptr; + va_start(ptr,str); + vsprintf(buf,str,ptr); + while(buf[i]) + { + serial_write(buf[i]); + i++; + } +} + diff --git a/Source code/print.h b/Source code/print.h new file mode 100755 index 0000000..5639e70 --- /dev/null +++ b/Source code/print.h @@ -0,0 +1,60 @@ +/* + print.h - Functions for formatting output strings + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef print_h +#define print_h + + +void printString(const char *s); + +void printPgmString(const char *s); + +void printInteger(long n); + +void print_uint32_base10(uint32_t n); + +// Prints uint8 variable with base and number of desired digits. +void print_unsigned_int8(uint8_t n, uint8_t base, uint8_t digits); + +// Prints an uint8 variable in base 2. +void print_uint8_base2(uint8_t n); + +// Prints an uint8 variable in base 10. +void print_uint8_base10(uint8_t n); + +void printFloat(float n, uint8_t decimal_places); + +// Floating value printing handlers for special variables types used in Grbl. +// - CoordValue: Handles all position or coordinate values in inches or mm reporting. +// - RateValue: Handles feed rate and current velocity in inches or mm reporting. +// - SettingValue: Handles all floating point settings values (always in mm.) +void printFloat_CoordValue(float n); + +void printFloat_RateValue(float n); + +void printFloat_SettingValue(float n); + +// Debug tool to print free memory in bytes at the called point. Not used otherwise. +void printFreeMemory(); + +void uart_printf(char *str,...); + +#endif \ No newline at end of file diff --git a/Source code/probe.c b/Source code/probe.c new file mode 100755 index 0000000..37816bf --- /dev/null +++ b/Source code/probe.c @@ -0,0 +1,68 @@ +/* + probe.c - code pertaining to probing methods + Part of Grbl + + Copyright (c) 2014-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +// Inverts the probe pin state depending on user settings and probing cycle mode. +uint8_t probe_invert_mask; + + +// Probe pin initialization routine. +void probe_init() +{ + PROBE_DDR &= ~(PROBE_MASK); // Configure as input pins + #ifdef DISABLE_PROBE_PIN_PULL_UP + PROBE_PORT &= ~(PROBE_MASK); // Normal low operation. Requires external pull-down. + #else + PROBE_PORT |= PROBE_MASK; // Enable internal pull-up resistors. Normal high operation. + #endif + // probe_configure_invert_mask(false); // Initialize invert mask. Not required. Updated when in-use. +} + + +// Called by probe_init() and the mc_probe() routines. Sets up the probe pin invert mask to +// appropriately set the pin logic according to setting for normal-high/normal-low operation +// and the probing cycle modes for toward-workpiece/away-from-workpiece. +void probe_configure_invert_mask(uint8_t is_probe_away) +{ + probe_invert_mask = 0; // Initialize as zero. + if (bit_isfalse(settings.flags,BITFLAG_INVERT_PROBE_PIN)) { probe_invert_mask ^= PROBE_MASK; } + if (is_probe_away) { probe_invert_mask ^= PROBE_MASK; } +} + + +// Returns the probe pin state. Triggered = true. Called by gcode parser and probe state monitor. +uint8_t probe_get_state() { return((PROBE_PIN & PROBE_MASK) ^ probe_invert_mask); } + + +// Monitors probe pin state and records the system position when detected. Called by the +// stepper ISR per ISR tick. +// NOTE: This function must be extremely efficient as to not bog down the stepper ISR. +void probe_state_monitor() +{ + if (sys_probe_state == PROBE_ACTIVE) { + if (probe_get_state()) { + sys_probe_state = PROBE_OFF; + memcpy(sys.probe_position, sys.position, sizeof(sys.position)); + bit_true(sys_rt_exec_state, EXEC_MOTION_CANCEL); + } + } +} diff --git a/Source code/probe.h b/Source code/probe.h new file mode 100755 index 0000000..81bd486 --- /dev/null +++ b/Source code/probe.h @@ -0,0 +1,43 @@ +/* + probe.h - code pertaining to probing methods + Part of Grbl + + Copyright (c) 2014-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef probe_h +#define probe_h + +// Values that define the probing state machine. +#define PROBE_OFF 0 // Probing disabled or not in use. (Must be zero.) +#define PROBE_ACTIVE 1 // Actively watching the input pin. + +// Probe pin initialization routine. +void probe_init(); + +// Called by probe_init() and the mc_probe() routines. Sets up the probe pin invert mask to +// appropriately set the pin logic according to setting for normal-high/normal-low operation +// and the probing cycle modes for toward-workpiece/away-from-workpiece. +void probe_configure_invert_mask(uint8_t is_probe_away); + +// Returns probe pin state. Triggered = true. Called by gcode parser and probe state monitor. +uint8_t probe_get_state(); + +// Monitors probe pin state and records the system position when detected. Called by the +// stepper ISR per ISR tick. +void probe_state_monitor(); + +#endif diff --git a/Source code/protocol.c b/Source code/protocol.c new file mode 100755 index 0000000..9084676 --- /dev/null +++ b/Source code/protocol.c @@ -0,0 +1,398 @@ +/* + protocol.c - controls Grbl execution protocol and procedures + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include "uarm_swift.h" +#include "uarm_protocol.h" + +// Define different comment types for pre-parsing. +#define COMMENT_NONE 0 +#define COMMENT_TYPE_PARENTHESES 1 +#define COMMENT_TYPE_SEMICOLON 2 + +static char line[LINE_BUFFER_SIZE]; + +// Directs and executes one line of formatted input from protocol_process. While mostly +// incoming streaming g-code blocks, this also directs and executes Grbl internal commands, +// such as settings, initiating the homing cycle, and toggling switch states. +static void protocol_execute_line(char *line) +{ + protocol_execute_realtime(); // Runtime command check point. + if (sys.abort) { return; } // Bail to calling function upon system abort + + #ifdef REPORT_ECHO_LINE_RECEIVED + report_echo_line_received(line); + #endif + if (line[0] == '$') { + // Grbl '$' system command + report_status_message(system_execute_line(line)); + } else if (sys.state == STATE_ALARM) { + // Everything else is gcode. Block if in alarm mode. + report_status_message(STATUS_ALARM_LOCK); + } else { + // Parse and execute g-code block! + report_status_message(gc_execute_line(line)); + } +} + +/* + GRBL PRIMARY LOOP: +*/ +void protocol_main_loop() +{ + // ------------------------------------------------------------ + // Complete initialization procedures upon a power-up or reset. + // ------------------------------------------------------------ + + // Print welcome message + report_init_message(); + + // Check for and report alarm state after a reset, error, or an initial power up. + if (sys.state == STATE_ALARM) { + report_feedback_message(MESSAGE_ALARM_LOCK); + } else { + // All systems go! But first check for safety door. + if (system_check_safety_door_ajar()) { + bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); + protocol_execute_realtime(); // Enter safety door mode. Should return as IDLE state. + } else { + sys.state = STATE_IDLE; // Set system to ready. Clear all state flags. + } +// system_execute_startup(line); // Execute startup script. + } + + // --------------------------------------------------------------------------------- + // Primary loop! Upon a system abort, this exits back to main() to reset the system. + // --------------------------------------------------------------------------------- + + uint8_t comment = COMMENT_NONE; + uint8_t char_counter = 0; + uint8_t c; + uint8_t line_remain = 0; + uint8_t line_num = 0; + uint8_t line_execute_p = 0; + for (;;) { + + // Process one line of incoming serial data, as the data becomes available. Performs an + // initial filtering by removing spaces and comments and capitalizing all letters. + + // NOTE: While comment, spaces, and block delete(if supported) handling should technically + // be done in the g-code parser, doing it here helps compress the incoming data into Grbl's + // line buffer, which is limited in size. The g-code standard actually states a line can't + // exceed 256 characters, but the Arduino Uno does not have the memory space for this. + // With a better processor, it would be very easy to pull this initial parsing out as a + // seperate task to be shared by the g-code parser and Grbl's system commands. + + while((c = serial_read()) != SERIAL_NO_DATA) { + if ((c == '\n') || (c == '\r')) { // End of line reached + line[char_counter] = 0; // Set string termination character. + receive_cmd_line(line); + comment = COMMENT_NONE; + char_counter = 0; + break; + } else { + if (comment != COMMENT_NONE) { + // Throw away all comment characters + if (c == ')') { + // End of comment. Resume line. But, not if semicolon type comment. + if (comment == COMMENT_TYPE_PARENTHESES) { comment = COMMENT_NONE; } + } + } else { + if (c <= ' ') { + // Throw away whitepace and control characters + } else if (c == '/') { + // Block delete NOT SUPPORTED. Ignore character. + // NOTE: If supported, would simply need to check the system if block delete is enabled. + } else if (c == '(') { + // Enable comments flag and ignore all characters until ')' or EOL. + // NOTE: This doesn't follow the NIST definition exactly, but is good enough for now. + // In the future, we could simply remove the items within the comments, but retain the + // comment control characters, so that the g-code parser can error-check it. + comment = COMMENT_TYPE_PARENTHESES; + } else if (c == ';') { + // NOTE: ';' comment to EOL is a LinuxCNC definition. Not NIST. + comment = COMMENT_TYPE_SEMICOLON; + + // TODO: Install '%' feature + // } else if (c == '%') { + // Program start-end percent sign NOT SUPPORTED. + // NOTE: This maybe installed to tell Grbl when a program is running vs manual input, + // where, during a program, the system auto-cycle start will continue to execute + // everything until the next '%' sign. This will help fix resuming issues with certain + // functions that empty the planner buffer to execute its task on-time. + + } else if (char_counter >= (LINE_BUFFER_SIZE-1)) { + // Detect line buffer overflow. Report error and reset line buffer. + report_status_message(STATUS_OVERFLOW); + comment = COMMENT_NONE; + char_counter = 0; + } else if (c >= 'a' && c <= 'z') { // Upcase lowercase + line[char_counter++] = c-'a'+'A'; + } else { + line[char_counter++] = c; + } + } + } + } + parse_cmd_line(); + + // If there are no more characters in the serial read buffer to be processed and executed, + // this indicates that g-code streaming has either filled the planner buffer or has + // completed. In either case, auto-cycle start, if enabled, any queued moves. + //uarm_swift_tick_run(); + protocol_auto_cycle_start(); + protocol_execute_realtime(); // Runtime command check point. + if (sys.abort) { return; } // Bail to main() program loop to reset system. + + report_parse_result(); +// check_motor_positon(); + } + return; /* Never reached */ +} + + +// Executes run-time commands, when required. This is called from various check points in the main +// program, primarily where there may be a while loop waiting for a buffer to clear space or any +// point where the execution time from the last check point may be more than a fraction of a second. +// This is a way to execute realtime commands asynchronously (aka multitasking) with grbl's g-code +// parsing and planning functions. This function also serves as an interface for the interrupts to +// set the system realtime flags, where only the main program handles them, removing the need to +// define more computationally-expensive volatile variables. This also provides a controlled way to +// execute certain tasks without having two or more instances of the same task, such as the planner +// recalculating the buffer upon a feedhold or override. +// NOTE: The sys_rt_exec_state variable flags are set by any process, step or serial interrupts, pinouts, +// limit switches, or the main program. +void protocol_execute_realtime() +{ + uint8_t rt_exec; // Temp variable to avoid calling volatile multiple times. + + do { // If system is suspended, suspend loop restarts here. + + // Check and execute alarms. + rt_exec = sys_rt_exec_alarm; // Copy volatile sys_rt_exec_alarm. + if (rt_exec) { // Enter only if any bit flag is true + // System alarm. Everything has shutdown by something that has gone severely wrong. Report + // the source of the error to the user. If critical, Grbl disables by entering an infinite + // loop until system reset/abort. + sys.state = STATE_ALARM; // Set system alarm state + if (rt_exec & EXEC_ALARM_HARD_LIMIT) { + report_alarm_message(ALARM_HARD_LIMIT_ERROR); + } else if (rt_exec & EXEC_ALARM_SOFT_LIMIT) { + report_alarm_message(ALARM_SOFT_LIMIT_ERROR); + } else if (rt_exec & EXEC_ALARM_ABORT_CYCLE) { + report_alarm_message(ALARM_ABORT_CYCLE); + } else if (rt_exec & EXEC_ALARM_PROBE_FAIL) { + report_alarm_message(ALARM_PROBE_FAIL); + } else if (rt_exec & EXEC_ALARM_HOMING_FAIL) { + report_alarm_message(ALARM_HOMING_FAIL); + } + // Halt everything upon a critical event flag. Currently hard and soft limits flag this. + if (rt_exec & EXEC_CRITICAL_EVENT) { + report_feedback_message(MESSAGE_CRITICAL_EVENT); + bit_false_atomic(sys_rt_exec_state,EXEC_RESET); // Disable any existing reset + do { + // Nothing. Block EVERYTHING until user issues reset or power cycles. Hard limits + // typically occur while unattended or not paying attention. Gives the user time + // to do what is needed before resetting, like killing the incoming stream. The + // same could be said about soft limits. While the position is not lost, the incoming + // stream could be still engaged and cause a serious crash if it continues afterwards. + + // TODO: Allow status reports during a critical alarm. Still need to think about implications of this. +// if (sys_rt_exec_state & EXEC_STATUS_REPORT) { +// report_realtime_status(); +// bit_false_atomic(sys_rt_exec_state,EXEC_STATUS_REPORT); +// } + } while (bit_isfalse(sys_rt_exec_state,EXEC_RESET)); + } + bit_false_atomic(sys_rt_exec_alarm,0xFF); // Clear all alarm flags + } + + // Check amd execute realtime commands + rt_exec = sys_rt_exec_state; // Copy volatile sys_rt_exec_state. + if (rt_exec) { // Enter only if any bit flag is true + + // Execute system abort. + if (rt_exec & EXEC_RESET) { + sys.abort = true; // Only place this is set true. + return; // Nothing else to do but exit. + } + + // Execute and serial print status + if (rt_exec & EXEC_STATUS_REPORT) { + report_realtime_status(); + bit_false_atomic(sys_rt_exec_state,EXEC_STATUS_REPORT); + } + + // Execute hold states. + // NOTE: The math involved to calculate the hold should be low enough for most, if not all, + // operational scenarios. Once hold is initiated, the system enters a suspend state to block + // all main program processes until either reset or resumed. + if (rt_exec & (EXEC_MOTION_CANCEL | EXEC_FEED_HOLD | EXEC_SAFETY_DOOR)) { + + // TODO: CHECK MODE? How to handle this? Likely nothing, since it only works when IDLE and then resets Grbl. + + // State check for allowable states for hold methods. + if ((sys.state == STATE_IDLE) || (sys.state & (STATE_CYCLE | STATE_HOMING | STATE_MOTION_CANCEL | STATE_HOLD | STATE_SAFETY_DOOR))) { + + // If in CYCLE state, all hold states immediately initiate a motion HOLD. + if (sys.state == STATE_CYCLE) { + st_update_plan_block_parameters(); // Notify stepper module to recompute for hold deceleration. + sys.suspend = SUSPEND_ENABLE_HOLD; // Initiate holding cycle with flag. + } + // If IDLE, Grbl is not in motion. Simply indicate suspend ready state. + if (sys.state == STATE_IDLE) { sys.suspend = SUSPEND_ENABLE_READY; } + + // Execute and flag a motion cancel with deceleration and return to idle. Used primarily by probing cycle + // to halt and cancel the remainder of the motion. + if (rt_exec & EXEC_MOTION_CANCEL) { + // MOTION_CANCEL only occurs during a CYCLE, but a HOLD and SAFETY_DOOR may been initiated beforehand + // to hold the CYCLE. If so, only flag that motion cancel is complete. + if (sys.state == STATE_CYCLE) { sys.state = STATE_MOTION_CANCEL; } + sys.suspend |= SUSPEND_MOTION_CANCEL; // Indicate motion cancel when resuming. Special motion complete. + } + + // Execute a feed hold with deceleration, only during cycle. + if (rt_exec & EXEC_FEED_HOLD) { + // Block SAFETY_DOOR state from prematurely changing back to HOLD. + if (bit_isfalse(sys.state,STATE_SAFETY_DOOR)) { sys.state = STATE_HOLD; } + } + + // Execute a safety door stop with a feed hold, only during a cycle, and disable spindle/coolant. + // NOTE: Safety door differs from feed holds by stopping everything no matter state, disables powered + // devices (spindle/coolant), and blocks resuming until switch is re-engaged. The power-down is + // executed here, if IDLE, or when the CYCLE completes via the EXEC_CYCLE_STOP flag. + if (rt_exec & EXEC_SAFETY_DOOR) { + report_feedback_message(MESSAGE_SAFETY_DOOR_AJAR); + // If already in active, ready-to-resume HOLD, set CYCLE_STOP flag to force de-energize. + // NOTE: Only temporarily sets the 'rt_exec' variable, not the volatile 'rt_exec_state' variable. + if (sys.suspend & SUSPEND_ENABLE_READY) { bit_true(rt_exec,EXEC_CYCLE_STOP); } + sys.suspend |= SUSPEND_ENERGIZE; + sys.state = STATE_SAFETY_DOOR; + } + + } + bit_false_atomic(sys_rt_exec_state,(EXEC_MOTION_CANCEL | EXEC_FEED_HOLD | EXEC_SAFETY_DOOR)); + } + + // Execute a cycle start by starting the stepper interrupt to begin executing the blocks in queue. + if (rt_exec & EXEC_CYCLE_START) { + // Block if called at same time as the hold commands: feed hold, motion cancel, and safety door. + // Ensures auto-cycle-start doesn't resume a hold without an explicit user-input. + if (!(rt_exec & (EXEC_FEED_HOLD | EXEC_MOTION_CANCEL | EXEC_SAFETY_DOOR))) { + // Cycle start only when IDLE or when a hold is complete and ready to resume. + // NOTE: SAFETY_DOOR is implicitly blocked. It reverts to HOLD when the door is closed. + if ((sys.state == STATE_IDLE) || ((sys.state & (STATE_HOLD | STATE_MOTION_CANCEL)) && (sys.suspend & SUSPEND_ENABLE_READY))) { + // Re-energize powered components, if disabled by SAFETY_DOOR. + if (sys.suspend & SUSPEND_ENERGIZE) { + // Delayed Tasks: Restart spindle and coolant, delay to power-up, then resume cycle. + if (gc_state.modal.spindle != SPINDLE_DISABLE) { + spindle_set_state(gc_state.modal.spindle, gc_state.spindle_speed); + delay_ms(SAFETY_DOOR_SPINDLE_DELAY); // TODO: Blocking function call. Need a non-blocking one eventually. + } + if (gc_state.modal.coolant != COOLANT_DISABLE) { + coolant_set_state(gc_state.modal.coolant); + delay_ms(SAFETY_DOOR_COOLANT_DELAY); // TODO: Blocking function call. Need a non-blocking one eventually. + } + // TODO: Install return to pre-park position. + } + // Start cycle only if queued motions exist in planner buffer and the motion is not canceled. + if (plan_get_current_block() && bit_isfalse(sys.suspend,SUSPEND_MOTION_CANCEL)) { + sys.state = STATE_CYCLE; + st_prep_buffer(); // Initialize step segment buffer before beginning cycle. + st_wake_up(); + } else { // Otherwise, do nothing. Set and resume IDLE state. + sys.state = STATE_IDLE; + } + sys.suspend = SUSPEND_DISABLE; // Break suspend state. + } + } + bit_false_atomic(sys_rt_exec_state,EXEC_CYCLE_START); + } + + // Reinitializes the cycle plan and stepper system after a feed hold for a resume. Called by + // realtime command execution in the main program, ensuring that the planner re-plans safely. + // NOTE: Bresenham algorithm variables are still maintained through both the planner and stepper + // cycle reinitializations. The stepper path should continue exactly as if nothing has happened. + // NOTE: EXEC_CYCLE_STOP is set by the stepper subsystem when a cycle or feed hold completes. + if (rt_exec & EXEC_CYCLE_STOP) { + if (sys.state & (STATE_HOLD | STATE_SAFETY_DOOR) && !(sys.soft_limit)) { + // Hold complete. Set to indicate ready to resume. Remain in HOLD or DOOR states until user + // has issued a resume command or reset. + if (sys.suspend & SUSPEND_ENERGIZE) { // De-energize system if safety door has been opened. + spindle_stop(); + coolant_stop(); + } + bit_true(sys.suspend,SUSPEND_ENABLE_READY); + } else { // Motion is complete. Includes CYCLE, HOMING, and MOTION_CANCEL states. + sys.suspend = SUSPEND_DISABLE; + sys.state = STATE_IDLE; + } + bit_false_atomic(sys_rt_exec_state,EXEC_CYCLE_STOP); + } + + } + + // Overrides flag byte (sys.override) and execution should be installed here, since they + // are realtime and require a direct and controlled interface to the main stepper program. + + // Reload step segment buffer + if (sys.state & (STATE_CYCLE | STATE_HOLD | STATE_MOTION_CANCEL | STATE_SAFETY_DOOR | STATE_HOMING)) { st_prep_buffer(); } + + // If safety door was opened, actively check when safety door is closed and ready to resume. + // NOTE: This unlocks the SAFETY_DOOR state to a HOLD state, such that CYCLE_START can activate a resume. + if (sys.state == STATE_SAFETY_DOOR) { + if (bit_istrue(sys.suspend,SUSPEND_ENABLE_READY)) { + if (!(system_check_safety_door_ajar())) { + sys.state = STATE_HOLD; // Update to HOLD state to indicate door is closed and ready to resume. + } + } + } + + } while(sys.suspend); // Check for system suspend state before exiting. + +} + + +// Block until all buffered steps are executed or in a cycle state. Works with feed hold +// during a synchronize call, if it should happen. Also, waits for clean cycle end. +void protocol_buffer_synchronize() +{ + // If system is queued, ensure cycle resumes if the auto start flag is present. + protocol_auto_cycle_start(); + do { + protocol_execute_realtime(); // Check and execute run-time commands + if (sys.abort) { return; } // Check for system abort + } while (plan_get_current_block() || (sys.state == STATE_CYCLE)); +} + + +// Auto-cycle start has two purposes: 1. Resumes a plan_synchronize() call from a function that +// requires the planner buffer to empty (spindle enable, dwell, etc.) 2. As a user setting that +// automatically begins the cycle when a user enters a valid motion command manually. This is +// intended as a beginners feature to help new users to understand g-code. It can be disabled +// as a beginner tool, but (1.) still operates. If disabled, the operation of cycle start is +// manually issuing a cycle start command whenever the user is ready and there is a valid motion +// command in the planner queue. +// NOTE: This function is called from the main loop, buffer sync, and mc_line() only and executes +// when one of these conditions exist respectively: There are no more blocks sent (i.e. streaming +// is finished, single commands), a command that needs to wait for the motions in the buffer to +// execute calls a buffer sync, or the planner buffer is full and ready to go. +void protocol_auto_cycle_start() { bit_true_atomic(sys_rt_exec_state, EXEC_CYCLE_START); } diff --git a/Source code/protocol.h b/Source code/protocol.h new file mode 100755 index 0000000..2461a65 --- /dev/null +++ b/Source code/protocol.h @@ -0,0 +1,58 @@ +/* + protocol.h - controls Grbl execution protocol and procedures + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef protocol_h +#define protocol_h + +// Line buffer size from the serial input stream to be executed. +// NOTE: Not a problem except for extreme cases, but the line buffer size can be too small +// and g-code blocks can get truncated. Officially, the g-code standards support up to 256 +// characters. In future versions, this will be increased, when we know how much extra +// memory space we can invest into here or we re-write the g-code parser not to have this +// buffer. +#ifndef LINE_BUFFER_SIZE + #define LINE_MAX_SIZE 20 + #define LINE_BUFFER_SIZE 80 +#endif + +// Starts Grbl main loop. It handles all incoming characters from the serial port and executes +// them as they complete. It is also responsible for finishing the initialization procedures. +void protocol_main_loop(); + +// Checks and executes a realtime command at various stop points in main program +void protocol_execute_realtime(); + +// Notify the stepper subsystem to start executing the g-code program in buffer. +// void protocol_cycle_start(); + +// Reinitializes the buffer after a feed hold for a resume. +// void protocol_cycle_reinitialize(); + +// Initiates a feed hold of the running program +// void protocol_feed_hold(); + +// Executes the auto cycle feature, if enabled. +void protocol_auto_cycle_start(); + +// Block until all buffered steps are executed +void protocol_buffer_synchronize(); + +#endif diff --git a/Source code/report.c b/Source code/report.c new file mode 100755 index 0000000..a8a5037 --- /dev/null +++ b/Source code/report.c @@ -0,0 +1,522 @@ +/* + report.c - reporting and messaging methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* + This file functions as the primary feedback interface for Grbl. Any outgoing data, such + as the protocol status messages, feedback messages, and status reports, are stored here. + For the most part, these functions primarily are called from protocol.c methods. If a + different style feedback is desired (i.e. JSON), then a user can change these following + methods to accomodate their needs. +*/ + +#include "grbl.h" + + +// Handles the primary confirmation protocol response for streaming interfaces and human-feedback. +// For every incoming line, this method responds with an 'ok' for a successful command or an +// 'error:' to indicate some error event with the line or some critical system error during +// operation. Errors events can originate from the g-code parser, settings module, or asynchronously +// from a critical error, such as a triggered hard limit. Interface should always monitor for these +// responses. +// NOTE: In silent mode, all error codes are greater than zero. +// TODO: Install silent mode to return only numeric values, primarily for GUIs. +void report_status_message(uint8_t status_code) +{ + if (status_code == 0) { // STATUS_OK + printPgmString(PSTR("ok\r\n")); + } else { + printPgmString(PSTR("error: ")); + #ifdef REPORT_GUI_MODE + print_uint8_base10(status_code); + #else + switch(status_code) { + case STATUS_EXPECTED_COMMAND_LETTER: + printPgmString(PSTR("Expected command letter")); break; + case STATUS_BAD_NUMBER_FORMAT: + printPgmString(PSTR("Bad number format")); break; + case STATUS_INVALID_STATEMENT: + printPgmString(PSTR("Invalid statement")); break; + case STATUS_NEGATIVE_VALUE: + printPgmString(PSTR("Value < 0")); break; + case STATUS_SETTING_DISABLED: + printPgmString(PSTR("Setting disabled")); break; + case STATUS_SETTING_STEP_PULSE_MIN: + printPgmString(PSTR("Value < 3 usec")); break; + case STATUS_SETTING_READ_FAIL: + printPgmString(PSTR("EEPROM read fail. Using defaults")); break; + case STATUS_IDLE_ERROR: + printPgmString(PSTR("Not idle")); break; + case STATUS_ALARM_LOCK: + printPgmString(PSTR("Alarm lock")); break; + case STATUS_SOFT_LIMIT_ERROR: + printPgmString(PSTR("Homing not enabled")); break; + case STATUS_OVERFLOW: + printString( "E23\n" ); + //printPgmString(PSTR("Line overflow")); + break; + #ifdef MAX_STEP_RATE_HZ + case STATUS_MAX_STEP_RATE_EXCEEDED: + printPgmString(PSTR("Step rate > 30kHz")); break; + #endif + // Common g-code parser errors. + case STATUS_GCODE_MODAL_GROUP_VIOLATION: + printPgmString(PSTR("Modal group violation")); break; + case STATUS_GCODE_UNSUPPORTED_COMMAND: + printString( "E20\n" ); + //printPgmString(PSTR("Unsupported command")); + + break; + case STATUS_GCODE_UNDEFINED_FEED_RATE: + printPgmString(PSTR("Undefined feed rate")); break; + + case STATUS_UARM_ERROR: + printString( "E21\n" ); + break; + + default: + // Remaining g-code parser errors with error codes + printPgmString(PSTR("Invalid gcode ID:")); + print_uint8_base10(status_code); // Print error code for user reference + } + #endif + printPgmString(PSTR("\r\n")); + + } + +} + +// Prints alarm messages. +void report_alarm_message(int8_t alarm_code) +{ + printPgmString(PSTR("ALARM: ")); + #ifdef REPORT_GUI_MODE + print_uint8_base10(alarm_code); + #else + switch (alarm_code) { + case ALARM_HARD_LIMIT_ERROR: + printPgmString(PSTR("Hard limit")); break; + case ALARM_SOFT_LIMIT_ERROR: + printPgmString(PSTR("Soft limit")); break; + case ALARM_ABORT_CYCLE: + printPgmString(PSTR("Abort during cycle")); break; + case ALARM_PROBE_FAIL: + printPgmString(PSTR("Probe fail")); break; + case ALARM_HOMING_FAIL: + printPgmString(PSTR("Homing fail")); break; + } + #endif + printPgmString(PSTR("\r\n")); + delay_ms(500); // Force delay to ensure message clears serial write buffer. +} + +// Prints feedback messages. This serves as a centralized method to provide additional +// user feedback for things that are not of the status/alarm message protocol. These are +// messages such as setup warnings, switch toggling, and how to exit alarms. +// NOTE: For interfaces, messages are always placed within brackets. And if silent mode +// is installed, the message number codes are less than zero. +// TODO: Install silence feedback messages option in settings +void report_feedback_message(uint8_t message_code) +{ + printPgmString(PSTR("[")); + switch(message_code) { + case MESSAGE_CRITICAL_EVENT: + printPgmString(PSTR("Reset to continue")); break; + case MESSAGE_ALARM_LOCK: + printPgmString(PSTR("'$H'|'$X' to unlock")); break; + case MESSAGE_ALARM_UNLOCK: + printPgmString(PSTR("Caution: Unlocked")); break; + case MESSAGE_ENABLED: + printPgmString(PSTR("Enabled")); break; + case MESSAGE_DISABLED: + printPgmString(PSTR("Disabled")); break; + case MESSAGE_SAFETY_DOOR_AJAR: + printPgmString(PSTR("Check Door")); break; + case MESSAGE_PROGRAM_END: + printPgmString(PSTR("Pgm End")); break; + case MESSAGE_RESTORE_DEFAULTS: + printPgmString(PSTR("Restoring defaults")); break; + } + printPgmString(PSTR("]\r\n")); +} + + +// Welcome message +void report_init_message() +{ + printPgmString(PSTR("\r\nGrbl " GRBL_VERSION " ['$' for help]\r\n")); +} + +// Grbl help message +void report_grbl_help() { + #ifndef REPORT_GUI_MODE + printPgmString(PSTR("$$ (view Grbl settings)\r\n" + "$# (view # parameters)\r\n" + "$G (view parser state)\r\n" + "$I (view build info)\r\n" + "$N (view startup blocks)\r\n" + "$x=value (save Grbl setting)\r\n" + "$Nx=line (save startup block)\r\n" + "$C (check gcode mode)\r\n" + "$X (kill alarm lock)\r\n" + "$H (run homing cycle)\r\n" + "~ (cycle start)\r\n" + "! (feed hold)\r\n" + "? (current status)\r\n" + "ctrl-x (reset Grbl)\r\n")); + #endif +} + + +// Grbl global settings print out. +// NOTE: The numbering scheme here must correlate to storing in settings.c +void report_grbl_settings() { + // Print Grbl settings. + #ifdef REPORT_GUI_MODE + printPgmString(PSTR("$0=")); print_uint8_base10(settings.pulse_microseconds); + printPgmString(PSTR("\r\n$1=")); print_uint8_base10(settings.stepper_idle_lock_time); + printPgmString(PSTR("\r\n$2=")); print_uint8_base10(settings.step_invert_mask); + printPgmString(PSTR("\r\n$3=")); print_uint8_base10(settings.dir_invert_mask); + printPgmString(PSTR("\r\n$4=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)); + printPgmString(PSTR("\r\n$5=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_LIMIT_PINS)); + printPgmString(PSTR("\r\n$6=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_PROBE_PIN)); + printPgmString(PSTR("\r\n$10=")); print_uint8_base10(settings.status_report_mask); + printPgmString(PSTR("\r\n$11=")); printFloat_SettingValue(settings.junction_deviation); + printPgmString(PSTR("\r\n$12=")); printFloat_SettingValue(settings.arc_tolerance); + printPgmString(PSTR("\r\n$13=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)); + printPgmString(PSTR("\r\n$20=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)); + printPgmString(PSTR("\r\n$21=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)); + printPgmString(PSTR("\r\n$22=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)); + printPgmString(PSTR("\r\n$23=")); print_uint8_base10(settings.homing_dir_mask); + printPgmString(PSTR("\r\n$24=")); printFloat_SettingValue(settings.homing_feed_rate); + printPgmString(PSTR("\r\n$25=")); printFloat_SettingValue(settings.homing_seek_rate); + printPgmString(PSTR("\r\n$26=")); print_uint8_base10(settings.homing_debounce_delay); + printPgmString(PSTR("\r\n$27=")); printFloat_SettingValue(settings.homing_pulloff); + printPgmString(PSTR("\r\n")); + #else + printPgmString(PSTR("$0=")); print_uint8_base10(settings.pulse_microseconds); + printPgmString(PSTR(" (step pulse, usec)\r\n$1=")); print_uint8_base10(settings.stepper_idle_lock_time); + printPgmString(PSTR(" (step idle delay, msec)\r\n$2=")); print_uint8_base10(settings.step_invert_mask); + printPgmString(PSTR(" (step port invert mask:")); print_uint8_base2(settings.step_invert_mask); + printPgmString(PSTR(")\r\n$3=")); print_uint8_base10(settings.dir_invert_mask); + printPgmString(PSTR(" (dir port invert mask:")); print_uint8_base2(settings.dir_invert_mask); + printPgmString(PSTR(")\r\n$4=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)); + printPgmString(PSTR(" (step enable invert, bool)\r\n$5=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_LIMIT_PINS)); + printPgmString(PSTR(" (limit pins invert, bool)\r\n$6=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_PROBE_PIN)); + printPgmString(PSTR(" (probe pin invert, bool)\r\n$10=")); print_uint8_base10(settings.status_report_mask); + printPgmString(PSTR(" (status report mask:")); print_uint8_base2(settings.status_report_mask); + printPgmString(PSTR(")\r\n$11=")); printFloat_SettingValue(settings.junction_deviation); + printPgmString(PSTR(" (junction deviation, mm)\r\n$12=")); printFloat_SettingValue(settings.arc_tolerance); + printPgmString(PSTR(" (arc tolerance, mm)\r\n$13=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)); + printPgmString(PSTR(" (report inches, bool)\r\n$20=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)); + printPgmString(PSTR(" (soft limits, bool)\r\n$21=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)); + printPgmString(PSTR(" (hard limits, bool)\r\n$22=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)); + printPgmString(PSTR(" (homing cycle, bool)\r\n$23=")); print_uint8_base10(settings.homing_dir_mask); + printPgmString(PSTR(" (homing dir invert mask:")); print_uint8_base2(settings.homing_dir_mask); + printPgmString(PSTR(")\r\n$24=")); printFloat_SettingValue(settings.homing_feed_rate); + printPgmString(PSTR(" (homing feed, mm/min)\r\n$25=")); printFloat_SettingValue(settings.homing_seek_rate); + printPgmString(PSTR(" (homing seek, mm/min)\r\n$26=")); print_uint8_base10(settings.homing_debounce_delay); + printPgmString(PSTR(" (homing debounce, msec)\r\n$27=")); printFloat_SettingValue(settings.homing_pulloff); + printPgmString(PSTR(" (homing pull-off, mm)\r\n")); + #endif + + // Print axis settings + uint8_t idx, set_idx; + uint8_t val = AXIS_SETTINGS_START_VAL; + for (set_idx=0; set_idxline_number; + } + printInteger(ln); + #endif + + #ifdef REPORT_REALTIME_RATE + // Report realtime rate + printPgmString(PSTR(",F:")); + printFloat_RateValue(st_get_realtime_rate()); + #endif + + if (bit_istrue(settings.status_report_mask,BITFLAG_RT_STATUS_LIMIT_PINS)) { + printPgmString(PSTR(",Lim:")); + print_unsigned_int8(limits_get_state(),2,N_AXIS); + } + + #ifdef REPORT_CONTROL_PIN_STATE + printPgmString(PSTR(",Ctl:")); + print_uint8_base2(CONTROL_PIN & CONTROL_MASK); + #endif + + printPgmString(PSTR(">\r\n")); +} diff --git a/Source code/report.h b/Source code/report.h new file mode 100755 index 0000000..c88623f --- /dev/null +++ b/Source code/report.h @@ -0,0 +1,115 @@ +/* + report.h - reporting and messaging methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ +#ifndef report_h +#define report_h + +// Define Grbl status codes. +#define STATUS_OK 0 +#define STATUS_EXPECTED_COMMAND_LETTER 1 +#define STATUS_BAD_NUMBER_FORMAT 2 +#define STATUS_INVALID_STATEMENT 3 +#define STATUS_NEGATIVE_VALUE 4 +#define STATUS_SETTING_DISABLED 5 +#define STATUS_SETTING_STEP_PULSE_MIN 6 +#define STATUS_SETTING_READ_FAIL 7 +#define STATUS_IDLE_ERROR 8 +#define STATUS_ALARM_LOCK 9 +#define STATUS_SOFT_LIMIT_ERROR 10 +#define STATUS_OVERFLOW 11 +#define STATUS_MAX_STEP_RATE_EXCEEDED 12 + +#define STATUS_GCODE_UNSUPPORTED_COMMAND 20 +#define STATUS_GCODE_MODAL_GROUP_VIOLATION 21 +#define STATUS_GCODE_UNDEFINED_FEED_RATE 22 +#define STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER 23 +#define STATUS_GCODE_AXIS_COMMAND_CONFLICT 24 +#define STATUS_GCODE_WORD_REPEATED 25 +#define STATUS_GCODE_NO_AXIS_WORDS 26 +#define STATUS_GCODE_INVALID_LINE_NUMBER 27 +#define STATUS_GCODE_VALUE_WORD_MISSING 28 +#define STATUS_GCODE_UNSUPPORTED_COORD_SYS 29 +#define STATUS_GCODE_G53_INVALID_MOTION_MODE 30 +#define STATUS_GCODE_AXIS_WORDS_EXIST 31 +#define STATUS_GCODE_NO_AXIS_WORDS_IN_PLANE 32 +#define STATUS_GCODE_INVALID_TARGET 33 +#define STATUS_GCODE_ARC_RADIUS_ERROR 34 +#define STATUS_GCODE_NO_OFFSETS_IN_PLANE 35 +#define STATUS_GCODE_UNUSED_WORDS 36 +#define STATUS_GCODE_G43_DYNAMIC_AXIS_ERROR 37 + +#define STATUS_UARM_ERROR 50 + +// Define Grbl alarm codes. +#define ALARM_HARD_LIMIT_ERROR 1 +#define ALARM_SOFT_LIMIT_ERROR 2 +#define ALARM_ABORT_CYCLE 3 +#define ALARM_PROBE_FAIL 4 +#define ALARM_HOMING_FAIL 5 + +// Define Grbl feedback message codes. +#define MESSAGE_CRITICAL_EVENT 1 +#define MESSAGE_ALARM_LOCK 2 +#define MESSAGE_ALARM_UNLOCK 3 +#define MESSAGE_ENABLED 4 +#define MESSAGE_DISABLED 5 +#define MESSAGE_SAFETY_DOOR_AJAR 6 +#define MESSAGE_PROGRAM_END 7 +#define MESSAGE_RESTORE_DEFAULTS 8 + +// Prints system status messages. +void report_status_message(uint8_t status_code); + +// Prints system alarm messages. +void report_alarm_message(int8_t alarm_code); + +// Prints miscellaneous feedback messages. +void report_feedback_message(uint8_t message_code); + +// Prints welcome message +void report_init_message(); + +// Prints Grbl help and current global settings +void report_grbl_help(); + +// Prints Grbl global settings +void report_grbl_settings(); + +// Prints an echo of the pre-parsed line received right before execution. +void report_echo_line_received(char *line); + +// Prints realtime status report +void report_realtime_status(); + +// Prints recorded probe position +void report_probe_parameters(); + +// Prints Grbl NGC parameters (coordinate offsets, probe) +void report_ngc_parameters(); + +// Prints current g-code parser mode state +void report_gcode_modes(); + +// Prints startup line +void report_startup_line(uint8_t n, char *line); + +// Prints build info and user info +void report_build_info(char *line); + +#endif diff --git a/Source code/serial.c b/Source code/serial.c new file mode 100755 index 0000000..56f84e0 --- /dev/null +++ b/Source code/serial.c @@ -0,0 +1,201 @@ +/* + serial.c - Low level functions for sending and recieving bytes via the serial port + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +uint8_t serial_rx_buffer[RX_BUFFER_SIZE]; +uint8_t serial_rx_buffer_head = 0; +volatile uint8_t serial_rx_buffer_tail = 0; + +uint8_t serial_tx_buffer[TX_BUFFER_SIZE]; +uint8_t serial_tx_buffer_head = 0; +volatile uint8_t serial_tx_buffer_tail = 0; + + +#ifdef ENABLE_XONXOFF + volatile uint8_t flow_ctrl = XON_SENT; // Flow control state variable +#endif + + +// Returns the number of bytes used in the RX serial buffer. +uint8_t serial_get_rx_buffer_count() +{ + uint8_t rtail = serial_rx_buffer_tail; // Copy to limit multiple calls to volatile + if (serial_rx_buffer_head >= rtail) { return(serial_rx_buffer_head-rtail); } + return (RX_BUFFER_SIZE - (rtail-serial_rx_buffer_head)); +} + + +// Returns the number of bytes used in the TX serial buffer. +// NOTE: Not used except for debugging and ensuring no TX bottlenecks. +uint8_t serial_get_tx_buffer_count() +{ + uint8_t ttail = serial_tx_buffer_tail; // Copy to limit multiple calls to volatile + if (serial_tx_buffer_head >= ttail) { return(serial_tx_buffer_head-ttail); } + return (TX_BUFFER_SIZE - (ttail-serial_tx_buffer_head)); +} + + +void serial_init() +{ + // Set baud rate + #if BAUD_RATE < 57600 + uint16_t UBRR0_value = ((F_CPU / (8L * BAUD_RATE)) - 1)/2 ; + UCSR0A &= ~(1 << U2X0); // baud doubler off - Only needed on Uno XXX + #else + uint16_t UBRR0_value = ((F_CPU / (4L * BAUD_RATE)) - 1)/2; + UCSR0A |= (1 << U2X0); // baud doubler on for high baud rates, i.e. 115200 + #endif + UBRR0H = UBRR0_value >> 8; + UBRR0L = UBRR0_value; + + // enable rx and tx + UCSR0B |= 1<= RX_BUFFER_FULL) && flow_ctrl == XON_SENT) { + flow_ctrl = SEND_XOFF; + UCSR0B |= (1 << UDRIE0); // Force TX + } + #endif + + } + //TODO: else alarm on overflow? + } +} + + +void serial_reset_read_buffer() +{ + serial_rx_buffer_tail = serial_rx_buffer_head; + + #ifdef ENABLE_XONXOFF + flow_ctrl = XON_SENT; + #endif +} diff --git a/Source code/serial.h b/Source code/serial.h new file mode 100755 index 0000000..4cdbcb0 --- /dev/null +++ b/Source code/serial.h @@ -0,0 +1,64 @@ +/* + serial.c - Low level functions for sending and recieving bytes via the serial port + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef serial_h +#define serial_h + + +#ifndef RX_BUFFER_SIZE + #define RX_BUFFER_SIZE 128 +#endif +#ifndef TX_BUFFER_SIZE + #define TX_BUFFER_SIZE 128 +#endif + +#define SERIAL_NO_DATA 0xff + +#ifdef ENABLE_XONXOFF + #define RX_BUFFER_FULL 96 // XOFF high watermark + #define RX_BUFFER_LOW 64 // XON low watermark + #define SEND_XOFF 1 + #define SEND_XON 2 + #define XOFF_SENT 3 + #define XON_SENT 4 + #define XOFF_CHAR 0x13 + #define XON_CHAR 0x11 +#endif + +void serial_init(); + +// Writes one byte to the TX serial buffer. Called by main program. +void serial_write(uint8_t data); + +// Fetches the first byte in the serial read buffer. Called by main program. +uint8_t serial_read(); + +// Reset and empty data in read buffer. Used by e-stop and reset. +void serial_reset_read_buffer(); + +// Returns the number of bytes used in the RX serial buffer. +uint8_t serial_get_rx_buffer_count(); + +// Returns the number of bytes used in the TX serial buffer. +// NOTE: Not used except for debugging and ensuring no TX bottlenecks. +uint8_t serial_get_tx_buffer_count(); + +#endif diff --git a/Source code/settings.c b/Source code/settings.c new file mode 100755 index 0000000..c85c3fb --- /dev/null +++ b/Source code/settings.c @@ -0,0 +1,323 @@ +/* + settings.c - eeprom configuration handling + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + +settings_t settings; + + +// Method to store startup lines into EEPROM +void settings_store_startup_line(uint8_t n, char *line) +{ + uint32_t addr = n*(LINE_BUFFER_SIZE+1)+EEPROM_ADDR_STARTUP_BLOCK; + memcpy_to_eeprom_with_checksum(addr,(char*)line, LINE_BUFFER_SIZE); +} + + +// Method to store build info into EEPROM +void settings_store_build_info(char *line) +{ + memcpy_to_eeprom_with_checksum(EEPROM_ADDR_BUILD_INFO,(char*)line, LINE_BUFFER_SIZE); +} + + +// Method to store coord data parameters into EEPROM +void settings_write_coord_data(uint8_t coord_select, float *coord_data) +{ + uint32_t addr = coord_select*(sizeof(float)*N_AXIS+1) + EEPROM_ADDR_PARAMETERS; + memcpy_to_eeprom_with_checksum(addr,(char*)coord_data, sizeof(float)*N_AXIS); +} + + +// Method to store Grbl global settings struct and version number into EEPROM +void write_global_settings() +{ + eeprom_put_char(0, SETTINGS_VERSION); + memcpy_to_eeprom_with_checksum(EEPROM_ADDR_GLOBAL, (char*)&settings, sizeof(settings_t)); +} + + +// Method to restore EEPROM-saved Grbl global settings back to defaults. +void settings_restore(uint8_t restore_flag) { + if (restore_flag & SETTINGS_RESTORE_DEFAULTS) { + settings.pulse_microseconds = DEFAULT_STEP_PULSE_MICROSECONDS; + settings.stepper_idle_lock_time = DEFAULT_STEPPER_IDLE_LOCK_TIME; + settings.step_invert_mask = DEFAULT_STEPPING_INVERT_MASK; + settings.dir_invert_mask = DEFAULT_DIRECTION_INVERT_MASK; + settings.status_report_mask = DEFAULT_STATUS_REPORT_MASK; + settings.junction_deviation = DEFAULT_JUNCTION_DEVIATION; + settings.arc_tolerance = DEFAULT_ARC_TOLERANCE; + settings.homing_dir_mask = DEFAULT_HOMING_DIR_MASK; + settings.homing_feed_rate = DEFAULT_HOMING_FEED_RATE; + settings.homing_seek_rate = DEFAULT_HOMING_SEEK_RATE; + settings.homing_debounce_delay = DEFAULT_HOMING_DEBOUNCE_DELAY; + settings.homing_pulloff = DEFAULT_HOMING_PULLOFF; + + settings.flags = 0; + if (DEFAULT_REPORT_INCHES) { settings.flags |= BITFLAG_REPORT_INCHES; } + if (DEFAULT_INVERT_ST_ENABLE) { settings.flags |= BITFLAG_INVERT_ST_ENABLE; } + if (DEFAULT_INVERT_LIMIT_PINS) { settings.flags |= BITFLAG_INVERT_LIMIT_PINS; } + if (DEFAULT_SOFT_LIMIT_ENABLE) { settings.flags |= BITFLAG_SOFT_LIMIT_ENABLE; } + if (DEFAULT_HARD_LIMIT_ENABLE) { settings.flags |= BITFLAG_HARD_LIMIT_ENABLE; } + if (DEFAULT_HOMING_ENABLE) { settings.flags |= BITFLAG_HOMING_ENABLE; } + + settings.steps_per_mm[X_AXIS] = DEFAULT_X_STEPS_PER_MM; + settings.steps_per_mm[Y_AXIS] = DEFAULT_Y_STEPS_PER_MM; + settings.steps_per_mm[Z_AXIS] = DEFAULT_Z_STEPS_PER_MM; + settings.max_rate[X_AXIS] = DEFAULT_X_MAX_RATE; + settings.max_rate[Y_AXIS] = DEFAULT_Y_MAX_RATE; + settings.max_rate[Z_AXIS] = DEFAULT_Z_MAX_RATE; + settings.acceleration[X_AXIS] = DEFAULT_X_ACCELERATION; + settings.acceleration[Y_AXIS] = DEFAULT_Y_ACCELERATION; + settings.acceleration[Z_AXIS] = DEFAULT_Z_ACCELERATION; + settings.max_travel[X_AXIS] = (-DEFAULT_X_MAX_TRAVEL); + settings.max_travel[Y_AXIS] = (-DEFAULT_Y_MAX_TRAVEL); + settings.max_travel[Z_AXIS] = (-DEFAULT_Z_MAX_TRAVEL); + + write_global_settings(); + } + + if (restore_flag & SETTINGS_RESTORE_PARAMETERS) { + uint8_t idx; + float coord_data[N_AXIS]; + memset(&coord_data, 0, sizeof(coord_data)); + for (idx=0; idx <= SETTING_INDEX_NCOORD; idx++) { settings_write_coord_data(idx, coord_data); } + } + + if (restore_flag & SETTINGS_RESTORE_STARTUP_LINES) { + #if N_STARTUP_LINE > 0 + eeprom_put_char(EEPROM_ADDR_STARTUP_BLOCK, 0); + #endif + #if N_STARTUP_LINE > 1 + eeprom_put_char(EEPROM_ADDR_STARTUP_BLOCK+(LINE_BUFFER_SIZE+1), 0); + #endif + } + + if (restore_flag & SETTINGS_RESTORE_BUILD_INFO) { eeprom_put_char(EEPROM_ADDR_BUILD_INFO , 0); } +} + + +// Reads startup line from EEPROM. Updated pointed line string data. +uint8_t settings_read_startup_line(uint8_t n, char *line) +{ + uint32_t addr = n*(LINE_BUFFER_SIZE+1)+EEPROM_ADDR_STARTUP_BLOCK; + if (!(memcpy_from_eeprom_with_checksum((char*)line, addr, LINE_BUFFER_SIZE))) { + // Reset line with default value + line[0] = 0; // Empty line + settings_store_startup_line(n, line); + return(false); + } + return(true); +} + + +// Reads startup line from EEPROM. Updated pointed line string data. +uint8_t settings_read_build_info(char *line) +{ + if (!(memcpy_from_eeprom_with_checksum((char*)line, EEPROM_ADDR_BUILD_INFO, LINE_BUFFER_SIZE))) { + // Reset line with default value + line[0] = 0; // Empty line + settings_store_build_info(line); + return(false); + } + return(true); +} + + +// Read selected coordinate data from EEPROM. Updates pointed coord_data value. +uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data) +{ + uint32_t addr = coord_select*(sizeof(float)*N_AXIS+1) + EEPROM_ADDR_PARAMETERS; + if (!(memcpy_from_eeprom_with_checksum((char*)coord_data, addr, sizeof(float)*N_AXIS))) { + // Reset with default zero vector + clear_vector_float(coord_data); + settings_write_coord_data(coord_select,coord_data); + return(false); + } + return(true); +} + + +// Reads Grbl global settings struct from EEPROM. +uint8_t read_global_settings() { + // Check version-byte of eeprom + uint8_t version = eeprom_get_char(0); + if (version == SETTINGS_VERSION) { + // Read settings-record and check checksum + if (!(memcpy_from_eeprom_with_checksum((char*)&settings, EEPROM_ADDR_GLOBAL, sizeof(settings_t)))) { + return(false); + } + } else { + return(false); + } + return(true); +} + + +// A helper method to set settings from command line +uint8_t settings_store_global_setting(uint8_t parameter, float value) { + if (value < 0.0) { return(STATUS_NEGATIVE_VALUE); } + if (parameter >= AXIS_SETTINGS_START_VAL) { + // Store axis configuration. Axis numbering sequence set by AXIS_SETTING defines. + // NOTE: Ensure the setting index corresponds to the report.c settings printout. + parameter -= AXIS_SETTINGS_START_VAL; + uint8_t set_idx = 0; + while (set_idx < AXIS_N_SETTINGS) { + if (parameter < N_AXIS) { + // Valid axis setting found. + switch (set_idx) { + case 0: + #ifdef MAX_STEP_RATE_HZ + if (value*settings.max_rate[parameter] > (MAX_STEP_RATE_HZ*60.0)) { return(STATUS_MAX_STEP_RATE_EXCEEDED); } + #endif + settings.steps_per_mm[parameter] = value; + break; + case 1: + #ifdef MAX_STEP_RATE_HZ + if (value*settings.steps_per_mm[parameter] > (MAX_STEP_RATE_HZ*60.0)) { return(STATUS_MAX_STEP_RATE_EXCEEDED); } + #endif + settings.max_rate[parameter] = value; + break; + case 2: settings.acceleration[parameter] = value*60*60; break; // Convert to mm/min^2 for grbl internal use. + case 3: settings.max_travel[parameter] = -value; break; // Store as negative for grbl internal use. + } + break; // Exit while-loop after setting has been configured and proceed to the EEPROM write call. + } else { + set_idx++; + // If axis index greater than N_AXIS or setting index greater than number of axis settings, error out. + if ((parameter < AXIS_SETTINGS_INCREMENT) || (set_idx == AXIS_N_SETTINGS)) { return(STATUS_INVALID_STATEMENT); } + parameter -= AXIS_SETTINGS_INCREMENT; + } + } + } else { + // Store non-axis Grbl settings + uint8_t int_value = trunc(value); + switch(parameter) { + case 0: + if (int_value < 3) { return(STATUS_SETTING_STEP_PULSE_MIN); } + settings.pulse_microseconds = int_value; break; + case 1: settings.stepper_idle_lock_time = int_value; break; + case 2: + settings.step_invert_mask = int_value; + st_generate_step_dir_invert_masks(); // Regenerate step and direction port invert masks. + break; + case 3: + settings.dir_invert_mask = int_value; + st_generate_step_dir_invert_masks(); // Regenerate step and direction port invert masks. + break; + case 4: // Reset to ensure change. Immediate re-init may cause problems. + if (int_value) { settings.flags |= BITFLAG_INVERT_ST_ENABLE; } + else { settings.flags &= ~BITFLAG_INVERT_ST_ENABLE; } + break; + case 5: // Reset to ensure change. Immediate re-init may cause problems. + if (int_value) { settings.flags |= BITFLAG_INVERT_LIMIT_PINS; } + else { settings.flags &= ~BITFLAG_INVERT_LIMIT_PINS; } + break; + case 6: // Reset to ensure change. Immediate re-init may cause problems. + if (int_value) { settings.flags |= BITFLAG_INVERT_PROBE_PIN; } + else { settings.flags &= ~BITFLAG_INVERT_PROBE_PIN; } + break; + case 10: settings.status_report_mask = int_value; break; + case 11: settings.junction_deviation = value; break; + case 12: settings.arc_tolerance = value; break; + case 13: + if (int_value) { settings.flags |= BITFLAG_REPORT_INCHES; } + else { settings.flags &= ~BITFLAG_REPORT_INCHES; } + break; + case 20: + if (int_value) { + if (bit_isfalse(settings.flags, BITFLAG_HOMING_ENABLE)) { return(STATUS_SOFT_LIMIT_ERROR); } + settings.flags |= BITFLAG_SOFT_LIMIT_ENABLE; + } else { settings.flags &= ~BITFLAG_SOFT_LIMIT_ENABLE; } + break; + case 21: + if (int_value) { settings.flags |= BITFLAG_HARD_LIMIT_ENABLE; } + else { settings.flags &= ~BITFLAG_HARD_LIMIT_ENABLE; } + limits_init(); // Re-init to immediately change. NOTE: Nice to have but could be problematic later. + break; + case 22: + if (int_value) { settings.flags |= BITFLAG_HOMING_ENABLE; } + else { + settings.flags &= ~BITFLAG_HOMING_ENABLE; + settings.flags &= ~BITFLAG_SOFT_LIMIT_ENABLE; // Force disable soft-limits. + } + break; + case 23: settings.homing_dir_mask = int_value; break; + case 24: settings.homing_feed_rate = value; break; + case 25: settings.homing_seek_rate = value; break; + case 26: settings.homing_debounce_delay = int_value; break; + case 27: settings.homing_pulloff = value; break; + default: + return(STATUS_INVALID_STATEMENT); + } + } + write_global_settings(); + return(STATUS_OK); +} + + +// Initialize the config subsystem +void settings_init() { + if(!read_global_settings()) { + report_status_message(STATUS_SETTING_READ_FAIL); + settings_restore(SETTINGS_RESTORE_ALL); // Force restore all EEPROM data. + report_grbl_settings(); + } + + // NOTE: Checking paramater data, startup lines, and build info string should be done here, + // but it seems fairly redundant. Each of these can be manually checked and reset or restored. + // Check all parameter data into a dummy variable. If error, reset to zero, otherwise do nothing. + // float coord_data[N_AXIS]; + // uint8_t i; + // for (i=0; i<=SETTING_INDEX_NCOORD; i++) { + // if (!settings_read_coord_data(i, coord_data)) { + // report_status_message(STATUS_SETTING_READ_FAIL); + // } + // } + // NOTE: Startup lines are checked and executed by protocol_main_loop at the end of initialization. +} + + +// Returns step pin mask according to Grbl internal axis indexing. +uint8_t get_step_pin_mask(uint8_t axis_idx) +{ + if ( axis_idx == X_AXIS ) { return((1<. +*/ + +#ifndef settings_h +#define settings_h + +#include "grbl.h" + + +// Version of the EEPROM data. Will be used to migrate existing data from older versions of Grbl +// when firmware is upgraded. Always stored in byte 0 of eeprom +#define SETTINGS_VERSION 9 // NOTE: Check settings_reset() when moving to next version. + +// Define bit flag masks for the boolean settings in settings.flag. +#define BITFLAG_REPORT_INCHES bit(0) +// #define BITFLAG_AUTO_START bit(1) // Obsolete. Don't alter to keep back compatibility. +#define BITFLAG_INVERT_ST_ENABLE bit(2) +#define BITFLAG_HARD_LIMIT_ENABLE bit(3) +#define BITFLAG_HOMING_ENABLE bit(4) +#define BITFLAG_SOFT_LIMIT_ENABLE bit(5) +#define BITFLAG_INVERT_LIMIT_PINS bit(6) +#define BITFLAG_INVERT_PROBE_PIN bit(7) + +// Define status reporting boolean enable bit flags in settings.status_report_mask +#define BITFLAG_RT_STATUS_MACHINE_POSITION bit(0) +#define BITFLAG_RT_STATUS_WORK_POSITION bit(1) +#define BITFLAG_RT_STATUS_PLANNER_BUFFER bit(2) +#define BITFLAG_RT_STATUS_SERIAL_RX bit(3) +#define BITFLAG_RT_STATUS_LIMIT_PINS bit(4) + +// Define settings restore bitflags. +#define SETTINGS_RESTORE_ALL 0xFF // All bitflags +#define SETTINGS_RESTORE_DEFAULTS bit(0) +#define SETTINGS_RESTORE_PARAMETERS bit(1) +#define SETTINGS_RESTORE_STARTUP_LINES bit(2) +#define SETTINGS_RESTORE_BUILD_INFO bit(3) + +// Define EEPROM memory address location values for Grbl settings and parameters +// NOTE: The Atmega328p has 1KB EEPROM. The upper half is reserved for parameters and +// the startup script. The lower half contains the global settings and space for future +// developments. +#define EEPROM_ADDR_GLOBAL 2049U +#define EEPROM_ADDR_PARAMETERS 2560U +#define EEPROM_ADDR_STARTUP_BLOCK 2816U +#define EEPROM_ADDR_BUILD_INFO 2990U + +// Define EEPROM address indexing for coordinate parameters +#define N_COORDINATE_SYSTEM 6 // Number of supported work coordinate systems (from index 1) +#define SETTING_INDEX_NCOORD N_COORDINATE_SYSTEM+1 // Total number of system stored (from index 0) +// NOTE: Work coordinate indices are (0=G54, 1=G55, ... , 6=G59) +#define SETTING_INDEX_G28 N_COORDINATE_SYSTEM // Home position 1 +#define SETTING_INDEX_G30 N_COORDINATE_SYSTEM+1 // Home position 2 +// #define SETTING_INDEX_G92 N_COORDINATE_SYSTEM+2 // Coordinate offset (G92.2,G92.3 not supported) + +// Define Grbl axis settings numbering scheme. Starts at START_VAL, every INCREMENT, over N_SETTINGS. +#define AXIS_N_SETTINGS 4 +#define AXIS_SETTINGS_START_VAL 100 // NOTE: Reserving settings values >= 100 for axis settings. Up to 255. +#define AXIS_SETTINGS_INCREMENT 10 // Must be greater than the number of axis settings + +// Global persistent settings (Stored from byte EEPROM_ADDR_GLOBAL onwards) +typedef struct { + // Axis settings + float steps_per_mm[N_AXIS]; + float max_rate[N_AXIS]; + float acceleration[N_AXIS]; + float max_travel[N_AXIS]; + + // Remaining Grbl settings + uint8_t pulse_microseconds; + uint8_t step_invert_mask; + uint8_t dir_invert_mask; + uint8_t stepper_idle_lock_time; // If max value 255, steppers do not disable. + uint8_t status_report_mask; // Mask to indicate desired report data. + float junction_deviation; + float arc_tolerance; + + uint8_t flags; // Contains default boolean settings + + uint8_t homing_dir_mask; + float homing_feed_rate; + float homing_seek_rate; + uint16_t homing_debounce_delay; + float homing_pulloff; +} settings_t; +extern settings_t settings; + +// Initialize the configuration subsystem (load settings from EEPROM) +void settings_init(); + +// Helper function to clear and restore EEPROM defaults +void settings_restore(uint8_t restore_flag); + +// A helper method to set new settings from command line +uint8_t settings_store_global_setting(uint8_t parameter, float value); + +// Stores the protocol line variable as a startup line in EEPROM +void settings_store_startup_line(uint8_t n, char *line); + +// Reads an EEPROM startup line to the protocol line variable +uint8_t settings_read_startup_line(uint8_t n, char *line); + +// Stores build info user-defined string +void settings_store_build_info(char *line); + +// Reads build info user-defined string +uint8_t settings_read_build_info(char *line); + +// Writes selected coordinate data to EEPROM +void settings_write_coord_data(uint8_t coord_select, float *coord_data); + +// Reads selected coordinate data from EEPROM +uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data); + +// Returns the step pin mask according to Grbl's internal axis numbering +uint8_t get_step_pin_mask(uint8_t i); + +// Returns the direction pin mask according to Grbl's internal axis numbering +uint8_t get_direction_pin_mask(uint8_t i); + +// Returns the limit pin mask according to Grbl's internal axis numbering +uint8_t get_limit_pin_mask(uint8_t i); + + +#endif diff --git a/Source code/spindle_control.c b/Source code/spindle_control.c new file mode 100755 index 0000000..b2b6eca --- /dev/null +++ b/Source code/spindle_control.c @@ -0,0 +1,141 @@ +/* + spindle_control.c - spindle control methods + Part of Grbl + + Copyright (c) 2012-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +void spindle_init() +{ + // Configure variable spindle PWM and enable pin, if requried. On the Uno, PWM and enable are + // combined unless configured otherwise. + #ifdef VARIABLE_SPINDLE + SPINDLE_PWM_DDR |= (1< SPINDLE_RPM_RANGE ) { rpm = SPINDLE_RPM_RANGE; } // Prevent integer overflow + } + current_pwm = floor( rpm*(PWM_MAX_VALUE/SPINDLE_RPM_RANGE) + 0.5); + #ifdef MINIMUM_SPINDLE_PWM + if (current_pwm < MINIMUM_SPINDLE_PWM) { current_pwm = MINIMUM_SPINDLE_PWM; } + #endif + OCR_REGISTER = current_pwm; // Set PWM pin output + + // On the Uno, spindle enable and PWM are shared, unless otherwise specified. + #if defined(CPU_MAP_ATMEGA2560) || defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) + #ifdef INVERT_SPINDLE_ENABLE_PIN + SPINDLE_ENABLE_PORT &= ~(1<. +*/ + +#ifndef spindle_control_h +#define spindle_control_h + + +// Initializes spindle pins and hardware PWM, if enabled. +void spindle_init(); + +// Sets spindle direction and spindle rpm via PWM, if enabled. +void spindle_run(uint8_t direction, float rpm); + +void spindle_set_state(uint8_t state, float rpm); + +// Kills spindle. +void spindle_stop(); + +#endif diff --git a/Source code/stepper.c b/Source code/stepper.c new file mode 100755 index 0000000..0ea5812 --- /dev/null +++ b/Source code/stepper.c @@ -0,0 +1,928 @@ +/* + stepper.c - stepper motor driver: executes motion plans using stepper motors + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" + + +// Some useful constants. +#define DT_SEGMENT (1.0/(ACCELERATION_TICKS_PER_SECOND*60.0)) // min/segment +#define REQ_MM_INCREMENT_SCALAR 1.25 +#define RAMP_ACCEL 0 +#define RAMP_CRUISE 1 +#define RAMP_DECEL 2 + +// Define Adaptive Multi-Axis Step-Smoothing(AMASS) levels and cutoff frequencies. The highest level +// frequency bin starts at 0Hz and ends at its cutoff frequency. The next lower level frequency bin +// starts at the next higher cutoff frequency, and so on. The cutoff frequencies for each level must +// be considered carefully against how much it over-drives the stepper ISR, the accuracy of the 16-bit +// timer, and the CPU overhead. Level 0 (no AMASS, normal operation) frequency bin starts at the +// Level 1 cutoff frequency and up to as fast as the CPU allows (over 30kHz in limited testing). +// NOTE: AMASS cutoff frequency multiplied by ISR overdrive factor must not exceed maximum step frequency. +// NOTE: Current settings are set to overdrive the ISR to no more than 16kHz, balancing CPU overhead +// and timer accuracy. Do not alter these settings unless you know what you are doing. +#define MAX_AMASS_LEVEL 3 +// AMASS_LEVEL0: Normal operation. No AMASS. No upper cutoff frequency. Starts at LEVEL1 cutoff frequency. +#define AMASS_LEVEL1 (F_CPU/8000) // Over-drives ISR (x2). Defined as F_CPU/(Cutoff frequency in Hz) +#define AMASS_LEVEL2 (F_CPU/4000) // Over-drives ISR (x4) +#define AMASS_LEVEL3 (F_CPU/2000) // Over-drives ISR (x8) + + +// Stores the planner block Bresenham algorithm execution data for the segments in the segment +// buffer. Normally, this buffer is partially in-use, but, for the worst case scenario, it will +// never exceed the number of accessible stepper buffer segments (SEGMENT_BUFFER_SIZE-1). +// NOTE: This data is copied from the prepped planner blocks so that the planner blocks may be +// discarded when entirely consumed and completed by the segment buffer. Also, AMASS alters this +// data for its own use. +typedef struct { + uint8_t direction_bits; + uint32_t steps[N_AXIS]; + uint32_t step_event_count; +} st_block_t; +static st_block_t st_block_buffer[SEGMENT_BUFFER_SIZE-1]; + +// Primary stepper segment ring buffer. Contains small, short line segments for the stepper +// algorithm to execute, which are "checked-out" incrementally from the first block in the +// planner buffer. Once "checked-out", the steps in the segments buffer cannot be modified by +// the planner, where the remaining planner block steps still can. +typedef struct { + uint16_t n_step; // Number of step events to be executed for this segment + uint8_t st_block_index; // Stepper block data index. Uses this information to execute this segment. + uint16_t cycles_per_tick; // Step distance traveled per ISR tick, aka step rate. + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + uint8_t amass_level; // Indicates AMASS level for the ISR to execute this segment + #else + uint8_t prescaler; // Without AMASS, a prescaler is required to adjust for slow timing. + #endif +} segment_t; +static segment_t segment_buffer[SEGMENT_BUFFER_SIZE]; + +// Stepper ISR data struct. Contains the running data for the main stepper ISR. +typedef struct { + // Used by the bresenham line algorithm + uint32_t counter_x, // Counter variables for the bresenham line tracer + counter_y, + counter_z; + #ifdef STEP_PULSE_DELAY + uint8_t step_bits; // Stores out_bits output to complete the step pulse delay + #endif + + uint8_t execute_step; // Flags step execution for each interrupt. + uint8_t step_pulse_time; // Step pulse reset time after step rise + uint8_t step_outbits; // The next stepping-bits to be output + uint8_t dir_outbits; + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + uint32_t steps[N_AXIS]; + #endif + + uint16_t step_count; // Steps remaining in line segment motion + uint8_t exec_block_index; // Tracks the current st_block index. Change indicates new block. + st_block_t *exec_block; // Pointer to the block data for the segment being executed + segment_t *exec_segment; // Pointer to the segment being executed +} stepper_t; +static stepper_t st; + +// Step segment ring buffer indices +static volatile uint8_t segment_buffer_tail; +static uint8_t segment_buffer_head; +static uint8_t segment_next_head; + +// Step and direction port invert masks. +static uint8_t step_port_invert_mask; +static uint8_t dir_port_invert_mask; + +// Used to avoid ISR nesting of the "Stepper Driver Interrupt". Should never occur though. +static volatile uint8_t busy; + +// Pointers for the step segment being prepped from the planner buffer. Accessed only by the +// main program. Pointers may be planning segments or planner blocks ahead of what being executed. +static plan_block_t *pl_block; // Pointer to the planner block being prepped +static st_block_t *st_prep_block; // Pointer to the stepper block data being prepped + +// Segment preparation data struct. Contains all the necessary information to compute new segments +// based on the current executing planner block. +typedef struct { + uint8_t st_block_index; // Index of stepper common data block being prepped + uint8_t flag_partial_block; // Flag indicating the last block completed. Time to load a new one. + + float steps_remaining; + float step_per_mm; // Current planner block step/millimeter conversion scalar + float req_mm_increment; + float dt_remainder; + + uint8_t ramp_type; // Current segment ramp state + float mm_complete; // End of velocity profile from end of current planner block in (mm). + // NOTE: This value must coincide with a step(no mantissa) when converted. + float current_speed; // Current speed at the end of the segment buffer (mm/min) + float maximum_speed; // Maximum speed of executing block. Not always nominal speed. (mm/min) + float exit_speed; // Exit speed of executing block (mm/min) + float accelerate_until; // Acceleration ramp end measured from end of block (mm) + float decelerate_after; // Deceleration ramp start measured from end of block (mm) +} st_prep_t; +static st_prep_t prep; + + +/* BLOCK VELOCITY PROFILE DEFINITION + __________________________ + /| |\ _________________ ^ + / | | \ /| |\ | + / | | \ / | | \ s + / | | | | | \ p + / | | | | | \ e + +-----+------------------------+---+--+---------------+----+ e + | BLOCK 1 ^ BLOCK 2 | d + | + time -----> EXAMPLE: Block 2 entry speed is at max junction velocity + + The planner block buffer is planned assuming constant acceleration velocity profiles and are + continuously joined at block junctions as shown above. However, the planner only actively computes + the block entry speeds for an optimal velocity plan, but does not compute the block internal + velocity profiles. These velocity profiles are computed ad-hoc as they are executed by the + stepper algorithm and consists of only 7 possible types of profiles: cruise-only, cruise- + deceleration, acceleration-cruise, acceleration-only, deceleration-only, full-trapezoid, and + triangle(no cruise). + + maximum_speed (< nominal_speed) -> + + +--------+ <- maximum_speed (= nominal_speed) /|\ + / \ / | \ + current_speed -> + \ / | + <- exit_speed + | + <- exit_speed / | | + +-------------+ current_speed -> +----+--+ + time --> ^ ^ ^ ^ + | | | | + decelerate_after(in mm) decelerate_after(in mm) + ^ ^ ^ ^ + | | | | + accelerate_until(in mm) accelerate_until(in mm) + + The step segment buffer computes the executing block velocity profile and tracks the critical + parameters for the stepper algorithm to accurately trace the profile. These critical parameters + are shown and defined in the above illustration. +*/ + + +// Stepper state initialization. Cycle should only start if the st.cycle_start flag is +// enabled. Startup init and limits call this function but shouldn't start the cycle. +void st_wake_up() +{ + // Enable stepper drivers. + //if (bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)) { STEPPERS_DISABLE_PORT |= (1<> 3); + // Set delay between direction pin write and step command. + OCR0A = -(((settings.pulse_microseconds)*TICKS_PER_MICROSECOND) >> 3); + #else // Normal operation + // Set step pulse time. Ad hoc computation from oscilloscope. Uses two's complement. + st.step_pulse_time = -(((settings.pulse_microseconds-2)*TICKS_PER_MICROSECOND) >> 3); + #endif + + // Enable Stepper Driver Interrupt + TIMSK1 |= (1<>1; + // Then pulse the stepping pins + #ifdef STEP_PULSE_DELAY + + //st.step_bits = (STEP_PORT & ~STEP_MASK) | st.step_outbits; // Store out_bits to prevent overwriting. + #else // Normal operation + //STEP_PORT = (STEP_PORT & ~STEP_MASK) | st.step_outbits; + + ARML_STEP_PORT = (ARML_STEP_PORT & ~ARML_STEP_MASK) | (st.step_outbits & (1<>2; + #endif + + // Enable step pulse reset timer so that The Stepper Port Reset Interrupt can reset the signal after + // exactly settings.pulse_microseconds microseconds, independent of the main Timer1 prescaler. + TCNT0 = st.step_pulse_time; // Reload Timer0 counter + TCCR0B = (1<prescaler<cycles_per_tick; + st.step_count = st.exec_segment->n_step; // NOTE: Can sometimes be zero when moving slow. + // If the new segment starts a new planner block, initialize stepper variables and counters. + // NOTE: When the segment data index changes, this indicates a new planner block. + if ( st.exec_block_index != st.exec_segment->st_block_index ) { + st.exec_block_index = st.exec_segment->st_block_index; + st.exec_block = &st_block_buffer[st.exec_block_index]; + + // Initialize Bresenham line and distance counters + st.counter_x = st.counter_y = st.counter_z = (st.exec_block->step_event_count >> 1); + } + st.dir_outbits = st.exec_block->direction_bits ^ dir_port_invert_mask; + + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + // With AMASS enabled, adjust Bresenham axis increment counters according to AMASS level. + st.steps[X_AXIS] = st.exec_block->steps[X_AXIS] >> st.exec_segment->amass_level; + st.steps[Y_AXIS] = st.exec_block->steps[Y_AXIS] >> st.exec_segment->amass_level; + st.steps[Z_AXIS] = st.exec_block->steps[Z_AXIS] >> st.exec_segment->amass_level; + #endif + + } else { + // Segment buffer empty. Shutdown. + st_go_idle(); + bit_true_atomic(sys_rt_exec_state,EXEC_CYCLE_STOP); // Flag main program for cycle end + return; // Nothing to do but exit. + } + } + + + // Check probing state. + probe_state_monitor(); + + // Reset step out bits. + st.step_outbits = 0; + + // Execute step displacement profile by Bresenham line algorithm + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + st.counter_x += st.steps[X_AXIS]; + #else + st.counter_x += st.exec_block->steps[X_AXIS]; + #endif + if (st.counter_x > st.exec_block->step_event_count) { + st.step_outbits |= (1<step_event_count; + if (st.exec_block->direction_bits & (1<steps[Y_AXIS]; + #endif + if (st.counter_y > st.exec_block->step_event_count) { + st.step_outbits |= (1<step_event_count; + if (st.exec_block->direction_bits & (1<steps[Z_AXIS]; + #endif + if (st.counter_z > st.exec_block->step_event_count) { + st.step_outbits |= (1<step_event_count; + if (st.exec_block->direction_bits & (1<>2; + + TCCR0B = 0; // Disable Timer0 to prevent re-entering this interrupt when it's not needed. +} +#ifdef STEP_PULSE_DELAY + // This interrupt is used only when STEP_PULSE_DELAY is enabled. Here, the step pulse is + // initiated after the STEP_PULSE_DELAY time period has elapsed. The ISR TIMER2_OVF interrupt + // will then trigger after the appropriate settings.pulse_microseconds, as in normal operation. + // The new timing between direction, step pulse, and step complete events are setup in the + // st_wake_up() routine. + ISR(TIMER0_COMPA_vect) + { + //STEP_PORT = st.step_bits; // Begin step pulse. + // >2; + } +#endif + + +// Generates the step and direction port invert masks used in the Stepper Interrupt Driver. +void st_generate_step_dir_invert_masks() +{ + uint8_t idx; + step_port_invert_mask = 0; + dir_port_invert_mask = 0; + for (idx=0; idx>2; + + ARML_DIRECTION_PORT = (ARML_DIRECTION_PORT & ~ARML_DIRECTION_MASK) | (dir_port_invert_mask & (1<>1; +} + + +// Initialize and start the stepper motor subsystem +void stepper_init() +{ + // Configure step and direction interface pins +// STEP_DDR |= STEP_MASK; +// STEPPERS_DISABLE_DDR |= 1<entry_speed_sqr = prep.current_speed*prep.current_speed; // Update entry speed. + pl_block = NULL; // Flag st_prep_segment() to load new velocity profile. + } +} + + +/* Prepares step segment buffer. Continuously called from main program. + + The segment buffer is an intermediary buffer interface between the execution of steps + by the stepper algorithm and the velocity profiles generated by the planner. The stepper + algorithm only executes steps within the segment buffer and is filled by the main program + when steps are "checked-out" from the first block in the planner buffer. This keeps the + step execution and planning optimization processes atomic and protected from each other. + The number of steps "checked-out" from the planner buffer and the number of segments in + the segment buffer is sized and computed such that no operation in the main program takes + longer than the time it takes the stepper algorithm to empty it before refilling it. + Currently, the segment buffer conservatively holds roughly up to 40-50 msec of steps. + NOTE: Computation units are in steps, millimeters, and minutes. +*/ +void st_prep_buffer() +{ + + if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { + // Check if we still need to generate more segments for a motion suspend. + if (prep.current_speed == 0.0) { return; } // Nothing to do. Bail. + } + + while (segment_buffer_tail != segment_next_head) { // Check if we need to fill the buffer. + + // Determine if we need to load a new planner block or if the block has been replanned. + if (pl_block == NULL) { + pl_block = plan_get_current_block(); // Query planner for a queued block + if (pl_block == NULL) { return; } // No planner blocks. Exit. + + // Check if the segment buffer completed the last planner block. If so, load the Bresenham + // data for the block. If not, we are still mid-block and the velocity profile was updated. + if (prep.flag_partial_block) { + prep.flag_partial_block = false; // Reset flag + } else { + // Increment stepper common data index to store new planner block data. + if ( ++prep.st_block_index == (SEGMENT_BUFFER_SIZE-1) ) { prep.st_block_index = 0; } + + // Prepare and copy Bresenham algorithm segment data from the new planner block, so that + // when the segment buffer completes the planner block, it may be discarded when the + // segment buffer finishes the prepped block, but the stepper ISR is still executing it. + st_prep_block = &st_block_buffer[prep.st_block_index]; + st_prep_block->direction_bits = pl_block->direction_bits; + #ifndef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + st_prep_block->steps[X_AXIS] = pl_block->steps[X_AXIS]; + st_prep_block->steps[Y_AXIS] = pl_block->steps[Y_AXIS]; + st_prep_block->steps[Z_AXIS] = pl_block->steps[Z_AXIS]; + st_prep_block->step_event_count = pl_block->step_event_count; + #else + // With AMASS enabled, simply bit-shift multiply all Bresenham data by the max AMASS + // level, such that we never divide beyond the original data anywhere in the algorithm. + // If the original data is divided, we can lose a step from integer roundoff. + st_prep_block->steps[X_AXIS] = pl_block->steps[X_AXIS] << MAX_AMASS_LEVEL; + st_prep_block->steps[Y_AXIS] = pl_block->steps[Y_AXIS] << MAX_AMASS_LEVEL; + st_prep_block->steps[Z_AXIS] = pl_block->steps[Z_AXIS] << MAX_AMASS_LEVEL; + st_prep_block->step_event_count = pl_block->step_event_count << MAX_AMASS_LEVEL; + #endif + + // Initialize segment buffer data for generating the segments. + prep.steps_remaining = pl_block->step_event_count; + prep.step_per_mm = prep.steps_remaining/pl_block->millimeters; + prep.req_mm_increment = REQ_MM_INCREMENT_SCALAR/prep.step_per_mm; + + prep.dt_remainder = 0.0; // Reset for new planner block + + if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { + // Override planner block entry speed and enforce deceleration during feed hold. + prep.current_speed = prep.exit_speed; + pl_block->entry_speed_sqr = prep.exit_speed*prep.exit_speed; + } + else { prep.current_speed = sqrt(pl_block->entry_speed_sqr); } + } + + /* --------------------------------------------------------------------------------- + Compute the velocity profile of a new planner block based on its entry and exit + speeds, or recompute the profile of a partially-completed planner block if the + planner has updated it. For a commanded forced-deceleration, such as from a feed + hold, override the planner velocities and decelerate to the target exit speed. + */ + prep.mm_complete = 0.0; // Default velocity profile complete at 0.0mm from end of block. + float inv_2_accel = 0.5/pl_block->acceleration; + if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { // [Forced Deceleration to Zero Velocity] + // Compute velocity profile parameters for a feed hold in-progress. This profile overrides + // the planner block profile, enforcing a deceleration to zero speed. + prep.ramp_type = RAMP_DECEL; + // Compute decelerate distance relative to end of block. + float decel_dist = pl_block->millimeters - inv_2_accel*pl_block->entry_speed_sqr; + if (decel_dist < 0.0) { + // Deceleration through entire planner block. End of feed hold is not in this block. + prep.exit_speed = sqrt(pl_block->entry_speed_sqr-2*pl_block->acceleration*pl_block->millimeters); + } else { + prep.mm_complete = decel_dist; // End of feed hold. + prep.exit_speed = 0.0; + } + } else { // [Normal Operation] + // Compute or recompute velocity profile parameters of the prepped planner block. + prep.ramp_type = RAMP_ACCEL; // Initialize as acceleration ramp. + prep.accelerate_until = pl_block->millimeters; + prep.exit_speed = plan_get_exec_block_exit_speed(); + float exit_speed_sqr = prep.exit_speed*prep.exit_speed; + float intersect_distance = + 0.5*(pl_block->millimeters+inv_2_accel*(pl_block->entry_speed_sqr-exit_speed_sqr)); + if (intersect_distance > 0.0) { + if (intersect_distance < pl_block->millimeters) { // Either trapezoid or triangle types + // NOTE: For acceleration-cruise and cruise-only types, following calculation will be 0.0. + prep.decelerate_after = inv_2_accel*(pl_block->nominal_speed_sqr-exit_speed_sqr); + if (prep.decelerate_after < intersect_distance) { // Trapezoid type + prep.maximum_speed = sqrt(pl_block->nominal_speed_sqr); + if (pl_block->entry_speed_sqr == pl_block->nominal_speed_sqr) { + // Cruise-deceleration or cruise-only type. + prep.ramp_type = RAMP_CRUISE; + } else { + // Full-trapezoid or acceleration-cruise types + prep.accelerate_until -= inv_2_accel*(pl_block->nominal_speed_sqr-pl_block->entry_speed_sqr); + } + } else { // Triangle type + prep.accelerate_until = intersect_distance; + prep.decelerate_after = intersect_distance; + prep.maximum_speed = sqrt(2.0*pl_block->acceleration*intersect_distance+exit_speed_sqr); + } + } else { // Deceleration-only type + prep.ramp_type = RAMP_DECEL; + // prep.decelerate_after = pl_block->millimeters; + prep.maximum_speed = prep.current_speed; + } + } else { // Acceleration-only type + prep.accelerate_until = 0.0; + // prep.decelerate_after = 0.0; + prep.maximum_speed = prep.exit_speed; + } + } + } + + // Initialize new segment + segment_t *prep_segment = &segment_buffer[segment_buffer_head]; + + // Set new segment to point to the current segment data block. + prep_segment->st_block_index = prep.st_block_index; + + /*------------------------------------------------------------------------------------ + Compute the average velocity of this new segment by determining the total distance + traveled over the segment time DT_SEGMENT. The following code first attempts to create + a full segment based on the current ramp conditions. If the segment time is incomplete + when terminating at a ramp state change, the code will continue to loop through the + progressing ramp states to fill the remaining segment execution time. However, if + an incomplete segment terminates at the end of the velocity profile, the segment is + considered completed despite having a truncated execution time less than DT_SEGMENT. + The velocity profile is always assumed to progress through the ramp sequence: + acceleration ramp, cruising state, and deceleration ramp. Each ramp's travel distance + may range from zero to the length of the block. Velocity profiles can end either at + the end of planner block (typical) or mid-block at the end of a forced deceleration, + such as from a feed hold. + */ + float dt_max = DT_SEGMENT; // Maximum segment time + float dt = 0.0; // Initialize segment time + float time_var = dt_max; // Time worker variable + float mm_var; // mm-Distance worker variable + float speed_var; // Speed worker variable + float mm_remaining = pl_block->millimeters; // New segment distance from end of block. + float minimum_mm = mm_remaining-prep.req_mm_increment; // Guarantee at least one step. + if (minimum_mm < 0.0) { minimum_mm = 0.0; } + + do { + switch (prep.ramp_type) { + case RAMP_ACCEL: + // NOTE: Acceleration ramp only computes during first do-while loop. + speed_var = pl_block->acceleration*time_var; + mm_remaining -= time_var*(prep.current_speed + 0.5*speed_var); + if (mm_remaining < prep.accelerate_until) { // End of acceleration ramp. + // Acceleration-cruise, acceleration-deceleration ramp junction, or end of block. + mm_remaining = prep.accelerate_until; // NOTE: 0.0 at EOB + time_var = 2.0*(pl_block->millimeters-mm_remaining)/(prep.current_speed+prep.maximum_speed); + if (mm_remaining == prep.decelerate_after) { prep.ramp_type = RAMP_DECEL; } + else { prep.ramp_type = RAMP_CRUISE; } + prep.current_speed = prep.maximum_speed; + } else { // Acceleration only. + prep.current_speed += speed_var; + } + break; + case RAMP_CRUISE: + // NOTE: mm_var used to retain the last mm_remaining for incomplete segment time_var calculations. + // NOTE: If maximum_speed*time_var value is too low, round-off can cause mm_var to not change. To + // prevent this, simply enforce a minimum speed threshold in the planner. + mm_var = mm_remaining - prep.maximum_speed*time_var; + if (mm_var < prep.decelerate_after) { // End of cruise. + // Cruise-deceleration junction or end of block. + time_var = (mm_remaining - prep.decelerate_after)/prep.maximum_speed; + mm_remaining = prep.decelerate_after; // NOTE: 0.0 at EOB + prep.ramp_type = RAMP_DECEL; + } else { // Cruising only. + mm_remaining = mm_var; + } + break; + default: // case RAMP_DECEL: + // NOTE: mm_var used as a misc worker variable to prevent errors when near zero speed. + speed_var = pl_block->acceleration*time_var; // Used as delta speed (mm/min) + if (prep.current_speed > speed_var) { // Check if at or below zero speed. + // Compute distance from end of segment to end of block. + mm_var = mm_remaining - time_var*(prep.current_speed - 0.5*speed_var); // (mm) + if (mm_var > prep.mm_complete) { // Deceleration only. + mm_remaining = mm_var; + prep.current_speed -= speed_var; + break; // Segment complete. Exit switch-case statement. Continue do-while loop. + } + } // End of block or end of forced-deceleration. + time_var = 2.0*(mm_remaining-prep.mm_complete)/(prep.current_speed+prep.exit_speed); + mm_remaining = prep.mm_complete; + } + dt += time_var; // Add computed ramp time to total segment time. + if (dt < dt_max) { time_var = dt_max - dt; } // **Incomplete** At ramp junction. + else { + if (mm_remaining > minimum_mm) { // Check for very slow segments with zero steps. + // Increase segment time to ensure at least one step in segment. Override and loop + // through distance calculations until minimum_mm or mm_complete. + dt_max += DT_SEGMENT; + time_var = dt_max - dt; + } else { + break; // **Complete** Exit loop. Segment execution time maxed. + } + } + } while (mm_remaining > prep.mm_complete); // **Complete** Exit loop. Profile complete. + + + /* ----------------------------------------------------------------------------------- + Compute segment step rate, steps to execute, and apply necessary rate corrections. + NOTE: Steps are computed by direct scalar conversion of the millimeter distance + remaining in the block, rather than incrementally tallying the steps executed per + segment. This helps in removing floating point round-off issues of several additions. + However, since floats have only 7.2 significant digits, long moves with extremely + high step counts can exceed the precision of floats, which can lead to lost steps. + Fortunately, this scenario is highly unlikely and unrealistic in CNC machines + supported by Grbl (i.e. exceeding 10 meters axis travel at 200 step/mm). + */ + float steps_remaining = prep.step_per_mm*mm_remaining; // Convert mm_remaining to steps + float n_steps_remaining = ceil(steps_remaining); // Round-up current steps remaining + float last_n_steps_remaining = ceil(prep.steps_remaining); // Round-up last steps remaining + prep_segment->n_step = last_n_steps_remaining-n_steps_remaining; // Compute number of steps to execute. + + // Bail if we are at the end of a feed hold and don't have a step to execute. + if (prep_segment->n_step == 0) { + if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { + // Less than one step to decelerate to zero speed, but already very close. AMASS + // requires full steps to execute. So, just bail. + prep.current_speed = 0.0; // NOTE: (=0.0) Used to indicate completed segment calcs for hold. + prep.dt_remainder = 0.0; + prep.steps_remaining = n_steps_remaining; + pl_block->millimeters = prep.steps_remaining/prep.step_per_mm; // Update with full steps. + plan_cycle_reinitialize(); + return; // Segment not generated, but current step data still retained. + } + } + + // Compute segment step rate. Since steps are integers and mm distances traveled are not, + // the end of every segment can have a partial step of varying magnitudes that are not + // executed, because the stepper ISR requires whole steps due to the AMASS algorithm. To + // compensate, we track the time to execute the previous segment's partial step and simply + // apply it with the partial step distance to the current segment, so that it minutely + // adjusts the whole segment rate to keep step output exact. These rate adjustments are + // typically very small and do not adversely effect performance, but ensures that Grbl + // outputs the exact acceleration and velocity profiles as computed by the planner. + dt += prep.dt_remainder; // Apply previous segment partial step execute time + float inv_rate = dt/(last_n_steps_remaining - steps_remaining); // Compute adjusted step rate inverse + prep.dt_remainder = (n_steps_remaining - steps_remaining)*inv_rate; // Update segment partial step time + + // Compute CPU cycles per step for the prepped segment. + uint32_t cycles = ceil( (TICKS_PER_MICROSECOND*1000000*60)*inv_rate ); // (cycles/step) + + #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING + // Compute step timing and multi-axis smoothing level. + // NOTE: AMASS overdrives the timer with each level, so only one prescalar is required. + if (cycles < AMASS_LEVEL1) { prep_segment->amass_level = 0; } + else { + if (cycles < AMASS_LEVEL2) { prep_segment->amass_level = 1; } + else if (cycles < AMASS_LEVEL3) { prep_segment->amass_level = 2; } + else { prep_segment->amass_level = 3; } + cycles >>= prep_segment->amass_level; + prep_segment->n_step <<= prep_segment->amass_level; + } + if (cycles < (1UL << 16)) { prep_segment->cycles_per_tick = cycles; } // < 65536 (4.1ms @ 16MHz) + else { prep_segment->cycles_per_tick = 0xffff; } // Just set the slowest speed possible. + #else + // Compute step timing and timer prescalar for normal step generation. + if (cycles < (1UL << 16)) { // < 65536 (4.1ms @ 16MHz) + prep_segment->prescaler = 1; // prescaler: 0 + prep_segment->cycles_per_tick = cycles; + } else if (cycles < (1UL << 19)) { // < 524288 (32.8ms@16MHz) + prep_segment->prescaler = 2; // prescaler: 8 + prep_segment->cycles_per_tick = cycles >> 3; + } else { + prep_segment->prescaler = 3; // prescaler: 64 + if (cycles < (1UL << 22)) { // < 4194304 (262ms@16MHz) + prep_segment->cycles_per_tick = cycles >> 6; + } else { // Just set the slowest speed possible. (Around 4 step/sec.) + prep_segment->cycles_per_tick = 0xffff; + } + } + #endif + + // Segment complete! Increment segment buffer indices. + segment_buffer_head = segment_next_head; + if ( ++segment_next_head == SEGMENT_BUFFER_SIZE ) { segment_next_head = 0; } + + // Setup initial conditions for next segment. + if (mm_remaining > prep.mm_complete) { + // Normal operation. Block incomplete. Distance remaining in block to be executed. + pl_block->millimeters = mm_remaining; + prep.steps_remaining = steps_remaining; + } else { + // End of planner block or forced-termination. No more distance to be executed. + if (mm_remaining > 0.0) { // At end of forced-termination. + // Reset prep parameters for resuming and then bail. Allow the stepper ISR to complete + // the segment queue, where realtime protocol will set new state upon receiving the + // cycle stop flag from the ISR. Prep_segment is blocked until then. + prep.current_speed = 0.0; // NOTE: (=0.0) Used to indicate completed segment calcs for hold. + prep.dt_remainder = 0.0; + prep.steps_remaining = ceil(steps_remaining); + pl_block->millimeters = prep.steps_remaining/prep.step_per_mm; // Update with full steps. + plan_cycle_reinitialize(); + return; // Bail! + } else { // End of planner block + // The planner block is complete. All steps are set to be executed in the segment buffer. + pl_block = NULL; // Set pointer to indicate check and load next planner block. + plan_discard_current_block(); + } + } + + } +} + + +// Called by realtime status reporting to fetch the current speed being executed. This value +// however is not exactly the current speed, but the speed computed in the last step segment +// in the segment buffer. It will always be behind by up to the number of segment blocks (-1) +// divided by the ACCELERATION TICKS PER SECOND in seconds. +#ifdef REPORT_REALTIME_RATE + float st_get_realtime_rate() + { + if (sys.state & (STATE_CYCLE | STATE_HOMING | STATE_HOLD | STATE_MOTION_CANCEL | STATE_SAFETY_DOOR)){ + return prep.current_speed; + } + return 0.0f; + } +#endif diff --git a/Source code/stepper.h b/Source code/stepper.h new file mode 100755 index 0000000..0745704 --- /dev/null +++ b/Source code/stepper.h @@ -0,0 +1,55 @@ +/* + stepper.h - stepper motor driver: executes motion plans of planner.c using the stepper motors + Part of Grbl + + Copyright (c) 2011-2015 Sungeun K. Jeon + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef stepper_h +#define stepper_h + +#ifndef SEGMENT_BUFFER_SIZE + #define SEGMENT_BUFFER_SIZE 6 +#endif + +// Initialize and setup the stepper motor subsystem +void stepper_init(); + +// Enable steppers, but cycle does not start unless called by motion control or realtime command. +void st_wake_up(); + +// Immediately disables steppers +void st_go_idle(); + +// Generate the step and direction port invert masks. +void st_generate_step_dir_invert_masks(); + +// Reset the stepper subsystem variables +void st_reset(); + +// Reloads step segment buffer. Called continuously by realtime execution system. +void st_prep_buffer(); + +// Called by planner_recalculate() when the executing block is updated by the new plan. +void st_update_plan_block_parameters(); + +// Called by realtime status reporting if realtime rate reporting is enabled in config.h. +#ifdef REPORT_REALTIME_RATE +float st_get_realtime_rate(); +#endif + +#endif diff --git a/Source code/system.c b/Source code/system.c new file mode 100755 index 0000000..17495ce --- /dev/null +++ b/Source code/system.c @@ -0,0 +1,305 @@ +/* + system.c - Handles system level commands and real-time processes + Part of Grbl + + Copyright (c) 2014-2015 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "grbl.h" +#include "uarm_common.h" + +void system_init() +{ + CONTROL_DDR &= ~(CONTROL_MASK); // Configure as input pins + #ifdef DISABLE_CONTROL_PIN_PULL_UP + CONTROL_PORT &= ~(CONTROL_MASK); // Normal low operation. Requires external pull-down. + #else + CONTROL_PORT |= CONTROL_MASK; // Enable internal pull-up resistors. Normal high operation. + #endif + CONTROL_PCMSK |= CONTROL_MASK; // Enable specific pins of the Pin Change Interrupt + PCICR |= (1 << CONTROL_INT); // Enable Pin Change Interrupt +} + + +// Pin change interrupt for pin-out commands, i.e. cycle start, feed hold, and reset. Sets +// only the realtime command execute variable to have the main program execute these when +// its ready. This works exactly like the character-based realtime commands when picked off +// directly from the incoming serial data stream. +ISR(CONTROL_INT_vect) +{ + uint8_t pin = (CONTROL_PIN & CONTROL_MASK); + #ifndef INVERT_ALL_CONTROL_PINS + pin ^= CONTROL_INVERT_MASK; + #endif + // Enter only if any CONTROL pin is detected as active. + if (pin) { + if (bit_istrue(pin,bit(RESET_BIT))) { + mc_reset(); + } else if (bit_istrue(pin,bit(CYCLE_START_BIT))) { + bit_true(sys_rt_exec_state, EXEC_CYCLE_START); + #ifndef ENABLE_SAFETY_DOOR_INPUT_PIN + } else if (bit_istrue(pin,bit(FEED_HOLD_BIT))) { + bit_true(sys_rt_exec_state, EXEC_FEED_HOLD); + #else + } else if (bit_istrue(pin,bit(SAFETY_DOOR_BIT))) { + bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); + #endif + } + } +} + + +// Returns if safety door is ajar(T) or closed(F), based on pin state. +uint8_t system_check_safety_door_ajar() +{ + #ifdef ENABLE_SAFETY_DOOR_INPUT_PIN + #ifdef INVERT_CONTROL_PIN + return(bit_istrue(CONTROL_PIN,bit(SAFETY_DOOR_BIT))); + #else + return(bit_isfalse(CONTROL_PIN,bit(SAFETY_DOOR_BIT))); + #endif + #else + return(false); // Input pin not enabled, so just return that it's closed. + #endif +} + + +// Executes user startup script, if stored. +void system_execute_startup(char *line) +{ + uint8_t n; + for (n=0; n < N_STARTUP_LINE; n++) { + if (!(settings_read_startup_line(n, line))) { + report_status_message(STATUS_SETTING_READ_FAIL); + } else { + if (line[0] != 0) { + printString(line); // Echo startup line to indicate execution. + report_status_message(gc_execute_line(line)); + } + } + } +} + + +// Directs and executes one line of formatted input from protocol_process. While mostly +// incoming streaming g-code blocks, this also executes Grbl internal commands, such as +// settings, initiating the homing cycle, and toggling switch states. This differs from +// the realtime command module by being susceptible to when Grbl is ready to execute the +// next line during a cycle, so for switches like block delete, the switch only effects +// the lines that are processed afterward, not necessarily real-time during a cycle, +// since there are motions already stored in the buffer. However, this 'lag' should not +// be an issue, since these commands are not typically used during a cycle. +uint8_t system_execute_line(char *line) +{ + uint8_t char_counter = 1; + uint8_t helper_var = 0; // Helper variable + float parameter, value; + switch( line[char_counter] ) { + case 0 : report_grbl_help(); break; + case '$': case 'G': case 'C': case 'X': + if ( line[(char_counter+1)] != 0 ) { return(STATUS_INVALID_STATEMENT); } + switch( line[char_counter] ) { + case '$' : // Prints Grbl settings + if ( sys.state & (STATE_CYCLE | STATE_HOLD) ) { return(STATUS_IDLE_ERROR); } // Block during cycle. Takes too long to print. + else { report_grbl_settings(); } + break; + case 'G' : // Prints gcode parser state + // TODO: Move this to realtime commands for GUIs to request this data during suspend-state. + report_gcode_modes(); + break; + case 'C' : // Set check g-code mode [IDLE/CHECK] + // Perform reset when toggling off. Check g-code mode should only work if Grbl + // is idle and ready, regardless of alarm locks. This is mainly to keep things + // simple and consistent. + if ( sys.state == STATE_CHECK_MODE ) { + mc_reset(); + report_feedback_message(MESSAGE_DISABLED); + } else { + if (sys.state) { return(STATUS_IDLE_ERROR); } // Requires no alarm mode. + sys.state = STATE_CHECK_MODE; + report_feedback_message(MESSAGE_ENABLED); + } + break; + case 'X' : // Disable alarm lock [ALARM] + if (sys.state == STATE_ALARM) { + report_feedback_message(MESSAGE_ALARM_UNLOCK); + sys.state = STATE_IDLE; + // Don't run startup script. Prevents stored moves in startup from causing accidents. + if (system_check_safety_door_ajar()) { // Check safety door switch before returning. + bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); + protocol_execute_realtime(); // Enter safety door mode. + } + } // Otherwise, no effect. + break; + // case 'J' : break; // Jogging methods + // TODO: Here jogging can be placed for execution as a seperate subprogram. It does not need to be + // susceptible to other realtime commands except for e-stop. The jogging function is intended to + // be a basic toggle on/off with controlled acceleration and deceleration to prevent skipped + // steps. The user would supply the desired feedrate, axis to move, and direction. Toggle on would + // start motion and toggle off would initiate a deceleration to stop. One could 'feather' the + // motion by repeatedly toggling to slow the motion to the desired location. Location data would + // need to be updated real-time and supplied to the user through status queries. + // More controlled exact motions can be taken care of by inputting G0 or G1 commands, which are + // handled by the planner. It would be possible for the jog subprogram to insert blocks into the + // block buffer without having the planner plan them. It would need to manage de/ac-celerations + // on its own carefully. This approach could be effective and possibly size/memory efficient. +// } +// break; + } + break; + default : + // Block any system command that requires the state as IDLE/ALARM. (i.e. EEPROM, homing) + if ( !(sys.state == STATE_IDLE || sys.state == STATE_ALARM) ) { return(STATUS_IDLE_ERROR); } + switch( line[char_counter] ) { + case '#' : // Print Grbl NGC parameters + if ( line[++char_counter] != 0 ) { return(STATUS_INVALID_STATEMENT); } + else { report_ngc_parameters(); } + break; + case 'H' : // Perform homing cycle [IDLE/ALARM] + if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { + sys.state = STATE_HOMING; // Set system state variable + // Only perform homing if Grbl is idle or lost. + + // TODO: Likely not required. + if (system_check_safety_door_ajar()) { // Check safety door switch before homing. + bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); + protocol_execute_realtime(); // Enter safety door mode. + } + + + mc_homing_cycle(); + if (!sys.abort) { // Execute startup scripts after successful homing. + sys.state = STATE_IDLE; // Set to IDLE when complete. + + + + st_go_idle(); // Set steppers to the settings idle state before returning. + system_execute_startup(line); + } + } else { return(STATUS_SETTING_DISABLED); } + break; + case 'I' : // Print or store build info. [IDLE/ALARM] + if ( line[++char_counter] == 0 ) { + settings_read_build_info(line); + report_build_info(line); + } else { // Store startup line [IDLE/ALARM] + if(line[char_counter++] != '=') { return(STATUS_INVALID_STATEMENT); } + helper_var = char_counter; // Set helper variable as counter to start of user info line. + do { + line[char_counter-helper_var] = line[char_counter]; + } while (line[char_counter++] != 0); + settings_store_build_info(line); + } + break; + case 'R' : // Restore defaults [IDLE/ALARM] + if (line[++char_counter] != 'S') { return(STATUS_INVALID_STATEMENT); } + if (line[++char_counter] != 'T') { return(STATUS_INVALID_STATEMENT); } + if (line[++char_counter] != '=') { return(STATUS_INVALID_STATEMENT); } + if (line[char_counter+2] != 0) { return(STATUS_INVALID_STATEMENT); } + switch (line[++char_counter]) { + case '$': settings_restore(SETTINGS_RESTORE_DEFAULTS); break; + case '#': settings_restore(SETTINGS_RESTORE_PARAMETERS); break; + case '*': settings_restore(SETTINGS_RESTORE_ALL); break; + default: return(STATUS_INVALID_STATEMENT); + } + report_feedback_message(MESSAGE_RESTORE_DEFAULTS); + mc_reset(); // Force reset to ensure settings are initialized correctly. + break; + case 'N' : // Startup lines. [IDLE/ALARM] + if ( line[++char_counter] == 0 ) { // Print startup lines + for (helper_var=0; helper_var < N_STARTUP_LINE; helper_var++) { + if (!(settings_read_startup_line(helper_var, line))) { + report_status_message(STATUS_SETTING_READ_FAIL); + } else { + report_startup_line(helper_var,line); + } + } + break; + } else { // Store startup line [IDLE Only] Prevents motion during ALARM. + if (sys.state != STATE_IDLE) { return(STATUS_IDLE_ERROR); } // Store only when idle. + helper_var = true; // Set helper_var to flag storing method. + // No break. Continues into default: to read remaining command characters. + } + default : // Storing setting methods [IDLE/ALARM] + if(!read_float(line, &char_counter, ¶meter)) { return(STATUS_BAD_NUMBER_FORMAT); } + if(line[char_counter++] != '=') { return(STATUS_INVALID_STATEMENT); } + if (helper_var) { // Store startup line + // Prepare sending gcode block to gcode parser by shifting all characters + helper_var = char_counter; // Set helper variable as counter to start of gcode block + do { + line[char_counter-helper_var] = line[char_counter]; + } while (line[char_counter++] != 0); + // Execute gcode block to ensure block is valid. + helper_var = gc_execute_line(line); // Set helper_var to returned status code. + if (helper_var) { return(helper_var); } + else { + helper_var = trunc(parameter); // Set helper_var to int value of parameter + settings_store_startup_line(helper_var,line); + } + } else { // Store global setting. + if(!read_float(line, &char_counter, &value)) { return(STATUS_BAD_NUMBER_FORMAT); } + if((line[char_counter] != 0) || (parameter > 255)) { return(STATUS_INVALID_STATEMENT); } + return(settings_store_global_setting((uint8_t)parameter, value)); + } + } + } + return(STATUS_OK); // If '$' command makes it to here, then everything's ok. +} + + +// Returns machine position of axis 'idx'. Must be sent a 'step' array. +// NOTE: If motor steps and machine position are not in the same coordinate frame, this function +// serves as a central place to compute the transformation. +float system_convert_axis_steps_to_mpos(int32_t *steps, uint8_t idx) +{ + float pos; + #ifdef COREXY + if (idx==X_AXIS) { + pos = (float)system_convert_corexy_to_x_axis_steps(steps) / settings.steps_per_mm[A_MOTOR]; + } else if (idx==Y_AXIS) { + pos = (float)system_convert_corexy_to_y_axis_steps(steps) / settings.steps_per_mm[B_MOTOR]; + } else { + pos = steps[idx]/settings.steps_per_mm[idx]; + } + #else + pos = steps[idx]/settings.steps_per_mm[idx]; + #endif + return(pos); +} + + +void system_convert_array_steps_to_mpos(float *position, int32_t *steps) +{ + uint8_t idx; + for (idx=0; idx. +*/ + +#ifndef system_h +#define system_h + +#include "grbl.h" + +// Define system executor bit map. Used internally by realtime protocol as realtime command flags, +// which notifies the main program to execute the specified realtime command asynchronously. +// NOTE: The system executor uses an unsigned 8-bit volatile variable (8 flag limit.) The default +// flags are always false, so the realtime protocol only needs to check for a non-zero value to +// know when there is a realtime command to execute. +#define EXEC_STATUS_REPORT bit(0) // bitmask 00000001 +#define EXEC_CYCLE_START bit(1) // bitmask 00000010 +#define EXEC_CYCLE_STOP bit(2) // bitmask 00000100 +#define EXEC_FEED_HOLD bit(3) // bitmask 00001000 +#define EXEC_RESET bit(4) // bitmask 00010000 +#define EXEC_SAFETY_DOOR bit(5) // bitmask 00100000 +#define EXEC_MOTION_CANCEL bit(6) // bitmask 01000000 + +// Alarm executor bit map. +// NOTE: EXEC_CRITICAL_EVENT is an optional flag that must be set with an alarm flag. When enabled, +// this halts Grbl into an infinite loop until the user aknowledges the problem and issues a soft- +// reset command. For example, a hard limit event needs this type of halt and aknowledgement. +#define EXEC_CRITICAL_EVENT bit(0) // bitmask 00000001 (SPECIAL FLAG. See NOTE:) +#define EXEC_ALARM_HARD_LIMIT bit(1) // bitmask 00000010 +#define EXEC_ALARM_SOFT_LIMIT bit(2) // bitmask 00000100 +#define EXEC_ALARM_ABORT_CYCLE bit(3) // bitmask 00001000 +#define EXEC_ALARM_PROBE_FAIL bit(4) // bitmask 00010000 +#define EXEC_ALARM_HOMING_FAIL bit(5) // bitmask 00100000 + +// Define system state bit map. The state variable primarily tracks the individual functions +// of Grbl to manage each without overlapping. It is also used as a messaging flag for +// critical events. +#define STATE_IDLE 0 // Must be zero. No flags. +#define STATE_ALARM bit(0) // In alarm state. Locks out all g-code processes. Allows settings access. +#define STATE_CHECK_MODE bit(1) // G-code check mode. Locks out planner and motion only. +#define STATE_HOMING bit(2) // Performing homing cycle +#define STATE_CYCLE bit(3) // Cycle is running or motions are being executed. +#define STATE_HOLD bit(4) // Active feed hold +#define STATE_SAFETY_DOOR bit(5) // Safety door is ajar. Feed holds and de-energizes system. +#define STATE_MOTION_CANCEL bit(6) // Motion cancel by feed hold and return to idle. + +// Define system suspend states. +#define SUSPEND_DISABLE 0 // Must be zero. +#define SUSPEND_ENABLE_HOLD bit(0) // Enabled. Indicates the cycle is active and currently undergoing a hold. +#define SUSPEND_ENABLE_READY bit(1) // Ready to resume with a cycle start command. +#define SUSPEND_ENERGIZE bit(2) // Re-energizes output before resume. +#define SUSPEND_MOTION_CANCEL bit(3) // Cancels resume motion. Used by probing routine. + + +// Define global system variables +typedef struct { + uint8_t abort; // System abort flag. Forces exit back to main loop for reset. + uint8_t state; // Tracks the current state of Grbl. + uint8_t suspend; // System suspend bitflag variable that manages holds, cancels, and safety door. + uint8_t soft_limit; // Tracks soft limit errors for the state machine. (boolean) + + int32_t position[N_AXIS]; // Real-time machine (aka home) position vector in steps. + // NOTE: This may need to be a volatile variable, if problems arise. + + int32_t probe_position[N_AXIS]; // Last probe position in machine coordinates and steps. + uint8_t probe_succeeded; // Tracks if last probing cycle was successful. + uint8_t homing_axis_lock; // Locks axes when limits engage. Used as an axis motion mask in the stepper ISR. +} system_t; +extern system_t sys; + +volatile uint8_t sys_probe_state; // Probing state value. Used to coordinate the probing cycle with stepper ISR. +volatile uint8_t sys_rt_exec_state; // Global realtime executor bitflag variable for state management. See EXEC bitmasks. +volatile uint8_t sys_rt_exec_alarm; // Global realtime executor bitflag variable for setting various alarms. + + +// Initialize the serial protocol +void system_init(); + +// Returns if safety door is open or closed, based on pin state. +uint8_t system_check_safety_door_ajar(); + +// Executes an internal system command, defined as a string starting with a '$' +uint8_t system_execute_line(char *line); + +// Execute the startup script lines stored in EEPROM upon initialization +void system_execute_startup(char *line); + +// Returns machine position of axis 'idx'. Must be sent a 'step' array. +float system_convert_axis_steps_to_mpos(int32_t *steps, uint8_t idx); + +// Updates a machine 'position' array based on the 'step' array sent. +void system_convert_array_steps_to_mpos(float *position, int32_t *steps); + +// CoreXY calculation only. Returns x or y-axis "steps" based on CoreXY motor steps. +#ifdef COREXY + int32_t system_convert_corexy_to_x_axis_steps(int32_t *steps); + int32_t system_convert_corexy_to_y_axis_steps(int32_t *steps); +#endif + +#endif diff --git a/Source code/uarm_angle.c b/Source code/uarm_angle.c new file mode 100755 index 0000000..306f2b0 --- /dev/null +++ b/Source code/uarm_angle.c @@ -0,0 +1,223 @@ +#include "uarm_angle.h" +#include "uarm_iic.h" + +//uint16_t reference_param[3] = {0}; + +struct refer_value_t { + uint16_t param_b; + uint16_t param_l; + uint16_t param_r; +} reference = {0}; + +uint16_t reference_param_pointa[3] = {0}; +uint16_t reference_param_pointb[3] = {0}; +uint16_t reference_param_pointc[3] = {0}; + +// max ){ max = temp_value; } + if( temp_value < min ){ min = temp_value; } + sum_value += temp_value; + } + + return ((sum_value - max - min)/3); +} + +float calculate_current_angle(enum angle_channel_e channel){ + uint16_t angle_reg_value = read_angle_reg_value(channel); + int long offset = 0; + float angle = 0.0; + + switch( channel ){ + case CHANNEL_ARML: offset = (int long)reference.param_l - (int long)angle_reg_value; + break; + case CHANNEL_ARMR: offset = (int long)reference.param_r - (int long)angle_reg_value; + break; + case CHANNEL_BASE: offset = (int long)reference.param_b - (int long)angle_reg_value; + break; + } + + + angle = get_point_b_angle(channel) - offset * 360.0 / 4096; + + if(angle > 360){ + angle -= 360; + } + if(angle < 0){ + angle += 360; + } + + return angle; +} + + +static void read_angle_reference_param(void){ + int8_t read_size = sizeof(struct refer_value_t); + unsigned int read_addr = EEPROM_ADDR_ANGLE_REFER; + + char *p = (char *)(&reference); + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + +// DB_PRINT_STR( "refer : %d, %d, %d\r\n", reference.param_l, reference.param_r, reference.param_b ); + +} + +static void write_angle_reference_param(void){ + int8_t write_size = sizeof(struct refer_value_t); + unsigned int write_addr = EEPROM_ADDR_ANGLE_REFER; + + char *p = (char *)(&reference); + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } + read_angle_reference_param(); + uarm.init_arml_angle = calculate_current_angle(CHANNEL_ARML); // anglea + ARMB angle -> angleb + BASE angle -> anglec +*/ +bool is_angle_legal(float anglea, float angleb, float anglec){ + if( isnan(anglea) || isnan(angleb) || isnan(anglec) ){ + //DB_PRINT_STR("value is nan\r\n"); + return false; + } + if( (anglea>ARMA_MAX_ANGLE) || (angleaARMB_MAX_ANGLE) || (angleb ARMA_ARMB_MAX_ANGLE) || (180-anglea-angleb < ARMA_ARMB_MIN_ANGLE) ){ + //DB_PRINT_STR("angle_ab error\r\n"); + return false; + } + if( (anglec>BASE_MAX_ANGLE) || (anglec (ARM_A *sin(*anglea/RAD_TO_DEG)) ){ + *angleb = -*angleb; + } + + // get the base rotation angle + + if( x == 0 ){ + if(y > 0){ + *anglec = 90; + }else{ + *anglec = -90; + } + }else if(x <0){ + *anglec = NAN; // 0){ + anglec = 90 / RAD_TO_DEG; + }else{ + anglec = -90 / RAD_TO_DEG; + } + }else if(*x < 0){ + anglec = NAN; // 0){ + anglec = 90 / RAD_TO_DEG; + }else{ + anglec = -90 / RAD_TO_DEG; + } + }else if(*x < 0){ + anglec = NAN; // 250) + { + arml_iic_stop(); + return 1; + } + } + + ARML_SCK_L; + delay_us(2); + return 0; +} + +static void arml_iic_ack(void) +{ + ARML_SCK_L; + ARML_SDA_L; + delay_us(2); + ARML_SCK_H; + delay_us(5); + + ARML_SCK_L; + delay_us(2); + ARML_SDA_H; + delay_us(2); +} + +static void arml_iic_nack(void) +{ + ARML_SCK_L; + ARML_SDA_H; + delay_us(2); + ARML_SCK_H; + delay_us(5); + + ARML_SCK_L; + delay_us(2); + ARML_SDA_H; + delay_us(2); +} + +static void arml_iic_send_byte(uint8_t data) +{ + uint8_t i; + for(i=0;i<8;i++) + { + ARML_SCK_L; + if(data&0x80) + ARML_SDA_H + else + ARML_SDA_L + delay_us(5); + ARML_SCK_H; + delay_us(5); + ARML_SCK_L; + data<<=1; + delay_us(5); + } + + delay_us(2); + ARML_SDA_H; + delay_us(2); +} + +static uint8_t arml_iic_read_byte(uint8_t ack) +{ + uint8_t i,receive=0; + + delay_us(2); + ARML_SDA_H; + delay_us(2); + + for(i=0;i<8;i++) + { + ARML_SCK_L; + delay_us(5); + ARML_SCK_H; + receive<<=1; + delay_us(5); + ARML_SDA_INPUT; + + if(ARML_READ_SDA) + receive|=0x01; + else + receive&=0xfe; + delay_us(5); + } + if(!ack) + arml_iic_nack(); + else + arml_iic_ack(); + + ARML_SCK_L; + delay_us(2); + + return receive; +} + +static void arml_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) +{ + arml_iic_start(); + arml_iic_send_byte(deviceaddr&0xfe); + arml_iic_wait_ack(); + arml_iic_send_byte(writeaddr); + arml_iic_wait_ack(); + arml_iic_send_byte(writedata); + arml_iic_wait_ack(); + arml_iic_stop(); + delay_us(10); +} + +static uint8_t arml_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) +{ + uint8_t temp; + arml_iic_start(); + arml_iic_send_byte(deviceaddr&0xfe); + arml_iic_wait_ack(); + arml_iic_send_byte(readaddr); + arml_iic_wait_ack(); + + arml_iic_start(); + arml_iic_send_byte(deviceaddr|0x01); + arml_iic_wait_ack(); + temp=arml_iic_read_byte(0); + arml_iic_stop(); + return temp; +} + +static void armr_iic_start(void) +{ + ARMR_SDA_H; + ARMR_SCK_H; + delay_us(5); + ARMR_SDA_L; + delay_us(5); + ARMR_SCK_L; + delay_us(2); +} + +static void armr_iic_stop(void) +{ + ARMR_SCK_L; + ARMR_SDA_L; + delay_us(5); + ARMR_SCK_H; + delay_us(5); + ARMR_SDA_H; + delay_us(5); +} + +static uint8_t armr_iic_wait_ack(void) +{ + uint8_t ucErrTime=0; + ARMR_SDA_H;delay_us(2); + ARMR_SCK_H;delay_us(2); + + + ARMR_SDA_INPUT; + + while(ARMR_READ_SDA) + { + ucErrTime++; + if(ucErrTime>250) + { + armr_iic_stop(); + return 1; + } + } + + ARMR_SCK_L; + delay_us(2); + return 0; +} + +static void armr_iic_ack(void) +{ + ARMR_SCK_L; + ARMR_SDA_L; + delay_us(2); + ARMR_SCK_H; + delay_us(5); + + ARMR_SCK_L; + delay_us(2); + ARMR_SDA_H; + delay_us(2); +} + +static void armr_iic_nack(void) +{ + ARMR_SCK_L; + ARMR_SDA_H; + delay_us(2); + ARMR_SCK_H; + delay_us(5); + + ARMR_SCK_L; + delay_us(2); + ARMR_SDA_H; + delay_us(2); +} + +static void armr_iic_send_byte(uint8_t data) +{ + uint8_t i; + for(i=0;i<8;i++) + { + ARMR_SCK_L; + if(data&0x80) + ARMR_SDA_H + else + ARMR_SDA_L + delay_us(5); + ARMR_SCK_H; + delay_us(5); + ARMR_SCK_L; + data<<=1; + delay_us(5); + } + + delay_us(2); + ARMR_SDA_H; + delay_us(2); +} + +static uint8_t armr_iic_read_byte(uint8_t ack) +{ + uint8_t i,receive=0; + + delay_us(2); + ARMR_SDA_H; + delay_us(2); + + for(i=0;i<8;i++) + { + ARMR_SCK_L; + delay_us(5); + ARMR_SCK_H; + receive<<=1; + delay_us(5); + ARMR_SDA_INPUT; + + if(ARMR_READ_SDA) + receive|=0x01; + else + receive&=0xfe; + delay_us(5); + } + if(!ack) + armr_iic_nack(); + else + armr_iic_ack(); + + ARMR_SCK_L; + delay_us(2); + + return receive; +} + +static void armr_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) +{ + armr_iic_start(); + armr_iic_send_byte(deviceaddr&0xfe); + armr_iic_wait_ack(); + armr_iic_send_byte(writeaddr); + armr_iic_wait_ack(); + armr_iic_send_byte(writedata); + armr_iic_wait_ack(); + armr_iic_stop(); + delay_us(10); +} + +static uint8_t armr_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) +{ + uint8_t temp; + armr_iic_start(); + armr_iic_send_byte(deviceaddr&0xfe); + armr_iic_wait_ack(); + armr_iic_send_byte(readaddr); + armr_iic_wait_ack(); + + armr_iic_start(); + armr_iic_send_byte(deviceaddr|0x01); + armr_iic_wait_ack(); + temp=armr_iic_read_byte(0); + armr_iic_stop(); + return temp; +} + +static void base_iic_start(void) +{ + BASE_SDA_H; + BASE_SCK_H; + delay_us(5); + BASE_SDA_L; + delay_us(5); + BASE_SCK_L; + delay_us(2); +} + +static void base_iic_stop(void) +{ + BASE_SCK_L; + BASE_SDA_L; + delay_us(5); + BASE_SCK_H; + delay_us(5); + BASE_SDA_H; + delay_us(5); +} + +static uint8_t base_iic_wait_ack(void) +{ + uint8_t ucErrTime=0; + BASE_SDA_H;delay_us(2); + BASE_SCK_H;delay_us(2); + + + BASE_SDA_INPUT; + + while(BASE_READ_SDA) + { + ucErrTime++; + if(ucErrTime>250) + { + base_iic_stop(); + return 1; + } + } + + BASE_SCK_L; + delay_us(2); + return 0; +} + +static void base_iic_ack(void) +{ + BASE_SCK_L; + BASE_SDA_L; + delay_us(2); + BASE_SCK_H; + delay_us(5); + + BASE_SCK_L; + delay_us(2); + BASE_SDA_H; + delay_us(2); +} + +static void base_iic_nack(void) +{ + BASE_SCK_L; + BASE_SDA_H; + delay_us(2); + BASE_SCK_H; + delay_us(5); + + BASE_SCK_L; + delay_us(2); + BASE_SDA_H; + delay_us(2); +} + +static void base_iic_send_byte(uint8_t data) +{ + uint8_t i; + for(i=0;i<8;i++) + { + BASE_SCK_L; + if(data&0x80) + BASE_SDA_H + else + BASE_SDA_L + delay_us(5); + BASE_SCK_H; + delay_us(5); + BASE_SCK_L; + data<<=1; + delay_us(5); + } + + delay_us(2); + BASE_SDA_H; + delay_us(2); +} + +static uint8_t base_iic_read_byte(uint8_t ack) +{ + uint8_t i,receive=0; + + delay_us(2); + BASE_SDA_H; + delay_us(2); + + for(i=0;i<8;i++) + { + BASE_SCK_L; + delay_us(5); + BASE_SCK_H; + receive<<=1; + delay_us(5); + BASE_SDA_INPUT; + + if(BASE_READ_SDA) + receive|=0x01; + else + receive&=0xfe; + delay_us(5); + } + if(!ack) + base_iic_nack(); + else + base_iic_ack(); + + BASE_SCK_L; + delay_us(2); + + return receive; +} + +static void base_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) +{ + base_iic_start(); + base_iic_send_byte(deviceaddr&0xfe); + base_iic_wait_ack(); + base_iic_send_byte(writeaddr); + base_iic_wait_ack(); + base_iic_send_byte(writedata); + base_iic_wait_ack(); + base_iic_stop(); + delay_us(10); +} + +static uint8_t base_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) +{ + uint8_t temp; + base_iic_start(); + base_iic_send_byte(deviceaddr&0xfe); + base_iic_wait_ack(); + base_iic_send_byte(readaddr); + base_iic_wait_ack(); + + base_iic_start(); + base_iic_send_byte(deviceaddr|0x01); + base_iic_wait_ack(); + temp=base_iic_read_byte(0); + base_iic_stop(); + return temp; +} + +void angle_iic_init(void){ + ARML_SDA_OUTPUT; + ARML_SCL_OUTPUT; + ARML_SDA_SET; + ARML_SCL_SET; + + ARMR_SDA_OUTPUT; + ARMR_SCL_OUTPUT; + ARMR_SDA_SET; + ARMR_SCL_SET; + + BASE_SDA_OUTPUT; + BASE_SCL_OUTPUT; + BASE_SDA_SET; + BASE_SCL_SET; +} + +void iic_write_byte(uint8_t channel, uint8_t dev_addr, uint8_t write_addr, uint8_t write_data){ + + switch(channel){ + case 0: + arml_iic_write_onebyte(dev_addr, write_addr, write_data); + break; + case 1: + armr_iic_write_onebyte(dev_addr, write_addr, write_data); + break; + case 2: + base_iic_write_onebyte(dev_addr, write_addr, write_data); + break; + } +} + +uint8_t iic_read_byte(uint8_t channel, uint8_t dev_addr, uint8_t read_addr){ + uint8_t read_byte = 0; + switch(channel){ + case 0: + read_byte = arml_iic_read_onebyte(dev_addr, read_addr); + break; + case 1: + read_byte = armr_iic_read_onebyte(dev_addr, read_addr); + break; + case 2: + read_byte = base_iic_read_onebyte(dev_addr, read_addr); + break; + } + return read_byte; +} + + + diff --git a/Source code/uarm_iic.h b/Source code/uarm_iic.h new file mode 100755 index 0000000..b027953 --- /dev/null +++ b/Source code/uarm_iic.h @@ -0,0 +1,11 @@ +#ifndef _UARM_IIC_H_ +#define _UARM_IIC_H_ + +#include "uarm_common.h" + +void angle_iic_init(void); +void iic_write_byte(uint8_t channel, uint8_t dev_addr, uint8_t write_addr, uint8_t write_data); +uint8_t iic_read_byte(uint8_t channel, uint8_t dev_addr, uint8_t read_addr); + +#endif + diff --git a/Source code/uarm_peripheral.c b/Source code/uarm_peripheral.c new file mode 100755 index 0000000..5ce9d49 --- /dev/null +++ b/Source code/uarm_peripheral.c @@ -0,0 +1,446 @@ +#include "uarm_peripheral.h" + + +/* servo driver + * + */ +float duty_ms = 1.7; +void servo_init(void){ + time4_pwm_init(20000); + time4_set_duty( 3, (duty_ms/21.0) * 1023 ); +} + +void servo_set_angle(float angle){ + if( angle > 180 ){ angle = 0; } + if( angle < 0 ){ angle = 180; } + angle = 180 - angle; + + duty_ms = (angle / 180.0) * 2.0 + 0.7; + time4_set_duty( 3, (duty_ms/21.0) * 1023 ); + //delay_ms(500); +} + +void servo_deinit(void){ + time4_stop(); +} + +float servo_get_angle(void){ + return 180 - (duty_ms - 0.7) / 2.0 *180; +} + + /* beep driver + * + */ +uint16_t beep_duration = 520; +static void beep_creater_callback(void){ + static bool state = false; + static uint16_t cnt = 0; + if( !state ){ + state = true; + PORTL |= (1<<5); + }else{ + state = false; + PORTL &= ~(1<<5); + } + if( cnt++ > beep_duration ){ + cnt = 0; + time2_stop(); + } +} + +void beep_tone(unsigned long duration, double frequency){ + DDRL |= 1<<5; + PORTL &= ~(1<<5); + beep_duration = duration * 2; + + time2_set( frequency / 2000000.0, beep_creater_callback ); + time2_start(); +} + + +/* delay time : ms + * + */ +void cycle_report_coord(void){ + float x = 0, y = 0, z = 0, angle_e; + float angle_l = 0, angle_r = 0, angle_b =0; + char l_str[20] = {0}, r_str[20] = {0}, b_str[20] = {0}, e_str[20] = {0}; + + angle_l = calculate_current_angle(CHANNEL_ARML); // = gcode_delay_ms ){ + delay_cnt = 0; + gcode_delay_ms = 0; + uarm.gcode_delay_flag = false; + //DB_PRINT_STR( "delay done\r\n" ); + } + } + + if( cycle_delay_ms ){ // run cycle + + if( cycle_cnt++ >= cycle_delay_ms ){ + cycle_cnt = 0; + uarm.cycle_report_flag = true; + //DB_PRINT_STR( "cycle call\r\n" ); + //cycle_report_coord(); + } + } + + if( (uarm.gcode_delay_flag == false)&&( cycle_tick_flag == false) ){ + time5_stop(); + time_tick_work = false; + gcode_delay_ms = 0; + cycle_delay_ms = 0; + + delay_cnt = 0; + cycle_cnt = 0; + // DB_PRINT_STR( "stop time5\r\n" ); + } + } + + static void time_tick_init(void){ + time5_set( 0.001, tick_callback ); + time5_start(); +// DB_PRINT_STR( "start time5\r\n" ); + } + +void gcode_cmd_delay(int ms){ + gcode_delay_ms = ms; + uarm.gcode_delay_flag = true; + if( !time_tick_work ){ + time_tick_init(); + time_tick_work = true; + } +} + +void cycle_report_start(int ms){ + if( ms <= 0 ){ + cycle_report_stop(); + return; + } + + cycle_delay_ms = ms; + cycle_tick_flag = true; + + if( !time_tick_work ){ + time_tick_init(); + time_tick_work = true; + } + +} + +void cycle_report_stop(void){ + cycle_tick_flag = false; + cycle_delay_ms = 0; +} + + +/* param to eeprom + * + */ + +void read_sys_param(void){ + int8_t read_size = 0; + unsigned int read_addr = 0; + char *p = NULL; + + + p = (char *)(&(uarm.param.work_mode)); + read_size = sizeof(uarm.param.work_mode); + read_addr = EEPROM_MODE_ADDR; + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + + p = (char *)(&(uarm.param.front_offset)); + read_size = sizeof(uarm.param.front_offset); + read_addr = EEPROM_FRONT_ADDR; + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + + p = (char *)(&(uarm.param.high_offset)); + read_size = sizeof(uarm.param.high_offset); + read_addr = EEPROM_HEIGHT_ADDR; + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + +/* char l_str[20], r_str[20], b_str[20]; + dtostrf( uarm.param.work_mode, 5, 4, l_str ); + dtostrf( uarm.param.front_offset, 5, 4, r_str ); + dtostrf( uarm.param.high_offset, 5, 4, b_str ); + + DB_PRINT_STR( "mode:%s, front:%s, high:%s\r\n", l_str, r_str, b_str );*/ + +} + +void save_sys_param(void){ + int8_t write_size = 0; + unsigned int write_addr = 0; + char *p = NULL; + + p = (char *)(&(uarm.param.work_mode)); + write_size = sizeof(uarm.param.work_mode); + write_addr = EEPROM_MODE_ADDR; + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } + + p = (char *)(&(uarm.param.front_offset)); + write_size = sizeof(uarm.param.front_offset); + write_addr = EEPROM_FRONT_ADDR; + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } + + p = (char *)(&(uarm.param.high_offset)); + write_size = sizeof(uarm.param.high_offset); + write_addr = EEPROM_HEIGHT_ADDR; + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } + +} + + +void read_hardware_version(void){ +#define HARD_MASK ( 1<<6 | 1<<5 | 1<<4 | 1<<3 ) + DDRJ &= ~HARD_MASK; + if( (PINJ & HARD_MASK) == (1 <<6) ){ + strcpy( hardware_version, "V3.3.1" ); + settings_store_global_setting( 3, 0 ); + }else if( (PINJ & HARD_MASK) == 0x00 ){ + strcpy( hardware_version, "V3.3.0" ); + settings_store_global_setting( 3, 7 ); + } + settings_init(); +} + +static void _sort(unsigned int array[], unsigned int len) +{ + unsigned char i=0,j=0; + unsigned int temp = 0; + + for(i = 0; i < len; i++) + { + for(j = 0; i+j < (len-1); j++) + { + if(array[j] > array[j+1]) + { + temp = array[j]; + array[j] = array[j+1]; + array[j+1] = temp; + } + } + } +} + + +static int adc_read_value(uint8_t pin){ + uint8_t low, high; + if (pin >= 54) pin -= 54; // allow for channel or pin numbers + + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); + ADMUX = (1 << 6) | (pin & 0x07); + ADCSRA |= (1< 100 ){ + return 1; + }else{ + return 0; + } +} + + + +void check_motor_positon(void){ + if( sys.state == STATE_IDLE ){ + float current_angle_l = 0, current_angle_r = 0, current_angle_b = 0; +// get_current_angle( sys.position[X_AXIS], sys.position[Y_AXIS], sys.position[Z_AXIS], +// ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); + coord_to_angle( uarm.coord_x, uarm.coord_y, uarm.coord_z, ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); + + float reg_angle_l = calculate_current_angle(CHANNEL_ARML); + float reg_angle_r = calculate_current_angle(CHANNEL_ARMR); + float reg_angle_b = calculate_current_angle(CHANNEL_BASE) ; + + if( fabs(current_angle_l-reg_angle_l)>0.5 || fabs(current_angle_r-reg_angle_r)>0.5 || fabs(current_angle_b-reg_angle_b+90)>0.5 ){ + + char l_str[20], r_str[20], b_str[20]; + dtostrf( current_angle_l, 5, 4, l_str ); + dtostrf( current_angle_r, 5, 4, r_str ); + dtostrf( current_angle_b, 5, 4, b_str ); + + DB_PRINT_STR( "angle1: %s, %s, %s\r\n", l_str, r_str, b_str ); + + dtostrf( reg_angle_l, 5, 4, l_str ); + dtostrf( reg_angle_r, 5, 4, r_str ); + dtostrf( reg_angle_b, 5, 4, b_str ); + + DB_PRINT_STR( "angle2: %s, %s, %s\r\n", l_str, r_str, b_str ); + + uarm.init_arml_angle = reg_angle_l; + uarm.init_armr_angle = reg_angle_r; + uarm.init_base_angle = reg_angle_b; + beep_tone(260, 1000); + + float target[3] = {0}; + target[X_AXIS] = uarm.coord_x; + target[Y_AXIS] = uarm.coord_y; + target[Z_AXIS] = uarm.coord_z; + coord_arm2effect( &target[X_AXIS], &target[Y_AXIS], &target[Z_AXIS] ); + mc_line( 0, target, 50, false ); + + } + } +} + + diff --git a/Source code/uarm_peripheral.h b/Source code/uarm_peripheral.h new file mode 100755 index 0000000..e30ff67 --- /dev/null +++ b/Source code/uarm_peripheral.h @@ -0,0 +1,49 @@ +#ifndef _UARM_PERIPHERAL_H_ +#define _UARM_PERIPHERAL_H_ + +#include "uarm_common.h" + +extern char hardware_version[8]; + + +void servo_init(void); +void servo_set_angle(float angle); +void servo_deinit(void); +float servo_get_angle(void); + +void beep_tone(unsigned long duration, double frequency); + +void gcode_cmd_delay(int ms); +void cycle_report_start(int ms); +void cycle_report_stop(void); + +void read_sys_param(void); +void save_sys_param(void); +void cycle_report_coord(void); +void read_hardware_version(void); + +void pump_on(void); +void pump_off(void); +uint8_t get_pump_status(void); + +void gripper_relesae(void); +void gripper_catch(void); +uint8_t get_gripper_status(void); + +void laser_on(void); +void laser_off(void); +uint8_t get_laser_status(void); + + + +uint8_t get_limit_switch_status(void); +uint8_t get_power_status(void); + + +void check_motor_positon(void); + + + + + +#endif diff --git a/Source code/uarm_protocol.c b/Source code/uarm_protocol.c new file mode 100755 index 0000000..104861b --- /dev/null +++ b/Source code/uarm_protocol.c @@ -0,0 +1,1082 @@ +#include "grbl.h" +#include "uarm_protocol.h" +#include "uarm_common.h" +#include "uarm_peripheral.h" +#include "uarm_coord_convert.h" +#include "uarm_angle.h" +#include "uarm_swift.h" + + +struct cmd_pack_t { + char line[CMD_BUFFER_SIZE]; + uint8_t parse_result; + bool line_parse_done; + char report_str[CMD_BUFFER_SIZE]; +}; + +struct cmd_pack_t syn_queue[PACK_MAX_SIZE] = {0}; +struct cmd_pack_t asyn_pack = {0}; +uint8_t syn_pack_remain = 0; +char tail_report_str[TAIL_BUFFER_SIZE] = {0}; +char event_report_str[EVENT_BUFFER_SIZE] = {0}; + +void receive_cmd_line(char *line){ + protocol_execute_realtime(); // Runtime command check point. + if (sys.abort) { return; } // Bail to calling function upon system abort + + char *p = line; + char temp_str[10] = {0}; + if( line[0] == '$' ){ // = PACK_MAX_SIZE ){ + uart_printf( "E23 buffer full\r\n" ); + return; + } + strcpy( syn_queue[syn_receive_sp].line, p ); // = PACK_MAX_SIZE-1 ){ syn_receive_sp = 0; } + syn_pack_remain++; + +// DB_PRINT_STR( "rece sp: %d, cnt :%d\r\n", syn_receive_sp, syn_pack_remain ); + } + +} + + +static void add_result_to_report(uint8_t result, char *str){ // = PACK_MAX_SIZE-1 ){ syn_parse_sp = 0; } + syn_pack_remain--; + +// DB_PRINT_STR( "parse sp: %d, cnt :%d\r\n", syn_parse_sp, syn_pack_remain ); + } +} + + +void report_parse_result(void){ + if( asyn_pack.line_parse_done ){ //= PACK_MAX_SIZE-1 ){ syn_report_sp = 0; } + }else{ break; } + } + } + + if( uarm.cycle_report_flag ){ // G + * + */ +static bool uarm_cmd_g2004(char *payload){ // M + * + */ + +static void uarm_cmd_m17(void){ // 0; write_size-- ){ + eeprom_put_char( write_addr++, 0x0 ); + }*/ + settings_restore(SETTINGS_RESTORE_ALL); + read_hardware_version(); +} + +static bool uarm_cmd_m2222(char *payload){ // ='0'&&line[1]<='1') ){ + uarm_cmd_m2122( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + + break; + case 2201: + if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ + uarm_cmd_m2201( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2202: + if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ + uarm_cmd_m2202( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2203: + if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ + uarm_cmd_m2203( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2210: + if( uarm_cmd_m2210(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } + break; + case 2211: + //DB_PRINT_STR( "M2211\r\n" ); + return UARM_CMD_OK; + break; + case 2212: + //DB_PRINT_STR( "M2212\r\n" ); + return UARM_CMD_OK; + break; + case 2213: + //DB_PRINT_STR( "M2213\r\n" ); + return UARM_CMD_OK; + break; + case 2215: + uarm_cmd_m2215(); + return UARM_CMD_OK; + case 2220: + //DB_PRINT_STR( "M2220\r\n" ); + return UARM_CMD_OK; + break; + case 2221: + //DB_PRINT_STR( "M2221\r\n" ); + return UARM_CMD_OK; + break; + case 2222: + if( uarm_cmd_m2222(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } + break; + case 2231: + //DB_PRINT_STR( "M2231\r\n" ); + if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ + uarm_cmd_m2231( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + + break; + case 2232: + //DB_PRINT_STR( "M2232\r\n" ); + if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ + uarm_cmd_m2232( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2233: + if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ + uarm_cmd_m2233( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2234: + //DB_PRINT_STR( "M2234\r\n" ); + return UARM_CMD_OK; + break; + case 2240: + //DB_PRINT_STR( "M2240\r\n" ); + return UARM_CMD_OK; + break; + case 2241: + //DB_PRINT_STR( "M2241\r\n" ); + return UARM_CMD_OK; + break; + case 2245: + //DB_PRINT_STR( "M2245\r\n" ); + break; + case 2304: + //DB_PRINT_STR( "M2304\r\n" ); + break; + case 2305: + //DB_PRINT_STR( "M2305\r\n" ); + break; + case 2306: + //DB_PRINT_STR( "M2306\r\n" ); + break; + case 2307: + //DB_PRINT_STR( "M2307\r\n" ); + break; + case 2400: + if( (line[0]=='S') && (line[1]>='0'&&line[1]<='3') ){ + uarm_cmd_m2400( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2401: + uarm_cmd_m2401(); + return UARM_CMD_OK; + break; + case 2410: + uarm_cmd_m2410(); + return UARM_CMD_OK; + + break; + case 2411: + if( uarm_cmd_m2411(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } + break; + case 2420: + if( (line[0]=='P') && (line[1]>='0'&&line[1]<='2') ){ + uarm_cmd_m2420(line[1]-'0'); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2421: + if( !uarm_cmd_m2421() ){ return UARM_CMD_ERROR; } + return UARM_CMD_OK; + break; + } + return UARM_CMD_NOTFIND; +} + + + + +/* + * + * CMD -> P + * + */ + +static void uarm_cmd_p2200(void){ // ='0'&&line[1]<='2') ){ + uarm_cmd_p2206(line[1]-'0'); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; + case 2220: + uarm_cmd_p2220(); + return UARM_CMD_OK; + break; + case 2221: + uarm_cmd_p2221(); + return UARM_CMD_OK; + break; + case 2231: + uarm_cmd_p2231(); + return UARM_CMD_OK; + break; + case 2232: + uarm_cmd_p2232(); + return UARM_CMD_OK; + break; + case 2233: + uarm_cmd_p2233(); + return UARM_CMD_OK; + break; + case 2234: + uarm_cmd_p2234(); + return UARM_CMD_OK; + break; + case 2235: + uarm_cmd_p2235(); + return UARM_CMD_OK; + break; + case 2240: + return UARM_CMD_OK; + break; + case 2241: + return UARM_CMD_OK; + break; + case 2242: + uarm_cmd_p2242(); + return UARM_CMD_OK; + break; + case 2400: + uarm_cmd_p2400(); + return UARM_CMD_OK; + break; + } + + return UARM_CMD_NOTFIND; +} + + + + + + diff --git a/Source code/uarm_protocol.h b/Source code/uarm_protocol.h new file mode 100755 index 0000000..616a562 --- /dev/null +++ b/Source code/uarm_protocol.h @@ -0,0 +1,37 @@ +#ifndef _UARM_PROTOCOL_H_ +#define _UARM_PROTOCOL_H_ + +#include "uarm_common.h" + +#define TAIL_BUFFER_SIZE (50) +#define EVENT_BUFFER_SIZE (50) +#define CMD_BUFFER_SIZE (50) +#define PACK_MAX_SIZE (20) + +enum uarm_protocol_e { + UARM_CMD_OK = 0, + UARM_CMD_NOTFIND, + UARM_SYS_ABORT, + + UARM_CMD_ERROR = 50, + UARM_COORD_ERROR, +}; + +struct protocol_private_t { +}; + +extern char event_report_str[EVENT_BUFFER_SIZE]; + +enum uarm_protocol_e uarm_execute_g_cmd(uint16_t cmd, char *line, uint8_t *char_counter); +enum uarm_protocol_e uarm_execute_p_cmd(uint16_t cmd, char *line, uint8_t *char_counter); +enum uarm_protocol_e uarm_execute_m_cmd(uint16_t cmd, char *line, uint8_t *char_counter); + + +void receive_cmd_line(char *line); +void parse_cmd_line(void); +void report_parse_result(void); + + + +#endif + diff --git a/Source code/uarm_swift.c b/Source code/uarm_swift.c new file mode 100755 index 0000000..75dfd15 --- /dev/null +++ b/Source code/uarm_swift.c @@ -0,0 +1,40 @@ +#include "uarm_swift.h" + +struct uarm_state_t uarm = {0}; +char hardware_version[8] = {0}; + +void uarm_swift_init(void){ +// DB_PRINT_STR("uarm init\r\n"); + delay_ms(10); + + read_hardware_version(); + angle_sensor_init(); + + servo_init(); + beep_tone(260, 1000); + read_sys_param(); + pump_off(); + gripper_relesae(); + laser_off(); + + angle_to_coord( uarm.init_arml_angle, uarm.init_armr_angle, uarm.init_base_angle-90, + &(uarm.coord_x), &(uarm.coord_y), &(uarm.coord_z) ); + + uarm.target_step[X_AXIS] = sys.position[X_AXIS]; + uarm.target_step[Y_AXIS] = sys.position[Y_AXIS]; + uarm.target_step[Z_AXIS] = sys.position[Z_AXIS]; + + ADCSRA |= ( 0<= 1000000UL) && (F_CPU <= 16000000UL)) { // prescaler set to 64 + TCCR2B |= (1< 16Mhz, prescaler set to 128 + TCCR2B |= ((1<>= 10; + switch( pin ){ + case 3: + DDRH |= 1<<3; + TCCR4A |= _BV(COM4A1); + OCR4A = dutyCycle; + break; + case 4: + DDRH |= 1<<4; + TCCR4A |= _BV(COM4B1); + OCR4B = dutyCycle; + break; + case 5: + DDRH |= 1<<5; + TCCR4A |= _BV(COM4C1); + OCR4C = dutyCycle; + break; + } + + TCCR4B = _BV(WGM43) | time4.clock_select_bits; + +} + +void time4_pwm_init(unsigned long period_us){ + TCCR4B = _BV(WGM43); // set mode as phase and frequency correct pwm, stop the timer + TCCR4A = 0; // clear control register A + time4_set_period(period_us); +} + +/* resolution = 0.001 1ms interrupt + * + */ + +void time5_set(double resolution, void (*callback)()){ + time5.time_callback = callback; + TCCR5A=0; + TCCR5B=(1< Date: Mon, 27 Aug 2018 10:38:25 +0800 Subject: [PATCH 38/74] Create --- Source code/config.h | 414 ------ Source code/coolant_control.c | 64 - Source code/coolant_control.h | 30 - Source code/cpu_map.h | 48 - Source code/cpu_map/cpu_map_atmega2560.h | 217 ---- Source code/cpu_map/cpu_map_atmega328p.h | 147 --- Source code/defaults.h | 91 -- Source code/defaults/defaults_generic.h | 62 - Source code/defaults/defaults_oxcnc.h | 63 - Source code/defaults/defaults_shapeoko.h | 70 -- Source code/defaults/defaults_shapeoko2.h | 69 - Source code/defaults/defaults_shapeoko3.h | 68 - Source code/defaults/defaults_sherline.h | 66 - Source code/defaults/defaults_simulator.h | 63 - .../defaults/defaults_x_carve_1000mm.h | 70 -- Source code/defaults/defaults_x_carve_500mm.h | 70 -- .../defaults/defaults_zen_toolworks_7x7.h | 68 - Source code/eeprom.c | 151 --- Source code/eeprom.h | 29 - Source code/examples/grblUpload/license.txt | 21 - Source code/gcode.c | 1118 ----------------- Source code/gcode.h | 212 ---- Source code/grbl.h | 62 - Source code/grblUpload/grblUpload.ino | 29 - Source code/limits.c | 370 ------ Source code/limits.h | 41 - Source code/main.c | 97 -- Source code/motion_control.c | 446 ------- Source code/motion_control.h | 66 - Source code/nuts_bolts.c | 148 --- Source code/nuts_bolts.h | 78 -- Source code/planner.c | 457 ------- Source code/planner.h | 97 -- Source code/print.c | 219 ---- Source code/print.h | 60 - Source code/probe.c | 68 - Source code/probe.h | 43 - Source code/protocol.c | 398 ------ Source code/protocol.h | 58 - Source code/report.c | 522 -------- Source code/report.h | 115 -- Source code/serial.c | 201 --- Source code/serial.h | 64 - Source code/settings.c | 323 ----- Source code/settings.h | 142 --- Source code/spindle_control.c | 141 --- Source code/spindle_control.h | 37 - Source code/stepper.c | 928 -------------- Source code/stepper.h | 55 - Source code/system.c | 305 ----- Source code/system.h | 115 -- Source code/uarm_angle.c | 223 ---- Source code/uarm_angle.h | 24 - Source code/uarm_common.h | 75 -- Source code/uarm_coord_convert.c | 187 --- Source code/uarm_coord_convert.h | 24 - Source code/uarm_debug.h | 19 - Source code/uarm_iic.c | 587 --------- Source code/uarm_iic.h | 11 - Source code/uarm_peripheral.c | 446 ------- Source code/uarm_peripheral.h | 49 - Source code/uarm_protocol.c | 1082 ---------------- Source code/uarm_protocol.h | 37 - Source code/uarm_swift.c | 40 - Source code/uarm_swift.h | 18 - Source code/uarm_timer.c | 214 ---- Source code/uarm_timer.h | 29 - 67 files changed, 11961 deletions(-) delete mode 100755 Source code/config.h delete mode 100755 Source code/coolant_control.c delete mode 100755 Source code/coolant_control.h delete mode 100755 Source code/cpu_map.h delete mode 100755 Source code/cpu_map/cpu_map_atmega2560.h delete mode 100755 Source code/cpu_map/cpu_map_atmega328p.h delete mode 100755 Source code/defaults.h delete mode 100755 Source code/defaults/defaults_generic.h delete mode 100755 Source code/defaults/defaults_oxcnc.h delete mode 100755 Source code/defaults/defaults_shapeoko.h delete mode 100755 Source code/defaults/defaults_shapeoko2.h delete mode 100755 Source code/defaults/defaults_shapeoko3.h delete mode 100755 Source code/defaults/defaults_sherline.h delete mode 100755 Source code/defaults/defaults_simulator.h delete mode 100755 Source code/defaults/defaults_x_carve_1000mm.h delete mode 100755 Source code/defaults/defaults_x_carve_500mm.h delete mode 100755 Source code/defaults/defaults_zen_toolworks_7x7.h delete mode 100755 Source code/eeprom.c delete mode 100755 Source code/eeprom.h delete mode 100755 Source code/examples/grblUpload/license.txt delete mode 100755 Source code/gcode.c delete mode 100755 Source code/gcode.h delete mode 100755 Source code/grbl.h delete mode 100755 Source code/grblUpload/grblUpload.ino delete mode 100755 Source code/limits.c delete mode 100755 Source code/limits.h delete mode 100755 Source code/main.c delete mode 100755 Source code/motion_control.c delete mode 100755 Source code/motion_control.h delete mode 100755 Source code/nuts_bolts.c delete mode 100755 Source code/nuts_bolts.h delete mode 100755 Source code/planner.c delete mode 100755 Source code/planner.h delete mode 100755 Source code/print.c delete mode 100755 Source code/print.h delete mode 100755 Source code/probe.c delete mode 100755 Source code/probe.h delete mode 100755 Source code/protocol.c delete mode 100755 Source code/protocol.h delete mode 100755 Source code/report.c delete mode 100755 Source code/report.h delete mode 100755 Source code/serial.c delete mode 100755 Source code/serial.h delete mode 100755 Source code/settings.c delete mode 100755 Source code/settings.h delete mode 100755 Source code/spindle_control.c delete mode 100755 Source code/spindle_control.h delete mode 100755 Source code/stepper.c delete mode 100755 Source code/stepper.h delete mode 100755 Source code/system.c delete mode 100755 Source code/system.h delete mode 100755 Source code/uarm_angle.c delete mode 100755 Source code/uarm_angle.h delete mode 100755 Source code/uarm_common.h delete mode 100755 Source code/uarm_coord_convert.c delete mode 100755 Source code/uarm_coord_convert.h delete mode 100755 Source code/uarm_debug.h delete mode 100755 Source code/uarm_iic.c delete mode 100755 Source code/uarm_iic.h delete mode 100755 Source code/uarm_peripheral.c delete mode 100755 Source code/uarm_peripheral.h delete mode 100755 Source code/uarm_protocol.c delete mode 100755 Source code/uarm_protocol.h delete mode 100755 Source code/uarm_swift.c delete mode 100755 Source code/uarm_swift.h delete mode 100755 Source code/uarm_timer.c delete mode 100755 Source code/uarm_timer.h diff --git a/Source code/config.h b/Source code/config.h deleted file mode 100755 index c5eefa3..0000000 --- a/Source code/config.h +++ /dev/null @@ -1,414 +0,0 @@ -/* - config.h - compile time configuration - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -// This file contains compile-time configurations for Grbl's internal system. For the most part, -// users will not need to directly modify these, but they are here for specific needs, i.e. -// performance tuning or adjusting to non-typical machines. - -// IMPORTANT: Any changes here requires a full re-compiling of the source code to propagate them. - -#ifndef config_h -#define config_h -#include "grbl.h" // For Arduino IDE compatibility. - - -// Default settings. Used when resetting EEPROM. Change to desired name in defaults.h -#define DEFAULTS_GENERIC - -// Serial baud rate -#define BAUD_RATE 115200 - -// Default cpu mappings. Grbl officially supports the Arduino Uno only. Other processor types -// may exist from user-supplied templates or directly user-defined in cpu_map.h -//#define CPU_MAP_ATMEGA328P // Arduino Uno CPU -#define CPU_MAP_ATMEGA2560 - -// Define realtime command special characters. These characters are 'picked-off' directly from the -// serial read data stream and are not passed to the grbl line execution parser. Select characters -// that do not and must not exist in the streamed g-code program. ASCII control characters may be -// used, if they are available per user setup. Also, extended ASCII codes (>127), which are never in -// g-code programs, maybe selected for interface programs. -// NOTE: If changed, manually update help message in report.c. -#define CMD_STATUS_REPORT '?' -#define CMD_FEED_HOLD '!' -#define CMD_CYCLE_START '~' -#define CMD_RESET 0x18 // ctrl-x. -#define CMD_SAFETY_DOOR '@' - -// If homing is enabled, homing init lock sets Grbl into an alarm state upon power up. This forces -// the user to perform the homing cycle (or override the locks) before doing anything else. This is -// mainly a safety feature to remind the user to home, since position is unknown to Grbl. -#define HOMING_INIT_LOCK // Comment to disable - -// Define the homing cycle patterns with bitmasks. The homing cycle first performs a search mode -// to quickly engage the limit switches, followed by a slower locate mode, and finished by a short -// pull-off motion to disengage the limit switches. The following HOMING_CYCLE_x defines are executed -// in order starting with suffix 0 and completes the homing routine for the specified-axes only. If -// an axis is omitted from the defines, it will not home, nor will the system update its position. -// Meaning that this allows for users with non-standard cartesian machines, such as a lathe (x then z, -// with no y), to configure the homing cycle behavior to their needs. -// NOTE: The homing cycle is designed to allow sharing of limit pins, if the axes are not in the same -// cycle, but this requires some pin settings changes in cpu_map.h file. For example, the default homing -// cycle can share the Z limit pin with either X or Y limit pins, since they are on different cycles. -// By sharing a pin, this frees up a precious IO pin for other purposes. In theory, all axes limit pins -// may be reduced to one pin, if all axes are homed with seperate cycles, or vice versa, all three axes -// on separate pin, but homed in one cycle. Also, it should be noted that the function of hard limits -// will not be affected by pin sharing. -// NOTE: Defaults are set for a traditional 3-axis CNC machine. Z-axis first to clear, followed by X & Y. -#define HOMING_CYCLE_0 (1< 3us, and, when added with the -// user-supplied step pulse time, the total time must not exceed 127us. Reported successful -// values for certain setups have ranged from 5 to 20us. -// #define STEP_PULSE_DELAY 10 // Step pulse delay in microseconds. Default disabled. - -// The number of linear motions in the planner buffer to be planned at any give time. The vast -// majority of RAM that Grbl uses is based on this buffer size. Only increase if there is extra -// available RAM, like when re-compiling for a Mega or Sanguino. Or decrease if the Arduino -// begins to crash due to the lack of available RAM or if the CPU is having trouble keeping -// up with planning new incoming motions as they are executed. -// #define BLOCK_BUFFER_SIZE 18 // Uncomment to override default in planner.h. - -// Governs the size of the intermediary step segment buffer between the step execution algorithm -// and the planner blocks. Each segment is set of steps executed at a constant velocity over a -// fixed time defined by ACCELERATION_TICKS_PER_SECOND. They are computed such that the planner -// block velocity profile is traced exactly. The size of this buffer governs how much step -// execution lead time there is for other Grbl processes have to compute and do their thing -// before having to come back and refill this buffer, currently at ~50msec of step moves. -// #define SEGMENT_BUFFER_SIZE 6 // Uncomment to override default in stepper.h. - -// Line buffer size from the serial input stream to be executed. Also, governs the size of -// each of the startup blocks, as they are each stored as a string of this size. Make sure -// to account for the available EEPROM at the defined memory address in settings.h and for -// the number of desired startup blocks. -// NOTE: 80 characters is not a problem except for extreme cases, but the line buffer size -// can be too small and g-code blocks can get truncated. Officially, the g-code standards -// support up to 256 characters. In future versions, this default will be increased, when -// we know how much extra memory space we can re-invest into this. -// #define LINE_BUFFER_SIZE 80 // Uncomment to override default in protocol.h - -// Serial send and receive buffer size. The receive buffer is often used as another streaming -// buffer to store incoming blocks to be processed by Grbl when its ready. Most streaming -// interfaces will character count and track each block send to each block response. So, -// increase the receive buffer if a deeper receive buffer is needed for streaming and avaiable -// memory allows. The send buffer primarily handles messages in Grbl. Only increase if large -// messages are sent and Grbl begins to stall, waiting to send the rest of the message. -// NOTE: Buffer size values must be greater than zero and less than 256. -// #define RX_BUFFER_SIZE 128 // Uncomment to override defaults in serial.h -// #define TX_BUFFER_SIZE 64 - -// Toggles XON/XOFF software flow control for serial communications. Not officially supported -// due to problems involving the Atmega8U2 USB-to-serial chips on current Arduinos. The firmware -// on these chips do not support XON/XOFF flow control characters and the intermediate buffer -// in the chips cause latency and overflow problems with standard terminal programs. However, -// using specifically-programmed UI's to manage this latency problem has been confirmed to work. -// As well as, older FTDI FT232RL-based Arduinos(Duemilanove) are known to work with standard -// terminal programs since their firmware correctly manage these XON/XOFF characters. In any -// case, please report any successes to grbl administrators! -// #define ENABLE_XONXOFF // Default disabled. Uncomment to enable. - -// A simple software debouncing feature for hard limit switches. When enabled, the interrupt -// monitoring the hard limit switch pins will enable the Arduino's watchdog timer to re-check -// the limit pin state after a delay of about 32msec. This can help with CNC machines with -// problematic false triggering of their hard limit switches, but it WILL NOT fix issues with -// electrical interference on the signal cables from external sources. It's recommended to first -// use shielded signal cables with their shielding connected to ground (old USB/computer cables -// work well and are cheap to find) and wire in a low-pass circuit into each limit pin. -// #define ENABLE_SOFTWARE_DEBOUNCE // Default disabled. Uncomment to enable. - -// Force Grbl to check the state of the hard limit switches when the processor detects a pin -// change inside the hard limit ISR routine. By default, Grbl will trigger the hard limits -// alarm upon any pin change, since bouncing switches can cause a state check like this to -// misread the pin. When hard limits are triggered, they should be 100% reliable, which is the -// reason that this option is disabled by default. Only if your system/electronics can guarantee -// that the switches don't bounce, we recommend enabling this option. This will help prevent -// triggering a hard limit when the machine disengages from the switch. -// NOTE: This option has no effect if SOFTWARE_DEBOUNCE is enabled. -// #define HARD_LIMIT_FORCE_STATE_CHECK // Default disabled. Uncomment to enable. - - -// --------------------------------------------------------------------------------------- -// COMPILE-TIME ERROR CHECKING OF DEFINE VALUES: - -#ifndef HOMING_CYCLE_0 - #error "Required HOMING_CYCLE_0 not defined." -#endif - -#if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(VARIABLE_SPINDLE) - #error "USE_SPINDLE_DIR_AS_ENABLE_PIN may only be used with VARIABLE_SPINDLE enabled" -#endif - -#if defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) && !defined(CPU_MAP_ATMEGA328P) - #error "USE_SPINDLE_DIR_AS_ENABLE_PIN may only be used with a 328p processor" -#endif - -// --------------------------------------------------------------------------------------- - - -#endif diff --git a/Source code/coolant_control.c b/Source code/coolant_control.c deleted file mode 100755 index 4429dd4..0000000 --- a/Source code/coolant_control.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - coolant_control.c - coolant control methods - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - - -void coolant_init() -{ - COOLANT_FLOOD_DDR |= (1 << COOLANT_FLOOD_BIT); - #ifdef ENABLE_M7 - COOLANT_MIST_DDR |= (1 << COOLANT_MIST_BIT); - #endif - coolant_stop(); -} - - -void coolant_stop() -{ - COOLANT_FLOOD_PORT &= ~(1 << COOLANT_FLOOD_BIT); - #ifdef ENABLE_M7 - COOLANT_MIST_PORT &= ~(1 << COOLANT_MIST_BIT); - #endif -} - - -void coolant_set_state(uint8_t mode) -{ - if (mode == COOLANT_FLOOD_ENABLE) { - COOLANT_FLOOD_PORT |= (1 << COOLANT_FLOOD_BIT); - - #ifdef ENABLE_M7 - } else if (mode == COOLANT_MIST_ENABLE) { - COOLANT_MIST_PORT |= (1 << COOLANT_MIST_BIT); - #endif - - } else { - coolant_stop(); - } -} - - -void coolant_run(uint8_t mode) -{ - if (sys.state == STATE_CHECK_MODE) { return; } - protocol_buffer_synchronize(); // Ensure coolant turns on when specified in program. - coolant_set_state(mode); -} diff --git a/Source code/coolant_control.h b/Source code/coolant_control.h deleted file mode 100755 index 7694a78..0000000 --- a/Source code/coolant_control.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - coolant_control.h - spindle control methods - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef coolant_control_h -#define coolant_control_h - - -void coolant_init(); -void coolant_stop(); -void coolant_set_state(uint8_t mode); -void coolant_run(uint8_t mode); - -#endif \ No newline at end of file diff --git a/Source code/cpu_map.h b/Source code/cpu_map.h deleted file mode 100755 index 1804d25..0000000 --- a/Source code/cpu_map.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - cpu_map.h - CPU and pin mapping configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -/* The cpu_map.h files serve as a central pin mapping selection file for different processor - types, i.e. AVR 328p or AVR Mega 2560. Each processor has its own pin mapping file. - (i.e. cpu_map_atmega328p.h) Grbl officially supports the Arduino Uno, but the - other supplied pin mappings are supplied by users, so your results may vary. */ - -// NOTE: With new processors, only add the define name and filename to use. - -#ifndef cpu_map_h -#define cpu_map_h - - -#ifdef CPU_MAP_ATMEGA328P // (Arduino Uno) Officially supported by Grbl. - #include "cpu_map/cpu_map_atmega328p.h" -#endif - -#ifdef CPU_MAP_ATMEGA2560 // (Arduino Mega 2560) Working @EliteEng - #include "cpu_map/cpu_map_atmega2560.h" -#endif - -/* -#ifdef CPU_MAP_CUSTOM_PROC - // For a custom pin map or different processor, copy and edit one of the available cpu - // map files and modify it to your needs. Make sure the defined name is also changed in - // the config.h file. -#endif -*/ - -#endif diff --git a/Source code/cpu_map/cpu_map_atmega2560.h b/Source code/cpu_map/cpu_map_atmega2560.h deleted file mode 100755 index 042d2c8..0000000 --- a/Source code/cpu_map/cpu_map_atmega2560.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - cpu_map_atmega2560.h - CPU and pin mapping configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -/* This cpu_map file serves as a central pin mapping settings file for AVR Mega 2560 */ - - -#ifdef GRBL_PLATFORM -#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM -#endif - - -#define GRBL_PLATFORM "Atmega2560" - -// Serial port pins -#define SERIAL_RX USART0_RX_vect -#define SERIAL_UDRE USART0_UDRE_vect - -// Increase Buffers to make use of extra SRAM -//#define RX_BUFFER_SIZE 256 -//#define TX_BUFFER_SIZE 128 -//#define BLOCK_BUFFER_SIZE 36 -//#define LINE_BUFFER_SIZE 100 - -/* -// Define step pulse output pins. NOTE: All step bit pins must be on the same port. -#define STEP_DDR DDRA -#define STEP_PORT PORTA -#define STEP_PIN PINA -#define X_STEP_BIT 2 // MEGA2560 Digital Pin 24 -#define Y_STEP_BIT 3 // MEGA2560 Digital Pin 25 -#define Z_STEP_BIT 4 // MEGA2560 Digital Pin 26 -#define STEP_MASK ((1< grbl x axis -#define ARML_STEP_DDR DDRF -#define ARML_STEP_PORT PORTF -#define ARML_STEP_PIN 6 //PF6 -#define ARML_STEP_MASK (1< grbl y axis -#define ARMR_STEP_DDR DDRL -#define ARMR_STEP_PORT PORTL -#define ARMR_STEP_PIN 3 // PL3 -#define ARMR_STEP_MASK (1< grbl z axis -#define BASE_STEP_DDR DDRF -#define BASE_STEP_PORT PORTF -#define BASE_STEP_PIN 0 // PF0 -#define BASE_STEP_MASK (1<. -*/ - -/* Grbl officially supports the Arduino Uno, but the other supplied pin mappings are - supplied by users, so your results may vary. This cpu_map file serves as a central - pin mapping settings file for AVR 328p used on the Arduino Uno. */ - -#ifdef GRBL_PLATFORM -#error "cpu_map already defined: GRBL_PLATFORM=" GRBL_PLATFORM -#endif - - -#define GRBL_PLATFORM "Atmega328p" - -// Define serial port pins and interrupt vectors. -#define SERIAL_RX USART_RX_vect -#define SERIAL_UDRE USART_UDRE_vect - -// Define step pulse output pins. NOTE: All step bit pins must be on the same port. -#define STEP_DDR DDRD -#define STEP_PORT PORTD -#define X_STEP_BIT 2 // Uno Digital Pin 2 -#define Y_STEP_BIT 3 // Uno Digital Pin 3 -#define Z_STEP_BIT 4 // Uno Digital Pin 4 -#define STEP_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings selector for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - files listed here are supplied by users, so your results may vary. However, this should - give you a good starting point as you get to know your machine and tweak the settings for - your nefarious needs. - Ensure one and only one of these DEFAULTS_XXX values is defined in config.h */ - -#ifndef defaults_h - -// Only define the DEFAULT_XXX with where to find the corresponding default_XXX.h file. -// Don't #define defaults_h here, let the selected file do it. Prevents including more than one. - -#ifdef DEFAULTS_GENERIC - // Grbl generic default settings. Should work across different machines. - #include "defaults/defaults_generic.h" -#endif - -#ifdef DEFAULTS_SHERLINE_5400 - // Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors, - // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding. - #include "defaults/defaults_sherline.h" -#endif - -#ifdef DEFAULTS_SHAPEOKO - // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos - // grblShield with a 24V, 4.2A power supply. - #include "defaults/defaults_shapeoko.h" -#endif - -#ifdef DEFAULTS_SHAPEOKO_2 - // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos - // grblShield at 28V. - #include "defaults/defaults_shapeoko2.h" -#endif - -#ifdef DEFAULTS_SHAPEOKO_3 - // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion - #include "defaults/defaults_shapeoko3.h" -#endif - -#ifdef DEFAULTS_X_CARVE_500MM - // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos - // grblShield at 24V. - #include "defaults/defaults_x_carve_500mm.h" -#endif - -#ifdef DEFAULTS_X_CARVE_1000MM - // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos - // grblShield at 24V. - #include "defaults/defaults_x_carve_1000mm.h" -#endif - -#ifdef DEFAULTS_ZEN_TOOLWORKS_7x7 - // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors. - // Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here. - // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers. - #include "defaults/defaults_zen_toolworks_7x7.h" -#endif - -#ifdef DEFAULTS_OXCNC - // Grbl settings for OpenBuilds OX CNC Machine - // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ - #include "defaults/defaults_oxcnc.h" -#endif - -#ifdef DEFAULTS_SIMULATOR - // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim) - #include "defaults/defaults_simulator.h" -#endif - -#endif diff --git a/Source code/defaults/defaults_generic.h b/Source code/defaults/defaults_generic.h deleted file mode 100755 index 9732f75..0000000 --- a/Source code/defaults/defaults_generic.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - defaults_generic.h - defaults settings configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Grbl generic default settings. Should work across different machines. - #define DEFAULT_X_STEPS_PER_MM 50000.0 - #define DEFAULT_Y_STEPS_PER_MM 50000.0 - #define DEFAULT_Z_STEPS_PER_MM 50000.0 - #define DEFAULT_X_MAX_RATE 100000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 100000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 100000.0 // mm/min - #define DEFAULT_X_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (1.3*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 10000.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 10000.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 10000.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK 7 // 00000111 zyz - #define DEFAULT_STEPPER_IDLE_LOCK_TIME 255 // msec (0-254, 255 keeps steppers enabled) - #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) - #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm - #define DEFAULT_ARC_TOLERANCE 0.002 // mm - #define DEFAULT_REPORT_INCHES 0 // false - #define DEFAULT_INVERT_ST_ENABLE 1 // false - #define DEFAULT_INVERT_LIMIT_PINS 0 // false - #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false - #define DEFAULT_HARD_LIMIT_ENABLE 0 // false - #define DEFAULT_HOMING_ENABLE 0 // false - #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir - #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min - #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min - #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) - #define DEFAULT_HOMING_PULLOFF 1.0 // mm - -#endif diff --git a/Source code/defaults/defaults_oxcnc.h b/Source code/defaults/defaults_oxcnc.h deleted file mode 100755 index 1c89ab8..0000000 --- a/Source code/defaults/defaults_oxcnc.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - defaults_oxcnc.h - defaults settings configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Grbl settings for OpenBuilds OX CNC Machine - // http://www.openbuilds.com/builds/openbuilds-ox-cnc-machine.341/ - #define DEFAULT_X_STEPS_PER_MM 26.670 - #define DEFAULT_Y_STEPS_PER_MM 26.670 - #define DEFAULT_Z_STEPS_PER_MM 50 - #define DEFAULT_X_MAX_RATE 500.0 // mm/min - #define DEFAULT_Y_MAX_RATE 500.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (10.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 500.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 750.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 80.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK 0 - #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) - #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) - #define DEFAULT_JUNCTION_DEVIATION 0.02 // mm - #define DEFAULT_ARC_TOLERANCE 0.002 // mm - #define DEFAULT_REPORT_INCHES 0 // false - #define DEFAULT_INVERT_ST_ENABLE 0 // false - #define DEFAULT_INVERT_LIMIT_PINS 0 // false - #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false - #define DEFAULT_HARD_LIMIT_ENABLE 0 // false - #define DEFAULT_HOMING_ENABLE 0 // false - #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir - #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min - #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min - #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) - #define DEFAULT_HOMING_PULLOFF 1.0 // mm - -#endif diff --git a/Source code/defaults/defaults_shapeoko.h b/Source code/defaults/defaults_shapeoko.h deleted file mode 100755 index 46346ea..0000000 --- a/Source code/defaults/defaults_shapeoko.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - defaults_shapeoko.h - defaults settings configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - - // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos - // grblShield with a 24V, 4.2A power supply. - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 400 - #define MM_PER_REV_XY (0.08*18*MM_PER_INCH) // 0.08 in belt pitch, 18 pulley teeth - #define MICROSTEPS_Z 2 - #define STEP_REVS_Z 400 - #define MM_PER_REV_Z 1.250 // 1.25 mm/rev leadscrew - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 1000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 1000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 1000.0 // mm/min - #define DEFAULT_X_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (15.0*60*60) // 15*60*60 mm/min^2 = 15 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 200.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 200.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 200.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: Shapeoko CNC mill with three NEMA 17 stepper motors, driven by Synthetos - // grblShield at 28V. - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 200 - #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define MICROSTEPS_Z 2 - #define STEP_REVS_Z 200 - #define MM_PER_REV_Z 1.250 // 1.25 mm/rev leadscrew - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 5000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 5000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (250.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (250.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 290.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 290.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: Shapeoko CNC mill with three NEMA 23 stepper motors, driven by CarbideMotion - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 200 - #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define MICROSTEPS_Z 8 - #define STEP_REVS_Z 200 - #define MM_PER_REV_Z (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 5000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 5000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 5000.0 // mm/min - #define DEFAULT_X_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (400.0*60*60) // 400*60*60 mm/min^2 = 400 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 425.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 465.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 80.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: Sherline 5400 mill with three NEMA 23 Keling KL23H256-21-8B 185 oz-in stepper motors, - // driven by three Pololu A4988 stepper drivers with a 30V, 6A power supply at 1.5A per winding. - #define MICROSTEPS 2 - #define STEPS_PER_REV 200.0 - #define MM_PER_REV (0.050*MM_PER_INCH) // 0.050 inch/rev leadscrew - #define DEFAULT_X_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_Y_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_Z_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_X_MAX_RATE 635.0 // mm/min (25 ipm) - #define DEFAULT_Y_MAX_RATE 635.0 // mm/min - #define DEFAULT_Z_MAX_RATE 635.0 // mm/min - #define DEFAULT_X_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 50*60*60 mm/min^2 = 50 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 225.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 125.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 170.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Settings only for Grbl Simulator (www.github.com/grbl/grbl-sim) - // Grbl generic default settings. Should work across different machines. - #define DEFAULT_X_STEPS_PER_MM 1000.0 - #define DEFAULT_Y_STEPS_PER_MM 1000.0 - #define DEFAULT_Z_STEPS_PER_MM 1000.0 - #define DEFAULT_X_MAX_RATE 1000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 1000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 1000.0 // mm/min - #define DEFAULT_X_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (100.0*60*60) // 10*60*60 mm/min^2 = 10 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 1000.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 1000.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 1000.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK 0 - #define DEFAULT_STEPPER_IDLE_LOCK_TIME 25 // msec (0-254, 255 keeps steppers enabled) - #define DEFAULT_STATUS_REPORT_MASK ((BITFLAG_RT_STATUS_MACHINE_POSITION)|(BITFLAG_RT_STATUS_WORK_POSITION)) - #define DEFAULT_JUNCTION_DEVIATION 0.01 // mm - #define DEFAULT_ARC_TOLERANCE 0.002 // mm - #define DEFAULT_REPORT_INCHES 0 // false - #define DEFAULT_INVERT_ST_ENABLE 0 // false - #define DEFAULT_INVERT_LIMIT_PINS 0 // false - #define DEFAULT_SOFT_LIMIT_ENABLE 0 // false - #define DEFAULT_HARD_LIMIT_ENABLE 0 // false - #define DEFAULT_HOMING_ENABLE 0 // false - #define DEFAULT_HOMING_DIR_MASK 0 // move positive dir - #define DEFAULT_HOMING_FEED_RATE 25.0 // mm/min - #define DEFAULT_HOMING_SEEK_RATE 500.0 // mm/min - #define DEFAULT_HOMING_DEBOUNCE_DELAY 250 // msec (0-65k) - #define DEFAULT_HOMING_PULLOFF 1.0 // mm - -#endif diff --git a/Source code/defaults/defaults_x_carve_1000mm.h b/Source code/defaults/defaults_x_carve_1000mm.h deleted file mode 100755 index f88e5ad..0000000 --- a/Source code/defaults/defaults_x_carve_1000mm.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - defaults_x_carve_1000mm.h - defaults settings configuration file - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos - // grblShield at 24V. - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 200 - #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define MICROSTEPS_Z 2 - #define STEP_REVS_Z 200 - #define MM_PER_REV_Z 2.117 // ACME 3/8-12 Leadscrew - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 8000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 8000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 740.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 790.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: X-Carve 3D Carver CNC mill with three 200 step/rev motors driven by Synthetos - // grblShield at 24V. - #define MICROSTEPS_XY 8 - #define STEP_REVS_XY 200 - #define MM_PER_REV_XY (2.0*20) // 2mm belt pitch, 20 pulley teeth - #define MICROSTEPS_Z 2 - #define STEP_REVS_Z 200 - #define MM_PER_REV_Z 2.117 // ACME 3/8-12 Leadscrew - #define DEFAULT_X_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Y_STEPS_PER_MM (MICROSTEPS_XY*STEP_REVS_XY/MM_PER_REV_XY) - #define DEFAULT_Z_STEPS_PER_MM (MICROSTEPS_Z*STEP_REVS_Z/MM_PER_REV_Z) - #define DEFAULT_X_MAX_RATE 8000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 8000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 500.0 // mm/min - #define DEFAULT_X_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (500.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (50.0*60*60) // 25*60*60 mm/min^2 = 25 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 290.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 290.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 100.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1<. -*/ - -/* The defaults.h file serves as a central default settings file for different machine - types, from DIY CNC mills to CNC conversions of off-the-shelf machines. The settings - here are supplied by users, so your results may vary. However, this should give you - a good starting point as you get to know your machine and tweak the settings for your - nefarious needs. */ - -#ifndef defaults_h -#define defaults_h - - // Description: Zen Toolworks 7x7 mill with three Shinano SST43D2121 65oz-in NEMA 17 stepper motors. - // Leadscrew is different from some ZTW kits, where most are 1.25mm/rev rather than 8.0mm/rev here. - // Driven by 30V, 6A power supply and TI DRV8811 stepper motor drivers. - #define MICROSTEPS 8 - #define STEPS_PER_REV 200.0 - #define MM_PER_REV 8.0 // 8 mm/rev leadscrew - #define DEFAULT_X_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_Y_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_Z_STEPS_PER_MM (STEPS_PER_REV*MICROSTEPS/MM_PER_REV) - #define DEFAULT_X_MAX_RATE 6000.0 // mm/min - #define DEFAULT_Y_MAX_RATE 6000.0 // mm/min - #define DEFAULT_Z_MAX_RATE 6000.0 // mm/min - #define DEFAULT_X_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 - #define DEFAULT_Y_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 - #define DEFAULT_Z_ACCELERATION (600.0*60*60) // 600*60*60 mm/min^2 = 600 mm/sec^2 - #define DEFAULT_X_MAX_TRAVEL 190.0 // mm - #define DEFAULT_Y_MAX_TRAVEL 180.0 // mm - #define DEFAULT_Z_MAX_TRAVEL 150.0 // mm - #define DEFAULT_STEP_PULSE_MICROSECONDS 10 - #define DEFAULT_STEPPING_INVERT_MASK 0 - #define DEFAULT_DIRECTION_INVERT_MASK ((1< -#include - -/* These EEPROM bits have different names on different devices. */ -#ifndef EEPE - #define EEPE EEWE //!< EEPROM program/write enable. - #define EEMPE EEMWE //!< EEPROM master program/write enable. -#endif - -/* These two are unfortunately not defined in the device include files. */ -#define EEPM1 5 //!< EEPROM Programming Mode Bit 1. -#define EEPM0 4 //!< EEPROM Programming Mode Bit 0. - -/* Define to reduce code size. */ -#define EEPROM_IGNORE_SELFPROG //!< Remove SPM flag polling. - -/*! \brief Read byte from EEPROM. - * - * This function reads one byte from a given EEPROM address. - * - * \note The CPU is halted for 4 clock cycles during EEPROM read. - * - * \param addr EEPROM address to read from. - * \return The byte read from the EEPROM address. - */ -unsigned char eeprom_get_char( unsigned int addr ) -{ - do {} while( EECR & (1< 0; size--) { - checksum = (checksum << 1) || (checksum >> 7); - checksum += *source; - eeprom_put_char(destination++, *(source++)); - } - eeprom_put_char(destination, checksum); -} - -int memcpy_from_eeprom_with_checksum(char *destination, unsigned int source, unsigned int size) { - unsigned char data, checksum = 0; - for(; size > 0; size--) { - data = eeprom_get_char(source++); - checksum = (checksum << 1) || (checksum >> 7); - checksum += data; - *(destination++) = data; - } - return(checksum == eeprom_get_char(source)); -} - -// end of file diff --git a/Source code/eeprom.h b/Source code/eeprom.h deleted file mode 100755 index c9718a2..0000000 --- a/Source code/eeprom.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - eeprom.h - EEPROM methods - Part of Grbl - - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef eeprom_h -#define eeprom_h - -unsigned char eeprom_get_char(unsigned int addr); -void eeprom_put_char(unsigned int addr, unsigned char new_value); -void memcpy_to_eeprom_with_checksum(unsigned int destination, char *source, unsigned int size); -int memcpy_from_eeprom_with_checksum(char *destination, unsigned int source, unsigned int size); - -#endif diff --git a/Source code/examples/grblUpload/license.txt b/Source code/examples/grblUpload/license.txt deleted file mode 100755 index 1abcdb9..0000000 --- a/Source code/examples/grblUpload/license.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Sungeun K. Jeon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/Source code/gcode.c b/Source code/gcode.c deleted file mode 100755 index 51cc4ae..0000000 --- a/Source code/gcode.c +++ /dev/null @@ -1,1118 +0,0 @@ -/* - gcode.c - rs274/ngc parser. - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" -#include "uarm_protocol.h" - -// NOTE: Max line number is defined by the g-code standard to be 99999. It seems to be an -// arbitrary value, and some GUIs may require more. So we increased it based on a max safe -// value when converting a float (7.2 digit precision)s to an integer. -#define MAX_LINE_NUMBER 9999999 - -#define AXIS_COMMAND_NONE 0 -#define AXIS_COMMAND_NON_MODAL 1 -#define AXIS_COMMAND_MOTION_MODE 2 -#define AXIS_COMMAND_TOOL_LENGTH_OFFSET 3 // *Undefined but required - -// Declare gc extern struct -parser_state_t gc_state; -parser_block_t gc_block; - -#define FAIL(status) return(status); - - -void gc_init() -{ - memset(&gc_state, 0, sizeof(parser_state_t)); - - // Load default G54 coordinate system. - if (!(settings_read_coord_data(gc_state.modal.coord_select,gc_state.coord_system))) { - report_status_message(STATUS_SETTING_READ_FAIL); - } -} - - -// Sets g-code parser position in mm. Input in steps. Called by the system abort and hard -// limit pull-off routines. -void gc_sync_position() -{ - system_convert_array_steps_to_mpos(gc_state.position,sys.position); -} - - -static uint8_t gc_check_same_position(float *pos_a, float *pos_b) -{ - uint8_t idx; - for (idx=0; idx 'Z')) { FAIL(STATUS_EXPECTED_COMMAND_LETTER); } // [Expected word letter] - char_counter++; - if (!read_float(line, &char_counter, &value)) { FAIL(STATUS_BAD_NUMBER_FORMAT); } // [Expected word value] - - // Convert values to smaller uint8 significand and mantissa values for parsing this word. - // NOTE: Mantissa is multiplied by 100 to catch non-integer command values. This is more - // accurate than the NIST gcode requirement of x10 when used for commands, but not quite - // accurate enough for value words that require integers to within 0.0001. This should be - // a good enough comprimise and catch most all non-integer errors. To make it compliant, - // we would simply need to change the mantissa to int16, but this add compiled flash space. - // Maybe update this later. - int_value = trunc(value); - mantissa = round(100*(value - int_value)); // Compute mantissa for Gxx.x commands. - // NOTE: Rounding must be used to catch small floating point errors. - - // Check if the g-code word is supported or errors due to modal group violations or has - // been repeated in the g-code block. If ok, update the command or record its value. - switch(letter) { - - /* 'G' and 'M' Command Words: Parse commands and check for modal group violations. - NOTE: Modal group numbers are defined in Table 4 of NIST RS274-NGC v3, pg.20 */ - - case 'G': - // Determine 'G' command and its modal group - rtn = uarm_execute_g_cmd( int_value, line+char_counter, &char_counter ); - if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } - - - switch(int_value) { - case 10: case 28: case 30: case 92: - // Check for G10/28/30/92 being called with G0/1/2/3/38 on same block. - // * G43.1 is also an axis command but is not explicitly defined this way. - if (mantissa == 0) { // Ignore G28.1, G30.1, and G92.1 - if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] - axis_command = AXIS_COMMAND_NON_MODAL; - } - // No break. Continues to next line. - case 4: case 53: - word_bit = MODAL_GROUP_G0; - switch(int_value) { - case 4: gc_block.non_modal_command = NON_MODAL_DWELL; break; // G4 - case 10: gc_block.non_modal_command = NON_MODAL_SET_COORDINATE_DATA; break; // G10 - case 28: - switch(mantissa) { - case 0: gc_block.non_modal_command = NON_MODAL_GO_HOME_0; break; // G28 - case 10: gc_block.non_modal_command = NON_MODAL_SET_HOME_0; break; // G28.1 - default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G28.x command] - } - mantissa = 0; // Set to zero to indicate valid non-integer G command. - break; - case 30: - switch(mantissa) { - case 0: gc_block.non_modal_command = NON_MODAL_GO_HOME_1; break; // G30 - case 10: gc_block.non_modal_command = NON_MODAL_SET_HOME_1; break; // G30.1 - default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G30.x command] - } - mantissa = 0; // Set to zero to indicate valid non-integer G command. - break; - case 53: gc_block.non_modal_command = NON_MODAL_ABSOLUTE_OVERRIDE; break; // G53 - case 92: - switch(mantissa) { - case 0: gc_block.non_modal_command = NON_MODAL_SET_COORDINATE_OFFSET; break; // G92 - case 10: gc_block.non_modal_command = NON_MODAL_RESET_COORDINATE_OFFSET; break; // G92.1 - default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G92.x command] - } - mantissa = 0; // Set to zero to indicate valid non-integer G command. - break; - } - break; - case 0: case 1: case 2: case 3: case 38: - // Check for G0/1/2/3/38 being called with G10/28/30/92 on same block. - // * G43.1 is also an axis command but is not explicitly defined this way. - if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] - axis_command = AXIS_COMMAND_MOTION_MODE; - // No break. Continues to next line. - case 80: - word_bit = MODAL_GROUP_G1; - switch(int_value) { - case 0: gc_block.modal.motion = MOTION_MODE_SEEK; break; // G0 - case 1: gc_block.modal.motion = MOTION_MODE_LINEAR; break; // G1 - case 2: gc_block.modal.motion = MOTION_MODE_CW_ARC; break; // G2 - case 3: gc_block.modal.motion = MOTION_MODE_CCW_ARC; break; // G3 - case 38: - switch(mantissa) { - case 20: gc_block.modal.motion = MOTION_MODE_PROBE_TOWARD; break; // G38.2 - case 30: gc_block.modal.motion = MOTION_MODE_PROBE_TOWARD_NO_ERROR; break; // G38.3 - case 40: gc_block.modal.motion = MOTION_MODE_PROBE_AWAY; break; // G38.4 - case 50: gc_block.modal.motion = MOTION_MODE_PROBE_AWAY_NO_ERROR; break; // G38.5 - default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G38.x command] - } - mantissa = 0; // Set to zero to indicate valid non-integer G command. - break; - case 80: gc_block.modal.motion = MOTION_MODE_NONE; break; // G80 - } - break; - case 17: case 18: case 19: - word_bit = MODAL_GROUP_G2; - switch(int_value) { - case 17: gc_block.modal.plane_select = PLANE_SELECT_XY; break; - case 18: gc_block.modal.plane_select = PLANE_SELECT_ZX; break; - case 19: gc_block.modal.plane_select = PLANE_SELECT_YZ; break; - } - break; - case 90: case 91: - if (mantissa == 0) { - word_bit = MODAL_GROUP_G3; - if (int_value == 90) { gc_block.modal.distance = DISTANCE_MODE_ABSOLUTE; } // G90 - else { gc_block.modal.distance = DISTANCE_MODE_INCREMENTAL; } // G91 - } else { - word_bit = MODAL_GROUP_G4; - if ((mantissa != 10) || (int_value == 90)) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G90.1 not supported] - mantissa = 0; // Set to zero to indicate valid non-integer G command. - // Otherwise, arc IJK incremental mode is default. G91.1 does nothing. - } - break; - case 93: case 94: - word_bit = MODAL_GROUP_G5; - if (int_value == 93) { gc_block.modal.feed_rate = FEED_RATE_MODE_INVERSE_TIME; } // G93 - else { gc_block.modal.feed_rate = FEED_RATE_MODE_UNITS_PER_MIN; } // G94 - break; - case 20: case 21: - word_bit = MODAL_GROUP_G6; - if (int_value == 20) { gc_block.modal.units = UNITS_MODE_INCHES; } // G20 - else { gc_block.modal.units = UNITS_MODE_MM; } // G21 - break; - case 40: - word_bit = MODAL_GROUP_G7; - // NOTE: Not required since cutter radius compensation is always disabled. Only here - // to support G40 commands that often appear in g-code program headers to setup defaults. - // gc_block.modal.cutter_comp = CUTTER_COMP_DISABLE; // G40 - break; - case 43: case 49: - word_bit = MODAL_GROUP_G8; - // NOTE: The NIST g-code standard vaguely states that when a tool length offset is changed, - // there cannot be any axis motion or coordinate offsets updated. Meaning G43, G43.1, and G49 - // all are explicit axis commands, regardless if they require axis words or not. - if (axis_command) { FAIL(STATUS_GCODE_AXIS_COMMAND_CONFLICT); } // [Axis word/command conflict] } - axis_command = AXIS_COMMAND_TOOL_LENGTH_OFFSET; - if (int_value == 49) { // G49 - gc_block.modal.tool_length = TOOL_LENGTH_OFFSET_CANCEL; - } else if (mantissa == 10) { // G43.1 - gc_block.modal.tool_length = TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC; - } else { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [Unsupported G43.x command] - mantissa = 0; // Set to zero to indicate valid non-integer G command. - break; - case 54: case 55: case 56: case 57: case 58: case 59: - // NOTE: G59.x are not supported. (But their int_values would be 60, 61, and 62.) - word_bit = MODAL_GROUP_G12; - gc_block.modal.coord_select = int_value-54; // Shift to array indexing. - break; - case 61: - word_bit = MODAL_GROUP_G13; - if (mantissa != 0) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G61.1 not supported] - // gc_block.modal.control = CONTROL_MODE_EXACT_PATH; // G61 - break; - default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported G command] - } - if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [Unsupported or invalid Gxx.x command] - // Check for more than one command per modal group violations in the current block - // NOTE: Variable 'word_bit' is always assigned, if the command is valid. - if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } - command_words |= bit(word_bit); - break; - - case 'M': - - // Determine 'M' command and its modal group - if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [No Mxx.x commands] - - rtn = uarm_execute_m_cmd( int_value, line+char_counter, &char_counter ); - if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } - - switch(int_value) { - case 0: case 1: case 2: case 30: - word_bit = MODAL_GROUP_M4; - switch(int_value) { - case 0: gc_block.modal.program_flow = PROGRAM_FLOW_PAUSED; break; // Program pause - case 1: break; // Optional stop not supported. Ignore. - case 2: case 30: gc_block.modal.program_flow = PROGRAM_FLOW_COMPLETED; break; // Program end and reset - } - break; - #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN - case 4: - #endif - case 3: case 5: - word_bit = MODAL_GROUP_M7; - switch(int_value) { - case 3: gc_block.modal.spindle = SPINDLE_ENABLE_CW; break; - #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN - case 4: gc_block.modal.spindle = SPINDLE_ENABLE_CCW; break; - #endif - case 5: gc_block.modal.spindle = SPINDLE_DISABLE; break; - } - break; - #ifdef ENABLE_M7 - case 7: - #endif - case 8: case 9: - word_bit = MODAL_GROUP_M8; - switch(int_value) { - #ifdef ENABLE_M7 - case 7: gc_block.modal.coolant = COOLANT_MIST_ENABLE; break; - #endif - case 8: gc_block.modal.coolant = COOLANT_FLOOD_ENABLE; break; - case 9: gc_block.modal.coolant = COOLANT_DISABLE; break; - } - break; - default: FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); // [Unsupported M command] - } - - // Check for more than one command per modal group violations in the current block - // NOTE: Variable 'word_bit' is always assigned, if the command is valid. - if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } - command_words |= bit(word_bit); - break; - case 'P': - if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [No Mxx.x commands] - rtn = uarm_execute_p_cmd( int_value, line+char_counter, &char_counter ); - if( (rtn != UARM_CMD_NOTFIND) && (rtn != UARM_SYS_ABORT) ){ return rtn; } - - if ( bit_istrue(command_words,bit(word_bit)) ) { FAIL(STATUS_GCODE_MODAL_GROUP_VIOLATION); } - command_words |= bit(word_bit); - break; - // NOTE: All remaining letters assign values. - default: - - /* Non-Command Words: This initial parsing phase only checks for repeats of the remaining - legal g-code words and stores their value. Error-checking is performed later since some - words (I,J,K,L,P,R) have multiple connotations and/or depend on the issued commands. */ - switch(letter){ - // case 'A': // Not supported - // case 'B': // Not supported - // case 'C': // Not supported - // case 'D': // Not supported - case 'F': word_bit = WORD_F; gc_block.values.f = value; break; - // case 'H': // Not supported - case 'I': word_bit = WORD_I; gc_block.values.ijk[X_AXIS] = value; ijk_words |= (1< MAX_LINE_NUMBER) { FAIL(STATUS_GCODE_INVALID_LINE_NUMBER); } // [Exceeds max line number] - } - // bit_false(value_words,bit(WORD_N)); // NOTE: Single-meaning value word. Set at end of error-checking. - - // Track for unused words at the end of error-checking. - // NOTE: Single-meaning value words are removed all at once at the end of error-checking, because - // they are always used when present. This was done to save a few bytes of flash. For clarity, the - // single-meaning value words may be removed as they are used. Also, axis words are treated in the - // same way. If there is an explicit/implicit axis command, XYZ words are always used and are - // are removed at the end of error-checking. - - // [1. Comments ]: MSG's NOT SUPPORTED. Comment handling performed by protocol. - - // [2. Set feed rate mode ]: G93 F word missing with G1,G2/3 active, implicitly or explicitly. Feed rate - // is not defined after switching to G94 from G93. - if (gc_block.modal.feed_rate == FEED_RATE_MODE_INVERSE_TIME) { // = G93 - // NOTE: G38 can also operate in inverse time, but is undefined as an error. Missing F word check added here. - if (axis_command == AXIS_COMMAND_MOTION_MODE) { - if ((gc_block.modal.motion != MOTION_MODE_NONE) || (gc_block.modal.motion != MOTION_MODE_SEEK)) { - if (bit_isfalse(value_words,bit(WORD_F))) { FAIL(STATUS_GCODE_UNDEFINED_FEED_RATE); } // [F word missing] - } - } - // NOTE: It seems redundant to check for an F word to be passed after switching from G94 to G93. We would - // accomplish the exact same thing if the feed rate value is always reset to zero and undefined after each - // inverse time block, since the commands that use this value already perform undefined checks. This would - // also allow other commands, following this switch, to execute and not error out needlessly. This code is - // combined with the above feed rate mode and the below set feed rate error-checking. - - // [3. Set feed rate ]: F is negative (done.) - // - In inverse time mode: Always implicitly zero the feed rate value before and after block completion. - // NOTE: If in G93 mode or switched into it from G94, just keep F value as initialized zero or passed F word - // value in the block. If no F word is passed with a motion command that requires a feed rate, this will error - // out in the motion modes error-checking. However, if no F word is passed with NO motion command that requires - // a feed rate, we simply move on and the state feed rate value gets updated to zero and remains undefined. - } else { // = G94 - // - In units per mm mode: If F word passed, ensure value is in mm/min, otherwise push last state value. - if (gc_state.modal.feed_rate == FEED_RATE_MODE_UNITS_PER_MIN) { // Last state is also G94 - if (bit_istrue(value_words,bit(WORD_F))) { - if (gc_block.modal.units == UNITS_MODE_INCHES) { gc_block.values.f *= MM_PER_INCH; } - } else { - gc_block.values.f = gc_state.feed_rate; // Push last state feed rate - } - } // Else, switching to G94 from G93, so don't push last state feed rate. Its undefined or the passed F word value. - } - // bit_false(value_words,bit(WORD_F)); // NOTE: Single-meaning value word. Set at end of error-checking. - - // [4. Set spindle speed ]: S is negative (done.) - if (bit_isfalse(value_words,bit(WORD_S))) { gc_block.values.s = gc_state.spindle_speed; } - // bit_false(value_words,bit(WORD_S)); // NOTE: Single-meaning value word. Set at end of error-checking. - - // [5. Select tool ]: NOT SUPPORTED. Only tracks value. T is negative (done.) Not an integer. Greater than max tool value. - // bit_false(value_words,bit(WORD_T)); // NOTE: Single-meaning value word. Set at end of error-checking. - - // [6. Change tool ]: N/A - // [7. Spindle control ]: N/A - // [8. Coolant control ]: N/A - // [9. Enable/disable feed rate or spindle overrides ]: NOT SUPPORTED. - - // [10. Dwell ]: P value missing. P is negative (done.) NOTE: See below. - if (gc_block.non_modal_command == NON_MODAL_DWELL) { - if (bit_isfalse(value_words,bit(WORD_P))) { FAIL(STATUS_GCODE_VALUE_WORD_MISSING); } // [P word missing] - bit_false(value_words,bit(WORD_P)); - } - - // [11. Set active plane ]: N/A - switch (gc_block.modal.plane_select) { - case PLANE_SELECT_XY: - axis_0 = X_AXIS; - axis_1 = Y_AXIS; - axis_linear = Z_AXIS; - break; - case PLANE_SELECT_ZX: - axis_0 = Z_AXIS; - axis_1 = X_AXIS; - axis_linear = Y_AXIS; - break; - default: // case PLANE_SELECT_YZ: - axis_0 = Y_AXIS; - axis_1 = Z_AXIS; - axis_linear = X_AXIS; - } - - // [12. Set length units ]: N/A - // Pre-convert XYZ coordinate values to millimeters, if applicable. - uint8_t idx; - if (gc_block.modal.units == UNITS_MODE_INCHES) { - for (idx=0; idx N_COORDINATE_SYSTEM) { FAIL(STATUS_GCODE_UNSUPPORTED_COORD_SYS); } // [Greater than N sys] - if (gc_state.modal.coord_select != gc_block.modal.coord_select) { - if (!(settings_read_coord_data(gc_block.modal.coord_select,coordinate_data))) { FAIL(STATUS_SETTING_READ_FAIL); } - } - } - - // [16. Set path control mode ]: N/A. Only G61. G61.1 and G64 NOT SUPPORTED. - // [17. Set distance mode ]: N/A. Only G91.1. G90.1 NOT SUPPORTED. - // [18. Set retract mode ]: NOT SUPPORTED. - - // [19. Remaining non-modal actions ]: Check go to predefined position, set G10, or set axis offsets. - // NOTE: We need to separate the non-modal commands that are axis word-using (G10/G28/G30/G92), as these - // commands all treat axis words differently. G10 as absolute offsets or computes current position as - // the axis value, G92 similarly to G10 L20, and G28/30 as an intermediate target position that observes - // all the current coordinate system and G92 offsets. - switch (gc_block.non_modal_command) { - case NON_MODAL_SET_COORDINATE_DATA: - // [G10 Errors]: L missing and is not 2 or 20. P word missing. (Negative P value done.) - // [G10 L2 Errors]: R word NOT SUPPORTED. P value not 0 to nCoordSys(max 9). Axis words missing. - // [G10 L20 Errors]: P must be 0 to nCoordSys(max 9). Axis words missing. - if (!axis_words) { FAIL(STATUS_GCODE_NO_AXIS_WORDS) }; // [No axis words] - if (bit_isfalse(value_words,((1< N_COORDINATE_SYSTEM) { FAIL(STATUS_GCODE_UNSUPPORTED_COORD_SYS); } // [Greater than N sys] - if (gc_block.values.l != 20) { - if (gc_block.values.l == 2) { - if (bit_istrue(value_words,bit(WORD_R))) { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [G10 L2 R not supported] - } else { FAIL(STATUS_GCODE_UNSUPPORTED_COMMAND); } // [Unsupported L] - } - bit_false(value_words,(bit(WORD_L)|bit(WORD_P))); - - // Determine coordinate system to change and try to load from EEPROM. - if (coord_select > 0) { coord_select--; } // Adjust P1-P6 index to EEPROM coordinate data indexing. - else { coord_select = gc_block.modal.coord_select; } // Index P0 as the active coordinate system - if (!settings_read_coord_data(coord_select,parameter_data)) { FAIL(STATUS_SETTING_READ_FAIL); } // [EEPROM read fail] - - // Pre-calculate the coordinate data changes. NOTE: Uses parameter_data since coordinate_data may be in use by G54-59. - for (idx=0; idx C -----------------+--------------- T <- [x,y] - | <------ d/2 ---->| - - C - Current position - T - Target position - O - center of circle that pass through both C and T - d - distance from C to T - r - designated radius - h - distance from center of CT to O - - Expanding the equations: - - d -> sqrt(x^2 + y^2) - h -> sqrt(4 * r^2 - x^2 - y^2)/2 - i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 - j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2)) / sqrt(x^2 + y^2)) / 2 - - Which can be written: - - i -> (x - (y * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 - j -> (y + (x * sqrt(4 * r^2 - x^2 - y^2))/sqrt(x^2 + y^2))/2 - - Which we for size and speed reasons optimize to: - - h_x2_div_d = sqrt(4 * r^2 - x^2 - y^2)/sqrt(x^2 + y^2) - i = (x - (y * h_x2_div_d))/2 - j = (y + (x * h_x2_div_d))/2 - */ - - // First, use h_x2_div_d to compute 4*h^2 to check if it is negative or r is smaller - // than d. If so, the sqrt of a negative number is complex and error out. - float h_x2_div_d = 4.0 * gc_block.values.r*gc_block.values.r - x*x - y*y; - - if (h_x2_div_d < 0) { FAIL(STATUS_GCODE_ARC_RADIUS_ERROR); } // [Arc radius error] - - // Finish computing h_x2_div_d. - h_x2_div_d = -sqrt(h_x2_div_d)/hypot_f(x,y); // == -(h * 2 / d) - // Invert the sign of h_x2_div_d if the circle is counter clockwise (see sketch below) - if (gc_block.modal.motion == MOTION_MODE_CCW_ARC) { h_x2_div_d = -h_x2_div_d; } - - /* The counter clockwise circle lies to the left of the target direction. When offset is positive, - the left hand circle will be generated - when it is negative the right hand circle is generated. - - T <-- Target position - - ^ - Clockwise circles with this center | Clockwise circles with this center will have - will have > 180 deg of angular travel | < 180 deg of angular travel, which is a good thing! - \ | / - center of arc when h_x2_div_d is positive -> x <----- | -----> x <- center of arc when h_x2_div_d is negative - | - | - - C <-- Current position - */ - // Negative R is g-code-alese for "I want a circle with more than 180 degrees of travel" (go figure!), - // even though it is advised against ever generating such circles in a single line of g-code. By - // inverting the sign of h_x2_div_d the center of the circles is placed on the opposite side of the line of - // travel and thus we get the unadvisably long arcs as prescribed. - if (gc_block.values.r < 0) { - h_x2_div_d = -h_x2_div_d; - gc_block.values.r = -gc_block.values.r; // Finished with r. Set to positive for mc_arc - } - // Complete the operation by calculating the actual center of the arc - gc_block.values.ijk[axis_0] = 0.5*(x-(y*h_x2_div_d)); - gc_block.values.ijk[axis_1] = 0.5*(y+(x*h_x2_div_d)); - - } else { // Arc Center Format Offset Mode - if (!(ijk_words & (bit(axis_0)|bit(axis_1)))) { FAIL(STATUS_GCODE_NO_OFFSETS_IN_PLANE); } // [No offsets in plane] - bit_false(value_words,(bit(WORD_I)|bit(WORD_J)|bit(WORD_K))); - - // Convert IJK values to proper units. - if (gc_block.modal.units == UNITS_MODE_INCHES) { - for (idx=0; idx 0.005) { - if (delta_r > 0.5) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Arc definition error] > 0.5mm - if (delta_r > (0.001*gc_block.values.r)) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Arc definition error] > 0.005mm AND 0.1% radius - } - } - break; - case MOTION_MODE_PROBE_TOWARD: case MOTION_MODE_PROBE_TOWARD_NO_ERROR: - case MOTION_MODE_PROBE_AWAY: case MOTION_MODE_PROBE_AWAY_NO_ERROR: - // [G38 Errors]: Target is same current. No axis words. Cutter compensation is enabled. Feed rate - // is undefined. Probe is triggered. NOTE: Probe check moved to probe cycle. Instead of returning - // an error, it issues an alarm to prevent further motion to the probe. It's also done there to - // allow the planner buffer to empty and move off the probe trigger before another probing cycle. - if (!axis_words) { FAIL(STATUS_GCODE_NO_AXIS_WORDS); } // [No axis words] - if (gc_check_same_position(gc_state.position, gc_block.values.xyz)) { FAIL(STATUS_GCODE_INVALID_TARGET); } // [Invalid target] - break; - } - } - } - - // [21. Program flow ]: No error checks required. - - // [0. Non-specific error-checks]: Complete unused value words check, i.e. IJK used when in arc - // radius mode, or axis words that aren't used in the block. - bit_false(value_words,(bit(WORD_N)|bit(WORD_F)|bit(WORD_S)|bit(WORD_T))); // Remove single-meaning value words. - if (axis_command) { bit_false(value_words,(bit(WORD_X)|bit(WORD_Y)|bit(WORD_Z))); } // Remove axis words. - if (value_words) { FAIL(STATUS_GCODE_UNUSED_WORDS); } // [Unused words] - - - /* ------------------------------------------------------------------------------------- - STEP 4: EXECUTE!! - Assumes that all error-checking has been completed and no failure modes exist. We just - need to update the state and execute the block according to the order-of-execution. - */ - - // [0. Non-specific/common error-checks and miscellaneous setup]: - gc_state.line_number = gc_block.values.n; - - // [1. Comments feedback ]: NOT SUPPORTED - - // [2. Set feed rate mode ]: - gc_state.modal.feed_rate = gc_block.modal.feed_rate; - - // [3. Set feed rate ]: - gc_state.feed_rate = gc_block.values.f; // Always copy this value. See feed rate error-checking. - - // [4. Set spindle speed ]: - if (gc_state.spindle_speed != gc_block.values.s) { - // Update running spindle only if not in check mode and not already enabled. - if (gc_state.modal.spindle != SPINDLE_DISABLE) { spindle_run(gc_state.modal.spindle, gc_block.values.s); } - gc_state.spindle_speed = gc_block.values.s; - } - - // [5. Select tool ]: NOT SUPPORTED. Only tracks tool value. - gc_state.tool = gc_block.values.t; - - // [6. Change tool ]: NOT SUPPORTED - - // [7. Spindle control ]: - if (gc_state.modal.spindle != gc_block.modal.spindle) { - // Update spindle control and apply spindle speed when enabling it in this block. - spindle_run(gc_block.modal.spindle, gc_state.spindle_speed); - gc_state.modal.spindle = gc_block.modal.spindle; - } - - // [8. Coolant control ]: - if (gc_state.modal.coolant != gc_block.modal.coolant) { - coolant_run(gc_block.modal.coolant); - gc_state.modal.coolant = gc_block.modal.coolant; - } - - // [9. Enable/disable feed rate or spindle overrides ]: NOT SUPPORTED - - // [10. Dwell ]: - if (gc_block.non_modal_command == NON_MODAL_DWELL) { mc_dwell(gc_block.values.p); } - - // [11. Set active plane ]: - gc_state.modal.plane_select = gc_block.modal.plane_select; - - // [12. Set length units ]: - gc_state.modal.units = gc_block.modal.units; - - // [13. Cutter radius compensation ]: G41/42 NOT SUPPORTED - // gc_state.modal.cutter_comp = gc_block.modal.cutter_comp; // NOTE: Not needed since always disabled. - - // [14. Cutter length compensation ]: G43.1 and G49 supported. G43 NOT SUPPORTED. - // NOTE: If G43 were supported, its operation wouldn't be any different from G43.1 in terms - // of execution. The error-checking step would simply load the offset value into the correct - // axis of the block XYZ value array. - if (axis_command == AXIS_COMMAND_TOOL_LENGTH_OFFSET ) { // Indicates a change. - gc_state.modal.tool_length = gc_block.modal.tool_length; - if (gc_state.modal.tool_length == TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC) { // G43.1 - gc_state.tool_length_offset = gc_block.values.xyz[TOOL_LENGTH_OFFSET_AXIS]; - } else { // G49 - gc_state.tool_length_offset = 0.0; - } - } - - // [15. Coordinate system selection ]: - if (gc_state.modal.coord_select != gc_block.modal.coord_select) { - gc_state.modal.coord_select = gc_block.modal.coord_select; - memcpy(gc_state.coord_system,coordinate_data,sizeof(coordinate_data)); - } - - // [16. Set path control mode ]: G61.1/G64 NOT SUPPORTED - // gc_state.modal.control = gc_block.modal.control; // NOTE: Always default. - - // [17. Set distance mode ]: - gc_state.modal.distance = gc_block.modal.distance; - - // [18. Set retract mode ]: NOT SUPPORTED - - // [19. Go to predefined position, Set G10, or Set axis offsets ]: - - uint8_t rtn_res = (uint8_t)STATUS_OK; - switch(gc_block.non_modal_command) { - case NON_MODAL_SET_COORDINATE_DATA: - settings_write_coord_data(coord_select,parameter_data); - // Update system coordinate system if currently active. - if (gc_state.modal.coord_select == coord_select) { memcpy(gc_state.coord_system,parameter_data,sizeof(parameter_data)); } - break; - case NON_MODAL_GO_HOME_0: case NON_MODAL_GO_HOME_1: - // Move to intermediate position before going home. Obeys current coordinate system and offsets - // and absolute and incremental modes. - if (axis_command) { - #ifdef USE_LINE_NUMBERS - rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, false, gc_state.line_number); - #else - rtn_res= (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, false); - #endif - } - #ifdef USE_LINE_NUMBERS - rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, parameter_data, gc_state.feed_rate, false, gc_state.line_number); - #else - rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, parameter_data, gc_state.feed_rate, false); - #endif - memcpy(gc_state.position, parameter_data, sizeof(parameter_data)); - break; - case NON_MODAL_SET_HOME_0: - settings_write_coord_data(SETTING_INDEX_G28,gc_state.position); - break; - case NON_MODAL_SET_HOME_1: - settings_write_coord_data(SETTING_INDEX_G30,gc_state.position); - break; - case NON_MODAL_SET_COORDINATE_OFFSET: - memcpy(gc_state.coord_offset,gc_block.values.xyz,sizeof(gc_block.values.xyz)); - break; - case NON_MODAL_RESET_COORDINATE_OFFSET: - clear_vector(gc_state.coord_offset); // Disable G92 offsets by zeroing offset vector. - break; - } - - - // [20. Motion modes ]: - // NOTE: Commands G10,G28,G30,G92 lock out and prevent axis words from use in motion modes. - // Enter motion modes only if there are axis words or a motion mode command word in the block. - gc_state.modal.motion = gc_block.modal.motion; - if (gc_state.modal.motion != MOTION_MODE_NONE) { - if (axis_command == AXIS_COMMAND_MOTION_MODE) { - switch (gc_state.modal.motion) { - case MOTION_MODE_SEEK: - #ifdef USE_LINE_NUMBERS - rtn_res = (uint8_t)mc_line(MOTION_MODE_SEEK, gc_block.values.xyz, gc_state.feed_rate, false, gc_state.line_number); - #else - rtn_res = (uint8_t)mc_line(MOTION_MODE_SEEK, gc_block.values.xyz, gc_state.feed_rate, false); - #endif - break; - case MOTION_MODE_LINEAR: - #ifdef USE_LINE_NUMBERS - rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR, gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, gc_state.line_number); - #else - rtn_res = (uint8_t)mc_line(MOTION_MODE_LINEAR,gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate); - #endif - break; - case MOTION_MODE_CW_ARC: - #ifdef USE_LINE_NUMBERS - mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, - gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, true, gc_state.line_number); - #else - mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, - gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, true); - #endif - break; - case MOTION_MODE_CCW_ARC: - #ifdef USE_LINE_NUMBERS - mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, - gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, false, gc_state.line_number); - #else - mc_arc(gc_state.position, gc_block.values.xyz, gc_block.values.ijk, gc_block.values.r, - gc_state.feed_rate, gc_state.modal.feed_rate, axis_0, axis_1, axis_linear, false); - #endif - break; - case MOTION_MODE_PROBE_TOWARD: - // NOTE: gc_block.values.xyz is returned from mc_probe_cycle with the updated position value. So - // upon a successful probing cycle, the machine position and the returned value should be the same. - #ifdef USE_LINE_NUMBERS - mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, false, gc_state.line_number); - #else - mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, false); - #endif - break; - case MOTION_MODE_PROBE_TOWARD_NO_ERROR: - #ifdef USE_LINE_NUMBERS - mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, true, gc_state.line_number); - #else - mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, false, true); - #endif - break; - case MOTION_MODE_PROBE_AWAY: - #ifdef USE_LINE_NUMBERS - mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, false, gc_state.line_number); - #else - mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, false); - #endif - break; - case MOTION_MODE_PROBE_AWAY_NO_ERROR: - #ifdef USE_LINE_NUMBERS - mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, true, gc_state.line_number); - #else - mc_probe_cycle(gc_block.values.xyz, gc_state.feed_rate, gc_state.modal.feed_rate, true, true); - #endif - } - - // As far as the parser is concerned, the position is now == target. In reality the - // motion control system might still be processing the action and the real tool position - // in any intermediate location. - memcpy(gc_state.position, gc_block.values.xyz, sizeof(gc_block.values.xyz)); // gc_state.position[] = gc_block.values.xyz[] - } - } - - // [21. Program flow ]: - // M0,M1,M2,M30: Perform non-running program flow actions. During a program pause, the buffer may - // refill and can only be resumed by the cycle start run-time command. - gc_state.modal.program_flow = gc_block.modal.program_flow; - if (gc_state.modal.program_flow) { - protocol_buffer_synchronize(); // Sync and finish all remaining buffered motions before moving on. - if (gc_state.modal.program_flow == PROGRAM_FLOW_PAUSED) { - if (sys.state != STATE_CHECK_MODE) { - bit_true_atomic(sys_rt_exec_state, EXEC_FEED_HOLD); // Use feed hold for program pause. - protocol_execute_realtime(); // Execute suspend. - } - } else { // == PROGRAM_FLOW_COMPLETED - // Upon program complete, only a subset of g-codes reset to certain defaults, according to - // LinuxCNC's program end descriptions and testing. Only modal groups [G-code 1,2,3,5,7,12] - // and [M-code 7,8,9] reset to [G1,G17,G90,G94,G40,G54,M5,M9,M48]. The remaining modal groups - // [G-code 4,6,8,10,13,14,15] and [M-code 4,5,6] and the modal words [F,S,T,H] do not reset. - gc_state.modal.motion = MOTION_MODE_LINEAR; - gc_state.modal.plane_select = PLANE_SELECT_XY; - gc_state.modal.distance = DISTANCE_MODE_ABSOLUTE; - gc_state.modal.feed_rate = FEED_RATE_MODE_UNITS_PER_MIN; - // gc_state.modal.cutter_comp = CUTTER_COMP_DISABLE; // Not supported. - gc_state.modal.coord_select = 0; // G54 - gc_state.modal.spindle = SPINDLE_DISABLE; - gc_state.modal.coolant = COOLANT_DISABLE; - // gc_state.modal.override = OVERRIDE_DISABLE; // Not supported. - - // Execute coordinate change and spindle/coolant stop. - if (sys.state != STATE_CHECK_MODE) { - if (!(settings_read_coord_data(gc_state.modal.coord_select,coordinate_data))) { FAIL(STATUS_SETTING_READ_FAIL); } - memcpy(gc_state.coord_system,coordinate_data,sizeof(coordinate_data)); - spindle_stop(); - coolant_stop(); - } - - report_feedback_message(MESSAGE_PROGRAM_END); - } - gc_state.modal.program_flow = PROGRAM_FLOW_RUNNING; // Reset program flow. - } - - // TODO: % to denote start of program. - return (rtn_res); -} - - -/* - Not supported: - - - Canned cycles - - Tool radius compensation - - A,B,C-axes - - Evaluation of expressions - - Variables - - Override control (TBD) - - Tool changes - - Switches - - (*) Indicates optional parameter, enabled through config.h and re-compile - group 0 = {G92.2, G92.3} (Non modal: Cancel and re-enable G92 offsets) - group 1 = {G81 - G89} (Motion modes: Canned cycles) - group 4 = {M1} (Optional stop, ignored) - group 6 = {M6} (Tool change) - group 7 = {G41, G42} cutter radius compensation (G40 is supported) - group 8 = {G43} tool length offset (G43.1/G49 are supported) - group 8 = {*M7} enable mist coolant (* Compile-option) - group 9 = {M48, M49} enable/disable feed and speed override switches - group 10 = {G98, G99} return mode canned cycles - group 13 = {G61.1, G64} path control mode (G61 is supported) -*/ diff --git a/Source code/gcode.h b/Source code/gcode.h deleted file mode 100755 index 9a289af..0000000 --- a/Source code/gcode.h +++ /dev/null @@ -1,212 +0,0 @@ -/* - gcode.h - rs274/ngc parser. - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef gcode_h -#define gcode_h - - -// Define modal group internal numbers for checking multiple command violations and tracking the -// type of command that is called in the block. A modal group is a group of g-code commands that are -// mutually exclusive, or cannot exist on the same line, because they each toggle a state or execute -// a unique motion. These are defined in the NIST RS274-NGC v3 g-code standard, available online, -// and are similar/identical to other g-code interpreters by manufacturers (Haas,Fanuc,Mazak,etc). -// NOTE: Modal group define values must be sequential and starting from zero. -#define MODAL_GROUP_G0 0 // [G4,G10,G28,G28.1,G30,G30.1,G53,G92,G92.1] Non-modal -#define MODAL_GROUP_G1 1 // [G0,G1,G2,G3,G38.2,G38.3,G38.4,G38.5,G80] Motion -#define MODAL_GROUP_G2 2 // [G17,G18,G19] Plane selection -#define MODAL_GROUP_G3 3 // [G90,G91] Distance mode -#define MODAL_GROUP_G4 4 // [G91.1] Arc IJK distance mode -#define MODAL_GROUP_G5 5 // [G93,G94] Feed rate mode -#define MODAL_GROUP_G6 6 // [G20,G21] Units -#define MODAL_GROUP_G7 7 // [G40] Cutter radius compensation mode. G41/42 NOT SUPPORTED. -#define MODAL_GROUP_G8 8 // [G43.1,G49] Tool length offset -#define MODAL_GROUP_G12 9 // [G54,G55,G56,G57,G58,G59] Coordinate system selection -#define MODAL_GROUP_G13 10 // [G61] Control mode - -#define MODAL_GROUP_M4 11 // [M0,M1,M2,M30] Stopping -#define MODAL_GROUP_M7 12 // [M3,M4,M5] Spindle turning -#define MODAL_GROUP_M8 13 // [M7,M8,M9] Coolant control - -// #define OTHER_INPUT_F 14 -// #define OTHER_INPUT_S 15 -// #define OTHER_INPUT_T 16 - -// Define command actions for within execution-type modal groups (motion, stopping, non-modal). Used -// internally by the parser to know which command to execute. - -// Modal Group G0: Non-modal actions -#define NON_MODAL_NO_ACTION 0 // (Default: Must be zero) -#define NON_MODAL_DWELL 1 // G4 -#define NON_MODAL_SET_COORDINATE_DATA 2 // G10 -#define NON_MODAL_GO_HOME_0 3 // G28 -#define NON_MODAL_SET_HOME_0 4 // G28.1 -#define NON_MODAL_GO_HOME_1 5 // G30 -#define NON_MODAL_SET_HOME_1 6 // G30.1 -#define NON_MODAL_ABSOLUTE_OVERRIDE 7 // G53 -#define NON_MODAL_SET_COORDINATE_OFFSET 8 // G92 -#define NON_MODAL_RESET_COORDINATE_OFFSET 9 //G92.1 - -// Modal Group G1: Motion modes -#define MOTION_MODE_SEEK 0 // G0 (Default: Must be zero) -#define MOTION_MODE_LINEAR 1 // G1 -#define MOTION_MODE_CW_ARC 2 // G2 -#define MOTION_MODE_CCW_ARC 3 // G3 -#define MOTION_MODE_PROBE_TOWARD 4 // G38.2 NOTE: G38.2, G38.3, G38.4, G38.5 must be sequential. See report_gcode_modes(). -#define MOTION_MODE_PROBE_TOWARD_NO_ERROR 5 // G38.3 -#define MOTION_MODE_PROBE_AWAY 6 // G38.4 -#define MOTION_MODE_PROBE_AWAY_NO_ERROR 7 // G38.5 -#define MOTION_MODE_NONE 8 // G80 - -// Modal Group G2: Plane select -#define PLANE_SELECT_XY 0 // G17 (Default: Must be zero) -#define PLANE_SELECT_ZX 1 // G18 -#define PLANE_SELECT_YZ 2 // G19 - -// Modal Group G3: Distance mode -#define DISTANCE_MODE_ABSOLUTE 0 // G90 (Default: Must be zero) -#define DISTANCE_MODE_INCREMENTAL 1 // G91 - -// Modal Group G4: Arc IJK distance mode -#define DISTANCE_ARC_MODE_INCREMENTAL 0 // G91.1 (Default: Must be zero) - -// Modal Group M4: Program flow -#define PROGRAM_FLOW_RUNNING 0 // (Default: Must be zero) -#define PROGRAM_FLOW_PAUSED 1 // M0, M1 -#define PROGRAM_FLOW_COMPLETED 2 // M2, M30 - -// Modal Group G5: Feed rate mode -#define FEED_RATE_MODE_UNITS_PER_MIN 0 // G94 (Default: Must be zero) -#define FEED_RATE_MODE_INVERSE_TIME 1 // G93 - -// Modal Group G6: Units mode -#define UNITS_MODE_MM 0 // G21 (Default: Must be zero) -#define UNITS_MODE_INCHES 1 // G20 - -// Modal Group G7: Cutter radius compensation mode -#define CUTTER_COMP_DISABLE 0 // G40 (Default: Must be zero) - -// Modal Group G13: Control mode -#define CONTROL_MODE_EXACT_PATH 0 // G61 (Default: Must be zero) - -// Modal Group M7: Spindle control -#define SPINDLE_DISABLE 0 // M5 (Default: Must be zero) -#define SPINDLE_ENABLE_CW 1 // M3 -#define SPINDLE_ENABLE_CCW 2 // M4 - -// Modal Group M8: Coolant control -#define COOLANT_DISABLE 0 // M9 (Default: Must be zero) -#define COOLANT_MIST_ENABLE 1 // M7 -#define COOLANT_FLOOD_ENABLE 2 // M8 - -// Modal Group G8: Tool length offset -#define TOOL_LENGTH_OFFSET_CANCEL 0 // G49 (Default: Must be zero) -#define TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC 1 // G43.1 - -// Modal Group G12: Active work coordinate system -// N/A: Stores coordinate system value (54-59) to change to. - - -// Define parameter word mapping. -#define WORD_F 0 -#define WORD_I 1 -#define WORD_J 2 -#define WORD_K 3 -#define WORD_L 4 -#define WORD_N 5 -#define WORD_P 6 -#define WORD_R 7 -#define WORD_S 8 -#define WORD_T 9 -#define WORD_X 10 -#define WORD_Y 11 -#define WORD_Z 12 - - -// NOTE: When this struct is zeroed, the above defines set the defaults for the system. -typedef struct { - uint8_t motion; // {G0,G1,G2,G3,G38.2,G80} - uint8_t feed_rate; // {G93,G94} - uint8_t units; // {G20,G21} - uint8_t distance; // {G90,G91} - // uint8_t distance_arc; // {G91.1} NOTE: Don't track. Only default supported. - uint8_t plane_select; // {G17,G18,G19} - // uint8_t cutter_comp; // {G40} NOTE: Don't track. Only default supported. - uint8_t tool_length; // {G43.1,G49} - uint8_t coord_select; // {G54,G55,G56,G57,G58,G59} - // uint8_t control; // {G61} NOTE: Don't track. Only default supported. - uint8_t program_flow; // {M0,M1,M2,M30} - uint8_t coolant; // {M7,M8,M9} - uint8_t spindle; // {M3,M4,M5} -} gc_modal_t; - -typedef struct { - float f; // Feed - float ijk[3]; // I,J,K Axis arc offsets - uint8_t l; // G10 or canned cycles parameters - int32_t n; // Line number - float p; // G10 or dwell parameters - // float q; // G82 peck drilling - float r; // Arc radius - float s; // Spindle speed - uint8_t t; // Tool selection - float xyz[3]; // X,Y,Z Translational axes -} gc_values_t; - - -typedef struct { - gc_modal_t modal; - - float spindle_speed; // RPM - float feed_rate; // Millimeters/min - uint8_t tool; // Tracks tool number. NOT USED. - int32_t line_number; // Last line number sent - - float position[N_AXIS]; // Where the interpreter considers the tool to be at this point in the code - - float coord_system[N_AXIS]; // Current work coordinate system (G54+). Stores offset from absolute machine - // position in mm. Loaded from EEPROM when called. - float coord_offset[N_AXIS]; // Retains the G92 coordinate offset (work coordinates) relative to - // machine zero in mm. Non-persistent. Cleared upon reset and boot. - float tool_length_offset; // Tracks tool length offset value when enabled. -} parser_state_t; -extern parser_state_t gc_state; - -typedef struct { -// uint16_t command_words; // NOTE: If this bitflag variable fills, G and M words can be separated. -// uint16_t value_words; - - uint8_t non_modal_command; - gc_modal_t modal; - gc_values_t values; - -} parser_block_t; -extern parser_block_t gc_block; - -// Initialize the parser -void gc_init(); - -// Execute one block of rs275/ngc/g-code -uint8_t gc_execute_line(char *line); - -// Set g-code parser position. Input in steps. -void gc_sync_position(); - -#endif diff --git a/Source code/grbl.h b/Source code/grbl.h deleted file mode 100755 index 300f172..0000000 --- a/Source code/grbl.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - grbl.h - main Grbl include file - Part of Grbl - - Copyright (c) 2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef grbl_h -#define grbl_h - -// Grbl versioning system -#define GRBL_VERSION "0.9j" -#define GRBL_VERSION_BUILD "20160726" - -// Define standard libraries used by Grbl. -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Define the Grbl system include files. NOTE: Do not alter organization. -#include "config.h" -#include "nuts_bolts.h" -#include "settings.h" -#include "system.h" -#include "defaults.h" -#include "cpu_map.h" -#include "coolant_control.h" -#include "eeprom.h" -#include "gcode.h" -#include "limits.h" -#include "motion_control.h" -#include "planner.h" -#include "print.h" -#include "probe.h" -#include "protocol.h" -#include "report.h" -#include "serial.h" -#include "spindle_control.h" -#include "stepper.h" - -#endif diff --git a/Source code/grblUpload/grblUpload.ino b/Source code/grblUpload/grblUpload.ino deleted file mode 100755 index 8ac87a7..0000000 --- a/Source code/grblUpload/grblUpload.ino +++ /dev/null @@ -1,29 +0,0 @@ -/*********************************************************************** -This sketch compiles and uploads Grbl to your 328p-based Arduino! - -To use: -- First make sure you have imported Grbl source code into your Arduino - IDE. There are details on our Github website on how to do this. - -- Select your Arduino Board and Serial Port in the Tools drop-down menu. - NOTE: Grbl only officially supports 328p-based Arduinos, like the Uno. - Using other boards will likely not work! - -- Then just click 'Upload'. That's it! - -For advanced users: - If you'd like to see what else Grbl can do, there are some additional - options for customization and features you can enable or disable. - Navigate your file system to where the Arduino IDE has stored the Grbl - source code files, open the 'config.h' file in your favorite text - editor. Inside are dozens of feature descriptions and #defines. Simply - comment or uncomment the #defines or alter their assigned values, save - your changes, and then click 'Upload' here. - -Copyright (c) 2015 Sungeun K. Jeon -Released under the MIT-license. See license.txt for details. -***********************************************************************/ - -#include "grbl.h" - -// Do not alter this file! \ No newline at end of file diff --git a/Source code/limits.c b/Source code/limits.c deleted file mode 100755 index 7c3680a..0000000 --- a/Source code/limits.c +++ /dev/null @@ -1,370 +0,0 @@ -/* - limits.c - code pertaining to limit-switches and performing the homing cycle - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - - -// Homing axis search distance multiplier. Computed by this value times the cycle travel. -#ifndef HOMING_AXIS_SEARCH_SCALAR - #define HOMING_AXIS_SEARCH_SCALAR 1.5 // Must be > 1 to ensure limit switch will be engaged. -#endif -#ifndef HOMING_AXIS_LOCATE_SCALAR - #define HOMING_AXIS_LOCATE_SCALAR 5.0 // Must be > 1 to ensure limit switch is cleared. -#endif - -void limits_init() -{ - LIMIT_DDR &= ~(LIMIT_MASK); // Set as input pins - - #ifdef DISABLE_LIMIT_PIN_PULL_UP - LIMIT_PORT &= ~(LIMIT_MASK); // Normal low operation. Requires external pull-down. - #else - LIMIT_PORT |= (LIMIT_MASK); // Enable internal pull-up resistors. Normal high operation. - #endif - - if (bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)) { - LIMIT_PCMSK |= LIMIT_MASK; // Enable specific pins of the Pin Change Interrupt - PCICR |= (1 << LIMIT_INT); // Enable Pin Change Interrupt - } else { - limits_disable(); - } - - #ifdef ENABLE_SOFTWARE_DEBOUNCE - MCUSR &= ~(1< 0); - - // The active cycle axes should now be homed and machine limits have been located. By - // default, Grbl defines machine space as all negative, as do most CNCs. Since limit switches - // can be on either side of an axes, check and set axes machine zero appropriately. Also, - // set up pull-off maneuver from axes limit switches that have been homed. This provides - // some initial clearance off the switches and should also help prevent them from falsely - // triggering when hard limits are enabled or when more than one axes shares a limit pin. - int32_t set_axis_position; - // Set machine positions for homed limit switches. Don't update non-homed axes. - for (idx=0; idx -settings.max_travel[idx]) { sys.soft_limit = true; } - } else { - if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { sys.soft_limit = true; } - } - #else - // NOTE: max_travel is stored as negative - if (target[idx] > 0 || target[idx] < settings.max_travel[idx]) { sys.soft_limit = true; } - #endif - - if (sys.soft_limit) { - // Force feed hold if cycle is active. All buffered blocks are guaranteed to be within - // workspace volume so just come to a controlled stop so position is not lost. When complete - // enter alarm mode. - if (sys.state == STATE_CYCLE) { - bit_true_atomic(sys_rt_exec_state, EXEC_FEED_HOLD); - do { - protocol_execute_realtime(); - if (sys.abort) { return; } - } while ( sys.state != STATE_IDLE ); - } - - mc_reset(); // Issue system reset and ensure spindle and coolant are shutdown. - bit_true_atomic(sys_rt_exec_alarm, (EXEC_ALARM_SOFT_LIMIT|EXEC_CRITICAL_EVENT)); // Indicate soft limit critical event - protocol_execute_realtime(); // Execute to enter critical event loop and system abort - return; - } - } -} diff --git a/Source code/limits.h b/Source code/limits.h deleted file mode 100755 index 74512ce..0000000 --- a/Source code/limits.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - limits.h - code pertaining to limit-switches and performing the homing cycle - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef limits_h -#define limits_h - - -// Initialize the limits module -void limits_init(); - -// Disables hard limits. -void limits_disable(); - -// Returns limit state as a bit-wise uint8 variable. -uint8_t limits_get_state(); - -// Perform one portion of the homing cycle based on the input settings. -void limits_go_home(uint8_t cycle_mask); - -// Check for soft limit violations -void limits_soft_check(float *target); - -#endif \ No newline at end of file diff --git a/Source code/main.c b/Source code/main.c deleted file mode 100755 index b91079b..0000000 --- a/Source code/main.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - main.c - An embedded CNC Controller with rs274/ngc (g-code) support - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - - -// Declare system global variable structure -system_t sys; - -#include "uarm_swift.h" - - -int main(void) -{ - // Initialize system upon power-up. - serial_init(); // Setup serial baud rate and interrupts - settings_init(); // Load Grbl settings from EEPROM - stepper_init(); // Configure stepper pins and interrupt timers - system_init(); // Configure pinout pins and pin-change interrupt - - uarm_swift_init(); - - memset(&sys, 0, sizeof(system_t)); // Clear all system variables - sys.abort = true; // Set abort to complete initialization - sei(); // Enable interrupts - - // Check for power-up and set system alarm if homing is enabled to force homing cycle - // by setting Grbl's alarm state. Alarm locks out all g-code commands, including the - // startup scripts, but allows access to settings and internal commands. Only a homing - // cycle '$H' or kill alarm locks '$X' will disable the alarm. - // NOTE: The startup script will run after successful completion of the homing cycle, but - // not after disabling the alarm locks. Prevents motion startup blocks from crashing into - // things uncontrollably. Very bad. - #ifdef HOMING_INIT_LOCK - if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { sys.state = STATE_ALARM; } - #endif - - // Force Grbl into an ALARM state upon a power-cycle or hard reset. - #ifdef FORCE_INITIALIZATION_ALARM - sys.state = STATE_ALARM; - #endif - - // Grbl initialization loop upon power-up or a system abort. For the latter, all processes - // will return to this loop to be cleanly re-initialized. - for(;;) { - - // TODO: Separate configure task that require interrupts to be disabled, especially upon - // a system abort and ensuring any active interrupts are cleanly reset. - - // Reset Grbl primary systems. - serial_reset_read_buffer(); // Clear serial read buffer - gc_init(); // Set g-code parser to default state - spindle_init(); - coolant_init(); - limits_init(); - probe_init(); - plan_reset(); // Clear block buffer and planner variables - st_reset(); // Clear stepper subsystem variables. - - // Sync cleared gcode and planner positions to current system position. - plan_sync_position(); - gc_sync_position(); - - // Reset system variables. - sys.abort = false; - sys_rt_exec_state = 0; - sys_rt_exec_alarm = 0; - sys.suspend = false; - sys.soft_limit = false; - - // Start Grbl main loop. Processes program inputs and executes them. - protocol_main_loop(); - - } - return 0; /* Never reached */ -} - - - diff --git a/Source code/motion_control.c b/Source code/motion_control.c deleted file mode 100755 index 6636cab..0000000 --- a/Source code/motion_control.c +++ /dev/null @@ -1,446 +0,0 @@ -/* - motion_control.c - high level interface for issuing motion commands - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - Copyright (c) 2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" -#include "uarm_protocol.h" -#include "uarm_swift.h" -#include "uarm_coord_convert.h" - -// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second -// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in -// (1 minute)/feed_rate time. -// NOTE: This is the primary gateway to the grbl planner. All line motions, including arc line -// segments, must pass through this routine before being passed to the planner. The seperation of -// mc_line and plan_buffer_line is done primarily to place non-planner-type functions from being -// in the planner and to let backlash compensation or canned cycle integration simple and direct. -#ifdef USE_LINE_NUMBERS - uint8_t mc_line(uint8_t mode, float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number) -#else - uint8_t mc_line(uint8_t mode, float *target, float feed_rate, uint8_t invert_feed_rate) -#endif -{ - - // If enabled, check for soft limit violations. Placed here all line motions are picked up - // from everywhere in Grbl. - if (bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)) { limits_soft_check(target); } - - // If in check gcode mode, prevent motion by blocking planner. Soft limits still work. - if (sys.state == STATE_CHECK_MODE) { return; } - - // NOTE: Backlash compensation may be installed here. It will need direction info to track when - // to insert a backlash line motion(s) before the intended line motion and will require its own - // plan_check_full_buffer() and check for system abort loop. Also for position reporting - // backlash steps will need to be also tracked, which will need to be kept at a system level. - // There are likely some other things that will need to be tracked as well. However, we feel - // that backlash compensation should NOT be handled by Grbl itself, because there are a myriad - // of ways to implement it and can be effective or ineffective for different CNC machines. This - // would be better handled by the interface as a post-processor task, where the original g-code - // is translated and inserts backlash motions that best suits the machine. - // NOTE: Perhaps as a middle-ground, all that needs to be sent is a flag or special command that - // indicates to Grbl what is a backlash compensation motion, so that Grbl executes the move but - // doesn't update the machine position values. Since the position values used by the g-code - // parser and planner are separate from the system machine positions, this is doable. - - // If the buffer is full: good! That means we are well ahead of the robot. - // Remain in this loop until there is room in the buffer. - unsigned int divide_numbers = 0; - float current_coord[3]; - float final_angle[3]; - - float x= target[X_AXIS], y= target[Y_AXIS], z = target[Z_AXIS]; - - coord_effect2arm( &x, &y, &z ); // calculate the effect offset - coord_to_angle( x, y, z, - &final_angle[X_AXIS], &final_angle[Y_AXIS], &final_angle[Z_AXIS] ); // calculate final angle - -/* char l_str[20], r_str[20], b_str[20]; - dtostrf( final_angle[X_AXIS], 5, 4, l_str ); - dtostrf( final_angle[Y_AXIS], 5, 4, r_str ); - dtostrf( final_angle[Z_AXIS], 5, 4, b_str ); - - DB_PRINT_STR( "final_angle: %s, %s, %s\r\n", l_str, r_str, b_str ); */ - - if( is_angle_legal( final_angle[X_AXIS], final_angle[Y_AXIS], final_angle[Z_AXIS] ) == false ){ // check the angle - //DB_PRINT_STR( "E22 position cnan't reach\n" ); - //uarm.coord_error_flag = true; - return UARM_COORD_ERROR; - } - - step_to_coord( uarm.target_step[X_AXIS], uarm.target_step[Y_AXIS], uarm.target_step[Z_AXIS], - ¤t_coord[X_AXIS], ¤t_coord[Y_AXIS], ¤t_coord[Z_AXIS]); // calculate the current coord - settings_init(); - switch( mode ){ - case MOTION_MODE_SEEK: // 100 ){ feed_rate = 100; } - divide_numbers = sqrt((x - current_coord[X_AXIS])*(x - current_coord[X_AXIS]) + // unit is mm - (y - current_coord[Y_AXIS])*(y - current_coord[Y_AXIS]) + - (z - current_coord[Z_AXIS])*(z - current_coord[Z_AXIS])) * 30 / feed_rate; - - if( divide_numbers < 10 ){ divide_numbers = 10; } - - float accel = (0.005+feed_rate*0.02); - settings.acceleration[X_AXIS] = accel * 60 * 60; - settings.acceleration[Y_AXIS] = accel * 60 * 60; - settings.acceleration[Z_AXIS] = accel * 60 * 60; - if( settings.acceleration[Z_AXIS] >= 1.3*60*60 ){ - settings.acceleration[Z_AXIS] = 1.3 * 60 * 60; - } - break; - } - -// DB_PRINT_STR( "divide num : %d\r\n", divide_numbers ); - float delta_coord[3]; - delta_coord[X_AXIS] = (x - current_coord[X_AXIS]) / divide_numbers; // calculate delta coord - delta_coord[Y_AXIS] = (y - current_coord[Y_AXIS]) / divide_numbers; - delta_coord[Z_AXIS] = (z - current_coord[Z_AXIS]) / divide_numbers; - - float final_coord[3]; - float final_step[3]; - for( int i = 1; i <= divide_numbers; i++ ){ - final_coord[X_AXIS] = current_coord[X_AXIS] + delta_coord[X_AXIS] * i; - final_coord[Y_AXIS] = current_coord[Y_AXIS] + delta_coord[Y_AXIS] * i; - final_coord[Z_AXIS] = current_coord[Z_AXIS] + delta_coord[Z_AXIS] * i; - - uarm.coord_x = final_coord[X_AXIS]; - uarm.coord_y = final_coord[Y_AXIS]; - uarm.coord_z = final_coord[Z_AXIS]; - - coord_to_step( final_coord[X_AXIS], final_coord[Y_AXIS], final_coord[Z_AXIS], - &final_step[X_AXIS], &final_step[Y_AXIS], &final_step[Z_AXIS] ); - do { - protocol_execute_realtime(); // Check for any run-time commands - //report_parse_result(); - if (sys.abort) { return UARM_SYS_ABORT; } // Bail, if system abort. - if ( plan_check_full_buffer() ) { protocol_auto_cycle_start(); } // Auto-cycle start when buffer is full. - else { break; } - } while (1); - - uarm.target_step[X_AXIS] = final_step[X_AXIS]; - uarm.target_step[Y_AXIS] = final_step[Y_AXIS]; - uarm.target_step[Z_AXIS] = final_step[Z_AXIS]; - - final_step[X_AXIS] = (final_step[X_AXIS]) / (settings.steps_per_mm[X_AXIS]); - final_step[Y_AXIS] = (final_step[Y_AXIS]) / (settings.steps_per_mm[Y_AXIS]); - final_step[Z_AXIS] = (final_step[Z_AXIS]) / (settings.steps_per_mm[Z_AXIS]); - - plan_buffer_line(final_step, feed_rate, invert_feed_rate); - - //DB_PRINT_STR( "%d %d %d\r\n", final_step[X_AXIS], final_step[Y_AXIS], final_step[Z_AXIS] ); - uarm.run_flag = true; - - } - return STATUS_OK; -} - - -// Execute an arc in offset mode format. position == current xyz, target == target xyz, -// offset == offset from current xyz, axis_X defines circle plane in tool space, axis_linear is -// the direction of helical travel, radius == circle radius, isclockwise boolean. Used -// for vector transformation direction. -// The arc is approximated by generating a huge number of tiny, linear segments. The chordal tolerance -// of each segment is configured in settings.arc_tolerance, which is defined to be the maximum normal -// distance from segment to the circle when the end points both lie on the circle. -#ifdef USE_LINE_NUMBERS - void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, - uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc, int32_t line_number) -#else - void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, - uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc) -#endif -{ - float center_axis0 = position[axis_0] + offset[axis_0]; - float center_axis1 = position[axis_1] + offset[axis_1]; - float r_axis0 = -offset[axis_0]; // Radius vector from center to current location - float r_axis1 = -offset[axis_1]; - float rt_axis0 = target[axis_0] - center_axis0; - float rt_axis1 = target[axis_1] - center_axis1; - - // CCW angle between position and target from circle center. Only one atan2() trig computation required. - float angular_travel = atan2(r_axis0*rt_axis1-r_axis1*rt_axis0, r_axis0*rt_axis0+r_axis1*rt_axis1); - if (is_clockwise_arc) { // Correct atan2 output per direction - if (angular_travel >= -ARC_ANGULAR_TRAVEL_EPSILON) { angular_travel -= 2*M_PI; } - } else { - if (angular_travel <= ARC_ANGULAR_TRAVEL_EPSILON) { angular_travel += 2*M_PI; } - } - - // NOTE: Segment end points are on the arc, which can lead to the arc diameter being smaller by up to - // (2x) settings.arc_tolerance. For 99% of users, this is just fine. If a different arc segment fit - // is desired, i.e. least-squares, midpoint on arc, just change the mm_per_arc_segment calculation. - // For the intended uses of Grbl, this value shouldn't exceed 2000 for the strictest of cases. - uint16_t segments = floor(fabs(0.5*angular_travel*radius)/ - sqrt(settings.arc_tolerance*(2*radius - settings.arc_tolerance)) ); - - if (segments) { - // Multiply inverse feed_rate to compensate for the fact that this movement is approximated - // by a number of discrete segments. The inverse feed_rate should be correct for the sum of - // all segments. - if (invert_feed_rate) { feed_rate *= segments; } - - float theta_per_segment = angular_travel/segments; - float linear_per_segment = (target[axis_linear] - position[axis_linear])/segments; - - /* Vector rotation by transformation matrix: r is the original vector, r_T is the rotated vector, - and phi is the angle of rotation. Solution approach by Jens Geisler. - r_T = [cos(phi) -sin(phi); - sin(phi) cos(phi] * r ; - - For arc generation, the center of the circle is the axis of rotation and the radius vector is - defined from the circle center to the initial position. Each line segment is formed by successive - vector rotations. Single precision values can accumulate error greater than tool precision in rare - cases. So, exact arc path correction is implemented. This approach avoids the problem of too many very - expensive trig operations [sin(),cos(),tan()] which can take 100-200 usec each to compute. - - Small angle approximation may be used to reduce computation overhead further. A third-order approximation - (second order sin() has too much error) holds for most, if not, all CNC applications. Note that this - approximation will begin to accumulate a numerical drift error when theta_per_segment is greater than - ~0.25 rad(14 deg) AND the approximation is successively used without correction several dozen times. This - scenario is extremely unlikely, since segment lengths and theta_per_segment are automatically generated - and scaled by the arc tolerance setting. Only a very large arc tolerance setting, unrealistic for CNC - applications, would cause this numerical drift error. However, it is best to set N_ARC_CORRECTION from a - low of ~4 to a high of ~20 or so to avoid trig operations while keeping arc generation accurate. - - This approximation also allows mc_arc to immediately insert a line segment into the planner - without the initial overhead of computing cos() or sin(). By the time the arc needs to be applied - a correction, the planner should have caught up to the lag caused by the initial mc_arc overhead. - This is important when there are successive arc motions. - */ - // Computes: cos_T = 1 - theta_per_segment^2/2, sin_T = theta_per_segment - theta_per_segment^3/6) in ~52usec - float cos_T = 2.0 - theta_per_segment*theta_per_segment; - float sin_T = theta_per_segment*0.16666667*(cos_T + 4.0); - cos_T *= 0.5; - - float sin_Ti; - float cos_Ti; - float r_axisi; - uint16_t i; - uint8_t count = 0; - - for (i = 1; i 0) { - // NOTE: Check and execute realtime commands during dwell every <= DWELL_TIME_STEP milliseconds. - protocol_execute_realtime(); - if (sys.abort) { return; } - _delay_ms(DWELL_TIME_STEP); // Delay DWELL_TIME_STEP increment - } -} - - -// Perform homing cycle to locate and set machine zero. Only '$H' executes this command. -// NOTE: There should be no motions in the buffer and Grbl must be in an idle state before -// executing the homing cycle. This prevents incorrect buffered plans after homing. -void mc_homing_cycle() -{ - // Check and abort homing cycle, if hard limits are already enabled. Helps prevent problems - // with machines with limits wired on both ends of travel to one limit pin. - // TODO: Move the pin-specific LIMIT_PIN call to limits.c as a function. - #ifdef LIMITS_TWO_SWITCHES_ON_AXES - if (limits_get_state()) { - mc_reset(); // Issue system reset and ensure spindle and coolant are shutdown. - bit_true_atomic(sys_rt_exec_alarm, (EXEC_ALARM_HARD_LIMIT|EXEC_CRITICAL_EVENT)); - return; - } - #endif - - limits_disable(); // Disable hard limits pin change register for cycle duration - - // ------------------------------------------------------------------------------------- - // Perform homing routine. NOTE: Special motion case. Only system reset works. - - // Search to engage all axes limit switches at faster homing seek rate. - limits_go_home(HOMING_CYCLE_0); // Homing cycle 0 - #ifdef HOMING_CYCLE_1 - limits_go_home(HOMING_CYCLE_1); // Homing cycle 1 - #endif - #ifdef HOMING_CYCLE_2 - limits_go_home(HOMING_CYCLE_2); // Homing cycle 2 - #endif - - protocol_execute_realtime(); // Check for reset and set system abort. - if (sys.abort) { return; } // Did not complete. Alarm state set by mc_alarm. - - // Homing cycle complete! Setup system for normal operation. - // ------------------------------------------------------------------------------------- - - // Gcode parser position was circumvented by the limits_go_home() routine, so sync position now. - gc_sync_position(); - - // If hard limits feature enabled, re-enable hard limits pin change register after homing cycle. - limits_init(); -} - - -// Perform tool length probe cycle. Requires probe switch. -// NOTE: Upon probe failure, the program will be stopped and placed into ALARM state. -#ifdef USE_LINE_NUMBERS - void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, - uint8_t is_no_error, int32_t line_number) -#else - void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, - uint8_t is_no_error) -#endif -{ - // TODO: Need to update this cycle so it obeys a non-auto cycle start. - if (sys.state == STATE_CHECK_MODE) { return; } - - // Finish all queued commands and empty planner buffer before starting probe cycle. - protocol_buffer_synchronize(); - - // Initialize probing control variables - sys.probe_succeeded = false; // Re-initialize probe history before beginning cycle. - probe_configure_invert_mask(is_probe_away); - - // After syncing, check if probe is already triggered. If so, halt and issue alarm. - // NOTE: This probe initialization error applies to all probing cycles. - if ( probe_get_state() ) { // Check probe pin state. - bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_PROBE_FAIL); - protocol_execute_realtime(); - } - if (sys.abort) { return; } // Return if system reset has been issued. - - // Setup and queue probing motion. Auto cycle-start should not start the cycle. - #ifdef USE_LINE_NUMBERS - mc_line(1, target, feed_rate, invert_feed_rate, line_number); - #else - mc_line(1, target, feed_rate, invert_feed_rate); - #endif - - // Activate the probing state monitor in the stepper module. - sys_probe_state = PROBE_ACTIVE; - - // Perform probing cycle. Wait here until probe is triggered or motion completes. - bit_true_atomic(sys_rt_exec_state, EXEC_CYCLE_START); - do { - protocol_execute_realtime(); - if (sys.abort) { return; } // Check for system abort - } while (sys.state != STATE_IDLE); - - // Probing cycle complete! - - // Set state variables and error out, if the probe failed and cycle with error is enabled. - if (sys_probe_state == PROBE_ACTIVE) { - if (is_no_error) { memcpy(sys.probe_position, sys.position, sizeof(float)*N_AXIS); } - else { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_PROBE_FAIL); } - } else { - sys.probe_succeeded = true; // Indicate to system the probing cycle completed successfully. - } - sys_probe_state = PROBE_OFF; // Ensure probe state monitor is disabled. - protocol_execute_realtime(); // Check and execute run-time commands - if (sys.abort) { return; } // Check for system abort - - // Reset the stepper and planner buffers to remove the remainder of the probe motion. - st_reset(); // Reest step segment buffer. - plan_reset(); // Reset planner buffer. Zero planner positions. Ensure probing motion is cleared. - plan_sync_position(); // Sync planner position to current machine position. - - // TODO: Update the g-code parser code to not require this target calculation but uses a gc_sync_position() call. - // NOTE: The target[] variable updated here will be sent back and synced with the g-code parser. - system_convert_array_steps_to_mpos(target, sys.position); - - #ifdef MESSAGE_PROBE_COORDINATES - // All done! Output the probe position as message. - report_probe_parameters(); - #endif -} - - -// Method to ready the system to reset by setting the realtime reset command and killing any -// active processes in the system. This also checks if a system reset is issued while Grbl -// is in a motion state. If so, kills the steppers and sets the system alarm to flag position -// lost, since there was an abrupt uncontrolled deceleration. Called at an interrupt level by -// realtime abort command and hard limits. So, keep to a minimum. -void mc_reset() -{ - // Only this function can set the system reset. Helps prevent multiple kill calls. - if (bit_isfalse(sys_rt_exec_state, EXEC_RESET)) { - bit_true_atomic(sys_rt_exec_state, EXEC_RESET); - - // Kill spindle and coolant. - spindle_stop(); - coolant_stop(); - - // Kill steppers only if in any motion state, i.e. cycle, actively holding, or homing. - // NOTE: If steppers are kept enabled via the step idle delay setting, this also keeps - // the steppers enabled by avoiding the go_idle call altogether, unless the motion state is - // violated, by which, all bets are off. - if ((sys.state & (STATE_CYCLE | STATE_HOMING)) || (sys.suspend == SUSPEND_ENABLE_HOLD)) { - if (sys.state == STATE_HOMING) { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_HOMING_FAIL); } - else { bit_true_atomic(sys_rt_exec_alarm, EXEC_ALARM_ABORT_CYCLE); } - st_go_idle(); // Force kill steppers. Position has likely been lost. - } - } -} - diff --git a/Source code/motion_control.h b/Source code/motion_control.h deleted file mode 100755 index 2bb3ae5..0000000 --- a/Source code/motion_control.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - motion_control.h - high level interface for issuing motion commands - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef motion_control_h -#define motion_control_h - - -#define HOMING_CYCLE_LINE_NUMBER -1 - -// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second -// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in -// (1 minute)/feed_rate time. -#ifdef USE_LINE_NUMBERS -uint8_t mc_line(uint8_t mode,float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number); -#else -uint8_t mc_line(uint8_t mode,float *target, float feed_rate, uint8_t invert_feed_rate); -#endif - -// Execute an arc in offset mode format. position == current xyz, target == target xyz, -// offset == offset from current xyz, axis_XXX defines circle plane in tool space, axis_linear is -// the direction of helical travel, radius == circle radius, is_clockwise_arc boolean. Used -// for vector transformation direction. -#ifdef USE_LINE_NUMBERS -void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, - uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc, int32_t line_number); -#else -void mc_arc(float *position, float *target, float *offset, float radius, float feed_rate, - uint8_t invert_feed_rate, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc); -#endif - -// Dwell for a specific number of seconds -void mc_dwell(float seconds); - -// Perform homing cycle to locate machine zero. Requires limit switches. -void mc_homing_cycle(); - -// Perform tool length probe cycle. Requires probe switch. -#ifdef USE_LINE_NUMBERS -void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, - uint8_t is_no_error, int32_t line_number); -#else -void mc_probe_cycle(float *target, float feed_rate, uint8_t invert_feed_rate, uint8_t is_probe_away, - uint8_t is_no_error); -#endif - -// Performs system reset. If in motion state, kills all motion and sets system alarm. -void mc_reset(); -#endif diff --git a/Source code/nuts_bolts.c b/Source code/nuts_bolts.c deleted file mode 100755 index 328af84..0000000 --- a/Source code/nuts_bolts.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - nuts_bolts.c - Shared functions - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - - -#define MAX_INT_DIGITS 8 // Maximum number of digits in int32 (and float) - - -// Extracts a floating point value from a string. The following code is based loosely on -// the avr-libc strtod() function by Michael Stumpf and Dmitry Xmelkov and many freely -// available conversion method examples, but has been highly optimized for Grbl. For known -// CNC applications, the typical decimal value is expected to be in the range of E0 to E-4. -// Scientific notation is officially not supported by g-code, and the 'E' character may -// be a g-code word on some CNC systems. So, 'E' notation will not be recognized. -// NOTE: Thanks to Radu-Eosif Mihailescu for identifying the issues with using strtod(). -uint8_t read_float(char *line, uint8_t *char_counter, float *float_ptr) -{ - char *ptr; - if( char_counter == NULL ){ - ptr = line; - }else{ - ptr = line + *char_counter; - } - unsigned char c; - - // Grab first character and increment pointer. No spaces assumed in line. - c = *ptr++; - - // Capture initial positive/minus character - bool isnegative = false; - if (c == '-') { - isnegative = true; - c = *ptr++; - } else if (c == '+') { - c = *ptr++; - } - - // Extract number into fast integer. Track decimal in terms of exponent value. - uint32_t intval = 0; - int8_t exp = 0; - uint8_t ndigit = 0; - bool isdecimal = false; - while(1) { - c -= '0'; - if (c <= 9) { - ndigit++; - if (ndigit <= MAX_INT_DIGITS) { - if (isdecimal) { exp--; } - intval = (((intval << 2) + intval) << 1) + c; // intval*10 + c - } else { - if (!(isdecimal)) { exp++; } // Drop overflow digits - } - } else if (c == (('.'-'0') & 0xff) && !(isdecimal)) { - isdecimal = true; - } else { - break; - } - c = *ptr++; - } - - // Return if no digits have been read. - if (!ndigit) { return(false); }; - - // Convert integer into floating point. - float fval; - fval = (float)intval; - - // Apply decimal. Should perform no more than two floating point multiplications for the - // expected range of E0 to E-4. - if (fval != 0) { - while (exp <= -2) { - fval *= 0.01; - exp += 2; - } - if (exp < 0) { - fval *= 0.1; - } else if (exp > 0) { - do { - fval *= 10.0; - } while (--exp > 0); - } - } - - // Assign floating point value with correct sign. - if (isnegative) { - *float_ptr = -fval; - } else { - *float_ptr = fval; - } - - *char_counter = ptr - line - 1; // Set char_counter to next statement - - return(true); -} - - -// Delays variable defined milliseconds. Compiler compatibility fix for _delay_ms(), -// which only accepts constants in future compiler releases. -void delay_ms(uint16_t ms) -{ - while ( ms-- ) { _delay_ms(1); } -} - - -// Delays variable defined microseconds. Compiler compatibility fix for _delay_us(), -// which only accepts constants in future compiler releases. Written to perform more -// efficiently with larger delays, as the counter adds parasitic time in each iteration. -void delay_us(uint32_t us) -{ - while (us) { - if (us < 10) { - _delay_us(1); - us--; - } else if (us < 100) { - _delay_us(10); - us -= 10; - } else if (us < 1000) { - _delay_us(100); - us -= 100; - } else { - _delay_ms(1); - us -= 1000; - } - } -} - - -// Simple hypotenuse computation function. -float hypot_f(float x, float y) { return(sqrt(x*x + y*y)); } diff --git a/Source code/nuts_bolts.h b/Source code/nuts_bolts.h deleted file mode 100755 index 882d337..0000000 --- a/Source code/nuts_bolts.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - nuts_bolts.h - Header file for shared definitions, variables, and functions - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef nuts_bolts_h -#define nuts_bolts_h - -#define false 0 -#define true 1 - -// Axis array index values. Must start with 0 and be continuous. -#define N_AXIS 3 // Number of axes -#define X_AXIS 0 // Axis indexing value. -#define Y_AXIS 1 -#define Z_AXIS 2 -// #define A_AXIS 3 - -// CoreXY motor assignments. DO NOT ALTER. -// NOTE: If the A and B motor axis bindings are changed, this effects the CoreXY equations. -#ifdef COREXY - #define A_MOTOR X_AXIS // Must be X_AXIS - #define B_MOTOR Y_AXIS // Must be Y_AXIS -#endif - -// Conversions -#define MM_PER_INCH (25.40) -#define INCH_PER_MM (0.0393701) -#define TICKS_PER_MICROSECOND (F_CPU/1000000) - -// Useful macros -#define clear_vector(a) memset(a, 0, sizeof(a)) -#define clear_vector_float(a) memset(a, 0.0, sizeof(float)*N_AXIS) -// #define clear_vector_long(a) memset(a, 0.0, sizeof(long)*N_AXIS) -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#define min(a,b) (((a) < (b)) ? (a) : (b)) - -// Bit field and masking macros -#define bit(n) (1 << n) -#define bit_true_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) |= (mask); SREG = sreg; } -#define bit_false_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) &= ~(mask); SREG = sreg; } -#define bit_toggle_atomic(x,mask) {uint8_t sreg = SREG; cli(); (x) ^= (mask); SREG = sreg; } -#define bit_true(x,mask) (x) |= (mask) -#define bit_false(x,mask) (x) &= ~(mask) -#define bit_istrue(x,mask) ((x & mask) != 0) -#define bit_isfalse(x,mask) ((x & mask) == 0) - -// Read a floating point value from a string. Line points to the input buffer, char_counter -// is the indexer pointing to the current character of the line, while float_ptr is -// a pointer to the result variable. Returns true when it succeeds -uint8_t read_float(char *line, uint8_t *char_counter, float *float_ptr); - -// Delays variable-defined milliseconds. Compiler compatibility fix for _delay_ms(). -void delay_ms(uint16_t ms); - -// Delays variable-defined microseconds. Compiler compatibility fix for _delay_us(). -void delay_us(uint32_t us); - -// Computes hypotenuse, avoiding avr-gcc's bloated version and the extra error checking. -float hypot_f(float x, float y); - -#endif diff --git a/Source code/planner.c b/Source code/planner.c deleted file mode 100755 index 5b54410..0000000 --- a/Source code/planner.c +++ /dev/null @@ -1,457 +0,0 @@ -/* - planner.c - buffers movement commands and manages the acceleration profile plan - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - Copyright (c) 2011 Jens Geisler - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - -#define SOME_LARGE_VALUE 1.0E+38 // Used by rapids and acceleration maximization calculations. Just needs - // to be larger than any feasible (mm/min)^2 or mm/sec^2 value. - -static plan_block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instructions -static uint8_t block_buffer_tail; // Index of the block to process now -static uint8_t block_buffer_head; // Index of the next block to be pushed -static uint8_t next_buffer_head; // Index of the next buffer head -static uint8_t block_buffer_planned; // Index of the optimally planned block - -// Define planner variables -typedef struct { - int32_t position[N_AXIS]; // The planner position of the tool in absolute steps. Kept separate - // from g-code position for movements requiring multiple line motions, - // i.e. arcs, canned cycles, and backlash compensation. - float previous_unit_vec[N_AXIS]; // Unit vector of previous path line segment - float previous_nominal_speed_sqr; // Nominal speed of previous path line segment -} planner_t; -static planner_t pl; - - -// Returns the index of the next block in the ring buffer. Also called by stepper segment buffer. -uint8_t plan_next_block_index(uint8_t block_index) -{ - block_index++; - if (block_index == BLOCK_BUFFER_SIZE) { block_index = 0; } - return(block_index); -} - - -// Returns the index of the previous block in the ring buffer -static uint8_t plan_prev_block_index(uint8_t block_index) -{ - if (block_index == 0) { block_index = BLOCK_BUFFER_SIZE; } - block_index--; - return(block_index); -} - - -/* PLANNER SPEED DEFINITION - +--------+ <- current->nominal_speed - / \ - current->entry_speed -> + \ - | + <- next->entry_speed (aka exit speed) - +-------------+ - time --> - - Recalculates the motion plan according to the following basic guidelines: - - 1. Go over every feasible block sequentially in reverse order and calculate the junction speeds - (i.e. current->entry_speed) such that: - a. No junction speed exceeds the pre-computed maximum junction speed limit or nominal speeds of - neighboring blocks. - b. A block entry speed cannot exceed one reverse-computed from its exit speed (next->entry_speed) - with a maximum allowable deceleration over the block travel distance. - c. The last (or newest appended) block is planned from a complete stop (an exit speed of zero). - 2. Go over every block in chronological (forward) order and dial down junction speed values if - a. The exit speed exceeds the one forward-computed from its entry speed with the maximum allowable - acceleration over the block travel distance. - - When these stages are complete, the planner will have maximized the velocity profiles throughout the all - of the planner blocks, where every block is operating at its maximum allowable acceleration limits. In - other words, for all of the blocks in the planner, the plan is optimal and no further speed improvements - are possible. If a new block is added to the buffer, the plan is recomputed according to the said - guidelines for a new optimal plan. - - To increase computational efficiency of these guidelines, a set of planner block pointers have been - created to indicate stop-compute points for when the planner guidelines cannot logically make any further - changes or improvements to the plan when in normal operation and new blocks are streamed and added to the - planner buffer. For example, if a subset of sequential blocks in the planner have been planned and are - bracketed by junction velocities at their maximums (or by the first planner block as well), no new block - added to the planner buffer will alter the velocity profiles within them. So we no longer have to compute - them. Or, if a set of sequential blocks from the first block in the planner (or a optimal stop-compute - point) are all accelerating, they are all optimal and can not be altered by a new block added to the - planner buffer, as this will only further increase the plan speed to chronological blocks until a maximum - junction velocity is reached. However, if the operational conditions of the plan changes from infrequently - used feed holds or feedrate overrides, the stop-compute pointers will be reset and the entire plan is - recomputed as stated in the general guidelines. - - Planner buffer index mapping: - - block_buffer_tail: Points to the beginning of the planner buffer. First to be executed or being executed. - - block_buffer_head: Points to the buffer block after the last block in the buffer. Used to indicate whether - the buffer is full or empty. As described for standard ring buffers, this block is always empty. - - next_buffer_head: Points to next planner buffer block after the buffer head block. When equal to the - buffer tail, this indicates the buffer is full. - - block_buffer_planned: Points to the first buffer block after the last optimally planned block for normal - streaming operating conditions. Use for planning optimizations by avoiding recomputing parts of the - planner buffer that don't change with the addition of a new block, as describe above. In addition, - this block can never be less than block_buffer_tail and will always be pushed forward and maintain - this requirement when encountered by the plan_discard_current_block() routine during a cycle. - - NOTE: Since the planner only computes on what's in the planner buffer, some motions with lots of short - line segments, like G2/3 arcs or complex curves, may seem to move slow. This is because there simply isn't - enough combined distance traveled in the entire buffer to accelerate up to the nominal speed and then - decelerate to a complete stop at the end of the buffer, as stated by the guidelines. If this happens and - becomes an annoyance, there are a few simple solutions: (1) Maximize the machine acceleration. The planner - will be able to compute higher velocity profiles within the same combined distance. (2) Maximize line - motion(s) distance per block to a desired tolerance. The more combined distance the planner has to use, - the faster it can go. (3) Maximize the planner buffer size. This also will increase the combined distance - for the planner to compute over. It also increases the number of computations the planner has to perform - to compute an optimal plan, so select carefully. The Arduino 328p memory is already maxed out, but future - ARM versions should have enough memory and speed for look-ahead blocks numbering up to a hundred or more. - -*/ -static void planner_recalculate() -{ - // Initialize block index to the last block in the planner buffer. - uint8_t block_index = plan_prev_block_index(block_buffer_head); - - // Bail. Can't do anything with one only one plan-able block. - if (block_index == block_buffer_planned) { return; } - - // Reverse Pass: Coarsely maximize all possible deceleration curves back-planning from the last - // block in buffer. Cease planning when the last optimal planned or tail pointer is reached. - // NOTE: Forward pass will later refine and correct the reverse pass to create an optimal plan. - float entry_speed_sqr; - plan_block_t *next; - plan_block_t *current = &block_buffer[block_index]; - - // Calculate maximum entry speed for last block in buffer, where the exit speed is always zero. - current->entry_speed_sqr = min( current->max_entry_speed_sqr, 2*current->acceleration*current->millimeters); - - block_index = plan_prev_block_index(block_index); - if (block_index == block_buffer_planned) { // Only two plannable blocks in buffer. Reverse pass complete. - // Check if the first block is the tail. If so, notify stepper to update its current parameters. - if (block_index == block_buffer_tail) { st_update_plan_block_parameters(); } - } else { // Three or more plan-able blocks - while (block_index != block_buffer_planned) { - next = current; - current = &block_buffer[block_index]; - block_index = plan_prev_block_index(block_index); - - // Check if next block is the tail block(=planned block). If so, update current stepper parameters. - if (block_index == block_buffer_tail) { st_update_plan_block_parameters(); } - - // Compute maximum entry speed decelerating over the current block from its exit speed. - if (current->entry_speed_sqr != current->max_entry_speed_sqr) { - entry_speed_sqr = next->entry_speed_sqr + 2*current->acceleration*current->millimeters; - if (entry_speed_sqr < current->max_entry_speed_sqr) { - current->entry_speed_sqr = entry_speed_sqr; - } else { - current->entry_speed_sqr = current->max_entry_speed_sqr; - } - } - } - } - - // Forward Pass: Forward plan the acceleration curve from the planned pointer onward. - // Also scans for optimal plan breakpoints and appropriately updates the planned pointer. - next = &block_buffer[block_buffer_planned]; // Begin at buffer planned pointer - block_index = plan_next_block_index(block_buffer_planned); - while (block_index != block_buffer_head) { - current = next; - next = &block_buffer[block_index]; - - // Any acceleration detected in the forward pass automatically moves the optimal planned - // pointer forward, since everything before this is all optimal. In other words, nothing - // can improve the plan from the buffer tail to the planned pointer by logic. - if (current->entry_speed_sqr < next->entry_speed_sqr) { - entry_speed_sqr = current->entry_speed_sqr + 2*current->acceleration*current->millimeters; - // If true, current block is full-acceleration and we can move the planned pointer forward. - if (entry_speed_sqr < next->entry_speed_sqr) { - next->entry_speed_sqr = entry_speed_sqr; // Always <= max_entry_speed_sqr. Backward pass sets this. - block_buffer_planned = block_index; // Set optimal plan pointer. - } - } - - // Any block set at its maximum entry speed also creates an optimal plan up to this - // point in the buffer. When the plan is bracketed by either the beginning of the - // buffer and a maximum entry speed or two maximum entry speeds, every block in between - // cannot logically be further improved. Hence, we don't have to recompute them anymore. - if (next->entry_speed_sqr == next->max_entry_speed_sqr) { block_buffer_planned = block_index; } - block_index = plan_next_block_index( block_index ); - } -} - - -void plan_reset() -{ - memset(&pl, 0, sizeof(planner_t)); // Clear planner struct - block_buffer_tail = 0; - block_buffer_head = 0; // Empty = tail - next_buffer_head = 1; // plan_next_block_index(block_buffer_head) - block_buffer_planned = 0; // = block_buffer_tail; -} - - -void plan_discard_current_block() -{ - if (block_buffer_head != block_buffer_tail) { // Discard non-empty buffer. - uint8_t block_index = plan_next_block_index( block_buffer_tail ); - // Push block_buffer_planned pointer, if encountered. - if (block_buffer_tail == block_buffer_planned) { block_buffer_planned = block_index; } - block_buffer_tail = block_index; - } -} - - -plan_block_t *plan_get_current_block() -{ - if (block_buffer_head == block_buffer_tail) { return(NULL); } // Buffer empty - return(&block_buffer[block_buffer_tail]); -} - - -float plan_get_exec_block_exit_speed() -{ - uint8_t block_index = plan_next_block_index(block_buffer_tail); - if (block_index == block_buffer_head) { return( 0.0 ); } - return( sqrt( block_buffer[block_index].entry_speed_sqr ) ); -} - - -// Returns the availability status of the block ring buffer. True, if full. -uint8_t plan_check_full_buffer() -{ - if (block_buffer_tail == next_buffer_head) { return(true); } - return(false); -} - - -/* Add a new linear movement to the buffer. target[N_AXIS] is the signed, absolute target position - in millimeters. Feed rate specifies the speed of the motion. If feed rate is inverted, the feed - rate is taken to mean "frequency" and would complete the operation in 1/feed_rate minutes. - All position data passed to the planner must be in terms of machine position to keep the planner - independent of any coordinate system changes and offsets, which are handled by the g-code parser. - NOTE: Assumes buffer is available. Buffer checks are handled at a higher level by motion_control. - In other words, the buffer head is never equal to the buffer tail. Also the feed rate input value - is used in three ways: as a normal feed rate if invert_feed_rate is false, as inverse time if - invert_feed_rate is true, or as seek/rapids rate if the feed_rate value is negative (and - invert_feed_rate always false). */ -#ifdef USE_LINE_NUMBERS - void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number) -#else - void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate) -#endif -{ - // Prepare and initialize new block - plan_block_t *block = &block_buffer[block_buffer_head]; - block->step_event_count = 0; - block->millimeters = 0; - block->direction_bits = 0; - block->acceleration = SOME_LARGE_VALUE; // Scaled down to maximum acceleration later - #ifdef USE_LINE_NUMBERS - block->line_number = line_number; - #endif - - // Compute and store initial move distance data. - // TODO: After this for-loop, we don't touch the stepper algorithm data. Might be a good idea - // to try to keep these types of things completely separate from the planner for portability. - int32_t target_steps[N_AXIS]; - float unit_vec[N_AXIS], delta_mm; - uint8_t idx; - #ifdef COREXY - target_steps[A_MOTOR] = lround(target[A_MOTOR]*settings.steps_per_mm[A_MOTOR]); - target_steps[B_MOTOR] = lround(target[B_MOTOR]*settings.steps_per_mm[B_MOTOR]); - block->steps[A_MOTOR] = labs((target_steps[X_AXIS]-pl.position[X_AXIS]) + (target_steps[Y_AXIS]-pl.position[Y_AXIS])); - block->steps[B_MOTOR] = labs((target_steps[X_AXIS]-pl.position[X_AXIS]) - (target_steps[Y_AXIS]-pl.position[Y_AXIS])); - #endif - - for (idx=0; idxsteps[idx] = labs(target_steps[idx]-pl.position[idx]); - } - block->step_event_count = max(block->step_event_count, block->steps[idx]); - if (idx == A_MOTOR) { - delta_mm = (target_steps[X_AXIS]-pl.position[X_AXIS] + target_steps[Y_AXIS]-pl.position[Y_AXIS])/settings.steps_per_mm[idx]; - } else if (idx == B_MOTOR) { - delta_mm = (target_steps[X_AXIS]-pl.position[X_AXIS] - target_steps[Y_AXIS]+pl.position[Y_AXIS])/settings.steps_per_mm[idx]; - } else { - delta_mm = (target_steps[idx] - pl.position[idx])/settings.steps_per_mm[idx]; - } - #else - target_steps[idx] = lround(target[idx]*settings.steps_per_mm[idx]); - block->steps[idx] = labs(target_steps[idx]-pl.position[idx]); - block->step_event_count = max(block->step_event_count, block->steps[idx]); - delta_mm = (target_steps[idx] - pl.position[idx])/settings.steps_per_mm[idx]; - #endif - unit_vec[idx] = delta_mm; // Store unit vector numerator. Denominator computed later. - - // Set direction bits. Bit enabled always means direction is negative. - if (delta_mm < 0 ) { block->direction_bits |= get_direction_pin_mask(idx); } - - // Incrementally compute total move distance by Euclidean norm. First add square of each term. - block->millimeters += delta_mm*delta_mm; - } - block->millimeters = sqrt(block->millimeters); // Complete millimeters calculation with sqrt() - - // Bail if this is a zero-length block. Highly unlikely to occur. - if (block->step_event_count == 0) { return; } - - // Adjust feed_rate value to mm/min depending on type of rate input (normal, inverse time, or rapids) - // TODO: Need to distinguish a rapids vs feed move for overrides. Some flag of some sort. - if (feed_rate < 0) { feed_rate = SOME_LARGE_VALUE; } // Scaled down to absolute max/rapids rate later - else if (invert_feed_rate) { feed_rate *= block->millimeters; } - if (feed_rate < MINIMUM_FEED_RATE) { feed_rate = MINIMUM_FEED_RATE; } // Prevents step generation round-off condition. - - // Calculate the unit vector of the line move and the block maximum feed rate and acceleration scaled - // down such that no individual axes maximum values are exceeded with respect to the line direction. - // NOTE: This calculation assumes all axes are orthogonal (Cartesian) and works with ABC-axes, - // if they are also orthogonal/independent. Operates on the absolute value of the unit vector. - float inverse_unit_vec_value; - float inverse_millimeters = 1.0/block->millimeters; // Inverse millimeters to remove multiple float divides - float junction_cos_theta = 0; - for (idx=0; idxacceleration = min(block->acceleration,settings.acceleration[idx]*inverse_unit_vec_value); - - // Incrementally compute cosine of angle between previous and current path. Cos(theta) of the junction - // between the current move and the previous move is simply the dot product of the two unit vectors, - // where prev_unit_vec is negative. Used later to compute maximum junction speed. - junction_cos_theta -= pl.previous_unit_vec[idx] * unit_vec[idx]; - } - } - - // TODO: Need to check this method handling zero junction speeds when starting from rest. - if (block_buffer_head == block_buffer_tail) { - - // Initialize block entry speed as zero. Assume it will be starting from rest. Planner will correct this later. - block->entry_speed_sqr = 0.0; - block->max_junction_speed_sqr = 0.0; // Starting from rest. Enforce start from zero velocity. - - } else { - /* - Compute maximum allowable entry speed at junction by centripetal acceleration approximation. - Let a circle be tangent to both previous and current path line segments, where the junction - deviation is defined as the distance from the junction to the closest edge of the circle, - colinear with the circle center. The circular segment joining the two paths represents the - path of centripetal acceleration. Solve for max velocity based on max acceleration about the - radius of the circle, defined indirectly by junction deviation. This may be also viewed as - path width or max_jerk in the previous Grbl version. This approach does not actually deviate - from path, but used as a robust way to compute cornering speeds, as it takes into account the - nonlinearities of both the junction angle and junction velocity. - - NOTE: If the junction deviation value is finite, Grbl executes the motions in an exact path - mode (G61). If the junction deviation value is zero, Grbl will execute the motion in an exact - stop mode (G61.1) manner. In the future, if continuous mode (G64) is desired, the math here - is exactly the same. Instead of motioning all the way to junction point, the machine will - just follow the arc circle defined here. The Arduino doesn't have the CPU cycles to perform - a continuous mode path, but ARM-based microcontrollers most certainly do. - - NOTE: The max junction speed is a fixed value, since machine acceleration limits cannot be - changed dynamically during operation nor can the line move geometry. This must be kept in - memory in the event of a feedrate override changing the nominal speeds of blocks, which can - change the overall maximum entry speed conditions of all blocks. - */ - // NOTE: Computed without any expensive trig, sin() or acos(), by trig half angle identity of cos(theta). - if (junction_cos_theta > 0.999999) { - // For a 0 degree acute junction, just set minimum junction speed. - block->max_junction_speed_sqr = MINIMUM_JUNCTION_SPEED*MINIMUM_JUNCTION_SPEED; - } else { - junction_cos_theta = max(junction_cos_theta,-0.999999); // Check for numerical round-off to avoid divide by zero. - float sin_theta_d2 = sqrt(0.5*(1.0-junction_cos_theta)); // Trig half angle identity. Always positive. - - // TODO: Technically, the acceleration used in calculation needs to be limited by the minimum of the - // two junctions. However, this shouldn't be a significant problem except in extreme circumstances. - block->max_junction_speed_sqr = max( MINIMUM_JUNCTION_SPEED*MINIMUM_JUNCTION_SPEED, - (block->acceleration * settings.junction_deviation * sin_theta_d2)/(1.0-sin_theta_d2) ); - - } - } - - // Store block nominal speed - block->nominal_speed_sqr = feed_rate*feed_rate; // (mm/min). Always > 0 - - // Compute the junction maximum entry based on the minimum of the junction speed and neighboring nominal speeds. - block->max_entry_speed_sqr = min(block->max_junction_speed_sqr, - min(block->nominal_speed_sqr,pl.previous_nominal_speed_sqr)); - - // Update previous path unit_vector and nominal speed (squared) - memcpy(pl.previous_unit_vec, unit_vec, sizeof(unit_vec)); // pl.previous_unit_vec[] = unit_vec[] - pl.previous_nominal_speed_sqr = block->nominal_speed_sqr; - - // Update planner position - memcpy(pl.position, target_steps, sizeof(target_steps)); // pl.position[] = target_steps[] - - // New block is all set. Update buffer head and next buffer head indices. - block_buffer_head = next_buffer_head; - next_buffer_head = plan_next_block_index(block_buffer_head); - - // Finish up by recalculating the plan with the new block. - planner_recalculate(); -} - - -// Reset the planner position vectors. Called by the system abort/initialization routine. -void plan_sync_position() -{ - // TODO: For motor configurations not in the same coordinate frame as the machine position, - // this function needs to be updated to accomodate the difference. - uint8_t idx; - for (idx=0; idx= block_buffer_tail) { return(block_buffer_head-block_buffer_tail); } - return(BLOCK_BUFFER_SIZE - (block_buffer_tail-block_buffer_head)); -} - - -// Re-initialize buffer plan with a partially completed block, assumed to exist at the buffer tail. -// Called after a steppers have come to a complete stop for a feed hold and the cycle is stopped. -void plan_cycle_reinitialize() -{ - // Re-plan from a complete stop. Reset planner entry speeds and buffer planned pointer. - st_update_plan_block_parameters(); - block_buffer_planned = block_buffer_tail; - planner_recalculate(); -} diff --git a/Source code/planner.h b/Source code/planner.h deleted file mode 100755 index 02258dd..0000000 --- a/Source code/planner.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - planner.h - buffers movement commands and manages the acceleration profile plan - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef planner_h -#define planner_h - - -// The number of linear motions that can be in the plan at any give time -#ifndef BLOCK_BUFFER_SIZE - #ifdef USE_LINE_NUMBERS - #define BLOCK_BUFFER_SIZE 16 - #else - #define BLOCK_BUFFER_SIZE 18 - #endif -#endif - -// This struct stores a linear movement of a g-code block motion with its critical "nominal" values -// are as specified in the source g-code. -typedef struct { - // Fields used by the bresenham algorithm for tracing the line - // NOTE: Used by stepper algorithm to execute the block correctly. Do not alter these values. - uint8_t direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) - uint32_t steps[N_AXIS]; // Step count along each axis - uint32_t step_event_count; // The maximum step axis count and number of steps required to complete this block. - - // Fields used by the motion planner to manage acceleration - float entry_speed_sqr; // The current planned entry speed at block junction in (mm/min)^2 - float max_entry_speed_sqr; // Maximum allowable entry speed based on the minimum of junction limit and - // neighboring nominal speeds with overrides in (mm/min)^2 - float max_junction_speed_sqr; // Junction entry speed limit based on direction vectors in (mm/min)^2 - float nominal_speed_sqr; // Axis-limit adjusted nominal speed for this block in (mm/min)^2 - float acceleration; // Axis-limit adjusted line acceleration in (mm/min^2) - float millimeters; // The remaining distance for this block to be executed in (mm) - // uint8_t max_override; // Maximum override value based on axis speed limits - - #ifdef USE_LINE_NUMBERS - int32_t line_number; - #endif -} plan_block_t; - - -// Initialize and reset the motion plan subsystem -void plan_reset(); - -// Add a new linear movement to the buffer. target[N_AXIS] is the signed, absolute target position -// in millimeters. Feed rate specifies the speed of the motion. If feed rate is inverted, the feed -// rate is taken to mean "frequency" and would complete the operation in 1/feed_rate minutes. -#ifdef USE_LINE_NUMBERS - void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate, int32_t line_number); -#else - void plan_buffer_line(float *target, float feed_rate, uint8_t invert_feed_rate); -#endif - -// Called when the current block is no longer needed. Discards the block and makes the memory -// availible for new blocks. -void plan_discard_current_block(); - -// Gets the current block. Returns NULL if buffer empty -plan_block_t *plan_get_current_block(); - -// Called periodically by step segment buffer. Mostly used internally by planner. -uint8_t plan_next_block_index(uint8_t block_index); - -// Called by step segment buffer when computing executing block velocity profile. -float plan_get_exec_block_exit_speed(); - -// Reset the planner position vector (in steps) -void plan_sync_position(); - -// Reinitialize plan with a partially completed block -void plan_cycle_reinitialize(); - -// Returns the number of active blocks are in the planner buffer. -uint8_t plan_get_block_buffer_count(); - -// Returns the status of the block ring buffer. True, if buffer is full. -uint8_t plan_check_full_buffer(); - -#endif diff --git a/Source code/print.c b/Source code/print.c deleted file mode 100755 index 6598d48..0000000 --- a/Source code/print.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - print.c - Functions for formatting output strings - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" -#include - - -void printString(const char *s) -{ - while (*s) - serial_write(*s++); -} - - -// Print a string stored in PGM-memory -void printPgmString(const char *s) -{ - char c; - while ((c = pgm_read_byte_near(s++))) - serial_write(c); -} - - -// void printIntegerInBase(unsigned long n, unsigned long base) -// { -// unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. -// unsigned long i = 0; -// -// if (n == 0) { -// serial_write('0'); -// return; -// } -// -// while (n > 0) { -// buf[i++] = n % base; -// n /= base; -// } -// -// for (; i > 0; i--) -// serial_write(buf[i - 1] < 10 ? -// '0' + buf[i - 1] : -// 'A' + buf[i - 1] - 10); -// } - - -// Prints an uint8 variable with base and number of desired digits. -void print_unsigned_int8(uint8_t n, uint8_t base, uint8_t digits) -{ - unsigned char buf[digits]; - uint8_t i = 0; - - for (; i < digits; i++) { - buf[i] = n % base ; - n /= base; - } - - for (; i > 0; i--) - serial_write('0' + buf[i - 1]); -} - - -// Prints an uint8 variable in base 2. -void print_uint8_base2(uint8_t n) { - print_unsigned_int8(n,2,8); -} - - -// Prints an uint8 variable in base 10. -void print_uint8_base10(uint8_t n) -{ - uint8_t digits; - if (n < 10) { digits = 1; } - else if (n < 100) { digits = 2; } - else { digits = 3; } - print_unsigned_int8(n,10,digits); -} - - -void print_uint32_base10(uint32_t n) -{ - if (n == 0) { - serial_write('0'); - return; - } - - unsigned char buf[10]; - uint8_t i = 0; - - while (n > 0) { - buf[i++] = n % 10; - n /= 10; - } - - for (; i > 0; i--) - serial_write('0' + buf[i-1]); -} - - -void printInteger(long n) -{ - if (n < 0) { - serial_write('-'); - print_uint32_base10(-n); - } else { - print_uint32_base10(n); - } -} - - -// Convert float to string by immediately converting to a long integer, which contains -// more digits than a float. Number of decimal places, which are tracked by a counter, -// may be set by the user. The integer is then efficiently converted to a string. -// NOTE: AVR '%' and '/' integer operations are very efficient. Bitshifting speed-up -// techniques are actually just slightly slower. Found this out the hard way. -void printFloat(float n, uint8_t decimal_places) -{ - if (n < 0) { - serial_write('-'); - n = -n; - } - - uint8_t decimals = decimal_places; - while (decimals >= 2) { // Quickly convert values expected to be E0 to E-4. - n *= 100; - decimals -= 2; - } - if (decimals) { n *= 10; } - n += 0.5; // Add rounding factor. Ensures carryover through entire value. - - // Generate digits backwards and store in string. - unsigned char buf[10]; - uint8_t i = 0; - uint32_t a = (long)n; - buf[decimal_places] = '.'; // Place decimal point, even if decimal places are zero. - while(a > 0) { - if (i == decimal_places) { i++; } // Skip decimal point location - buf[i++] = (a % 10) + '0'; // Get digit - a /= 10; - } - while (i < decimal_places) { - buf[i++] = '0'; // Fill in zeros to decimal point for (n < 1) - } - if (i == decimal_places) { // Fill in leading zero, if needed. - i++; - buf[i++] = '0'; - } - - // Print the generated string. - for (; i > 0; i--) - serial_write(buf[i-1]); -} - - -// Floating value printing handlers for special variables types used in Grbl and are defined -// in the config.h. -// - CoordValue: Handles all position or coordinate values in inches or mm reporting. -// - RateValue: Handles feed rate and current velocity in inches or mm reporting. -// - SettingValue: Handles all floating point settings values (always in mm.) -void printFloat_CoordValue(float n) { - if (bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)) { - printFloat(n*INCH_PER_MM,N_DECIMAL_COORDVALUE_INCH); - } else { - printFloat(n,N_DECIMAL_COORDVALUE_MM); - } -} - -void printFloat_RateValue(float n) { - if (bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)) { - printFloat(n*INCH_PER_MM,N_DECIMAL_RATEVALUE_INCH); - } else { - printFloat(n,N_DECIMAL_RATEVALUE_MM); - } -} - -void printFloat_SettingValue(float n) { printFloat(n,N_DECIMAL_SETTINGVALUE); } - - -// Debug tool to print free memory in bytes at the called point. -// NOTE: Keep commented unless using. Part of this function always gets compiled in. -// void printFreeMemory() -// { -// extern int __heap_start, *__brkval; -// uint16_t free; // Up to 64k values. -// free = (int) &free - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); -// printInteger((int32_t)free); -// printString(" "); -// } - -void uart_printf(char *str,...){ - char buf[128]; - unsigned char i = 0; - va_list ptr; - va_start(ptr,str); - vsprintf(buf,str,ptr); - while(buf[i]) - { - serial_write(buf[i]); - i++; - } -} - diff --git a/Source code/print.h b/Source code/print.h deleted file mode 100755 index 5639e70..0000000 --- a/Source code/print.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - print.h - Functions for formatting output strings - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef print_h -#define print_h - - -void printString(const char *s); - -void printPgmString(const char *s); - -void printInteger(long n); - -void print_uint32_base10(uint32_t n); - -// Prints uint8 variable with base and number of desired digits. -void print_unsigned_int8(uint8_t n, uint8_t base, uint8_t digits); - -// Prints an uint8 variable in base 2. -void print_uint8_base2(uint8_t n); - -// Prints an uint8 variable in base 10. -void print_uint8_base10(uint8_t n); - -void printFloat(float n, uint8_t decimal_places); - -// Floating value printing handlers for special variables types used in Grbl. -// - CoordValue: Handles all position or coordinate values in inches or mm reporting. -// - RateValue: Handles feed rate and current velocity in inches or mm reporting. -// - SettingValue: Handles all floating point settings values (always in mm.) -void printFloat_CoordValue(float n); - -void printFloat_RateValue(float n); - -void printFloat_SettingValue(float n); - -// Debug tool to print free memory in bytes at the called point. Not used otherwise. -void printFreeMemory(); - -void uart_printf(char *str,...); - -#endif \ No newline at end of file diff --git a/Source code/probe.c b/Source code/probe.c deleted file mode 100755 index 37816bf..0000000 --- a/Source code/probe.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - probe.c - code pertaining to probing methods - Part of Grbl - - Copyright (c) 2014-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - - -// Inverts the probe pin state depending on user settings and probing cycle mode. -uint8_t probe_invert_mask; - - -// Probe pin initialization routine. -void probe_init() -{ - PROBE_DDR &= ~(PROBE_MASK); // Configure as input pins - #ifdef DISABLE_PROBE_PIN_PULL_UP - PROBE_PORT &= ~(PROBE_MASK); // Normal low operation. Requires external pull-down. - #else - PROBE_PORT |= PROBE_MASK; // Enable internal pull-up resistors. Normal high operation. - #endif - // probe_configure_invert_mask(false); // Initialize invert mask. Not required. Updated when in-use. -} - - -// Called by probe_init() and the mc_probe() routines. Sets up the probe pin invert mask to -// appropriately set the pin logic according to setting for normal-high/normal-low operation -// and the probing cycle modes for toward-workpiece/away-from-workpiece. -void probe_configure_invert_mask(uint8_t is_probe_away) -{ - probe_invert_mask = 0; // Initialize as zero. - if (bit_isfalse(settings.flags,BITFLAG_INVERT_PROBE_PIN)) { probe_invert_mask ^= PROBE_MASK; } - if (is_probe_away) { probe_invert_mask ^= PROBE_MASK; } -} - - -// Returns the probe pin state. Triggered = true. Called by gcode parser and probe state monitor. -uint8_t probe_get_state() { return((PROBE_PIN & PROBE_MASK) ^ probe_invert_mask); } - - -// Monitors probe pin state and records the system position when detected. Called by the -// stepper ISR per ISR tick. -// NOTE: This function must be extremely efficient as to not bog down the stepper ISR. -void probe_state_monitor() -{ - if (sys_probe_state == PROBE_ACTIVE) { - if (probe_get_state()) { - sys_probe_state = PROBE_OFF; - memcpy(sys.probe_position, sys.position, sizeof(sys.position)); - bit_true(sys_rt_exec_state, EXEC_MOTION_CANCEL); - } - } -} diff --git a/Source code/probe.h b/Source code/probe.h deleted file mode 100755 index 81bd486..0000000 --- a/Source code/probe.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - probe.h - code pertaining to probing methods - Part of Grbl - - Copyright (c) 2014-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef probe_h -#define probe_h - -// Values that define the probing state machine. -#define PROBE_OFF 0 // Probing disabled or not in use. (Must be zero.) -#define PROBE_ACTIVE 1 // Actively watching the input pin. - -// Probe pin initialization routine. -void probe_init(); - -// Called by probe_init() and the mc_probe() routines. Sets up the probe pin invert mask to -// appropriately set the pin logic according to setting for normal-high/normal-low operation -// and the probing cycle modes for toward-workpiece/away-from-workpiece. -void probe_configure_invert_mask(uint8_t is_probe_away); - -// Returns probe pin state. Triggered = true. Called by gcode parser and probe state monitor. -uint8_t probe_get_state(); - -// Monitors probe pin state and records the system position when detected. Called by the -// stepper ISR per ISR tick. -void probe_state_monitor(); - -#endif diff --git a/Source code/protocol.c b/Source code/protocol.c deleted file mode 100755 index 9084676..0000000 --- a/Source code/protocol.c +++ /dev/null @@ -1,398 +0,0 @@ -/* - protocol.c - controls Grbl execution protocol and procedures - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" -#include "uarm_swift.h" -#include "uarm_protocol.h" - -// Define different comment types for pre-parsing. -#define COMMENT_NONE 0 -#define COMMENT_TYPE_PARENTHESES 1 -#define COMMENT_TYPE_SEMICOLON 2 - -static char line[LINE_BUFFER_SIZE]; - -// Directs and executes one line of formatted input from protocol_process. While mostly -// incoming streaming g-code blocks, this also directs and executes Grbl internal commands, -// such as settings, initiating the homing cycle, and toggling switch states. -static void protocol_execute_line(char *line) -{ - protocol_execute_realtime(); // Runtime command check point. - if (sys.abort) { return; } // Bail to calling function upon system abort - - #ifdef REPORT_ECHO_LINE_RECEIVED - report_echo_line_received(line); - #endif - if (line[0] == '$') { - // Grbl '$' system command - report_status_message(system_execute_line(line)); - } else if (sys.state == STATE_ALARM) { - // Everything else is gcode. Block if in alarm mode. - report_status_message(STATUS_ALARM_LOCK); - } else { - // Parse and execute g-code block! - report_status_message(gc_execute_line(line)); - } -} - -/* - GRBL PRIMARY LOOP: -*/ -void protocol_main_loop() -{ - // ------------------------------------------------------------ - // Complete initialization procedures upon a power-up or reset. - // ------------------------------------------------------------ - - // Print welcome message - report_init_message(); - - // Check for and report alarm state after a reset, error, or an initial power up. - if (sys.state == STATE_ALARM) { - report_feedback_message(MESSAGE_ALARM_LOCK); - } else { - // All systems go! But first check for safety door. - if (system_check_safety_door_ajar()) { - bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); - protocol_execute_realtime(); // Enter safety door mode. Should return as IDLE state. - } else { - sys.state = STATE_IDLE; // Set system to ready. Clear all state flags. - } -// system_execute_startup(line); // Execute startup script. - } - - // --------------------------------------------------------------------------------- - // Primary loop! Upon a system abort, this exits back to main() to reset the system. - // --------------------------------------------------------------------------------- - - uint8_t comment = COMMENT_NONE; - uint8_t char_counter = 0; - uint8_t c; - uint8_t line_remain = 0; - uint8_t line_num = 0; - uint8_t line_execute_p = 0; - for (;;) { - - // Process one line of incoming serial data, as the data becomes available. Performs an - // initial filtering by removing spaces and comments and capitalizing all letters. - - // NOTE: While comment, spaces, and block delete(if supported) handling should technically - // be done in the g-code parser, doing it here helps compress the incoming data into Grbl's - // line buffer, which is limited in size. The g-code standard actually states a line can't - // exceed 256 characters, but the Arduino Uno does not have the memory space for this. - // With a better processor, it would be very easy to pull this initial parsing out as a - // seperate task to be shared by the g-code parser and Grbl's system commands. - - while((c = serial_read()) != SERIAL_NO_DATA) { - if ((c == '\n') || (c == '\r')) { // End of line reached - line[char_counter] = 0; // Set string termination character. - receive_cmd_line(line); - comment = COMMENT_NONE; - char_counter = 0; - break; - } else { - if (comment != COMMENT_NONE) { - // Throw away all comment characters - if (c == ')') { - // End of comment. Resume line. But, not if semicolon type comment. - if (comment == COMMENT_TYPE_PARENTHESES) { comment = COMMENT_NONE; } - } - } else { - if (c <= ' ') { - // Throw away whitepace and control characters - } else if (c == '/') { - // Block delete NOT SUPPORTED. Ignore character. - // NOTE: If supported, would simply need to check the system if block delete is enabled. - } else if (c == '(') { - // Enable comments flag and ignore all characters until ')' or EOL. - // NOTE: This doesn't follow the NIST definition exactly, but is good enough for now. - // In the future, we could simply remove the items within the comments, but retain the - // comment control characters, so that the g-code parser can error-check it. - comment = COMMENT_TYPE_PARENTHESES; - } else if (c == ';') { - // NOTE: ';' comment to EOL is a LinuxCNC definition. Not NIST. - comment = COMMENT_TYPE_SEMICOLON; - - // TODO: Install '%' feature - // } else if (c == '%') { - // Program start-end percent sign NOT SUPPORTED. - // NOTE: This maybe installed to tell Grbl when a program is running vs manual input, - // where, during a program, the system auto-cycle start will continue to execute - // everything until the next '%' sign. This will help fix resuming issues with certain - // functions that empty the planner buffer to execute its task on-time. - - } else if (char_counter >= (LINE_BUFFER_SIZE-1)) { - // Detect line buffer overflow. Report error and reset line buffer. - report_status_message(STATUS_OVERFLOW); - comment = COMMENT_NONE; - char_counter = 0; - } else if (c >= 'a' && c <= 'z') { // Upcase lowercase - line[char_counter++] = c-'a'+'A'; - } else { - line[char_counter++] = c; - } - } - } - } - parse_cmd_line(); - - // If there are no more characters in the serial read buffer to be processed and executed, - // this indicates that g-code streaming has either filled the planner buffer or has - // completed. In either case, auto-cycle start, if enabled, any queued moves. - //uarm_swift_tick_run(); - protocol_auto_cycle_start(); - protocol_execute_realtime(); // Runtime command check point. - if (sys.abort) { return; } // Bail to main() program loop to reset system. - - report_parse_result(); -// check_motor_positon(); - } - return; /* Never reached */ -} - - -// Executes run-time commands, when required. This is called from various check points in the main -// program, primarily where there may be a while loop waiting for a buffer to clear space or any -// point where the execution time from the last check point may be more than a fraction of a second. -// This is a way to execute realtime commands asynchronously (aka multitasking) with grbl's g-code -// parsing and planning functions. This function also serves as an interface for the interrupts to -// set the system realtime flags, where only the main program handles them, removing the need to -// define more computationally-expensive volatile variables. This also provides a controlled way to -// execute certain tasks without having two or more instances of the same task, such as the planner -// recalculating the buffer upon a feedhold or override. -// NOTE: The sys_rt_exec_state variable flags are set by any process, step or serial interrupts, pinouts, -// limit switches, or the main program. -void protocol_execute_realtime() -{ - uint8_t rt_exec; // Temp variable to avoid calling volatile multiple times. - - do { // If system is suspended, suspend loop restarts here. - - // Check and execute alarms. - rt_exec = sys_rt_exec_alarm; // Copy volatile sys_rt_exec_alarm. - if (rt_exec) { // Enter only if any bit flag is true - // System alarm. Everything has shutdown by something that has gone severely wrong. Report - // the source of the error to the user. If critical, Grbl disables by entering an infinite - // loop until system reset/abort. - sys.state = STATE_ALARM; // Set system alarm state - if (rt_exec & EXEC_ALARM_HARD_LIMIT) { - report_alarm_message(ALARM_HARD_LIMIT_ERROR); - } else if (rt_exec & EXEC_ALARM_SOFT_LIMIT) { - report_alarm_message(ALARM_SOFT_LIMIT_ERROR); - } else if (rt_exec & EXEC_ALARM_ABORT_CYCLE) { - report_alarm_message(ALARM_ABORT_CYCLE); - } else if (rt_exec & EXEC_ALARM_PROBE_FAIL) { - report_alarm_message(ALARM_PROBE_FAIL); - } else if (rt_exec & EXEC_ALARM_HOMING_FAIL) { - report_alarm_message(ALARM_HOMING_FAIL); - } - // Halt everything upon a critical event flag. Currently hard and soft limits flag this. - if (rt_exec & EXEC_CRITICAL_EVENT) { - report_feedback_message(MESSAGE_CRITICAL_EVENT); - bit_false_atomic(sys_rt_exec_state,EXEC_RESET); // Disable any existing reset - do { - // Nothing. Block EVERYTHING until user issues reset or power cycles. Hard limits - // typically occur while unattended or not paying attention. Gives the user time - // to do what is needed before resetting, like killing the incoming stream. The - // same could be said about soft limits. While the position is not lost, the incoming - // stream could be still engaged and cause a serious crash if it continues afterwards. - - // TODO: Allow status reports during a critical alarm. Still need to think about implications of this. -// if (sys_rt_exec_state & EXEC_STATUS_REPORT) { -// report_realtime_status(); -// bit_false_atomic(sys_rt_exec_state,EXEC_STATUS_REPORT); -// } - } while (bit_isfalse(sys_rt_exec_state,EXEC_RESET)); - } - bit_false_atomic(sys_rt_exec_alarm,0xFF); // Clear all alarm flags - } - - // Check amd execute realtime commands - rt_exec = sys_rt_exec_state; // Copy volatile sys_rt_exec_state. - if (rt_exec) { // Enter only if any bit flag is true - - // Execute system abort. - if (rt_exec & EXEC_RESET) { - sys.abort = true; // Only place this is set true. - return; // Nothing else to do but exit. - } - - // Execute and serial print status - if (rt_exec & EXEC_STATUS_REPORT) { - report_realtime_status(); - bit_false_atomic(sys_rt_exec_state,EXEC_STATUS_REPORT); - } - - // Execute hold states. - // NOTE: The math involved to calculate the hold should be low enough for most, if not all, - // operational scenarios. Once hold is initiated, the system enters a suspend state to block - // all main program processes until either reset or resumed. - if (rt_exec & (EXEC_MOTION_CANCEL | EXEC_FEED_HOLD | EXEC_SAFETY_DOOR)) { - - // TODO: CHECK MODE? How to handle this? Likely nothing, since it only works when IDLE and then resets Grbl. - - // State check for allowable states for hold methods. - if ((sys.state == STATE_IDLE) || (sys.state & (STATE_CYCLE | STATE_HOMING | STATE_MOTION_CANCEL | STATE_HOLD | STATE_SAFETY_DOOR))) { - - // If in CYCLE state, all hold states immediately initiate a motion HOLD. - if (sys.state == STATE_CYCLE) { - st_update_plan_block_parameters(); // Notify stepper module to recompute for hold deceleration. - sys.suspend = SUSPEND_ENABLE_HOLD; // Initiate holding cycle with flag. - } - // If IDLE, Grbl is not in motion. Simply indicate suspend ready state. - if (sys.state == STATE_IDLE) { sys.suspend = SUSPEND_ENABLE_READY; } - - // Execute and flag a motion cancel with deceleration and return to idle. Used primarily by probing cycle - // to halt and cancel the remainder of the motion. - if (rt_exec & EXEC_MOTION_CANCEL) { - // MOTION_CANCEL only occurs during a CYCLE, but a HOLD and SAFETY_DOOR may been initiated beforehand - // to hold the CYCLE. If so, only flag that motion cancel is complete. - if (sys.state == STATE_CYCLE) { sys.state = STATE_MOTION_CANCEL; } - sys.suspend |= SUSPEND_MOTION_CANCEL; // Indicate motion cancel when resuming. Special motion complete. - } - - // Execute a feed hold with deceleration, only during cycle. - if (rt_exec & EXEC_FEED_HOLD) { - // Block SAFETY_DOOR state from prematurely changing back to HOLD. - if (bit_isfalse(sys.state,STATE_SAFETY_DOOR)) { sys.state = STATE_HOLD; } - } - - // Execute a safety door stop with a feed hold, only during a cycle, and disable spindle/coolant. - // NOTE: Safety door differs from feed holds by stopping everything no matter state, disables powered - // devices (spindle/coolant), and blocks resuming until switch is re-engaged. The power-down is - // executed here, if IDLE, or when the CYCLE completes via the EXEC_CYCLE_STOP flag. - if (rt_exec & EXEC_SAFETY_DOOR) { - report_feedback_message(MESSAGE_SAFETY_DOOR_AJAR); - // If already in active, ready-to-resume HOLD, set CYCLE_STOP flag to force de-energize. - // NOTE: Only temporarily sets the 'rt_exec' variable, not the volatile 'rt_exec_state' variable. - if (sys.suspend & SUSPEND_ENABLE_READY) { bit_true(rt_exec,EXEC_CYCLE_STOP); } - sys.suspend |= SUSPEND_ENERGIZE; - sys.state = STATE_SAFETY_DOOR; - } - - } - bit_false_atomic(sys_rt_exec_state,(EXEC_MOTION_CANCEL | EXEC_FEED_HOLD | EXEC_SAFETY_DOOR)); - } - - // Execute a cycle start by starting the stepper interrupt to begin executing the blocks in queue. - if (rt_exec & EXEC_CYCLE_START) { - // Block if called at same time as the hold commands: feed hold, motion cancel, and safety door. - // Ensures auto-cycle-start doesn't resume a hold without an explicit user-input. - if (!(rt_exec & (EXEC_FEED_HOLD | EXEC_MOTION_CANCEL | EXEC_SAFETY_DOOR))) { - // Cycle start only when IDLE or when a hold is complete and ready to resume. - // NOTE: SAFETY_DOOR is implicitly blocked. It reverts to HOLD when the door is closed. - if ((sys.state == STATE_IDLE) || ((sys.state & (STATE_HOLD | STATE_MOTION_CANCEL)) && (sys.suspend & SUSPEND_ENABLE_READY))) { - // Re-energize powered components, if disabled by SAFETY_DOOR. - if (sys.suspend & SUSPEND_ENERGIZE) { - // Delayed Tasks: Restart spindle and coolant, delay to power-up, then resume cycle. - if (gc_state.modal.spindle != SPINDLE_DISABLE) { - spindle_set_state(gc_state.modal.spindle, gc_state.spindle_speed); - delay_ms(SAFETY_DOOR_SPINDLE_DELAY); // TODO: Blocking function call. Need a non-blocking one eventually. - } - if (gc_state.modal.coolant != COOLANT_DISABLE) { - coolant_set_state(gc_state.modal.coolant); - delay_ms(SAFETY_DOOR_COOLANT_DELAY); // TODO: Blocking function call. Need a non-blocking one eventually. - } - // TODO: Install return to pre-park position. - } - // Start cycle only if queued motions exist in planner buffer and the motion is not canceled. - if (plan_get_current_block() && bit_isfalse(sys.suspend,SUSPEND_MOTION_CANCEL)) { - sys.state = STATE_CYCLE; - st_prep_buffer(); // Initialize step segment buffer before beginning cycle. - st_wake_up(); - } else { // Otherwise, do nothing. Set and resume IDLE state. - sys.state = STATE_IDLE; - } - sys.suspend = SUSPEND_DISABLE; // Break suspend state. - } - } - bit_false_atomic(sys_rt_exec_state,EXEC_CYCLE_START); - } - - // Reinitializes the cycle plan and stepper system after a feed hold for a resume. Called by - // realtime command execution in the main program, ensuring that the planner re-plans safely. - // NOTE: Bresenham algorithm variables are still maintained through both the planner and stepper - // cycle reinitializations. The stepper path should continue exactly as if nothing has happened. - // NOTE: EXEC_CYCLE_STOP is set by the stepper subsystem when a cycle or feed hold completes. - if (rt_exec & EXEC_CYCLE_STOP) { - if (sys.state & (STATE_HOLD | STATE_SAFETY_DOOR) && !(sys.soft_limit)) { - // Hold complete. Set to indicate ready to resume. Remain in HOLD or DOOR states until user - // has issued a resume command or reset. - if (sys.suspend & SUSPEND_ENERGIZE) { // De-energize system if safety door has been opened. - spindle_stop(); - coolant_stop(); - } - bit_true(sys.suspend,SUSPEND_ENABLE_READY); - } else { // Motion is complete. Includes CYCLE, HOMING, and MOTION_CANCEL states. - sys.suspend = SUSPEND_DISABLE; - sys.state = STATE_IDLE; - } - bit_false_atomic(sys_rt_exec_state,EXEC_CYCLE_STOP); - } - - } - - // Overrides flag byte (sys.override) and execution should be installed here, since they - // are realtime and require a direct and controlled interface to the main stepper program. - - // Reload step segment buffer - if (sys.state & (STATE_CYCLE | STATE_HOLD | STATE_MOTION_CANCEL | STATE_SAFETY_DOOR | STATE_HOMING)) { st_prep_buffer(); } - - // If safety door was opened, actively check when safety door is closed and ready to resume. - // NOTE: This unlocks the SAFETY_DOOR state to a HOLD state, such that CYCLE_START can activate a resume. - if (sys.state == STATE_SAFETY_DOOR) { - if (bit_istrue(sys.suspend,SUSPEND_ENABLE_READY)) { - if (!(system_check_safety_door_ajar())) { - sys.state = STATE_HOLD; // Update to HOLD state to indicate door is closed and ready to resume. - } - } - } - - } while(sys.suspend); // Check for system suspend state before exiting. - -} - - -// Block until all buffered steps are executed or in a cycle state. Works with feed hold -// during a synchronize call, if it should happen. Also, waits for clean cycle end. -void protocol_buffer_synchronize() -{ - // If system is queued, ensure cycle resumes if the auto start flag is present. - protocol_auto_cycle_start(); - do { - protocol_execute_realtime(); // Check and execute run-time commands - if (sys.abort) { return; } // Check for system abort - } while (plan_get_current_block() || (sys.state == STATE_CYCLE)); -} - - -// Auto-cycle start has two purposes: 1. Resumes a plan_synchronize() call from a function that -// requires the planner buffer to empty (spindle enable, dwell, etc.) 2. As a user setting that -// automatically begins the cycle when a user enters a valid motion command manually. This is -// intended as a beginners feature to help new users to understand g-code. It can be disabled -// as a beginner tool, but (1.) still operates. If disabled, the operation of cycle start is -// manually issuing a cycle start command whenever the user is ready and there is a valid motion -// command in the planner queue. -// NOTE: This function is called from the main loop, buffer sync, and mc_line() only and executes -// when one of these conditions exist respectively: There are no more blocks sent (i.e. streaming -// is finished, single commands), a command that needs to wait for the motions in the buffer to -// execute calls a buffer sync, or the planner buffer is full and ready to go. -void protocol_auto_cycle_start() { bit_true_atomic(sys_rt_exec_state, EXEC_CYCLE_START); } diff --git a/Source code/protocol.h b/Source code/protocol.h deleted file mode 100755 index 2461a65..0000000 --- a/Source code/protocol.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - protocol.h - controls Grbl execution protocol and procedures - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef protocol_h -#define protocol_h - -// Line buffer size from the serial input stream to be executed. -// NOTE: Not a problem except for extreme cases, but the line buffer size can be too small -// and g-code blocks can get truncated. Officially, the g-code standards support up to 256 -// characters. In future versions, this will be increased, when we know how much extra -// memory space we can invest into here or we re-write the g-code parser not to have this -// buffer. -#ifndef LINE_BUFFER_SIZE - #define LINE_MAX_SIZE 20 - #define LINE_BUFFER_SIZE 80 -#endif - -// Starts Grbl main loop. It handles all incoming characters from the serial port and executes -// them as they complete. It is also responsible for finishing the initialization procedures. -void protocol_main_loop(); - -// Checks and executes a realtime command at various stop points in main program -void protocol_execute_realtime(); - -// Notify the stepper subsystem to start executing the g-code program in buffer. -// void protocol_cycle_start(); - -// Reinitializes the buffer after a feed hold for a resume. -// void protocol_cycle_reinitialize(); - -// Initiates a feed hold of the running program -// void protocol_feed_hold(); - -// Executes the auto cycle feature, if enabled. -void protocol_auto_cycle_start(); - -// Block until all buffered steps are executed -void protocol_buffer_synchronize(); - -#endif diff --git a/Source code/report.c b/Source code/report.c deleted file mode 100755 index a8a5037..0000000 --- a/Source code/report.c +++ /dev/null @@ -1,522 +0,0 @@ -/* - report.c - reporting and messaging methods - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -/* - This file functions as the primary feedback interface for Grbl. Any outgoing data, such - as the protocol status messages, feedback messages, and status reports, are stored here. - For the most part, these functions primarily are called from protocol.c methods. If a - different style feedback is desired (i.e. JSON), then a user can change these following - methods to accomodate their needs. -*/ - -#include "grbl.h" - - -// Handles the primary confirmation protocol response for streaming interfaces and human-feedback. -// For every incoming line, this method responds with an 'ok' for a successful command or an -// 'error:' to indicate some error event with the line or some critical system error during -// operation. Errors events can originate from the g-code parser, settings module, or asynchronously -// from a critical error, such as a triggered hard limit. Interface should always monitor for these -// responses. -// NOTE: In silent mode, all error codes are greater than zero. -// TODO: Install silent mode to return only numeric values, primarily for GUIs. -void report_status_message(uint8_t status_code) -{ - if (status_code == 0) { // STATUS_OK - printPgmString(PSTR("ok\r\n")); - } else { - printPgmString(PSTR("error: ")); - #ifdef REPORT_GUI_MODE - print_uint8_base10(status_code); - #else - switch(status_code) { - case STATUS_EXPECTED_COMMAND_LETTER: - printPgmString(PSTR("Expected command letter")); break; - case STATUS_BAD_NUMBER_FORMAT: - printPgmString(PSTR("Bad number format")); break; - case STATUS_INVALID_STATEMENT: - printPgmString(PSTR("Invalid statement")); break; - case STATUS_NEGATIVE_VALUE: - printPgmString(PSTR("Value < 0")); break; - case STATUS_SETTING_DISABLED: - printPgmString(PSTR("Setting disabled")); break; - case STATUS_SETTING_STEP_PULSE_MIN: - printPgmString(PSTR("Value < 3 usec")); break; - case STATUS_SETTING_READ_FAIL: - printPgmString(PSTR("EEPROM read fail. Using defaults")); break; - case STATUS_IDLE_ERROR: - printPgmString(PSTR("Not idle")); break; - case STATUS_ALARM_LOCK: - printPgmString(PSTR("Alarm lock")); break; - case STATUS_SOFT_LIMIT_ERROR: - printPgmString(PSTR("Homing not enabled")); break; - case STATUS_OVERFLOW: - printString( "E23\n" ); - //printPgmString(PSTR("Line overflow")); - break; - #ifdef MAX_STEP_RATE_HZ - case STATUS_MAX_STEP_RATE_EXCEEDED: - printPgmString(PSTR("Step rate > 30kHz")); break; - #endif - // Common g-code parser errors. - case STATUS_GCODE_MODAL_GROUP_VIOLATION: - printPgmString(PSTR("Modal group violation")); break; - case STATUS_GCODE_UNSUPPORTED_COMMAND: - printString( "E20\n" ); - //printPgmString(PSTR("Unsupported command")); - - break; - case STATUS_GCODE_UNDEFINED_FEED_RATE: - printPgmString(PSTR("Undefined feed rate")); break; - - case STATUS_UARM_ERROR: - printString( "E21\n" ); - break; - - default: - // Remaining g-code parser errors with error codes - printPgmString(PSTR("Invalid gcode ID:")); - print_uint8_base10(status_code); // Print error code for user reference - } - #endif - printPgmString(PSTR("\r\n")); - - } - -} - -// Prints alarm messages. -void report_alarm_message(int8_t alarm_code) -{ - printPgmString(PSTR("ALARM: ")); - #ifdef REPORT_GUI_MODE - print_uint8_base10(alarm_code); - #else - switch (alarm_code) { - case ALARM_HARD_LIMIT_ERROR: - printPgmString(PSTR("Hard limit")); break; - case ALARM_SOFT_LIMIT_ERROR: - printPgmString(PSTR("Soft limit")); break; - case ALARM_ABORT_CYCLE: - printPgmString(PSTR("Abort during cycle")); break; - case ALARM_PROBE_FAIL: - printPgmString(PSTR("Probe fail")); break; - case ALARM_HOMING_FAIL: - printPgmString(PSTR("Homing fail")); break; - } - #endif - printPgmString(PSTR("\r\n")); - delay_ms(500); // Force delay to ensure message clears serial write buffer. -} - -// Prints feedback messages. This serves as a centralized method to provide additional -// user feedback for things that are not of the status/alarm message protocol. These are -// messages such as setup warnings, switch toggling, and how to exit alarms. -// NOTE: For interfaces, messages are always placed within brackets. And if silent mode -// is installed, the message number codes are less than zero. -// TODO: Install silence feedback messages option in settings -void report_feedback_message(uint8_t message_code) -{ - printPgmString(PSTR("[")); - switch(message_code) { - case MESSAGE_CRITICAL_EVENT: - printPgmString(PSTR("Reset to continue")); break; - case MESSAGE_ALARM_LOCK: - printPgmString(PSTR("'$H'|'$X' to unlock")); break; - case MESSAGE_ALARM_UNLOCK: - printPgmString(PSTR("Caution: Unlocked")); break; - case MESSAGE_ENABLED: - printPgmString(PSTR("Enabled")); break; - case MESSAGE_DISABLED: - printPgmString(PSTR("Disabled")); break; - case MESSAGE_SAFETY_DOOR_AJAR: - printPgmString(PSTR("Check Door")); break; - case MESSAGE_PROGRAM_END: - printPgmString(PSTR("Pgm End")); break; - case MESSAGE_RESTORE_DEFAULTS: - printPgmString(PSTR("Restoring defaults")); break; - } - printPgmString(PSTR("]\r\n")); -} - - -// Welcome message -void report_init_message() -{ - printPgmString(PSTR("\r\nGrbl " GRBL_VERSION " ['$' for help]\r\n")); -} - -// Grbl help message -void report_grbl_help() { - #ifndef REPORT_GUI_MODE - printPgmString(PSTR("$$ (view Grbl settings)\r\n" - "$# (view # parameters)\r\n" - "$G (view parser state)\r\n" - "$I (view build info)\r\n" - "$N (view startup blocks)\r\n" - "$x=value (save Grbl setting)\r\n" - "$Nx=line (save startup block)\r\n" - "$C (check gcode mode)\r\n" - "$X (kill alarm lock)\r\n" - "$H (run homing cycle)\r\n" - "~ (cycle start)\r\n" - "! (feed hold)\r\n" - "? (current status)\r\n" - "ctrl-x (reset Grbl)\r\n")); - #endif -} - - -// Grbl global settings print out. -// NOTE: The numbering scheme here must correlate to storing in settings.c -void report_grbl_settings() { - // Print Grbl settings. - #ifdef REPORT_GUI_MODE - printPgmString(PSTR("$0=")); print_uint8_base10(settings.pulse_microseconds); - printPgmString(PSTR("\r\n$1=")); print_uint8_base10(settings.stepper_idle_lock_time); - printPgmString(PSTR("\r\n$2=")); print_uint8_base10(settings.step_invert_mask); - printPgmString(PSTR("\r\n$3=")); print_uint8_base10(settings.dir_invert_mask); - printPgmString(PSTR("\r\n$4=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)); - printPgmString(PSTR("\r\n$5=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_LIMIT_PINS)); - printPgmString(PSTR("\r\n$6=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_PROBE_PIN)); - printPgmString(PSTR("\r\n$10=")); print_uint8_base10(settings.status_report_mask); - printPgmString(PSTR("\r\n$11=")); printFloat_SettingValue(settings.junction_deviation); - printPgmString(PSTR("\r\n$12=")); printFloat_SettingValue(settings.arc_tolerance); - printPgmString(PSTR("\r\n$13=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)); - printPgmString(PSTR("\r\n$20=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)); - printPgmString(PSTR("\r\n$21=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)); - printPgmString(PSTR("\r\n$22=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)); - printPgmString(PSTR("\r\n$23=")); print_uint8_base10(settings.homing_dir_mask); - printPgmString(PSTR("\r\n$24=")); printFloat_SettingValue(settings.homing_feed_rate); - printPgmString(PSTR("\r\n$25=")); printFloat_SettingValue(settings.homing_seek_rate); - printPgmString(PSTR("\r\n$26=")); print_uint8_base10(settings.homing_debounce_delay); - printPgmString(PSTR("\r\n$27=")); printFloat_SettingValue(settings.homing_pulloff); - printPgmString(PSTR("\r\n")); - #else - printPgmString(PSTR("$0=")); print_uint8_base10(settings.pulse_microseconds); - printPgmString(PSTR(" (step pulse, usec)\r\n$1=")); print_uint8_base10(settings.stepper_idle_lock_time); - printPgmString(PSTR(" (step idle delay, msec)\r\n$2=")); print_uint8_base10(settings.step_invert_mask); - printPgmString(PSTR(" (step port invert mask:")); print_uint8_base2(settings.step_invert_mask); - printPgmString(PSTR(")\r\n$3=")); print_uint8_base10(settings.dir_invert_mask); - printPgmString(PSTR(" (dir port invert mask:")); print_uint8_base2(settings.dir_invert_mask); - printPgmString(PSTR(")\r\n$4=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)); - printPgmString(PSTR(" (step enable invert, bool)\r\n$5=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_LIMIT_PINS)); - printPgmString(PSTR(" (limit pins invert, bool)\r\n$6=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_INVERT_PROBE_PIN)); - printPgmString(PSTR(" (probe pin invert, bool)\r\n$10=")); print_uint8_base10(settings.status_report_mask); - printPgmString(PSTR(" (status report mask:")); print_uint8_base2(settings.status_report_mask); - printPgmString(PSTR(")\r\n$11=")); printFloat_SettingValue(settings.junction_deviation); - printPgmString(PSTR(" (junction deviation, mm)\r\n$12=")); printFloat_SettingValue(settings.arc_tolerance); - printPgmString(PSTR(" (arc tolerance, mm)\r\n$13=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_REPORT_INCHES)); - printPgmString(PSTR(" (report inches, bool)\r\n$20=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_SOFT_LIMIT_ENABLE)); - printPgmString(PSTR(" (soft limits, bool)\r\n$21=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HARD_LIMIT_ENABLE)); - printPgmString(PSTR(" (hard limits, bool)\r\n$22=")); print_uint8_base10(bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)); - printPgmString(PSTR(" (homing cycle, bool)\r\n$23=")); print_uint8_base10(settings.homing_dir_mask); - printPgmString(PSTR(" (homing dir invert mask:")); print_uint8_base2(settings.homing_dir_mask); - printPgmString(PSTR(")\r\n$24=")); printFloat_SettingValue(settings.homing_feed_rate); - printPgmString(PSTR(" (homing feed, mm/min)\r\n$25=")); printFloat_SettingValue(settings.homing_seek_rate); - printPgmString(PSTR(" (homing seek, mm/min)\r\n$26=")); print_uint8_base10(settings.homing_debounce_delay); - printPgmString(PSTR(" (homing debounce, msec)\r\n$27=")); printFloat_SettingValue(settings.homing_pulloff); - printPgmString(PSTR(" (homing pull-off, mm)\r\n")); - #endif - - // Print axis settings - uint8_t idx, set_idx; - uint8_t val = AXIS_SETTINGS_START_VAL; - for (set_idx=0; set_idxline_number; - } - printInteger(ln); - #endif - - #ifdef REPORT_REALTIME_RATE - // Report realtime rate - printPgmString(PSTR(",F:")); - printFloat_RateValue(st_get_realtime_rate()); - #endif - - if (bit_istrue(settings.status_report_mask,BITFLAG_RT_STATUS_LIMIT_PINS)) { - printPgmString(PSTR(",Lim:")); - print_unsigned_int8(limits_get_state(),2,N_AXIS); - } - - #ifdef REPORT_CONTROL_PIN_STATE - printPgmString(PSTR(",Ctl:")); - print_uint8_base2(CONTROL_PIN & CONTROL_MASK); - #endif - - printPgmString(PSTR(">\r\n")); -} diff --git a/Source code/report.h b/Source code/report.h deleted file mode 100755 index c88623f..0000000 --- a/Source code/report.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - report.h - reporting and messaging methods - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ -#ifndef report_h -#define report_h - -// Define Grbl status codes. -#define STATUS_OK 0 -#define STATUS_EXPECTED_COMMAND_LETTER 1 -#define STATUS_BAD_NUMBER_FORMAT 2 -#define STATUS_INVALID_STATEMENT 3 -#define STATUS_NEGATIVE_VALUE 4 -#define STATUS_SETTING_DISABLED 5 -#define STATUS_SETTING_STEP_PULSE_MIN 6 -#define STATUS_SETTING_READ_FAIL 7 -#define STATUS_IDLE_ERROR 8 -#define STATUS_ALARM_LOCK 9 -#define STATUS_SOFT_LIMIT_ERROR 10 -#define STATUS_OVERFLOW 11 -#define STATUS_MAX_STEP_RATE_EXCEEDED 12 - -#define STATUS_GCODE_UNSUPPORTED_COMMAND 20 -#define STATUS_GCODE_MODAL_GROUP_VIOLATION 21 -#define STATUS_GCODE_UNDEFINED_FEED_RATE 22 -#define STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER 23 -#define STATUS_GCODE_AXIS_COMMAND_CONFLICT 24 -#define STATUS_GCODE_WORD_REPEATED 25 -#define STATUS_GCODE_NO_AXIS_WORDS 26 -#define STATUS_GCODE_INVALID_LINE_NUMBER 27 -#define STATUS_GCODE_VALUE_WORD_MISSING 28 -#define STATUS_GCODE_UNSUPPORTED_COORD_SYS 29 -#define STATUS_GCODE_G53_INVALID_MOTION_MODE 30 -#define STATUS_GCODE_AXIS_WORDS_EXIST 31 -#define STATUS_GCODE_NO_AXIS_WORDS_IN_PLANE 32 -#define STATUS_GCODE_INVALID_TARGET 33 -#define STATUS_GCODE_ARC_RADIUS_ERROR 34 -#define STATUS_GCODE_NO_OFFSETS_IN_PLANE 35 -#define STATUS_GCODE_UNUSED_WORDS 36 -#define STATUS_GCODE_G43_DYNAMIC_AXIS_ERROR 37 - -#define STATUS_UARM_ERROR 50 - -// Define Grbl alarm codes. -#define ALARM_HARD_LIMIT_ERROR 1 -#define ALARM_SOFT_LIMIT_ERROR 2 -#define ALARM_ABORT_CYCLE 3 -#define ALARM_PROBE_FAIL 4 -#define ALARM_HOMING_FAIL 5 - -// Define Grbl feedback message codes. -#define MESSAGE_CRITICAL_EVENT 1 -#define MESSAGE_ALARM_LOCK 2 -#define MESSAGE_ALARM_UNLOCK 3 -#define MESSAGE_ENABLED 4 -#define MESSAGE_DISABLED 5 -#define MESSAGE_SAFETY_DOOR_AJAR 6 -#define MESSAGE_PROGRAM_END 7 -#define MESSAGE_RESTORE_DEFAULTS 8 - -// Prints system status messages. -void report_status_message(uint8_t status_code); - -// Prints system alarm messages. -void report_alarm_message(int8_t alarm_code); - -// Prints miscellaneous feedback messages. -void report_feedback_message(uint8_t message_code); - -// Prints welcome message -void report_init_message(); - -// Prints Grbl help and current global settings -void report_grbl_help(); - -// Prints Grbl global settings -void report_grbl_settings(); - -// Prints an echo of the pre-parsed line received right before execution. -void report_echo_line_received(char *line); - -// Prints realtime status report -void report_realtime_status(); - -// Prints recorded probe position -void report_probe_parameters(); - -// Prints Grbl NGC parameters (coordinate offsets, probe) -void report_ngc_parameters(); - -// Prints current g-code parser mode state -void report_gcode_modes(); - -// Prints startup line -void report_startup_line(uint8_t n, char *line); - -// Prints build info and user info -void report_build_info(char *line); - -#endif diff --git a/Source code/serial.c b/Source code/serial.c deleted file mode 100755 index 56f84e0..0000000 --- a/Source code/serial.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - serial.c - Low level functions for sending and recieving bytes via the serial port - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - - -uint8_t serial_rx_buffer[RX_BUFFER_SIZE]; -uint8_t serial_rx_buffer_head = 0; -volatile uint8_t serial_rx_buffer_tail = 0; - -uint8_t serial_tx_buffer[TX_BUFFER_SIZE]; -uint8_t serial_tx_buffer_head = 0; -volatile uint8_t serial_tx_buffer_tail = 0; - - -#ifdef ENABLE_XONXOFF - volatile uint8_t flow_ctrl = XON_SENT; // Flow control state variable -#endif - - -// Returns the number of bytes used in the RX serial buffer. -uint8_t serial_get_rx_buffer_count() -{ - uint8_t rtail = serial_rx_buffer_tail; // Copy to limit multiple calls to volatile - if (serial_rx_buffer_head >= rtail) { return(serial_rx_buffer_head-rtail); } - return (RX_BUFFER_SIZE - (rtail-serial_rx_buffer_head)); -} - - -// Returns the number of bytes used in the TX serial buffer. -// NOTE: Not used except for debugging and ensuring no TX bottlenecks. -uint8_t serial_get_tx_buffer_count() -{ - uint8_t ttail = serial_tx_buffer_tail; // Copy to limit multiple calls to volatile - if (serial_tx_buffer_head >= ttail) { return(serial_tx_buffer_head-ttail); } - return (TX_BUFFER_SIZE - (ttail-serial_tx_buffer_head)); -} - - -void serial_init() -{ - // Set baud rate - #if BAUD_RATE < 57600 - uint16_t UBRR0_value = ((F_CPU / (8L * BAUD_RATE)) - 1)/2 ; - UCSR0A &= ~(1 << U2X0); // baud doubler off - Only needed on Uno XXX - #else - uint16_t UBRR0_value = ((F_CPU / (4L * BAUD_RATE)) - 1)/2; - UCSR0A |= (1 << U2X0); // baud doubler on for high baud rates, i.e. 115200 - #endif - UBRR0H = UBRR0_value >> 8; - UBRR0L = UBRR0_value; - - // enable rx and tx - UCSR0B |= 1<= RX_BUFFER_FULL) && flow_ctrl == XON_SENT) { - flow_ctrl = SEND_XOFF; - UCSR0B |= (1 << UDRIE0); // Force TX - } - #endif - - } - //TODO: else alarm on overflow? - } -} - - -void serial_reset_read_buffer() -{ - serial_rx_buffer_tail = serial_rx_buffer_head; - - #ifdef ENABLE_XONXOFF - flow_ctrl = XON_SENT; - #endif -} diff --git a/Source code/serial.h b/Source code/serial.h deleted file mode 100755 index 4cdbcb0..0000000 --- a/Source code/serial.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - serial.c - Low level functions for sending and recieving bytes via the serial port - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef serial_h -#define serial_h - - -#ifndef RX_BUFFER_SIZE - #define RX_BUFFER_SIZE 128 -#endif -#ifndef TX_BUFFER_SIZE - #define TX_BUFFER_SIZE 128 -#endif - -#define SERIAL_NO_DATA 0xff - -#ifdef ENABLE_XONXOFF - #define RX_BUFFER_FULL 96 // XOFF high watermark - #define RX_BUFFER_LOW 64 // XON low watermark - #define SEND_XOFF 1 - #define SEND_XON 2 - #define XOFF_SENT 3 - #define XON_SENT 4 - #define XOFF_CHAR 0x13 - #define XON_CHAR 0x11 -#endif - -void serial_init(); - -// Writes one byte to the TX serial buffer. Called by main program. -void serial_write(uint8_t data); - -// Fetches the first byte in the serial read buffer. Called by main program. -uint8_t serial_read(); - -// Reset and empty data in read buffer. Used by e-stop and reset. -void serial_reset_read_buffer(); - -// Returns the number of bytes used in the RX serial buffer. -uint8_t serial_get_rx_buffer_count(); - -// Returns the number of bytes used in the TX serial buffer. -// NOTE: Not used except for debugging and ensuring no TX bottlenecks. -uint8_t serial_get_tx_buffer_count(); - -#endif diff --git a/Source code/settings.c b/Source code/settings.c deleted file mode 100755 index c85c3fb..0000000 --- a/Source code/settings.c +++ /dev/null @@ -1,323 +0,0 @@ -/* - settings.c - eeprom configuration handling - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - -settings_t settings; - - -// Method to store startup lines into EEPROM -void settings_store_startup_line(uint8_t n, char *line) -{ - uint32_t addr = n*(LINE_BUFFER_SIZE+1)+EEPROM_ADDR_STARTUP_BLOCK; - memcpy_to_eeprom_with_checksum(addr,(char*)line, LINE_BUFFER_SIZE); -} - - -// Method to store build info into EEPROM -void settings_store_build_info(char *line) -{ - memcpy_to_eeprom_with_checksum(EEPROM_ADDR_BUILD_INFO,(char*)line, LINE_BUFFER_SIZE); -} - - -// Method to store coord data parameters into EEPROM -void settings_write_coord_data(uint8_t coord_select, float *coord_data) -{ - uint32_t addr = coord_select*(sizeof(float)*N_AXIS+1) + EEPROM_ADDR_PARAMETERS; - memcpy_to_eeprom_with_checksum(addr,(char*)coord_data, sizeof(float)*N_AXIS); -} - - -// Method to store Grbl global settings struct and version number into EEPROM -void write_global_settings() -{ - eeprom_put_char(0, SETTINGS_VERSION); - memcpy_to_eeprom_with_checksum(EEPROM_ADDR_GLOBAL, (char*)&settings, sizeof(settings_t)); -} - - -// Method to restore EEPROM-saved Grbl global settings back to defaults. -void settings_restore(uint8_t restore_flag) { - if (restore_flag & SETTINGS_RESTORE_DEFAULTS) { - settings.pulse_microseconds = DEFAULT_STEP_PULSE_MICROSECONDS; - settings.stepper_idle_lock_time = DEFAULT_STEPPER_IDLE_LOCK_TIME; - settings.step_invert_mask = DEFAULT_STEPPING_INVERT_MASK; - settings.dir_invert_mask = DEFAULT_DIRECTION_INVERT_MASK; - settings.status_report_mask = DEFAULT_STATUS_REPORT_MASK; - settings.junction_deviation = DEFAULT_JUNCTION_DEVIATION; - settings.arc_tolerance = DEFAULT_ARC_TOLERANCE; - settings.homing_dir_mask = DEFAULT_HOMING_DIR_MASK; - settings.homing_feed_rate = DEFAULT_HOMING_FEED_RATE; - settings.homing_seek_rate = DEFAULT_HOMING_SEEK_RATE; - settings.homing_debounce_delay = DEFAULT_HOMING_DEBOUNCE_DELAY; - settings.homing_pulloff = DEFAULT_HOMING_PULLOFF; - - settings.flags = 0; - if (DEFAULT_REPORT_INCHES) { settings.flags |= BITFLAG_REPORT_INCHES; } - if (DEFAULT_INVERT_ST_ENABLE) { settings.flags |= BITFLAG_INVERT_ST_ENABLE; } - if (DEFAULT_INVERT_LIMIT_PINS) { settings.flags |= BITFLAG_INVERT_LIMIT_PINS; } - if (DEFAULT_SOFT_LIMIT_ENABLE) { settings.flags |= BITFLAG_SOFT_LIMIT_ENABLE; } - if (DEFAULT_HARD_LIMIT_ENABLE) { settings.flags |= BITFLAG_HARD_LIMIT_ENABLE; } - if (DEFAULT_HOMING_ENABLE) { settings.flags |= BITFLAG_HOMING_ENABLE; } - - settings.steps_per_mm[X_AXIS] = DEFAULT_X_STEPS_PER_MM; - settings.steps_per_mm[Y_AXIS] = DEFAULT_Y_STEPS_PER_MM; - settings.steps_per_mm[Z_AXIS] = DEFAULT_Z_STEPS_PER_MM; - settings.max_rate[X_AXIS] = DEFAULT_X_MAX_RATE; - settings.max_rate[Y_AXIS] = DEFAULT_Y_MAX_RATE; - settings.max_rate[Z_AXIS] = DEFAULT_Z_MAX_RATE; - settings.acceleration[X_AXIS] = DEFAULT_X_ACCELERATION; - settings.acceleration[Y_AXIS] = DEFAULT_Y_ACCELERATION; - settings.acceleration[Z_AXIS] = DEFAULT_Z_ACCELERATION; - settings.max_travel[X_AXIS] = (-DEFAULT_X_MAX_TRAVEL); - settings.max_travel[Y_AXIS] = (-DEFAULT_Y_MAX_TRAVEL); - settings.max_travel[Z_AXIS] = (-DEFAULT_Z_MAX_TRAVEL); - - write_global_settings(); - } - - if (restore_flag & SETTINGS_RESTORE_PARAMETERS) { - uint8_t idx; - float coord_data[N_AXIS]; - memset(&coord_data, 0, sizeof(coord_data)); - for (idx=0; idx <= SETTING_INDEX_NCOORD; idx++) { settings_write_coord_data(idx, coord_data); } - } - - if (restore_flag & SETTINGS_RESTORE_STARTUP_LINES) { - #if N_STARTUP_LINE > 0 - eeprom_put_char(EEPROM_ADDR_STARTUP_BLOCK, 0); - #endif - #if N_STARTUP_LINE > 1 - eeprom_put_char(EEPROM_ADDR_STARTUP_BLOCK+(LINE_BUFFER_SIZE+1), 0); - #endif - } - - if (restore_flag & SETTINGS_RESTORE_BUILD_INFO) { eeprom_put_char(EEPROM_ADDR_BUILD_INFO , 0); } -} - - -// Reads startup line from EEPROM. Updated pointed line string data. -uint8_t settings_read_startup_line(uint8_t n, char *line) -{ - uint32_t addr = n*(LINE_BUFFER_SIZE+1)+EEPROM_ADDR_STARTUP_BLOCK; - if (!(memcpy_from_eeprom_with_checksum((char*)line, addr, LINE_BUFFER_SIZE))) { - // Reset line with default value - line[0] = 0; // Empty line - settings_store_startup_line(n, line); - return(false); - } - return(true); -} - - -// Reads startup line from EEPROM. Updated pointed line string data. -uint8_t settings_read_build_info(char *line) -{ - if (!(memcpy_from_eeprom_with_checksum((char*)line, EEPROM_ADDR_BUILD_INFO, LINE_BUFFER_SIZE))) { - // Reset line with default value - line[0] = 0; // Empty line - settings_store_build_info(line); - return(false); - } - return(true); -} - - -// Read selected coordinate data from EEPROM. Updates pointed coord_data value. -uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data) -{ - uint32_t addr = coord_select*(sizeof(float)*N_AXIS+1) + EEPROM_ADDR_PARAMETERS; - if (!(memcpy_from_eeprom_with_checksum((char*)coord_data, addr, sizeof(float)*N_AXIS))) { - // Reset with default zero vector - clear_vector_float(coord_data); - settings_write_coord_data(coord_select,coord_data); - return(false); - } - return(true); -} - - -// Reads Grbl global settings struct from EEPROM. -uint8_t read_global_settings() { - // Check version-byte of eeprom - uint8_t version = eeprom_get_char(0); - if (version == SETTINGS_VERSION) { - // Read settings-record and check checksum - if (!(memcpy_from_eeprom_with_checksum((char*)&settings, EEPROM_ADDR_GLOBAL, sizeof(settings_t)))) { - return(false); - } - } else { - return(false); - } - return(true); -} - - -// A helper method to set settings from command line -uint8_t settings_store_global_setting(uint8_t parameter, float value) { - if (value < 0.0) { return(STATUS_NEGATIVE_VALUE); } - if (parameter >= AXIS_SETTINGS_START_VAL) { - // Store axis configuration. Axis numbering sequence set by AXIS_SETTING defines. - // NOTE: Ensure the setting index corresponds to the report.c settings printout. - parameter -= AXIS_SETTINGS_START_VAL; - uint8_t set_idx = 0; - while (set_idx < AXIS_N_SETTINGS) { - if (parameter < N_AXIS) { - // Valid axis setting found. - switch (set_idx) { - case 0: - #ifdef MAX_STEP_RATE_HZ - if (value*settings.max_rate[parameter] > (MAX_STEP_RATE_HZ*60.0)) { return(STATUS_MAX_STEP_RATE_EXCEEDED); } - #endif - settings.steps_per_mm[parameter] = value; - break; - case 1: - #ifdef MAX_STEP_RATE_HZ - if (value*settings.steps_per_mm[parameter] > (MAX_STEP_RATE_HZ*60.0)) { return(STATUS_MAX_STEP_RATE_EXCEEDED); } - #endif - settings.max_rate[parameter] = value; - break; - case 2: settings.acceleration[parameter] = value*60*60; break; // Convert to mm/min^2 for grbl internal use. - case 3: settings.max_travel[parameter] = -value; break; // Store as negative for grbl internal use. - } - break; // Exit while-loop after setting has been configured and proceed to the EEPROM write call. - } else { - set_idx++; - // If axis index greater than N_AXIS or setting index greater than number of axis settings, error out. - if ((parameter < AXIS_SETTINGS_INCREMENT) || (set_idx == AXIS_N_SETTINGS)) { return(STATUS_INVALID_STATEMENT); } - parameter -= AXIS_SETTINGS_INCREMENT; - } - } - } else { - // Store non-axis Grbl settings - uint8_t int_value = trunc(value); - switch(parameter) { - case 0: - if (int_value < 3) { return(STATUS_SETTING_STEP_PULSE_MIN); } - settings.pulse_microseconds = int_value; break; - case 1: settings.stepper_idle_lock_time = int_value; break; - case 2: - settings.step_invert_mask = int_value; - st_generate_step_dir_invert_masks(); // Regenerate step and direction port invert masks. - break; - case 3: - settings.dir_invert_mask = int_value; - st_generate_step_dir_invert_masks(); // Regenerate step and direction port invert masks. - break; - case 4: // Reset to ensure change. Immediate re-init may cause problems. - if (int_value) { settings.flags |= BITFLAG_INVERT_ST_ENABLE; } - else { settings.flags &= ~BITFLAG_INVERT_ST_ENABLE; } - break; - case 5: // Reset to ensure change. Immediate re-init may cause problems. - if (int_value) { settings.flags |= BITFLAG_INVERT_LIMIT_PINS; } - else { settings.flags &= ~BITFLAG_INVERT_LIMIT_PINS; } - break; - case 6: // Reset to ensure change. Immediate re-init may cause problems. - if (int_value) { settings.flags |= BITFLAG_INVERT_PROBE_PIN; } - else { settings.flags &= ~BITFLAG_INVERT_PROBE_PIN; } - break; - case 10: settings.status_report_mask = int_value; break; - case 11: settings.junction_deviation = value; break; - case 12: settings.arc_tolerance = value; break; - case 13: - if (int_value) { settings.flags |= BITFLAG_REPORT_INCHES; } - else { settings.flags &= ~BITFLAG_REPORT_INCHES; } - break; - case 20: - if (int_value) { - if (bit_isfalse(settings.flags, BITFLAG_HOMING_ENABLE)) { return(STATUS_SOFT_LIMIT_ERROR); } - settings.flags |= BITFLAG_SOFT_LIMIT_ENABLE; - } else { settings.flags &= ~BITFLAG_SOFT_LIMIT_ENABLE; } - break; - case 21: - if (int_value) { settings.flags |= BITFLAG_HARD_LIMIT_ENABLE; } - else { settings.flags &= ~BITFLAG_HARD_LIMIT_ENABLE; } - limits_init(); // Re-init to immediately change. NOTE: Nice to have but could be problematic later. - break; - case 22: - if (int_value) { settings.flags |= BITFLAG_HOMING_ENABLE; } - else { - settings.flags &= ~BITFLAG_HOMING_ENABLE; - settings.flags &= ~BITFLAG_SOFT_LIMIT_ENABLE; // Force disable soft-limits. - } - break; - case 23: settings.homing_dir_mask = int_value; break; - case 24: settings.homing_feed_rate = value; break; - case 25: settings.homing_seek_rate = value; break; - case 26: settings.homing_debounce_delay = int_value; break; - case 27: settings.homing_pulloff = value; break; - default: - return(STATUS_INVALID_STATEMENT); - } - } - write_global_settings(); - return(STATUS_OK); -} - - -// Initialize the config subsystem -void settings_init() { - if(!read_global_settings()) { - report_status_message(STATUS_SETTING_READ_FAIL); - settings_restore(SETTINGS_RESTORE_ALL); // Force restore all EEPROM data. - report_grbl_settings(); - } - - // NOTE: Checking paramater data, startup lines, and build info string should be done here, - // but it seems fairly redundant. Each of these can be manually checked and reset or restored. - // Check all parameter data into a dummy variable. If error, reset to zero, otherwise do nothing. - // float coord_data[N_AXIS]; - // uint8_t i; - // for (i=0; i<=SETTING_INDEX_NCOORD; i++) { - // if (!settings_read_coord_data(i, coord_data)) { - // report_status_message(STATUS_SETTING_READ_FAIL); - // } - // } - // NOTE: Startup lines are checked and executed by protocol_main_loop at the end of initialization. -} - - -// Returns step pin mask according to Grbl internal axis indexing. -uint8_t get_step_pin_mask(uint8_t axis_idx) -{ - if ( axis_idx == X_AXIS ) { return((1<. -*/ - -#ifndef settings_h -#define settings_h - -#include "grbl.h" - - -// Version of the EEPROM data. Will be used to migrate existing data from older versions of Grbl -// when firmware is upgraded. Always stored in byte 0 of eeprom -#define SETTINGS_VERSION 9 // NOTE: Check settings_reset() when moving to next version. - -// Define bit flag masks for the boolean settings in settings.flag. -#define BITFLAG_REPORT_INCHES bit(0) -// #define BITFLAG_AUTO_START bit(1) // Obsolete. Don't alter to keep back compatibility. -#define BITFLAG_INVERT_ST_ENABLE bit(2) -#define BITFLAG_HARD_LIMIT_ENABLE bit(3) -#define BITFLAG_HOMING_ENABLE bit(4) -#define BITFLAG_SOFT_LIMIT_ENABLE bit(5) -#define BITFLAG_INVERT_LIMIT_PINS bit(6) -#define BITFLAG_INVERT_PROBE_PIN bit(7) - -// Define status reporting boolean enable bit flags in settings.status_report_mask -#define BITFLAG_RT_STATUS_MACHINE_POSITION bit(0) -#define BITFLAG_RT_STATUS_WORK_POSITION bit(1) -#define BITFLAG_RT_STATUS_PLANNER_BUFFER bit(2) -#define BITFLAG_RT_STATUS_SERIAL_RX bit(3) -#define BITFLAG_RT_STATUS_LIMIT_PINS bit(4) - -// Define settings restore bitflags. -#define SETTINGS_RESTORE_ALL 0xFF // All bitflags -#define SETTINGS_RESTORE_DEFAULTS bit(0) -#define SETTINGS_RESTORE_PARAMETERS bit(1) -#define SETTINGS_RESTORE_STARTUP_LINES bit(2) -#define SETTINGS_RESTORE_BUILD_INFO bit(3) - -// Define EEPROM memory address location values for Grbl settings and parameters -// NOTE: The Atmega328p has 1KB EEPROM. The upper half is reserved for parameters and -// the startup script. The lower half contains the global settings and space for future -// developments. -#define EEPROM_ADDR_GLOBAL 2049U -#define EEPROM_ADDR_PARAMETERS 2560U -#define EEPROM_ADDR_STARTUP_BLOCK 2816U -#define EEPROM_ADDR_BUILD_INFO 2990U - -// Define EEPROM address indexing for coordinate parameters -#define N_COORDINATE_SYSTEM 6 // Number of supported work coordinate systems (from index 1) -#define SETTING_INDEX_NCOORD N_COORDINATE_SYSTEM+1 // Total number of system stored (from index 0) -// NOTE: Work coordinate indices are (0=G54, 1=G55, ... , 6=G59) -#define SETTING_INDEX_G28 N_COORDINATE_SYSTEM // Home position 1 -#define SETTING_INDEX_G30 N_COORDINATE_SYSTEM+1 // Home position 2 -// #define SETTING_INDEX_G92 N_COORDINATE_SYSTEM+2 // Coordinate offset (G92.2,G92.3 not supported) - -// Define Grbl axis settings numbering scheme. Starts at START_VAL, every INCREMENT, over N_SETTINGS. -#define AXIS_N_SETTINGS 4 -#define AXIS_SETTINGS_START_VAL 100 // NOTE: Reserving settings values >= 100 for axis settings. Up to 255. -#define AXIS_SETTINGS_INCREMENT 10 // Must be greater than the number of axis settings - -// Global persistent settings (Stored from byte EEPROM_ADDR_GLOBAL onwards) -typedef struct { - // Axis settings - float steps_per_mm[N_AXIS]; - float max_rate[N_AXIS]; - float acceleration[N_AXIS]; - float max_travel[N_AXIS]; - - // Remaining Grbl settings - uint8_t pulse_microseconds; - uint8_t step_invert_mask; - uint8_t dir_invert_mask; - uint8_t stepper_idle_lock_time; // If max value 255, steppers do not disable. - uint8_t status_report_mask; // Mask to indicate desired report data. - float junction_deviation; - float arc_tolerance; - - uint8_t flags; // Contains default boolean settings - - uint8_t homing_dir_mask; - float homing_feed_rate; - float homing_seek_rate; - uint16_t homing_debounce_delay; - float homing_pulloff; -} settings_t; -extern settings_t settings; - -// Initialize the configuration subsystem (load settings from EEPROM) -void settings_init(); - -// Helper function to clear and restore EEPROM defaults -void settings_restore(uint8_t restore_flag); - -// A helper method to set new settings from command line -uint8_t settings_store_global_setting(uint8_t parameter, float value); - -// Stores the protocol line variable as a startup line in EEPROM -void settings_store_startup_line(uint8_t n, char *line); - -// Reads an EEPROM startup line to the protocol line variable -uint8_t settings_read_startup_line(uint8_t n, char *line); - -// Stores build info user-defined string -void settings_store_build_info(char *line); - -// Reads build info user-defined string -uint8_t settings_read_build_info(char *line); - -// Writes selected coordinate data to EEPROM -void settings_write_coord_data(uint8_t coord_select, float *coord_data); - -// Reads selected coordinate data from EEPROM -uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data); - -// Returns the step pin mask according to Grbl's internal axis numbering -uint8_t get_step_pin_mask(uint8_t i); - -// Returns the direction pin mask according to Grbl's internal axis numbering -uint8_t get_direction_pin_mask(uint8_t i); - -// Returns the limit pin mask according to Grbl's internal axis numbering -uint8_t get_limit_pin_mask(uint8_t i); - - -#endif diff --git a/Source code/spindle_control.c b/Source code/spindle_control.c deleted file mode 100755 index b2b6eca..0000000 --- a/Source code/spindle_control.c +++ /dev/null @@ -1,141 +0,0 @@ -/* - spindle_control.c - spindle control methods - Part of Grbl - - Copyright (c) 2012-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - - -void spindle_init() -{ - // Configure variable spindle PWM and enable pin, if requried. On the Uno, PWM and enable are - // combined unless configured otherwise. - #ifdef VARIABLE_SPINDLE - SPINDLE_PWM_DDR |= (1< SPINDLE_RPM_RANGE ) { rpm = SPINDLE_RPM_RANGE; } // Prevent integer overflow - } - current_pwm = floor( rpm*(PWM_MAX_VALUE/SPINDLE_RPM_RANGE) + 0.5); - #ifdef MINIMUM_SPINDLE_PWM - if (current_pwm < MINIMUM_SPINDLE_PWM) { current_pwm = MINIMUM_SPINDLE_PWM; } - #endif - OCR_REGISTER = current_pwm; // Set PWM pin output - - // On the Uno, spindle enable and PWM are shared, unless otherwise specified. - #if defined(CPU_MAP_ATMEGA2560) || defined(USE_SPINDLE_DIR_AS_ENABLE_PIN) - #ifdef INVERT_SPINDLE_ENABLE_PIN - SPINDLE_ENABLE_PORT &= ~(1<. -*/ - -#ifndef spindle_control_h -#define spindle_control_h - - -// Initializes spindle pins and hardware PWM, if enabled. -void spindle_init(); - -// Sets spindle direction and spindle rpm via PWM, if enabled. -void spindle_run(uint8_t direction, float rpm); - -void spindle_set_state(uint8_t state, float rpm); - -// Kills spindle. -void spindle_stop(); - -#endif diff --git a/Source code/stepper.c b/Source code/stepper.c deleted file mode 100755 index 0ea5812..0000000 --- a/Source code/stepper.c +++ /dev/null @@ -1,928 +0,0 @@ -/* - stepper.c - stepper motor driver: executes motion plans using stepper motors - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" - - -// Some useful constants. -#define DT_SEGMENT (1.0/(ACCELERATION_TICKS_PER_SECOND*60.0)) // min/segment -#define REQ_MM_INCREMENT_SCALAR 1.25 -#define RAMP_ACCEL 0 -#define RAMP_CRUISE 1 -#define RAMP_DECEL 2 - -// Define Adaptive Multi-Axis Step-Smoothing(AMASS) levels and cutoff frequencies. The highest level -// frequency bin starts at 0Hz and ends at its cutoff frequency. The next lower level frequency bin -// starts at the next higher cutoff frequency, and so on. The cutoff frequencies for each level must -// be considered carefully against how much it over-drives the stepper ISR, the accuracy of the 16-bit -// timer, and the CPU overhead. Level 0 (no AMASS, normal operation) frequency bin starts at the -// Level 1 cutoff frequency and up to as fast as the CPU allows (over 30kHz in limited testing). -// NOTE: AMASS cutoff frequency multiplied by ISR overdrive factor must not exceed maximum step frequency. -// NOTE: Current settings are set to overdrive the ISR to no more than 16kHz, balancing CPU overhead -// and timer accuracy. Do not alter these settings unless you know what you are doing. -#define MAX_AMASS_LEVEL 3 -// AMASS_LEVEL0: Normal operation. No AMASS. No upper cutoff frequency. Starts at LEVEL1 cutoff frequency. -#define AMASS_LEVEL1 (F_CPU/8000) // Over-drives ISR (x2). Defined as F_CPU/(Cutoff frequency in Hz) -#define AMASS_LEVEL2 (F_CPU/4000) // Over-drives ISR (x4) -#define AMASS_LEVEL3 (F_CPU/2000) // Over-drives ISR (x8) - - -// Stores the planner block Bresenham algorithm execution data for the segments in the segment -// buffer. Normally, this buffer is partially in-use, but, for the worst case scenario, it will -// never exceed the number of accessible stepper buffer segments (SEGMENT_BUFFER_SIZE-1). -// NOTE: This data is copied from the prepped planner blocks so that the planner blocks may be -// discarded when entirely consumed and completed by the segment buffer. Also, AMASS alters this -// data for its own use. -typedef struct { - uint8_t direction_bits; - uint32_t steps[N_AXIS]; - uint32_t step_event_count; -} st_block_t; -static st_block_t st_block_buffer[SEGMENT_BUFFER_SIZE-1]; - -// Primary stepper segment ring buffer. Contains small, short line segments for the stepper -// algorithm to execute, which are "checked-out" incrementally from the first block in the -// planner buffer. Once "checked-out", the steps in the segments buffer cannot be modified by -// the planner, where the remaining planner block steps still can. -typedef struct { - uint16_t n_step; // Number of step events to be executed for this segment - uint8_t st_block_index; // Stepper block data index. Uses this information to execute this segment. - uint16_t cycles_per_tick; // Step distance traveled per ISR tick, aka step rate. - #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING - uint8_t amass_level; // Indicates AMASS level for the ISR to execute this segment - #else - uint8_t prescaler; // Without AMASS, a prescaler is required to adjust for slow timing. - #endif -} segment_t; -static segment_t segment_buffer[SEGMENT_BUFFER_SIZE]; - -// Stepper ISR data struct. Contains the running data for the main stepper ISR. -typedef struct { - // Used by the bresenham line algorithm - uint32_t counter_x, // Counter variables for the bresenham line tracer - counter_y, - counter_z; - #ifdef STEP_PULSE_DELAY - uint8_t step_bits; // Stores out_bits output to complete the step pulse delay - #endif - - uint8_t execute_step; // Flags step execution for each interrupt. - uint8_t step_pulse_time; // Step pulse reset time after step rise - uint8_t step_outbits; // The next stepping-bits to be output - uint8_t dir_outbits; - #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING - uint32_t steps[N_AXIS]; - #endif - - uint16_t step_count; // Steps remaining in line segment motion - uint8_t exec_block_index; // Tracks the current st_block index. Change indicates new block. - st_block_t *exec_block; // Pointer to the block data for the segment being executed - segment_t *exec_segment; // Pointer to the segment being executed -} stepper_t; -static stepper_t st; - -// Step segment ring buffer indices -static volatile uint8_t segment_buffer_tail; -static uint8_t segment_buffer_head; -static uint8_t segment_next_head; - -// Step and direction port invert masks. -static uint8_t step_port_invert_mask; -static uint8_t dir_port_invert_mask; - -// Used to avoid ISR nesting of the "Stepper Driver Interrupt". Should never occur though. -static volatile uint8_t busy; - -// Pointers for the step segment being prepped from the planner buffer. Accessed only by the -// main program. Pointers may be planning segments or planner blocks ahead of what being executed. -static plan_block_t *pl_block; // Pointer to the planner block being prepped -static st_block_t *st_prep_block; // Pointer to the stepper block data being prepped - -// Segment preparation data struct. Contains all the necessary information to compute new segments -// based on the current executing planner block. -typedef struct { - uint8_t st_block_index; // Index of stepper common data block being prepped - uint8_t flag_partial_block; // Flag indicating the last block completed. Time to load a new one. - - float steps_remaining; - float step_per_mm; // Current planner block step/millimeter conversion scalar - float req_mm_increment; - float dt_remainder; - - uint8_t ramp_type; // Current segment ramp state - float mm_complete; // End of velocity profile from end of current planner block in (mm). - // NOTE: This value must coincide with a step(no mantissa) when converted. - float current_speed; // Current speed at the end of the segment buffer (mm/min) - float maximum_speed; // Maximum speed of executing block. Not always nominal speed. (mm/min) - float exit_speed; // Exit speed of executing block (mm/min) - float accelerate_until; // Acceleration ramp end measured from end of block (mm) - float decelerate_after; // Deceleration ramp start measured from end of block (mm) -} st_prep_t; -static st_prep_t prep; - - -/* BLOCK VELOCITY PROFILE DEFINITION - __________________________ - /| |\ _________________ ^ - / | | \ /| |\ | - / | | \ / | | \ s - / | | | | | \ p - / | | | | | \ e - +-----+------------------------+---+--+---------------+----+ e - | BLOCK 1 ^ BLOCK 2 | d - | - time -----> EXAMPLE: Block 2 entry speed is at max junction velocity - - The planner block buffer is planned assuming constant acceleration velocity profiles and are - continuously joined at block junctions as shown above. However, the planner only actively computes - the block entry speeds for an optimal velocity plan, but does not compute the block internal - velocity profiles. These velocity profiles are computed ad-hoc as they are executed by the - stepper algorithm and consists of only 7 possible types of profiles: cruise-only, cruise- - deceleration, acceleration-cruise, acceleration-only, deceleration-only, full-trapezoid, and - triangle(no cruise). - - maximum_speed (< nominal_speed) -> + - +--------+ <- maximum_speed (= nominal_speed) /|\ - / \ / | \ - current_speed -> + \ / | + <- exit_speed - | + <- exit_speed / | | - +-------------+ current_speed -> +----+--+ - time --> ^ ^ ^ ^ - | | | | - decelerate_after(in mm) decelerate_after(in mm) - ^ ^ ^ ^ - | | | | - accelerate_until(in mm) accelerate_until(in mm) - - The step segment buffer computes the executing block velocity profile and tracks the critical - parameters for the stepper algorithm to accurately trace the profile. These critical parameters - are shown and defined in the above illustration. -*/ - - -// Stepper state initialization. Cycle should only start if the st.cycle_start flag is -// enabled. Startup init and limits call this function but shouldn't start the cycle. -void st_wake_up() -{ - // Enable stepper drivers. - //if (bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)) { STEPPERS_DISABLE_PORT |= (1<> 3); - // Set delay between direction pin write and step command. - OCR0A = -(((settings.pulse_microseconds)*TICKS_PER_MICROSECOND) >> 3); - #else // Normal operation - // Set step pulse time. Ad hoc computation from oscilloscope. Uses two's complement. - st.step_pulse_time = -(((settings.pulse_microseconds-2)*TICKS_PER_MICROSECOND) >> 3); - #endif - - // Enable Stepper Driver Interrupt - TIMSK1 |= (1<>1; - // Then pulse the stepping pins - #ifdef STEP_PULSE_DELAY - - //st.step_bits = (STEP_PORT & ~STEP_MASK) | st.step_outbits; // Store out_bits to prevent overwriting. - #else // Normal operation - //STEP_PORT = (STEP_PORT & ~STEP_MASK) | st.step_outbits; - - ARML_STEP_PORT = (ARML_STEP_PORT & ~ARML_STEP_MASK) | (st.step_outbits & (1<>2; - #endif - - // Enable step pulse reset timer so that The Stepper Port Reset Interrupt can reset the signal after - // exactly settings.pulse_microseconds microseconds, independent of the main Timer1 prescaler. - TCNT0 = st.step_pulse_time; // Reload Timer0 counter - TCCR0B = (1<prescaler<cycles_per_tick; - st.step_count = st.exec_segment->n_step; // NOTE: Can sometimes be zero when moving slow. - // If the new segment starts a new planner block, initialize stepper variables and counters. - // NOTE: When the segment data index changes, this indicates a new planner block. - if ( st.exec_block_index != st.exec_segment->st_block_index ) { - st.exec_block_index = st.exec_segment->st_block_index; - st.exec_block = &st_block_buffer[st.exec_block_index]; - - // Initialize Bresenham line and distance counters - st.counter_x = st.counter_y = st.counter_z = (st.exec_block->step_event_count >> 1); - } - st.dir_outbits = st.exec_block->direction_bits ^ dir_port_invert_mask; - - #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING - // With AMASS enabled, adjust Bresenham axis increment counters according to AMASS level. - st.steps[X_AXIS] = st.exec_block->steps[X_AXIS] >> st.exec_segment->amass_level; - st.steps[Y_AXIS] = st.exec_block->steps[Y_AXIS] >> st.exec_segment->amass_level; - st.steps[Z_AXIS] = st.exec_block->steps[Z_AXIS] >> st.exec_segment->amass_level; - #endif - - } else { - // Segment buffer empty. Shutdown. - st_go_idle(); - bit_true_atomic(sys_rt_exec_state,EXEC_CYCLE_STOP); // Flag main program for cycle end - return; // Nothing to do but exit. - } - } - - - // Check probing state. - probe_state_monitor(); - - // Reset step out bits. - st.step_outbits = 0; - - // Execute step displacement profile by Bresenham line algorithm - #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING - st.counter_x += st.steps[X_AXIS]; - #else - st.counter_x += st.exec_block->steps[X_AXIS]; - #endif - if (st.counter_x > st.exec_block->step_event_count) { - st.step_outbits |= (1<step_event_count; - if (st.exec_block->direction_bits & (1<steps[Y_AXIS]; - #endif - if (st.counter_y > st.exec_block->step_event_count) { - st.step_outbits |= (1<step_event_count; - if (st.exec_block->direction_bits & (1<steps[Z_AXIS]; - #endif - if (st.counter_z > st.exec_block->step_event_count) { - st.step_outbits |= (1<step_event_count; - if (st.exec_block->direction_bits & (1<>2; - - TCCR0B = 0; // Disable Timer0 to prevent re-entering this interrupt when it's not needed. -} -#ifdef STEP_PULSE_DELAY - // This interrupt is used only when STEP_PULSE_DELAY is enabled. Here, the step pulse is - // initiated after the STEP_PULSE_DELAY time period has elapsed. The ISR TIMER2_OVF interrupt - // will then trigger after the appropriate settings.pulse_microseconds, as in normal operation. - // The new timing between direction, step pulse, and step complete events are setup in the - // st_wake_up() routine. - ISR(TIMER0_COMPA_vect) - { - //STEP_PORT = st.step_bits; // Begin step pulse. - // >2; - } -#endif - - -// Generates the step and direction port invert masks used in the Stepper Interrupt Driver. -void st_generate_step_dir_invert_masks() -{ - uint8_t idx; - step_port_invert_mask = 0; - dir_port_invert_mask = 0; - for (idx=0; idx>2; - - ARML_DIRECTION_PORT = (ARML_DIRECTION_PORT & ~ARML_DIRECTION_MASK) | (dir_port_invert_mask & (1<>1; -} - - -// Initialize and start the stepper motor subsystem -void stepper_init() -{ - // Configure step and direction interface pins -// STEP_DDR |= STEP_MASK; -// STEPPERS_DISABLE_DDR |= 1<entry_speed_sqr = prep.current_speed*prep.current_speed; // Update entry speed. - pl_block = NULL; // Flag st_prep_segment() to load new velocity profile. - } -} - - -/* Prepares step segment buffer. Continuously called from main program. - - The segment buffer is an intermediary buffer interface between the execution of steps - by the stepper algorithm and the velocity profiles generated by the planner. The stepper - algorithm only executes steps within the segment buffer and is filled by the main program - when steps are "checked-out" from the first block in the planner buffer. This keeps the - step execution and planning optimization processes atomic and protected from each other. - The number of steps "checked-out" from the planner buffer and the number of segments in - the segment buffer is sized and computed such that no operation in the main program takes - longer than the time it takes the stepper algorithm to empty it before refilling it. - Currently, the segment buffer conservatively holds roughly up to 40-50 msec of steps. - NOTE: Computation units are in steps, millimeters, and minutes. -*/ -void st_prep_buffer() -{ - - if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { - // Check if we still need to generate more segments for a motion suspend. - if (prep.current_speed == 0.0) { return; } // Nothing to do. Bail. - } - - while (segment_buffer_tail != segment_next_head) { // Check if we need to fill the buffer. - - // Determine if we need to load a new planner block or if the block has been replanned. - if (pl_block == NULL) { - pl_block = plan_get_current_block(); // Query planner for a queued block - if (pl_block == NULL) { return; } // No planner blocks. Exit. - - // Check if the segment buffer completed the last planner block. If so, load the Bresenham - // data for the block. If not, we are still mid-block and the velocity profile was updated. - if (prep.flag_partial_block) { - prep.flag_partial_block = false; // Reset flag - } else { - // Increment stepper common data index to store new planner block data. - if ( ++prep.st_block_index == (SEGMENT_BUFFER_SIZE-1) ) { prep.st_block_index = 0; } - - // Prepare and copy Bresenham algorithm segment data from the new planner block, so that - // when the segment buffer completes the planner block, it may be discarded when the - // segment buffer finishes the prepped block, but the stepper ISR is still executing it. - st_prep_block = &st_block_buffer[prep.st_block_index]; - st_prep_block->direction_bits = pl_block->direction_bits; - #ifndef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING - st_prep_block->steps[X_AXIS] = pl_block->steps[X_AXIS]; - st_prep_block->steps[Y_AXIS] = pl_block->steps[Y_AXIS]; - st_prep_block->steps[Z_AXIS] = pl_block->steps[Z_AXIS]; - st_prep_block->step_event_count = pl_block->step_event_count; - #else - // With AMASS enabled, simply bit-shift multiply all Bresenham data by the max AMASS - // level, such that we never divide beyond the original data anywhere in the algorithm. - // If the original data is divided, we can lose a step from integer roundoff. - st_prep_block->steps[X_AXIS] = pl_block->steps[X_AXIS] << MAX_AMASS_LEVEL; - st_prep_block->steps[Y_AXIS] = pl_block->steps[Y_AXIS] << MAX_AMASS_LEVEL; - st_prep_block->steps[Z_AXIS] = pl_block->steps[Z_AXIS] << MAX_AMASS_LEVEL; - st_prep_block->step_event_count = pl_block->step_event_count << MAX_AMASS_LEVEL; - #endif - - // Initialize segment buffer data for generating the segments. - prep.steps_remaining = pl_block->step_event_count; - prep.step_per_mm = prep.steps_remaining/pl_block->millimeters; - prep.req_mm_increment = REQ_MM_INCREMENT_SCALAR/prep.step_per_mm; - - prep.dt_remainder = 0.0; // Reset for new planner block - - if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { - // Override planner block entry speed and enforce deceleration during feed hold. - prep.current_speed = prep.exit_speed; - pl_block->entry_speed_sqr = prep.exit_speed*prep.exit_speed; - } - else { prep.current_speed = sqrt(pl_block->entry_speed_sqr); } - } - - /* --------------------------------------------------------------------------------- - Compute the velocity profile of a new planner block based on its entry and exit - speeds, or recompute the profile of a partially-completed planner block if the - planner has updated it. For a commanded forced-deceleration, such as from a feed - hold, override the planner velocities and decelerate to the target exit speed. - */ - prep.mm_complete = 0.0; // Default velocity profile complete at 0.0mm from end of block. - float inv_2_accel = 0.5/pl_block->acceleration; - if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { // [Forced Deceleration to Zero Velocity] - // Compute velocity profile parameters for a feed hold in-progress. This profile overrides - // the planner block profile, enforcing a deceleration to zero speed. - prep.ramp_type = RAMP_DECEL; - // Compute decelerate distance relative to end of block. - float decel_dist = pl_block->millimeters - inv_2_accel*pl_block->entry_speed_sqr; - if (decel_dist < 0.0) { - // Deceleration through entire planner block. End of feed hold is not in this block. - prep.exit_speed = sqrt(pl_block->entry_speed_sqr-2*pl_block->acceleration*pl_block->millimeters); - } else { - prep.mm_complete = decel_dist; // End of feed hold. - prep.exit_speed = 0.0; - } - } else { // [Normal Operation] - // Compute or recompute velocity profile parameters of the prepped planner block. - prep.ramp_type = RAMP_ACCEL; // Initialize as acceleration ramp. - prep.accelerate_until = pl_block->millimeters; - prep.exit_speed = plan_get_exec_block_exit_speed(); - float exit_speed_sqr = prep.exit_speed*prep.exit_speed; - float intersect_distance = - 0.5*(pl_block->millimeters+inv_2_accel*(pl_block->entry_speed_sqr-exit_speed_sqr)); - if (intersect_distance > 0.0) { - if (intersect_distance < pl_block->millimeters) { // Either trapezoid or triangle types - // NOTE: For acceleration-cruise and cruise-only types, following calculation will be 0.0. - prep.decelerate_after = inv_2_accel*(pl_block->nominal_speed_sqr-exit_speed_sqr); - if (prep.decelerate_after < intersect_distance) { // Trapezoid type - prep.maximum_speed = sqrt(pl_block->nominal_speed_sqr); - if (pl_block->entry_speed_sqr == pl_block->nominal_speed_sqr) { - // Cruise-deceleration or cruise-only type. - prep.ramp_type = RAMP_CRUISE; - } else { - // Full-trapezoid or acceleration-cruise types - prep.accelerate_until -= inv_2_accel*(pl_block->nominal_speed_sqr-pl_block->entry_speed_sqr); - } - } else { // Triangle type - prep.accelerate_until = intersect_distance; - prep.decelerate_after = intersect_distance; - prep.maximum_speed = sqrt(2.0*pl_block->acceleration*intersect_distance+exit_speed_sqr); - } - } else { // Deceleration-only type - prep.ramp_type = RAMP_DECEL; - // prep.decelerate_after = pl_block->millimeters; - prep.maximum_speed = prep.current_speed; - } - } else { // Acceleration-only type - prep.accelerate_until = 0.0; - // prep.decelerate_after = 0.0; - prep.maximum_speed = prep.exit_speed; - } - } - } - - // Initialize new segment - segment_t *prep_segment = &segment_buffer[segment_buffer_head]; - - // Set new segment to point to the current segment data block. - prep_segment->st_block_index = prep.st_block_index; - - /*------------------------------------------------------------------------------------ - Compute the average velocity of this new segment by determining the total distance - traveled over the segment time DT_SEGMENT. The following code first attempts to create - a full segment based on the current ramp conditions. If the segment time is incomplete - when terminating at a ramp state change, the code will continue to loop through the - progressing ramp states to fill the remaining segment execution time. However, if - an incomplete segment terminates at the end of the velocity profile, the segment is - considered completed despite having a truncated execution time less than DT_SEGMENT. - The velocity profile is always assumed to progress through the ramp sequence: - acceleration ramp, cruising state, and deceleration ramp. Each ramp's travel distance - may range from zero to the length of the block. Velocity profiles can end either at - the end of planner block (typical) or mid-block at the end of a forced deceleration, - such as from a feed hold. - */ - float dt_max = DT_SEGMENT; // Maximum segment time - float dt = 0.0; // Initialize segment time - float time_var = dt_max; // Time worker variable - float mm_var; // mm-Distance worker variable - float speed_var; // Speed worker variable - float mm_remaining = pl_block->millimeters; // New segment distance from end of block. - float minimum_mm = mm_remaining-prep.req_mm_increment; // Guarantee at least one step. - if (minimum_mm < 0.0) { minimum_mm = 0.0; } - - do { - switch (prep.ramp_type) { - case RAMP_ACCEL: - // NOTE: Acceleration ramp only computes during first do-while loop. - speed_var = pl_block->acceleration*time_var; - mm_remaining -= time_var*(prep.current_speed + 0.5*speed_var); - if (mm_remaining < prep.accelerate_until) { // End of acceleration ramp. - // Acceleration-cruise, acceleration-deceleration ramp junction, or end of block. - mm_remaining = prep.accelerate_until; // NOTE: 0.0 at EOB - time_var = 2.0*(pl_block->millimeters-mm_remaining)/(prep.current_speed+prep.maximum_speed); - if (mm_remaining == prep.decelerate_after) { prep.ramp_type = RAMP_DECEL; } - else { prep.ramp_type = RAMP_CRUISE; } - prep.current_speed = prep.maximum_speed; - } else { // Acceleration only. - prep.current_speed += speed_var; - } - break; - case RAMP_CRUISE: - // NOTE: mm_var used to retain the last mm_remaining for incomplete segment time_var calculations. - // NOTE: If maximum_speed*time_var value is too low, round-off can cause mm_var to not change. To - // prevent this, simply enforce a minimum speed threshold in the planner. - mm_var = mm_remaining - prep.maximum_speed*time_var; - if (mm_var < prep.decelerate_after) { // End of cruise. - // Cruise-deceleration junction or end of block. - time_var = (mm_remaining - prep.decelerate_after)/prep.maximum_speed; - mm_remaining = prep.decelerate_after; // NOTE: 0.0 at EOB - prep.ramp_type = RAMP_DECEL; - } else { // Cruising only. - mm_remaining = mm_var; - } - break; - default: // case RAMP_DECEL: - // NOTE: mm_var used as a misc worker variable to prevent errors when near zero speed. - speed_var = pl_block->acceleration*time_var; // Used as delta speed (mm/min) - if (prep.current_speed > speed_var) { // Check if at or below zero speed. - // Compute distance from end of segment to end of block. - mm_var = mm_remaining - time_var*(prep.current_speed - 0.5*speed_var); // (mm) - if (mm_var > prep.mm_complete) { // Deceleration only. - mm_remaining = mm_var; - prep.current_speed -= speed_var; - break; // Segment complete. Exit switch-case statement. Continue do-while loop. - } - } // End of block or end of forced-deceleration. - time_var = 2.0*(mm_remaining-prep.mm_complete)/(prep.current_speed+prep.exit_speed); - mm_remaining = prep.mm_complete; - } - dt += time_var; // Add computed ramp time to total segment time. - if (dt < dt_max) { time_var = dt_max - dt; } // **Incomplete** At ramp junction. - else { - if (mm_remaining > minimum_mm) { // Check for very slow segments with zero steps. - // Increase segment time to ensure at least one step in segment. Override and loop - // through distance calculations until minimum_mm or mm_complete. - dt_max += DT_SEGMENT; - time_var = dt_max - dt; - } else { - break; // **Complete** Exit loop. Segment execution time maxed. - } - } - } while (mm_remaining > prep.mm_complete); // **Complete** Exit loop. Profile complete. - - - /* ----------------------------------------------------------------------------------- - Compute segment step rate, steps to execute, and apply necessary rate corrections. - NOTE: Steps are computed by direct scalar conversion of the millimeter distance - remaining in the block, rather than incrementally tallying the steps executed per - segment. This helps in removing floating point round-off issues of several additions. - However, since floats have only 7.2 significant digits, long moves with extremely - high step counts can exceed the precision of floats, which can lead to lost steps. - Fortunately, this scenario is highly unlikely and unrealistic in CNC machines - supported by Grbl (i.e. exceeding 10 meters axis travel at 200 step/mm). - */ - float steps_remaining = prep.step_per_mm*mm_remaining; // Convert mm_remaining to steps - float n_steps_remaining = ceil(steps_remaining); // Round-up current steps remaining - float last_n_steps_remaining = ceil(prep.steps_remaining); // Round-up last steps remaining - prep_segment->n_step = last_n_steps_remaining-n_steps_remaining; // Compute number of steps to execute. - - // Bail if we are at the end of a feed hold and don't have a step to execute. - if (prep_segment->n_step == 0) { - if (sys.state & (STATE_HOLD|STATE_MOTION_CANCEL|STATE_SAFETY_DOOR)) { - // Less than one step to decelerate to zero speed, but already very close. AMASS - // requires full steps to execute. So, just bail. - prep.current_speed = 0.0; // NOTE: (=0.0) Used to indicate completed segment calcs for hold. - prep.dt_remainder = 0.0; - prep.steps_remaining = n_steps_remaining; - pl_block->millimeters = prep.steps_remaining/prep.step_per_mm; // Update with full steps. - plan_cycle_reinitialize(); - return; // Segment not generated, but current step data still retained. - } - } - - // Compute segment step rate. Since steps are integers and mm distances traveled are not, - // the end of every segment can have a partial step of varying magnitudes that are not - // executed, because the stepper ISR requires whole steps due to the AMASS algorithm. To - // compensate, we track the time to execute the previous segment's partial step and simply - // apply it with the partial step distance to the current segment, so that it minutely - // adjusts the whole segment rate to keep step output exact. These rate adjustments are - // typically very small and do not adversely effect performance, but ensures that Grbl - // outputs the exact acceleration and velocity profiles as computed by the planner. - dt += prep.dt_remainder; // Apply previous segment partial step execute time - float inv_rate = dt/(last_n_steps_remaining - steps_remaining); // Compute adjusted step rate inverse - prep.dt_remainder = (n_steps_remaining - steps_remaining)*inv_rate; // Update segment partial step time - - // Compute CPU cycles per step for the prepped segment. - uint32_t cycles = ceil( (TICKS_PER_MICROSECOND*1000000*60)*inv_rate ); // (cycles/step) - - #ifdef ADAPTIVE_MULTI_AXIS_STEP_SMOOTHING - // Compute step timing and multi-axis smoothing level. - // NOTE: AMASS overdrives the timer with each level, so only one prescalar is required. - if (cycles < AMASS_LEVEL1) { prep_segment->amass_level = 0; } - else { - if (cycles < AMASS_LEVEL2) { prep_segment->amass_level = 1; } - else if (cycles < AMASS_LEVEL3) { prep_segment->amass_level = 2; } - else { prep_segment->amass_level = 3; } - cycles >>= prep_segment->amass_level; - prep_segment->n_step <<= prep_segment->amass_level; - } - if (cycles < (1UL << 16)) { prep_segment->cycles_per_tick = cycles; } // < 65536 (4.1ms @ 16MHz) - else { prep_segment->cycles_per_tick = 0xffff; } // Just set the slowest speed possible. - #else - // Compute step timing and timer prescalar for normal step generation. - if (cycles < (1UL << 16)) { // < 65536 (4.1ms @ 16MHz) - prep_segment->prescaler = 1; // prescaler: 0 - prep_segment->cycles_per_tick = cycles; - } else if (cycles < (1UL << 19)) { // < 524288 (32.8ms@16MHz) - prep_segment->prescaler = 2; // prescaler: 8 - prep_segment->cycles_per_tick = cycles >> 3; - } else { - prep_segment->prescaler = 3; // prescaler: 64 - if (cycles < (1UL << 22)) { // < 4194304 (262ms@16MHz) - prep_segment->cycles_per_tick = cycles >> 6; - } else { // Just set the slowest speed possible. (Around 4 step/sec.) - prep_segment->cycles_per_tick = 0xffff; - } - } - #endif - - // Segment complete! Increment segment buffer indices. - segment_buffer_head = segment_next_head; - if ( ++segment_next_head == SEGMENT_BUFFER_SIZE ) { segment_next_head = 0; } - - // Setup initial conditions for next segment. - if (mm_remaining > prep.mm_complete) { - // Normal operation. Block incomplete. Distance remaining in block to be executed. - pl_block->millimeters = mm_remaining; - prep.steps_remaining = steps_remaining; - } else { - // End of planner block or forced-termination. No more distance to be executed. - if (mm_remaining > 0.0) { // At end of forced-termination. - // Reset prep parameters for resuming and then bail. Allow the stepper ISR to complete - // the segment queue, where realtime protocol will set new state upon receiving the - // cycle stop flag from the ISR. Prep_segment is blocked until then. - prep.current_speed = 0.0; // NOTE: (=0.0) Used to indicate completed segment calcs for hold. - prep.dt_remainder = 0.0; - prep.steps_remaining = ceil(steps_remaining); - pl_block->millimeters = prep.steps_remaining/prep.step_per_mm; // Update with full steps. - plan_cycle_reinitialize(); - return; // Bail! - } else { // End of planner block - // The planner block is complete. All steps are set to be executed in the segment buffer. - pl_block = NULL; // Set pointer to indicate check and load next planner block. - plan_discard_current_block(); - } - } - - } -} - - -// Called by realtime status reporting to fetch the current speed being executed. This value -// however is not exactly the current speed, but the speed computed in the last step segment -// in the segment buffer. It will always be behind by up to the number of segment blocks (-1) -// divided by the ACCELERATION TICKS PER SECOND in seconds. -#ifdef REPORT_REALTIME_RATE - float st_get_realtime_rate() - { - if (sys.state & (STATE_CYCLE | STATE_HOMING | STATE_HOLD | STATE_MOTION_CANCEL | STATE_SAFETY_DOOR)){ - return prep.current_speed; - } - return 0.0f; - } -#endif diff --git a/Source code/stepper.h b/Source code/stepper.h deleted file mode 100755 index 0745704..0000000 --- a/Source code/stepper.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - stepper.h - stepper motor driver: executes motion plans of planner.c using the stepper motors - Part of Grbl - - Copyright (c) 2011-2015 Sungeun K. Jeon - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#ifndef stepper_h -#define stepper_h - -#ifndef SEGMENT_BUFFER_SIZE - #define SEGMENT_BUFFER_SIZE 6 -#endif - -// Initialize and setup the stepper motor subsystem -void stepper_init(); - -// Enable steppers, but cycle does not start unless called by motion control or realtime command. -void st_wake_up(); - -// Immediately disables steppers -void st_go_idle(); - -// Generate the step and direction port invert masks. -void st_generate_step_dir_invert_masks(); - -// Reset the stepper subsystem variables -void st_reset(); - -// Reloads step segment buffer. Called continuously by realtime execution system. -void st_prep_buffer(); - -// Called by planner_recalculate() when the executing block is updated by the new plan. -void st_update_plan_block_parameters(); - -// Called by realtime status reporting if realtime rate reporting is enabled in config.h. -#ifdef REPORT_REALTIME_RATE -float st_get_realtime_rate(); -#endif - -#endif diff --git a/Source code/system.c b/Source code/system.c deleted file mode 100755 index 17495ce..0000000 --- a/Source code/system.c +++ /dev/null @@ -1,305 +0,0 @@ -/* - system.c - Handles system level commands and real-time processes - Part of Grbl - - Copyright (c) 2014-2015 Sungeun K. Jeon - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . -*/ - -#include "grbl.h" -#include "uarm_common.h" - -void system_init() -{ - CONTROL_DDR &= ~(CONTROL_MASK); // Configure as input pins - #ifdef DISABLE_CONTROL_PIN_PULL_UP - CONTROL_PORT &= ~(CONTROL_MASK); // Normal low operation. Requires external pull-down. - #else - CONTROL_PORT |= CONTROL_MASK; // Enable internal pull-up resistors. Normal high operation. - #endif - CONTROL_PCMSK |= CONTROL_MASK; // Enable specific pins of the Pin Change Interrupt - PCICR |= (1 << CONTROL_INT); // Enable Pin Change Interrupt -} - - -// Pin change interrupt for pin-out commands, i.e. cycle start, feed hold, and reset. Sets -// only the realtime command execute variable to have the main program execute these when -// its ready. This works exactly like the character-based realtime commands when picked off -// directly from the incoming serial data stream. -ISR(CONTROL_INT_vect) -{ - uint8_t pin = (CONTROL_PIN & CONTROL_MASK); - #ifndef INVERT_ALL_CONTROL_PINS - pin ^= CONTROL_INVERT_MASK; - #endif - // Enter only if any CONTROL pin is detected as active. - if (pin) { - if (bit_istrue(pin,bit(RESET_BIT))) { - mc_reset(); - } else if (bit_istrue(pin,bit(CYCLE_START_BIT))) { - bit_true(sys_rt_exec_state, EXEC_CYCLE_START); - #ifndef ENABLE_SAFETY_DOOR_INPUT_PIN - } else if (bit_istrue(pin,bit(FEED_HOLD_BIT))) { - bit_true(sys_rt_exec_state, EXEC_FEED_HOLD); - #else - } else if (bit_istrue(pin,bit(SAFETY_DOOR_BIT))) { - bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); - #endif - } - } -} - - -// Returns if safety door is ajar(T) or closed(F), based on pin state. -uint8_t system_check_safety_door_ajar() -{ - #ifdef ENABLE_SAFETY_DOOR_INPUT_PIN - #ifdef INVERT_CONTROL_PIN - return(bit_istrue(CONTROL_PIN,bit(SAFETY_DOOR_BIT))); - #else - return(bit_isfalse(CONTROL_PIN,bit(SAFETY_DOOR_BIT))); - #endif - #else - return(false); // Input pin not enabled, so just return that it's closed. - #endif -} - - -// Executes user startup script, if stored. -void system_execute_startup(char *line) -{ - uint8_t n; - for (n=0; n < N_STARTUP_LINE; n++) { - if (!(settings_read_startup_line(n, line))) { - report_status_message(STATUS_SETTING_READ_FAIL); - } else { - if (line[0] != 0) { - printString(line); // Echo startup line to indicate execution. - report_status_message(gc_execute_line(line)); - } - } - } -} - - -// Directs and executes one line of formatted input from protocol_process. While mostly -// incoming streaming g-code blocks, this also executes Grbl internal commands, such as -// settings, initiating the homing cycle, and toggling switch states. This differs from -// the realtime command module by being susceptible to when Grbl is ready to execute the -// next line during a cycle, so for switches like block delete, the switch only effects -// the lines that are processed afterward, not necessarily real-time during a cycle, -// since there are motions already stored in the buffer. However, this 'lag' should not -// be an issue, since these commands are not typically used during a cycle. -uint8_t system_execute_line(char *line) -{ - uint8_t char_counter = 1; - uint8_t helper_var = 0; // Helper variable - float parameter, value; - switch( line[char_counter] ) { - case 0 : report_grbl_help(); break; - case '$': case 'G': case 'C': case 'X': - if ( line[(char_counter+1)] != 0 ) { return(STATUS_INVALID_STATEMENT); } - switch( line[char_counter] ) { - case '$' : // Prints Grbl settings - if ( sys.state & (STATE_CYCLE | STATE_HOLD) ) { return(STATUS_IDLE_ERROR); } // Block during cycle. Takes too long to print. - else { report_grbl_settings(); } - break; - case 'G' : // Prints gcode parser state - // TODO: Move this to realtime commands for GUIs to request this data during suspend-state. - report_gcode_modes(); - break; - case 'C' : // Set check g-code mode [IDLE/CHECK] - // Perform reset when toggling off. Check g-code mode should only work if Grbl - // is idle and ready, regardless of alarm locks. This is mainly to keep things - // simple and consistent. - if ( sys.state == STATE_CHECK_MODE ) { - mc_reset(); - report_feedback_message(MESSAGE_DISABLED); - } else { - if (sys.state) { return(STATUS_IDLE_ERROR); } // Requires no alarm mode. - sys.state = STATE_CHECK_MODE; - report_feedback_message(MESSAGE_ENABLED); - } - break; - case 'X' : // Disable alarm lock [ALARM] - if (sys.state == STATE_ALARM) { - report_feedback_message(MESSAGE_ALARM_UNLOCK); - sys.state = STATE_IDLE; - // Don't run startup script. Prevents stored moves in startup from causing accidents. - if (system_check_safety_door_ajar()) { // Check safety door switch before returning. - bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); - protocol_execute_realtime(); // Enter safety door mode. - } - } // Otherwise, no effect. - break; - // case 'J' : break; // Jogging methods - // TODO: Here jogging can be placed for execution as a seperate subprogram. It does not need to be - // susceptible to other realtime commands except for e-stop. The jogging function is intended to - // be a basic toggle on/off with controlled acceleration and deceleration to prevent skipped - // steps. The user would supply the desired feedrate, axis to move, and direction. Toggle on would - // start motion and toggle off would initiate a deceleration to stop. One could 'feather' the - // motion by repeatedly toggling to slow the motion to the desired location. Location data would - // need to be updated real-time and supplied to the user through status queries. - // More controlled exact motions can be taken care of by inputting G0 or G1 commands, which are - // handled by the planner. It would be possible for the jog subprogram to insert blocks into the - // block buffer without having the planner plan them. It would need to manage de/ac-celerations - // on its own carefully. This approach could be effective and possibly size/memory efficient. -// } -// break; - } - break; - default : - // Block any system command that requires the state as IDLE/ALARM. (i.e. EEPROM, homing) - if ( !(sys.state == STATE_IDLE || sys.state == STATE_ALARM) ) { return(STATUS_IDLE_ERROR); } - switch( line[char_counter] ) { - case '#' : // Print Grbl NGC parameters - if ( line[++char_counter] != 0 ) { return(STATUS_INVALID_STATEMENT); } - else { report_ngc_parameters(); } - break; - case 'H' : // Perform homing cycle [IDLE/ALARM] - if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { - sys.state = STATE_HOMING; // Set system state variable - // Only perform homing if Grbl is idle or lost. - - // TODO: Likely not required. - if (system_check_safety_door_ajar()) { // Check safety door switch before homing. - bit_true(sys_rt_exec_state, EXEC_SAFETY_DOOR); - protocol_execute_realtime(); // Enter safety door mode. - } - - - mc_homing_cycle(); - if (!sys.abort) { // Execute startup scripts after successful homing. - sys.state = STATE_IDLE; // Set to IDLE when complete. - - - - st_go_idle(); // Set steppers to the settings idle state before returning. - system_execute_startup(line); - } - } else { return(STATUS_SETTING_DISABLED); } - break; - case 'I' : // Print or store build info. [IDLE/ALARM] - if ( line[++char_counter] == 0 ) { - settings_read_build_info(line); - report_build_info(line); - } else { // Store startup line [IDLE/ALARM] - if(line[char_counter++] != '=') { return(STATUS_INVALID_STATEMENT); } - helper_var = char_counter; // Set helper variable as counter to start of user info line. - do { - line[char_counter-helper_var] = line[char_counter]; - } while (line[char_counter++] != 0); - settings_store_build_info(line); - } - break; - case 'R' : // Restore defaults [IDLE/ALARM] - if (line[++char_counter] != 'S') { return(STATUS_INVALID_STATEMENT); } - if (line[++char_counter] != 'T') { return(STATUS_INVALID_STATEMENT); } - if (line[++char_counter] != '=') { return(STATUS_INVALID_STATEMENT); } - if (line[char_counter+2] != 0) { return(STATUS_INVALID_STATEMENT); } - switch (line[++char_counter]) { - case '$': settings_restore(SETTINGS_RESTORE_DEFAULTS); break; - case '#': settings_restore(SETTINGS_RESTORE_PARAMETERS); break; - case '*': settings_restore(SETTINGS_RESTORE_ALL); break; - default: return(STATUS_INVALID_STATEMENT); - } - report_feedback_message(MESSAGE_RESTORE_DEFAULTS); - mc_reset(); // Force reset to ensure settings are initialized correctly. - break; - case 'N' : // Startup lines. [IDLE/ALARM] - if ( line[++char_counter] == 0 ) { // Print startup lines - for (helper_var=0; helper_var < N_STARTUP_LINE; helper_var++) { - if (!(settings_read_startup_line(helper_var, line))) { - report_status_message(STATUS_SETTING_READ_FAIL); - } else { - report_startup_line(helper_var,line); - } - } - break; - } else { // Store startup line [IDLE Only] Prevents motion during ALARM. - if (sys.state != STATE_IDLE) { return(STATUS_IDLE_ERROR); } // Store only when idle. - helper_var = true; // Set helper_var to flag storing method. - // No break. Continues into default: to read remaining command characters. - } - default : // Storing setting methods [IDLE/ALARM] - if(!read_float(line, &char_counter, ¶meter)) { return(STATUS_BAD_NUMBER_FORMAT); } - if(line[char_counter++] != '=') { return(STATUS_INVALID_STATEMENT); } - if (helper_var) { // Store startup line - // Prepare sending gcode block to gcode parser by shifting all characters - helper_var = char_counter; // Set helper variable as counter to start of gcode block - do { - line[char_counter-helper_var] = line[char_counter]; - } while (line[char_counter++] != 0); - // Execute gcode block to ensure block is valid. - helper_var = gc_execute_line(line); // Set helper_var to returned status code. - if (helper_var) { return(helper_var); } - else { - helper_var = trunc(parameter); // Set helper_var to int value of parameter - settings_store_startup_line(helper_var,line); - } - } else { // Store global setting. - if(!read_float(line, &char_counter, &value)) { return(STATUS_BAD_NUMBER_FORMAT); } - if((line[char_counter] != 0) || (parameter > 255)) { return(STATUS_INVALID_STATEMENT); } - return(settings_store_global_setting((uint8_t)parameter, value)); - } - } - } - return(STATUS_OK); // If '$' command makes it to here, then everything's ok. -} - - -// Returns machine position of axis 'idx'. Must be sent a 'step' array. -// NOTE: If motor steps and machine position are not in the same coordinate frame, this function -// serves as a central place to compute the transformation. -float system_convert_axis_steps_to_mpos(int32_t *steps, uint8_t idx) -{ - float pos; - #ifdef COREXY - if (idx==X_AXIS) { - pos = (float)system_convert_corexy_to_x_axis_steps(steps) / settings.steps_per_mm[A_MOTOR]; - } else if (idx==Y_AXIS) { - pos = (float)system_convert_corexy_to_y_axis_steps(steps) / settings.steps_per_mm[B_MOTOR]; - } else { - pos = steps[idx]/settings.steps_per_mm[idx]; - } - #else - pos = steps[idx]/settings.steps_per_mm[idx]; - #endif - return(pos); -} - - -void system_convert_array_steps_to_mpos(float *position, int32_t *steps) -{ - uint8_t idx; - for (idx=0; idx. -*/ - -#ifndef system_h -#define system_h - -#include "grbl.h" - -// Define system executor bit map. Used internally by realtime protocol as realtime command flags, -// which notifies the main program to execute the specified realtime command asynchronously. -// NOTE: The system executor uses an unsigned 8-bit volatile variable (8 flag limit.) The default -// flags are always false, so the realtime protocol only needs to check for a non-zero value to -// know when there is a realtime command to execute. -#define EXEC_STATUS_REPORT bit(0) // bitmask 00000001 -#define EXEC_CYCLE_START bit(1) // bitmask 00000010 -#define EXEC_CYCLE_STOP bit(2) // bitmask 00000100 -#define EXEC_FEED_HOLD bit(3) // bitmask 00001000 -#define EXEC_RESET bit(4) // bitmask 00010000 -#define EXEC_SAFETY_DOOR bit(5) // bitmask 00100000 -#define EXEC_MOTION_CANCEL bit(6) // bitmask 01000000 - -// Alarm executor bit map. -// NOTE: EXEC_CRITICAL_EVENT is an optional flag that must be set with an alarm flag. When enabled, -// this halts Grbl into an infinite loop until the user aknowledges the problem and issues a soft- -// reset command. For example, a hard limit event needs this type of halt and aknowledgement. -#define EXEC_CRITICAL_EVENT bit(0) // bitmask 00000001 (SPECIAL FLAG. See NOTE:) -#define EXEC_ALARM_HARD_LIMIT bit(1) // bitmask 00000010 -#define EXEC_ALARM_SOFT_LIMIT bit(2) // bitmask 00000100 -#define EXEC_ALARM_ABORT_CYCLE bit(3) // bitmask 00001000 -#define EXEC_ALARM_PROBE_FAIL bit(4) // bitmask 00010000 -#define EXEC_ALARM_HOMING_FAIL bit(5) // bitmask 00100000 - -// Define system state bit map. The state variable primarily tracks the individual functions -// of Grbl to manage each without overlapping. It is also used as a messaging flag for -// critical events. -#define STATE_IDLE 0 // Must be zero. No flags. -#define STATE_ALARM bit(0) // In alarm state. Locks out all g-code processes. Allows settings access. -#define STATE_CHECK_MODE bit(1) // G-code check mode. Locks out planner and motion only. -#define STATE_HOMING bit(2) // Performing homing cycle -#define STATE_CYCLE bit(3) // Cycle is running or motions are being executed. -#define STATE_HOLD bit(4) // Active feed hold -#define STATE_SAFETY_DOOR bit(5) // Safety door is ajar. Feed holds and de-energizes system. -#define STATE_MOTION_CANCEL bit(6) // Motion cancel by feed hold and return to idle. - -// Define system suspend states. -#define SUSPEND_DISABLE 0 // Must be zero. -#define SUSPEND_ENABLE_HOLD bit(0) // Enabled. Indicates the cycle is active and currently undergoing a hold. -#define SUSPEND_ENABLE_READY bit(1) // Ready to resume with a cycle start command. -#define SUSPEND_ENERGIZE bit(2) // Re-energizes output before resume. -#define SUSPEND_MOTION_CANCEL bit(3) // Cancels resume motion. Used by probing routine. - - -// Define global system variables -typedef struct { - uint8_t abort; // System abort flag. Forces exit back to main loop for reset. - uint8_t state; // Tracks the current state of Grbl. - uint8_t suspend; // System suspend bitflag variable that manages holds, cancels, and safety door. - uint8_t soft_limit; // Tracks soft limit errors for the state machine. (boolean) - - int32_t position[N_AXIS]; // Real-time machine (aka home) position vector in steps. - // NOTE: This may need to be a volatile variable, if problems arise. - - int32_t probe_position[N_AXIS]; // Last probe position in machine coordinates and steps. - uint8_t probe_succeeded; // Tracks if last probing cycle was successful. - uint8_t homing_axis_lock; // Locks axes when limits engage. Used as an axis motion mask in the stepper ISR. -} system_t; -extern system_t sys; - -volatile uint8_t sys_probe_state; // Probing state value. Used to coordinate the probing cycle with stepper ISR. -volatile uint8_t sys_rt_exec_state; // Global realtime executor bitflag variable for state management. See EXEC bitmasks. -volatile uint8_t sys_rt_exec_alarm; // Global realtime executor bitflag variable for setting various alarms. - - -// Initialize the serial protocol -void system_init(); - -// Returns if safety door is open or closed, based on pin state. -uint8_t system_check_safety_door_ajar(); - -// Executes an internal system command, defined as a string starting with a '$' -uint8_t system_execute_line(char *line); - -// Execute the startup script lines stored in EEPROM upon initialization -void system_execute_startup(char *line); - -// Returns machine position of axis 'idx'. Must be sent a 'step' array. -float system_convert_axis_steps_to_mpos(int32_t *steps, uint8_t idx); - -// Updates a machine 'position' array based on the 'step' array sent. -void system_convert_array_steps_to_mpos(float *position, int32_t *steps); - -// CoreXY calculation only. Returns x or y-axis "steps" based on CoreXY motor steps. -#ifdef COREXY - int32_t system_convert_corexy_to_x_axis_steps(int32_t *steps); - int32_t system_convert_corexy_to_y_axis_steps(int32_t *steps); -#endif - -#endif diff --git a/Source code/uarm_angle.c b/Source code/uarm_angle.c deleted file mode 100755 index 306f2b0..0000000 --- a/Source code/uarm_angle.c +++ /dev/null @@ -1,223 +0,0 @@ -#include "uarm_angle.h" -#include "uarm_iic.h" - -//uint16_t reference_param[3] = {0}; - -struct refer_value_t { - uint16_t param_b; - uint16_t param_l; - uint16_t param_r; -} reference = {0}; - -uint16_t reference_param_pointa[3] = {0}; -uint16_t reference_param_pointb[3] = {0}; -uint16_t reference_param_pointc[3] = {0}; - -// max ){ max = temp_value; } - if( temp_value < min ){ min = temp_value; } - sum_value += temp_value; - } - - return ((sum_value - max - min)/3); -} - -float calculate_current_angle(enum angle_channel_e channel){ - uint16_t angle_reg_value = read_angle_reg_value(channel); - int long offset = 0; - float angle = 0.0; - - switch( channel ){ - case CHANNEL_ARML: offset = (int long)reference.param_l - (int long)angle_reg_value; - break; - case CHANNEL_ARMR: offset = (int long)reference.param_r - (int long)angle_reg_value; - break; - case CHANNEL_BASE: offset = (int long)reference.param_b - (int long)angle_reg_value; - break; - } - - - angle = get_point_b_angle(channel) - offset * 360.0 / 4096; - - if(angle > 360){ - angle -= 360; - } - if(angle < 0){ - angle += 360; - } - - return angle; -} - - -static void read_angle_reference_param(void){ - int8_t read_size = sizeof(struct refer_value_t); - unsigned int read_addr = EEPROM_ADDR_ANGLE_REFER; - - char *p = (char *)(&reference); - for( ; read_size > 0; read_size-- ){ - *(p++) = eeprom_get_char(read_addr++); - } - -// DB_PRINT_STR( "refer : %d, %d, %d\r\n", reference.param_l, reference.param_r, reference.param_b ); - -} - -static void write_angle_reference_param(void){ - int8_t write_size = sizeof(struct refer_value_t); - unsigned int write_addr = EEPROM_ADDR_ANGLE_REFER; - - char *p = (char *)(&reference); - for( ; write_size > 0; write_size-- ){ - eeprom_put_char( write_addr++, *(p++) ); - } - read_angle_reference_param(); - uarm.init_arml_angle = calculate_current_angle(CHANNEL_ARML); // anglea - ARMB angle -> angleb - BASE angle -> anglec -*/ -bool is_angle_legal(float anglea, float angleb, float anglec){ - if( isnan(anglea) || isnan(angleb) || isnan(anglec) ){ - //DB_PRINT_STR("value is nan\r\n"); - return false; - } - if( (anglea>ARMA_MAX_ANGLE) || (angleaARMB_MAX_ANGLE) || (angleb ARMA_ARMB_MAX_ANGLE) || (180-anglea-angleb < ARMA_ARMB_MIN_ANGLE) ){ - //DB_PRINT_STR("angle_ab error\r\n"); - return false; - } - if( (anglec>BASE_MAX_ANGLE) || (anglec (ARM_A *sin(*anglea/RAD_TO_DEG)) ){ - *angleb = -*angleb; - } - - // get the base rotation angle - - if( x == 0 ){ - if(y > 0){ - *anglec = 90; - }else{ - *anglec = -90; - } - }else if(x <0){ - *anglec = NAN; // 0){ - anglec = 90 / RAD_TO_DEG; - }else{ - anglec = -90 / RAD_TO_DEG; - } - }else if(*x < 0){ - anglec = NAN; // 0){ - anglec = 90 / RAD_TO_DEG; - }else{ - anglec = -90 / RAD_TO_DEG; - } - }else if(*x < 0){ - anglec = NAN; // 250) - { - arml_iic_stop(); - return 1; - } - } - - ARML_SCK_L; - delay_us(2); - return 0; -} - -static void arml_iic_ack(void) -{ - ARML_SCK_L; - ARML_SDA_L; - delay_us(2); - ARML_SCK_H; - delay_us(5); - - ARML_SCK_L; - delay_us(2); - ARML_SDA_H; - delay_us(2); -} - -static void arml_iic_nack(void) -{ - ARML_SCK_L; - ARML_SDA_H; - delay_us(2); - ARML_SCK_H; - delay_us(5); - - ARML_SCK_L; - delay_us(2); - ARML_SDA_H; - delay_us(2); -} - -static void arml_iic_send_byte(uint8_t data) -{ - uint8_t i; - for(i=0;i<8;i++) - { - ARML_SCK_L; - if(data&0x80) - ARML_SDA_H - else - ARML_SDA_L - delay_us(5); - ARML_SCK_H; - delay_us(5); - ARML_SCK_L; - data<<=1; - delay_us(5); - } - - delay_us(2); - ARML_SDA_H; - delay_us(2); -} - -static uint8_t arml_iic_read_byte(uint8_t ack) -{ - uint8_t i,receive=0; - - delay_us(2); - ARML_SDA_H; - delay_us(2); - - for(i=0;i<8;i++) - { - ARML_SCK_L; - delay_us(5); - ARML_SCK_H; - receive<<=1; - delay_us(5); - ARML_SDA_INPUT; - - if(ARML_READ_SDA) - receive|=0x01; - else - receive&=0xfe; - delay_us(5); - } - if(!ack) - arml_iic_nack(); - else - arml_iic_ack(); - - ARML_SCK_L; - delay_us(2); - - return receive; -} - -static void arml_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) -{ - arml_iic_start(); - arml_iic_send_byte(deviceaddr&0xfe); - arml_iic_wait_ack(); - arml_iic_send_byte(writeaddr); - arml_iic_wait_ack(); - arml_iic_send_byte(writedata); - arml_iic_wait_ack(); - arml_iic_stop(); - delay_us(10); -} - -static uint8_t arml_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) -{ - uint8_t temp; - arml_iic_start(); - arml_iic_send_byte(deviceaddr&0xfe); - arml_iic_wait_ack(); - arml_iic_send_byte(readaddr); - arml_iic_wait_ack(); - - arml_iic_start(); - arml_iic_send_byte(deviceaddr|0x01); - arml_iic_wait_ack(); - temp=arml_iic_read_byte(0); - arml_iic_stop(); - return temp; -} - -static void armr_iic_start(void) -{ - ARMR_SDA_H; - ARMR_SCK_H; - delay_us(5); - ARMR_SDA_L; - delay_us(5); - ARMR_SCK_L; - delay_us(2); -} - -static void armr_iic_stop(void) -{ - ARMR_SCK_L; - ARMR_SDA_L; - delay_us(5); - ARMR_SCK_H; - delay_us(5); - ARMR_SDA_H; - delay_us(5); -} - -static uint8_t armr_iic_wait_ack(void) -{ - uint8_t ucErrTime=0; - ARMR_SDA_H;delay_us(2); - ARMR_SCK_H;delay_us(2); - - - ARMR_SDA_INPUT; - - while(ARMR_READ_SDA) - { - ucErrTime++; - if(ucErrTime>250) - { - armr_iic_stop(); - return 1; - } - } - - ARMR_SCK_L; - delay_us(2); - return 0; -} - -static void armr_iic_ack(void) -{ - ARMR_SCK_L; - ARMR_SDA_L; - delay_us(2); - ARMR_SCK_H; - delay_us(5); - - ARMR_SCK_L; - delay_us(2); - ARMR_SDA_H; - delay_us(2); -} - -static void armr_iic_nack(void) -{ - ARMR_SCK_L; - ARMR_SDA_H; - delay_us(2); - ARMR_SCK_H; - delay_us(5); - - ARMR_SCK_L; - delay_us(2); - ARMR_SDA_H; - delay_us(2); -} - -static void armr_iic_send_byte(uint8_t data) -{ - uint8_t i; - for(i=0;i<8;i++) - { - ARMR_SCK_L; - if(data&0x80) - ARMR_SDA_H - else - ARMR_SDA_L - delay_us(5); - ARMR_SCK_H; - delay_us(5); - ARMR_SCK_L; - data<<=1; - delay_us(5); - } - - delay_us(2); - ARMR_SDA_H; - delay_us(2); -} - -static uint8_t armr_iic_read_byte(uint8_t ack) -{ - uint8_t i,receive=0; - - delay_us(2); - ARMR_SDA_H; - delay_us(2); - - for(i=0;i<8;i++) - { - ARMR_SCK_L; - delay_us(5); - ARMR_SCK_H; - receive<<=1; - delay_us(5); - ARMR_SDA_INPUT; - - if(ARMR_READ_SDA) - receive|=0x01; - else - receive&=0xfe; - delay_us(5); - } - if(!ack) - armr_iic_nack(); - else - armr_iic_ack(); - - ARMR_SCK_L; - delay_us(2); - - return receive; -} - -static void armr_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) -{ - armr_iic_start(); - armr_iic_send_byte(deviceaddr&0xfe); - armr_iic_wait_ack(); - armr_iic_send_byte(writeaddr); - armr_iic_wait_ack(); - armr_iic_send_byte(writedata); - armr_iic_wait_ack(); - armr_iic_stop(); - delay_us(10); -} - -static uint8_t armr_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) -{ - uint8_t temp; - armr_iic_start(); - armr_iic_send_byte(deviceaddr&0xfe); - armr_iic_wait_ack(); - armr_iic_send_byte(readaddr); - armr_iic_wait_ack(); - - armr_iic_start(); - armr_iic_send_byte(deviceaddr|0x01); - armr_iic_wait_ack(); - temp=armr_iic_read_byte(0); - armr_iic_stop(); - return temp; -} - -static void base_iic_start(void) -{ - BASE_SDA_H; - BASE_SCK_H; - delay_us(5); - BASE_SDA_L; - delay_us(5); - BASE_SCK_L; - delay_us(2); -} - -static void base_iic_stop(void) -{ - BASE_SCK_L; - BASE_SDA_L; - delay_us(5); - BASE_SCK_H; - delay_us(5); - BASE_SDA_H; - delay_us(5); -} - -static uint8_t base_iic_wait_ack(void) -{ - uint8_t ucErrTime=0; - BASE_SDA_H;delay_us(2); - BASE_SCK_H;delay_us(2); - - - BASE_SDA_INPUT; - - while(BASE_READ_SDA) - { - ucErrTime++; - if(ucErrTime>250) - { - base_iic_stop(); - return 1; - } - } - - BASE_SCK_L; - delay_us(2); - return 0; -} - -static void base_iic_ack(void) -{ - BASE_SCK_L; - BASE_SDA_L; - delay_us(2); - BASE_SCK_H; - delay_us(5); - - BASE_SCK_L; - delay_us(2); - BASE_SDA_H; - delay_us(2); -} - -static void base_iic_nack(void) -{ - BASE_SCK_L; - BASE_SDA_H; - delay_us(2); - BASE_SCK_H; - delay_us(5); - - BASE_SCK_L; - delay_us(2); - BASE_SDA_H; - delay_us(2); -} - -static void base_iic_send_byte(uint8_t data) -{ - uint8_t i; - for(i=0;i<8;i++) - { - BASE_SCK_L; - if(data&0x80) - BASE_SDA_H - else - BASE_SDA_L - delay_us(5); - BASE_SCK_H; - delay_us(5); - BASE_SCK_L; - data<<=1; - delay_us(5); - } - - delay_us(2); - BASE_SDA_H; - delay_us(2); -} - -static uint8_t base_iic_read_byte(uint8_t ack) -{ - uint8_t i,receive=0; - - delay_us(2); - BASE_SDA_H; - delay_us(2); - - for(i=0;i<8;i++) - { - BASE_SCK_L; - delay_us(5); - BASE_SCK_H; - receive<<=1; - delay_us(5); - BASE_SDA_INPUT; - - if(BASE_READ_SDA) - receive|=0x01; - else - receive&=0xfe; - delay_us(5); - } - if(!ack) - base_iic_nack(); - else - base_iic_ack(); - - BASE_SCK_L; - delay_us(2); - - return receive; -} - -static void base_iic_write_onebyte(uint8_t deviceaddr,uint8_t writeaddr,uint8_t writedata) -{ - base_iic_start(); - base_iic_send_byte(deviceaddr&0xfe); - base_iic_wait_ack(); - base_iic_send_byte(writeaddr); - base_iic_wait_ack(); - base_iic_send_byte(writedata); - base_iic_wait_ack(); - base_iic_stop(); - delay_us(10); -} - -static uint8_t base_iic_read_onebyte(uint8_t deviceaddr,uint8_t readaddr) -{ - uint8_t temp; - base_iic_start(); - base_iic_send_byte(deviceaddr&0xfe); - base_iic_wait_ack(); - base_iic_send_byte(readaddr); - base_iic_wait_ack(); - - base_iic_start(); - base_iic_send_byte(deviceaddr|0x01); - base_iic_wait_ack(); - temp=base_iic_read_byte(0); - base_iic_stop(); - return temp; -} - -void angle_iic_init(void){ - ARML_SDA_OUTPUT; - ARML_SCL_OUTPUT; - ARML_SDA_SET; - ARML_SCL_SET; - - ARMR_SDA_OUTPUT; - ARMR_SCL_OUTPUT; - ARMR_SDA_SET; - ARMR_SCL_SET; - - BASE_SDA_OUTPUT; - BASE_SCL_OUTPUT; - BASE_SDA_SET; - BASE_SCL_SET; -} - -void iic_write_byte(uint8_t channel, uint8_t dev_addr, uint8_t write_addr, uint8_t write_data){ - - switch(channel){ - case 0: - arml_iic_write_onebyte(dev_addr, write_addr, write_data); - break; - case 1: - armr_iic_write_onebyte(dev_addr, write_addr, write_data); - break; - case 2: - base_iic_write_onebyte(dev_addr, write_addr, write_data); - break; - } -} - -uint8_t iic_read_byte(uint8_t channel, uint8_t dev_addr, uint8_t read_addr){ - uint8_t read_byte = 0; - switch(channel){ - case 0: - read_byte = arml_iic_read_onebyte(dev_addr, read_addr); - break; - case 1: - read_byte = armr_iic_read_onebyte(dev_addr, read_addr); - break; - case 2: - read_byte = base_iic_read_onebyte(dev_addr, read_addr); - break; - } - return read_byte; -} - - - diff --git a/Source code/uarm_iic.h b/Source code/uarm_iic.h deleted file mode 100755 index b027953..0000000 --- a/Source code/uarm_iic.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _UARM_IIC_H_ -#define _UARM_IIC_H_ - -#include "uarm_common.h" - -void angle_iic_init(void); -void iic_write_byte(uint8_t channel, uint8_t dev_addr, uint8_t write_addr, uint8_t write_data); -uint8_t iic_read_byte(uint8_t channel, uint8_t dev_addr, uint8_t read_addr); - -#endif - diff --git a/Source code/uarm_peripheral.c b/Source code/uarm_peripheral.c deleted file mode 100755 index 5ce9d49..0000000 --- a/Source code/uarm_peripheral.c +++ /dev/null @@ -1,446 +0,0 @@ -#include "uarm_peripheral.h" - - -/* servo driver - * - */ -float duty_ms = 1.7; -void servo_init(void){ - time4_pwm_init(20000); - time4_set_duty( 3, (duty_ms/21.0) * 1023 ); -} - -void servo_set_angle(float angle){ - if( angle > 180 ){ angle = 0; } - if( angle < 0 ){ angle = 180; } - angle = 180 - angle; - - duty_ms = (angle / 180.0) * 2.0 + 0.7; - time4_set_duty( 3, (duty_ms/21.0) * 1023 ); - //delay_ms(500); -} - -void servo_deinit(void){ - time4_stop(); -} - -float servo_get_angle(void){ - return 180 - (duty_ms - 0.7) / 2.0 *180; -} - - /* beep driver - * - */ -uint16_t beep_duration = 520; -static void beep_creater_callback(void){ - static bool state = false; - static uint16_t cnt = 0; - if( !state ){ - state = true; - PORTL |= (1<<5); - }else{ - state = false; - PORTL &= ~(1<<5); - } - if( cnt++ > beep_duration ){ - cnt = 0; - time2_stop(); - } -} - -void beep_tone(unsigned long duration, double frequency){ - DDRL |= 1<<5; - PORTL &= ~(1<<5); - beep_duration = duration * 2; - - time2_set( frequency / 2000000.0, beep_creater_callback ); - time2_start(); -} - - -/* delay time : ms - * - */ -void cycle_report_coord(void){ - float x = 0, y = 0, z = 0, angle_e; - float angle_l = 0, angle_r = 0, angle_b =0; - char l_str[20] = {0}, r_str[20] = {0}, b_str[20] = {0}, e_str[20] = {0}; - - angle_l = calculate_current_angle(CHANNEL_ARML); // = gcode_delay_ms ){ - delay_cnt = 0; - gcode_delay_ms = 0; - uarm.gcode_delay_flag = false; - //DB_PRINT_STR( "delay done\r\n" ); - } - } - - if( cycle_delay_ms ){ // run cycle - - if( cycle_cnt++ >= cycle_delay_ms ){ - cycle_cnt = 0; - uarm.cycle_report_flag = true; - //DB_PRINT_STR( "cycle call\r\n" ); - //cycle_report_coord(); - } - } - - if( (uarm.gcode_delay_flag == false)&&( cycle_tick_flag == false) ){ - time5_stop(); - time_tick_work = false; - gcode_delay_ms = 0; - cycle_delay_ms = 0; - - delay_cnt = 0; - cycle_cnt = 0; - // DB_PRINT_STR( "stop time5\r\n" ); - } - } - - static void time_tick_init(void){ - time5_set( 0.001, tick_callback ); - time5_start(); -// DB_PRINT_STR( "start time5\r\n" ); - } - -void gcode_cmd_delay(int ms){ - gcode_delay_ms = ms; - uarm.gcode_delay_flag = true; - if( !time_tick_work ){ - time_tick_init(); - time_tick_work = true; - } -} - -void cycle_report_start(int ms){ - if( ms <= 0 ){ - cycle_report_stop(); - return; - } - - cycle_delay_ms = ms; - cycle_tick_flag = true; - - if( !time_tick_work ){ - time_tick_init(); - time_tick_work = true; - } - -} - -void cycle_report_stop(void){ - cycle_tick_flag = false; - cycle_delay_ms = 0; -} - - -/* param to eeprom - * - */ - -void read_sys_param(void){ - int8_t read_size = 0; - unsigned int read_addr = 0; - char *p = NULL; - - - p = (char *)(&(uarm.param.work_mode)); - read_size = sizeof(uarm.param.work_mode); - read_addr = EEPROM_MODE_ADDR; - for( ; read_size > 0; read_size-- ){ - *(p++) = eeprom_get_char(read_addr++); - } - - p = (char *)(&(uarm.param.front_offset)); - read_size = sizeof(uarm.param.front_offset); - read_addr = EEPROM_FRONT_ADDR; - for( ; read_size > 0; read_size-- ){ - *(p++) = eeprom_get_char(read_addr++); - } - - p = (char *)(&(uarm.param.high_offset)); - read_size = sizeof(uarm.param.high_offset); - read_addr = EEPROM_HEIGHT_ADDR; - for( ; read_size > 0; read_size-- ){ - *(p++) = eeprom_get_char(read_addr++); - } - -/* char l_str[20], r_str[20], b_str[20]; - dtostrf( uarm.param.work_mode, 5, 4, l_str ); - dtostrf( uarm.param.front_offset, 5, 4, r_str ); - dtostrf( uarm.param.high_offset, 5, 4, b_str ); - - DB_PRINT_STR( "mode:%s, front:%s, high:%s\r\n", l_str, r_str, b_str );*/ - -} - -void save_sys_param(void){ - int8_t write_size = 0; - unsigned int write_addr = 0; - char *p = NULL; - - p = (char *)(&(uarm.param.work_mode)); - write_size = sizeof(uarm.param.work_mode); - write_addr = EEPROM_MODE_ADDR; - for( ; write_size > 0; write_size-- ){ - eeprom_put_char( write_addr++, *(p++) ); - } - - p = (char *)(&(uarm.param.front_offset)); - write_size = sizeof(uarm.param.front_offset); - write_addr = EEPROM_FRONT_ADDR; - for( ; write_size > 0; write_size-- ){ - eeprom_put_char( write_addr++, *(p++) ); - } - - p = (char *)(&(uarm.param.high_offset)); - write_size = sizeof(uarm.param.high_offset); - write_addr = EEPROM_HEIGHT_ADDR; - for( ; write_size > 0; write_size-- ){ - eeprom_put_char( write_addr++, *(p++) ); - } - -} - - -void read_hardware_version(void){ -#define HARD_MASK ( 1<<6 | 1<<5 | 1<<4 | 1<<3 ) - DDRJ &= ~HARD_MASK; - if( (PINJ & HARD_MASK) == (1 <<6) ){ - strcpy( hardware_version, "V3.3.1" ); - settings_store_global_setting( 3, 0 ); - }else if( (PINJ & HARD_MASK) == 0x00 ){ - strcpy( hardware_version, "V3.3.0" ); - settings_store_global_setting( 3, 7 ); - } - settings_init(); -} - -static void _sort(unsigned int array[], unsigned int len) -{ - unsigned char i=0,j=0; - unsigned int temp = 0; - - for(i = 0; i < len; i++) - { - for(j = 0; i+j < (len-1); j++) - { - if(array[j] > array[j+1]) - { - temp = array[j]; - array[j] = array[j+1]; - array[j+1] = temp; - } - } - } -} - - -static int adc_read_value(uint8_t pin){ - uint8_t low, high; - if (pin >= 54) pin -= 54; // allow for channel or pin numbers - - ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); - ADMUX = (1 << 6) | (pin & 0x07); - ADCSRA |= (1< 100 ){ - return 1; - }else{ - return 0; - } -} - - - -void check_motor_positon(void){ - if( sys.state == STATE_IDLE ){ - float current_angle_l = 0, current_angle_r = 0, current_angle_b = 0; -// get_current_angle( sys.position[X_AXIS], sys.position[Y_AXIS], sys.position[Z_AXIS], -// ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); - coord_to_angle( uarm.coord_x, uarm.coord_y, uarm.coord_z, ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); - - float reg_angle_l = calculate_current_angle(CHANNEL_ARML); - float reg_angle_r = calculate_current_angle(CHANNEL_ARMR); - float reg_angle_b = calculate_current_angle(CHANNEL_BASE) ; - - if( fabs(current_angle_l-reg_angle_l)>0.5 || fabs(current_angle_r-reg_angle_r)>0.5 || fabs(current_angle_b-reg_angle_b+90)>0.5 ){ - - char l_str[20], r_str[20], b_str[20]; - dtostrf( current_angle_l, 5, 4, l_str ); - dtostrf( current_angle_r, 5, 4, r_str ); - dtostrf( current_angle_b, 5, 4, b_str ); - - DB_PRINT_STR( "angle1: %s, %s, %s\r\n", l_str, r_str, b_str ); - - dtostrf( reg_angle_l, 5, 4, l_str ); - dtostrf( reg_angle_r, 5, 4, r_str ); - dtostrf( reg_angle_b, 5, 4, b_str ); - - DB_PRINT_STR( "angle2: %s, %s, %s\r\n", l_str, r_str, b_str ); - - uarm.init_arml_angle = reg_angle_l; - uarm.init_armr_angle = reg_angle_r; - uarm.init_base_angle = reg_angle_b; - beep_tone(260, 1000); - - float target[3] = {0}; - target[X_AXIS] = uarm.coord_x; - target[Y_AXIS] = uarm.coord_y; - target[Z_AXIS] = uarm.coord_z; - coord_arm2effect( &target[X_AXIS], &target[Y_AXIS], &target[Z_AXIS] ); - mc_line( 0, target, 50, false ); - - } - } -} - - diff --git a/Source code/uarm_peripheral.h b/Source code/uarm_peripheral.h deleted file mode 100755 index e30ff67..0000000 --- a/Source code/uarm_peripheral.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef _UARM_PERIPHERAL_H_ -#define _UARM_PERIPHERAL_H_ - -#include "uarm_common.h" - -extern char hardware_version[8]; - - -void servo_init(void); -void servo_set_angle(float angle); -void servo_deinit(void); -float servo_get_angle(void); - -void beep_tone(unsigned long duration, double frequency); - -void gcode_cmd_delay(int ms); -void cycle_report_start(int ms); -void cycle_report_stop(void); - -void read_sys_param(void); -void save_sys_param(void); -void cycle_report_coord(void); -void read_hardware_version(void); - -void pump_on(void); -void pump_off(void); -uint8_t get_pump_status(void); - -void gripper_relesae(void); -void gripper_catch(void); -uint8_t get_gripper_status(void); - -void laser_on(void); -void laser_off(void); -uint8_t get_laser_status(void); - - - -uint8_t get_limit_switch_status(void); -uint8_t get_power_status(void); - - -void check_motor_positon(void); - - - - - -#endif diff --git a/Source code/uarm_protocol.c b/Source code/uarm_protocol.c deleted file mode 100755 index 104861b..0000000 --- a/Source code/uarm_protocol.c +++ /dev/null @@ -1,1082 +0,0 @@ -#include "grbl.h" -#include "uarm_protocol.h" -#include "uarm_common.h" -#include "uarm_peripheral.h" -#include "uarm_coord_convert.h" -#include "uarm_angle.h" -#include "uarm_swift.h" - - -struct cmd_pack_t { - char line[CMD_BUFFER_SIZE]; - uint8_t parse_result; - bool line_parse_done; - char report_str[CMD_BUFFER_SIZE]; -}; - -struct cmd_pack_t syn_queue[PACK_MAX_SIZE] = {0}; -struct cmd_pack_t asyn_pack = {0}; -uint8_t syn_pack_remain = 0; -char tail_report_str[TAIL_BUFFER_SIZE] = {0}; -char event_report_str[EVENT_BUFFER_SIZE] = {0}; - -void receive_cmd_line(char *line){ - protocol_execute_realtime(); // Runtime command check point. - if (sys.abort) { return; } // Bail to calling function upon system abort - - char *p = line; - char temp_str[10] = {0}; - if( line[0] == '$' ){ // = PACK_MAX_SIZE ){ - uart_printf( "E23 buffer full\r\n" ); - return; - } - strcpy( syn_queue[syn_receive_sp].line, p ); // = PACK_MAX_SIZE-1 ){ syn_receive_sp = 0; } - syn_pack_remain++; - -// DB_PRINT_STR( "rece sp: %d, cnt :%d\r\n", syn_receive_sp, syn_pack_remain ); - } - -} - - -static void add_result_to_report(uint8_t result, char *str){ // = PACK_MAX_SIZE-1 ){ syn_parse_sp = 0; } - syn_pack_remain--; - -// DB_PRINT_STR( "parse sp: %d, cnt :%d\r\n", syn_parse_sp, syn_pack_remain ); - } -} - - -void report_parse_result(void){ - if( asyn_pack.line_parse_done ){ //= PACK_MAX_SIZE-1 ){ syn_report_sp = 0; } - }else{ break; } - } - } - - if( uarm.cycle_report_flag ){ // G - * - */ -static bool uarm_cmd_g2004(char *payload){ // M - * - */ - -static void uarm_cmd_m17(void){ // 0; write_size-- ){ - eeprom_put_char( write_addr++, 0x0 ); - }*/ - settings_restore(SETTINGS_RESTORE_ALL); - read_hardware_version(); -} - -static bool uarm_cmd_m2222(char *payload){ // ='0'&&line[1]<='1') ){ - uarm_cmd_m2122( line[1]-'0' ); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - - break; - case 2201: - if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ - uarm_cmd_m2201( line[1]-'0' ); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - break; - case 2202: - if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ - uarm_cmd_m2202( line[1]-'0' ); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - break; - case 2203: - if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ - uarm_cmd_m2203( line[1]-'0' ); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - break; - case 2210: - if( uarm_cmd_m2210(line) == true ){ - return UARM_CMD_OK; - }else{ - return UARM_CMD_ERROR; - } - break; - case 2211: - //DB_PRINT_STR( "M2211\r\n" ); - return UARM_CMD_OK; - break; - case 2212: - //DB_PRINT_STR( "M2212\r\n" ); - return UARM_CMD_OK; - break; - case 2213: - //DB_PRINT_STR( "M2213\r\n" ); - return UARM_CMD_OK; - break; - case 2215: - uarm_cmd_m2215(); - return UARM_CMD_OK; - case 2220: - //DB_PRINT_STR( "M2220\r\n" ); - return UARM_CMD_OK; - break; - case 2221: - //DB_PRINT_STR( "M2221\r\n" ); - return UARM_CMD_OK; - break; - case 2222: - if( uarm_cmd_m2222(line) == true ){ - return UARM_CMD_OK; - }else{ - return UARM_CMD_ERROR; - } - break; - case 2231: - //DB_PRINT_STR( "M2231\r\n" ); - if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ - uarm_cmd_m2231( line[1]-'0' ); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - - break; - case 2232: - //DB_PRINT_STR( "M2232\r\n" ); - if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ - uarm_cmd_m2232( line[1]-'0' ); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - break; - case 2233: - if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ - uarm_cmd_m2233( line[1]-'0' ); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - break; - case 2234: - //DB_PRINT_STR( "M2234\r\n" ); - return UARM_CMD_OK; - break; - case 2240: - //DB_PRINT_STR( "M2240\r\n" ); - return UARM_CMD_OK; - break; - case 2241: - //DB_PRINT_STR( "M2241\r\n" ); - return UARM_CMD_OK; - break; - case 2245: - //DB_PRINT_STR( "M2245\r\n" ); - break; - case 2304: - //DB_PRINT_STR( "M2304\r\n" ); - break; - case 2305: - //DB_PRINT_STR( "M2305\r\n" ); - break; - case 2306: - //DB_PRINT_STR( "M2306\r\n" ); - break; - case 2307: - //DB_PRINT_STR( "M2307\r\n" ); - break; - case 2400: - if( (line[0]=='S') && (line[1]>='0'&&line[1]<='3') ){ - uarm_cmd_m2400( line[1]-'0' ); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - break; - case 2401: - uarm_cmd_m2401(); - return UARM_CMD_OK; - break; - case 2410: - uarm_cmd_m2410(); - return UARM_CMD_OK; - - break; - case 2411: - if( uarm_cmd_m2411(line) == true ){ - return UARM_CMD_OK; - }else{ - return UARM_CMD_ERROR; - } - break; - case 2420: - if( (line[0]=='P') && (line[1]>='0'&&line[1]<='2') ){ - uarm_cmd_m2420(line[1]-'0'); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - break; - case 2421: - if( !uarm_cmd_m2421() ){ return UARM_CMD_ERROR; } - return UARM_CMD_OK; - break; - } - return UARM_CMD_NOTFIND; -} - - - - -/* - * - * CMD -> P - * - */ - -static void uarm_cmd_p2200(void){ // ='0'&&line[1]<='2') ){ - uarm_cmd_p2206(line[1]-'0'); - return UARM_CMD_OK; - }else{ return UARM_CMD_ERROR; } - break; - case 2220: - uarm_cmd_p2220(); - return UARM_CMD_OK; - break; - case 2221: - uarm_cmd_p2221(); - return UARM_CMD_OK; - break; - case 2231: - uarm_cmd_p2231(); - return UARM_CMD_OK; - break; - case 2232: - uarm_cmd_p2232(); - return UARM_CMD_OK; - break; - case 2233: - uarm_cmd_p2233(); - return UARM_CMD_OK; - break; - case 2234: - uarm_cmd_p2234(); - return UARM_CMD_OK; - break; - case 2235: - uarm_cmd_p2235(); - return UARM_CMD_OK; - break; - case 2240: - return UARM_CMD_OK; - break; - case 2241: - return UARM_CMD_OK; - break; - case 2242: - uarm_cmd_p2242(); - return UARM_CMD_OK; - break; - case 2400: - uarm_cmd_p2400(); - return UARM_CMD_OK; - break; - } - - return UARM_CMD_NOTFIND; -} - - - - - - diff --git a/Source code/uarm_protocol.h b/Source code/uarm_protocol.h deleted file mode 100755 index 616a562..0000000 --- a/Source code/uarm_protocol.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _UARM_PROTOCOL_H_ -#define _UARM_PROTOCOL_H_ - -#include "uarm_common.h" - -#define TAIL_BUFFER_SIZE (50) -#define EVENT_BUFFER_SIZE (50) -#define CMD_BUFFER_SIZE (50) -#define PACK_MAX_SIZE (20) - -enum uarm_protocol_e { - UARM_CMD_OK = 0, - UARM_CMD_NOTFIND, - UARM_SYS_ABORT, - - UARM_CMD_ERROR = 50, - UARM_COORD_ERROR, -}; - -struct protocol_private_t { -}; - -extern char event_report_str[EVENT_BUFFER_SIZE]; - -enum uarm_protocol_e uarm_execute_g_cmd(uint16_t cmd, char *line, uint8_t *char_counter); -enum uarm_protocol_e uarm_execute_p_cmd(uint16_t cmd, char *line, uint8_t *char_counter); -enum uarm_protocol_e uarm_execute_m_cmd(uint16_t cmd, char *line, uint8_t *char_counter); - - -void receive_cmd_line(char *line); -void parse_cmd_line(void); -void report_parse_result(void); - - - -#endif - diff --git a/Source code/uarm_swift.c b/Source code/uarm_swift.c deleted file mode 100755 index 75dfd15..0000000 --- a/Source code/uarm_swift.c +++ /dev/null @@ -1,40 +0,0 @@ -#include "uarm_swift.h" - -struct uarm_state_t uarm = {0}; -char hardware_version[8] = {0}; - -void uarm_swift_init(void){ -// DB_PRINT_STR("uarm init\r\n"); - delay_ms(10); - - read_hardware_version(); - angle_sensor_init(); - - servo_init(); - beep_tone(260, 1000); - read_sys_param(); - pump_off(); - gripper_relesae(); - laser_off(); - - angle_to_coord( uarm.init_arml_angle, uarm.init_armr_angle, uarm.init_base_angle-90, - &(uarm.coord_x), &(uarm.coord_y), &(uarm.coord_z) ); - - uarm.target_step[X_AXIS] = sys.position[X_AXIS]; - uarm.target_step[Y_AXIS] = sys.position[Y_AXIS]; - uarm.target_step[Z_AXIS] = sys.position[Z_AXIS]; - - ADCSRA |= ( 0<= 1000000UL) && (F_CPU <= 16000000UL)) { // prescaler set to 64 - TCCR2B |= (1< 16Mhz, prescaler set to 128 - TCCR2B |= ((1<>= 10; - switch( pin ){ - case 3: - DDRH |= 1<<3; - TCCR4A |= _BV(COM4A1); - OCR4A = dutyCycle; - break; - case 4: - DDRH |= 1<<4; - TCCR4A |= _BV(COM4B1); - OCR4B = dutyCycle; - break; - case 5: - DDRH |= 1<<5; - TCCR4A |= _BV(COM4C1); - OCR4C = dutyCycle; - break; - } - - TCCR4B = _BV(WGM43) | time4.clock_select_bits; - -} - -void time4_pwm_init(unsigned long period_us){ - TCCR4B = _BV(WGM43); // set mode as phase and frequency correct pwm, stop the timer - TCCR4A = 0; // clear control register A - time4_set_period(period_us); -} - -/* resolution = 0.001 1ms interrupt - * - */ - -void time5_set(double resolution, void (*callback)()){ - time5.time_callback = callback; - TCCR5A=0; - TCCR5B=(1< Date: Mon, 27 Aug 2018 11:00:44 +0800 Subject: [PATCH 39/74] update --- doc/uArm Swift Pro Protocol V4.0.1_cn.pdf | Bin 334057 -> 0 bytes doc/uArm Swift Pro Protocol V4.0.1_en.pdf | Bin 201044 -> 0 bytes doc/uArm Swift Pro Protocol V4.0.2_cn.pdf | Bin 0 -> 350253 bytes doc/uArm Swift Pro Protocol V4.0.2_en.pdf | Bin 0 -> 235028 bytes hex/uArmPro_V4.1.0_release_20180601.hex | 3532 --------------------- 5 files changed, 3532 deletions(-) delete mode 100755 doc/uArm Swift Pro Protocol V4.0.1_cn.pdf delete mode 100755 doc/uArm Swift Pro Protocol V4.0.1_en.pdf create mode 100755 doc/uArm Swift Pro Protocol V4.0.2_cn.pdf create mode 100755 doc/uArm Swift Pro Protocol V4.0.2_en.pdf delete mode 100755 hex/uArmPro_V4.1.0_release_20180601.hex diff --git a/doc/uArm Swift Pro Protocol V4.0.1_cn.pdf b/doc/uArm Swift Pro Protocol V4.0.1_cn.pdf deleted file mode 100755 index 14b6170b85e6364e515f9582e684bea8e544237f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334057 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

      }Dm)VmVOjv1t``{~k$x;P` z^Q#e4z6{zcOZT!Y{pBvY(qQHzd2uz7H;*reK5OwcG!NsRUp(^okS+|H2LIr za+w&h=>+qs`Cl%2A{*NvZ8&{{e4Q{{|WZeV?upp8O!W zW@I8y#|ip^57)UEhk7^rrXml%o93md+JvNVm8?1f6Kl5LU@J99a z(4z5*k;@^E%Mi)3JLnS`dUE0 z-?{u|fy`Itq(n7h8pFodG0uvo0s_j(c+uGNV;q1279`1 zr?-IQt+OD6DLtxl*S!8g*Vpsz{8CW~oTqPhWP)uzhe=t|UIEhuLbYOHY)h846UG>1 zE$OPj?Ba>4py-N4wPI%+sCe1siHgEr(pN#%l^Pj5AH1%SVdxPOOrZ8&BXw04x%!ZQzD}2R<&f3@oJ$K`keu}sRZvk-1?6~!Tq1XX9aAAvE<-gxf#KfsS8buU_M-LYv@N6)88;zi(_$R7aGA6O2OES$WnZ5@hmUP zCw3d%|HZ<1KYfbN#zwq+vAyH#_v-%ijmZ4;`BHI;iWVnS`;!!}x7ao0kyU{W0({g# zKl|xRIc%$usWWCsqd*KU#4&HbO`eWl)7IeJza}QFu~bX+JGFdkFen0P-8qd@B~1_n zc}$+rt*^GMAV>c|NI(M-O>)s$DgVqa6jSK(lqbdZ7+j~0b`#XwanD+J8EKM-IF?)M z_=flmh&+rLEhK~%`KF%&P?t)*l97?E1b)t-aXVX=j+Kji} zUSCNW=FcdZC?Z|+CKl{DA?^)Kcj4z_QJjKso}F(WlnnMarT1R)mDyQ1tbk;^U5gI5>W@N2?gmYHX5Y}|znWg=nI)oU zX7RhTZ?4Ry25x(!XWDVH@(jeGAa1?%{JOS6U=POuN!Hl*a0%T0f)+0!NMfG-vUB12 zmqga;pm6F;b#`SzL(34e_o$Pq9aG9y*<3?}CTNui8ePRXuA%}+B>w2ah?yK2M1>3f zjO4g5D6GJESXn?W>t}qrd*#}EbGhNfSSB3py_$Fn-F%WlqDJdUzuQlXx7wxcKX0`I zlYHARwEc=N>iPA{Mv{sz8nmMSCLdpZSl9e@1x=b-wIumP7E7lVf0MoY2CZM&eiMEc zXxiT0CBMq0Gcm-eR#^QH$tVitjdE$!N-BnuP>A?ycUJY%RPd;WAGUsBo3ee;$B6pe zEu(+5TDF!>&Hp0PmOg)zz59ACGb>}SXa8J0`$E7ZJ2+dq|1gXDndr= zqR*kEefV}BN<8OFiiex#ev|Yg?(Jp;>+J_kv$V6t_Zc=*v;UP$bE}A4T~1BE_p$kx za0IjWR0R4>)_Y!~6EGCJ3eHCavRRv)HbOqJBXZ{>oNewsWj z;^&WYnJ#I5zsLnC`_3Q*ra2A^)Rbo`GUQK|nq>U^{u!752dT;Ql2o#-Imu^}h=$L& zA__Gnhbb&^Rh(iiao?mBeZHk){PLcSE22nKet69SSLsXvt7-gq-iSiJa4y=)zY~ot z87_2s9aOCpEr%(ra5by@QosLXEPL<3Wsien`g-7dxi|6K1bT)y>R&3XD{Eo(D5+fJCD2)K~;6qRZmKsE%5U**-svMeS)f{r1TuolPNNw;a_m< zDO5q8yC5uv%s?Nd%LZ8dRF>K!FJ4epj+CA>x}z7&ekx1ikryMVDn?5GB6>1L=3^h_ z&vo$W3DO8LJ#qBgD4Ey2>uPCEf*qq!StJA!db;ShvAxowmIKCOm^E6wdG4|RFa<@h z}5}4U@3rKQNppY=;>77=2gf#fMF@6q(PssiGBlx?k8Ya3MpZz4t^FS)xUJW zzK|0Ct@K)jwe6QuShC*|O;8EU_P>-$L6;GBNW#)R?|6cVhWDm|q59VC50e1@2L1yd zEPxC7Jqr9i)!Q??j|(_W&1P=i4LiE4&1-JJW7*E^1cTRNFq$9wfdE_NF9h&ssN#JZ zVQSDHE;$wq1ZEiCn#P|4kb!(GZ-+@RE^Z0?7E8S5!;Y98tT)zi+7dar1wkHGMLOoJ zMz&CneS;#5y=NdsoR=XVUNCX6< zDjM?#x^0yG zC|gw&3>%4Up9ez)q=Lc{YKSj^Z|OT;w~CpBbiJ)!#YeCB0^Ng7dN{tAkBG}+-FFJX z!Lm(SVa9-0G{rNJ7d13|6(#^Q_NF5f_8NPv07e9OPY@Z#(i}>2Q<_VI+XWFJV*w;UML=9iL(GamN0I_RzRx_CyQ)#ew)=d6H2Bx6C*( zK7;Vz!4$#r5U;*ys0oTf*zuuVX<*43Sp#yoG&|60MQ`-xBo)t^c_k7H&DkL(M;HL?1};y zVc>7b4+Qg8G#eHkhqVw!9EklA_bqZLNc2xesMPll=N-y`f1&@P-e3)5>}|&vSYDj5 zqK+Lh6n>z__s)r4)rn*kW>$u5O~44qT@9uN_A?H7slO@k7gRZ!&R5eix!;&7tbVp_ z3A^}!%1<%9!1tWhpMhKlum;jlgQ?0W4oro=KM;x0zyJV`LZ{*X?f-&GA|nzU z0Qe|<8h)d+>PE2=ELgMx&$KGxxpG zbAqC-URcp7B1!2PhEBa_+~Hg(1sp)va)1*07f96!h6Jx^DD>6$@_^vP7`_KUnGVXlwx!w& z$t3c$-D%7*!#6O%L*CK%e}WFmU)N&>9SCr|_+#H-Fc7?1VLr5q5u2b=qLLemBE!k! z+jqiXBLuOE1_AzoK842hbRloBiiQFNP_qq1(crA{?Ym&`5xQALLjWA8D+Z#7aDw=y zsHPicvWEU3I5qr^PIFU{;_!P@$zu8ku7Y-&3(9@9iMyliEBz>C`BZZD5tMoT~pbEC63Z@iPR0R88 z`B>r`#(yyTXy|Yd0J+L>*Ah8;UEs6jZ@kqvLt9QZBLRle{%oKgI{aLN$PZ9vhDfpp z56KuiQiZh#DjNkf$o2mO%Wc`+3S*63QOSeU@C*|L?pkFCKcPHv$ zfB)J3FKJLxp=iWMFG`fOr2PDnbW>aUH)gXs1527AN$j4V%?fj~qdxG1_UH<8S@n?N zidSMjNPy7kdGmfV5{dRE$n1Y#{RMZXQ2Xb>#Qvw)pM<=>6LJ&nEuq<3G+|XhlJuDQ zf0Qz6cE(Zn<&npIkO#5T|8LCKl3vpvFO$?7!Gq=RLP{O26W%noXm4slcYB&`7--W8 zDPw0(sx4+5Ha&gmbk@39Y(28+#JsJ}mpKThmT8u!ces5TnDDFwb<7l*fq^qjHTm-$ z=?rl&9MikZImhS(pOSlHQ*s7Gg0L#+&9h?gomw5cM!rG9%K}Z!;Q=eP_tlPR35%$| z{1%OW$)M#iJ`kzKTvL^kfPofSnpHM{H29eU?>KxUHmhofEPxW|iM^weEfYWrWwKTLr2&LMb8O+7 zC2~b3X@5nr=nuT0HM+1|@+c_Nn<^R&D+D^H8_N~_HvyLO5`j#*;8^M#9#9|KTSa3s zNJb%f65jk@eHtnTQUN$XHSGUj+$V!xDg2Y^KbU_60nfM+)RS5S60GX2n>XjBS}P;~ zNWn4+G2&t%AU$@T@^1zYTSs|CGyo2Wj?Jr#KNV!G03!}S0+M6CxB zxkBO_`fo$_V&8zl0sksy)LI}S#`p{*fU0D)>71aEw}GVqh0*<`@DBqWzd>jU*qkc7 z3-G^`I;D)Mu>8{f$B6sPTS)tg9@Zt-$)anj3X8c4BMrshgO%=A1b}4%)j%26X5@cH zac|nMG5e8aYdq3CC+d&DKax;}%JRkLnmyL9kYZ?wRmL5F3)I3kSIL(8&HRZY{{)nO zn16y0H@3BMh1fTQ;AI6-aR4%qYEspTF8gP`no6N5wj~L0GGam@MpO*;J8Xhcz-y@7 zlLG!q5S*fcL;xC)8@on%Ok4~F$n@Wt;Ae`Ax-=Cz9U(?H%-;}zM1RcuVZ>m8$kadA#S9a$^!N-DvHqB&!j4h??d@~y1toitZx8TS zSPSLtJWvL)MD#hdbn7OotEb74ibDj@yS*-uH-G#2m+3?3%`UcZ)weT-Hr=h$^FM7voj65i$jtVJo(5>? zvg)*!zu-0$;n-S+r)jMtT-esmDKNP?wJ)K8!E6gkD{asKuowK7-~SX~#TQxtvcC#6 zKr86knFqab^6qsJp?69%032w4r%TG zu8u#9arPfG|0Hw?;mK7zAV<=&W_Gy4t|K31u|6SRWvzI8*hbEz-O0#yYgN&9NUr6? z+QrSJbp1c7Lm{az9F4USKoi8$t2JGO>-sez!_uNaYd-vY28>tu zJJuK8$g6Tl`mmSJE0X+M;rFTWSpr;l)UWY7Y?4%POrj>sf;1gy-Y zQaKEK#l~yY11=QDHrvG(QLl<`AIe8LHWB1Es z4Iq|e5_uE+ICU7*1agd=zs?$_e4kF|>T~oY`-Y${YGUS9d*o0#UL7M;d4HWhIZaNw zf4la=2{}b>C@|cEl?{VtjQMvxW&h*+PwEI-nqu0&O7%NU# zCDDwKp;*7$q_leI(-Nξ?V^LB^*u`=w}(yU61 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 L)nPII`_BIj9X$yK diff --git a/doc/uArm Swift Pro Protocol V4.0.1_en.pdf b/doc/uArm Swift Pro Protocol V4.0.1_en.pdf deleted file mode 100755 index bfc7beb7546096526889777e880df12f28d8d6ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201044 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

      -DrtSQtygjJR?Q%xM8I5ve)Y<*G+BIkG3cFU? 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

      Wr>Y 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

      1GvfvgdvXZ=ME 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
    1. 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 Date: Mon, 27 Aug 2018 11:01:11 +0800 Subject: [PATCH 40/74] update --- src/motion_control.c | 35 +++++--- src/protocol.c | 136 ++++++++++++++++-------------- src/report.c | 5 +- src/settings.c | 23 +++-- src/uarm_angle.c | 59 +++++++++---- src/uarm_angle.h | 1 + src/uarm_common.h | 35 ++++++-- src/uarm_coord_convert.c | 10 +-- src/uarm_peripheral.c | 177 +++++++++++++++++++++++++++++++++++---- src/uarm_peripheral.h | 12 ++- src/uarm_protocol.c | 150 ++++++++++++++++++++++++++------- src/uarm_protocol.h | 1 - src/uarm_swift.c | 9 +- src/uarm_swift.h | 4 +- 14 files changed, 491 insertions(+), 166 deletions(-) diff --git a/src/motion_control.c b/src/motion_control.c index cceebd8..f01b5e4 100755 --- a/src/motion_control.c +++ b/src/motion_control.c @@ -68,7 +68,7 @@ float x= target[X_AXIS], y= target[Y_AXIS], z = target[Z_AXIS]; - coord_effect2arm( &x, &y, &z ); // calculate the effect offset + coord_effect2arm( &x, &y, &z ); // calculate the arm current coord coord_to_angle( x, y, z, &final_angle[X_AXIS], &final_angle[Y_AXIS], &final_angle[Z_AXIS] ); // calculate final angle /* @@ -78,28 +78,33 @@ dtostrf( final_angle[Z_AXIS], 5, 4, b_str ); DB_PRINT_STR( "final_angle: %s, %s, %s\r\n", l_str, r_str, b_str );*/ +// final_angle[X_AXIS] += 0.15; +// final_angle[Y_AXIS] -= 0.15; if( is_angle_legal( final_angle[X_AXIS], final_angle[Y_AXIS], final_angle[Z_AXIS] ) == false ){ // check the angle - //DB_PRINT_STR( "E22 position cnan't reach\n" ); - //uarm.coord_error_flag = true; return UARM_COORD_ERROR; } + +// angle_to_coord( final_angle[X_AXIS], final_angle[Y_AXIS], final_angle[Z_AXIS], &x, &y, &z ); +// coord_arm2effect( &x, &y, &z ); + +// target[X_AXIS] = x; +// target[Y_AXIS] = y; +// target[Z_AXIS] = z; step_to_coord( uarm.target_step[X_AXIS], uarm.target_step[Y_AXIS], uarm.target_step[Z_AXIS], - ¤t_coord[X_AXIS], ¤t_coord[Y_AXIS], ¤t_coord[Z_AXIS]); // calculate the current coord + ¤t_coord[X_AXIS], ¤t_coord[Y_AXIS], ¤t_coord[Z_AXIS]); // calculate the arm current coord + coord_arm2effect( ¤t_coord[X_AXIS], ¤t_coord[Y_AXIS], ¤t_coord[Z_AXIS] ); // calculate the effect current coord settings_init(); switch( mode ){ case MOTION_MODE_SEEK: // 100 ){ feed_rate = 100; } - divide_numbers = sqrt((x - current_coord[X_AXIS])*(x - current_coord[X_AXIS]) + // unit is mm - (y - current_coord[Y_AXIS])*(y - current_coord[Y_AXIS]) + - (z - current_coord[Z_AXIS])*(z - current_coord[Z_AXIS])) * 30 / feed_rate; + divide_numbers = sqrt((target[X_AXIS] - current_coord[X_AXIS])*(target[X_AXIS] - current_coord[X_AXIS]) + // unit is mm + (target[Y_AXIS] - current_coord[Y_AXIS])*(target[Y_AXIS] - current_coord[Y_AXIS]) + + (target[Z_AXIS] - current_coord[Z_AXIS])*(target[Z_AXIS] - current_coord[Z_AXIS])) * 30 / feed_rate; if( divide_numbers < 10 ){ divide_numbers = 10; } @@ -114,18 +119,22 @@ } // DB_PRINT_STR( "divide num : %d\r\n", divide_numbers ); + float delta_coord[3]; - delta_coord[X_AXIS] = (x - current_coord[X_AXIS]) / divide_numbers; // calculate delta coord - delta_coord[Y_AXIS] = (y - current_coord[Y_AXIS]) / divide_numbers; - delta_coord[Z_AXIS] = (z - current_coord[Z_AXIS]) / divide_numbers; + delta_coord[X_AXIS] = (target[X_AXIS] - current_coord[X_AXIS]) / divide_numbers; // calculate delta coord + delta_coord[Y_AXIS] = (target[Y_AXIS] - current_coord[Y_AXIS]) / divide_numbers; + delta_coord[Z_AXIS] = (target[Z_AXIS] - current_coord[Z_AXIS]) / divide_numbers; float final_coord[3]; float final_step[3]; for( int i = 1; i <= divide_numbers; i++ ){ + final_coord[X_AXIS] = current_coord[X_AXIS] + delta_coord[X_AXIS] * i; final_coord[Y_AXIS] = current_coord[Y_AXIS] + delta_coord[Y_AXIS] * i; final_coord[Z_AXIS] = current_coord[Z_AXIS] + delta_coord[Z_AXIS] * i; + coord_effect2arm( &final_coord[X_AXIS], &final_coord[Y_AXIS], &final_coord[Z_AXIS] ); + uarm.coord_x = final_coord[X_AXIS]; uarm.coord_y = final_coord[Y_AXIS]; uarm.coord_z = final_coord[Z_AXIS]; diff --git a/src/protocol.c b/src/protocol.c index f225ed0..267f328 100755 --- a/src/protocol.c +++ b/src/protocol.c @@ -63,7 +63,7 @@ void protocol_main_loop() // ------------------------------------------------------------ // Print welcome message - report_init_message(); +// report_init_message(); // Check for and report alarm state after a reset, error, or an initial power up. if (sys.state == STATE_ALARM) { @@ -89,6 +89,7 @@ void protocol_main_loop() uint8_t line_remain = 0; uint8_t line_num = 0; uint8_t line_execute_p = 0; + for (;;) { // Process one line of incoming serial data, as the data becomes available. Performs an @@ -100,71 +101,80 @@ void protocol_main_loop() // exceed 256 characters, but the Arduino Uno does not have the memory space for this. // With a better processor, it would be very easy to pull this initial parsing out as a // seperate task to be shared by the g-code parser and Grbl's system commands. - - while((c = serial_read()) != SERIAL_NO_DATA) { - if ((c == '\n') || (c == '\r')) { // End of line reached - line[char_counter] = 0; // Set string termination character. - receive_cmd_line(line); - comment = COMMENT_NONE; - char_counter = 0; - break; - } else { - if (comment != COMMENT_NONE) { - // Throw away all comment characters - if (c == ')') { - // End of comment. Resume line. But, not if semicolon type comment. - if (comment == COMMENT_TYPE_PARENTHESES) { comment = COMMENT_NONE; } - } - } else { - if (c <= ' ') { - // Throw away whitepace and control characters - } else if (c == '/') { - // Block delete NOT SUPPORTED. Ignore character. - // NOTE: If supported, would simply need to check the system if block delete is enabled. - } else if (c == '(') { - // Enable comments flag and ignore all characters until ')' or EOL. - // NOTE: This doesn't follow the NIST definition exactly, but is good enough for now. - // In the future, we could simply remove the items within the comments, but retain the - // comment control characters, so that the g-code parser can error-check it. - comment = COMMENT_TYPE_PARENTHESES; - } else if (c == ';') { - // NOTE: ';' comment to EOL is a LinuxCNC definition. Not NIST. - comment = COMMENT_TYPE_SEMICOLON; - - // TODO: Install '%' feature - // } else if (c == '%') { - // Program start-end percent sign NOT SUPPORTED. - // NOTE: This maybe installed to tell Grbl when a program is running vs manual input, - // where, during a program, the system auto-cycle start will continue to execute - // everything until the next '%' sign. This will help fix resuming issues with certain - // functions that empty the planner buffer to execute its task on-time. + if( uarm.effect_origin_check ){ + end_effector_check_limit(); + }else{ + while((c = serial_read()) != SERIAL_NO_DATA) { + if ((c == '\n') || (c == '\r')) { // End of line reached + line[char_counter] = 0; // Set string termination character. + receive_cmd_line(line); + comment = COMMENT_NONE; + char_counter = 0; + break; + } else { + if (comment != COMMENT_NONE) { + // Throw away all comment characters + if (c == ')') { + // End of comment. Resume line. But, not if semicolon type comment. + if (comment == COMMENT_TYPE_PARENTHESES) { comment = COMMENT_NONE; } + } + } else { + if (c <= ' ') { + // Throw away whitepace and control characters + } else if (c == '/') { + // Block delete NOT SUPPORTED. Ignore character. + // NOTE: If supported, would simply need to check the system if block delete is enabled. + } else if (c == '(') { + // Enable comments flag and ignore all characters until ')' or EOL. + // NOTE: This doesn't follow the NIST definition exactly, but is good enough for now. + // In the future, we could simply remove the items within the comments, but retain the + // comment control characters, so that the g-code parser can error-check it. + comment = COMMENT_TYPE_PARENTHESES; + } else if (c == ';') { + // NOTE: ';' comment to EOL is a LinuxCNC definition. Not NIST. + comment = COMMENT_TYPE_SEMICOLON; + + // TODO: Install '%' feature + // } else if (c == '%') { + // Program start-end percent sign NOT SUPPORTED. + // NOTE: This maybe installed to tell Grbl when a program is running vs manual input, + // where, during a program, the system auto-cycle start will continue to execute + // everything until the next '%' sign. This will help fix resuming issues with certain + // functions that empty the planner buffer to execute its task on-time. - } else if (char_counter >= (LINE_BUFFER_SIZE-1)) { - // Detect line buffer overflow. Report error and reset line buffer. - report_status_message(STATUS_OVERFLOW); - comment = COMMENT_NONE; - char_counter = 0; - } else if (c >= 'a' && c <= 'z') { // Upcase lowercase - line[char_counter++] = c-'a'+'A'; - } else { - line[char_counter++] = c; - } - } - } - } - parse_cmd_line(); - - // If there are no more characters in the serial read buffer to be processed and executed, - // this indicates that g-code streaming has either filled the planner buffer or has - // completed. In either case, auto-cycle start, if enabled, any queued moves. - //uarm_swift_tick_run(); - protocol_auto_cycle_start(); - protocol_execute_realtime(); // Runtime command check point. - if (sys.abort) { return; } // Bail to main() program loop to reset system. + } else if (char_counter >= (LINE_BUFFER_SIZE-1)) { + // Detect line buffer overflow. Report error and reset line buffer. + report_status_message(STATUS_OVERFLOW); + comment = COMMENT_NONE; + char_counter = 0; + } else if (c >= 'a' && c <= 'z') { // Upcase lowercase + line[char_counter++] = c-'a'+'A'; + } else { + line[char_counter++] = c; + } + } + } + } + //if( position_origin_flag && end_angle_origin_flag ){ + parse_cmd_line(); + //} + + // If there are no more characters in the serial read buffer to be processed and executed, + // this indicates that g-code streaming has either filled the planner buffer or has + // completed. In either case, auto-cycle start, if enabled, any queued moves. + //uarm_swift_tick_run(); + protocol_auto_cycle_start(); + protocol_execute_realtime(); // Runtime command check point. + if (sys.abort) { return; } // Bail to main() program loop to reset system. + + report_parse_result(); + if( uarm.motor_position_check ){ + check_motor_positon(); + } - report_parse_result(); - check_motor_positon(); + } } + return; /* Never reached */ } diff --git a/src/report.c b/src/report.c index a8a5037..45e8f8e 100755 --- a/src/report.c +++ b/src/report.c @@ -297,6 +297,7 @@ void report_probe_parameters() // Prints Grbl NGC parameters (coordinate offsets, probing) void report_ngc_parameters() { + float coord_data[N_AXIS]; uint8_t coord_select, i; for (coord_select = 0; coord_select <= SETTING_INDEX_NCOORD; coord_select++) { @@ -327,12 +328,14 @@ void report_ngc_parameters() printFloat_CoordValue(gc_state.tool_length_offset); printPgmString(PSTR("]\r\n")); report_probe_parameters(); // Print probe parameters. Not persistent in memory. + } // Print current gcode parser mode state void report_gcode_modes() { + printPgmString(PSTR("[")); switch (gc_state.modal.motion) { @@ -401,7 +404,7 @@ void report_gcode_modes() // Prints specified startup line void report_startup_line(uint8_t n, char *line) { - printPgmString(PSTR("$N")); print_uint8_base10(n); + printPgmString(PSTR("$N")); print_uint8_base10(n); printPgmString(PSTR("=")); printString(line); printPgmString(PSTR("\r\n")); } diff --git a/src/settings.c b/src/settings.c index c85c3fb..3afb964 100755 --- a/src/settings.c +++ b/src/settings.c @@ -168,6 +168,11 @@ uint8_t read_global_settings() { } else { return(false); } + /* + if( settings.steps_per_mm[X_AXIS]!=7000 || settings.steps_per_mm[Y_AXIS]!=7000 || settings.steps_per_mm[Z_AXIS]!=7000 ){ + return(false); + }*/ + return(true); } @@ -277,21 +282,21 @@ uint8_t settings_store_global_setting(uint8_t parameter, float value) { // Initialize the config subsystem void settings_init() { if(!read_global_settings()) { - report_status_message(STATUS_SETTING_READ_FAIL); + //report_status_message(STATUS_SETTING_READ_FAIL); settings_restore(SETTINGS_RESTORE_ALL); // Force restore all EEPROM data. - report_grbl_settings(); + //report_grbl_settings(); } // NOTE: Checking paramater data, startup lines, and build info string should be done here, // but it seems fairly redundant. Each of these can be manually checked and reset or restored. // Check all parameter data into a dummy variable. If error, reset to zero, otherwise do nothing. - // float coord_data[N_AXIS]; - // uint8_t i; - // for (i=0; i<=SETTING_INDEX_NCOORD; i++) { - // if (!settings_read_coord_data(i, coord_data)) { - // report_status_message(STATUS_SETTING_READ_FAIL); - // } - // } + float coord_data[N_AXIS]; + uint8_t i; + for (i=0; i<=SETTING_INDEX_NCOORD; i++) { + if (!settings_read_coord_data(i, coord_data)) { + report_status_message(STATUS_SETTING_READ_FAIL); + } + } // NOTE: Startup lines are checked and executed by protocol_main_loop at the end of initialization. } diff --git a/src/uarm_angle.c b/src/uarm_angle.c index 64b357e..51acda5 100755 --- a/src/uarm_angle.c +++ b/src/uarm_angle.c @@ -15,27 +15,42 @@ uint16_t reference_param_pointc[3] = {0}; // 0; read_size-- ){ *(p++) = eeprom_get_char(read_addr++); } -// DB_PRINT_STR( "refer : %d, %d, %d\r\n", reference.param_l, reference.param_r, reference.param_b ); + DB_PRINT_STR( "refer:B%d L%d R%d\r\n", reference.param_b, reference.param_l, reference.param_r ); } @@ -110,6 +132,9 @@ static void write_angle_reference_param(void){ for( ; write_size > 0; write_size-- ){ eeprom_put_char( write_addr++, *(p++) ); } + + eeprom_put_char( EEPROM_ANGLE_REFER_FLAG, 0xBB ); + read_angle_reference_param(); uarm.init_arml_angle = calculate_current_angle(CHANNEL_ARML); // 180 ){ angle = 0; } if( angle < 0 ){ angle = 180; } angle = 180 - angle; @@ -20,14 +24,138 @@ void servo_set_angle(float angle){ //delay_ms(500); } -void servo_deinit(void){ +static void servo_deinit(void){ time4_stop(); } -float servo_get_angle(void){ +static float servo_get_angle(void){ return 180 - (duty_ms - 0.7) / 2.0 *180; } +/************ steper mode ******************/ +int32_t step_count = 0; +float steper_current_angle = 0; + +void step_creater(void){ + static bool status_flag = false; + if( step_count > 0 ){ + if( status_flag ){ + status_flag = false; + step_count--; + PORTH |= (1<<6); + }else{ + status_flag = true; + PORTH &= ~(1<<6); + } + }else{ + time4_stop(); + step_count = 0; + //DB_PRINT_STR( "time4 stop\r\n" ); + } +} + +static void steper_init(void){ + DDRH |= (1<<5); // 360 || angle < 0 ){ return; } + + if( uarm.param.work_mode==WORK_MODE_STEPER_FLAT || uarm.param.work_mode==WORK_MODE_STEPER_STANDARD ){ + float offset_angle = angle - steper_current_angle; + steper_current_angle = angle; + if( offset_angle > 0 ){ + PORTH &= ~(1<<5); // 0; read_size-- ){ *(p++) = eeprom_get_char(read_addr++); } p = (char *)(&(uarm.param.high_offset)); read_size = sizeof(uarm.param.high_offset); - read_addr = EEPROM_HEIGHT_ADDR; + read_addr = EEPROM_HEIGHT_OFFSET_ADDR; for( ; read_size > 0; read_size-- ){ *(p++) = eeprom_get_char(read_addr++); } + p = (char *)(&(uarm.param.effect_angle_offset)); + read_size = sizeof(uarm.param.effect_angle_offset); + read_addr = EEPROM_EFFECT_ANGLE_OFFSET_ADDR; + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + if( uarm.param.effect_angle_offset > 360 || isnan(uarm.param.effect_angle_offset) ){ + uarm.param.effect_angle_offset = 0; + } + /* char l_str[20], r_str[20], b_str[20]; dtostrf( uarm.param.work_mode, 5, 4, l_str ); dtostrf( uarm.param.front_offset, 5, 4, r_str ); @@ -197,6 +335,10 @@ void read_sys_param(void){ DB_PRINT_STR( "mode:%s, front:%s, high:%s\r\n", l_str, r_str, b_str );*/ + char l_str[20], r_str[20], b_str[20]; + dtostrf( uarm.param.effect_angle_offset, 5, 4, b_str ); + DB_PRINT_STR( "angle offset:%s\r\n", b_str ); + } void save_sys_param(void){ @@ -213,18 +355,24 @@ void save_sys_param(void){ p = (char *)(&(uarm.param.front_offset)); write_size = sizeof(uarm.param.front_offset); - write_addr = EEPROM_FRONT_ADDR; + write_addr = EEPROM_FRONT_OFFSET_ADDR; for( ; write_size > 0; write_size-- ){ eeprom_put_char( write_addr++, *(p++) ); } p = (char *)(&(uarm.param.high_offset)); write_size = sizeof(uarm.param.high_offset); - write_addr = EEPROM_HEIGHT_ADDR; + write_addr = EEPROM_HEIGHT_OFFSET_ADDR; for( ; write_size > 0; write_size-- ){ eeprom_put_char( write_addr++, *(p++) ); } + p = (char *)(&(uarm.param.effect_angle_offset)); + write_size = sizeof(uarm.param.effect_angle_offset); + write_addr = EEPROM_EFFECT_ANGLE_OFFSET_ADDR; + for( ; write_size > 0; write_size-- ){ + eeprom_put_char( write_addr++, *(p++) ); + } } @@ -317,7 +465,7 @@ void pump_off(void){ uint8_t get_pump_status(void){ if( (PORTG & 0x10) == 0x00 ){ return 0; } uint16_t value = getAnalogPinValue(63); - DB_PRINT_STR( "ad:%d\r\n", value ); +// DB_PRINT_STR( "ad:%d\r\n", value ); if( value < 10){ return 0; }else if( value <= 70 ){ @@ -390,8 +538,9 @@ uint8_t get_limit_switch_status(void){ } uint8_t get_power_status(void){ - uint16_t power_adc_value = getAnalogPinValue(59); -// DB_PRINT_STR( "%d\r\n", power_adc_value ); + //uint16_t power_adc_value = getAnalogPinValue(59); + uint16_t power_adc_value = adc_read_value(59); + //DB_PRINT_STR( "%d\r\n", power_adc_value ); if( power_adc_value > 100 ){ return 1; @@ -401,7 +550,7 @@ uint8_t get_power_status(void){ } void check_motor_positon(void){ - if( sys.state == STATE_IDLE && uarm.motor_state_bits == 0x0F /*&& uarm.power_state*/ ){ + if( sys.state == STATE_IDLE && uarm.motor_state_bits == 0x0F && uarm.power_state ){ float current_angle_l = 0, current_angle_r = 0, current_angle_b = 0; coord_to_angle( uarm.coord_x, uarm.coord_y, uarm.coord_z, ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); diff --git a/src/uarm_peripheral.h b/src/uarm_peripheral.h index aa99471..98c949e 100755 --- a/src/uarm_peripheral.h +++ b/src/uarm_peripheral.h @@ -6,10 +6,14 @@ extern char hardware_version[8]; -void servo_init(void); -void servo_set_angle(float angle); -void servo_deinit(void); -float servo_get_angle(void); +void end_effector_init(void); +void end_effector_set_angle(float angle); +void end_effector_deinit(void); +float end_effector_get_angle(void); +void end_effector_check_limit(void); +void end_effect_adjust_angle(void); + + void beep_tone(unsigned long duration, double frequency); diff --git a/src/uarm_protocol.c b/src/uarm_protocol.c index 0abbe74..635ece6 100755 --- a/src/uarm_protocol.c +++ b/src/uarm_protocol.c @@ -187,19 +187,18 @@ void report_parse_result(void){ } } -/* static uint8_t power_per_status = 0; // 0xff ){ + cnt = 0; + //get_power_status(); + uint8_t power_cur_status = get_power_status(); if( power_cur_status != power_per_status ){ uart_printf( "@5 V%d\n", power_cur_status ); power_per_status = power_cur_status; uarm.power_state = power_cur_status; - } - }*/ - - + } + } if( sys.state == STATE_IDLE && uarm.run_done_report_flag ){ //='0'&&line[1]<='1') ){ uarm_cmd_m2122( line[1]-'0' ); return UARM_CMD_OK; }else{ return UARM_CMD_ERROR; } break; + case 2123: + if( (line[0]=='V') && (line[1]>='0'&&line[1]<='1') ){ + uarm_cmd_m2123( line[1]-'0' ); + return UARM_CMD_OK; + }else{ return UARM_CMD_ERROR; } + break; case 2201: if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ uarm_cmd_m2201( line[1]-'0' ); @@ -846,7 +911,7 @@ enum uarm_protocol_e uarm_execute_m_cmd(uint16_t cmd, char *line, uint8_t *char_ //DB_PRINT_STR( "M2307\r\n" ); break; case 2400: - if( (line[0]=='S') && (line[1]>='0'&&line[1]<='3') ){ + if( (line[0]=='S') && (line[1]>='0'&&line[1]<='7') ){ uarm_cmd_m2400( line[1]-'0' ); return UARM_CMD_OK; }else{ return UARM_CMD_ERROR; } @@ -866,6 +931,13 @@ enum uarm_protocol_e uarm_execute_m_cmd(uint16_t cmd, char *line, uint8_t *char_ }else{ return UARM_CMD_ERROR; } + break; + case 2412: + if( uarm_cmd_m2412(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } break; case 2420: if( (line[0]=='P') && (line[1]>='0'&&line[1]<='2') ){ @@ -893,9 +965,11 @@ enum uarm_protocol_e uarm_execute_m_cmd(uint16_t cmd, char *line, uint8_t *char_ static void uarm_cmd_p2200(void){ // ='0'&&line[1]<='2') ){ + if( (line[0]=='N') && (line[1]>='0'&&line[1]<='3') ){ uarm_cmd_p2206(line[1]-'0'); return UARM_CMD_OK; }else{ return UARM_CMD_ERROR; } @@ -1092,6 +1174,10 @@ enum uarm_protocol_e uarm_execute_p_cmd(uint16_t cmd, char *line, uint8_t *char_ uarm_cmd_p2242(); return UARM_CMD_OK; break; + case 2243: + uarm_cmd_p2243(); + return UARM_CMD_OK; + break; case 2400: uarm_cmd_p2400(); return UARM_CMD_OK; diff --git a/src/uarm_protocol.h b/src/uarm_protocol.h index 616a562..c78f85d 100755 --- a/src/uarm_protocol.h +++ b/src/uarm_protocol.h @@ -26,7 +26,6 @@ enum uarm_protocol_e uarm_execute_g_cmd(uint16_t cmd, char *line, uint8_t *char_ enum uarm_protocol_e uarm_execute_p_cmd(uint16_t cmd, char *line, uint8_t *char_counter); enum uarm_protocol_e uarm_execute_m_cmd(uint16_t cmd, char *line, uint8_t *char_counter); - void receive_cmd_line(char *line); void parse_cmd_line(void); void report_parse_result(void); diff --git a/src/uarm_swift.c b/src/uarm_swift.c index 798a94d..8476164 100755 --- a/src/uarm_swift.c +++ b/src/uarm_swift.c @@ -10,12 +10,12 @@ void uarm_swift_init(void){ read_hardware_version(); angle_sensor_init(); - servo_init(); beep_tone(260, 1000); read_sys_param(); pump_off(); gripper_relesae(); laser_off(); + end_effector_init(); angle_to_coord( uarm.init_arml_angle, uarm.init_armr_angle, uarm.init_base_angle-90, &(uarm.coord_x), &(uarm.coord_y), &(uarm.coord_z) ); @@ -24,12 +24,15 @@ void uarm_swift_init(void){ uarm.target_step[Y_AXIS] = sys.position[Y_AXIS]; uarm.target_step[Z_AXIS] = sys.position[Z_AXIS]; - ADCSRA |= ( 0< Date: Mon, 27 Aug 2018 11:01:40 +0800 Subject: [PATCH 41/74] update --- README.md | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 610857e..682ad56 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,16 @@ -# Swift Pro Firmware V4.1.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.2.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- - +## Update Summary for v4.2.0 +* Fix cmd M17 bug +* Add closed-loop stepper control (step losing detection and auto-adjusting) +* Add M2123 cmd to control closed-loop stepper system +* Fix G1 move bug +* Add M2412 cmd to set offset of the effect-stepper +* Fix P2206 cmd to get effect angle +* Add pro work mode,plus work mode and touch pen work mode +* Fix old uarn pro cann't read refer value bug +* Fix P2242 P2243 bug ## Update Summary for v4.1.0 * Transplant Grbl framework. * Optimize stepper motor performance,improve motor speed,fix motor shake. @@ -14,9 +23,9 @@ #### Not support app control #### For uArmStudio control -- BLOCKLY is not support **input** and **Grove** module. -- Draw/Laser is not support. -- 3D Printing is not support. +- input and Grove module in BLOCKLY are not supported. +- Draw/Laser is not supported. +- 3D Printing is not supported. ## Communication protocol #### For serial terminal control @@ -48,7 +57,7 @@ not support currently **P2240,P2241**. * Open XLoader and select your uArm's COM port from the drop down menu on the lower left. * Select the appropriate device from the dropdown list titled "Device". * Check that Xloader set the correct baud rate for the device: 115200 for Mega (ATMEGA2560). -* Now use the browse button on the top right of the form to browse to your grbl hex file. +* Now use the browse button on the top right of the form to browse to your hex file. * Once your hex file is selected, click "Upload" The upload process generally takes about 10 seconds to finish. Once completed, a message will appear in the bottom left corner of XLoader telling you how many bytes were uploaded. If there was an error, it would show instead of the total bytes uploaded. Steps should be similar and may be done through the command prompt. From 44b8403c29b6bb675390bd23c758251f8ae88196 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Mon, 27 Aug 2018 11:05:40 +0800 Subject: [PATCH 42/74] update --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 682ad56..97d4672 100755 --- a/README.md +++ b/README.md @@ -2,13 +2,14 @@ ---------- ## Update Summary for v4.2.0 -* Fix cmd M17 bug + * Add closed-loop stepper control (step losing detection and auto-adjusting) * Add M2123 cmd to control closed-loop stepper system -* Fix G1 move bug -* Add M2412 cmd to set offset of the effect-stepper -* Fix P2206 cmd to get effect angle * Add pro work mode,plus work mode and touch pen work mode +* Add M2412 cmd to set offset of the effect-stepper +* Fix P2206 cmd to get effect angle bug +* Fix G1 move bug +* Fix cmd M17 bug * Fix old uarn pro cann't read refer value bug * Fix P2242 P2243 bug ## Update Summary for v4.1.0 From 458c218b955128a9388c02ca46fb97c5ef258e52 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Mon, 27 Aug 2018 11:10:41 +0800 Subject: [PATCH 43/74] update --- hex/uArmPro_V4.2.0_release_20180827.hex | 3633 +++++++++++++++++++++++ 1 file changed, 3633 insertions(+) create mode 100755 hex/uArmPro_V4.2.0_release_20180827.hex diff --git a/hex/uArmPro_V4.2.0_release_20180827.hex b/hex/uArmPro_V4.2.0_release_20180827.hex new file mode 100755 index 0000000..50a9e23 --- /dev/null +++ b/hex/uArmPro_V4.2.0_release_20180827.hex @@ -0,0 +1,3633 @@ +:10000000C3C40000E2C40000E0C40000DEC400007D +:10001000DCC40000DAC40000D8C40000D6C400006C +:10002000D4C400000C942A51D0C400000C94423077 +:10003000CCC40000CAC40000C8C400000C94F2463E +:10004000C4C400000C94763AC0C40000BEC40000D2 +:10005000BCC40000BAC40000B8C400000C94013A4B +:10006000B4C400000C94A23F0C940440AEC4000041 +:10007000ACC40000AAC40000A8C40000A6C40000CC +:10008000A4C40000A2C40000A0C400000C94DC467C +:100090009CC400009AC4000098C4000096C40000EC +:1000A00094C4000092C4000090C400008EC40000FC +:1000B0008CC400000C94A14688C4000086C40000D3 +:1000C00084C4000082C400000C946C467EC400000E +:1000D0007CC400007AC4000078C4000076C400002C +:1000E00074C40000FC0B150C2E0C470C600C830C28 +:1000F0009C0CBA13AA1DAA1DC613DB13F3130B1411 +:10010000AA1D0F14AA1D2014AA1D2A1434147D142C +:10011000AA1DAA1DAA1D4114551469147A1C8F1C0E +:10012000BC1C8F1CC01CD71CC61CD01CF91C001D7D +:100130000B1D161D331D351D381D3A1DD83DDE3DE6 +:10014000E13DE43DE83DF03DF83D653E653E653E00 +:10015000003E033E0C3E153E653E653E653E653EF7 +:10016000653E653E1D3E273E333E3D3E403E493E98 +:10017000523E583E084AD73B3BCE016E84BCBFFD81 +:10018000C12F3D6C74319ABD56833DDA3D00C77F67 +:1001900011BED9E4BB4C3E916BAAAABE0000008000 +:1001A0003F072C7AA5BA6CC590DA3B9365FC8BBCF3 +:1001B00053F810FD3C5692834DBD879D3AB63DCB1A +:1001C000C9BF5BBE73DA0FC93F05A84CCDB2D44E90 +:1001D000B93836A9020C50B9918688083CA6AAAA5B +:1001E0002ABE000000803F0000407A10F35A00A0B1 +:1001F000724E18090010A5D4E80000E876481700F0 +:1002000000E40B54020000CA9A3B000000E1F5052F +:10021000000080969800000040420F000000A08679 +:1002200001000000102700000000E80300000000AB +:100230006400000000000A0000000000010000004F +:1002400000002C76D888DC674F0823DFC1DFAE5969 +:10025000E1B1B796E5E3E453C63AE651997696E8FC +:10026000E6C28426EB898C9B62ED407C6FFCEFBC80 +:100270009C9F40F2BAA56FA5F490055A2AF75C93AB +:100280006B6CF9676DC11BFCE0E40D47FEF520E6E1 +:10029000B500D0ED902E0300943577050080841EC4 +:1002A000080000204E0A000000C80C333333330F1F +:1002B000986E12831141EF8D2114893BE65516CFBC +:1002C000FEE6DB18D1844B381BF77C1D901DA4BBC8 +:1002D000E424203284725E228100C9F124ECA1E57D +:1002E0003D276364696E6F70737578585B000D0A03 +:1002F000003D00244E005D0D0A005B302E396A2E51 +:1003000032303136303732363A005D0D0A005B54F8 +:100310004C4F3A005D0D0A002C005B4739323A0021 +:100320005D0D0A002C003A003330003238005B4784 +:10033000005D0D0A00205300204600205400204D8F +:100340003800204D3900204D3500204D3400204D1F +:100350003300204D3200204D3100204D3000204729 +:1003600039340020473933002047393100204739DC +:1003700030002047323000204732310020473139E9 +:1003800000204731380020473137002047004733ED +:10039000382E0047383000473300473200473100DD +:1003A0004730005B00290D0A00206D6178207472CF +:1003B0006176656C2C206D6D0020616363656C2C2B +:1003C000206D6D2F7365635E3200206D6178207241 +:1003D0006174652C206D6D2F6D696E002C20737417 +:1003E00065702F6D6D007A00790078002028003D3F +:1003F0000024002028686F6D696E672070756C6C32 +:100400002D6F66662C206D6D290D0A002028686FFF +:100410006D696E67206465626F756E63652C206D13 +:10042000736563290D0A2432373D002028686F6DFB +:10043000696E67207365656B2C206D6D2F6D696E1D +:10044000290D0A2432363D002028686F6D696E67D9 +:1004500020666565642C206D6D2F6D696E290D0A0F +:100460002432353D00290D0A2432343D002028680D +:100470006F6D696E672064697220696E766572744B +:10048000206D61736B3A002028686F6D696E67207C +:100490006379636C652C20626F6F6C290D0A2432BE +:1004A000333D00202868617264206C696D69747343 +:1004B0002C20626F6F6C290D0A2432323D002028F7 +:1004C000736F6674206C696D6974732C20626F6F32 +:1004D0006C290D0A2432313D0020287265706F723C +:1004E0007420696E636865732C20626F6F6C290DD0 +:1004F0000A2432303D00202861726320746F6C65DD +:1005000072616E63652C206D6D290D0A2431333DB7 +:100510000020286A756E6374696F6E206465766961 +:100520006174696F6E2C206D6D290D0A2431323D86 +:1005300000290D0A2431313D00202873746174753F +:1005400073207265706F7274206D61736B3A002056 +:100550002870726F62652070696E20696E766572B0 +:10056000742C20626F6F6C290D0A2431303D0020FD +:10057000286C696D69742070696E7320696E766588 +:1005800072742C20626F6F6C290D0A24363D002096 +:10059000287374657020656E61626C6520696E7683 +:1005A0006572742C20626F6F6C290D0A24353D0032 +:1005B000290D0A24343D00202864697220706F726E +:1005C0007420696E76657274206D61736B3A0029D0 +:1005D0000D0A24333D0020287374657020706F72FB +:1005E0007420696E76657274206D61736B3A0020B9 +:1005F00028737465702069646C652064656C61792A +:100600002C206D736563290D0A24323D0020287368 +:100610007465702070756C73652C20757365632923 +:100620000D0A24313D0024303D0024242028766921 +:100630006577204772626C2073657474696E6773A6 +:10064000290D0A24232028766965772023207061EC +:1006500072616D6574657273290D0A2447202876CE +:100660006965772070617273657220737461746557 +:10067000290D0A2449202876696577206275696CFE +:100680006420696E666F290D0A244E2028766965FC +:1006900077207374617274757020626C6F636B7312 +:1006A000290D0A24783D76616C7565202873617682 +:1006B00065204772626C2073657474696E67290DDA +:1006C0000A244E783D6C696E65202873617665203A +:1006D0007374617274757020626C6F636B290D0A9C +:1006E00024432028636865636B2067636F6465201B +:1006F0006D6F6465290D0A245820286B696C6C2085 +:10070000616C61726D206C6F636B290D0A24482047 +:100710002872756E20686F6D696E67206379636CEF +:1007200065290D0A7E20286379636C6520737461E6 +:100730007274290D0A2120286665656420686F6C33 +:1007400064290D0A3F202863757272656E742073E8 +:100750007461747573290D0A6374726C2D78202886 +:100760007265736574204772626C290D0A005D0D15 +:100770000A003A002C005B5052423A000D0A004930 +:100780006E76616C69642067636F64652049443AE2 +:1007900000556E646566696E6564206665656420F3 +:1007A00072617465004D6F64616C2067726F757063 +:1007B0002076696F6C6174696F6E00486F6D696E49 +:1007C00067206E6F7420656E61626C656400416CB9 +:1007D00061726D206C6F636B004E6F742069646C86 +:1007E0006500454550524F4D207265616420666139 +:1007F000696C2E205573696E672064656661756C3F +:1008000074730056616C7565203C203320757365E8 +:10081000630053657474696E672064697361626C08 +:1008200065640056616C7565203C203000496E7629 +:10083000616C69642073746174656D656E740042E7 +:100840006164206E756D62657220666F726D617491 +:1008500000457870656374656420636F6D6D616ECB +:1008600064206C6574746572006572726F723A20F0 +:10087000006F6B0D0A000D0A00486F6D696E6720EE +:100880006661696C0050726F6265206661696C0018 +:1008900041626F727420647572696E672063796358 +:1008A0006C6500536F6674206C696D6974004861F3 +:1008B0007264206C696D697400414C41524D3A205C +:1008C000003E0D0A002C4C696D3A002C52583A003B +:1008D0002C4275663A002C002C57506F733A002C4E +:1008E000002C4D506F733A003C446F6F72003C43D4 +:1008F0006865636B003C416C61726D003C486F6DD4 +:1009000065003C486F6C64003C52756E003C496465 +:100910006C65005D0D0A00526573746F72696E67D5 +:100920002064656661756C74730050676D20456E58 +:100930006400436865636B20446F6F7200446973A1 +:1009400061626C656400456E61626C656400436160 +:100950007574696F6E3A20556E6C6F636B656400D9 +:10096000272448277C2724582720746F20756E6C15 +:100970006F636B00526573657420746F20636F6ED4 +:1009800074696E7565005B0011241FBECFEFD1E264 +:10099000DEBFCDBF00E00CBF14E0A0E0B2E0E4EBAE +:1009A000F0EE00E00BBF02C007900D92AA33B10732 +:1009B000D9F723E1AAE3B4E001C01D92A736B2073C +:1009C000E1F70E9426540C9458701ACB2F923F9254 +:1009D0004F925F926F927F928F929F92AF92BF924F +:1009E000CF92DF92EF92FF920F931F93CF93DF93FB +:1009F000CDB7DEB7C159D1090FB6F894DEBF0FBE2F +:100A0000CDBFC158DF4F99838883CF57D04089E34A +:100A1000E2EFF2E1DF011D928A95E9F78AE0E3E671 +:100A2000F2E1A3EFB2E101900D928A95E1F7FE01A8 +:100A3000E559FF4F1082E9961FAE1EAEE997EF967B +:100A40001FAE1EAEEF97CF57DF4F1882C158D04070 +:100A5000E3961FAEE397E7961FAEE797AC968FAD90 +:100A6000AC97C158DF4FE881F981CF57D040E80FEC +:100A7000F11D1081112311F40C94B8149FEB910F08 +:100A80009A3110F00C949C1D8F5FAC968FAFAC9791 +:100A9000AE014B595F4FBE0165597F4FC158DF4FC3 +:100AA00088819981CF57D0400E944E4C882311F401 +:100AB0000C949E1DA996CCACDDACEEACFFACA99716 +:100AC000C701B6010E9479690E94C6664B015C01AC +:100AD0001B0180E090E00E94F2669B01AC01C7011F +:100AE000B6010E94786520E030E048EC52E40E94B4 +:100AF000AB680E940E690E94C6663B011D3409F472 +:100B00003FC2103511F40C94490F173411F00C94B6 +:100B1000A713AC968FADAC97C158DF4F6881798130 +:100B2000CF57D040680F711DAE0145595F4FC401CA +:100B30000E944F219C01215031092230310510F0D3 +:100B40000C94F91DB8E28B16910409F4E1C180F50B +:100B5000F4E18F16910498F421E18216910408F0D3 +:100B600046C134E08316910409F46EC008F4D2C083 +:100B70009AE08916910409F45AC00C94AA1DACE1BC +:100B80008A16910409F453C038F4E6E18E169104F4 +:100B900008F47DC10C94AA1DFEE18F16910409F49E +:100BA00046C026E28216910409F4B4C00C94AA1D32 +:100BB0003DE38316910409F4A2C1F0F495E389168C +:100BC000910409F441C060F4BBE28B16910409F46E +:100BD0006EC1E1E38E16910409F469C10C94AA1D5B +:100BE000FCE38F16910410F00C94AA1D8AEC880D7A +:100BF0008093F91289E07FC12CE58216910460F49C +:100C00003AE58316910408F008C180E5881691043E +:100C100009F48AC00C94AA1D9CE58916910439F048 +:100C2000AFE58A16910408F41FC10C94AA1D611443 +:100C3000710411F00C94BC1DE796BFADE797BB2380 +:100C400009F440C00C94A01DECE12E16310469F1AA +:100C500048F424E02216310479F03AE023163104F6 +:100C6000C9F05BC18EE128163104A1F195E3291684 +:100C7000310409F44BC051C181E049C0BFE12B16DA +:100C80003104D0F5EAE02E16310431F4A1E0E79604 +:100C9000AFAFE79782E03BC0FCE12F16310409F0CB +:100CA00048C1B1E0E796BFAFE7976114710441F026 +:100CB000EAE06E16710411F00C94AA1D84E00EC0D7 +:100CC00083E00CC0AEE12A163104C1F6F1E0E796EC +:100CD000FFAFE7976114710439F485E08093F21255 +:100CE000E1961FAEE1972CC12AE06216710411F063 +:100CF0000C94AA1D86E0F2CF25E32216310411F0F0 +:100D00000C94EA1D31E0E7963FAFE79787E08093C8 +:100D1000F21203C1E796AFADE797A1110C94A01DA5 +:100D2000B2E0E796BFAFE797E2E02E16310419F183 +:100D300058F421143104D9F02A94232809F0F1C081 +:100D400081E08093F312EDC036E223163104C1F046 +:100D500080E52816310409F445C093E029163104D2 +:100D600009F0DFC083E08093F312F1E08CC01092B1 +:100D7000F312A1E0CEC082E08093F312E1E07CC0E8 +:100D80002EE162167104F1F070F484E168167104CA +:100D900011F00C94AA1D84E08093F312B1E0E19667 +:100DA000BFAFE197CDC098E26916710499F0A2E354 +:100DB0006A16710411F00C94AA1D87E08093F31257 +:100DC00021E035C085E08093F312E1E0E196EFAFDA +:100DD000E197B6C086E08093F312F1E0E196FFAFB1 +:100DE000E197AEC088E08093F31231E058C082E111 +:100DF0008816910441F093E18916910449F010920C +:100E0000F712A2E086C081E08093F712B2E08AC0B8 +:100E100082E08093F712E2E02FC06114710499F42C +:100E2000FAE58F16910439F41092F61223E0E19658 +:100E30002FAFE19785C081E08093F61233E0E19611 +:100E40003FAFE1977DC08AE06816710411F00C9401 +:100E5000AA1D9AE58916910411F40C94AA1DA4E028 +:100E6000E196AFAFE1976CC0BDE58B16910441F4FC +:100E700081E08093F412E5E0E196EFAFE19755C091 +:100E80001092F412F5E0E196FFAFE1974EC024E135 +:100E90008216910441F481E08093F51236E0E196E8 +:100EA0003FAFE19742C01092F51286E024C0E7966A +:100EB0009FADE79791110C94A01DA1E32A16310470 +:100EC00041F41092F812B8E0E196BFAFE197E3E089 +:100ED00034C0FAE06F16710411F00C94AA1D81E081 +:100EE0008093F81228E0E1962FAFE19733E0E79680 +:100EF0003FAFE79725C0E1968FAFE19716C067280F +:100F000011F00C94AA1D9AE0E1969FAFE19718C0EA +:100F1000A7E0E196AFAFE19708C0E1961FAEE19779 +:100F200004C0B1E0E196BFAFE197672849F00C94A7 +:100F3000CF1DE1961FAEE197E1E0E796EFAFE797AF +:100F400081E090E0E1960FACE19702C0880F991F15 +:100F50000A94E2F7EF962EAD3FADEF9728233923A1 +:100F6000232B19F085E10C94F91DEF962EAD3FADC2 +:100F7000EF97282B392BEF963FAF2EAFEF976ECD23 +:100F8000672B11F00C94CF1DAC968FADAC97C15868 +:100F9000DF4FE881F981CF57D040E80FF11D3EEADD +:100FA000831638E0930608F05AC08CEA881688E069 +:100FB000980608F042C19BE4891698E0990609F466 +:100FC000F4C130F5B3EE8B16B7E09B0609F433C1DC +:100FD00080F432E18316910409F42DC18CEC88165B +:100FE000910409F42DC191E18916910409F08EC094 +:100FF00090C0A9E48A16A8E09A0609F4BCC108F0DA +:10100000C1C128E4821628E0920609F457C17EC0C7 +:1010100032EA831638E0930609F449C298F49AE953 +:10102000891698E0990609F4F7C1ABE98A16A8E099 +:101030009A0609F419C2B9E98B16B8E09B0609F0C3 +:1010400065C0C4C1E6EA8E16E8E09E0608F4F5C065 +:10105000F7EA8F16F8E09F0609F465C257C022EC44 +:10106000821628E0920638F530EC831638E09306B5 +:1010700008F0E3C088EB881688E0980609F45AC3A4 +:1010800068F4AEEA8A16A8E09A0609F452C2B7EBF1 +:101090008B16B8E09B0609F43AC338C029EB8216D8 +:1010A00028E0920609F457C33AEB831638E093061A +:1010B00009F4C3C02BC08BE6881689E0980609F4B2 +:1010C000DAC490F4A1E68A16A9E09A0609F455C498 +:1010D000BAE68B16B9E09B0609F468C420E68216CE +:1010E00029E0920699F45AC334E7831639E093064F +:1010F00009F439C585E7881689E0980609F48BC597 +:101100009CE6891699E0990609F4E4C481E090E030 +:1011100054C68A9A809108018160809308015F9A81 +:101120000E94E1268FE08093F6118EE1ECE2F3E17C +:10113000DF011D928A95E9F70E943C470E94735394 +:1011400080E090E00E940C2F6093D2117093D31135 +:101150008093D4119093D51181E090E00E940C2FE0 +:101160006093D6117093D7118093D8119093D911B1 +:1011700082E090E00E940C2F6093DA117093DB11F3 +:101180008093DC119093DD11009130131091311395 +:1011900020913213309133130093DE111093DF113D +:1011A0002093E0113093E111009134131091351325 +:1011B00020913613309137130093E2111093E3110D +:1011C0002093E4113093E5110091381310913913F5 +:1011D00020913A1330913B130093E6111093E711DD +:1011E0002093E8113093E91120E030E044EB52E421 +:1011F0000E9478657B018C012091D6113091D71126 +:101200004091D8115091D9116091D2117091D311A0 +:101210008091D4119091D511A2EF8A2EA1E19A2E3E +:10122000BEEEAB2EB1E1BB2EEAEECE2EE1E1DE2E1C +:101230000E942F2C02C00E94254780E090E0BDC58F +:101240008E010F5F1F4F1F930F938DE092E09F93CE +:101250008F93FF93EF930E94406A0F900F900F902F +:101260000F900F900F90181619060CF052C41D8A9B +:101270001E8A1F8A188EAE014B5E5F4F60E070E0E1 +:10128000C8010E944E4C882309F495C54D895E899A +:101290006F89788D88E70E946F3D4D895E896F89DF +:1012A000788D89E70E946F3D4D895E896F89788DC1 +:1012B0008AE70E946F3D0E94A840BFCF8E010F5F5A +:1012C0001F4F1F930F9384E292E09F938F93FF939E +:1012D000EF930E94406A0F900F900F900F900F9025 +:1012E0000F90181619060CF014C4AE014B5E5F4F38 +:1012F00060E070E0C8010E944E4C882309F45BC591 +:1013000020E030E04AE754E46D897E898F89988D2A +:101310000E94AB680E94C1661616170664F57093AA +:10132000BE0C6093BD0C91E09093BC0C8091F90CC5 +:10133000811183CF23E13EE1309306122093051201 +:101340001092200185E08093210121EF3FEF30933F +:10135000081220930712209107123091081230933F +:101360002501209324018091730081608093730094 +:101370009093F90C62CF1092BC0C1092BE0C10929C +:10138000BD0C5BCF8081863509F015C58181805306 +:10139000823008F010C51092FA11813019F01092C5 +:1013A000F9114BCF8093F91148CF8081863509F030 +:1013B00002C581818053823008F0FDC4813019F06C +:1013C0001092FD113ACF8093FD1137CF80818E347A +:1013D00009F0F1C491819053943008F0ECC492303C +:1013E00061F0933099F08091F611913019F05F9A85 +:1013F000846031C08A9A81602EC08091080181602A +:10140000809308018091F611826025C00E94E12638 +:101410008091F61188601FC080818E3409F0CBC4A2 +:1014200091819053943008F0C6C4923061F09330AB +:10143000A9F08091F611913019F05F988B7F0BC065 +:101440008A988E7F08C0809108018E7F8093080162 +:101450008091F6118D7F8093F611EFCE0E949D2032 +:101460008091F611877FF7CF80818E3409F0A3C475 +:1014700081818053843008F09EC49091F6118230AF +:1014800081F0833089F0813019F090FF03C03CC1B6 +:1014900091FD3AC169E873E087EC9CE00E940A6A1A +:1014A000CCCE92FD31C1F6CF93FFF4CF2DC11AA659 +:1014B00019A61D8A1E8A1F8A188E8E010F5F1F4F64 +:1014C0008AE0D8011D928A95E9F7CE0189969F930B +:1014D0008F931F930F938DE292E09F938F93FF93CF +:1014E000EF930E94406A0FB6F894DEBF0FBECDBFE7 +:1014F00002970CF40EC3AE014B5E5F4F60E070E0EC +:10150000C8010E944E4C882309F455C42D893E8998 +:101510004F89588D69A57AA5072E000C880B990B69 +:101520000E940A208ACE8FEF0E949A3E0E94A81F36 +:1015300084CEA5961CAE1DAE1EAE1FAEA597A1967D +:101540001CAE1DAE1EAE1FAEA1976D961CAE1DAE9D +:101550001EAE1FAE6D9784E15E0129E2A20EB11CA2 +:10156000D501282F1D922A95E9F77E0135E1E30E7A +:10157000F11CD701282F1D922A95E9F7DE0111965B +:101580006D011D928A95E9F78E0107591F4F8FEF64 +:1015900090E0D8018D939C931F930F93DF92CF928D +:1015A000FF92EF92BF92AF9289E392E09F938F9365 +:1015B000FF93EF930E94406A0FB6F894DEBF0FBE10 +:1015C000CDBF03970CF4A5C2AE014F595F4F60E049 +:1015D00070E0C5010E944E4C882309F4ECC3AE01B3 +:1015E000435A5F4F60E070E0C7010E944E4C882371 +:1015F00009F4E1C3AE01475A5F4F60E070E0C601F5 +:101600000E944E4C882309F4D6C3D8018D919C9139 +:101610000097D9F1019709F0CEC3A596CCACDDAC0B +:10162000EEACFFACA59720E030E044EB52E4A1968D +:101630006CAD7DAD8EAD9FADA1970E94786521EE1A +:101640003EE245E652E40E9459664B015C010E946D +:1016500056669B01AC01C701B6010E94AB68A59616 +:101660006CAF7DAF8EAF9FAFA597C501B4010E944F +:101670002E699B01AC01C701B6010E94AB68A1961F +:101680006CAF7DAF8EAF9FAFA197AE01475A5F4F52 +:10169000BE01635A7F4FCE018F599F4F0E9423296D +:1016A0006D96ECACFDAC0EAD1FAD6D97A1962CAD5B +:1016B0003DAD4EAD5FADA197A5966CAD7DAD8EAD48 +:1016C0009FADA597FE01FD964F01DE01AF5ABF4FBA +:1016D0005D0178966F010E94792A2196ECACFDACF1 +:1016E0000EAD1FAD219765962CAD3DAD4EAD5FADF6 +:1016F000659769966CAD7DAD8EAD9FAD69970E9483 +:10170000DF2D882309F4C6CE68E272E0C5CE808161 +:10171000863509F050C381818053823008F04BC375 +:10172000813019F00E94841F88CD9C9A9D9AA49ABA +:10173000A59883CD8081863509F03DC38181805392 +:10174000823008F038C3813019F00E94811F75CDB6 +:101750003F9A479872CD8081863509F02CC38181EC +:101760008053823008F027C3813019F00E94701F27 +:1017700064CD80910101806280930101809101011B +:101780008064809301018091020180628093020154 +:10179000809102018064809302014FCD8081833566 +:1017A00009F009C38181E0EDE80FE83008F003C3D8 +:1017B0008E2F90E0FC013197E730F10530F4882757 +:1017C000EE58FF4F8F4F0C94DE690E949D201092BF +:1017D000C5111092C4118AE999E1A5E9B2E4809398 +:1017E000CA119093CB11A093CC11B093CD118AE97B +:1017F00099E9A2E6B2E4B8C00E949D2081E090E0A1 +:101800009093C5118093C41186EF98E2ACE4B2E4E2 +:101810008093CA119093CB11A093CC11B093CD11AA +:101820008DEC9CECA0E8B2E49FC00E949D2082E079 +:1018300090E09093C5118093C41189E29CEDA4E9D6 +:10184000B2E48093CA119093CB11A093CC11B093C2 +:10185000CD1180E090E0A2E6B2E486C00E949D2017 +:1018600083E090E09093C5118093C41180E090E0F4 +:10187000ACE2B2E48093CA119093CB11A093CC1147 +:10188000B093CD1180E090E0ABE8B2E46DC00E946F +:101890009D2084E090E09093C5118093C41180E076 +:1018A00090E0ACE1B2E48093CA119093CB11A09385 +:1018B000CC11B093CD1180E090E0A9E9B2E418C05A +:1018C0000E949D2085E090E09093C5118093C41103 +:1018D0008DEC9CECA2E9B2E48093CA119093CB11F9 +:1018E000A093CC11B093CD1180E090E0A8E9B2E4D0 +:1018F0008093C6119093C711A093C811B093C911DA +:101900000E947620B5C00E949D2086E090E09093D2 +:10191000C5118093C41186E696E6AAE9B2E48093E5 +:10192000CA119093CB11A093CC11B093CD1180E04C +:1019300090E0AAE5B2E418C00E949D2087E090E004 +:101940009093C5118093C41185E89BEEABECB1E494 +:101950008093CA119093CB11A093CC11B093CD1169 +:1019600080E090E0A2E3B2E48093C6119093C711A7 +:10197000A093C811B093C9117BC080E090E00E9491 +:10198000BF2E90938D1080938C1081E090E00E9488 +:10199000BF2E90938F1080938E1082E090E00E9473 +:1019A000BF2E90938B1080938A1002C260913813DF +:1019B0007091391380913A1390913B130E94F46611 +:1019C0002B013C01609134137091351380913613D3 +:1019D000909137130E94F4669B01AC016091301323 +:1019E000709131138091321390913313C357DF4FAD +:1019F0002883CD58D040C257DF4F3883CE58D040CF +:101A0000C057DF4F4883C059D040CF56DF4F58836F +:101A1000C159D0400E94F466DE0111964D01FE01CD +:101A200075965F0198966D0183017201C357DF4F70 +:101A30002881CD58D040C257DF4F3881CE58D04092 +:101A4000C057DF4F4881C059D040CF56DF4F588133 +:101A5000C159D0400E94912D89819A81AB81BC816E +:101A60008093CA119093CB11A093CC11B093CD1158 +:101A70000E94CF1FE2CB1D8A1E8A1F8A188E8E01FC +:101A80000F5F1F4F84E1D8011D928A95E9F71F93DC +:101A90000F938BE592E09F938F93FF93EF930E94B8 +:101AA000406A0F900F900F900F900F900F901816A4 +:101AB00019067CF5AE014B5E5F4F60E070E0C80137 +:101AC0000E944E4C882309F476C18D899E89AF8986 +:101AD000B88D4ACF1D8A1E8A1F8A188E8E010F5F0D +:101AE0001F4F84E1D8011D928A95E9F71F930F9348 +:101AF00086E692E09F938F93FF93EF930E94406A54 +:101B00000F900F900F900F900F900F9018161906CE +:101B100074F01F9281E08F9388E192E09F938F93FE +:101B20000E9411420F900F900F900F9044C1AE0190 +:101B30004B5E5F4F60E070E0C8010E944E4C88230E +:101B400009F439C18D899E89AF89B88D8093CE11F2 +:101B50009093CF11A093D011B093D1110E94CF1FB9 +:101B60000E9476206ACB8081803509F024C1818172 +:101B70008053833008F01FC18130D9F0823091F159 +:101B800080E090E00E94BF2E90934704809346042B +:101B900081E090E00E94BF2E909349048093480416 +:101BA00082E090E00E94BF2E90934B0480934A0401 +:101BB00044CB80E090E00E94BF2E9093410480933C +:101BC000400481E090E00E94BF2E909343048093F4 +:101BD000420482E090E00E94BF2E909345048093DF +:101BE00044042BCB80E090E00E94BF2E90933B04F6 +:101BF00080933A0481E090E00E94BF2E90933D04D0 +:101C000080933C0482E090E00E94BF2E90933F04BA +:101C100080933E0412CB6091460470914704E0909B +:101C20004804F09049049701262B372B80914A04F1 +:101C300090914B04822B932B892B19F481E792E02E +:101C40002FC0C0904004D0904104809042049090F6 +:101C50004304E0914404F0914504E296FFAFEEAFF7 +:101C6000E297C4018C299D298E2B9F2B892B19F477 +:101C700087E792E015C0A0903A04B0903B04009131 +:101C80003C0410913D0498012A293B2980913E048F +:101C900090913F04822B932B892B49F48DE792E09E +:101CA0009F938F930E9411420F900F9084C080E009 +:101CB00090E00E94F26624EE35E24EE652E40E9485 +:101CC00079652B013C01B50180E090E00E94F2664D +:101CD00020E33CE44AEB52E40E9479659B01AC01AD +:101CE000C301B2010E9479652B013C01B60180E07D +:101CF00090E00E94F2669B01AC01C301B2010E9418 +:101D0000796520E030E040E450E40E94596620E02C +:101D100030E040E05FE30E9479650E94C666709300 +:101D20008D1060938C10B70180E090E00E94F26605 +:101D30002CE93DE241E853E40E9478656B017C01A7 +:101D4000B80180E090E00E94F26624E53AE146E9BD +:101D500053E40E9479659B01AC01C701B6010E9462 +:101D600079656B017C01B40180E090E00E94F2662D +:101D70009B01AC01C701B6010E94796520E030E00B +:101D800040E450E40E94596620E030E040E05FE328 +:101D90000E9479650E94C66670938F1060938E10C2 +:101DA000E2962EAD3FADE29730938B1020938A10D0 +:101DB0000E94BC2F42CA82E390E09C01215031096D +:101DC0002230310510F00C94F91D36E02316310451 +:101DD00028F483E02816310488F024C098E02916FE +:101DE000310410F40C94AA1DAAE02A163104C8F19B +:101DF000BEE12B16310411F00C94AA1DE2E02E1660 +:101E0000310459F0FEE12F16310439F02328E1F5B1 +:101E100081E08093FA122BE02CC082E08093FA12CA +:101E20003BE02EC084E02816310461F095E02916CD +:101E3000310481F081E08093FC12ACE0E196AFAF19 +:101E4000E19765C482E08093FC12BCE0E196BFAFED +:101E5000E1975DC41092FC12ECE0E196EFAFE197E0 +:101E600056C4F9E02F16310441F082E08093FB1252 +:101E70002DE0E1962FAFE1974AC41092FB123DE0AE +:101E8000E1963FAFE19743C48BE0E1968FAFE197D6 +:101E90003EC4672B11F00C94CF1DAC968FADAC9760 +:101EA000B7EB8B16B8E09B0609F45DC3B8F5FCE907 +:101EB0008F16F8E09F0609F4C2C0D8F439E98316FA +:101EC00038E0930609F4AEC038F498E9891698E032 +:101ED000990609F454C050C0AAE98A16A8E09A06E7 +:101EE00009F4A3C0BBE98B16B8E09B0609F4A0C0B7 +:101EF00043C0EEE98E16E8E09E0609F4A6C008F499 +:101F0000A1C02CEA821628E0920609F4CEC13DEA6F +:101F1000831638E0930609F462C22EC082EC88165C +:101F200088E09806D8F490EC891698E0990608F0B5 +:101F3000E1C3A9EB8A16A8E09A0609F473C308F472 +:101F400066C3EAEB8E16E8E09E0609F473C3FBEB6A +:101F50008F16F8E09F0609F478C30EC023EC8216B2 +:101F600028E0920609F48AC308F476C380E688164E +:101F700089E0980609F4A8C381E090E0C0C384E139 +:101F80007E0199E2E90EF11CD701E82F1D92EA9536 +:101F9000E9F76E01F5E1CF0ED11CD601E82F1D92B5 +:101FA000EA95E9F79E012F5F3F4F1901D9011D9274 +:101FB0008A95E9F780E090E00E940C2FED966CAFD7 +:101FC0007DAF8EAF9FAFED9781E090E00E940C2F28 +:101FD0002B013C0182E090E00E940C2F4B015C0140 +:101FE000870124E045E0ED966CAD7DAD8EAD9FADF3 +:101FF000ED970E94E662860124E045E0C301B2014C +:102000000E94E662810124E045E0C501B4010E941E +:10201000E662DF92CF92FF92EF923F922F9283E897 +:1020200092E044C381E992E005C08FEB9CE002C0DE +:102030008FE992E09F938F938AE992E04DC386EAFD +:1020400092E0F8CF8DEA92E0F5CFC158DF4FE881FA +:10205000F981CF57D040E80FF11D80818E3409F00F +:102060004CC381818053EA968FAFEA97843008F0A1 +:1020700044C36D961CAE1DAE1EAE1FAE6D97699625 +:102080001CAE1DAE1EAE1FAE699765961CAE1DAE92 +:102090001EAE1FAE659784E11E01FDE32F0E311CBD +:1020A000D101E82F1D92EA95E9F7FE01B996DF010B +:1020B000282F1D922A95E9F77497DF01282F1D928A +:1020C0002A95E9F7DE011196AE96BFAFAEAFAE9797 +:1020D0001D928A95E9F760913813709139138091B8 +:1020E0003A1390913B130E94F4662B013C016091DE +:1020F00034137091351380913613909137130E94E9 +:10210000F4669B01AC0160913013709131138091A2 +:10211000321390913313C357DF4F2883CD58D040EB +:10212000C257DF4F3883CE58D040C057DF4F488367 +:10213000C059D040CF56DF4F5883C159D0400E947C +:10214000F466FE01EF5AFF4F4F01DE01AB5ABF4F5D +:102150005D0138966F0183017201C357DF4F2881FB +:10216000CD58D040C257DF4F3881CE58D040C057ED +:10217000DF4F4881C059D040CF56DF4F5881C159F9 +:10218000D0400E94142D20E030E044EB52E46596EC +:102190006CAD7DAD8EAD9FAD65970E9479656596FE +:1021A0006CAF7DAF8EAF9FAF65978091C41190915A +:1021B000C5110497029748F48090B80C9090B90C20 +:1021C000A090BA0CB090BB0C24C023E333E343E3EC +:1021D0005FE3609100027091010280910202909190 +:1021E00003020E94786520E030E040E05FE30E9457 +:1021F000AB6820E030E044E353E40E94AB689B010D +:10220000AC0160E070E084E393E40E9478654B01E8 +:102210005C016D966CAD7DAD8EAD9FAD6D9781010E +:1022200024E045E00E94E6627E01F9E2EF0EF11C37 +:1022300069966CAD7DAD8EAD9FAD6997870124E049 +:1022400045E00E94E6626E0125E1C20ED11C659652 +:102250006CAD7DAD8EAD9FAD6597860124E045E008 +:102260000E94E6620451110924E045E0C501B40171 +:102270000E94E662EA963FADEA97323051F0333081 +:1022800059F0313019F0DF92CF920CC03F922F926B +:1022900009C0FF92EF9206C081E090E08C0F9D1F75 +:1022A0009F938F9386EB92E017C269961CAE1DAE8A +:1022B0001EAE1FAE699765961CAE1DAE1EAE1FAE5C +:1022C000659721961CAE1DAE1EAE1FAE219784E110 +:1022D000DE019996AE96BFAFAEAFAE97E82F1D92D6 +:1022E000EA95E9F71E01F5E12F0E311CD101E82F27 +:1022F0001D92EA95E9F79E012F5F3F4FE0963FAFB1 +:102300002EAFE097D9011D928A95E9F780E090E021 +:102310000E940C2F2B013C0181E090E00E940C2FC9 +:10232000ED966CAF7DAF8EAF9FAFED9782E090E002 +:102330000E940C2F20E030E044EB52E40E947865CC +:10234000FE01FD964F019E012F5A3F4F5901DE01BC +:10235000AB5ABF4F6D017B018C01ED962CAD3DADAD +:102360004EAD5FADED97C301B2010E942F2CA401C9 +:10237000B501C6010E94CE2969966CAD7DAD8EADCA +:102380009FAD69978E01075D1F4F24E045E00E94D5 +:10239000E66265966CAD7DAD8EAD9FAD65978101B2 +:1023A00024E045E00E94E66221966CAD7DAD8EADE5 +:1023B0009FAD21970451110924E045E00E94E66297 +:1023C0001F930F933F922F92AE96FFADAE97FF9360 +:1023D000AD962FADAD972F938AEB92E067C16996CA +:1023E0001CAE1DAE1EAE1FAE699765961CAE1DAE2F +:1023F0001EAE1FAE659721961CAE1DAE1EAE1FAE63 +:10240000219784E1DE019996AE96BFAFAEAFAE974D +:10241000E82F1D92EA95E9F71E01F5E12F0E311C18 +:10242000D101E82F1D92EA95E9F79E012F5F3F4FFA +:10243000E0963FAF2EAFE097D9011D928A95E9F75C +:1024400080E090E00E940C2FED966CAF7DAF8EAFD8 +:102450009FAFED9781E090E00E940C2FCB57DF4FAC +:10246000688379838A839B83C558D04082E090E05B +:102470000E940C2F20E030E044EB52E40E9478658B +:102480002B013C01FE01FD964F019E012F5A3F4F4B +:102490005901CE018B5A9F4F6C0183017201CB57BA +:1024A000DF4F288139814A815B81C558D040ED9644 +:1024B0006CAD7DAD8EAD9FADED970E942F2CA4012C +:1024C000B501C6010E94CE2969966CAD7DAD8EAD79 +:1024D0009FAD69976596CCACDDACEEACFFAC659773 +:1024E0009B01AC010E94AB684B015C01A701960106 +:1024F000C701B6010E94AB689B01AC01C501B401E4 +:102500000E9479650E9438698E01075D1F4F24E0A3 +:1025100045E00E94E66220E030E044EB52E4C30173 +:10252000B2010E947965810124E045E00E94E662E3 +:1025300021966CAD7DAD8EAD9FAD219704511109F3 +:1025400024E045E00E94E6621F930F933F922F9292 +:10255000AE96BFADAE97BF93AD96EFADAD97EF938F +:1025600088EC92E0A3C0A49B59C0CE0101967C01E7 +:102570006E0191E1C90ED11C87018FE30E94891F72 +:10258000D7018D939D937D01AC15BD05B1F720E07A +:1025900030E040E0842F90E0B901680F791F673088 +:1025A0007105BCF4880F991FD801A80FB91F6D9150 +:1025B0007C9111970296F801E80FF91F80819181B3 +:1025C0008617970720F48D939C93718360834F5FE8 +:1025D000E1CF2F5F3F4F28303105D9F62F81388565 +:1025E0008D819E81820F931F29853A85820F931FCB +:1025F0002B853C85820F931F969587959695879599 +:102600008A30910558F08734910530F009C0479918 +:1026100005C00898009904C082E01CC080E01AC080 +:1026200081E018C082B386958695869591E08927CA +:10263000817010C08BE30E94891F21E085369105CF +:1026400008F420E01F922F9345C08091020185FB82 +:10265000882780F91F923DC080918F108F938091C1 +:102660008E108F9380918D108F9380918C108F930B +:1026700080918B108F9380918A1015C080E090E03C +:102680000E94BF2E182F092F81E090E00E94BF2EDC +:10269000F82EE92E82E090E00E94BF2EEF92FF928A +:1026A0000F931F939F938F9386ED92E09F938F9349 +:1026B00087EC9CE09F938F930E94116A0FB6F89469 +:1026C000DEBF0FBECDBF16C08091C5118F93809124 +:1026D000C4118F9389E793E09F938F9387EC9CE0DD +:1026E0009F938F930E94116A0F900F900F900F90FD +:1026F0000F900F9080E090E002C082E390E09C0198 +:10270000215031092230310510F00C94F91D81E07F +:1027100090E0E1960FACE19702C0880F991F0A94F0 +:10272000E2F7EF962EAD3FADEF9728233923232B09 +:1027300011F00C94B207EF96AEADBFADEF97A82B9A +:10274000B92BEF96BFAFAEAFEF970C942E05812F4C +:10275000110F990BAA0BBB0BFC01E654F109E531F3 +:10276000F10510F00C94AA1D8827E758FF4F8F4FF2 +:102770000C94DE69C092FD12D092FE12E092FF121C +:10278000F0920013E1961FAEE197BBC0C092011317 +:10279000D0920213E0920313F0920413CF57DF4F4D +:1027A000B881C158D040B160CF57DF4FB883C1580E +:1027B000D040E1E0A3C0C0920513D0920613E0928E +:1027C0000713F0920813CF57DF4FF881C158D0405C +:1027D000F260CF57DF4FF883C158D04022E0E19636 +:1027E0002FAFE1978EC0C0920913D0920A13E092E6 +:1027F0000B13F0920C13CF57DF4F3881C158D040E4 +:102800003460CF57DF4F3883C158D04083E0E19622 +:102810008FAFE19776C080920D1394E056C0C70148 +:10282000B6010E94C16660930E1370930F138093DC +:10283000101390931113A5E0E196AFAFE19761C03B +:10284000C0921213D0921313E0921413F092151346 +:10285000B6E04FC0C0921613D0921713E09218132F +:10286000F0921913E7E04AC0C0921A13D0921B13DA +:10287000E0921C13F0921D13F8E0E196FFAFE19790 +:1028800040C0C0921F13D0922013E0922113F09207 +:102890002213E3962FADE3972160E3962FAFE397E2 +:1028A0003AE0E1963FAFE1972CC0C0922313D0925B +:1028B0002413E0922513F0922613E3968FADE3974D +:1028C0008260E3968FAFE3979BE0E1969FAFE1973D +:1028D00018C0C0922713D0922813E0922913F092C7 +:1028E0002A13E396AFADE397A460E396AFAFE39707 +:1028F000BCE0E196BFAFE19704C0E9E0E196EFAF3D +:10290000E19701E010E0E1960FACE19702C0000F03 +:10291000111F0A94E2F7E9968EAD9FADE9978023E7 +:102920009123892B11F00C94A21D81E693E0E1968E +:102930000FACE19702C0959587950A94E2F780FF66 +:102940000BC020E030E0A901C701B6010E94526629 +:1029500087FF02C00C94A41DE9962EAD3FADE99708 +:10296000202B312BE9963FAF2EAFE9970C942E0523 +:10297000E3963FADE397332349F0E7968FADE797B2 +:10298000811104C092E0E7969FAFE797E896AFAD5C +:10299000E897A5FF0FC080910E1390910F13A0919F +:1029A0001013B091111380389649A849B10514F05D +:1029B0000C94A61D8091F412813069F4E796FFAD66 +:1029C000E797F230E1F5E8962FADE89720FD02C0D9 +:1029D0000C94B01D34C080916412811130C0E8960F +:1029E0003FADE89730FF1BC08091F512813039F57B +:1029F00023E333E34BEC51E46091FD127091FE123E +:102A00008091FF12909100130E94AB686093FD12B9 +:102A10007093FE128093FF129093001310C0809168 +:102A2000711290917212A0917312B09174128093EE +:102A3000FD129093FE12A093FF12B0930013E9963B +:102A40008EAD9FADE99790FD10C080916D12909171 +:102A50006E12A0916F12B091701280931A1390931E +:102A60001B13A0931C13B0931D138091F21281309D +:102A700089F4E8969FADE89796FD03C08CE10C942D +:102A8000F91DE996AEADBFADE997AF7BE996BFAF53 +:102A9000AEAFE9978091F712882311F1813081F46C +:102AA000B1E0CB57DF4FB883C558D040EA961FAE90 +:102AB000EA97E2E0C158DF4FE883CF57D0401FC00C +:102AC000CB57DF4F1882C558D040F2E0EA96FFAFEF +:102AD000EA9721E0C158DF4F2883CF57D0400FC07D +:102AE00032E0CB57DF4F3883C558D04081E0EA96BB +:102AF0008FAFEA97C158DF4F1882CF57D0408091EF +:102B0000F512813031F0E7969FADE7979330C9F524 +:102B10002EC07FE1E72E73E1F72E00E010E0E39690 +:102B2000AFADE397CA2ED12CC601002E02C09595F9 +:102B300087950A94E2F780FF11C023E333E34BEC5F +:102B400051E4F70160817181828193810E94AB68B9 +:102B5000D7016D937D938D939C9313970F5F1F4FB8 +:102B6000B4E0EB0EF11C03301105F1F6CCCF8091EF +:102B7000F812813031F4E396EFADE397E43009F0D9 +:102B8000E7C78CE0E6E8F2E1DE01559601900D9290 +:102B90008A95E1F7EF962EAD3FADEF9731FD0AC074 +:102BA0009090F21232E09316C9F088E0981609F47A +:102BB000C8C02BC18091F912873018F08DE10C94B8 +:102BC000F91D90916912981759F3BE016B5E7F4F02 +:102BD0000E947A3E882309F4CDC7E2CFE3969FADE9 +:102BE000E397911103C08AE10C94F91DE9968EAD2B +:102BF0009FADE99780759927892B09F43FCF6091A4 +:102C000012137091131380911413909115130E9455 +:102C100079690E94C666673088F680910D13843109 +:102C200041F0823009F096C7E896AFADE897A7FD6E +:102C300091C7E996EEADFFADE997EF7AE996FFAF60 +:102C4000EEAFE997662329F06150E1966FAFE19707 +:102C500005C0F091F912E196FFAFE197BE016F5FF9 +:102C60007F4FE1968FADE1970E947A3E882309F469 +:102C700081C730900D1340909E1250909F1260902B +:102C8000A0127090A1128E010F5F1F4FC12CD12C8A +:102C9000E12CF12CE3962FADE397822E912CC40109 +:102CA0000E2C02C0959587950A94E2F780FF3BC0F1 +:102CB000C6018E509D4E5C0194E139122AC0F60186 +:102CC000ED59FD4E27A530A941A952A96789708DFC +:102CD000818D928D0E947865D5019D962D913D91B3 +:102CE0004D915C91D0970E947865F8016083718363 +:102CF00082839383F2E0EF16F104A9F4A301920119 +:102D00000E947865D8016D937D938D939C93139762 +:102D10000AC0F50185A596A5A7A5B0A9F8018083ED +:102D20009183A283B383FFEFEF1AFF0A24E0C20E60 +:102D3000D11C0C5F1F4F33E0E316F10409F0AFCF55 +:102D400024C1E3968FADE397882309F44CCF4090DC +:102D50009E1250909F126090A0127090A1120FE1ED +:102D600013E1C12CD12CE12CF12CA82EB12CF601B1 +:102D7000ED59FD4EC5010E2C02C0959587950A941C +:102D8000E2F780FF2BC0A5E1B0E0AC0FBD1FAC0D9A +:102D9000BD1D2D913D914D915C916789708D818D07 +:102DA000928D0E947865D8012D913D914D915C9155 +:102DB0000E947865F8016083718382839383F2E0D7 +:102DC000EF16F104A1F4A30192010E947865D801E5 +:102DD0006D937D938D939C93139709C087A590A9BC +:102DE000A1A9B2A9F80180839183A283B383FFEFE5 +:102DF000EF1AFF0A24E0C20ED11C0C5F1F4F33E014 +:102E0000E316F10409F0B3CFBDC0E7968FADE797A5 +:102E1000833061F495E0991609F497C0A7E09A16FB +:102E200009F4ABC0B3E09B12ADC082C0E396EFAD36 +:102E3000E397EE2309F49BC08090F61240909E1217 +:102E400050909F126090A0127090A1126AE7C62E57 +:102E500062E1D62E0FE113E15E01F5E1AF0EB11C88 +:102E6000E12CF12C2E2E312CC1010E2C02C0959597 +:102E700087950A94E2F780FD0BC0F601808191816D +:102E8000A281B381F80180839183A283B3833FC081 +:102E9000F7E09F16E1F1811029C0D60158962D91D7 +:102EA0003D914D915C915B97F501608171818281CB +:102EB00093810E947965D8012D913D914D915C914E +:102EC0000E947965F8016083718382839383F2E0C5 +:102ED000EF16F104E1F4A30192010E947965D80193 +:102EE0006D937D938D939C93139711C0F601208170 +:102EF000318142815381D8016D917D918D919C9159 +:102F00000E947965F8016083718382839383FFEF68 +:102F1000EF1AFF0A24E0C20ED11C0C5F1F4F34E0F1 +:102F2000A30EB11C83E0E816F10409F09DCF72CF27 +:102F3000E3969FADE397911103C0E7961FAEE79725 +:102F4000BE016F5F7F4F86E00CC0E396AFADE397A5 +:102F5000A11103C0E7961FAEE797BE016F5F7F4FD9 +:102F600087E00E947A3E882309F404C60BC085E0FE +:102F7000981681F397E0991238C68091F312823047 +:102F800008F0EAC5E1961FAEE1971091F3121830F0 +:102F900069F4E396BFADE397BB2309F420C2E7963B +:102FA000EFADE797E13009F0D9C527C3E796FFAD4C +:102FB000E797F23009F013C2111107C0E3962FAD65 +:102FC000E397222309F410C218C320E030E0A901DE +:102FD0006091FD127091FE128091FF12909100138A +:102FE0000E945266882309F4BBC5143028F41230BD +:102FF00070F4113029F001C3183008F4ACC1FDC2DF +:10300000E3963FADE397332309F4EEC1F6C2E396AE +:103010008FADE397882309F4E6CDC158DF4F98813F +:10302000CF57D040692E712CEA96BFADEA97AB2FEF +:10303000B0E0EF96BFAFAEAFEF9781E090E07C01DC +:10304000EA960FACEA9702C0EE0CFF1C0A94E2F776 +:10305000C158DF4F0880CF57D04002C0880F991F5A +:103060000A94E2F7E82AF92AE396EFADE3978E2F68 +:1030700090E08E219F21892B09F474C5C301880F2C +:10308000991F880F991FFC01EE50FD4EDC01AD59D0 +:10309000BD4E57962D913D914D915C915A9765A5E6 +:1030A00076A587A590A90E9478651B012C01EF9653 +:1030B0008EAD9FADEF97880F991F880F991FFC0168 +:1030C000EE50FD4EDC01AD59BD4E57962D913D9110 +:1030D0004D915C915A9765A576A587A590A90E9408 +:1030E00078654B015C01E996CEACDFACE997F0E87E +:1030F000CF22DD24E8962FADE89727FF47C0E99659 +:103100008EAD9FADE9978F77E9969FAF8EAFE99728 +:1031100020911F13309120134091211350912213BD +:1031200060917A1270917B1280917C1290917D1245 +:103130000E945266811162C12091231330912413A1 +:10314000409125135091261360917E1270917F1249 +:1031500080918012909181120E94526681114EC11D +:1031600020912713309128134091291350912A134D +:1031700060918212709183128091841290918512D5 +:103180000E94526681113AC181E233C5CF57DF4FA9 +:103190003881C158D040232F30E0E4963FAF2EAFA6 +:1031A000E497E222F322EF2809F4DEC4E9968EAD1B +:1031B0009FADE997817FE9969FAF8EAFE9978091A8 +:1031C000F512813009F480C0F301EE0FFF1FEE0FFE +:1031D000FF1FEA50FD4EC384D484E584F684A70122 +:1031E0009601C201B1010E9478652B013C01EF9666 +:1031F000EEADFFADEF97EE0FFF1FEE0FFF1FEA5092 +:10320000FD4E83859485A585B685E6968CAF9DAFEA +:10321000AEAFBFAFE6979C01AD01C501B4010E94FE +:1032200078654B015C01A3019201C301B2010E94C8 +:10323000AB682B013C01A5019401C501B4010E94BA +:10324000AB689B01AC01C301B2010E9479650E9489 +:1032500038694B015C01A7019601C701B6010E94C4 +:10326000AB686B017C01E6962CAD3DAD4EAD5FAD1C +:10327000E697CA01B9010E94AB689B01AC01C70186 +:10328000B6010E9479650E9438696B017C016093E8 +:1032900016137093171380931813909319139B01AF +:1032A000AC01C501B4010E9478654B015C01E89452 +:1032B000B7F82AE037ED43EA5BE3C501B4010E94A9 +:1032C000706818165CF199C102EF12E1E4968EADB8 +:1032D0009FADE4970C2C02C0959587950A94E2F770 +:1032E00080FF12C023E333E34BEC51E4D8011F9677 +:1032F0006D917D918D919C9152970E94AB68F801E0 +:103300006787708B818B928BFFEFCF1ADF0A0C5F80 +:103310001F4F23E0C216D104C9F656CF20E030E09B +:1033200040E05FE3C501B4010E94706818160CF418 +:103330002BCF2FE632E143E85AE3C701B6010E94E2 +:10334000AB689B01AC01C501B4010E9470681816FE +:103350000CF41ACF52C1E3963FADE397332309F43F +:1033600042CC20911F133091201340912113509192 +:10337000221360917A1270917B1280917C1290914D +:103380007D120E945266811138C120912313309121 +:103390002413409125135091261360917E12709151 +:1033A0007F1280918012909181120E945266811149 +:1033B00024C1209127133091281340912913509153 +:1033C0002A136091821270918312809184129091DD +:1033D00085120E945266882309F4D6CE0EC1E79664 +:1033E0008FADE797811109C1E9968EAD9FADE99741 +:1033F0008E7D9C7FE7961FAEE79705C18091F51201 +:103400008130B1F423E333E34BEC51E460911613C4 +:103410007091171380911813909119130E94AB6843 +:1034200060931613709317138093181390931913C6 +:103430008091161390911713A0911813B09119133E +:10344000E6968CAF9DAFAEAFBFAFE697A2019101FC +:10345000C201B1010E94AB68CF57DF4F6883798307 +:103460008A839B83C158D040A5019401C501B40152 +:103470000E94AB68C757DF4F688379838A839B8339 +:10348000C958D04020E030E040E850E4E6966CAD0A +:103490007DAD8EAD9FADE6970E94AB68E6962CADF4 +:1034A0003DAD4EAD5FADE6970E94AB68CF57DF4FA5 +:1034B000288139814A815B81C158D0400E9478655A +:1034C000C757DF4F288139814A815B81C958D04075 +:1034D0000E9478656B017C0120E030E0A9010E9428 +:1034E000526687FD5EC3C701B6010E9438696B0151 +:1034F0007C01C757DF4F288139814A815B81C958D8 +:10350000D040CF57DF4F688179818A819B81C15834 +:10351000D0400E9479650E9438699B01AC01C701C7 +:10352000B60190580E9459666B017C01133021F45A +:10353000F7FAF094F7F8F09420E030E0A901E6966D +:103540006CAD7DAD8EAD9FADE6970E94526687FF54 +:1035500013C0F7FAF094F7F8F094E6968CAD9DADB1 +:10356000AEADBFADE697B058809316139093171386 +:10357000A0931813B09319138301000F111F000FAC +:10358000111F0A501D4EA7019601C501B4010E94EA +:10359000AB689B01AC01C201B1010E94786520E0DB +:1035A00030E040E05FE30E94AB68D8011B966D936A +:1035B0007D938D939C931E97EF960EAD1FADEF9765 +:1035C000000F111F000F111F0A501D4EA701960179 +:1035D000C201B1010E94AB689B01AC01C501B401FD +:1035E0000E94796520E030E040E05FE30E94AB6834 +:1035F000F8016387748785879687E9968EAD9FADBE +:10360000E9978E7D907E892B09F0B0C280910E13D0 +:1036100090910F13A0911013B09111138093761213 +:1036200090937712A0937812B09379128091F4124C +:10363000809364128091FD129091FE12A091FF126E +:10364000B09100138093711290937212A093731231 +:10365000B0937412C0901A13D0901B13E0901C13F7 +:10366000F0901D13A701960160916D1270916E127A +:1036700080916F12909170120E945266882341F1DE +:1036800080916C128823A1F090912D13923081F0DB +:10369000C157DF4F8883CF58D0400E948A5FB7015F +:1036A000A601C157DF4F8881CF58D0400E940C3D02 +:1036B00080911A1390911B13A0911C13B0911D13AC +:1036C00080936D1290936E12A0936F12B09370124C +:1036D00080911E13809375128091FC1290916C1250 +:1036E000981709F446C040916D1250916E12609186 +:1036F0006F127091701290912D139230B1F1C057EA +:10370000DF4F4883C059D040CF56DF4F5883C1594F +:10371000D040C357DF4F6883CD58D040C257DF4FEA +:103720007883CE58D040C157DF4F8883CF58D040E0 +:103730000E948A5FC057DF4F4881C059D040CF56A2 +:10374000DF4F5881C159D040C357DF4F6881CD58F2 +:10375000D040C257DF4F7881CE58D040C157DF4F9D +:103760008881CF58D0400E940C3D8091FC128093FC +:103770006C121091FB1280916B12811781F0809175 +:103780002D13823041F00E948A5F123011F45C9A4E +:1037900002C00E9424548091FB1280936B1280918E +:1037A000F212813079F08091F71280936712809144 +:1037B000F51280936512E7969FADE797933009F075 +:1037C00074C054C08090121390901313A0901413DF +:1037D000B090151380912D13823029F320E030E052 +:1037E00040EA51E4C501B4010E94AB680E942F6712 +:1037F0000E94C6666B017C010E948A5F20E030E077 +:103800004AE754E4C501B4010E94AB684B015C0176 +:1038100082E38C9DB0018D9D700D112480E090E0BD +:103820000E94F2669B01AC01C501B4010E9478655B +:103830000E942F670E94C666CB010E94434CC114B0 +:10384000D10409F4B0CF0E947A42A1E0CA1AD1088B +:1038500080912C138111A7CFBFEFE0E7F2E0B150C8 +:10386000E040F040E1F700C00000E9CF8091F8129D +:1038700080936812813089F48091271390912813E6 +:10388000A0912913B0912A1380939E1290939F12B6 +:10389000A093A012B093A11208C010929E12109291 +:1038A0009F121092A0121092A1128091F912909181 +:1038B0006912981759F0809369128CE0FE01759691 +:1038C000A6E8B2E101900D928A95E1F78091F61297 +:1038D00080936612E091F2128E2F90E0FC013297F5 +:1038E000E830F10508F063C08827E257FF4F8F4F9B +:1038F0000C94DE69BE016F5F7F4FE1968FADE1975B +:103900000E94713E80916912E1962FADE19782137A +:103910004EC08CE0FE013196A6E8B2E13CC0E796CD +:103920003FADE797332371F02091711230917212FD +:10393000409173125091741200E06FE173E181E0E5 +:103940000E943C4D2091711230917212409173127D +:103950005091741200E0BE016F5F7F4F81E00E94C2 +:103960003C4D182F8CE0FE013196AAE7B2E10190A0 +:103970000D928A95E1F71CC06AE772E186E003C008 +:103980006AE772E187E00E94713E11C08CE0EFE1CE +:10399000F3E1A2E9B2E101900D928A95E1F707C047 +:1039A0008CE0E2E9F2E1DF011D928A95E9F710E08F +:1039B0008091F31280936312883009F46CC0E7960B +:1039C000BFADE797B23009F066C090E0883091054E +:1039D00008F058C0FC014090711250907212609033 +:1039E0007312709074128827EA56FF4F8F4F0C9411 +:1039F000DE6900E0A30192016FE173E180E007C09E +:103A000000916412A30192016FE173E181E00E94D1 +:103A10003C4D182F37C06091161370911713809189 +:103A20001813909119138824839409C06091161378 +:103A3000709117138091181390911913812CCB5703 +:103A4000DF4FA880C558D040EA96CFACEA97C1585E +:103A5000DF4FE880CF57D04000916412A30192015C +:103A60000E9452600FC000E001C001E020E004C0ED +:103A700000E001C001E021E040916412C301B20105 +:103A80000E94A75F8CE0EFE1F3E1AAE7B2E10190C9 +:103A90000D928A95E1F78091FA1280936A12882339 +:103AA00009F466C00E948A5F90916A1280912D137A +:103AB000913069F48230E9F19FB7F8948091A212B5 +:103AC00088608093A2129FBF0E947A4232C091E028 +:103AD0009093631210926712109266121092641201 +:103AE0001092691210926C1210926B128230A9F02F +:103AF000BE016B5E7F4F80E00E947A3E8823D1F149 +:103B00008CE0FE017596A6E8B2E101900D928A95CF +:103B1000E1F70E94053D0E94245486E899E00E9446 +:103B20006C428AE299E00E946C4283E199E00E9433 +:103B30006C4210926A121CC081E05BC082E059C0E6 +:103B400088E157C089E155C084E053C08BE151C082 +:103B500085E24FC084E14DC08EE14BC08FE149C08A +:103B600086E147C080E245C083E243C084E241C0B1 +:103B7000812F3FC087E03DC0EEE12E16310411F4E5 +:103B80000C946A0680F42AE02216310411F40C9495 +:103B90004A063CE12316310411F40C94550687E1E2 +:103BA00028C082E226C085E32816310411F40C9463 +:103BB00086069CE52916310491F76114710439F0E9 +:103BC0009AE06916710431F689E00C946E0688E07B +:103BD0000C946E063CE52316310411F00C94990701 +:103BE00081E0E7968FAFE797E8CFA3E09A12CAC9C2 +:103BF000A4C9CF56DF4F0FB6F894DEBF0FBECDBFBE +:103C0000DF91CF911F910F91FF90EF90DF90CF90B8 +:103C1000BF90AF909F908F907F906F905F904F90EC +:103C20003F902F9008952091020D3091030D2115A2 +:103C30003105B9F08091000D9091010D8217930725 +:103C400034F401969093010D8093000D0AC01092F8 +:103C5000010D1092000D1092030D1092020D1092A2 +:103C6000F7112091BD0C3091BE0C21153105A1F04A +:103C70008091FE0C9091FF0C8217930734F401960B +:103C80009093FF0C8093FE0C07C01092FF0C1092D3 +:103C9000FE0C81E08093F8118091F71181111BC017 +:103CA0008091BC0C811117C0809173008E7F80932E +:103CB00073001092F90C1092030D1092020D1092E5 +:103CC000BE0C1092BD0C1092010D1092000D1092BE +:103CD000FF0C1092FE0C08958091FD0C811107C01D +:103CE00081E08093FD0C80910B01806205C01092F1 +:103CF000FD0C80910B018F7D80930B018091FB0C5B +:103D00009091FC0C9C012F5F3F4F3093FC0C209353 +:103D1000FB0C20910402309105022817390748F462 +:103D20001092FC0C1092FB0C809170008E7F80939F +:103D3000700008952091C4113091C51124303105CF +:103D400029F426E636E646E65FE307C0253031056E +:103D500039F526E636E646EE5FE30E94596620E036 +:103D600030E040E852E40E94AB680E94C166609374 +:103D7000B40C7093B50C8093B60C9093B70C8EED89 +:103D80009EE190935D1280935C121092A00085E0FA +:103D90008093A1008DEF9FEF90935F1280935E124E +:103DA00080915E1290915F129093A5008093A40081 +:103DB0008091720081608093720008958091B40CAC +:103DC0009091B50CA091B60CB091B70C18161906CD +:103DD0001A061B06F4F42091FA0C222389F01092A3 +:103DE000FA0C0197A109B1098093B40C9093B50C1A +:103DF000A093B60CB093B70C80910201806406C00A +:103E000081E08093FA0C809102018F7B8093020104 +:103E100008950E94D6461092B40C1092B50C1092E0 +:103E2000B60C1092B70C0895CF93DF93EB01843159 +:103E3000D1F028F4882361F08C30A8F437C08233A5 +:103E4000E9F018F4873190F10EC0833311F10BC003 +:103E50008881882329F06EE873E0CE010E94FF6913 +:103E600060E973E020C08881882329F06EE873E060 +:103E7000CE010E94FF6963E973E015C08881882341 +:103E800029F06EE873E0CE010E94FF6967E973E0F4 +:103E90000AC08881882329F06EE873E0CE010E9471 +:103EA000FF696BE973E0CE010E94FF698091C70C46 +:103EB000882379F067EC7CE0CE010E94FF6982E301 +:103EC000E7ECFCE0DF011D928A95E9F7DF91CF91E5 +:103ED000089560E473E0CE01DF91CF910C94FF6907 +:103EE000E1E0F1E080818062808380818064808372 +:103EF000E2E0F1E080818F7D808380818F7B808311 +:103F000008953F9A479A08959C9A9D9AA498A59AD5 +:103F10000895863308F0865390917B00282F2870EF +:103F2000977F922B90937B008770806480937C00B6 +:103F300080917A00806480937A0080917A0086FF75 +:103F4000FCCF809178002091790090E0922B089529 +:103F50008091040187788093040180910301887720 +:103F6000803451F46FE973E08FEB9CE00E940A6AA1 +:103F700040E050E0BA010EC080910301887769F4F7 +:103F800066EA73E08FEB9CE00E940A6A40E050E032 +:103F900060EE70E483E00E946F3D0C94A840CF93E4 +:103FA000DF936091C41184E893E00E94795360919B +:103FB000C51185E893E00E94795388E993E0EC010C +:103FC0002196FC01E25DF14F60810E947953CE01A0 +:103FD000CC39D340A1F78EE893E0EC012196FC01A7 +:103FE000E45CF14F60810E947953CE01C239D34025 +:103FF000A1F782E89CE0EC012196FC01E45BFA4F1A +:1040000060810E947953CE01C638DC40A1F7DF9170 +:10401000CF910895CF92DF92EF92FF920F931F936B +:10402000CF93DF9369017A01EAE0F1E02081206219 +:104030002083EBE0F1E020812F7D2083660F771F46 +:1040400070930502609304020EEF11E18CE69EE18D +:10405000F80191838083C0E7D0E088818E7F8883D8 +:10406000E0EBF0E080818C7F8083E1EBF0E0808109 +:10407000877F8083A6EBB0E08C918F7D8C938881C5 +:104080008D7F888380818460808380818C7F808322 +:1040900020E034E244EF59E4C701B6010E945966BA +:1040A00020E034E244E75BE40E94AB6820E030E0CB +:1040B00040E85CE30E94AB680E94C16620E031E00A +:1040C000C901861B970BF8019383828382819381B8 +:1040D0008093B200888181608883DF91CF911F91A6 +:1040E0000F91FF90EF90DF90CF9008958091C411D1 +:1040F0009091C51104970297F8F41092B80C1092A1 +:10410000B90C1092BA0C1092BB0C809107018F7DF4 +:10411000809307018091080180628093080180915B +:10412000020180628093020160E070E084EB93E41E +:1041300001DE81E08093FB1108951092B40C10927F +:10414000B50C1092B60C1092B70C0E94D646109285 +:10415000FB110C94D6468F929F92AF92BF92CF9252 +:10416000DF92EF92FF926B017C0120E030E044EBA4 +:1041700053E40E94706818160CF488C020E030E008 +:10418000A901C701B6010E94526687FD7FC08091D8 +:10419000C4119091C5110497029790F52091B80C25 +:1041A0003091B90C4091BA0C5091BB0CC701B601CB +:1041B0000E9478654B015C01C092B80CD092B90C9A +:1041C000E092BA0CF092BB0C20E030E0A9010E9412 +:1041D0007068181624F4809102018F7D03C08091CD +:1041E0000201806280930201C501B4019F77FF90B4 +:1041F000EF90DF90CF90BF90AF909F908F909ACD2F +:1042000020E030E044E353E4C701B6010E94706847 +:1042100018161CF4C12CD12C7601A701960160E080 +:1042200070E084E393E40E94786520E030E044E3AA +:1042300053E40E9459669B01AC010E94796523E317 +:1042400033E343E35FE30E94796560930002709378 +:104250000102809302029093030220E030E048EADA +:1042600051E40E94596620E030EC4FE754E40E948C +:10427000AB680E94C666CB01FF90EF90DF90CF90B5 +:10428000BF90AF909F908F900C942946FF90EF9035 +:10429000DF90CF90BF90AF909F908F9008952F9216 +:1042A0003F924F925F926F927F928F929F92AF92C6 +:1042B000BF92CF92DF92EF92FF920F931F93CF9313 +:1042C000DF93CDB7DEB7CA5AD1090FB6F894DEBF77 +:1042D0000FBECDBF8A3928E0920709F41AC148F40D +:1042E000843DE7E09E0779F08939984009F451C090 +:1042F00049C58C3928E0920709F42FC28D399840BE +:1043000009F428C33FC51A821982CE0101969F93F2 +:104310008F9387E592E09F938F937F936F930E9493 +:10432000406A0F900F900F900F900F900F901816FB +:1043300019060CF035C389819A819093030D8093FF +:10434000020D91E09093F7118091F90C81111DC538 +:1043500023E13EE1309306122093051210922001D2 +:1043600085E08093210121EF3FEF309308122093E5 +:1043700007122091071230910812309325012093E3 +:104380002401809173008160809373009093F90CF5 +:10439000FCC48E010B5E1F4F1F930F933E0189E2F9 +:1043A000680E711C7F926F922E019DE3490E511C85 +:1043B0005F924F921E01E1E52E0E311C3F922F922B +:1043C0008DEA93E09F938F937F936F930E94406A4F +:1043D0000FB6F894DEBF0FBECDBF04970CF4E0C259 +:1043E000EF961CAE1DAE1EAE1FAEEF97E5961CAE4F +:1043F0001DAE1EAE1FAEE597AB961CAE1DAE1EAE3B +:104400001FAEAB97A1961CAE1DAE1EAE1FAEA19700 +:10441000CE0101967C018CE0F70111928A95E9F7B3 +:10442000AE0145585F4F60E070E0C1010E944E4C04 +:10443000882309F4AAC4AE014F585F4F60E070E0D2 +:10444000C2010E944E4C882309F49FC4AE01495911 +:104450005F4F60E070E0C3010E944E4C882309F476 +:1044600094C4AE01435A5F4F60E070E0C8010E94FF +:104470004E4C882309F489C420E030E044EB52E438 +:10448000E5966CAD7DAD8EAD9FADE5970E947865EC +:1044900021EE3EE245E652E40E9459662B013C01C2 +:1044A000E5966CAF7DAF8EAF9FAFE597EF968CAC86 +:1044B0009DACAEACBFACEF970E9456669B01AC01C1 +:1044C000C501B4010E94AB6869837A838B839C83A6 +:1044D000C301B2010E942E699B01AC01C501B40168 +:1044E0000E94AB686D837E838F839887AB968CAD7B +:1044F0009DADAEADBFADAB9789879A87AB87BC87C3 +:10450000A1962CAD3DAD4EAD5FADA19700E0B701DA +:1045100034C4E5961CAE1DAE1EAE1FAEE597AB963D +:104520001CAE1DAE1EAE1FAEAB979E012F5F3F4F60 +:1045300079013F932F938E010B5E1F4F1F930F93B3 +:10454000CE0185589F4FCF55DF4F99838883C15A3D +:10455000D0409F938F9386ED93E09F938F937F93AB +:104560006F930E94406A0FB6F894DEBF0FBECDBFB6 +:1045700003970CF415C2AE014F585F4F60E070E036 +:10458000C8010E944E4C882309F4FFC3AE0149596B +:104590005F4F60E070E0C7010E944E4C882309F431 +:1045A000F4C3A1961CAE1DAE1EAE1FAEA1976596BC +:1045B0001CAE1DAE1EAE1FAE659721961CAE1DAE85 +:1045C0001EAE1FAE21971E01F9E22F0E311C8CE0AA +:1045D000F10111928A95E9F76091E6117091E71166 +:1045E0008091E8119091E9110E94F4662B013C0141 +:1045F0006091E2117091E3118091E4119091E511C5 +:104600000E94F4669B01AC016091DE117091DF1194 +:104610008091E0119091E111C955DF4F2883C75A6D +:10462000D040C855DF4F3883C85AD040C755DF4FF8 +:104630004883C95AD040C655DF4F5883CA5AD04024 +:104640000E94F466FE01FD964F0174965F013C9650 +:104650006F0183017201C955DF4F2881C75AD040CD +:10466000C855DF4F3881C85AD040C755DF4F488101 +:10467000C95AD040C655DF4F5881CA5AD0400E940F +:10468000142DED968EAD9FADED978130910569F1BA +:10469000F4F4892B09F091C120E030E044EB52E4BE +:1046A000E5966CAD7DAD8EAD9FADE5970E947865CA +:1046B0007B018C01E5966CAF7DAF8EAF9FAFE59728 +:1046C00065962CAD3DAD4EAD5FAD65972DC082308A +:1046D0009105F1F0039709F070C1E5966CAD7DADE1 +:1046E0008EAD9FADE59737DD50C32196ECACFDACA8 +:1046F0000EAD1FAD219765962CAD3DAD4EAD5FADB6 +:104700006597E5966CAD7DAD8EAD9FADE59712C01A +:104710002196ECACFDAC0EAD1FAD2197E5962CAD0E +:104720003DAD4EAD5FADE597A1966CAD7DAD8EAD67 +:104730009FADA197FE01F1964F0134975F01610192 +:104740000E942F2CA401B501C10128D6AB962CAD37 +:104750003DAD4EAD5FADAB970EC38E010B5E1F4FEF +:104760001F930F937E01F9E2EF0EF11CFF92EF927F +:104770003E012DE3620E711C7F926F922E0131E596 +:10478000430E511C5F924F928EEE93E09F938F9356 +:104790007F936F930E94406A0FB6F894DEBF0FBEFE +:1047A000CDBF04970CF4FCC0EF961CAE1DAE1EAE40 +:1047B0001FAEEF97E5961CAE1DAE1EAE1FAEE59781 +:1047C000AB961CAE1DAE1EAE1FAEAB97A1961CAE37 +:1047D0001DAE1EAE1FAEA197AE0145585F4F60E003 +:1047E00070E0C2010E944E4C882309F4CEC2AE0193 +:1047F0004F585F4F60E070E0C3010E944E4C882329 +:1048000009F4C3C2AE0149595F4F60E070E0C701CF +:104810000E944E4C882309F4B8C2AE01435A5F4F40 +:1048200060E070E0C8010E944E4C882309F4ADC2DC +:104830006091E6117091E7118091E8119091E91172 +:104840000E94F4662B013C016091E2117091E3112A +:104850008091E4119091E5110E94F4669B01AC01F6 +:104860006091DE117091DF118091E0119091E11162 +:10487000C955DF4F2883C75AD040C855DF4F38830A +:10488000C85AD040C755DF4F4883C95AD040C65593 +:10489000DF4F5883CA5AD0400E94F466FE01399611 +:1048A0004F0134975F0134976F0183017201C9553D +:1048B000DF4F2881C75AD040C855DF4F3881C85ACA +:1048C000D040C755DF4F4881C95AD040C655DF4F49 +:1048D0005881CA5AD0400E94912DA401B501C60149 +:1048E0005DD5EF962CAD3DAD4EAD5FADEF976981D7 +:1048F0007A818B819C810E94796569837A838B831D +:104900009C83E5962CAD3DAD4EAD5FADE5976D81D9 +:104910007E818F8198850E9479656D837E838F83E8 +:104920009887AB962CAD3DAD4EAD5FADAB9769852D +:104930007A858B859C850E94796569877A878B87C4 +:104940009C87A1962CAD3DAD4EAD5FADA19700E02B +:10495000B60113C23E01FDE56F0E711C7F926F928E +:104960002E0127E6420E511C5F924F928E010F5886 +:104970001F4F1F930F937E013BE7E30EF11CFF9245 +:10498000EF928DEA93E09F938F937F936F930E94B2 +:10499000406A0FB6F894DEBF0FBECDBF049784F413 +:1049A0001F9281E08F9388E192E09F938F930E9402 +:1049B00011420F900F900F900F9082E390E0E7C1AB +:1049C000C356DF4F188219821A821B82CD59D040FC +:1049D000C756DF4F188219821A821B82C959D040EC +:1049E000CB56DF4F188219821A821B82C559D040DC +:1049F000CF56DF4F188219821A821B82C159D040CC +:104A00001E01F1E52F0E311C8CE0F10111928A9507 +:104A1000E9F7AE0143565F4F60E070E0C7010E94C6 +:104A20004E4C882309F4B1C1AE0147565F4F60E098 +:104A300070E0C8010E944E4C882309F4A6C1AE0163 +:104A40004B565F4F60E070E0C2010E944E4C8823DD +:104A500009F49BC1AE014F565F4F60E070E0C301A7 +:104A60000E944E4C882309F490C1C357DF4F18822F +:104A700019821A821B82CD58D040C757DF4F188247 +:104A800019821A821B82C958D040CB57DF4F188237 +:104A900019821A821B82C558D0406091E61170912C +:104AA000E7118091E8119091E9110E94F4662B01C1 +:104AB0003C016091E2117091E3118091E4119091B9 +:104AC000E5110E94F4669B01AC016091DE117091CA +:104AD000DF118091E0119091E111C955DF4F2883DA +:104AE000C75AD040C855DF4F3883C85AD040C75541 +:104AF000DF4F4883C95AD040C655DF4F5883CA5A42 +:104B0000D0400E94F466FE01EB57FF4F4F013496F0 +:104B10005F0134966F0183017201C955DF4F28810F +:104B2000C75AD040C855DF4F3881C85AD040C75502 +:104B3000DF4F4881C95AD040C655DF4F5881CA5A05 +:104B4000D04072D72101F8E04F0E511C310124E012 +:104B5000620E711C6091E6117091E7118091E8116D +:104B60009091E9110E94F466CD55DF4F68837983F7 +:104B70008A839B83C35AD0406091E2117091E31104 +:104B80008091E4119091E5110E94F4669B01AC01C3 +:104B90006091DE117091DF118091E0119091E1112F +:104BA000C955DF4F2883C75AD040C855DF4F3883D7 +:104BB000C85AD040C755DF4F4883C95AD040C65560 +:104BC000DF4F5883CA5AD0400E94F4664201530115 +:104BD0006101CD55DF4FE880F9800A811B81C35AFE +:104BE000D040C955DF4F2881C75AD040C855DF4F44 +:104BF0003881C85AD040C755DF4F4881C95AD04084 +:104C0000C655DF4F5881CA5AD0408BD7A201B30195 +:104C1000C101C4D3F1016081718182819381C4801B +:104C2000D580E680F7809B01AC010E94AB684B0108 +:104C30005C01A7019601C701B6010E94AB689B0108 +:104C4000AC01C501B4010E9479650E943869C35660 +:104C5000DF4F288139814A815B81CD59D0400E9444 +:104C600079652B013C01C356DF4F688379838A83C2 +:104C70009B83CD59D040C756DF4F288139814A8167 +:104C80005B81C959D040CB57DF4F688179818A81D8 +:104C90009B81C558D0400E94796521EE3EE245E6F1 +:104CA00052E40E9459664B015C010E9456669B01CA +:104CB000AC01C301B2010E94AB686B017C01F10140 +:104CC0006083718382839383C501B4010E942E693E +:104CD0009B01AC01C301B2010E94AB68F101648386 +:104CE000758386839783CB56DF4F288139814A812C +:104CF0005B81C559D04060857185828593850E940E +:104D00007965F10160877187828793878E01035CE3 +:104D10001F4F24E045E0C701B6010E94E662F101A1 +:104D200064817581868197810451110924E045E0F1 +:104D30000E94E662F1016085718582859385045148 +:104D4000110924E045E00E94E662C356DF4F688106 +:104D500079818A819B81CD59D0400451110924E089 +:104D600045E00E94E662CF56DF4F288139814A81B3 +:104D70005B81C159D04000E0B10180E00E943C4D10 +:104D800090E005C081E090E002C080E090E0C65570 +:104D9000DF4F0FB6F894DEBF0FBECDBFDF91CF91CE +:104DA0001F910F91FF90EF90DF90CF90BF90AF9049 +:104DB0009F908F907F906F905F904F903F902F903B +:104DC00008958091C4119091C5110497029780F4C1 +:104DD00080910101806280930101809101018064D2 +:104DE0008093010180910201806280930201089505 +:104DF00080E18093A1001092A00082E08093621273 +:104E000080E29EE490936112809360129093A700D9 +:104E10008093A60082E18093A10020E030E048EA80 +:104E200051E4609100027091010280910202909120 +:104E300003020E94596620E030EC4FE754E40E94E0 +:104E4000AB680E94C666CB010C942946CF93DF93D2 +:104E5000D82FC8E05E98559AD7FF02C05D9A01C06E +:104E60005D9865E070E080E090E00E94054C5E9AFD +:104E700065E070E080E090E00E94054C5E98DD0FF8 +:104E800065E070E080E090E00E94054CC15011F7B1 +:104E900062E070E080E090E00E94054C559A5D9AD7 +:104EA00062E070E080E090E0DF91CF910C94054CDF +:104EB0005E98559A5D9865E070E080E090E00E9411 +:104EC000054C5E9A65E070E080E090E00E94054C41 +:104ED000559A5D9A65E070E080E090E00C94054C96 +:104EE000CF93559A5D9A62E070E080E090E00E9476 +:104EF000054C5E9A62E070E080E090E00E94054C14 +:104F000055989BEF89B1C82FC07285FF05C091509D +:104F1000C9F7CEDFC1E007C05E9862E070E080E0D4 +:104F200090E00E94054C8C2FCF910895559A5D9A80 +:104F30005E9A65E070E080E090E00E94054C559A32 +:104F40005D9865E070E080E090E00E94054C5E981E +:104F500062E070E080E090E00C94054CCF93DF932A +:104F6000D82FC8E0809102018F7780930201809151 +:104F7000010184608093010180910201D7FF02C08A +:104F8000846001C08B7F8093020165E070E080E067 +:104F900090E00E94054C809102018068809302019C +:104FA00065E070E080E090E00E94054C8091020195 +:104FB0008F7780930201DD0F65E070E080E090E084 +:104FC0000E94054CC15071F662E070E080E090E014 +:104FD0000E94054C809101018460809301018091C1 +:104FE000020184608093020162E070E080E090E062 +:104FF000DF91CF910C94054C0F931F93CF93DF93C8 +:10500000C2E0D1E088818F77888301E011E0F80168 +:1050100080818460808388818B7F888365E070E0F5 +:1050200080E090E00E94054C88818068888365E07C +:1050300070E080E090E00E94054CF801808184607F +:10504000808388818460888365E070E080E090E000 +:10505000DF91CF911F910F910C94054CCF938091CC +:10506000010184608093010180910201846080933A +:10507000020162E070E080E090E00E94054C8091C7 +:10508000020180688093020162E070E080E090E0BD +:105090000E94054C809101018B7F809301019BEF61 +:1050A00080910001C82FC47082FF05C09150C1F7E4 +:1050B000A3DFC1E00BC0909102019F7790930201A2 +:1050C00062E070E080E090E00E94054C8C2FCF9170 +:1050D00008950F931F93CF93DF9301E011E0F80140 +:1050E000808184608083C2E0D1E08881846088838D +:1050F00088818068888365E070E080E090E00E94AD +:10510000054CF80180818460808388818B7F88834F +:1051100065E070E080E090E00E94054C88818F7728 +:10512000888362E070E080E090E0DF91CF911F9192 +:105130000F910C94054CCF93DF93D82FC8E0439880 +:10514000399AD7FF02C0419A01C0419865E070E0EA +:1051500080E090E00E94054C439A65E070E080E0BA +:1051600090E00E94054C4398DD0F65E070E080E020 +:1051700090E00E94054CC15011F762E070E080E0C1 +:1051800090E00E94054C399A419A62E070E080E01C +:1051900090E0DF91CF910C94054C4398399A419857 +:1051A00065E070E080E090E00E94054C439A65E085 +:1051B00070E080E090E00E94054C399A419A65E0E9 +:1051C00070E080E090E00C94054CCF93399A419ABE +:1051D00062E070E080E090E00E94054C439A62E05B +:1051E00070E080E090E00E94054C39989BEF86B11A +:1051F000C82FC27081FF05C09150C9F7CEDFC1E052 +:1052000007C0439862E070E080E090E00E94054CA7 +:105210008C2FCF910895399A419A439A65E070E0B6 +:1052200080E090E00E94054C399A419865E070E07A +:1052300080E090E00E94054C439862E070E080E0DE +:1052400090E00C94054C4F925F926F927F92AF92D8 +:10525000BF92CF92DF92EF92FF920F931F93CF9363 +:10526000DF935C01EB018A01FC0140805180628088 +:10527000738020E030E0A901C301B2010E945266B0 +:1052800020E030E0A901811111C0688179818A8113 +:105290009B810E9470681816E4F02AEDC22E2FE060 +:1052A000D22E29ECE22E2FEBF22E22C0C301B20146 +:1052B0000E94526687FD16C0A30192016881798120 +:1052C0008A819B810E9459660E9417666B017C014E +:1052D0000FC09AEDC92E9FE0D92E99ECE92E9FE3DD +:1052E000F92E06C0C12CD12C80ECE82E8FE7F82EC9 +:1052F000C701B6010E9456662091C6113091C711B0 +:105300004091C8115091C9110E94AB689B01AC013A +:10531000C301B2010E947865F501608371838283C5 +:105320009383C701B6010E942E692091C611309166 +:10533000C7114091C8115091C9110E94AB689B01DF +:10534000AC01688179818A819B810E94786568833C +:1053500079838A839B832091CA113091CB1140912C +:10536000CC115091CD11F8016081718182819381BE +:105370000E947965F8016083718382839383DF9152 +:10538000CF911F910F91FF90EF90DF90CF90BF9042 +:10539000AF907F906F905F904F9008954F925F9283 +:1053A0006F927F92AF92BF92CF92DF92EF92FF9275 +:1053B0000F931F93CF93DF935C01EB018A01FC01F4 +:1053C000408051806280738020E030E0A901C301F9 +:1053D000B2010E94526620E030E0A901811111C0A3 +:1053E000688179818A819B810E9470681816E4F037 +:1053F0002AEDC22E2FE0D22E29ECE22E2FEBF22E38 +:1054000022C0C301B2010E94526687FD16C0A301EB +:105410009201688179818A819B810E9459660E94EC +:1054200017666B017C010FC09AEDC92E9FE0D92E43 +:1054300099ECE92E9FE3F92E06C0C12CD12C80EC0B +:10544000E82E8FE7F82EC701B6010E94566620911C +:10545000C6113091C7114091C8115091C9110E94D5 +:10546000AB689B01AC01C301B2010E947965F501F3 +:105470006083718382839383C701B6010E942E6982 +:105480002091C6113091C7114091C8115091C91196 +:105490000E94AB689B01AC01688179818A819B8104 +:1054A0000E947965688379838A839B832091CA11DE +:1054B0003091CB114091CC115091CD11F801608108 +:1054C0007181828193810E947865F8016083718384 +:1054D00082839383DF91CF911F910F91FF90EF9083 +:1054E000DF90CF90BF90AF907F906F905F904F9084 +:1054F00008952F923F924F925F926F927F928F9278 +:105500009F92AF92BF92CF92DF92EF92FF920F9352 +:105510001F93CF93DF93CDB7DEB766970FB6F8949E +:10552000DEBF0FBECDBF69837A838B839C832D83BF +:105530003E834F835887270138011601BA8AA98A0A +:1055400084019B01AC010E94AB686B017C012D8141 +:105550003E814F815885CA01B9010E94AB689B0109 +:10556000AC01C701B6010E9479650E94386923E346 +:1055700033E343E551E40E94786569877A878B8736 +:105580009C872DEC3CEC46ED52E4C301B2010E9435 +:1055900078652B013C0129853A854B855C85CA01DC +:1055A000B9010E94AB686B017C01A3019201C301A8 +:1055B000B2010E94AB689B01AC01C701B6010E9419 +:1055C00079656B017C0124ED35E64DE955E40E94D7 +:1055D00078654B015C0126EC3FEA4DE957E4C701D1 +:1055E000B6010E94AB686D877E878F87988BA50177 +:1055F0009401C501B4010E94AB689B01AC016D85AB +:105600007E858F8598890E9478650E9438696B8BAA +:105610007C8B8D8B9E8BA7019601C701B6010E94E2 +:1056200079656D877E878F87988BA5019401698541 +:105630007A858B859C850E94AB684B015C012B8928 +:105640003C894D895E89C301B2010E94AB689B0110 +:10565000AC01C501B4010E9478654B015C012CEEE0 +:1056600031E14EE053E46D857E858F8598890E94F7 +:10567000AB689B01AC01C501B4010E9459660E9450 +:105680006A6521EE3EE245E652E40E94AB68F10114 +:10569000608371838283938324ED35E64DE955E47D +:1056A000C701B6010E9479654B015C012BE339E02B +:1056B00045EC57E4C701B6010E94AB686B017C0161 +:1056C000A5019401C501B4010E94AB689B01AC0126 +:1056D000C701B6010E9478650E9438696B017C01A0 +:1056E000A501940169857A858B859C850E94AB68AC +:1056F0004B015C01A7019601C301B2010E94AB6896 +:105700009B01AC01C501B4010E9479656B017C016C +:105710002CE53FEC4EE153E46D857E858F859889BD +:105720000E94AB689B01AC01C701B6010E9459669B +:105730000E946A6521EE3EE245E652E40E94AB68B3 +:105740006B017C01E989FA89608371838283938389 +:1057500021EE3EE245E652E4F101608171818281F1 +:1057600093810E9459660E942E692CEE31E14EE031 +:1057700053E40E94AB689B01AC01C301B2010E94DB +:105780007068181654F4F7FAF094F7F8F094E98971 +:10579000FA89C082D182E282F38220E030E0A9015E +:1057A00069817A818B819C810E94526620E030E081 +:1057B000A901811112C06D817E818F8198850E941F +:1057C000706818162CF480E090E0A4EBB2E411C0ED +:1057D00080E090E0A4EBB2EC0CC069817A818B810F +:1057E0009C810E94526687FF0AC080E090E0A0EC96 +:1057F000BFE7F80180839183A283B38317C0298117 +:105800003A814B815C816D817E818F8198850E9478 +:1058100059660E94176621EE3EE245E652E40E9478 +:10582000AB68F801608371838283938366960FB6B9 +:10583000F894DEBF0FBECDBFDF91CF911F910F91C6 +:10584000FF90EF90DF90CF90BF90AF909F908F90A0 +:105850007F906F905F904F903F902F9008952F9280 +:105860003F924F925F926F927F928F929F92AF92F0 +:10587000BF92CF92DF92EF92FF920F931F93CF933D +:10588000DF93CDB7DEB72E970FB6F894DEBF0FBE0D +:10589000CDBF29833A834B835C83ED82FE820F83E5 +:1058A0001887860115019E868D8621EE3EE245E62B +:1058B00052E40E9459662B013C0121EE3EE245E68E +:1058C00052E469817A818B819C810E9459664B01E7 +:1058D0005C0121EE3EE245E652E46D817E818F81DE +:1058E00098850E9459666B017C01C301B2010E9438 +:1058F000566669837A838B839C83C501B4010E94B9 +:1059000056666D837E838F839887C301B2010E94A0 +:105910002E692B013C01C501B4010E942E696987E3 +:105920007A878B879C872CEE31E14EE053E46981C6 +:105930007A818B819C810E94AB684B015C012CE5D4 +:105940003FEC4EE153E46D817E818F8198850E940A +:10595000AB689B01AC01C501B4010E94796523E3EA +:1059600033E343E551E40E9479654B015C01C701D3 +:10597000B6010E9456669B01AC01C501B4010E94AC +:10598000AB68F8016083718382839383C701B6019A +:105990000E942E699B01AC01C501B4010E94AB6855 +:1059A000F10160837183828393832CEE31E14EE0B9 +:1059B00053E4C301B2010E94AB686B017C012CE58A +:1059C0003FEC4EE153E469857A858B859C850E9486 +:1059D000AB689B01AC01C701B6010E9478652DEC54 +:1059E0003CEC46ED52E40E947965ED85FE856083CE +:1059F0007183828393832E960FB6F894DEBF0FBE19 +:105A0000CDBFDF91CF911F910F91FF90EF90DF906D +:105A1000CF90BF90AF909F908F907F906F905F904E +:105A20004F903F902F9008954F925F926F927F9288 +:105A30008F929F92AF92BF92CF92DF92EF92FF929E +:105A40000F931F93CF93DF9300D01F92CDB7DEB794 +:105A500029013A01E982FA820B831C8304EC11E1EB +:105A600020E030E040E253E40E9459669B01AC0123 +:105A7000F80166857785808991890E947965F601AC +:105A8000608371838283938320E030E040E253E4BB +:105A9000C301B2010E9459669B01AC01F801628901 +:105AA0007389848995890E947965F5016083718382 +:105AB0008283938320E030E044EB52E4F80166896E +:105AC0007789808D918D0E9478652B013C0120E0C3 +:105AD00030E040E253E469817A818B819C810E94AD +:105AE00059669B01AC01C301B2010E947965F401C2 +:105AF00060837183828393830F900F900F900F9038 +:105B0000DF91CF911F910F91FF90EF90DF90CF9099 +:105B1000BF90AF909F908F907F906F905F904F90CD +:105B200008952F923F924F925F926F927F928F9241 +:105B30009F92AF92BF92CF92DF92EF92FF920F931C +:105B40001F93CF93DF93CDB7DEB72C970FB6F894A2 +:105B5000DEBF0FBECDBF160135012401FE01319617 +:105B60004F0134965F0134966F015EDFE980FA8061 +:105B70000B811C812D813E814F81588569857A85F5 +:105B80008B859C8542015301610169DE2C960FB61D +:105B9000F894DEBF0FBECDBFDF91CF911F910F9163 +:105BA000FF90EF90DF90CF90BF90AF909F908F903D +:105BB0007F906F905F904F903F902F9008954F92FD +:105BC0005F926F927F928F929F92AF92BF92CF928D +:105BD000DF92EF92FF920F931F932B013C0149013B +:105BE0005A01670178019B01AC010E948069811113 +:105BF00070C0A5019401C501B4010E9480698111A2 +:105C000068C0A7019601C701B6010E948069811191 +:105C100060C02AE939E947E053E4C301B2010E94B8 +:105C2000706818160CF455C020E030E0A901C301DB +:105C3000B2010E94526687FD4CC02DEC3CEC4FEE49 +:105C400052E4C501B4010E94706818160CF441C0FA +:105C500020E030E0A901C501B4010E94526687FD31 +:105C600038C0A301920160E070E084E393E40E94F5 +:105C70007865A50194010E9478654B015C0120E0E4 +:105C800030E047E153E40E947068181614F120E0F8 +:105C900030E040E251E4C501B4010E94526687FD44 +:105CA00018C020E030E044EB52E4C701B6010E9486 +:105CB0007068181674F020E030E044EB52ECC70135 +:105CC000B6010E945266881F8827881F91E08927A5 +:105CD00001C080E01F910F91FF90EF90DF90CF9077 +:105CE000BF90AF909F908F907F906F905F904F90FC +:105CF0000895FF920F931F93CF93DF9382E393E076 +:105D00000E94D8538B3B19F080E293E002C084E3F9 +:105D100093E0CAE8D0E18C010A581041FC2E86E0DD +:105D2000F80EC8018C0F9D1F0E94D8538993FC1256 +:105D3000F8CF80918F108F9380918E108F938091E8 +:105D40008D108F9380918C108F9380918B108F93F7 +:105D500080918A108F9387E194E09F938F930E94A4 +:105D600011428DB79EB708960FB6F8949EBF0FBE2E +:105D70008DBFDF91CF911F910F91FF900895AF924A +:105D8000BF92CF92DF92EF92FF920F931F93CF9328 +:105D9000DF93082F6EE00E94CF44C82F6FE0802F62 +:105DA0000E94CF44D0E0DC2FCC27C82B7E016E01AF +:105DB00034E0A32EB12C6EE0802F0E94CF44182F28 +:105DC0006FE0802F0E94CF44212F30E0322F222716 +:105DD000282BC217D30708F4E9012C153D0508F458 +:105DE0006901E20EF31E81E0A81AB10821F7C7018C +:105DF0008C1B9D0B8C199D0963E070E00E94A869C3 +:105E0000CB01DF91CF911F910F91FF90EF90DF9029 +:105E1000CF90BF90AF9008958F929F92AF92BF9214 +:105E2000CF92DF92EF92FF927C01A9DF9C0181E08B +:105E3000E816F104F9F088F082E0E816F10439F58B +:105E400080918A1090918B10A0E0B0E0BC01CD0150 +:105E5000621B730B810991093FC080918C10909156 +:105E60008D10A0E0B0E0BC01CD01621B730B810975 +:105E700091091DC080918E1090918F10A0E0B0E02C +:105E8000BC01CD01621B730B810991091CC081E02B +:105E9000E816F104A9F040F082E0E816F10419F5E3 +:105EA00060E070E0CB0118C060E070E0CB0145E23B +:105EB000842E49E0942E43E0A42E42E4B42E16C072 +:105EC00060E070E0CB0139E0832E36EF932E31EBAA +:105ED000A32E32E4B32E0AC0812C912C24EBA22EE7 +:105EE00022E4B22E03C060E070E0CB010E94F466B1 +:105EF00020E030E044EB53E40E94AB6820E030E067 +:105F000040E859E30E94AB689B01AC01C501B401B4 +:105F10000E9478656B017C0120E030E044EB53E4A3 +:105F20000E947068181654F420E030E044EB53E40B +:105F3000C701B6010E9478656B017C0120E030E06A +:105F4000A901C701B6010E94526687FF0AC020E07E +:105F500030E044EB53E4C701B6010E9479656B0160 +:105F60007C01C701B601FF90EF90DF90CF90BF900A +:105F7000AF909F908F9008950F931F93CF93DF93CF +:105F8000CAE8D0E184E393E069918C010F5F1F4F71 +:105F90000E947953C8010A331340B1F76BEB82E3D7 +:105FA00093E00E947953A5DE80E090E035DF6093B6 +:105FB000D2117093D3118093D4119093D51181E0B5 +:105FC00090E02ADF6093D6117093D7118093D81197 +:105FD0009093D91182E090E01FDF6093DA11709303 +:105FE000DB118093DC119093DD11DF91CF911F9134 +:105FF0000F910895AF92BF92CF92DF92EF92FF92EE +:106000000F931F93CF93DF9300D01F92CDB7DEB7CE +:106010005B0124EAE22E22E1F22E8C016B018CE07E +:10602000C80ED11CF50161917191819191915F012F +:10603000F70121913191419151917F0129833A8357 +:106040004B835C830E94F46629813A814B815C8199 +:106050000E945966F80161937193819391938F0126 +:10606000AC14BD04F9F60F900F900F900F90DF91D4 +:10607000CF911F910F91FF90EF90DF90CF90BF9045 +:10608000AF9008951F920F920FB60F9211240BB686 +:106090000F922F933F934F935F936F937F938F93C1 +:1060A0009F93AF93BF93EF93FF9389B18095982F00 +:1060B000907184FF03C091110E94124DFF91EF91E6 +:1060C000BF91AF919F918F917F916F915F914F9110 +:1060D0003F912F910F900BBE0F900FBE0F901F900E +:1060E0001895CF93DF93C0919310D091941020977F +:1060F000B9F081E0809396106091AC107091AD1072 +:106100008091AE109091AF109B01AC010E94AB68E2 +:10611000698B7A8B8B8B9C8B1092941010929310BE +:10612000DF91CF9108952F923F924F925F926F929D +:106130007F928F929F92AF92BF92CF92DF92EF9217 +:10614000FF920F931F93CF93DF93CDB7DEB7CE545B +:10615000D1090FB6F894DEBF0FBECDBF80912D13CD +:10616000807725968FAF2597882389F020E030E04F +:10617000A9016091AC107091AD108091AE1090911A +:10618000AF100E945266882311F40C946539209157 +:10619000AC102B8B3091AD103C8B4091AE104D8BE1 +:1061A0005091AF105E8B8091BC108B839091BD108D +:1061B0009D83A091BE10AE83B091BF10BC830091AF +:1061C000A8101091A9105091AA104091AB10809185 +:1061D0009B1090919C10A0919D10B0919E108FA348 +:1061E00098A7A9A7BAA7909197109FAFA0919810D0 +:1061F0002196AFAF2197B09199102296BFAF229709 +:10620000E0919A102396EFAF23978091A31090917D +:10621000A410A091A510B091A6108FAB98AFA9AF14 +:10622000BAAF9091341024969FAF2497A09190100C +:10623000ADA7B0910E102796BFAF2797E0910D1034 +:10624000E8A3F0912A0D2696FFAF26972091931090 +:10625000309194103A8B298B8091911090919210EB +:106260009AA389A380919F109091A010A091A11052 +:10627000B091A2108BAF9CAFADAFBEAF9091B410F8 +:106280009F8BA091B510A88FB091B610B98FE091F7 +:10629000B710EA8F3090B8102090B910F091BA1072 +:1062A000F9832091BB102A833091B0103B8F8091ED +:1062B000B1108C8F9091B2109D8FA091B310AE8FC2 +:1062C00080910F109DA5891709F466C7E989FA899D +:1062D000EF2B09F089C22796FFAD279728A1F21767 +:1062E00081F0A22EB12C39E23A9DC0013B9D900D68 +:1062F0001124DC01A55DB24FBA8BA98BAB2B09F041 +:1063000051C0C801A52FB42F8093A8109093A91055 +:10631000A093AA10B093AB108F89988DA98DBA8DD8 +:106320008093B4109093B510A093B610B093B710AB +:106330008B899C89AD89BE898093AC109093AD10F8 +:10634000A093AE10B093AF108B8D9C8DAD8DBE8D94 +:106350008093B0109093B110A093B210B093B3108B +:106360008B819D81AE81BC818093BC109093BD10C8 +:10637000A093BE10B093BF10832D922DA981BA8136 +:106380008093B8109093B910A093BA10B093BB103B +:106390002496BFAD2497B0933410109294101092AD +:1063A00093104CC780919610882319F01092961084 +:1063B000BFC0809195108F5F853019F08093951044 +:1063C00002C0109295108091951051E1589FC00124 +:1063D0001124DC01AB5CBF4EBAA3A9A3B9E2BA9DFC +:1063E0009001BB9D300D1124F901E55DF24F7F0155 +:1063F0008081A9A1BAA18C9381819281A381B4816A +:1064000023E0880F991FAA1FBB1F2A95D1F7E9A186 +:10641000FAA181839283A383B483F7018581968156 +:10642000A781B08533E0880F991FAA1FBB1F3A953B +:10643000D1F7E9A1FAA185839683A783B087F701F5 +:1064400081859285A385B48543E0880F991FAA1F93 +:10645000BB1F4A95D1F7E9A1FAA181879287A3874B +:10646000B487D7011D966D917D918D919C91509728 +:106470008B019C0153E0000F111F221F331F5A95FF +:10648000D1F7058716872787308B0E94F2666FAF9A +:1064900021967FAF219722968FAF229723969FAFA9 +:1064A0002397D70195962D913D914D915C919897A9 +:1064B0000E9459666FA378A789A79AA79B01AC0190 +:1064C00060E070E080EA9FE30E9459666BAF7CAFAA +:1064D0008DAF9EAF2596BFAD2597BB23C1F02F8909 +:1064E000388D498D5A8D6F89788D898D9A8D0E944E +:1064F000AB68F701618B728B838B948BFF89FB8B6D +:10650000288D2C8B398D3D8B4A8D4E8B0DC0D7013C +:1065100051966D917D918D919C9154970E9438690F +:106520006B8B7C8B8D8B9E8B1FAA18AE19AE1AAE0F +:10653000B9E2BA9D9001BB9D300D1124F901E55DD2 +:10654000F24F4F01C1A0D2A0E3A0F4A0A701960191 +:1065500060E070E080E09FE30E94596669877A8777 +:106560008B879C872596FFAD2597FF23E9F122E0D5 +:106570002093A710D40195964D905D906D907C90DE +:10658000989751968D909D90AD90BC905497A50191 +:1065900094010E94AB689B01AC01C301B2010E944F +:1065A00078658B0189879D8720E030E0A9010E94F2 +:1065B000526687FF1EC1A7019601C701B6010E945E +:1065C0007965A30192010E94AB689B01AC01C501F2 +:1065D000B4010E9478650E9438696F8B788F898F2B +:1065E0009A8F3F82288618C11092A710F401F5A156 +:1065F000FF83D4019696BC91B887F40107A110A53A +:10660000E8A1EF5FE23109F4E0E02796FFAD2797BC +:10661000EF1789F029E22E9FF0011124E55DF24F7A +:1066200061897289838994890E9438696F8B788F18 +:10663000898F9A8F04C01F8A188E198E1A8E2F89FF +:10664000388D498D5A8D6F89788D898D9A8D0E94EC +:10665000AB682B013C0149E24A9D90014B9D300DF6 +:106660001124C901855D924F5C01DC0151962D9189 +:106670003D914D915C9154972D873E874F87588B64 +:10668000A30192016D857E858F8598890E9478652A +:106690009B01AC0169857A858B859C850E94AB68DE +:1066A0009B01AC016F817885C8010E94796520E06B +:1066B00030E040E05FE30E94AB68362E272E8983EE +:1066C0009A8320E030E0A9010E94706818160CF04F +:1066D00097C02F813885A801632D722D89819A81F9 +:1066E0000E94526687FF72C0F501858C968CA78C3C +:1066F000B0A0A3019201C501B4010E9478659B017D +:10670000AC0169857A858B859C850E94AB686B831B +:106710007D838E839C83232D322D49815A810E9453 +:10672000526687FF34C0C501B4010E9438696B8F7F +:106730007C8F8D8F9E8FA50194016D857E858F85C1 +:1067400098890E945266811106C0F1E0F093A7106B +:1067500009831A8361C02D853E854F855889C501FF +:10676000B4010E9478659B01AC0169857A858B85AF +:106770009C850E94AB689B01AC016F817885C80144 +:106780000E9478656F83788789839A8345C0A701C3 +:106790009601C701B6010E947965232D322D4981EA +:1067A0005A810E94AB68A30192010E9479650E9400 +:1067B00038696B8F7C8F8D8F9E8F3F8228863B82BE +:1067C0002D8229812E833A813C8326C042E040936A +:1067D000A71009831A835B895B8F8C898C8F9D89B5 +:1067E0009D8FAE89AE8F18C03F82288659874D870E +:1067F00017C03F8228861F8A188E198E1A8E10C0E5 +:10680000BF89BB8FE88DEC8FF98DFD8F2A8D2E8F80 +:106810001F82188619821A8200E010E019861D86F0 +:1068200024965FAD2497452F50E05CA74BA786E0E8 +:10683000849FF001859FF00D1124E05FFF4E809151 +:1068400095108283A989BA899596BC91BAABE989DA +:10685000FA89F6A1FBABA989BA899796BC912896CB +:10686000BFAF2897E989FA89F0A52996FFAF299744 +:106870002BAD3CAD4DAD5EAD6AA97BA98B2F9F2F93 +:106880000E9478656EA77FA788AB99AB20E030E0C7 +:10689000A9010E94526687FF04C01EA61FA618AA5F +:1068A00019AA2091A7102F8F2AA83BA92F963FAF96 +:1068B0002F9728964FAD28972E964FAF2E97299653 +:1068C0003FAC29978EE3C82E83ECD82E8EE2E82EBB +:1068D00089E3F82E412C512C3201CBA2DCA2EDA28F +:1068E000FEA29F8D992321F0913009F496C0D6C065 +:1068F000A989BA8991962D913D914D915C9194977A +:10690000C701B6010E94AB684B015C0120E030E09A +:1069100040E05FE30E94AB689B01AC016B897C891E +:106920008D899E890E9479659B01AC01C701B601E2 +:106930000E94AB689B01AC01622D2F967FAD2F9713 +:106940002E968FAD2E97932D0E947865262E2F962A +:106950007FAF2F972E968FAF2E97392E2F813885A8 +:1069600049815A810E94526687FF4AC02F8138852B +:1069700049815A816AA97BA928968FAD28972996C3 +:106980009FAD29970E9478659B01AC010E947965B3 +:106990006B017C012B8D3C8D4D8D5E8D6B897C89CF +:1069A0008D899E890E9479659B01AC01C701B60162 +:1069B0000E9459666B017C012B813D814E815C8177 +:1069C0006F81788589819A810E945266811103C006 +:1069D000B2E0BF8F02C0E1E0EF8FFB8DFB8B2C8D0F +:1069E0002C8B3D8D3D8B4E8D4E8B2F8058852F9659 +:1069F0005FAF2F9789812E968FAF2E973A80F0C088 +:106A0000A50194016B897C898D899E890E94796595 +:106A10006B8B7C8B8D8B9E8BE3C0A70196016B8D5E +:106A20007C8D8D8D9E8D0E94AB689B01AC01622D8B +:106A30002F967FAD2F972E968FAD2E97932D0E9478 +:106A400078654B015C012B813D814E815C810E9408 +:106A5000526687FFBDC02B813D814E815C81622DD6 +:106A60002F967FAD2F972E968FAD2E97932D0E9448 +:106A700078652B8D3C8D4D8D5E8D0E9459666B0126 +:106A80007C012B809D812F969FAF2F97AE812E96F4 +:106A9000AFAF2E973C80B2E0BF8FA2C0E989FA89E0 +:106AA00021A132A143A154A1C701B6010E94AB6844 +:106AB0004B015C019B01AC016B897C898D899E89AE +:106AC0000E94706818160CF054C020E030E040E0DE +:106AD0005FE3C501B4010E94AB689B01AC016B8907 +:106AE0007C898D899E890E9478659B01AC01C701D4 +:106AF000B6010E94AB689B01AC01622D2F967FAD61 +:106B00002F972E968FAD2E97932D0E9478652A96FB +:106B10006FAF2A972B967FAF2B972C968FAF2C9722 +:106B20002D969FAF2D97980149855D850E947068CD +:106B30001816FCF4A50194016B897C898D899E89C6 +:106B40000E9478656B8B7C8B8D8B9E8B2A962FACED +:106B50002A972B96FFAD2B972F96FFAF2F972C964A +:106B60002FAD2C972E962FAF2E972D963FAC2D97AD +:106B700037C0980149855D85622D2F967FAD2F978F +:106B80002E968FAD2E97932D0E9478659B01AC01B8 +:106B90000E9479656B017C012F89388D498D5A8D52 +:106BA0006B897C898D899E890E9479659B01AC01E6 +:106BB000C701B6010E9459666B017C01202E2F96F9 +:106BC0001FAF2F9739852E963FAF2E973D8408C073 +:106BD000282C2F969FAE2F972E96AFAE2E973B2C3C +:106BE000A7019601C301B2010E9479652B013C0106 +:106BF0002BA13CA14DA15EA10E94526687FF07C058 +:106C0000A30192016BA17CA18DA19EA163C02EA5C1 +:106C10003FA548A959A9622D2F967FAD2F972E9693 +:106C20008FAD2E97932D0E94706818160CF442C0F9 +:106C30004F8D4093A710222D2F963FAD2F972E9664 +:106C40004FAD2E97532D6FA178A589A59AA50E94C7 +:106C5000AB686F8F7BA38EA79AAB0E943F666B01D8 +:106C60007C016FAD21967FAD219722968FAD229743 +:106C700023969FAD23970E943F664B015C01A701BD +:106C800096010E9478650E94C6666BAB7CAB8DABAB +:106C90009EABA6E08BA59CA5A89FF001A99FF00D37 +:106CA0001124E05FFF4E2BA93CA931832083232BC5 +:106CB00049F1B5C02EE333EC4EE259E36BA17CA160 +:106CC0008DA19EA10E9479656BA37CA38DA39EA339 +:106CD000A30192010E9478656B017C0198014985AE +:106CE0005D85622D2F967FAD2F972E968FAD2E97B7 +:106CF000932D0E94706818160CF4F3CD5F8D50939D +:106D0000A71099CF25968FAD2597882309F487C0C2 +:106D1000C801A985BD858093A8109093A910A09360 +:106D2000AA10B093AB108F89988DA98DBA8D8093DE +:106D3000B4109093B510A093B610B093B7108B8D8C +:106D40009C8DAD8DBE8D8093B0109093B110A093AB +:106D5000B210B093B3108B819D81AE81BC818093C2 +:106D6000BC109093BD10A093BE10B093BF108F8144 +:106D70009885A981BA818093B8109093B910A09397 +:106D8000BA10B093BB1024969FAD24979093341003 +:106D9000A989BA89B0939410A09393102BAD3CAD00 +:106DA0004DAD5EAD20939F103093A0104093A11085 +:106DB0005093A21038A130930D1049A15AA15093BD +:106DC0009210409391108FA198A5A9A5BAA5809380 +:106DD0009B1090939C10A0939D10B0939E109DA526 +:106DE000909390101092AC101092AD101092AE10C3 +:106DF0001092AF101092A3101092A4101092A51030 +:106E00001092A610C0929710D0929810E09299100C +:106E1000F0929A102FA138A549A55AA56FC12FA9A4 +:106E200038AD49AD5AADC301B2010E9479652B015D +:106E30003C012F8D3BA14EA55AA9C501B4010E946A +:106E400078659B01AC01C301B2010E9459664B01F8 +:106E50005C012F8D3BA14EA55AA9C701B6010E9426 +:106E60007865A50194010E94AB686FAB78AF89AFDC +:106E70009AAF20EC31EE44E65EE4C501B4010E9415 +:106E8000AB680E943F660E94C666603DB7E07B0724 +:106E90008105910560F446E02BA53CA5429FF001D9 +:106EA000439FF00D1124E05FFF4E158253C0603AFE +:106EB0005FE075078105910560F426E0ABA5BCA5F0 +:106EC0002A9FF0012B9FF00D1124E05FFF4E31E06F +:106ED00011C060344FE174078105910568F426E024 +:106EE000ABA5BCA52A9FF0012B9FF00D1124E05FFC +:106EF000FF4E32E035830CC0A6E04BA55CA5A49FF5 +:106F0000F001A59FF00D1124E05FFF4EB3E0B583C3 +:106F100046E02BA53CA5429FF001439FF00D1124B4 +:106F2000E05FFF4E2581022E04C0969587957795E8 +:106F300067950A94D2F7ABA9BCA902C0AA0FBB1FE0 +:106F40002A95E2F7B183A08361157105B1E08B0743 +:106F5000910568F446E02BA53CA5429FF001439FB4 +:106F6000F00D1124E05FFF4E7483638304C08FEF44 +:106F70009FEF94838383BDA4B39496E0B91201C0BC +:106F8000B12C980149855D85622D2F967FAD2F9795 +:106F90002E968FAD2E97932D0E9470681816ECF4E4 +:106FA000822D2F969FAD2F972E96AFAD2E97B32D96 +:106FB000E989FA8985A396A3A7A3B0A7FF8DFFAFA0 +:106FC0002BA121962FAF21973EA522963FAF229766 +:106FD0004AA923964FAF2397D5C020E030E0A901FE +:106FE000622D2F967FAD2F972E968FAD2E97932DD6 +:106FF0000E94706818160CF0AEC0C801A985BD8546 +:107000008093A8109093A910A093AA10B093AB10EE +:107010008F89988DA98DBA8D8093B4109093B510F7 +:10702000A093B610B093B7108B8D9C8DAD8DBE8D97 +:107030008093B0109093B110A093B210B093B3109E +:107040008B819D81AE81BC818093BC109093BD10DB +:10705000A093BE10B093BF108F819885A981BA818B +:107060008093B8109093B910A093BA10B093BB104E +:107070005DA55093341089899A89909394108093D8 +:1070800093102BAD3CAD4DAD5EAD20939F10309372 +:10709000A0104093A1105093A21038A130930D106E +:1070A00049A15AA150939210409391108FA198A595 +:1070B000A9A5BAA580939B1090939C10A0939D10B6 +:1070C000B0939E10B09290101092AC101092AD1030 +:1070D0001092AE101092AF101092A3101092A41044 +:1070E0001092A5101092A610C0929710D0929810EE +:1070F000E0929910F0929A109C01AD01C701B6017F +:107100000E945966A989BA8995966D937D938D934E +:107110009C9398970E94713080910D1080932A0D56 +:10712000C25BDF4F0FB6F894DEBF0FBECDBFDF915D +:10713000CF911F910F91FF90EF90DF90CF90BF9074 +:10714000AF909F908F907F906F905F904F903F9007 +:107150002F900C9470472796BFAD2797E8A1BE17D4 +:1071600079F08E2F8F5F823109F480E0F8A12696A6 +:107170002FAD2697F21303C026968FAF269788A3CC +:107180001A8A198A59854D853F8028843DA5249601 +:107190003FAF2497BDA694C8C801A52FB42F8093F4 +:1071A000A8109093A910A093AA10B093AB108F8948 +:1071B000988DA98DBA8D8093B4109093B510A0933B +:1071C000B610B093B7108B899C89AD89BE89809326 +:1071D000AC109093AD10A093AE10B093AF108B8D08 +:1071E0009C8DAD8DBE8D8093B0109093B110A09307 +:1071F000B210B093B3108B819D81AE81BC8180931E +:10720000BC109093BD10A093BE10B093BF10832DFF +:10721000922DA981BA818093B8109093B910A09350 +:10722000BA10B093BB102496AFAD2497A09334103E +:10723000E989FA89F0939410E09393102BAD3CAD5B +:107240004DAD5EAD20939F103093A0104093A110E0 +:107250005093A21038A130930D1049A15AA1509318 +:107260009210409391108FAD21969FAD2197229659 +:10727000AFAD22972396BFAD23978093971090933D +:107280009810A0939910B0939A108FA198A5A9A5D2 +:10729000BAA580939B1090939C10A0939D10B093DF +:1072A0009E102FA938AD49AD5AAD2093A31030934D +:1072B000A4104093A5105093A6103DA530939010B4 +:1072C00026964FAD269740932A0DC25BDF4F0FB62F +:1072D000F894DEBF0FBECDBFDF91CF911F910F910C +:1072E000FF90EF90DF90CF90BF90AF909F908F90E6 +:1072F0007F906F905F904F903F902F900895CF9325 +:10730000DF93BDD08BE2E5E9F0E1DF011D928A95C4 +:10731000E9F783E2E7E0FDE0DF011D928A95E9F7F6 +:10732000109294101092931010920F10109234102B +:1073300081E0809390101092060D4CD081B3909113 +:10734000050D9170C92FB0E0DB2F96E0CC0FDD1F4B +:107350009A95E1F78F7BC82BC1BBEBE0F1E0908100 +:107360008091050D8270880F880F977F892B80830D +:1073700081B39091050D92FB992790F98E7F892B0F +:1073800081BB8091040D80FD8F9A80FF8F98808152 +:107390009091040D92708D7F892B808321B3909101 +:1073A000040D9470892F90E095958795922F9D7F7D +:1073B000892B81BBDF91CF91089569E080E090E057 +:1073C0000E9479534DE450E064EA72E181E098E074 +:1073D0000C949B536091D512462F90E08091D61269 +:1073E000282F60FD91E0817041FD926021FD826057 +:1073F00042FD946022FD84609093050D8093040DFE +:1074000008951F920F920FB60F9211240BB60F9290 +:107410002F933F938F939F93EF93FF9321B33091DB +:10742000050D832F817090E036E0880F991F3A9503 +:10743000E1F7922F9F7B892B81BBEBE0F1E09081FC +:107440008091050D8270880F880F977F892B80832C +:1074500081B39091050D92FB992790F98E7F892B2E +:1074600081BB15BCFF91EF919F918F913F912F911F +:107470000F900BBE0F900FBE0F901F90189580912C +:107480006F008D7F80936F0080918100887F816085 +:10749000809381001092060D8091D7128F3F21F4C6 +:1074A00090912B13992349F090912D13943029F04A +:1074B00090E00E94434C81E001C080E09091E11295 +:1074C00092FF02C091E08927882341F08A9A809137 +:1074D00008018160809308015F9A08958A988091DD +:1074E00008018E7F809308015F9808951F920F9284 +:1074F0000FB60F9211240BB60F922F933F934F9319 +:107500005F936F937F938F939F93AF93BF93EF930B +:10751000FF938091060D811139C28091160D80FD77 +:107520008F9A80FF8F9890910B01482F42709D7F1A +:10753000942B90930B0141B3847090E095958795BF +:10754000942F9D7F892B81BB91B38091150D282F9E +:10755000217030E066E0220F331F6A95E1F79F7BD0 +:10756000292B21BB90910B01282F2270220F220F73 +:10757000977F922B90930B0121B382FB992790F96F +:10758000822F8E7F892B81BB8091140D86BD82E076 +:1075900085BD81E08093060D78948091280D9091AF +:1075A000290D892B09F0ACC080910F1090913410F7 +:1075B000981709F49BC0E0910F102E2F30E086E061 +:1075C000E89FF0011124E05FFF4EF093290DE09356 +:1075D000280D838194819093890080938800808115 +:1075E00091819093240D8093230DE2818091250D4C +:1075F0008E1761F1E093250D81E1E89FF0011124E0 +:10760000EB5CFF4EF093270DE093260D8585968564 +:10761000A785B089B695A7959795879580930F0D07 +:107620009093100DA093110DB093120D80930B0D3C +:1076300090930C0DA0930D0DB0930E0D8093070D3C +:107640009093080DA093090DB0930A0DE091260DBB +:10765000F091270D9091040D808189278093160D5C +:1076600086E0829FD001839FB00D1124A05FBF4EA2 +:1076700015962C9181819281A381B481022E04C040 +:10768000B695A795979587950A94D2F78093170D8D +:107690009093180DA093190DB0931A0D85819681C2 +:1076A000A781B085022E04C0B695A79597958795BA +:1076B0000A94D2F780931B0D90931C0DA0931D0D7F +:1076C000B0931E0D81859285A385B48504C0B695BF +:1076D000A795979587952A95D2F780931F0D90933C +:1076E000200DA093210DB093220D0AC0C8DE9FB7D4 +:1076F000F8948091A21284608093A2129FBF46C129 +:107700008091A3128130B1F489B180719091F1120E +:10771000891781F01092A3128CE0E0E3F3E1ACE36F +:10772000B3E101900D928A95E1F78091A2128064F5 +:107730008093A2121092150D4091170D5091180DC3 +:107740006091190D70911A0D8091070D9091080D9F +:10775000A091090DB0910A0D840F951FA61FB71FA8 +:107760008093070D9093080DA093090DB0930A0D17 +:10777000E091260DF091270D458556856785708926 +:10778000481759076A077B0768F521E02093150D14 +:107790004585568567857089841B950BA60BB70BAD +:1077A0008093070D9093080DA093090DB0930A0DD7 +:1077B00020818091301390913113A0913213B091B8 +:1077C000331320FF04C00197A109B10903C001963A +:1077D000A11DB11D8093301390933113A0933213E8 +:1077E000B093331340911B0D50911C0D60911D0DF2 +:1077F00070911E0D80910B0D90910C0DA0910D0DAF +:10780000B0910E0D840F951FA61FB71F80930B0D0F +:1078100090930C0DA0930D0DB0930E0D45855685DC +:1078200067857089481759076A077B0778F52091A3 +:10783000150D22602093150D458556856785708945 +:10784000841B950BA60BB70B80930B0D90930C0D1F +:10785000A0930D0DB0930E0D208180913413909163 +:107860003513A0913613B091371321FF04C001974F +:10787000A109B10903C00196A11DB11D8093341364 +:1078800090933513A0933613B093371340911F0D87 +:107890005091200D6091210D7091220D80910F0D5E +:1078A0009091100DA091110DB091120D840F951FA4 +:1078B000A61FB71F80930F0D9093100DA093110D6D +:1078C000B093120D4585568567857089481759070D +:1078D0006A077B0778F52091150D24602093150D1C +:1078E0004585568567857089841B950BA60BB70B5C +:1078F00080930F0D9093100DA093110DB093120D66 +:1079000020818091381390913913A0913A13B0914E +:107910003B1322FF04C00197A109B10903C00196DE +:10792000A11DB11D8093381390933913A0933A137E +:10793000B0933B1380912D13843039F49091491307 +:107940008091150D89238093150D8091230D9091C1 +:10795000240D01979093240D8093230D892B69F4B6 +:107960001092290D1092280D80910F108F5F809337 +:107970000F10863011F410920F109091050D809128 +:10798000150D89278093150D1092060DFF91EF912B +:10799000BF91AF919F918F917F916F915F914F9127 +:1079A0003F912F910F900BBE0F900FBE0F901F9025 +:1079B00018958091E11282FF08C08A9A809108018F +:1079C0008160809308015F9A07C08A9880910801BE +:1079D0008E7F809308015F9880912D138C70A1F0A9 +:1079E0008091040D8093160D8091050D8093150DE7 +:1079F0008091D412880F845081958093140D8091CA +:107A00006F00826080936F000895E0EAF0E080816B +:107A10008F7D80835C980895CF92DF92EF92FF92E2 +:107A20006A017B01811105C0FF90EF90DF90CF903C +:107A3000ECCF813011F45C9801C05C9A83E28093B2 +:107A4000A0008091A100807E8A618093A1008FEFC9 +:107A50009FEF9093A9008093A80020E030E0A90157 +:107A6000C701B6010E9452661816F4F620E030E015 +:107A7000A901C701B6010E94526687FD11C020E02E +:107A800030E04AE754E4C701B6010E947068181656 +:107A900054F4C12CD12C8AE7E82E84E4F82E03C0DC +:107AA000C12CD12C76012CEE31E143E852E4C70120 +:107AB000B6010E94AB6820E030E040E05FE30E9446 +:107AC00079650E942F670E94C6667093AB00609331 +:107AD000AA005C9AFF90EF90DF90CF900895CF922C +:107AE000DF92EF92FF92CF93DF93C82F6A017B0161 +:107AF00020E030E0A901C701B6010E94526687FD6F +:107B0000E2C0C43608F441C08CE98C0F20E0833019 +:107B100098F590E0880F991F880F991F223079F00F +:107B2000FC01233011F1213019F0EC55FD4E02C05B +:107B3000E055FD4EC082D182E282F382C1C0EC01E9 +:107B4000C454DD4E20E030E040E752E4C701B60106 +:107B50000E94AB6820E030E040E752E40E94AB684E +:107B6000688379838A839B83ABC0E853FD4EF7FA21 +:107B7000F094F7F8F094DECF2F5F8A3008F4A5C0B8 +:107B8000243009F4A2C08A50C2CFC701B6010E94B6 +:107B900079690E94C6668C2F90E08C31910508F0BF +:107BA00094C0FC018827E256FF4F8F4F0C94DE698A +:107BB000633008F48CC06093D41282C06093D712F3 +:107BC0007FC06093D51202C06093D61203DC78C0E8 +:107BD0008091E112662311F084604CC08B7F4AC013 +:107BE0008091E112662311F0806444C08F7B42C013 +:107BF0008091E112662311F080683CC08F773AC013 +:107C00006093D8125DC0C092D912D092DA12E0927D +:107C1000DB12F092DC1254C0C092DD12D092DE1260 +:107C2000E092DF12F092E0124BC08091E1126623E5 +:107C300011F081601FC08E7F1DC08091E11266230C +:107C400021F084FF46C0806215C08F7D13C08091F3 +:107C5000E112662311F0886001C0877F8093E112F2 +:107C60000E9461532DC08091E112662311F0806162 +:107C700001C08F7C8093E11223C06093E21220C088 +:107C8000C092E312D092E412E092E512F092E61272 +:107C900017C0C092E712D092E812E092E912F09277 +:107CA000EA120EC070E07093EC126093EB1208C001 +:107CB000C092ED12D092EE12E092EF12F092F0121A +:107CC0007CDB80E007C084E005C083E003C086E081 +:107CD00001C08AE0DF91CF91FF90EF90DF90CF90CD +:107CE00008952DE0829FC00111244CE050E0965F82 +:107CF0000C949B531F93CF93DF93182FEB018DE0D0 +:107D0000189FB0011124765F4CE050E0CE010E9434 +:107D1000E053892B51F48CE0FE0111928A95E9F72A +:107D2000BE01812FDEDF80E001C081E0DF91CF91D5 +:107D30001F910895EF92FF920F931F93CF93DF93BC +:107D4000CDB7DEB72C970FB6F894DEBF0FBECDBF10 +:107D5000182F80FFC6C08AE08093D4128FEF8093E3 +:107D6000D7121092D51287E08093D61283E08093C9 +:107D7000D8128AE097EDA3E2BCE38093D9129093E6 +:107D8000DA12A093DB12B093DC128FE692E1A3E04B +:107D9000BBE38093DD129093DE12A093DF12B093C9 +:107DA000E0121092E21280E090E0A8ECB1E480933F +:107DB000E3129093E412A093E512B093E61280E0F0 +:107DC00090E0AAEFB3E48093E7129093E812A093B7 +:107DD000E912B093EA128AEF90E09093EC1280934C +:107DE000EB1280E090E0A0E8BFE38093ED12909367 +:107DF000EE12A093EF12B093F01284E08093E112A0 +:107E000080E090E5A3E4B7E48093A4129093A512D8 +:107E1000A093A612B093A7128093A8129093A912D0 +:107E2000A093AA12B093AB128093AC129093AD12B0 +:107E3000A093AE12B093AF1280E090E5A3ECB7E44C +:107E40008093B0129093B112A093B212B093B31278 +:107E50008093B4129093B512A093B612B093B71258 +:107E60008093B8129093B912A093BA12B093BB1238 +:107E700080E090E4A2E9B5E48093BC129093BD1237 +:107E8000A093BE12B093BF128093C0129093C11200 +:107E9000A093C212B093C3128093C4129093C512E0 +:107EA000A093C612B093C71280E090E4ACE1B6ECA8 +:107EB0008093C8129093C912A093CA12B093CB12A8 +:107EC0008093CC129093CD12A093CE12B093CF1288 +:107ED0008093D0129093D112A093D212B093D31268 +:107EE0006CDA11FF0FC0CE0101967C018CE0F70126 +:107EF00011928A95E9F700E0B701802FF2DE0F5F5B +:107F00000830D1F712FF0AC060E080E09BE00E94D9 +:107F1000795360E081E59BE00E94795313FF05C02F +:107F200060E08EEA9BE00E9479532C960FB6F8949D +:107F3000DEBF0FBECDBFDF91CF911F910F91FF909C +:107F4000EF9008951F920F920FB60F9211240BB667 +:107F50000F922F933F934F935F936F937F938F93E2 +:107F60009F93AF93BF93EF93FF938091C6008F339E +:107F7000A9F050F4883109F1813211F59FB7F894D6 +:107F80008091A212886015C0803471F08E37C1F4E0 +:107F90009FB7F8948091A21282600BC09FB7F894AB +:107FA0008091A212816005C09FB7F8948091A212BF +:107FB00080628093A2129FBF14C00E94124D11C014 +:107FC000E091411191E09E0F903809F490E02091EA +:107FD0004011921731F0F0E0E054FF4E808390930F +:107FE0004111FF91EF91BF91AF919F918F917F913F +:107FF0006F915F914F913F912F910F900BBE0F901A +:108000000FBE0F901F9018951F920F920FB60F92F0 +:1080100011240BB60F928F939F93EF93FF93809150 +:10802000C311E82FF0E0ED5BFE4E90819093C60007 +:108030008F5F803809F480E08093C31190914211E2 +:10804000891305C08091C1008F7D8093C100FF918D +:10805000EF919F918F910F900BBE0F900FBE0F90DD +:108060001F901895E091421191E09E0F903831F4E5 +:1080700090E004C02091A21224FD0FC02091C311F2 +:108080009217C1F3F0E0ED5BFE4E808390934211B6 +:108090008091C10080628093C1000895CF93C82F62 +:1080A00089E698E019D2C830B1F190F4C43051F1AA +:1080B00048F4C23001F118F5C13009F040C081E543 +:1080C00098E01BC0C63009F118F582E198E015C0B0 +:1080D000C43169F140F4CA3021F100F1CB3079F5B7 +:1080E0008BE294E02AC0C63129F1F0F0C23339F5B1 +:1080F00085E394E022C08FE398E0EED125C08DE2C5 +:1081000098E0FBCF83E298E0F8CF83E098E0F5CFEA +:1081100082EE97E0F2CF89ED97E0EFCF8EEC97E01B +:10812000ECCF8BEB97E0E9CF85EA97E0E6CF80E3F1 +:1081300094E003C081E997E0E0CF93D605C08FE7D4 +:1081400097E0CAD18C2FBAD18CE797E0CF91C4C108 +:108150001F93CF93DF93CDB7DEB72C970FB6F8946C +:10816000DEBF0FBECDBF80E090E00E94D8538930C3 +:1081700009F54DE450E061E078E084EA92E10E9484 +:10818000E053892BB9F010E0BE016F5F7F4F812F64 +:10819000B1DD811102C087E081DF1F5F1830A1F7D8 +:1081A0002C960FB6F894DEBF0FBECDBFDF91CF91F6 +:1081B0001F9108958FEFBEDDE6CF0F931F93CF93EE +:1081C000DF9386E797E088D1CCE2D3E168897989AB +:1081D0008A899B890E94F46604EA12E1F8012081F1 +:1081E0003181428153810E9459665AD184E797E0D8 +:1081F00073D16C897D898E899F890E94F466F8010C +:1082000024813581468157810E94596649D184E78E +:1082100097E062D1688D798D8A8D9B8D0E94F4667E +:10822000F80120853185428553850E94596638D1F1 +:1082300082E797E051D18C8D41D18EE697E0DF91B6 +:10824000CF911F910F9148C19FB7F8948091A212CE +:1082500082608093A2129FBF08958F929F92AF92E7 +:10826000BF92CF92DF92EF92FF920F931F93CF9323 +:10827000DF93CDB7DEB72A970FB6F894DEBF0FBEF7 +:10828000CDBF6B017C01042F20E030E0A9010E94EA +:10829000526687FF06C08DE2E5DEF7FAF094F7F844 +:1082A000F094102F123060F020E030E048EC52E4FF +:1082B000C701B6010E94AB686B017C011250F2CF7E +:1082C00000FF0AC020E030E040E251E4C701B601FF +:1082D0000E94AB686B017C0120E030E040E05FE38E +:1082E000C701B6010E9479650E94C166E1E0F0E035 +:1082F000EC0FFD1FE00FF11D2EE2208310E03AE0AD +:10830000832E912CA12CB12C61157105810591054D +:10831000A9F0101301C01F5FEE24E394F12CEC0EC2 +:10832000FD1EE10EF11CA50194010E94BC69605D77 +:10833000F7016083B901CA011F5FE6CF80E3101720 +:1083400048F4E1E0F0E0EC0FFD1FE10FF11D808348 +:108350001F5FF5CF10130BC012E0100F0F5FE1E0AD +:10836000F0E0EC0FFD1FE00FF11D80E3808311238F +:1083700039F0FE01E10FF11D808174DE1150F7CF5D +:108380002A960FB6F894DEBF0FBECDBFDF91CF9116 +:108390001F910F91FF90EF90DF90CF90BF90AF9023 +:1083A0009F908F900895EF92FF920F931F93CF931A +:1083B000DF931F92CDB7DEB7362FEDB6FEB66DB7A1 +:1083C0007EB7641B71090FB6F8947EBF0FBE6DBFF8 +:1083D0000DB71EB70F5F1F4F202FF8019E2F921B66 +:1083E000941728F4632F0E949C699193F7CF44233C +:1083F00059F0F801E40FF11D31978081805D4983C8 +:1084000031DE49814150F3CF0FB6F894FEBE0FBE66 +:10841000EDBE0F90DF91CF911F910F91FF90EF90E4 +:1084200008951F93CF93DF93CDB7DEB7C058D1091E +:108430000FB6F894DEBF0FBECDBFAE0149575F4FF8 +:10844000FA0161917191AF01CE0101960E94616ABA +:1084500010E0E1E0F0E0EC0FFD1FE10FF11D808185 +:10846000882319F0FFDD1F5FF4CFC058DF4F0FB630 +:10847000F894DEBF0FBECDBFDF91CF911F9108955D +:1084800043E0EBCE2091E11220FF08C02BE832E45C +:1084900041E25DE30E94AB6841E001C040E0DDCE17 +:1084A0002091E11220FF08C02BE832E441E25DE3B5 +:1084B0000E94AB6844E001C043E0CFCE8A3020F098 +:1084C000843620F043E003C041E001C042E06AE0AE +:1084D0006ACF48E062E067CFCF93DF93FC018491DD +:1084E000EF012196882319F0BDDDFE01F8CFDF9161 +:1084F000CF9108952F923F924F925F926F927F9209 +:108500008F929F92AF92BF92CF92DF92EF92FF92A3 +:108510000F931F93CF93DF93CDB7DEB768970FB656 +:10852000F894DEBF0FBECDBF01E099E2A92E28E08E +:10853000722E30E2632E40E1B42E50E4552E62E0FC +:10854000462E7CE0372E10912B13112309F451C0D5 +:1085500000932D1311FF06C089EB98E0BDDF8EEA72 +:1085600098E01FC012FF06C089EB98E0B5DF83EAF0 +:1085700098E017C013FF06C089EB98E0ADDF80E9F3 +:1085800098E00FC014FF06C089EB98E0A5DF85E8EE +:1085900098E007C015FF0DC089EB98E09DDF89E7E3 +:1085A00098E09ADF86E798E097DF84EF91E00E94F9 +:1085B000434C10FD08C08FB7F89490912B13109284 +:1085C0002B138FBF16C086E899E086DF84E799E019 +:1085D00083DF83E199E080DF9FB7F8948091A21256 +:1085E0008F7E8093A2129FBF8091A21284FFFCCF46 +:1085F000E2CF1091A212112309F4A7C114FF04C005 +:1086000081E080932C13B2C110FFE2C0E0E3F3E1FC +:10861000DE011D96832D01900D928A95E1F78091E0 +:108620002D138430E9F040F48130E9F080F082309D +:1086300001F58EEE98E01CC0803179F018F4883096 +:1086400049F017C0803291F0803421F012C08DE0E3 +:1086500099E00EC088E099E00BC082E099E008C084 +:108660008CEF98E005C085EF98E002C088EE98E0B6 +:1086700033DF8091D812837039F0BE01635F7F4F82 +:10868000CE0101960E94FA2F8091D81280FD05C07C +:108690008091D81281FF65C019C081EE98E01CDF7F +:1086A00069817A818B819C81FBDE8FED98E014DFFC +:1086B0006D817E818F819885F3DE8FED98E00CDFF0 +:1086C00069857A858B859C85EBDEE2CF88ED98E025 +:1086D00003DF86E8C82E82E1D82ECE0101967C0108 +:1086E000212C4701F60161917191819191916F0166 +:1086F00020853185428553850E9479659B01AC01B7 +:10870000F70160817181828193810E947865F70110 +:108710006083718382839383F2E02F120FC02091D4 +:108720009E1230919F124091A0125091A1120E946E +:108730007865F7016083718382839383F4E0EF0EA1 +:10874000F11CF4016081718182819381A9DEF2E0E4 +:108750002F1619F086ED98E0BFDE239423E0221255 +:10876000C0CF8091D81282FF0CC080ED98E0B4DEBB +:1087700080910E1090910D10891708F48E5E891B60 +:108780009DDE8091D81283FF0CC08BEC98E0A4DEB4 +:108790009091401180914111891708F48058891BEC +:1087A0008DDE8091D81284FF08C085EC98E094DEBD +:1087B0000E94615143E062E0F6DD81EC98E08CDEDE +:1087C0009FB7F8948091A2128E7F8093A2129FBFD0 +:1087D000812F887609F441C080912D13882349F0B8 +:1087E000982F9C7791F1883021F40E94713000938A +:1087F0002E1380912D13811102C040922E1316FF6B +:1088000009C0883011F450922D1380912E13886086 +:1088100080932E1313FF05C080912D1385FFB09216 +:108820002D1315FF12C086E899E056DE82E399E029 +:1088300053DE83E199E050DE80912E1381FD1460B8 +:10884000846080932E1360922D139FB7F8948091CB +:10885000A21287798093A2129FBF11FF53C0812F6C +:10886000887609F047C080912D13882339F08075F0 +:1088700009F440C080912E1381FF3CC080912E13DB +:1088800082FF1DC080916C12882361F040916D12AF +:1088900050916E1260916F1270917012BDD880EA83 +:1088A0009FE0F1D780916B12882349F0823011F458 +:1088B0005C9A02C00E94245488EE93E0E4D7809131 +:1088C0000D1090910E10981789F0A89EC0011124E8 +:1088D000855D924F892B51F080912E1383FD06C048 +:1088E00070922D130E94933064D802C010922D1301 +:1088F00010922E139FB7F8948091A2128D7F8093CF +:10890000A2129FBF12FF21C080912D13807389F0A6 +:1089100080912F1381110DC080912E1382FF03C00F +:1089200074D80E94245480912E13826080932E1359 +:1089300004C010922E1310922D139FB7F8948091BB +:10894000A2128B7F8093A2129FBF80912D138C77F0 +:1089500011F00E94933090912D1380912E1390323C +:1089600019F481FDB0922D138111EDCD68960FB6EB +:10897000F894DEBF0FBECDBFDF91CF911F910F9155 +:10898000FF90EF90DF90CF90BF90AF909F908F902F +:108990007F906F905F904F903F902F900895CF936E +:1089A000DF93C62F813009F482C028F1823009F0AC +:1089B0004BC10E9496278CE60E9426270E947027B2 +:1089C0008C2F0E9426270E9470270E9496278DE6F2 +:1089D0000E9426270E94702762E070E080E090E00D +:1089E00014D7559A5D9A62E070E080E090E00DD770 +:1089F000D8E0C0E0EEC00E940B298CE60E949B28C4 +:108A00000E94E5288C2F0E949B280E94E5280E9446 +:108A10000B298DE60E949B280E94E52862E070E009 +:108A200080E090E0F2D6399A419A62E070E080E00E +:108A300090E0EBD6D8E0C0E0439865E070E080E0DD +:108A400090E0E3D6439ACC0F65E070E080E090E0E0 +:108A5000DCD639983199C16065E070E080E090E043 +:108A6000D4D6D15049F74398399A419A62E070E0E0 +:108A700080E090E0CAD6439A65E070E080E090E044 +:108A8000C4D6439862E070E080E090E0BED6399AA8 +:108A9000419A62E070E080E090E0B7D6439862E0EF +:108AA00070E080E090E0B1D60E94CD28CEC00E9458 +:108AB00069288CE60E94AE270E942E288C2F0E94E7 +:108AC000AE270E942E280E9469288DE60E94AE27BC +:108AD0000E942E2862E070E080E090E096D68091BF +:108AE0000101846080930101809102018460809380 +:108AF000020162E070E080E090E087D6D8E0C0E05C +:108B0000809102018F778093020165E070E080E040 +:108B100090E07BD680910201806880930201CC0FA7 +:108B200065E070E080E090E070D6809101018B7F7D +:108B3000809301018091000182FDC16065E070E0D9 +:108B400080E090E062D6D150D9F6809102018F7713 +:108B500080930201809101018460809301018091E2 +:108B6000020184608093020162E070E080E090E0A6 +:108B70004CD68091020180688093020165E070E02C +:108B800080E090E042D6809102018F7780930201CD +:108B900062E070E080E090E038D68091010184606E +:108BA000809301018091020184608093020162E060 +:108BB00070E080E090E029D6809102018F77809369 +:108BC000020162E070E080E090E01FD60E94FC2786 +:108BD0003CC05E9865E070E080E090E016D65E9A5A +:108BE000CC0F65E070E080E090E00FD655984D998D +:108BF000C16065E070E080E090E007D6D15049F7B1 +:108C00005E98559A5D9A62E070E080E090E0FDD554 +:108C10005E9A65E070E080E090E0F7D55E9862E0F3 +:108C200070E080E090E0F1D5559A5D9A62E070E0E6 +:108C300080E090E0EAD55E9862E070E080E090E04D +:108C4000E4D50E94582701C0C0E08C2FDF91CF915E +:108C50000895ECE5F2E1A481B5819C010E94E669EA +:108C6000A1E0B1E02C9128602C93A0EAB0E02C9117 +:108C700020682C93DC01CB012AE0B695A795979547 +:108C800087952A95D1F79093A9008093A8008681B3 +:108C900080618093A1000895CF93DF9321E5829FA7 +:108CA000C0011124EC01D55F40E550E0BE018CE02D +:108CB00092E10E94E053892B59F410920C1240E586 +:108CC00050E06CE072E1CE010E949B5380E001C055 +:108CD00081E0DF91CF9108951F920F920FB60F920E +:108CE00011240BB60F922F933F934F935F936F9383 +:108CF0007F938F939F93AF93BF93EF93FF93809155 +:108D00000712909108129093250180932401E0911D +:108D10000512F0910612309709F01995FF91EF9125 +:108D2000BF91AF919F918F917F916F915F914F9183 +:108D30003F912F910F900BBE0F900FBE0F901F9081 +:108D400018951F920F920FB60F9211240BB60F9227 +:108D50002F933F934F935F936F937F938F939F9343 +:108D6000AF93BF93EF93FF9380915E1290915F1248 +:108D70009093A5008093A400E0915C12F0915D12A5 +:108D8000309709F01995FF91EF91BF91AF919F91A5 +:108D90008F917F916F915F914F913F912F910F90A4 +:108DA0000BBE0F900FBE0F901F901895E2E7F0E0FA +:108DB00080818E7F808308951F920F920FB60F924D +:108DC00011248F939F9380910802909109029093B0 +:108DD0009500809394009F918F910F900FBE0F90FC +:108DE0001F9018951F920F920FB60F9211240BB679 +:108DF0000F922F933F934F935F936F937F938F9334 +:108E00009F93AF93BF93EF93FF9380910012909144 +:108E100001128093B200E091FE11F091FF113097A2 +:108E200009F01995FF91EF91BF91AF919F918F91AB +:108E30007F916F915F914F913F912F910F900BBE5A +:108E40000F900FBE0F901F9018958A98E8E0F1E000 +:108E500080818E7F80835F980E949D201092F61102 +:108E60000895CF93DF93EC018991882311F0FAD80C +:108E7000FBCFDF91CF910895EBE4F3E1ACE2B3E1F6 +:108E800014964D915D916D917C911797408351831C +:108E90006283738318964D915D916D917C911B97C0 +:108EA00044835583668377831C968D919D910D90A5 +:108EB000BC91A02D80879187A287B38708958CE10C +:108EC000EBE4F3E1DF011D928A95E9F710920D10B2 +:108ED00010920E1081E080934A1310922A0D08958B +:108EE0002F923F924F925F926F927F928F929F92BA +:108EF000AF92BF92CF92DF92EF92FF920F931F93A8 +:108F0000CF93DF93C0910E10C11101C0C2E1C150D7 +:108F1000D0912A0DCD1709F41BC1EC2EF12C29E2BA +:108F2000C29F80011124055D124FF801A588B68803 +:108F3000C788D08C61A172A183A194A19B01AC01CF +:108F40000E947965F80125A136A147A150A50E948C +:108F5000AB684B018C019B01AC01B501C6010E94BD +:108F6000526687FD02C05401680189E28E9DF001BE +:108F70008F9DF00D1124E55DF24FC501D601818B67 +:108F8000928BA38BB48BC11101C0C2E1C150CD172C +:108F900061F029E22E9DC0012F9D900D11249C01AE +:108FA000255D324F7901D9E233C080910D10D8137D +:108FB0005EC00E9471305BC0AC2EB12CDA9DC00146 +:108FC000DB9D900D1124FC01E55DF24F6F01C11195 +:108FD00001C0C2E1C15080910D10C81302C00E94AF +:108FE0007130DA9D8001DB9D100D1124055D124F5B +:108FF000F80185889688A788B08CA50194016189BD +:109000007289838994890E945266811106C0760113 +:1090100080912A0DC813D0CF2AC0F80161A172A196 +:1090200083A194A19B01AC010E947965F80125A15F +:1090300036A147A150A50E94AB68F701218932896A +:10904000438954890E9479652B013C01A501940153 +:109050000E945266F80187FF05C0418A528A638ADE +:10906000748AD5CF818A928AA38AB48AD0CFD091CC +:109070002A0DF9E2DF9F80011124055D124FC1E046 +:10908000CD0FC23109F4C0E020900E1089E2382ED5 +:10909000C21509F45BC0CC2ED12C3C9CC0013D9C78 +:1090A000900D11249C01255D324F7901F801418812 +:1090B000528863887488F90181889288A388B4886B +:1090C000A5019401C301B2010E94526687FF24C02A +:1090D000F80161A172A183A194A19B01AC010E943E +:1090E0007965F80125A136A147A150A50E94AB687A +:1090F0009B01AC01C301B2010E9479652B013C01C7 +:10910000A50194010E94526687FF06C0F701418ABB +:10911000528A638A748ADC2F3C9CF0013D9CF00DDE +:109120001124E55DF24F258936894789508D618983 +:109130007289838994890E945266811101C0DC2F53 +:10914000CF5FC23109F4C0E08701A2CFD0932A0DCE +:10915000DF91CF911F910F91FF90EF90DF90CF9013 +:10916000BF90AF909F908F907F906F905F904F9047 +:109170003F902F9008952F923F924F925F926F925F +:109180007F928F929F92AF92BF92CF92DF92EF9297 +:10919000FF920F931F93CF93DF93CDB7DEB7E7977F +:1091A0000FB6F894DEBF0FBECDBF4B8F5C8F6D8FB7 +:1091B000072F2FAB20910E102EA3422F50E05BA360 +:1091C0004AA339E2239FF0011124E55DF24F158691 +:1091D00016861786108A15A216A217A210A610824C +:1091E00049E956E766E97EE741A352A363A374A366 +:1091F00099A388A344EA52E158A74FA3CE010D9644 +:1092000098AB8FA72BE433E13EA72DA7AE014F5FAC +:109210005F4F5DA34CA38EA129E2829FC001112460 +:109220009EAB8DAB5F8F4E8F2BE433E13AA729A71E +:1092300044EA52E15AAB49AB612C712C10E02F018A +:10924000CF010D969CAB8BAB1F0195E2290E311C13 +:10925000E8A1F9A16191719181919191F9A3E8A39C +:10926000E9A9FAA981909190A190B190FAABE9ABEC +:10927000A50194010E94AB680E947B68EFA5F8A944 +:109280006193719381939193F8ABEFA7E9A5FAA548 +:10929000C190D190E190F190FAA7E9A76C197D09EE +:1092A0008E099F096B017C0197FF07C0CC24DD2448 +:1092B0007601C61AD70AE80AF90AEDA9FEA9E60D51 +:1092C000F71DE55DF24FC182D282E382F482EBA901 +:1092D000FCA92081318142815381C216D306E40664 +:1092E000F50610F469017A01EBA9FCA9C082D182CC +:1092F000E282F3820E94F466A50194010E945966FD +:109300004B015C01EE8DFF8D61937193819391937D +:10931000FF8FEE8F20E030E0A9010E94526687FFA8 +:109320000DC0112321F0113021F094E003C091E031 +:1093300001C092E0F2018081892B8083A501940114 +:10934000C501B4010E94AB68F101208131814281E5 +:1093500053810E947965F1016083718382839383D5 +:109360001F5FF4E06F0E711C2CE06216710409F0AF +:109370006FCF0E9438694B015C01F10160837183FA +:1093800082839383CD28CE28CF2809F425C220E0FC +:1093900030E0A9016B8D7C8D8D8D902F0E945266DF +:1093A00087FD21C0FFA9FF2361F0A50194016B8D0A +:1093B0007C8D8D8D902F0E94AB686B8F7C8F8D8FF5 +:1093C000092F20E030E040E85FE36B8D7C8D8D8DD0 +:1093D000902F0E94526687FF0DC01B8E1C8E20E8C6 +:1093E0002D8F0FE307C039E93B8F46E74C8F56E9D5 +:1093F0005D8F0EE7A501940160E070E080E89FE3D7 +:109400000E94596669A77AA78BA79CA7CE010D96E3 +:109410009A8F898FC12CD12C760129E2EAA1FBA178 +:109420002E9FC0012F9F900D11249C01245B324F71 +:1094300039A328A3ECA1FDA180809180A280B380F4 +:1094400020E030E0A901C501B4010E9452668823E2 +:1094500009F475C029A53AA54BA55CA5C501B401C1 +:109460000E94AB682B013C01ECA1FDA160837183DC +:10947000828393839B01AC0160E070E080E89FE30E +:109480000E9459664B015C01E894B7F8EFA1F8A57A +:109490002485358546855785C501B4010E94AB6892 +:1094A0001B018E8F192F9B01482F592F6B8D7C8D9F +:1094B0008D8D902F0E94526687FD05C02B8E3C8EAD +:1094C000FE8DFD8F012FE8A1F9A120803180F2816E +:1094D000FE8FE8A1F9A11381EFA1F8A5208D318DB0 +:1094E000428D538DC501B4010E94AB684B015C01F4 +:1094F0009B01AC01B1018E8D912F0E94526687FDB8 +:1095000003C01401AE8E1B2DC101AE8DB12FE8A199 +:10951000F9A180839183A283B383EDA5FEA5248561 +:10952000358546855785C301B2010E94AB689B0112 +:10953000AC01C701B6010E9478656B017C012CA1CA +:109540003DA12C5F3F4F3DA32CA34DA55EA54C5FD5 +:109550005F4F5EA74DA78FA198A5049698A78FA3EC +:10956000E98DFA8D2E173F0709F064CF80910D1019 +:10957000FEA1F8130FC089E22AA13BA1829FF0014E +:10958000839FF00D1124E55DF24F118A128A138A30 +:10959000148A14C02FEE3FEF4FE75FE3C701B60117 +:1095A0000E94706818167CF489E24AA15BA1849F2E +:1095B000F001859FF00D1124E55DF24F118E128EA2 +:1095C000138E148E6AC02FEE3FEF4FE75FEBC7019B +:1095D000B6010E947068181644F08FEEC82EDD2484 +:1095E000DA948FE7E82E8FEBF82EA701960160E062 +:1095F00070E080E89FE30E94786520E030E040E082 +:109600005FE30E94AB680E9438696B017C0189E2CC +:109610002AA13BA1829FF001839FF00D1124E55DFB +:10962000F24F2091D9123091DA124091DB12509111 +:10963000DC1261A172A183A194A10E94AB68A70171 +:1096400096010E94AB684B015C01A701960160E0A6 +:1096500070E080E89FE30E9478659B01AC01C50142 +:10966000B4010E9459666B017C0120E030E0A90141 +:109670000E94526687FF03C0C12CD12C760189E27B +:109680004AA15BA1849FF001859FF00D1124E55D47 +:10969000F24FC18ED28EE38EF48E2B8D3C8D4D8D8C +:1096A000502F6B8D7C8D8D8D902F0E94AB687B0130 +:1096B0008C0189E22AA13BA1829FF001839FF00DDA +:1096C0001124E55DF24FC701D801858F968FA78FD2 +:1096D000B0A3A18CB28CC38CD48C609063137090B7 +:1096E000641380906513909066139301A401B701F1 +:1096F000C8010E94526687FD05C0762D672D982D02 +:10970000892D04C07E2D6F2D902F812F272F362F6E +:10971000492F582FB501C6010E94526687FD0DC022 +:109720009301A401B701C8010E94526687FD03C0DE +:109730005301640102C05701680189E24AA15BA19B +:10974000849FF001859FF00D1124E55DF24FC50166 +:10975000D601858B968BA78BB08F8CE0FE0131965E +:10976000A7E5B3E101900D928A95E1F7C701D80111 +:109770008093631390936413A0936513B09366135F +:109780008CE0FE013D96ABE4B3E101900D928A9529 +:10979000E1F780914A1380930E108F5F823109F4B4 +:1097A00080E080934A13E7960FB6F894DEBF0FBEB1 +:1097B000CDBFDF91CF911F910F91FF90EF90DF9080 +:1097C000CF90BF90AF909F908F907F906F905F9061 +:1097D0004F903F902F9084CBE7960FB6F894DEBF62 +:1097E0000FBECDBFDF91CF911F910F91FF90EF90F2 +:1097F000DF90CF90BF90AF909F908F907F906F90B1 +:109800005F904F903F902F900895611571058105ED +:109810009105C1F16A3071058105910548F425E093 +:109820002A95F1F700006150710981099109EDCF86 +:10983000643671058105910548F4E5E3EA95F1F791 +:1098400000006A50710981099109DFCF683EF3E099 +:109850007F078105910558F4EFE8F1E03197F1F7C2 +:1098600000C000006456710981099109CECFEFE96B +:10987000FFE03197F1F700C00000685E7340810996 +:109880009109C3CF0895009741F0EFE9FFE03197C8 +:10989000F1F700C000000197F6CF08954F925F9254 +:1098A0006F927F92AF92BF92CF92DF92EF92FF9230 +:1098B0000F931F93CF93DF936C01FB015A013097F5 +:1098C00029F08081D601A80FB11D01C0DC019C9157 +:1098D0008D019D3231F40E5F1F4F11969C91D1E0A6 +:1098E0000AC09B3219F00F5F1F4F04C00E5F1F4F5D +:1098F00011969C91D0E0512C612CC0E020E030E02A +:10990000A901780160ED762E790E89E08715D8F0EF +:109910006394A8E0A61598F05110C150A5E0B0E0FE +:109920000E94F569DC01CB01880F991FAA1FBB1F9C +:109930009C01AD01270D311D411D511D0BC0511062 +:1099400009C0CF5F07C0BEEF7B1209C0511007C02E +:10995000552453940F5F1F4FD7019C91D2CF66209F +:1099600009F450C07F01CA01B9010E94F2662B01BF +:109970003C0120E030E0A9010E945266882349F1B1 +:10998000CF3F64F42AE037ED43E25CE3C301B20168 +:109990000E94AB682B013C01CE5FF2CFCF3F59F460 +:1099A0002DEC3CEC4CEC5DE3C301B2010E94AB68D2 +:1099B0002B013C010EC0CC2361F020E030E040E2FE +:1099C00051E4C301B2010E94AB682B013C01C150BC +:1099D000F2CFDD2351F077FA709477F87094F501A7 +:1099E000408251826282738206C0D5014D925D929F +:1099F0006D927C9213970C191D090150F701008399 +:109A000081E001C080E0DF91CF911F910F91FF9025 +:109A1000EF90DF90CF90BF90AF907F906F905F906E +:109A20004F9008958091A21284FD25C09FB7F894AD +:109A30008091A21280618093A2129FBF0E94053D77 +:109A400003D780912D13982F9C7021F490912E13A1 +:109A5000913089F49FB7843029F4F89480912B13C6 +:109A6000806204C0F89480912B13886080932B133C +:109A70009FBF0C943F3A08952F923F924F925F926E +:109A80006F927F928F929F92AF92BF92CF92DF920E +:109A9000EF92FF920F931F93CF93DF93CDB7DEB773 +:109AA000CF55D1090FB6F894DEBF0FBECDBF2A96B1 +:109AB0008FAF2A971B012F962CAF3DAF4EAF5FAFF4 +:109AC0002F976C960FAF6C978091E11285FF4FC076 +:109AD0007B0100E010E0DD24D394D7018D909D90B0 +:109AE000AD90BD907D0120E030E0A901C501B40139 +:109AF0000E947068181664F0F801EC55FD4E24A120 +:109B000035A146A157A1C501B4010E94526687FD47 +:109B1000D0922F1380912F13882319F180912D1348 +:109B2000883061F07FDF9FB7F89480912B138560B8 +:109B300080932B139FBF0E947A4219C09FB7F8945D +:109B40008091A21288608093A2129FBF0E947A42E5 +:109B500080912C1381110BC080912D138111F6CFB0 +:109B6000E1CF0C5F1F4F0C30110509F0B6CF80918B +:109B70002D13823009F454C3F10180819181A281B7 +:109B8000B38129968CAF9DAFAEAFBFAF29978481CB +:109B90009581A681B78125968CAF9DAFAEAFBFAF43 +:109BA000259780859185A285B38521968CAF9DAF41 +:109BB000AEAFBFAF2197AE01435C5F4FBE016F5B9D +:109BC0007F4FCE018B5B9F4F0E9423292196ECACE7 +:109BD000FDAC0EAD1FAD219725962CAD3DAD4EAD24 +:109BE0005FAD259729966CAD7DAD8EAD9FAD299764 +:109BF000DE0191964D01FE017D965F0118976D0182 +:109C00000E94792AE9A0FAA00BA11CA12D8D3E8DFE +:109C10004F8D58A1698D7A8D8B8D9C8D0E94DF2D83 +:109C2000882309F4F9C26091E6117091E7118091DF +:109C3000E8119091E9110E94F4662B013C016091BA +:109C4000E2117091E3118091E4119091E5110E946D +:109C5000F4669B01AC016091DE117091DF1180917F +:109C6000E0119091E1116D962FAF6D976E963FAF19 +:109C70006E976F964FAF6F97A0965FAFA0970E94B9 +:109C8000F466FE01BD964F01DE0199965D0138979D +:109C90006F01830172016D962FAD6D976E963FAD8A +:109CA0006E976F964FAD6F97A0965FADA0970E948D +:109CB000912DA401B501C6010E94CE290E94A840A1 +:109CC0002A96FFAD2A97FF2319F0F13041F0D7C053 +:109CD00021E030E02B963FAF2EAF2B97D4C020E091 +:109CE00030E048EC52E42F966CAD7DAD8EAD9FAD6B +:109CF0002F970E947068181654F480E090E0A8EC4A +:109D0000B2E42F968CAF9DAFAEAFBFAF2F972DA112 +:109D10003EA14FA158A5D1016D917D918D919C914E +:109D20000E9478652B013C0129A53AA54BA55CA5AD +:109D3000F10164817581868197810E9478654B016C +:109D40005C012DA53EA54FA558A9D10118966D918E +:109D50007D918D919C911B970E9478656B017C0190 +:109D6000A3019201C301B2010E94AB682B013C0127 +:109D7000A5019401C501B4010E94AB689B01AC012F +:109D8000C301B2010E9479654B015C01A7019601F4 +:109D9000C701B6010E94AB689B01AC01C501B401CB +:109DA0000E9479650E94386920E030E040EF51E47C +:109DB0000E94AB682F962CAD3DAD4EAD5FAD2F9799 +:109DC0000E9459660E94C6662B967FAF6EAF2B9796 +:109DD0006A30710530F42AE030E02B963FAF2EAFA9 +:109DE0002B972AE037ED43EA5CE32F966CAD7DAD0F +:109DF0008EAD9FAD2F970E94AB682AE037ED43EA06 +:109E00005BE30E94796520E030E040E752E40E9485 +:109E1000AB6820E030E040E752E40E94AB686B01A1 +:109E20007C016093BC127093BD128093BE1290931C +:109E3000BF126093C0127093C1128093C2129093AC +:109E4000C31220E030E442E955E40E94706887FFC5 +:109E500009C0C092C412D092C512E092C612F0920C +:109E6000C71211C080E090E4A2E9B5E48093C41267 +:109E70009093C512A093C612B093C71204C02B963C +:109E80001FAE1EAE2B972B96AEADBFAD2B97BD016F +:109E900080E090E00E94F2666B017C012DA13EA162 +:109EA0004FA158A5F10160817181828193810E9447 +:109EB0007865A70196010E94596663966CAF7DAFE5 +:109EC0008EAF9FAF639729A53AA54BA55CA5D1019D +:109ED00014966D917D918D919C9117970E94786554 +:109EE000A70196010E94596667966CAF7DAF8EAF51 +:109EF0009FAF67972DA53EA54FA558A9F101608595 +:109F00007185828593850E947865A70196010E94DC +:109F100059666B966CAF7DAF8EAF9FAF6B97222467 +:109F20002394312C2B962EAD3FAD2B972215330564 +:109F300008F470C1B101032C000C880B990B0E942E +:109F4000F4666B017C019B01AC0163966CAD7DAD49 +:109F50008EAD9FAD63970E94AB689B01AC016DA174 +:109F60007EA18FA198A50E9479656D877E878F87D6 +:109F7000988BA701960167966CAD7DAD8EAD9FADB8 +:109F800067970E94AB689B01AC0169A57AA58BA578 +:109F90009CA50E947965698B7A8B8B8B9C8BA70122 +:109FA00096016B966CAD7DAD8EAD9FAD6B970E94AB +:109FB000AB689B01AC016DA57EA58FA598A90E94F9 +:109FC00079656D8B7E8B8F8B988FAE014B5E5F4F6B +:109FD000BE016F5E7F4FCE010D960E9423296D85D5 +:109FE0007E858F8598896093EA117093EB11809339 +:109FF000EC119093ED1129893A894B895C89209362 +:10A00000EE113093EF114093F0115093F111ED8860 +:10A01000FE880F89188DE092F211F092F3110093EF +:10A02000F4111093F511DE01D1964D01FE01F59664 +:10A030005F0118966D010E94792AC9A8DAA8EBA8D9 +:10A04000FCA88DA89EA8AFA8B8AC2091D2113091E1 +:10A05000D3114091D4115091D51169AD7AAD8BAD2A +:10A060009CAD0E94786520E030E040E253E40E941D +:10A07000AB680E94C166072E000C880B990B0E94EA +:10A08000F46669837A838B839C832091D611309107 +:10A09000D7114091D8115091D911C501B4010E9436 +:10A0A000786520E030E040E253E40E94AB680E9413 +:10A0B000C166072E000C880B990B0E94F4666D8315 +:10A0C0007E838F8398872091DA113091DB11409144 +:10A0D000DC115091DD11C701B6010E94786520E0C6 +:10A0E00030E044EB52E40E94796520E030E040E249 +:10A0F00053E40E94AB680E94C166072E000C880BD7 +:10A10000990B0E94F46669877A878B879C870E94E7 +:10A110007A4280912C13811181C090910D10809111 +:10A120004A13981303C00E942441F1CF89809A807A +:10A13000AB80BC80C501B4010E94C1666093DE1192 +:10A140007093DF118093E0119093E111CD80DE8058 +:10A15000EF80F884C701B6010E94C1666093E211E6 +:10A160007093E3118093E4119093E51149845A842C +:10A170006B847C84C301B2010E94C1666093E611C6 +:10A180007093E7118093E8119093E9112091A41244 +:10A190003091A5124091A6125091A712C501B401A9 +:10A1A0000E94596669837A838B839C832091A812CD +:10A1B0003091A9124091AA125091AB12C701B60179 +:10A1C0000E9459666D837E838F8398872091AC129D +:10A1D0003091AD124091AE125091AF12C301B20155 +:10A1E0000E94596669877A878B879C876C962FAD0A +:10A1F0006C972F964CAD5DAD6EAD7FAD2F97CE01B8 +:10A2000001960E94BB48B1E0B093FA11EFEF2E1A0D +:10A210003E0A88CE80E004C083E302C082E000C032 +:10A22000C15ADF4F0FB6F894DEBF0FBECDBFDF912E +:10A23000CF911F910F91FF90EF90DF90CF90BF9043 +:10A24000AF909F908F907F906F905F904F903F90D6 +:10A250002F9008951F920F920FB60F9211240BB6F4 +:10A260000F922F933F934F935F936F937F938F93AF +:10A270009F93AF93BF93EF93FF9380912D13813002 +:10A2800069F080912B13811109C0CCDB9FB7F89442 +:10A2900080912B13836080932B139FBFFF91EF91CD +:10A2A000BF91AF919F918F917F916F915F914F91EE +:10A2B0003F912F910F900BBE0F900FBE0F901F90EC +:10A2C000189589B180719091E11296FD02C090E1DC +:10A2D0008927882319F011F087E0089580E0089518 +:10A2E0002F923F924F925F926F927F928F929F92A6 +:10A2F000AF92BF92CF92DF92EF92FF920F931F9394 +:10A30000CF93DF93CDB7DEB76B970FB6F894DEBF70 +:10A310000FBECDBF90912C139111AFC1782E98EC48 +:10A32000A92E92E1B92E9E01235F3F4F490100E023 +:10A3300010E0C12CD12C7601482F50E05B8B4A8B6A +:10A34000902F0115110521F0013021F084E003C0A8 +:10A3500081E001C082E0D4018D934D01EA89FB893F +:10A3600002C0F595E7959A95E2F7E0FF17C020E067 +:10A3700030E040EC5FEBD5016D917D918D919C912A +:10A380000E94AB681B012C019B01AC01C701B60107 +:10A390000E947068181614F0610172010F5F1F4F60 +:10A3A000B4E0AB0EB11C0330110551F68090E712FA +:10A3B0009090E812A090E912B090EA1204E011E047 +:10A3C0006624639460E373E1CE0101960E94FA2F44 +:10A3D0008091E212E82FF0E0FD8BEC8BFE013196CC +:10A3E0002CE233E1398B288B3B8F2A8F20E030E041 +:10A3F00060E090E01601270157FA509457F8509406 +:10A400004A895B89022E02C0559547950A94E2F766 +:10A4100040FF2AC06F5FAA8DBB8D14961D921D92BE +:10A420001D921C9217974C895D89022E02C055958A +:10A4300047950A94E2F740FF03C0112319F007C0C3 +:10A44000112329F0C082D182E282F38204C02082EB +:10A450003182428253824DE050E04C0F5D1F420F2B +:10A46000531FDA018C91982B2F5F3F4F34964A8D02 +:10A470005B8D4C5F5F4F5B8F4A8F2330310509F056 +:10A48000BFCFF92E70E080E090E00E94F2660E945B +:10A4900038699B01AC01C501B4010E94AB68AB01F6 +:10A4A000BC01F09249134E8B5F8B688F798F0E94AD +:10A4B0003C4720E04E895F89688D798DCE010196F9 +:10A4C0000E94BB480E9493300E94D93C1123E1F0C6 +:10A4D000F8DEFE013D9620E030E090E06191462FED +:10A4E0004F2159F0AC01022E02C0559547950A94B0 +:10A4F000E2F740FF02C06095F6222F5F3F4F233006 +:10A50000310561F7F09249130E9493308091A212B5 +:10A510008473B1F08091A212807321F083DA0E94DB +:10A520007A42ABC01111A4C0CCDE8721B9F79FB726 +:10A53000F8948091A2128B7F8093A2129FBF04C0D7 +:10A540008F2D877009F0C2CF0E947F390E945F472C +:10A550008091EB129091EC1296D91625C9F020E06B +:10A5600030E040EA50E46091ED127091EE1280917B +:10A57000EF129091F0120E94AB686B017C01809009 +:10A58000E3129090E412A090E512B090E61210C091 +:10A59000C090ED12D090EE12E090EF12F090F01219 +:10A5A0008090E7129090E812A090E912B090EA1221 +:10A5B000015009F007CFC090E212D12C8090ED122B +:10A5C0009090EE12A090EF12B090F012240135019D +:10A5D00077FA709477F8709484EAE82E82E1F82E86 +:10A5E00000E010E08A899B89002E02C0959587952E +:10A5F0000A94E2F780FF2AC0C601002E02C095959A +:10A6000087950A94E2F7D70180FF10C094962D91A8 +:10A610003D914D915C919797C501B4010E94796578 +:10A62000F701208131814281538106C02D913D91F6 +:10A630004D915C91C301B2010E94AB680E947B689E +:10A64000E889F98964837583868397830F5F1F4F39 +:10A65000288939892C5F3F4F398B288B34E0E30EF2 +:10A66000F11C0330110509F0BDCF0E943C4705C025 +:10A670008091A21282FF5BCF51CF6B960FB6F894F8 +:10A68000DEBF0FBECDBFDF91CF911F910F91FF9025 +:10A69000EF90DF90CF90BF90AF909F908F907F9082 +:10A6A0006F905F904F903F902F900895EBE6F0E011 +:10A6B00080818F7E8083E8E6F0E080818E7F8083DA +:10A6C000089554985C9A8091E11283FF0BC08091A9 +:10A6D0006B00806180936B00809168008160809343 +:10A6E00068000895E3CF60E373E18AE792E10C9498 +:10A6F000FA2FF894F999FECF92BD81BD81E08FBB0E +:10A7000080B58627482F082E000C550B262F30E0E9 +:10A7100024233523232B39F06F3F19F060BD84E0EB +:10A7200006C084E104C0882321F060BD84E28FBBB1 +:10A73000F99A789408958F929F92AF92BF92CF9298 +:10A74000DF92EF92FF920F931F93CF937C014A0108 +:10A750006B01C40ED51E8B01C0E05C01A61AB70ABE +:10A76000C8018A0D9B1D0C151D0591F0C11108C073 +:10A770002C2FCC0F330B232F221F2227221F01C087 +:10A7800021E0F80161918F01C22FC60FB2DFE8CF3F +:10A790006C2FC701880D991DCF911F910F91FF90CC +:10A7A000EF90DF90CF90BF90AF909F908F90A1CF10 +:10A7B000F999FECF92BD81BD81E08FBB80B5089530 +:10A7C0008F929F92AF92BF92CF92DF92EF92FF92C1 +:10A7D0000F931F93CF934B017A016C01C40ED51ECA +:10A7E0008C01C0E05B01A81AB90AC501800F911F56 +:10A7F0000C151D0591F0DCDFC11108C02C2FCC0F0A +:10A80000330B232F221F2227221F01C021E0C22F3A +:10A81000C80FF80181938F01E8CFC4018E0D9F1DF1 +:10A82000C7DF21E030E0C81711F020E030E0C901B7 +:10A83000CF911F910F91FF90EF90DF90CF90BF903D +:10A84000AF909F908F9008955C980895CF93DF9379 +:10A85000CDB7DEB7CC56D1090FB6F894DEBF0FBE28 +:10A86000CDBF8091C00082608093C0001092C5006F +:10A8700080E18093C4008091C10080618093C10019 +:10A880008091C10088608093C1008091C100806880 +:10A890008093C1000E94A840869A879A829A8091EC +:10A8A0000A01886080930A0180910A018260809386 +:10A8B0000A0180910701816080930701809A819A43 +:10A8C000579A809107018061809307018091070169 +:10A8D000886080930701809107018460809307015D +:10A8E000809108018061809308018091080188604F +:10A8F00080930801809108018B7F809308018091EB +:10A90000E11282FF08C08A9A8091080181608093D9 +:10A9100008015F9A07C08A98809108018E7F809312 +:10A9200008015F98809181008F7E809381008091E3 +:10A930008100886080938100809180008C7F80936B +:10A940008000809180008F708093800080916E00E5 +:10A95000887F80936E0014BC15BC80916E0081606E +:10A9600080936E0054985C9A80916D008061809312 +:10A970006D00809168008460809368008AE090E0B8 +:10A980000E94434C0E94A81F399A3B9A419A439ACD +:10A9900080910101846080930101809101018068B0 +:10A9A0008093010180910201846080930201809173 +:10A9B0000201806880930201559A569A5D9A5E9AC8 +:10A9C0000E94792E80E090E00E940C2F6093D211BB +:10A9D0007093D3118093D4119093D51181E090E0BE +:10A9E0000E940C2F6093D6117093D7118093D811C9 +:10A9F0009093D91182E090E00E940C2F6093DA11BD +:10AA00007093DB118093DC119093DD1120E030E036 +:10AA10004AE754E464E071E080E090E00E940A209C +:10AA200084E893E0C5DE8093C41185E893E0C0DE3E +:10AA30008093C51108E913E078012FEFE21AF20ABA +:10AA4000C801B6DEF801E25DF14F808387013CE981 +:10AA5000E31633E0F30681F70EE813E078018FEF99 +:10AA6000E81AF80AC801A4DEF801E45CF14F80831B +:10AA7000870192E9E91693E0F90681F702E81CE004 +:10AA80007801AFEFEA1AFA0AC80192DEF801E45B36 +:10AA9000FA4F80838701B6E8EB16BCE0FB0681F72E +:10AAA000C090CE11D090CF11E090D011F090D11184 +:10AAB00020E030E044EB53E4C701B6010E94706827 +:10AAC000181644F0A7019601C701B6010E948069DB +:10AAD000882341F01092CE111092CF111092D01114 +:10AAE0001092D1116091CE117091CF118091D0113F +:10AAF0009091D111FE0131967F018F0124E045E054 +:10AB00000E94E662FF92EF9284EE92E09F938F9311 +:10AB10000E9411420E94841F0E94811F0E94701F88 +:10AB20000E94E12620E030E044EB52E46091DA112B +:10AB30007091DB118091DC119091DD110E9478659C +:10AB40007B018C012091D6113091D7114091D81101 +:10AB50005091D9116091D2117091D3118091D4117B +:10AB60009091D511E2EF8E2EE1E19E2EFEEEAF2EFA +:10AB7000F1E1BF2EAAEECA2EA1E1DA2E0E942F2CFF +:10AB80008091301390913113A0913213B09133130F +:10AB90008093DE119093DF11A093E011B093E11147 +:10ABA0008091341390913513A0913613B0913713DF +:10ABB0008093E2119093E311A093E411B093E51117 +:10ABC0008091381390913913A0913A13B0913B13AF +:10ABD0008093E6119093E711A093E811B093E911E7 +:10ABE00080917A00876880937A009B98A39A8FE07F +:10ABF0008093F6110E9476208FE992E09F938F93C5 +:10AC000086EF92E09F938F930E94114286EA92E032 +:10AC10009F938F9386E093E09F938F930E941142BE +:10AC20008091C5118F938091C4118F9385E193E03A +:10AC30009F938F930E94114286E293E00E943147D6 +:10AC40008EE1ECE2F3E1DF011D928A95E9F781E004 +:10AC500080932C1378949091E1120FB6F894DEBF94 +:10AC60000FBECDBF94FD80932D139E01235C3F4FFB +:10AC7000A1963FAF2EAFA197CE010196A3969FAFAD +:10AC80008EAFA39780914111809340118FE3E3E64B +:10AC9000F2E1DF011D928A95E9F766E872E180E052 +:10ACA0000E947A3E811103C087E00E944E400C9AB8 +:10ACB000549A549A0E94053D549AC6DD02DD549878 +:10ACC0005C9A0E945F470E947F390E943C470BDDDF +:10ACD00010922C131092A21210922B1310922E137A +:10ACE00010922F1380912D138130E9F486E899E0BA +:10ACF0000E946C4280E699E00E946C4283E199E0F8 +:10AD00000E946C42A4961FAEA497A5961FAEA5976D +:10AD10001E01B5E12B0E311CFE01B9966F96FFAFF7 +:10AD2000EEAF6F973DC010922D13ECCF80910601CE +:10AD300085FD20C00E94D6461092FB118091020131 +:10AD40008F7D809302018091CE119091CF11A091BF +:10AD5000D011B091D111B0588093B80C9093B90C28 +:10AD6000A093BA0CB093BB0C60E070E084EB92E46B +:10AD70000E94AB208091B40C9091B50CA091B60CC0 +:10AD8000B091B70C892B8A2B8B2B51F41092FB11AD +:10AD90008AE293E09F938F930E9411420F900F904D +:10ADA0008091FB118823E1F0C1CFE92FF0E0E0545E +:10ADB000FF4E80819F5F903809F490E0909340119E +:10ADC0008F3F09F475C58A3091F08D3081F0A596DA +:10ADD000BFADA597BB2309F437C5893209F42DC54A +:10ADE00090914011809141118913DFCF61C50CE032 +:10ADF00012E1A4962FADA497E22FF0E0E45FFD4EA0 +:10AE000010820E947A4280912C1381110FC58AE032 +:10AE1000D1011D928A95E9F780910C12843209F0D4 +:10AE200078C481E08DAF80910D12833481F034F4C9 +:10AE3000882351F0843209F06FC209C0873439F099 +:10AE4000883509F069C203C08AE296E055C3909143 +:10AE50000E12911150C4833409F42DC21CF48432B3 +:10AE600041F04FC4873409F46AC1883509F440C2FF +:10AE700048C480912D13887109F03FC486E296E0A2 +:10AE80000E946C428091D4120E945E428DE096E056 +:10AE90000E946C428091D7120E945E428FEE95E034 +:10AEA0000E946C428091D5120E945E4286ED95E030 +:10AEB0000E946C428091D5120E9469428FEC95E00D +:10AEC0000E946C428091D6120E945E4287EB95E010 +:10AED0000E946C428091D6120E94694280EB95E0FC +:10AEE0000E946C428091E11282FB882780F90E94C7 +:10AEF0005E428FE895E00E946C428091E11286FBF1 +:10AF0000882780F90E945E428FE695E00E946C429D +:10AF10008091E112881F8827881F0E945E428FE47B +:10AF200095E00E946C428091D8120E945E4289E3B3 +:10AF300095E00E946C428091D8120E94694281E3A0 +:10AF400095E00E946C426091D9127091DA12809162 +:10AF5000DB129091DC120E94404281E195E00E9458 +:10AF60006C426091DD127091DE128091DF1290913F +:10AF7000E0120E94404286EF94E00E946C42809171 +:10AF8000E11281700E945E4289ED94E00E946C4261 +:10AF90008091E11285FB882780F90E945E428EEB4A +:10AFA00094E00E946C428091E11283FB882780F933 +:10AFB0000E945E4283EA94E00E946C428091E1121A +:10AFC000829581700E945E4287E894E00E946C4204 +:10AFD0008091E2120E945E428DE694E00E946C42F3 +:10AFE0008091E2120E94694285E694E00E946C42E0 +:10AFF0006091E3127091E4128091E5129091E61253 +:10B000000E94404288E494E00E946C426091E71202 +:10B010007091E8128091E9129091EA120E944042E8 +:10B020008BE294E00E946C428091EB120E945E429F +:10B030008CE094E00E946C426091ED127091EE12EF +:10B040008091EF129091F0120E94404283EF93E0C2 +:10B050000E946C4210E044E6D42E34EAE32E32E142 +:10B06000F32E00E081EF93E00E946C42802F8D0D63 +:10B070000E945E428FEE93E00E946C42123091F08B +:10B080001330E1F0113031F0F7016081718182817C +:10B0900093811CC0D7011C966D917D918D919C91DF +:10B0A0001F9714C020E030E041E655E4F701608DC1 +:10B0B000718D828D938D0E94596608C0F70184A11D +:10B0C00095A1A6A1B7A1BC01CD0190580E94404214 +:10B0D0008CEE93E00E946C42013029F0023031F096 +:10B0E0008AEE93E005C088EE93E002C086EE93E01E +:10B0F0000E946C42123051F0133059F0113019F0A7 +:10B100008CED93E008C08AEC93E005C089EB93E0F6 +:10B1100002C089EA93E00E946C4285EA93E00E94B3 +:10B120006C420F5FF4E0EF0EF11C033009F09ACF90 +:10B130002AE0D20E1F5F3CE8D3128FCFE2C283EA2F +:10B1400093E00E946C4280916312823091F038F457 +:10B15000882361F08130A9F48DE993E00CC083303D +:10B1600069F0883071F483E993E005C080EA93E0E8 +:10B1700002C08AE993E00E946C420CC087E993E028 +:10B18000FACF8EE893E00E946C4280916312825065 +:10B190000E945E428BE893E00E946C4280916912AB +:10B1A0008A5C0E945E4280916712813049F028F0EB +:10B1B000823051F48CE793E005C086E893E002C04A +:10B1C00081E893E00E946C4280916512811103C076 +:10B1D00087E793E002C082E793E00E946C4280918F +:10B1E0006612811103C08DE693E002C088E693E009 +:10B1F0000E946C4280916412813019F483E693E0DE +:10B2000002C08EE593E00E946C4280916A12813008 +:10B2100049F028F0823051F482E593E005C08AE5D8 +:10B2200093E002C086E593E00E946C4280916C122C +:10B23000813031F040F0823051F48AE493E005C06F +:10B240008EE493E002C086E493E00E946C42809119 +:10B250006B12882329F0823039F48EE393E002C028 +:10B2600082E493E00E946C428BE393E00E946C4284 +:10B27000809175120E945E4288E393E00E946C42C6 +:10B280006091711270917212809173129091741288 +:10B290000E94424285E393E00E946C4260916D12ED +:10B2A00070916E1280916F12909170120E944242C2 +:10B2B00081E393E021C180912D13823049F40E94F3 +:10B2C000124D86E899E00E946C428DE399E00BC034 +:10B2D000811113C282E080932D1386E899E00E94C9 +:10B2E0006C4286E499E00E946C4283E199E004C1DB +:10B2F00080912D13813009F004C286E899E00E9404 +:10B300006C428EE499E00E946C4283E199E00E94D5 +:10B310006C4210922D13F5C190912D13923008F0CC +:10B32000ECC1893409F4C6C034F4833259F088344E +:10B3300009F480C066C18E3409F437C1823509F43E +:10B34000FAC05FC182E08DAF80910E128111D3C12E +:10B3500010E0BE016F5F7F4F812F0E947A3E811106 +:10B3600004C087E00E944E40CCC18EE293E00E9470 +:10B370006C42163029F0173041F488E293E002C0A5 +:10B380008BE293E00E946C4204C086E3810F0E942E +:10B390005E4286E293E00E946C42CE0101967C01FF +:10B3A00000E0D7016D917D918D919D917D010E946D +:10B3B0005042023019F084E293E002C080E293E050 +:10B3C0000E946C420F5F033061F71F5F183009F66F +:10B3D0008AE193E00E946C4222E9E22E22E1F22E01 +:10B3E00010E0F70161917191819191917F010E942B +:10B3F0005042123019F088E193E002C084E193E0FA +:10B400000E946C421F5F133061F78EE093E00E9450 +:10B410006C4260919E1270919F128091A012909147 +:10B42000A1120E9450428AE093E00E946C420E9466 +:10B43000DD4067C18091E11284FF5BC184E08093AD +:10B440002D1334D984E00E94705183E00E94705122 +:10B450000E947A4280912C13811102C044D931D9C3 +:10B4600080912C1381114DC110922D130E943F3AEF +:10B4700010E0812F0E944C46811102C087E013C06A +:10B4800080910C12882389F08CE092E10E94314770 +:10B490008CE092E10E94E604811105C081E798E00A +:10B4A0000E946C4202C00E944E40113009F429C132 +:10B4B00011E0DFCF82E08DAF80910E1281111FC0AD +:10B4C00040E550E06EEA7BE08CE092E179D9892B8F +:10B4D00049F410920C1240E550E06CE072E18EEA03 +:10B4E0009BE029D98AEF92E00E946C428CE092E1C5 +:10B4F0000E94314786EF92E00E946C4202C193E0C5 +:10B500009DAF8D3309F0F7C083E0282F30E0F901BB +:10B51000E45FFD4E9081D901A75FBD4E9C938F5F84 +:10B5200090819111F2CF8DAF40E550E06CE072E177 +:10B530008EEA9BE0ACC082E08DAF80910E12833525 +:10B5400009F0D9C083E08DAF80910F12843509F0E6 +:10B55000D2C084E08DAF809110128D3309F0CBC042 +:10B56000809112128111C7C085E08DAF80911112B8 +:10B57000843239F08A3239F0833209F0BCC082E07B +:10B5800003C081E001C08FEF0E949A3E86E899E0F7 +:10B590000E946C4287E199E00E946C4283E199E04D +:10B5A0000E946C420E94124DACC082E08DAF80912F +:10B5B0000E12811122C010E0812F0E944C46811191 +:10B5C00004C087E00E944E4013C083EF92E00E94C7 +:10B5D0006C42812F0E945E4281EF92E00E946C4299 +:10B5E0008CE092E10E9431478EEE92E00E946C4224 +:10B5F000113009F486C011E0DFCF91117EC011E057 +:10B6000001C010E0AE01475D5F4FBE01635C7F4F3C +:10B610008CE092E10E944E4C811102C082E076C023 +:10B62000EDAD81E08E0F8DAFF0E0E45FFD4E9081D7 +:10B630009D3309F060C0112361F1482F50E0282F9D +:10B6400030E0D901A45FBD4E9C91241B350BF9015C +:10B65000E45FFD4E90838F5F9C919111F0CF8DAF91 +:10B660008CE092E10E94E604811149C069A57AA5A7 +:10B670008BA59CA50E9479690E94C666F1E56F9F23 +:10B68000C001112440E550E06CE072E1955F53D8B1 +:10B6900038C0AE014F5F5F4FBE01635C7F4F8CE0EF +:10B6A00092E10E944E4C882309F4B8CFEDADF0E052 +:10B6B000E45FFD4E808181111EC0C9A4DAA4EBA411 +:10B6C000FCA420E030E04FE753E4C701B6010E943C +:10B6D0007068181684F089809A80AB80BC80C7019E +:10B6E000B6010E94C666862FB501A4010E946F3D77 +:10B6F00006C085E00BC083E009C088E007C0811167 +:10B7000005C081E798E00E946C4290C00E944E40C4 +:10B710008DC08332D1F43F922F9282E493E09F93C5 +:10B720008F931F930F930E94406AF10101900020B4 +:10B73000E9F7BF0162197309645F7D4E0F900F90A6 +:10B740000F900F900F900F9009C0873429F08D341F +:10B7500019F0803509F06AC06CE072E1DB018C9170 +:10B76000803509F58EE49CE00E940A6A8D89882361 +:10B7700091F03F922F928AE493E09F938F9382E817 +:10B780009CE09F938F930E94116A0F900F900F90EF +:10B790000F900F900F9082E3ECE0F2E1DF011D9239 +:10B7A0008A95E9F743C080914E04843148F08EE4D5 +:10B7B00093E09F938F930E9411420F900F9036C099 +:10B7C00000914C04B6E60B9F80011124C8018B5AEE +:10B7D0009B4F0E940A6A8D89882391F03F922F9295 +:10B7E0008AE493E09F938F9307571B4F1F930F9308 +:10B7F0000E94116A0F900F900F900F900F900F9072 +:10B8000082E3ECE0F2E1DF011D928A95E9F7809195 +:10B810004C04833120F48F5F80934C0402C010925B +:10B820004C0480914E048F5F80934E04A4961FAE0B +:10B83000A497A5961FAEA5973BC0B13009F0D0CA1A +:10B84000A5961FAEA597CCCA813208F4C9CA8F321B +:10B8500009F4C6CA883211F18B3329F1A496EFADF1 +:10B86000A497EF3438F08BE00E944E40A4961FAEB0 +:10B87000A497B6CAA496FFADA4972F2F30E04F2F00 +:10B880004F5F9FE9980FF901E45FFD4E9A3108F48C +:10B8900080528083A4964FAFA497A2CA21E0A596B8 +:10B8A0002FAFA5979DCA32E0A5963FAFA59798CA3E +:10B8B00080914E0C8823A1F08EE49CE00E94E60467 +:10B8C0008093800C62E87CE00E94141F81E08093EA +:10B8D000810C82E3EEE4FCE0DF011D928A95E9F73A +:10B8E0008091F711811139C080914E048823A9F10C +:10B8F000E0904D0406E60E9DC0011124FC01EB5AB8 +:10B90000FB4F7F01CF010E94E604D701D2968C93B2 +:10B91000F0904D040F9D80011124B80167577B4FB3 +:10B920000B5A1B4FF80182A90E94141F81E0D80115 +:10B93000D3968C9382E3F80111928A95E9F7F2E1AC +:10B94000FF1520F0F394F0924D0402C010924D04C4 +:10B9500080914E04815080934E040E9424410E94A5 +:10B960007A4280912C1381118DC98091810C88239A +:10B9700069F082E89CE00E94314782E3E2E8FCE063 +:10B98000DF011D928A95E9F71092810C80912D13A9 +:10B99000882309F4E6C08091F811882309F414C1C2 +:10B9A0001092F8116D961CAE1DAE1EAE1FAE6D97B7 +:10B9B00069961CAE1DAE1EAE1FAE699765961CAE95 +:10B9C0001DAE1EAE1FAE659784E1A196AEADBFADB4 +:10B9D000A197E82F1D92EA95E9F76F96AEADBFAD3E +:10B9E0006F97E82F1D92EA95E9F7D101E82F1D9294 +:10B9F000EA95E9F7A396AEADBFADA3971D928A95E0 +:10BA0000E9F780E090E00E940C2F2B013C0181E0DF +:10BA100090E00E940C2FA9966CAF7DAF8EAF9FAFC8 +:10BA2000A99782E090E00E940C2F6B017C0123E338 +:10BA300033E343E35FE36091000270910102809180 +:10BA40000202909103020E94786520E030E040E01D +:10BA50005FE30E94AB6820E030E044E353E40E94DF +:10BA6000AB689B01AC0160E070E084E393E40E946A +:10BA70007865AD966CAF7DAF8EAF9FAFAD9720E090 +:10BA800030E044EB52E4C701B6010E947865FE0144 +:10BA9000EF5AFF4F4F019E012B5A3F4F5901DE01D4 +:10BAA000A75ABF4F6D017B018C01A9962CAD3DAD0E +:10BAB0004EAD5FADA997C301B2010E942F2CA40126 +:10BAC000B501C6010E94CE296D966CAD7DAD8EADDF +:10BAD0009FAD6D978E01035C1F4F24E045E076D546 +:10BAE00069966CAD7DAD8EAD9FAD6997045111091E +:10BAF00024E045E06BD565966CAD7DAD8EAD9FAD18 +:10BB00006597810124E045E061D58E010F5F1F4FED +:10BB100024E045E0AD966CAD7DAD8EAD9FADAD97AB +:10BB200055D51F930F933F922F926F96FFAD6F974E +:10BB3000FF936E962FAD6E972F93A1963FADA19771 +:10BB40003F93A0968FADA0978F9380E693E09F934D +:10BB50008F930E9411420FB6F894DEBF0FBECDBF87 +:10BB600033C004E110E086E6F82E92E3E92E8091DE +:10BB70004D0CF89EC0011124FC01EB5AFB4F23A988 +:10BB8000222309F408CF87579B4F0E9431478091A9 +:10BB90004D0CF89E90011124F901E757FB4FDF018E +:10BBA0009E2D1D929A95E9F7F901EB5AFB4F13AAC6 +:10BBB000833120F48F5F80934D0C02C010924D0CA6 +:10BBC00001501109A1F6E7CE82B301E083FB88277B +:10BBD00080F98027909154048917D9F08AE090E089 +:10BBE0000E94434C12B313FB112710F910278091C8 +:10BBF0005404181771F01F921F9384E793E09F93EA +:10BC00008F930E941142109354040F900F900F9045 +:10BC10000F908091500490915104A0915204B091E2 +:10BC200053048F3F9105A105B10509F060F4019619 +:10BC3000A11DB11D8093500490935104A093520410 +:10BC4000B093530424C010925004109251041092E7 +:10BC50005204109253048BE30E94891F11E0853631 +:10BC6000910508F410E080914F04181781F01F929D +:10BC70001F938FE793E09F938F930E94114210933D +:10BC80004F041093FC110F900F900F900F90809124 +:10BC90002D13811112C08091F911882371F08091C8 +:10BCA000FA11882351F087E893E09F938F930E94C5 +:10BCB00011421092FA110F900F908091FD1188237C +:10BCC00009F46EC880912D1381116AC88091F61114 +:10BCD0008F3009F065C88091FC11882309F460C891 +:10BCE00021961CAE1DAE1EAE1FAE219719A61AA638 +:10BCF0001BA61CA61D8A1E8A1F8A188EE090F211B0 +:10BD0000F090F3110091F4111091F5112091EE11C2 +:10BD10003091EF114091F0115091F1116091EA11C1 +:10BD20007091EB118091EC119091ED114101FE01A8 +:10BD3000B9965F01DE01DD966D010E94792A80E0EF +:10BD400090E00E940C2F4B015C0181E090E00E948A +:10BD50000C2F6B017C0182E090E00E940C2F2B01E4 +:10BD60003C01A501940121966CAD7DAD8EAD9FADDA +:10BD70002197BED69F7720E030E040E05FE30E944D +:10BD8000706818163CF1A701960169A57AA58BA5E4 +:10BD90009CA5AED69F7720E030E040E05FE30E94B4 +:10BDA00070681816BCF0A30192016D897E898F8995 +:10BDB000988D9ED620E030E044EB52E49AD69F77EF +:10BDC00020E030E040E05FE30E947068181614F055 +:10BDD0000C94D0568EE1ECE2F3E1DF011D928A95DE +:10BDE000E9F70E943C470E9473538092D2119092CF +:10BDF000D311A092D411B092D511C092D611D09285 +:10BE0000D711E092D811F092D9114092DA115092E4 +:10BE1000DB116092DC117092DD1120E030E04AE726 +:10BE200054E464E071E080E090E00E940A20809198 +:10BE3000301390913113A0913213B091331380934A +:10BE4000DE119093DF11A093E011B093E111809186 +:10BE5000341390913513A0913613B091371380931A +:10BE6000E2119093E311A093E411B093E511809156 +:10BE7000381390913913A0913A13B0913B138093EA +:10BE8000E6119093E711A093E811B093E9118CE0CB +:10BE9000A396EEADFFADA39711928A95E9F7809135 +:10BEA000EA119091EB11A091EC11B091ED11898301 +:10BEB0009A83AB83BC838091EE119091EF11A09196 +:10BEC000F011B091F1118D839E83AF83B88780917B +:10BED000F2119091F311A091F411B091F5118987AD +:10BEE0009A87AB87BC87AE01475F5F4FBE016B5F30 +:10BEF0007F4FCE0101960E94CE2900E020E030E085 +:10BF000048E452E4BE016F5F7F4F80E00E943C4DE9 +:10BF10000C94D056CF930E942441C9E20E947A42E9 +:10BF200080912C13811111C080910D1090910E10F1 +:10BF3000981739F0C89FC0011124855D924F892B55 +:10BF400069F780912D13883049F3CF910895FF92BE +:10BF50000F931F93CF93DF9300D01F92CDB7DEB71F +:10BF6000322F20912D13223009F492C0F02E132F7E +:10BF7000042F9B01AC0169833A834B835C83CADF46 +:10BF8000109248131092F1128091E11229813A81A6 +:10BF90004B815C8187FD03C080E18093F112112306 +:10BFA00031F09091F11280E189278093F11289B1EB +:10BFB00080719091F112891791F09FB7F894809158 +:10BFC0002B13806180932B139FBF29833A834B836C +:10BFD0005C830E947A425C814B813A812981809105 +:10BFE0002C13811155C06FE173E181E00E943C4D3B +:10BFF00081E08093A3129FB7F8948091A21282608F +:10C000008093A2129FBF0E947A4280912C138111CB +:10C010003FC080912D138111F6CF8091A312813002 +:10C02000A9F4FF2051F08CE0E0E3F3E1ACE3B3E1ED +:10C0300001900D928A95E1F70CC09FB7F89480911A +:10C040002B13806180932B139FBF03C081E08093EB +:10C0500048131092A3120E947A4280912C138111EE +:10C0600017C00E947F390E945F470E943C4760E3EF +:10C0700073E18FE193E10E94FA2F0F900F900F90E0 +:10C080000F90DF91CF911F910F91FF900C94DD40A5 +:10C090000F900F900F900F90DF91CF911F910F9104 +:10C0A000FF9008952F923F924F925F926F927F92EE +:10C0B0008F929F92AF92BF92CF92DF92EF92FF92B8 +:10C0C0000F931F93CF93DF93CDB7DEB7E1970FB6F2 +:10C0D000F894DEBF0FBECDBF6D837E838F839887BC +:10C0E0002F87388B498B5A8B0D8BAD868B8A24E03A +:10C0F000E29E80011124C80186589D4E9F8B8E8B35 +:10C10000D801AF5FBC4EB98FA88F8D909D90AD9038 +:10C11000BC90FC012081318142815381C501B40171 +:10C12000E8D46A8F7B8F8C8F9D8FF4E0CF9E1001B7 +:10C130001124910126583D4E3F8F2E8FC1018F5FF4 +:10C140009C4E99A388A3DC01CD90DD90ED90FC90EE +:10C15000F9012081318142815381C701B601C9D4DF +:10C160006AA37BA38CA39DA32401350177FA709465 +:10C1700077F87094D701C601B05889839A83AB834E +:10C18000BC83F801E15EFC4E2A8D3B8D4C8D5D8DAC +:10C190006081718182819381ABD44B015C01F1019B +:10C1A000E15EFC4E2AA13BA14CA15DA160817181A1 +:10C1B000828193819DD46B017C01A5019401C3010F +:10C1C000B201C9D769877A878B879C87A7019601B7 +:10C1D00069817A818B819C81BED79B01AC01698585 +:10C1E0007A858B859C8585D469877A878B879C87A0 +:10C1F000A7019601C301B201AED76B017C01A50175 +:10C20000940169817A818B819C81A5D79B01AC01C6 +:10C21000C701B6016DD429853A854B855C85DCD490 +:10C220006B017C019B89992389F02DEB37E346E074 +:10C2300055EBC701B60154D787FD1AC02BED3FE07F +:10C2400049EC50E4C701B60153D410C02DEB37E3DD +:10C2500046E055E3C701B60125D518164CF02BED85 +:10C260003FE049EC50E4C701B60143D46B017C01C7 +:10C270008090DD129090DE12A090DF12B090E0125C +:10C280002D813E814F815885CA01B90132D4A50163 +:10C2900094012ED49B01AC01C501B4015CD7E8D751 +:10C2A0004B015C0120E030E040E05FE3C701B601F4 +:10C2B00052D72D813E814F8158854DD79F77A5015B +:10C2C0009401F7D4CCD562D57C8B6B8BDB01AB2B87 +:10C2D00009F459C14B01A12CB12CBD89BB2371F0CC +:10C2E000C501B4017FD59B01AC016F85788989892F +:10C2F0009A8931D76F87788B898B9A8BC501B40166 +:10C3000071D54B015C019B01AC01C701B601D1D4D1 +:10C310006D837E838F839887FD85E4E0FE9FC00157 +:10C3200011249C0126583D4E3E872D87FC01E15E7D +:10C33000FC4ED9012D913D914D915C9160817181AF +:10C3400082819381D5D3A5019401B3D46EA77FA731 +:10C3500088AB99AB2D813E814F815885CA01B901C7 +:10C36000FAD69B01AC0160E070E080E090E4C0D3BD +:10C370006B017C012BEA3AEA4AE25EE36D817E8141 +:10C380008F819885E8D64B015C0120E030E040E8E1 +:10C3900050E4C701B601ADD39B01AC01C501B401A6 +:10C3A000DAD669877A878B879C8720E030E040E087 +:10C3B0005FE3C701B601CFD66EA37FA388A799A775 +:10C3C00010E022242394312CEB89FC892E163F06A1 +:10C3D00009F4D9C01C3008F03AC02EA13FA148A5ED +:10C3E00059A569817A818B819C81B5D66B017C01CD +:10C3F00029853A854B855C85C301B201ACD6A7017E +:10C40000960177D37B01082FD92E2EA13FA148A5F5 +:10C4100059A5C301B2019FD64B015C0129853A851C +:10C420004B855C8569817A818B819C8194D69B0147 +:10C43000AC01C501B4015CD32B013C011F5FC701F6 +:10C44000A02FBD2D89839A83AB83BC835BC0B101D0 +:10C4500080E090E0C7D42D813E814F8158857BD606 +:10C460006B017C0123D469837A838B839C83C7010E +:10C47000B601F4D64B015C01E88DF98DC080D18006 +:10C48000E280F380F7FAF094F7F8F094A8A1B9A14C +:10C490008D919D910D90BC91A02D8AA79BA7ACA7D3 +:10C4A000BDA729813A814B815C81C701B60153D672 +:10C4B0002B013C01A50194016AA57BA58CA59DA536 +:10C4C0004AD69B01AC01C301B20113D32B013C013D +:10C4D000A5019401C701B6013ED66B017C012981FB +:10C4E0003A814B815C816AA57BA58CA59DA533D63D +:10C4F0009B01AC01C701B601FBD269837A838B83B0 +:10C500009C8310E0A30192016A8D7B8D8C8D9D8DA3 +:10C51000F0D2EE89FF8960837183828393832981BE +:10C520003A814B815C816AA17BA18CA19DA1E1D262 +:10C53000AE8DBF8D6D937D938D939C9313972EA598 +:10C540003FA548A959A9ED85FE8560817181828149 +:10C550009381CFD2AD85BE856D937D938D939C9352 +:10C5600013970D892F85388949895A896AE772E1BD +:10C5700081E00E943C4D80912C1381110EC0BFEFD1 +:10C580002B1A3B0A21CF0D892F85388949895A8971 +:10C590006FE173E181E00E943C4DE1960FB6F894A3 +:10C5A000DEBF0FBECDBFDF91CF911F910F91FF90E6 +:10C5B000EF90DF90CF90BF90AF909F908F907F9043 +:10C5C0006F905F904F903F902F900895EF920F9350 +:10C5D0001F93CF93DF93E80147FD02C034E001C011 +:10C5E00034E1E42F440FFF0BF7FF03C0F195E19511 +:10C5F000F109E32E022F2E2FAE0107D0CE01DF91DD +:10C60000CF911F910F91EF9008954F925F926F928B +:10C610007F929F92AF92BF92CF92DF92EF92FF9262 +:10C620000F931F93CF93DF93CDB7DEB729970FB644 +:10C63000F894DEBF0FBECDBF6A01122FB02E2BE3E0 +:10C64000201720F0FF24F394F00E02C0BCE3FB2E71 +:10C650000F2D27E0AE014F5F5F4F64D1AC018981A0 +:10C66000982F9970913031F0E1FC06C0E0FE06C0D1 +:10C6700090E205C09DE203C09BE201C090E0EE2D78 +:10C68000E07183FF3CC0911102C083E001C084E0EF +:10C69000811718F4212F281B01C020E0E1110BC0E5 +:10C6A000F601822F30E2882319F031938150FBCFBD +:10C6B000C20ED11C20E0992329F0D6019C93F601EB +:10C6C00031966F01C6010396E2FE0AC03EE4D60130 +:10C6D0003C9341E411964C93119712963C9306C0FB +:10C6E0003EE6F601308341E641833283FC01322F7E +:10C6F00040E2332309F442C041933150FACF82FF24 +:10C7000044C0911102C083E001C084E0811718F495 +:10C71000212F281B01C020E0E1110BC0F601822F60 +:10C7200030E2882319F031938150FBCFC20ED11C27 +:10C7300020E0992329F0D6019C93F60131966F01F0 +:10C74000C6010396E2FE0BC039E4D6013C933EE4F9 +:10C7500011963C93119736E412963C9307C039E644 +:10C76000F60130833EE6318336E63283FC01322F18 +:10C7700040E2332319F041933150FBCFFC01E20F2B +:10C78000F11D10828EEF9FEFB7C0F1E0911101C053 +:10C79000F0E06F2F70E01416150624F49A012F5F55 +:10C7A0003F4F02C021E030E0260F371FBB2029F0A9 +:10C7B0006B2D70E06F5F7F4F02C060E070E0260F6E +:10C7C000371F612F70E0261737071CF4121B212F2B +:10C7D00001C020E03E2D387159F4D601322F60E2BD +:10C7E000332319F06D933150FBCFC20ED11C20E0E2 +:10C7F000FF2331F0D6019C93B6016F5F7F4F6B0131 +:10C80000E1110BC0F601922F30E3992319F0319317 +:10C810009150FBCFC20ED11C20E09F2D940F3A8186 +:10C82000782F7071A72E84FF03C0313309F4915023 +:10C83000191624F4993018F098E001C091E0E42F23 +:10C84000852F57FF02C0E0E080E06E2F782FE0E0F8 +:10C85000F0E0AEE29A2E3A01691A71082A01461AEE +:10C86000570A0B2D10E01195019511096F3F8FEFBD +:10C87000780729F4D6019C92C60101966C014617EF +:10C88000570784F0661677066CF47F01E40CF51CFC +:10C89000A1E0B0E0AC0FBD1FEA0EFB1ED701119660 +:10C8A000BC9002C090E3B92E615071093196C60167 +:10C8B00001967C016017710724F0D601BC926C01CF +:10C8C000D5CF6417750741F4363320F4353321F49E +:10C8D000A11002C081E3B82EF601B082F701822FC9 +:10C8E00090E2882319F091938150FBCFF701E20F7A +:10C8F000F11D108280E090E029960FB6F894DEBF1B +:10C900000FBECDBFDF91CF911F910F91FF90EF90A0 +:10C91000DF90CF90BF90AF909F907F906F905F908F +:10C920004F900895283008F027E03327DA01990F57 +:10C93000311D87FD916000966105710539F4326003 +:10C940002E5F3D9330E32A95E1F708959F3F30F045 +:10C9500080387105610509F03C5F3C5F3D93913083 +:10C9600008F08068911DDF93CF931F930F93FF9280 +:10C97000EF92192F987F9695E92F96959695E90F46 +:10C98000FF27EE5BFD4F99273327EE24FF24A701F5 +:10C99000E70105900894079428F4360FE71EF81E67 +:10C9A000491F511D660F771F881F991F0694A1F715 +:10C9B0000590079428F4E70EF81E491F561FC11D65 +:10C9C000770F881F991F661F0694A1F7059007949B +:10C9D00028F4F80E491F561FC71FD11D880F991F35 +:10C9E000661F771F0694A1F70590079420F4490F5E +:10C9F000561FC71FD81F990F661F771F881F0694E1 +:10CA0000A9F784911095177041F0D695C795579561 +:10CA10004795F794E7941A95C1F7E8EEF1E068942A +:10CA20001590159135916591959105907FE27395DB +:10CA3000E118F10A430B560BC90BD009C0F7E10C02 +:10CA4000F11E431F561FC91FD01D7EF4703311F411 +:10CA50008A95E6CFE894015030F0080F0AF40027D9 +:10CA6000021708F4202F2395022F7A3328F079E358 +:10CA70007D932A95E9F710C07D932A9589F606944F +:10CA800097956795379517951794E118F10A430B19 +:10CA9000560BC90BD00998F023957E9173957A3384 +:10CAA00008F070E37C932013B8F77E9170617D935A +:10CAB00030F0839571E37D9370E32A95E1F71124BB +:10CAC000EF90FF900F911F91CF91DF91992787FDF4 +:10CAD000909508959F939F77D5D10F9000203AF4B9 +:10CAE0009058A2EA2AED3FE049E450E413D096C200 +:10CAF0005058BB27AA270ED091C25AD230F05FD22D +:10CB000020F031F49F3F11F41EF42AC20EF4E09598 +:10CB1000E7FBF7C1E92FA4D280F3BA1762077307C6 +:10CB20008407950718F071F49EF5D3C20EF4E095D2 +:10CB30000B2EBA2FA02D0B01B90190010C01CA01D7 +:10CB4000A0011124FF27591B99F0593F50F4503E82 +:10CB500068F11A16F040A22F232F342F4427585F74 +:10CB6000F3CF469537952795A795F0405395C9F78C +:10CB70007EF41F16BA0B620B730B840BBAF0915044 +:10CB8000A1F0FF0FBB1F661F771F881FC2F70EC0E3 +:10CB9000BA0F621F731F841F48F4879577956795B6 +:10CBA000B795F7959E3F08F0B3CF9395880F08F09F +:10CBB0009927EE0F979587950895FAD158F080E858 +:10CBC00091E009F49EEFFBD128F040E851E059F4E0 +:10CBD0005EEF09C0C5C17DC2E92FE07841D268F39C +:10CBE000092E052AC1F3261737074807590738F0D9 +:10CBF0000E2E07F8E02569F0E025E0640AC0EF6337 +:10CC000007F8009407FADB01B9019D01DC01CA01B4 +:10CC1000AD01EF935DD002D20AD05F91552331F080 +:10CC20002BED3FE049E450FD49EC63CF0895DF93DD +:10CC3000DD27B92FBF7740E85FE3161617064807D0 +:10CC40005B0710F4D92F50D29F938F937F936F93EC +:10CC50004DD3E4E7F1E087D1E1D12F913F914F919E +:10CC60005F9185D2DD2349F09058A2EA2AED3FE09A +:10CC700049EC5FE3D0785D274DDFDF91CFC112D261 +:10CC800080F09F3740F491110EF424C260E070E010 +:10CC900080E89FE3089526F01B16611D711D811D1C +:10CCA00036C150C10AD108F481E0089590D1E395CE +:10CCB000C6C10CD0B3C183D140F07AD130F021F499 +:10CCC0005F3F19F01EC1511105C24AC1C9D198F385 +:10CCD0009923C9F35523B1F3951B550BBB27AA27FD +:10CCE00062177307840738F09F5F5F4F220F331F6F +:10CCF000441FAA1FA9F333D00E2E3AF0E0E830D03B +:10CD000091505040E695001CCAF729D0FE2F27D03D +:10CD1000660F771F881FBB1F261737074807AB070B +:10CD2000B0E809F0BB0B802DBF01FF2793585F4F80 +:10CD30002AF09E3F510568F0E4C0CCC15F3FECF3A0 +:10CD4000983EDCF3869577956795B795F7959F5F45 +:10CD5000C9F7880F911D9695879597F90895E1E099 +:10CD6000660F771F881FBB1F621773078407BA07F8 +:10CD700020F0621B730B840BBA0BEE1F88F7E09553 +:10CD8000089504D06894B111A5C1089571D188F0B7 +:10CD90009F5790F0B92F9927B751A0F0D1F0660FA7 +:10CDA000771F881F991F1AF0BA95C9F712C0B130C2 +:10CDB00081F08FD1B1E008958CC1672F782F88273B +:10CDC000B85F39F0B93FCCF3869577956795B39501 +:10CDD000D9F73EF490958095709561957F4F8F4F70 +:10CDE0009F4F0895E89409C097FB3EF49095809575 +:10CDF000709561957F4F8F4F9F4F9923A9F0F92F21 +:10CE000096E9BB279395F695879577956795B7959E +:10CE1000F111F8CFFAF4BB0F11F460FF1BC06F5F84 +:10CE20007F4F8F4F9F4F16C0882311F096E911C096 +:10CE3000772321F09EE8872F762F05C0662371F0B7 +:10CE400096E8862F70E060E02AF09A95660F771FCB +:10CE5000881FDAF7880F9695879597F9089522D15C +:10CE600080F09F3740F491110EF034C160E070E023 +:10CE700080E89FEB089526F41B16611D711D811D2E +:10CE800046C060C0DF93CF931F930F938B01EC01DB +:10CE9000E1EAF1E068D0C2D09801AE018B01EC016B +:10CEA00060E070E080E89FE323DEE2D19801AE010C +:10CEB0000F911F91CF91DF915AC1990F0008550F23 +:10CEC000AA0BE0E8FEEF16161706E807F907C0F010 +:10CED00012161306E407F50798F0621B730B840B18 +:10CEE000950B39F40A2661F0232B242B252B21F4F2 +:10CEF00008950A2609F4A140A6958FEF811D811D92 +:10CF0000089597F99F6780E870E060E008958823AE +:10CF100071F4772321F09850872B762F07C0662372 +:10CF200011F499270DC09051862B70E060E02AF033 +:10CF30009A95660F771F881FDAF7880F9695879561 +:10CF400097F908959F3F31F0915020F48795779598 +:10CF50006795B795880F911D9695879597F90895D0 +:10CF60009FEF80EC0895DF93CF931F930F93FF9271 +:10CF7000EF92DF927B018C01689405C0DA2EEF01FD +:10CF8000F6D0FE01E894A5912591359145915591F2 +:10CF9000AEF3EF01BFDDFE019701A801DA9479F746 +:10CFA000DF90EF90FF900F911F91CF91DF91089547 +:10CFB00000240A9416161706180609060895002478 +:10CFC0000A9412161306140605060895C9CF50D008 +:10CFD000E8F3E894E0E0BB279F57F0F02AED3FE04C +:10CFE00049EC06C0EE0FBB0F661F771F881F28F0A5 +:10CFF000B23A62077307840728F0B25A620B730BC8 +:10D00000840BE3959A9572F7803830F49A95BB0FAC +:10D01000661F771F881FD2F7904896CF092E03947A +:10D02000000C11F4882352F0BB0F40F4BF2B11F415 +:10D0300060FF04C06F5F7F4F8F4F9F4F0895EF9346 +:10D04000E0FF06C0A2EA2AED3FE049EC5FEB62DDBB +:10D05000E5DF0F90039401FC9058E9ECF1E05BC12F +:10D0600057FD9058440F551F59F05F3F71F0479599 +:10D07000880F97FB991F61F09F3F79F0879508957E +:10D08000121613061406551FF2CF4695F1DF08C09D +:10D09000161617061806991FF1CF869571056105BA +:10D0A00008940895E5DFA0F0BEE7B91788F4BB2720 +:10D0B0009F3860F41616B11D672F782F8827985F68 +:10D0C000F7CF869577956795B11D93959639C8F3F7 +:10D0D0000895E894BB2766277727CB0197F9089531 +:10D0E000ECDE08F48FEF08959B01AC0160E070E086 +:10D0F00080E89FE3DECDBCDF58F19E5758F1985190 +:10D10000A0F0E9F0983020F5092E9927660F771FD7 +:10D11000881F991F0A94D1F712C0062E672F782F07 +:10D120008827985F11F4000C07C0993FB4F38695E7 +:10D13000779567959395D9F7611D711D811D3EF413 +:10D1400090958095709561957F4F8F4F9F4F089573 +:10D150006894C0CFBECF0BD061CF2ADF28F02FDF7D +:10D1600018F0952309F0CDCEFBCE1124B3CF78DF94 +:10D17000A0F3959FD1F3950F50E0551F629FF001EA +:10D18000729FBB27F00DB11D639FAA27F00DB11D43 +:10D19000AA1F649F6627B00DA11D661F829F2227CC +:10D1A000B00DA11D621F739FB00DA11D621F839F53 +:10D1B000A00D611D221F749F3327A00D611D231F29 +:10D1C000849F600D211D822F762F6A2F11249F5777 +:10D1D00050408AF0E1F088234AF0EE0FFF1FBB1F9A +:10D1E000661F771F881F91505040A9F79E3F510539 +:10D1F00070F087CE6FCF5F3FECF3983EDCF38695FF +:10D2000077956795B795F795E7959F5FC1F7FE2BE3 +:10D21000880F911D9695879597F9089529DFE0F07D +:10D220009E37D8F09639B8F49E3848F4672F782F97 +:10D230008827985FF9CF8695779567959395953967 +:10D24000D0F3B62FB1706B0F711D811D20F487953F +:10D250007795679593955BCE75CE3CCF9F93B7DE60 +:10D260000F9007FCEE5FEBCE11F40EF479CE6ACE90 +:10D27000FFDED0F39923D9F3CEF39F57550B87FFE9 +:10D2800043D00024A0E640EA900180585695979537 +:10D2900028F4805C660F771F881F20F02617370759 +:10D2A000480730F4621B730B840B202931294A2B69 +:10D2B000A69517940794202531254A2758F7660F1D +:10D2C000771F881F20F026173707480730F4620BB6 +:10D2D000730B840B200D311D411DA09581F7B90101 +:10D2E000842F9158880F9695879508959B01AC01DE +:10D2F00032CFD8DE20F09F3708F4ECCE08CE22CE15 +:10D30000DCDD880B990B089591505040660F771F14 +:10D31000881FD2F708959F938F937F936F93FF9306 +:10D32000EF939B01AC0117DFEF91FF911CDE2F9172 +:10D330003F914F915F910FCF991B79E004C0991FE6 +:10D34000961708F0961B881F7A95C9F7809508955F +:10D35000AA1BBB1B51E107C0AA1FBB1FA617B7071B +:10D3600010F0A61BB70B881F991F5A95A9F7809537 +:10D370009095BC01CD010895A1E21A2EAA1BBB1BFA +:10D38000FD010DC0AA1FBB1FEE1FFF1FA217B30791 +:10D39000E407F50720F0A21BB30BE40BF50B661FA7 +:10D3A000771F881F991F1A9469F76095709580956B +:10D3B00090959B01AC01BD01CF010895EE0FFF1FB9 +:10D3C000881F8BBF0790F691E02D1994A29FB001A2 +:10D3D000B39FC001A39F700D811D1124911DB29FA9 +:10D3E000700D811D1124911D0895F0DFA59F900DF2 +:10D3F000B49F900DA49F800D911D11240895FB01F1 +:10D40000DC010D900020E9F7119701900D920020AA +:10D41000E1F70895FB01DC0101900D920020E1F796 +:10D4200008950F931F93CF93DF93CDB7DEB72E9759 +:10D430000FB6F894DEBF0FBECDBF0E891F8986E000 +:10D440008C831A8309838FEF9FE79E838D83AE01C0 +:10D45000465E5F4F688D798DCE0101965BD02F813E +:10D460003885F801E20FF31F10822E960FB6F8945C +:10D47000DEBF0FBECDBFDF91CF911F910F910895F9 +:10D48000CF93DF93CDB7DEB72E970FB6F894DEBFFC +:10D490000FBECDBF85E08C838C899D899A8389835B +:10D4A000AE01485E5F4F6E897F89CE010196C7D37A +:10D4B0002E960FB6F894DEBF0FBECDBFDF91CF9191 +:10D4C00008950F931F93CF93DF93CDB7DEB72E97B9 +:10D4D0000FB6F894DEBF0FBECDBF8C0186E08C8303 +:10D4E0001A8309838FEF9FE79E838D83CE01019678 +:10D4F00011D02F813885F801E20FF31F10822E968C +:10D500000FB6F894DEBF0FBECDBFDF91CF911F9154 +:10D510000F9108952F923F924F925F926F927F9258 +:10D520008F929F92AF92BF92CF92DF92EF92FF9233 +:10D530000F931F93CF93DF93CDB7DEB72C970FB622 +:10D54000F894DEBF0FBECDBF7C016B018A01FC01E8 +:10D5500017821682838181FFB0C1CE0101964C01F2 +:10D56000F7019381F60193FD859193FF81916F01FE +:10D57000882309F49EC1853239F493FD859193FF88 +:10D5800081916F01853221F4B70190E0DFD4E8CFBB +:10D59000512C312C20E02032A0F48B3269F030F491 +:10D5A000803259F0833269F420612CC08D3239F019 +:10D5B000803339F4216026C02260246023C02860B3 +:10D5C00021C027FD27C030ED380F3A3078F426FF10 +:10D5D00006C0FAE05F9E300D1124532E13C08AE07E +:10D5E000389E300D1124332E20620CC08E3221F46F +:10D5F00026FD5FC1206406C08C3611F4206802C08D +:10D60000883641F4F60193FD859193FF81916F0176 +:10D610008111C1CF982F9F7D9554933028F40C5FD2 +:10D620001F4FFFE3F9830DC0833631F0833771F06C +:10D63000833509F057C021C0F801808189830E5FCE +:10D640001F4F44244394512C540114C03801F2E07C +:10D650006F0E711CF801A080B18026FF03C0652DFC +:10D6600070E002C06FEF7FEFC5012C8726D42C013C +:10D6700083012C852F77222E16C03801F2E06F0E21 +:10D68000711CF801A080B18026FF03C0652D70E0F9 +:10D6900002C06FEF7FEFC5012C8704D42C012C85CD +:10D6A0002068222E830123FC19C0832D90E04816A8 +:10D6B0005906A0F4B70180E290E048D43A94F5CF3F +:10D6C000F50127FC859127FE81915F01B70190E06C +:10D6D0003DD431103A94F1E04F1A510841145104ED +:10D6E00079F7DEC0843611F0893631F5F80127FF6D +:10D6F00007C060817181828193810C5F1F4F08C0D8 +:10D7000060817181072E000C880B990B0E5F1F4FF3 +:10D710002F76722E97FF09C0909580957095619530 +:10D720007F4F8F4F9F4F2068722E2AE030E0A40178 +:10D730005ED4A82EA81843C0853729F42F7EB22EB8 +:10D740002AE030E025C0F22FF97FBF2E8F36C1F0DE +:10D7500018F4883579F0ADC0803719F0883721F09A +:10D76000A8C02F2F2061B22EB4FE0DC08B2D846077 +:10D77000B82E09C024FF0AC09F2F9660B92E06C09C +:10D7800028E030E005C020E130E002C020E132E0D6 +:10D79000F801B7FE07C060817181828193810C5FBF +:10D7A0001F4F06C06081718180E090E00E5F1F4FC7 +:10D7B000A4011DD4A82EA818FB2DFF777F2E76FE7E +:10D7C0000BC0372D3E7FA51450F474FE0AC072FCC6 +:10D7D00008C0372D3E7E05C0BA2C372D03C0BA2CA9 +:10D7E00001C0B52C34FF0DC0FE01EA0DF11D808192 +:10D7F000803311F4397E09C032FF06C0B394B3946C +:10D8000004C0832F867809F0B39433FD12C030FF33 +:10D8100006C05A2CB31418F4530C5B18B32CB31471 +:10D8200060F4B70180E290E03C8790D3B3943C85EC +:10D83000F6CFB31410F43B1801C0312C34FF11C0E3 +:10D84000B70180E390E03C8781D33C8532FF16C06E +:10D8500031FD03C088E790E002C088E590E0B701A1 +:10D860000CC0832F867851F031FF02C08BE201C0DB +:10D8700080E237FD8DE2B70190E068D3A51430F463 +:10D88000B70180E390E062D35A94F8CFAA94F401F0 +:10D89000EA0DF11D8081B70190E058D3A110F6CFB9 +:10D8A000332009F45DCEB70180E290E04FD33A9483 +:10D8B000F7CFF7018681978102C08FEF9FEF2C96FB +:10D8C0000FB6F894DEBF0FBECDBFDF91CF911F9191 +:10D8D0000F91FF90EF90DF90CF90BF90AF909F900F +:10D8E0008F907F906F905F904F903F902F90089512 +:10D8F00020FD09C0FC0123FD05C022FF02C0738387 +:10D90000628351834083089544FD10C046FD10C0DA +:10D91000DB01FC01AA0FBB1FEE1FFF1F1094D1F704 +:10D920006A0F7B1F8E1F9F1F31E003C033E001C0D1 +:10D9300034E0660F771F881F991F3150D1F7620FAF +:10D94000711D811D911D08950F931F93CF93DF9338 +:10D950008C01C801BDD2EC0197FD06C090D2892B85 +:10D96000C1F7B801CE012AD3CE01DF91CF911F912B +:10D970000F9108958F929F92AF92BF92CF92DF92B4 +:10D98000EF92FF920F931F93CF93DF931F92CDB728 +:10D99000DEB78C01C62E7A0129839AD2AC015527B5 +:10D9A00029814B32510521F04D32510561F4206837 +:10D9B000CA94C11002C080E06FC0C801298388D218 +:10D9C000298197FDF8CF322F3D7FD32E322F307330 +:10D9D00039F5803329F5BB24BA94BC0C09F449C04D +:10D9E000C801298375D2298197FD43C0382F3F7D17 +:10D9F000383561F48D2D8264D82ECA94CA94CC2017 +:10DA0000C1F1C80165D297FF0BC033C026FF04C027 +:10DA10002D2D2260D22E03C03D2D3261D32ECB2C72 +:10DA2000812C912C540120ED280F283078F0D4FE61 +:10DA300003C0B801C3D21AC02A3040F0D6FEF9CFD5 +:10DA40002F7D3FEE320F3630A0F727504D2DC50108 +:10DA5000B4015ADF4B015C018D2D8260D82ECA942F +:10DA6000CC2051F0C80134D297FFDDCFD1FC04C0E7 +:10DA7000A2CF812C912C5401D7FE08C0B094A09461 +:10DA800090948094811C911CA11CB11C2D2DB5017A +:10DA9000A401C7012DDF81E00F90DF91CF911F918D +:10DAA0000F91FF90EF90DF90CF90BF90AF909F903D +:10DAB0008F9008956F927F928F929F92AF92BF92B4 +:10DAC000CF92DF92EF92FF920F931F93CF93DF934A +:10DAD000CDB7DEB7A1970FB6F894DEBF0FBECDBFAE +:10DAE0005C017A01CE0101966C0180E2F60111928F +:10DAF0008A95E9F7F501838040E050E0912C712C84 +:10DB000070E0A1E0B0E0F90183FC859183FE819192 +:10DB10008F01982F9F01811103C080E090E07AC0AF +:10DB20008E3519F44115510549F1E72FF0E0E4175E +:10DB3000F5073CF48D3559F18D3219F4772001F158 +:10DB400003C0711001C0982E892F86958695869501 +:10DB50008601080F111D892F87703D0101C0660CD9 +:10DB60008A95EAF7F801808186298083991559F012 +:10DB7000991510F49F5FE8CF9150E6CF71E004C093 +:10DB80007724739401C0712C4F5F5F4FBCCF772017 +:10DB900019F08E8180628E83711103C09924939451 +:10DBA00016C0F6019E012F5D3F4F808180958193C5 +:10DBB000E217F307D1F7F2CFE114F10429F0F701EE +:10DBC0008083C70101967C016150912CE9F0C50169 +:10DBD00069A37ED169A197FD15C0282F26952695AA +:10DBE0002695F601E20FF11D208130E0AC0147706F +:10DBF000552702C0359527954A95E2F720FDDCCFE1 +:10DC0000B501DCD1911089CFE114F10411F0F701D5 +:10DC10001082C801A1960FB6F894DEBF0FBECDBF2B +:10DC2000DF91CF911F910F91FF90EF90DF90CF90F8 +:10DC3000BF90AF909F908F907F906F9008954F927C +:10DC40005F927F928F929F92AF92BF92CF92DF921C +:10DC5000EF92FF920F931F93CF93DF931F92CDB755 +:10DC6000DEB76C012B015A01FC0117821682712C60 +:10DC7000F601F380F201F3FC8591F3FE8191382FD8 +:10DC80002F01882309F4E5C090E03983F8D0398169 +:10DC9000892B19F0C60158DEEBCF353241F4F20181 +:10DCA000F3FC3591F3FE31912F01353259F4C60161 +:10DCB00039830ED1398197FDCAC03817C9F2B60130 +:10DCC0007DD1C7C03A3239F4F3FC3591F3FE31917E +:10DCD0002F0151E001C050E0420110E020ED230F80 +:10DCE0002A3088F45260612F70E080E090E040E2DA +:10DCF00059830ADE162FF401F3FC3591F3FE3191BE +:10DD00004F015981EBCF052F232F240151FF03C071 +:10DD1000111102C09EC01FEF383619F03C3659F081 +:10DD200011C0F401F3FC2591F3FE21912F01283657 +:10DD300049F4052F08600460F201F3FC2591F3FE1D +:10DD400021912F01222309F484C0622F70E082EE1A +:10DD500092E029839CD02981892B09F47AC000FDA7 +:10DD600007C0F501E080F180C50102965C0102C0A8 +:10DD7000E12CF12C2E3649F4F6014681578160E002 +:10DD800070E0202FC701B4DD73CF233689F401FF83 +:10DD900011E0C6019DD097FD5AC0E114F10429F0AD +:10DDA000F7018083C70101967C01115091F74BC0A8 +:10DDB0002B3551F49201A701612FC6017BDE2C01A6 +:10DDC000892B09F040C03AC0C6012983BDDD2981F5 +:10DDD00097FD3DC02F3641F128F4243619F129363C +:10DDE00031F124C0233769F02537E1F01FC0E11479 +:10DDF000F10429F0F7018082C70101967C011150DE +:10DE000059F0C60165D04C0197FD06C038D0892B6A +:10DE100071F3B601C401D2D0E114F104A1F0F7010D +:10DE2000108211C0006203C0006101C00064202F95 +:10DE3000A701612FC6019EDD811105C0F601838116 +:10DE4000807329F406C000FD13CF739411CF77209F +:10DE500019F0872D90E002C08FEF9FEF0F90DF91B8 +:10DE6000CF911F910F91FF90EF90DF90CF90BF90D7 +:10DE7000AF909F908F907F905F904F9008959111F9 +:10DE800014C1803219F089508550D0F70895FC01F3 +:10DE90000590061621F00020D9F7C00108953197AA +:10DEA000CF010895FC010590615070400110D8F732 +:10DEB000809590958E0F9F1F0895FC0161507040D2 +:10DEC00001900110D8F7809590958E0F9F1F0895AF +:10DED000CF93DF93EC012B8120FF33C026FF0AC0D4 +:10DEE0002F7B2B838E819F8101969F838E838A81D6 +:10DEF00090E029C022FF0FC0E881F9818081082EBF +:10DF0000000C990B009719F420622B831AC03196EC +:10DF1000F983E8830EC0EA85FB85199597FF09C050 +:10DF20002B81019611F080E201C080E1822B8B836E +:10DF300008C02E813F812F5F3F4F3F832E8399275B +:10DF400002C08FEF9FEFDF91CF9108950F931F9342 +:10DF5000CF93DF93FB01238121FD03C08FEF9FEF60 +:10DF600028C022FF16C0468157812481358142177F +:10DF7000530744F4A081B1819D012F5F3F4F31834E +:10DF800020838C93268137812F5F3F4F37832683F1 +:10DF900010C0EB01092F182F0084F185E02D199591 +:10DFA000892BE1F68E819F8101969F838E83812F3D +:10DFB000902FDF91CF911F910F910895FB01238145 +:10DFC00020FF12C026FD10C08F3F3FEF930761F086 +:10DFD00082832F7D2064238326813781215031095C +:10DFE00037832683992708958FEF9FEF0895FA01CD +:10DFF000AA27283051F1203181F1E8946F936E7F88 +:10E000006E5F7F4F8F4F9F4FAF4FB1E03ED0B4E078 +:10E010003CD0670F781F891F9A1FA11D680F791FB9 +:10E020008A1F911DA11D6A0F711D811D911DA11DCA +:10E0300020D009F468943F912AE0269F11243019DA +:10E04000305D3193DEF6CF010895462F4770405D75 +:10E050004193B3E00FD0C9F7F6CF462F4F70405D24 +:10E060004A3318F0495D31FD4052419302D0A9F77F +:10E07000EACFB4E0A6959795879577956795BA9579 +:10E08000C9F700976105710508959B01AC010A2E3F +:10E0900006945795479537952795BA95C9F7620F16 +:10E0A000731F841F951FA01D089599278827089521 +:04E0B000F894FFCF12 +:10E0B4009A99D93F08020000000000000041255B46 +:10E0C400302D392D2B2E5D00737363616E66202510 +:10E0D400640D0A00562573002056310A0046255B5C +:10E0E400302D392E5D5425640058255B302D392D93 +:10E0F4002B2E5D59255B302D392D2B2E5D5A255B3A +:10E10400302D392D2B2E5D5025640053255B302D89 +:10E11400392D2B2E5D0056255B302D392D2B2E5D90 +:10E12400006120300D0A006220300D0A00632030A7 +:10E134000D0A0020422573204C2573205225730AB2 +:10E1440000537769667450726F002025730A005675 +:10E15400342E322E300056342E302E3200464646AF +:10E16400464646464600202573002058257320590C +:10E174002573205A25730A002053257320522573D2 +:10E18400204825730A0020422564204C256420522F +:10E1940025640A00616E676C65206F66667365743A +:10E1A4003A25730D0A00736F667420766572203AFF +:10E1B4002025730D0A0061706920766572203A206B +:10E1C40025730D0A00776F726B206D6F6465203ABA +:10E1D4002025640D0A0040310A0065666665637493 +:10E1E40020636865636B2074696D656F7574210DB8 +:10E1F4000A0023255B302D395D0024257300453248 +:10E2040033206275666665722066756C6C0D0A0053 +:10E2140040332058257320592573205A25732052E2 +:10E2240025730A004036204E30205625640A0040EB +:10E2340035205625640A0040392056300A00200053 +:10E244006F6B0045323000453231004532320056A2 +:10E25400332E332E310056332E332E300053255BAC +:10E26400302D392D2B2E5D52255B302D392D2B2E43 +:10E274005D48255B302D392D2B2E5D46255B302DD9 +:10E28400392D2B2E5D004E256456255B302D392DFE +:10E294002B2E5D46255B302D392D2B2E5D00582508 +:10E2A4005B302D392D2B2E5D59255B302D392D2BCF +:10E2B4002E5D5A255B302D392D2B2E5D46255B3086 +:10E2C4002D392D2B2E5D0072656665723A422564E8 +:10E2D400204C2564205225640D0A004532330A007F +:0AE2E4004532300A004532310A00CD +:00000001FF From cb8b103ff799c6f7806df21596a0bad406cd4958 Mon Sep 17 00:00:00 2001 From: TopgunZh <39727447+TopgunZh@users.noreply.github.com> Date: Fri, 7 Sep 2018 18:12:02 +0800 Subject: [PATCH 44/74] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 97d4672..0a538d5 100755 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ * Fix cmd M17 bug * Fix old uarn pro cann't read refer value bug * Fix P2242 P2243 bug + ## Update Summary for v4.1.0 * Transplant Grbl framework. * Optimize stepper motor performance,improve motor speed,fix motor shake. @@ -20,11 +21,10 @@ ## Caution #### The current firmware is not perfect and will be updated periodically -#### Not support learning mode #### Not support app control #### For uArmStudio control -- input and Grove module in BLOCKLY are not supported. +- input and Grove module in BLOCKLY are not supported. - Draw/Laser is not supported. - 3D Printing is not supported. From d4b48383e9791b3089ee06703e0dfb087c9c46ab Mon Sep 17 00:00:00 2001 From: TopgunZh <39727447+TopgunZh@users.noreply.github.com> Date: Fri, 7 Sep 2018 18:29:29 +0800 Subject: [PATCH 45/74] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0a538d5..13e0944 100755 --- a/README.md +++ b/README.md @@ -25,7 +25,6 @@ #### For uArmStudio control - input and Grove module in BLOCKLY are not supported. -- Draw/Laser is not supported. - 3D Printing is not supported. ## Communication protocol From 0f449d4e0f905a8811bad230c4ea42d27c2fcfaa Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Wed, 12 Sep 2018 10:52:42 +0800 Subject: [PATCH 46/74] create --- imagaes/7.png | Bin 0 -> 8976 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 imagaes/7.png diff --git a/imagaes/7.png b/imagaes/7.png new file mode 100755 index 0000000000000000000000000000000000000000..b61b211fec6c9815bc97508e3f1742f2cad774df GIT binary patch literal 8976 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 literal 0 HcmV?d00001 From 8518d2f5614a9a293458e9a6c9be9abfdf774bf6 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Wed, 12 Sep 2018 10:53:02 +0800 Subject: [PATCH 47/74] create --- imagaes/8.png | Bin 0 -> 11728 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 imagaes/8.png diff --git a/imagaes/8.png b/imagaes/8.png new file mode 100755 index 0000000000000000000000000000000000000000..f04328f5a89e3ab971d9c2a8d5aedbeb5e6b8824 GIT binary patch literal 11728 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 BO`QM$ literal 0 HcmV?d00001 From 36dd7e0f98e45119fd89738783a58b1b045e767e Mon Sep 17 00:00:00 2001 From: TopgunZh <39727447+TopgunZh@users.noreply.github.com> Date: Mon, 17 Sep 2018 18:11:16 +0800 Subject: [PATCH 48/74] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 13e0944..0fc01ec 100755 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ * Fix P2206 cmd to get effect angle bug * Fix G1 move bug * Fix cmd M17 bug -* Fix old uarn pro cann't read refer value bug +* Fix old uarm pro cann't read refer value bug * Fix P2242 P2243 bug ## Update Summary for v4.1.0 From 9c896c19e35c709bdfb9399907057f93d48526a5 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 30 Nov 2018 17:05:59 +0800 Subject: [PATCH 49/74] Update 2018-11-30 --- README.md | 36 +- ... => uArm Swift Pro Protocol V4.0.3_cn.pdf} | Bin 350253 -> 349671 bytes ... => uArm Swift Pro Protocol V4.0.3_en.pdf} | Bin 235028 -> 234552 bytes hex/uArmPro_V4.2.0_release_20180827.hex | 3633 ----------------- src/defaults/defaults_generic.h | 12 +- src/motion_control.c | 3 +- src/serial.c | 201 +- src/settings.c | 6 +- src/stepper.c | 20 +- src/uarm_angle.c | 18 +- src/uarm_common.h | 23 +- src/uarm_coord_convert.c | 116 +- src/uarm_peripheral.c | 30 +- src/uarm_peripheral.h | 8 +- src/uarm_protocol.c | 109 +- src/uarm_swift.c | 2 + src/uarm_swift.h | 15 +- 17 files changed, 478 insertions(+), 3754 deletions(-) rename doc/{uArm Swift Pro Protocol V4.0.2_cn.pdf => uArm Swift Pro Protocol V4.0.3_cn.pdf} (62%) rename doc/{uArm Swift Pro Protocol V4.0.2_en.pdf => uArm Swift Pro Protocol V4.0.3_en.pdf} (56%) delete mode 100755 hex/uArmPro_V4.2.0_release_20180827.hex diff --git a/README.md b/README.md index 0fc01ec..6643a51 100755 --- a/README.md +++ b/README.md @@ -1,23 +1,12 @@ -# Swift Pro Firmware V4.2.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.3.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- -## Update Summary for v4.2.0 - -* Add closed-loop stepper control (step losing detection and auto-adjusting) -* Add M2123 cmd to control closed-loop stepper system -* Add pro work mode,plus work mode and touch pen work mode -* Add M2412 cmd to set offset of the effect-stepper -* Fix P2206 cmd to get effect angle bug -* Fix G1 move bug -* Fix cmd M17 bug -* Fix old uarm pro cann't read refer value bug -* Fix P2242 P2243 bug - -## Update Summary for v4.1.0 -* Transplant Grbl framework. -* Optimize stepper motor performance,improve motor speed,fix motor shake. -* Fix servo shake in end-effector. -* Optimize code efficiency and improve readability. +## Update Summary for v4.3.0 + +* Add serial port automatic identification system +* Add extern I/O Control CMD M2240,M2241,P2240,P2241 +* Fix Z aixs problem + ## Caution #### The current firmware is not perfect and will be updated periodically @@ -33,12 +22,10 @@ First, connect to uArm using the serial terminal of your choice.Set the baud rate to 115200 as 8-N-1 (8-bits, no parity, and 1-stop bit.) .Cmd list reference to [protocol documents](doc/). * move cmd support **G0,G1,G2004,G2201,G2202,G2204,G2205**. -* setting cmd support **M17,M204,M2019,M2120,M2121,M2122,M2201,M2202,M2203,M2210,M2215,M2220,M2221,M2222,M2231,M2232,M2233,M2400,M2401,M2410,M2411**. -not support currently **M2211,M2212,M2213,M2234,M2240,M2241,M2245**. +* setting cmd support **M17,M204,M2019,M2120,M2121,M2122,M2201,M2202,M2203,M2210,M2215,M2220,M2221,M2222,M2231,M2232,M2233,M2400,M2401,M2410,M2411,M2240,M2241**. +not support currently **M2211,M2212,M2213,M2234,M2245**. * query cmd support -**P2200,P2201,P2202,P2203,P2204,P2205,P2206,P2220,P2221,P2231,P2231,P2232,P2233,P2234,P2242,P2400**. -not support currently **P2240,P2241**. - +**P2200,P2201,P2202,P2203,P2204,P2205,P2206,P2220,P2221,P2231,P2231,P2232,P2233,P2234,P2240,P2241,P2242,P2400**. ---------- ## How to upgrade uArm @@ -65,7 +52,8 @@ The upload process generally takes about 10 seconds to finish. Once completed, a you have three ways to control your uArm: * using the serial terminal [example](example) -* using the Python library +* using the [Python library 2.0](https://github.com/uArm-Developer/uArm-Python-SDK/tree/2.0 "Python library 2.0") +* using the [https://github.com/uArm-Developer/uArm-SDK](https://github.com/uArm-Developer/uArm-SDK "C++ library") * using the uArmStudio diff --git a/doc/uArm Swift Pro Protocol V4.0.2_cn.pdf b/doc/uArm Swift Pro Protocol V4.0.3_cn.pdf similarity index 62% rename from doc/uArm Swift Pro Protocol V4.0.2_cn.pdf rename to doc/uArm Swift Pro Protocol V4.0.3_cn.pdf index d3f54f601c9996ff6b2e5fd8b376f3cf5023be5e..ecf76985161693252a8f8be4191e1a7e4bdf512e 100755 GIT binary patch delta 131236 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

      xL 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 QfltRp1#M>LyK2S%1K1{3=>Px# diff --git a/doc/uArm Swift Pro Protocol V4.0.2_en.pdf b/doc/uArm Swift Pro Protocol V4.0.3_en.pdf similarity index 56% rename from doc/uArm Swift Pro Protocol V4.0.2_en.pdf rename to doc/uArm Swift Pro Protocol V4.0.3_en.pdf index 2bad59fac9ca41464ea009b3a3db4a90eb7f73f4..2ee0eb291417c80fe6d78abe3e866e5340da3d63 100755 GIT binary patch delta 102901 zcmY&t5#x9v%^m2~RpW*D!Pq(C0UR)P&bo|2P=J$_O+erWoU5CQxv~8ZIFGC*U0ufw z9#mhXxbHkkYh~JfeV!7gI4Is2qj=&`gOS6DOgGXU#~;I>eCY zXaMdTfNy&3>|Fh=oLqf5X_4{6r;S$}cY4$WB?%X5)S-&b-LWfF9-o)Wgd0Jl&BKmv z+N-V5`-YB(`-y`V`zJ4#_viZtJnVmlCzfMVj)`Pv#-w$%V=SqKvGStzQm9C9xbVRy zZAJ{}xqMVwbm-(0e~v`zwBHN+NcW5&X8>6gnja|ekf7)aQ(BHI&p3)J@JP5g@X=;% zYWbe!CizMa-$KeE`FXJUyi_zEng7J%X;R&g#KC6FT)cqP1jck|MGROZ>Il6b18uT` z)hzK2oEM>%N~!Nx2cAc0Xt0ePp{?kWVu(fqOag*S6^O8HFOpqvIfcNKWFlZ;4AiEX zzLIs4KPh)lInXnUEm|_8C zfAdRyzK|Fv?0pRD)$abY48O#NB1nJM+1{|p$Ax|-9&~2+EPLL=i z4s;FFQXqkFOD7I|4*rK=DZ0v=D5iuWm3$JToT@bPYLnX*;G_!YTJ5_$MZ`8n$mgf?r02UUT?wV1Ri6!oe%1{(nRL zubp8!wHmWeJhAx$x<|HFEvv`|*t_&XK*k@k}1s^3R8J!& zoxnJp+DBG)5{w%%`e*=8mJj3*T~-bp|HR)2SC)?oo4c#+C;UsAK_8)}c)pMZr1$t; znD9GBpdu(3U2S{}w*lO#Zhym>M`63bEEn@kvh_jv$}(Q;MK>IOoI^=BugOV?@z)HWWFo7Lh<~*R*9g~;rDoLx1xh6$OBPFl5CM~x%TYtI zJgYqsdogp+$UkN)eh7QeHFf(#n=u!28-Ex~^j?%H;J6Ax!J4ecPCWmFJi-tt5U4v^tt zi8|FT%Y;10j>Z_ZdW=tJ0}~|_>0A2m9|m^mzd;pVYp!t!n90Jw_?xp>WTa>z^u6+a zxpJ*%%zd^%^TNAD0j$EtJFZtIGy9UU=@MRhzhk3moduncIB&mn*=o1Q@3}CWZ9_K{=>-iSu2Tn|uz@AR zb(wUrTW5{4jtr?-6OxX&StAizI4=q1F7n?nhW$GLi`h}Kt?BDxl4OiFbbQvntjA&A z5;1NqEDyw0e@hu`Hibp%MQ=&{96FR7_60j}fkW`=W5(aMdj5zf6dl%rj`AGiKC9F< z5bWXZwK_(E^ud2MYPDH#p>iM1WV77uRbVEu|`fmD)~DimYmi^*N`5nFnaT%4*}jd|=2Y68|D75wqRI#6#n2DCVdq zV+fOs5$Tsh0P~BBwyAFi`<*-uwnNX;Ofi97zg9<@B-*qt)*J;FJ3X6&<$JwDObrvf zp<}aP?FeIcS)`UgB1W%QknOnvc3nWd1!NlV)4;z-U_&&0*<<=6&dmI+K)f^Cwhm4X zW5O-?3^m(XJ5P^L)6{fss@{(97i5;@9i-Y?`aYBgzyc0o#YT+AOl%@!-G$YGE7qa5%Crw^yDHf=Gf20>MN<{ieB6dN) z6;<3RO#7}YM*JSQ8S@iQ1@#Kn&_SpHCPWDa$i*Aewy#S}W{Hq0Los@WB3Guu2jYpF z!cw}-X*7$#-b*%_^-{bV`NEO0=kOD#pikN{#2z-U^cQ{VFwMdl48b zTbiiL@+e4GQ;g^`+GA3ES)3gqvLjyFJ~HZjub>X_pF05v4K^DtD)!I|!F(iO3+Hs< zFgyRR-LskjkjrqD#{OJf5bvSdT?Jt zt64v8h0NbOW%NPz4TV&Us2PfpS$ag!)(2|#5*LqWzwx}LRZ^LF1L2656`cTn*Lx#^ z#a_nKgx5WFXx}uN$BCN=0_lp0^1A?Q1L3|P1~dI@vC2gW%8B*M?vxg=MG+imC6SjHAGf${*3DTjzqDsUyJEIM2blw(K2csCy=Ga86jh z`ZV@ZdiggZ88P3y==mv+?^94PEDO^Z&U}fD#l#ew=|MV%jjK+U? zYJYBf#+Q58uheP`b?6^Z?;=-cX#Ptj;jpyeuSWhmhGbU;wd7K~BvaiBJR?lK=E%C& z3T2#ot6E$+3l=C7m~|)`lqNUcD(vY?Q^CQFe5bZ5#)X@o(`O_aG!0|asN~6M|cMFcehZa3k;O~GHmo?0m@mkv1cZse3?|uzwRH>>m+^T z49lqSvWH(f2Z`d}AO+f-sxev@1JJTfEstQ5gA+X#T+21xgdM>h+ay>nHxRmq0j-CJ zpKJOaHhUo9`phaScUg4{@j)l(SyH`-xenIjP9=vBB-#oJ(5M7Ic>VqEekdi}daS}i zjP9R>rkZ;ej!Er9g8OBt70U&{zwO7 zV^2gxyiG(NL~TGuf&&HRPQ*ig0%PM$L_-NqMC(UQEJvvUV`FR3MdbzkpH^ZinrC9- zFlr(jdJ`yD!#TPT=zrP`beQI#0234E|DPsz>FdVgx5WEm<$XK(ZH2mmRV;Nr*yke{ z#qvvII>!x4a9~{xjGap5L|as5r(=%^Tsj(R#9vNOb5wLF*rI9S$~UYLj+xYzcayxn zO^lp$JdbRgY-#Qo+!%cCcUU~{ogGEiTdli4?;XK!paV@??8($R9je2a7A55c+x$5O z-5%c!sf_MBtt(%=hS!3=&0bFAhTrbb$5R)MHNfLzb!Yp!&*OjNy!b{>q5ND^`1%NA z`R#rIqwnMA1XhjXgF>>n`b{_R{V#Yu`TE;Nll@jjwMo3__s&kolZdYVh3?MV7NbG; z%fuHJ0Nv3e(8=;ni1hfiW&K-e{IkRP+uQv4`T2I{V4x##?PmKLseJnz!dyLnhXC=r z?fq-Vu=`~g^hLh_!!uK(R00FTS{$TD*2oFy$%$&Q`DOgb1SX$9Kafc;HL?-}Ro+Zp zZXBe3H5h?o%=<7E5Ig-lM#EnDw`Bf!6d&m&lXG+C++W=0cS$sBCM zfXjJcL%$T@Jb_twpb<)es|iKSK-gk&nhi;qO~|QQR*-d-ow)!@vDOhd|K3C3xCQZv z$7)jrqG_`zr)lX#kIQbmX?GfO!^`F=k!c}2?|dObTD2su`goJ9Kj#G3^z*C$(lDD4 z;M!mdUUtQQ@UlotT1Sw)FvuKoc1isDdhsZI0=)K#tYHh2F4YvUk{jYM#}sfdP1SEQ z+G#7dl7sC(37wr@M`{;eMtsZC`82C&czC~k)jadTvIG*rhR1ZxB{10Ze``o)1vLB; zlB8vaQcejcVZy9K{23`7K3;XxG!3Q=D3Q695W0A?q|4NG9OsN|pXMH5QHYzEhSKEK zC6b_67N@YHRaQohU(-DQ(wtp(U|7Ye%15XZ{m1A9%SjC@DLP%?=kW?P=c~G-w?PXJ zl+hl1y^ZU2&9`TKsTp?FJL0bVqy5h7Zfom4-{rgxA2w{u-Kem5sK|Vh5$@syrj{zc zs;2o@s!^XcF}7_sYkEW=IO%=W)c>~Z{^ndtX4u(>F2_;$EEnb2SN;6~_|&4c$!u5cY27vk{SikqaVG-`A_ zDk=-hov*@%*svn_(pY&IV+45eLO3)@3p*K%({}Z|&e8kEb~qxAUw?!4aBTxF3R99V zcMp!!3(meV&fT#MVUK;^njt;Ed#LrLy}v@M4{;ammWiB5dmHoUJtzDDs}}G%?iB@c zA->ixH-_Ac?k!L^T*1XHi#)cEahO5*RJ;q{BBQY4_MY*JuVOXMD2Lg_y;S$)`*ylc z05J)RME>)awIMg&+Brm6LlFrBpTVCE&cvlkfrX=AN{cJCVEzgt;#Dz`v$a%4_`ddS zXZ@58AN{DwUF|B5Ya(bs3S`TE43-{esa(leRAgaXs>5md;3)llyC>`P;=M*4kX09P zvP~EamKX4+qP50onS7wB z;-JQR>-O#!yI%1t3aiireSQ7lKLcC=0JUr&r)>Ml@? z#Lck?(KNJai5HS1$Q_b!dGzZ^-e2M1LUu63Am++|9v491=97@mT&`4bmv`Zh><1|? z2l|l?UK`)8)+`6A#Y=!^t*E|4eWt}kpzI^@sXNfBAs!gt-VT9BU#-|B)5}s0g?wV} z$vl-DuAfRR>hDl!@yVje`|doi$SEhd7QI+*X@B<2{`?t@ZXF$R|N2a+G67e$B~`+) zJb`wGunc52;Zdt|>dU!saa9aB6iVt|RIZ_eIBc(%O8yl}7E&3|>krrcbq#!)y=@uk zLTNGaE8&>)qN2e5e;;M(u!N!Nm;YzhJfe#IVVX2C+8pEz+-Hw(r0RXs@O5 z-%Y&u0plb9+7>&F`vuzr)`IYT2Qr3B$W^+fp#)suqM}eOGPZgLy0AiAFGL%)(llWN zNMP6}3*FMcYzbx)VNM0i;VDuUaOMchxC0*xxjWbX&iS2qJ}1FasJNRhzv z8SuhHRAcb{_Ht|7@|{a)p#ObLWFuW6^{4_D6y|ykBD7nV+Mn?g;{q`O3A$A0&2Pz9cCCjWz z3seJ=yNcJMQp2INqd$1QJUjtUhbY4r4K5;cvRD8J@|X%CH4Dw!giS(k{TnbB`2EhRh}hlW}?X2hIi zS&v_Jy1bk|gqUl(oOrHsGgFTVP$Z^q323m90+D_BL&!?LbCTpF+OJuEBRL%bva6=` z9~J@eZy*7QYfzEpt_X<(W8q>J@`186m+K}*@JEn8tXz&oB!(;m;j;r*0f0{FB2lC}2}+=#9L3ureM4CDolY8TSV=b5OA!{a}4q zA!S+XYuFJl677v4+^hZbN`i;&pE?8xr)7t42OXT+5_@fxEww&IpG#d?4Ai@8&A)j5 zf=pkZlNN1__XU)nGMj+XMrcH?Vr+b8pWed(>)?*$<&OpFB!alU6?t{+M8BCkcKjb7 zvM5~Cs$fUkbG_f@qEce)x9q%}-u${?f3f?&(@44V<^0zAn7wsSEzVB~HX?C%Enu{q zzmX=zHBZvvyK!)i1K3PqUFVdyg{We3+VXtHs{Z01!4<;9wQ&KGwJ~j{RPs*gc1!yC zl%I7OZB9@78vKW4@Dbrf3@Hpq<%MGY2)0rDsE^GV9ZKZph(T#!e}tLtc%x)wu%(z^ zYE|Y3v_=g|6B3|B*!;V-x?s3hd`yLjD`q{vM3R&E<6;shnU?YD%L_mJ(E}}+5>h@* zr1SLx)KqY}aEyU2{R)|JC_OT2xA25HoK0oOq@m=#<|1mD_G)?}=C>PXvJjb{m2p1Y zuC*dY%wZC(ZST;$i{S(4g-lr{G9ggky(UbV#-$Y`O#$g5SeFHYYd79FQJCI3;W0Uv zzq=8@?IPtNkFT{59^J9&QWWE0;eN_;RyhO9UYs|vEzNcYI!(Eq835(T03%rtx+yK`;~-?|{pW+Qe&& zdQx}bCieI(0K-FmY;&SLhQ^+YLCyyhNa4%6YIHGO$ho%Pyga4sGyOP`#N4nbZ>QNP zsK%;xR0R++%g$w}H-E`7dGncYoSe;a{n_8OE3T(CB{KH!r`AFsNzRUv&BUeHHfbPD zkIB2R;|Tz=q$Sh5dS-Sj(%pi(176*N)_6RjdMp-DOz`i|U~q`KYx{%tZ6E-^A zpoOU>6ER#Kx;aB{AwP#&j6f#17%Oxb#w}CYky#@U*RIL5)ZyG7*0oWo9`k!OgY=6WBDGQ86I+;I2Z>wXeGR4&7BF0CO#3P7Nu+jeB zLW!stGel#oiw(*~jEp2h>hx2zj38xYXM1hi4~s#=|cs}S(S68>{X zuIRMn6n&y$^8 z3d_UYvhWg51FAvr#Z^uGRGc>ddq0tz*L+!g5X^UrZZSI#Ly})&T6RlHKk}pqIZ|q@ z&)aqEg#zE4uO=_GO~+Al>7Qv%nt3uC?KRq}QeJHPZ@ePYL5!}xB3jK@K<3QJVO~fz z!{I5!kbi0f_+=SKNI&k>wT5X@3;>Wh5&8XfET&rOgTiS2bH2xLP!WX(GALRPNw8o~ zPA?H=hj1uqEKAUd#Cu51RZ_FEVZ$_GKV>9>Ai4@+m>}d(J`%)hW+mcQ?;x(7vBX)Bydp)aLXy4M8&sVyjL-N9PK z>B&6jMY|B?IE-)=X63O`p7m+N#1lT{v@BOTK4&|vrf8-LxLp#Pw@@iQ5i((qw@Xin zm^3IZ&Y?O3h5QOl5*epoM2F3j&d*U83;4H%ErHCNN7$nbJtcrdPnctRlt_{<{g)uGKPkBA*pyZc116VP-+X?P<2`LH}GZ+Gg3XI)g5ved2bx`lO z62b?)6&WHWFuaRH6k&Xf$%}~tJ1!kxR_~AC5fRn2$%~qdW~v0$KbU|*;>^t*0=ER! z*Xyu;4zol&oY(d38e&ZTx`47T8a2`z?N;DS>=yb{^oOL93PRRI#l+Mi)vOT(d9EIr zVQMC|$`Qgg10${--Twsjqvf7Mx4j!0I?jdiat$C{K-;N8tu6b_Eu$-ej-h=gh#*DE zG9}3sT3?(Te?lz-6SjQ-D?R_96X7UA>6qwA&T(Z1m!ZATx%y+nyD;+M;>A0aaFg(5 zfq&3G_p_<)nz1FI-SW|QuI#hDFux97IkOt7!YRnJ^x+<9O*IxcAu>fUWi zd0a>NpTuUky6!21e=hI64DEPlm~byYA0Q6~v4fT*79ZH#VL=_1dE}O);RZielwjV` z?=7GsNqhWKPJYWei0I!Fv^r<=UIgyGQ(fTRxbC0~bBG8@O#1sjSO)We7(6`BON)Rl zKZZ`djU7u4HE9zeX)99`ru-*C(xll|reak2dd~W*Ma`UK8!wB1Dgbt&t$KW@5>6a)bdu-Y zSbW%m?m^^}qCJQR7MqD-wR0ldDJX^A%J> z(Q;u~O3`vfsjE7Z@ZiUS2fY2aJ}-c+)QvZQ{WOTU^_EDDq9d4eYK_&vq|$x&Ih7wcHKuX9%73-zJhl~Mlm6KhfhvZ031J|PbG-T zjABh|codKQP!gg+ML+}ccWy{=i`_(RFfHA5UAFzV@fkS5kPI&3 zxQJPBr)eW4Vdhy9qO8D(s5jttBUFP?D`y5fJuW8vUsdXpN}VXw9>4u4YglINY=9QNqWUya;=5O`!#=GG)A_wfeixSrk!)(FOiy}XL zDM4I5R28q-o>m9G6H+|e9zK1EwSM*?xVl^Jb6jn9crzthmG9(EJ5GbpD5^V8DDsL$ z`v`ANyR-`iV~?^bA<0U04eD>!7oSd-NjE5+DeT8gbYx4^n*my;LVia2gszoVMzUdJ zl0T^_e9tx6BFKk!@!Jnsy4gI{=B!eXqhmSXQtl$4Y8lYb3nC!uh9jUF3;!OHMhA!& z6x2~uLlIiaF=Wb;lRJkttEqS=Ie$jPx3a#INYB~-pj$hMVWzlVOX)*Ik$}sLW_sGW zK!VIr-C*YjdW z{aCDzeB|32U7(U~hM59B>x576+1~jYy*;)GA>FnMl`-z5@?A^Ybf!%r9N4ZB(nz+3 zbG?$CD|eSEyBLb4o^RoMVhQLVdo%9b;Cm2+!l+dsIsuj9?IZ;M*#9tDu@*hIg4D|5 z5b7RWNl4a#4i0@;SqHi3!3SyW+e)me=z*pP#I&L;$Sxw<`~#RhF^GOqyU~%~?0aLd zmE4cD!vxTLH$P-y=+F}-h)rXW41+Ryv0WJrxASWJ_-Hq3GG|R{`{`IIwPIm>QOpOn zKYs?t0m!D^iKvAbN%Me0i;1A_iDYS_Evd7&Up4iXn7DXKg)R2*JvX9)5Fr0yEIW8j zd<3c-a4j6A!c_Z--XK4cE5vQh!WDaX;uk-X;9eb)hX{L|0A!^?nAJ1h%{u%-8RIBl zXCdZZb5dP;d9SIi2`Kck;`T$P{H=GbkQ*i-gV9S{bTo}WM?gfaQ4bxXiyu_k8}Q^} zd$+{o-AX1NxQ1x4;w=Yb%W_4!2S%Pr<N`#S{a zHYmXKS>y!hWSQ^a8fAl8g0MRUv)DpXpf=jY3S~ovL(L(Fl~TiW^vS5iN+FHc7=!^D z7)jWH`h=op**F*x1nd-fJi#-DfL|@LPB2)~5ogn;N4cbQ8{{6)D3{nN zOlT>=QaQ|RwRTkTKPHZCaOyIZ;H?NS~_qVx4(pa*zQ+sXZgSySlyM6Keh^fa(ERk4Q%|HayksBCX!6Q8iLFT zT1yAgr&R@}jxM*7leI3pm%*r9UsA7RW^YI77yrhuxO`DTCf}u5`hROPZ)FMXY)VZY zu?5ReWTT47NT1%X*ANqySEm*ljlUP?-LoR^B+~!u^l3^f+1^I~zGd4SIg>l-2wm6!r$DCCP{(U`1%y|~ zn!++A^X}*M8>EtxgngYzu$`7%-Ud@gFB0YGyR@$>#?BMFGb#nfmKJ9^36vCa2Q%v5 z$dLZGd)Z6Bv7h0|4>Q2s(IlUGG#C?nH3{3pL-5Ch9#eT`em<=fwrH#YGU=_eAecYA zFSh4H0J;d72@I64L*h#rwrHLSOo(Ih0@n}tASV?SBKw0R6*w5%qRa#_sUjjCc2<&3 zwK%H(^a6$H!qpxwtm5n=E!`+g*V!mA@BTfHrw^`yy|%nMp#s)dsWUT@d{DS4QWpaf zFOpn1-~+PZs_3f*GFj42#2!oepj=>rJktkbhJ{^JXES8ecyT5R!#JN2M!F~$Ea8FB zgI0F1@AcM-b#vA1CemHMsJBmZQ0w&Y?^q%{uT0d4kI84_BY3V|(6{%wMeAr%jL{!Q zhde|!ZM*u_*Z?8V{9YwcL&8^R?BZAu4jhUaz8M<`-b1-?bESop=m(E z5)olcCm!%SvzeUBGwMF;uPLSrE80r8F4_OJJeu6a+^a!opM&s%&g-s63z;BON|kR z%K*Pv%EN65SnGj@lij(})Y6*X6MNL#m#=*8P!x{JEFM0h*A>j4KAkaGJ6hQV;2M3CFxe1EvI1iU@>QMKjw zJ;35YtmRCLJhWgHe$o(uD+#k1vXJ0WYi{|s34vzi?6LilE8nfNE3~AAY%@ZiFd-~k zml!+8Me|At9||(nw(6%uM2_2y@>ewJuQ|~`J%J5F{$n7%Z$N>F6i0k(T)_%)K>{3x zi$aKL@#T`-vZI|q>HU{5O`vV`P9=t)Q12BuL#Au4ygjeyh1dI}0Kv3vyrZ+zvODht+Qh&hBrtFK$mYk3lLWg|x z#Uevw9V4!*o$ne`RQc}H(mT>TrkKh97)G=|_XNuFzY>rWpVPz|qCMqQ5L&~sO|>jh zI2SEZ3+@aS>dQFmuHSBwbAbI!tg;jXm^h#Grd!Ov^4cELTvQi*9I}UlL8xn4X?pac zOof$_?%Fhz7XPI}Xo*$UOc5k`atd;WstlANphq3dQAAr~C-AP)7-zpAN4TSKb+%{+kM~%Nlo|1?(;_EiGHKqP{YQs4l`gtXbIp&Koc3$nk4Qpmy{K`dE5y@8~^%NUR z7_N}gM5nWqtb!@hTtt<`^j#epI&mNge2Cv2-~HYH3+!O^d>ly{`o0ZWia%BuV&r;1 zS>GLucjk6_e4PHB5hpHJ;T($eN~|iK{GM`bZ(h`&JFi}>_qbaxe4n~+e!1Q{kW|0J z|5$v@^}T3_?#K&xR>{#ndVek?fI(kxZ4RXCCceMkZK6yLb^i^~>s2 zU{Av}AOFS@R@YoR-c%1!9%IGjb1ZR)Z#%3i8?c%`IEiL|JHq#movI5a*} z=U=#tKXTasn){NM46wo&5VG=WHD=RV0DHWF#RCTWk(jBFY6AxDziRa@?flnTZB#vX zq2~cM`Uu5<9sYJ%du4`5s=cL;8LMYE)99^Usmj>eyw3M6GpR8#q zSGdKm6D(PRh>MDq)P1_ev+I(MhEfH=)uzB#d7t{u{hZ69FQue@o;&LC_lY4P;PuJ- zui{Qx>dVu0&G883@e;L>y=z;y;O`P>7f32*>4V-Rc~u$=f9d5|?v)q^8&7-6Ug^(V zowwibPF<_<-j<=a$!Dn>obG$SEum4R_S=5*zm8MXKI|`B%rbzxov)aQGFfjd#35qR zC5C{o^{VR4h_vS#8crrGM{#_70WOxQHICB-&e4A?acxp+gyJ0v7az1rP3`ilE>VAS z`WI$iYy;sq_|O(caHpSyRK-^c?;7!+A?f(=N>zSK_PH@+$Ig5p4$*BOwc*M#az|Q9 z2(eL5klKRBre0CtuMJmkftN_QKPd%>#0r0vo)dv6xM_i`n&Hd*G{aZ016KJqsQwiG z+Fc8wWO8G3psR6qTCotfu!A|ExDZ@CVz7j2ps93Q@q_);QC329X)dSP@I4}9ulOc1 ztWaAUq!|0IbvL0-=KyRJLv`+3^8D}*|6~dvMqQ=_@;TDVR*^n_OJlceDDo5;E>Mqf z?cDC$T_?Q}?OYgU6*ouL1Ja-0)KN${(yUv=kHQ44%SqYHvImlODAJvYCTrCU? z8eD8vs>$Pv2_UwYHL?~bwhp2Ua>fM*pVys13Orwxgmf4cQ<%d>0PwIv1A=j>iz6JO z>Y5LtzC_GNvHdc~;}>)pM`b*UHG4drAV&Rukr&M313W=93+v3reoSlo^sJz_E$o(} zbNch&Tli}HR=-+(=e3Q_a@Bh@dznFO`e(JiPC%V-xuBTldSS`9(0fJZD^xU@$rd-O zoSFQf^EerQBY@!d1H@0nB{Wzg6B1=;rCmvr@mdl zTA<+>cn;hi%+7V=lT*-?d2{h>)^q6K=_?Z|Ph?o;ps$2a3!Nj}wL5Ikk7f4OW1`|v zF&AsWB$YTTf_X%wJ>s$qMm?f4VQ7s-oD%@F7@CCzyCJm4W*=wK@)63Cbz&(K1PzL4{o-qs|4gioM4^5@$2)Sdtv+ zh@@ZV&E-xL0OsVzc`DFvHrN${_jb?QH&1NZNyOT*Q zltBA+mG>c3P2E8J`pP=dSK^E;N^g1nXPrMtbJ%w+Xe$P-h)`9V?x0sI3>d5!^5|!N z*lR7Z2W}YAWV6T^yKcUYSV(K$hXM{lgh>#6fv6n}Ad>6@0oo>GHK#!(0Kv*Z2QI#m zzlvPAcl`4`%Q1YuOFKNKayH45Z`nk5F-}4@2?A|omdNQrJ9KG(OZjz@?T^^j-K7Z@ zQLXE-PL?BX+0}Xx@8`P9C;?a8YY~r+eiz>c0Qcw3umkDDEAimpF`Z|-=-qW$cGYaQ zK_#RSuz>IrwXUiT6dg`IlvCDOSz0+YJ0_2WdH08^msjx_mh4{5P)~3&rCrF|@h0NN z4vd=z7J5gh4IXAp9x3y#y_}bq)QUSS%T+#{XPAfz;R>F*ezQHqnB~(@z1Mng7Nw}T z@xq8PD{Z5MWNkdlv}en*@zYQ+-V2tCZDvsxfS5?jLB)7%m+Qw%=X@vJTJ!`qNKvqD z{3r6q2s}?_$pOKIE^jpC``J~3LToU@mymyHpmO~3ylGV=5|~*wd6@ivI6cylp6Jpp zSJ|u5^{NSz&C&A@nTXZY$LKxvWY7LC|yuJUpm z^S?`qWG6?OxtTvwjKHzGux(NGck~tot4d$euL3TBfs**%YH97+I&gB~FPC70r=*bb zCwl00{Pa-8jw~NG$RC4Z5fLmje^tPPDPYOpSDAPy5_(ATjTzl0v7$6?cSvkk^%tjNfMEUG zi~^(3-Py_iJI~O7z)DUlX5F$^W!-!gbwTlF(|TfsjDSwqnZ5QsTsA&@} z1Xegt67r^aos&jg)&0IKg&sJG7}d6|#^Ghh^8ZWx^V0poAjxH0P+{_O64f~*friAg zG(Gz;NG&Q3T}4yT1T|8LuTuD2$k)0df`)9lFfA=BY+Tz~noi7_nTw#Kw^kYhEuM5* zj!i+tT+S$7bm|=e^3U)UTzS|}x8s-uG$oW$jFbRzfB~u`mx0Ny5gn-fa-|;{E7_o| z9R)q{NeMU(L(0#I7_GA+xFpJ{&RDnDKU3Nv0*W`E9(ErxCK0RTXiLyycXRl>vA!NB z?U8}+r>ZWn1ILsEzEuWtUNwS{x(3dLIArOGEP~AK$kLE4T=c?k=E#tCwn9*cm^&Y6 zEG1l;=YgxGN(Kg_34rY3jp~#rg`;y@j_RcSdfXs({5i=e^aod*3HppB8$Z?XnMz1l zBdtYTPl+{@Ha9wJ*h+&MF-roq^=uBbkg%*_aX?xyqjlUuNjOw65B&JAzl5_y>7>&9 zubVC2-UMb&WF?9bw=O)W3$8_Ug>Fl_`oVlGl<1h#EZVU2U4TPVHbu)Oc1f+>a0MY5 zC4!&Y6uQQg7D#7C49aXZ(g>OdOxAzUFN2^ux}n_j4kH|P1Y0XDi2XawSV^)+JlYh2 z55m0&6;!B(!1kw(5y|OQl?}p1rL&cPsL-!?aw%z-WtG zQawJ)n}WaZTqIRjHt8V~P!#mr83D!%HZrBLJeE|&(5owE6wmop_b{*=_ONMn$-RO8!BcCE zip;fVfOZ0`wp=m`tc=>#sK2E(Mb*npY=)8|(rANq(s(4UI5#4u zSMJb1qkz0M+YYXKfPiI6z(|#B5-ksl?XIzj08FL}E*O~($gu~;aOm*HBx`Pg&0)+a zTpZCLvlXFGS11Q0PIei_nNsH_{}*ITWy#C_P_amn4`r)Zb+bZ}4#Dk=Cr(X0&MIZy ztz0LVjPTEX=0yMf^|T2hjOW z{Z&a%$x00DCFm_|`6`V;qb99*OB|SeOilh}W$az(OfI)#Z<_qiMXEN;j-~~7S)Lsy zw#?camQA$+k)c}i4~ANyipQ(#cZ_NW`X7aCYV){a zeP(S1e)Pnn#kK?}FdmR`=W`{M6x9>qHirk&w8O=*lkTH~d$N)o^!WY7HWkdQ_UbE% zUFWN8z9=dlxwHCoScCs8z8_E+Y#D=%h=a%i2>xb__!drbFgd!W2!(*_HB;z;iPI&n zX|>+yf`n|ex|OK=b$OddK=t41d%z9WNp%U7e*EwZ5Tx>&2FS=hbK6Fx!v zb;_;3R>6ii5>_Oo2(V(&Ag~qMV`n?Fp#u5fMNv;l*<$!Lh~NMttq02e^03Nb3DEjp z)S>2^L3I@AXnSTNgk6JtVKKI*Y|KEt{m?ilGmQA1wBA6j+P+k1UqYLoFFy0>6L2?{ zl=X>VeLP6<$S`yzizJlDFX-C-M4IDbmMuev5CL^*SweC2*8Rmzc@P2lg;_#E|1~{N zhnn)eMHD%xA+e;(sEXs5J-uoxE}JD zX`5y?+k(8AaH0g%d|>toM*HzkYgJ`8zM<+Dkip4tj|Ge`ZpKti|Zc`6Ta<}q1R%K`%l#4llRa) ziVVW4C=-CyU^{DLVM|eQQ+!4ygLC1kq;%jD_5sV@{LmuY=L)?l`544VoX0P-4#KES>be=FIAzxEXabsY6*<4z4RHrz!AEfSi03F5eJVD)gF}65XcC!CuD(c^PxgbaF zb3m+-ONZFMHpkZ&zBYXm6)~F*vFfB?C=&!9>_vlQ`FS1YrU^50HsrOl`i)|Ls>w@_ zM{vkq5GmZhOsS@zx41A8LOkZdWj~Sp7lfDs(xK|lg?a{``EHqB!?=gVTF-OusbY%ZA2gFK4X#G4O_Ul5C1p#!$k-SI1(d6kbIZv=j18zKaNlLF$5t+eM zLi>O7IiX-bVPAlsADe{Vco>n)u3xY9!JMl9@`)Qk$9<3rnW;wlm)6g9b;>kb%=N9+ zc!`jy-ViIUm;%!W{l->nYZX7(lOIO{qZmonXXZ`aniIx$*T`aQ_`l2J5qXxHn#=xN^3gqIi7@ zqP-g{Prq`{u@GKgbL9a3?+MjSbH*9PUDVFl7B`&jx@M#rHFN#}ulFiY*mrP3hUNQC zyhF!TMyr}*=Y4l3rTfSW#iwceRj4xq@j3~#rI+e_AN#WP;2uA;_!cC^EI_}zO@R4E z&pv+(sih?FcazF^v`&Y;l8tvV@`?jSoE}6L=D^CdQoJsehgO$MaP~iUW<5y=egX>0 z5LZl7o`O?mW-bhpanxm*EFO}@yZ=53XEA$m#+QyUhzd6liXu3Y7^59i`D4cj&!xUGl=dw@s8Y4Favi-e0IH@eLwFGt_sUY6hox68h^ zx$DG!ggY3Hm#CNyPhIoFfsDB8YqfKJ2S2=?zp8}4mZ$Fzt_C!@{sN%%-uym`X-5IC zGZlpYhpKCeuB>U=v2kJ>6Wg{Xw(W`S6Wg}UiEY~xCzE7i+sU8zyZdiyJzcx^+Iy|; zs;=(pr`wMdZ^024HN{ZPV(h5{iy5UR-dE+3rqzA1Z0vGtDuo5&Lyx(=JImxhv6cvB z1q4Z6>*P*O-sqJ6&#yuOc=`|wXqAvD(1Kf#Ve_9oGv_Mn0UMQ`nIN1RGkm7If)$4n zf2=8$DZAkkN$)ZufWJeI#n+|<>}5mgwaLXBQ2hOaN#aR0qne}`Ac#8pu%#GRN!b&l z`k7#;O|Z@T;ZHayPbviyNTM;vlXYz#V^o=0N!af&VN-k%I?lC3gGsqO<^xe^Kf{|{n%sv z67K0gFl?m2j4qeyv{Q1xl+xz9aCd(6K^ZM*Fa!Q+gM8!RxeQQC zW9;L!asmS&DYmv5*1Cw0rybsdhcWbMC77Y6*xvF4;kHGe-$8Oi14XFhNH)h5Tf!uAn@6`) zv_kGewu3xY!V>ecD^4~F zf&}d+|d)FnA-n^iA3>e3^NIW-($yK-m_XKng;1(r+Ri00J4@(FUaa3~8I zTw_k~{G0bFJ`4yjU+JVf)?;fVu;eod!QeU2B+zUZCCU){k905^ZSq^hEOZmR7O8(E zM?W*eO0>NxeE`ZXEK4=l?1=5v!5kJgBC3sM^cacC&xugxANc{sAjvQ#*A$3+AOiTn z5R`a3z|Lf!*kAbtLx@I0bX`sv=~6g@rM^M(%9%vd=m=$LjGpp*K@=bv66pZ6X-x zCBhSP+}p;J#eAO7UfVi-MGe|w9lOT%Hbcr)DF^X3HDZftB}5XYNtqbj z#pam}Ps2Nx9fbh`Au_~xO$3<)NT*JfGzlr5ELGRvd8NXnl+;dj*OX*lk`0;jZ12b3nc(H=&X?cQeVoC$pO)s+N#kgoz*o|0L{PQBjsb?#wb>-=wJqj5b=IUj3#AGaHfZYFa;W7fHaKW9_eO{2IZ z%3S{rlgiAN!J}6=?U5B!({uMN+$P)xKDY>iH+O(dN$x(5t7~BmBq&uE<}>9onK(n- z*pEQlx``ImC=9U5*>J4o9Leh73NhZ+KfMtmZEp*ow}Sep5$$XnB#lW_uiU1L`T(I! z!~nLGbWZ{|1)D`+#|FRmOWFqkJLiR4ysXZ0W0l12F-KZ%byx2yZ$P_XkH9uj@b9`q z@25Z>>5g9ay30#nWjCS)Mn)uvdq39W4t2E}_1;Qtt(>Ji?`CY%7d?!kEmN%v5bZ-D zou&&h^ueSz&Xd+F{?D*DA|>{*!^Hupe#%TXBms^n)ir%O9^>&q|HGj)HbOpE2u3 z5ccHlC!8&X+GKr?K*6uUkCVrT>B+^*ijSbW{EJG?&XyC}8h2N-9kH)L5|57!ia5L+ zLiiH;!g1&Mh{~0_hebOSylYY}>ip9l7V9OUjVCNya^_sy!RaP|3BWandJmJVc^At> zc|bE{evA|t4=KLq63YIhAVDjT`}+meN+J}sCoM|EYV62-GoBHSqH8#{>-arUz2oE; zG-Gws^6AzlEpLO-aV8{5T8kmA?G5?9e%Dv5*X)wS){|d*{ugg0uv_jcrX|G%3dCw6 zGX|uoWgp+)zC_Jq;ZiJ6WWgq=SRVTT7%*uraj=}J6Y zzXK<9gfU|6m}~{Dz?fWnYHm^4;_TIclRTX_`$~C<09(Ft3K>E+?@6mxqDP6n|FncX zZ)-yOyKuV_A#i{2Mr?+y!|ZmmHZif3a|RQqZtREQPxM4XzNG{@;U#h< zmir^$g}?@N`gr)^4mN49%D>2U`WHw6H(VX#ehz3CK;8>Jl0DD(Ecaq27adVZ&#rFX za-n69)5GQv-@Ap+6Di>{?zx7a+b0vpA$4%^tP#|fRV_kY!K09SX0@L}i(ycQ5ora$ z0M9+MmY9GLY@sPs#)=rvy%G@eDK%ZnFH_CpdEF_2I8lDVCw|$;p@is62eJ(G2(F(s zx(?I>48mwwbvfQuu82JwHvEB-R_oia|KJG4qvUv=z zWo3IL(gts$mU$QH5uAStmR}}l?YZnM*#Y}5L(<^q&&Sn-{33z|Wvr93pqwyXVcQp1 z-E7h#HkrFWdK+ovjgKb7M*_aLQHm(z#9SCIxrnl_QI+*evR>z@j=ABnubJ@x4PHbt z~drNj@E6|AsZA?Ps53d*txt)g`!QTan=Ob=%FJyR~y=pw;biX5*)^ zHq1V*^si1=pP2`P?@@-Tth_< zj^Eq%YOl&`nASk%I4dNotN^gGgh|Pqb z6~gpzRVy;eg);6FH|bZPK?q4b<{9>L4T=fjjztHbi z1AmO33pk+82_8td^x53JDx8yn5VO-c=*WVQ1i^#KK1-q?Sb(8k>+wky+7UDc#Z#Si zK^8{A3Q_4~*Hgwz4qx;-PJw_uhfeT9r+%y9s%RPC@*LzswWE=w7%4G-`M}KJEr6~J zLmKk^fCVX!uCoJ@VNf@XP4`V4tV$WdRsC*kkj@<4lAuvZr(^^q&s=gSXB47%eu&AK zD#shGF#8^rI!QTaUjvn3k<6lpNI&UgD1v_v_=^V~qfZhqrk94ue4WPc(WsSZ@ubh= zZ&)^wU5W9UUFBkDJa_(BSA@uAhPN6+(rT&-wd8T$wZsC3tGGYc>d3&{dz2=Isb;Pd z$cq(|@3*SjdEGa8C?)}6obK?f8{#Fty(^(`lnzBrv={kY8w~ERMb;*zID9NDVFT(U z;lIV}Dz&Op9g-|ju;NcCL*tq_6lVz=#sl@uJh2pOWNE|Va|Z`WaQaVD=FBKfJU{Y& zr9r^bQ)UD8J-o~x5;dc3G*si7mC+UoksatgITTS+DLM2C!r8}%E^se>qjQ3f|RKSFoLKuqGoeHuxQ z0zd*_OiMvP1`CrFO^)!P#JwwG$W)-2f%JoJLC<*?;;ex3mJdrFCJuf#xcyZWOw7_y zAe)JeiAX-()+B!q8ql~Kyfos&Rq#J&TAEzDIXO9=&Io|^W{6i#kTlyfl!zIMK2*v8 zhBvRyh`SV|%Cm=H*lcD_>7V*rG)<;N0D_n+t(PiA_dH~>Vu-K#K?0iSuCqC?L=f1B zp|lanY)6Ix#)#oYsK4TW@<{}YwzQXTR+znE>KAJNg5RgM;~=i!R~yo#K@j@Q+{B<8 zj!o68Bo!^}z)W?3>RYFW9T5P-K>Ujf*jgQufF1SM`1gACI6cA%-^4U}C6gY~;AzO3 zY;WWrF3RkB22lySr8(E-=Ei8BCA1#d?JXR!7FEh=eVU^BI)sJkCWlodwIiF!d0k)0 znPqd_6*(a!FnZ>!6U|P74jmf+_(j?Hbh6Dp{t-UR0)t`}^_qGJKMqs;)r>4CpV}w?q%3HS$l&w5JZM9-7uem2D5AV-F>o-sWpnQ*?iJq42|=8Sc9M?8!X9Oh*V%#N8jBDcN&;MmU{ZNoqP(dNHf zs3^)JLN1IFzMM_%D(4Z+)N7B<@LjLn92Gr7iHmPRIgSdlSj6n9;TcQ=I-)!+H2yi` zWX*{%)#bLmZej7T%7L|WFcLS%HJl%)W4%G-i0qRy$k!Z|JCkio|6qY~^Xm3n$>17E zK~>>o(0;FYvFgq#R6t+{DZ@EkDzXroXRGrUp^6w95B_7D{LhRTkg@=*TQR6wmd+ zU()kzwP?No_qN(O==}7 zL+9nMA05B2ZTKE$&UYHgVEpe@ZvOEi3z^oTfcnl;Gug{R1awM30KwgBlyl#mQPG$j z`D9}gl)3wfW32gLX2pnAmn}f%I6?x(ps)h;uybv|iblkU)yy;tx#gh${9(L&1A946 z@3?oc=-IZ5}?U}&$I5NJL7^etzB~(20;X#vYTTUwIW`Ulo zLqi8xhxTT3r_AV4T+x%2Lna1(VqgV5r7$vAC!-h7wk7WI0}sqPEZ{)f8_&pxFVjYR zoCLX@Lvx^cy~bg(?i0g4$M|Y7d-0X4Wxd8G*#@%1bfYS*W<51cSSdoPd?K7_R)$uk zFL!)s!HWnpaT4n(Un<5WWv3A;RFjk=z^I$pxDvthlh<6eCY;ggOGw&(=~_B)M&%E% zjbLPV*E>CW0`Xs7Ue04uiYO25s_B}YcCl9cz$|;)#LKD`Q*NU!N^3XN{Fn*#Egp#w z+(Cq12|avrpow3G{ry!ZJp6Mah+l{O4fn7n#r>Fbt&WUjW>5`DKaBYXX2byR#vnpE z$R43NQN+)~2y0>skzwE9OuRA64^iyQp|Ic>tBeIW`M$?RxPWtdT}4vT(Ig6+w9CKs zCQ3B0HN)fhMR28OxTM{~n8SU?kz+>S8+p?n*WayhaD`O!B$4JZPEe|H4OJ4ng$?m5 zgc&Okw%@M7m^!#Zv`Z6;r54kp$c>e4@;FnVg{v=H_`0(4D-13#C^H;*(MR- zWIh96X=m^ZP3Wl!aAY4P;d@<=PNcw=X+C_C-{6+DL0?71^leE8a%ri?M zd~=1Mqhm4#fB;5j z$Fn=A`@n2lh$Eo$ll=Nyvx?0p8~`|u+gKLTyJ7Z-H15uge=wh5iATqeu%RRm>0A`8 zVv%M}))G@LMnNoHKHnz!)kWK@n?+9JATp2;7)JK;FoEj~+h$n&mRoIDgJcf&TNp;E zf}@OiXy$+hJrN5``p&`YD`0?@NfhWGrJ)76LXU9*OVJ>*$KsCv`v!^#>ZbPVzD%e$ zGKK~~h7U!$v!b{~!|Wqh+TfkqDV zD`1G&b69ehI`QW>pBpNJu4l+25yBz_Dqw248FlelK^n{w@T; zEn=@Yog5XVIaUk@@q)C3<9Ev=itxG(Cjt7mH!63=J^b200wmqpWgSt@hOytoK&9Fn|}jM zQlYxx`vrwNEY43N6%2B8eWpHE{0E&UFT1lB-ggt8^Ot^LdG}0S$JOCwmt6i|WsT#p ze{6nr!~4BjMP#M7M+9(Es%6Pg{{h=~gU1xaT>O(G`Re_o=A1^%k|~xas=PsT zxqGhKsips*#FEht^bFu+SYx00H|#i1H)1?L^X$jR9DWHI-tPrP<_rstrt*&w`<2sq z7Ys|3seys1`c9k`i;-zw?9%vSGP7NImq!@1z?=yyLkF#`3f%*KiMY7fltJ#VF--L^ zWT_nkc2^Vjn%1fS)l{=H5;~-^ENW( zt#K^|uh99>Hv^VUv^qG7jQIlX-kmb)(F>s39_@p)mJ9AF3V40-#fQR@*X*-+n5SqOzx zk%gvy>j3$CY@v|Z)8LuDxe@|=dDGyy?96GjwyCH}rmFV=UQ8IN! zA=f=n=3o8xkRZipF)QrXAmrLGfcSMpMhipI@FpOD7~7I0M}YrxmYmY?%p*M*?JL_b zz6qee^1TF%fcK{XL}wIo?v)-I5WkuIyn!9ziqVmQD`Zvg57m!Vmt0;9QdCz~;em!3{KJETaF(TUrJ9XRY3U_{^@-`*S$L3t~S z&>c9mp%zHW%PJ|waFoH4#_6CjekThPnF>svl0(o%$hGJg`Yo@lZMywED0@<7qu_#} z+OJ5<=vWLwmXte4mJgOG=+HHdBvcl@})}{Q59==_z-v5^yYV1zBUX80=y*L#1S$yoSEL-F!Pvy6r~sbt+_Bu0{Dax#XORo-lpf80E=R-R^QZA0 ziW`83OiUx4R0T7r zhYTW0{QsUK3l}S5NBJk?q6z2afv0j>FKi+wK zAy3}p9~-^j?*Y!+xWHLyGRsT?y>}Kf4^GTKVrG4lO}PXYtYY}cDu$BWog#U=Tj|(= zFTMdr7)K?i2;iflXsh!NI>D8!P2W8VY{HPAxAGJLWmLDMFBXhSSy?s5XgM7ljMpo` zsHE7mkU&-%_Wam7r{+}FVV_1C^g*(rh?FXN%g z!v=!cX<%{#K@@#Vx-9dqh4Wgh=+6=xNifyyk>7!hYq5>9i(_F&-{3nsZ1{dpwnA$j zj`JU6Yc4e?oo+je`0O9KWd(sViTOqu5cp9EKsmg>&^)6I2=Zu1Je78z&=q{&P(8C) zA|{iply>7ku4>f28AqjImBjE<$=0||1>PNCS5YmVB3L>P2mUXo`*!KVX>0_7BN7OXT1(YqbI2Vf2sTZ!oNqtMzvS?G+I8H_%X#U^6lRWcpszzr9G z#PK4XZnfI9*$zePH!eD1>y^YW6Y7Vlir1g10)0ILj0wt$5VSEaTg{?) zuuguK&Sil$K6;Kw8dj#yn1~c-)^AB|lltS_b`x7jrZVk8^rxQ>((QUE<>dPK#2QYn#avwfI>cTQ z*>(btGzs$dQ$F`Tuh+3K{$P7x(Lzo(JwC-LIY+*@WcQbAcak&C6aq4~maE$-t>0)vV5GT_NU3>&c#On_D-f_;m>_!IXy72lSvNiH zo({2zy=Rx(6Lu>h#3A0L*(INnM@k8n3I3fDf#=mHu-Zr6TRS{S8#`$}cnx6mJYV$z zIgy+%AHOCr?;-tMDS>Y{pSvS9&l}=4fx@V9>}NH;&~oPZY#{FrgY0NH933eBz+w=# zX9}q8s`4E02$1ZS`(G$7IA zWw`CoF*9e{-aE4}W8XE$7{_?k*wb3^XQKF9oY1nx?t8x^Wwl?u_ef|jO>^LC(Ciy? zgxf4bHdJm&e8{+$<&EW&h)TgDUQbbg&;>+xF|1afiArYhf@+3~tcLI7na4ie0U!pB z!1_Btgrba4FoCH62IFURdI_;w6u@r-oPt8kAkwY}SR+#ZCLs|f(g9I`h!_@(x(tj2 zw+AZffan>2HYVBJiWJQ1dLB8)l97KVIL~khCO1q{-`reQS?v*qOW1Cx$THXhHoI0a zsJSs>VU1p@3JEetD%D|ssx}TPg9vL0->UO}!uTf;oI((U=3hS&eafvNtfCR_{_6{@ zrID9;?ub%e-fO51_EdQXo-91zNGE*+W4&}iPFv>9j-wG3E+Ir&jkLw^sIM|#tsasu zW%j#&7r^*8@!h}(APYq^5`!s2?xXln1_F$PAd+CfU9t6c1AGXxpL6trMX%;ONb{hD zmp*~!7O|>A!2wbE&UN&XGz%m6%1GC+TjB^hM3!;uDa%!0P8|2z$Cnclh(d>uj5BpK-+_St~veMH7_lG=Byj-%| zu;2CFB8+m3HjB=N#L%+K%}DvnDJ#fR zsVGyDwYi;1U0GRXouny_%w?o0hEr!+l)zM_XmGS?C{h6bTSvG@W2)XcuCLdbe5YHa z*vv(hL0>V#l_ySk=;JHOo@0Nt>S(-Zdkdqbl&~W^Yu(~sT?aj9b^5yXs5Jf(1l** zM?P$jD}d5y4YMO28f;j7HC*1|;A;4a@ zE$F+zUboqMcwHyR=X-mUwNhqrd-%z=$=AaUWRC-K$8a7U-tSC5ecj%VryVly;FcKp zeRwve(th($rV)$ufs?K@L0mFnd|j(vYu3d3yFTuITswKCSy)GhTUI^w;t$*JD;V4R z(lB319}oN_S_B#{`2b~Ztd1j}xtBbtr#t>47WMON3vRp6KPCtpvL;JX89@!4SUQ;s!nb6u6+ z{mJ0|S?2~;+_c3Z)@A56pPNmoQmgNdON|xWC1cg!%P01($nodk|~ z?_zx7DR;@`ZY?Qv?>?a?(g4u>`kkj>vt>}GBypafz}2iQFENl4*@_?t*~9*H|GE-p z_ipBpf%g+C_77(3CXOvs6;Y&8V=jq+qoN(Vwjgeykp&M;3T0s~*PX;Xm$$or;rfIfKDy2ihWa#09#*Gmq85_Ni(ih*tHaR##*UflR};6avNI2f{S|%=2nBrb|Htq$}*V zpkUm~1jRfS2}?{IlY;kR~;ME**xuA?r)$6`D&yAhMZXGuA5rvagdNhAi$t zV*`O8AEpeJG3cZ69j#sPl*G%1PI!V7bI=$||~Z zV3tiHL{5n=!=5OsODq`y5e+sm#wGdQpd-uG`c(un211-ioO=(Oj{vNVk&Q3rsQRz0K4RbN^U*y{wp*d>xJwLUM)P%PEY)v0jJYk5yt_htamomiL4vTd4 z;$m0pNI|eMQVQ;SyssvD!$aGCb$Z*IOx^9jx?ft{{p1b0Po$CNDjW6& z#nX@p=;~vY0nIM#sD+U)9Jq-*EUpadPyOg1 zwtqsc_3`G7(&!?RIt92-kl}fx1qV0WE+->*Ij`(jm7cxyd5@Fgd0;uML2U;S>S&>O zAQMl}Y)M0IPiXGx1w4W5(H!pkN`d4mK(d2}S9;9G1#kj{)^!1D%s|NCK0Fvr$nBw5 zQYP_Pl|ng>6(bpP3J}=^R>)_q-49o0FqmO9VjdIJ_@ghp2Opt=wpmUx?DH6`u^?3N zcyyKMIXgO#5@ALUaM{QTA)0C~%Y7z7Q@oHS`ou-zR_FVoaY_0ilk;JJqy4(?$BO+LL zzpQ8c0-YcEa-6UobN*GzhL@$o$wCyM7yfn%cOJIZS@KF&NG! zzvfgtkKT%u5YT&D0m@>mpiS-HIPv+RDQ$q_ckQHpc-S{>Sh4p_^}TV!l<74pf3dF) z^##|o>QvI8WD%J63^>Uxd0Zt+f~*`%CxHntNj6xq1WOkFIFY0~Trt(nv*8J_OkJCV z-rH-M&-aS^$E(v7qBXfPs2JCaLA0+Xkjv*nvp~SW+?l5?IE@3G&~^ zYMJ@X!1TDP%cu*p3$|IKs0=e|XA1*YroyQ$b6xCK&My)2U`koZ-v0h$2Oaygo;az` zEMAgx8h*B&xZ&z^xSoEOBTtCV>z-!42Mx5q963SPk4NAI)Q=g^jfhOUlx%b5a|lfS^70^cDs|MwC`YTRcYe$`qoB7 zAZ_nx<;jB829`HpASv;2l|9(OWjtRrof$ClG?qNI{Sgt=f=>5~dElUHcx*e*m?uy8 zk1-vNDZPY1+|qbrc=oWA=XXI`ii+02=yIYIZwUXp`9v#zWb$N}VSG+q9{mC2U|sAt-!IY9jew1ofu3 zdy!^XnZ>OX1`4RW-VC6RGTTUH+x*p$+QEMZEy~Fv7UFFV^<6@dcCeX-staiIHtMUi zYoeJx5+BR;%l;t@M+(Ru?v&n!-+2Tg6V7p#nN1hNGU~r)21-E(6XEf;&HVDQy(&Na zQ~Dbjn9@IAy$ahly#l_4f%jWKbZSD{=-SG*-+h3Y&;rK?o2Gb} zJ;bMeLl%Ryu98y%rQ2WS%+*97oE4x1dVS+B0f@c%*HW^O+x^`r1?Tr2eDjF7YZJ2? zyOiY&YUi2xsAD63Erf!SYDZpn;`o*UqEYn#a~*afL(op4$FDp3pe(Aufs=^B=b_-Q zyWF=|JW$uxB>1&68!hus!*p3dPhZzVVkT&al%rdJE;4|9l1CXEcrY*_vZ6#GJuM_$jl#>FgI|F7>AxL zcB8;GYR$9sn8sp^xJdil?g6G?a{6^0B zKmdH5XXSy-gtF?NS*VlcG$w>b5AC8i$fiWDy0GssNhCb((Y+iqSX(PSS;IJNN4u9XFLW&{5OHn;N0!z|o^DGOK@iq(VKRITQFq+uUztGvbZw3~R745DJl>TvNKQsSCeM z@=EovgOWYcFYYI83&cj8beQqY?l zKLIqwiG#rW@^-bt!2G_L*AgArzy*bF0=h>4dYe+-iw~BG2xxH}80YC71VkVhMmz_W z-JAu@H3TFL2t>$wJ>%b0-`rv$#eDL0Z~v^v3{*a0qb7tl+q^Pj0J{9-F(*Vx-jq=O zDXfg*&ygn}neMY{M;bZRwH!*|LZ^Mj8~Y67bnmBm(lanOYv&Pc%nQ*uCzMt%NOTT+8M1KhbFchLb#JVeOWOP!Izn6{`uZE+Ofy zZ0FJNMM3fv457j&tzyw_GlR`eGXFghn6)jJvK&fca%WIAVq0>I(o8ji6QwKo)I&vE zh0zMoqzoq0GfO&mG<}sB3bYwKdV~$r%rB3G@<=ba4?j>I6!_NmTU6eJL#D#e?=ltP z0JS6eUFEJs=(1Bt$LxG_&tbUyZEziijuQM$x?_3|%~2gxJ6W;+{${QRQ1qcFqk~FP zr!C)S1I+sBO;y0~hqKk$gkaztinC?>g8&$j^DBmg4*zOLITcp!{7uG5;kn@2Z9u~o z1~^=B9i|K^dt7KCxuQACh8g;pgFHPBfp@+zFc9&C0|+hWHxOcdpy+cFI82nKfgoJ| zU?5!R)Ubv>a*Mxzirniw7u3U82FBk6I5`KxcY`k0SKn(^j7&fDXR9+JSEdhTIgz<0 zG>`n-Fu{?oOP^5_o=|k3Uw*}L5ze?hJ=y>9JbB&E3kls}+wTrrO1iTHR$AK( zqMT0Rk4W&<%%g#8OULFL*$gEE!0;rnf|9OvVROltUa=8!+fex=K~PV*14Eh7RDOn& z1*CoklEw3Cu^|+sCxS_?3Zjo8LCNbP^4Aqid;?k70J3wta+ZrM`7QcbD9_lxNvci| zYr^I(IdZ529aS2R5NibHRNz2KkU|>VzecGn4#Dtc&_cAT@z~Wzpi6RG((6hJxjCZL zlVu8jZ96}VmZx2|n+05Sxl3_o0rKj6->JeRjDi0CDxlGuo%|v1rDtoKA>!*vmUYqY zRb&BmudFL9L$3b)g#x6aERwh57gBs3!+TcK6+VODB6vkHcD?wqOV1WuA_Eb2ogN`r zkpY_8e8=D3O8Lar1;Ju1vyI{&L;W}z@!i)x82qiX#JeaO!N5`cY=NTIbQ7HHhIBIW ziedb*gohQ}@%gpKGodh^IUBDf(C?v8iNKPR|GZ7L9@(uNT&{eS;J2zJ3bgjjobhXW z${VJ9JZW50shv9<`uJ)N>9QjfhcQ-u)Cj{(#Jz>Uzr(q^$_?pz<%*EuRl21KF)-%eDS|L??`Xc6l6#qJS#n>>ua)8y_LJhjV(gLAV4|E?Dlf|r05Ax3d zkcFTV(4g;O?;4VdxW)k)8(l?Mh*1bsh!LC`mWlfNa#t9AfAaOJW6;EJ(^?IgX8{53 zQHRfcgHU=GW>7srRiHChWeFzc7@^%c)wg9~eOs1sEU@`V#&>++I=t-r?pGn&2=(~sds$eLw)LHa_?o-#A+GBDN_uR@vlaqb z%^w)-RUUYrWnm3le;$%L9VW?ZB$8m1ZT?YlVY;*uOwmx3`=b^sX)C^u`C}~AvlI$# zhqgLwQ4Ui=LKikE$`VKJ(HL#a_~QmSem(VXlBT5pr(HQdu~5ehSH%2l*$PR_E>jea zKNLW1{u7Bc1Jpv-ay5)~WU$)8A17bT5*8SyH9M!wV|4dC_lt9+2*EZOMu-FU+s4M4 z@yIs8mAf*aV4D39;Q;4h-l=L>i|dJWD)Gk6ZYD{l7z9U7TGKHR%aKuXnQAcf9FycN z6__H)(^eQ3QPb;)@ih5(_4=Ll(oK;g@P$6ip}14ETVwjj_C30@wOg8I2|Arh6Tky7 zyj5f^WQP_o$^C?YQm{D0 zd@z4RiL>p`h$YAf)Sqd`vQ@(_O7QUqFd3){0f0vcj&grD5=yC*bW|u6-fSoy;mRQu z!`_r&46rq!Ma-ww@!~h^4eRkSIAGbx1dLvd~{=8!Jzb?3Vo3WIy=$m3aW*4|Avh zCs(xugo)fk2z(VCrZ34z;Xd>_zUWRXIIze9j@@xshTJ`w^bOCxiG7#MDxlI9#EOWc zPI%LzyCPD|skJRc!*XsJ`w-WhM0`2Yn)Ph*-w05XC83sSX9_OWQEZNQ){Ayj{K_EI zQzZhYHhz^TXtp$Mj&eIn0=$17-x-qn#?d_oKD>Ya-nF5Gw27G#k^Z!~!4-`@@rzQ7 z0)d@eoMaBV%3Gb}H>!EIxWIp~Fu@%YgaPv@!bkT;5(|smRFQW6uS~QjCz~aqzAo}a z=1lxKCS1a=OhGu>G9$1&=`$o78J-Q`IUD=_ zDhY!iPmb(P!W}-nSzzNXMHC$#!#}6~P~LfYwCPX`zLqW*+TqaYtmv$}H7btkzYzyh zN8UD&5Q?7_fukvR5Mmq%=!&8Gt`0Zo3c`kiLj9qLlaYhxYS0!4nu!C6EL0Kq_-fEU z5Is=e6ItXZ{Trd^AdRGP%FJw@Zlv!vwN@CZ;jO7N3wa>KFo2gO{rDb>7>>R-ReEwQ z+-;x38-KCa2z(f0L^DITHbxt9qIOnP=$1*)qaGMakykUGIJm zFJ=l$*@5lUNSoNhlN0fg_&I&}2F}ci{?$doGx}nFaW@HPifE*_i>u#O1}?Z5h5LbZ zp)TeV6wDNY#8$>-H&!kiWTW+?5~^d+N?z&Bh@!uN`~`m}23Ii}>@#^GJRIP~)Y$$F z+Sq}#V&S?4=!DqhnODO8#Z3M$SPR0_mf>7K=q1A5r14Bni2aK>R@!gtLkMZNe8_ha znPv4)>#V!zxH|7*{6~mc3W>O*mKk*#+w^54HGP$C!?&P2Oy*KSRn=6_aH65FA{PrW zz6Y|WOIoy_-Ape&@bTz0j1@MDFzC2YhHlpuR6diZ29Cz1*;8I;%;{CR<@DA5z1g>c zL}C_#E$#)4!#k3JfkCt;j$!4q&#vhgWh)02VmqBAgCi84!N6d`MHi3ThZCY}fk9s2 zqKBaKJFteKidhsnM3iYPwnks3qCYJWoCg-8Lnt0}N@qjuv_vm%XY|tBJ0!(^N-;Nh z{K2b2R<;#XS*%m*{e5SRbhidRTWjcZ#=oi&nId{*9`3K1cza=qI@W%m+uiROEEh=b zJ7#oXgCbCAq6zlT#;FGetC&?5)QN}NAb8(bQEbn5R+^n@&bX@n5?i$~t%!IuwGoIB z^XZQ%LDBCJ#c1461}coQlR#>CJ%nk5{1QM>Ux6oQB53N)p)=3d8HX5T{9>UD5v*&2 zGSV!}GuKm+3b$4~jj^=Rji_l-phs`Y$)OYSf?=&81s`QIdKiVBk;7>_7E306+rspD z6qBlucmyOhBU7!S82Iw}31>AhAP0>6LWI`dVPXT<2owfM*xG&{6|d10&VxUi0FEuD*NYAdM&3UTML`OS~t_h9G?#c#&AB7oy5G4LFIocVAyRggO6? zGzc{^E1@l}T%$W+go#ZC^k0yOWZ=Owi`j7|weQEN9>WX@J7Xt0S<3v|nRupQx%Oayf6(SBN z9NxvWPxTl2!lnnaxjy6*Oa%6R(34(V#@enUfM&!@1K!0eX8aF3-ytGYKjm?A0@CQR z>z+K`ED1oK8t>rWFTvnJxBSe`NR|SdVF}U4JQ3ecF!U2-e&!93P zFo+qad;G(9$pyQ3r!3~i-8TwE6@hA?&7v?lUB~&Ad>I9OMYPkydy)m@%V3h?+K{L~ z#bP2w0$H2RV}`udgD3YM%dM>!Kg{*JTew_O<@|NKc;@}9yhX0l6V%gd&UC zw=Oz7Y=bDKk7$Lq)c~kw#XA-q+Hhy!uVv+Iav-tbt-K%{x;&DFn;UCGYzOVcC`F@}CH5L{v zycUS4)X&D)Rjk$9fqMp%dkzT~1ARr-vF^EfJmE3#793xlS_hiRPOD9aNWe2(sLB7p zB=x7Hl8IiC&KyMdbn#$kvW@gaMXHLhh?JtgXHll~Lt<*D{@vcOcb!WHSXc4ivM2CPC#(w#@PWVRCJqH`wDp zuc-e)sc-tGu4>H=eurVcEvHYuw5g7_p})QCI^?JPv$8ZC*SYWL`o6^4LRNLV(1Mn_@TrzsaSd)+#mARk8TjyVeST4TJjejf zPUk7~b$xC-t>_sl%%^M0d#XAfS1Z1tww-867H7>BdR@NnlB!W36y@qmKBjBkcBYSK z=GtfX*RqdC1N#zkkHbFa11-~p0+fyPKyI1v2qBdR$4}FgvPnBCkn%O@{s;_$} z92$ol;F>hA$fdR0l^I3nm&%W=B48Ld_>?|u!QGSW4~wtTi;)q=&bJ9oHCFOdKsfi3 zi!nUUX9+7h&$eW_B?`PT-tx8&&A zi#3#O*-V-N-&?v`fWVy1?t0T85?lvLb*jaOCbW%cG&wFJ;YBY_sIU)P!iq}D3hHxo zVOhB6@(kzHb*B@t;UJxL^jKQhz5YoC4mD*a#b2OI8M~4#Y8C9Z!A{pcIDR`Xqnx3c=HP%`FHHO z41@^J*DV7_h}zZ#!A&cL;)wHQc6h~()#o#+99B}4M*f)?ef$P08~K)+hYUcZqiT4r>BS!jdi?T&WPx(I9CY4hg8(I7|GYXV>s#o^JxI!!3+menq-ypy0=XT*<+e(3>o7 zVs{#(U~Kw*TTtL%C$!Vo-^MF9*AJGOgp5b(aTTc|c52{0|BPrr_gM|e+pR|wF<%yA zI1^&nCd`kf>~&qM^s@?SS3?Cg!;&`%iq=mCm7^O(gP0g84FfKtltRv_T0Tb2uBj3yPDfi7GPV z&~vVMSIl}#@$M^Ot(JZkw;cmnO`cXr(AX39n#~lqd%N|w)ID>`3x0ezZSAuWbfFk| zBy+^_eEbtHb+OR5pSa1MCLH!6ACe~dNX%3`$MRW36@W<<Tg+T! zGVN9JQGlKR!+7%@!|=9Ih$hn?UG=yTCOIP9Ofn`VP=5#P&m>bw#|Og70HMSalGY?s z1=@mzL4hZZZVX!JS*Q%{oZ&IVID;8~AgF{hJSS={WvNuJ`O39#Ax>_p>!p{uF0x=e ztz|^o&x%ed=t2y%hSI#0%HoGRLl+b6iD55h6u>y2PKSx~ylqqk+B_~!m&y6OOmc&O zEWk*d-6CAMDY1tQeKm=BI4(@I)RLT;e>&|pvSVHDG#vdop7wxy1PnPg4&K`D4ri>d zEHB2AzIrfDKNABRyTO#o*e(#0g*m7}lVZ+FX+m;qQd%sYi`4SVGvJHG%u9FpvQ1=Z z0^pSdi-*vEr)Dj<7Fq@|{wIfPaq3n1*JG2;7?k3%YK7#oE*pYQk^je>s`_VJ*4e(a z8r7?g?Q6Rvhw;xBaEiFxN&O~4=hlA+*6*I;3Q7-o8H}UWsTBnx!dtd9*%h_Y%N3Hd zIl23ky+ET2m(<82xlE#JJ`-L{2Q~a!I2mg}60gWBqU6~41&RI8C@e)QvvBAHhK7;$ zp6+c?qibHUclr*;!%i;;jH~PqCKVxYtZ;A zHa+rE*rB3;>!Em*HaFtf+}TgKARNlN>~J&L#h>HlNSf;+sO%Xn0-LPcZGYA^_jrnY z^jcD7vFRBoROq(^r0PLHBgPUX{(Bf_CRa58sY{gQ`lBIRJOO%Zi_T4*K$S*?T<%R9 zHd{@TohkYvn1@@vhxOV5_c2GYy3TZI50l@^*-*G z25l7ES8unR^-PoC{k-eykB?pU&!VM*3}h>}5=1q|E@w!P{cedo%>0>DQN0J+knrY5 zu`0rKcXgn$MD4CR`8|<3*NM7rfB0=Fs6cLs3p_)Wl6)Mc68v13FiK+ zzS8Hl@KONmfh>J4f#3O1eNZ0u6$+$&bwokrd^n@l0G^1a);;lIsI*w$>zcK)u7s)2 z(89C!WZ|R>nPvicv{q+DhtfE+hE9gZ??fXBV^?558CmFmSeyr*kjAa-PO=ea^9kpk z+-9uIOb+dg6`;bI$4QXXHD%b#rK@txBK^i*%%uXN{NZl5Q@K&XC$}er@KQ-3GR&g) z?(yj2oXd+l2A4N3X8)M3Sr|FJCw*kRoN7aTcEnt74>(QmdGvW(DAx<29$=svGgyg< z6tXoigi0>wmk@s#WqIi)w1yb9LOP>N6+0?vlZY7!aH1+(hX&5F7Pgl)+fiiB*L=SL zyI2O?m!ZzdFE%_Vn7$(%k(m~TK7!tYrNA<;v8V9hNSioII4c_+U=AKQNyHdAwH0Ve z#YORg{W*w^j{nLaN@pUwp>)AlK5@yc@`k|bu8cvSQ$5o(DhiPN7#UD^j}9iV)vF*G z%MbKi{M`eO?S4?I^Mz@ZJ5#EEr7StuzzHFoA3qUXoCPn4zwr?Cs1)e+ry0o&9*wvk zr+VFQ<00>U&sMO@5XZP#rY*E7(H$=JNI$n~bgh6LVFx@K387hP2vq-L4QyEMs}qF4 zO81V+dc1QDGxQN08c|y@jBxyoHgBnDbPn+yjh1K#SDh24ktR!dgszL2j$@G!z`B5A z+5Ktlkw=1{l8a21>?uH?Qn@(Tau2JguRjysn8^2SZ<-7z({@~x<)I0W5l2&|fxbe` zBGY($fFz^)3ZlP0z*Mg$ozrXI5MGEvT`t~K{sP%t_y!GOK;y?#uro1da++}!Bj#}M z&YUJw(4&M6d2<*`-HXfDl1;-efRC&3ATB3W#CY$NJGX+9#mXp$6E)D%uUgvjw0xco zReLZ^kO)B%KILOd4(+Yubao7_JYjQZWYvu+oD~fjAEY3BVbJ#`RFm37Z8Kp1akqV~ zoRbZZ=ck}$)L=HP-9ATyc99A)Fjl92ARM&&U4g?p1p2jO= zhkX1oYgqIsJOd3J35m}p{gh&!)6L)la0LaOQell|&4)-_e=>p^qwlV6z#uVGN;;)< z$PPDmA7RN01w9jD3FJN90S__bZ%1&4T~qt|`JK2hN4yfAZz!IBct}m-FUTnWc%vm0 zbvnnBAJpbjT~kuYcpeM=HG|`8_0Z|xdsMvNe;nFJAty9+rI z(xy$-to?*Um_6XOKY8-CtVeynhh zYJ}_yM4OW8jaBdT0IL#aBz`eQ;Y{~eC-#8ur-H$oOf9*yTIH^2zDo@XOC~#mo0^~8 zl$oz8EiPk0A<5f7;OBM&JbXSJ*I#LM+-a>TZ^j=xV%VLsxAyZbo~?e=qdS^i4U|)4 z)^L|?nQu2O4V(#A1Klzy9j*cmm`g;8r(9Dv6gbiyK(Hjsv5jalx0>~BLViW5)a#-Xs-+kP?f$7u1#e(gBA zB}>p)Yd5EBAnmV{Kt7Tff}&Z>N?{sbODdO5#rJg&V=B^=Le=`>lra_+6ym8!``t}q zc{#*U>2?xW`F3`XCd!M_G8J)AITx$CK@OK(s~R#%ww2a|#eaQCsx2zF-WB^{UR#86 zO>a)>5Q!2Z*d5R<#8s;U?awrXWw9SwZ?KBRYyO)lGP8_86CW1sPsCvWY$X+>SWj8K zkPAO95OgeujYEP|G(CirsuB_s_7}9_502l}Xl64wRz=C{n>{LoyxQcp++0L! z^UvG}`%M^Y0e@>xaJ*Ar9*yI^F5~=H1A!Q-R@Lzx8+CdEOUUE3%Cl_jB6oT4{npS3 zj&>tx2C?(8!4L;_Xu=KWVRZ877b3i-5o`@kAYd=h;eY_Ljypq@+|9FL_GLmSGKA!z zu(u8sH%NdW$@nj7M&Dn`jf^z~rA*9$A5Z=bw=a$AAUDT;5AOajeOzGD9Cc-pX#0egrx^xy?>3M(qRH$qQ9^q zGkO7UiC~VckQ}`wSOdi3-e=J2X&(L@xN01|>qkuG3Wkd+8Yu^;Z@c5x8s)Cu!ESE~ zBGh0yiZ{uV$NaOu!E|S)Lh8)4Ri^~O7x(m64|!?anHTT{T}tv*b3!=eK<pA3yC93Mph)nf4f&vk})PpU1K-oS%p|#zHb%Fguov;+S@q z*HV8SEO+qa0v3>)T9kQTL%WM)mvt-9~qY`)v_rgPJugz>Uiy5_tul zzDFnjIJLhEdnHN9*)(vvc&1unu4M@;p1I^#$E=p5NP$cQFicer3 z;|6DHQ%fjF-6)q*pEC(31_Az5rbos*RggnaZb#-J>VnI9In0Tsq2xV{pj-)21Pc$5 z8-WZ-<$-W9jFk=OVA?orJ}+j(UE6-^WGV|D^7QuBc9)4@I1Qlcis28?=7xDb?F+fk z-2+`rxZcv=mb<#j{^jZOT)g%^y&h3f(-M|5)pxTmQSzdof!9=AZVOl&_rG|eLd~k& zcJ`o5>*M_3Kc^4&u*#}6Pf6tJ|BlPr=+axBX(=hJ&C#7PlOxZ=vm?59!>S@r#{6DA z$T?~*CJwKc%*;HiCySTfz+8|n!Q{w0DI-Rc9mg6SjI4-tP@2e6BczOX&>*}YHWmOo zdGa=gxLYx zegExhtyX}Xy1|RvM8i8heUYYa?KtOrrRO9CW&GiGED44g`!CC?4I}5aKakW`sz{xE z6HnMEEdr_!fs`+E(c4k9=Bg`5VWb~Ncb27AJOerBShpT;B?u5m=}3DxQZJD6bXLFL zRZY#zd;W13!cY2xS^+76?V%vGGH+VycgQC+rTIxg;a3v)^$NU^a9>vhWtNR6N6tM+ z!qm8bJNW8YagRxIrOAsTN=(hqOGVr(Ft;erhd(Mk%()2L!Y9*Bi5Lpi&4(xB_-h)Y z)-?ex*9o%F_&f*Zvvulyynk8Id`+5?f zXY7>8!FWbdxtX?Ygr6is-IDKS!iqyNH5|PlY{^VXkia6D#c#f7Y?+NCq6W&)Q+T8= zn>VtopSl{E1XLy*!B#sj;*ox9Tg0~&yKT_i9BD^hfJv@*VJtlQ(-EkGl{KYlCsYnh z9(oz1W}H@#`>r$ci-&oV)|7F>4ewkBN4No{bInLObKNS{Qpx5x=Fy$-`Zhxi{aZ<~ zCC*!2i$JmWUs>H|Ivt!H`xIe5K0WW%H9{Y%jmN3aPKQGt!yW-|PZ+UXHzcaVAG|xk zNxv5L0Jo?8BsZXLdxOCgh#I=ktuG7&-Qwlh$=V<5w}ie2s#Wrl0IP?of486av23>RXBT?%D{oVz}W+wKdQ834kK z&s~g;Jc6LO3la%s`JQ;|Ip!M~h2Jg_ma2)v&4ALq+fuK45uF+SjgdwekNH=Ij*hBT zJS*jE?+aAMI1%=6rp&tKeIF=9Yd*t*2Vedden)$?j+4-vKg=%=5;@vnggtA)OK&F# z#GwMa$&dDYf!2GfkZK~o*q_0zEdXxLt!q}fDbsx2fA|ic25#nSPaa$zR{HA|)|M1S~^1PoX?3AXQwIw_74w(iXDAoo> z7_P6IjWk^Sx-M?Rr4cK0ZO=g~`hB4)Bv^c6=KV&~+P^N)O_*!kGAxvYB6aQLjyqXfM7USpAvsnbA1oBhYRLtM+}eop%UfM=xE!o^kJh)loIOwc5V*$aSDQqNE*lrC4+FH&`^It z1V^ye1QEtcv4As7w1(r3$92#c@1LVN7yE$|7`+dPw|Ix7@wfy7VS>i7W03sKAokI( z!&nXuli)Z~$qjB79NqbO&Tf@zK@-HBqNscO!gqDG#;U=Y?%diHs^NUtmsBnl^oQ0%`8gIPbZ2(!P&!F5 z9M#!FG0@&KiJFOrSVpTWT#4ae~oTUMfuAY5m8bDqgPPUU3quk+XJb;93({W zZ-R6#88tmv3nftd)pvnl`itO{k1YD%*rv>@A=Y`ggyriFIpp2;hm^d6i2JsL+5NHh z8xnSsYL2l$>3&LABj?<`;wU0p@e{`$18X;*bucA2|KKKWAd+?(5C16BvsHjl`1sK_w z{~rOP&U*a%FtX3jq)*V8pz-g9^dOM*DKzy5t?|Fdr3(iU)d^B{6^-&Ylcc1>|M71+ zg9=U+33=G0ki|RqrHM~-@$rGb-#vt1l&fQ8DWV^LL#;;%Hn`Em2;DtR$myme$mXZY z?xODgd|gFk_yiv6OMCtnzdRjA?4_8>_4wRBj5P?<2P~@1W7xYX7;}(Mxtmm*L6IL}IYY@T+Vu4;S`T*&2n%Y1)PhwH+HgdVqoF zMmvPp0rjQD-o_(9e0n4JT;&yn|L9r`i*L$EF_qz#Oz;tm|JlWn9RqS$J0e6pnh^XQ zYa97x%?5bkJXTv4yBX3I6;xpB=of2;xy^5O91LJXKd*kaqS}#vm^TH5P%u_+2yZQ| z1DyoV{jt(weUvLVwwv|#&@wi#eH|kPv-Q22$X|3u>gE{#y}65S$V^ax>Z?Vejk8Ln;Xbecj-udV(-L$!_`3Tjg;woE)CoA=w zQPkl;%;poweCoKoEPKK5oq_kO)zo&e)t7?#Lz(pVJLpBXhH|8f{crfqoFtZ^a=qbo z9{O7RlQdU#p#`7CFij}kZT*K`GxJ77R#szYBv<^>fam_lyz3#&sAB)TJF?hsYL#4* zbj!ex23&p)jn0sUQ4JCO!~A&My9IcJzxnY485dF=Q)Cx{-4mOZxlQcCq7yM0D0F45 z(Je_%gPz#Ej|-9aA|+~)I`3}&!3dkFg!olpJ0vZBOd1r8OrJ_B8YTp^(yFq-k+)BD z!MS5WAn)2CNW6+5YrG&{xtqP08Yo3;=axXe^km*tOd5*ZY1mZY>+6Gt8+S3yl~RfT z;xl-VD|chTL@BfXK77#o9yJelzrNMTR?LCAkgMYcx?)y!>$#<_l)<6@3(+Dw!cs7o zOkZ{=qHp?##k0&H*y8Vcp@&SQlP2-&5G6r}g z95sg}b>u}KzQUTTZAcc=JCK>H;Z2D$U`p$?sBL1v>-gv~?ZkH{mZT4Z+i$rhK^Tj` zq&gkNZMP9=jjVjDM)4g~$RPp|@Odx%IjQP9_|p@|#34G6ut^u>fNegcq1<+Vei)6S zSg!IzvavYur4gGaOd-R9u%ID|C?A*~enie;hap;0KVtto-~Y&%tb(vv-mOfBpYFs! zAk#!9Jl~w6=Da&$G+?+X6Ku5ceQ2rAZwL}nm>-E5!Ew3ZA>pm9NL7Uy;Wn?kcQrbE z`0eddWUPHs*K^+HcWC`$Pqr-o9gxa4gI!`=W+8sVB7d%Uk6`um6MJQQ_v9>ememUnn!ey2 zBZo>yrF?BrwH+dvrG!ho6#^`AV?{6U5wVu7pDSgOrYgjQ7qgamE9w(}VYKE0ZLdO6 z>1h!q5B6+~%iMYJRdK{_Wc|2`kJBq`&Lus|Y=ftdD{{H{d%()~P2Bl@PX|BzWka7z9 zvp#uI$x;07UYg}f*00`-)t#{&BPzKgF6MBy>7+7ZMT>QD{M)!lU^Kbs?jZsyJXN$k z*BVprZ6*l`gMTY*aDfLRl-%u+6WRB_rvsug={tP6)7O4|u7$o>4h$C-!p<9~115VE zFV1s0Zr|?SF$Vs+Yxn@Y=%31K&-alP;(gvqj&4b9n-KaIb^_zAu%-L&G=AKlwJ8OZ z`mbEWsw(NXDZ=o~{INljDBabuM{gd44U$4gHrL!z@jm%E*i5kTXSM=T#R_2cOY_fk zQ}=O3940^U%>UK}QjU$hweEO~)$&W-&B<^SYbnz*Xj`BXc?tnD(GPdw=Zc)kJ%d6C zon3fhJjyTcsTR`n??2`w?T++KOR#-ga2b0A(0C@6d@0f2g}!MFU(E@GHX-m`=czeI zWo<_4Ssf3TJgZ6K_b^DDaSrH4A3QG|KdWk|?_e6i-|^f8@{A&l&aCWtgpjZKV!%b3 z*9&8(mjzmckZ%Dak&xyilwWyW%vb(xaP7}V5ogxOpH0P)JI*`>T~Tbl+3{~h_mC>? ztVQkwY2;eUiS$;i#(wiZ#Mr43;YLnTV{c%X)AuhArLInWl4V(oxVBh!X(aCcEgq{e z@e82kTqyaiOEBI9elTxjyD)E+_A)2ipUJ*(?OYGp19hDlx8Lcu8FLj>3>em*z^~GFfD)++pK_jWO7s^$$`3buq1Q zWPTdjX&o3T{u*t#XBq@4{$&xRaAaO>v7oJ$I<>cJFSs?~$%$}`;bw57f+BTsJ-6+! zAqk*}0QBVBlNZ?=1iK!poaNSY?q^uI2k$>Nyk-j7$@9xaiSfrFyAB3#)EVPS0sbaI z6kmgDS9FIhDPCqLn9iM~lgIFpfFP97fU3a!!li5)yO#Z=q89DHMh&p#s2Mc5+^{8UnAW?^Gi=rVNK^o$E$RoJd>|R4+lA|#2 znZ^s>y{9xEAa-l7tfa3+BIb6&gQ%ZO?hkap$d%jhnHU_b*z z+4%HXcfIk_f2xi+5ql8n#;ARS}b7rUz;qMVJhhhC&;?>=- z?TLENP{O=-KK|L_j0X6|UK1*&O7iX6RwT9gFMOPczlC!Eh?XT75oGNi-PC9T|BEB5 zGt%T=f^K^O#G*IfP=&eO2e&rUUmh4ymXkI6N*{q+au5X_$zBn&rsOu$0|da^4BPGb zsSIuTB>$oDsa1MsXq%(^KEdH^CZ}p~n>?_wyFZ)A*YV!H#)uZ1#`jnY_3KRe*nFzt zUcjL?dZ9#dGKV1#7DoFpaPme~AJb1R;N*T?zE}DQE~tC`1b%JOZhQUXWGfXVg}XIw z7q5)NHz=v`{PfuL#=O$w3ortr->8krv$+qWJN5oM$Hn=@>S-{C@M^NG#Mf&L7l&oN z?D!+uGy1jcJOQKi((+%}C(x)(*Co^v%w5&@Vy&iiAz%m|_(wi*>u$j#(G8~^WA)7v z$FjwLtyOTrQsC^#l?FU`;nLV=@v8yp!)2xyA9;x|Bo7ZY;bp>)z7=q-SY6+}QJibv zu3GrGp+!Qs2O}jCdPiv27lHGIG>Y){u)ud#-tS^7%ElXlL9|2DF6;n09(&mT!hGa0 zO$4$S%E13He(1#>5yAUZM9}u>N6K7-9hZ-Y^wsj_&ofibKmP5DJ)mAOr+Fk2)0i)w z%tVGP7a@8Y6Zw!B2?_)~qLryGGT9?)nEO49$r%eZR_&&PrS(yj!iV)P1&cntOpgj6 zdbu@6H>K9*&3_bRG!OjzzU4A|7^#jEj&K;03K6HjXG%feh@#rbr{btFmx`!Q7kf`% zk~!XPL=AGw_Kl<2#^eJ(3RmBs0uR<^1eR5izXyMST!IU3+u2x5dpR8zI-NRiw zn#S4(CJG;5m4LXrby@c4<-1XAoWRMTOitVfmvu!uOk_ZQ3_t0c^At5P7*Pm*h*k)H zVO03z+$dw1wzOr3Z?E&(h)~1{bIJwF8Q7Kfw@b-@(KH~hkv^Obqm|5^o=W&L6(iLpV&cPECYMYZ^$-}*kzT}jd)rA?TcvjMUPaq* z8_GDbB))&J>mP%=|omsM7 z=AEO!?-pq8YXJR}l=?SGY0z15YZ}BKCRB2L0QvFrg(-ts{U5~E>&{)Q!M}ZswB^iP zx9F;#%~LeI7uH9ww#a(&T?%OU_qsUy&ho5kre6bisJh>HRa&qxZl$R-#?*N0)<@6Y zPZ{tgS_c7%3D`38Z)~GU`SU@^cEh49kuyU2z1sjvOZc}HxM`7>p0fsI{ehw(4z!KP zx!pNX!;G_m!cd7d8Rj$Sfn` z%|#!$Gq%C0v&;#4(;w|vw7<7Bvl6yVW2Tctb7>KjDMx8ZZND4*BsPk5FX**V;D)k} ze+37wEHVQ9$d)1_FhFsp3N$Pm4t0JtN>}J&!PdEzIGE|=jB4%djx3Uo1JS~QBF(B= z89(O!I8g^CFF}j1>2L-2m6}2PR-e2rty(1|c8xGa17AAh_$I#N$#vl87H8pX1p$?G zX=G6oPoJ#DKz8*aZV)#&s=DqZE8j{7+lS=JyRU$<6V_-+x%BgATl&-J8ZTMR!y% zkX|CH`wTOd!BuExH4Dr1TU?9XlK-wTaDYZC=23e%iZ?sDdK$UI-mTsk=Y{=f}Qyh z_{_=Yj39@2w{p^*`nQTsl{M_cE@mwneHzr$n%v5go_r@@m}Z-Dne#QqPFu}dZCPnC zWXlfi14*vvOnNAUUXM++(z=L7CI+&|^$?w}Ix5e-lzv_mow~^OhT5WheRf;iQh{;- zPZ!lF_ZY0)Dls|;6}o0tC^%O(n1-$Sw~KA*Y<78dB2$P~{^^>BRUEV4{35lAwU@wL z(r4I%UamMG_AocQ9kh&9kY8XevMj#(n_HZ(ZjF1r{FtN)5w_*igg#q`Smg zMI}c{=Yd&hCB0Bgx3O>TItY^nIuHa`rXS{y8X1xnRG%WF;V+vWnT7t z#FSdAn0?y=V^k=GgYK-wLTq$(;&(Doxhj`9(Ofowm?H#2-*Dlk*6q(vBsQtR^RQ6M z6)8bg=)!O5v94rdr8kW5^~+ck%CYHZvo7n)WR5sObKjMbX~UI-%YGi7)z-n-!ds( zJXluXDkP{f4+~?Ghz$-QiCdXC219GE3`dw~5&=T=n-{0x)KuJBESVoV&K$(0l`;{C z@;-@HiPVpRXpb&p-2e<8WgMB(^g@jJTn}Z;80uWWQgJk%r1570-H;%6(OADxVGrx7 zitJ|I@KDHtw1^CKXbVXhwy1=g7`OZ-u@EZ|LcI{Qr~wD6it?0is9%Vu>UWoiz0f)= z;=;Co6hP8sVKt{Ar@jpF5K*`-8p*t>i#p4|Tv+T_%k0%kTqSFzq=u{@GCKo}AD=%5 z9gCd5kP89dWZ^NW3nezh_%qu@Cm~7^<~k2lEo)1zJhBIO0a*~iLIj=eOw1OZ%GMl! zfG^GUUs5Yn!C~8zpcay13j-~XN>8B#Esw<5amR7V2X71z9}l3+-9B*x7lBy-0}r>1 z43kQS=V4-$2wa1sT~vk7{yt+MT!gFmt31k1@V;zPoMN$L_kwj(X&m0mz$)-q(2WfZ z>|Yv4S}qj1S7!uwuPFqg3Q-gLjQDq8pPiBSdmApZ(izSHrgAu$5E@ibNgmX4T=p|=HfjTxt1A?i&HfUU7ZJT=XnYuu(MH6Vq=JPKtjWWyud;(E?{uj^@K?kghrUh zy&!)n%<>pW7>+yZOJ{-w?fDi7cEKwe3HHD&$_w=dU&{;56O$w}Pg;px6`CcnQte+Q z-niWB8;*F3mkPoX>YpVMT88N+FCHSLHqh^gsV;+0fwtlahb6S)DQgQzO`tH%)jC_D zWd|;z_9>pLz!W6mfyyjd8XiYgDFyh%)hoel>`Dn^xXDLD%Z=1J0457$1H$smUPuw^cp6W|=q)9yo%+gn4dD zDpa^X-c^4H{v(YhWEvSBdFQ!xBccbW2C<`(Q_79@85eC7WHz7$;?rPYkkJYa7l|FB z0rTM+oj@nqb3wX`;vWv^loxP?@NjqcomQY_6jqi6I>36(?^%k2AjywF23FR$RvqP|a(?ExJ&>p}Ox!Mr29%r_S zQ)!QS-&b#IL@n7rr$2~PNQ}`y0uOe@od~^1jt~@TV+c&T3Qmhqi#8^I;$*w#X8+8C9C@Hx~vmnUZj ziUo&|K~ThFF)xB9pT9p1#@_T99wXzOei=;T?76fg66N5#5%6`|F^Uw1LuT`7Bpk$d z24hJ|-~+T=;$CZgQ{j((@h=I58AmKeU9lK?gE@ucJ6Q4c;`jz~H%)idk2FFyB!a;DI>7{DSkp7YznM?>D z2>Tt*VC1Bt8N=`_+;rlxYL+PZsh^O6Bg(s$L6ASjhA8}sd@{7_ZHyQ~eZkTK^Dd%_ zJS$a_2z0Dak`PHh9krs9%#aTEE<;3E%TiC9qKF=Lu9XW^a&x6-^FY`*AN!48`8(2| z42Z_|S54OXHXdAGHmF&M(i*{S(OR1bu8rz!+-7d8g-;$G@-x~q`vkEH3eaLq0~gUc z0jYvg0%O(~>wnUfg+r(+m?eiCsh=mKFX`siAVUTr9(WxMgTa>3jcBR`KTd#As>oGB z_+B!2UD%5(Bb%7pA-AV@VyA^6Vy$E31;nsX9g*RHY<%-x#3~rP1~rE0F0h-0MNLlT zoc&q)1-N4Z=HWNwE);xjQor+Is1w|mLeX@jN+Z)4Y>2Jz1f#rpC*sr!LIy_9|p7RkNLxX#2(#Cc@uHH>qGx2bUIq|(^p;G(u?~Q!_->$W-GuC|A_Ldk#vSufBu@v6EW&GC0a+3+QD0@ll&vCcNMjh8a4eP_GZGa3 zNBE*OBNi}sQY}QD7*Rh}VfU2EF1u3NEo=<9PYgx`GTt6;QUxlr!o{O?MWz=1`QWysYe zaW~wv^BKru3nFr3m1hTM8KoZ*?7~hJDo>rs9Rld8F~^65KJJZr6eHG$-0HL&BT7{D z7!XeN-@Eg-pHzKYRunD8dhkx9nmj~+vLW;&drbGlDT*! z^@nTvyiVC`un+8y$5$A(P=bSQcoYrC?PmM0>!HI$eXM+RP~Db#m!jG*Hu8^zzfwq6 zoMV=>dIX4RyGsZ<&%p0J7c7|)5HnW0Z6XeI<0@_~uMf+sD)Dz_&r zG4IGCaEp3#Q>d{btmE+>TKj9edi7PIXe!8Y%7Lwat$y59R$tLbmOCs0)LoO-79ssXlcaWJ#AET0(7`lt zl3|Cx=u#e)^;4*LG?CJJ^8UDGolv_KzyX%(ytMchvoHRAygF>Q1-jGy4Jj_Sv(MSC zzSkOqR~Gdw!Zr&552%c-zTcbhn}{hRzl6jt#w%;Fi%)>!^1FR(YA) zgy^ZENM?PrgFMHhmkH#TS|YY-yEQsLU2cIcA}E;R&TKdqNmO%)vW`<&!=WoHQBW)G zmF#Ix-<@v@Rv-Ibi$;s$;($kwob}BIgHr{RWmzY4$Sn)IaIO8i>)Lo$HH8~D)9Q!W z;+5S}MlvqPD9_hCP3wzP`^V>m~e`;P2Xw--X66^oI}M1pg4-8M{eM%QFX!Yu9_- zI^7C`z4yBz0yQT7z{D;P@SVnM@&1qmbF`LN7yl`|0K5Dwl9*<6YDxwf>t+R1mT6-_F;_IXE2+V z&WY3+G4!K!5Av{f15e;jy&R_}zgv;0?}dczHKJ}Vd56lXCEUQmPaPPkf5zr#6OdHP zyt0l%Z04!Etv9Wy_|q!U$5a$opQIdSTHZ&B`3c8jKc&ZV7_L=h8wpnp*tlz#na6ayJJcnz>OX7VqqQG`1@Lwdj7tYx7T- z4xu-I?BUVxH-cRrvgPHp9)&wMXLa(9y@Y2Hm|vJ#bGZux3UbO}&ZE^B95b$bjtX2; z#2j1Pe4tA9$=d9+XdvAPAh7tT=SQn`4m2rV|1w9Ji53@p&ezGFf1OD5 zCg1j_eezF%Op_-$>wdpQSjNXz!PU@xi%L6s#kqZ==Y98){qzwqTWNi6l)mMXRiAlk zfqqN-ln%nDk~YtVK7zv|pCFd%Q@p}OJfLV1uXu418Z{F)*GzO@#0{h8!z-6l6 z>U@RxAeD-UKCp_Rsq?{CbNtuwz(6&a@^4>WFC(#^@4jLH@y>FMwe#Bk1-*duFW?>8 z+@*O4#!zxwwf;elO-(73stxb>F#&TuYwtZ?zcht2wB%E*DTVAUFkO%<4D=a(MS;Xivw}oiYdRBG zRzIG^S&5T7X^*wb>D2OdivY>S?T*Fs8>4sAM$<~o$umA-D`eWYxZXBc6#0XvrFNcE1^21~E_~K1r2F1VL%^k5Pk^Km8-<(X~2;j#MW|}%; zRd8mXDu9?=+NpozKv3rL6f zi~4Y(Jmj0$#R-3Gl7w%*@VUo&>fpvOVF|WllS!-YUIuF}(5G8I;Q6*oF=xOb6BskH z`nRCv4rBd>br2ghgoPY{Gnd7hN@WZwp&H*DV2Bm{SNch|*Tp5TGtZb5=Wu;3ot-QC@TLx98k{?AwS-S3{Ndr#G`y0><>YHNCW z=IPmQAmS%{7{!4 zYG6bsLX40br-m<{reAV%9A|;M@T^Pu%RQQTAY<{AvTu}>b zBvOMY|Dw?2HTG3*qxc*?lh9;$Z5#ap_{n?b67K4Eb`F4jYyAfEY@mHv!uE+nC94lg zRSqT7N+O*DCajW39bnA8x-P$Mg>w5*qIZR~1-FGcLNm~Xna0>b)6n$~**!?+2ASsO zzkfX0wQC+Kn>N+Ilm9Tz&NS_@gm^?aur~K+?rQG3e&24>ZucbZc~$SG`eJ$TLf4?h z)2~f>0hp`CNX@@pLY}JzrBXUP@t_d8@T;P6+5ggv1-t2uQI>m~KlWA=N8~MUQ`QV1 zxf`IY1n@5h--Ii45*>*=_4FIX%tE0MzUds*wqG_IjT{72#3w%4dy`pt)o1Go$g}TV zHlK*1ZZucAhV*5`Qy+sOjVXtEl2=%6%DI3opsz(shdjTU=p+^-z4`6^HiA)s5q=#} z8a;mPjn9D`k%99dX|^*{GCqCBR4s>oEaW!)i!Oyp(S05Mc?Kv18bjpS^}2A)HKu#> z#Kskk=Q>ijA#AyLqvK-MazS5>>H*Wba^{Xb@5C*Z`oIo@)MeoWec0An*ldejIfvW} zAln=&|50(?{CGS43)E1`{}=N^oFh6d+`p8ZJb2l6xec?Anv5jZ*XsH(%9Z}$!?&p* z*9{3n+Q>)e*^uj%5gk%jAY}O@Z$TH)h2_JDWJ`u*mAd>~C&l_zRP@b2Ix_=c@gTQ5 zMxMO#h-^4Nte+zG86kgv=>H!$*&}ve$!R57zptjulRuFYQ#7jM9YH(x@ULGv*Zc7% zu!k^YxcB?T3qEX#)QcFGX~3@{HCCAj!8)z(FMJnv4(DebNkjyzJ!`Zu%4#uo)y_DK z=}BNX{%HmUlJS8}@ckAlqWk)HZok?t6l(haio*W0GCbvTgoFUzlWxBW#cp&dAd$Y5 z9GA|?PfiK$e5WCWSHj^6v~XonfJJ9|jG@bHp7{OjBcma{4tq`^{Qg0Pe_6bCGm08o zI{cCY&*4-+v^aR;&WcIYw_jw&cu?l6Wu)46wsiJfY%kF1fF6>2cw_`Hqm@@9}AJAe9|6 zOr-w?%iL9mW3AiY-qeb6(5t|Y&XtSZQPx^vusw=S~&yPuWxd? zE6wquU8yh^v?TA`3kSLL?tsxqd3xVU0OjLy##gVK*J?X7tp$G6zqcwvp;`4VrzFzG z@mB#KQ3YCLJ;L>`?$bP1#1M}<1Af_VoGquk9}{vm3V$pmdTTN0Y!yTfnW>M{(nNis z%g#0lUn(cMv(C{Ue77I5-0hu)3SB-u5oOEMvxvC-ggp*KsMnTq-&XNKY7 z=;GZ_`fFN^+Gnc<7STK6^dJ27eV`>$w}#o+Aw9h4-@bjq-d$wo*eOuAM(h~YRrp_p zo)fm96BxoqI2+@{`0|4xC2*kjn2^aWs)^!;gf8^@O`M}F%Pr-0t zL&t;Yx7&XJ_rh@O6p!g(_FUk;Rk^h??VV_@fzejDVo6^vZbP_!yWIEzVExZ8VzKo2 zce8JgRT!9%YY$TV#NlD@tVvrh;sDHP^Ld>wkZ<3*-dql zV2odn!(FiV_)&2yS^(;E^?-3mTL;3+m~c=!E)?+vJ3e`>W4{-orkmnpdILY|5ntN* ze|SKz-{C9Vsje!Qit3NbLANj+3Cn&Kh|)-9A&a>uii(TXj+t+T5M?mspDuDtH16t? z{v2oAb^Cx>x*xxPSih4$0;U>1j-;Fz@I{pzbYzn91>!n{q5t(4YhzpcHFz7JgMx`S zN1FjsJJ&WRH_AXLt$=PP`-v|2$1i)A{tGZ={0r`yZDgdC{BoebG7uz{t9K?pUr#0r zUod}R8W7#bNeQC(HwdZlw7B}Bo;F#9O>9q$;k2k`=w@|(pxf0-f!f=PjWg0gosCTp z_U!|N7hRoRJU@iS&LsC72_z$dzH$1{IjOTxdcHr8N89McfVOaG(o}RY`sPv)Ip7@B_guo=NkuHoU-;d`9`{&Q-XJx;0E9}4AyJLA%tVj zpUbw(_sh4+_sVxp1|i8}0H%fLzi1#ojpJm$we9M^u@6RD=NI47cY z4mbiHuu=5K&)H`60lQp(;?rQiLks=Ua1=V>`i1f5>U}n^#m4;eK8z>yr3V?Mjst-( z{()Fh#9N|YS48uFh%#>}i{oE@&J0RQ-!Mw~#=WwoCR2Wv2GT}{<2m9k`CDqI(U=?> z@M6ZE;%5fevF%O{Tco8qn8GhwS(JOzE3a+Lg>Z#FOJVpCr2l6y&qgRpd*AE~AiZdx zUh4xaeCGpLHkSKLudDibjD^0y=}YPq%sM0N@cGxcw*TrCVQsv}EJ<*PQI zD!%-1NGTjBXWV8C4y5-1EX|y?&PxtaO>|g}Oa(f*=`bkU_TR89eTc{>ItJYyxW~s0 z@QP4@4pkM-7bHYE-Y2m4E*Wxq?~=jLOuR~nRoYSZuWzxgC4=|!`$Frw}xr~7?dQ`h(h{=mH*Ij^5E-;FLC z*xyANYxiV=1b;+QaX#p^_(&Z^OLtvh2(u&uh0WckO?Tz23Y`Mt|A-yn!YL zRR0weWF)Dw`5OPS8rRlk2m00bY(o@j(kYM>6hMw*Nu}%(%#KPogxVi-n1M|28v%F2 z`9VqA+6$^KX=+os6q&|602>aAe+wHnk%lN%QiKwUACBizu|{~@q|Cc2!}yF?>w>Pn-gB_i&?l}h zS+tZUdcC^x?A){k zV&f@&U~fqI^ z!Vg*?l+LV4GE}l*^L952q%De5xRG(ghe5S#^inTX2*2vdSju;iLP>_$2`_<4Eux3< zD_O?;L5rS?`N5bzi(%i~SQ=k2k@Zpt`BOcO;db%-%vBe0{>V&O?q0KLbpRW3y*^E4 zo=2V%=kzw_I z48kEH8J9IjUMKr{Egan#bXiR`+-DXLCh0;1k0s6dwkduhf8`cF$VWDeuI^IY`wX5} z#z_u}RMO~yT34G|n^YG!fmV#hJx!0pFV-?{Gt=6lfh~+$j^+>`5|?`pA{8YWxaX4$ zLuNCrLo85?F*6pqBmsH%cF%xNq>+6B6T55KF`qLd`su!MPG}1oMPm*LMuri zeakX7>7VjRv})Vx1aYH#lR>qGGi#&DjPs?T5F=oGVahPZfkzY%8z6AZ+t~%tF(?jNXHbq7moT7r*u_(3hQ3l}c zEo7nFjPoLTn?OYKOfX?|QuJGUG!Hfw5A-dYzS+#$Vv*wMryqRS0tw{mobeGl2RhR4 z@FKLVflKq?xIiTkLzjCsjgN2vDb-{M1V2{j1;3CAk}i;4{;^N)m%V9LRMbWUIbVW1 zR*!8#bkQg~pXD$SrP?3)Hq%AQT9_R9s0uc>U$`%mlfJnaqrHFHdvT@A*uty>3&Q3L zP$nw_e?=g-iI>SD-$uyC9S%h-E8c*RW17E&O#KLzXc!I&BJp;^lKa8!4f7%}!^rWk z@Mrr3jNCKngk=9Ea~H$T=Wd+{TCDiEA#isPkj3 zf!WV{$uLcOnVjfK+_fLgW!txS;y=WRk{5#0zzp>-2F0NvTEz`+V3`k>5U{PQD z-gE_tOm5>-yViAMhhubeECsfs?P`8Ix@zwQa1Y>4Ad-KNr+r_V>bd6lyBagf&2hRE z<19);;>|~Rmn&sHK=M~HtWWQfY9I0?pSzF2&z8pF_e2*`9K^6Cl4j!8!5}TDNdUBZ z=tjvi?HR?UnnRL=s6irk`XN zf>RrVoP(ueozCwZB>>|bqr%5xY56h;a4X3h(PoCcGAED(=%!68UXglj%H)dQU5aO8 z8cuMBFHm$$%WfXbbLJ1r|M*NPVkvlfWCF4e)GQ*toDn@Sry!OLh)s7RlT(qib}o{S zg+foaWGiow=lh#vWTsy)3^4Ri z$A6E_;?$g{*w|}IXC`C&wIppxSFOxcWnr`_G8kWqsyAs5O5ZW#fO0_Ens%lQW~VR< zU?&P5)&2tB*+CwzV>Hh0b%2pi7=XfIY zWQ5m|&SLU)qEtDoj{xb{%*^)y*J=T=0lJ3=5d=F813?t*1fM}%a1n}~rMYk~ zM8_fa=CE|}M-=^Zn+1XLk+`>_LIZJW^e=7loMfEXAqI7bdZV;QpZC~-BPtRz@4O4V zUu4W5n6*{&E-3vWWW83usjyP&Rg+q3g2i`5kuqs^6UFy6qg9Cb8TDqB&5b5b@dC~z z`zs)oJg}5-ANaA}YvH1-3@+*!BY~-^IBi?wKW;G*=?7MHTUY45&|1atXH4+2WYM!VIeadRfIRHrjAh!R`PRJmFfHvIz)zJVzufHa5jd6l zY{!*u9<_?|37muIxgNvM=7D1!pL4|y_oF#KBK~*08ZGkPQMNTK&ovh=?^X)^8a#H? z@S>b&|GeL_@b7~ubC13dbS{D-Pxg!haN09AS8)gtO}}M2Iv)W7o`UrL5v8?D@x&X! zA0C*UQ8qQM;%FoX05`MLrsEJdE2rZ(H~<7PtHCZx}-*ETO-wJIJyh~X;9IJHs zLw>P@h$S&cthID_gCy4PL3*O(ZzyX;0tgIaPY|ct46Q5@*iL*d~0Gm17&R zu&M1E0jrRb!H4vq_a!_Hr|K@LUlF^_1g6Qb-(d+$$^bJlASt)Q#g+wGeoO=Hho_f| zkXJo~jh@*NsD}^`h#K4e`^G??_z0e`_Sw(J>i`IE0i3qXT(!Wv^nOm@weJ4bo{_pqI((6b^5S%Vb-A^(bw=yneSn-~9rzFs&0@Q);l@zk} zN9O03e-`9F__ls8`7`$F)YS0;e%M=kzHeRe>{+oQ^|)`nf9`pGHCbG{2tQfb+Bs`| zc^SI}&Pdjo%cLy5$Nk=XP~y`Vg!9_NG(3OIs1tm=aW{DN1~F!L7RAo!lknazUn`Zd zV85Qhwp0iszIZ^5mFHJG@=n?%G9-0(t|@ajk$r!ynJu{7_TZ)$pN0K+YiOUX*i!$< zh?HuHpr9kFmNJ>t$NTF+5|@M(g=E5PMaqQ|SfXn`e!6j5H1HQX1%tzS?w_|hFDf0; zG(siGlfakvp5dRI=A())WqH>zWUht-3J?ptENoakBvA!wENeG$H9V4g7)nzTcr{b>v!O1KC6>jq+n9m8_4W(o6${%FawTy`5Fs`tOj z5+%;Wn_yNOK%7j>nte-)@055)N_9S99igP!#n@>@;CtidNtTm zXZ=q%qys{sh(&zII#_Cc^@JyqU)r`y*MwW2FYeqy?b|b%4^BiQ1Oghj=Fx&kfY~PO*ZR(-(s#(V{Is@fw2d*@U-H<2;T)bag`9s;1)os)QZK=qgZ zzh0WhZc}A_L?~9gY}@qix(+&knLx_M6JYf+{O64q=OdXk1H}RdGfH&%;(#21PwcwhiF;eRJnT316FV8&L0vu~Z!j|{RXJd*xm#Ac24JUPVTp)D<2R#P~~x)`4$wk~0c%ej|GmBO<;InevD%#tDd|-7#F!Z^cIkL3ZuJym>eBUIvm6{vJS&{gWa0RT+?D5^{ z=%N-XIi@_-S$;PBO2f845LkmK|IF`H5hZ<;*oYo0*DO=--v7;irYX=YR_{Af4MWcp zk~2eR7?LwI4Fj73SV46`PL)RC9W%L;QZ2O#X2lkC{oe6|i0=}kE)6EbkaHkLe0Ksw zoRQKPy5f($RmV4}5+^LRz;HvZK0IY}r4CI|K$fih$mneB^)kUHR3oHi4w2jZXx5)( z^lg*T>fT*+z12Efi0t;7P2I>2S%v_W^i6s-qUznwkLvmnP%CBslP#N)Mbr+Urmc_04Lb9?U5)Y94tc>1^Y2<4y| zEtE1KPeubTY|K+DR%p-V@6$cn0M?LZUNHDDGC!^>gQu^IdQL%c!dLO9H-DS7gMLv* z)YkZtnQmxKOV>W|OpGYv4mGy$>7N;>j89f^YdMSBB8}=_b_qH*eNc{v<_JQ?TDoF* z?O32Q?(Y!o+@Qv!&?aWu9=>5WB)sD&4zb}-G_rKyhj}FW@W?f&lOR{h;=K`9cc1>i zYTKoDbqdaH)^#Tz@66mZqEaJ;e3PzKZEGbw0C59i;<$K^Br-fl-p?pP$!MMeRD}1sm%3MaLuQ3Z*#$}2ZER_??g_IU z3D{1F|DqO$Pg!4sO`sCMtQNNeExMfCT_&5t-qQ~ms+GmZMOswA6I0qAlU{POJW0b^fHxc%2EXZO9XwIz?%fQAWC97SHC6S-;XQW)R# z6Epa-2K%ELn2K1hDpoR-a=B4T&1Ui;gHPhVVNO6kCLV!U>ulkO;fH-22M$idNq_t* z8NGR9y?F-quakZg5=*;4O8VK^Xqr-O)wEK=VpVfvdT}@?pgXm#vQbm7>^h(p=qA9ju@s7Eb5jp!K^cR8rM!e3QSN})YJPr1bl33 z*^5v7*leM7A@!4QM6rXW0E3b9W2@CnrZVvPwQk%po#81@5NHj^O@MYtXMLJF{+aS< zsv#xfhP_uG-<5O+VO+D;(xw3|(Y6l9RQ%~n+o;8hadN@6%iRo`IzKsM)+CC$GxkTe zu>&cc;cgw47)$T$M2DVjhxgpi`G-hR&NX9=Yl*xNaBkV-4=2(0KAURumbl*L)%+`| zcw$jbTf5|u3E0@dDPwmZN>&9ihSX3r>CX>WCjY2J56!ZTt1nYC%8prS%4bBBYT6eo zI3-YGobPpRX{By^&S3O~zi4P0Anb|8U0)`BSfQ&p%eWWwr5{WPfgKt>@KX zu5>$R&H7C_mV;q@3B}FT^FGg%{8lcmt+iIk+NZI?OI54x@&7=dV$3Cii+4DKKjypZTlx1Ac0?sNv2kHpbbXcZza-8v z(M{_H7CVMFLp0NL160rCs$j>s+pXm^Im~a_ll-uIwMXcg?*R!)Dv`G?6c)8SY+l$*Rdk^7D8Siz9 zkm;{RT;`ft&Gy!R-|z3h2|`y+(`QYg@RrNuMS*iSfM>kBKEBm8G~U*p*N$$6zcu~= zh`=t-wUtV{`t`3QN!JcCO!M!)^E|T&T?=0{Dyk#%zAowsyvWQYi(0G+yOS0Wy`I8l zXep8Z0_QHI03R=|5sN2vcvrOpu~Uw!!X_5Nurro^y6)W^czkCJ7t;EYefqim)6qOr zyA^%=dsUk-W}({jZ+y9{$s;aWEDN-95=6OmO*N|ZzXt4+4qcD@&*_BhKN}qQ3;GG_ z3n9P#SsFs2*gLd+`!F*>EYRl9^EyOa)rP-EWhZosT<~CPBgnRwLzVyfZB}q(aS?)O z!6Y638wuk`(^m5-8R3MVr!3DHX@#HT-<8!rD%S!qoaw*-;u%ci8NfE`&T^hLb>A_=Ez150 z(T$2CHKzJ5q#s3gNE6s19H>Pl3WW` z+$*yvKZ_k8y4M9}?*_5I?(hPAWBBK%ito^>vycFW0kLNjE3!VV6^(rgE$eUkdCbv_b+jkd@=?)cuFeNpRlLIp z69IKgLdl%jFVe0&Ke8@Pr7{Ashn>zQsgpY>{$-ocaMQQqNQR|^i0Dk}ldaL#4{$;L zU9v#Y`vPeCZ*#@_PC4BFumQi>v7(##-l*kT(f|P0AU_i4-C#kltG3@MLS74rm|czf z5&yB+pSlo_LqwEi-9*|fVAhbr*5a`2^`n7AQnb`rw995aX~{nIaKu7Du6Hu_yTwdd z4)^ty`74&uv|L5@nrww8M?Hq~COO?Ioo3%%Z*~gSCjn{SWxB$9zazwUaQpNR@{2jof8UTw_k6|R_uswy=kg7dg$+d^osSkF@^BKV!(B50 zH)}Vu&TnA)5p~r3yI@wU^x>)5fJKnB^SXycg|tlLf8dgBp=E5BZ?C~{R&(UJq*_rQ zuer+~L(a`IKa=|Sx|q~Wy(SHC#&uJdwhP5^IK{t1ipvt+V!7m!dY9(FV8#DD6|=1M zCv&XProttqmh^os`PWC`d7ITGr(w{4dAdnS@2ToH&s$`@i*+4o0Ioq^6wXwktsa5K zibiByE%LAbI3M67&)=i#l8HzdTCU+ukm{{ftH8fUBX2NgR1Ca_9n*R>Z!&Wc-M(wW zjX2VI?co1yP|*gP{w*yWMekT|BVAh?5pc`&rftt`SVc5|OFn;` zkzm6M4uNXAANbz!_%I-Jev$JQnSR-L|NQpY)Y<;D^>{hQzSS@+vV;;WFNF4VxAYv& z-$HL?$!k1bt9NHg#{E`_AQvZu68&2-|VJEHB03(=nXP2^b>0L;rwKP2E zv}tR&{SHHX^YB$AAgQF4UtB&lqhW3o?=NwOv&8FN?eEigEPk~1mf!fi)>`I2me=?? z`cq>(2Q2J!d;E>{?e_MPKc{=;U}s2El0Uu$;`!;Wy0dd_4LLSgfVcQCW5zT8Z6%ZS z?Iij87dYRbpG10}#af3SRmm#sQ~kKLjK=1)TyN*}#kdzFtq^cX@8**?{_aOx@0`(2 zgexiC=3OcA-kquMjJ~?gzP` zdO-b+Dv;Q%-$PDL6QwRvjwn^>{$znmeRj<`YAXBpZS0_(@t>S;sue7R6u`^Q^FI^5 z4zWZ7&aWh7Zzf-Mp-_lMkM6-eY-CH~nA!~p2`Z-HBGnYB(|yICw!ue>Mt@h-l*ZII zvU`t9*ODPf^;|iXI@RaY<_x&s<6nmiT3##Olb}#yYoyi zRKC>+&Zb~xVt&Q8fnZPJkszH4M^Zz^Pj-#h6~GOO#TYrao@Qshf26lWGjB=9{y^yt zgs3uP7ak2{OcAbO>KO}6$1Xwih0~jC&PL7#2@sVE|IsFY+DH=J-4M+eXgp3z5bG=m zrFV6tdP!ouk1tZ^utWW<@)?_6nKarLX;!NIkg|Y&0^~)m1nSJyB)4#14O;$lD3v`g)5Z>w~5vnH(yDceIIUHT`1bd zPlr|(h)tR;_9CHQQbDjsrD8a*&6r}lh`&OK6)+LW}5~WFXJ(xtkUuW~$;p`ROVWpTj$}`Rr_Pv!? zD4Usm1iu+we=EVQkZ1fxkw+d81{Pbeg!=2cXM1qv{a}|GLn9wx_bD1i`lyEbhg6#o z9IiPtwRg+Eol$X75(7nDGXz(v0g= zWtOI6y}${@+TPkL1hGR2i@c?dCSInkIR+ni@@HrXLwA(bZ8DSYcGKLbb;=bk%r^U{S?wSDM7-$ zCLuo@OWl+>7@ODFJp;KAqUt3xDG|(N6SnJQ>9#8(H+4luUev?{kwoz{Y%mFBUfG2A zO+Ek--szk8YE<0Ru0~i`A290LV^H&D`Ex%h+$Wq}0t&oezJ(z#S z%#I2evWb|Wop(VLUV4!qszOobHo~fzK{2Dmk?5;h@encThvt6)t0kVz2g@TB|Zc~B}dGcd;b zW63|5vO`Bj%tlpB3+tNi!KKE%8ABDk(R85Lf3wClq(jXkYy5zc-|U*$KS?0jExt}L zgY!Zb6xiI;g?=OgK!J$48HFULCPyQsAkev?^yq9LuX1*Z!~m=l1Op1i5x?Ya77C?( zsK{2j-@D}qW5Zfggy9rj`Hc;$-yXpG?30+@F;WqqEPH|KU}4N_qy?C5%uZ=m^i=d2 zk+BG?5>VdPz?K3UamgF;vF;H(borFwtdMovt@6X@7j#h~3Zg|*G8S?kvuTQYips2J zr0!d$cHw;`1t8nGcMhHa0pp%#(wK}M-Qgox)sadIOkvMjogO!-w-c_!&Jj7PCNTNsfV`eK4Q_ged zT*PWFZbIHbJrSH;*qTBUKvEx)+w35161p5_{fMlkkf!pF69q~vJTYU0JGtlq%@q{J zNA+MHDr=q&Jb2J{j50nVHe|+ObSTVwqqLzi0k$7gqgpm`?y!tfPBMM#-GM{a(8@~o zR3!*+=v~w}1WLS@0m!2`UDU}vE$}R*_KNTnB?!(^;RCYUgqPYVs|D=pcMuqDYTjB1 z4pc%P5@R+K!lKc+KWA(jX`{s>GLZ$z5g;*k?-O2lqu;1ub$6qNAoIA|2O8{9{QSKl z3E<*372q5?LZ?o8z#07JA;dC-uCMPW#@dR{-_(gC8hRpzV*n|1yqi@!Tne{lEq00d z6Zj8Ez>I+Y5jn(pFRV-cN2)XWGt+D3GyPRHp zeEQlHA0y*Rh6EX=s~`z;dxX&;Tvo-~0hRaVT3k?~noc*ffTm>!L@dsHLe%><2bJv~CTXu-+f8r;bxCuW-6C^Hd93=fMiW3Tz+L=3;+eujj95Gg!*VwYEH)+o4@WJdQbUi+N+c+sHNB}!F z3RYAh8-0l(UP$R{Q%KlvUC~YoPPmz%+d&=jn+Tj(i-(ku8RQHeUgsC#PCPnm{mvo;Bx7ljixHSVGdi0Y!QR|o%SY_T{0(Eq#$&7w07BD1#r#nnX}4WbETAZUo~ z{JVFZI^w)9(C+j4^mr26x^m$7dguK1_jc=brnTo==F9y=rWRpzP*_p=Rh?vV#!S7gv_O{Gtf42SgXgLxEMcdtp~uo&^6YUZdU&7Z@}=`* zdMAIL+?@uznE*n>=S6t;_cLq7Jp)SNjY5ge19Df-hy|QlU-TC_Hnw4}Z@neFuL&h` z%9-?%BndZ@jk7j@%!^9WqLY>PRB+GvT7VDG2&928Q2mz)I@3ORJ=|RFti70gJnbw7 zJnt8H0WAAyr_n|KB!Ug>PI4lhQ3@a3Kh&xWAL}>u{rn&14oL4zK`N5TyTcr44hfnD zue3TW(duK;jf|>OUK3GN6iftX>GAJHP-Fi3cFiqI z0?nX8TqYU7D*_H$g>FW0!P@0PY>b3vcYM`wwhuOjdUVb7dfj<_s?ITN^Lji+>&y&z zyIXp{x`0~=`^(ow?Apfr-|?eo=ay%?!^HWF>c&!U_X}082ccG*L!{)qp#-Oc#4@hI z3fTA8h+k)1QaEk7<|X4KiH2A}QV&nDRSV6XFH3X4P2bfij_xnBi}lXV4Iu%21;-D* zxrD`y6Z!*MO~Wy7=dEim$x>;)IK^nZo}ZS<{l*OZ8!y`FxGXRBo>Ce}W}eqfXyXub zmdKwsxdd0#zcI-w7pN50aJ+}LOrw{Nah@7ig7g;sLK98tAyisZ_}YFP%aRpAhG^VT zWnvl57X|jO%=|Uftn-_2t^QfXgbNOCEf|*3Mxzh@FxUZ0`Vg#*pxrn4nP@hDW-o&K^ean|>32_>ZCISlgdQ9j><{i zKDnT_evoAo7{-tig;PD&sjZ*DvLvS9N@CTCTt%HbvP@ECj%$$zKZFlaEpcv?_iyXM zAhUzEGePO%{%Qi)KQq9EIt>hn8%X-kB7#Y0Q#~)?)9 z43r9&2}T;~{&w6_(zAxk6=J1VBB>~jub*}_F989@Cv7n>vz*L1W=-|^H)5r_u?U@y zZts5~3(7m@jFp#-rixbbDfWPJNVnU+T2Notoc~3q)=PixIo~${xSN59fL2<|go=~G zCR6Q$aaBK4#bBMHXr|1>)ehf;p|`1m@uib~xvpNc0=d9mq+Pi{&8#0=yC~@hS5`Xi zL)NXdpfl3#lpOO|Jyr=LtBvt2|9Gd$UO6t!ND_Tex@WW3!VwnMHNvlMn^05ZM*@u9}s-Y7xS?f(sCPcskNX|9z_ z{fh-LJ5cL#UCzxg)zpt%2Q1zLkUW5#bTZ)0PTg*t^GIoN;X;m&!${Y&;8zbf9N zTC_apSVN6i!fI{ef5VQ_=(5BaRv-Ps!4a*dzZfTG#H%t$&F)z#yy|pchchncoScYBN6TN}PBF~XuHmrYB*-ud z*ud%LkCen`f}~?8xxk!IFQ`?Qif_%`HqcgKuBto)IFXnmG(>wBgf@NfNeN{XKK(`8D28M(9d<<2s;ZSQS8KG8oe__6@h1k(P( z1tkQMcAYc%8xWs5Tk}rr4=Cq4XP>01?b;sWnf)Dvs-dZdlMyZ@z-a2ts4!XKm!!O< zu}R|3s|3)IhtKn=9KXXt(@<1@B+rF!qK+9Nr|tr6G{LC!XV-k^V35ogF7P6z zEGBJSF9MY_Bw*u&dY;&PY*P1~DI+>_i`u;~<6-`<1kB9W5uS9mI|(dH1h#WS6~DTK@U?9o;dA2-g6k31hs**bmN&W9o;lkXPtw8)|9+0*4Q?% z-PxlGMwLzkuIXEvsk&U-AH9PJ9Mc0kbOX88IiO^klmTuAes{1&J|^d6MqNq9RJLH_ zH*S4>t#<7`Exl5_@+PKx?_vM8nvVe}69*{WsS_w(L-#&IZN8;um#PDsg)v=tdAAg= zs?)EAhUoWyf|^)^n9{+l$zvVJ5lS4K%K;3rKe6RSG)l|ZiqRi zmsvO4835UzlJ%JSUrww)lNRQA4XA|8Xt~B8ePoPw9~CY);rU1X8vn-!t+g7n8F->S zMzvq!N^N>w|NQ0JW{0XMj#RiVvyxY=Z&RZ!*3HB@R8nOr$XFSwb-nJBT`w2d|2C&T z{4Q_xj|KLx>;5h#H$OhaRm*;@U9VLRDoko;L0Sh~IZZ)Mz?K$G~?r zGtip3_A+G?Ti_89hTGlyT*Sr;RZxSrBR@zRYdnx%Pn07pdg>A>8Q-fns z0!lgHPv>TuOExgh9=kCG-j~r@eL(Q;dJt7w@V|%=ncs`nb#y(NSC!$cFKxAK*8lkQ zNu8FU;&2>wE}lzvF+mE`E?M6?j>=U!Sa&pTbSP@eP=oPL?an=pvVyN2j5vmr%%(#} zf}2fT*;jYO<-dwQXm1KDg8jxBLcnJRt&+f}NBhs^@$I&= zd^1s0d4-y$Hd2@oHaICBRLkY6S$FlDHbj>FC#;aR*p`yV_9e->*)^90q2D_$2}+~l zvwLq!iG+9qycq`L<>T8$iJqo2Sm!XCb4F z0Kk{q|MR{39NpmS)n(7x07)xuTx_8f> zbGD|ZXQpR*ru!c);E?pf5}A9rZ;9HfpG(q~7U8(RZws^Tk?E16mZp|9ak*bIm8*b@ zwZ(W6cfPz|emaUF538aNh9q?gnb1&%^}KTgmSKb|zD}=6NvV|IqJa9Wwgg`DloHk4 z6VL1ijPP!i5p(uNc!wPZ>V(=(>iJaob(=IQ;%5M~Srhz<01v%g@rZ7FWsUd?i+(yie26II39jcL}UcE=H+oL_b}xzvE)_`or{A1jM& zg;=6?5M2YZvc7*zykY32`Y9d#Aq2pGjIK&!V6tp>(!QOKyoX{lVpr46-VOc5+fZAy zoU}qt?xXg{DRi^|$6&^Vbiy0~*$Q(myLK!hnkbV0AZ58toyMT}0ZqVB-om#~p0T*0 z$5sCigXW3S3%{9mS}|!UwIvQV4~nkSgfayB4$=7_tK(m9KqBvoHCMqu0e_8NLb;)X zAKM&*2)N;%86w~z?>XgPO+->M+h6@ey`Ber8?@E={oc$AhG~fzDF&h(6Xlk7(dbJ< zRdg_%?WBem z-?C0w8`+b63bLX(!EbsF0j(Jb|6M;A$$-Qx>sejhX#3SnM49HjFP%P?jM_vIw!Q?fQ3DhV)?^p4CP3pcS~%@JliQ-RAQ~gw`7l|pp=uKX92x%! z4?j`TL(%T2`d3K>H8k*^&OE~zZ8bUKXxO$VA3WdBSU2>!J^z9x3bU#FMrTZXO2#cC z-k#Ks)1kO=@}dQqzQk3#yuSvReW z)QA6}SeegD_0;lu`0-W|5E*95p9zyFk<+#)P?*=|0r5js7%oJEph`5@Y^1P^tO~m! zT`^Lx=VQlTdeGN_gsg8GtUmoDkU2Z`kdRavzL1Fj`Qwai!?9|LZdu)` zh*#~z(CK}PqorPadU*Y76u%X(CE|%RmaxqKFw~YTbD1jxsEo;|j9FeUF3&^=Co=!x zbKJ3Xe!ahW{SCCfzT7m;hpdiW+XGr1p6gg&3)^mm_~Oln{W9|v?>C1(N zr9U`JJ`O30Fj6-5xRy;1`%S5i_@an4(lP=(PeuK0rzt zxPW#?2f#=@_fx^qd}Af8a38ZSQl2fZEm1rdENE2udZ#7#~92DyTUEeedA%|fuP7TETdX1GVIRa=209aA#Dfv1z9lT9Y;kY${-B77|SqQ^?^ zjvIaGk(bFWPSc3qD80DaG&|YIa4D69@tcF`HkmBM;Qk-h> z!W7oKB$Y+QNuiQvtUNY|V+`o&go^W_Ckut*OHUz~FiF6tnMW3m8p%?Y;uPbsCsQHI zD;IO^(HGK)Xcr~s=Y;1{E^UVkb$H*VE}|VGY!l(ofX+Wr!Qs z<9;LQ)rGDskj7vz{*13=`0ccsflu;7M9$V;%&u1NNav#KtnZbF7s&tGuV(-#j>t{3!o=PIum zE5fM%I6zx$5G4ob9^2)*Cg`Ye6A7qp6?%*dNvhmF6U|cc{3tGe7hw_cY>~U=fMi|FKewDR&Ss zGLA&4C#5c<1446TrPTd}do$G%&M5)Ucg8_C4AM+ke;A3xr!0{X zU@4_sB1MY{Y0EH2$uUrHf2C|Lp)h`)A>3j#l0H%Br@%pCtH)jHE&gMpQu;HrQcW#^ zz-3C9afV*8IH&RmCA}*JyQhf;+H4FQLTyT&7mW|fp`KCiQu#!6T2}2(@KssaYlLuJ zz1bcwI3N^&9K^yTv`$0w?W!%>Dx>f=x+A2@rqLS?{L*VCYKQBlWA36hIguA3HG9KQ zE%eQdvl}?_pH&3cvuHtol+?q7AHli->-BBOt7{tQ^_8+z^ZnFzv7KT05ot!MI5ms# zv0NgB{$|}3^*g_Y-Zr#YOQlV;@_Z{6_is+qS|J@E$yhW*eg2!oY%yo}4Ta5UQG_>` z9*T6HYYImcM$IA;Ry0p4DTxpfiUK@J3`ESLmRHeKp6?={w^T}G=!sB1X!UaxFDk9?pViqO_@#JL zS}8ub$cHj1^3D8^!GV`K_tlT5`uknN0@1+ORfP-tCS-c^^BPy1=JqBxP2rgF= z=>ar1{LPiUQa2<~M10l@*8h>!?7Dx%%0))Vf;3G_bRXZG;yb3Yo~R93evveYg-)>m zfb}0$;o$LU{rZUfIehsmZNvr3*CIwJGl4Q6k--aUNz&N7_dOHg-_{btWtu^>QFe|3 zm|U$gOW{9D@mRv>5C24%kA&K7`>>le6I_$dyCi`s&6@dmF3`c^;Z)N0mRuU5_UW9e zqV`7))o;>eJ%ef>R4E)Rr+boWB4r6DfNZ9Pq4w%0ccllnrF}OIyEQWX0dnsR_<))9 zsBTJ!<*1IMshlxS97}wbFqcPOL;SkG6pIpWvR+%dT~hpp)UmM{Ry{0LMx(E~AJRL2 z_lJ`dpE93X&I^=UaAT4--ccpo&inMvXsd=U|C^5ZAPa z`<~FBpHqHD#sg(@aJl=*$mzJ4uOl2qbV%lERv5}3y|XWvF1<0oE6rJaFNt9E(Ron4s;2b1I~ZDCX`Ncm7@q z))My+2_dTL@#i->wJ?MTKJZhTS8?WqH7uIIO08tbj+O zyXRB{4|L8O;O=o_U_$|Cu6&5=NQ%}R_%ZVv=4(3+jp<)w>O5jy8IyU7??BlIZh+j} zH9?u1?v)9=o{WFwmz^^iEsPvw;m}Yn+z82Z*Q<$c8VYC$3LE`=p$PLLGzfl^AUetfNNIYddlN<+=^WmOMPNW@%)1xBeCHLrwr zG{kOnnRphL?>sp1@Lle(0>Htzt~h7U9NlkZ%dw*7Jf8CkABG-fi+Gkl#ASYrZX0!O zx;0$re3TnmIIgb72P)zPAcuP#t|W}0h}7BYywB`Eh&1x_dRr?)sqlQ0zm>_bV0%sD zW(G-!i=#M7;GZLxm#AXF9f>h?gelgiT{oKd8S96Z8g$pmSTL!@fdIySfT zY><_#&d;GT^upDI2w+eTn&Giv#^H#1VQYwfbo8i6FM@$W9C>8=4BOU2yd%RDP`59k z7EF*6#3c?}Xd)bP612;-k7`FvwKh7+XF{2w1}#RgB>R{yD&Aflb`(K(puqjpLj#_w z=ufVkFjcL&;8%E)FhsU?)X;_4L2mhk!oaoCLntBeS6_`?4ImK~6nL>~H}~bjkM1XJ zAF{En1O^MHGUhhpaU_l=JbfE+q`YCg5_>Q;@TH-A>|CF8JPFa~Ao-kPT1=^b*cdt|0ELauYr&pJ!uOBbl zM%p6E4w`^WKaN}&a8Gvl%j4zk_2KE|u9w%t@$w&sX;nvJmD^aA^~SzY^-96~dSZbw;mzFL89xesd69 zeb&s-0el%&MpED_e3Tu;) zn1^rYuA9_iGbRd_4_)%3><~Y1I(Z=%q&w(plc=d<7BH0+|khn_JA?jkI0(1SC zBp^8M72{&LxDD8_N#`F?xv0IG!Pd}k7QY*ORp${N1+(aC<^9n z^Kk3nba(gkL>SqZQ|p7rfDv&#b~~@Y6!4J@t;}YLCnIRQ61rHWAKuNiH6dxM$Hn#G z^z!t&HEKFH*zs@hc5F9wEQ!#kZPj1qfeyJ6M{|Gv|2=(w}BlNYe+%?kszPlEpt;9YzJhy-Z;T?|ZHW?FsC;K{3z4aYQW^F)`7MYg_qS;qIS( zd`xOa_fFgh*a@j=bKq7NI}t7@F&d)G|}FG<_?`it6L$FLo7b1!_Fpue5pa z@SDzxQYLn*xK~-o*iqdLHMHAfNy$qoJt_GkUECdC9yf0rHax$3`$X#xqEQD``2iQA zwcqd6AI(1Bbh{JWyi_p7rp&J^9FzfVzn=APh4D2}S0nbf>h7rc&W<&Y3)P13BsGYc z|KE^fjZ6lVxgVm&x=j*{3Np&(PgYGYR054Sr|mANE_mbd!+NA2%7SR!fjl1c|!3-UXP6pXxbO=ebAAO!1w40t!;1G5L|pi zE%Ex*Ie_3+pSv&_Y%E0_PHIcn7n)1JzCe6p47Uv!tKUPQg3_X?Bc$V%#q_BO>UQog zU+a61bFl(1Me(PFiqC+5Qw7S@0eMXnFNI!Cp8;O9I5bEHOcDrk2$aL>FHlZa+=uDKee@5?yH2w~hKb_qFGC zm(y!_XpJIvAgV{Y@iATs!p4lrxX`FKP{r6dW4eMTi2~vV3}IsIrr1dh^B{{d*dQ-b8&m?;>**~`QT78 z@PQ|*Rw}GLpZJsm$jJOmxRR!ug+BA~w2sbg(4M67Q>VMUE6JgLCz^WXXD(0(gTr2v zMTwQ`>3>)%b3P+-%<$(a%|F9x-zs-4z6I~;|2Y1#Ngra(4Q~l-OqEXtpFlNn-Qe?7 z0ryO9)z0f(itv(U?Q27lc}sL|yUBO+GN%3cgf*ks1UO$5 zmnD4Mg=Fj=oe%$;L(^JO{1`TNM(jHdF_tDH?=Q7E6sk85y{=R*xHJE5q}GrkH1dH_ z_p+a<6Hf~R>n4G(EWWLNu2!a0JY-y!r1$XQh4}t470(eJ2?j%F^DB)g7HNVi zxQPT_iQwz#(8&x)G!h5!LvVL4B*=d@#FDD~+#7R)?wty@%D7LDBr7-8uK2%jwx^U{ zZO?(AZ)x+J3;`8pd6tru?<%^Y9A2+( z5nxE6yx}iTZaXA5+edJ35cowPX|35H&`ls|#nT|rNFd2U5yPZCIa`+z6s0a*rY?On zmH)ECPN;O9`jwy}?RS12WFUcN^(2Jc$kXgDZ|J&bUCge)>hQ|h zyD~{lOn64}qL`jJ3yP7zTZJ@dBL^0+)b}`(IivOjEh;rgWvw@GLL02-&eG%RuE}ajOzS{6Fa90IaUHUv~k-6XKi#~{iZ?fVs|V9 zoocN;O>urXtoGP(g6&?|RzyD&4JK=?{ZmJ4TT7O{koVpAT~ABKr>t*Q?#+yM93n!}aS>AF?VsaT#)9w6`#LCA z#y+3?)vaLuY0JJlzA4jVHp+~yM54uH)u&_mKBUF1L%&S#oZ|VyY@Va}+aaqb z(+1z#C84nhq`p8a=(K8PIvjIsf23fN)|IafpFdm`wInQ0I(&Cs-oj;73;9lFdQSWk zzfNkTb2ehp=tl%_bXGZj`l!k3Hc)K+lyE3<#x~O^T%vy-9b>ti)9%wq=_M)2Wlp*phjy_HMDkp>~VhbiR8?_Ry5aW{8C~0he@0wi(A; zX4;nm5b9XiJsG8mE|T6`Eg%_R<~OIS)78G4ql2BgJNzby0r!|Mj^9*#aOw5v@$%^6 z?ds{<+L=5+hK_b;BSMCL`mDE4!UgMX z%8yciLb7PGXhcyLKTz8vGGS7WjOPvFMwuJu9V3e(omEQ}+~q4RW%HhymGW{JwG=|% zHT!_yE;8zsL-Ny@M3-j zutD~UU7RIEkSWF2<6vv3|1+61e-YQPmI#!@62!^RJED59X!N{Wr7%JreUZ@`yv;r^ z8PRHV`_+U%hTFZfx+jOs5hZ}x&3Kw$+RG<+O=ilmV4XO=X~VPky8REokRa<}aNI9$ z5bGfsd&dWFFP+Htt+auFe*PFw-MzK%z$j?}LWDBPUi(~Uq`aH1|8Xhu-)CJdV7Kr^*eYxq<9A|GT;S}7pA}I)fMUo0dBxS z4r z^LOz@o8n!eMMP5@wc(H?jlsMUin)q6 zk{_8fy42$GEh1;x1SvL(eGqP*2A=ZS&pL|!j$0#VOSxJ+Rm>Nku^Lo#ZrU!n3_6gs zE%xP-X1iZo@93lH5!s|a3cT6CxbdkfakxaZF60DMV7I1$Q`SZAn+G;I`*y zZE3N-`aJAbzIbV$qqzzhr$bBw>ecly=jKgJ4VS4HDfx+rW}zvV*I}16pb}7uI>F^! zHZyCqV$tDBsYoBu7&9x|tyOnkENvm-KR_RtTu1VXb@i5Fg2;KS<74uc67$h58aNta zZt$$QMOtWPEgmA+1bsNw`@6&2J_l4jVv>C$`H*?rS-*y&Ipc@Aq=Xht#ob%gbw#pHg<-%_(8qWF^1cbbsp>7# zirG(&Q257e;$hs@J?aMh&g8`8NPn(JZmaWb!bu~$&P7VfINru6B3i>uX`_Ij#A4CT zMgM)F@#jmAt^LByzobtjQt`~)P4K%l{cKu~#;@J_avsG(1CvBqo_j(u)@%G{4~S#l zar07MA{GsqP0N6c#c>qjvY0Lqz%Z0uy3j2;vlfWRa#|LT8y&T`2B?YIuB6T3gX+QEr(~h_4zNx+Fc5aMM z`*ZEeGCwYVwCVE^X#}a172efUk`ZWoZRn2xJh7xT%5IjHZ(yweG=DkM8Sg&YR6t*N zk7wKKn0KQ;t4>!+#orN)b2G;KT3nw+yH6P^b@*8hI)BDmX(&ap&3pkY=s*Y)G;mcyL>`R zrjcvBqF)<=)VZXT}^ zPbGZ_z;|Q+P>VKhE*G2cY}lleV zI`h`qT(!Khs_~X-H&d}4vNyNvaSLvU#DiuEb60F26XCFOS4<=mu@YW8saasdiofss zBR~bw;>>*#28b4C@=X`~6F9qX0m6}?{`j&hqsV0kvuy-sm$7(tY77hBbVT2^G3?5N zy0vF%Ur<6X@T&Oy1|$Ea_yXcX#!I;ngQ8D~gNGsoxIX>=LRRaQHW{F z&bogs0q3wej8Y{Q-mvhx9)NS|Y04|YW>PTjJ$08`1Er^Q-^)phX3q}CcQ@6;mO@W` zMQTBoO(08vPNA9k0gM=^*+wGZ65WLtwg+YxG^H)?>v?%XWHDA2q{it||S3GV_0bOM1`;*?XSmQ#{@!W!x-TNX+wEQt*h>@@|YTbe%y zQQ)&}N((0LBk*8j_{Dv36Bm-(E5lW^O2ga33BwW>e&jXw4-b{2#bL?u>1Vgg^XY3C zk8|jJSKv%3@I8>Lw5qXDX|bxp61G<8?^lhRJ%kP_ELZ-uqllM=oV;Mub0DZKtEQl$ zPoU)`Yerwt@g)kNag2#QRH+?xF?7ZAquZ^ky*T0xUAJEH-n>g+@EBZ?)XXx!jZ&8y zA}zHN`kqmqTZ%bXD4CVNlAPY_-pgih``#*>!xe z&RSJ~n_eTrC*vVP{|2m+&N-xFA%zQx@4p@urBd)a{@fqnwcwA+B(_g0fSh@)*!O7J zsyOsm+|!x8sGV;tsw>Q{!s{YEEVIfaJ{03qo>`NiVd^U!pfjk>xdWYIY4r(~DAZ=S z@pTNWn`eo-rRd|tWE>X`^Dc;ct4I8Wx-Bv>5kAvPrK|>5H-*-55QfsBkuK;g!j%e` zxtmF;`(6MBHJ(4I78b!cMTmM@5i|F#?HPp?&B*@oBBln$%Jq1fmKAuu3>91(IfF&L z`aWJf5ewJ!P5oc>#O;^^r`uMvW8Z4&K!h1zgC0WPgoad4$=Vt`2;07ecB_{g(5PAZ zcjWkHUemkB-!Ln{T2{PosmV@ta@Fv76j$S_9e@M4)(4sE2=af8_!=srP;p~MC|avd zCBI5O$PZCULX9Y3HglPCJ}}8zt7|D0r4KlJX*$e)F`YCrz*|W*Mbhe{1>-4aroRms z&tTStYn49|HYLYvwa4->eko$3_2fAU1?w<{CrA~+af=uQ47UIN#ng`@qitP^5I>O~ zs|Nz0j*Q*o6tXcodej)GS_zILVF_vRltc2-(7o+S(XeQ z%0ZqyBarjbdnU8Tc@Q`%MGzbkfTh^uV};<7K5o6}$EnVYbxL9xsHOt-_F&t9_KBj4kq& z7NdwtxBJxGkgVR>&0hgpjX?6Zvp021JNN%ZETQ%RlDqw=+r1W&i(8SwiQJ2qi<1Ax z4|6r~8NKLpVpU3h+z4gy)nml(E_#4Xg1j*Qw`{?*;F?@sv-p3C#*dlxn*W%wz$Hc4?y5 zC3fVdGI9lst@7?uCu(@K(#5li<&X8g*5PH=g_WPfT`}wEf}XiC95;cnJ(!rff^aUXT2qWnn@Iya?zD z`q;z@dR+7{1?tO*v@*ATOqUh~fyIemlu4x?zwniV%q0qXaG(pyRq5QMz#e+;we2Re zQG!kV;WNck+OtueOxdGI(6oO&XS0X!C~{V0?x{lDh~7nfcuL}8DuV-P4uqeg+9^nW zXV4y0DM^j(+jkhau>AuAZ``&8CoLVpBf=zk0*?Ekm28W*1GfWm)4)^T=+z&xR#w8d zqbhYAf|B^7M_Uu`37(=aC(@L1J^o4AD3mnkl0q+QZa)2bnWHLTSuBgel0k&m(ttgL z1!O4pg9b3<2TEOwDDYfs7m7h{_$#!A>U&W`!C;lWib3GL?=1dyU1eg=%bx4ebz1K; z7P-VEPhDAQOtD(1Ms_Xp1(sXhhxjX~toOH^Zq6s5Fs`43@sEIXKpm45MZq$kxdvt%M_GN5Hv#QpkSmLR%8nBCh+~K(9usoR2y~BpN>b1c zNPONE9OemD(cOKAmqB&Dkh* z0qGwQ;M--x6^7@cBuF!wf$3_{dwR}E-$YAem!ZVDnZmke>^sSv z%Y}4F8E|UZkv}u-pd1TuF#>Tsd-DC&O<~pddDtAe!`Ec}^*HbZaY(PNt#q`$thSAu z8Th;&-kxr*YNi04FWUyJ_9@F}EGYnF2eEz1&h$-xDiHAUy+tnk~k z^2~QN=7MUS{MAu+K2;nOs?4gaB_Y)*%@>4?sz`kHE;RV<_ow#-4yRP?abRf=R!@V zxpV$842{Yb-^UFP{9}%@K0J8=fKjF|$L|kSgJ*3FX10b-j#!0WU4xfXC~>}8H2U1m zmSp9K^5a>z#{KT>Ggjc4N@cgM+m!Sw0f!00Ol-38tRaIUx>uwFP$MLaLU0Y3k@?H- zt>T7B4!XKEw^|}@S|VJv+y@TlL>WlSbRc{Kid1~EtE*#zAirzT&mOooZs<&gy{fT= zoK($lPZ_ys8kt?aTW144H^HMm5NoBpb@+L^^1nl!xPd_f^*Gb;3ug$GyjOY|k(q@k zAaqzjhur!ju%FQd=T{923V=g%Ihw}&q8@7{(igIR}7!i^NS?wx*T@A zeD5x6GsK2;QB^+>2B81(>u?P04v)#%mK5LnhV-2cyXs)qBJi)1V4@@Wy3D8MC1y>5 zO1BZ*J!$m0w7K!l<%^_udB_x{A{ZR7_p0B7;qFxz8t>!l8U?9Z1vdqLTP44>ZSiYQXu1Ct|f7f~pMBT88K-hYjeP@S{tG936x#aQX z?s9}?%C|;tSiAjPz66Zj49gNx0R?;iJ&=c@|6T$3yxCf2s7P2!e))Ia5wd;|#s^}& z61{6nhX}xO+Unv5@d2_l9%^eG9tD_lU($>I#zv%Wa40HRg1Q2apHwsX;3_1^%}*QWjYX#!|ezI)`*3N?QmUfY^rW|HZmde4J( zEUaa^A?Y6+Ac1EGLX&%iF~rks?nNpw3KiKQRLjPMGq?HmG4D6ZBZC&m z0pKM^#zO+N>=5pdf>Dy9&D^iYM#>;5bxNii;p zT%uSdRM+^-_c!2pXL{{lXZ_?vY=QtJ2M<;VAAj7cp7j-*P4nk0(4Lqe0dcYEq;l4W zJu%4F+Ym09#4`krWjiMukA9m-JK|Nq3L(Ln9*lD&2@U=bVZ17B(qDcONGt=L_Kq{6 zYvpS|S9~92S;g$1OBM{v4ROiV7G4F6w>rZ^nlfs11e5PqtvDi$g5ZYAuIObOYd!bN zuggCot5$~wuS9lVZrUO;a^)l5ul^yAh!}(<99^6iFKRlKC#wAc1^(kO><^rd2Xxs@ z`>CC^2||RW{7i?z5D0JN1WOW-5UG#DM11}XdP8@#JU_?I~629>{zQbrYb=mGz3_7Zodh8R?H_BizNloWecXiy* zLa<>}6**~+s1$qs!+lZMVTY0Ji;s;*pg&|iMd;_wQmbv`LE;`Dh(QKU%JKunHmJiL zND+NBx1oKOX5HC?`DV_ZN^HxPst)^r2ob%TE*Sp%35B56;-S~8-iqUU0^`6fNerm? z6Lw>XaIGV(On!y&=*^#zY~A^`O8xUgW&DYRuMXah-gf~7E9>jNZ+?LvHIRxszkfG% z{IaCX5kKabY$F7yrihAJma^P=(o32+1`#9e+Ry4e#svp6S2|FyYUa?CDNUinPt_pP zyhsPQlyeNhXdC=`g*C*}Y3|avO+UKJVTSr>I14%z5u*5kM>d^AUSK!P+l=stk5EubUvTyk_pF;H4~-Ggdxo80v18~_=Ps>l@4 zv?Ze2up>bR;_<9hL-QG_^kUIyb49WT0!fzs|& zEyf8>N(O31kEpkf8O~p;!%rffL>0wdt>izy!%PGxt%PHoml+szz77mjw_ISq1*TKj zESkPpO5-l|bLZNclP$SvVL#5r{TYB$?tNkm{mOVlTvCgPgVyI;|CFz`Ulw7%rbm>u zE(r+5=trzW^LzNbl?alolm-=V{s3K-@M2B%jR8wJ;c$&b7Ah)!v@}Ulkj%**AJiv0 zmvXs5_tckVW*D!jdUAO71^wHIG zW$?zU-@Rkhp5xY+!R#Ug%@XvgI9n|zIQ>k^v#%T3T{4zg^CyL_jqXdtvvUeZ*4xkJ zsi?xam`4;Lh&$V1PAg$xP!US_4NMf#Q89GXQb{qi3}S*3?4?@uQ~e|0Oh5diVk?~E zt2M&D&x3H)yd3ok&k9tWrx>jeC3cR(=T95KPGVDh5Q?0T<)H0;c%!2A!C-*;#tVHb z)!n`m@b-T2$~+Tj2qO3M@qRkw4}@g1h#|J80Q((EEq#+0UQP2`8C2j^lx;rF+zfo3 zD4L@f=FQS(U9_jf0t3ez@JlO+OuM{Z#pz6&|LQ{8)G>tE`hDEsW^_+}9XI7`*$FR* z!*@c^nR;%xXuaj8K8iKNZ%?AN!}Do(Y-eoeXaX;h)_eqE@5kO~*0jl^lRKAJ-Ocup zM)c}ezuL6VpNgW+Z0414@&AVauv*E;h0PU-M|9)d3 zi4(wJ@xCFvufgtzt+fhMsVj_8>pv>zGy#P zCXnp50tFw+_zOwX2ODeWAFaHn)xA(KbMxUSB`Q~9oN&A9D{G0FdDVO4^)s&47TE6x zTzy?#9}aI%Zn)=X^T>Fp#44;FN&s?8nA+$1V|n3IqYs(TG`f}wW|D7rs@520X$rQk z2D%Hu7BwNnh^iLs5Q^Lc8H!xUt<)piV?*X}$3|^%sSh^_NE5ci=`nH#hO0n9~0jz`swp0^g@M1F_Nq1Kq^L z_&3&Ut?JCWvk2PSh^CuR7caYez-{Iae<#cJntUAW@nRd~2A2xCmsy(zw&z+Qwl(Ly zYt!>mRN%KN9sLtY=-8IjQ%f@VNZqeuESxvs>OVO&O>-56%aBUa5wGR(D{xoMsaR}d z^dr?r7XVB%nsT+a1R&>MBK95?4VOR2G`?&od|YjdBOkU?CG2Kv9Ln{7-ZB!}v57O_ zA(%w3KS^vA4fXq>Om4=OM}APKk^4sI0U!2oq10YS1lpA%n&mI+G7h;R(+KD%%k>BV zyTy{>oRsgZbnS|ZHDAj^Aia#uBKRMG|JZbZ+yuGDgW{_laTdGFT?_|6p!UlTvP1Et zuWbh%00#%7GFZggEZ?CByOKrE9WvjceqsOud_`3F~o zOA1ecUw)|1?jyh;fX$-(3c5r!)VH82)>AOFlcEqLo1b4#GR{D_H^sma`FE>hWwgj! zRgtt`?h739>&q`RVOmVZ%OhY)+%l{@wFs=U#?r;2cp)2H+cT$5d%IP(hUdh#zTCVYa|0Y7S z?wsEOX$!%Bt2=>Pl%pX20-1J^A!1e^&pXJe#W7|{%YPln{)jOd&(!)p{_oo6fvBW! zrWGxA1qS6KH)EHlo41$nGo zQ!$*$tYyfTnBh(Bug#mxRXNmx3vGYAURTlfwv2gl<-a-9Wc));{5i~zK>pf5XN>g1 z*HDLjt3Ho9F_d9_r$@H_w&qq3_b6i8uF}Bkrt^@_cf(HFJTr)V6|FrmN+PxG+-I>I zD!qXK4m+iUycwSF`b3#%muDm3`j$V6__@MMS{RFDt~B_X8Z}D?v?8RkO3ZYN z!W1F1q7^__kv<6H)rl@%Q7bLHFt&5DI+o$;RBIjx?Rn>!Mv0qB7-tmPVs@6 zpxMP? z(JdpGiV@~C^m>klkL@l3BYOizj6IPXXts??-1aXMJp}U%;n!QJzTon0$<`Rh3V=#X z7|&R@Ec{Q*wNa!sF1C=EMeRTc%GMf}7NdW{`Y7W?&&< zi0$4}y7S!j0B6)a>+%n0T-dd1V`y8cQ> zo8GJ2#p&s>K@5tMgnjx<|mT=X02$^R+E$4G9zdz1`S2 z`|&{@i|vf7<>iAT;z;yMJVkQEM@HNdE=ELN>q;*1QQKz4 zHI7T`SQJ!zoSGxFJOU!?T_M*8hUo2X4F-f_wktM8Af|tz)|$uPWVRnn?gGzM<~n^Y zZK}~LR{yh`$*fI)s25g^L3$xF$`@OFB z`^S%qYwg)};+Zq;>1#44tKlEl3_Aw52{R6MWR@T>;u`$i;Va_fu%#7{8 zmkDKR7;rsfBuZ>SZVp+i7tSuUP%d5`xFaKk65!(J<^7*OGw#Yc-Vr{f zKbGNR{HhhHNf1uMXnhM{j7_a$;rF^_$rDIze2(y8HSzO;`IUVLBxDQxv zmp{u_c5c!L3YmhblU({dX80uq5#n%83HaPkK0f8QMq7~b^y*y&<|ffHFp7dv5r#po zYM>O>cBvOklsxLk6UtkNq1dZ-Hc0;BGt;-H$w&DFu!thxd#D9hMXJfPIzKClC6=v$ z!NW4E8vYlU+%{)(M6lFp3dN+#Bxsq$xNUIRRotVQogX%;qdBVm{PH7uSAt1-WtVE^ zMG3_3B98Ph$@5{V7Z!TOfKILkEu(koB+#kwm1vU2+~$>8X<>4KXyXr1U`{8k`Lw$6 z1Hq`A0_)Ml^YmeA?Yxf)pg#f=mVQ+V!NRc@snAZ#l3Jx)1;sO294E2E8bg`K8a`YwvPi;bEgCAM<3>lpS@Ce zTyjQQl3CKFpnjFQY<&t1PAqOA&6L`rA5l%p8+TDGk<>}f%k?vT@74B4*Y(+ssr$aPObxNk`^8`!Yj(^Hh6de6E$#1>#JTuQT zt8kPy_TfoP)6=4QR+~VXq;X5b^i4x&+m?~?#J;TbP5w{QIYK}4#`B0D7Y#gdrjnYT ze^0CTPD`5v!^YaRh^oG3sP_4rvZ^JQ0{sSR?-mkM{air4K%pdalews)TP~>Y}G* zCPfBRb=*`lZ=vbxPPu$FIRRs+r!eyP)T~_kmYU^R=yMxhZIw|pB|ST(vILRXO-t1d z%ZuddXItKc&S!QPI^c8H#(!qJe%E>8A6A1qq4EhBdR$6Oc(`NZU6QO6&wHVRrb29Y zN9T|w!w#?1gxq#=EPl$NM19neZOl3%{Ak7`%92mXC9SxzI!AqAuyPEoFz!Ry7*2vU z>GTBnpsp@k!+s{6P%V9#5!)8^Gdrp>rs*nkltL|*1)b7}s_-qsq2^?}F!k1%=d>Cb zmR(i=vRR3&xJf$i`1D-@#u|&wiNZl!6YdK2W)c+>=&PCtkyxF5bv0Ti4R6{h$`RHN z+V{g1ZTev3 zVhaebdSWF%Q)Qh^HeQXhAT&hw`G-g8^025LFaur_=%{vJC@Bfe-WUwocdaPn4Xk9( zdkdM(D(Oni&$W902V#o3@2hGJbfX&|18QW6DD#lz-EQ*QqFO+329`dU{4G9B%aCPc)Ij%%-pqt`U&N$G)lq47DhtJ9VsAb!bD)Zx zvHQr_n=Nf2X^X70ie6GM! zPgZEfU6iqvpjJh0$Cs4@#jeg7>(m`8sm`-J8ALsKK%Sk}mKEQ|tXrM`QGMPgsc$y< zwAeF=ujqNjrG*YC_%7dE`~|?>B$I}Erc?2oUUz34(rF@z_z-D^CKG3dqq%jQDCG)#@WzcBLEE@8fb)HCYO@#H?)C1dsC68~Du5?9>fd zCj4gfOsu@B!t;s;=k3PdD{sMA0>|TD4bluYno}$bsSIvL*#&T!9Z3Q_8`I~%P=`-- z)skbVe_7if4?{=GWVEMk)&gp+@{*u@_n9ePnpAr7=r(j}$Dd6Oksuw`u61yf#D;X& z)vQ(F^-+tXdG+Q(svittJn{uk zT&L=xgLa*1Hp$83J{myYyW0*dZ$8w}RZb(9cvpQ)9eZ8oud{1tK<^uSSL5ut~3tBjuL7*FpObocNnWUCC}kUF`XE_M2*7oQFszdL?V`=}dTw1iY(q3pUUGG<=?`iXnF%Fs5hbkm)8G7%)`Q0lhNZ73 z7Gh`EF>5AO5PMd;E}4w9E?jQymqoLjJn*?V@7gEbVK03R>;oMQ9s8umwL6CMSEoOA zkA8C)fVa5?e|WkJKYOk8`U?8!YKvw-@4R;RylBVz+16moSwqWZk+b@3=%C8j0pv-) z8t%VOb3IWv3^hqpkK|S1yex%7t9Y0sGIAtBNNEPk3Dxz3x+B!;@>DaWc+IDC!b8zSwJUesW*%2Ne z=@s}nzMyLaqg1ZBB|fkz>$~zpr}_6-&)5KTW_TvX$*H*iefH{XM6|8O=NV$Q5w#z1 ze$-s*t>7l$;;?5SI&v$B)4g#u$|UJY!o-5drLHc`Prn_BqRXAD{ne|JUx4qKSj+Di z=uYqHw#JmOHO#jkLz*PgtW7J~tSBm|`)W|!&_`i{N>TXq$l%~o&oU{FalWLmcBdB) zzU6P^qH3dIn!s0BlVv>~g>MWSX`c4+t@AhxoUjC_2hh%{hxqo5L{CtjAY<7vOuMn% z*YT8{l-|QY{>Df{%=B8fq|L?n=Ym^xO-8~<(j=#wEO(Z6c-wO$hE;P$n6uLB!XVo_ z=~PDy$Y?T-xL;q16pk3gEUw3`k)3=yQ$Gx$R>C~vy|92{GX-Cy!6e681#c zG<0NB=@#t2SnU(YADp23%mv)*Z!p@dAL^iv;CLUEz0b(bA%HJ*_=&PiQygK%P^7*+zfmTs4{Y`?`$x zgLxJ&DhViTEKCbO7kBpZbyw<#f506NRLH?TUdb_Bx!1Ci$M4B;^xk#&^Z0MiY)@HK z0H`gT|9UU5MRx?Qb|RwK;0oJ!x7p+asHV>63d?_Q_O892)AEGvt3C2pP;!CbVGuqM z=;Ujr3ij+rQ%=c=GgGGEYRHvqS1yxZn46ssJ>w7E-8wrvOW$-n*Aql*%C#*lR43H-Y9yq1GIyW8{TR9^!j!|%bS#YMfGRMhWh&F;-=Xy zuvIsftu$HGB^V2&mrVS#?nrARzx4ju7v0T^Uq61Wz81yO=>qCLUY3%&!(81quYMdk zx|7y7$IVTZl-ZD{W~yO-T-0K#v+eIDIBOH2R+5pHqrz%pNA~TXs_rVKO z5$O74+RbzI-VfxG9R!!&OSH1#Iri5(e7bws7qaO#y(vG3dYpJbt-`2Hkz+34a{BYzI4y6@aRxVgK%cGh9%5E55CTXMNNczC$9dSRA%p>LHT zYi?aTTxtbN{1wj0nXv;|Z?JW0#;rFoQusCgi-lud!v;nt%>SrxeB9)~1z@Zh7`Lx+ z^Nx-f=}pQOfT_#694+dJ`Ma^0YK@4+G^wU{J@=dM#olX`t6^?j5v>rTFx$iU9P5E*S0U666>Jl zS+|V0NQ|^{ZcVs&T-1Ng=CAc7Nb(P!E~~U5zcY7;@};TWxomfK^8;-$db;_VwBCz3 zlV(jpo;q?fBkgf3;ktVJq2_#+imt8F7j6#NccvfS_fo8(%m7A`JU%I><+|iBLuAcg z#ZELcU9BxFG@dTKt51qbb9#YHfTq*=`-&|?!gwH7(__xi}Pt;!J@l7lpEni-2ElpbUO&nmKY!v*M@&lgp zi>YUl+K_Eb8H5(&Rj^3^EYyu+zJE05@e$3ThetDN^YNFXG^eQ3#D|Z*Wzqm%4n)r0 zPD!r|{pvnER2hpLBTFr-qw>|i$BsI>d>ZR<5wtxC#ki9IwE5I1gt~H&jIYxbTs+>h z7d=_;nz4c9eKAWmgJrq1oHjW)#>M&1mxL21MHbK7KWTmwAJ-(@kR*$`gL2W#bd0Cr z6G99(eR3ii`_^XqgZW&{T_ri(kEcDv^9>XST^EB5yGLtZLTg<`R+DJRy5|(Ey5gu5 zW`vbA-!Hn(1BEN0B;=7>iTv}T@b^h^8^RKiCHu*A0@|UTHkE?uOjO!)p27;{pU+~2 z3OgG2j^rsQkdSpzHNuiz=eg$_3RDz7{q9LlTq%K8R$C+#+|w0)?P$EDI$_qYouVRG zyq{O*S~#~}GE|jrf8n|?D3r$j+1y^PstaS;&CI`!9niHjP`2gNhO>QT^M3M;!(qO; zsm^aKqo%`&X1rKFTHbogzVk@->pMRc^~mg@(L@z#Tpk14dC0hz^;A+Vs=281 zeR;|!Y@Xit`qKELM*DKAkLoghQ3Icnr&zu3|2Ay&8auk0YjmKT-0C`X z54FE1o3LuX#Y{e^wHkzlG89?4D@^_W!)*3wk86{p~~ri?HyQ_my220ZQA;ND8W zIC0;lJ-BxyWNV-yTvFriLNj2OuhQrTxCVzm4#aS7c|nA2Ug8rFG>{Vko4Pd-m`pCN z#)oQ=%rh4TO);&sZNS&&!yW^dq7GmCi_5)XBd`9-Em_!H=%fVI!2^5gkaE}214IzK zpZ)mT2}6gC>}Sg&+^7elv}@DqUtmdl_uk>X1s%wxE!;@vo5;r zh>Kr)$6{J|@XB(RP|F&$!={QcKv(2!JyDhnjFsg!kQPqfVNL^8kM*rZ)T+UeSOE9%I)pE34K1$3fH{#qI`N+;=?_zcHY!|GUbwg#TTenr-g13}#5HeP=kUb{B zN?mv6myXICsv`FFX&2NkitZZpuXi8za`Lom2=jV9KOwinS_#AW3i#eT;7%KH1A2}n zINnW}*3#EVEClnD0)AS*iaHM6j~xQod=@C#TfCjGwCfr$7AE9y+~EuQnxqr2IMdwR zNZZoZa?2`!e5*83sY6S8A-I@LU=mYLo(6(4sj`-Q=4jjS8Kmk)2GpQ z%8IMY=7W#j-9D{u0{y0IK2>P&i9>#x)AjAjW;^OGeF42$eS?eLs$CU$b;q`yR675< z#gW?~ZzHj6RnNAG!SsBcqwo7n!+up#VGi8dZ*R)(?SIe}ju0Ju#8&KLJo$^nISt-~ zSAQ~Y(&1p=T>H?l@pNZrC))SdcKa(~Zli{lMU=6j1E4q%0M-o2KaMuENMixB=NZ<< zIO~H?;hwK11{-*!f!~+o4}A^;wc+U`rix1{@QJdtr4QP1_X;QCJ__?wxL(u^2~9zi z{B>cD2FIWE1}B3_)yn33=eNec=jW8&Gjy+|7h}i_h+^&ec)S1Jy$ao-Gt;%Aw*eyc z?~K~*Gl6sY*FfsNC3Ht)jmMc9dwed!D`5CyaBz(3Zr{BLV?dMgQ41}u+=ziX(9J)1 z@4iuOVS{PUGRG*jk{=ZileCp!;u>6hBB|j+ z7q4s7jAivTn2kY(lRb7h*ymgOS~$IB2nUC5I!46LRqEN;fxGd~0>=HKnlR){J!+X6 zbRQTI$a?CWjfrq#e5Z_BniHbY33`Sz>Sw1F^b9iW_XPPB=O@hRvXkxCWesMD63)@x zp=*Fy;$vsgOIdAZi^QLDYi5bjzc9?sP9_D+3|l*BgiVYwj%iR}j!pe3&fut6cS%NL`$7nr%8FKY(-E)zl>noFuWiS^)T zu+(ErA4j^4igKzPTU)e^b%CoNYpdSi&lK=K-eT7#$AMx%_toD}7~MPb$w`WS z_d9S=*?v+RO4I(M@T&O-cpD<{>7m2G<^CqPi7$=Au8!6?z8H=U9iH=tz7k4|u51cC zrztICFT>@S*VDq-B5kQFB`2R)xoU1|@$r2Yd{hS1f4mr}<>v=ZUn-mp&ZT!O&0~6A zox78AI5<$BpTQk|05s=kns8E0{sobfu2)64d>gpfYTG zZ#f$McIt|zT;HH-il)CRl$u;xZ+$^2O!3{)jZ@fvHP&rb@Z-wj{z(~{ugJGeBtzU| zukwj|jnoT=-%IaJpuLhK@&(XZ0;k?-QaAjnaq;Q@_HF=~p8GfR5o7EL=3}Pf@E8qa z7cckUX>vZf_e8n7gyn;d&l|Q+!-O9#Uq;t8+}qv?Gs!&nJ$CF=*}_}Uu!Psq0HcDKZza8Gi){wVr?PR@Y14TQ;bbA09W0U)XWFhuL&&=i9f4Ls6QIse zHK+wp{yKImXx6j!k_)hZw3zrRRhRqX!jFSt!tw=~NlW-R@Zu?%h1coX&!g`>Pn}0C z#DGbl@^@sXCO}hPXK{S!!hVG@^tJZw?=Q_Gp8#$ex3ym2sP8Lqv>I{MX=+m1Y1pnW z^y5`@?RSq?_Ac2g>_XeuWV!Q96j$Ifdxfo@g>ddfnqL$c+9SPwF%+fZq9@y9=0Yjk zWBh*;Lzi=zp8r9dYzU3fPeJ= z-96}I6P%Ar6 zJ+*9LM*af!{fn~+7JorNd6uJN2jh`v|)~xozXE3^KYHRAJ zKsuF0)lAjY9-nZtdC$bpBO5p1jQ9F=WauW?yB2ifZMaCA^BctHpXgsbNux5XT0xA& z9iMxHX7+C6f1acf`hD1RzSh|5y8WqYhGYBL+U3Sa;pNNb6>B%W!RVqXr!MuK*#psr zx#f2EQqT2d_fnVjX*YYjW5pTdiO{pHr8a=01xK%HtJW5+#RbslFmhQTf2B>?|dUg4h~kQd`mR$#QN=&;PchC zTbR`3MSVysHohKS+XbE;ZkzU&-jhXsLX>FxW7AV9G4lBg-{`%yUHi}5M}&#U7QD{S zdG7O`{T}dtANG2m;{3y+xNWC1Dx}{GP!>Pvc!r!`cG@m@5?ADpOmKnnrPcq9AGPJ; zth5*(*U867|9xt~?YKw`<=gveyAZS;r&;R!t>0wc{v93XN_DOH&VKEBi%MK#4s0g{ zc5N|tvHU``cN4xsFeoU;R`Vrq#3gMm$Q8wR6s0) z$#EHVz2d}))gM{l+%bM}-4R9X`@Ps`6~1PgN<4w8wisJ5+r5W;iR}FpQAUJ7u!HbM5X?cR4RA0VNJ4CM7E6JjFD{IK?nUAw?d=IF>npWrAgZ zrGuq`rHZB8|Da@XX+qp3Yw=NqCuFa4N#u?p;Pso5zspJOhH!LkDLFL~^~gBsA&9ps zB~91fGoKd^q7y3dLiUfT?sqw=Ua_f8_M8lT_Kq&~zEjDq-*zdGU z63c;$*=PW!cTVh6V+$g$ujO*s-gV_YSQvMer7`bI1{2=tl>X`%@G1qJLV4IQ|L!gk z;oFXIttDwkM|vRveCiC77>8fa=z|I0wj;RZjsa%~(N669-($nkm!;92=)uRN#3@PR z-)|2iEbfyQcM1?oMSq~&Npzn%Dg6Diw3brK6-Mv)(XlPcU!d*i9-# zehbmko3o<~2EYG^$49!nCb_5=mVx#51)T;vN`KKy>J+2pRmoPpuoNshXF5=@KiKjk z9y=+>d;>acTg0az4Oo$M(L;~Ha(RQtOiI71zPNcSe$kWoYvigLt%8w$STPpx)`c#a z9c3i=`$s%c(&cr@Tl!&du;^UqLfBD;f|={_WJ#C5tADrE%I{e05a*C^r7L6)8Vjzg z$9qaj|3mU|6Xqji>F{hUV;8z;gW%8YdqUr%-tY$)Wd9^MQ%3$uA>1&r(e!!8e}3|q z(WS7=*?UqF@>4RX2@H^gz?L){*pjT%539xUccU9-51K9#=eouA%$@G1K@{&7BcAXN zSa03v#tm+ZVtQdTX!@50j-hMZ(_%#BKv@cAZo~^AUEYzrWf0biMdv|x#E!BMZ0Sub z6sqvdpC<0;VYwp8iu~6m%%??*u^tV0j->S4>Wgel1_9fWqfMB;7MNwoj{*7}b#Yt) zr8n$IZ0$Re=lbZaSoj`vC>))OjEBBlnX20vFBTq-OszIsthD7K!gy23c*B zWa5-%HVEs&YV)AOhwa+F0pjl$H-TR*oM{ zy1XYTZV=Xs_11%qgac(I7_hva#jfO{epn;cTX)1P=FCt{c?h9S9&~sd(#ye5eTXN= zgG3k}as;gg*EQnBmO;G4=ORneD_o^FgE^b<@<}0wk~!e_AhEc-=$JXASA)wN@!+J8 zeMy+XTC+`&gXMQ&@>AJTTyF}Grk$-HGn6lBxV-5sIi$COfxqdGVO5+y+;v^#M;2Q? zmb_(X9yxyp2fUxBgfCqoN6=odKr>!1={8Xjqy&lfqggR#BhGo)CYHZ1U8UjeBi~z( z1J2dIQ+zu$z(2V4nEpb2(RESot6|tFmN7s#&w+9t9M*#O3yl31!;l}{EJx>AaBDLj zFhwePCTVMkzKu2HOV`NJc^rJJ1#gH{^3;{fpZb=3q9OV|mXjadR}Se@vyBGqv+nff zopOh^4Pm@9^9)>X{AZKyj7Qi)1O4R?2pjD#1j0qj34t)u&faCi($as)tVxD-{*v`p zrGwu$ZXNAg-ypOf(^N=U88ibi^#UAifY+@|=q>@R_aC=>->W-B7e-T|#Y2He(LP0i z$kE24v|kuQp3v^1KqP26QNSBrvz!F5;!Q&Q+3`*w{>*r#tN6^w{`c@6L;M->EFs!w zZmQxa2<1u$eJ^B5&)1(iwt7c*OSkS6Mj8EkaXIws1OHQJT!J@1#jAlA&Zv7?CpsN(rF(!|;^f5q(GXcZiKt5A=+^L(B6rC=zcH-9H-d z1kL{?-d%M6fY>|d+`B-aFP| z>PzPIs@s*4Ml2}xl8X;evL$=F37Ikd-^J2jlteC?0ZiI*kH_)jT~QRI7P(QlrHpt` zgrpX^Q0S$4AK|^fO-Uo@M02gTc(_Xq1vx=z1aI=FgEtQrZH@SZN9Kq}~Xj zluFSGqtr;f5k|?9q7^E9DM^dDP8Un9{)VKr?3P#`h#&&=s0iRh*OO)jOD#E1~2@FjK4kYo_^hfv8E%na8=j`-xel56j3 z%A^3+%-eD*OrZAJZEABkD}x*{^FuP)uhf`ZZ@*Hji_^uksoB?Tr5OwrL*Wy(U+}l5k8v2a<)>Q8Y!@|u!4pf)6_^q# z3k;2A61OfeMY3%VG(8A{??2x&e)J(AOXVveCehc2Z?*(capUhWtEg~% z|9xAe?Ty9V10rN4GZpUd+NdHWZ`O$qqyw_#zp7z)u_GNkCT8a8{rMlcz%0|R33t4b zCH|`{o&xS0IT$tEeOe9O3r9kQ9(YOq>^=UL=k2HWFnO~@y56kcJzxmTQvW)F>180H z!umb+wn+7xb&`W`0a^NAN3gv7Bvd%Rlc93bW8TaDFJT}VWnU-5lT-GOfBptW%sd(< z8HFH0%+h~|H@FSDv(|?R^}X^GrB%MTZuGH>%;W<34F^8(tX+sQog}zz7cs7_;%DR0 zVO}Bj#|*eVvd%huhqK3DbEZ2js#9ffj;0Sazyy?NpBn(Kt%@T=SYJ_ zy#8Y-8cWZJPNm%i-%cFBxnTx~Q({2bXTrwH- z8DIbA+e79)OiY{XawZUN@fZUo=$;cv%FsOrt|<|<3}~2IM&9ZvI&tvRXC6e1gA#qt zPg974wV#1R4&(&O4UN)8>;*l2#!ZnpiV8}hCp~0EFGVw#G1egZUr8>eC2Er+8|H-S zZK$agoj%d9%pa0yi_W+u@m7lnh>!v4AJXUd^XR5b}mQy7=nB|ETG=jm= z--HT~;CP9*Pgya$vhf~bzRk{g!W^%lJIU+$Uz5Jfn?)FY zkm!RMZ1RkoIgtnxTnBIoSf35kCHkOW>wu(}AeglPQg(cx_NMwkdNeD1TJ4$Gw>L+j zze!H~kDe0HUmu2U$h4Gv!qZ<2g{`{c5X8aBWh0jP!dMjW|4kp7jTsP&XC8FhSjJI= zWv$=&!K`}-dO-laG|FfoWSEhNKF4dUQRa0AzaXBssNJoz4GDnc7fi@1#AnD*E?=fVtm_&p{7b z=#@tdM#Q3ETd-{Zs-MjFD($}eMa!d@?`2m%t|06WrZ(Y7aY&?a0S3tZTA>)E zc_cWD5%Qo`A`aN!=d z={ypb6g>SE1fw>S4q}IdBv^}e55k57;pI#idd^sD$N;$wcDSxPuNWb!au8l__<}9u z0fd+5?-Ee3!&Iwh4tWAo6 zD4;`l`Qb}&2s@Gh94`ez1vcy{koz(+(x4+Kr;L;==t~+Zf$;NpH=>XJPYHcm#Mk>N z0A46B&;R^-KijNp#;WVo%cUkOjE!yC4f~w9=L$%~oahfWR27hr@Fm(o6i+1CAb4se zqoXQhfPzwR>{wa_{5<@fnJLJ#KJeKYc%7O_#bds^Iif;wF8Vu#>$THREE6^N_^=d{ zHcAZc?{g6;CMqlg*f0POQ93$^?W^rDmdZ=PZNN=^L2sb0^g;i%wBr z7`A~HYWtx(Hma7g@{C&QNWiMs$r=0iYKRp3lzVUPI?l(vXgdCq@Ez=rQ!@>ob9A-E zAq{)WvAQvxQd0J3`-}2qJm%oJ&n>iNTFOWo?7LN+DHxny!BPNfnctaqM^RgpF>7R$ z6DNCj$4ScF*BwDA=n19-KGX>&+)A$=a5Cn#kEWpV7zruGOmW^bZy!jxU1h>P5G}}g zf30IS1#RC%!UxH)^IYrJD-$}_NSSgJl8$995=D~-tWjp=^vNB+w2)X#8GSHpjEIXP z#>$1pyVA6<47;ZREi?)fk>VKaU1A?%!w%WWyXi)1w$Wv#JU&>uixekJHSNhKI5pk1 z71+(Mc8tAkUu~5mH^*d_-*apGJV`9px;=^QZG!tVs;Qjgh>UX_VjAt}iWA+2bl3NC zYn^bXr}U@?m#cmck1{OKk<%}tV~>zBqGQ*YGHR&7g(12f_~J;e+~ss~JG!fESCKM? z(2-ub{lN*ZU*N(rEF-GQkx99SEURs3#Tx>&R|}A?FZt-b#B##-3w`B;!QQpAho%?O z?{vGgQ@xISVln0fYrEUEj+%c_b~Y&83Cq6Au8zum@kDx5wT~AE0B4SybCbKgfm{R0n zOfHy-)Vb+@`Lg_@NsyX?@O9n0v8r8Q40_HBK^Pcij6?V^LWtC-M&|+uCLo=cUSJ#m z1__!)cuwgv0`<+enMBAowvgLw#l9P!@(X1%rED0U!Y^~9-udJKh?jg!B7H^(4j``| zkgAujw_%u_0`_ji5;qJh6YIb+m{FJpMnC{0Zp4O_?W}+y;Iv!ehL*H&EWwRQ_X^5v^?3Gx8NDNq4tE3f_vbkJ8I8 z#so@1;aq}D9XTmDBPQfZ;RT$$$sLp_R3oOS17WG0JmziSkIeUt4FwYN0BwplK1>7IWg3th+M*fm`^lhg}6 z?2}}|OO8K7eJfbpI<_Z~y-hfNMh$5k-#fWFKX+-Cj7R>}}rxp{J*x?7}<^mxhd(Mz;FyvyikAE|px0S}azWwS?7_jehx z+FN!ZS#4DwIA2y6&nY-ep66@seTtP;yYf9Jby$4T7<|<+bAmhH*5L8QH(KWqU$pgV zmrk^+=cIE}UOzkK4pU%9u=UIC+{8X3Zm^g4zzl5iq6&<;Q<#}tF$}p=QZs~d)iKO} zrGm0ILcnz!kyo(sOcf4tADGquHMqUpIA(t~YLstn?6LU;A9I733upQm@UQ0`OhNKr8Y1q?e3= z;U)yB&X50NV-%tMFfA`n-Aa$(Ca6=mYF_%gXvT<+Cr&S|aY?(8$oXf-P{T|@fCzX7 zV;qM0bw+L&5~P9&(5JneOp<@S^I_mI*P>H zeD9w;WZ*{RS{I@>He7ejjL-d(l{vg%0;+a=;F62J&dlLDB8R$<*f4Pr=M%NC0!@eDiiCQ%kT`FCAyLk25uBS4Q;du5PQj}kTGTet6?{?C_o zdtl1E`t-K6rtP?bs-}nf1j(&ad6KNb$o*%;TsiJhch)3UzUc?si@Rswj~34H#M+Sr z@X(fwC<9(EF-KA_7zRyTw6s+Skc;(jo!nOLbUI;-?!h?Wm8A(aT!LmqAV4pm zWtsaN$zo9{Be=>5=W~~*01fG)q+Za%l8Ih`;-0r&V3CtxX=_p)ru(w&IsU}5N*&I` z3hHb~x+9N$TgeHJeGfo|NICrz6qQA%bL`_qgW1rty<4)YUg$uN*e>T~xZEx?bq9|J zIru1(bF8b5_Y7Z_1s}zb?m9Gv!FRb0+KN1|%T}-(!)te`=evPjocS)a6OQ?wo)dH$ zoW932+j7XVai^n6e|EdkpG}{4oq2pr4ZzK=k3;Oh|73(>xbA=Ub~hroz+PTgpHY0q zD5FoGk!mcA(db4G91BQoM;KjB9=%CtA;!O_GiXyD76C^j%e5}~U%DwwC5S8qq!G&P z@ZH?RjWtJS3R=aEYTK6{xcs$9%{g%9JdX{-X#`lw>x1x`>lAKs3NLug%BUJ{@(__6 zh(y%8NgS}(H^n@UNFMMY(Wh$t7sk~wzP`>VMpt>*DI836MA9L>*2vYvumiIi)Uz^G zNL`UYB&4alKG+~cPT{PK_J1-lT(>eE9pMEG1(BZ1$)FNqEG`QS<;M7R)-p3SY#1V7 z4JGc{&$W?vg9tnvZs~+xHwPRAioPQ)D6E2t6l$M<>y!;iUtXLQLhEj4X8v!^ zWV{M#SXvYno0&BSU|{x^GIe^~rC2f212fSSq7);~h0oN@aPlax9hO3=W~87LTEK;! z*Yz_6o5x6YASjg!%e+fS3lGakc_8>B7w%e@&k3YC>~{qbNtdM7-B*B-JZnf-1&T(` zFD>$ZBW>2uqzZ^er@{$=M#n=fVw;tIEo2)LHp;Lk6&U}3K4D|U|3cphlWh7-^fmUK z;2`Qx3Pk-W(i}roF6P$pdGfYcYw09KgDLLM@TPK_qqb&&TVn0FPV_)@tBMmIPB+~N zmtTMs2!TCc9EqYkodihaR@MbjTUs#$s9(F<2K0sWkH2iG+oL}xZ)qbFxc!>Zrkp2c zzAC{EDgKDRHuiM55Mfj4<kUwMZg2*o?Fs@Ll(a zINAn`=?WB2;@bv(C$dlhir2=tp6J}@(W^Bg^lVj2|ET}1S&45W;`^wKnoy5mK2Ylj z;vgHyQ297q0pqk&a!6>C<_aG`VjxqRm6edcHcO|lqB;cSB~v0w=>21eL2!<;)EOBR zRk{k_Nx>Pl2x7r21jf)SJ0_8bzy1P8? z(hx2>r{ED9n<)8zF;!Ix>Eq(f>wKO> zZt*c?@arYZbIP7YQUQ{lB~1b9`-{>UK?}F-S0wdb@;EYmZl4lBTVH;Z z5u@nH#ooT-h*sK@dm?iAvfuFr05w<0{{Ud^BI;}y0swnT>ag8`C1s!FVvHUN(LiL` zFY65_XqV9~*oHYnXy??kug)CBs9OU)&|{XKJ&FXD@gpO438;GrJqT2m3_ZxdENVXr zUEhO%Xo+98Vs?G@H{TAP{p~D@d3Zm5M|b%^wCzt8(uj7-olIu_DFfwU0jZ@q${>cp zM+zYL!eBAU4Z=l~{0p!E&GYCOw0n8yrVg#he35I4z`AR^LZD*Y9~%$M($eA?EZ|=Y zAVgqoYLCFksGH&uM6}O@7+~>w4S9L)*EJ);2m+YEhA%JC3asWpY{YmL{}(j>LErfs zJOpc5gyd!Jbf1w>a^dRtn_3ohV(xWc`<-Xe=M2!C%|iw z=@e@OL}#Z+uYKp7odr-&B!4+#Q_}v0n0*!q6b2s5gOCn$hdyLvLHftZqi90?0iqh6 z|7vLv^XX4+-ee&&4u5T1X4Lc^jpl1Rd)-p5*;!Q0zg={>b$!u=(3C(aT%L=JsfQ>9 zKvgrg9(cLIMP=S&n?lTEY(5Ym!^OYWPMJbz*h$KX3&I`(1N~S7f-CU&TCKH+Ul}{G z`ZHD#C3kack@OpT{`ZUzQGHU`7*Qe8&bK(!wc=iL$df(rq6>w|J=@49yHtO_=+Yd; zRzX|?bo1@*+yf5^FR6BYuYnH-k!Zrk7C!@Mj5L3S_*UQ^bs9`kh;?30;-an4o}+{3 zeCL>Q%joBK#oFEq+zDOD7a(bAeYWdt5AMF!FHU!&dpMjZmD|Gwj30~2llvCx2aGt8 z%Pu%mG;!QtA;0Y+enkbPt3m6&`E5&qsapucNytXs2pd+C|G@F zwXS#&#ek`Xsj{s7C@_DI&!Cf8^~=ib#t6+_0)uV}52`Zb=lQj}KwgXXJL;xTcdmyM z!Y4GMt-zkBXt&(SSKnyW;|HQn@2GQ~9vC1t#M@A&%9I-=V5)??cf&v(5I~m2T#5V03AfDijV=j zf0_rjUg=5T>ttsDxcPr59-Hz3)`W#HsJc2s-z6@Z)-Z3!sY`6!^BcbT!UD zUd)4?x&@aqZ!znoEW@2L)}`c!^-zRR?p?;-Tc>=nd}P{vE;cW$j0`?ygBZ?U3c*4W zgbS5I>;N8qK3Y!1AFVw$=Jg9s9$qN_zj*utg8$+PK)L_T6Xg9T56a2^FF7a=Hzz_4 z_`72$l=t7tP=SB*_@Dy+a>CF3ZzqC$|I+2<;`}=g^bh{=a`F6~dBfx3vT@KNs&mgW=(a^4?4Y_^%Tv6w3L}Wrafd{}nYz`wh74N7yQRU za`6aqf^)e}wErse2tv93X^=;dpX-0THDEB{p8Xe(SAgeVx*+d=zOA4huK?fQd9sM; zx%l|FuA}+;Oh6w0KUaZI@Xzt#Z!-pYeEjg{L}Y64*fp1kOsVsKexmgM@|n}kCr!pL zTs&Twfg1q4w-hHgA6zX7nfZ?!pZ{Ona6Els=0a#vW+ITZQHhO+qQjT+nCrkCbn%%jEOP91e4^=z3=P(RoAMjkJEi>@9y5+ zS&5idiFYUd z^P&bKC4Ci2*{HA`8t_svCvm$hjuIBenl~Yx`zWJUAg*QB)_nhd(_n-sV_+XU9w&xr z&7gw*;llm>)iT1-)$>8MF6H5&WslORKIQKf(dva?%A95iuw#DY;_Aa8^XccCQiA`9 z9uADi>C*-KeHpFFufpWH;J>XddYP*f_k%ij-Ej)PDlr&F0r z*)F?ye3hi!11eooZ{O-0y$Y0+ZkBR8epT?k3;g(aKc8&F{asK&HTmR}O1?Q3Q(}zq z4Ye~-L#%ZoWw=rrT|I?V(V()AP*S3#kQSgeErVONye4751jm}ip?!fW9W5ywf=yRz zS$ldTF+2Bl!On{cQB)>BhI%xV6rq?LSH=KUPKHQjP%rb%Z4^I5g=r3@RhbueeRs}0 zblNoWw}AKOo=?V)@X8F-vEZ-cx*XRkb3}T2@I4`s#2;e1I!c2_<_$s|e%mq`8V3do z6Hd@C82Vxl^-seRkfy1UR`)>5;UmDcMU!w*R_JB?*O-z%_H=~g(FaTh%NnpYqe^ov zidU}K^aX3#k_D@~bvO@c*oA8Pg_==TxmIcMFxqtljQXfK46N99R_KTYC1S{@@+RL$j zy%ms-10pyAKsNk11d@nw*B(g*%QDl~TCb9IHaDmvY)MwG z{`ve_&q%p|XL#v=@^mJ#j*fkbA zYeHXC1{WAWc5brfn}1^Vg$O|EZpj^5#!N`xO2dBVHpU+UzrBprFlTAa%VBU*0MCjw zAS>#j2#o-v|JU6K2^$q)jFh#jmWT(4aLl*R{$0ndNMjOhmhYW!=qn zXknNNgFfP*6hYk=bpj=hKMv&Sm7R!5n*WGED4z*q&n2>lT|5kr|75GuyYIiCVyoF7 zbHJ5jJzVo1z-2x{8f>NR;35_Gp5=#CA=W2V;k68$ct^q9cwap7A%sE4LGPzK&&9FIb*=!IbL5m`?BZL^DQKy~R}Zb}T!m)V##udm@Hp7*J?4Rh-ydN@6~nCRYnt8?aUY4J+C*8bi2F(%RBe0Lw^ zb?b3`p(nn)rx=}c&c>&|3qCkI-U?bhe%1G3YBxkI{2||tfV;yOV_Dyh=Fb#SHRwTQ z03+$Etw2N7f)?H*LS5Q%J@UrQ%z<|f|bQdSl#G7^vK&tn|gt8`ofEPyz)KT zZwwDvpz&hvuyI+=vjb3?&{Ky~G%h5;5kFjIN2n^q#Tv1sQ~?|0Jp}^hWbndn@`^RY#sDli7-~~4GuOUZ5ApMiMP zcC#tvbJ6a0{9lMzAe>(-AF({zm4CfbOO~Tkew3G63IaKFz3gEVuF zzN=elrxoVW7U=R)1x{2n4+y5GGluTB^qRh{h?w6#R?%Djyg|-u_TYuRCEcisCZrnk zJ>O_(1*I5?L%!iuX?D~A{fhz4X76`=P1d-i?UgPN3Ii(C#sk9f{FJf7PhY~lo2@3^ zDJE&i$qHCTXUib^Enpxj7dQun-!0p7<71C_S*?HI{-oiw0~~gq(^Y@i6|Y{)Rt>jJ z3a6o6J7?ctzKIFYH>8DBep2w&;`7S}=N!N7FWu1xq=k;V7si>XUtL~7_%FHYh-8<0 z&?tBs?(F`NYfR*fY%sWPnT*oTTsckS*r{JvmIJEy))dk)V`Ns#KS2co?@=Vsf62Rz zV*QXq7i=sZDVc>;Vd)W-GdP6I)^f%_VwsG2RA3SjSU3HZ)Qfcv%c{y-)duoIsNr#o zAYVNS_c@=BBu2{gJPUo}51m+1MQYQev8Rvm+5;}L!+V1;ccoeO;>&se;Y1poL+Z7)nl3J4s zDyNugp?Rynn@|=_>bJ7Aia%n4alyErVs8K)zOEKkk$t;6^d8PDkIG+GQ7O#Es>Mq%)0Te@gfTU^44=$VLO^(C zRRqtXAy-yyD>R%sZ{T~J5+uc^7^TVK#?=vVy+wv)(=v#d??|U6dF=L~l6#j2VyOYf zE!-EA#q5VDy5TaLTYgjyi0*1Sw~?5vG!H*=yT$JhzL!?rUXlxZzkmG}Ecs~BPxB!E zJkVJjR}njn=E450_C%rw9+2nH+LP~CK)twEk?1>{bvGt}RB%@- z%!QIAbtUUyN82xvr?K1M!14SjHG`(u;gNwu{C$1BdrY^~p#-#?m4fQuUS@dwmNvSuYa0)=fLOK3X@b4>5V>3nV6U*mXkisUOK81kC_C|$E- zxI{hWQW~_hgR$Cm&81StRdGhluD8rK2!h2PKHHEWpD+f$4#d26e@npK>)2-#q4T&dFtcVKKBExm}ipr94oiO z3p0&yc^=MH;-pB<7blrWi5<5}T#2JvdwqS#OZ1OKnX{$2cd63mc>KH&4}q>Wx&qut>C zC**x)gp~<539IG78KS}pKKr912MN>53emw=s|mLb`(s?bc?ag z9<~;=YTnFMdrVqKBJj=j$3MjaX#VaH(Vsm74z$z}efGalhMvXyM$6ZM}O`O9o&*(iI(~pB??v>+M0D?B>N%Zx<0nDY1gXZ zMSrd~2rTNtBfIyn)lt(mx7E*Ec}wpRg!BJBaW5gfBRcHmJwAMVvK8EYo2mr8Zff3|QKU(>FUcP8#Cz8!0}iK(`S{1`@zc(KUZ zdbAK|tE-O{Ni!1z_IOpyK!`dtf_3BP+YPbL#$C*Y1)EC|tgT5h0OIN?HHf#Nt${x6 zbZZU&#YtjhNtEU9UDNkd7mF>k5(XW0EC%CzwJ{r0bCiY6HKdqU15=dbwO!2)F`7FD z81}qR_Uv>_ErfR-+=#Gv%Vd4e@!s(4c=*h|J;TbtszJYFJ?;xdz3tOw&D%wI+Vxw* z&4t86wHAX*8I$`uu-?!h`66zR{F40U*Li_OWPqdvc4hcSi>cfx{-R4=a;0I-zebA) z2#2nR>Z!8E+6$Sl-=@>)9l~?JTg)8WZv%z59(V?uvh%R%OaCOys;63h& zgEPv}W!Em&GrYL(&QrTKsR!5m#gV1$-=O(zb$q=&V1Rc8@Z7XK-R=sghkEKB>W1kV z$L<_VPn!1htJ~M6yXZ%ZF^HB0ACPNknpaR7|6s;&y}`~9l=>;nQ2^^@>>F^0iH4zX zX}Xjc6UKBUv0?z7oKxqYv_g9s&aeMfNx2+(m|J3v_!Wet=vA;%d`0%x=M$+-Rqe7> zw{Ay$gfa0A=%4z_7^qg2;{EZ*Y_yUXqsUSdIYR__s*}Ti8bl(zz-f@}KJ7 z)f7z*Cl?5!NnG3`3t`!pN=3Z-lsLHp(|Q!JE_Z?T)`K7A4I>^uu_mR#$lGXEtDA#w zoq}5+i{g%%RJT<}U*aEww&V>wNmo*39&9dFc3CJU34=22Evbk6GDQdi z>jsIZnCrg9Evbo}s5_R2Y|CjeAQ_-R7mwa#f+BZE0n)UqZFLn^J~dM`SG9b+G3%M& zD*R6$60{KT3o3ujgAxv9@L~tnf{07J?Lrd{!G-1Z&J%{{VjXq2vSbV66^cAScH*nG zt-5z~fYJsjWo|{79N1%&)yLAlwRi`boRgPV&Do+X*moI)l8!&)Z+At?Lhg#Kd_Q;c zZcH2lposbe{8fdNlE?#s8upF6tg<8t6Upjh?;qwzVNzILxC|K_O@?Sb>*0q8m^DJN z2v?|xoNnix5}A=`?C=YS5Oc5*j**TcRM+w$fvtz2DiW1%gv5*aRdqsc^tZt{GCz{Obc(Ie<3OjqiO23qKI-uJM9dRo8YCK zY`nW9L2dYhxRs>2RplU7NtJp zrS0!)B?YV&xH9kV14_nAmbJgz3%kKkH4yf1Z3o0r*Zc@GBErSEeg_%-E4r-PZwzVv zEthy-M`C;-;R0A5e%t1G=9IID#mxM1u-{$O!!fMRZLs-9*}4aoi3r!Gr(FQ-FjqcC zxNhixlvR>gB(WcHste~wSJL4fh&;-)VUjlr4WFXw!yhTVKxg#6B>HX0KL&&5{XXzn z=tkrm>s;tJz5DjhyMuyg?}CySxp4CEFP~6Qg(qfaU@l^|9L}m56Z;unZ@+Y~4Bol%(~50a?ry%CwyfhutHc zctO$PzKURhMrxlLVC{Hub91878p-#7P3FWJW|QiZW4#Tr(MR5Or6Io9)oA3g9wHLh zj+HHbteif3W+Nx*zF}y&hOPUZgENYm5bpx>sHwnhY*)e(neW;5$0Wca`h5Il?5|^) zio)8SnN4F{V00TST`Ka6!HrKeCm}}_yBw_h_Ax?YJ^1UrX%MOdMCx-m`DBdGHeoV! zW2NkFmgRd?Pl;uQytH)9%lb9AAoHK^&&B15{La_=PE3fTwr}1kBB%1!%f#=e*3Zn& z%&JvIGmIKYw^^Mxmz6*^DVk~|L3Z=qC8=MGT4V;bR5E6^d-Be(kJxm!f(QO@=RhD3 zWT?&?LMYHt*J?rhz7^7&=*6D3h)4Wsxpr52XM7H0j0R(zf!VleL}65i39^_)yE zHMAXU|B2Hk|B~coz%eUZ5Q)f|aXF0dHGppv51jl!5RVwfYYT`V`H4kLJrvL^f_g(j zTwdqSb%3!dQ|FEwN^eZZhcVz+JH0VABT0+DKFx}0H!+tZ=FknfEC`R-hGaz~mSH-n z6I^;P_-{mok9Kf||06W=;P~CSiv=O^M43PsK64{-IX*fFKJo%Y6j9@9U-_N6Dh+ZT z6&ug{o#(sY48UAg)PirT>J%YUrY@W#<^jUOy&~9SMU0X}lKK0cX@;Dlm<``n_6xy; zkp?5_^glHbJvzhqI!250KED`{d%7(HuQ76zMWyA9e=Ar zqfku#RX)!U@&Fn2AL5>b+7GfHCrl`EJy(OvNVdZ#Ggp~V=TE(S88X_tFgv+E@DKUM z3kxs5GI;blm=f;Ye)0(IKO4dj_k4(5l(|$*_TFA=r{sbCcORQ1K^3J+g=Q%voJAD> z#N!9Rwt^s}U3rtg!F}c-Msz@UjzIw>Px}07Wtrm~XN_#GAuZs7JZhK&gVznQ0ZKU& zJZnBQ27Q~xt7XPei7#MoVfw)E?!@W?~j*Ifdu9qdleJSH^5YOWr39XG=RX zid{D3DX&x|RKWDoF$>~RRztt0 zMa?ak(4-bulIpAN3cFd3k_*bKqde2JX>pKbpijio4hfZ+F2!YeowQh$N_1APB(H_0 zAaK?13CA?b=#b6knJ%BPM6}AAXNu}_|JM{(% zFSh~b2uXQ(DvS)*xZRbzTb?ZG3lb!?^^888PDYDK7+dS!7=CT=V`S7{$hr-rNN5x2 zFQ`o&`10nuv}kIfCj#afLE$~FWZr#Gy}#Ki@Y)*rq%eg=A89sljZhmhPR>L_F_fo~ zMT=G`^GCS2-NyJ7nNl{Z+4J@mz!-X}Vp_a$dZgvHU{5S}4?ikrDT0Ic(y!E{)pwvFo4o+Au5D5W$PwbPO ze6sHSXZ!%3MuEt;&sOk`So`^G_=RmZX}slx48|^j@vXv+Ul2iO?W{ZIUVH4@?Zgea z)pP6D;N|W>5lX{FZ%GM!TX0L^ia;-tF|{-LAIt$w+abCZm#q zJxExxpiq)|q{GcQ&pWfU5qSVn+keye?yfJN3ZY~1X?K;McZ+RJHUw2=ZDJ;WTfF0l zw@=SYdI&WMO~GDSA)o`36$K*7TB#dU>asPAyeKR^zG60%^U6%GiRIC(Oc5W&a#y9 z=4+F(;iMya_aOR7-DIk3PmEUhM6}Xmr|EbXgF>;?0Rz{jxYDEHSA7!ogW;37E~OWu zoV4b6?Um1oo!AZO{J>$7le1p@H`+0Kiv;c}P43J39^@loSpjp+5m!V-iNo)qy=068 zC8-EB-v-&R1mcJD83LvQwE1Iv+WO!e{x@cgeN8vYX`|L0|_pZp38~T#SY6&Z9p*GkUn^-!lfFJ@rA#8AXP!8fKQZz z;EU74Jl&;mpd`zHa7W=Ixbn9?M1->S#3&5I(EZpV(0^BghgSU}gUesZC#f?V-o95u z;mC@1Ms_jeTm~Y%j;Tni>5TB|x{@gDm2CaZi|ioGBhdVqzmLdEgwX(4i%dLGj0bzG zCGo{UMTGd;0^TrAOkKF-!#@N%rD;4?dCN+RrLzhq(@=Ry>BaD;o5&0@QK~(DvbHmT zTl6?c!Frm{|D4qpscmvnYam|bZNA$#fx$vPdQ2e3;02mbW%&DAzO}x;BoL4Cx(;MN z@Hx6QWgM1rN@4!vm*e3h(Y?|(3Hait5Q(wWH-uM#m~7C*EHy-%bNL6^I^tY;_6LWs zRHzxLA$ah5_v+0@IQ^l-PJ*QmAmsio;6(d=wh2cE1XnoOb0Xgf=NtPE9^A){5FohVZ6!sxD7x<1DNzo1jE4T6q>`!?Y? zTXDo7iuPJvl1G8}rcL1({KF|bos;J-jM7LVq67LZ-E`C^Fc)kxs^6fWzT8LL`P*-q z?~p7shj-*psw&cL)$2wFX*&$0kwQdRk@eC9;(((9sno=8+oeKA#lz^DD6JcV(LrwQ zTOPXA-PyAci~JVUQpk~1b`s>NZZlTZZ=^^|)YJ7(!f!l}x=X>7ssyC-R+FFs8Q|=) zJU7`jGS|=%b>57-*^?<}lB$ZNNF^kA1aUoD0}|dX>hio*7Y4aE#DUTh(fsZa*77k* z5dgGS2FJqBXn}Z3at;bsKMa|%k#qza`s8RB8p$tR=XvSaB;zVF1emc_?|Ai0@08@z z5xdM{EE$=YT3c+_#X89}{qHxCKh@23i%#gU#|}qGr@>W5Nb%7LsWcmn>iw=gndw)MchpYQrv?===mr4&>xScEcpyB4(wO8_rFem>&| zF&oGc$%DD{gI$0ncI;1m3E0AZHaPs$(MR4DDtCiYTlx{Po-oTlaSO+dHf$k6UKNzG zjaF^H?MFKchH>!V>Ia4iS0g`g{<&cjcy;6+X1zSq2;CZRg(g@gp-)8Ry z!k7lVn7mBgRmB#S#br}8rrf+_=~eC4G*RhBT2+_=tAG+U^*3}%ngZaH1NsZ{yNr4< zdAfS@JLaS~7NygO#95cSx-^xe$~BP-$_-<{2uV>^dk%3Kd%pDuPw-PXwS>%t(?5hr zis``^ic$Z5!+jq#I2n;~Y@8j78q1$3jvO1W&KV+wsSv%NJ(`qmBb3aE#@oi73qzm> zubZRY38TEfe`rqQ?h3Gg$#RvP4@YymCo)3HW^K(=Q0guSbagVDolE>VGu>FqF-?Qr zHSWejsM(P?hD$^Zx-^U_z@#EN-9Vp4`Q>z+Br34m?C4vj81yol)yrz zdWnJ7DJ5aG!ZHw7`Lj@OBt$umvJ15Nercaw6^HY|+(R6?suqNp(B;o~@*myKZF9wf zw$bbQnY(1^fEyquZs*<3QBplYuVAE_Q&KQAS5r!zlmm9<%SI>JULJDfXxR}vl*ag1 zGCY>5pkzoTbIje?I`!cz0}~^qSPQ$%=2Gp6{{~_eEz>r^pykqem)te8c}g6JC8(=vlPMz+wRZp!#ccJtiRy?+ z>h9Gjz%s4kU7^?`*d|9(8q}}~hr8TV79z1KtX3YP<=^@#XZ^Q+ z)L?XTQtHtP2UyZ4RnM|yA<`TrmqSx$cG`m{F3V3Jo@BZl^~%Cw=z=@KahsbbNoscO zvv`i9;N>RN%}HRLuG6~RCQuME#QC#OoIzcH3>Fla40d74$SYD)o{xzOHiYCklJ2PQ z_^#7w{i&s4a)^p0yltaDg#09?8qAB-E@ia8Q9RLA^`%5g*SQGtf)+ak?R?u zUEd0;s#3ri>i9uBa2Gfijqc zdDU(pF8^$5nKk-om}7>*4;XXRcyg%kGQ{1pqq=^nrsO(F?qHk$xI>RLXbQeKW$+bg zOjo4IVdhLF`owD^+5{vcm70uf6flOE9UX>Pw20rwA-pgkP3E zj-Xs)SAOsWpcs>OTf?CvI}mRFq6V~-Wv_~t{AELSKihP4#|9JFD1lKSr7z?9i8Uh8iixLfBKW-5=P*7gTOhj zNRZ48GqjMHa7(dlI`GF;PG>l3DRD0H{ME-TLSwQ-SDQa4Tq*!~339Rm5Cq}%Hwa)Q z3U2m-cN<)NuMd`C1P8Hx92t4Nn0hgT-3E-$3t@GBeft`#8D*H8+J`(Kyxp(%A?ne^ z{kdDPN9Yn7x8M23Tii2bP1}&EGLQ2j4X8EgD_D$S2~u;=8;E^MWTgS0+gRDiv)W$qS7>!5ezLF_(|%a$^plOM|-P85qL1 zqHQeFQk;W|YniH)5y<6NE+O_!;;0_d`4=caiSnc5q8s>DXk*AVFB_V(X*f4DE2G;} z`v-QN#UZP)&HHVx>LW8Tk;y21h@8|6Wq%zXL;7Ha$8B1sh^`a9ov#{7~ zaD&iN{wAC)%0Aj@tUAF-6uB5#ptDP8m#Rq^jTxB#A``^^+xQ}bJ1n98i<)3gvxZqk zdpQK{t#hJr&GxHP(q2wP6J_hAj4CtAXx+z9RO>E3$Um37cf2ZpQ(C?9q#g8cw6~mKRuL}$*tR5}0Q$eMm zJ$*SF($!K>m?$1Pa+14anoz%b3xNts4*lYcLmI>ililwu@2*{odR48SH{e$T)kt&} z*1c|5?g08}cpAQz2y7p}h(-=%mv2pr@7p>4^+g~TVndK^*`F^*7v^v3cBzsfq8$7ec6;{xcJ1VS=NxkT+s~dbFQ_L%``WRXt1<=f z6%#4mAma%$!I87iOD*%^P{8FA-K}Nzj@_}{jwQ2sbj-5_h2b{W4*dp8#sb zaNt&q(6Lq^=rh3yk=Y4}8?dw|Z!mLZkpY)K9ne)1o)s=mEC!japDR7N z;K>|Arl<@yQS86kMOyvBl40p}$mAa!6z!ToB-+uBP`6Fcb+%r1vD}oI#J6VW7I}x?=dXBBx3w_(0^45C}3rphS z3PE7+j#P3*0UapHT{sF~Cg6{X56D^yb-!w?JH2RIUU=2Zy@;1E*X(tXL{Z!6^6Fl5 zQSi#+M9WFza%|DKZ+cQyVyQdG4+qUV;i6J^6QkNnL0M~afY_*`Lo!o_e{8Yglr+bi zLmMOx-`iw}8ex~aT526C5ko}$-%gV_T6Rbzrd0)F(N0E!Jt%iSp<3dz+-O-+l5dd7 z_}Wzzlfm~Qs-GlW3%k8o2Djt%g>?Gi2&Vlq=c9*+WU_mAdi$mQH(|6HS54bVeYKQk zri}*IV7A^9Q2Insb)6Ea(!i`%usZ?EhJmKor6=F51yZ^pN66bdbu2JdW9`vpR7P{W zpHw<({14nv=xqf(9rYg>~V2D+GDoYDbGN6H_c>Lqx z0{FfiEA`XfC0@eI~Z&r-X zi|Z8h{7WmDmmsNbwu#m1c$<%r{WAJ0znv;)>MCc#)9LZ88UMJk(DMJfdz8`ecLFXx zl=}VNj+r7mga~qnH~;?nJn+^aiaAP0KP~v8H~hF2R;j%guZ?+o0bK2#(}A7 zl%czQqjyBg43aa1)l#c=L}L7C=&M^Qrfr(%L@xxB!K@8IRiF{Z_dKUu3+(rM|w zRf5@nBMR^b0^R%q+!zHH`x^n}%k6fFbwmpTER8CK@y~JM&JT`b&j<79GJ5R6AH2!GU^h|H!V{{ptzbdf_<1=OfGF2CBFSklQI}N z;^o|3&aq)e(_hf!E{d7#2-+`mwXpCv`B-HSF8UoMh0gLTPp$hlyakqK*X6;o8Au!< z8u+#!ncTJNMElingek*E0kk66@u_(b&K0ku^$oN&aY1-ud0pG=3Z64HA^LH(`M^1Q z90RuzAlqvN+gl*}p>f`D$N@@x9CZg8Q_ZxR!Ga@yqGIFEO+Rrt5kw)e=}=hQi3|3d z!*!qCVw%HsqG2Mago{$5{l0;UIQHSD=EDA2LOWE=>W6br{w(hQ=W^t)6CE|@jG{CcAyz#mh&aB z^;hKRb3pOUF2+wBVTSHWI>>vVnH@aLzy+0TdW66-uyBwd&5 z{B7jlvQrVQnhQFqW_$(~q6yj*?D|xD@uJMAbnlKC`jNBsh~O!UMRyCu)R*U#fy6?-2d@2 zxlwSkHB+A>z)s<=BL?IeH8Qw*%8{6`*^WPx8!nA@yH4zDFFr3DxpUE|4T*~n_-G&o z=^dF|K-?ClLGy}EElRamw%>nkSr{K;&TS3mw!z}Y9}1n!Zhb?w3I&+Ax45g=_`gUV z2|1H-OJQo5Ttrvm4OXFvEruBXnE^UA2>eVDF+pcwe!aGMV#4E5)Sr?8(X)n5@VRo5 z#=wQ#)t!MFtq3~_mZXm=&;#TK=&HG>BQ$GPmX25!2}~wj_(}2PBr%`O#1HQa6T}VfN+0-O<|{^kU=wlp_&i8W{n~Kb=j7AB_p;7 zaq+sN2x;)Vl9vqYS(a@Bgxaf*~lqS>4b;#9pkJg{eSj%u8zf@t+kk$xM&J`Mh6HG&> zzZ)hz2Ks!SZxG0@7y()G;w>}c`>_xXi#pb2yQT4ZO1fnfZarqjO~eV`1jNZv+!6hL z8k6876(1$~Y>UTAxX4S-O=^p587zlOIP*Ivh*=UuGhhx|;AE$aolIFI>(N)6F;<-< zo5hjS4IlDSl24O2kX*O3(odM_W}l=Sy%rM>MfK3rp}jR^&;j1ru7j9nuiCmVwu9Pm z{Qii4T3B@6m~93(f{5V|iYB2BG@%{9*fv8*TKnN67xwq&Rfn4u!WL3Nn8PA0W`>lI zz+j7{aEzhzzz%;+F{JjgGA{Wu7G8?1-gos5n@TU3qnfbmz{7B(sb&nit06_qxy7#M zoJg;j09A!DB*>?A>vg~N>VZQ(t@=K z#0;_+6iw<)a!`r-NqwvgkTOw?-R>_F5#;JT_Qb{B90pzL$w)E{6zluTC;w7Z(-Agz zE2z8mGUz!&pL;5(^`@8kPOI%*@Ruj7rSYSn!mmU^0f#IC)!r=32&kjQ#~yB+$VtuW zyx1cRI=myhr^vmWEdNH9lFu^Up87tX9H)O0v5qRgcag8r^BZc&rHBx9E=$|h$Jr^Z zCJEbT3a*konF$o-XK5BPtTJ?uO)flYnyjRdv7gy?k?EITx_{;FY8{#mJH{R9twt9~ zHDa!CfLevkVMtwA%F-ETFUZ`jPVEPr+AH`#%OO-XWLpOp&P0fb1)dbX_$>naT!abg z@isf8%VgtpI3bA0MZ&RzAHL*)7NL*wSeLCg$Xgghfo7cl_I<_Zog- z4KwWR-piKv2H>J5zp>U>4OwJk+7O^UCZQ~NfCi4r-Zf5Qe#*Tq`pZ$?1gNl%nYQ+` zpl;+_4q|gEEu?w>MZ}A54;;ITsx%uYY(XXnGPrYr$?c?3AE?Ff`tz9YCyZ1ZOlP;_ z5SeHoEk-3ESs!2)ao-oA!OZ(Z;IlqtL0sHUu%-+br&m@Mw|_*V81C4F^-kL+ty@u! z0cS0^$M@wF3_gurP71SY=oOT;90d2}hKjTx)ifl2Y>DOv3rs%rLtNwLx= z`bY%fw9M)nc8$qz$DNhXD8ZHJ8aY+w0BJM71$@+_tVcQ}?T;vWg~_dSagS(&?WQ#K z?)+YDgF0*3)wE_Y>nY|4aW%*Q$xI}{`PRSeBFQP?Y_yBVKmS@|OAVj?$W%%k>gko& z776n_9!x84Gn9gOh*?SmJHXCPDy818lbUB$JkU7yLidN>n;5C+y|9HNvfzWt1uV@) zmk>oeKqpnkE4;>cUB@f@P$k36XZ(mu*$vNekC>2dW*<8KrIkzsp!(W*qV%PJ!ED{J z6@*PO+CfCO#z+&G@6u{IY%&={;#V6GIb{0K<1Z5iQ;2jOHz^|(r%k_3Q*M1*^9<#Q zPOwTuDdB(57sI~l6-f$bQ(5c-CP+5FZ6y9Xw>;X&&ZpdvB|}Rs!O_fmPRR$mib;-~ zW4Y=9$G-GVwz6JSoF(1(w)Pa#U7cW*D7-|EFv;S=!s8ndZqr{zGD%rq#^agi0b+K| z^qZc6cbQSV97yVbTbG)2!W10gS8l zl<;xY2o_>kI9N{mNzmg|HWtz)&6v^#?rPZZ>`N}AQBG1otLGb3Mf)jal>E+h6=S85rq@Yr5% z1d*88-(JBmEUj-F5#hve6`sYDuP^?6eXoNV*M`x3Ie_&j+e1weufGL9&UlWk`#jA3S1gp3X)9H8vi8><(CN__2xm6{eTgsHin1<*)KO=Ic}Z zflm^jGyLvRH>v?d(nM41MX@2XjsZ*3>>At6I&AVf7~V0Ugq20d(=Ohoqb#^rf|X&m zS+BL1DJ1N^QYWL_E57Iz`ARdCrH-D1zZ;__xJB@^F&%k&9f;q?u`xV} zO<3}fW{`k=Gcr#*DVX?g&w&IEpD292!Df#}69r6wbX*fzAz)0ib=uOR&7NK(&zx=u z8&wbGu?Qm3*bO&?o;w&r4j(dB)ZD>%TB_jlw zN~c*P+UKQ0O}b&RP)?m9wa-nC9B;&8FNgFht3QKXWu!(fK~=HH!UCY}1Ct}>I6xdW z>f|3#zTIQfW_-xy3l!1R*vV#W^^$@n?0|k_7WMUP-EHz%mV}}vY{QbpMd{n`6PGkL zHrD1uN(&Wcb{)C>c#&VTF5Evce-S;lSPRX0j#;CRiR3P0zu1NvI1|d`t@SN&sr}kY zPi8+zU#uAmIK0r3%&f9Lh8u3-{tb-2WVX& z8qCA2WkkjbjnFK*4HX+Umh;)CCHR{V!Wq-$*{jdp>KAPhpoh+?x!&`DMf}1EW>6=b z+%L|HlNt=l)A;x7Fol^#K4;W~odz$x%w(<76QE??Fr(N$q(?!U$Av*3O9m`;^;;#3 zqGFPby)xt_z;IfQYGMA$bRJCQ=pS_>s$pQGdSzObU9S>xdJ zzNKWemRcS!;AF=BlNls43IjAM*bF7=G=G*@QO`j~Mvh2-KqHgzr%S^T6BY_jibqM0 z3-cOVlKu{p53?pW52Lb(nWw>C))3*3E4IBh>livi^!nh>T{bw|&kbQRARif_QkZ5v ztqw5=ZbqhAZlZ^Li~*xoNOA@Bcs`b9C?c;T-aw^>Gc1vBnerZ@Rs`xG_&`oXF52Vr z+kJusfM(>jsULyW&x)#G5VN~>7iw6B4 zuuGb>f2b`sbXZNkW)bxdwX0(OgW3m@KeF(Z+J;*9mXIxhG&`GwGSce+6!I{v*_PHR z&*Z-#_!w)EQ5BNLm82ZX5w<-72ODFDR1{^fWXr zVd>vpWc3hqC|Rl^=w)QsP^B0*s_G)>OG?$nFd@=%CHq5+e<1(=-#i^|Nm}Syl$M4; zRfYiQ11low4nw{N&uW#_VW}wrYR}y~G@Whgh=h1xqe0Xr1V3eH!IOTKnu@0>5II7p zhfcVtvJ`)#l5m(HO%@d5kLv>?ACo>{PEr(-7jGAi`Vj}cISH|Xqe>z9$np(E)bls; z=2jsGF(gd*E1j)bPN zoQ2zojY2b3$<$O5JNA3AhYj-TIW=6Gh&6XQLN(H(w-C{yL6$`&a<)-gDMDZ~u}QeIAtDdKKbyfHD1OIYi?5pFh zl`VGtag(`QU)DM5Tq`q;_FiyK45w-0*U4?iY~aboQ9Q7GFt@85ejKbnZPj1r^LF*} z3op$%0rmwu@%fylbNJ#d`jteI+}5#u3h&x+;^Lgckv`lIYQrIn~Yk*wiY_CyJ!hUvzY)@bMVQRhaq1CG;c7 zNu$FnaI~s)LUM8%(G&%59G%cD7zOF|$qR@%n|;uOokj{xPD@19fHT# z$)OSodb&0iCNzombz!= z_Ab$u&-+6FYj*ou%1HM#alMw<=yy#=7}Y&}i>@`LPBv*T4s*&Kh%?F|n9?yVy#m@^ z$1bhnOHwbIdzjb^LD=R)x`_Ft2C=Nw$wvJl2v|c&sB=z zE`=g=TY}{3&z)<45U2|MoM4EHBE2T|2U(CGx57aChsuq2RLy{B;P71YzA8aM29o4auE;-?rCgSpl~ zVqA*INjxNZU-znHS~G%#)29p?rom%)ivH1UTy7p;wJC)OI)Xf5wZ=j-jNLj zM$Q(UAhBq97pAXwOq<(6eRt)(vH7=ZE8FqvL}Y)x5NCo5lV@y2%7aM0i2{X z2NczaWmnEr|Mv6hKzr(K6yoQkmI@xKXtpjkvmdFy@;akMUta=|&jd-Tu2m^1jajo% znLTT`?hRSP(*{yGaR^wL@Uo`wE>IjjWF3U&$@>P27f2Hoc-Rn=ip7Rv{NT;dIf|+# zp=$y7#*QuchgjKBtkJbF-s9G?Q_FUiomsJmI?41Xsxs+$DYT)xD_rDNVOvTvQ}iWF zC>RMx8>S*qMQQ+KnSg@CmHq_o0y&v2K^2CT&n5OZu;L0IalT<( z_~~v4{#!FL^eRFwutY+g25BW?@}BQ@ddilVnUN(so#SQikBFamknA2Z6C_e^r?Z4R zW=Gj>GAnd?;5YIh1kcq-HZBIA>E-fsY+&1H8ic)7ddrcgovhp<(`n8_^zmq=^SZ?BP<@0-GE zjJD|}QJcw(YsM*|vY781j`NC_@QD}&HGCd7l(AI-tN2HuDSiLg+LaO2Iq0aAB(bJj zK{m5}%Le%7UU27vo?O+fAeZ%RABBBKBj6-Z)zAw4P@?pqMT^ zlcHP$4@Ik^xk8^M0kW6*6x*Cxhu@Tp$Gysz)uj9 zSA~&TuUHjdus?r*kXG`L5X>FS{%?I6^K?TS2)Je`wa-WxFAMko9|^Nh{>kO?UPu2A zR`W<``kOah@U=o+-DH!0yt+$Kv-{)}9m#5SVz;F=)ph*W4(8`e(StB?bv(+c@X z-)gF|6YzPvf_xZ~_m{tkzo)vtHrM^WZ<+>e9MM;&y!Xsrp(K#}dv$E?8cS#bXoLg0 zd#3`Px@dNR$L%$p+ry2=&%l~zd)LcS!t3sbknhW*)<(U8p0c4pz{4R5y}IO1%SH_M zi>XfGXDF=n`mSuQvurM#&G*)z?e)*tSKrs0zp9BnoFBip`+EJ~PUpJv|6E=rzh8U3 zHPm~0zFIsr^wE26RO=^Re(?JOx6BD7{>6P43HTq}yFhBLyO{k_lp0XySeDDOPGkmC z=dv|WJLLyw)YB2r)>n0LL)1Gjo<;Z9`De9@=Z7rH)&7dm63$fGQix4)qJ34j-FITf zfyIyNz8{Ne2tQ^AY)fDn^}JB%R}QO&{0_KhqnaHbm_KXQ?<;|1{*Tcx zs}9gLGgvOZ=31L>+m_4@@7-OdvHERj!(~%n+|uycU+jAvZ{NLtKt^;4ck}+dPF-w! zhlK;%i+XxO#cx6pS`T>W>)u?_$7?;4(+7F0)*?f@mzwT5y=cZ2Qkn)0YVzlCZbi9N zV&MC8yPEqRz1MzR!Y<_l5y~V_D_0c5zffKo1j%j=G6pz^P<+UDl$n2Y+5UBYy>g7j zLe+y5Z<$RJxHsd- zo4&PasHstlHd9w^a3mfF?9^+{20Ab3gjC_)m1W_chVM^@d%7+IFtIIa>Zp>9^H9`7 zTP(?}whO0$OKGa4vD6McmpR!C$$0t5xI2Rh;&wwRP?ju9czYeDdjqY)bY7df zK!pL=@J5wsR}Lj0k_*!Wb^59XJFiyn7afGSbzDM9P}NPB_MH<^WW9_Ue!jqT7M*lf zO2v396H}sUp5bHha@5(;PCW^xf*U;MY-djS%wQkvFG1^U443U)T?Ef|{J>R0xz~v% zHOg`g{cWHY`h>$YX095H|9ep45xR99YGSW@rw#bR{=O4%c(^0+n_gUlp6Im`8nl}w zxTWm7aoVBurW3oNl3fowHZ_D=F#QT8xLO~zx*2gaJ| zNX2-<44((cwPuRPfkkWO_%=L&d9jX@Ylk$UVH_j*D@8Y+p@00g2|5@%m3{=_=yNA1Tj+ z7paf4{=n#CY`cn>uZwHm>gg#ff(k+;5oG7_OUge z-@U0OyODBeW560skIE*#;n7&LVV}CMtt`3UBQ;ak(O_WAC+lEDuv;9(zN+~k=yH4O zQz9$_w3&+QWM1{H1pT6Gw+5V(!czkolzb9H1<*FZn3x65Ia+WLXb=Cj`_FWTyuzHM zM!&o>OwWE)IYw^-EJo$rH%#(s)G zDX9-xit&6*1d6kSq4U^-pR2=3SvrGkC>_|(xk)e(5SYc~8Z41&CC zh%X;X@*$pjOHx0;$gK`w$J;8!`C~NRYX?2_1`ycs5Ub zrsiEZ74XQKG>amV+*KJ24r%XaO^y9FpfMUjC;UBYgAZ74RBClJamSVRd|Ahk1S%Y1 zS1vG2UvtAvK2*dhFNvg*>q+(gHaH><+^!A%Q)Mo;*ST^KIz0q`5BSg>8_*jMDj4~p z#F`@9T&Ab_sB}^p?LJ&J5c~xFf;D~gn7c#Vy=@3Cj|4kRS|4)N&1#AI4grJ!@kIQC z`TlK_O~&qUF)#2$^jnK&M+zr7z`+1|2c=Qd;RV2N`O9(EnTmAaQj*80aPTf7ws{dF;q4BdI~7MuQXa8Jv40}1+D4Izp8}_ z!tC!qR}tIie`)m2@IBSqS&Flwn@CzjrNZp_UH0w&972AKvA>FvSXt}>*<`Gy3;_|x z0wtwzPV#a0=oX=lFn^jH0M*_N{n2NOhx_Ege>`OJe)kh#liUYf)Qq)|LANu-NGXo- z;LfJzG!x&>1{1Y=e|Pa3aISVWpp++wlXRkz*ci{Uaoa;$CiBoRc6l8WG)t&rOFFj- z8?(&l3*2K3Hs+`VMkGdgI$NlPk2TMLlPWg zjDCql#@dy}V5EwPR4vY!yW$G3(T*%Zuwy{@jC#dW&FUh6r^=1}b`@Z+YcN(YAfaIm zTYor~g}?3>n$?#B=L}Cq24hvS`lA=>q)}aprYr2P2jy0ZlObt%Qu5^=Hkm%>Ws^AT zYDPfJ_d4Algv@lkZNRlfYKq0FamASFEPL-7^iiXtdbpwjrV~@j;w%PNV;#0V2HRAC zHtra^Z*Ws=W|7XiQE2-5Q5lSjrn{@hpDH>*VP6eyOwlb4zs(LB?S+!B-2Sdob`p`U zUfLaoqT`6e?B{HU=IZ@JJ7g|N3;O$(kcpX-1+Q;>H_f{&FhFvFWLTsd%u1L%Kf^i_ z6dAqb^6wm();ts_OFBu8LyhJ@xGQw=0rputL?~XmP)!tXJml3E`YREqR57m?^&Tfn zLDZimn5umj*RewckfKTmXzq_meP7DHlhTIWz?h$MOkmoqZ;4bP(vXOlOK8}k9|N{wP#UX4p(E5my{q!dJ%>6uWAHJGm5#1;BAJJ!{MB(+Xoep}aX z!w?wZwEUyqAkyWtH7yqFj&tv{%03#{qF&#cQEX?%NG)>{YMKeQu2LtH*@}hYt^hU8Kp5GAx-UIQJwBUz0<}c5^08Yfm6-IKKq9uiT`Bzqj7}wfU&1Y7^k5hc z?&zrt7K5hA5q+tPVU7;H*2Yw#3)Y|K+y3vIf$7y!kX{`KKUmXzq)@FoCb#;hG|)&r zYJPG&kCBAm`LW!<)HRpGyf1{y60BuLp*@8Tm&6U>|8Ujpp_hZR_khvMNX|G#DV#v# zmP%>J0?H=0Y-(lT3Ma{=%%0o9&@E5IPhDilI>a<1qp*(QH`SvjR-42WnsqfNru(tT zmdGUG=`mmGgrw=#UoonPOajgAD}*+d(V@SxmLX5>etw)It{Xb#%BVsh#%%AGC|V?m z0(1X0FH3`t^&vA{Qf%ABk(gsfnEEa=vdnCp1SlMG-5Rj=acKLl8sh3ZW|D5ZixA*rwcDG=i zwR^})iqw47(?rr8)GIYAG-b%WXjhT90SGT_+FznUCb5bdX|}2X7NRd3ZQj^2qM&)_OPImk$4}PMB~EO} z0tsIAaa5Bs*V(@^+k6&Nj1^2dl)Q6r>dJuj$;-ZW|mz?Xp3 z*@js8E)#Y}j{~l-Iuj}oac2#b}_{(TIKDJT9f;^P;P z2YDk!Z!nr$Xr0ktM~+yYj-+2Nn2fGwSRv`r6dJK*oNrn6Vz_F42IEdlqhg~q6EeF8 znxpqFtFg?I)0?rBecT6M;O{ki0VAwNjx-1wlm8bKsMIHh%KYbsY*6UK?wJql)ZJ6$(PE2fjSrF$J^~89~gwNd^YO z(8(y&1mkisksN`16~07pmz6kFG9Q1SuYD`!OaPyeNxWmPg*d*=+?vDalLc zfG?#e3bAXeC8CZZ@kTRcJPNgVkl}-?yjIa6^(-y8uFoktI z_D@PSp1TJXvd@6_4|^226I9dc6o71^GuF% zy)%R9$Ve6*iumko@hjoaY`g@vSzYf*IumP!WoeOjvm~1(P#^3(#lq3x*4mFNZnhzOZ zRT%si&@jer#0~vHbXDk7@A<;r@XzPu2NZQZ0$^>^OXBz1R-gvEQE-qt69hk^1)BcmK{2UgViyTSW!b~b(eSTkf<&Jz zD#BniQ_-To6O_v8RD`Mj5JMrURLRf7X$XTI=0ih1gpl_Gt1_Kp7eXOD6~B=al1kTx zY2O29{Cq{`+N;{OUAnox*!iqy?AJ3&?nb;1RhM&Mu}{gHIVK zIUb3cY4`{PgHkp{#G(ifl?j4))?l{^nBwJzBsUQa2XwT|ZmQ5>A7&2${ZuiRVewD6 zcsqcv#!W6I7E{3Z9R&V0uS;&Av;&bV7}m><`^-g)R>|rAA7ocQexs943tc z0OmxvWPchdGvh0{bBVI4DRjBIJW9B7Kt+W{#E zYw*yUP*iGC6%XN@aK$HqB15)g3=f@wkQ19WI7;D>N2W;#Hcq1`m?nzISwa(7NBeKR z=6sk}6od3Na*)l^7u7r84>z&b?;pNF=HIIqW8n+r*PUKXp{^flKW}Iz>imRdp7UCD9An#Qt8m1Bq!2(=TYnM|LqhOgN2fm7{c$^Df1iv`je79QzF^%m0FjciGKDSNO|d2X0VE*w4lZEgnL z=bGrX+faTsHFPx|HDLxBQY0s(jZ)13jZ}FWI+EuLeqjZL#GzFO*usT`%8URS2pylF zEmkN5g~f%ISjHyy+o+d=1{6h>TqRibdaF>FlLql%HBDA9 zA-R4e5H^-DEo`jpJ-;w=dEXrkBhwu;bYZ0Ih-rVq~^aoXGH^sT-Mq5KE%ByU%jI9F_y;fRBoP0e*8yc%j z3S0te@j-&wZ9e+XM3biM$xoAX^_KIJj+}LtE;164{awPV>y$j6K_SN}%~zeqjX;4t zwnV!?NJl+|pKGjpX`P}Ozr4g~IUMZ|P8rRoc*oHrX^WGVI|Z;yrR2re5acl0)n((B-kVXdi z{anNa^3K^GaC~B&+3;gIoU_w2811Xmq4I=I8WPdj1*2Zi{vQ-s#C`b&HlAxY2Ym)%nG!`S*TRE8-+H(^M3N~a#b`F3zNMAv^yHp1f}Z~xf;MwcNnR6o>W7HnnJiY|5(fB5-k;RWjWq4 z6Co=$Ww4OqeM_A-i)Py z#Va`k&dqf17qMQ%?@tq4kB(+=Ye3wy^J;SOq8usVWneE2S?^C&N2WHK*vu%zr-T7x z%~I^iu13k4c~lA7_|{cu^Jh+*-Kk^(xup~PEjJ}vgegQ)+(CbRMQ&m0uFGLQ8#Ge$ zPk~aGISY7qch1*+nOpr3#OOu!ikcR5og1}1oBKU71B^b9-g+LqA_Hl zpS2<;mhOs4u)ioepS9%~sY>GdHvz;(hb+7m%PQ#P;(ZfkXsOV0kY@kg5D_4*5tM|= z`y#<*4P{9$!NHh-#;_z(>Yqfa^P-4dsA8PYAu-+~wdnZo+j_U%16PY^0!F8!vpse^ zM*MpSw@$(Cw|w41WcvG|2FXRo{l61u-0=*k3EpLorEDk#N-u1AGhM@U-3VHAAf!+1Q`DOMoC`xL z<{2DrY2K-qqo1u99$f&{&up539xM41^u3Wp?gZjY48k%P?|s6pYs){E2?|B!I>#DK zWuOYsw4?wN+!z6CJr+H4@-os~cb&F|z{+u7!a%oXJ2KJ`uA)pH`TTCCcde6ic8uGD z8>FAb@sB|)mvy2Tmiih30%L=q3U!)UxBcm2TQtFY+-A1Q44@j`u+#1M){NTYnAOI5 zP_+v0{Al7hvaif}E%rb#RddarjOX4;%c7VF%;n0XI|H`^y3q7}@Y&PuJ#HBpI zp$cQ=SZ9ed=i+dLH1+}tuZG%V8d&}jNz5LngBP>Bs&J8UHt~6}US1qWj1MFqQ;?Q# zG%bUo<&Skhpums(qzj*H0S#$53hx^vtAn+YFR}>LvV%{T_6&5YK@lRFTlu1Q7)(#n zmBdI2`aG@@W$2KxkIFVBFQK$+xR>@mhf+`UjdnEquqmz5hf|w(|En~BJjjE_AX*WP z{L2`u!Kh!9GZ}r4_HyS4f_QZne??jjeEE2L5ozq!2}D2#u51ktUlyV4HQkwYn^9#g zI*oR~TC3GgT{8ywJ5J+c#6?#?pj$^B*9AK}UmU&5J%&+%queCaZS}zF&J&*813|*w ztcs~SHQk;hO_d_Xp|1e0tI~XP(yWFg(#f-#G13ZOXTQ}NCu7#q!Z8>*j|N)7z+EMH z!NFs0zIo3-P}qBF(05X8D!8d8?xt;Uu~kC!oJu$q{R}1$*tk4Ms4E~)VJ%W==iImO z+Fk>>PUCx}9}*oaq#!-BD>%w>vF_ZwI9~wpg)Rckr0)l;3@4y_kDXTIf}RcB!OAO! z^odQnv;*xhDBfeG=_;vNDLQ8lf;)^4F`rE9F^g^9!#EG@#S)oR>`}v`dhNSgL?Ee8 zc1JVob~_X70ZetGa1@4-*~~8(1~|g6AuWn9Rv}m=jIhlm(1A8M#@hW{+Om_nnPXaz zMsrAUw?UA$F~AYz_>w4JkRBsREn5&h*m5j}SLyFjn0W~3<)aaPCGFwt3Li$5lpv8q^; z-9G-1e#I@Ku&sN83SZ1c<1Jy3fb#WItxZ)cL?df)*943ml<4NhQFVf^5f^?(<4}oG z3|gF5H|4}7Wy?A@81*q%*Q)(yZ+dQVUjZYZ8loM+!z0&I7Zh*V9HKqL%Z%9YsiG|| zkuXyeU>w(Pr7tToVS~@T2?J?Da8;MY?^?)FEI@~%M?_^rlX`0KYYvOr=v6W7Wtbh3 z_I*0Rae$)w9IeZD;L`(+D+hkAR*&ZpMQ{*NTvi@m+*WX} zf@c+kkaN!n$Ll&Cu&2=EeZg-`x@iT$x)?_8UD=LxW=wlj!Am7|8GG z#Rep!D@Q{w`x52~I7Bz-qsz7kHlFcn2K znP@8IfEJWmv*jb2lq^glnu^ktd<9WxU1)7TUt5agf3MAA9U5dTtlk{)t5bye+Kd1CNrb z{tqYFU0Ne&E>9QCb94EAYJPu4PDYp&^z!{b9wwwe3J^3>?X~;>TOm!*@y9W@xM8dK zLYw%;>d2F$LWi*6b&M8@az1E;;i;bN?Oa(o|LyVN<*i0&J9lg8K<{4b_OIc|l^fmc zhmPOJ=dXU&y}+?v@!M3rFf-TPiu>W(G30i8$~6eK5mEoqJ^M%H6xw)a-%o=pX3vxN zhhJ*l{3tYADJaK%bC0c4GGz4P+~=&BBlmNPvKXF!wd|)zqqO98CfCvh2dY z?<0oFp0Tax^^}d5QwW#l;dT3+#g0$!&--SuIoWU*mj)RdE%y|+@9%F4`3SGqhBNtN zp0^Psvu+xr=b+L`H=Q$6^#SSp9pT>I9`9RiKZ}5Uq4|vZ%jjN$sWQ5%MMR>fbPcCh z>Di;YC?Gx6L9VB_4n`v$>HV392nMnaNfX+QGp+W2%SKbQQrHwP9BbLo6;*w1;XJS# z(ym#f(q%8|;-d>yrQ|5TcJVY{IGBPNk{`y-lxug~z>L<&n^~uKM3C%}m3KIOL-*|@ zU|^VgYRL?T@%yKe;VPjw2mG1 z9QCW%KpS?3VNIu!S8)uzfPd-aTCy}P(=>kvA-ZSqClxyo&e->s$2Ye#Oka+xme8|j zU&lGkMh^ar6A%r_rpTc9ovout0yXSgLRVd9H5JgHZpuBwygRF|pp96h!kviWig^6F zt65>e8KUC;J|?cw&TnP&ZxwF`i9sKquxCr&gqYDP3P zhqdfZZdi(MiV`VoytBR$K0I(aaI}&>VxeE4S&!WmhrhFl3Jrz@YogWtQx~w5p$wKw zl+buA`>R=KSgd!1ZLPs-;shu{Ww1H__!`lJHtKA{am;;4*Q8HRc%QNLol3@*Ai-tq zjWFcg87suo-*WJp4#rXXzR#NvIb;}1HFu?fsR^Sh;)TUzD14nkF_T=}eVv00BrI&( zd29ypXB6h*m}GL~psfvs%c4)74I|@0lMC6{Og<|tHqA*t|XrHoR>g%P* zZX$6xs;g?KYP1tTP<(AkadA!QO|er7@BBdaeQPxBO9toUv{_9y3K*X*f_k(KnkZ}q zG!oyhCsq;Zm~bjYJ<8KPMM1dJ24mNy!UBqKqoS}c&m#s>OH?9bc3{v%?Qzh=aO5oW ztQ#Vt(sD9Z47-Xvr~P$fRZ45l^Q_sQgM*X!ZY`!-s{+9MLRs-*3KfEz75fqiG?6_Y zGS=iR8T$MX+{>mLCjAnIC@ku5=F*aCg^CIok;puR+x#R8KqkFmHF#j7tTV$?lrB_C zj(IqT75P#pFD{u$s*y=&B|X>2@=#J)1WM3R-QVsLRYP>P9;U@Cmulk*S~VehR$!MZ zEYiK^!~twwe%G;jR&T~T{Q=950lCNlZ=wwHwkWlu_qt zX{H%3YT&FcBOE2tL0sLyxKXJXf13=iZ76hb)KAylsZ@SCS%7IetE_W`Dth?3z>%l* zMbiJL)=P}?Y1$xm;IyxLYRINFol?t=DY9Q#iG?A$Yye6Po?sBX`69(v@cZb{w?9za zm~sH(q1GYRBNTOt+@0!e9nOTM3nVyV*e{6ZR7L|xQTTfpymn!ULr>E7!WMbK=ddLN z(-b5qs88ubPl~e}T8h@#lH%!P!_}NN4T%fXqqwH3&8FA$@4G?kprjS@Btw-iNpDKK zW2AkM2=TbB-GBK+15PT(3_AcU;AIw;66ovo_0+6&R*B0790_t3e$whrCJR)kEk*Md z<5MYQLS(BUwG8gYif^a5>tI=ynobEdpSRu;1HIk?DAZgHPv8d~qQAf>i>bQ`n(>$> zj+qqJdjs8JVEhdG4V5mwd=|I1`=S zn()}ldIM3|ofMYIZjx9B~+FztFpVe~E>3i>IwSgk;CAC~sRM@0pA4hv{%|7FK zj`AUf8LPfWNFGPONZN&iDzv&zqtQw9y0sMomQ08C*S`+N9;K!A*n@=cM*FhukLLS| zL?DhUN!RNOU>6?9f1j-t_I&ONJasF3`rMB~fcyJc1J6TexzDeoUwu51dc0j(ONp6} zr7iahS<-Dj?nn3yEvlTjzH}jMk{B2$44=upy}ewSq)D1~v6$Oxim;%kq&QS=Q!Ofx zjy{U${yv2qzqBGF>Y->fq+8~B@rSNR#88MIRw@N8S*4{5 zD(1lYF_<)~Rmf`8ZiN{G$n_)ay(=w&5x!;3&6{_Dw*sD*b}LXl>Q-r4{vb)#(-Kbf z_@T{@iR*y%6TgG^Ncc2^H$KUl_&i~3k4loXi`{@sYo11?jP5LO`^K{I_pO z;3|6fKp~sWIanq&ih^0yqV2ijg0W)<;}o-MM3zO5u2#Vq*`cP#_U1Xb1NZ-?v&z?MZQR$&|70k=}N@WeRm z%=;j_w2=8=HhS>227o}i^BKizUO6iz72We!g659-ec`&&bOtkhh z%4(4$=G?TR#HC3BRai6sK9!~* zOT6qr*>aPRq`N2%HLG6R2va5I=|I*F+q&}n zX_4$eX;RBQi@7{?YMf-%gmiC_UeaVQc?!qsYco`b71uTlNU_=i7JG&#+8<3Yje@b+ z@T_`vb<`O5#jjh!TqAMknfNPsVmG*7F1$cNXIS8j8-HJ7>P^Z-MS>Dp^4|F zKpKKx(IN>%XKoE{6kLF*6`hu3M8`DAZF(xoQ4H@R_+Ncm3l5!(ezvTV8auBfV!2u` z0eIz3@hoyLwIyy3I-c?5NK6JX!LMTB!92u>iDr`2v^SI$k(_53a4Kcv_mmZIH>1&BUi7T|O0gLwPl>+djJef@r#w9VUJ6t)?Jmm0Vg?>#8JSgJF=WG`InKUj4K z5nxInVr(5wawmwDf*|!bA!H}9`xd9z#Qvzu-b-+rDcTe{@NyM$_#8D&?Cc+Mr9n$} z)X+IeY1nR3bO=0(X=?pZ04i42!V@WSPQ!WQ@sc|s&kVK7-sc2>QSt$K>@^2sWGzK- zNrKZHrtAZ(spn)l6QLx4#nWIxU zL7?mOLT7!akyiuzJn%CWCW1{8jfYiwb&!)doYSd_piOZMN=X%9ioh%AaKdf1+Jmy` z1p?2=f+>NQ0gCe1n3>qyYTC`K6mjxGB!u8zZl{J%E$E1<;soTnP4-`R#f zF{}nZ=%C-`JE7%^5X@NRLMRTQDaY7;r(+l47%i?FkaX}D-8w$Gf$fsRhg~+FJyX^t zC#4kLMlay<* zQ!E;z^j4cYkvT7C7A}=~VvKSjWjKj?@rKGBC3GGnr!zIc0WMcYt?X7nE#ihBFB6P` zAPG|jKuR{fA##w(mC-7@n^7Rn1SOTzIT2mKy;_i2{WHpHtydH3cMmquq^`zSv>j}c zY9i8p-5!$2*DXKJb_HH0c^CThYfPJ610xqQhsA9cUzU4X>v8uVkF(AQ&r#@;Fn=fH zQO(co@o}ayOEOMI1P^Ydtp}&XxY$XzvZ+)8s)t2{+d)O~^SN1*k>r{u2ksRPGoH8* zl`J6o2HVSI8x_)nJrzZB3AC8IaoP4HH9FP9D*R_b*;4M$k#*UIwAJjBmE#f25v9U$ z@Qcvn6ffmukCW9ryPMFmtnuD|L_Wc6-jL6__w5nNdKwY?7+L=0TKQwj4J+D3b(}zQ z1lk&+`9Csb^cAbL=;>$)C}?^yii*E+HK8(`dCS4(@xv;139cyOXN^tI1?af+DKaJ% zDXG@Q%h|HV6&nf&;#5qE(-!C{{VK_&nBn9SVHOYmJU!aQ;F*c&R3?|@=u7w)r<6`0`06agY&obVd@~6(EdM>(<%C$|jdyPd zOoNkqA3X7?dx`LV+M6nJRy4V?J{WJoh;~vPdv-*kCY|j8q!A&9q2vxF8YyxG47_vM z^+68BAiEw*>;hQC`Pd}{VYZmP5co2)Wu3RLF4HVpZ8YO4lm%ek$Xtb84rrQV!-?0% zU)0FY3?u(&*(0=ZkB3V^I8|VpL#st#vXT)?aU7iwIprmP@TqwABNCKuVF}8mkki>P zB6y9CNQBl3ls(&d{{c)d$fAlSDrsbP87b2o+yHUZ%oA!QDgO72pkWv9`9mu2B;BR#MQ~*m z(MZ-kb*dk;K3VwtTlk{*HT6{xVj1yORitulL11eQ-N z$^LVu34JHGU%d=Ik2(bOuXr&KvbGL;ma7OZn|^ev&j3(&ZEf|}c0aUV8aT=14fXj| zU>+MORS#LKCv@$1#o-AZx12u4(4>PTb$szWH#smd$Gk+^rPNEz5Sd^p%p@Y@xjl0J&-(H2H=?GTTHO{y6jd~7fwB}>+J*M$fhOAuj`*)WItms3ez4PhK zyj}-RqO$rScWNhPLvtn4thHY~u^hwj3iDdwW&nq|n1cD< zfb`GCNT-7*XD^nl(O}cq!vUw&e-B5z-FcNf4405YA*>YT@{u9YnLi+&c1L>ke^W{0 z%4Ob#ZnQ;t@(<=Ya}?&#sjHvgz}VGnZN>PruYF;sI!%sxo_W~I^KJUFba1rucsKK9 z)E4Np;SiR}duUZPZ(GZO^4^qofZ-g()bt}O z51t`=J60~$e{O3=guQaUtYRBcz1iW>;TtgP0Fxy}C7%FWD1u5ujvF-;LoVvf4M}Ul z$cV4lnN&)9VF4yty^YvcJn&uSLNjwN^Z4b(zj@XX3a<^2_bQt{ivF3)DgIH+ufN1W5H4hu&E%d%38-R$s;J!q_; zbX!(brm(~qnE&9HMtA?CN?qyr2L|}pilbvM#j23muey~3YM6Nsp@* zEB`0CuipCUtip`??E-0Q_&8M57+xjb-HQW`~|6pRkrMI-+?^uJTX z88ccxfiu7EfYyyGs0f%3P31(;us2m!y+fC<;V}L(h8rZlqMh0)94XG3RrARt#06B) z$4JEPn-66XWH4=hDZE?xq$wy8M~f+fMYG-MT5~+g<&6hQ7RsdM2bHT&U>prpIE9ub z49Igrb4(H$e@WMCW8konH7#Ga;`nV&MY(LX_$7@KJz;RO{1!Onzi&Gdbinx8=al9y zZj#sUTNS35waRFFJ9u@#7i(*nkUi$KfQg^^>%7&4KS@MD))@tvjNBykH_9vvp%`IO zOxe$ItfOM14TUAt{mO4CA*4+sh%*a`Op~|YXl;IV%<=w?><87%cIK<(2HL7-at$N! ze{>4yl%s!2g8;|fZ8%B)F*Hf2Y!lT#sj&^En*O{^4PR6J#A}>ze^w)iH2} zsiPq*(su?sKcjAU~0q6W*=W!tu`F59+k8@FuRHoD8UZQJg$`PK7I zOiX+ekv}pcZss}XruW`!E$4`c<>h=M7?y;$WdW!4`OJ?eTP`iy zx3-OZh=BMP5)5fGTBEScxvn$L2D_w=J;v<4Rz`JwDaq z8|n18SCLg;JT@Qkcch&XtG0M5A%dvr{qM{I66tuzLV?)?$ZxjHauV?jKr#;XLA8K| zRV)Bk(Dp(|Y7JS0Y%`t;J7=errE}`gG>|=%_UGI)c3$PQigQRGHZyRr;eK-a@NAC4 zPR+4`e4)&5W1yguKRfbm9FZd<_Z}lq+n?Pw>r<-9)_?70>D1xE-__kvmFV5O%qDJ| zb&#SNe)Y2hgZt_Hj<|)kt#s8b$HnDxy#;Vhpu0L+Ur6nPitn?TdEqd`@gQsB29Ea= zDKB2p7(MQ@m3r+&{g}$Pymuo8RF8c|kPAeXQKgS=;;Ec)9ji_m#fz2PM@s=Ch=$g6 zV7kWp&m=aCNp{bIFGMNZ!b%an@P=d(Zk)bZ!g7+=IIXO+yeVk#p!!C# zMXfGS@;_3^Q1Jupt+8!DZ*0zBRb^SfxTbgjaUJbnm2EOFm5UKOhbucy(pBs=8^e6`LR| zH;XRCdzH3c_xSYJ`+;~n9gZ$*7iAM|@O%mN`k(4z`YZV#81>3^)W%3$Bto~Jx2raQ z*YmCqW9IjJary6;kMk#2N6sz1kH?FHBh%Z5B=eyi&%)eppO4cZj6y_JO^%@n^*Dlv zLgw#?!cLq$B)nNWq0^l zCiwCZWj+K_x(aEgA88hevd5*;!b%NjgQ*lt>sn^g0Ed(Q2UQ zkv3T2-nX`5x*_W5_f8j6wGFAR-+XInTHS1hp;1^Vy_D0k-i^!H1P|diVo$*WENf_9 zK%G@t2}bPs_^uclK*tT`&u6!m8n~#YYw}B@9@%)d$rKMSNZ!yg437W&=*HQt|HWp8=S%O+hkEUDkw=7=(qA)~G~qrCQe@@EgJ0Os89emQgds$#D%` zMq;wA$I?(fKMi+GHJ zus$Jk>V<}4PXEk|Xh$DHxj|LDlTjfed$;NH0@)r68{e_^OEdB}*qCC!6T^Kz4l9DQ z%uonYWyk(elj2}D(#8}(q|vmAxdvClI|IC9K65*I!v-0lw*5-}uiUdZ5&RHnFn;Uh z)pZ=kcqlPqI&bGAfrd9Hx~I)$=pPl$idr1U6+If1_{Rgdsefc=8&#BPLy4)q2wqI* z%OYO4eIw5Z9Do1(A&4x~=OnQKaSe~l>Rv>|%3_QAzF$u1w(0i)xUYr2He3{_5RUI+5By}p_D7w&s|$S3#BVOmjtCq z3X1dOO{mXcq6+tM5yEO0XKK&~oLOJ%00$y6hpV^8@VGYuFg7=?&dX==^Wwylt-AIU zEGP}1k=1376q#v{{(M;qu0ub2#97gYpHC-R4OSV4*y;hF7fP)ZZ|T|?=*bsN+ zUL{kZG`{11Wb0OkoO=N0C79ItX& zy&1Ctuwj`L5FIUzHE&a$9^jLsDLSL!#RSU0ZGH6m5nLRwj0@yR?!E?H;Ywji=v)>9 zamNBR4p)>Ti0g0oRSJsQ@e|LkGmw(fPfv4SM^@g~_;YiF zefw=_cj4B*xjaScuI55wtNkodNNBzBOC~F1hiMN|hcGp53z_v`*-i}vcAz+G#htt# z5Mlu2C%1yY;U4X}It<$&r@fJoJd*QO;;X1 ztqX+y2J)>XJNZb`;c0(rxcEJj<}~|H4H1FNI4EZ?VVRTS`~M1X)8u-gyO`Ow;=#ph z={Dr{%cO21{uyx<1BfgWSZCqcV*ne47%1ttCA`r|s;ggO%s84=jODtTYGz&fJ6uUe zlgo*9vhQ>`dWcOy2gp-2_?e9NksUcpFY_YAJgP8_iD>32*FRW(9R*sNw!y|UsTN~3 zcedbNnun)(C~mwxhn(S#w03(ous0$-c>d*oCC3|Xc&H}{wOv2j606PBDS+)shi7jp zzX``MO0LMB9qC)`RBxzroz#vU>38j19$Xf9^8HcE3#%%&)#%TRD?bX9{no2m0@4+} z&4iTMP4NhdRMyOEGf#J>Ztcu>wmDu?cdpzr+|Mskf?r@F_sQbGbG%2b(NJiY0)uzS zkXSz@R74&%yFz5i(TE=~O^0!m2=bkX3@;QHou#0?I&wA#PmI`sYs8Y2LOhftSd(tm zpX#BEMK}4{xSzGE6y}z(|6guCe!~r?77y5v$ zh+&nNSkp=+1WK!16GGHLlO~j=`l`nY5i7f;s^uXHsHCKW zxI?K*hDKcVYcyDeMuK9B)mddOPDjRe?JvXAx*SmzCz$Fr35w2wF=-ETn4RyZrNW$j zY;F%5;Lpe7%r)W0gSs37r4maOMXBFvXZ#7O@=pARO2WQWa*#?{ek=s&ZMpG|@pse-W#}jG}(3h3vuCNO)b#CFoUC*^Skf)!~qpOP(5+r(KdY zxkz<996Q_CbT!c~S3=f-KGt}cj7reN#Z=LFs3=1XpyQ$%L&+h@7ty*Sq)JJZ`F{fV zA$w)?8G?`^*>8Lauy<{bZGHZV5dj%)4-d$WWhAv|J=QXCqLGR;2E)-s8rZusNL5Um z*o!uzPm%LVdRkzn80kcC4 z_)gEqrXm`S5`*?TSUO`~S)9e&#?$&HmEl$-61K(1?@c>HmS_It7@fI;UDSw7D!C=d z*|Rj;2ic{Ml6|N8#BXvlUNRxdt7YQ+sSy(+Dr)@4wX`2Mu}4*M;$;jF#cOOw0PiT+ z&F>qQz<&Ljv!B^TcwHeDe)ZPG*g(U?mK92b8?2`JN4Jbm=X;f$)b{HkoIbGM?_eK6 z=GlRV@09Km%&;-!Njra^=dNnBMg|p2R1)HCSvCybmdxIAs9_VUloR|A1nXVURk27h zQ0A|tWy}|@RZ`+*TvGiI#G}D20R&{%YMILpZx1-L*D6E_opzjWe3uZCJqXXni^+&{ zLL|6`q%?d?7O0E_Eop{SCw=>>D(VT}^YK&d2A@O5X)K=qXFTnORD;fu0*0Ty$KKa?-` zw_c4FV-r|8k8) z$Wa1VuyBn?R^3`slms5kUx?t4pwS%PP=$Ju_#)~xq`{+ix)Dxf8SyrCiIXWQzdc!~B0kmrSb55KRm1>ew=u^CqeEL-?`)yC{Edd-~drM0*BkSb+ z##@#vyJ=Mf05J-S4|s^v7kYtVUS&4vW>@w6cb2oO5&e~sr`c9ryh_RG~l-Hd{ zoKb?0jhx%ZhgE6KdoQ6ywy}$dOBxSn!&MY?(!xwhdeVj{E%IV400vfS&$vZGee zPF!*;Efb+?(N4w9rzlkCNih-wl@N%EXSm{jt+Qe%h0*$0VW*g(7Ne+WCdv4SUFX)( zP;5`sn~a@yR|5#3c8!L~e@I&~nr}%$Y^OQd^P#hBl+ObM-y&Jmd8k~0EgPgI8k$I{ zw;X}4iuRlMNPZ1RqcJE9Njot$l^=l0;7UuR(2xBr%Zu4E&(?3y^H!_QZd59Kl%0=o zP3t6;#iONDg>UGsIa3r&DiH~rDgG2pL=wyA#pjWSMu7gLbh6S0d82Y@k~SDLd87Ux zwDP(#-N2q3U*2GjoKYd0FuUtO&fpKeT;3@3-BHeHpNtfUwsf^!s<@H-Hj`;`$iK&#A z%yc>#Fi{%vX-%Pu39D4PY@aD414FXvw6u6rTE(*FRCq4IPHX}sECEX)ifk(GM8q}B zJ2>bGU{Ew7#rZj$2+M$)|A9o01!m3>&x4t-JO25ss=|nNlC^wV``otvd2x{+23hB6 zT|<32pegG($|8r%1g^i{3PO&@n+KwNa%Y49$rN-+X_B+U+UFTY0Pw}{FQ7m7Yz~Ld zBio!DFULjuIj_7XWh`cKqct=C{B68lhBOv9ifm@Gfr#lRhpu(UfcS%&Q+{T>jY6u- z*hZO3M!b)L#MW^JNTq_rZ%R^oVTBV?CF#l^-c;@^Fq}eT#O6e5)I_*(^n&R|8I=k^ zypIZBd&Up#$Z&6BC3<4ajG2ddI@R1H)%=_sTR;XjdbD+5oW@jE^>e1dU9*)qXq7g^ zdUV^WthsxyH=W{Clq_HrxHap`&VdPXU|6$H1^DL$@MeRF%KviZKh5v#(*FtYY6amK zF*^|s-Q_E~X)2};Fe$Q$KIja+BjE%rVGM)6&-%Q4Kr5l#)b%ZViqpG7(o>GE4wgY_ z-1nqyyL+!iw`RM7lrz2)%RbQ75#o_&7~K}_lRS5mo{s7NV^eRs!g%kVa=%%!1m+PV zc&;b@6DKCf+VK19Y`QEx+LPjWNc?Tps7E9Hxt=x#2%l~+dhhZR4-#8Y{ul?)g|3t) zY|(mU-EtLGq<~Hfe{(bMVY6sJB8K5sZ=hwhJJU~JTk3O?5Bjo$MLDSzRstPl;T+lx zw*5Bf_)#>3$IhStCE6v_NWdf@3d3syp?WY6E8zIzgGF~&i>2BU8`-d4h=#X4W0j4_VZ0KAYOyNuC(#M-EMH-C4Vw=bb}H(+>NeMGF#P>2^(6j%mK!0j*C^$)`E%1A zOwTDxYxIg#`!*2PMK}eZRfejTcYf-&y$&v|0i7JSnDZQEe?TELW3seF;U);lEj0j2iJgX6z$LIzY00d#KZNd>|6oHyhY%Dl+pk|8_*i+nrHg(&;H*rl z3yt^tM8I$3_Os}V{8kl0HSLa$D>gosW@6Q9#GOO881}KO0CnKS!>M6!1W$l+n9GL< z|H=vqzxjQK*i>cQ=rJ7-6zd>RKP#wNMeYp|AyY{!(v<-a>vaE8yzZ>sM8YmvxN*^PL_)vFR4~*HPwaTS?88)c18P z{I>V|746m5t&0OY^dVl%dftjz1in-^UdDd8#_wY3J9*u$!KF8@h*U>po4aiZAJyG9 zlOyKX-$s4|faF(m3$t!;aI8y;VHM>BdM>?-xk3QFx9hUbd;C#$TPg9D%q9CgA7}?c z;>Ravf?a1mtS~0tnbX`~v34`#6)Ug)f-*tedfincFF9o1>ZC;GSxU9ZLl+W{Qgc)m zuEg}lyJ9h+c|>%0|6%7uPZ|@S#Vc$*B$%Nc z0eyBjxe3LGlLNX1RrB(+j}T6h$%Inlg&^DGgR;cPH_X(qqwN1MO^xo6u0il-)T7Yp z*TKfZI)RJ%)g355;leg!moe9atFNWks)>x-MCYsovlt_!`d$sfBMvY`tH5o87yGIN zJ*=&cG23to=SeuM8+8!HF@0eX^S{r*0Bs2IU~br>KF6Cvn+%u6&#GMnfA(a!?WHKbGKriEIi-O0fI|pr9v)=(K5HZ zZwq~LPy+s*4!+3T_bW^+y7UJ>?&>-{$M^uBKxN6vQ&)SIlkOxPu_`KC9ae>Bk(yny zqT&WrepPEKb=`K(GuVbB9UFi!;Gx#?MX_iiK}^jrceh2IU1c|Q?p#*8ZXJ1(bXiy0 zVZwr_{Fwy>g`{P>W6SEN2wuVB)r>uEfOIwMm4^~NAZ%oe+2wX=qg@=AgQ7$(6Q?v- zcTY&}d6}Ka3Z=b7i>c4&_LP`7GHt2g_A|MSzA5fGunIgtSDp)irSt)fj$POx0%hp7 zxSPe;S9C6A2qr85cNQ9 zj6SBdB2^Bx8VMea#cSv`Im~)z;|6v6Hx{4uvf-0%b2QHBg3FvsAI`Kpu zVY0Z%Rk*xEhJJ+MK<#wJ|7S4j#k+w~oUp)ZlyxY%A|zw?m-fCtp(Wa%BtdAuKbq0_ z+-ACK5eAhtq=@BB?6-J!1d@Nf<>?vK8=kQ0O7nxixZrq71gLhhV|3_4QDn5)F8i1i zc#Wz{yo~-4ofnsryp8OOkbE62N>7fSh%wf?y3%Fb5TDdt3Qfr9WrSMmz!ry? zw|Kv%EFwLhlj}7W|ftB{l@WWq+0wp?wi zw>(bPrvE0>H=lx$5 zz}^1qj(tr3vvHG`G|J8Se!})`%YE$GeuuPYLB{uc@9lgkPqY87nlcHY>VhWq@SHyt zmA5LXvb-UXf*@C=g22A&(9qpCg#zJC+qUPk9Oy_>Z}I%AV+S2jIS(Kw`11073}XJ| zaQzqNZl8!UXoEgznj@*&7^W$_^b4R3Aa&I6LDxW=5Q*(yZ;{Vi@JeW;qCwxV^&&x^ zsdz&br!fBcDyVA)sO<@RkznjTn9bRx zQK3YA!fb3TTgPbkZv0e;%~QhFCqS!RDtTQJ_`H#j6&u zJIB4a+DneblCqmCC2{m!d8*#8v-Z1H9>5>dK23(5TL5RlxYFLQ>Fv{;wzd{^#iGBo&6C zV+~aP*_cn9QK~{b7X(}YV4TwGQiCedVXM4`-+rWo{f!HxB37Le1ch+Gh~y!qKvpUm z&#VNdMh1ChpoS*VMj+t^)byEKS?VR|4ntEzN>B%F1+PxS;59@I709*|#TTx`SeT5+^L(NQ4n#V_=Z^*gc3BA@WxgD&nn+PXI2eOLIMt|FaVdk=x47?@we=p_ z_`LzwJSI?7Qm8LJkr|YXE3(Xxq%qJZU;Hrg^4#iv#n!-}CyWSD>@qV>i-(v550p%R zTqRK0gE`aqGyQ1X4PUAMuhM-VCXn{1+bd77Zp3nc4Do8@Jvdrt90TE9xL#)%qN@y6 z^I!n;o2XX+a>INQaUsFOyQ$Zn3U1hCkrJe-zt%apuHz(OSqZIt6bbSf#`(}O5aor~ zLg1+mPS=&ywyyZeIv>ia4v)!Eu;?NjT8v14+lqeyW>_-r$N3(j+%Je3@LyS+B!bLPt7qVPNF~SsYl=})L4jrO_ALi|LHZ8rjtR~v7YGI9 zKHF@Ea1(`GA!6q2KX96nb>Xy2eE7&nx3y#gudDY8Tc>o2dtLiOg=u^oShM@PmmN@M3isGDPXda8&f_8eY z#x^kSX>|AQ!Zgwdog@Y)52siPt9oNKlA34@XDT#htP^4U@vI3>3|bEH#R<@WQ&;?I zF68l=v4vomD$gIf$sv7m@;9q}{|TQ9aZAL7-DM40KLs~O-$M~Y8hitcH)6}N zth%Z%U2)5?K%!7ifmLVEMtfBk(^X?6ggp9}U`{bY**(t62!@;elp74VGO>W7?jwEi z$-IWpmqAPSJDL5zSZITLzxv%eHV5Xz^?n1IbrP#nFB+LpkkhMN7>E^rku^8_sfl`! z8Ai=niX!Jmh+WUhQqCG_4g&7;mz12h!msxB7sIat&M1ERq%Fq(s=vq^KVWlw6oy7n z+tG=~KTpn%TIKk~kKUV0z;5-Ek0~YW$r%rJ_b_z*R8a_jduC~^cZ}}mgQSSiA@9x^ zb~i3uTcCQqdHgiR&);gn$1kiNZgqhVfwv6)BH);I+RpLyHMHf^0F<9O2t77nd}FQu z3d@G#;I%Wm0$74uWVf7e*x^*mX@bijP6xr={ZB@(cDFpCVUwp&?lIIC`%yn^epJ-MYj0}a=^HH5$Nsj|y*R1+Y8I_gY58u1rY#V^Qsiz%I z6B$*xP#r1EKPRt93(3X;p87gzF- zR|2_Gc1i>njiH-w%}Wduz2I!8-~RWo>v%paXUS+jDk}tgfF*5T9_4aniTRPLh_TU% zr9&YT(W8oEIABzA#Ihizz3v--tCX~B!oaJ?(8?UFgWW6fN8i^H*{x@94^YhhYVCV} zXZYT=X3qy+;qQF)In|<8p2zw22@B1Mf7mvsi8rp_Y&zppZy(O*Qkgy(maFe}wtnVr z&@0DoIqV%_fF%0;uNp=q?}~0+M#8sTKogFZ$DZ!VYpi<0w&M|9g?m;OzkU^QvXxF? zbQg>4s;{JXpxAF^-e{*|Wy2SJB@@4J-AY=^);-8zD#lVY2#hCE;`VZ^D zBpvyE!XB8Kr@`U`*;R}uLmUujTGf3+b6~2t8L+WmxoRIHsIKgvo-tm!v?!GjDdsOs zBp-JM-~3{uu&zHY=UNGaodw9t<&ZC?CZL|*>W=WPbLSmfG-FB9QphkK_}8G`mk_lL+NlHf#%t{Rb1|L)~h z@AY|PW0bsVYe1|Ee2o%ABVtG$e-$d>A zJ)BI4%9BJKnPaRfzIc16{9|HS^2c{xVTJdj;m6)1bhE2e$^!*+;{h!JvoqfBsiDwn zfF1J{D0sr29YSn_pxTgSmq($z4I@d`{!|-h!UV)TtMD!XhFkX#_P9$+ZWO`ZCkC4- zCJ3pF`^DPvZc6ak6=E{_D&rA&1$+nNVh{QGfQq2FyVXZV)L5_uGZn;Y63(v@)tZ$t zJMDg^*eM+ul4R1#u%C0k4-?BXXMNi#KrC5R?JfRawp>S0fgf%8@6tt-ljB0%j1{bV zI49`xj1$ZHa=FqizjL$Lc7WDZvY*#{!s3v8NnN{#==e07a~(=?*L}Y-jZmxAu@S|z zCV4QVN(V@VWq(SeGX&o^8`8v7TGI}HpEPZUS`?61T5eQ}f#Ujw`A^dSgTdR7II;aC-@K?{O3Qt6ThWa!bMm5^OSQ6GW$^1M}&xHK8X;~zTIEyQ!N*t%+VbNSXV{A{sBH1H&NzzR7Wcr1BoJ zOKGI>vRYv4m#XdP#~QE3mslVGJ-0K}kK)Cn-TOZls@drwTUfa`F>i1pl>S-JLJDCT zaGN}V{0yJb^{(1oB_cjmVgKJ4zK-+_oqhRnCD;#x+h_e^W`+F*N-q$6_0Py>#r3`U z2_YCI(9Uz=3UhkDs-dd@u|R3wIb|F$EOa(_Ogtr2t0$SKP-H@!kvWIUYveYjHEU}K zbcy^#ySdhK6wbgMBW0~F^qKYZ0_8YZs@SL^mj1c$Kaw+ztOAV6n-Tb5-bBmd`IgJq z+pdfkE~vSpGw(Um4R7W8U{?lPeFIIX4-Jl(>eL1OvvDO_4>v0SX$3k4#&pz5Q3Q-G zuqE_U3GT7WKDEM6XTUIfq|IEB1cP9+lp|3JMnuA(irfWt1QfxN~EX{ug+NMLO%!?BSbaI96RVIx66;eIMT_ zh|F-OP;qIAD5}l?iHea!5y@nf)4f=XL=?Zt=gX5QXBb@>~cF483UEP`;IL}8i~OOUd%fW;Qi2g zFG2#b+CwI%lD-Si_v$xNNP&rk-m?QQr5E_{kQOAf?QocknQW7C60{QzqjoD%3}(K9 z*ZG&J1R7`c8(Sb?5ni(-@8rs6HEG^r!5!bAV+sVx|1(`A4RzZmsUjgKiS<+@p(7(V z0QWKiCw0IhCkgktfUvS9we@v_uyQnb_VWOPu(BsL54h4Yax!x;F*35Uu+T7aQZO=7 zP!Tf7+M9?Nx|mXma5FP9asGe5NKzkk24+sG`-21EWM<>~zYQccx;t^WZH~Dogr4sH zV1!P7v%rCiA4^lsc%Ua8Nz)ECl=FSJIVoXta?(6)TNy)>)h0)M-)dhxJdbrzT`V+e z2p#GOO3Djc1Y<@^Bg9p!cPW+0EtPfSJS91b+cZT@cTLOzUrUr1XZnI%fP)nK6l=WC zf(^ALttD55rh*o2QGPJxigu-fk|=dLvz;+XL02 z3On&{b}4V6g5%RnL>#X_j&gG(+!pP~dfJLzbh>9Ht2Rv%<&|{x%ab&8Q{>$5!wq|c;O=dSo}Z?~HCFj? zi-F`Co5Y9cQx0rYU}8|2ftivN1&h5zTZ~8)@yv5QteT?Xfp^7b^!Wmn*OFAMno8wx zDp;9E4pGr07C#j^zgRtNMUDTA&8|bkkvLn~!5-9Qd1c*ZCNA!8Fbv<&wqEhRuF8J(36z-es= z)qrl>DvH|xRHC@Ge)!6PV7q|3f(lR3$FX*-`>0J;R07?^(JXGW!9fN^grQM2g2Z94 zI~COpV#+^N$|@XMN^)`PS?1lW0tBz&#D?$fp@LZdT%JWFY~C<# ztN7AIyxg(7qD??psOKvX zAK{t;)IHEo->~@wjj7(kt>SXdd88w_tS!zlTR(t4nKOyOlVe@f6j6C4>tqj{(!10` zIA>ba!4(TO%ceqG8pu^^C*paDHb){2cCG?c(o=e~V`4oR)uZDALXh|N+Bo@zrqj7_ zFcNMdpaT2`aGD~V@ucW(4EErLDVc?5(@$>2q7?meIOxQH-SDZSL2TGgUv#oV#_nJ* zdGqztVIxpxy;ixHh?j5*LxjH#dIlr#8)#O6jp2C^7Gp7^`r=(K)B}0dW!J4U*?Cbps&AFjR^t zvNf1VPa0+a>2;Jl6I5Pw>I6NFdgp!OdW^e-UQzU(fE4URigno%|0m$TAppAGyoOpJ zX*W5thfZ^{c~F^-L8)TML+gMPm+NdLsyAH&YDlPr929=R#NI|W$w?tdx|i+13EP8N z^bfI033o;DD8JtMQKkW$U5cB$kS5O6{F*-bT{G>0BG$PXP!x?ugr{9xF^F}E5AmA6 z0ZQtvI0}L6qECShW;l!l4}k4JT|ApvF?bu{2i!gjQWP9d+H-xl(ta5OCTR~1cwC)* z_GsAFO`g-PD6&)EL-shmewtVri$0X!R>alGxTG&-9wZ7hw&6Y)d7$2^w_G>MXnCNJ z{WP_})nH#O#bd0UCJgA83ZP3y$K^~ogRe~7UXH_+d`n;yp{s}!Q2=yT#2iH^SFn0H znCZWuUie&1qBDC3NstmAvxyMS`9Vi)yIkUKa-9;$&b5MCEb%xx0Z_b~`afn2M0i(l zIuhv66}V8B7r4=Y#wPRmR9cWL_FJf!#-ND3!wWxa@|Au(cjY| zhi1TJKj8IUgC^jHJU~#+f(Rt4gH^8-kei&J;loE?Ua>iR>ZTg0Zgpok|K45@mez~G zAM<%^chK}k2q`#nvJF>*yk$@)7)$Cn??C; z4%g7#58A_77Xn0yQTl^g5}+(?1C^qNB7hGP|8Q9#D6(G#N&@)AU{V!d(cSwRG^yEk2cIE=4L2Dwr(1rfilFUYaVdbvK_NSUa;(f zK*BJ`2ZI{-+5jqoA4xJo`XeJ>Vjn1&(Wr3v!ZL!AgGjgYW0wu-AmwWEJ4{YgtQ;{m zVdS^i5?b(Xde74-!W9$(b0KQkas&ANU8xJec9&*XvF%v};5|T_d1?v0RA)vB{N3%FN(p#4y7L;LXO^TF2Q5OSVM{yRBXs-%me;$INFaQY= zmtZPtqCub9jPDExS_&D#olobSH;|Y-!cU!VZEYN(4Vb$(IbqdbY>hhE&GVX^fa?T7 z;IYp~!gt#iAmP32?0Xv>m>$y{8TJ>1dKY#~1@sE73`~PAqvE^a@1hNHaT<_6*4_ib z_j5;^VMeoF^7hj6UGf^tof}dO#x9bq+7p^5uLmmS1Kv5MRV?^^mQEZ*$Iw2Tn<{-i z-+-ET-@s;)bFaPhm|YW=)ll=wck z0C}p9JLhLn?&JGY`rmJPUxwK6=YkJG0(uXG$AW|%bS*=EvCXZJ0X7I5QU6rq4*A1; zE@pt|O$0%LI$ywmV@BZ5q%RYOqb?Y_dlo-S&KQ3Bi~WeYvZ{aid`1819~?s9>%ZgL zjX$TuULA(OjR+tzmAM@0icIsH(0hmlfWas<(?jTuyOy3Rz`?PJ>|acYip84hN3?@Y zzorhg8HVO6xteFIHpPpJtbbRvo4AWpPVNdDE$0qv6)&rP?@u>|Z5O%4l?~|H+u&kj zS(h)Z51Bg8|4WdL9#U{u79RD-`min>yqXY{!>?0LJ2j|SAP|P~1NB;0YJl^t70ka` zy7KCAOJQNHI%Syux$4eghyG)>#(Egf_*d8FcKjc2bdXRk&7rM1@ol51-PS&eOGznh-Dd(L_4 z`{RuTi&U&Vk~2|#TtYr|bWkvNl99(5%_;V$W+mG%v*6v;eYVf@hj*s{J@5tcQ* zY%KFN7=rH0+ObW89{xNJ<2^)6hoL!Yt5BP_^v=sM9B}ZA_Ssx^*D(|-Me}wfAYVCz z^OmNiqwwnG2#V`=RsLo$D=Vo1M4SdZ3AzEUzur3wwZQa^;Ec@02!8HQ}v24bMq(32$( zHYS|u0W!2QODc>O4^O5YM1=T8Gx6s7s>Qr0PcYA&@ejZvE!}VvZlho9r6e}?NNE^a{X}C!sr+Isqhw1uN_aOZ7F8Fo?a+h*?1P&-mI*?O)Iip z%5yEpSC4Bd`|{Nwp!Y_2EG2PYQdxR@T)1%6>TaXuN>)!bFslVcR`EjO?v6|XO@u6E z4xV5Z;hGmfqL)Te&TRCMWch|`gC~#-+DY^VN)w{9!_ZgEkTQYeH@9A;_X{j_p3?kE zp9K&73A`d4g*}HPyGeP}Q{N}F)Lo^|I_63{N^l}X{pB!2N{ngyRp6z>ROIDwLUFWs=#bm>K1MGGPmw*JV zoRg&eaby`knp>F@>#Ii2N5W@otum6LEjzUzeJQK1y^=pOck*29RPzjProas7iP~{w zeUR<+l5J|8ysZ)F(V`%@A2e^^Gy4$~?kveO3-XRpKh0I$M=!3a!ObX&;k z0mc`nK1Ulg+5|Ak<&}mQ8yShKF&8Q<29`P99Dqnl5+?Wd7Ong(<)`lpE&t zd2}<+Vdgf&%4>^lt_iH4s4V@xXH|}7E%(bY4>QXD8xFa*Sd$u7;?>dBzV6q{O#0?Y z@OQ`NZ!HnxNiYY&!C!`MKU|Jng>6?3bpXM8$@rF^V9v8sr1s*qkiMP$U$t|m*Y2Ij zRffNiAH3GdQL%={FU-yQ{=`_VJ@v?%YQ!`=xy_3!ktDZ!PQH$k3pZB2b-XU#HeTJj z_RH_m+f@-Lt0<3ebN27L2eBCE6C8)%{KNf@@-X9{x3!0DC9Rq!BhQ+b!JoTsi2&Cs zmo)1sWktstDo*wh{d$|eRJzr1^hw=(#e}Mq#+;3 zRhYbelbS|c%RVES*Mp2$cL=5Lh8r8g1VK_)8cy60xo`V98Qt?rm>yd-D`Wa+d+*=KR)u21`F zg-<0N)^B6aXgB)4}P)l8n$!7w@KmEDdw$E)H7I+abma6h}h?Rd`l@g^GS z|En<5Zue;BdAlGvzu!o1q9KiF!9%SO3vrQ}(&+1-*t`S?7l=w}{9oG)@+cT(s(!%> zx(x38|Ku0o{|{qt0h_nhEbO*nPQ%R1*l>eQ8fIo@W_FmFnW153W@ct;m>cGsz0bMd ze|7Xr_ehUt{Jt73+2ir7T#%AlrkO5D9!VbCGWL+-&(dQWL*4(y<6wU27b>Itevn9IC#TX z$;7jmfLcLOI&sTn%nd9};*6yIs@<{Jwy@C=87nX^`e`g>qjO>c6hmj%5q%cJ?7*1s=uOfH%7VaEbQumlaW?nGhyG=o;~Pi`jb<;lT&-_KYDHO zrPitF_{Y?OB&is@f{L+SQ^_9}DLbg!hqVVN^L5VEKHhO{Iv2cqnjo(s?o(!vE~&_N zY~Kt=7G7pcVdL>I;N&`X+JN@}YlPs}DxcdD;+^xDlJ~4sfou)(74b{ub&(^AGO*`;OO1GY*QfGsgUTlj78bIuAW*2P%_2fV8GHxYYJ9%DRvfhZUbE zIlOZn>!WK%CZ9WvRn2}e(PTJd28JF7L$9rN027at+JPHFEY5!zb4|MD5V!b*c8_y# zuRDLIJKrwiP$UUa2qct|E-ltY%k0k%pUsjPPCqn+W`q+%mp$9$gmc%RGlm;?v0E%q zheVKl@PoHLSex-eKVyre>xmW5j%`t|?ESVcx{5$cr|bQ1jeF7J%N*DMq>FO(gMLPe zS>!#@)bk|Mo!=YA-uw9_@G&%3-n}9_C9Uvey!ZOjq1d^?zn~+P_T^P5@k5(;gMwoO zc9Nyoz}R8jGAcDP+6pI10B34^@UR(xA2Nc^{=?>(ux8sld!=W+hgF5IM!3$j!~Vp! z__xjJ*n4`4-TY;)!?9;Y*KD=|{FEL-91_L6CoS9;IZAgzD1@yF{Cl+dME+=Tn$!>S zr`g{mV()8R>tkRU@NA;m+X4DH6J~jvmKh$Y?h4>j#`1NkS7uss5oeUF1M1I!>C!-a zyvE(Rb#Y@;aQa#wp3oA=4eH*OM0WbJ6R*Ez8ZiOY6x=H(7=FdPW3C3v+!JpP7R9{C zW-P~Arg8teWL!}-ihkT!s$_C#8`cU54KKmVfZ6W0WyXYA)Ti_i^Q*JVI<0S+f$CR; z`%asH_L?;!A};Jqm>tad54j~lWdGbL%f~We4eY+cfPgz}!F(U| z*%7UQ9)HYe)8laI1G}f=h_ih3Y~4u!>!X4$GUDMCwtB>D*nw)K3FwE>?CS4}6R1)-8RU-PSI39qOC=)Aep1^uY&sfowKY`y5nzG<6EBqui_WK3$ID08*h-q7knoux%OG*a zJ^g}-Y4VcpMk){QnTF=>KbNrQ9%+iIzm6Rb^CoSkkod{8Is)DPand;xZ7PCRZb}ZU z*y_r*uo3o+dP2vw5noYxn38tr*#HFjF%NT?mq|umIw@vE8G+4FCMQBa#|Z>kvJDdo zVQFn&`1vX;##uSa<&fNz=%yUkBGCs7g#qHEvQ?JHdD zT!`tQUN&G_9YD{f>JYa@Z1Bz1`V^EcVE3{(u5mv2=Ac3kq&S!pF15I#jsHuev(zSM zD`LI;>e@o3)c44yVqT2?Y)EO~);tqO`gY?C@TY^3#thB_m}%&>g`>V%IImL_49FSX zr~|h3grajHF)T_^-yaPG7v~*oV9gZf2Ivi?GQVL_b`@hoBo^KuO zu=M1G$c;Q&-^u#tR?4N}^>^hGM%#HO$+L_?R?L|a0#8J+Zc3l;5_`KY=Yd6sXTYu~ zzuW9z5-jGl2keDb*Lb@4qLr~t$< zEVT8$sQ+ysYLk7zSJ5kxNwI9`5dW?u|E@-?6;wLjJ+96OM-XAjAA)6pmbDIAhnF&I z#)bo)QN$dzBYlah^tTo#L?}dU6Kwg#BWI$2?k#~q;(C);)~pj`7K-cQ0~jr;4LULJ zw3uuagalj&B7rJgQw}k*Y3-+6W8n3{@YhOfY-C4Tu{ms8_NNsRbQ4jL;T->7LM*@$q9QgN6#r$>C!Ny8JBpkv)j}Z*oL7 zBGSS{5_n#p7+$u_(16>T<374S(NfqK2S*JvGWe?Re|-02s{dbr|E&H0ui$aAT20}m zHIig&+X}6puG_XRfA)(f`fVE(i#VPU7d7rq7z7J~r5c>?UlN+EUk?LG_6{DabIS~y zhLj4qpI-VZxivM5IIhO>yl_Lo6rvjE}A`#A?bBbQ;N!m^o-`)@+eRRk5SE^U?h zlin`tOFVpudpgdiF3G`?99pn$M*GtbyT{OMQ`-C0zh3?bCaG~Mr!fSu*4gI(d@unP zL@VXER+u0o`css;y5MKflXd}XpInRS551&HM?Z~#+8Mn$lSdnBmP9`ppF)QNhiw(G zL~@n5Rw*2TiY@j9de^iCqo4lc_j@~;+29^RvMF{e;7mCZktXC;5Wk_&z!1>&)vxD1 zh7Hn*aQw^;Xa6RVvnkPRlFg{PNIW2A8Osg+RI;Wq%32GG(`WxmXbIe$bID1$J+^vO zZFIXH9=~$_-qWGTn?@BD5DT4*D8k_4ZuGJ*;&VPzoJy?-Czo@|Grh+f58*SV$QoR# z==K=kH|rrZL`?#P*I`03t-=i9dx_fyi=z&bU}=gG;>h<05k>U^4ZvGYr zVR9>#6Q!T?#|awCf1kfyoLz8mJK(wsc~C&^8la&TjX?P)7A4~|H!v? zcTf$y{eCVhL^~n4ME@-^3_)8(@)df;$K+)K`^ZRV7!62tZE2g7epTTSXgQO}DXZYR@&04(ZNRyjc?(WV zDbgC>$q%Yva4I4?$4%q4==83dE&)4K(+vnbLHE`CfF$_?n$(A=h4K49a*1C9MxLY9*WDawYEmHZ5 zly!Dr?l9lS=60kw@Xx3jK1ttXCn~vwn;z+1U%|Sgm{J_xPA7~5yOou~U)Lb2tHd?4 z{TiUzc>I%;)MoG+bcV? zm{{^onc>MA0ofo-u=Sw zxjjzh(_hjg1ff)?q>r&x?k{S^v5_&+Dp71Hg)uQIQLL^9f`ZzdvtJSparwL{=N*Oz z9aP60EP=)743YafX%ZZwnJV0K>1Q{3nqRH)-dW?LvB)u3oUIPChjYVO{-Ie0b>4qi zYd?7YY1dE{fzMGZC&WR^WB?~TJF5`N*i4%6iljL9ZGJCMMAYqeZwU5H_3TCyz_(qG zrkL#?7ke#fd8%BV{c*oDb_8;X21@4gQ*@ISfW#IN%jwW3ED!e-Ct>ep|1!1%@u5Df zk})IXn;+)O5xx$U8p!fYUVturnI7{+72#G31UbS<8Y>TZz(92Pu-DVU7BhRIu8*jk{r}nw# z=kmYgsk`EEgX7XDcnfhw_Q?rJg8HM9;ZB@)gjmIi%IYhPIl`W40F1MndE zQt|KO4WQq@b0kZFekF-F-6sUtSpLVyuqw2)qVb08yb$9)7=3Q|LE$*xnBMd_g3!W6 zK!l<7skJ(I$WL#8KGAq+gvNDT! zBKlYthND`71dT>Q-7U1)zv82EO9pPbUgOBEP&7VP{`Pc;%m~U40pYL4s zYv_eo3pyPJ9sMYaru_Ep1_P90QYvLW^2U!@-q@2r1?XkV%>4uH~T=S$R-? zQ)a1fgdeHGWSBv*1WNkmx#vVo+v_9ZlBONRR^JT=VcX<;Q&_Xhnvt+9sIq zK?S~Yv16Mk8Ply#CQf~6xxzAaE-i=gJ(#%(`;}YE*9;>3QxDgk@GommUWl*R@H|01 zi(wd_z|CKt#Od6O6+-t^*iv#R8kKQdKhtRrE`&Ln8%2HIF#lI%$5z)-EM+BQyC6)D6NuXA!>@T-$0^xEPuaK!E=xEiK<&6 zoD)8wWxl&O>iGiWo-69_ju^Q}#wf725)?Z|A1)cBvwCvOU(|+vq2Pqc-6lQ}Y_eaN z>2tsI5gao0b*~?BG$fAiENdLmAEa&sR*qf&KdbnaJ>B@jfO1h+QkJMD#v9GtDrk1dMX6 zWh>x9o4;J=1+akxg(9y)nY!k%%K2q5k5Bs!5hn8^L^F0rc(&qlMppJga$zoC6CTDW>_;|EKnL@!o3hhp4uQ*eVwweLDHc;W z*iz`k-5P%-7~l90=nm|095mP@^?ZKgif@RGIxBayHS}k^UI(Rs5Hl_E9IVv1W;^-k zu3bX>YWZRl#<&&nQEe%l#$s}Dv0!bPgBA1ayP8X0bQ@SGx=o+@FSw`h38DW2$B zF5q1p*?qNA*2_lyOS&xp>k69=US1fw!;ecpVOj#Rfv^}Y$@B-KH6`}}@tiqJ3za{t ztiDD41&;(Mjqez)N>OG$(Xdb1k9RS1!$|Rt;t3y&84OYAK_Pev2WUzla51uQCLb(8 zu#B?)=3jw)c&KWS<{Ig$SqyXDZa7c#`Tq#|sv8w9S!yoosL#0Uui?V!Nr6?`+(_{Q zs*DAgF1;MBHf-I{K(>&?IG!jr{zOy%Mb(xwH1-#oYD@L6x9)};%evs`KO}3QFRI7Z>SIQd5qx=V3QCa;+R=!^eZoEFB$hS45jdC0| zw}}G0F(PRl#*;{_NY-SB8TgKb5@^eWY5Ve#NHM<;!LbU5IkO)%4KG=K$hxoJa(d?A z^bKHXQw_xeD-abWq^;%s45^fwO(SZUF(#j`S_{m2fx`Jb$YF*hen^j)IT(f06Op)N zs$a;=#q{By-vbe>|A1&8-H23*2WmSOpkcIrR^LTq^#7%#o!=B8jDv^b0fnX=i9wIZY9U>m9z$pEcBg zwbV6*Xdqwe<1%i`g1-OT*8QGXYgM93!C%+D~!Q}zO`-0q6nr$@a?UO$USrl8h6P>kNCYh0a zApL6OA-xI_7)b>}hpQdRMSepTqmoskY0k;zd4#`%rND`!2sLaUmqyXb306C#u#zP_ zuK$E)!p3h2o8uNNnH|eKU_>P81@sO^!qoK&D(6FI2tOi;2w`wbLSv-9e2;W6l&l5# zEvj$$G0b&QgH2=AgOLI_U-vzGcZwDTgg}#>6GDCw)EIB>i>tF(Byb)WkBf;ZF1uZ6 zRtzs~Z>2oA0| zzu1AD`6y}!pPGr)#Q_spwO~j%#YfhyGpvzVNE`L(%u9D?dG$<+DGQ{pn6m)Tv#5vs z$!u!1`(r4Cc|0N%l6eo{3NUm~1^1doI{8+_IPvwHZSm3Jdo6Zox*k&4%}X3oy^j*< zWV2^#H&o#4uVY?y{n#>i({vH{*MVw_-xtS-;@zkLG>H!53R96W%V%gy!Qi-9(v@8vLCbJMHc z_2J~IxQ(LkYHsJr<~`o=>1F5XaI2eJZ$jsF_wwDCK^}AzM)q6I6yW1$j-m+J1lij1 z(52>011u2{J$ekQWLFx9bXeOD+P%Fk*uDiD+3ri$FIC~l|3En|y(@__A*SP({)*kk z5=>^2Rf775ee`lZ*1Hyv_!!7eLU?AGK|fxyC7+dhzLqQiH+9dr9gwa*+x%F3+2T2w zoieuavUhlVwq;q@LS(SE4myo?A>iHYcsDz(5yUcnG&+JYvV{8)zPo?r8rIAn$EHQ)dmXgHZ*OTRPUZBq|jkL(tIniV+6a5 zbBvr(@4th39oPf@@{db!3+NbN@O()rsM_lc44t&lcc@UXZaewzTTf31nGCXziPjo~2 zhKP}z9Q=9E!`qscR6_ia(AiU|$<0N&Iv)3O^{AB12cNsT-tTO1lJtKYm&?4{y^hUy zqY8N`4xws%H|Rjg`K?-tb+mhsE|fm_8?y}WOi=*)w|=wnbfHVwPMYtgj_1RIUHPcE zg-9FF{^+{q$d*<1AyGA{*>JOgTi#K zMP$04FVo_SmFHZGxJ;u~_oUM6UN3KE*{n7ylvs0a6b%i2AEBN)HQxv>iKjw-pF|)79o?rJ7dE0>Oxn3 zxjUk>}NOG5}_Kmu?t?+`)!=N5&zO!ZZN zOhsK~0i~-en9jmFV&QA0)>X@;WLXxJQ_KCm;Wr8+bdIj5j9H3!ODH`>VfS3isk;GF zYpR0|JE4EBmXu06CW&4#p%3&F-psNxaNgWC^SES0>Z2_cL;i3{Kr5p0QcFNcJ$&c& znIB=NaCpA*MM*$YU&|(#fWcb6$(P7RWn0c9oPfc(Wyus{{%=Ygn>`&4xJHs&*?A~o zm=?TUWw}@D7CuVbw$d%+&|Qk^b@Y5oHJUV>_uHR~PuaIBfF5_ZmBT<*zn>HW!=&P@ zs2aOm^^pv8zH|kDu%C`LLMJp_ovs(!`qXVQWK*H`9{NVgX@%5CsLdEWZODr^9Vwm4 zwNLso?p(>!x|<0g2Wc2L9=dtt#CA-?ybi7t3|vAR?_3+K@m*}snC3ZA%9t#9P>Qcl z9m%7*Nx_T8fC{z0?rO6IpSYcgZbT}J-3exRk~hP(@t7|^n2kR%UKpS$kpI3@?J?bu z{jKWkM7pv-?=8;%WzpS&rF}r)wVdA&Lt~G?J zyQK04T-3c|);_egY&NWW$G0}t9)frNwvD+!8e{wngPBS3?c&AV^mMX&3NG%O*tyt~ zG60HGim{sL=EK~cOSpC7+$KKh?0e}EpXh3BZsA_<>}bZOud1@yZ0~68=F3LVX{@A% z13v47cyPk6gSHgSiSrTbqzWSHJO|0Qm*J8oqz zAL>uh-l1Sww(k@oqGXx2Zx_;|WRdNY^9-9lET1N&Ya}#F!R2cFRsnOjZ5r82WL&*B zlE&hjw5+WM&oW(mcO@5>+^?MUFF;hL5@Fhcc><>$w8J5O* zai*v^J`-^xj0Y~pf`4kHiCceB4Y_?|ob#*67k*-|iw=e*)PRIK$X zi}AgJ9!5W?Xy=DGfyk2L;{s*A(wM#>H3R|^PS1?G<+k>zDSLT#31@~+4y85Q&nRT| zPavN@E*G?<6|D#7U6u%f&_BYypz$&pG=|DXFcw#elKqNx7#iRUGtSJmA9A8uM4dI$ zWuyA33!zaitOvp(3yT=n3u>Gblz+v4Og?On6qqzFoAeVX2o{c;kRev>;EhkwzK}Ot$ z7+jo6VvD(!N>Bs)SibGgk6Y79JnSuO>4gfbImCD?L%|`b=ZdybS!euIahSDKyMFdz zn3Z#>RO3M4Y@Fk^&r`zIFfeW0bT`Z>Fm;?Ga<{fuvTdM(an9P#BA~{tx1>e?iL_%z z#`4A>Z+?q-h&Y_IIXvT>&c3lp)Vf;Kz2TFH%$V|fM7Dit;`WrfA{|^_&8>C#s_fTV z1f8gq*^jsT>BWrpNjm2%jYqdB?B!Oa)gEWOtlS#40@B;L^piysh#6AYn5SR zDhNYm-F}v<$@;{(Kd8?7Pr5%UodZ`JhKbYfE?j`k^Z7n0KVG_mB?zwu-a3 z77wH2-sLQ;w&BTCOXo5Qh#1pe6dOlaRBb4)OTqh%WvBMwamEk-iwJb@yXH-0Gr7lNpUR?7nH)l+GYbVaZiw#`b{IJ1_evOl zexS-+F=Pbp4|a?QriTF%J9R>hO6>Y?tYd34KJf;EvqtP2u?BA*VybN7(A)pUqdL4G zAgmxWJmVXky@@R`E8~fd!E}rkNibfQf02!85K32j3jtTzD z$|}BktB5eKw3?*1m`~;F`uYZnei&4oQi6BMP1tE;8di}ull7f&K=ENrf@z_okabB) zn7Q_Uf&e5*k5;GD{pJh7&8(%FLumOzWw9N^@rS#Y%qi*4@Xpcu8#k9xTLGRu7La9J zi_;gsB9$4!VCgESfD#*He$vlqHk5lx=I%IJB*nd2`;FRz`doC(ThR!%5YOzZd@a7Gel)*{VDIVW@qiWwK=-=e8AevSxX=q$x_mgTgUF*q}n zYTtKjQ@ZZgB8f9=xn~i&-~g@Mh{(@Lczmz{UOB9QCSof zWrkjmg}(f~<*M&HX7-cGo~;*4ds{R2I;(0R-~EHkPV}saw-|Er=R>?|&GM6~&|#B5 zG_LDiudI5^)t7^6HnYvW#NOk{X#z*b`RNek8@*S3lU5W$#y^LV4?sSS_u4ip7fW9x zyr>=)%e3J0=;YKJvx>9VMRH5+xdZ5tz!}zCXzrcP^jL6Vc)_>?nu{23v|1@1tkSzN4?D7R#3=mQvpmVWCS9Ob!I?!DQ_|3rqP z=yKQ2f9{~ks*S8~y_i+<8XDNbjs{-sY}Dj%gxIf}E~uGnM7$?36dU_L9eFeKe}?6s z#kLtbb82Z85SBazj5JE|O!c^pK##psX>ddz#xz&>Tfg3RV@S@4HB7Tp${CJiD~kal zDq{cgbRd!FU#n!_)DYiR(K+C8+Npbvi&b@?S>dTFeg~dtRdNrp=p|s3T#D!XRo=28 z+pyC9wqbN;3EMG`FE!Xn|BN*AG;6Q+myYbpirFuXGliA4&wX!4GIA;YCuk{2ZjR{vSJP?%l$gqxV?!s+-fG(}6}Pm-heWZ{$@Jo)EBWWp z)l=X<9uum;x3~IqjmILw{426iaT%WJQ$(1chcQ6-?5B4Po+wr7+v5SV{IrkNi_KMkr=oe*!nA#K)t9jzMLt>Y%#(sooVuICqf#vBu zh|T~;2G@Hyr|(ml4Pr8Yx#|4_(09CtI!0hqqoy?w=}Ot+!rv@+OC8l#;dHER^J1|BHtB*&nILPA5{CXiKjYh6JwZqio9DtG!=FMU=T`ulHnOlF!~q zTBKL()LsD6CUNZMPexl-R!1xrYx|b?+|x&urMXw-p2GkG5iW6^8Yh<7zgF}EmFxu! zkkDlr{uTBJjY&~eHXpLK4?vYPO}fbW)z~!J=rVRIr8b2{n;24UvcNwVhgeISmwD74 zsusrzdJJ|A-?Q>?Hj0|4+SUU~(jPTkmR=MpuwJrRQz_d`AX?4&|4$%-*~~@uRpDd^ z${TaAM;Y|Vo0@-Mq9rkdb|4cP{VKy7X7E?IuV2kgVgNF!+SDFS6KZ3fy4n*X%W?RN zH|t#}Y?LirxFr%T-T%LIOcmWMcQ3p7D81NeUnP#=!L1_d(Po0#idR1oz%+rHc*G-jaEDWwB!XE zd7Z%ud3FBoZ_Ch%sur&LP+}*?Y2_{?L73wG=7o>Oxa!JrE2#OCYC-LS6Xd*K{Uja# ziT47`Lpo85v8X*N2KbMT&~)W}_p1d_Ba(B3<~`POhb4sHpQ>txI|rR~qLaNiS1rZ@ z{SVHQ6LWjBnetX;bh%~ChA+@1%D)#w2mM$S(m}dR?$q4KFWT7^$&a(SDT6|TWA8h^ z;qCK+cL_KsYB%*uxwOzr7@Oyrm6;uq*5OQSVOi7H)uy{Z%HP-|oVRnwB-s#H)SHUr zEw!I*+>VND;<-*#C^ok68b@Gzq{i}^iT<&ims; zugcFBoFrF{pP}mHcx|7dVrkZdn_}?6Aegdh4cLhw*G0r~Ym`jK1Wdif{^2J&_E2!6 zdr+hM;3q-2IQEvqHAF-Bh|llu8{{a3&h_r!ba3f6S&uCstROTF*(wP4V>dgBf+@C^%n5RLt*otYVqu_dr?W|BgR0f|#`qTScp3mYu2`y-Y*J6_U~k}5wbI2 zMD~bS?g!G@*@M?KLNhO~2nDs9wk^&K2fJSHcX1A=4*s58nBjJMyLj2T{B^q~nz~gqX_MVMKH*31*F%3eTwAHyWm5P)A46ENZT6i4 z${GiO>elplHtlnK=Lh7MaKPiF*TuhGdtX2$f5>{fLZwf0uAd277@veU3nC5NSev7mge*oQRU)j3aS(bSyEH)lIugktXZXdsFtjbk zCR9TzX6c*wvBBuPoCGQqN0KY%eYg!MyB+iZjK}bHes;lKZt*zu2f19FavBBe zSsVscYpG|`IpQ+zB{y{tN0NfxQR)sdj#Z0z6ZQF$h6bQh}Wj! zkl8NMezGk8rV&Fdmo4YF*D?au$jll_=*2qe6wpv0rRIs3YVH=rRo&j}D!GOlKTAqZ z{hil+TZd85Fp}kmU}n)CPg>+gxBlLfUi_I0$`9x$a;|C{$@Ir*M;eFIYTUkS!$k!0 zmFZJhu2q2F_L#4vsY(WpOfc(}ufz4!o%lWIf8lVeFeo&b<>vltix|;!D6OSVGVNa6yV55tn``m)2)>3TKLnZn-^5g zI;o5`R zFn5!dYxZN`JeZEESmpz!Aa=eHB=giTQa_Jtq3VWVpzuUQS=f5P8M8?tNYrEbht~gm z6cFNnbxtA9C6VMNYeC0OjnjmM5hY#n%a7wIg4!t*Hil}{ZA@s%Y4THwev~O?7NrC? z7_mC4FiItQ5OIhTKu(*Eg9VI$Y9>^P zMbSKpGjphG(d{8YkIIA@{IW0!kBz!gzHMj}~c+u#G7pf=O2)itOf?V zM|qVh%Vg~brZ&*rL~M?-LnDE_FrY;1>gcP6ruQ7OPpf7LwZ{++hn&_8M$@!2NA3L8 zH-UT)9A#b&9Y#{t1dHLKVt0t7xgcz{pZqJdDzTr0IdUK1o6BOS&%p>>2w2mYvb98d zl!en$Hy5Cr%7P>-A|<(2sn6K?1uZlV7efmmqB7|z!)IltL-_>2kUzLBaymW@E?nS~PrC3UAxP7t{nu{uL>bQ8 z-IUMrQa_Cc?$q&9!4%8;Skk5mjZp*q?CCT-61baFr_29RJq)sGE&XQg-Jbrlxy(qa zEX>$4pBUe)R!d9ZUZ#r4q28bJ#o*?UJRr+eD}@b6_Z;mIo@wl_)l2df^U+WZ73JN( z7MVdVN1rPy=lbdrixm%6Reg|PXN6Wdc2og9Qj5&uANB<^HeEKbf6kaWG0JUPvM5}$ zO&5_LB*;R{dTbeM+Fe7)hjy%qP+42I2{*&OE+zsFN(q7rCv3GKl!;Z97ne?HDev6ww#$BZp#}D?F} z>g_iwhnA>ub;aH8qyNLsoIWIMa%HKsv)3|l-3Y?jOmz0-3UUezazj>)hmdi zfymyY1I-=PPHi;+k>`WD-Rx>yT>xe=g0>EPy&NT_1L^EH zNHiZ)&7`IrSkfFRO5bh8DefSE@+YoZN-fDr&Q~_im2+LWMwS({Tt8QpW8LzKte?D( z7NIl;3kPqdO#o&cOzB(tSCnUBU7jY8^d0i4ifvHqNmIW^g}!2D++8%?%mHy^2WSPL zclDBdQbst|WGewr>gIqwBFC@v zC0Hk7+sNcv*QY$}l;%WB7xggz0QT>&uO{DD4PrMtp>mxNvie z(_h=?`YlLTpnJbOfvk%#D!fuuzDjHZ$Ok&>5cFomv~X!1p!L{t5FU_7=*YAhAhV*#5#ggxhW5P!&W027P>@ z@B-n2)%-Vt!Ia0zpzR<(PbI$}H9AJfCCCQ3P1J`F_TDqK5robPzMh5Hd6$ z$YVUh(2yMBd&c5xBcOsZw}YR-(X650W?bd}JGhU-S{zOYya}x)9E1_ty(FgzW=RsQ z<9jG|O^bzu&dB2| zQ9D15eU|jCk8#PaPJDaSN5g0kKD&`PdpAJuJH-Jc`OBSp2LJGV5LH}yUKeiiuBJW` z*hOT2Mz{M}xuKvW+j@V%cJ~V6up4|7scR@{2Do+Na`R3j`X7+>#WYr+r71!P-P+zp z4U>FqX9&A*_a|u;vOYmKJsh(Bpa=@`=s4Ng1bS$SU493f=gDsTfxHiru~;tAtJ$kl zC54Z`Agwvou)NW;S=|8ak&`B%bpI4&6u$SgsGjOTi~YuiwH^?#jAN%j8gP!t?JxYz zmZM%gL?wKIXt+3_D8jcPwj=eQ)6OeHl=7nNi}m=7LIOkmPwK!R^de z@sO1eEdyjSQ;sBLXkUpFY9d=PEiy3rlCl8ZBB#V}qPhRr0{+o&@t~ZZQ6FV=-*`02$woW$- zJ5|xyl6=|P@ArH=Js%eCPXkT3HQR$aZzlvFdP2LLRiZktP(hdR@Vr2@$c)GW1cH_h zR&$Lt(5&-zu-83*{r5|d$z}Qx--fgca9pQFAL#L>o;zA7+vKHqC;vNYp0DT;Zb^08XpEqT!ntrh0^otVUNnRw>hywzZqF zrLv{PC%M!V9sJ^=VuLWZ*4EeO=<%>zY;_&p<{ylBxwW;yCmkJp`LtE`a+=;n)hNti zea0&uZX>>lB&{R4FlUdnfRV2L?Z%qD>-lj)PAXs?rJ{A=P%om?-Ra4sRTI6WHP)IP zDA2#o!VwczrCoI(dE?#fenkv3vCGD>Q6>$4kt`ZR-@4bxKll`CmoJQx-|1Ie z)N;ubXOETQZZ+-gm$^Tc?ierF)={SeDo$)lnNmuFHrS}&jb4l1JE`my{uB*M#ikRp z3tQtbpP)4kQm&WQJr@B?2kcO6vXt8>Q(ap+eE3CEd>^|D1OVUL&K(6cUEk_k_s!N` zxZAF%2oikR1Btk(qlZ&nGTxBHOuI983bKS2si1uMHS?DO%MwCc8>#$&e+ z{ofXn@~{OId87P)5Qbf3oU(B-h}8`+Sig3Hpm&{B`cUiRa-@18Ljx!Ed9#YRxG%Y2 zGc7_`S;?PGVYomZxQV6F_1YPnQu+_D*F*-!J2J(en29HgQmxF_0^0IUj1DgR*tPw! zhoahA@2T|3!ll*)8p5@%Q<3w+rZZVM(1&DZ&+6B-7Y=(9VTPXpRpQ`LeROmi*z}KJ zr}GSPY;Tav#RImQghIrinMzEgPg2DUnB)}*zk|zv2%PYl{^65nZ;ZD2(zJr*63?D} zmEPA@hR7a0*M`_+gI{&Y!R*2A<#3lnmGnYxA>25K3`KG3N%z&C@)P@Qo7My1F9MNd0-T7Wa1IUW{8{G4F=o_ z^j{p>2&<}*B-!)m^LfodRibe_pU*DNw|F5sEGguS)*ch-med<>ez(f0Y#_9+qHi?P zEo?rUshm;hkD87wf}g0Rl-XD#5D+XoKg?h=^pR9n zE2T070_(PZfpv8pYMSI> z_gfj(a*s`Sl+#126;<+$zY|roquZWpI!J*w!;Q8sufM9~T2@gdd!G{sc!@u=J1sm~ zJ6mh1Te7X3mtbxDjYCIrQ;BiO7v~0LfB1N31{Q)rpK<(G~R{Q#^ zdAK-jr5z|9K0*h?D6<&*GT#>9P^YJ+d^|WS@F^kO0Vm+@&G&&*-Rwyra-4ahu})}~ z)Oq?J*zgB8umx~Pbgl|4gBVOfv$0I6pD7d&k-W?$@48V`pn7} z$SDl}3ovYl|C4VfbHX!8kvU>B`rdKZo=Tq2mg#IGx`02Z<1&nYu0if!mOW@v(7)Z?D@5z{-u}HOCj5#zx^B$>78YbD2m^)*i)En5g~5 zJaTp6KhJpoXwMYXDxdL^`a8h25j{w+d@?cqci^Nwlq$P;d`N%v>9G-y9V2llPXtg` z|AlmC`QzjUoQVqDf{V|bi;ujprvO2w4w8wgmYg*IUr68))b!`;Gz}1&D#hz?LYpT(mor0xTS6WUhzkg1!m(}{ zh+56>krt`>MNyxSlpsu-0(-ZlI(;T{x^w6wIHBchpCv1J-l9G}sBJ83Rr~)yD6^^2 zYTJ`+NLTSaNy@CzS=;A_=1JXzZ&gsU2VztyKJCJu4-nJ4Fx+ejWo9FDhYRak^Mlv6 zGoAm8NGpg?I~G?MlKU5?=-+*BaM#z)_BAQJk&AaDc@XUKQ^30Fy6uU=Z1@N~x8O{0 zK|U`j-W}0#3gqFoot?^$h{pJVT08dkqDo1Wt<Jca3X63&qePRxLYH6c7ksTdi>WQDroF2rga`U2}}{GoGA zP}ylIM%kk=&E4nIB>TKFEz#`CLx}eSM$uQ_VP-sS=Eptexq^N>!O5Ls>dUD!oG^Sp zC%6;4QAJg=$jUQrHBkD)ManxduKH49IkmNMY?e~}HaadY zQb;#C;&z+){V%G&PM=n0YV~`A zC&7{v#98r&CP>jZrrb)FNh&`K?34C0c{s;b*ZF}(d!n&*>1?eO2Iarn`%F6J2kOAV zr#e(WWXdkyAF8As9|{g|(iB5$a3wLn7Mb6T{Ee7Al=W>Ucr5>5|G&7_U#mc>M{09breAh-|{fGfKd+PIg)Qa%no5iLT&mEbZ<`!S(}LtV$XY+AHU zFOFw5=dZ+iG;}HKj}CrT0r(iV%rTC2oYreBT?t=9n2n)I!%6!oT_*Q(aEawR-e1%= z+GVvV=(zJ2l*_d_!$*CQze4|E%2c4#fAmX!v9T2MO;k%?gn#E(ukjD_-zeqsB7B?i zef42jQz?Z5de#MeRB=6ehvN)s?e-_H_+i90 zEMCum`-aN?=U_>Dle&^SQ?`7!bxznwX(^Mq6gBE{F8*7elPS3L?61A}PA9@+EX&y@ z1X3wlivI=0tjqroS$_c(*YmUiqahG1xG(Mw!6A6CMFIp_+}#&~LtqmiKyY_=Slpf9 z4#C~s-R;}o|E;>W?su!6GjnG5)Hzc<-7`JiGt*Xu2G(Yz-gZY8%ZjUvFLP^TtIy`m z5MO?MF(q)hL*Y~ROzN4z5A5c7))x1>^Viee!`I&HUg4L=!`F**N1qu&pIx2ozFM6|Ng$T&M7rK{UDb$d*Q{y;S@*#Aul*gPJV}V3XG5WNKm8lf? zxL2fHyK2bUPREFT=s;genfmkT4~m&n0g0TX0<>o`G7qPQne|1sRdYw{)V8+YseGdfrIFxZ6TbS^3tVKbFtgNc&nuR@WCg?!X?E7su|w=0;G zHo3+JG`a%+dvyA`TjWnCby2Kg3t1_uqL@06Yt##fmhz59@n`^5O|KiMG1oeMzvBi$&u&*&%?ZLDmTi;xkbUF2~R?XFO?bN||(IsN^r> zsqB5hQa##{HSGKHsDT;+?=Cm^G#?olrBMZ?kfQ-W7iS`;=`2)oNl>Wr{QlF$j${cS z>4KeBpw`Fe>$~()*fb;N^)McEdI&tMps7C8SDr1lnrX?X+TJ^OaB?Bt+qrMQaCXY8 zLxsSu|A5&UOHU-bHl&!6L$9b3TTmpYHk}u#F||KoBQF#=rbaCFW82s4Zuc;|19OBq z_$JrYT3hBw=CRY5W6TkMiEAqsXgyOpIYyJ6XKgmg!(~mJEMvV*lT54>gqV?ZsSReT z8M1zHOeZWI0*R?Zl#@Zb|Mk!Wklt-F__<|n>(k_GI7?zW6((WJ^w zPs`cT_<407c)SEsmz9k-eatuM3Mg8QS#|L1e2?4R2x^Xnp>ipgd0dMS!L#y}{i?wg zqfAxzi*)hp*oooZVvmmw*P1`dOpIZjwS`7iB}H-Q7&RY1j-Suu)ut6b_R|Fqb$v+i zi){M$GU`okg4NB`Si)6i>eVk^1lSaW*lKUTT)Jm#O@3ahSWZ48ALNeZHQ7%t^Zj@8 z8IQPaI`xs{pscbXEDa)Y6LY)Qa4CrcuAn$SyIvR#>fTye*@C(3*d)H+{flNzEfaG1 zf;-G3&l)R+`z&|gyWv*$kOrwzeBRe2E0s5fV3G}*1grp{m(vs2gRy}`X63~X_S=YG zg*F6km{RI(5@BRlE3GyXQ^(x;Uk0q+FFrA&y?#)g?1AtcT;=nOBsX&pjl-O;1@oA5 zy+-)>Pua~xrCx?GhOU-1)kKr;dE90{kTc6b!dA_I#1x9>f^?7j&sdD22gXp%6fJf= zw;A2!q$twpeHaDD{kOJ-En%IE7$1Jwq!|Qhcic+~sYcOmpU58GEEBa0}vMVX%x`EJd^O1R6wWz;eWJw#QgkQc~ zpj}>VSuZ=_qh@jfLnD@Dn^~$31IClm%{N|=E@oV{KT(QEma+Pa`V5Y%-B`B7n2WZ9 zgU;&ksBM{~F!I7n(eueh+bsVNK2lr|TVih8K!N^W41+IquYG}Zkv1&fuT{?ygMbg& z4-Io`24V&)U*8`4NAGUmt(Gj@+)YHYsznH0mt%(Q3Iw-CYK$1&sJx2w<3<=}Zn{BT zU<521De}AUE>=2Lfv;oQJF;Yno zlUo3qJIxMi%R|%L4bkL5DfS~U+ z95WpZ8_Wj059@IobZ;77F^(HoN(OFB?^JYtNN(kJlr|l~AUvdhrtk-Gx|*b6@1K4h zhQgXc6!45>d>dpDz9d%`VhUq&Esf49isIpanV9Hwubleae$go|d<3+1Yk{!_1FLQCn+Wc?-d@?-4vL2}<} z{5;V}xk1rvn?HQkgikXk`ZBr#%9QYLx~p2e=fnac$~g0oc*-~?kg)1u9N`PCvO)-! z2ZWg_m~w6I^9F8;O&Qjt6hJ}|7pb zYce=sbP4sar8WCKUnp$}o^`US0SD-Tn(ecsyc+YD4!UTq4s&f6QLEF_E*jpKNJn zZ!uz@Wp$QodJ|)PNnN6OvW-R=in@MveVJNs%pY2EjoCe|ABsyujw}bxIl)7ZY46l; z8s2NBZ6HdM6Kn-w^t3S1ODBM1%Z&nu%RP7|a#HYW^6Lzp=$R47kn!waW+8uM*??$C z0wxZQSDrGuoWvO$&C<_l-8q@Pe{yvql292u#IeQpN;McnN43k8MuG_Iyj55U_1P|b z%1gZAcACrEf5_NuReOwJGrs?OG?HE5nJy?J8WhGUe&IX~?A?(v8xeoz7?JzZyU?A+ zZ6Uc{V%}GHp3<~WS`~cNj0`C?D@cI1%#6QA&E>BXrz=RlC{6nHFMZMIg9&np;5E4h zOHbDCXA9v<@c{fH@84*qsuAd(=_EbUcH*zSVjQB_7npR?e+%=rk*_}5MBsa2pxLYc zQ%?&G$y%dSqBH@~YpDF)6eMl@qJFZE+LK1*SE;E}dOnWafT!{*MvxAnZ&XXdCiC~8 z=`?0`VO%cC%;7gkWux>>cY1dflotyW2u^a3uOq-dQoo4j*nY3lE)Pg4t@N+m|7YB4 ztx}eIr;bNx5qI4Zf@n>KQA-zByd~X__ObMvOvc7FzVj&D?Y9lH&n7=WR#H+kv?I(4 z<5)XPDiOZS9G(-|ruNm4z*1DyaiibgE|h1Z)oVu)*ycX8MVBCyGb4l)1^z-Nz*?78 z_}N?%cuaJo9gs4xNRlHriPFgvAOn(`)|+L=@|fL_Lf=nPn0W`KC~{Yr?hVK?`{Pao zFQC6kk%Esds5MaH#9TUFjrcwctxEHr!srmfbO?V~14{is2XxVc#Lt~;&4{bH^nn(n zEcG<0|0&OOYm0#re+6l%`p-p2>y+CBY3NE29wK6g+s^b(%}mz=EON2pXZ5RA`f}`$&^veusp%l85{FGGC7z-zmx2<9roQ0jr~> zOi!S^0tYJn*pYuh3ZR5I~-;)?A;}ui+}ikcyqdPyAn8(2US@uy&o~I*taA!4bulK#FUh5&J!6 z@Qw^X3)E}nRxqkw3Jd6%^@V8oQ%;G72LIS_PNw`JFOBw3h^VxBecV69DrR;sT~N%s zz7o-m7)HKOB(p{8Y7F3&gcgNK2rK>%Y$j>EkO|8VnrQ~!k~JgEURL$xQLHZ0`xID_ zTSK976R9@IJsHyKHz=Gav02*E%uKX};}U2k?O|~|e=)H@CSlND0|NmeH*f%@kt}RZ z66_gYIUbfANC~*JP&%l6UEADP=VxWgmftFmip(mth?zZoTRuprirO3IX<1u-Csf;z)U8`Vpftv!psqztYp$ra{$4(o#p_MmL@--Xo62jfufFD)T!p zzQuh7N(UCTunT}^(n2>TL0j~p;UUOJTR$y|_Y2=^%*6eUmD0;{#exQxVh$|ZOmHG6 z_LOXZiqKlrIVk-V0vskt8Uv<{h#cf?IAk#(=3otcO+-23bRs=!U-ZfMiNVUhj>P#) z&gIkQCl55@JLv*SN%5F+3NX-CslpLr-iIP<#@ewQykZ)y<4o|U{8G@eM>^0lqa#6N zl1+RpT`%|KdOzQ({JnDGC zEak@%mWnpCHo?e1Z0t5`i|#H=IWBPNw+a2KKzz=TfNT6rc`y#mJ9>25PXSv-x=ic| zbsrDdtSq`ej1rs>ow2zrQE%pW+syzVUTUYYZ2`gZy?Stc&6Qj%+o?5u+}QB%Q9mXI zH;S?}u4@KQrbbaX{#J=>G6UD7+Fej`t=Ft09D^ZtsR&8oe0&u-d zT@kZG;xyCKqSxxx3> z`NL{0pE4%@lfWr-WuKN?VN!h(rI z@-R%qsr{lXH)3jgq`5JYqoPPfA^L0ie>*IaS$J|riKwkGvp=y7*ikR@vB^r((R~3U zt5fIjhYM+?=4n^K=wQ~H(vBBwWISkg-i|n772#p*-;1N-6!&D>8e!R+5K{#A z7><=#l(`wMtfCmQRG^AamEFM0Ccm%vhg=R}6~)-Bi!R3(!KyJa4=wlzGA|j7l+U|@ z!+Ef6E+Z-GFlN6`GrEeX_+#EZfUk)r=BNkkmxv6b;PK(_$Tv5Ud zm-r2o@5hY%&@~Qu?X9_i=KWXHY zik=IdKYsGPz=VKLtZeU&k-~lN&gNA{?+x6w>7{UEP!G8)Z@X8%ax(M!$Gm* zCqrU&U*>67l9@}0dQqUdaNa+|7Mn0N#iyCCjR~t<(--FVqic&CM`|0ViJdgj#zjx& z=N_g+Hj*&`yH&$RdIqD31C423dP?29PYWjpqX%xyEy=#l-a;#knM8kN?I6s)Q$K;! z-o%vLQbWpA(Kgw&I!Stk>!THDV`sff!5 zpy%*hR)4ig59Vei=iSXrY8TcZlWFFojl2(xUL^Kv(Un%f~qqynRtBFL=y(5mPosnjt5Q-E<0d&|MlIUJIXP<__8wSr$8-y1@BOQc! z>k2I3s@eIsq`#bcUMM+Me`t?7R@7zcM#v=il^0`9_LHDGFNW)i%#P!XfV$*&E-X@~ z19lURe59)YqYNys3@q}R7TF1!7~@7*yA7BU9r^-vS)W$f}lL@>H~~RK%EmdT-)ji{Pq;mU+5pEXC-VbFXMl@udIwpej)dSk3ry-@-WX(Rb$vW*k$?@zm2`l z5o10wxYc2tSD!@wf==^7Wg%ypNs-K=uP>#qn>0wutxG$!i`xV&9t>VxD6y+?*4fML4RzhZjvEwxnTS4o z)oWa8*}xyT^RRIN@bVQ1tNrm=q~#HEZ_F$c5V{u-grq4PL?YwmbagSabg(ceVSPag zCQ|A0CRvR=>7eqg@90NzqtBX8{%K+S6= z@NoaGLMsGF6?C*;>@n@s7?DxZPX>e)ywa)~&@_Ob{ts<}UVu+O+zqSLBQr1(E1^K; z7Ge&`()7u7(LZ>(T+nR?HOF&C()3IqEzjNF9F*ov8LHX4=Hp*!-=-601)T^y8MOvX zN3?w@BIk!-&}d(mk@I5E)Zt$hIT4|NvHY?<(fGnMfa@dWZOo4!5`eva#084S-j^^TH`2Kqv}9Y^m6O+$=}ykET3InidKgiF?& zYgAK1 zTJ{=hxYGK18avY;gsu63K8he~3Ro|Gh1V;_!`_x2M!f`1tW3V0B zoc;pwb-LJtP8IgI+C5A>T-I4+Qa6_sKECi4u2z2z547z_oQtvc!`GZj%?xSSK)@_C z{0r5PE8kd-f&Apsv6<9+ba^?P9`F_V_^57lHQlc?B~0_pGUX*644v#d`P<{^sJf^7 z_gS4IlyX?@7prev;d^_58C~wv3hi21<7qWW*`gkWdMbpYeIuZz;U>2*2VAq)Kh{34 zccjKTi$Oa*e|6^eJn)BiX1@ioyGHeh4;x7!d~v8=1(lov1KvIWS6G4+k;~+!$d*Xf zP0kn^ju;73lSYR9`w4^acP@I3r9FR4Ala~)1>qew<(>!x=cCWWgr|g&mzwC5ndm@Z z7Yu5juzDO;|Ltzqj^(D*pieGM?KFVT3f@FlR%Mst(2S>w`oDCO%};vJ#<{uJ)ondy zxgFaMQ)MsD%vx2yu5U*7<91t}bcF)(x@Aw=L;LZ73aJyOf70b;>V_=-gI&vRM$;YG z%quZM7?D`UR$*P`ABU>$dq|{zU^Lo*g3fKi-^1P+7}&FCkzn4fE%t7=B?X>mdi$M2$XW9wOu4RM zcBztV{rk07M1OF%`0e8iO^Ez<%LblP=O6KMHMAE^#|*SrjU?0hQY9Ec_oHvxJ}gtIqTW7wGqD%YhZ! z%dMVQUwTscrw+V?-X(~f0ubK{(Fd-kjI*Xv`3p7O`5UH&$5-2Gh+;%4$Y9%pi8JPA zUw`%6w#bZV^jXaND_5AA+_&2#Gorzt!t}*2 zhMPrh{mn6SU(DpNZW4ZC*nK!PO!MU74Vz8)tKbzFZHGcI-X8=b=*>kN9miaiph=ye zNxlJr1dN!&l7x|xfgAR(>_NvPYb76HOA3DVLx>3UOXpRK6X7nugy;!Bu9Jmq8}PLX zv7CP1a3HrqS}jSZEq0U2|NhCNUT4FIyxAj60Ik+sDijDKYrP&h6$U&N=1QgTB5_{` zNmRcM&{9))k{EIEw4E@rHt^T6kM)HItn!U*9#Y?@lR}QFfio`xSE9-l3ZKEVVn7W@ z)8~Ue>wD`ZMdbfqO>X~tF1}LhNUBg1+3$%ft0nRZfpS5NYfAq$ak5M@q`EryA8w@k zn~zJ-n&H=(ixv2(x)(XuR(DdHrA+mHPs}jurOei6J4u%`57G3sMk4(2Q1>V3{7q6<( zrDO$C#ptmH?U}1xW1dj>8RrdS+Tjc6UU#=F36^I&$&(zVwC=W5sGYRwA$~X$xxm(J zz4rD*7e@*koM$UXn3;k&IRzRGAPR`sqF_`WJK|c(Dpwr)5i)fTnm+}6i1dswu%V0e zyxj%IYsj~4eP{_YMiLrePf|OyQ(+7*&>5f8y;-6a!2twv+k297p*9zDr!4 zr}>-v+vN5hTqqCJV5DckQ#<_-X2-goce?bKqN#n!D!o0?pCNcY_tH4aKDVE|2?KtC z*>hVE?V44FMW703(rrW#xL{h<9dhY$RFuly(UHb>vl*l5|F3|g4IZgJ_$dP;pt-J15 zQ$%x()$MEaaTi-W`LFHtl4ri}V4d845s1yyrIjhsAja+}IT($G7v!DC8AdBqWe7;> zCxLVug{B9liR=mpOP;~bE1Wz-A6(ia&CGCjxyGJyZgappu$8=QJ;k2#uFh}hE?r%i z*iypHusc-Ti>$dq>SR3kY=L8mk}$u zwS<(m%1$o;r_M3e+}DT^&bD_2U~0VroHuN^KgQ2Rl4#IwB;%nxv`2ohir7qNpj#YN z@dE9=SUa7yUcb5x=`H#~1LSMUm3{?!xZGL0^R`M>Z^`y8t~Sj$<<*-Q$a97TKt?qx zkBG_r(Q|nbuarRKnhEZumyOk}&hbLBm=bzJdnazILi1odHSc^=O^v~!ShF3u=ekyy zv|bw&U#=>ItR|z7w{zJ&mCY4)=(X!WoR?}3qBaEFbP0ppJoW^+bfXjY*wOhEeNrGE zr#3c?UPd)eRwksy+U=6KTe6CfZVbgRnz}{xa}1XVQ<1l$oz#}wVY5!5dCwmytJ-5u zc~4Ik7@DMp(q|*vGzEKJdV~jXke%1CurT(oC)JExo4uBj&`oVozWFVnpbIQ`=l-z z;*%)ux5YxYWOvnjx5AC{3Tz^|1EXoP-}?Rv&k`XjWR7PpDL@d;D)$6*a=Fiv_MAq& z3xy+XSA}+){I7qG*$9H?#PYjtX;$n$HP5r_*UUIC95&hA=+%3%>xv|L^T&At+(NFF zmxR;>G2A<*Gh)#t>tH2KL5!Iwy-!Qp+)poN_3klt9UOi6S0!=%6%%gG;Irwy|G4;Q zM2NU@sZ0;z)pRKutD9CYiM-rWIkdA+;&aBq+)$Fp-{BC`!e2J|RQI!OIrU_OZjWBe zK+VgkhWy2q`V8w>Am*aN9odbvxGX8L9F2zRPAPDgbDl%Tl;h0hkS1;id)~?16JZwU zg;g3nwvuCrYyzFCp0QpythIC1sTX9^O;0FO8m@!f`4%0gacnLQFCXlq9Vo#lyRX1@>QRGnW@F80%2^+J=UI&Tr+Hq9yY&aiCCq_Sp7BOlvl&L zAY}a+BY{q#eu{S0Y1pY&MtJqtFwkl>H*_oIjw?!Z5`NQI6x^VOTK#d|j_~h-&8eLj z?I`3{a?-9Lf5BHaMt$z3xkh$RBkS71nJ_cO+v?`NCaG`rT4MVTGXg^6mL>oM8W z^5l5n!ceZ=j>@h9ZZ~{jeI$M9e8oQ&6_fF2R|dV#E#z zzl>2axOAp?xa5QwvI+uuG56uc@^p{(p&N` zcO0|M3YN!;|H0oY!k25FS^q`j6k+0%3Y{8U&UQY~ z$~Cc_S;IA#$&l3Z7yAGAEir4acZ0$6pL@OD{l~FoFpk|ZKpQoMR2tXz8I5sH_A?IC zRCW)2$A~_q5((D%oYru(`Zwxql)6Sb&rT|ejhfA(H1zYG$=J#Rr!Cz6n-6Dd+>{q! zCOv-{@_0C>HkAwX?=C_gq)9Ue)`VKuUqMIq1ivR)9voWTTNRD=(F7aQ)_CsyJAun9 z*r34bd4o@a%hpCuRJD1JpU5K)#{|dszgXD(eEk1^v9R^QWP{;8hDL9a@C!iz%8%~& z+AARLFFyzA=TUHI`@-C-C~7c?k0Q##fm~)xv8~5o!hCpaX0|8^q6P7;xTG%ZrjxDL`Av>Hp>(GSXt1Mrl-6) z2(Rfgo87ql-dvuty0xkOqHnzAkxk4x?`%2G@1c-Myezgy$=6hk7wPy^=ULmue^p3| z>z}uFV_bq2vmo*{Yati}wvulx1iw>0lx$%5ot@&;F5hjkoah18G_(crwam%GSubWq!qC3)LUSEvqe}9RN8*Gic@YmdlYS z3MEf+RWWPixo+mwB${cZ)#z{ik!xY8p^jl@9XwAyL4l}{C7LjrpnlZOwBDTYiVu}7 zP*S0uD><>S&eeWHXdjssQ&E~Q4DL}IEGdYS%PUwcGtsTJYI$#%RL2|hBtJVVg*^%9 zqmea~;}+GU(@T6JYMqN(Bs(bsYVEnA#k9hd4RftmQB6rOtD$qN8&Hn-&>85Ximi^i zF$mK~8-e73&_nJcKJ$( zzQSf4-}eI<5H41+67Q0SIWjLrzixp%pMi>FD2>i}G%Y83Km}BlTpil&H3&c6#cp?ba3yHPmC)Wx+_HMp2uGn?(hm z0Fc1>I;K)4>nhKHq}bqo@87DsIRtUNYrSB6O*U;(_j>5!BC{a2iY`?8Ci^Qbt(j*0 z`}h&5xY?Motl-I%dkIh#GmySzh`9u@XGO|vqB(eSF&gFfS1BImukzkG>MdU=bW{IK zB25^msd&*7R~~Sx*ehqKk(Z;=m#2@2!%jkvkFAMG)+30v$Q>xnSz!@nQYs~g?L7&A z!{Z+=Mfp&~D^J2)A{6=(+_)HAQ?Ic=J~c~BQohXM+(E9bB}G!@QC9S2MF7Y0gg2`HTMdD+c0^J80y98?0N6C+p=X=96N zQ+q`Nbf$BphpG8&B`m%S&?OfgWt7`c%a0GK(8+;0)U;;Yq~2;mCTmR0qI+-5*=LZh zaw6FdpFLG7d;bzhYuVd1BQeGwBSJplih-(1tftryX@&DnX{T6n*wrS<+DbyA0VB-J zN9GrXRn|xT`?{r5XnF;59)l@b_{N+HGwGex`wmn`F&(9cY}$8l3UvpwqrWPPMK$m{ zk@XX_$)G7d1Z#xQIX3ZG^sbbVW7nWci|#tM_X~RS|0OoElLSaHAGQ{Td$hzXT8iQ z0r;e%>@L)LB_VUB*1`6%#LQXmuRZ41`f=M?1QKJ0RDRsD4!iAg5<0HOp@JaT8_7p# z!d&DSl#zSOEpp+P%E{YQDOh$-_~81gShR70k^fGUw0Ub7{gc%`+j|TqSS&%J%SP+T zD9y#OLzyIXxfLksAe^dWF>c3IrbmyJr=e!>&;~LHDD`D}y(_Rd6dOcRAczB4APT3D zOLTGYs9!4%(Yi~dt_~UfdmU(}R^-64YL-*m*Nd1(j3ojnKi#s={o0JV2P*8GW~w(A zQQ=ssi0*@1j&O>4E+IY9d{TEIOtlAV*^yD}kA*aQ*ROa%K1b-Lvf3T0M#P8vi4-_> zR|%CUIkA$I{>57oP7w?(lgzsY*?m+b@Zd=$O;0ta$Nk{+xjB~EbmF(+G#!TmUvH5U zo5jC8mS+>O@W{lR6f^U{-W+5Ns5XJCfySPeM!MS4HEaCW>DjO+twL+gQ_~gva@Z*r zw?CHuRi84!PFNaVYy)YcWABv5N8AlnXnZWuBBa?cJn^p{(6J-Nv(OKzE6`+XtrT!9 zv+=k+UYsu{FUvZwof=Ea`K&I++dP;JL;f{p)uHa`6 z!1bhBKUY|%jmV5@w7Pv~Sm%w>qb$4~G&%?@RrFl1XTM^0(Nz~|*_Lh;{B9$b{ge60 z4dmCUeJ4RJA0R+dQw?*l&vI|zXxrHJNP`*qHer%4IMuv`JMp#L$`FFt|xgz1R~HKJ>oF4Mek%>lU)=I301VPC&`0qNA`YDbHQ~t~k27Et4a` z6c(*jelSYYzKr;^#3;O!_aGvw+#vpd!Fwr-HtW}&NlxE-{lzZG-%(dVt1%#gzE9#y zUTId2i+%E%YvjZMRB0LSOQI!jl!ad=-FK(bd z2z{)jW!{OdK4(tVotw5^6ne{ISm zz98I*@tThKE+=9GY|10A%hjXKv)!~ggIee^Nb4zf4AIS4qV)&L^SQ2@B ziWzfiXRj4Qf+uyRDz`N|yl$WGZ@*`>d)}VZfY%K4#Jn%=8iFj>R##R#TAx-@yCcWj zy*%9^7rVV1VE4?GXY z@?qY0UxOEKo)s&+IwDo?7SmVmc+#EwAc9}6?7C4Xp?_x(Unt?4*PD72{u!dn31TU*=~W*r z5l#xknOU-I2%^Afm|7XVZdqD7*nK@cd0BDK%w5Yc47zAR)U#Zje23ru)>& zQMZfJ%i*YT^Mi47``d;026%rqH`@{Z>biqpbI$#pp2#>lyc>je+?gc2u)=tj*rF^v z!B4}V?CG@T;q4!PVi0SyVW1me~%k0@h4-e8(ll0;UaDVorpc>iUYQ^ng zdD3g7#U^UKp+x0te(joYBmL?m(V9<0FAk}D4?@B+FXNB0MAJq~}qtNrw;0y^_I zkQ}9axyQ{UGA#yGWKzoaZ~nnCslXs(TGpJ=+-?rlOi*M|m+W|*=wYx-O~0x!533}P zH&2}=M4QK3v_lh?l8ea*t~vet(Y}?%<3{F3g~J%L{uRNJS^&2*8QB|)yw!Vhv)2>v zUk2ii@Tkg)wfNKJ>+LNi=iYE?>e4XuD72-!rTA!?rpWOl*&q$$>OU^YVPTIQuYylO zzded7%nh?7Yk&mCc@A&n+5yqcfg;t&G; +-3nZ6|4>uO=Eso@Q0v!GkoR957~t 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 1.3*60*60 ){ settings.acceleration[Z_AXIS] = 1.3 * 60 * 60; } + break; } diff --git a/src/serial.c b/src/serial.c index 56f84e0..81e8740 100755 --- a/src/serial.c +++ b/src/serial.c @@ -30,6 +30,12 @@ uint8_t serial_tx_buffer[TX_BUFFER_SIZE]; uint8_t serial_tx_buffer_head = 0; volatile uint8_t serial_tx_buffer_tail = 0; +enum serial_mode_e{ + UART0 = 0, + UART1, + UART2, +} current_uart = UART0; + #ifdef ENABLE_XONXOFF volatile uint8_t flow_ctrl = XON_SENT; // Flow control state variable @@ -57,6 +63,7 @@ uint8_t serial_get_tx_buffer_count() void serial_init() { + /******************** uart0 ********************/ // Set baud rate #if BAUD_RATE < 57600 uint16_t UBRR0_value = ((F_CPU / (8L * BAUD_RATE)) - 1)/2 ; @@ -74,6 +81,44 @@ void serial_init() // enable interrupt on complete reception of a byte UCSR0B |= 1<> 8; + UBRR1L = UBRR1_value; + + // enable rx and tx + UCSR1B |= 1<> 8; + UBRR2L = UBRR2_value; + + // enable rx and tx + UCSR2B |= 1<= RX_BUFFER_FULL) && flow_ctrl == XON_SENT) { + flow_ctrl = SEND_XOFF; + UCSR1B |= (1 << UDRIE1); // Force TX + } + #endif + + } + //TODO: else alarm on overflow? + } +} + +ISR(USART2_RX_vect) +{ + uint8_t data = UDR2; + uint8_t next_head; + current_uart = UART2; + + // Pick off realtime command characters directly from the serial stream. These characters are + // not passed into the buffer, but these set system state flag bits for realtime execution. + switch (data) { + case CMD_STATUS_REPORT: bit_true_atomic(sys_rt_exec_state, EXEC_STATUS_REPORT); break; // Set as true + case CMD_CYCLE_START: bit_true_atomic(sys_rt_exec_state, EXEC_CYCLE_START); break; // Set as true + case CMD_FEED_HOLD: bit_true_atomic(sys_rt_exec_state, EXEC_FEED_HOLD); break; // Set as true + case CMD_SAFETY_DOOR: bit_true_atomic(sys_rt_exec_state, EXEC_SAFETY_DOOR); break; // Set as true + case CMD_RESET: mc_reset(); break; // Call motion control reset routine. + default: // Write character to buffer + next_head = serial_rx_buffer_head + 1; + if (next_head == RX_BUFFER_SIZE) { next_head = 0; } + + // Write data to buffer unless it is full. + if (next_head != serial_rx_buffer_tail) { + serial_rx_buffer[serial_rx_buffer_head] = data; + serial_rx_buffer_head = next_head; + + #ifdef ENABLE_XONXOFF + if ((serial_get_rx_buffer_count() >= RX_BUFFER_FULL) && flow_ctrl == XON_SENT) { + flow_ctrl = SEND_XOFF; + UCSR2B |= (1 << UDRIE2); // Force TX + } + #endif + + } + //TODO: else alarm on overflow? + } +} + void serial_reset_read_buffer() { diff --git a/src/settings.c b/src/settings.c index 3afb964..6369067 100755 --- a/src/settings.c +++ b/src/settings.c @@ -168,10 +168,10 @@ uint8_t read_global_settings() { } else { return(false); } - /* - if( settings.steps_per_mm[X_AXIS]!=7000 || settings.steps_per_mm[Y_AXIS]!=7000 || settings.steps_per_mm[Z_AXIS]!=7000 ){ + + if( settings.steps_per_mm[X_AXIS]!=DEFAULT_X_STEPS_PER_MM || settings.steps_per_mm[Y_AXIS]!=DEFAULT_Y_STEPS_PER_MM || settings.steps_per_mm[Z_AXIS]!=DEFAULT_Z_STEPS_PER_MM ){ return(false); - }*/ + } return(true); } diff --git a/src/stepper.c b/src/stepper.c index 0ea5812..2158205 100755 --- a/src/stepper.c +++ b/src/stepper.c @@ -20,7 +20,7 @@ */ #include "grbl.h" - +#include "uarm_common.h" // Some useful constants. #define DT_SEGMENT (1.0/(ACCELERATION_TICKS_PER_SECOND*60.0)) // min/segment @@ -540,10 +540,24 @@ void stepper_init() MS3_DDRD |= MS3_MASK; MS2_DDRD |= MS2_MASK; MS1_DDRD |= MS1_MASK; - // MS3=1 MS2=1 MS1=0 1/64 step - MS3_PORT |= MS3_MASK; + + #if defined(UARM_2500) + // MS3=0 MS2=1 MS1=0 1/4 step + MS3_PORT &= (~MS3_MASK); MS2_PORT |= MS2_MASK; MS1_PORT &= (~MS1_MASK); + #else + // MS3=1 MS2=1 MS1=0 1/64 step +/* MS3_PORT |= MS3_MASK; + MS2_PORT |= MS2_MASK; + MS1_PORT &= (~MS1_MASK);*/ + // MS3=1 MS2=0 MS1=1 1/32 step + MS3_PORT |= MS3_MASK; + MS2_PORT &= ~(MS2_MASK); + MS1_PORT |= MS1_MASK; + #endif + + if (bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)){ ARML_STEPPERS_DISABLE_PORT |= ARML_STEPPERS_DISABLE_MASK; diff --git a/src/uarm_angle.c b/src/uarm_angle.c index 51acda5..e7c978a 100755 --- a/src/uarm_angle.c +++ b/src/uarm_angle.c @@ -60,7 +60,7 @@ static float get_point_b_angle(enum angle_channel_e channel){ } static uint16_t read_angle_reg_value(enum angle_channel_e channel){ - uint16_t temp_value = 0, max = 0, min = 0, sum_value = 0; + uint16_t temp_value = 0, max = 0, min = 0, sum_value = 0, aver_value = 0; temp_value = ((uint16_t)iic_read_byte(channel, (0x36<<1), 0x0e))<<8 | iic_read_byte(channel, (0x36<<1), 0x0f); max = temp_value; min = temp_value; @@ -73,7 +73,12 @@ static uint16_t read_angle_reg_value(enum angle_channel_e channel){ sum_value += temp_value; } - return ((sum_value - max - min)/3); + aver_value = ((sum_value - max - min)/3); + if( aver_value > 4096 ){ + return 0; + } + + return aver_value; } float calculate_current_angle(enum angle_channel_e channel){ @@ -228,10 +233,17 @@ void get_angle_reg_value(uint16_t *value){ void angle_sensor_init(void){ angle_iic_init(); read_angle_reference_param(); // +#include + #include "uarm_debug.h" #include "uarm_angle.h" #include "uarm_timer.h" @@ -11,16 +14,20 @@ // The Atmega2560 has 4KB EEPROM. //#define EEPROM_ADDR_ANGLE_REFER 3072U -#define EEPROM_ADDR_ANGLE_REFER 820U -#define EEPROM_OLD_ADDR_ANGLE_REFER 800U -#define EEPROM_ANGLE_REFER_FLAG 818U +//#define UARM_MINI +//#define UARM_2500 + +#define EEPROM_ADDR_ANGLE_REFER 820U +#define EEPROM_OLD_ADDR_ANGLE_REFER 800U +#define EEPROM_ANGLE_REFER_FLAG 818U +#define EEPROM_BT_MAC_ADDR 1002U -#define EEPROM_ADDR_PARAM 3200U // refer to v3.2.0 firmware -#define EEPROM_MODE_ADDR 900U -#define EEPROM_HEIGHT_OFFSET_ADDR 910U -#define EEPROM_FRONT_OFFSET_ADDR 920U -#define EEPROM_EFFECT_ANGLE_OFFSET_ADDR 3202U +#define EEPROM_ADDR_PARAM 3200U // refer to v3.2.0 firmware +#define EEPROM_MODE_ADDR 900U +#define EEPROM_HEIGHT_OFFSET_ADDR 910U +#define EEPROM_FRONT_OFFSET_ADDR 920U +#define EEPROM_EFFECT_ANGLE_OFFSET_ADDR 3202U diff --git a/src/uarm_coord_convert.c b/src/uarm_coord_convert.c index 92150d9..793129e 100755 --- a/src/uarm_coord_convert.c +++ b/src/uarm_coord_convert.c @@ -1,39 +1,66 @@ #include "uarm_coord_convert.h" -/* -#define ARM_A (148.0)// Lower arm length -#define ARM_B (160.0)// Upper arm length -#define ARM_2AB (47360)// 2*A*B -#define ARM_A2 (21904)// A^2 -#define ARM_B2 (25600)// B^2 -#define ARM_A2B2 (47504)// A^2+B^2 -*/ -#define ARM_A (142.07)// Lower arm length -#define ARM_B (158.81)// Upper arm length -#define ARM_2AB (2*ARM_A*ARM_B)// 2*A*B -#define ARM_A2 (ARM_A*ARM_A)// A^2 -#define ARM_B2 (ARM_B*ARM_B)// B^2 -#define ARM_A2B2 (ARM_A2+ARM_B2)// A^2+B^2 - - - -#define Z_BASIC (107.4) - -#define length_center_to_origin (13.2) -#define gearbox_ratio (4.5) -#define micro_steps (64.0) -#define steps_per_angle (micro_steps/1.8*gearbox_ratio) - -#define ARMA_MAX_ANGLE (135.6) -#define ARMA_MIN_ANGLE (0) -#define ARMB_MAX_ANGLE (119.9) -#define ARMB_MIN_ANGLE (0) -#define BASE_MAX_ANGLE (90) -#define BASE_MIN_ANGLE (-90) -#define ARMA_ARMB_MAX_ANGLE (151) -#define ARMA_ARMB_MIN_ANGLE (10) - - +#if defined(UARM_MINI) + #define ARM_A (142.07)// Lower arm length + #define ARM_B (142.07)// Upper arm length + #define ARM_2AB (2*ARM_A*ARM_B)// 2*A*B + #define ARM_A2 (ARM_A*ARM_A)// A^2 + #define ARM_B2 (ARM_B*ARM_B)// B^2 + #define ARM_A2B2 (ARM_A2+ARM_B2)// A^2+B^2 + #define Z_BASIC (108.8) + #define length_center_to_origin (13.2) + #define gearbox_ratio (4.5) + #define micro_steps (64.0) + #define steps_per_angle (micro_steps/1.8*gearbox_ratio) + #define ARMA_MAX_ANGLE (135.6) + #define ARMA_MIN_ANGLE (0) + #define ARMB_MAX_ANGLE (119.9) + #define ARMB_MIN_ANGLE (0) + #define BASE_MAX_ANGLE (90) + #define BASE_MIN_ANGLE (-90) + #define ARMA_ARMB_MAX_ANGLE (151) + #define ARMA_ARMB_MIN_ANGLE (10) +#elif defined(UARM_2500) + #define ARM_A (300.0)// Lower arm length + #define ARM_B (300.6)// Upper arm length + #define ARM_2AB (2*ARM_A*ARM_B)// 2*A*B + #define ARM_A2 (ARM_A*ARM_A)// A^2 + #define ARM_B2 (ARM_B*ARM_B)// B^2 + #define ARM_A2B2 (ARM_A2+ARM_B2)// A^2+B^2 + #define Z_BASIC (184.5) + #define length_center_to_origin (0.0) + #define gearbox_ratio (100.0) + #define micro_steps (4.0) + #define steps_per_angle (micro_steps/1.8*gearbox_ratio) + #define ARMA_MAX_ANGLE (135.6) + #define ARMA_MIN_ANGLE (0) + #define ARMB_MAX_ANGLE (119.9) + #define ARMB_MIN_ANGLE (0) + #define BASE_MAX_ANGLE (90) + #define BASE_MIN_ANGLE (-90) + #define ARMA_ARMB_MAX_ANGLE (151) + #define ARMA_ARMB_MIN_ANGLE (10) +#else + #define ARM_A (142.07)// Lower arm length + #define ARM_B (158.81)// Upper arm length + #define ARM_2AB (2*ARM_A*ARM_B)// 2*A*B + #define ARM_A2 (ARM_A*ARM_A)// A^2 + #define ARM_B2 (ARM_B*ARM_B)// B^2 + #define ARM_A2B2 (ARM_A2+ARM_B2)// A^2+B^2 + #define Z_BASIC (107.4) + #define length_center_to_origin (13.2) + #define gearbox_ratio (4.5) + #define micro_steps (32.0) + #define steps_per_angle (micro_steps/1.8*gearbox_ratio) + #define ARMA_MAX_ANGLE (135.6) + #define ARMA_MIN_ANGLE (0) + #define ARMB_MAX_ANGLE (119.9) + #define ARMB_MIN_ANGLE (0) + #define BASE_MAX_ANGLE (90) + #define BASE_MIN_ANGLE (-90) + #define ARMA_ARMB_MAX_ANGLE (151) + #define ARMA_ARMB_MIN_ANGLE (10) +#endif // /\ | / | \ // ARM_A / \ ARM_B | ARM_A/ | \ ARM_B @@ -47,6 +74,7 @@ BASE angle -> anglec */ bool is_angle_legal(float anglea, float angleb, float anglec){ + if( isnan(anglea) || isnan(angleb) || isnan(anglec) ){ //DB_PRINT_STR("value is nan\r\n"); return false; @@ -67,7 +95,6 @@ bool is_angle_legal(float anglea, float angleb, float anglec){ //DB_PRINT_STR("angle_c error\r\n"); return false; } - //DB_PRINT_STR( "%d , %d , %d\r\n", (int)anglea, (int)angleb, (int)anglec ); return true; } @@ -94,12 +121,23 @@ void angle_to_coord(float anglea, float angleb, float anglec, float *x, float *y } void coord_to_angle(float x, float y, float z, float *anglea, float *angleb, float *anglec){ + + +/* DB_PRINT_STR("coord xyz:"); + DB_PRINT_FLOAT(x);DB_PRINT_STR(" "); + DB_PRINT_FLOAT(y);DB_PRINT_STR(" "); + DB_PRINT_FLOAT(z);DB_PRINT_STR("\r\n"); */ + + + double _stretch = sqrt(x * x + y * y) - length_center_to_origin; //_stretch = sqrt(x^2+y^2) double _height = z - Z_BASIC; - + // get angle A double xx = _stretch * _stretch + _height * _height; double xxx = ARM_A2 - ARM_B2 + xx; + + *anglea = acos((_stretch * xxx - _height * sqrt(4.0 * ARM_A2 * xx - xxx * xxx)) / (xx * 2.0 * ARM_A)) * RAD_TO_DEG; // get angle B @@ -122,6 +160,12 @@ void coord_to_angle(float x, float y, float z, float *anglea, float *angleb, flo }else{ *anglec = atan(y / x) * RAD_TO_DEG; } + + +/* DB_PRINT_STR("coord abc:"); + DB_PRINT_FLOAT(*anglea);DB_PRINT_STR(" "); + DB_PRINT_FLOAT(*angleb);DB_PRINT_STR(" "); + DB_PRINT_FLOAT(*anglec);DB_PRINT_STR("\r\n");*/ } void get_current_step(float anglea, float angleb, float anglec, float *x_step, float *y_step, float *z_step){ diff --git a/src/uarm_peripheral.c b/src/uarm_peripheral.c index 8b29a89..07894e3 100755 --- a/src/uarm_peripheral.c +++ b/src/uarm_peripheral.c @@ -8,10 +8,10 @@ /*************** servo mode ****************/ -float duty_ms = 1.7; +float duty_ms = 1.51; static void servo_init(void){ time4_pwm_init(20000); - time4_set_duty( 3, (duty_ms/21.0) * 1023 ); + time4_set_duty( 3, (duty_ms/20.0) * 1023 ); } static void servo_set_angle(float angle){ @@ -19,8 +19,8 @@ static void servo_set_angle(float angle){ if( angle < 0 ){ angle = 180; } angle = 180 - angle; - duty_ms = (angle / 180.0) * 2.0 + 0.7; - time4_set_duty( 3, (duty_ms/21.0) * 1023 ); + duty_ms = (angle / 180.0) * 2.0 + 0.5; + time4_set_duty( 3, (duty_ms/20.0) * 1023 ); //delay_ms(500); } @@ -29,7 +29,7 @@ static void servo_deinit(void){ } static float servo_get_angle(void){ - return 180 - (duty_ms - 0.7) / 2.0 *180; + return 180 - (duty_ms - 0.5) / 2.0 *180; } /************ steper mode ******************/ @@ -327,6 +327,16 @@ void read_sys_param(void){ if( uarm.param.effect_angle_offset > 360 || isnan(uarm.param.effect_angle_offset) ){ uarm.param.effect_angle_offset = 0; } + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } + + p = bt_mac_addr; + read_size = 12; + read_addr = EEPROM_BT_MAC_ADDR; + for( ; read_size > 0; read_size-- ){ + *(p++) = eeprom_get_char(read_addr++); + } /* char l_str[20], r_str[20], b_str[20]; dtostrf( uarm.param.work_mode, 5, 4, l_str ); @@ -464,8 +474,8 @@ void pump_off(void){ uint8_t get_pump_status(void){ if( (PORTG & 0x10) == 0x00 ){ return 0; } - uint16_t value = getAnalogPinValue(63); -// DB_PRINT_STR( "ad:%d\r\n", value ); + uint16_t value = analogRead(A9); + if( value < 10){ return 0; }else if( value <= 70 ){ @@ -538,9 +548,8 @@ uint8_t get_limit_switch_status(void){ } uint8_t get_power_status(void){ - //uint16_t power_adc_value = getAnalogPinValue(59); - uint16_t power_adc_value = adc_read_value(59); - //DB_PRINT_STR( "%d\r\n", power_adc_value ); + + uint16_t power_adc_value = analogRead(A5); if( power_adc_value > 100 ){ return 1; @@ -598,3 +607,4 @@ void check_motor_positon(void){ } + diff --git a/src/uarm_peripheral.h b/src/uarm_peripheral.h index 98c949e..5ae4bfa 100755 --- a/src/uarm_peripheral.h +++ b/src/uarm_peripheral.h @@ -3,8 +3,8 @@ #include "uarm_common.h" -extern char hardware_version[8]; - +extern char hardware_version[8]; +extern char bt_mac_addr[13]; void end_effector_init(void); void end_effector_set_angle(float angle); @@ -45,8 +45,6 @@ uint8_t get_power_status(void); void check_motor_positon(void); - - - #endif + diff --git a/src/uarm_protocol.c b/src/uarm_protocol.c index 635ece6..4f965e9 100755 --- a/src/uarm_protocol.c +++ b/src/uarm_protocol.c @@ -252,7 +252,7 @@ static enum uarm_protocol_e uarm_cmd_g2201(char *payload){ // 69 || value<0 || value>1 ){ return false; } + if( value ){ + digitalWrite(pin, HIGH); + }else{ + digitalWrite(pin, LOW); + } + + } + return true; +} + +static bool uarm_cmd_m2241(char *payload){ + uint8_t rtn = 0; + int pin, value; + if( rtn = sscanf(payload, "N%dV%d", &pin, &value) < 2 ){ + DB_PRINT_STR( "sscanf %d\r\n", rtn ); + return false; + }else{ + if( pin<0 || pin>69 || value<0 || value>1 ){ return false; } + if( value ){ + pinMode(pin, OUTPUT); + }else{ + pinMode(pin, INPUT); + } + + } + return true; +} + static void uarm_cmd_m2400(uint8_t param){ // 69 ){ return false; } + int value = digitalRead(pin); + sprintf( tail_report_str, " V%d\n", value ); + } + return true; +} + +static bool uarm_cmd_p2241(char *payload){ + uint8_t rtn = 0; + int pin; + if( rtn = sscanf(payload, "N%d", &pin) < 1 ){ + DB_PRINT_STR( "sscanf %d\r\n", rtn ); + return false; + }else{ + if( pin<0 || pin>15 ){ return false; } + int value = analogRead(pin); + sprintf( tail_report_str, " V%d\n", value ); + } + return true; + +} + + static void uarm_cmd_p2242(void){ uint16_t refer_value[3] = {0}; get_refer_value(&refer_value); @@ -1165,10 +1240,18 @@ enum uarm_protocol_e uarm_execute_p_cmd(uint16_t cmd, char *line, uint8_t *char_ return UARM_CMD_OK; break; case 2240: - return UARM_CMD_OK; + if( uarm_cmd_p2240(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } break; case 2241: - return UARM_CMD_OK; + if( uarm_cmd_p2241(line) == true ){ + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } break; case 2242: uarm_cmd_p2242(); diff --git a/src/uarm_swift.c b/src/uarm_swift.c index 8476164..af5a8b1 100755 --- a/src/uarm_swift.c +++ b/src/uarm_swift.c @@ -2,6 +2,7 @@ struct uarm_state_t uarm = {0}; char hardware_version[8] = {0}; +char bt_mac_addr[13] = {0}; void uarm_swift_init(void){ //DB_PRINT_STR("uarm init\r\n"); @@ -34,6 +35,7 @@ void uarm_swift_init(void){ uart_printf( "api ver : %s\r\n", API_VERSION ); uart_printf( "work mode : %d\r\n", uarm.param.work_mode ); printString( "@1\n" ); + } void uarm_swift_tick_run(void){ diff --git a/src/uarm_swift.h b/src/uarm_swift.h index 883b204..9b1dd5b 100755 --- a/src/uarm_swift.h +++ b/src/uarm_swift.h @@ -4,12 +4,19 @@ #include "uarm_common.h" +#if defined(UARM_MINI) + #define DEVICE_NAME "SwiftPro mini" +#elif defined(UARM_2500) + #define DEVICE_NAME "SwiftPro 2500" +#else + #define DEVICE_NAME "SwiftPro" +#endif -#define DEVICE_NAME "SwiftPro" #define HARDWARE_VERSION hardware_version -#define SOFTWARE_VERSION "V4.2.0" -#define API_VERSION "V4.0.2" -#define BLE_UUID "FFFFFFFF" +#define SOFTWARE_VERSION "V4.3.0" +#define API_VERSION "V4.0.3" +#define BLE_UUID bt_mac_addr + void uarm_swift_init(void); void uarm_swift_tick_run(void); From c441396c3188932bd954efa7fbef16f8f0e89a57 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 30 Nov 2018 17:08:29 +0800 Subject: [PATCH 50/74] Update 2018-11-30 --- hex/uArmPro_V4.3.0_release_20181130.hex | 3791 +++++++++++++++++++++++ 1 file changed, 3791 insertions(+) create mode 100755 hex/uArmPro_V4.3.0_release_20181130.hex diff --git a/hex/uArmPro_V4.3.0_release_20181130.hex b/hex/uArmPro_V4.3.0_release_20181130.hex new file mode 100755 index 0000000..2300ecc --- /dev/null +++ b/hex/uArmPro_V4.3.0_release_20181130.hex @@ -0,0 +1,3791 @@ +:1000000065C5000084C5000082C5000080C50000F1 +:100010007EC500007CC500007AC5000078C50000E0 +:1000200076C500000C94EF5572C500000C941B457A +:100030006EC500006CC500006AC500000C94A75195 +:1000400066C500000C944D3062C5000060C500001C +:100050005EC500005CC500005AC500000C94D82F96 +:1000600056C500000C9449360C940B3750C500005F +:100070004EC500004CC500004AC5000048C5000040 +:1000800046C5000044C5000042C500000C949151D3 +:100090000C94E1350C94DD363AC5000038C50000FB +:1000A00036C5000034C5000032C5000030C5000070 +:1000B0002EC500000C9456512AC5000028C500002A +:1000C00026C5000024C500000C9421510C947935FC +:1000D0000C94AF361CC500001AC5000018C50000FE +:1000E00016C50000EC13401E401EFA130F14241412 +:1000F0003914401E4214401E5514401E64146E14E0 +:10010000C614401E401E401E7D149714B114131DCA +:10011000231D521D231D561D6D1D5C1D661D911D49 +:10012000981DA31DAE1DCD1DCF1DD21DD41DB62CF7 +:10013000CF2CE82C012D1A2D3D2D562DAF33B53384 +:10014000B833BB33BF33C733CF333C343C343C3498 +:10015000D733DA33E333EC333C343C343C343C3493 +:100160003C343C34F433FE330A3414341734203432 +:1001700029342F3499509C508B508F509550D35028 +:10018000A050A450AA50AE50B250B850BC50C0506D +:10019000D350C650CA50CE50084AD73B3BCE016E12 +:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE +:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD +:1001C000000000803F072C7AA5BA6CC590DA3B93FB +:1001D00065FC8BBC53F810FD3C5692834DBD879D4A +:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 +:1001F000CDB2D44EB93836A9020C50B991868808D0 +:100200003CA6AAAA2ABE000000803F0000407A1047 +:10021000F35A00A0724E18090010A5D4E80000E8B7 +:100220007648170000E40B54020000CA9A3B000015 +:1002300000E1F505000080969800000040420F00A4 +:100240000000A08601000000102700000000E80365 +:10025000000000006400000000000A000000000030 +:100260000100000000002C76D888DC674F0823DFEF +:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 +:10028000997696E8E6C28426EB898C9B62ED407CE9 +:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 +:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA +:1002B000FEF520E6B500D0ED902E030094357705CD +:1002C0000080841E080000204E0A000000C80C3385 +:1002D0003333330F986E12831141EF8D2114893B14 +:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 +:1002F000901DA4BBE424203284725E228100C9F1E7 +:1003000024ECA1E53D276364696E6F7073757858BE +:100310005B00000020002300260029002C002F0095 +:100320003200000100000301060109010D0A003D31 +:1003300000244E005D0D0A005B302E396A2E3230EB +:100340003136303732363A005D0D0A005B544C4F7F +:100350003A005D0D0A002C005B4739323A005D0D12 +:100360000A002C003A003330003238005B47005D51 +:100370000D0A00205300204600205400204D380074 +:10038000204D3900204D3500204D3400204D3300E4 +:10039000204D3200204D3100204D300020473934AF +:1003A00000204739330020473931002047393000D9 +:1003B00020473230002047323100204731390020B9 +:1003C0004731380020473137002047004733382E67 +:1003D000004738300047330047320047310047308C +:1003E000005B00290D0A00206D617820747261762F +:1003F000656C2C206D6D0020616363656C2C206D35 +:100400006D2F7365635E3200206D617820726174B8 +:10041000652C206D6D2F6D696E002C2073746570D6 +:100420002F6D6D007A00790078002028003D0024AF +:10043000002028686F6D696E672070756C6C2D6F79 +:1004400066662C206D6D290D0A002028686F6D6985 +:100450006E67206465626F756E63652C206D7365D1 +:1004600063290D0A2432373D002028686F6D696EBC +:1004700067207365656B2C206D6D2F6D696E290D7E +:100480000A2432363D002028686F6D696E67206649 +:100490006565642C206D6D2F6D696E290D0A2432FF +:1004A000353D00290D0A2432343D002028686F6D47 +:1004B000696E672064697220696E76657274206D5A +:1004C00061736B3A002028686F6D696E67206379ED +:1004D000636C652C20626F6F6C290D0A2432333DEA +:1004E00000202868617264206C696D6974732C2027 +:1004F000626F6F6C290D0A2432323D002028736F21 +:100500006674206C696D6974732C20626F6F6C293E +:100510000D0A2432313D0020287265706F727420FC +:10052000696E636865732C20626F6F6C290D0A24F5 +:1005300032303D00202861726320746F6C657261F7 +:100540006E63652C206D6D290D0A2431333D00202A +:10055000286A756E6374696F6E206465766961746C +:10056000696F6E2C206D6D290D0A2431323D0029F2 +:100570000D0A2431313D0020287374617475732095 +:100580007265706F7274206D61736B3A0020287011 +:10059000726F62652070696E20696E766572742C68 +:1005A00020626F6F6C290D0A2431303D0020286CC9 +:1005B000696D69742070696E7320696E76657274F6 +:1005C0002C20626F6F6C290D0A24363D00202873A1 +:1005D00074657020656E61626C6520696E76657207 +:1005E000742C20626F6F6C290D0A24353D00290D93 +:1005F0000A24343D00202864697220706F727420D0 +:10060000696E76657274206D61736B3A00290D0A0C +:1006100024333D0020287374657020706F7274203D +:10062000696E76657274206D61736B3A0020287371 +:100630007465702069646C652064656C61792C2038 +:100640006D736563290D0A24323D0020287374659B +:10065000702070756C73652C2075736563290D0AA5 +:1006600024313D0024303D0024242028766965771C +:10067000204772626C2073657474696E6773290D0C +:100680000A2423202876696577202320706172610F +:100690006D6574657273290D0A2447202876696593 +:1006A0007720706172736572207374617465290DAF +:1006B0000A2449202876696577206275696C642070 +:1006C000696E666F290D0A244E20287669657720A9 +:1006D0007374617274757020626C6F636B73290D33 +:1006E0000A24783D76616C756520287361766520F3 +:1006F0004772626C2073657474696E67290D0A24F1 +:100700004E783D6C696E6520287361766520737440 +:10071000617274757020626C6F636B290D0A2443DB +:100720002028636865636B2067636F6465206D6F65 +:100730006465290D0A245820286B696C6C20616C53 +:1007400061726D206C6F636B290D0A24482028723A +:10075000756E20686F6D696E67206379636C6529BB +:100760000D0A7E20286379636C652073746172744E +:10077000290D0A2120286665656420686F6C64294C +:100780000D0A3F202863757272656E742073746160 +:10079000747573290D0A6374726C2D782028726544 +:1007A000736574204772626C290D0A000D0A0048B7 +:1007B0006F6D696E67206661696C0050726F62656B +:1007C000206661696C0041626F72742064757269A1 +:1007D0006E67206379636C6500536F6674206C6983 +:1007E0006D69740048617264206C696D69740041C0 +:1007F0004C41524D3A20003E0D0A002C4C696D3A96 +:10080000002C52583A002C4275663A002C002C57A6 +:10081000506F733A002C002C4D506F733A003C44DB +:100820006F6F72003C436865636B003C416C6172A2 +:100830006D003C486F6D65003C486F6C64003C5235 +:10084000756E003C49646C65005D0D0A005265736D +:10085000746F72696E672064656661756C7473008D +:1008600050676D20456E6400436865636B20446F7C +:100870006F720044697361626C656400456E616209 +:100880006C65640043617574696F6E3A20556E6CD7 +:100890006F636B656400272448277C272458272032 +:1008A000746F20756E6C6F636B0052657365742096 +:1008B000746F20636F6E74696E7565005B00000075 +:1008C0002100240027002A002D0030003300010100 +:1008D0000000040107010A015D0D0A003A002C0026 +:1008E0005B5052423A000D0A00496E76616C6964B1 +:1008F0002067636F64652049443A00556E646566FD +:10090000696E656420666565642072617465004D7A +:100910006F64616C2067726F75702076696F6C61AF +:1009200074696F6E00486F6D696E67206E6F74201A +:10093000656E61626C656400416C61726D206C6F04 +:10094000636B004E6F742069646C650045455052BE +:100950004F4D2072656164206661696C2E2055736D +:10096000696E672064656661756C74730056616CAE +:100970007565203C2033207573656300536574747E +:10098000696E672064697361626C65640056616CAE +:100990007565203C203000496E76616C6964207377 +:1009A000746174656D656E7400426164206E756D6E +:1009B00062657220666F726D617400457870656360 +:1009C00074656420636F6D6D616E64206C65747412 +:1009D0006572006572726F723A20006F6B0D0A00CB +:1009E00000002200250028002B002E0031003400DA +:1009F00002010000050108010B01050505050705B9 +:100A000008080808020202020A0A0808040404048A +:100A100001010101010101010303030303030303B6 +:100A2000040707070C0C0C0C0C0C0C0C0202020245 +:100A300006060606060606060B0B0B0B0B0B0B0B2E +:100A400001021020200808102040102040800201E0 +:100A500002010804020101020408102040808040C5 +:100A600020100804020180040201804020100804C4 +:100A70000201080402010102040810204080010262 +:100A800004081020408000000A0B02090C0D0E081B +:100A90000703040100000000000000000000000047 +:100AA0000000000000000000000000000000000046 +:100AB0000000121110000000000000000000000003 +:100AC00000000000000000000000000011241FBE14 +:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D +:100AE000B2E0ECE9FAEE00E00BBF02C007900D9215 +:100AF000AE33B107D9F723E1AEE3B4E001C01D92F4 +:100B0000A837B207E1F70E94DE580C944C7578CAFA +:100B10002F923F924F925F926F927F928F929F920D +:100B2000AF92BF92CF92DF92EF92FF920F931F93FB +:100B3000CF93DF93CDB7DEB7C25DD1090FB6F8947E +:100B4000DEBF0FBECDBFC753DF4F99838883C95C1B +:100B5000D04089E3E0E0F3E1DF011D928A95E9F7F7 +:100B60008AE0E9E3F3E1A1E0B3E101900D928A9517 +:100B7000E1F7FE01EB55FF4F1082C154DF4F1982A0 +:100B80001882CF5BD040C554DF4F19821882CB5BEF +:100B9000D040CB53DF4F1882C55CD040CA54DF4FE2 +:100BA0001882C65BD040C654DF4F1882CA5BD04063 +:100BB000E45AF109C855DF4FF983E883C85AD04099 +:100BC0009E012F5A3F4FC655DF4F39832883CA5A9B +:100BD000D040CE01CD96C455DF4F99838883CC5A3F +:100BE000D040D9011896C553DF4FB983A883CB5C99 +:100BF000D040CB55DF4F8881C55AD040C753DF4F17 +:100C0000E881F981C95CD040E80FF11D1081112302 +:100C100011F40C9423159FEB910F9A3110F00C9462 +:100C2000321E8F5FCB55DF4F8883C55AD040AE014F +:100C30004F555F4FBE016B557F4FC753DF4F8881C4 +:100C40009981C95CD0400E945E27882311F40C94DE +:100C5000341ECF55DF4FC880D980EA80FB80C15A4F +:100C6000D040C701B6010E945A6E0E94C76BCF5395 +:100C7000DF4F688379838A839B83C15CD040CF53E5 +:100C8000DF4F28803980C15CD040B10180E090E026 +:100C90000E94F36B9B01AC01C701B6010E94796A07 +:100CA00020E030E048EC52E40E94AC6D4B015C0166 +:100CB00020E030E0A9010E94716D20E030E040E0CA +:100CC0005FE387FD05C0C501B4010E947A6A04C0D4 +:100CD000C501B4010E94796A0E94C26BCE54DF4FF5 +:100CE00079836883C25BD0401D3411F40C948E0E5E +:100CF000103511F40C942A0F173411F00C94D913F9 +:100D0000CB55DF4F8881C55AD040C753DF4FE881AC +:100D1000F981C95CD040E80FF11DCF01FAE92F1627 +:100D2000F8E03F0609F416C158F434ED231637E015 +:100D3000330699F0A9E92A16A8E03A06D1F13BC595 +:100D4000BCE92B16B8E03B0609F43DC2EDE92E16CE +:100D5000E8E03E0609F42DC32EC51A82198221E06F +:100D600030E02C0F3D1F3F932F9329EC33E03F934E +:100D70002F939F938F930E94206F0F900F900F904F +:100D80000F900F900F90181619060CF037C3898139 +:100D90009A819093670E8093660E11E01093390D3F +:100DA0008091D00C81110AC50E945C3A1093D00C3E +:100DB00005C58E010B5E1F4F1F930F939E01275D8C +:100DC0003F4F3F932F93C355DF4F3881CD5AD040CB +:100DD0003F93C455DF4FA881CC5AD040AF93C5553F +:100DE000DF4FB881CB5AD040BF93C655DF4FE88163 +:100DF000CA5AD040EF9329E132E03F932F939F935B +:100E00008F930E94206F0FB6F894DEBF0FBECDBF48 +:100E100004970CF4F3C2EF961CAE1DAE1EAE1FAECF +:100E2000EF97E5961CAE1DAE1EAE1FAEE597AB96D6 +:100E30001CAE1DAE1EAE1FAEAB97A1961CAE1DAE76 +:100E40001EAE1FAEA1978CE0C855DF4FA881B981B7 +:100E5000C85AD0401D928A95E9F7AE0145585F4FB8 +:100E600060E070E0CE018F5A9F4F0E945E2788237A +:100E700009F4A4C4AE014F585F4F60E070E0CE01AA +:100E8000CD960E945E27882309F498C4AE01495983 +:100E90005F4F60E070E0CE0189960E945E27882354 +:100EA00009F48CC4AE01435A5F4F60E070E0C801A2 +:100EB0000E945E27882309F481C420E030E044EBDF +:100EC00052E4E5966CAD7DAD8EAD9FADE5970E9489 +:100ED000796A21EE3EE245E652E40E945A6B6B01CC +:100EE0007C01E5966CAF7DAF8EAF9FAFE5970E941A +:100EF000576BEF968CAC9DACAEACBFACEF97A50139 +:100F000094010E94AC6D69837A838B839C83C701B3 +:100F1000B6010E940F6E9B01AC01C501B4010E9495 +:100F2000AC6D6D837E838F839887AB968CAD9DADC2 +:100F3000AEADBFADAB9789879A87AB87BC87A196CB +:100F40002CAD3DAD4EAD5FADA19700E0BE016F5F32 +:100F50007F4F2CC4E5961CAE1DAE1EAE1FAEE597AE +:100F6000AB961CAE1DAE1EAE1FAEAB97E1E0F0E03F +:100F7000EC0FFD1FFF93EF938E010B5E1F4F1F932E +:100F80000F932E01FBE74F0E511C5F924F9222E40C +:100F900032E03F932F939F938F930E94206F0FB661 +:100FA000F894DEBF0FBECDBF03970CF427C2AE018D +:100FB0004F585F4F60E070E0C8010E945E278823B1 +:100FC00009F4FCC3AE0149595F4F60E070E0CE0107 +:100FD00001960E945E27882309F4F0C3A1961CAEF7 +:100FE0001DAE1EAE1FAEA19765961CAE1DAE1EAE09 +:100FF0001FAE659721961CAE1DAE1EAE1FAE21978B +:101000003E0139E2630E711C8CE0D3011D928A957A +:10101000E9F76091280D7091290D80912A0D90912A +:101020002B0D0E94F56BC255DF4F688379838A834D +:101030009B83CE5AD0406091240D7091250D8091F4 +:10104000260D9091270D0E94F56BC153DF4F6883E9 +:1010500079838A839B83CF5CD0406091200D70910F +:10106000210D8091220D9091230D0E94F56BFE01C0 +:10107000FD964F019E012F5A3F4F5901DE01A35AA1 +:10108000BF4F6D01C255DF4FE880F9800A811B8197 +:10109000CE5AD040C153DF4F288139814A815B81CC +:1010A000CF5CD0400E943B42F2018081918181302F +:1010B000910509F44BC0DCF5892B09F0ACC120E0A7 +:1010C00030E044EB52E4E5966CAD7DAD8EAD9FAD66 +:1010D000E5970E94796A7B018C01E5966CAF7DAF44 +:1010E0008EAF9FAFE59765962CAD3DAD4EAD5FAD34 +:1010F0006597A1966CAD7DAD8EAD9FADA197DE01DC +:10110000D1964D01FE01BD965F0118976D010E94B9 +:101110005641A401B501C6010E94A93EAB962CAD73 +:101120003DAD4EAD5FADAB9700E0B6014AC0823039 +:101130009105F9F0039709F06EC1E5966CAD7DADB0 +:101140008EAD9FADE5970E94183B38C32196ECAC5D +:10115000FDAC0EAD1FAD219765962CAD3DAD4EADEE +:101160005FAD6597E5966CAD7DAD8EAD9FADE597B6 +:1011700012C02196ECACFDAC0EAD1FAD2197E596EB +:101180002CAD3DAD4EAD5FADE597A1966CAD7DAD9F +:101190008EAD9FADA197FE01F1964F01DE019D96A8 +:1011A0005D0163010E945641A401B501C3010E9483 +:1011B000A93EAB962CAD3DAD4EAD5FADAB9700E01B +:1011C000B30180E0F4C29E012B5E3F4F3F932F930B +:1011D0008E01075D1F4F1F930F93C355DF4FB881DB +:1011E000CD5AD040BF93C455DF4FE881CC5AD04090 +:1011F000EF93C555DF4FF881CB5AD040FF93C655CA +:10120000DF4F2881CA5AD0402F932AE532E03F931E +:101210002F939F938F930E94206F0FB6F894DEBF99 +:101220000FBECDBF04970CF4E9C0EF961CAE1DAE07 +:101230001EAE1FAEEF97E5961CAE1DAE1EAE1FAEE6 +:10124000E597AB961CAE1DAE1EAE1FAEAB97A1963A +:101250001CAE1DAE1EAE1FAEA197AE0145585F4F2E +:1012600060E070E0CE018F5A9F4F0E945E27882376 +:1012700009F4A4C2AE014F585F4F60E070E0CE01A8 +:10128000CD960E945E27882309F498C2AE01495981 +:101290005F4F60E070E0C8010E945E27882309F478 +:1012A0008DC2AE01435A5F4F60E070E0CE014596BB +:1012B0000E945E27882309F481C26091280D7091F5 +:1012C000290D80912A0D90912B0D0E94F56BC2552E +:1012D000DF4F688379838A839B83CE5AD0406091A5 +:1012E000240D7091250D8091260D9091270D0E945F +:1012F000F56B2B013C016091200D7091210D8091C7 +:10130000220D9091230D0E94F56BFE0139964F013D +:101310009E012B5F3F4F5901DE0111966D01C255B1 +:10132000DF4FE880F9800A811B81CE5AD040A301AB +:1013300092010E94523FA401B501C6010E94A93E3C +:10134000EF962CAD3DAD4EAD5FADEF9769817A81E3 +:101350008B819C810E947A6A69837A838B839C83C8 +:10136000E5962CAD3DAD4EAD5FADE5976D817E81CF +:101370008F8198850E947A6A6D837E838F83988798 +:10138000AB962CAD3DAD4EAD5FADAB9769857A8523 +:101390008B859C850E947A6A69877A878B879C8770 +:1013A000A1962CAD3DAD4EAD5FADA19700E0B6016D +:1013B000FDC19E01235A3F4F3F932F938E01095940 +:1013C0001F4F1F930F937E01B1E7EB0EF11CFF92AD +:1013D000EF926E01EBE7CE0ED11CDF92CF9229E1A6 +:1013E00032E03F932F939F938F930E94206F0FB60D +:1013F000F894DEBF0FBECDBF049784F41F9281E046 +:101400008F938DE092E09F938F930E949D1F0F908A +:101410000F900F900F9082E390E0D2C1C356DF4F40 +:10142000188219821A821B82CD59D040C756DF4FCD +:10143000188219821A821B82C959D040CB56DF4FBD +:10144000188219821A821B82C559D040CF56DF4FAD +:10145000188219821A821B82C159D0408CE0C6556D +:10146000DF4FA881B981CA5AD0401D928A95E9F709 +:10147000AE0143565F4F60E070E0C6010E945E27F8 +:10148000882309F49BC1AE0147565F4F60E070E0CE +:10149000C7010E945E27882309F490C1AE014B5614 +:1014A0005F4F60E070E0C8010E945E27882309F466 +:1014B00085C1AE014F565F4F60E070E0CE01835AA8 +:1014C0009F4F0E945E27882309F478C1C357DF4FDE +:1014D000188219821A821B82CD58D040C757DF4F1D +:1014E000188219821A821B82C958D040CB57DF4F0D +:1014F000188219821A821B82C558D0406091280D2B +:101500007091290D80912A0D90912B0D0E94F56B01 +:10151000C255DF4F688379838A839B83CE5AD0403C +:101520006091240D7091250D8091260D9091270DCD +:101530000E94F56B2B013C016091200D7091210DF3 +:101540008091220D9091230D0E94F56BFE01EB57C7 +:10155000FF4F4F019E0127573F4F5901DE01A3570F +:10156000BF4F6D01C255DF4FE880F9800A811B81B2 +:10157000CE5AD040A30192010E943B426091280DB7 +:101580007091290D80912A0D90912B0D0E94F56B81 +:10159000C153DF4F688379838A839B83CF5CD040BC +:1015A0006091240D7091250D8091260D9091270D4D +:1015B0000E94F56B2B013C016091200D7091210D73 +:1015C0008091220D9091230D0E94F56BC553DF4F42 +:1015D00088809980CB5CD040E1E5F0E0EC0FFD1F06 +:1015E0003496C255DF4FF983E883CE5AD0405F016D +:1015F0009E012F5A3F4F6901C153DF4FE880F980A8 +:101600000A811B81CF5CD040A30192010E94523F0E +:10161000C553DF4F48815981CB5CD040C255DF4F65 +:1016200068817981CE5AD040C6010E94A93E659654 +:101630006CAD7DAD8EAD9FAD65976996CCACDDACE4 +:10164000EEACFFAC69979B01AC010E94AC6D4B0105 +:101650005C01A7019601C701B6010E94AC6D9B0118 +:10166000AC01C501B4010E947A6A0E94196EC3568A +:10167000DF4F288139814A815B81CD59D0400E945A +:101680007A6A6B017C01C356DF4F688379838A8352 +:101690009B83CD59D040C756DF4F288139814A817D +:1016A0005B81C959D040CB57DF4F688179818A81EE +:1016B0009B81C558D0400E947A6A21EE3EE245E601 +:1016C00052E40E945A6B2B013C010E94576B9B0114 +:1016D000AC01C701B6010E94AC6D4B015C0165967F +:1016E0006CAF7DAF8EAF9FAF6597C301B2010E9413 +:1016F0000F6E9B01AC01C701B6010E94AC6D6996EB +:101700006CAF7DAF8EAF9FAF6997CB56DF4F28810F +:1017100039814A815B81C559D0406D966CAD7DADF4 +:101720008EAD9FAD6D970E947A6A6D966CAF7DAF5E +:101730008EAF9FAF6D978E01035C1F4F24E045E095 +:10174000C501B4010E94FE6769966CAD7DAD8EAD9A +:101750009FAD69970451110924E045E00E94FE679E +:101760006D966CAD7DAD8EAD9FAD6D970451110939 +:1017700024E045E00E94FE67C356DF4F688179810F +:101780008A819B81CD59D0400451110924E045E064 +:101790000E94FE67CF56DF4F288139814A815B81E5 +:1017A000C159D04000E0BE016F5A7F4F81E00E94D6 +:1017B000045290E005C081E090E002C080E090E03B +:1017C0009C01215031092230310510F00C949E1EED +:1017D00038E22316310409F445C280F594E1291654 +:1017E000310498F4A1E12A16310408F079C1B4E07B +:1017F0002B16310409F479C008F4F4C0FAE02F166E +:10180000310409F45EC00C94401E2CE12216310410 +:1018100009F457C038F486E12816310408F4BEC133 +:101820000C94401E9EE12916310409F44AC0A6E238 +:101830002A16310409F4D6C00C94401EBDE32B16C1 +:10184000310409F4FEC110F5F5E32F16310409F453 +:101850004CC060F43BE22316310409F4B6C181E3C5 +:101860002816310409F4B1C10C94401E9CE32916DA +:10187000310410F00C94401ECF53DF4F8881C15CBF +:10188000D04086538093071399E0D5C1ACE52A1662 +:10189000310460F4BAE52B16310408F03CC1E0E5F0 +:1018A0002E16310409F4ACC00C94401EFCE52F1632 +:1018B000310439F02FE52216310408F462C10C948A +:1018C000401ECE54DF4F88819981C25BD040892B66 +:1018D00011F00C94541EC654DF4F9881CA5BD0405F +:1018E000992309F450C00C94361EACE12A16310439 +:1018F000D1F148F4E4E02E16310481F0FAE02F161D +:101900003104E9F01FC02EE12216310409F445C06C +:1019100035E32316310409F463C014C081E010C01C +:10192000FFE12F16310408F04FC02AE022163104DF +:1019300079F481E0C654DF4F8883CA5BD04082E0EF +:1019400080930013C255DF4F1882CE5AD04097C102 +:101950003CE12316310409F09CC191E0C654DF4FED +:101960009883CA5BD040CE54DF4FA881B981C25B57 +:10197000D040109731F01A9711F00C94401E84E07B +:1019800015C083E013C0EEE12E16310449F6B1E034 +:10199000C654DF4FB883CA5BD040CE54DF4FE881D6 +:1019A000F981C25BD040309749F485E08093001301 +:1019B000C255DF4F1882CE5AD04076C13A9711F007 +:1019C0000C94401E86E0F2CF85E32816310411F016 +:1019D0000C94691EF1E0C654DF4FF883CA5BD04017 +:1019E00087E0AECFC654DF4F9881CA5BD0409111DB +:1019F0000C94361EA2E0C654DF4FA883CA5BD040C9 +:101A0000B2E02B16310421F160F421143104E1F02D +:101A10002A94232809F02DC181E080930113A1E0CD +:101A200074C026E222163104E9F030E523163104B1 +:101A300009F452C083E02816310409F01AC183E08A +:101A400080930113E1E00FC11092011391E0F3C004 +:101A500082E080930113B1E0C255DF4FB883CE5AC4 +:101A6000D0400DC1CE54DF4F28813981C25BD040B8 +:101A70002E31310539F178F42431310511F00C940F +:101A8000401E84E08093011391E0C255DF4F98839C +:101A9000CE5AD04009C1CE54DF4F88819981C25BB4 +:101AA000D0408832910599F0C29711F00C94401EF5 +:101AB00087E080930113E1E0C255DF4FE883CE5AFF +:101AC000D040F2C085E080930113A1E054C086E0CD +:101AD00080930113B1E0C0C088E080930113C9C0B6 +:101AE00022E12216310441F033E12316310449F09A +:101AF0001092051382E063C081E08093051392E0A9 +:101B00009AC082E080930513A2E0C255DF4FA883FC +:101B1000CE5AD040B4C0CE54DF4FE881F981C25BC9 +:101B2000D040EF2BB9F4FAE52F16310449F41092A6 +:101B3000041323E0C255DF4F2883CE5AD040B4C0EF +:101B400081E08093041333E0C255DF4F3883CE5ACF +:101B5000D040AAC0CE54DF4F88819981C25BD0406B +:101B60000A9711F00C94401E9AE52916310411F4DD +:101B70000C94401EA4E0C255DF4FA883CE5AD0403B +:101B800093C0BDE52B16310429F481E08093021344 +:101B9000E5E069C010920213F5E06CC024E1221662 +:101BA000310451F481E08093031336E0C255DF4FD6 +:101BB0003883CE5AD04063C01092031386E0C255DA +:101BC000DF4F8883CE5AD0405AC0C654DF4F988129 +:101BD000CA5BD04091110C94361EA1E32A16310441 +:101BE00079F410920613B8E0C255DF4FB883CE5A8D +:101BF000D040E3E0C654DF4FE883CA5BD04054C016 +:101C0000CE54DF4F28813981C25BD0402A30310564 +:101C100011F00C94401E81E08093061338E0C25509 +:101C2000DF4F3883CE5AD04083E0C654DF4F8883DD +:101C3000CA5BD04039C0C255DF4F9883CE5AD040DE +:101C40001EC0CE54DF4FA881B981C25BD040AB2B00 +:101C500011F00C94401EBAE0C255DF4FB883CE5A43 +:101C6000D04022C0E7E0C255DF4FE883CE5AD040D3 +:101C700006C0F1E0C255DF4FF883CE5AD040CE54B3 +:101C8000DF4F28813981C25BD040232B69F00C944F +:101C9000671EC255DF4F1882CE5AD04031E0C6547D +:101CA000DF4F3883CA5BD040C554DF4FE881F981EC +:101CB000CB5BD040CF01A0E0B0E0C255DF4F088041 +:101CC000CE5AD04004C0B695A795979587950A94AB +:101CD000D2F780FF03C085E10C949E1E81E090E066 +:101CE000A0E0B0E0C255DF4F0880CE5AD04004C01B +:101CF000880F991FAA1FBB1F0A94D2F7C554DF4F44 +:101D000028813981CB5BD040282B392BC554DF4F3C +:101D100039832883CB5BD0400C94F905CE54DF4F38 +:101D200088819981C25BD040892B11F00C94671E89 +:101D3000CB55DF4F8881C55AD040C753DF4F6881EC +:101D40007981C95CD040680F711DAE014B555F4F62 +:101D5000CF53DF4F88819981C15CD0400E942A28EF +:101D60009C01215031092230310510F00C949E1E47 +:101D700096E02916310428F4A3E02A16310490F0E5 +:101D800026C0B8E02B16310410F40C94401EEAE093 +:101D90002E16310408F440C0FEE12F16310411F074 +:101DA0000C94401E22E02216310461F03EE123161D +:101DB000310441F0232809F046C081E080930813E4 +:101DC0008BE032C082E0809308139BE036C0A4E031 +:101DD0002A16310471F0B5E02B163104A1F081E030 +:101DE00080930A13ECE0C255DF4FE883CE5AD0400F +:101DF000AFC482E080930A13FCE0C255DF4FF88342 +:101E0000CE5AD040A5C410920A132CE0C255DF4F21 +:101E10002883CE5AD0409CC439E02316310451F0B7 +:101E200082E0809309138DE0C255DF4F8883CE5A3C +:101E3000D0408EC4109209139DE0C255DF4F9883A5 +:101E4000CE5AD04085C4ABE0C255DF4FA883CE5AEE +:101E5000D0407EC4CE54DF4F28813981C25BD04050 +:101E6000232B11F00C94671ECB55DF4F8881C55A88 +:101E7000D040C753DF4FE881F981C95CD040E80FFB +:101E8000F11D37EB231638E0330609F46EC308F072 +:101E900061C19CE9291698E0390609F49CC108F053 +:101EA00078C0B9E92B16B8E03B0609F48EC108F0FA +:101EB00061C0F8E92F16F8E03F0609F03FC484E15D +:101EC0001E01A9E22A0E311CF101282F11922A9538 +:101ED000E9F7DE015596CA55DF4FB983A883C65A84 +:101EE000D040E82F1D92EA95E9F7C855DF4FA88149 +:101EF000B981C85AD0401D928A95E9F780E090E0F8 +:101F00000E94EE432B013C0181E090E00E94EE43F1 +:101F10004B015C0182E090E00E94EE436B017C018A +:101F2000810124E045E0C301B2010E94FE67045133 +:101F3000110924E045E0C501B4010E94FE67045187 +:101F4000110924E045E0C701B6010E94FE67C955AA +:101F5000DF4FB881C75AD040BF93CA55DF4FE881E1 +:101F6000C65AD040EF933F922F921F930F9383E86E +:101F700092E0C2C32AE9221628E0320609F428C1F9 +:101F80003BE9231638E0330609F0D8C38FE992E025 +:101F900024C18EE9281688E0380609F42AC108F41D +:101FA00021C1ACEA2A16A8E03A0609F43DC2BDEA0E +:101FB0002B16B8E03B0609F0C1C3A1961CAE1DAEBE +:101FC0001EAE1FAEA19765961CAE1DAE1EAE1FAE17 +:101FD000659721961CAE1DAE1EAE1FAE219784E103 +:101FE0001E0199E2290E311CD101E82F1D92EA95BC +:101FF000E9F79E012B5E3F4FCA55DF4F3983288397 +:10200000C65AD040D901E82F1D92EA95E9F7C85584 +:10201000DF4FA881B981C85AD0401D928A95E9F74F +:1020200080E090E00E94EE43CE54DF4F68837983D6 +:102030008A839B83C25BD04081E090E00E94EE43A4 +:10204000CF53DF4F688379838A839B83C15CD04001 +:1020500082E090E00E94EE4320E030E044EB52E466 +:102060000E94796A2B013C01FE01FD964F019E0101 +:102070002F5A3F4F5901CE01835A9F4F6C01830164 +:102080007201CF53DF4F288139814A815B81C15C66 +:10209000D040CE54DF4F688179818A819B81C25BB9 +:1020A000D0400E945641A401B501C6010E94A93E3C +:1020B000A1966CAD7DAD8EAD9FADA1976596CCAC74 +:1020C000DDACEEACFFAC65979B01AC010E94AC6D42 +:1020D0004B015C01A7019601C701B6010E94AC6DDE +:1020E0009B01AC01C501B4010E947A6A0E94196E7D +:1020F000810124E045E00E94FE6720E030E044EBEF +:1021000052E4C301B2010E947A6A0451110924E029 +:1021100045E00E94FE6721966CAD7DAD8EAD9FAD12 +:1021200021970451110924E045E00E94FE671F93A6 +:102130000F93C955DF4FB881C75AD040BF93CA55D6 +:10214000DF4FE881C65AD040EF933F922F9281EC47 +:1021500092E0D2C220EC221628E0320609F431C205 +:10216000D0F489EB281688E0380609F415C208F483 +:1021700008C2AAEB2A16A8E03A0609F415C2BBEB7E +:102180002B16B8E03B0609F0D9C28091020185FB0D +:10219000882780F914C222EC221628E0320609F4BE +:1021A00081C208F450C283EC281688E0380609F48E +:1021B0008BC290E6291699E0390609F0BFC28091DA +:1021C000070D8F938091060DA5C281E992E005C0AD +:1021D00088E69EE002C086EA92E09F938F938AE9A8 +:1021E00092E09BC28EE394E09F938F938DEA92E0FE +:1021F00094C280818E3409F04AC2818190ED292EEB +:10220000280E93E0921508F442C2AB961CAE1DAEA8 +:102210001EAE1FAEAB97A1961CAE1DAE1EAE1FAE7E +:10222000A19765961CAE1DAE1EAE1FAE659784E1EC +:10223000C455DF4FA881B981CC5AD040E82F1D92F8 +:10224000EA95E9F7FE01B996DF01282F1D922A953C +:10225000E9F77497DF01282F1D922A95E9F7C855F1 +:10226000DF4FA881B981C85AD0401D928A95E9F7FD +:102270006091EE127091EF128091F0129091F11234 +:102280000E94F56BCE54DF4F688379838A839B83EA +:10229000C25BD0406091EA127091EB128091EC1217 +:1022A0009091ED120E94F56B2B013C016091E612BA +:1022B0007091E7128091E8129091E9120E94F56BFB +:1022C000FE01EF5AFF4F4F019E01235A3F4F590124 +:1022D000DE01A959BF4F6D01CE54DF4FE880F98070 +:1022E0000A811B81C25BD040A30192010E943B4244 +:1022F00020E030E044EB52E465966CAD7DAD8EADF0 +:102300009FAD65970E947A6A65966CAF7DAF8EAF80 +:102310009FAF65978091060D9091070D04970297E6 +:1023200048F48090620E9090630EA090640EB0907E +:10233000650E24C020E030E040E05FE360910002E1 +:102340007091010280910202909103020E94796AC9 +:1023500020E030E040E05FE30E94AC6D20E030E040 +:1023600044E353E40E94AC6D9B01AC0160E070E07B +:1023700084E393E40E94796A4B015C01AB966CADF7 +:102380007DAD8EAD9FADAB978E01035C1F4F24E0FA +:1023900045E00E94FE677E01B9E2EB0EF11CA196BA +:1023A0006CAD7DAD8EAD9FADA197870124E045E07A +:1023B0000E94FE676E01E5E1CE0ED11C65966CAD04 +:1023C0007DAD8EAD9FAD6597860124E045E00E940E +:1023D000FE670451110924E045E0C501B4010E94E3 +:1023E000FE67F2E02F16B1F023E02216B1F031E0E3 +:1023F000231619F0DF92CF92F2CEC355DF4F8881BA +:10240000CD5AD0408F93C455DF4F9881CC5AD040DD +:102410009F93E5CEFF92EF92E2CEA1E0B0E0AC0F49 +:10242000BD1FBF93AF93DBCEA1961CAE1DAE1EAEFB +:102430001FAEA19765961CAE1DAE1EAE1FAE659772 +:1024400021961CAE1DAE1EAE1FAE219784E11E016B +:10245000B9E22B0E311CF101282F11922A95E9F7D0 +:10246000DE015596CA55DF4FB983A883C65AD040BE +:10247000E82F1D92EA95E9F7C855DF4FA881B98189 +:10248000C85AD0401D928A95E9F780E090E00E94FA +:10249000EE432B013C0181E090E00E94EE43CE54DC +:1024A000DF4F688379838A839B83C25BD04082E05D +:1024B00090E00E94EE4320E030E044EB52E40E94C2 +:1024C000796AFE01FD964F019E012F5A3F4F590137 +:1024D000DE01A35ABF4F6D017B018C01CE54DF4F4B +:1024E000288139814A815B81C25BD040C301B2013E +:1024F0000E945641A401B501C6010E94A93EA196C1 +:102500006CAD7DAD8EAD9FADA197810124E045E01E +:102510000E94FE6765966CAD7DAD8EAD9FAD6597F3 +:102520000451110924E045E00E94FE6721966CAD3C +:102530007DAD8EAD9FAD21970451110924E045E09A +:102540000E94FE671F930F93C955DF4FF881C75A4A +:10255000D040FF93CA55DF4F2881C65AD0402F93F1 +:102560003F922F9283EB92E0C7C0A49B11C08FE3F0 +:102570000E9402518A30910558F08734910530F05D +:1025800009C0479905C00898009904C082E017C0A7 +:1025900080E015C081E013C082B38695869586954C +:1025A00091E0892781700BC08BE30E94025121E0EA +:1025B0008536910508F420E01F922F93ACC01F923E +:1025C000A9C081E090E08C0F9D1F9F938F938FECAB +:1025D00092E09F938F93FF93EF930E94206F0F9051 +:1025E0000F900F900F900F900F90181619060CF087 +:1025F00041C029813A812634310508F048C0F901EB +:10260000EA57F54F8491F901E05CF54F1491F90117 +:10261000E650F64F0491002391F081110E947E5004 +:10262000E02FF0E0EE0FFF1FEE5EFC4FA591B4919E +:10263000EC911E2381E090E021F480E002C080E074 +:1026400090E09F9367C0A1E0B0E0AC0FBD1FBF93C7 +:10265000AF938FEC92E09F938F93FF93EF930E9441 +:10266000206F0F900F900F900F900F900F901816F3 +:10267000190684F01F9281E08F938DE092E09F9382 +:102680008F930E949D1F0F900F900F900F9082E3E9 +:1026900090E056C089819A8180319105C0F70E94EF +:1026A0000251CFCF8091450D8F938091440D8F9330 +:1026B0008091430D8F938091420D8F938091410DB6 +:1026C0008F938091400D15C080E090E00E949C4364 +:1026D000182F092F81E090E00E949C43F82EE92EEC +:1026E00082E090E00E949C43EF92FF920F931F9331 +:1026F0009F938F9383ED92E09F938F9384ED9CE063 +:102700009F938F930E94F26E0FB6F894DEBF0FBEB8 +:10271000CDBF11C08F9386E793E09F938F9384ED95 +:102720009CE09F938F930E94F26E0F900F900F90FA +:102730000F900F900F9080E090E002C081E090E059 +:102740009C01215031092230310510F00C949E1E5D +:10275000C554DF4FE881F981CB5BD040CF01A0E0C9 +:10276000B0E0C255DF4F0880CE5AD04004C0B695C5 +:10277000A795979587950A94D2F780FDACCA81E01A +:1027800090E0A0E0B0E0C255DF4F0880CE5AD040C4 +:1027900004C0880F991FAA1FBB1F0A94D2F7E82B09 +:1027A000F92BC554DF4FF983E883CB5BD0400C9401 +:1027B000F905812F110F990BAA0BBB0BFC01E654F5 +:1027C000F109E531F10510F00C94401E8827EE5810 +:1027D000FF4F8F4F0C94BF6EC0920B13D0920C130F +:1027E000E0920D13F0920E13C255DF4F1882CE5AAD +:1027F000D040D2C0C0920F13D0921013E0921113A8 +:10280000F0921213CB53DF4FF881C55CD040F160DA +:10281000CB53DF4FF883C55CD04021E04FC0C0925E +:102820001313D0921413E0921513F0921613CB5396 +:10283000DF4F3881C55CD0403260CB53DF4F3883E7 +:10284000C55CD04082E053C0C0921713D0921813D9 +:10285000E0921913F0921A13CB53DF4F9881C55CA5 +:10286000D0409460CB53DF4F9883C55CD040A3E049 +:1028700058C0CF53DF4FB881C15CD040B0931B1319 +:10288000E4E069C0C701B6010E94C26B60931C13EB +:1028900070931D1380931E1390931F13F5E0C25580 +:1028A000DF4FF883CE5AD04077C0C0922013D09229 +:1028B0002113E0922213F092231326E0C255DF4F3A +:1028C0002883CE5AD04068C0C0922413D0922513DA +:1028D000E0922613F092271337E059C0C0922813D4 +:1028E000D0922913E0922A13F0922B1388E0C2555C +:1028F000DF4F8883CE5AD0404FC0C0922D13D09264 +:102900002E13E0922F13F0923013CA54DF4F9881A8 +:10291000C65BD0409160CA54DF4F9883C65BD040FD +:10292000AAE0C255DF4FA883CE5AD04035C0C0922E +:102930003113D0923213E0923313F0923413CA540D +:10294000DF4FB881C65BD040B260CA54DF4FB88356 +:10295000C65BD040EBE0C255DF4FE883CE5AD04093 +:102960001BC0C0923513D0923613E0923713F09209 +:102970003813CA54DF4FF881C65BD040F460CA54A4 +:10298000DF4FF883C65BD0402CE098CF39E0C255CA +:10299000DF4F3883CE5AD040C255DF4F8881CE5AA0 +:1029A000D040082FC154DF4FE881F981CF5BD04080 +:1029B000CF01A0E0B0E0C255DF4F0880CE5AD04032 +:1029C00004C0B695A795979587950A94D2F780FF8E +:1029D00002C00C94381E81E693E0A0E0B0E0C2553E +:1029E000DF4F0880CE5AD04004C0B695A795979582 +:1029F00087950A94D2F780FF0BC020E030E0A90150 +:102A0000C701B6010E94536B87FF02C00C943A1EA7 +:102A100081E090E0A0E0B0E004C0880F991FAA1FF9 +:102A2000BB1F0A95D2F7C154DF4F28813981CF5B94 +:102A3000D040282B392BC154DF4F39832883CF5BFB +:102A4000D0400C94F905CA54DF4F3881C65BD040A2 +:102A5000332369F0C654DF4F8881CA5BD0408111AF +:102A600006C092E0C654DF4F9883CA5BD040C15481 +:102A7000DF4FA881CF5BD040A5FF0FC080911C1312 +:102A800090911D13A0911E13B0911F138038964989 +:102A9000A849B10514F00C943C1E809102138130BA +:102AA00091F4C654DF4FF881CA5BD040F23009F090 +:102AB00040C0C154DF4F2881CF5BD04020FD02C011 +:102AC0000C94461E36C080913A13811132C0C15415 +:102AD000DF4F3881CF5BD04030FF1BC080910313A4 +:102AE000813039F523E333E34BEC51E460910B1370 +:102AF00070910C1380910D1390910E130E94AC6D88 +:102B000060930B1370930C1380930D1390930E131B +:102B100010C08091471390914813A0914913B09130 +:102B20004A1380930B1390930C13A0930D13B0933F +:102B30000E13C154DF4F88819981CF5BD04090FD47 +:102B400010C08091431390914413A0914513B0910C +:102B500046138093281390932913A0932A13B093BC +:102B60002B13809100138130B9F4C154DF4F988149 +:102B7000CF5BD04096FD03C08CE10C949E1EC154E7 +:102B8000DF4FA881B981CF5BD040AF7BC154DF4F0D +:102B9000B983A883CF5BD04080910513882331F19E +:102BA000813091F4B1E0C753DF4FB883C95CD040A6 +:102BB000CE54DF4F1882C25BD040E2E0C255DF4FF7 +:102BC000E883CE5AD04023C0C753DF4F1882C95C78 +:102BD000D040F2E0CE54DF4FF883C25BD04021E01A +:102BE000C255DF4F2883CE5AD04011C032E0C753C0 +:102BF000DF4F3883C95CD04081E0CE54DF4F8883FB +:102C0000C25BD040C255DF4F1882CE5AD04080916F +:102C10000313813049F0C654DF4F9881CA5BD0401E +:102C2000933009F043C036C0B0E0EB2EB3E1FB2E89 +:102C300000E010E0CA54DF4FA881C65BD0408A2E66 +:102C4000912CA12CB12CD501C401002E04C0B69545 +:102C5000A795979587950A94D2F780FF12C023E332 +:102C600033E34BEC51E4F70165A576A587A590A960 +:102C70000E94AC6DD7019D966D937D938D939C932F +:102C8000D0970F5F1F4FB4E0EB0EF11C033011051E +:102C9000D1F6C1CF80910613813041F4CA54DF4F81 +:102CA000E881C65BD040E43009F0E8C78CE0ECE591 +:102CB000F3E1DE01119601900D928A95E1F7C5547A +:102CC000DF4F28813981CB5BD04031FD08C01091A6 +:102CD00000131230C1F0183009F4EAC058C18091D5 +:102CE0000713873018F08DE10C949E1E90913F13CE +:102CF000891769F3BE016F5F7F4F0E9451348823AB +:102D000009F4D0C7E4CFCA54DF4F3881C65BD04046 +:102D1000311103C08AE10C949E1EC154DF4F88819B +:102D20009981CF5BD04080759927892B09F424CFF6 +:102D3000609120137091211380912213909123139D +:102D40000E945A6E0E94C76B673068F680911B1311 +:102D5000843151F0823009F093C7C154DF4F88812C +:102D6000CF5BD04087FD8CC7C154DF4FA881B981AC +:102D7000CF5BD040AF7AC154DF4FB983A883CF5B1C +:102D8000D040662321F022242A94260E02C02090EF +:102D90000713BE016B5E7F4F822D0E945134882342 +:102DA00009F480C730901B138090741390907513B2 +:102DB000A0907613B0907713A0E0CA2EA3E1DA2E8C +:102DC0008E010B5E1F4FE9E3F3E1C554DF4FF9833A +:102DD000E883CB5BD040E12CF12CCA54DF4FF88163 +:102DE000C65BD0404F2E512C612C712CD301C201F7 +:102DF0000E2C04C0B695A795979587950A94D2F79F +:102E000080FF3BC024E132122EC0C554DF4FA881A1 +:102E1000B981CB5BD0409F962D913D914D915C91B6 +:102E2000D29757966D917D918D919C915A970E9462 +:102E3000796AF60125A536A547A550A90E94796AA9 +:102E4000D8016D937D938D939C931397B2E0EB1211 +:102E500014C0A50194010E94796AF801608371830E +:102E6000828393830AC0F60185A596A5A7A5B0A97C +:102E7000F80180839183A283B383FFEFEF1AFF0AE7 +:102E800024E0C20ED11C0C5F1F4FC554DF4F888158 +:102E90009981CB5BD0400496C554DF4F99838883DA +:102EA000CB5BD04093E0E916F10409F09FCF4CC111 +:102EB000CA54DF4FA881C65BD040AA2309F42ACFA9 +:102EC0008090741390907513A0907613B090771340 +:102ED000F9E3CF2EF3E1DF2EFE0131961F0100E072 +:102EE00013E1E12CF12C4A2E512C612C712CD301D1 +:102EF000C2010E2C04C0B695A795979587950A94A4 +:102F0000D2F780FF29C0D1012D913D914D915C9167 +:102F1000F6016789708D818D928D0E94796AD80142 +:102F20009D962D913D914D915C91D0970E94796A2B +:102F3000F80165A776A787A790ABF2E0EF1216C05D +:102F4000A50194010E94796AD8019D966D937D93A5 +:102F50008D939C93D0970AC0F60187A590A9A1A94B +:102F6000B2A9F80185A796A7A7A7B0ABFFEFEF1A04 +:102F7000FF0A24E0C20ED11C34E0230E311C0C5F8A +:102F80001F4F83E0E816F10409F0B1CFDCC0C6544E +:102F9000DF4F9881CA5BD040933009F49DC0CA547A +:102FA000DF4FA881C65BD040AA2309F4BDC60091BB +:102FB00004134090741350907513609076137090C2 +:102FC000771379E3A72E73E1B72EE0E0EE2EE3E16D +:102FD000FE2EFE0131964F01C12CD12C8A2F90E09C +:102FE000A0E0B0E0C554DF4F88839983AA83BB83F8 +:102FF000CB5BD040C554DF4F88819981AA81BB81CA +:10300000CB5BD0400C2C04C0B695A79597958795BF +:103010000A94D2F780FD0BC0F5018789908DA18DB0 +:10302000B28DF70185A796A7A7A7B0AB43C017300D +:1030300009F440C001112BC0D5019F962D913D91FF +:103040004D915C91D297F40160817181828193816D +:103050000E947A6AD7019D962D913D914D915C9188 +:10306000D0970E947A6AF70165A776A787A790ABE9 +:10307000F2E0CF121FC0A30192010E947A6AD70129 +:103080009D966D937D938D939C93D09713C0F5017E +:103090002789308D418D528DD7019D966D917D91FF +:1030A0008D919C91D0970E947A6AF70165A776A7C7 +:1030B00087A790ABFFEFCF1ADF0A24E0A20EB11C66 +:1030C00034E0E30EF11C84E0880E911C93E0C916F5 +:1030D000D10409F08FCF2DC01530A9F0173071F150 +:1030E000133089F5CA54DF4FA881C65BD040A111C7 +:1030F00005C0C654DF4F1882CA5BD040BE016B5E6C +:103100007F4F86E010C0CA54DF4FB881C65BD04005 +:10311000B11105C0C654DF4F1882CA5BD040BE0152 +:103120006B5E7F4F87E00E945134882309F4BAC553 +:103130000AC01530A1F3173009F0F2C580910113D0 +:10314000823008F09FC5212C30900113E8E03E1238 +:1031500011C0CA54DF4FF881C65BD040FF2309F489 +:1031600005C3C654DF4F2881CA5BD040213009F027 +:103170008BC511C3C654DF4F3881CA5BD040323093 +:1031800009F0F4C2311009C0CA54DF4F8881C65B10 +:10319000D040882309F4F1C2FEC220E030E0A9014A +:1031A00060910B1370910C1380910D1390910E137D +:1031B0000E94536B882309F469C593E0931538F096 +:1031C000A2E03A1690F4B1E03B1631F0E4C2E7E039 +:1031D000E31508F0BEC2DFC2CA54DF4FF881C65BF8 +:1031E000D040FF2309F4C9C2D6C2CA54DF4F288198 +:1031F000C65BD040222309F48DCDC255DF4F9881A4 +:10320000CE5AD040892F90E0C554DF4F99838883F0 +:10321000CB5BD040CE54DF4FB881C25BD040AB2FE8 +:10322000B0E0CF53DF4FB983A883C15CD04081E0C9 +:1032300090E0A0E0B0E06C017D01C255DF4F088056 +:10324000CE5AD04004C0CC0CDD1CEE1CFF1C0A94EE +:10325000D2F7CE54DF4F0880C25BD04004C0880F45 +:10326000991FAA1FBB1F0A94D2F7C82AD92AEA2A93 +:10327000FB2A822F90E0A0E0B0E08C219D21AE21BE +:10328000BF21892B8A2B8B2B09F402C5C554DF4F34 +:1032900088819981CB5BD040880F991F880F991F37 +:1032A000FC01E050FD4EDC01A75CBC4E57962D9111 +:1032B0003D914D915C915A9765A576A587A590A9FA +:1032C0000E94796A4B015C01CF53DF4F888199815D +:1032D000C15CD040880F991F880F991FFC01E050F6 +:1032E000FD4EDC01A75CBC4E57962D913D914D9152 +:1032F0005C915A9765A576A587A590A90E94796AE1 +:10330000CA54DF4F688379838A839B83C65BD0402E +:10331000C154DF4F08811981CF5BD040007811275D +:10332000C154DF4FE881CF5BD040E7FF15C1C154E6 +:10333000DF4F28813981CF5BD0402F77C154DF4FD9 +:1033400039832883CF5BD0400E949864882311F092 +:1033500081E2F4C4809103138130B1F423E333E3B9 +:103360004BEC51E460912413709125138091261346 +:10337000909127130E94AC6D6093241370932513D2 +:103380008093261390932713409024135090251375 +:103390006090261370902713A5019401C501B40114 +:1033A0000E94AC6DCB53DF4F688379838A839B8304 +:1033B000C55CD040CA54DF4F288139814A815B8186 +:1033C000C65BD040CA01B9010E94AC6DC553DF4F46 +:1033D000688379838A839B83CB5CD04020E030E094 +:1033E00040E850E4C301B2010E94AC6DA301920118 +:1033F0000E94AC6DCB53DF4F288139814A815B81BC +:10340000C55CD0400E94796AC553DF4F288139815D +:103410004A815B81CB5CD0400E94796A6B017C0160 +:1034200020E030E0A9010E94536B87FD33C4C7013F +:10343000B6010E94196E6B017C01C553DF4F2881D4 +:1034400039814A815B81CB5CD040CB53DF4F6881AF +:1034500079818A819B81C55CD0400E947A6A0E94F2 +:10346000196E9B01AC01C701B60190580E945A6BBE +:103470006B017C0133E0331204C0F7FAF094F7F8E3 +:10348000F09420E030E0A901C301B2010E94536B27 +:1034900087FF0FC0F7FAF094F7F8F094D301C20158 +:1034A000B0588093241390932513A0932613B093C0 +:1034B0002713C554DF4F08811981CB5BD040000F23 +:1034C000111F000F111F0C5F1C4ECA54DF4F2881C3 +:1034D00039814A815B81C65BD040C701B6010E9439 +:1034E000AC6D9B01AC01C501B4010E94796A20E07A +:1034F00030E040E05FE30E94AC6DD8011B966D9315 +:103500007D938D939C931E97CF53DF4F0881198134 +:10351000C15CD040000F111F000F111F0C5F1C4E2B +:10352000A5019401C701B6010E94AC6DCA54DF4FDA +:10353000288139814A815B81C65BD0400E947A6ACA +:1035400020E030E040E05FE30E94AC6DF80163876B +:103550007487858796871FC1CB53DF4FF881C55C81 +:10356000D0404F2E512C612C712CC420D520E62048 +:10357000F720CD28CE28CF2809F48EC3C154DF4FC1 +:1035800028813981CF5BD040217FC154DF4F3983FF +:103590002883CF5BD04080910313813009F491C020 +:1035A000C554DF4FE881F981CB5BD040EE0FFF1FA0 +:1035B000EE0FFF1FEC5FFC4EC384D484E584F684D9 +:1035C000A7019601C501B4010E94796A2B013C0153 +:1035D000CF53DF4FE881F981C15CD040EE0FFF1F70 +:1035E000EE0FFF1FEC5FFC4E83859485A585B685A5 +:1035F000C554DF4F88839983AA83BB83CB5BD040BC +:103600009C01AD01CA54DF4F688179818A819B8119 +:10361000C65BD0400E94796A4B015C01A301920114 +:10362000C301B2010E94AC6D2B013C01A5019401C4 +:10363000C501B4010E94AC6D9B01AC01C301B20194 +:103640000E947A6A0E94196E4B015C01A7019601E3 +:10365000C701B6010E94AC6D6B017C01C554DF4F00 +:10366000288139814A815B81CB5BD040CA01B90195 +:103670000E94AC6D9B01AC01C701B6010E947A6A41 +:103680000E94196E6B017C016093241370932513C3 +:1036900080932613909327139B01AC01C501B401BD +:1036A0000E94796A4B015C01E894B7F82AE037ED93 +:1036B00043EA5BE3C501B4010E94716D181664F121 +:1036C0006AC080E0E82E83E1F82ED301C201002E0B +:1036D00004C0B695A795979587950A94D2F780FF71 +:1036E00012C023E333E34BEC51E4D7011F966D91F5 +:1036F0007D918D919C9152970E94AC6DF7016787E7 +:10370000708B818B928B0F5F1F4FF4E0EF0EF11CDB +:1037100003301105D1F644CF20E030E040E05FE314 +:10372000C501B4010E94716D18160CF411CE2FE67C +:1037300032E143E85AE3C701B6010E94AC6D9B0138 +:10374000AC01C501B4010E94716D18160CF400CED5 +:1037500022C0CA54DF4F2881C65BD040222309F41F +:10376000D9CA0E9498648111F3CD15C0C654DF4FA9 +:103770003881CA5BD04031110EC0C154DF4F8881FF +:103780009981CF5BD0408E7D9C7FC654DF4F1882DD +:10379000CA5BD04008C0C154DF4F88819981CF5B9C +:1037A000D0408E7D907E892B09F078C280911C13C9 +:1037B00090911D13A0911E13B0911F1380934C1371 +:1037C00090934D13A0934E13B0934F138091021317 +:1037D00080933A1380910B1390910C13A0910D13C9 +:1037E000B0910E138093471390934813A0934913FD +:1037F000B0934A13C0902813D0902913E0902A1355 +:10380000F0902B13A701960160914313709144131C +:1038100080914513909146130E94536B8823F9F0D1 +:1038200010914213112359F08091E312823039F044 +:103830000E947B64B701A601812F0E94E332809130 +:10384000281390912913A0912A13B0912B138093E0 +:10385000431390934413A0934513B0934613809160 +:103860002C1380934B1310910A13809142138117EC +:10387000B9F08091E312823079F0C0904313D09078 +:103880004413E0904513F09046130E947B64B70107 +:10389000A601812F0E94E33280910A138093421384 +:1038A0001091091380914113811781F08091E312E7 +:1038B000823041F00E947B64123011F45C9A02C0A5 +:1038C0000E94DC588091091380934113809100136A +:1038D000813089F08091051380933D13809103130B +:1038E00080933B13C654DF4F8881CA5BD04083303E +:1038F00009F074C054C08091E312823059F3809073 +:10390000201390902113A0902213B090231320E055 +:1039100030E040EA51E4C501B4010E94AC6D0E9460 +:10392000306C0E94C76B6B017C010E947B6420E0BD +:1039300030E04AE754E4C501B4010E94AC6D4B018C +:103940005C0182E38C9DB0018D9D700D112480E09F +:1039500090E00E94F36B9B01AC01C501B4010E9491 +:10396000796A0E94306C0E94C76BCB010E940025CF +:1039700086010115110509F4ADCF0E940B250150F8 +:1039800011098091E2128111A5CF9FEFA0E7B2E06B +:103990009150A040B040E1F700C00000EACF809114 +:1039A000061380933E13813089F4809135139091F2 +:1039B0003613A0913713B0913813809374139093FA +:1039C0007513A0937613B093771308C010927413F5 +:1039D000109275131092761310927713809107133B +:1039E00090913F13981759F080933F138CE0FE019C +:1039F0003196ACE5B3E101900D928A95E1F78091A3 +:103A0000041380933C13E09100138E2F90E0FC018F +:103A10003297E830F10508F060C08827E957FF4F7A +:103A20008F4F0C94BF6EBE016B5E7F4F822D0E9444 +:103A3000483480913F13281250C08CE0FE017596E7 +:103A4000ACE5B3E13EC0C654DF4FE881CA5BD0406D +:103A5000EE2371F0209147133091481340914913A0 +:103A600050914A1300E06DE273E181E00E9404523C +:103A700020914713309148134091491350914A13B4 +:103A800000E0BE016B5E7F4F81E00E940452182F60 +:103A90008CE0FE017596A0E5B3E101900D928A9548 +:103AA000E1F71CC060E573E186E003C060E573E107 +:103AB00087E00E94483411C08CE0EDE2F3E1A8E613 +:103AC000B3E101900D928A95E1F707C08CE0E8E63A +:103AD000F3E1DF011D928A95E9F710E0809101136F +:103AE00080933913883009F470C0C654DF4FB88111 +:103AF000CA5BD040B23009F068C090E088309105D0 +:103B000008F05AC0FC014090471350904813609051 +:103B1000491370904A138827E157FF4F8F4F0C9439 +:103B2000BF6E00E0A30192016DE273E180E007C087 +:103B300000913A13A30192016DE273E181E00E94CA +:103B40000452182F39C0609124137091251380916D +:103B50002613909127138824839409C0609124131D +:103B6000709125138091261390912713812CC753B0 +:103B7000DF4FA880C95CD040CE54DF4FC880C25B05 +:103B8000D040C255DF4FE880CE5AD04000913A1362 +:103B9000A30192010E946C650FC000E001C001E02A +:103BA00020E004C000E001C001E021E040913A13B0 +:103BB000C301B2010E94D6648CE0EDE2F3E1A0E51E +:103BC000B3E101900D928A95E1F7809108138093FB +:103BD0004013882309F464C00E947B6490914013D1 +:103BE0008091E312913061F48230C9F19FB7F8946B +:103BF000809191128860809391129FBF0CD72FC043 +:103C000091E09093391310923D1310923C1310924F +:103C10003A1310923F1310924213109241138230C4 +:103C2000A9F0BE016F5F7F4F80E00E94513488236E +:103C3000C9F18CE0FE013196ACE5B3E101900D9243 +:103C40008A95E1F70E94DC320E94DC588CEB98E008 +:103C5000D0D180E698E0CDD189E498E0CAD1109225 +:103C600040131EC081E06AC082E068C088E166C07F +:103C700089E164C084E062C08BE160C085E25EC01F +:103C800084E15CC08EE15AC08FE158C086E156C025 +:103C900080E254C082E252C083E250C084E24EC04F +:103CA000812F4CC087E04AC0AEE12A16310411F4DE +:103CB0000C94CD0C50F5EAE02E16310411F40C945E +:103CC0009F0CFCE12F16310411F40C94B30C87E126 +:103CD00035C09CE52916310411F00C94490E21E001 +:103CE000C654DF4F2883CA5BD040CE54DF4F888153 +:103CF0009981C25BD040009729F00A9709F689E0C4 +:103D00000C94D60C88E00C94D60C25E322163104D2 +:103D100011F40C94F00C3CE52316310431F3D7CFA9 +:103D2000133009F010CAEAC9153009F4F3C9173085 +:103D300009F404CA133009F006CADBC9CE52DF4FBA +:103D40000FB6F894DEBF0FBECDBFDF91CF911F91AC +:103D50000F91FF90EF90DF90CF90BF90AF909F902A +:103D60008F907F906F905F904F903F902F9008952D +:103D70008F929F92AF92BF92CF92DF92EF92FF927B +:103D80000F931F93CF93DF93CDB7DEB72A970FB66C +:103D9000F894DEBF0FBECDBF6B017C01042F20E085 +:103DA00030E0A9010E94536B87FF07C08DE20E949B +:103DB0003937F7FAF094F7F8F094102F123060F0DA +:103DC00020E030E048EC52E4C701B6010E94AC6D3F +:103DD0006B017C011250F2CF00FF0AC020E030E0FE +:103DE00040E251E4C701B6010E94AC6D6B017C0159 +:103DF00020E030E040E05FE3C701B6010E947A6A4C +:103E00000E94C26BE1E0F0E0EC0FFD1FE00FF11D3E +:103E10002EE2208310E03AE0832E912CA12CB12CCD +:103E20006115710581059105A9F0101301C01F5F8F +:103E3000EE24E394F12CEC0EFD1EE10EF11CA50125 +:103E400094010E949D6E605DF7016083B901CA0113 +:103E50001F5FE6CF80E3101748F4E1E0F0E0EC0FDD +:103E6000FD1FE10FF11D80831F5FF5CF10130BC005 +:103E700081E0810FE1E0F0E0EC0FFD1FE80FF11DA4 +:103E80001E5F80E38083112341F0FE01E10FF11DED +:103E900080810E9439371150F6CF2A960FB6F894D8 +:103EA000DEBF0FBECDBFDF91CF911F910F91FF906D +:103EB000EF90DF90CF90BF90AF909F908F9008953C +:103EC000CF92DF92EF92FF921F93CF93DF93CDB704 +:103ED000DEB7362F142FCDB6DEB64DB75EB7411B19 +:103EE00051090FB6F8945EBF0FBE4DBF4F5F5F4FD5 +:103EF0007A01242FFA019E2F921B911728F4632F29 +:103F00000E947D6E9193F7CF112351F0F701E10FDD +:103F1000F11D31978081805D0E9439371150F4CFB7 +:103F20000FB6F894DEBE0FBECDBEDF91CF911F91CC +:103F3000FF90EF90DF90CF9008951F93CF93DF9382 +:103F4000CDB7DEB7C058D1090FB6F894DEBF0FBEAB +:103F5000CDBFAE0149575F4FFA0161917191AF0139 +:103F6000CE0101960E94416F10E0E1E0F0E0EC0F1D +:103F7000FD1FE10FF11D8081882321F00E94393758 +:103F80001F5FF3CFC058DF4F0FB6F894DEBF0FBEF0 +:103F9000CDBFDF91CF911F91089543E0E9CE2091ED +:103FA000D01220FF08C02BE832E441E25DE30E941A +:103FB000AC6D41E001C040E0DBCE2091D01220FF8B +:103FC00008C02BE832E441E25DE30E94AC6D44E0BE +:103FD00001C043E0CDCE8A3020F0843620F043E0AB +:103FE00003C041E001C042E06AE06ACF48E062E01D +:103FF00067CFCF93DF93FC018491EF012196882353 +:1040000021F00E943937FE01F7CFDF91CF9108955B +:10401000CF93DF93EC018991882319F00E943937FF +:10402000FACFDF91CF910895A6EEB2E1E4EBFCE088 +:104030004D915D916D917D914193519361937193F8 +:104040008CE0E03CF807A1F708958CE1E4EBFCE09C +:10405000DF011D928A95E9F7109281111092821169 +:1040600081E08093B30C10929E0E08952F923F92A0 +:104070004F925F926F927F928F929F92AF92BF9278 +:10408000CF92DF92EF92FF920F931F93CF93DF9324 +:10409000C0918211C11101C0C2E1C150D0919E0EE8 +:1040A000DC1709F41DC1EC2EF12C29E2C29F80011E +:1040B00011240156114FF801A588B688C788D08C05 +:1040C00061A172A183A194A19B01AC010E947A6AB3 +:1040D000F80125A136A147A150A50E94AC6D4B0166 +:1040E0008C019B01AC01B501C6010E94536B87FD99 +:1040F00002C05401680189E28E9DF0018F9DF00D90 +:104100001124E156F14FC501D601818B928BA38B0F +:10411000B48BC11101C0C2E1C150DC1761F029E2CA +:104120002E9DC0012F9D900D11249C012156314FD1 +:104130007901D9E233C080918111D81360C00E9407 +:104140004A455DC0AC2EB12CDA9DC001DB9D900DBF +:104150001124FC01E156F14F6F01C11101C0C2E110 +:10416000C150809181118C1302C00E944A45DA9D92 +:104170008001DB9D100D11240156114FF801858837 +:104180009688A788B08CA50194016189728983897A +:1041900094890E94536B811106C0760180919E0E16 +:1041A000C813D0CF2CC0F80161A172A183A194A142 +:1041B0009B01AC010E947A6AF80125A136A147A1B2 +:1041C00050A50E94AC6DF701218932894389548939 +:1041D0000E947A6A2B013C019B01AC01C501B4012C +:1041E0000E94716DF80118162CF4418A528A638A74 +:1041F000748AD3CF818A928AA38AB48ACECFD0918F +:104200009E0EF9E2DF9F800111240156114FC1E09B +:10421000CD0FC23109F4C0E02090821189E2382E1E +:10422000C21509F45BC0CC2ED12C3C9CC0013D9C36 +:10423000900D11249C012156314F7901F8014188DC +:10424000528863887488F90181889288A388B48829 +:10425000A5019401C301B2010E94536B87FF24C0E2 +:10426000F80161A172A183A194A19B01AC010E94FC +:104270007A6AF80125A136A147A150A50E94AC6D2C +:10428000A30192010E947A6A2B013C019B01AC01BF +:10429000C501B4010E94716D181634F4F701418A0A +:1042A000528A638A748ADC2F3C9CF0013D9CF00D9D +:1042B0001124E156F14F258936894789508D61894E +:1042C0007289838994890E94536B811101C0DC2F0C +:1042D000CF5FC23109F4C0E08701A2CFD0939E0E18 +:1042E000DF91CF911F910F91FF90EF90DF90CF90D2 +:1042F000BF90AF909F908F907F906F905F904F9006 +:104300003F902F9008952F923F924F925F926F921D +:104310007F928F929F92AF92BF92CF92DF92EF9255 +:10432000FF920F931F93CF93DF93CDB7DEB7E5973F +:104330000FB6F894DEBF0FBECDBF4B8F5C8F6D8F75 +:10434000072F2DAB209182112EA3422F50E05BA3AB +:104350004AA339E2239FF0011124E156F14F15865B +:1043600016861786108A15A216A217A210A610820A +:1043700049E956E766E97EE741A352A363A374A324 +:104380001C0143E952E158A74FA3CE0101969AAB15 +:1043900089AB24EB3CE03EA72DA74EA139E2439F19 +:1043A000C00111249C012056314F3AA729A7AE0124 +:1043B000435F5F4F5DA34CA359A348A384EB9CE0EC +:1043C00098AB8FA723E932E13F8F2E8F10E03F019A +:1043D000AF01435F5F4F5CAB4BAB2F0155E2450E26 +:1043E000511CF10161917191819191911F01EE8DAB +:1043F000FF8D81909190A190B190FF8FEE8FA501DC +:1044000094010E94AC6D0E947C6DE9A9FAA96193A8 +:10441000719381939193FAABE9ABEFA5F8A9C190A1 +:10442000D190E190F190F8ABEFA76C197D098E095E +:104430009F099B01AC0197FF07C022273327A901E1 +:10444000261B370B480B590BE9A5FAA5219331938D +:1044500041935193FAA7E9A7EBA9FCA9C080D180A9 +:10446000E280F380C216D306E406F50610F4690173 +:104470007A01EBA9FCA9C082D182E282F3820E9478 +:10448000F56BA50194010E945A6B4B015C01E8A1F8 +:10449000F9A16193719381939193F9A3E8A320E02B +:1044A00030E0A9010E94536B87FF0DC0112321F05A +:1044B000113021F084E003C081E001C082E0F3010B +:1044C0009081892B8083A5019401C501B4010E94CC +:1044D000AC6DF20120813181428153810E947A6A60 +:1044E000F20160837183828393831F5F133009F02D +:1044F00078CF0E94196E4B015C01F20160837183D9 +:1045000082839383CD28CE28CF2809F422C220E0CD +:1045100030E0A9016B8D7C8D8D8D902F0E94536BA7 +:1045200087FD21C0FDA9FF2361F0A50194016B8DDA +:104530007C8D8D8D902F0E94AC6D6B8F7C8F8D8FBD +:10454000092F20E030E040E85FE36B8D7C8D8D8D9E +:10455000902F0E94536B87FF0DC01B8E1C8E20E88E +:104560002D8F0FE307C039E93B8F46E74C8F56E9A3 +:104570005D8F0EE7A501940160E070E080E89FE3A5 +:104580000E945A6B69A77AA78BA79CA7CE01499670 +:104590009A8F898FC12CD12C760129E2EAA1FBA147 +:1045A0002E9FC0012F9F900D11249C012054314F4C +:1045B00039A328A3ECA1FDA180809180A280B380C3 +:1045C00020E030E0A901C501B4010E94536B8823AB +:1045D00009F472C0A501940169A57AA58BA59CA5D3 +:1045E0000E94AC6D2B013C01ECA1FDA160837183A5 +:1045F000828393839B01AC0160E070E080E89FE3DD +:104600000E945A6B4B015C01E894B7F8EFA1F8A542 +:104610002485358546855785C501B4010E94AC6D5A +:104620001B018E8F192F2B8D3C8D4D8D502F0E948D +:10463000716D18162CF02B8E3C8EFE8DFD8F012F88 +:10464000E8A1F9A1F081FE8FE8A1F9A111812280F2 +:104650003380EFA1F8A5208D318D428D538DC5019A +:10466000B4010E94AC6D5B014C019B01AC016E8DED +:10467000712FC1010E94536B87FD03C0AE8E1B2DAD +:1046800014018E8D912FD101E8A1F9A1808391832E +:10469000A283B383EDA5FEA5248535854685578580 +:1046A000C301B2010E94AC6D9B01AC01C701B60110 +:1046B0000E94796A6B017C012CA13DA12C5F3F4FC8 +:1046C0003DA32CA34DA55EA54C5F5F4F5EA74DA7F4 +:1046D0008FA198A5049698A78FA3E98DFA8DE2176C +:1046E000F30709F067CF80918111FEA1F8130FC085 +:1046F00089E22AA13BA1829FF001839FF00D112442 +:10470000E156F14F118A128A138A148A14C02FEECF +:104710003FEF4FE75FE3C701B6010E94716D1816C6 +:104720007CF489E24AA15BA1849FF001859FF00D92 +:104730001124E156F14F118E128E138E148E6AC021 +:104740002FEE3FEF4FE75FEBC701B6010E94716D9F +:10475000181644F08FEEC82EDD24DA948FE7E82E89 +:104760008FEBF82EA701960160E070E080E89FE3F0 +:104770000E94796A20E030E040E05FE30E94AC6D87 +:104780000E94196E6B017C0189E22AA13BA1829FE4 +:10479000F001839FF00D1124E156F14F2091C812D2 +:1047A0003091C9124091CA125091CB1261A172A1ED +:1047B00083A194A10E94AC6DA70196010E94AC6DEB +:1047C0004B015C01A701960160E070E080E89FE387 +:1047D0000E94796A9B01AC01C501B4010E945A6B29 +:1047E0006B017C0120E030E0A9010E94536B87FF40 +:1047F00003C0C12CD12C760189E24AA15BA1849F20 +:10480000F001859FF00D1124E156F14FC18ED28E3B +:10481000E38EF48E2B8D3C8D4D8D502F6B8D7C8DCA +:104820008D8D902F0E94AC6D7B018C0189E22AA1B5 +:104830003BA1829FF001839FF00D1124E156F14FBF +:10484000C701D801858F968FA78FB0A3A18CB28C9A +:10485000C38CD48C6090CC0C7090CD0C8090CE0C1E +:104860009090CF0C9301A401B701C8010E94536B33 +:1048700087FD05C0B62DA72DF82DE92D04C0BE2D4E +:10488000AF2DF02FE12F9501A6016B2F7A2F8F2FDF +:104890009E2F0E94716D18166CF09301A401B70150 +:1048A000C8010E94536B87FD03C05301640102C01D +:1048B0005701680189E24AA15BA1849FF001859FAD +:1048C000F00D1124E156F14FC501D601858B968B71 +:1048D000A78BB08F8CE0FE013D96A0ECBCE0019070 +:1048E0000D928A95E1F7C701D8018093CC0C909383 +:1048F000CD0CA093CE0CB093CF0C8CE0FE01319682 +:10490000A4EBBCE001900D928A95E1F78091B30C85 +:10491000809382118F5F823109F480E08093B30C21 +:10492000E5960FB6F894DEBF0FBECDBFDF91CF91F5 +:104930001F910F91FF90EF90DF90CF90BF90AF90BD +:104940009F908F907F906F905F904F903F902F90AF +:104950008DCBE5960FB6F894DEBF0FBECDBFDF91CD +:10496000CF911F910F91FF90EF90DF90CF90BF906C +:10497000AF909F908F907F906F905F904F903F90FF +:104980002F9008956115710581059105C1F16A3077 +:1049900071058105910548F425E02A95F1F700009D +:1049A0006150710981099109EDCF64367105810566 +:1049B000910548F4E5E3EA95F1F700006A507109C2 +:1049C00081099109DFCF683EF3E07F0781059105FA +:1049D00058F4EFE8F1E03197F1F700C000006456B9 +:1049E000710981099109CECFEFE9FFE03197F1F725 +:1049F00000C00000685E734081099109C3CF08952B +:104A0000009741F0EFE9FFE03197F1F700C00000B7 +:104A10000197F6CF08953F924F925F926F927F92E7 +:104A20008F929F92AF92BF92CF92DF92EF92FF92BE +:104A30000F931F93CF93DF93CDB7DEB768970FB671 +:104A4000F894DEBF0FBECDBF01E099E2A92E28E0A9 +:104A5000722E30E2632E40E1B42E50E4552E62E017 +:104A6000462E1091E112112309F450C00093E31275 +:104A700011FF06C08FEE97E0BCDA84EE97E01FC00E +:104A800012FF06C08FEE97E0B4DA89ED97E017C009 +:104A900013FF06C08FEE97E0ACDA86EC97E00FC00C +:104AA00014FF06C08FEE97E0A4DA8BEB97E007C007 +:104AB00015FF0CC08FEE97E09CDA8FEA97E099DA49 +:104AC0008CEA97E096DA84EF91E09ADF10FD08C057 +:104AD0008FB7F8949091E1121092E1128FBF16C037 +:104AE0008CEB98E086DA8AEA98E083DA89E498E049 +:104AF00080DA9FB7F894809191128F7E8093911203 +:104B00009FBF8091911284FFFCCFE2CF1091911250 +:104B1000112309F4AAC114FF04C081E08093E212BA +:104B2000B5C110FFE2C08CE0E6EEF2E1DE011D96B9 +:104B300001900D928A95E1F78091E3128430E9F0BB +:104B400040F48130E9F080F0823001F584E298E0B1 +:104B50001CC0803179F018F4883049F017C08032D9 +:104B600091F0803421F012C083E498E00EC08EE30F +:104B700098E00BC088E398E008C082E398E005C0A5 +:104B80008BE298E002C08EE198E033DA8091C712A0 +:104B9000837039F0BE01635F7F4FCE0101960E94A2 +:104BA000DF448091C71280FD05C08091C71281FF4C +:104BB00065C019C087E198E01CDACE0101967C013E +:104BC000D12CF70161917191819191917F01F5D97A +:104BD000F2E0DF1619F085E198E00BDAD39423E0D8 +:104BE000D212EFCFE2CF8EE098E003DA8CE5C82E48 +:104BF00083E1D82ECE0101967C01312C4701F601CC +:104C000061917191819191916F01208531854285EA +:104C100053850E947A6A9B01AC01F7016081718122 +:104C2000828193810E94796AF70160837183828314 +:104C30009383F2E03F120FC02091741330917513EB +:104C400040917613509177130E94796AF70160833F +:104C5000718382839383F4E0EF0EF11CF401608191 +:104C6000718182819381A9D9F2E03F1619F08CE01D +:104C700098E0BFD9339423E03212C0CF8091C7129D +:104C800082FF0CC086E098E0B4D9809182119091A7 +:104C90008111891708F48E5E891B9DD98091C712F6 +:104CA00083FF0CC081E098E0A4D99091D80D809149 +:104CB000D90D891708F48058891B8DD98091C712A6 +:104CC00084FF08C08BEF97E094D90E94265643E0FA +:104CD00062E0F6D887EF97E08CD99FB7F89480917F +:104CE00091128E7F809391129FBF812F887609F455 +:104CF00041C08091E312882349F0982F9C7791F16D +:104D0000883021F40E944A450093E4128091E31216 +:104D1000811102C04092E41216FF09C0883011F4DC +:104D20005092E3128091E41288608093E41213FFA2 +:104D300005C08091E31285FFB092E31215FF12C007 +:104D40008CEB98E056D988E698E053D989E498E04E +:104D500050D98091E41281FD146084608093E41244 +:104D60006092E3129FB7F8948091911287798093B3 +:104D700091129FBF11FF55C0812F887609F049C05D +:104D80008091E312882339F0807509F442C0809144 +:104D9000E41281FF3EC08091E41282FF1EC0809128 +:104DA0004213882369F0409143135091441360915A +:104DB0004513709146130E94E33280EA9FE020DEA3 +:104DC00080914113882349F0823011F45C9A02C02B +:104DD0000E94DC5888EE93E013DE8091811190915F +:104DE0008211981791F0A89EC00111248156914F0D +:104DF000892B59F08091E41283FD07C07092E31271 +:104E00000E946C450E94B03202C01092E3121092D0 +:104E1000E4129FB7F894809191128D7F8093911244 +:104E20009FBF12FF22C08091E312807391F08091A6 +:104E3000E51281110EC08091E41282FF04C00E942D +:104E4000DC320E94DC588091E41282608093E4128C +:104E500004C01092E4121092E3129FB7F89480916C +:104E600091128B7F809391129FBF8091E3128C7778 +:104E700011F00E946C459091E3128091E4129032FF +:104E800019F481FDB092E3128111EBCD68960FB653 +:104E9000F894DEBF0FBECDBFDF91CF911F910F9170 +:104EA000FF90EF90DF90CF90BF90AF909F908F904A +:104EB0007F906F905F904F903F9008954F925F92D8 +:104EC0006F927F92AF92BF92CF92DF92EF92FF925A +:104ED0000F931F93CF93DF936C01FB015A0130971F +:104EE00029F08081D601A80FB11D01C0DC018C9191 +:104EF000ED018D3229F4229611968C9101E008C0C3 +:104F00008B3211F0219603C0229611968C9100E00D +:104F1000512C612C10E020E030E0A9017E0160ED11 +:104F2000762E780E89E08715D8F06394A8E0A61550 +:104F300098F051101150A5E0B0E00E94D66EDC014F +:104F4000CB01880F991FAA1FBB1F9C01AD01270D24 +:104F5000311D411D511D0BC0511009C01F5F07C0FD +:104F6000BEEF7B1208C0511006C055245394219601 +:104F7000D7018C91D3CF662009F450C07F01CA01BC +:104F8000B9010E94F36B2B013C0120E030E0A90144 +:104F90000E94536B882349F11F3F64F42AE037EDE8 +:104FA00043E25CE3C301B2010E94AC6D2B013C0102 +:104FB0001E5FF2CF1F3F59F42DEC3CEC4CEC5DE34F +:104FC000C301B2010E94AC6D2B013C010EC0112344 +:104FD00061F020E030E040E251E4C301B2010E9400 +:104FE000AC6D2B013C011150F2CF002351F077FA48 +:104FF000709477F87094F5014082518262827382D6 +:1050000006C0D5014D925D926D927C921397CC199A +:10501000DD09C150F701C08381E001C080E0DF916C +:10502000CF911F910F91FF90EF90DF90CF90BF90A5 +:10503000AF907F906F905F904F9008958A98E8E0CE +:10504000F1E080818E7F80835F980E940A3B1092FE +:10505000380D08952F923F924F925F926F927F92F8 +:105060008F929F92AF92BF92CF92DF92EF92FF9278 +:105070000F931F93CF93DF93CDB7DEB7CA55D109F6 +:105080000FB6F894DEBF0FBECDBFFB018E3A28E00D +:10509000920708F048C08C3A38E0930708F01EC722 +:1050A0008B34A8E09A0709F4AFC1F0F4833E27E0FF +:1050B000920709F470C160F48231910509F46BC163 +:1050C0008C3C910509F408C1419709F070C072C089 +:1050D0008934A8E09A0709F47FC108F084C18834B4 +:1050E000984009F435C163C0823A38E0930709F467 +:1050F00007C278F48A39B8E09B0709F4BCC18B3940 +:1051000028E0920709F4DFC18939984009F04FC0BF +:105110008CC1863AA8E09A0708F4E0C6873A98401E +:1051200009F429C244C0813C28E0920709F48CC3E9 +:10513000E0F4883BA8E09A0709F427C350F48E3ABC +:1051400028E0920709F41DC2873B984009F40AC37E +:105150002EC08A3BA8E09A0709F4C0C608F426C30B +:10516000803C984009F445C322C08B3639E0930750 +:1051700009F41FC570F48136B9E09B0709F4B7C480 +:105180008A3629E0920709F4CBC48036994079F435 +:10519000BFC38437A9E09A0709F481C58537B9E010 +:1051A0009B0709F4D4C58C36994009F430C581E0D9 +:1051B00090E096C68A9A80910801816080930801E8 +:1051C0005F9A0E94BC3B8FE08093380D8EE1E2EE47 +:1051D000F2E1DF011D928A95E9F70E9414200E94F6 +:1051E0002F5880E090E00E94EE436093140D70937E +:1051F000150D8093160D9093170D81E090E00E949D +:10520000EE436093180D7093190D80931A0D9093CF +:105210001B0D82E090E00E94EE4360931C0D7093A2 +:105220001D0D80931E0D90931F0D0091E61210919D +:10523000E7122091E8123091E9120093200D1093AB +:10524000210D2093220D3093230D0091EA1210912D +:10525000EB122091EC123091ED120093240D10937B +:10526000250D2093260D3093270D0091EE121091FD +:10527000EF122091F0123091F1120093280D10934B +:10528000290D20932A0D30932B0D20E030E044EBC4 +:1052900052E40E94796A7B018C012091180D3091B3 +:1052A000190D40911A0D50911B0D6091140D7091C4 +:1052B000150D8091160D9091170DE4E38E2EEDE003 +:1052C0009E2EF0E3AF2EFDE0BF2EACE2CA2EADE085 +:1052D000DA2E0E94564102C68E010F5F1F4F1F93A8 +:1052E0000F938BE893E09F938F93FF936F930E94AC +:1052F000206F0F900F900F900F900F900F90181637 +:1053000019060CF0A3C41D8A1E8A1F8A188EAE01CE +:105310004B5E5F4F60E070E0C801D0DD8823C1F1D3 +:105320004D895E896F89788D88E70E9446334D8963 +:105330005E896F89788D89E70E9446334D895E8941 +:105340006F89788D8AE70E9446330E94CC37C6C5A4 +:105350008E010F5F1F4F1F930F9386E993E09F937A +:105360008F93FF936F930E94206F0F900F900F9079 +:105370000F900F900F90181619060CF067C4AE012D +:105380004B5E5F4F60E070E0C80198DD811105C0A1 +:1053900082E390E0A5C552DEA1C520E030E04AE7F7 +:1053A00054E46D897E898F89988D0E94AC6D0E942E +:1053B000C26B1616170684F47093D20C6093D10C4E +:1053C00011E01093D30C8091D00C811187C50E94FD +:1053D0005C3A1093D00C82C51092D30C1092D20C70 +:1053E0001092D10C7BC58081863591F681818053E6 +:1053F000823070F610923C0D813019F010923B0D06 +:105400006DC580933B0D6AC58081863509F0C0CF9C +:1054100081818053823008F0BBCF813019F0109227 +:105420003F0D5CC580933F0D59C580818E3409F0D6 +:10543000AFCF91819053943008F0AACF923061F0B1 +:10544000933099F08091380D913019F05F9A846013 +:1054500025C08A9A816022C0809108018160809372 +:1054600008018091380D826019C00E94BC3B809178 +:10547000380D886013C080818E3409F089CF918106 +:105480009053943008F084CF923071F09330A9F0AB +:105490008091380D913029F05F988B7F8093380D83 +:1054A0001DC58A988E7FFACF809108018E7F8093E8 +:1054B00008018091380D8D7FF1CF0E940A3B8091C9 +:1054C000380D877FEBCF80818E3409F061CF8181E9 +:1054D0008053843008F05CCF9091380D823051F0C9 +:1054E000833059F0813019F090FF35C131C191FD01 +:1054F0002FC131C192FD2CC12EC193FF2CC128C1F7 +:105500001AA619A61D8A1E8A1F8A188E8E010F5F81 +:105510001F4F8AE0D8011D928A95E9F7CE0189963E +:105520009F938F931F930F938FE993E09F938F9394 +:10553000FF936F930E94206F0FB6F894DEBF0FBEEB +:10554000CDBF02970CF482C3AE014B5E5F4F60E0AB +:1055500070E0C801B3DC882309F41ACF2D893E8995 +:105560004F89588D69A57AA5072E000C880B990BD9 +:105570000E94773AB3C48FEF0E9471340E94F839C9 +:10558000ADC465961CAE1DAE1EAE1FAE659761968E +:105590001CAE1DAE1EAE1FAE61972D961CAE1DAE8D +:1055A0001EAE1FAE2D9784E16E0129E2C20ED11C02 +:1055B000D601282F1D922A95E9F77E0135E1E30EE9 +:1055C000F11CD701282F1D922A95E9F7DE011196CB +:1055D0005D011D928A95E9F78E010B5A1F4F8FEFDF +:1055E00090E0D8018D939C931F930F93BF92AF923D +:1055F000FF92EF92DF92CF928BEA93E09F938F938B +:10560000FF936F930E94206F0FB6F894DEBF0FBE1A +:10561000CDBF03970CF41AC3AE014F5A5F4F60E041 +:1056200070E0C6014BDC882309F4B2CEAE01435BC7 +:105630005F4F60E070E0C70141DC882309F4A8CE29 +:10564000AE01475B5F4F60E070E0C50137DC882347 +:1056500009F49ECED8018D919C910097D9F10197C4 +:1056600009F096CE6596CCACDDACEEACFFAC6597A0 +:1056700020E030E044EB52E461966CAD7DAD8EAD40 +:105680009FAD61970E94796A21EE3EE245E652E4C1 +:105690000E945A6B4B015C010E94576B9B01AC014D +:1056A000C701B6010E94AC6D65966CAF7DAF8EAF41 +:1056B0009FAF6597C501B4010E940F6E9B01AC01BD +:1056C000C701B6010E94AC6D61966CAF7DAF8EAF25 +:1056D0009FAF6197AE01475B5F4FBE01635B7F4F3A +:1056E000CE018F5A9F4F0E94FE3D2D96ECACFDAC33 +:1056F0000EAD1FAD2D9761962CAD3DAD4EAD5FAD9E +:10570000619765966CAD7DAD8EAD9FAD6597FE01E1 +:10571000FD964F01DE01AF5BBF4F5D0138966F0113 +:105720000E94A03F2196ECACFDAC0EAD1FAD2197C1 +:1057300025962CAD3DAD4EAD5FAD259729966CAD50 +:105740007DAD8EAD9FAD29970E94B842882319F098 +:105750006AE973E002C066E873E084ED9CE00E94B1 +:10576000EB6EBCC38081863509F012CE81818053F7 +:10577000823008F00DCE813019F00E94F339AEC3AB +:105780009C9A9D9AA49AA598A9C38081863509F010 +:10579000FFCD81818053823008F0FACD813019F03D +:1057A0000E94F0399BC33F9A479898C38081863501 +:1057B00009F0EECD81818053823008F0E9CD81304F +:1057C00019F00E94DF398AC38091010180628093C1 +:1057D00001018091010180648093010180910201A7 +:1057E00080628093020180910201806480930201B3 +:1057F00075C3CE0101969F938F9344969F938F9389 +:105800008DEC93E09F938F93FF936F930E94206F93 +:105810000FB6F894DEBF0FBECDBF02970CF416C2D0 +:105820008D899E898634910508F0B2CD29813A810F +:105830002230310508F0ACCD232B11F061E001C01E +:1058400060E00E94D4504AC3CE0101969F938F938B +:1058500044969F938F938DEC93E09F938F93FF9348 +:105860006F930E94206F0FB6F894DEBF0FBECDBFBE +:1058700002970CF4EBC18D899E898634910508F05E +:1058800087CD29813A812230310508F081CDFC0194 +:10589000E05CF54F8650964F232BD1F02491FC010C +:1058A0008491882309F41AC390E0880F991FFC01A2 +:1058B000E254F74FA591B491FC01E052F64F859167 +:1058C00094918FB7F894EC91E22BEC938FBF06C3C1 +:1058D0002491FC018491882309F400C390E0880F8F +:1058E000991FFC01E254F74F45915491FC01E0529D +:1058F000F64FA591B4919FB7F894FA018081209555 +:10590000822380838C91E22FE823EC939FBFE6C231 +:105910008081833509F03CCD8181E0EDE80FE830EE +:1059200008F036CD8E2F90E0FC013197E730F1057D +:1059300030F48827E956FF4F8F4F0C94BF6E0E94BA +:105940000A3B1092070D1092060D8AE999E1A5E92C +:10595000B2E480930C0D90930D0DA0930E0DB093B7 +:105960000F0D8AE999E9A2E6B2E4B8C00E940A3BA9 +:1059700081E090E09093070D8093060D86EF98E20A +:10598000ACE4B2E480930C0D90930D0DA0930E0D3A +:10599000B0930F0D8DEC9CECA0E8B2E49FC00E9488 +:1059A0000A3B82E090E09093070D8093060D89E218 +:1059B0009CEDA4E9B2E480930C0D90930D0DA0939F +:1059C0000E0DB0930F0D80E090E0A2E6B2E486C029 +:1059D0000E940A3B83E090E09093070D8093060DB0 +:1059E00080E090E0ACE2B2E480930C0D90930D0D5A +:1059F000A0930E0DB0930F0D80E090E0ABE8B2E401 +:105A00006DC00E940A3B84E090E09093070D809364 +:105A1000060D80E090E0ACE1B2E480930C0D909331 +:105A20000D0DA0930E0DB0930F0D80E090E0A9E94D +:105A3000B2E418C00E940A3B85E090E09093070D05 +:105A40008093060D8DEC9CECA2E9B2E480930C0DE2 +:105A500090930D0DA0930E0DB0930F0D80E090E08C +:105A6000A8E9B2E48093080D9093090DA0930A0D64 +:105A7000B0930B0D0E94E33A99C00E940A3B86E066 +:105A800090E09093070D8093060D86E696E6AAE9CE +:105A9000B2E480930C0D90930D0DA0930E0DB09376 +:105AA0000F0D80E090E0AAE5B2E418C00E940A3B26 +:105AB00087E090E09093070D8093060D85E89BEEBC +:105AC000ABECB1E480930C0D90930D0DA0930E0DF3 +:105AD000B0930F0D80E090E0A2E3B2E48093080D54 +:105AE0009093090DA0930A0DB0930B0D5FC080E059 +:105AF00090E00E949C439093430D8093420D81E07F +:105B000090E00E949C439093450D8093440D82E069 +:105B100090E00E949C439093410D8093400DDCC126 +:105B20006091EE127091EF128091F0129091F1124B +:105B30000E94F56B2B013C016091EA127091EB120F +:105B40008091EC129091ED120E94F56B6B966CAF08 +:105B50007DAF8EAF9FAF6B976091E6127091E712A9 +:105B60008091E8129091E9120E94F56B9E012F5FDF +:105B70003F4F4901DE0155965D01FE01B9966F0167 +:105B8000830172016B962CAD3DAD4EAD5FAD6B9751 +:105B90000E94523F89819A81AB81BC8180930C0D18 +:105BA00090930D0DA0930E0DB0930F0D0E941D3A12 +:105BB00095C11D8A1E8A1F8A188E8E010F5F1F4F86 +:105BC00084E1D8011D928A95E9F71F930F9384ED24 +:105BD00093E09F938F93FF936F930E94206F0F909A +:105BE0000F900F900F900F900F901816190674F5E4 +:105BF000AE014B5E5F4F60E070E0C8015FD9882363 +:105C000009F4C6CB8D899E89AF89B88D67CF1D8A6F +:105C10001E8A1F8A188E8E010F5F1F4F84E1D801E4 +:105C20001D928A95E9F71F930F938FED93E09F9351 +:105C30008F93FF936F930E94206F0F900F900F90A0 +:105C40000F900F900F901816190674F01F9281E0B4 +:105C50008F938DE092E09F938F930E949D1F0F90F2 +:105C60000F900F900F9094CBAE014B5E5F4F60E0B2 +:105C700070E0C80123D9882309F48ACB8D899E89D5 +:105C8000AF89B88D8093100D9093110DA093120DD4 +:105C9000B093130D0E941D3A0E94E33A1FC1808108 +:105CA000803509F075CB81818053833008F070CB4B +:105CB0008130D9F0823091F180E090E00E949C43E5 +:105CC0009093530D8093520D81E090E00E949C438D +:105CD0009093550D8093540D82E090E00E949C4378 +:105CE0009093570D8093560DF9C080E090E00E948C +:105CF0009C4390934D0D80934C0D81E090E00E9469 +:105D00009C4390934F0D80934E0D82E090E00E9453 +:105D10009C439093510D8093500DE0C080E090E043 +:105D20000E949C439093470D8093460D81E090E044 +:105D30000E949C439093490D8093480D82E090E02F +:105D40000E949C4390934B0D80934A0DC7C0609175 +:105D5000520D7091530D0091540D1091550D9B01F2 +:105D6000202B312B8091560D9091570D822B932B28 +:105D7000892B19F48AEE93E015C0E0904C0DF09059 +:105D80004D0D60904E0D70904F0D2090500D309045 +:105D9000510DC7018629972982299329892B49F416 +:105DA00080EF93E09F938F930E949D1F0F900F9021 +:105DB000EFCAC090460DD090470D4090480D5090CE +:105DC000490D96012429352980914A0D90914B0D5A +:105DD000822B932B892B19F486EF93E0E3CF80E09D +:105DE00090E00E94F36B24EE35E24EE652E40E940E +:105DF0007A6A4B015C01B60180E090E00E94F36B8F +:105E000020E33CE44AEB52E40E947A6A9B01AC0135 +:105E1000C501B4010E947A6A4B015C01B70180E0C0 +:105E200090E00E94F36B9B01AC01C501B4010E949C +:105E30007A6A20E030E040E450E40E945A6B20E0AF +:105E400030E040E05FE30E947A6A0E94C76B709383 +:105E5000430D6093420DB80180E090E00E94F36B27 +:105E60002CE93DE241E853E40E94796A6B017C0130 +:105E7000B20180E090E00E94F36B24E53AE146E94C +:105E800053E40E947A6A9B01AC01C701B6010E94EB +:105E90007A6A6B017C01B30180E090E00E94F36BB1 +:105EA0009B01AC01C701B6010E947A6A20E030E094 +:105EB00040E450E40E945A6B20E030E040E05FE3B1 +:105EC0000E947A6A0E94C76B7093450D6093440DDF +:105ED0003092410D2092400D0E94A14480E090E05C +:105EE000C65ADF4F0FB6F894DEBF0FBECDBFDF91AD +:105EF000CF911F910F91FF90EF90DF90CF90BF90C7 +:105F0000AF909F908F907F906F905F904F903F9059 +:105F10002F90089569E080E090E00E9435584DE4AC +:105F200050E063E972E181E098E00C945758CF9219 +:105F3000DF92EF92FF920F931F939091C412092F5B +:105F400010E020E030E08091C512482F50E060E082 +:105F500070E09170817068017901F694E794D794AC +:105F6000C794C0FC92606A017B01F694E794D794D1 +:105F7000C794C0FC8260E2E0369527951795079597 +:105F8000EA95D1F700FD946022E0769567955795E4 +:105F900047952A95D1F740FD84609093790E8093C0 +:105FA000780E1F910F91FF90EF90DF90CF900895A2 +:105FB0001F920F920FB60F9211240BB60F922F93D0 +:105FC0003F938F939F93EF93FF9321B33091790E7B +:105FD000832F817090E036E0880F991F3A95E1F7A2 +:105FE000922F9F7B892B81BBEBE0F1E09081809128 +:105FF000790E8270880F880F977F892B808381B3F9 +:106000009091790E92FB992790F98E7F892B81BB15 +:1060100015BCFF91EF919F918F913F912F910F9020 +:106020000BBE0F900FBE0F901F90189580916F00C0 +:106030008D7F80936F0080918100887F8160809345 +:10604000810010927A0E8091C6128F3F21F49091B8 +:10605000E112992349F09091E312943029F090E0F5 +:106060000E94002581E001C080E09091D01292FF53 +:1060700002C091E08927882341F08A9A8091080123 +:106080008160809308015F9A08958A988091080141 +:106090008E7F809308015F9808951F920F920FB62C +:1060A0000F9211240BB60F922F933F934F935F9350 +:1060B0006F937F938F939F93AF93BF93EF93FF93D0 +:1060C00080917A0E811139C280918A0E80FD8F9A5B +:1060D00080FF8F9890910B01482F42709D7F942BE9 +:1060E00090930B0141B3847090E095958795942F20 +:1060F0009D7F892B81BB91B38091890E282F2170C0 +:1061000030E066E0220F331F6A95E1F79F7B292B71 +:1061100021BB90910B01282F2270220F220F977F15 +:10612000922B90930B0121B382FB992790F9822F38 +:106130008E7F892B81BB8091880E86BD82E085BDD4 +:1061400081E080937A0E789480919C0E90919D0EC0 +:10615000892B09F0ACC0809183119091A8119817F8 +:1061600009F49BC0E09183112E2F30E086E0E89F78 +:10617000F0011124EC57FE4EF0939D0EE0939C0E1F +:10618000838194819093890080938800808191819C +:106190009093980E8093970EE2818091990E8E17BE +:1061A00061F1E093990E81E1E89FF0011124E75538 +:1061B000FE4EF0939B0EE0939A0E85859685A785FB +:1061C000B089B695A795979587958093830E909300 +:1061D000840EA093850EB093860E80937F0E9093CD +:1061E000800EA093810EB093820E80937B0E9093CD +:1061F0007C0EA0937D0EB0937E0EE0919A0EF091EE +:106200009B0E90818091780E892780938A0E86E07C +:10621000829FD001839FB00D1124AC57BE4E1596BE +:106220002C9181819281A381B481022E04C0B69504 +:10623000A795979587950A94D2F780938B0E9093A4 +:106240008C0EA0938D0EB0938E0E85819681A781C2 +:10625000B085022E04C0B695A795979587950A94A8 +:10626000D2F780938F0E9093900EA093910EB093DF +:10627000920E81859285A385B48504C0B695A795B5 +:10628000979587952A95D2F78093930E9093940EC5 +:10629000A093950EB093960E0AC0C8DE9FB7F894EF +:1062A000809191128460809391129FBF46C180912A +:1062B00092128130B1F489B180719091E012891706 +:1062C00081F0109292128CE0E6EEF2E1A2EFB2E1E0 +:1062D00001900D928A95E1F78091911280648093EC +:1062E00091121092890E40917B0E50917C0E60911C +:1062F0007D0E70917E0E80918B0E90918C0EA091F0 +:106300008D0EB0918E0E840F951FA61FB71F809320 +:106310007B0E90937C0EA0937D0EB0937E0EE09149 +:106320009A0EF0919B0E45855685678570894817B2 +:1063300059076A077B0768F521E02093890E458598 +:10634000568567857089841B950BA60BB70B8093C8 +:106350007B0E90937C0EA0937D0EB0937E0E2081D9 +:106360008091E6129091E712A091E812B091E912A3 +:1063700020FF04C00197A109B10903C00196A11D26 +:10638000B11D8093E6129093E712A093E812B093A8 +:10639000E91240917F0E5091800E6091810E7091B4 +:1063A000820E80918F0E9091900EA091910EB091DF +:1063B000920E840F951FA61FB71F80937F0E909398 +:1063C000800EA093810EB093820E45855685678519 +:1063D0007089481759076A077B0778F52091890E5D +:1063E00022602093890E4585568567857089841BB8 +:1063F000950BA60BB70B80937F0E9093800EA09306 +:10640000810EB093820E20818091EA129091EB125E +:10641000A091EC12B091ED1221FF04C00197A109E7 +:10642000B10903C00196A11DB11D8093EA1290939A +:10643000EB12A093EC12B093ED124091830E5091A9 +:10644000840E6091850E7091860E8091930E9091CE +:10645000940EA091950EB091960E840F951FA61FD5 +:10646000B71F8093830E9093840EA093850EB093F4 +:10647000860E4585568567857089481759076A07CE +:106480007B0778F52091890E24602093890E45853D +:10649000568567857089841B950BA60BB70B809377 +:1064A000830E9093840EA093850EB093860E208168 +:1064B0008091EE129091EF12A091F012B091F11232 +:1064C00022FF04C00197A109B10903C00196A11DD3 +:1064D000B11D8093EE129093EF12A093F012B0933F +:1064E000F1128091E312843039F49091890E8091F9 +:1064F000FF1289238093890E8091970E9091980EB8 +:1065000001979093980E8093970E892B69F41092BF +:106510009D0E10929C0E809183118F5F809383114A +:10652000863011F4109283119091890E8091790E2A +:1065300089278093890E10927A0EFF91EF91BF9177 +:10654000AF919F918F917F916F915F914F913F910B +:106550002F910F900BBE0F900FBE0F901F901895AC +:106560008091D01282FF08C08A9A809108018160D0 +:10657000809308015F9A07C08A98809108018E7FF6 +:10658000809308015F988091E3128C70A1F0809154 +:10659000780E80938A0E8091790E8093890E809177 +:1065A000C312880F845081958093880E80916F006C +:1065B000826080936F000895E0EAF0E080818F7D33 +:1065C00080835C980895CF92DF92EF92FF926A01E8 +:1065D0007B01811105C0FF90EF90DF90CF90ECCF51 +:1065E000813011F45C9801C05C9A83E28093A00032 +:1065F0008091A100807E8A618093A1008FEF9FEF40 +:106600009093A9008093A80020E030E0A901C70181 +:10661000B6010E94536B1816F4F620E030E0A90191 +:10662000C701B6010E94536B87FD11C020E030E026 +:106630004AE754E4C701B6010E94716D181654F47C +:10664000C12CD12C8AE7E82E84E4F82E03C0C12C9B +:10665000D12C76012CEE31E143E852E4C701B601BA +:106660000E94AC6D20E030E040E05FE30E947A6A77 +:106670000E94306C0E94C76B7093AB006093AA00BD +:106680005C9AFF90EF90DF90CF900895CF92DF92C9 +:10669000EF92FF92CF93DF93C82F6A017B0120E036 +:1066A00030E0A901C701B6010E94536B87FDE2C02B +:1066B000C43608F441C08CE98C0F20E0833098F593 +:1066C00090E0880F991F880F991F223079F0FC0104 +:1066D000233011F1213019F0ED56FD4E02C0E15684 +:1066E000FD4EC082D182E282F382C1C0EC01C55569 +:1066F000DD4E20E030E040E752E4C701B6010E94E1 +:10670000AC6D20E030E040E752E40E94AC6D68835D +:1067100079838A839B83ABC0E954FD4EF7FAF094EA +:10672000F7F8F094DECF2F5F8A3008F4A5C024304C +:1067300009F4A2C08A50C2CFC701B6010E945A6EA6 +:106740000E94C76B8C2F90E08C31910508F094C0AB +:10675000FC018827E256FF4F8F4F0C94BF6E6330C9 +:1067600008F48CC06093C31282C06093C6127FC0CD +:106770006093C41202C06093C512D9DB78C08091C7 +:10678000D012662311F084604CC08B7F4AC0809188 +:10679000D012662311F0806444C08F7B42C0809188 +:1067A000D012662311F080683CC08F773AC06093A6 +:1067B000C7125DC0C092C812D092C912E092CA122C +:1067C000F092CB1254C0C092CC12D092CD12E09273 +:1067D000CE12F092CF124BC08091D012662311F0EE +:1067E00081601FC08E7F1DC08091D012662321F072 +:1067F00084FF46C0806215C08F7D13C08091D01287 +:10680000662311F0886001C0877F8093D0120E94B8 +:106810001D582DC08091D012662311F0806101C0F7 +:106820008F7C8093D01223C06093D11220C0C0927D +:10683000D212D092D312E092D412F092D51217C095 +:10684000C092D612D092D712E092D812F092D912FA +:106850000EC070E07093DB126093DA1208C0C09231 +:10686000DC12D092DD12E092DE12F092DF1252DBE7 +:1068700080E007C084E005C083E003C086E001C07B +:106880008AE0DF91CF91FF90EF90DF90CF90089555 +:106890002DE0829FC00111244CE050E0965F0C94E3 +:1068A00057581F93CF93DF93182FEB018DE0189F5C +:1068B000B0011124765F4CE050E0CE010E949A585E +:1068C000892B51F48CE0FE0111928A95E9F7BE0103 +:1068D000812FDEDF80E001C081E0DF91CF911F9149 +:1068E0000895EF92FF920F931F93CF93DF93CDB74D +:1068F000DEB72C970FB6F894DEBF0FBECDBF182FB2 +:1069000080FFC6C08AE08093C3128FEF8093C612C7 +:106910001092C41287E08093C51283E08093C7125F +:106920008AE097EDA3E2BCE38093C8129093C9126A +:10693000A093CA12B093CB128FE692E1A3E0BBE31F +:106940008093CC129093CD12A093CE12B093CF121D +:106950001092D11280E090E0A8ECB1E48093D212C2 +:106960009093D312A093D412B093D51280E090E00C +:10697000AAEFB3E48093D6129093D712A093D812C3 +:10698000B093D9128AEF90E09093DB128093DA12E1 +:1069900080E090E0A0E8BFE38093DC129093DD12EA +:1069A000A093DE12B093DF1284E08093D01280E0D7 +:1069B00090E0A8ECB5E48093931290939412A09386 +:1069C0009512B09396128093971290939812A09379 +:1069D0009912B0939A1280939B1290939C12A09359 +:1069E0009D12B0939E1280E090E5A3ECB7E48093F3 +:1069F0009F129093A012A093A112B093A212809321 +:106A0000A3129093A412A093A512B093A612809300 +:106A1000A7129093A812A093A912B093AA1280E093 +:106A200090EAACE0B7E48093AB129093AC12A093E1 +:106A3000AD12B093AE128093AF129093B012A093A8 +:106A4000B112B093B2128093B3129093B412A09388 +:106A5000B512B093B61280E090E4ACE1B6EC80934E +:106A6000B7129093B812A093B912B093BA12809350 +:106A7000BB129093BC12A093BD12B093BE12809330 +:106A8000BF129093C012A093C112B093C21242DA07 +:106A900011FF0FC0CE0101967C018CE0F70111922D +:106AA0008A95E9F700E0B701802FF2DE0F5F08302A +:106AB000D1F712FF0AC060E080E09BE00E943558E9 +:106AC00060E081E59BE00E94355813FF05C060E05F +:106AD0008EEA9BE00E9435582C960FB6F894DEBFE4 +:106AE0000FBECDBFDF91CF911F910F91FF90EF901F +:106AF00008951F920F920FB60F9211240BB60F92AA +:106B00002F933F934F935F936F937F938F939F93B5 +:106B1000AF93BF93EF93FF938091D60022E030E0D4 +:106B200030935D0E20935C0E8F33A9F050F48831C2 +:106B300009F1813211F59FB7F89480919112886024 +:106B400015C0803471F08E37C1F49FB7F8948091EE +:106B5000911282600BC09FB7F8948091911281606E +:106B600005C09FB7F8948091911280628093911232 +:106B70009FBF14C00E94DA5111C0E091D90D91E07D +:106B80009E0F903809F490E02091D80D921731F0C3 +:106B9000F0E0E85AF24F80839093D90DFF91EF9186 +:106BA000BF91AF919F918F917F916F915F914F9125 +:106BB0003F912F910F900BBE0F900FBE0F901F9023 +:106BC00018951F920F920FB60F9211240BB60F92C9 +:106BD0002F933F934F935F936F937F938F939F93E5 +:106BE000AF93BF93EF93FF938091CE0021E030E00D +:106BF00030935D0E20935C0E8F33A9F050F48831F2 +:106C000009F1813211F59FB7F89480919112886053 +:106C100015C0803471F08E37C1F49FB7F89480911D +:106C2000911282600BC09FB7F8948091911281609D +:106C300005C09FB7F8948091911280628093911261 +:106C40009FBF14C00E94DA5111C0E091D90D91E0AC +:106C50009E0F903809F490E02091D80D921731F0F2 +:106C6000F0E0E85AF24F80839093D90DFF91EF91B5 +:106C7000BF91AF919F918F917F916F915F914F9154 +:106C80003F912F910F900BBE0F900FBE0F901F9052 +:106C900018951F920F920FB60F9211240BB60F92F8 +:106CA0002F933F934F935F936F937F938F939F9314 +:106CB000AF93BF93EF93FF938091C60010925D0E48 +:106CC00010925C0E8F33A9F050F4883109F18132B3 +:106CD00011F59FB7F89480919112886015C08034A7 +:106CE00071F08E37C1F49FB7F89480919112826051 +:106CF0000BC09FB7F89480919112816005C09FB737 +:106D0000F894809191128062809391129FBF14C079 +:106D10000E94DA5111C0E091D90D91E09E0F903898 +:106D200009F490E02091D80D921731F0F0E0E85A84 +:106D3000F24F80839093D90DFF91EF91BF91AF9166 +:106D40009F918F917F916F915F914F913F912F9183 +:106D50000F900BBE0F900FBE0F901F9018951F92B3 +:106D60000F920FB60F9211240BB60F928F939F9331 +:106D7000EF93FF9380915B0EE82FF0E0E552F24F26 +:106D800090819093D6008F5F803809F480E08093E3 +:106D90005B0E9091DA0D891305C08091D1008F7D33 +:106DA0008093D100FF91EF919F918F910F900BBE37 +:106DB0000F900FBE0F901F9018951F920F920FB655 +:106DC0000F9211240BB60F928F939F93EF93FF9323 +:106DD00080915B0EE82FF0E0E552F24F90819093A6 +:106DE000CE008F5F803809F480E080935B0E909135 +:106DF000DA0D891305C08091C9008F7D8093C90089 +:106E0000FF91EF919F918F910F900BBE0F900FBE4E +:106E10000F901F9018951F920F920FB60F9211248A +:106E20000BB60F928F939F93EF93FF9380915B0E1E +:106E3000E82FF0E0E552F24F90819093C6008F5F0B +:106E4000803809F480E080935B0E9091DA0D89130D +:106E500005C08091C1008F7D8093C100FF91EF91AB +:106E60009F918F910F900BBE0F900FBE0F901F90B0 +:106E70001895E091DA0D91E09E0F903831F490E092 +:106E800004C02091911224FD26C020915B0E291789 +:106E9000C1F3F0E0E552F24F80839093DA0D8091D8 +:106EA0005C0E90915D0E8130910551F018F00297C3 +:106EB00069F008958091C10080628093C1000895B7 +:106EC0008091C90080628093C90008958091D100AB +:106ED00080628093D1000895CF93C82F83ED99E00D +:106EE0000E94F91FC830B9F190F4C43059F148F448 +:106EF000C23001F120F5C13009F042C08BEB99E0BE +:106F00001BC0C63011F120F58CE799E015C0C431E3 +:106F100071F140F4CA3029F108F1CB3089F58CEFDA +:106F200093E02BC0C63131F1F8F0C23349F586E069 +:106F300094E023C089EA99E00E94F91F28C087E9FC +:106F400099E0FACF8DE899E0F7CF8DE699E0F4CF9C +:106F50008CE499E0F1CF83E499E0EECF88E399E007 +:106F6000EBCF85E299E0E8CF8FE099E0E5CF81E0D3 +:106F700094E003C08BEF98E0DFCF0E94082007C0A9 +:106F800089EE98E00E94F91F8C2F0E94EB1F86EE7D +:106F900098E0CF910C94F91F1F93CF93DF93CDB757 +:106FA000DEB72C970FB6F894DEBF0FBECDBF80E0E2 +:106FB00090E00E949258893009F052C04DE450E0B0 +:106FC00061E078E083E992E10E949A58892B09F404 +:106FD00047C020E030E048EC55E460919312709196 +:106FE000941280919512909196120E94536B811188 +:106FF00037C020E030E048EC55E460919712709182 +:1070000098128091991290919A120E94536B81115B +:1070100027C020E030E048EC55E460919B1270916D +:107020009C1280919D1290919E120E94536B81112F +:1070300017C010E0BE016F5F7F4F812F32DC8111DE +:1070400002C087E049DF1F5F1830A1F72C960FB60A +:10705000F894DEBF0FBECDBFDF91CF911F91089591 +:107060008FEF3FDCE6CF8F929F92AF92BF92EF926D +:10707000FF920F931F93CF9380EE98E00E94F91F29 +:1070800082EFE82E82E1F82E03E912E1C0E0F70179 +:1070900061917191819191917F01F801819091901D +:1070A000A190B1908F010E94F56BA50194010E94FF +:1070B0005A6B0E94DD1FC23021F08EED98E00E94D5 +:1070C000F91FCF5FC33019F78CED98E00E94F91FCC +:1070D0008091FE120E94EB1F88ED98E0CF911F91E6 +:1070E0000F91FF90EF90BF90AF909F908F900C9476 +:1070F000F91F9FB7F894809191128260809391124A +:107100009FBF08952091660E3091670E21153105BD +:10711000B9F08091760E9091770E8217930734F430 +:1071200001969093770E8093760E0AC01092770E98 +:107130001092760E1092670E1092660E1092390D14 +:107140002091D10C3091D20C21153105A1F0809104 +:10715000740E9091750E8217930734F401969093F4 +:10716000750E8093740E07C01092750E1092740EF7 +:1071700081E080933A0D8091390D81111BC080917F +:10718000D30C811117C0809173008E7F80937300A0 +:107190001092D00C1092670E1092660E1092D20CC4 +:1071A0001092D10C1092770E1092760E1092750EEE +:1071B0001092740E08958091730E811107C081E0C2 +:1071C0008093730E80910B01806205C01092730E44 +:1071D00080910B018F7D80930B018091710E9091B6 +:1071E000720E9C012F5F3F4F3093720E2093710EF1 +:1071F00020910402309105022817390748F41092B3 +:10720000720E1092710E809170008E7F80937000CC +:1072100008952091060D3091070D2430310529F491 +:1072200026E636E646E65FE307C02530310539F548 +:1072300026E636E646EE5FE30E945A6B20E030E039 +:1072400040E852E40E94AC6D0E94C26B60935E0EF7 +:1072500070935F0E8093600E9093610E8DE499E3BE +:1072600090938B1280938A121092A00085E08093F5 +:10727000A1008DEF9FEF90938D1280938C128091DF +:107280008C1290918D129093A5008093A400809110 +:107290007200816080937200089580915E0E9091DB +:1072A0005F0EA091600EB091610E181619061A06B5 +:1072B0001B06F4F42091700E222389F01092700EB8 +:1072C0000197A109B10980935E0E90935F0EA09380 +:1072D000600EB093610E80910201806406C081E06F +:1072E0008093700E809102018F7B8093020108953C +:1072F0000E948B5110925E0E10925F0E1092600EE3 +:107300001092610E0895CF93DF93EB018431D1F099 +:1073100028F4882361F08C30A8F437C08233E9F078 +:1073200018F4873190F10EC0833311F10BC08881BE +:10733000882329F06BE074E0CE010E94E06E6DE0DE +:1073400074E020C08881882329F06BE074E0CE01CE +:107350000E94E06E60E174E015C08881882329F006 +:107360006BE074E0CE010E94E06E64E174E00AC05C +:107370008881882329F06BE074E0CE010E94E06EE2 +:1073800068E174E0CE010E94E06E8091D40C882305 +:1073900079F064ED7CE0CE010E94E06E82E3E4EDE2 +:1073A000FCE0DF011D928A95E9F7DF91CF91089506 +:1073B0006DE373E0CE01DF91CF910C94E06EE1E0DC +:1073C000F1E0808180628083808180648083E2E05C +:1073D000F1E080818F7D808380818F7B8083089521 +:1073E0003F9A479A08959C9A9D9AA498A59A0895C1 +:1073F000809104018778809304018091030188774C +:10740000803451F46CE174E088E69EE00E94EB6EFB +:1074100040E050E0BA010EC080910301887761F42A +:1074200063E274E088E69EE00E94EB6E40E050E08C +:1074300060EE70E483E02AD9AFCD0F931F93CF9312 +:10744000DF936091060D84E893E00E9435586091C7 +:10745000070D85E893E00E943558C8E0DDE088E933 +:1074600093E069918C010F5F1F4F0E943558C8014E +:107470000C391340B1F7CCE0DDE08EE893E0699180 +:107480008C010F5F1F4F0E943558C801023913400D +:10749000B1F7C0E1DDE082E89CE069918C010F5F0B +:1074A0001F4F0E943558C80106381C40B1F7DF91C4 +:1074B000CF911F910F910895E3E3F2E182E898E301 +:1074C000918380831092200185E08093210181EFD8 +:1074D0009FEF938382838281938190932501809390 +:1074E0002401E3E7F0E08081816080830895CF92FA +:1074F000DF92EF92FF920F931F93CF93DF93690177 +:107500007A01EAE0F1E0208120622083EBE0F1E003 +:1075100020812F7D2083660F771F70930502609373 +:1075200004020CE212E18BED98E3F8019183808371 +:10753000C0E7D0E088818E7F8883E0EBF0E0808137 +:107540008C7F8083E1EBF0E08081877F8083A6EBF6 +:10755000B0E08C918F7D8C9388818D7F8883808132 +:107560008460808380818C7F808320E034E244EFDC +:1075700059E4C701B6010E945A6B20E034E244E7A7 +:107580005BE40E94AC6D20E030E040E85CE30E94E8 +:10759000AC6D0E94C26B20E031E0C901861B970BE5 +:1075A000F80193838283828193818093B2008881E2 +:1075B00081608883DF91CF911F910F91FF90EF90B1 +:1075C000DF90CF9008958091060D9091070D04975C +:1075D0000297F8F41092620E1092630E1092640EED +:1075E0001092650E809107018F7D80930701809135 +:1075F000080180628093080180910201806280937B +:10760000020160E070E084EB93E403DE81E08093AC +:107610003D0D089510925E0E10925F0E1092600E56 +:107620001092610E0E948B5110923D0D0C948B5163 +:107630008F929F92AF92BF92CF92DF92EF92FF9282 +:107640006B017C0120E030E044EB53E40E94716D5B +:1076500018160CF488C020E030E0A901C701B6017B +:107660000E94536B87FD7FC08091060D9091070D9E +:107670000497029790F52091620E3091630E40912D +:10768000640E5091650EC701B6010E94796A4B01E4 +:107690005C01C092620ED092630EE092640EF09292 +:1076A000650E20E030E0A9010E94716D181624F4E7 +:1076B000809102018F7D03C08091020180628093DE +:1076C0000201C501B4019F77FF90EF90DF90CF904A +:1076D000BF90AF909F908F909CCD20E030E044E32E +:1076E00053E4C701B6010E94716D18161CF4C12C39 +:1076F000D12C7601A701960160E070E084E393E469 +:107700000E94796A20E030E044E353E40E945A6B1F +:107710009B01AC010E947A6A20E030E040E05FE328 +:107720000E947A6A609300027093010280930202C1 +:107730009093030220E030E040EA51E40E945A6B4B +:1077400020E030EC4FE754E40E94AC6D0E94C76B20 +:10775000CB01FF90EF90DF90CF90BF90AF909F90C4 +:107760008F900C943C50FF90EF90DF90CF90BF90A3 +:10777000AF909F908F9008958091060D9091070D86 +:107780000497029780F48091010180628093010147 +:1077900080910101806480930101809102018062E7 +:1077A00080930201089580E18093A1001092A000CF +:1077B00082E08093901280E29EE490938F128093F7 +:1077C0008E129093A7008093A60082E18093A1007F +:1077D00020E030E040EA51E4609100027091010243 +:1077E00080910202909103020E945A6B20E030ECDB +:1077F0004FE754E40E94AC6D0E94C76BCB010C9420 +:107800003C50CF93DF93D82FC8E05E98559AD7FFAE +:1078100002C05D9A01C05D9865E070E080E090E094 +:107820000E94C2245E9A65E070E080E090E00E94D1 +:10783000C2245E98DD0F65E070E080E090E00E9479 +:10784000C224C15011F762E070E080E090E00E9435 +:10785000C224559A5D9A62E070E080E090E0DF918A +:10786000CF910C94C2245E98559A5D9865E070E0C3 +:1078700080E090E00E94C2245E9A65E070E080E0C3 +:1078800090E00E94C224559A5D9A65E070E080E025 +:1078900090E00C94C224CF93559A5D9A62E070E018 +:1078A00080E090E00E94C2245E9A62E070E080E096 +:1078B00090E00E94C22455988BEF99B1C92FC072F5 +:1078C00095FF05C08150C9F7CEDFC1E007C05E98C3 +:1078D00062E070E080E090E00E94C2248C2FCF91A3 +:1078E0000895559A5D9A5E9A65E070E080E090E0B8 +:1078F0000E94C224559A5D9865E070E080E090E0B7 +:107900000E94C2245E9862E070E080E090E00C94F7 +:10791000C224CF93DF93D82FC8E0809102018F77E4 +:107920008093020180910101846080930101809124 +:107930000201D7FF02C0846001C08B7F80930201E7 +:1079400065E070E080E090E00E94C2248091020136 +:1079500080688093020165E070E080E090E00E9422 +:10796000C224809102018F7780930201DD0F65E0D0 +:1079700070E080E090E00E94C224C15071F662E0A5 +:1079800070E080E090E00E94C22480910101846058 +:10799000809301018091020184608093020162E082 +:1079A00070E080E090E0DF91CF910C94C2240F93BF +:1079B0001F93CF93DF93C2E0D1E088818F778883D4 +:1079C00001E011E0F80180818460808388818B7FF1 +:1079D000888365E070E080E090E00E94C2248881A6 +:1079E0008068888365E070E080E090E00E94C224B7 +:1079F000F80180818460808388818460888365E069 +:107A000070E080E090E0DF91CF911F910F910C9496 +:107A1000C224CF9380910101846080930101809101 +:107A2000020184608093020162E070E080E090E0F7 +:107A30000E94C2248091020180688093020162E06A +:107A400070E080E090E00E94C224809101018B7F71 +:107A5000809301018BEF90910001C92FC47092FFB8 +:107A600005C08150C1F7A3DFC1E00BC080910201C6 +:107A70008F778093020162E070E080E090E00E94E6 +:107A8000C2248C2FCF9108950F931F93CF93DF9330 +:107A900001E011E0F801808184608083C2E0D1E0E0 +:107AA00088818460888388818068888365E070E04D +:107AB00080E090E00E94C224F8018081846080838D +:107AC00088818B7F888365E070E080E090E00E9491 +:107AD000C22488818F77888362E070E080E090E044 +:107AE000DF91CF911F910F910C94C224CF93DF931C +:107AF000D82FC8E04398399AD7FF02C0419A01C0F5 +:107B0000419865E070E080E090E00E94C224439AD2 +:107B100065E070E080E090E00E94C2244398DD0FB1 +:107B200065E070E080E090E00E94C224C15011F74F +:107B300062E070E080E090E00E94C224399A419AAD +:107B400062E070E080E090E0DF91CF910C94C2247D +:107B50004398399A419865E070E080E090E00E9497 +:107B6000C224439A65E070E080E090E00E94C22465 +:107B7000399A419A65E070E080E090E00C94C2246C +:107B8000CF93399A419A62E070E080E090E00E94E1 +:107B9000C224439A62E070E080E090E00E94C22438 +:107BA00039988BEF96B1C92FC27091FF05C08150F3 +:107BB000C9F7CEDFC1E007C0439862E070E080E023 +:107BC00090E00E94C2248C2FCF910895399A419A57 +:107BD000439A65E070E080E090E00E94C224399A08 +:107BE000419865E070E080E090E00E94C2244398F4 +:107BF00062E070E080E090E00C94C2244F925F92CB +:107C00006F927F92AF92BF92CF92DF92EF92FF92EC +:107C10000F931F93CF93DF935C01EB018A01FC016B +:107C2000408051806280738020E030E0A901C30170 +:107C3000B2010E94536B20E030E0A901811111C014 +:107C4000688179818A819B810E94716D1816E4F0A8 +:107C50002AEDC22E2FE0D22E29ECE22E2FEBF22EAF +:107C600022C0C301B2010E94536B87FD16C0A3015D +:107C70009201688179818A819B810E945A6B0E945E +:107C8000186B6B017C010FC09AEDC92E9FE0D92EB5 +:107C900099ECE92E9FE3F92E06C0C12CD12C80EC83 +:107CA000E82E8FE7F82EC701B6010E94576B20918E +:107CB000080D3091090D40910A0D50910B0D0E9455 +:107CC000AC6D9B01AC01C301B2010E94796AF50160 +:107CD0006083718382839383C701B6010E940F6E14 +:107CE0002091080D3091090D40910A0D50910B0D16 +:107CF0000E94AC6D9B01AC01688179818A819B8176 +:107D00000E94796A688379838A839B8320910C0D12 +:107D100030910D0D40910E0D50910F0DF8016081C5 +:107D20007181828193810E947A6AF80160837183F4 +:107D300082839383DF91CF911F910F91FF90EF90FA +:107D4000DF90CF90BF90AF907F906F905F904F90FB +:107D500008954F925F926F927F92AF92BF92CF92AF +:107D6000DF92EF92FF920F931F93CF93DF935C010B +:107D7000EB018A01FC01408051806280738020E029 +:107D800030E0A901C301B2010E94536B20E030E052 +:107D9000A901811111C0688179818A819B810E942A +:107DA000716D1816E4F02AEDC22E2FE0D22E29ECC8 +:107DB000E22E2FEBF22E22C0C301B2010E94536BC0 +:107DC00087FD16C0A3019201688179818A819B8118 +:107DD0000E945A6B0E94186B6B017C010FC09AEDD8 +:107DE000C92E9FE0D92E99ECE92E9FE3F92E06C00B +:107DF000C12CD12C80ECE82E8FE7F82EC701B601FC +:107E00000E94576B2091080D3091090D40910A0D89 +:107E100050910B0D0E94AC6DA30192010E947A6AF1 +:107E2000F5016083718382839383C701B6010E9449 +:107E30000F6E2091080D3091090D40910A0D50915F +:107E40000B0D0E94AC6D9B01AC01688179818A8128 +:107E50009B810E947A6A688379838A839B832091BD +:107E60000C0D30910D0D40910E0D50910F0DF8013C +:107E700060817181828193810E94796AF8016083B7 +:107E8000718382839383DF91CF911F910F91FF9034 +:107E9000EF90DF90CF90BF90AF907F906F905F900A +:107EA0004F9008952F923F924F925F926F927F92E0 +:107EB0008F929F92AF92BF92CF92DF92EF92FF92FA +:107EC0000F931F93CF93DF93CDB7DEB72C970FB6E9 +:107ED000F894DEBF0FBECDBF160135012401FE01AF +:107EE00039964F0134975F0134976F01C4D2E9840A +:107EF000FA840B851C852D813E814F8158856981CF +:107F00007A818B819C81420153016101CFD12C96F2 +:107F10000FB6F894DEBF0FBECDBFDF91CF911F919A +:107F20000F91FF90EF90DF90CF90BF90AF909F9018 +:107F30008F907F906F905F904F903F902F9008951B +:107F40002F923F924F925F926F927F928F929F9269 +:107F5000AF92BF92CF92DF92EF92FF920F931F9357 +:107F6000CF93DF93CDB7DEB766970FB6F894DEBF39 +:107F70000FBECDBF69837A838B839C832D833E8321 +:107F80004F835887270138011601BA8AA98A8401CC +:107F90009B01AC010E94AC6D6B017C012D813E8187 +:107FA0004F815885CA01B9010E94AC6D9B01AC019B +:107FB000C701B6010E947A6A0E94196E23E333E377 +:107FC00043E551E40E94796A69877A878B879C87A9 +:107FD0002DEC3CEC46ED52E4C301B2010E94796AFB +:107FE0002B013C0129853A854B855C85CA01B90185 +:107FF0000E94AC6D6B017C01A3019201C301B2012F +:108000000E94AC6D9B01AC01C701B6010E947A6A67 +:108010006B017C0124ED35E64DE955E40E94796A57 +:108020004B015C0126EC3FEA4DE957E4C701B6017C +:108030000E94AC6D6D877E878F87988BA501940118 +:10804000C501B4010E94AC6D9B01AC016D857E85BC +:108050008F8598890E94796A0E94196E6B8B7C8B40 +:108060008D8B9E8BA7019601C701B6010E947A6A8B +:108070006D877E878F87988BA501940169857A85A6 +:108080008B859C850E94AC6D4B015C012B893C89E2 +:108090004D895E89C301B2010E94AC6D9B01AC01A8 +:1080A000C501B4010E94796A4B015C012CEE31E1FB +:1080B0004EE053E46D857E858F8598890E94AC6D76 +:1080C0009B01AC01C501B4010E945A6B0E946B6A0E +:1080D00021EE3EE245E652E40E94AC6DF101608380 +:1080E00071838283938324ED35E64DE955E4C7011E +:1080F000B6010E947A6A4B015C012BE339E045EC42 +:1081000057E4C701B6010E94AC6D6B017C01A5016B +:108110009401C501B4010E94AC6D9B01AC01C70183 +:10812000B6010E94796A0E94196E6B017C01A5015B +:10813000940169857A858B859C850E94AC6D4B0185 +:108140005C01A7019601C301B2010E94AC6D9B01C5 +:10815000AC01C501B4010E947A6A6B017C012CE577 +:108160003FEC4EE153E46D857E858F8598890E94B2 +:10817000AC6D9B01AC01C701B6010E945A6B0E9415 +:108180006B6A21EE3EE245E652E40E94AC6D6B0163 +:108190007C01E989FA89608371838283938321EE6C +:1081A0003EE245E652E4F101608171818281938172 +:1081B0000E945A6B0E940F6E2CEE31E14EE053E4A8 +:1081C0000E94AC6D9B01AC01C301B2010E94716DB4 +:1081D000181654F4F7FAF094F7F8F094E989FA894C +:1081E000C082D182E282F38220E030E0A90169817D +:1081F0007A818B819C810E94536B20E030E0A90141 +:10820000811112C06D817E818F8198850E94716D70 +:1082100018162CF480E090E0A4EBB2E411C080E0EA +:1082200090E0A4EBB2EC0CC069817A818B819C81D7 +:108230000E94536B87FF0AC080E090E0A0ECBFE78C +:10824000F80180839183A283B38317C029813A8187 +:108250004B815C816D817E818F8198850E945A6BF4 +:108260000E94186B21EE3EE245E652E40E94AC6D9E +:10827000F801608371838283938366960FB6F894C6 +:10828000DEBF0FBECDBFDF91CF911F910F91FF9049 +:10829000EF90DF90CF90BF90AF909F908F907F90A6 +:1082A0006F905F904F903F902F9008952F923F9244 +:1082B0004F925F926F927F928F929F92AF92BF92F6 +:1082C000CF92DF92EF92FF920F931F93CF93DF93A2 +:1082D000CDB7DEB72E970FB6F894DEBF0FBECDBF79 +:1082E00029833A834B835C83ED82FE820F83188758 +:1082F000860115019E868D8621EE3EE245E652E41A +:108300000E945A6B2B013C0121EE3EE245E652E40D +:1083100069817A818B819C810E945A6B4B015C013F +:1083200021EE3EE245E652E46D817E818F819885A3 +:108330000E945A6B6B017C01C301B2010E94576B12 +:1083400069837A838B839C83C501B4010E94576B38 +:108350006D837E838F839887C301B2010E940F6E65 +:108360002B013C01C501B4010E940F6E69877A8719 +:108370008B879C872CEE31E14EE053E469817A8152 +:108380008B819C810E94AC6D4B015C012CE53FEC24 +:108390004EE153E46D817E818F8198850E94AC6DA2 +:1083A0009B01AC01C501B4010E947A6A23E333E367 +:1083B00043E551E40E947A6A4B015C01C701B601B2 +:1083C0000E94576B9B01AC01C501B4010E94AC6DCA +:1083D000F8016083718382839383C701B6010E9491 +:1083E0000F6E9B01AC01C501B4010E94AC6DF1019F +:1083F00060837183828393832CEE31E14EE053E4FA +:10840000C301B2010E94AC6D6B017C012CE53FEC15 +:108410004EE153E469857A858B859C850E94AC6D1D +:108420009B01AC01C701B6010E94796A2DEC3CECBE +:1084300046ED52E40E947A6AED85FE856083718381 +:10844000828393832E960FB6F894DEBF0FBECDBF06 +:10845000DF91CF911F910F91FF90EF90DF90CF9020 +:10846000BF90AF909F908F907F906F905F904F9054 +:108470003F902F9008954F925F926F927F928F92CC +:108480009F92AF92BF92CF92DF92EF92FF920F93A3 +:108490001F93CF93DF9300D01F92CDB7DEB7290192 +:1084A0003A01E982FA820B831C8306E01DE020E09A +:1084B00030E040EA52E40E945A6B9B01AC01F801A3 +:1084C00066857785808991890E947A6AF601608342 +:1084D00071838283938320E030E040EA52E4C30159 +:1084E000B2010E945A6B9B01AC01F8016289738949 +:1084F000848995890E947A6AF501608371838283F9 +:10850000938320E030E044EB52E4F80166897789F8 +:10851000808D918D0E94796A2B013C0120E030E032 +:1085200040EA52E469817A818B819C810E945A6B76 +:108530009B01AC01C301B2010E947A6AF40160831D +:108540007183828393830F900F900F900F90DF9130 +:10855000CF911F910F91FF90EF90DF90CF90BF9040 +:10856000AF909F908F907F906F905F904F90089505 +:108570004F925F926F927F928F929F92AF92BF9233 +:10858000CF92DF92EF92FF920F931F932B013C014A +:1085900049015A01670178019B01AC010E94616E9B +:1085A000811170C0A5019401C501B4010E94616EE2 +:1085B000811168C0A7019601C701B6010E94616ED2 +:1085C000811160C02AE939E947E053E4C301B201EF +:1085D0000E94716D18160CF455C020E030E0A9011E +:1085E000C301B2010E94536B87FD4CC02DEC3CECE3 +:1085F0004FEE52E4C501B4010E94716D18160CF4DF +:1086000041C020E030E0A901C501B4010E94536BD4 +:1086100087FD38C0A301920160E070E084E393E439 +:108620000E94796AA50194010E94796A4B015C015C +:1086300020E030E047E153E40E94716D181614F118 +:1086400020E030E040E251E4C501B4010E94536BE8 +:1086500087FD18C020E030E044EB52E4C701B601CA +:108660000E94716D181674F020E030E044EB52EC7B +:10867000C701B6010E94536B881F8827881F91E0AD +:10868000892701C080E01F910F91FF90EF90DF904C +:10869000CF90BF90AF909F908F907F906F905F90A2 +:1086A0004F900895EF92FF920F931F93CF93DF9314 +:1086B00082E393E00E9492588B3B19F080E293E0B2 +:1086C00002C084E393E026E4E22E2DE0F22EC0E423 +:1086D000DDE08C0100541D40C8018C0F9D1F0E94DD +:1086E00092588993EC16FD06B9F78091450D8F934A +:1086F0008091440D8F938091430D8F938091420D13 +:108700008F938091410D8F938091400D8F938AE2DA +:1087100094E09F938F930E949D1F8DB79EB70896FC +:108720000FB6F8949EBF0FBE8DBFDF91CF911F9102 +:108730000F91FF90EF900895AF92BF92CF92DF928A +:10874000EF92FF920F931F93CF93DF93A82E6EE0CB +:108750000E94C44EC82F6FE08A2D0E94C44ED0E004 +:10876000DC2FCC27C82B7E016E0104E010E06EE008 +:108770008A2D0E94C44EB82E6FE08A2D0E94C44EEE +:108780002B2D30E0322F2227A901482BCA01C81611 +:10879000D90608F46C018E159F0508F47C01C80FFA +:1087A000D91F0150110919F7CE018C199D098E1995 +:1087B0009F0963E070E00E94896E613050E17507A7 +:1087C00008F48B01C801DF91CF911F910F91FF90A9 +:1087D000EF90DF90CF90BF90AF9008958F929F92CF +:1087E000AF92BF92CF92DF92EF92FF927C01A4DF13 +:1087F0009C0181E0E816F10409F190F082E0E816AE +:10880000F10451F56091400D7091410DCB01A0E054 +:10881000B0E0BC01CD01621B730B8109910941C01D +:108820006091420D7091430DCB01A0E0B0E0BC011E +:10883000CD01621B730B810991091EC06091440D2B +:108840007091450DCB01A0E0B0E0BC01CD01621BF1 +:10885000730B810991091CC081E0E816F104A9F0AD +:1088600040F082E0E816F10419F560E070E0CB0119 +:1088700018C060E070E0CB0145E2842E49E0942E00 +:1088800043E0A42E42E4B42E16C060E070E0CB01B9 +:1088900039E0832E36EF932E31EBA32E32E4B32E44 +:1088A0000AC0812C912C24EBA22E22E4B22E03C00C +:1088B00060E070E0CB010E94F56B20E030E044EB1B +:1088C00053E40E94AC6D20E030E040E859E30E94A0 +:1088D000AC6D9B01AC01C501B4010E94796A6B01CA +:1088E0007C0120E030E044EB53E40E94716D1816E7 +:1088F00054F420E030E044EB53E4C701B6010E9499 +:10890000796A6B017C0120E030E0A901C701B60162 +:108910000E94536B87FF0AC020E030E044EB53E431 +:10892000C701B6010E947A6A6B017C01C701B601DA +:10893000FF90EF90DF90CF90BF90AF909F908F907F +:1089400008950F931F93CF93DF93C0E4DDE084E39A +:1089500093E069918C010F5F1F4F0E943558C80149 +:108960000A331340B1F76BEB82E393E00E94355872 +:1089700099DE80E090E032DF6093140D7093150D66 +:108980008093160D9093170D81E090E027DF6093A0 +:10899000180D7093190D80931A0D90931B0D82E0A2 +:1089A00090E01CDF60931C0D70931D0D80931E0DD5 +:1089B00090931F0DDF91CF911F910F9108958F928A +:1089C0009F92AF92BF92CF92DF92EF92FF920F935E +:1089D0001F93CF93DF93EB0123E9E22E22E1F22EE6 +:1089E0008C016B018CE0C80ED11C69917991899141 +:1089F0009991F70181909190A190B1907F010E948F +:108A0000F56BA50194010E945A6BF8016193719373 +:108A1000819391938F01CC15DD0539F7DF91CF91CB +:108A20001F910F91FF90EF90DF90CF90BF90AF908C +:108A30009F908F9008951F920F920FB60F9211245E +:108A40000BB60F922F933F934F935F936F937F9348 +:108A50008F939F93AF93BF93EF93FF9389B18095CB +:108A6000982F907184FF03C091110E94DA51FF91F9 +:108A7000EF91BF91AF919F918F917F916F915F9196 +:108A80004F913F912F910F900BBE0F900FBE0F9003 +:108A90001F901895CF93DF93C091FF11D0910012D2 +:108AA0002097B9F081E080930212609118127091C2 +:108AB000191280911A1290911B129B01AC010E9415 +:108AC000AC6D698B7A8B8B8B9C8B10920012109201 +:108AD000FF11DF91CF9108952F923F924F925F92B5 +:108AE0006F927F928F929F92AF92BF92CF92DF92BE +:108AF000EF92FF920F931F93CF93DF93CDB7DEB723 +:108B0000CD54D1090FB6F894DEBF0FBECDBF809112 +:108B1000E312807723968FAF2397882389F020E094 +:108B200030E0A901609118127091191280911A1207 +:108B300090911B120E94536B882311F40C944A4E9F +:108B4000209118122F8B30911912388F40911A12E0 +:108B5000498F50911B125A8F809128128B839091CC +:108B600029129D83A0912A12AE83B0912B12BC834F +:108B70000091141210911512E0911612E987F091EC +:108B80001712FD87209107123091081240910912A7 +:108B900050910A122DA33EA34FA358A73091031260 +:108BA0003DAF409104124EAF509105125FAF8091DE +:108BB000061221968FAF219720910F12309110123B +:108BC00040911112509112122DAB3EAB4FAB58AFEA +:108BD0003091A81122963FAF22974091FE114BA7EA +:108BE0005091821124965FAF2497809181118B8FD1 +:108BF00090919E0E25969FAF2597A091FF11B09161 +:108C00000012BA8BA98B20910B1230910C1240915B +:108C10000D1250910E1229AF3AAF4BAF5CAF3091AD +:108C200020123B8B409121124C8B509122125D8B74 +:108C3000809123128E8B90911C129C8FA0911D12FB +:108C4000AD8FB0911E12BE8FE0911F12EF8F30904A +:108C5000241220902512F0912612F98320912712D8 +:108C60002A83809183115BA5851709F4F4C649898D +:108C70005A89452B09F033C224965FAD24978B8D1A +:108C8000581709F478C7A82EB12CA9E2AA9DC001F3 +:108C9000AB9D900D1124FC01E156F14FFA8BE98B4D +:108CA00080910212882319F010920212BCC08091A8 +:108CB00001128F5F853019F08093011202C010926B +:108CC0000112E091011221E12E9FF0011124E755DC +:108CD000FE4E89E28A9DA0018B9D500D11244156C4 +:108CE000514F7A01DA018C91808311964D915D91FB +:108CF0006D917C911497DB01CA0123E0880F991FC5 +:108D0000AA1FBB1F2A95D1F781839283A383B483C3 +:108D1000D70115964D915D916D917C911897DB016E +:108D2000CA0133E0880F991FAA1FBB1F3A95D1F7DC +:108D300085839683A783B087D70119964D915D915E +:108D40006D917C911C97DB01CA0143E0880F991F4C +:108D5000AA1FBB1F4A95D1F781879287A387B48743 +:108D6000D7011D966D917D918D919C9150978B01AE +:108D70009C0153E0000F111F221F331F5A95D1F79A +:108D8000058716872787308B0E94F36B6DAF7EAF08 +:108D90008FAF21969FAF2197F70125A136A147A15B +:108DA00050A50E945A6B6DA37EA38FA398A79B0129 +:108DB000AC0160E070E080EA9FE30E945A6B69AF0B +:108DC0007AAF8BAF9CAF2396FFAD2397FF23D1F0F3 +:108DD0002B893C894D895E896B897C898D899E8927 +:108DE0000E94AC6DD70151966D937D938D939C93AA +:108DF0005497BB89BF8BEC89E88FFD89F98F2E8949 +:108E00002A8F0DC0D70151966D917D918D919C91C6 +:108E100054970E94196E6F8B788F898F9A8F1DAA35 +:108E20001EAA1FAA18AE29E22A9DF0012B9DF00D63 +:108E30001124E156F14FFE87ED87C1A0D2A0E3A037 +:108E4000F4A0A701960160E070E080E09FE30E943B +:108E50005A6B69877A878B879C8723963FAD2397C8 +:108E60003323F1F142E040931312AD85BE85959610 +:108E70004D905D906D907C90989751968D909D90BF +:108E8000AD90BC905497A50194010E94AC6D9B01DC +:108E9000AC01C301B2010E94796A8B0189879D8769 +:108EA00020E030E0A9010E94536B87FF1BC1A7019E +:108EB0009601C701B6010E947A6AA30192010E943D +:108EC000AC6D9B01AC01C501B4010E94796A0E949E +:108ED000196E6B8B7C8B8D8B9E8B3F82288615C188 +:108EE00010921312ED85FE85F5A1FF83AD85BE8539 +:108EF0009696BC91B887ED85FE8507A110A5EB8DF0 +:108F0000EF5FE23109F4E0E02496FFAD2497EF171C +:108F100089F029E22E9FF0011124E156F14F618979 +:108F20007289838994890E94196E6B8B7C8B8D8BDF +:108F30009E8B04C01B8A1C8A1D8A1E8A2B893C8931 +:108F40004D895E896B897C898D899E890E94AC6D73 +:108F50002B013C0189E28A9DA0018B9D500D1124BB +:108F60004156514F5AA349A3DA0151962D913D9193 +:108F70004D915C9154972D873E874F87588BA30165 +:108F800092016D857E858F8598890E94796A2985F1 +:108F90003A854B855C850E94AC6D2F813885A80190 +:108FA0000E947A6A20E030E040E05FE30E94AC6D0E +:108FB000362E272E89839A8320E030E0A9010E9473 +:108FC000716D18160CF095C0232D322D49815A81F0 +:108FD0006F817885C8010E94716D18160CF071C000 +:108FE000E9A1FAA1858C968CA78CB0A0A30192016F +:108FF000C501B4010E94796A29853A854B855C8553 +:109000000E94AC6D6B837D838E839C839B01AC013E +:10901000632D722D89819A810E94716D181694F5C5 +:10902000C501B4010E94196E6C8F7D8F8E8F9F8F4A +:10903000A50194016D857E858F8598890E94536B6B +:10904000811106C0F1E0F093131209831A835DC009 +:109050002D853E854F855889C501B4010E94796AE6 +:1090600029853A854B855C850E94AC6D9B01AC01DE +:109070006F817885C8010E94796A6F8378878983B8 +:109080009A8343C0A7019601C701B6010E947A6A7C +:10909000232D322D49815A810E94AC6DA30192018A +:1090A0000E947A6A0E94196E6C8F7D8F8E8F9F8FBF +:1090B0003F8228863B822D8229812E833A813C8300 +:1090C00024C042E04093131209831A835F895C8FA6 +:1090D000888D8D8F998D9E8FAA8DAF8F16C03F8200 +:1090E000288617C03F8228861B8A1C8A1D8A1E8AF2 +:1090F00010C0BB89BC8FEC89ED8FFD89FE8F2E8956 +:109100002F8F1F82188619821A8200E010E01986BC +:109110001D8622965FAD2297452F50E05AA749A79A +:1091200086E0849FF001859FF00D1124EC57FE4EE0 +:10913000809101128283A989BA899596BC91B8ABB6 +:10914000E989FA89F6A1F9ABA989BA899796BC9100 +:109150002696BFAF2697E989FA89F0A52796FFAF33 +:10916000279729AD3AAD4BAD5CAD68A979A98B2F96 +:109170009F2F0E94796A6CA77DA78EA79FA720E0EA +:1091800030E0A9010E94536B87FF04C01CA61DA6F6 +:109190001EA61FA62091131228A32B813D814E816C +:1091A0005C816F81788589819A810E94536B8111DE +:1091B00005C032E028963FAF289704C041E02896CA +:1091C0004FAF289728A859A92E965FAF2E972696BD +:1091D0008FAD26972D968FAF2D9727963FAC27976B +:1091E0008EE3C82E83ECD82E8EE2E82E89E3F82E8B +:1091F000412C512C3201C9A2DAA2EBA2FCA238A167 +:10920000332321F0313009F485C0C5C0A989BA895A +:1092100091962D913D914D915C919497C701B60126 +:109220000E94AC6D4B015C0120E030E040E05FE368 +:109230000E94AC6D2F89388D498D5A8D0E947A6AB3 +:10924000A70196010E94AC6D9B01AC01622D2E9688 +:109250007FAD2E972D968FAD2D97932D0E94796A15 +:10926000262E2E967FAF2E972D968FAF2D97392EC7 +:109270002F81388549815A810E94536B87FF3DC0F9 +:109280002F81388549815A8168A979A926968FADA1 +:10929000269727969FAD27970E94796A9B01AC017C +:1092A0000E947A6A6B017C012C8D3D8D4E8D5F8D05 +:1092B0006F89788D898D9A8D0E947A6A9B01AC01A5 +:1092C000C701B6010E945A6B6B017C012896BFADA5 +:1092D0002897B8A3EC8DEF8BFD8DF88F2E8D298FFD +:1092E0003F8D3A8F2F8048852E964FAF2E9759810C +:1092F0002D965FAF2D973A80EBC0A50194016F8941 +:10930000788D898D9A8D0E947A6A6F8B788F898F7C +:109310009A8FDEC02C8D3D8D4E8D5F8DC701B601BD +:109320000E94AC6D9B01AC01622D2E967FAD2E97F5 +:109330002D968FAD2D97932D0E94796A4B015C017C +:109340002B813D814E815C810E94536B87FFB8C0A9 +:109350002B813D814E815C81622D2E967FAD2E97B3 +:109360002D968FAD2D97932D0E94796A2C8D3D8D72 +:109370004E8D5F8D0E945A6B6B017C012B808D811D +:109380002E968FAF2E979E812D969FAF2D973C8066 +:10939000A2E0A8A39DC0E989FA8921A132A143A135 +:1093A00054A1C701B6010E94AC6D4B015C012F892D +:1093B000388D498D5A8D0E94536B87FF52C020E033 +:1093C00030E040E05FE3C501B4010E94AC6D9B0159 +:1093D000AC016F89788D898D9A8D0E94796AA70179 +:1093E00096010E94AC6D9B01AC01622D2E967FAD63 +:1093F0002E972D968FAD2D97932D0E94796A2996E1 +:109400006FAF29972A967FAF2A972B968FAF2B970E +:109410002C969FAF2C97980149855D850E94716DB0 +:109420001816FCF4A50194016F89788D898D9A8DA9 +:109430000E94796A6F8B788F898F9A8F29962FACCB +:1094400029972A96FFAD2A972E96FFAF2E972B9637 +:109450002FAD2B972D962FAF2D972C963FAC2C9799 +:1094600037C0980149855D85622D2E967FAD2E9778 +:109470002D968FAD2D97932D0E94796A9B01AC019B +:109480000E947A6A6B017C012B893C894D895E8937 +:109490006F89788D898D9A8D0E947A6A9B01AC01C3 +:1094A000C701B6010E945A6B6B017C01202E2E96DB +:1094B0001FAF2E9739852D963FAF2D973D8408C05D +:1094C000282C2E969FAE2E972D96AFAE2D973B2C27 +:1094D000A7019601C301B2010E947A6A2B013C01E7 +:1094E00029A13AA14BA15CA10E94536B87FF07C041 +:1094F000A301920169A17AA18BA19CA120C02CA5F6 +:109500003DA54EA55FA5622D2E967FAD2E972D967B +:109510008FAD2D97932D0E94716D181644F52EE393 +:1095200033EC4EE259E369A17AA18BA19CA10E9480 +:109530007A6A69A37AA38BA39CA3A30192010E94D8 +:10954000796A6B017C01980149855D85622D2E96B3 +:109550007FAD2E972D968FAD2D97932D0E94716D17 +:1095600018160CF44CCE48A14093131203C058A116 +:10957000509313122DA13EA14FA158A5622D2E96F6 +:109580007FAD2E972D968FAD2D97932D0E94AC6DAC +:1095900068A379A38CA798AB0E94406B6B017C01F8 +:1095A0006DAD7EAD8FAD21969FAD21970E94406B32 +:1095B0004B015C01A70196010E94796A0E94C76B6A +:1095C00069AB7AAB8BAB9CABA6E089A59AA5A89FAB +:1095D000F001A99FF00D1124EC57FE4E29A93AA9DC +:1095E00031832083232B09F087C023965FAD239717 +:1095F000552309F481C0C801A985BD858093141243 +:1096000090931512A0931612B09317128B899C8910 +:10961000AD89BE898093201290932112A0932212CB +:10962000B09323128C8D9D8DAE8DBF8D80931C12B7 +:1096300090931D12A0931E12B0931F128B819D81D7 +:10964000AE81BC818093281290932912A0932A1294 +:10965000B0932B128F819885A981BA8180932412AF +:1096600090932512A0932612B093271222968FADC5 +:1096700022978093A811A989BA89B0930012A09368 +:10968000FF1129AD3AAD4BAD5CAD20930B12309379 +:109690000C1240930D1250930E123B8D309381119A +:1096A0008DA19EA1AFA1B8A5809307129093081237 +:1096B000A0930912B0930A129BA59093FE111092E9 +:1096C00018121092191210921A1210921B12109264 +:1096D0000F12109210121092111210921212C092C8 +:1096E0000312D0920412E0920512F09206122DA1FC +:1096F0003EA14FA158A565C12DA93EA94FA958ADBE +:10970000C301B2010E947A6A2B013C0128A139A150 +:109710004CA558A9C501B4010E94796A9B01AC010E +:10972000C301B2010E945A6B4B015C0128A139A10F +:109730004CA558A9C701B6010E94796AA5019401F8 +:109740000E94AC6D6DAB7EAB8FAB98AF20EC31EE71 +:1097500044E65EE4C501B4010E94AC6D0E94406B1A +:109760000E94C76B603DE7E07E078105910560F4CC +:1097700046E029A53AA5429FF001439FF00D112430 +:10978000EC57FE4E158253C0603A5FE075078105C5 +:10979000910560F426E0A9A5BAA52A9FF0012B9FA8 +:1097A000F00D1124EC57FE4E31E011C060344FE152 +:1097B00074078105910568F426E0A9A5BAA52A9F3A +:1097C000F0012B9FF00D1124EC57FE4E32E0358353 +:1097D0000CC0A6E049A55AA5A49FF001A59FF00DD5 +:1097E0001124EC57FE4EB3E0B58346E029A53AA517 +:1097F000429FF001439FF00D1124EC57FE4E25814E +:10980000022E04C096958795779567950A94D2F7AE +:10981000A9A9BAA902C0AA0FBB1F2A95E2F7B18372 +:10982000A08361157105B1E08B07910568F446E0EE +:1098300029A53AA5429FF001439FF00D1124EC5752 +:10984000FE4E7483638304C08FEF9FEF9483838302 +:10985000BBA4B39496E0B91201C0B12C980149851C +:109860005D85622D2E967FAD2E972D968FAD2D970F +:10987000932D0E94716D1816CCF4822D2E969FADFB +:109880002E972D96AFAD2D97B32DE989FA8985A333 +:1098900096A3A7A3B0A7F8A1FDAF29A12EAF3CA521 +:1098A0003FAF48A921964FAF2197CDC020E030E0CF +:1098B000A901622D2E967FAD2E972D968FAD2D97F7 +:1098C000932D0E94716D18160CF0A6C0C801A985D1 +:1098D000BD858093141290931512A0931612B09325 +:1098E00017128B899C89AD89BE8980932012909331 +:1098F0002112A0932212B09323128C8D9D8DAE8DD8 +:10990000BF8D80931C1290931D12A0931E12B093D2 +:109910001F128B819D81AE81BC8180932812909310 +:109920002912A0932A12B0932B128F819885A981B6 +:10993000BA818093241290932512A0932612B0939B +:1099400027125BA55093A81189899A8990930012D8 +:109950008093FF1129AD3AAD4BAD5CAD20930B1256 +:1099600030930C1240930D1250930E123B8D309396 +:1099700081118DA19EA1AFA1B8A5809307129093EC +:109980000812A0930912B0930A12B092FE1110921D +:1099900018121092191210921A1210921B12109291 +:1099A0000F12109210121092111210921212C092F5 +:1099B0000312D0920412E0920512F09206129C015A +:1099C000AD01C701B6010E945A6BA989BA89959663 +:1099D0006D937D938D939C9398975CD8BB8DB0933A +:1099E0009E0EC35BDF4F0FB6F894DEBF0FBECDBF38 +:1099F000DF91CF911F910F91FF90EF90DF90CF906B +:109A0000BF90AF909F908F907F906F905F904F909E +:109A10003F902F900C9436202496EFAD2497FB8D29 +:109A2000EF1779F08F2F8F5F823109F480E02B8D53 +:109A300025963FAD2597231303C025968FAF259715 +:109A40008B8F1A8A198A3F8028844BA522964FAFA4 +:109A50002297BBA606C9C801A985BD8580931412AB +:109A600090931512A0931612B09317128B899C89AC +:109A7000AD89BE898093201290932112A093221267 +:109A8000B09323128F89988DA98DBA8D8093181267 +:109A900090931912A0931A12B0931B128C8D9D8D66 +:109AA000AE8DBF8D80931C1290931D12A0931E1239 +:109AB000B0931F128B819D81AE81BC81809328124F +:109AC00090932912A0932A12B0932B12832D922DDA +:109AD000A981BA818093241290932512A093261213 +:109AE000B093271222968FAD22978093A811A9894F +:109AF000BA89B0930012A093FF1129AD3AAD4BADD6 +:109B00005CAD20930B1230930C1240930D125093C6 +:109B10000E123B8D309381118DAD9EADAFAD219670 +:109B2000BFAD21978093031290930412A093051266 +:109B3000B09306128DA19EA1AFA1B8A58093071284 +:109B400090930812A0930912B0930A122DA93EA96E +:109B50004FA958AD20930F12309310124093111259 +:109B6000509312123BA53093FE1125964FAD2597C9 +:109B700040939E0E8FC0C801A985BD8580931412A5 +:109B800090931512A0931612B09317128B899C898B +:109B9000AD89BE898093201290932112A093221246 +:109BA000B09323128F89988DA98DBA8D8093181246 +:109BB00090931912A0931A12B0931B128C8D9D8D45 +:109BC000AE8DBF8D80931C1290931D12A0931E1218 +:109BD000B0931F128B819D81AE81BC81809328122E +:109BE00090932912A0932A12B0932B12832D922DB9 +:109BF000A981BA818093241290932512A0932612F2 +:109C0000B093271222965FAD22975093A81110921D +:109C100000121092FF1189AD9AADABADBCAD80932F +:109C20000B1290930C12A0930D12B0930E12249667 +:109C30009FAD2497909381118DAD9EADAFAD2196D0 +:109C4000BFAD21978093031290930412A093051245 +:109C5000B09306122DA13EA14FA158A52093071243 +:109C6000309308124093091250930A128DA99EA9AD +:109C7000AFA9B8AD80930F1290931012A093111258 +:109C8000B09312129BA59093FE112596AFAD259728 +:109C9000A0939E0EC35BDF4F0FB6F894DEBF0FBEDE +:109CA000CDBFDF91CF911F910F91FF90EF90DF908B +:109CB000CF90BF90AF909F908F907F906F905F906C +:109CC0004F903F902F900895CF93DF930E941630CE +:109CD0008BE2E1E0F2E1DF011D928A95E9F783E290 +:109CE000EBE7FEE0DF011D928A95E9F71092001282 +:109CF0001092FF11109283111092A81181E08093AD +:109D0000FE1110927A0E0E94972F81B39091790ED6 +:109D10009170C92FB0E0DB2F96E0CC0FDD1F9A9534 +:109D2000E1F78F7BC82BC1BBEBE0F1E09081809124 +:109D3000790E8270880F880F977F892B808381B37B +:109D40009091790E92FB992790F98E7F892B81BB98 +:109D50008091780E80FD8F9A80FF8F9880819091FE +:109D6000780E92708D7F892B808321B39091780E2D +:109D70009470892F90E095958795922F9D7F892BE0 +:109D800081BBDF91CF910895CF93DF93C62F8130B0 +:109D900009F48EC038F1823009F069C10E94713C2B +:109DA0008CE60E94013C0E944B3C8C2F0E94013C9F +:109DB0000E944B3C0E94713C8DE60E94013C0E9437 +:109DC0004B3C62E070E080E090E00E94C224559A33 +:109DD0005D9A62E070E080E090E00E94C224D8E0EA +:109DE000C0E002C10E94E63D8CE60E94763D0E94E2 +:109DF000C03D8C2F0E94763D0E94C03D0E94E63DF2 +:109E00008DE60E94763D0E94C03D62E070E080E0F9 +:109E100090E00E94C224399A419A62E070E080E0AA +:109E200090E00E94C224D8E0C0E0439865E070E072 +:109E300080E090E00E94C224439ACC0F65E070E07D +:109E400080E090E00E94C22439983199C16065E0B9 +:109E500070E080E090E00E94C224D15031F7439836 +:109E6000399A419A62E070E080E090E00E94C2245A +:109E7000439A65E070E080E090E00E94C22443983D +:109E800062E070E080E090E00E94C224399A419A3A +:109E900062E070E080E090E00E94C224439862E0BB +:109EA00070E080E090E00E94C2240E94A83DE0C0E3 +:109EB0000E94443D8CE60E94893C0E94093D8C2F03 +:109EC0000E94893C0E94093D0E94443D8DE60E940B +:109ED000893C0E94093D62E070E080E090E00E94D1 +:109EE000C22480910101846080930101809102016C +:109EF00084608093020162E070E080E090E00E9464 +:109F0000C224D8E0C0E0809102018F7780930201E3 +:109F100065E070E080E090E00E94C2248091020140 +:109F2000806880930201CC0F65E070E080E090E0F3 +:109F30000E94C224809101018B7F80930101809156 +:109F4000000182FDC16065E070E080E090E00E9469 +:109F5000C224D150C1F6809102018F778093020113 +:109F600080910101846080930101809102018460ED +:109F70008093020162E070E080E090E00E94C224E1 +:109F80008091020180688093020165E070E080E0CA +:109F900090E00E94C224809102018F778093020199 +:109FA00062E070E080E090E00E94C22480910101B4 +:109FB000846080930101809102018460809302019A +:109FC00062E070E080E090E00E94C2248091020193 +:109FD0008F778093020162E070E080E090E00E9461 +:109FE000C2240E94D73C44C05E9865E070E080E0E7 +:109FF00090E00E94C2245E9ACC0F65E070E080E0A1 +:10A0000090E00E94C22455984D99C16065E070E0CF +:10A0100080E090E00E94C224D15031F75E98559ABA +:10A020005D9A62E070E080E090E00E94C2245E9A57 +:10A0300065E070E080E090E00E94C2245E9862E0FB +:10A0400070E080E090E00E94C224559A5D9A62E040 +:10A0500070E080E090E00E94C2245E9862E070E0D0 +:10A0600080E090E00E94C2240E94333C01C0C0E026 +:10A070008C2FDF91CF910895EAE8F2E124813581B8 +:10A08000DC010E94C76EA1E0B1E02C9128602C9306 +:10A09000A0EAB0E02C9120682C93DC01CB012AE0EF +:10A0A000B695A795979587952A95D1F79093A9008E +:10A0B0008093A800868180618093A1000895CF934A +:10A0C000DF9321E5829FC0011124EC01D55F40E5BB +:10A0D00050E0BE018AE392E10E949A58892B51F424 +:10A0E00010923A1240E550E06AE372E1CE01DFD708 +:10A0F00080E001C081E0DF91CF91089590E0FC0104 +:10A100003197E231F10508F04EC08827E654FF4F41 +:10A110008F4F0C94BF6E809180008F7703C0809129 +:10A1200080008F7D80938000089580918000877FDC +:10A13000F9CF84B58F7702C084B58F7D84BD089533 +:10A140008091B0008F7703C08091B0008F7D8093A5 +:10A15000B0000895809190008F7707C080919000A3 +:10A160008F7D03C080919000877F80939000089539 +:10A170008091A0008F7707C08091A0008F7D03C0E1 +:10A180008091A000877F8093A00008958091200196 +:10A190008F7707C0809120018F7D03C080912001BF +:10A1A000877F8093200108951F93CF93DF93282FFB +:10A1B00030E0F901EA57F54F8491F901E05CF54F81 +:10A1C000D491F901E650F64FC491CC23B9F0162F83 +:10A1D000811194DFEC2FF0E0EE0FFF1FE052F64FFD +:10A1E000A591B4919FB7F894111104C08C91D095AA +:10A1F000D82302C0EC91DE2BDC939FBFDF91CF917F +:10A200001F910895863308F0865390917B00282F84 +:10A210002870977F922B90937B0087708064809347 +:10A220007C0080917A00806480937A0080917A002B +:10A2300086FDFCCF809178002091790090E0922BF0 +:10A2400008951F920F920FB60F9211240BB60F9222 +:10A250002F933F934F935F936F937F938F939F932E +:10A26000AF93BF93EF93FF93809135129091361285 +:10A270009093250180932401E0913312F0913412E0 +:10A28000309709F01995FF91EF91BF91AF919F9190 +:10A290008F917F916F915F914F913F912F910F908F +:10A2A0000BBE0F900FBE0F901F9018951F920F922C +:10A2B0000FB60F9211240BB60F922F933F934F932B +:10A2C0005F936F937F938F939F93AF93BF93EF931E +:10A2D000FF9380918C1290918D129093A5008093A2 +:10A2E000A400E0918A12F0918B12309709F0199531 +:10A2F000FF91EF91BF91AF919F918F917F916F915E +:10A300005F914F913F912F910F900BBE0F900FBE19 +:10A310000F901F901895E2E7F0E080818E7F808398 +:10A3200008951F920F920FB60F9211248F939F934F +:10A330008091080290910902909395008093940077 +:10A340009F918F910F900FBE0F901F9018951F92A5 +:10A350000F920FB60F9211240BB60F922F933F93CB +:10A360004F935F936F937F938F939F93AF93BF931D +:10A37000EF93FF9380912E1290912F128093B20051 +:10A38000E0912C12F0912D12309709F01995FF9160 +:10A39000EF91BF91AF919F918F917F916F915F915D +:10A3A0004F913F912F910F900BBE0F900FBE0F90CA +:10A3B0001F9018958091911284FD25C09FB7F89445 +:10A3C000809191128061809391129FBF0E94DC3234 +:10A3D000F3D68091E312982F9C7021F49091E412AF +:10A3E000913089F49FB7843029F4F8948091E11278 +:10A3F000806204C0F8948091E11288608093E11239 +:10A400009FBF0C94163008952F923F924F925F9207 +:10A410006F927F928F929F92AF92BF92CF92DF9274 +:10A42000EF92FF920F931F93CF93DF93CDB7DEB7D9 +:10A43000CB55D1090FB6F894DEBF0FBECDBF2A961B +:10A440008FAF2A971B012F962CAF3DAF4EAF5FAF5A +:10A450002F976C960FAF6C978091D01285FF51C0EB +:10A460003B0103E912E17B012CE0E20EF11CDD244B +:10A47000D394D3018D909D90AD90BD903D0120E08F +:10A4800030E0A901C501B4010E94716D181654F0A5 +:10A49000F80124A135A146A157A1C501B4010E942C +:10A4A000536B87FDD092E5128091E512882319F154 +:10A4B0008091E312883061F07DDF9FB7F89480913E +:10A4C000E11285608093E1129FBF0E940B2519C0A5 +:10A4D0009FB7F894809191128860809391129FBFEA +:10A4E0000E940B258091E21281110BC08091E31232 +:10A4F0008111F6CFE1CF0C5F1F4FE614F70409F08E +:10A50000B8CF8091E312823009F4DAC2F101808180 +:10A510009181A281B38129968CAF9DAFAEAFBFAFC1 +:10A52000299784819581A681B78125968CAF9DAFAF +:10A53000AEAFBFAF259780859185A285B385219663 +:10A540008CAF9DAFAEAFBFAF2197AE01435C5F4F05 +:10A55000BE016F5B7F4FCE018B5B9F4F0E94FE3D24 +:10A560002196ECACFDAC0EAD1FAD219725962CAD20 +:10A570003DAD4EAD5FAD259729966CAD7DAD8EADF1 +:10A580009FAD2997DE0191964D01FE017D965F01F9 +:10A5900018976D010E94A03FE9A0FAA00BA11CA191 +:10A5A0002D8D3E8D4F8D58A1698D7A8D8B8D9C8D13 +:10A5B0000E94B842882309F47FC26091280D7091EF +:10A5C000290D80912A0D90912B0D0E94F56B2B0186 +:10A5D0003C016091240D7091250D8091260D909184 +:10A5E000270D0E94F56B63966CAF7DAF8EAF9FAF6A +:10A5F00063976091200D7091210D8091220D9091B3 +:10A60000230D0E94F56BFE01BD964F019E01275D53 +:10A610003F4F5901DE0195966D01830172016396EA +:10A620002CAD3DAD4EAD5FAD63970E94523FA4018E +:10A63000B501C6010E94A93E0E94CC372A96BFAD43 +:10A640002A97BB2319F0B13041F0DDC0E1E0F0E022 +:10A650002B96FFAFEEAF2B97DAC020E030E048EC4E +:10A6600052E42F966CAD7DAD8EAD9FAD2F970E94BD +:10A67000716D181654F480E090E0A8ECB2E42F96C7 +:10A680008CAF9DAFAEAFBFAF2F972DA13EA14FA115 +:10A6900058A5D1016D917D918D919C910E94796A0F +:10A6A0002B013C0129A53AA54BA55CA5F1016481CC +:10A6B0007581868197810E94796A4B015C012DA585 +:10A6C0003EA54FA558A9D10118966D917D918D9108 +:10A6D0009C911B970E94796A6B017C01A3019201F6 +:10A6E000C301B2010E94AC6D2B013C01A501940194 +:10A6F000C501B4010E94AC6D9B01AC01C301B20164 +:10A700000E947A6A4B015C01A7019601C701B6015C +:10A710000E94AC6D9B01AC01C501B4010E947A6A34 +:10A720000E94196E20E030E040EF51E40E94AC6DD1 +:10A730002F962CAD3DAD4EAD5FAD2F970E945A6B5D +:10A740000E94C76B2B967FAF6EAF2B976A30710557 +:10A7500030F42AE030E02B963FAF2EAF2B9720E06D +:10A7600030E040E950E42F966CAD7DAD8EAD9FADED +:10A770002F970E94AC6D20E030E048EC52E40E943C +:10A780005A6B20E030E040E05FE30E947A6A20E00C +:10A7900030E040E752E40E94AC6D20E030E040E75A +:10A7A00052E40E94AC6D6B017C016093AB1270931C +:10A7B000AC128093AD129093AE126093AF1270936F +:10A7C000B0128093B1129093B21220E030E442E9CB +:10A7D00055E40E94716D87FF09C0C092B312D092F8 +:10A7E000B412E092B512F092B61211C080E090E47B +:10A7F000A2E9B5E48093B3129093B412A093B5127A +:10A80000B093B61204C02B961FAE1EAE2B972B969C +:10A81000AEADBFAD2B97BD0180E090E00E94F36B21 +:10A820006B017C012DA13EA14FA158A5F1016081D2 +:10A830007181828193810E94796AA70196010E94A9 +:10A840005A6B63966CAF7DAF8EAF9FAF639729A5B0 +:10A850003AA54BA55CA5D10114966D917D918D9182 +:10A860009C9117970E94796AA70196010E945A6BE2 +:10A8700067966CAF7DAF8EAF9FAF67972DA53EA556 +:10A880004FA558A9F10160857185828593850E9445 +:10A89000796AA70196010E945A6B6B966CAF7DAFE7 +:10A8A0008EAF9FAF6B9722242394312C2B96EEAD65 +:10A8B000FFAD2B97E215F30508F4FCC0B101032CA2 +:10A8C000000C880B990B0E94F56B6B017C019B01BE +:10A8D000AC0163966CAD7DAD8EAD9FAD63970E946C +:10A8E000AC6D9B01AC016DA17EA18FA198A50E94CA +:10A8F0007A6A6D877E878F87988BA7019601679606 +:10A900006CAD7DAD8EAD9FAD67970E94AC6D9B0128 +:10A91000AC0169A57AA58BA59CA50E947A6A698B72 +:10A920007A8B8B8B9C8BA70196016B966CAD7DAD62 +:10A930008EAD9FAD6B970E94AC6D9B01AC016DA578 +:10A940007EA58FA598A90E947A6A6D8B7E8B8F8BCE +:10A95000988FAE014B5E5F4FBE016F5E7F4FCE01A1 +:10A960000D960E94FE3D6D857E858F85988960934A +:10A970002C0D70932D0D80932E0D90932F0D298902 +:10A980003A894B895C892093300D3093310D409387 +:10A99000320D5093330DED88FE880F89188DE092AB +:10A9A000340DF092350D0093360D1093370DDE0106 +:10A9B000D1964D01FE01F5965F0118966D010E943A +:10A9C000A03FC9A8DAA8EBA8FCA88DA89EA8AFA8AC +:10A9D000B8AC2091140D3091150D4091160D509189 +:10A9E000170D69AD7AAD8BAD9CAD0E94796A20E000 +:10A9F00030E040EA52E40E94AC6D0E94C26B072E28 +:10AA0000000C880B990B0E94F56B69837A838B830A +:10AA10009C832091180D3091190D40911A0D509181 +:10AA20001B0DC501B4010E94796A20E030E040EAC4 +:10AA300052E40E94AC6D0E94C26B072E000C880B82 +:10AA4000990B0E94F56B6D837E838F83988720918D +:10AA50001C0D30911D0D40911E0D50911F0DC70111 +:10AA6000B6010E94796A20E030E044EB52E40E9493 +:10AA70007A6A20E030E040EA52E40E94AC6D0E9425 +:10AA8000C26B072E000C880B990B0E94F56B69872F +:10AA90007A878B879C870E940B258091E212811117 +:10AAA0000DC0909181118091B30C98130AC00E943F +:10AAB0007938F1CF80E079C083E377C082E075C058 +:10AAC00074C089809A80AB80BC80C501B4010E94AB +:10AAD000C26B6093200D7093210D8093220D909393 +:10AAE000230DCD80DE80EF80F884C701B6010E947F +:10AAF000C26B6093240D7093250D8093260D909367 +:10AB0000270D49845A846B847C84C301B2010E945E +:10AB1000C26B6093280D7093290D80932A0D90933A +:10AB20002B0D2091931230919412409195125091D7 +:10AB30009612C501B4010E945A6B69837A838B8394 +:10AB40009C832091971230919812409199125091C4 +:10AB50009A12C701B6010E945A6B6D837E838F8360 +:10AB6000988720919B1230919C1240919D12509198 +:10AB70009E12C301B2010E945A6B69877A878B8744 +:10AB80009C876C962FAD6C972F964CAD5DAD6EADDE +:10AB90007FAD2F97CE0101960E948321F1E0F093C3 +:10ABA0003C0D2FEF221A320A81CEC55ADF4F0FB665 +:10ABB000F894DEBF0FBECDBFDF91CF911F910F91F3 +:10ABC000FF90EF90DF90CF90BF90AF909F908F90CD +:10ABD0007F906F905F904F903F902F9008951F92BD +:10ABE0000F920FB60F9211240BB60F922F933F9333 +:10ABF0004F935F936F937F938F939F93AF93BF9385 +:10AC0000EF93FF938091E312813069F08091E1121C +:10AC1000811109C0CFDB9FB7F8948091E112836066 +:10AC20008093E1129FBFFF91EF91BF91AF919F91F0 +:10AC30008F917F916F915F914F913F912F910F90E5 +:10AC40000BBE0F900FBE0F901F90189589B18071A9 +:10AC50009091D01296FD02C090E18927882319F0C7 +:10AC600011F087E0089580E008952F923F924F926F +:10AC70005F926F927F928F929F92AF92BF92CF928C +:10AC8000DF92EF92FF920F931F93CF93DF93CDB795 +:10AC9000DEB768970FB6F894DEBF0FBECDBF9091B8 +:10ACA000E2129111A6C1782E23E932E1398B288B6B +:10ACB0005901CE010D964C0100E010E0C12CD12CC1 +:10ACC0007601A72DB0E0BD8BAC8B802F002321F047 +:10ACD000013021F094E003C091E001C092E0F40162 +:10ACE00091934F012C893D8902C0359527958A950E +:10ACF000E2F720FF1BC020E030E040EC5FEBD50125 +:10AD000094966D917D918D919C9197970E94AC6DD9 +:10AD1000362E472E582E692EA70196010E94536B9E +:10AD200087FD04C0C32CD42CE52CF62C0F5F1F4FDD +:10AD3000B4E0AB0EB11C0330110539F68090D61289 +:10AD40009090D712A090D812B090D91284E0682EBB +:10AD500001E066EE72E1CE0101960E94DF4480912F +:10AD6000D112E82FF0E0FF8BEE8BFE01319622EE40 +:10AD700032E13B8B2A8B1901CE010D962C0180E02C +:10AD800090E0188E10E0B701A60170582C893D891B +:10AD9000082E02C0359527950A94E2F720FF25C0BA +:10ADA000A88DAF5FA88FD10114961D921D921D92A0 +:10ADB0001C9217972E893F89082E02C0359527953A +:10ADC0000A94E2F720FF03C0002319F007C0002314 +:10ADD00029F0C082D182E282F38204C04083518391 +:10ADE00062837383D2012C91122B0196BFEF4B1A11 +:10ADF0005B0A349624E0220E311C8330910531F633 +:10AE0000388D632F70E080E090E00E94F36B0E9429 +:10AE1000196E9B01AC01C501B4010E94AC6D6B01C0 +:10AE20007C011093FF120E94142020E0B701A601BC +:10AE3000CE0101960E9483210E946C450E94B0328F +:10AE40000023E1F003DFFE013D9620E030E090E0DA +:10AE50006191462F412359F0AC01022E02C0559555 +:10AE600047950A94E2F740FF02C0609516232F5FD2 +:10AE70003F4F2330310561F71093FF120E946C455C +:10AE8000809191128473B1F080919112807321F0BE +:10AE900091DA0E940B25ADC00111A6C0D7DE872133 +:10AEA000B9F79FB7F894809191128B7F809391129C +:10AEB0009FBF04C0812F877009F0C2CF0E94644EEB +:10AEC0000E9425208091DA129091DB120E940025C9 +:10AED00081E00827C9F020E030E040EA50E46091CA +:10AEE000DC127091DD128091DE129091DF120E94CF +:10AEF000AC6D6B017C018090D2129090D312A09027 +:10AF0000D412B090D51210C0C090DC12D090DD12D7 +:10AF1000E090DE12F090DF128090D6129090D7125F +:10AF2000A090D812B090D9126A94611012CFE0901C +:10AF3000D112F12C8090DC129090DD12A090DE12E4 +:10AF4000B090DF122401350177FA709477F870948D +:10AF500000E010E08C899D89002E02C095958795B0 +:10AF60000A94E2F780FF2CC0C701002E02C095951D +:10AF700087950A94E2F7A889B98980FF11C0949651 +:10AF80002D913D914D915C919797C501B4010E941F +:10AF90007A6AE889F989208131814281538106C02A +:10AFA0002D913D914D915C91C301B2010E94AC6D18 +:10AFB0000E947C6DEA89FB8964837583868397830D +:10AFC0000F5F1F4F2A893B892C5F3F4F3B8B2A8B9A +:10AFD000888999890496998B888B0330110509F02B +:10AFE000B9CF0E94142005C08091911282FF59CFE1 +:10AFF0004FCF68960FB6F894DEBF0FBECDBFDF917E +:10B00000CF911F910F91FF90EF90DF90CF90BF9065 +:10B01000AF909F908F907F906F905F904F903F90F8 +:10B020002F900895EBE6F0E080818F7E8083E8E644 +:10B03000F0E080818E7F8083089554985C9A80919F +:10B04000D01283FF0BC080916B00806180936B00F6 +:10B05000809168008160809368000895E3CF66EE78 +:10B0600072E180E593E10C94DF44F894F999FECF06 +:10B0700092BD81BD81E08FBB80B58627482F082E09 +:10B08000000C550B262F30E024233523232B39F0D9 +:10B090006F3F19F060BD84E006C084E104C08823DE +:10B0A00021F060BD84E28FBBF99A789408959F9255 +:10B0B000AF92BF92CF92DF92EF92FF920F931F93C6 +:10B0C000CF93DF935C018A017B01E40EF51EEB0157 +:10B0D000912C6C01C61AD70ACE018C0D9D1DCE1580 +:10B0E000DF0581F0911008C0292D990C330B232F17 +:10B0F000221F2227221F01C021E06991922E960E65 +:10B10000B4DFEACF692DC501800F911FDF91CF9188 +:10B110001F910F91FF90EF90DF90CF90BF90AF9075 +:10B120009F90A3CFF999FECF92BD81BD81E08FBBE7 +:10B1300080B508959F92AF92BF92CF92DF92EF9227 +:10B14000FF920F931F93CF93DF935B018A017C01E2 +:10B15000E40EF51EEC01912C6B01C81AD90AC60148 +:10B160008C0F9D1FCE15DF0581F0DCDF911008C02C +:10B17000292D990C330B232F221F2227221F01C0B8 +:10B1800021E0982E920E8993EACFC501800F911F7E +:10B19000C9DF21E030E0981611F020E030E0C9016D +:10B1A000DF91CF911F910F91FF90EF90DF90CF90A3 +:10B1B000BF90AF909F9008955C980895CF93DF93D0 +:10B1C000CDB7DEB7CC56D1090FB6F894DEBF0FBEAF +:10B1D000CDBF8091C00082608093C0001092C500F6 +:10B1E00080E18093C4009091C10090619093C10070 +:10B1F0009091C10098609093C1009091C1009068B7 +:10B200009093C1009091C80092609093C8001092F2 +:10B21000CD008093CC009091C90090619093C900BB +:10B220009091C90098609093C9009091C90090686E +:10B230009093C9009091D00092609093D0001092AA +:10B24000D5008093D4008091D10080618093D1009B +:10B250008091D10088608093D1008091D100806876 +:10B260008093D1000E94CC37869A879A829A8091E7 +:10B270000A01886080930A0180910A0182608093AC +:10B280000A0180910701816080930701809A819A69 +:10B29000579A80910701806180930701809107018F +:10B2A0008860809307018091070184608093070183 +:10B2B0008091080180618093080180910801877F57 +:10B2C0008093080180910801846080930801809137 +:10B2D000D01282FF08C08A9A809108018160809311 +:10B2E00008015F9A07C08A98809108018E7F809339 +:10B2F00008015F98809181008F7E8093810080910A +:10B300008100886080938100809180008C7F809391 +:10B310008000809180008F708093800080916E000B +:10B32000887F80936E0014BC15BC80916E00816094 +:10B3300080936E0054985C9A80916D008061809338 +:10B340006D00809168008460809368008AE090E0DE +:10B350000E9400250E94F839399A3B9A419A439AF3 +:10B3600080910101846080930101809101018068D6 +:10B370008093010180910201846080930201809199 +:10B380000201806880930201559A569A5D9A5E9AEE +:10B390000E94524380E090E00E94EE436093140DBF +:10B3A0007093150D8093160D9093170D81E090E02A +:10B3B0000E94EE436093180D7093190D80931A0D3F +:10B3C00090931B0D82E090E00E94EE4360931C0D71 +:10B3D00070931D0D80931E0D90931F0D20E030E0A3 +:10B3E0004AE754E464E071E080E090E00E94773A3C +:10B3F00084E893E097DE8093060D85E893E092DE83 +:10B400008093070D08E01DE088E993E07C012FEFB1 +:10B41000E21AF20A87DED8018D938D01C701BCE9DB +:10B42000EB16B3E0FB0691F70CE01DE08EE893E02D +:10B430007C01EFEFEE1AFE0A75DED8018D938D01C7 +:10B44000C701B2E9EB16B3E0FB0691F700E11DE09E +:10B4500082E89CE07C01EFEFEE1AFE0A63DED80181 +:10B460008D938D01C701B6E8EB16BCE0FB0691F7A2 +:10B47000C090100DD090110DE090120DF090130DB2 +:10B4800020E030E044EB53E4C701B6010E94716D47 +:10B49000181644F0A7019601C701B6010E94616E1B +:10B4A000882341F01092100D1092110D1092120D80 +:10B4B0001092130D0EE314E08AEE93E07C01EFEF9F +:10B4C000EE1AFE0A2FDED8018D938D01C701B6EF6B +:10B4D000EB16B3E0FB0691F76091100D7091110D22 +:10B4E0008091120D9091130DFE0131967F018F0115 +:10B4F00024E045E00E94FE67FF92EF9281EE92E029 +:10B500009F938F930E949D1F0E94F3390E94F039F0 +:10B510000E94DF390E94BC3B20E030E044EB52E463 +:10B5200060911C0D70911D0D80911E0D90911F0D4D +:10B530000E94796A7B018C012091180D3091190DC0 +:10B5400040911A0D50911B0D6091140D7091150DC5 +:10B550008091160D9091170DE4E38E2EEDE09E2E56 +:10B56000F0E3AF2EFDE0BF2EACE2CA2EADE0DA2E46 +:10B570000E9456418091E6129091E712A091E81244 +:10B58000B091E9128093200D9093210DA093220D8C +:10B59000B093230D8091EA129091EB12A091EC12DE +:10B5A000B091ED128093240D9093250DA093260D5C +:10B5B000B093270D8091EE129091EF12A091F012AE +:10B5C000B091F1128093280D9093290DA0932A0D2C +:10B5D000B0932B0D80917A00876880937A009B98B6 +:10B5E000A39A8FE08093380D0E94E33A8FE992E0AE +:10B5F0009F938F9383EF92E09F938F930E949D1F61 +:10B6000086EA92E09F938F9383E093E09F938F93DA +:10B610000E949D1F8091070D8F938091060D8F933F +:10B6200082E193E09F938F930E949D1F83E293E0BA +:10B630000E9408208EE1E2EEF2E1DF011D928A9580 +:10B64000E9F781E08093E21278949091D0120FB6DE +:10B65000F894DEBF0FBECDBF94FD8093E3129E0130 +:10B66000235C3F4F6F963FAF2EAF6F971E0135E1C2 +:10B67000230E311CCE018996A1969FAF8EAFA19764 +:10B68000DE011196A396BFAFAEAFA3978091D90DFF +:10B690008093D80D8FE3E9E3F3E1DF011D928A95F2 +:10B6A000E9F76CE573E180E00E945134811103C039 +:10B6B00087E00E946C370C9A549A549A0E94DC32AC +:10B6C000549A7ADDBADC54985C9A0E9425200E9434 +:10B6D000644E0E941420C3DC1092E2121092911268 +:10B6E0001092E1121092E4121092E5128091E3128E +:10B6F000813099F48CEB98E00E94F91F86E998E07C +:10B700000E94F91F89E498E00E94F91FA4961FAED9 +:10B71000A497A5961FAEA5973DC01092E312F6CF51 +:10B720008091060185FD20C00E948B5110923D0D35 +:10B73000809102018F7D809302018091100D909184 +:10B74000110DA091120DB091130DB0588093620E9F +:10B750009093630EA093640EB093650E60E070E06A +:10B7600084EB92E40E94183B80915E0E90915F0EF4 +:10B77000A091600EB091610E892B8A2B8B2B51F416 +:10B7800010923D0DE7E2F3E0FF93EF930E949D1FBF +:10B790000F900F9080913D0D8823E1F0C1CFE92FEC +:10B7A000F0E0E85AF24F80819F5F903809F490E012 +:10B7B0009093D80D8F3F09F473C58A3091F08D3086 +:10B7C00081F0A596BFADA597BB2309F435C5893295 +:10B7D00009F42BC59091D80D8091D90D9813DFCF26 +:10B7E0005FC50AE312E1A4963FADA497E32FF0E012 +:10B7F000E65CFD4E10820E940B258091E2128111C1 +:10B800000DC58AE0D1011D928A95E9F780913A121F +:10B81000843209F076C481E08DAF80913B1283348D +:10B8200081F034F4882351F0843209F06FC209C0EA +:10B83000873439F0883509F069C203C088E696E09C +:10B8400054C390913C1291114EC4833409F42DC21B +:10B850001CF4843241F04DC4873409F46AC1883540 +:10B8600009F440C246C48091E312887109F03DC4D6 +:10B8700084E696E00E94F91F8091C3120E94EB1F9C +:10B880008BE496E00E94F91F8091C6120E94EB1F84 +:10B890008DE296E00E94F91F8091C4120E94EB1F76 +:10B8A00084E196E00E94F91F8091C4120E94F61F65 +:10B8B0008DE096E00E94F91F8091C5120E94EB1F57 +:10B8C00085EF95E00E94F91F8091C5120E94F61F36 +:10B8D0008EEE95E00E94F91F8091D01282FB88279E +:10B8E00080F90E94EB1F8DEC95E00E94F91F80917A +:10B8F000D01286FB882780F90E94EB1F8DEA95E025 +:10B900000E94F91F8091D012881F8827881F0E94EB +:10B91000EB1F8DE895E00E94F91F8091C7120E94ED +:10B92000EB1F87E795E00E94F91F8091C7120E94E4 +:10B93000F61F8FE695E00E94F91F6091C812709182 +:10B94000C9128091CA129091CB120E94CD1F8FE430 +:10B9500095E00E94F91F6091CC127091CD128091F8 +:10B96000CE129091CF120E94CD1F84E395E00E94E9 +:10B97000F91F8091D01281700E94EB1F87E195E042 +:10B980000E94F91F8091D01285FB882780F90E94C0 +:10B99000EB1F8CEF94E00E94F91F8091D01283FB83 +:10B9A000882780F90E94EB1F81EE94E00E94F91F26 +:10B9B0008091D012829581700E94EB1F85EC94E0FB +:10B9C0000E94F91F8091D1120E94EB1F8BEA94E034 +:10B9D0000E94F91F8091D1120E94F61F83EA94E021 +:10B9E0000E94F91F6091D2127091D3128091D412EB +:10B9F0009091D5120E94CD1F86E894E00E94F91F15 +:10BA00006091D6127091D7128091D8129091D9126C +:10BA10000E94CD1F89E694E00E94F91F8091DA12FE +:10BA20000E94EB1F8AE494E00E94F91F6091DC12EF +:10BA30007091DD128091DE129091DF120E94CD1F75 +:10BA400081E394E00E94F91F10E034E6D32E23E94D +:10BA5000E22E22E1F22E00E08FE294E00E94F91F34 +:10BA60008D2D800F0E94EB1F8DE294E00E94F91F44 +:10BA7000123091F01330E1F0113031F0F7016081B4 +:10BA80007181828193811CC0D7011C966D917D913B +:10BA90008D919C911F9714C020E030E041E655E461 +:10BAA000F701608D718D828D938D0E945A6B08C055 +:10BAB000F70184A195A1A6A1B7A1BC01CD01905821 +:10BAC0000E94CD1F8AE294E00E94F91F013029F004 +:10BAD000023031F088E294E005C086E294E002C0D2 +:10BAE00084E294E00E94F91F123051F0133059F0B3 +:10BAF000113019F08AE194E008C088E094E005C0B4 +:10BB000087EF93E002C087EE93E00E94F91F83EE77 +:10BB100093E00E94F91F0F5FF4E0EF0EF11C033079 +:10BB200009F09ACF2AE0D20E1F5F3CE8D3128FCFE4 +:10BB3000E0C281EE93E00E94F91F809139138230B8 +:10BB400091F038F4882361F08130A9F48BED93E013 +:10BB50000CC0833069F0883071F481ED93E005C04A +:10BB60008EED93E002C088ED93E00E94F91F0CC0B7 +:10BB700085ED93E0FACF8CEC93E00E94F91F809161 +:10BB8000391382500E94EB1F89EC93E00E94F91F49 +:10BB900080913F138A5C0E94EB1F80913D1381309E +:10BBA00049F028F0823051F48AEB93E005C084EC30 +:10BBB00093E002C08FEB93E00E94F91F80913B134A +:10BBC000811103C085EB93E002C080EB93E00E94FB +:10BBD000F91F80913C13811103C08BEA93E002C0EE +:10BBE00086EA93E00E94F91F80913A13813019F49C +:10BBF00081EA93E002C08CE993E00E94F91F8091F2 +:10BC00004013813049F028F0823051F480E993E00C +:10BC100005C088E993E002C084E993E00E94F91F1F +:10BC200080914213813031F040F0823051F488E845 +:10BC300093E005C08CE893E002C084E893E00E94A2 +:10BC4000F91F80914113882329F0823039F48CE761 +:10BC500093E002C080E893E00E94F91F89E793E037 +:10BC60000E94F91F80914B130E94EB1F86E793E01F +:10BC70000E94F91F609147137091481380914913F6 +:10BC800090914A130E94CF1F83E793E00E94F91F0F +:10BC90006091431370914413809145139091461322 +:10BCA0000E94CF1F8FE693E020C18091E312823083 +:10BCB00049F40E94DA518CEB98E00E94F91F83E767 +:10BCC00098E00BC0811111C282E08093E3128CEBEB +:10BCD00098E00E94F91F8CE798E00E94F91F89E420 +:10BCE00098E003C18091E312813009F002C28CEB2D +:10BCF00098E00E94F91F84E898E00E94F91F89E407 +:10BD000098E00E94F91F1092E312F3C19091E312A0 +:10BD1000923008F0EAC1893409F4C5C034F48332A2 +:10BD200059F0883409F480C064C18E3409F436C1F6 +:10BD3000823509F4F9C05DC182E08DAF80913C127B +:10BD40008111D1C110E0BE016F5F7F4F812F0E9432 +:10BD50005134811104C087E00E946C37CAC18CE65F +:10BD600093E00E94F91F163029F0173041F486E65F +:10BD700093E002C089E693E00E94F91F04C086E3C5 +:10BD8000810F0E94EB1F84E693E00E94F91FCE0111 +:10BD900001967C0100E0D7016D917D918D919D917F +:10BDA0007D010E94DD1F023019F082E693E002C09F +:10BDB0008EE593E00E94F91F0F5F033061F71F5F6C +:10BDC000183009F688E593E00E94F91F98E6E92EFD +:10BDD00093E1F92E10E0F7016191719181919191B8 +:10BDE0007F010E94DD1F123019F086E593E002C04A +:10BDF00082E593E00E94F91F1F5F133061F78CE426 +:10BE000093E00E94F91F60917413709175138091F3 +:10BE10007613909177130E94DD1F88E493E00E94CF +:10BE2000F91F0E94333865C18091D01284FF59C137 +:10BE300084E08093E312F6D884E00E94355683E0D4 +:10BE40000E9435560E940B258091E212811102C09A +:10BE500006D9F3D88091E21281114BC11092E312FE +:10BE60000E94163010E0812F0E945F50811102C0A5 +:10BE700087E013C080913A12882389F08AE392E127 +:10BE80000E9408208AE392E10E948805811105C082 +:10BE90008BED99E00E94F91F02C00E946C371F5F72 +:10BEA000123009F726C182E08DAF80913C128111DA +:10BEB0001FC040E550E06EEA7BE08AE392E13AD9A8 +:10BEC000892B49F410923A1240E550E06AE372E19E +:10BED0008EEA9BE0ECD888E393E00E94F91F8AE3A6 +:10BEE00092E10E94082084E393E00E94F91F01C1BF +:10BEF00093E09DAF8D3309F0F6C083E0282F30E04A +:10BF0000F901E65CFD4E9081D901A95CBD4E9C9380 +:10BF10008F5F90819111F2CF8DAF40E550E06AE3E1 +:10BF200072E18EEA9BE0ABC082E08DAF80913C1263 +:10BF3000833509F0D8C083E08DAF80913D12843500 +:10BF400009F0D1C084E08DAF80913E128D3309F0AD +:10BF5000CAC0809140128111C6C085E08DAF80912A +:10BF60003F12843239F08A3239F0833209F0BBC093 +:10BF700082E003C081E001C08FEF0E9471348CEB3E +:10BF800098E00E94F91F8DE498E00E94F91F89E46F +:10BF900098E00E94F91F0E94DA51ABC082E08DAF99 +:10BFA00080913C12811121C010E0812F0E945F50CE +:10BFB000811104C087E00E946C3713C081E393E0D5 +:10BFC0000E94F91F812F0E94EB1F8FE293E00E94D5 +:10BFD000F91F8AE392E10E9408208CE293E00E941C +:10BFE000F91F1F5F123009F784C091117EC011E064 +:10BFF00001C010E0AE01475D5F4FBE01635C7F4F43 +:10C000008AE392E10E945E27811102C082E076C03D +:10C01000EDAD81E08E0F8DAFF0E0E65CFD4E9081DE +:10C020009D3309F060C0112361F1482F50E0282FA3 +:10C0300030E0D901A65CBD4E9C91241B350BF90163 +:10C04000E65CFD4E90838F5F9C919111F0CF8DAF98 +:10C050008AE392E10E948805811149C069A57AA509 +:10C060008BA59CA50E945A6E0E94C76BF1E56F9F3D +:10C07000C001112440E550E06AE372E1955F17D8F2 +:10C0800038C0AE014F5F5F4FBE01635C7F4F8AE3F4 +:10C0900092E10E945E27882309F4B8CFEDADF0E06D +:10C0A000E65CFD4E808181111EC089A49AA4ABA4D8 +:10C0B000BCA420E030E04FE753E4C501B4010E9486 +:10C0C000716D181684F0C980DA80EB80FC80C501A0 +:10C0D000B4010E94C76B862FB701A6010E944633A8 +:10C0E00006C085E00BC083E009C088E007C081116D +:10C0F00005C08BED99E00E94F91F90C00E946C373B +:10C100008DC08332D1F43F922F928FE393E09F93BF +:10C110008F931F930F930E94206FF10101900020D5 +:10C12000E9F7BF0162197309665C7D4E0F900F90AD +:10C130000F900F900F900F9009C0873429F08D3425 +:10C1400019F0803509F06AC06AE372E1DB018C9175 +:10C15000803509F58DE49CE00E94EB6E8D89882383 +:10C1600091F03F922F9287E493E09F938F9381E821 +:10C170009CE09F938F930E94F26E0F900F900F9010 +:10C180000F900F900F9082E3EAE3F2E1DF011D923E +:10C190008A95E9F743C080914D04843148F08BE4DF +:10C1A00093E09F938F930E949D1F0F900F9036C036 +:10C1B00000914B04B6E6B09F80011124C8018C5A4F +:10C1C0009B4F0E94EB6E8D89882391F03F922F92B6 +:10C1D00087E493E09F938F9308571B4F1F930F9310 +:10C1E0000E94F26E0F900F900F900F900F900F9093 +:10C1F00082E3EAE3F2E1DF011D928A95E9F780919B +:10C200004B04833120F48F5F80934B0402C0109263 +:10C210004B0480914D048F5F80934D04A4961FAE14 +:10C22000A497A5961FAEA5973BC0B13009F0D2CA1E +:10C23000A5961FAEA597CECA813208F4CBCA8F321D +:10C2400009F4C8CA883211F18B3329F1A496EFADF5 +:10C25000A497EF3438F08BE00E946C37A4961FAEA1 +:10C26000A497B8CAA496FFADA4972F2F30E04F2F04 +:10C270004F5F9FE9980FF901E65CFD4E9A3108F493 +:10C2800080528083A4964FAFA497A4CA21E0A596BC +:10C290002FAFA5979FCA32E0A5963FAFA5979ACA40 +:10C2A00080914D0C882399F08DE49CE00E948805D4 +:10C2B00080937F0C61E87CE00E94833981E0809369 +:10C2C000800C82E3ADE4BCE01D928A95E9F7809191 +:10C2D000390D811137C080914D04882399F1009167 +:10C2E0004C04B6E6B09F800111240C5A1B4FC801C4 +:10C2F0000E948805F80182ABF0904C04F6E6FF9DA1 +:10C3000080011124B80168577B4F0C5A1B4FD8018C +:10C31000D2968C910E94833981E0F80183AB82E34D +:10C32000D8011D928A95E9F7B2E1BF1520F0F39488 +:10C33000F0924C0402C010924C0480914D04815044 +:10C3400080934D040E9479380E940B258091E2125F +:10C3500081119CC98091800C882369F081E89CE060 +:10C360000E94082082E3E1E8FCE0DF011D928A954B +:10C37000E9F71092800C8091E312882309F4E6C05B +:10C3800080913A0D882309F410C110923A0D6D96F0 +:10C390001CAE1DAE1EAE1FAE6D9769961CAE1DAED7 +:10C3A0001EAE1FAE699765961CAE1DAE1EAE1FAECB +:10C3B000659784E16F96EEADFFAD6F97282F1192D0 +:10C3C0002A95E9F7A196AEADBFADA197E82F1D92D2 +:10C3D000EA95E9F7D101E82F1D92EA95E9F7A396CE +:10C3E000AEADBFADA3971D928A95E9F780E090E0CE +:10C3F0000E94EE43A9966CAF7DAF8EAF9FAFA99719 +:10C4000081E090E00E94EE43AD966CAF7DAF8EAFC1 +:10C410009FAFAD9782E090E00E94EE436B017C01FC +:10C4200020E030E040E05FE36091000270910102A3 +:10C4300080910202909103020E94796A20E030E02C +:10C4400040E05FE30E94AC6D20E030E044E353E461 +:10C450000E94AC6D9B01AC0160E070E084E393E46A +:10C460000E94796A2B013C0120E030E044EB52E469 +:10C47000C701B6010E94796AFE01EF5AFF4F4F01D2 +:10C480009E012B5A3F4F5901DE01A75ABF4F6D0144 +:10C490007B018C01AD962CAD3DAD4EAD5FADAD9742 +:10C4A000A9966CAD7DAD8EAD9FADA9970E9456410A +:10C4B000A401B501C6010E94A93E6D966CAD7DAD8B +:10C4C0008EAD9FAD6D978E01035C1F4F24E045E05C +:10C4D00095D569966CAD7DAD8EAD9FAD69970451D4 +:10C4E000110924E045E08AD565966CAD7DAD8EAD31 +:10C4F0009FAD6597810124E045E080D58E010F5FF7 +:10C500001F4F24E045E0C301B20178D51F930F937C +:10C510003F922F92A196FFADA197FF93A0962FADCA +:10C52000A0972F936F963FAD6F973F936E968FAD09 +:10C530006E978F938DE593E09F938F930E949D1F3D +:10C540000FB6F894DEBF0FBECDBF2FC004E110E0E0 +:10C5500082E3B82EA0904C0CB6E6BA9DC00111241F +:10C56000FC01EC5AFB4F7F0123A9222309F408CFD9 +:10C570009C0128573B4F6901C9010E940820D60140 +:10C58000EB2D1D92EA95E9F7D701D3961C92B2E103 +:10C59000BA1528F081E08A0D80934C0C02C01092ED +:10C5A0004C0C01501109B1F6EBCE82B301E083FBD4 +:10C5B000882780F98027909153048917D9F08AE061 +:10C5C00090E00E94002512B313FB112710F91027E9 +:10C5D00080915304181771F01F921F9381E793E025 +:10C5E0009F938F930E949D1F109353040F900F9061 +:10C5F0000F900F9080914F0490915004A09151049E +:10C60000B09152048F3F9105A105B10509F060F486 +:10C610000196A11DB11D80934F0490935004A093E7 +:10C620005104B093520424C010924F04109250044D +:10C6300010925104109252048BE30E94025111E0B7 +:10C640008536910508F410E080914E04181781F0AA +:10C650001F921F938CE793E09F938F930E949D1FDF +:10C6600010934E0410933E0D0F900F900F900F906B +:10C670008091E312811112C080913B0D882371F0EB +:10C6800080913C0D882351F084E893E09F938F9331 +:10C690000E949D1F10923C0D0F900F9080913F0DB6 +:10C6A000882309F477C88091E312811173C88091BF +:10C6B000380D8F3009F06EC880913E0D882309F443 +:10C6C00069C821961CAE1DAE1EAE1FAE219719A6DD +:10C6D0001AA61BA61CA61D8A1E8A1F8A188EE09009 +:10C6E000340DF090350D0091360D1091370D2091DD +:10C6F000300D3091310D4091320D5091330D6091DC +:10C700002C0D70912D0D80912E0D90912F0D4101CA +:10C71000FE01B9965F01DE01DD966D010E94A03F2A +:10C7200080E090E00E94EE434B015C0181E090E0EC +:10C730000E94EE436B017C0182E090E00E94EE4398 +:10C740002B013C01A501940121966CAD7DAD8EAD10 +:10C750009FAD2197CED69F7720E030E040E05FE3A9 +:10C760000E94716D18163CF1A701960169A57AA582 +:10C770008BA59CA5BED69F7720E030E040E05FE32C +:10C780000E94716D1816BCF0A30192016D897E891B +:10C790008F89988DAED620E030E044EB52E4AAD6E3 +:10C7A0009F7720E030E040E05FE30E94716D181653 +:10C7B00014F00C94CA5B8EE1E2EEF2E1DF011D920F +:10C7C0008A95E9F70E9414200E942F588092140D38 +:10C7D0009092150DA092160DB092170DC092180DE3 +:10C7E000D092190DE0921A0DF0921B0D40921C0D83 +:10C7F00050921D0D60921E0D70921F0D20E030E0D2 +:10C800004AE754E464E071E080E090E00E94773A07 +:10C810008091E6129091E712A091E812B091E9128E +:10C820008093200D9093210DA093220DB093230DA2 +:10C830008091EA129091EB12A091EC12B091ED125E +:10C840008093240D9093250DA093260DB093270D72 +:10C850008091EE129091EF12A091F012B091F1122E +:10C860008093280D9093290DA0932A0DB0932B0D42 +:10C870008CE0A396EEADFFADA39711928A95E9F7F0 +:10C8800080912C0D90912D0DA0912E0DB0912F0D1A +:10C8900089839A83AB83BC838091300D9091310D55 +:10C8A000A091320DB091330D8D839E83AF83B887F5 +:10C8B0008091340D9091350DA091360DB091370DCA +:10C8C00089879A87AB87BC87AE01475F5F4FBE0100 +:10C8D0006B5F7F4FCE0101960E94A93E00E020E0F1 +:10C8E00030E048E452E4BE016F5F7F4F80E00E9479 +:10C8F00004520C94CA5BCF930E947938C9E20E941B +:10C900000B258091E212811111C0809181119091CB +:10C910008211981739F0C89FC00111248156914F98 +:10C92000892B69F78091E312883049F3CF910895FC +:10C93000CF9320912D1330912E1340912F135091AE +:10C940003013609150137091511380915213909154 +:10C950005313A9D6811126C020913113309132137F +:10C9600040913313509134136091541370915513C7 +:10C97000809156139091571396D6811113C0C1E040 +:10C98000209135133091361340913713509138135D +:10C99000609158137091591380915A1390915B13C1 +:10C9A00082D68111C0E08C2FCF910895CF92DF9273 +:10C9B000EF92FF920F93CF93DF933091E3123230D7 +:10C9C00009F482C0C02FD22F042F6B017C0193DFAA +:10C9D0001092FE121092E0128091D01287FD03C0D7 +:10C9E00080E18093E012DD2331F09091E01280E14C +:10C9F00089278093E01289B180719091E0128917A4 +:10CA000051F09FB7F8948091E11280618093E11218 +:10CA10009FBF0E940B258091E212811155C0A70192 +:10CA200096016DE273E181E00E94045281E08093FF +:10CA300092129FB7F8948091911282608093911224 +:10CA40009FBF0E940B258091E21281113DC0809111 +:10CA5000E3128111F6CF809192128130A9F4CC2398 +:10CA600051F08CE0E6EEF2E1A2EFB2E101900D921E +:10CA70008A95E1F70CC09FB7F8948091E11280612C +:10CA80008093E1129FBF03C081E08093FE12109259 +:10CA900092120E940B258091E212811115C00E9412 +:10CAA000644E0E9425200E94142066EE72E18DE201 +:10CAB00093E10E94DF44DF91CF910F91FF90EF90BF +:10CAC000DF90CF900C943338DF91CF910F91FF908E +:10CAD000EF90DF90CF9008952F923F924F925F9208 +:10CAE0006F927F928F929F92AF92BF92CF92DF927E +:10CAF000EF92FF920F931F93CF93DF93CDB7DEB7E3 +:10CB0000E1970FB6F894DEBF0FBECDBF6D837E8375 +:10CB10008F8398872F87388B498B5A8B0D8BAD86E7 +:10CB20008B8A24E0E29E80011124C801805B9C4E28 +:10CB30009F8B8E8BD801A15FBC4EB98FA88F8D9033 +:10CB40009D90AD90BC90FC01208131814281538148 +:10CB5000C501B401CFD46A8F7B8F8C8F9D8FF4E099 +:10CB6000CF9E100111249101205B3C4E3F8F2E8FF0 +:10CB7000C101815F9C4E99A388A3DC01CD90DD901B +:10CB8000ED90FC90F9012081318142815381C701F0 +:10CB9000B601B0D46AA37BA38CA39DA32401350165 +:10CBA00077FA709477F87094D701C601B0588983EA +:10CBB0009A83AB83BC83F801E35DFC4E2A8D3B8DE9 +:10CBC0004C8D5D8D608171818281938192D44B0106 +:10CBD0005C01F101E35DFC4E2AA13BA14CA15DA1EA +:10CBE000608171818281938184D46B017C01A50174 +:10CBF0009401C301B201B0D769877A878B879C877C +:10CC0000A701960169817A818B819C81A5D79B01BF +:10CC1000AC0169857A858B859C856CD469877A8718 +:10CC20008B879C87A7019601C301B20195D76B0141 +:10CC30007C01A501940169817A818B819C818CD7CB +:10CC40009B01AC01C701B60154D429853A854B85B7 +:10CC50005C85C3D46B017C019B89992389F02DEB02 +:10CC600037E346E055EBC701B6013BD787FD1AC055 +:10CC70002BED3FE049EC50E4C701B6013AD410C0B7 +:10CC80002DEB37E346E055E3C701B6010CD5181686 +:10CC90004CF02BED3FE049EC50E4C701B6012AD43B +:10CCA0006B017C018090CC129090CD12A090CE129E +:10CCB000B090CF122D813E814F815885CA01B901B4 +:10CCC00019D4A501940115D4A501940145D7B1D774 +:10CCD0004B015C0120E030E040E05FE3C701B601BA +:10CCE0003BD72D813E814F81588536D79F77A5014F +:10CCF0009401E0D4B5D54BD57C8B6B8BDB01AB2B92 +:10CD000009F459C14B01A12CB12CBD89BB2371F091 +:10CD1000C501B40168D59B01AC016F85788989890B +:10CD20009A891AD76F87788B898B9A8BC501B40142 +:10CD30005AD54B015C019B01AC01C701B601BAD4C5 +:10CD40006D837E838F839887FD85E4E0FE9FC0011D +:10CD500011249C01205B3C4E3E872D87FC01E35D46 +:10CD6000FC4ED9012D913D914D915C916081718175 +:10CD700082819381BED3A50194019CD46EA77FA725 +:10CD800088AB99AB2D813E814F815885CA01B9018D +:10CD9000E3D69B01AC0160E070E080E090E4A9D3B1 +:10CDA0006B017C012BEA3AEA4AE25EE36D817E8107 +:10CDB0008F819885D1D64B015C0120E030E040E8BE +:10CDC00050E4C701B60196D39B01AC01C501B40183 +:10CDD000C3D669877A878B879C8720E030E040E064 +:10CDE0005FE3C701B601B8D66EA37FA388A799A752 +:10CDF00010E022242394312CEB89FC89E215F30501 +:10CE000009F4D9C01C3008F03AC029813A814B811D +:10CE10005C816EA17FA188A599A59ED66B017C013E +:10CE2000A301920169857A858B859C8595D6A7019A +:10CE3000960160D37B01082FD92EA30192016EA128 +:10CE40007FA188A599A588D64B015C0129813A81EB +:10CE50004B815C8169857A858B859C857DD69B011C +:10CE6000AC01C501B40145D32B013C011F5FC701D3 +:10CE7000A02FBD2D89839A83AB83BC835BC0B10196 +:10CE800080E090E0B0D42D813E814F81588564D6FA +:10CE90006B017C010CD469837A838B839C83C701EB +:10CEA000B601BDD64B015C01E88DF98DC080D18003 +:10CEB000E280F380F7FAF094F7F8F094A8A1B9A112 +:10CEC0008D919D910D90BC91A02D8AA79BA7ACA799 +:10CED000BDA7A701960169817A818B819C813CD68F +:10CEE0002B013C012AA53BA54CA55DA5C501B401BC +:10CEF00033D69B01AC01C301B201FCD22B013C0132 +:10CF0000A7019601C501B40127D66B017C012AA5B2 +:10CF10003BA54CA55DA569817A818B819C811CD63E +:10CF20009B01AC01C701B601E4D269837A838B838C +:10CF30009C8310E0A30192016A8D7B8D8C8D9D8D69 +:10CF4000D9D2EE89FF89608371838283938329819B +:10CF50003A814B815C816AA17BA18CA19DA1CAD23F +:10CF6000AE8DBF8D6D937D938D939C9313972EA55E +:10CF70003FA548A959A9ED85FE856081718182810F +:10CF80009381B8D2AD85BE856D937D938D939C932F +:10CF900013970D892F85388949895A8960E573E18E +:10CFA00081E00E9404528091E21281110EC0BFEF15 +:10CFB0002B1A3B0A21CF0D892F85388949895A8937 +:10CFC0006DE273E181E00E940452E1960FB6F8949D +:10CFD000DEBF0FBECDBFDF91CF911F910F91FF90AC +:10CFE000EF90DF90CF90BF90AF909F908F907F9009 +:10CFF0006F905F904F903F902F900895EF920F9316 +:10D000001F93CF93DF93E80147FD02C034E001C0D6 +:10D0100034E1042E000C550B57FF03C05195419588 +:10D020005109E32E022F242FAE0107D0CE01DF914C +:10D03000CF911F910F91EF9008958F929F92AF9291 +:10D04000BF92CF92DF92EF92FF920F931F93CF93F5 +:10D05000DF93CDB7DEB729970FB6F894DEBF0FBECA +:10D06000CDBF6A01122FB02E2BE3201720F0FF2432 +:10D07000F394F00E02C02CE3F22E0F2D27E0AE0148 +:10D080004F5F5F4F50D1BC014981842F897081303F +:10D0900031F0E1FC06C0E0FE06C090E205C09DE272 +:10D0A00003C09BE201C090E05E2D507143FF3CC085 +:10D0B000911102C083E001C084E0811718F4212F90 +:10D0C000281B01C020E051110BC0F601822F30E275 +:10D0D000882319F031938150FBCFC20ED11C20E080 +:10D0E000992329F0D6019C93F60131966F01C60170 +:10D0F0000396E2FE0AC03EE4D6013C9341E4119659 +:10D100004C93119712963C9306C03EE6F60130838D +:10D1100041E641833283FC01322F40E2332309F49C +:10D1200042C041933150FACF42FF44C0911102C036 +:10D1300083E001C084E0811718F4212F281B01C06F +:10D1400020E051110BC0F601822F30E2882319F044 +:10D1500031938150FBCFC20ED11C20E0992329F0DE +:10D16000D6019C93F60131966F01C6010396E2FE4B +:10D170000BC039E4D6013C933EE411963C931197E1 +:10D1800036E412963C9307C039E6F60130833EE65A +:10D19000318336E63283FC01322F40E2332319F02B +:10D1A00041933150FBCFFC01E20FF11D10828EEF55 +:10D1B0009FEFA6C021E030E0911102C020E030E0F6 +:10D1C000161617061CF4FB01319602C0E1E0F0E0F0 +:10D1D0002E0F3F1FBB2021F0EB2DF0E0319602C057 +:10D1E000E0E0F0E02E0F3F1FE12FF0E02E173F07A9 +:10D1F0001CF4121B212F01C020E08E2D887159F4E0 +:10D20000F601822F30E2882319F031938150FBCF51 +:10D21000C20ED11C20E0992329F0D6019C93F6017F +:10D2200031966F0151110BC0F601822F90E38823D4 +:10D2300019F091938150FBCFC20ED11C20E00F2D2D +:10D24000060F9A81342F307144FF03C0913309F4E3 +:10D250000150101624F4093018F008E001C001E074 +:10D26000AB0177FF02C040E050E0FB01E41BF50B8F +:10D27000A1E0B0E0AC0FBD1FEA0FFB1F8EE2A82EAD +:10D280004B01801A91080B2D10E0119501951109A1 +:10D290004F3FBFEF5B0721F4D601AC9211966D01B1 +:10D2A000641775072CF08416950614F4818101C06B +:10D2B00080E3415051093196D60111967D01401706 +:10D2C000510724F0D6018C936701E2CF64177507EC +:10D2D00039F4963320F4953319F4311101C081E308 +:10D2E000F6018083F701822F90E2882319F0919351 +:10D2F0008150FBCFF701E20FF11D108280E090E03A +:10D3000029960FB6F894DEBF0FBECDBFDF91CF9147 +:10D310001F910F91FF90EF90DF90CF90BF90AF9053 +:10D320009F908F900895283008F027E03327DA0186 +:10D33000990F311D87FD916000966105710539F4E3 +:10D3400032602E5F3D9330E32A95E1F708959F3FC9 +:10D3500030F080387105610509F03C5F3C5F3D931A +:10D36000913008F08068911DDF93CF931F930F9346 +:10D37000FF92EF92192F987F9695E92F96959695A3 +:10D38000E90FFF27EA59FD4F99273327EE24FF24A1 +:10D39000A701E70105900894079428F4360FE71ECB +:10D3A000F81E491F511D660F771F881F991F06948D +:10D3B000A1F70590079428F4E70EF81E491F561FA1 +:10D3C000C11D770F881F991F661F0694A1F705904E +:10D3D000079428F4F80E491F561FC71FD11D880F48 +:10D3E000991F661F771F0694A1F70590079420F4F4 +:10D3F000490F561FC71FD81F990F661F771F881F19 +:10D400000694A9F784911095177041F0D695C795A9 +:10D4100057954795F794E7941A95C1F7ECE0F2E039 +:10D4200068941590159135916591959105907FE2DD +:10D430007395E118F10A430B560BC90BD009C0F7DD +:10D44000E10CF11E431F561FC91FD01D7EF470331F +:10D4500011F48A95E6CFE894015030F0080F0AF4F1 +:10D460000027021708F4202F2395022F7A3328F083 +:10D4700079E37D932A95E9F710C07D932A9589F683 +:10D48000069497956795379517951794E118F10AC3 +:10D49000430B560BC90BD00998F023957E917395D9 +:10D4A0007A3308F070E37C932013B8F77E917061B3 +:10D4B0007D9330F0839571E37D9370E32A95E1F7D6 +:10D4C0001124EF90FF900F911F91CF91DF91992739 +:10D4D00087FD909508959F939F77D5D10F90002059 +:10D4E0003AF49058A2EA2AED3FE049E450E413D020 +:10D4F00096C25058BB27AA270ED091C25AD230F0FC +:10D500005FD220F031F49F3F11F41EF42AC20EF4D2 +:10D51000E095E7FBF7C1E92FA4D280F3BA176207C1 +:10D5200073078407950718F071F49EF5D3C20EF4C3 +:10D53000E0950B2EBA2FA02D0B01B90190010C0123 +:10D54000CA01A0011124FF27591B99F0593F50F43B +:10D55000503E68F11A16F040A22F232F342F442793 +:10D56000585FF3CF469537952795A795F04053958B +:10D57000C9F77EF41F16BA0B620B730B840BBAF05B +:10D580009150A1F0FF0FBB1F661F771F881FC2F7C6 +:10D590000EC0BA0F621F731F841F48F487957795DA +:10D5A0006795B795F7959E3F08F0B3CF9395880F91 +:10D5B00008F09927EE0F979587950895FAD158F0BE +:10D5C00080E891E009F49EEFFBD128F040E851E0BB +:10D5D00059F45EEF09C0C5C17DC2E92FE07841D2A0 +:10D5E00068F3092E052AC1F326173707480759079C +:10D5F00038F00E2E07F8E02569F0E025E0640AC057 +:10D60000EF6307F8009407FADB01B9019D01DC0123 +:10D61000CA01AD01EF935DD002D20AD05F915523CC +:10D6200031F02BED3FE049E450FD49EC63CF089524 +:10D63000DF93DD27B92FBF7740E85FE316161706A3 +:10D6400048075B0710F4D92F50D29F938F937F9395 +:10D650006F932DD3E8E9F1E087D1E1D12F913F918C +:10D660004F915F9185D2DD2349F09058A2EA2AEDCF +:10D670003FE049EC5FE3D0785D274DDFDF91CFC11C +:10D6800012D280F09F3740F491110EF424C260E072 +:10D6900070E080E89FE3089526F01B16611D711D60 +:10D6A000811D36C150C10AD108F481E0089590D19E +:10D6B000E395C6C10CD0B3C183D140F07AD130F02C +:10D6C00021F45F3F19F01EC1511105C24AC1C9D1F1 +:10D6D00098F39923C9F35523B1F3951B550BBB2739 +:10D6E000AA2762177307840738F09F5F5F4F220FE6 +:10D6F000331F441FAA1FA9F333D00E2E3AF0E0E8DF +:10D7000030D091505040E695001CCAF729D0FE2F2A +:10D7100027D0660F771F881FBB1F261737074807BC +:10D72000AB07B0E809F0BB0B802DBF01FF27935872 +:10D730005F4F2AF09E3F510568F0E4C0CCC15F3FC7 +:10D74000ECF3983EDCF3869577956795B795F7955A +:10D750009F5FC9F7880F911D9695879597F9089552 +:10D76000E1E0660F771F881FBB1F621773078407EE +:10D77000BA0720F0621B730B840BBA0BEE1F88F7FD +:10D78000E095089504D06894B111A5C1089571D1B0 +:10D7900088F09F5790F0B92F9927B751A0F0D1F09A +:10D7A000660F771F881F991F1AF0BA95C9F712C024 +:10D7B000B13081F08FD1B1E008958CC1672F782FFF +:10D7C0008827B85F39F0B93FCCF386957795679590 +:10D7D000B395D9F73EF490958095709561957F4FFC +:10D7E0008F4F9F4F0895E89409C097FB3EF49095A2 +:10D7F0008095709561957F4F8F4F9F4F9923A9F02A +:10D80000F92F96E9BB279395F695879577956795B8 +:10D81000B795F111F8CFFAF4BB0F11F460FF1BC0FC +:10D820006F5F7F4F8F4F9F4F16C0882311F096E98F +:10D8300011C0772321F09EE8872F762F05C066233D +:10D8400071F096E8862F70E060E02AF09A95660FF6 +:10D85000771F881FDAF7880F9695879597F90895AF +:10D8600022D180F09F3740F491110EF034C160E076 +:10D8700070E080E89FEB089526F41B16611D711D72 +:10D88000811D46C060C0DF93CF931F930F938B0120 +:10D89000EC01E5ECF1E068D0C2D09801AE018B015B +:10D8A000EC0160E070E080E89FE323DEC2D19801E4 +:10D8B000AE010F911F91CF91DF915AC1990F0008CE +:10D8C000550FAA0BE0E8FEEF16161706E807F90752 +:10D8D000C0F012161306E407F50798F0621B730BED +:10D8E000840B950B39F40A2661F0232B242B252B6E +:10D8F00021F408950A2609F4A140A6958FEF811D11 +:10D90000811D089597F99F6780E870E060E00895B1 +:10D91000882371F4772321F09850872B762F07C046 +:10D92000662311F499270DC09051862B70E060E0BA +:10D930002AF09A95660F771F881FDAF7880F969559 +:10D94000879597F908959F3F31F0915020F487957E +:10D9500077956795B795880F911D9695879597F957 +:10D9600008959FEF80EC0895DF93CF931F930F935B +:10D97000FF92EF92DF927B018C01689405C0DA2E52 +:10D98000EF01F6D0FE01E894A591259135914591DE +:10D990005591AEF3EF01BFDDFE019701A801DA94C6 +:10D9A00079F7DF90EF90FF900F911F91CF91DF916A +:10D9B000089500240A9416161706180609060895F5 +:10D9C00000240A9412161306140605060895C9CFFA +:10D9D00050D0E8F3E894E0E0BB279F57F0F02AED41 +:10D9E0003FE049EC06C0EE0FBB0F661F771F881F94 +:10D9F00028F0B23A62077307840728F0B25A620B24 +:10DA0000730B840BE3959A9572F7803830F49A95EE +:10DA1000BB0F661F771F881FD2F7904896CF092E3D +:10DA20000394000C11F4882352F0BB0F40F4BF2B79 +:10DA300011F460FF04C06F5F7F4F8F4F9F4F0895B9 +:10DA4000EF93E0FF06C0A2EA2AED3FE049EC5FEB6E +:10DA500062DDE5DF0F90039401FC9058EDEEF1E0FC +:10DA60003BC157FD9058440F551F59F05F3F71F06F +:10DA70004795880F97FB991F61F09F3F79F0879535 +:10DA80000895121613061406551FF2CF4695F1DFBE +:10DA900008C0161617061806991FF1CF869571054E +:10DAA000610508940895E5DFA0F0BEE7B91788F492 +:10DAB000BB279F3860F41616B11D672F782F882773 +:10DAC000985FF7CF869577956795B11D93959639B1 +:10DAD000C8F30895E894BB2766277727CB0197F909 +:10DAE0000895ECDE08F48FEF08959B01AC0160E02F +:10DAF00070E080E89FE3DECDBCDF58F19E5758F11F +:10DB00009851A0F0E9F0983020F5092E9927660F7A +:10DB1000771F881F991F0A94D1F712C0062E672F0E +:10DB2000782F8827985F11F4000C07C0993FB4F351 +:10DB30008695779567959395D9F7611D711D811D20 +:10DB40003EF490958095709561957F4F8F4F9F4FD4 +:10DB500008956894C0CFBECF0BD061CF2ADF28F0E4 +:10DB60002FDF18F0952309F0CDCEFBCE1124B3CFD3 +:10DB700078DFA0F3959FD1F3950F50E0551F629F7A +:10DB8000F001729FBB27F00DB11D639FAA27F00D16 +:10DB9000B11DAA1F649F6627B00DA11D661F829F3D +:10DBA0002227B00DA11D621F739FB00DA11D621F22 +:10DBB000839FA00D611D221F749F3327A00D611D3F +:10DBC000231F849F600D211D822F762F6A2F112421 +:10DBD0009F5750408AF0E1F088234AF0EE0FFF1F74 +:10DBE000BB1F661F771F881F91505040A9F79E3FAB +:10DBF000510570F087CE6FCF5F3FECF3983EDCF3BA +:10DC0000869577956795B795F795E7959F5FC1F7E7 +:10DC1000FE2B880F911D9695879597F908959F93F0 +:10DC2000D7DE0F9007FCEE5F0BCF11F40EF499CE08 +:10DC30008ACE1FDFD0F39923D9F3CEF39F57550B2C +:10DC400087FF43D00024A0E640EA90018058569513 +:10DC5000979528F4805C660F771F881F20F02617A1 +:10DC60003707480730F4621B730B840B20293129D6 +:10DC70004A2BA69517940794202531254A2758F753 +:10DC8000660F771F881F20F026173707480730F4E4 +:10DC9000620B730B840B200D311D411DA09581F784 +:10DCA000B901842F9158880F9695879508959B0107 +:10DCB000AC0152CFF8DE20F09F3708F40CCF28CE0D +:10DCC00042CEFCDD880B990B089591505040660FB1 +:10DCD000771F881FD2F708959F938F937F936F9339 +:10DCE000FF93EF939B01AC0137DFEF91FF913CDE97 +:10DCF0002F913F914F915F912FCF991B79E004C0F5 +:10DD0000991F961708F0961B881F7A95C9F780957A +:10DD10000895AA1BBB1B51E107C0AA1FBB1FA61772 +:10DD2000B70710F0A61BB70B881F991F5A95A9F7C4 +:10DD300080959095BC01CD010895A1E21A2EAA1BF1 +:10DD4000BB1BFD010DC0AA1FBB1FEE1FFF1FA217AB +:10DD5000B307E407F50720F0A21BB30BE40BF50BA8 +:10DD6000661F771F881F991F1A9469F76095709531 +:10DD7000809590959B01AC01BD01CF010895EE0FF8 +:10DD8000FF1F881F8BBF0790F691E02D1994A29F6B +:10DD9000B001B39FC001A39F700D811D1124911D7F +:10DDA000B29F700D811D1124911D0895F0DFA59F74 +:10DDB000900DB49F900DA49F800D911D1124089586 +:10DDC000FB01DC010D900020E9F7119701900D9205 +:10DDD0000020E1F70895FB01DC0101900D92002085 +:10DDE000E1F708950F931F93CF93DF93CDB7DEB77D +:10DDF0002E970FB6F894DEBF0FBECDBF0E891F89D8 +:10DE000086E08C831A8309838FEF9FE79E838D833F +:10DE1000AE01465E5F4F688D798DCE01019659D077 +:10DE2000EF81F885E00FF11F10822E960FB6F8945F +:10DE3000DEBF0FBECDBFDF91CF911F910F9108952F +:10DE4000CF93DF93CDB7DEB72E970FB6F894DEBF32 +:10DE50000FBECDBF85E08C838C899D899A83898391 +:10DE6000AE01485E5F4F6E897F89CE010196E0D397 +:10DE70002E960FB6F894DEBF0FBECDBFDF91CF91C7 +:10DE800008950F931F93CF93DF93CDB7DEB72E97EF +:10DE90000FB6F894DEBF0FBECDBF8C0186E08C8339 +:10DEA0001A8309838FEF9FE79E838D83CE010196AE +:10DEB00010D0EF81F885E00FF11F10822E960FB67B +:10DEC000F894DEBF0FBECDBFDF91CF911F910F91B0 +:10DED00008952F923F924F925F926F927F928F920E +:10DEE0009F92AF92BF92CF92DF92EF92FF920F93E9 +:10DEF0001F93CF93DF93CDB7DEB72B970FB6F89470 +:10DF0000DEBF0FBECDBF6C017B018A01FC01178211 +:10DF10001682838181FFBFC1CE0101963C01F601CB +:10DF20009381F70193FD859193FF81917F01882370 +:10DF300009F4ADC1853239F493FD859193FF819148 +:10DF40007F01853221F4B60190E0F0D4E8CF912C26 +:10DF5000212C312CFFE1F315D8F08B3279F038F415 +:10DF6000803279F08332A1F4232D20611DC08D32DF +:10DF700061F0803369F4232D216016C0832D826007 +:10DF8000382EE32DE4603E2E2AC0F32DF8601DC02C +:10DF900037FC2DC020ED280F2A3040F08E32B9F426 +:10DFA00036FC75C1232D2064322E19C036FE06C002 +:10DFB0008AE0989E200D1124922E11C0EAE02E9E38 +:10DFC000200D1124222EF32DF0623F2E08C08C3636 +:10DFD00021F4832D8068382E02C0883641F4F70181 +:10DFE00093FD859193FF81917F018111B3CF982F8C +:10DFF0009F7D9554933028F40C5F1F4F9FE39983C6 +:10E000000DC0833631F0833771F0833509F055C088 +:10E0100020C0F801808189830E5F1F4F882483947C +:10E02000912C530112C02801F2E04F0E511CF8014F +:10E03000A080B18036FE03C0692D70E002C06FEF92 +:10E040007FEFC5012AD44C018201F32DFF773F2ECB +:10E0500015C0280122E0420E511CF801A080B180B9 +:10E0600036FE03C0692D70E002C06FEF7FEFC5017F +:10E0700009D44C01F32DF0683F2E820133FC19C006 +:10E08000822D90E088169906A0F4B60180E290E017 +:10E090004DD42A94F5CFF50137FC859137FE819157 +:10E0A0005F01B60190E042D421102A9421E0821A47 +:10E0B00091088114910479F7E1C0843611F0893612 +:10E0C00039F5F80137FE07C0608171818281938143 +:10E0D0000C5F1F4F08C060817181072E000C880BF8 +:10E0E000990B0E5F1F4FF32DFF763F2E97FF09C050 +:10E0F00090958095709561957F4F8F4F9F4FF068F9 +:10E100003F2E2AE030E0A30166D4882E861844C052 +:10E11000853731F4232D2F7EB22E2AE030E025C042 +:10E12000932D997FB92E8F36C1F018F4883579F088 +:10E13000AEC0803719F0883721F0A9C0E92FE0611F +:10E14000BE2EB4FE0DC0FB2DF460BF2E09C034FE00 +:10E150000AC0292F2660B22E06C028E030E005C094 +:10E1600020E130E002C020E132E0F801B7FE07C054 +:10E1700060817181828193810C5F1F4F06C0608135 +:10E18000718180E090E00E5F1F4FA30124D4882EA0 +:10E190008618FB2DFF773F2E36FE0DC0232D2E7FD8 +:10E1A000A22E891458F434FE0BC032FC09C0832D12 +:10E1B0008E7EA82E05C0B82CA32C03C0B82C01C09D +:10E1C000B92CA4FE0FC0FE01E80DF11D8081803343 +:10E1D00021F49A2D997EA92E09C0A2FE06C0B394FF +:10E1E000B39404C08A2D867809F0B394A3FC10C0C0 +:10E1F000A0FE06C0B21480F4280C922C9B180DC00F +:10E20000B21458F4B60180E290E090D3B394F8CF02 +:10E21000B21418F42B1802C0982C212CA4FE0FC0A5 +:10E22000B60180E390E082D3A2FE16C0A1FC03C039 +:10E2300088E790E002C088E590E0B6010CC08A2D26 +:10E24000867851F0A1FE02C08BE201C080E2A7FCFB +:10E250008DE2B60190E06AD3891430F4B60180E310 +:10E2600090E064D39A94F8CF8A94F301E80DF11DFD +:10E270008081B60190E05AD38110F6CF222009F4B4 +:10E280004ECEB60180E290E051D32A94F7CFF6014A +:10E290008681978102C08FEF9FEF2B960FB6F8947F +:10E2A000DEBF0FBECDBFDF91CF911F910F91FF90C9 +:10E2B000EF90DF90CF90BF90AF909F908F907F9026 +:10E2C0006F905F904F903F902F90089520FD09C070 +:10E2D000FC0123FD05C022FF02C0738362835183CA +:10E2E0004083089544FD17C046FD17C0AB01BC0133 +:10E2F000DA01FB01AA0FBB1FEE1FFF1F1094D1F71D +:10E300004A0F5B1F6E1F7F1FCB01BA01660F771F7D +:10E31000881F991F09C033E001C034E0660F771FE2 +:10E32000881F991F3150D1F7620F711D811D911DFA +:10E3300008950F931F93CF93DF938C01C801B8D238 +:10E34000EC0197FD06C08BD2892BC1F7B801CE0135 +:10E3500029D3CE01DF91CF911F910F9108958F9214 +:10E360009F92AF92BF92EF92FF920F931F93CF9322 +:10E37000DF938C01D62F7A01B22E9AD29C013327DB +:10E380002B32310531F02D32310559F48B2D806857 +:10E39000B82ED15011F480E061C0C80189D297FD38 +:10E3A000FACFCB2DCD7F2B2D2073F9F48033E9F4F8 +:10E3B000AA24AA94AD0E09F43EC0C80179D297FDF3 +:10E3C0003AC09C012F7D33272835310541F4C264C2 +:10E3D000D25089F1C8016CD297FF07C02CC0B6FE9D +:10E3E00002C0C26001C0C261DA2D812C912C54019F +:10E3F00020ED280F283078F0C4FF03C0B801D2D236 +:10E4000017C02A3040F0C6FFF9CF2F7D3FEE320F04 +:10E410003630A0F727504C2FC501B40163DF4B0104 +:10E420005C01C260D15051F0C80142D297FFE0CFE9 +:10E43000C1FD04C0B0CF812C912C5401C7FF08C08E +:10E44000B094A09490948094811C911CA11CB11C48 +:10E450002C2FB501A401C70139DF81E0DF91CF91F5 +:10E460001F910F91FF90EF90BF90AF909F908F9072 +:10E4700008955F926F927F928F929F92AF92BF9218 +:10E48000CF92DF92EF92FF920F931F93CF93DF9380 +:10E49000CDB7DEB7A0970FB6F894DEBF0FBECDBFE5 +:10E4A0005C01962E7A01F9018E010F5F1F4F680102 +:10E4B00080E2D8011D928A95E9F7D50113968C90D8 +:10E4C00080E090E0612C712C30E061E070E083FC32 +:10E4D000259183FE21918F01522E211103C080E0EE +:10E4E00090E090C02E3511F4009751F1432F50E089 +:10E4F000481759073CF42D3559F12D3219F477207E +:10E5000009F103C0772009F468C0452D469546956A +:10E510004695D601A40FB11D452D47708B0102C051 +:10E52000000F111F4A95E2F7A8015C91452B4C930F +:10E53000651459F0561410F45394E7CF5A94E5CF6C +:10E5400031E004C07724739401C0712C0196BFCFD1 +:10E55000772019F08E8180628E83311103C0882468 +:10E56000839417C0F6019E012F5D3F4F80818095F7 +:10E5700081932E173F07D1F7F2CFE114F10429F070 +:10E58000D7018C93F70131967F019A94812C9920C1 +:10E59000E9F0C5018DD197FD17C0FC01FF2723E0ED +:10E5A000F595E7952A95E1F7EC0DFD1D208130E00A +:10E5B000AC014770552702C0359527954A95E2F77B +:10E5C00020FDDBCFB501EED1811089CFE114F1043C +:10E5D00011F0D7011C92C80115C0422F46954695EF +:10E5E0004695D601A40FB11D422F47708B0102C082 +:10E5F000000F111F4A95E2F7A8015C91452B4C933F +:10E60000622EA4CFA0960FB6F894DEBF0FBECDBF8A +:10E61000DF91CF911F910F91FF90EF90DF90CF90FE +:10E62000BF90AF909F908F907F906F905F90089574 +:10E630005F926F927F928F929F92AF92BF92CF9292 +:10E64000DF92EF92FF920F931F93CF93DF936C01B2 +:10E65000EB015A01FC0117821682512CF601E3806E +:10E66000FE01E3FC8591E3FE8191182FEF018823E1 +:10E6700009F4E0C090E0F3D0892B19F0C60159DE0F +:10E68000EDCF153241F4FE01E3FC1591E3FE11914B +:10E69000EF01153271F4C6010BD197FDC9C0412FAE +:10E6A00050E09C01332724173507C1F2B6017AD117 +:10E6B000C1C01A3239F4E3FC1591E3FE1191EF0168 +:10E6C00001E001C000E0F12C20ED210F2A3078F4A8 +:10E6D00002606F2D70E080E090E040E203DEF62EF5 +:10E6E000FE01E3FC1591E3FE1191EF01EDCF01FF77 +:10E6F00003C0F11003C09EC0FF24FA94183619F02D +:10E700001C3651F010C0FE01E3FC1591E3FE11919F +:10E71000EF01183641F408600460FE01E3FC159136 +:10E72000E3FE1191EF01112309F484C0612F70E021 +:10E7300086E093E09CD0892B09F47CC000FD07C0E3 +:10E74000F50180809180C50102965C0102C0812C98 +:10E75000912C1E3649F4F6014681578160E070E045 +:10E76000202FC401B3DD7ACF1336A1F401FD02C01E +:10E77000FF24F394C6019CD097FD5AC081149104E4 +:10E7800029F0F4018083C40101964C01FA94F11040 +:10E79000F1CF4AC01B3551F49E01A4016F2DC60173 +:10E7A00068DEEC01892B09F03FC039C0C601C1DD2C +:10E7B00097FD3EC01F3649F128F4143621F1193671 +:10E7C00039F125C0133771F01537E9F020C08114F5 +:10E7D000910429F0F4016082C40101964C01FA947D +:10E7E000FF2059F0C60164D03C0197FD06C037D028 +:10E7F000892B69F3B601C301D5D081149104A1F02E +:10E80000F401108211C0006203C0006101C0006405 +:10E81000202FA4016F2DC601A2DD811105C0F601D4 +:10E820008381807329F406C000FD18CF539416CF5E +:10E83000552019F0852D90E002C08FEF9FEFDF91FA +:10E84000CF911F910F91FF90EF90DF90CF90BF90ED +:10E85000AF909F908F907F906F905F9008959111EF +:10E8600018C1803219F089508550D0F70895FC0105 +:10E870000590061621F00020D9F7C00108953197C0 +:10E88000CF010895FC010590615070400110D8F748 +:10E89000809590958E0F9F1F0895FC0161507040E8 +:10E8A00001900110D8F7809590958E0F9F1F0895C5 +:10E8B000CF93DF93EC012B8120FF33C026FF0AC0EA +:10E8C0002F7B2B838E819F8101969F838E838A81EC +:10E8D00090E029C022FF0FC0E881F9818081082ED5 +:10E8E000000C990B009719F420622B831AC0319603 +:10E8F000F983E8830EC0EA85FB85199597FF09C067 +:10E900002B81019611F080E201C080E1822B8B8384 +:10E9100008C02E813F812F5F3F4F3F832E83992771 +:10E9200002C08FEF9FEFDF91CF9108950F931F9358 +:10E93000CF93DF93FB01238121FD03C08FEF9FEF76 +:10E940002CC022FF16C04681578124813581421791 +:10E95000530744F4A081B1819D012F5F3F4F318364 +:10E9600020838C93268137812F5F3F4F3783268307 +:10E9700014C08B01EC01FB010084F185E02D199599 +:10E98000892BE1F6D80116968D919C9117970196E7 +:10E9900017969C938E931697CE01DF91CF911F917E +:10E9A0000F910895FB01238120FF12C026FD10C0A6 +:10E9B0008F3F3FEF930761F082832F7D2064238395 +:10E9C000268137812150310937832683992708957D +:10E9D0008FEF9FEF0895FA01AA27283051F12031D7 +:10E9E00081F1E8946F936E7F6E5F7F4F8F4F9F4FE3 +:10E9F000AF4FB1E03ED0B4E03CD0670F781F891F25 +:10EA00009A1FA11D680F791F8A1F911DA11D6A0FF2 +:10EA1000711D811D911DA11D20D009F468943F91A5 +:10EA20002AE0269F11243019305D3193DEF6CF01A4 +:10EA30000895462F4770405D4193B3E00FD0C9F76A +:10EA4000F6CF462F4F70405D4A3318F0495D31FDD7 +:10EA50004052419302D0A9F7EACFB4E0A69597952A +:10EA6000879577956795BA95C9F700976105710500 +:10EA700008959B01AC010A2E06945795479537954A +:10EA80002795BA95C9F7620F731F841F951FA01DA4 +:0CEA90000895992788270895F894FFCF77 +:10EA9C00AE47C13F08020000000000000073736322 +:10EAAC00616E662025640D0A0053255B302D392DCF +:10EABC002B2E5D52255B302D392D2B2E5D48255B81 +:10EACC00302D392D2B2E5D46255B302D392D2B2EDF +:10EADC005D004E256456255B302D392D2B2E5D4661 +:10EAEC00255B302D392D2B2E5D0058255B302D39B3 +:10EAFC002D2B2E5D59255B302D392D2B2E5D5A2556 +:10EB0C005B302D392D2B2E5D46255B302D392D2B71 +:10EB1C002E5D0020422573204C2573205225730A4C +:10EB2C0000537769667450726F002025730A005683 +:10EB3C00342E332E300056342E302E3300205625F2 +:10EB4C00730A002058257320592573205A25730AFF +:10EB5C00002053257320522573204825730A004E3C +:10EB6C0025640020422564204C2564205225640A2B +:10EB7C0000616E676C65206F66667365743A257309 +:10EB8C000D0A00736F667420766572203A20257327 +:10EB9C000D0A0061706920766572203A2025730D8C +:10EBAC000A00776F726B206D6F6465203A202564C4 +:10EBBC000D0A0040310A006566666563742063685F +:10EBCC0065636B2074696D656F7574210D0A002384 +:10EBDC00255B302D395D00242573004532332062CE +:10EBEC0075666665722066756C6C0D0A0040332084 +:10EBFC0058257320592573205A2573205225730AE2 +:10EC0C00004036204E30205625640A0040352056F0 +:10EC1C0025640A0040392056300A0041255B302D0E +:10EC2C00392D2B2E5D00562573002056310A0046D7 +:10EC3C00255B302D392E5D5425640058255B302D15 +:10EC4C00392D2B2E5D59255B302D392D2B2E5D5AF0 +:10EC5C00255B302D392D2B2E5D502564004E2564FF +:10EC6C005625640053255B302D392D2B2E5D005617 +:10EC7C00255B302D392D2B2E5D006120300D0A00C7 +:10EC8C006220300D0A006320300D0A004532330A31 +:10EC9C00004532300A004532310A0020006F6B000B +:10ECAC0045323000453231004532320056332E3376 +:10ECBC002E310056332E332E300072656665723A53 +:0EECCC00422564204C2564205225640D0A0068 +:00000001FF From 61557e5fb54e60abf8e6383f67045b0a7be4e2e3 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Fri, 30 Nov 2018 17:44:05 +0800 Subject: [PATCH 51/74] Update 2018-11-30 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6643a51..bfb712c 100755 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ * Add serial port automatic identification system * Add extern I/O Control CMD M2240,M2241,P2240,P2241 -* Fix Z aixs problem - +* Fix Z aixs some problem +* Optimize speed setting ## Caution #### The current firmware is not perfect and will be updated periodically From 290e270d27cbb81b3e2aad4b54743b15bbf9b723 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Thu, 28 Mar 2019 16:02:24 +0800 Subject: [PATCH 52/74] Create 2019-03-28 --- .gitattributes | 0 .gitignore | 0 .travis.yml | 0 README.md | 12 +- hex/uArmPro_V4.3.0_release_20181130.hex | 3791 ----------------------- src/motion_control.c | 14 +- src/step_lowlevel.c | 223 ++ src/step_lowlevel.h | 70 + src/stepper.c | 4 - src/uarm_angle.c | 55 +- src/uarm_common.h | 64 +- src/uarm_coord_convert.c | 10 +- src/uarm_peripheral.c | 230 +- src/uarm_peripheral.h | 2 +- src/uarm_protocol.c | 72 +- src/uarm_swift.c | 1 + src/uarm_swift.h | 2 +- src/uarm_timer.c | 12 +- 18 files changed, 564 insertions(+), 3998 deletions(-) mode change 100644 => 100755 .gitattributes mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .travis.yml delete mode 100755 hex/uArmPro_V4.3.0_release_20181130.hex create mode 100755 src/step_lowlevel.c create mode 100755 src/step_lowlevel.h diff --git a/.gitattributes b/.gitattributes old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 diff --git a/README.md b/README.md index bfb712c..d67a815 100755 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# Swift Pro Firmware V4.3.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.4.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- -## Update Summary for v4.3.0 +## Update Summary for v4.4.0 -* Add serial port automatic identification system -* Add extern I/O Control CMD M2240,M2241,P2240,P2241 -* Fix Z aixs some problem -* Optimize speed setting +* Fix G1 motion planning +* Fix step effector motion bug +* Optimize step effector return funciton +* Add step effector speed control ## Caution #### The current firmware is not perfect and will be updated periodically diff --git a/hex/uArmPro_V4.3.0_release_20181130.hex b/hex/uArmPro_V4.3.0_release_20181130.hex deleted file mode 100755 index 2300ecc..0000000 --- a/hex/uArmPro_V4.3.0_release_20181130.hex +++ /dev/null @@ -1,3791 +0,0 @@ -:1000000065C5000084C5000082C5000080C50000F1 -:100010007EC500007CC500007AC5000078C50000E0 -:1000200076C500000C94EF5572C500000C941B457A -:100030006EC500006CC500006AC500000C94A75195 -:1000400066C500000C944D3062C5000060C500001C -:100050005EC500005CC500005AC500000C94D82F96 -:1000600056C500000C9449360C940B3750C500005F -:100070004EC500004CC500004AC5000048C5000040 -:1000800046C5000044C5000042C500000C949151D3 -:100090000C94E1350C94DD363AC5000038C50000FB -:1000A00036C5000034C5000032C5000030C5000070 -:1000B0002EC500000C9456512AC5000028C500002A -:1000C00026C5000024C500000C9421510C947935FC -:1000D0000C94AF361CC500001AC5000018C50000FE -:1000E00016C50000EC13401E401EFA130F14241412 -:1000F0003914401E4214401E5514401E64146E14E0 -:10010000C614401E401E401E7D149714B114131DCA -:10011000231D521D231D561D6D1D5C1D661D911D49 -:10012000981DA31DAE1DCD1DCF1DD21DD41DB62CF7 -:10013000CF2CE82C012D1A2D3D2D562DAF33B53384 -:10014000B833BB33BF33C733CF333C343C343C3498 -:10015000D733DA33E333EC333C343C343C343C3493 -:100160003C343C34F433FE330A3414341734203432 -:1001700029342F3499509C508B508F509550D35028 -:10018000A050A450AA50AE50B250B850BC50C0506D -:10019000D350C650CA50CE50084AD73B3BCE016E12 -:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE -:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD -:1001C000000000803F072C7AA5BA6CC590DA3B93FB -:1001D00065FC8BBC53F810FD3C5692834DBD879D4A -:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 -:1001F000CDB2D44EB93836A9020C50B991868808D0 -:100200003CA6AAAA2ABE000000803F0000407A1047 -:10021000F35A00A0724E18090010A5D4E80000E8B7 -:100220007648170000E40B54020000CA9A3B000015 -:1002300000E1F505000080969800000040420F00A4 -:100240000000A08601000000102700000000E80365 -:10025000000000006400000000000A000000000030 -:100260000100000000002C76D888DC674F0823DFEF -:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 -:10028000997696E8E6C28426EB898C9B62ED407CE9 -:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 -:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA -:1002B000FEF520E6B500D0ED902E030094357705CD -:1002C0000080841E080000204E0A000000C80C3385 -:1002D0003333330F986E12831141EF8D2114893B14 -:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 -:1002F000901DA4BBE424203284725E228100C9F1E7 -:1003000024ECA1E53D276364696E6F7073757858BE -:100310005B00000020002300260029002C002F0095 -:100320003200000100000301060109010D0A003D31 -:1003300000244E005D0D0A005B302E396A2E3230EB -:100340003136303732363A005D0D0A005B544C4F7F -:100350003A005D0D0A002C005B4739323A005D0D12 -:100360000A002C003A003330003238005B47005D51 -:100370000D0A00205300204600205400204D380074 -:10038000204D3900204D3500204D3400204D3300E4 -:10039000204D3200204D3100204D300020473934AF -:1003A00000204739330020473931002047393000D9 -:1003B00020473230002047323100204731390020B9 -:1003C0004731380020473137002047004733382E67 -:1003D000004738300047330047320047310047308C -:1003E000005B00290D0A00206D617820747261762F -:1003F000656C2C206D6D0020616363656C2C206D35 -:100400006D2F7365635E3200206D617820726174B8 -:10041000652C206D6D2F6D696E002C2073746570D6 -:100420002F6D6D007A00790078002028003D0024AF -:10043000002028686F6D696E672070756C6C2D6F79 -:1004400066662C206D6D290D0A002028686F6D6985 -:100450006E67206465626F756E63652C206D7365D1 -:1004600063290D0A2432373D002028686F6D696EBC -:1004700067207365656B2C206D6D2F6D696E290D7E -:100480000A2432363D002028686F6D696E67206649 -:100490006565642C206D6D2F6D696E290D0A2432FF -:1004A000353D00290D0A2432343D002028686F6D47 -:1004B000696E672064697220696E76657274206D5A -:1004C00061736B3A002028686F6D696E67206379ED -:1004D000636C652C20626F6F6C290D0A2432333DEA -:1004E00000202868617264206C696D6974732C2027 -:1004F000626F6F6C290D0A2432323D002028736F21 -:100500006674206C696D6974732C20626F6F6C293E -:100510000D0A2432313D0020287265706F727420FC -:10052000696E636865732C20626F6F6C290D0A24F5 -:1005300032303D00202861726320746F6C657261F7 -:100540006E63652C206D6D290D0A2431333D00202A -:10055000286A756E6374696F6E206465766961746C -:10056000696F6E2C206D6D290D0A2431323D0029F2 -:100570000D0A2431313D0020287374617475732095 -:100580007265706F7274206D61736B3A0020287011 -:10059000726F62652070696E20696E766572742C68 -:1005A00020626F6F6C290D0A2431303D0020286CC9 -:1005B000696D69742070696E7320696E76657274F6 -:1005C0002C20626F6F6C290D0A24363D00202873A1 -:1005D00074657020656E61626C6520696E76657207 -:1005E000742C20626F6F6C290D0A24353D00290D93 -:1005F0000A24343D00202864697220706F727420D0 -:10060000696E76657274206D61736B3A00290D0A0C -:1006100024333D0020287374657020706F7274203D -:10062000696E76657274206D61736B3A0020287371 -:100630007465702069646C652064656C61792C2038 -:100640006D736563290D0A24323D0020287374659B -:10065000702070756C73652C2075736563290D0AA5 -:1006600024313D0024303D0024242028766965771C -:10067000204772626C2073657474696E6773290D0C -:100680000A2423202876696577202320706172610F -:100690006D6574657273290D0A2447202876696593 -:1006A0007720706172736572207374617465290DAF -:1006B0000A2449202876696577206275696C642070 -:1006C000696E666F290D0A244E20287669657720A9 -:1006D0007374617274757020626C6F636B73290D33 -:1006E0000A24783D76616C756520287361766520F3 -:1006F0004772626C2073657474696E67290D0A24F1 -:100700004E783D6C696E6520287361766520737440 -:10071000617274757020626C6F636B290D0A2443DB -:100720002028636865636B2067636F6465206D6F65 -:100730006465290D0A245820286B696C6C20616C53 -:1007400061726D206C6F636B290D0A24482028723A -:10075000756E20686F6D696E67206379636C6529BB -:100760000D0A7E20286379636C652073746172744E -:10077000290D0A2120286665656420686F6C64294C -:100780000D0A3F202863757272656E742073746160 -:10079000747573290D0A6374726C2D782028726544 -:1007A000736574204772626C290D0A000D0A0048B7 -:1007B0006F6D696E67206661696C0050726F62656B -:1007C000206661696C0041626F72742064757269A1 -:1007D0006E67206379636C6500536F6674206C6983 -:1007E0006D69740048617264206C696D69740041C0 -:1007F0004C41524D3A20003E0D0A002C4C696D3A96 -:10080000002C52583A002C4275663A002C002C57A6 -:10081000506F733A002C002C4D506F733A003C44DB -:100820006F6F72003C436865636B003C416C6172A2 -:100830006D003C486F6D65003C486F6C64003C5235 -:10084000756E003C49646C65005D0D0A005265736D -:10085000746F72696E672064656661756C7473008D -:1008600050676D20456E6400436865636B20446F7C -:100870006F720044697361626C656400456E616209 -:100880006C65640043617574696F6E3A20556E6CD7 -:100890006F636B656400272448277C272458272032 -:1008A000746F20756E6C6F636B0052657365742096 -:1008B000746F20636F6E74696E7565005B00000075 -:1008C0002100240027002A002D0030003300010100 -:1008D0000000040107010A015D0D0A003A002C0026 -:1008E0005B5052423A000D0A00496E76616C6964B1 -:1008F0002067636F64652049443A00556E646566FD -:10090000696E656420666565642072617465004D7A -:100910006F64616C2067726F75702076696F6C61AF -:1009200074696F6E00486F6D696E67206E6F74201A -:10093000656E61626C656400416C61726D206C6F04 -:10094000636B004E6F742069646C650045455052BE -:100950004F4D2072656164206661696C2E2055736D -:10096000696E672064656661756C74730056616CAE -:100970007565203C2033207573656300536574747E -:10098000696E672064697361626C65640056616CAE -:100990007565203C203000496E76616C6964207377 -:1009A000746174656D656E7400426164206E756D6E -:1009B00062657220666F726D617400457870656360 -:1009C00074656420636F6D6D616E64206C65747412 -:1009D0006572006572726F723A20006F6B0D0A00CB -:1009E00000002200250028002B002E0031003400DA -:1009F00002010000050108010B01050505050705B9 -:100A000008080808020202020A0A0808040404048A -:100A100001010101010101010303030303030303B6 -:100A2000040707070C0C0C0C0C0C0C0C0202020245 -:100A300006060606060606060B0B0B0B0B0B0B0B2E -:100A400001021020200808102040102040800201E0 -:100A500002010804020101020408102040808040C5 -:100A600020100804020180040201804020100804C4 -:100A70000201080402010102040810204080010262 -:100A800004081020408000000A0B02090C0D0E081B -:100A90000703040100000000000000000000000047 -:100AA0000000000000000000000000000000000046 -:100AB0000000121110000000000000000000000003 -:100AC00000000000000000000000000011241FBE14 -:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D -:100AE000B2E0ECE9FAEE00E00BBF02C007900D9215 -:100AF000AE33B107D9F723E1AEE3B4E001C01D92F4 -:100B0000A837B207E1F70E94DE580C944C7578CAFA -:100B10002F923F924F925F926F927F928F929F920D -:100B2000AF92BF92CF92DF92EF92FF920F931F93FB -:100B3000CF93DF93CDB7DEB7C25DD1090FB6F8947E -:100B4000DEBF0FBECDBFC753DF4F99838883C95C1B -:100B5000D04089E3E0E0F3E1DF011D928A95E9F7F7 -:100B60008AE0E9E3F3E1A1E0B3E101900D928A9517 -:100B7000E1F7FE01EB55FF4F1082C154DF4F1982A0 -:100B80001882CF5BD040C554DF4F19821882CB5BEF -:100B9000D040CB53DF4F1882C55CD040CA54DF4FE2 -:100BA0001882C65BD040C654DF4F1882CA5BD04063 -:100BB000E45AF109C855DF4FF983E883C85AD04099 -:100BC0009E012F5A3F4FC655DF4F39832883CA5A9B -:100BD000D040CE01CD96C455DF4F99838883CC5A3F -:100BE000D040D9011896C553DF4FB983A883CB5C99 -:100BF000D040CB55DF4F8881C55AD040C753DF4F17 -:100C0000E881F981C95CD040E80FF11D1081112302 -:100C100011F40C9423159FEB910F9A3110F00C9462 -:100C2000321E8F5FCB55DF4F8883C55AD040AE014F -:100C30004F555F4FBE016B557F4FC753DF4F8881C4 -:100C40009981C95CD0400E945E27882311F40C94DE -:100C5000341ECF55DF4FC880D980EA80FB80C15A4F -:100C6000D040C701B6010E945A6E0E94C76BCF5395 -:100C7000DF4F688379838A839B83C15CD040CF53E5 -:100C8000DF4F28803980C15CD040B10180E090E026 -:100C90000E94F36B9B01AC01C701B6010E94796A07 -:100CA00020E030E048EC52E40E94AC6D4B015C0166 -:100CB00020E030E0A9010E94716D20E030E040E0CA -:100CC0005FE387FD05C0C501B4010E947A6A04C0D4 -:100CD000C501B4010E94796A0E94C26BCE54DF4FF5 -:100CE00079836883C25BD0401D3411F40C948E0E5E -:100CF000103511F40C942A0F173411F00C94D913F9 -:100D0000CB55DF4F8881C55AD040C753DF4FE881AC -:100D1000F981C95CD040E80FF11DCF01FAE92F1627 -:100D2000F8E03F0609F416C158F434ED231637E015 -:100D3000330699F0A9E92A16A8E03A06D1F13BC595 -:100D4000BCE92B16B8E03B0609F43DC2EDE92E16CE -:100D5000E8E03E0609F42DC32EC51A82198221E06F -:100D600030E02C0F3D1F3F932F9329EC33E03F934E -:100D70002F939F938F930E94206F0F900F900F904F -:100D80000F900F900F90181619060CF037C3898139 -:100D90009A819093670E8093660E11E01093390D3F -:100DA0008091D00C81110AC50E945C3A1093D00C3E -:100DB00005C58E010B5E1F4F1F930F939E01275D8C -:100DC0003F4F3F932F93C355DF4F3881CD5AD040CB -:100DD0003F93C455DF4FA881CC5AD040AF93C5553F -:100DE000DF4FB881CB5AD040BF93C655DF4FE88163 -:100DF000CA5AD040EF9329E132E03F932F939F935B -:100E00008F930E94206F0FB6F894DEBF0FBECDBF48 -:100E100004970CF4F3C2EF961CAE1DAE1EAE1FAECF -:100E2000EF97E5961CAE1DAE1EAE1FAEE597AB96D6 -:100E30001CAE1DAE1EAE1FAEAB97A1961CAE1DAE76 -:100E40001EAE1FAEA1978CE0C855DF4FA881B981B7 -:100E5000C85AD0401D928A95E9F7AE0145585F4FB8 -:100E600060E070E0CE018F5A9F4F0E945E2788237A -:100E700009F4A4C4AE014F585F4F60E070E0CE01AA -:100E8000CD960E945E27882309F498C4AE01495983 -:100E90005F4F60E070E0CE0189960E945E27882354 -:100EA00009F48CC4AE01435A5F4F60E070E0C801A2 -:100EB0000E945E27882309F481C420E030E044EBDF -:100EC00052E4E5966CAD7DAD8EAD9FADE5970E9489 -:100ED000796A21EE3EE245E652E40E945A6B6B01CC -:100EE0007C01E5966CAF7DAF8EAF9FAFE5970E941A -:100EF000576BEF968CAC9DACAEACBFACEF97A50139 -:100F000094010E94AC6D69837A838B839C83C701B3 -:100F1000B6010E940F6E9B01AC01C501B4010E9495 -:100F2000AC6D6D837E838F839887AB968CAD9DADC2 -:100F3000AEADBFADAB9789879A87AB87BC87A196CB -:100F40002CAD3DAD4EAD5FADA19700E0BE016F5F32 -:100F50007F4F2CC4E5961CAE1DAE1EAE1FAEE597AE -:100F6000AB961CAE1DAE1EAE1FAEAB97E1E0F0E03F -:100F7000EC0FFD1FFF93EF938E010B5E1F4F1F932E -:100F80000F932E01FBE74F0E511C5F924F9222E40C -:100F900032E03F932F939F938F930E94206F0FB661 -:100FA000F894DEBF0FBECDBF03970CF427C2AE018D -:100FB0004F585F4F60E070E0C8010E945E278823B1 -:100FC00009F4FCC3AE0149595F4F60E070E0CE0107 -:100FD00001960E945E27882309F4F0C3A1961CAEF7 -:100FE0001DAE1EAE1FAEA19765961CAE1DAE1EAE09 -:100FF0001FAE659721961CAE1DAE1EAE1FAE21978B -:101000003E0139E2630E711C8CE0D3011D928A957A -:10101000E9F76091280D7091290D80912A0D90912A -:101020002B0D0E94F56BC255DF4F688379838A834D -:101030009B83CE5AD0406091240D7091250D8091F4 -:10104000260D9091270D0E94F56BC153DF4F6883E9 -:1010500079838A839B83CF5CD0406091200D70910F -:10106000210D8091220D9091230D0E94F56BFE01C0 -:10107000FD964F019E012F5A3F4F5901DE01A35AA1 -:10108000BF4F6D01C255DF4FE880F9800A811B8197 -:10109000CE5AD040C153DF4F288139814A815B81CC -:1010A000CF5CD0400E943B42F2018081918181302F -:1010B000910509F44BC0DCF5892B09F0ACC120E0A7 -:1010C00030E044EB52E4E5966CAD7DAD8EAD9FAD66 -:1010D000E5970E94796A7B018C01E5966CAF7DAF44 -:1010E0008EAF9FAFE59765962CAD3DAD4EAD5FAD34 -:1010F0006597A1966CAD7DAD8EAD9FADA197DE01DC -:10110000D1964D01FE01BD965F0118976D010E94B9 -:101110005641A401B501C6010E94A93EAB962CAD73 -:101120003DAD4EAD5FADAB9700E0B6014AC0823039 -:101130009105F9F0039709F06EC1E5966CAD7DADB0 -:101140008EAD9FADE5970E94183B38C32196ECAC5D -:10115000FDAC0EAD1FAD219765962CAD3DAD4EADEE -:101160005FAD6597E5966CAD7DAD8EAD9FADE597B6 -:1011700012C02196ECACFDAC0EAD1FAD2197E596EB -:101180002CAD3DAD4EAD5FADE597A1966CAD7DAD9F -:101190008EAD9FADA197FE01F1964F01DE019D96A8 -:1011A0005D0163010E945641A401B501C3010E9483 -:1011B000A93EAB962CAD3DAD4EAD5FADAB9700E01B -:1011C000B30180E0F4C29E012B5E3F4F3F932F930B -:1011D0008E01075D1F4F1F930F93C355DF4FB881DB -:1011E000CD5AD040BF93C455DF4FE881CC5AD04090 -:1011F000EF93C555DF4FF881CB5AD040FF93C655CA -:10120000DF4F2881CA5AD0402F932AE532E03F931E -:101210002F939F938F930E94206F0FB6F894DEBF99 -:101220000FBECDBF04970CF4E9C0EF961CAE1DAE07 -:101230001EAE1FAEEF97E5961CAE1DAE1EAE1FAEE6 -:10124000E597AB961CAE1DAE1EAE1FAEAB97A1963A -:101250001CAE1DAE1EAE1FAEA197AE0145585F4F2E -:1012600060E070E0CE018F5A9F4F0E945E27882376 -:1012700009F4A4C2AE014F585F4F60E070E0CE01A8 -:10128000CD960E945E27882309F498C2AE01495981 -:101290005F4F60E070E0C8010E945E27882309F478 -:1012A0008DC2AE01435A5F4F60E070E0CE014596BB -:1012B0000E945E27882309F481C26091280D7091F5 -:1012C000290D80912A0D90912B0D0E94F56BC2552E -:1012D000DF4F688379838A839B83CE5AD0406091A5 -:1012E000240D7091250D8091260D9091270D0E945F -:1012F000F56B2B013C016091200D7091210D8091C7 -:10130000220D9091230D0E94F56BFE0139964F013D -:101310009E012B5F3F4F5901DE0111966D01C255B1 -:10132000DF4FE880F9800A811B81CE5AD040A301AB -:1013300092010E94523FA401B501C6010E94A93E3C -:10134000EF962CAD3DAD4EAD5FADEF9769817A81E3 -:101350008B819C810E947A6A69837A838B839C83C8 -:10136000E5962CAD3DAD4EAD5FADE5976D817E81CF -:101370008F8198850E947A6A6D837E838F83988798 -:10138000AB962CAD3DAD4EAD5FADAB9769857A8523 -:101390008B859C850E947A6A69877A878B879C8770 -:1013A000A1962CAD3DAD4EAD5FADA19700E0B6016D -:1013B000FDC19E01235A3F4F3F932F938E01095940 -:1013C0001F4F1F930F937E01B1E7EB0EF11CFF92AD -:1013D000EF926E01EBE7CE0ED11CDF92CF9229E1A6 -:1013E00032E03F932F939F938F930E94206F0FB60D -:1013F000F894DEBF0FBECDBF049784F41F9281E046 -:101400008F938DE092E09F938F930E949D1F0F908A -:101410000F900F900F9082E390E0D2C1C356DF4F40 -:10142000188219821A821B82CD59D040C756DF4FCD -:10143000188219821A821B82C959D040CB56DF4FBD -:10144000188219821A821B82C559D040CF56DF4FAD -:10145000188219821A821B82C159D0408CE0C6556D -:10146000DF4FA881B981CA5AD0401D928A95E9F709 -:10147000AE0143565F4F60E070E0C6010E945E27F8 -:10148000882309F49BC1AE0147565F4F60E070E0CE -:10149000C7010E945E27882309F490C1AE014B5614 -:1014A0005F4F60E070E0C8010E945E27882309F466 -:1014B00085C1AE014F565F4F60E070E0CE01835AA8 -:1014C0009F4F0E945E27882309F478C1C357DF4FDE -:1014D000188219821A821B82CD58D040C757DF4F1D -:1014E000188219821A821B82C958D040CB57DF4F0D -:1014F000188219821A821B82C558D0406091280D2B -:101500007091290D80912A0D90912B0D0E94F56B01 -:10151000C255DF4F688379838A839B83CE5AD0403C -:101520006091240D7091250D8091260D9091270DCD -:101530000E94F56B2B013C016091200D7091210DF3 -:101540008091220D9091230D0E94F56BFE01EB57C7 -:10155000FF4F4F019E0127573F4F5901DE01A3570F -:10156000BF4F6D01C255DF4FE880F9800A811B81B2 -:10157000CE5AD040A30192010E943B426091280DB7 -:101580007091290D80912A0D90912B0D0E94F56B81 -:10159000C153DF4F688379838A839B83CF5CD040BC -:1015A0006091240D7091250D8091260D9091270D4D -:1015B0000E94F56B2B013C016091200D7091210D73 -:1015C0008091220D9091230D0E94F56BC553DF4F42 -:1015D00088809980CB5CD040E1E5F0E0EC0FFD1F06 -:1015E0003496C255DF4FF983E883CE5AD0405F016D -:1015F0009E012F5A3F4F6901C153DF4FE880F980A8 -:101600000A811B81CF5CD040A30192010E94523F0E -:10161000C553DF4F48815981CB5CD040C255DF4F65 -:1016200068817981CE5AD040C6010E94A93E659654 -:101630006CAD7DAD8EAD9FAD65976996CCACDDACE4 -:10164000EEACFFAC69979B01AC010E94AC6D4B0105 -:101650005C01A7019601C701B6010E94AC6D9B0118 -:10166000AC01C501B4010E947A6A0E94196EC3568A -:10167000DF4F288139814A815B81CD59D0400E945A -:101680007A6A6B017C01C356DF4F688379838A8352 -:101690009B83CD59D040C756DF4F288139814A817D -:1016A0005B81C959D040CB57DF4F688179818A81EE -:1016B0009B81C558D0400E947A6A21EE3EE245E601 -:1016C00052E40E945A6B2B013C010E94576B9B0114 -:1016D000AC01C701B6010E94AC6D4B015C0165967F -:1016E0006CAF7DAF8EAF9FAF6597C301B2010E9413 -:1016F0000F6E9B01AC01C701B6010E94AC6D6996EB -:101700006CAF7DAF8EAF9FAF6997CB56DF4F28810F -:1017100039814A815B81C559D0406D966CAD7DADF4 -:101720008EAD9FAD6D970E947A6A6D966CAF7DAF5E -:101730008EAF9FAF6D978E01035C1F4F24E045E095 -:10174000C501B4010E94FE6769966CAD7DAD8EAD9A -:101750009FAD69970451110924E045E00E94FE679E -:101760006D966CAD7DAD8EAD9FAD6D970451110939 -:1017700024E045E00E94FE67C356DF4F688179810F -:101780008A819B81CD59D0400451110924E045E064 -:101790000E94FE67CF56DF4F288139814A815B81E5 -:1017A000C159D04000E0BE016F5A7F4F81E00E94D6 -:1017B000045290E005C081E090E002C080E090E03B -:1017C0009C01215031092230310510F00C949E1EED -:1017D00038E22316310409F445C280F594E1291654 -:1017E000310498F4A1E12A16310408F079C1B4E07B -:1017F0002B16310409F479C008F4F4C0FAE02F166E -:10180000310409F45EC00C94401E2CE12216310410 -:1018100009F457C038F486E12816310408F4BEC133 -:101820000C94401E9EE12916310409F44AC0A6E238 -:101830002A16310409F4D6C00C94401EBDE32B16C1 -:10184000310409F4FEC110F5F5E32F16310409F453 -:101850004CC060F43BE22316310409F4B6C181E3C5 -:101860002816310409F4B1C10C94401E9CE32916DA -:10187000310410F00C94401ECF53DF4F8881C15CBF -:10188000D04086538093071399E0D5C1ACE52A1662 -:10189000310460F4BAE52B16310408F03CC1E0E5F0 -:1018A0002E16310409F4ACC00C94401EFCE52F1632 -:1018B000310439F02FE52216310408F462C10C948A -:1018C000401ECE54DF4F88819981C25BD040892B66 -:1018D00011F00C94541EC654DF4F9881CA5BD0405F -:1018E000992309F450C00C94361EACE12A16310439 -:1018F000D1F148F4E4E02E16310481F0FAE02F161D -:101900003104E9F01FC02EE12216310409F445C06C -:1019100035E32316310409F463C014C081E010C01C -:10192000FFE12F16310408F04FC02AE022163104DF -:1019300079F481E0C654DF4F8883CA5BD04082E0EF -:1019400080930013C255DF4F1882CE5AD04097C102 -:101950003CE12316310409F09CC191E0C654DF4FED -:101960009883CA5BD040CE54DF4FA881B981C25B57 -:10197000D040109731F01A9711F00C94401E84E07B -:1019800015C083E013C0EEE12E16310449F6B1E034 -:10199000C654DF4FB883CA5BD040CE54DF4FE881D6 -:1019A000F981C25BD040309749F485E08093001301 -:1019B000C255DF4F1882CE5AD04076C13A9711F007 -:1019C0000C94401E86E0F2CF85E32816310411F016 -:1019D0000C94691EF1E0C654DF4FF883CA5BD04017 -:1019E00087E0AECFC654DF4F9881CA5BD0409111DB -:1019F0000C94361EA2E0C654DF4FA883CA5BD040C9 -:101A0000B2E02B16310421F160F421143104E1F02D -:101A10002A94232809F02DC181E080930113A1E0CD -:101A200074C026E222163104E9F030E523163104B1 -:101A300009F452C083E02816310409F01AC183E08A -:101A400080930113E1E00FC11092011391E0F3C004 -:101A500082E080930113B1E0C255DF4FB883CE5AC4 -:101A6000D0400DC1CE54DF4F28813981C25BD040B8 -:101A70002E31310539F178F42431310511F00C940F -:101A8000401E84E08093011391E0C255DF4F98839C -:101A9000CE5AD04009C1CE54DF4F88819981C25BB4 -:101AA000D0408832910599F0C29711F00C94401EF5 -:101AB00087E080930113E1E0C255DF4FE883CE5AFF -:101AC000D040F2C085E080930113A1E054C086E0CD -:101AD00080930113B1E0C0C088E080930113C9C0B6 -:101AE00022E12216310441F033E12316310449F09A -:101AF0001092051382E063C081E08093051392E0A9 -:101B00009AC082E080930513A2E0C255DF4FA883FC -:101B1000CE5AD040B4C0CE54DF4FE881F981C25BC9 -:101B2000D040EF2BB9F4FAE52F16310449F41092A6 -:101B3000041323E0C255DF4F2883CE5AD040B4C0EF -:101B400081E08093041333E0C255DF4F3883CE5ACF -:101B5000D040AAC0CE54DF4F88819981C25BD0406B -:101B60000A9711F00C94401E9AE52916310411F4DD -:101B70000C94401EA4E0C255DF4FA883CE5AD0403B -:101B800093C0BDE52B16310429F481E08093021344 -:101B9000E5E069C010920213F5E06CC024E1221662 -:101BA000310451F481E08093031336E0C255DF4FD6 -:101BB0003883CE5AD04063C01092031386E0C255DA -:101BC000DF4F8883CE5AD0405AC0C654DF4F988129 -:101BD000CA5BD04091110C94361EA1E32A16310441 -:101BE00079F410920613B8E0C255DF4FB883CE5A8D -:101BF000D040E3E0C654DF4FE883CA5BD04054C016 -:101C0000CE54DF4F28813981C25BD0402A30310564 -:101C100011F00C94401E81E08093061338E0C25509 -:101C2000DF4F3883CE5AD04083E0C654DF4F8883DD -:101C3000CA5BD04039C0C255DF4F9883CE5AD040DE -:101C40001EC0CE54DF4FA881B981C25BD040AB2B00 -:101C500011F00C94401EBAE0C255DF4FB883CE5A43 -:101C6000D04022C0E7E0C255DF4FE883CE5AD040D3 -:101C700006C0F1E0C255DF4FF883CE5AD040CE54B3 -:101C8000DF4F28813981C25BD040232B69F00C944F -:101C9000671EC255DF4F1882CE5AD04031E0C6547D -:101CA000DF4F3883CA5BD040C554DF4FE881F981EC -:101CB000CB5BD040CF01A0E0B0E0C255DF4F088041 -:101CC000CE5AD04004C0B695A795979587950A94AB -:101CD000D2F780FF03C085E10C949E1E81E090E066 -:101CE000A0E0B0E0C255DF4F0880CE5AD04004C01B -:101CF000880F991FAA1FBB1F0A94D2F7C554DF4F44 -:101D000028813981CB5BD040282B392BC554DF4F3C -:101D100039832883CB5BD0400C94F905CE54DF4F38 -:101D200088819981C25BD040892B11F00C94671E89 -:101D3000CB55DF4F8881C55AD040C753DF4F6881EC -:101D40007981C95CD040680F711DAE014B555F4F62 -:101D5000CF53DF4F88819981C15CD0400E942A28EF -:101D60009C01215031092230310510F00C949E1E47 -:101D700096E02916310428F4A3E02A16310490F0E5 -:101D800026C0B8E02B16310410F40C94401EEAE093 -:101D90002E16310408F440C0FEE12F16310411F074 -:101DA0000C94401E22E02216310461F03EE123161D -:101DB000310441F0232809F046C081E080930813E4 -:101DC0008BE032C082E0809308139BE036C0A4E031 -:101DD0002A16310471F0B5E02B163104A1F081E030 -:101DE00080930A13ECE0C255DF4FE883CE5AD0400F -:101DF000AFC482E080930A13FCE0C255DF4FF88342 -:101E0000CE5AD040A5C410920A132CE0C255DF4F21 -:101E10002883CE5AD0409CC439E02316310451F0B7 -:101E200082E0809309138DE0C255DF4F8883CE5A3C -:101E3000D0408EC4109209139DE0C255DF4F9883A5 -:101E4000CE5AD04085C4ABE0C255DF4FA883CE5AEE -:101E5000D0407EC4CE54DF4F28813981C25BD04050 -:101E6000232B11F00C94671ECB55DF4F8881C55A88 -:101E7000D040C753DF4FE881F981C95CD040E80FFB -:101E8000F11D37EB231638E0330609F46EC308F072 -:101E900061C19CE9291698E0390609F49CC108F053 -:101EA00078C0B9E92B16B8E03B0609F48EC108F0FA -:101EB00061C0F8E92F16F8E03F0609F03FC484E15D -:101EC0001E01A9E22A0E311CF101282F11922A9538 -:101ED000E9F7DE015596CA55DF4FB983A883C65A84 -:101EE000D040E82F1D92EA95E9F7C855DF4FA88149 -:101EF000B981C85AD0401D928A95E9F780E090E0F8 -:101F00000E94EE432B013C0181E090E00E94EE43F1 -:101F10004B015C0182E090E00E94EE436B017C018A -:101F2000810124E045E0C301B2010E94FE67045133 -:101F3000110924E045E0C501B4010E94FE67045187 -:101F4000110924E045E0C701B6010E94FE67C955AA -:101F5000DF4FB881C75AD040BF93CA55DF4FE881E1 -:101F6000C65AD040EF933F922F921F930F9383E86E -:101F700092E0C2C32AE9221628E0320609F428C1F9 -:101F80003BE9231638E0330609F0D8C38FE992E025 -:101F900024C18EE9281688E0380609F42AC108F41D -:101FA00021C1ACEA2A16A8E03A0609F43DC2BDEA0E -:101FB0002B16B8E03B0609F0C1C3A1961CAE1DAEBE -:101FC0001EAE1FAEA19765961CAE1DAE1EAE1FAE17 -:101FD000659721961CAE1DAE1EAE1FAE219784E103 -:101FE0001E0199E2290E311CD101E82F1D92EA95BC -:101FF000E9F79E012B5E3F4FCA55DF4F3983288397 -:10200000C65AD040D901E82F1D92EA95E9F7C85584 -:10201000DF4FA881B981C85AD0401D928A95E9F74F -:1020200080E090E00E94EE43CE54DF4F68837983D6 -:102030008A839B83C25BD04081E090E00E94EE43A4 -:10204000CF53DF4F688379838A839B83C15CD04001 -:1020500082E090E00E94EE4320E030E044EB52E466 -:102060000E94796A2B013C01FE01FD964F019E0101 -:102070002F5A3F4F5901CE01835A9F4F6C01830164 -:102080007201CF53DF4F288139814A815B81C15C66 -:10209000D040CE54DF4F688179818A819B81C25BB9 -:1020A000D0400E945641A401B501C6010E94A93E3C -:1020B000A1966CAD7DAD8EAD9FADA1976596CCAC74 -:1020C000DDACEEACFFAC65979B01AC010E94AC6D42 -:1020D0004B015C01A7019601C701B6010E94AC6DDE -:1020E0009B01AC01C501B4010E947A6A0E94196E7D -:1020F000810124E045E00E94FE6720E030E044EBEF -:1021000052E4C301B2010E947A6A0451110924E029 -:1021100045E00E94FE6721966CAD7DAD8EAD9FAD12 -:1021200021970451110924E045E00E94FE671F93A6 -:102130000F93C955DF4FB881C75AD040BF93CA55D6 -:10214000DF4FE881C65AD040EF933F922F9281EC47 -:1021500092E0D2C220EC221628E0320609F431C205 -:10216000D0F489EB281688E0380609F415C208F483 -:1021700008C2AAEB2A16A8E03A0609F415C2BBEB7E -:102180002B16B8E03B0609F0D9C28091020185FB0D -:10219000882780F914C222EC221628E0320609F4BE -:1021A00081C208F450C283EC281688E0380609F48E -:1021B0008BC290E6291699E0390609F0BFC28091DA -:1021C000070D8F938091060DA5C281E992E005C0AD -:1021D00088E69EE002C086EA92E09F938F938AE9A8 -:1021E00092E09BC28EE394E09F938F938DEA92E0FE -:1021F00094C280818E3409F04AC2818190ED292EEB -:10220000280E93E0921508F442C2AB961CAE1DAEA8 -:102210001EAE1FAEAB97A1961CAE1DAE1EAE1FAE7E -:10222000A19765961CAE1DAE1EAE1FAE659784E1EC -:10223000C455DF4FA881B981CC5AD040E82F1D92F8 -:10224000EA95E9F7FE01B996DF01282F1D922A953C -:10225000E9F77497DF01282F1D922A95E9F7C855F1 -:10226000DF4FA881B981C85AD0401D928A95E9F7FD -:102270006091EE127091EF128091F0129091F11234 -:102280000E94F56BCE54DF4F688379838A839B83EA -:10229000C25BD0406091EA127091EB128091EC1217 -:1022A0009091ED120E94F56B2B013C016091E612BA -:1022B0007091E7128091E8129091E9120E94F56BFB -:1022C000FE01EF5AFF4F4F019E01235A3F4F590124 -:1022D000DE01A959BF4F6D01CE54DF4FE880F98070 -:1022E0000A811B81C25BD040A30192010E943B4244 -:1022F00020E030E044EB52E465966CAD7DAD8EADF0 -:102300009FAD65970E947A6A65966CAF7DAF8EAF80 -:102310009FAF65978091060D9091070D04970297E6 -:1023200048F48090620E9090630EA090640EB0907E -:10233000650E24C020E030E040E05FE360910002E1 -:102340007091010280910202909103020E94796AC9 -:1023500020E030E040E05FE30E94AC6D20E030E040 -:1023600044E353E40E94AC6D9B01AC0160E070E07B -:1023700084E393E40E94796A4B015C01AB966CADF7 -:102380007DAD8EAD9FADAB978E01035C1F4F24E0FA -:1023900045E00E94FE677E01B9E2EB0EF11CA196BA -:1023A0006CAD7DAD8EAD9FADA197870124E045E07A -:1023B0000E94FE676E01E5E1CE0ED11C65966CAD04 -:1023C0007DAD8EAD9FAD6597860124E045E00E940E -:1023D000FE670451110924E045E0C501B4010E94E3 -:1023E000FE67F2E02F16B1F023E02216B1F031E0E3 -:1023F000231619F0DF92CF92F2CEC355DF4F8881BA -:10240000CD5AD0408F93C455DF4F9881CC5AD040DD -:102410009F93E5CEFF92EF92E2CEA1E0B0E0AC0F49 -:10242000BD1FBF93AF93DBCEA1961CAE1DAE1EAEFB -:102430001FAEA19765961CAE1DAE1EAE1FAE659772 -:1024400021961CAE1DAE1EAE1FAE219784E11E016B -:10245000B9E22B0E311CF101282F11922A95E9F7D0 -:10246000DE015596CA55DF4FB983A883C65AD040BE -:10247000E82F1D92EA95E9F7C855DF4FA881B98189 -:10248000C85AD0401D928A95E9F780E090E00E94FA -:10249000EE432B013C0181E090E00E94EE43CE54DC -:1024A000DF4F688379838A839B83C25BD04082E05D -:1024B00090E00E94EE4320E030E044EB52E40E94C2 -:1024C000796AFE01FD964F019E012F5A3F4F590137 -:1024D000DE01A35ABF4F6D017B018C01CE54DF4F4B -:1024E000288139814A815B81C25BD040C301B2013E -:1024F0000E945641A401B501C6010E94A93EA196C1 -:102500006CAD7DAD8EAD9FADA197810124E045E01E -:102510000E94FE6765966CAD7DAD8EAD9FAD6597F3 -:102520000451110924E045E00E94FE6721966CAD3C -:102530007DAD8EAD9FAD21970451110924E045E09A -:102540000E94FE671F930F93C955DF4FF881C75A4A -:10255000D040FF93CA55DF4F2881C65AD0402F93F1 -:102560003F922F9283EB92E0C7C0A49B11C08FE3F0 -:102570000E9402518A30910558F08734910530F05D -:1025800009C0479905C00898009904C082E017C0A7 -:1025900080E015C081E013C082B38695869586954C -:1025A00091E0892781700BC08BE30E94025121E0EA -:1025B0008536910508F420E01F922F93ACC01F923E -:1025C000A9C081E090E08C0F9D1F9F938F938FECAB -:1025D00092E09F938F93FF93EF930E94206F0F9051 -:1025E0000F900F900F900F900F90181619060CF087 -:1025F00041C029813A812634310508F048C0F901EB -:10260000EA57F54F8491F901E05CF54F1491F90117 -:10261000E650F64F0491002391F081110E947E5004 -:10262000E02FF0E0EE0FFF1FEE5EFC4FA591B4919E -:10263000EC911E2381E090E021F480E002C080E074 -:1026400090E09F9367C0A1E0B0E0AC0FBD1FBF93C7 -:10265000AF938FEC92E09F938F93FF93EF930E9441 -:10266000206F0F900F900F900F900F900F901816F3 -:10267000190684F01F9281E08F938DE092E09F9382 -:102680008F930E949D1F0F900F900F900F9082E3E9 -:1026900090E056C089819A8180319105C0F70E94EF -:1026A0000251CFCF8091450D8F938091440D8F9330 -:1026B0008091430D8F938091420D8F938091410DB6 -:1026C0008F938091400D15C080E090E00E949C4364 -:1026D000182F092F81E090E00E949C43F82EE92EEC -:1026E00082E090E00E949C43EF92FF920F931F9331 -:1026F0009F938F9383ED92E09F938F9384ED9CE063 -:102700009F938F930E94F26E0FB6F894DEBF0FBEB8 -:10271000CDBF11C08F9386E793E09F938F9384ED95 -:102720009CE09F938F930E94F26E0F900F900F90FA -:102730000F900F900F9080E090E002C081E090E059 -:102740009C01215031092230310510F00C949E1E5D -:10275000C554DF4FE881F981CB5BD040CF01A0E0C9 -:10276000B0E0C255DF4F0880CE5AD04004C0B695C5 -:10277000A795979587950A94D2F780FDACCA81E01A -:1027800090E0A0E0B0E0C255DF4F0880CE5AD040C4 -:1027900004C0880F991FAA1FBB1F0A94D2F7E82B09 -:1027A000F92BC554DF4FF983E883CB5BD0400C9401 -:1027B000F905812F110F990BAA0BBB0BFC01E654F5 -:1027C000F109E531F10510F00C94401E8827EE5810 -:1027D000FF4F8F4F0C94BF6EC0920B13D0920C130F -:1027E000E0920D13F0920E13C255DF4F1882CE5AAD -:1027F000D040D2C0C0920F13D0921013E0921113A8 -:10280000F0921213CB53DF4FF881C55CD040F160DA -:10281000CB53DF4FF883C55CD04021E04FC0C0925E -:102820001313D0921413E0921513F0921613CB5396 -:10283000DF4F3881C55CD0403260CB53DF4F3883E7 -:10284000C55CD04082E053C0C0921713D0921813D9 -:10285000E0921913F0921A13CB53DF4F9881C55CA5 -:10286000D0409460CB53DF4F9883C55CD040A3E049 -:1028700058C0CF53DF4FB881C15CD040B0931B1319 -:10288000E4E069C0C701B6010E94C26B60931C13EB -:1028900070931D1380931E1390931F13F5E0C25580 -:1028A000DF4FF883CE5AD04077C0C0922013D09229 -:1028B0002113E0922213F092231326E0C255DF4F3A -:1028C0002883CE5AD04068C0C0922413D0922513DA -:1028D000E0922613F092271337E059C0C0922813D4 -:1028E000D0922913E0922A13F0922B1388E0C2555C -:1028F000DF4F8883CE5AD0404FC0C0922D13D09264 -:102900002E13E0922F13F0923013CA54DF4F9881A8 -:10291000C65BD0409160CA54DF4F9883C65BD040FD -:10292000AAE0C255DF4FA883CE5AD04035C0C0922E -:102930003113D0923213E0923313F0923413CA540D -:10294000DF4FB881C65BD040B260CA54DF4FB88356 -:10295000C65BD040EBE0C255DF4FE883CE5AD04093 -:102960001BC0C0923513D0923613E0923713F09209 -:102970003813CA54DF4FF881C65BD040F460CA54A4 -:10298000DF4FF883C65BD0402CE098CF39E0C255CA -:10299000DF4F3883CE5AD040C255DF4F8881CE5AA0 -:1029A000D040082FC154DF4FE881F981CF5BD04080 -:1029B000CF01A0E0B0E0C255DF4F0880CE5AD04032 -:1029C00004C0B695A795979587950A94D2F780FF8E -:1029D00002C00C94381E81E693E0A0E0B0E0C2553E -:1029E000DF4F0880CE5AD04004C0B695A795979582 -:1029F00087950A94D2F780FF0BC020E030E0A90150 -:102A0000C701B6010E94536B87FF02C00C943A1EA7 -:102A100081E090E0A0E0B0E004C0880F991FAA1FF9 -:102A2000BB1F0A95D2F7C154DF4F28813981CF5B94 -:102A3000D040282B392BC154DF4F39832883CF5BFB -:102A4000D0400C94F905CA54DF4F3881C65BD040A2 -:102A5000332369F0C654DF4F8881CA5BD0408111AF -:102A600006C092E0C654DF4F9883CA5BD040C15481 -:102A7000DF4FA881CF5BD040A5FF0FC080911C1312 -:102A800090911D13A0911E13B0911F138038964989 -:102A9000A849B10514F00C943C1E809102138130BA -:102AA00091F4C654DF4FF881CA5BD040F23009F090 -:102AB00040C0C154DF4F2881CF5BD04020FD02C011 -:102AC0000C94461E36C080913A13811132C0C15415 -:102AD000DF4F3881CF5BD04030FF1BC080910313A4 -:102AE000813039F523E333E34BEC51E460910B1370 -:102AF00070910C1380910D1390910E130E94AC6D88 -:102B000060930B1370930C1380930D1390930E131B -:102B100010C08091471390914813A0914913B09130 -:102B20004A1380930B1390930C13A0930D13B0933F -:102B30000E13C154DF4F88819981CF5BD04090FD47 -:102B400010C08091431390914413A0914513B0910C -:102B500046138093281390932913A0932A13B093BC -:102B60002B13809100138130B9F4C154DF4F988149 -:102B7000CF5BD04096FD03C08CE10C949E1EC154E7 -:102B8000DF4FA881B981CF5BD040AF7BC154DF4F0D -:102B9000B983A883CF5BD04080910513882331F19E -:102BA000813091F4B1E0C753DF4FB883C95CD040A6 -:102BB000CE54DF4F1882C25BD040E2E0C255DF4FF7 -:102BC000E883CE5AD04023C0C753DF4F1882C95C78 -:102BD000D040F2E0CE54DF4FF883C25BD04021E01A -:102BE000C255DF4F2883CE5AD04011C032E0C753C0 -:102BF000DF4F3883C95CD04081E0CE54DF4F8883FB -:102C0000C25BD040C255DF4F1882CE5AD04080916F -:102C10000313813049F0C654DF4F9881CA5BD0401E -:102C2000933009F043C036C0B0E0EB2EB3E1FB2E89 -:102C300000E010E0CA54DF4FA881C65BD0408A2E66 -:102C4000912CA12CB12CD501C401002E04C0B69545 -:102C5000A795979587950A94D2F780FF12C023E332 -:102C600033E34BEC51E4F70165A576A587A590A960 -:102C70000E94AC6DD7019D966D937D938D939C932F -:102C8000D0970F5F1F4FB4E0EB0EF11C033011051E -:102C9000D1F6C1CF80910613813041F4CA54DF4F81 -:102CA000E881C65BD040E43009F0E8C78CE0ECE591 -:102CB000F3E1DE01119601900D928A95E1F7C5547A -:102CC000DF4F28813981CB5BD04031FD08C01091A6 -:102CD00000131230C1F0183009F4EAC058C18091D5 -:102CE0000713873018F08DE10C949E1E90913F13CE -:102CF000891769F3BE016F5F7F4F0E9451348823AB -:102D000009F4D0C7E4CFCA54DF4F3881C65BD04046 -:102D1000311103C08AE10C949E1EC154DF4F88819B -:102D20009981CF5BD04080759927892B09F424CFF6 -:102D3000609120137091211380912213909123139D -:102D40000E945A6E0E94C76B673068F680911B1311 -:102D5000843151F0823009F093C7C154DF4F88812C -:102D6000CF5BD04087FD8CC7C154DF4FA881B981AC -:102D7000CF5BD040AF7AC154DF4FB983A883CF5B1C -:102D8000D040662321F022242A94260E02C02090EF -:102D90000713BE016B5E7F4F822D0E945134882342 -:102DA00009F480C730901B138090741390907513B2 -:102DB000A0907613B0907713A0E0CA2EA3E1DA2E8C -:102DC0008E010B5E1F4FE9E3F3E1C554DF4FF9833A -:102DD000E883CB5BD040E12CF12CCA54DF4FF88163 -:102DE000C65BD0404F2E512C612C712CD301C201F7 -:102DF0000E2C04C0B695A795979587950A94D2F79F -:102E000080FF3BC024E132122EC0C554DF4FA881A1 -:102E1000B981CB5BD0409F962D913D914D915C91B6 -:102E2000D29757966D917D918D919C915A970E9462 -:102E3000796AF60125A536A547A550A90E94796AA9 -:102E4000D8016D937D938D939C931397B2E0EB1211 -:102E500014C0A50194010E94796AF801608371830E -:102E6000828393830AC0F60185A596A5A7A5B0A97C -:102E7000F80180839183A283B383FFEFEF1AFF0AE7 -:102E800024E0C20ED11C0C5F1F4FC554DF4F888158 -:102E90009981CB5BD0400496C554DF4F99838883DA -:102EA000CB5BD04093E0E916F10409F09FCF4CC111 -:102EB000CA54DF4FA881C65BD040AA2309F42ACFA9 -:102EC0008090741390907513A0907613B090771340 -:102ED000F9E3CF2EF3E1DF2EFE0131961F0100E072 -:102EE00013E1E12CF12C4A2E512C612C712CD301D1 -:102EF000C2010E2C04C0B695A795979587950A94A4 -:102F0000D2F780FF29C0D1012D913D914D915C9167 -:102F1000F6016789708D818D928D0E94796AD80142 -:102F20009D962D913D914D915C91D0970E94796A2B -:102F3000F80165A776A787A790ABF2E0EF1216C05D -:102F4000A50194010E94796AD8019D966D937D93A5 -:102F50008D939C93D0970AC0F60187A590A9A1A94B -:102F6000B2A9F80185A796A7A7A7B0ABFFEFEF1A04 -:102F7000FF0A24E0C20ED11C34E0230E311C0C5F8A -:102F80001F4F83E0E816F10409F0B1CFDCC0C6544E -:102F9000DF4F9881CA5BD040933009F49DC0CA547A -:102FA000DF4FA881C65BD040AA2309F4BDC60091BB -:102FB00004134090741350907513609076137090C2 -:102FC000771379E3A72E73E1B72EE0E0EE2EE3E16D -:102FD000FE2EFE0131964F01C12CD12C8A2F90E09C -:102FE000A0E0B0E0C554DF4F88839983AA83BB83F8 -:102FF000CB5BD040C554DF4F88819981AA81BB81CA -:10300000CB5BD0400C2C04C0B695A79597958795BF -:103010000A94D2F780FD0BC0F5018789908DA18DB0 -:10302000B28DF70185A796A7A7A7B0AB43C017300D -:1030300009F440C001112BC0D5019F962D913D91FF -:103040004D915C91D297F40160817181828193816D -:103050000E947A6AD7019D962D913D914D915C9188 -:10306000D0970E947A6AF70165A776A787A790ABE9 -:10307000F2E0CF121FC0A30192010E947A6AD70129 -:103080009D966D937D938D939C93D09713C0F5017E -:103090002789308D418D528DD7019D966D917D91FF -:1030A0008D919C91D0970E947A6AF70165A776A7C7 -:1030B00087A790ABFFEFCF1ADF0A24E0A20EB11C66 -:1030C00034E0E30EF11C84E0880E911C93E0C916F5 -:1030D000D10409F08FCF2DC01530A9F0173071F150 -:1030E000133089F5CA54DF4FA881C65BD040A111C7 -:1030F00005C0C654DF4F1882CA5BD040BE016B5E6C -:103100007F4F86E010C0CA54DF4FB881C65BD04005 -:10311000B11105C0C654DF4F1882CA5BD040BE0152 -:103120006B5E7F4F87E00E945134882309F4BAC553 -:103130000AC01530A1F3173009F0F2C580910113D0 -:10314000823008F09FC5212C30900113E8E03E1238 -:1031500011C0CA54DF4FF881C65BD040FF2309F489 -:1031600005C3C654DF4F2881CA5BD040213009F027 -:103170008BC511C3C654DF4F3881CA5BD040323093 -:1031800009F0F4C2311009C0CA54DF4F8881C65B10 -:10319000D040882309F4F1C2FEC220E030E0A9014A -:1031A00060910B1370910C1380910D1390910E137D -:1031B0000E94536B882309F469C593E0931538F096 -:1031C000A2E03A1690F4B1E03B1631F0E4C2E7E039 -:1031D000E31508F0BEC2DFC2CA54DF4FF881C65BF8 -:1031E000D040FF2309F4C9C2D6C2CA54DF4F288198 -:1031F000C65BD040222309F48DCDC255DF4F9881A4 -:10320000CE5AD040892F90E0C554DF4F99838883F0 -:10321000CB5BD040CE54DF4FB881C25BD040AB2FE8 -:10322000B0E0CF53DF4FB983A883C15CD04081E0C9 -:1032300090E0A0E0B0E06C017D01C255DF4F088056 -:10324000CE5AD04004C0CC0CDD1CEE1CFF1C0A94EE -:10325000D2F7CE54DF4F0880C25BD04004C0880F45 -:10326000991FAA1FBB1F0A94D2F7C82AD92AEA2A93 -:10327000FB2A822F90E0A0E0B0E08C219D21AE21BE -:10328000BF21892B8A2B8B2B09F402C5C554DF4F34 -:1032900088819981CB5BD040880F991F880F991F37 -:1032A000FC01E050FD4EDC01A75CBC4E57962D9111 -:1032B0003D914D915C915A9765A576A587A590A9FA -:1032C0000E94796A4B015C01CF53DF4F888199815D -:1032D000C15CD040880F991F880F991FFC01E050F6 -:1032E000FD4EDC01A75CBC4E57962D913D914D9152 -:1032F0005C915A9765A576A587A590A90E94796AE1 -:10330000CA54DF4F688379838A839B83C65BD0402E -:10331000C154DF4F08811981CF5BD040007811275D -:10332000C154DF4FE881CF5BD040E7FF15C1C154E6 -:10333000DF4F28813981CF5BD0402F77C154DF4FD9 -:1033400039832883CF5BD0400E949864882311F092 -:1033500081E2F4C4809103138130B1F423E333E3B9 -:103360004BEC51E460912413709125138091261346 -:10337000909127130E94AC6D6093241370932513D2 -:103380008093261390932713409024135090251375 -:103390006090261370902713A5019401C501B40114 -:1033A0000E94AC6DCB53DF4F688379838A839B8304 -:1033B000C55CD040CA54DF4F288139814A815B8186 -:1033C000C65BD040CA01B9010E94AC6DC553DF4F46 -:1033D000688379838A839B83CB5CD04020E030E094 -:1033E00040E850E4C301B2010E94AC6DA301920118 -:1033F0000E94AC6DCB53DF4F288139814A815B81BC -:10340000C55CD0400E94796AC553DF4F288139815D -:103410004A815B81CB5CD0400E94796A6B017C0160 -:1034200020E030E0A9010E94536B87FD33C4C7013F -:10343000B6010E94196E6B017C01C553DF4F2881D4 -:1034400039814A815B81CB5CD040CB53DF4F6881AF -:1034500079818A819B81C55CD0400E947A6A0E94F2 -:10346000196E9B01AC01C701B60190580E945A6BBE -:103470006B017C0133E0331204C0F7FAF094F7F8E3 -:10348000F09420E030E0A901C301B2010E94536B27 -:1034900087FF0FC0F7FAF094F7F8F094D301C20158 -:1034A000B0588093241390932513A0932613B093C0 -:1034B0002713C554DF4F08811981CB5BD040000F23 -:1034C000111F000F111F0C5F1C4ECA54DF4F2881C3 -:1034D00039814A815B81C65BD040C701B6010E9439 -:1034E000AC6D9B01AC01C501B4010E94796A20E07A -:1034F00030E040E05FE30E94AC6DD8011B966D9315 -:103500007D938D939C931E97CF53DF4F0881198134 -:10351000C15CD040000F111F000F111F0C5F1C4E2B -:10352000A5019401C701B6010E94AC6DCA54DF4FDA -:10353000288139814A815B81C65BD0400E947A6ACA -:1035400020E030E040E05FE30E94AC6DF80163876B -:103550007487858796871FC1CB53DF4FF881C55C81 -:10356000D0404F2E512C612C712CC420D520E62048 -:10357000F720CD28CE28CF2809F48EC3C154DF4FC1 -:1035800028813981CF5BD040217FC154DF4F3983FF -:103590002883CF5BD04080910313813009F491C020 -:1035A000C554DF4FE881F981CB5BD040EE0FFF1FA0 -:1035B000EE0FFF1FEC5FFC4EC384D484E584F684D9 -:1035C000A7019601C501B4010E94796A2B013C0153 -:1035D000CF53DF4FE881F981C15CD040EE0FFF1F70 -:1035E000EE0FFF1FEC5FFC4E83859485A585B685A5 -:1035F000C554DF4F88839983AA83BB83CB5BD040BC -:103600009C01AD01CA54DF4F688179818A819B8119 -:10361000C65BD0400E94796A4B015C01A301920114 -:10362000C301B2010E94AC6D2B013C01A5019401C4 -:10363000C501B4010E94AC6D9B01AC01C301B20194 -:103640000E947A6A0E94196E4B015C01A7019601E3 -:10365000C701B6010E94AC6D6B017C01C554DF4F00 -:10366000288139814A815B81CB5BD040CA01B90195 -:103670000E94AC6D9B01AC01C701B6010E947A6A41 -:103680000E94196E6B017C016093241370932513C3 -:1036900080932613909327139B01AC01C501B401BD -:1036A0000E94796A4B015C01E894B7F82AE037ED93 -:1036B00043EA5BE3C501B4010E94716D181664F121 -:1036C0006AC080E0E82E83E1F82ED301C201002E0B -:1036D00004C0B695A795979587950A94D2F780FF71 -:1036E00012C023E333E34BEC51E4D7011F966D91F5 -:1036F0007D918D919C9152970E94AC6DF7016787E7 -:10370000708B818B928B0F5F1F4FF4E0EF0EF11CDB -:1037100003301105D1F644CF20E030E040E05FE314 -:10372000C501B4010E94716D18160CF411CE2FE67C -:1037300032E143E85AE3C701B6010E94AC6D9B0138 -:10374000AC01C501B4010E94716D18160CF400CED5 -:1037500022C0CA54DF4F2881C65BD040222309F41F -:10376000D9CA0E9498648111F3CD15C0C654DF4FA9 -:103770003881CA5BD04031110EC0C154DF4F8881FF -:103780009981CF5BD0408E7D9C7FC654DF4F1882DD -:10379000CA5BD04008C0C154DF4F88819981CF5B9C -:1037A000D0408E7D907E892B09F078C280911C13C9 -:1037B00090911D13A0911E13B0911F1380934C1371 -:1037C00090934D13A0934E13B0934F138091021317 -:1037D00080933A1380910B1390910C13A0910D13C9 -:1037E000B0910E138093471390934813A0934913FD -:1037F000B0934A13C0902813D0902913E0902A1355 -:10380000F0902B13A701960160914313709144131C -:1038100080914513909146130E94536B8823F9F0D1 -:1038200010914213112359F08091E312823039F044 -:103830000E947B64B701A601812F0E94E332809130 -:10384000281390912913A0912A13B0912B138093E0 -:10385000431390934413A0934513B0934613809160 -:103860002C1380934B1310910A13809142138117EC -:10387000B9F08091E312823079F0C0904313D09078 -:103880004413E0904513F09046130E947B64B70107 -:10389000A601812F0E94E33280910A138093421384 -:1038A0001091091380914113811781F08091E312E7 -:1038B000823041F00E947B64123011F45C9A02C0A5 -:1038C0000E94DC588091091380934113809100136A -:1038D000813089F08091051380933D13809103130B -:1038E00080933B13C654DF4F8881CA5BD04083303E -:1038F00009F074C054C08091E312823059F3809073 -:10390000201390902113A0902213B090231320E055 -:1039100030E040EA51E4C501B4010E94AC6D0E9460 -:10392000306C0E94C76B6B017C010E947B6420E0BD -:1039300030E04AE754E4C501B4010E94AC6D4B018C -:103940005C0182E38C9DB0018D9D700D112480E09F -:1039500090E00E94F36B9B01AC01C501B4010E9491 -:10396000796A0E94306C0E94C76BCB010E940025CF -:1039700086010115110509F4ADCF0E940B250150F8 -:1039800011098091E2128111A5CF9FEFA0E7B2E06B -:103990009150A040B040E1F700C00000EACF809114 -:1039A000061380933E13813089F4809135139091F2 -:1039B0003613A0913713B0913813809374139093FA -:1039C0007513A0937613B093771308C010927413F5 -:1039D000109275131092761310927713809107133B -:1039E00090913F13981759F080933F138CE0FE019C -:1039F0003196ACE5B3E101900D928A95E1F78091A3 -:103A0000041380933C13E09100138E2F90E0FC018F -:103A10003297E830F10508F060C08827E957FF4F7A -:103A20008F4F0C94BF6EBE016B5E7F4F822D0E9444 -:103A3000483480913F13281250C08CE0FE017596E7 -:103A4000ACE5B3E13EC0C654DF4FE881CA5BD0406D -:103A5000EE2371F0209147133091481340914913A0 -:103A600050914A1300E06DE273E181E00E9404523C -:103A700020914713309148134091491350914A13B4 -:103A800000E0BE016B5E7F4F81E00E940452182F60 -:103A90008CE0FE017596A0E5B3E101900D928A9548 -:103AA000E1F71CC060E573E186E003C060E573E107 -:103AB00087E00E94483411C08CE0EDE2F3E1A8E613 -:103AC000B3E101900D928A95E1F707C08CE0E8E63A -:103AD000F3E1DF011D928A95E9F710E0809101136F -:103AE00080933913883009F470C0C654DF4FB88111 -:103AF000CA5BD040B23009F068C090E088309105D0 -:103B000008F05AC0FC014090471350904813609051 -:103B1000491370904A138827E157FF4F8F4F0C9439 -:103B2000BF6E00E0A30192016DE273E180E007C087 -:103B300000913A13A30192016DE273E181E00E94CA -:103B40000452182F39C0609124137091251380916D -:103B50002613909127138824839409C0609124131D -:103B6000709125138091261390912713812CC753B0 -:103B7000DF4FA880C95CD040CE54DF4FC880C25B05 -:103B8000D040C255DF4FE880CE5AD04000913A1362 -:103B9000A30192010E946C650FC000E001C001E02A -:103BA00020E004C000E001C001E021E040913A13B0 -:103BB000C301B2010E94D6648CE0EDE2F3E1A0E51E -:103BC000B3E101900D928A95E1F7809108138093FB -:103BD0004013882309F464C00E947B6490914013D1 -:103BE0008091E312913061F48230C9F19FB7F8946B -:103BF000809191128860809391129FBF0CD72FC043 -:103C000091E09093391310923D1310923C1310924F -:103C10003A1310923F1310924213109241138230C4 -:103C2000A9F0BE016F5F7F4F80E00E94513488236E -:103C3000C9F18CE0FE013196ACE5B3E101900D9243 -:103C40008A95E1F70E94DC320E94DC588CEB98E008 -:103C5000D0D180E698E0CDD189E498E0CAD1109225 -:103C600040131EC081E06AC082E068C088E166C07F -:103C700089E164C084E062C08BE160C085E25EC01F -:103C800084E15CC08EE15AC08FE158C086E156C025 -:103C900080E254C082E252C083E250C084E24EC04F -:103CA000812F4CC087E04AC0AEE12A16310411F4DE -:103CB0000C94CD0C50F5EAE02E16310411F40C945E -:103CC0009F0CFCE12F16310411F40C94B30C87E126 -:103CD00035C09CE52916310411F00C94490E21E001 -:103CE000C654DF4F2883CA5BD040CE54DF4F888153 -:103CF0009981C25BD040009729F00A9709F689E0C4 -:103D00000C94D60C88E00C94D60C25E322163104D2 -:103D100011F40C94F00C3CE52316310431F3D7CFA9 -:103D2000133009F010CAEAC9153009F4F3C9173085 -:103D300009F404CA133009F006CADBC9CE52DF4FBA -:103D40000FB6F894DEBF0FBECDBFDF91CF911F91AC -:103D50000F91FF90EF90DF90CF90BF90AF909F902A -:103D60008F907F906F905F904F903F902F9008952D -:103D70008F929F92AF92BF92CF92DF92EF92FF927B -:103D80000F931F93CF93DF93CDB7DEB72A970FB66C -:103D9000F894DEBF0FBECDBF6B017C01042F20E085 -:103DA00030E0A9010E94536B87FF07C08DE20E949B -:103DB0003937F7FAF094F7F8F094102F123060F0DA -:103DC00020E030E048EC52E4C701B6010E94AC6D3F -:103DD0006B017C011250F2CF00FF0AC020E030E0FE -:103DE00040E251E4C701B6010E94AC6D6B017C0159 -:103DF00020E030E040E05FE3C701B6010E947A6A4C -:103E00000E94C26BE1E0F0E0EC0FFD1FE00FF11D3E -:103E10002EE2208310E03AE0832E912CA12CB12CCD -:103E20006115710581059105A9F0101301C01F5F8F -:103E3000EE24E394F12CEC0EFD1EE10EF11CA50125 -:103E400094010E949D6E605DF7016083B901CA0113 -:103E50001F5FE6CF80E3101748F4E1E0F0E0EC0FDD -:103E6000FD1FE10FF11D80831F5FF5CF10130BC005 -:103E700081E0810FE1E0F0E0EC0FFD1FE80FF11DA4 -:103E80001E5F80E38083112341F0FE01E10FF11DED -:103E900080810E9439371150F6CF2A960FB6F894D8 -:103EA000DEBF0FBECDBFDF91CF911F910F91FF906D -:103EB000EF90DF90CF90BF90AF909F908F9008953C -:103EC000CF92DF92EF92FF921F93CF93DF93CDB704 -:103ED000DEB7362F142FCDB6DEB64DB75EB7411B19 -:103EE00051090FB6F8945EBF0FBE4DBF4F5F5F4FD5 -:103EF0007A01242FFA019E2F921B911728F4632F29 -:103F00000E947D6E9193F7CF112351F0F701E10FDD -:103F1000F11D31978081805D0E9439371150F4CFB7 -:103F20000FB6F894DEBE0FBECDBEDF91CF911F91CC -:103F3000FF90EF90DF90CF9008951F93CF93DF9382 -:103F4000CDB7DEB7C058D1090FB6F894DEBF0FBEAB -:103F5000CDBFAE0149575F4FFA0161917191AF0139 -:103F6000CE0101960E94416F10E0E1E0F0E0EC0F1D -:103F7000FD1FE10FF11D8081882321F00E94393758 -:103F80001F5FF3CFC058DF4F0FB6F894DEBF0FBEF0 -:103F9000CDBFDF91CF911F91089543E0E9CE2091ED -:103FA000D01220FF08C02BE832E441E25DE30E941A -:103FB000AC6D41E001C040E0DBCE2091D01220FF8B -:103FC00008C02BE832E441E25DE30E94AC6D44E0BE -:103FD00001C043E0CDCE8A3020F0843620F043E0AB -:103FE00003C041E001C042E06AE06ACF48E062E01D -:103FF00067CFCF93DF93FC018491EF012196882353 -:1040000021F00E943937FE01F7CFDF91CF9108955B -:10401000CF93DF93EC018991882319F00E943937FF -:10402000FACFDF91CF910895A6EEB2E1E4EBFCE088 -:104030004D915D916D917D914193519361937193F8 -:104040008CE0E03CF807A1F708958CE1E4EBFCE09C -:10405000DF011D928A95E9F7109281111092821169 -:1040600081E08093B30C10929E0E08952F923F92A0 -:104070004F925F926F927F928F929F92AF92BF9278 -:10408000CF92DF92EF92FF920F931F93CF93DF9324 -:10409000C0918211C11101C0C2E1C150D0919E0EE8 -:1040A000DC1709F41DC1EC2EF12C29E2C29F80011E -:1040B00011240156114FF801A588B688C788D08C05 -:1040C00061A172A183A194A19B01AC010E947A6AB3 -:1040D000F80125A136A147A150A50E94AC6D4B0166 -:1040E0008C019B01AC01B501C6010E94536B87FD99 -:1040F00002C05401680189E28E9DF0018F9DF00D90 -:104100001124E156F14FC501D601818B928BA38B0F -:10411000B48BC11101C0C2E1C150DC1761F029E2CA -:104120002E9DC0012F9D900D11249C012156314FD1 -:104130007901D9E233C080918111D81360C00E9407 -:104140004A455DC0AC2EB12CDA9DC001DB9D900DBF -:104150001124FC01E156F14F6F01C11101C0C2E110 -:10416000C150809181118C1302C00E944A45DA9D92 -:104170008001DB9D100D11240156114FF801858837 -:104180009688A788B08CA50194016189728983897A -:1041900094890E94536B811106C0760180919E0E16 -:1041A000C813D0CF2CC0F80161A172A183A194A142 -:1041B0009B01AC010E947A6AF80125A136A147A1B2 -:1041C00050A50E94AC6DF701218932894389548939 -:1041D0000E947A6A2B013C019B01AC01C501B4012C -:1041E0000E94716DF80118162CF4418A528A638A74 -:1041F000748AD3CF818A928AA38AB48ACECFD0918F -:104200009E0EF9E2DF9F800111240156114FC1E09B -:10421000CD0FC23109F4C0E02090821189E2382E1E -:10422000C21509F45BC0CC2ED12C3C9CC0013D9C36 -:10423000900D11249C012156314F7901F8014188DC -:10424000528863887488F90181889288A388B48829 -:10425000A5019401C301B2010E94536B87FF24C0E2 -:10426000F80161A172A183A194A19B01AC010E94FC -:104270007A6AF80125A136A147A150A50E94AC6D2C -:10428000A30192010E947A6A2B013C019B01AC01BF -:10429000C501B4010E94716D181634F4F701418A0A -:1042A000528A638A748ADC2F3C9CF0013D9CF00D9D -:1042B0001124E156F14F258936894789508D61894E -:1042C0007289838994890E94536B811101C0DC2F0C -:1042D000CF5FC23109F4C0E08701A2CFD0939E0E18 -:1042E000DF91CF911F910F91FF90EF90DF90CF90D2 -:1042F000BF90AF909F908F907F906F905F904F9006 -:104300003F902F9008952F923F924F925F926F921D -:104310007F928F929F92AF92BF92CF92DF92EF9255 -:10432000FF920F931F93CF93DF93CDB7DEB7E5973F -:104330000FB6F894DEBF0FBECDBF4B8F5C8F6D8F75 -:10434000072F2DAB209182112EA3422F50E05BA3AB -:104350004AA339E2239FF0011124E156F14F15865B -:1043600016861786108A15A216A217A210A610820A -:1043700049E956E766E97EE741A352A363A374A324 -:104380001C0143E952E158A74FA3CE0101969AAB15 -:1043900089AB24EB3CE03EA72DA74EA139E2439F19 -:1043A000C00111249C012056314F3AA729A7AE0124 -:1043B000435F5F4F5DA34CA359A348A384EB9CE0EC -:1043C00098AB8FA723E932E13F8F2E8F10E03F019A -:1043D000AF01435F5F4F5CAB4BAB2F0155E2450E26 -:1043E000511CF10161917191819191911F01EE8DAB -:1043F000FF8D81909190A190B190FF8FEE8FA501DC -:1044000094010E94AC6D0E947C6DE9A9FAA96193A8 -:10441000719381939193FAABE9ABEFA5F8A9C190A1 -:10442000D190E190F190F8ABEFA76C197D098E095E -:104430009F099B01AC0197FF07C022273327A901E1 -:10444000261B370B480B590BE9A5FAA5219331938D -:1044500041935193FAA7E9A7EBA9FCA9C080D180A9 -:10446000E280F380C216D306E406F50610F4690173 -:104470007A01EBA9FCA9C082D182E282F3820E9478 -:10448000F56BA50194010E945A6B4B015C01E8A1F8 -:10449000F9A16193719381939193F9A3E8A320E02B -:1044A00030E0A9010E94536B87FF0DC0112321F05A -:1044B000113021F084E003C081E001C082E0F3010B -:1044C0009081892B8083A5019401C501B4010E94CC -:1044D000AC6DF20120813181428153810E947A6A60 -:1044E000F20160837183828393831F5F133009F02D -:1044F00078CF0E94196E4B015C01F20160837183D9 -:1045000082839383CD28CE28CF2809F422C220E0CD -:1045100030E0A9016B8D7C8D8D8D902F0E94536BA7 -:1045200087FD21C0FDA9FF2361F0A50194016B8DDA -:104530007C8D8D8D902F0E94AC6D6B8F7C8F8D8FBD -:10454000092F20E030E040E85FE36B8D7C8D8D8D9E -:10455000902F0E94536B87FF0DC01B8E1C8E20E88E -:104560002D8F0FE307C039E93B8F46E74C8F56E9A3 -:104570005D8F0EE7A501940160E070E080E89FE3A5 -:104580000E945A6B69A77AA78BA79CA7CE01499670 -:104590009A8F898FC12CD12C760129E2EAA1FBA147 -:1045A0002E9FC0012F9F900D11249C012054314F4C -:1045B00039A328A3ECA1FDA180809180A280B380C3 -:1045C00020E030E0A901C501B4010E94536B8823AB -:1045D00009F472C0A501940169A57AA58BA59CA5D3 -:1045E0000E94AC6D2B013C01ECA1FDA160837183A5 -:1045F000828393839B01AC0160E070E080E89FE3DD -:104600000E945A6B4B015C01E894B7F8EFA1F8A542 -:104610002485358546855785C501B4010E94AC6D5A -:104620001B018E8F192F2B8D3C8D4D8D502F0E948D -:10463000716D18162CF02B8E3C8EFE8DFD8F012F88 -:10464000E8A1F9A1F081FE8FE8A1F9A111812280F2 -:104650003380EFA1F8A5208D318D428D538DC5019A -:10466000B4010E94AC6D5B014C019B01AC016E8DED -:10467000712FC1010E94536B87FD03C0AE8E1B2DAD -:1046800014018E8D912FD101E8A1F9A1808391832E -:10469000A283B383EDA5FEA5248535854685578580 -:1046A000C301B2010E94AC6D9B01AC01C701B60110 -:1046B0000E94796A6B017C012CA13DA12C5F3F4FC8 -:1046C0003DA32CA34DA55EA54C5F5F4F5EA74DA7F4 -:1046D0008FA198A5049698A78FA3E98DFA8DE2176C -:1046E000F30709F067CF80918111FEA1F8130FC085 -:1046F00089E22AA13BA1829FF001839FF00D112442 -:10470000E156F14F118A128A138A148A14C02FEECF -:104710003FEF4FE75FE3C701B6010E94716D1816C6 -:104720007CF489E24AA15BA1849FF001859FF00D92 -:104730001124E156F14F118E128E138E148E6AC021 -:104740002FEE3FEF4FE75FEBC701B6010E94716D9F -:10475000181644F08FEEC82EDD24DA948FE7E82E89 -:104760008FEBF82EA701960160E070E080E89FE3F0 -:104770000E94796A20E030E040E05FE30E94AC6D87 -:104780000E94196E6B017C0189E22AA13BA1829FE4 -:10479000F001839FF00D1124E156F14F2091C812D2 -:1047A0003091C9124091CA125091CB1261A172A1ED -:1047B00083A194A10E94AC6DA70196010E94AC6DEB -:1047C0004B015C01A701960160E070E080E89FE387 -:1047D0000E94796A9B01AC01C501B4010E945A6B29 -:1047E0006B017C0120E030E0A9010E94536B87FF40 -:1047F00003C0C12CD12C760189E24AA15BA1849F20 -:10480000F001859FF00D1124E156F14FC18ED28E3B -:10481000E38EF48E2B8D3C8D4D8D502F6B8D7C8DCA -:104820008D8D902F0E94AC6D7B018C0189E22AA1B5 -:104830003BA1829FF001839FF00D1124E156F14FBF -:10484000C701D801858F968FA78FB0A3A18CB28C9A -:10485000C38CD48C6090CC0C7090CD0C8090CE0C1E -:104860009090CF0C9301A401B701C8010E94536B33 -:1048700087FD05C0B62DA72DF82DE92D04C0BE2D4E -:10488000AF2DF02FE12F9501A6016B2F7A2F8F2FDF -:104890009E2F0E94716D18166CF09301A401B70150 -:1048A000C8010E94536B87FD03C05301640102C01D -:1048B0005701680189E24AA15BA1849FF001859FAD -:1048C000F00D1124E156F14FC501D601858B968B71 -:1048D000A78BB08F8CE0FE013D96A0ECBCE0019070 -:1048E0000D928A95E1F7C701D8018093CC0C909383 -:1048F000CD0CA093CE0CB093CF0C8CE0FE01319682 -:10490000A4EBBCE001900D928A95E1F78091B30C85 -:10491000809382118F5F823109F480E08093B30C21 -:10492000E5960FB6F894DEBF0FBECDBFDF91CF91F5 -:104930001F910F91FF90EF90DF90CF90BF90AF90BD -:104940009F908F907F906F905F904F903F902F90AF -:104950008DCBE5960FB6F894DEBF0FBECDBFDF91CD -:10496000CF911F910F91FF90EF90DF90CF90BF906C -:10497000AF909F908F907F906F905F904F903F90FF -:104980002F9008956115710581059105C1F16A3077 -:1049900071058105910548F425E02A95F1F700009D -:1049A0006150710981099109EDCF64367105810566 -:1049B000910548F4E5E3EA95F1F700006A507109C2 -:1049C00081099109DFCF683EF3E07F0781059105FA -:1049D00058F4EFE8F1E03197F1F700C000006456B9 -:1049E000710981099109CECFEFE9FFE03197F1F725 -:1049F00000C00000685E734081099109C3CF08952B -:104A0000009741F0EFE9FFE03197F1F700C00000B7 -:104A10000197F6CF08953F924F925F926F927F92E7 -:104A20008F929F92AF92BF92CF92DF92EF92FF92BE -:104A30000F931F93CF93DF93CDB7DEB768970FB671 -:104A4000F894DEBF0FBECDBF01E099E2A92E28E0A9 -:104A5000722E30E2632E40E1B42E50E4552E62E017 -:104A6000462E1091E112112309F450C00093E31275 -:104A700011FF06C08FEE97E0BCDA84EE97E01FC00E -:104A800012FF06C08FEE97E0B4DA89ED97E017C009 -:104A900013FF06C08FEE97E0ACDA86EC97E00FC00C -:104AA00014FF06C08FEE97E0A4DA8BEB97E007C007 -:104AB00015FF0CC08FEE97E09CDA8FEA97E099DA49 -:104AC0008CEA97E096DA84EF91E09ADF10FD08C057 -:104AD0008FB7F8949091E1121092E1128FBF16C037 -:104AE0008CEB98E086DA8AEA98E083DA89E498E049 -:104AF00080DA9FB7F894809191128F7E8093911203 -:104B00009FBF8091911284FFFCCFE2CF1091911250 -:104B1000112309F4AAC114FF04C081E08093E212BA -:104B2000B5C110FFE2C08CE0E6EEF2E1DE011D96B9 -:104B300001900D928A95E1F78091E3128430E9F0BB -:104B400040F48130E9F080F0823001F584E298E0B1 -:104B50001CC0803179F018F4883049F017C08032D9 -:104B600091F0803421F012C083E498E00EC08EE30F -:104B700098E00BC088E398E008C082E398E005C0A5 -:104B80008BE298E002C08EE198E033DA8091C712A0 -:104B9000837039F0BE01635F7F4FCE0101960E94A2 -:104BA000DF448091C71280FD05C08091C71281FF4C -:104BB00065C019C087E198E01CDACE0101967C013E -:104BC000D12CF70161917191819191917F01F5D97A -:104BD000F2E0DF1619F085E198E00BDAD39423E0D8 -:104BE000D212EFCFE2CF8EE098E003DA8CE5C82E48 -:104BF00083E1D82ECE0101967C01312C4701F601CC -:104C000061917191819191916F01208531854285EA -:104C100053850E947A6A9B01AC01F7016081718122 -:104C2000828193810E94796AF70160837183828314 -:104C30009383F2E03F120FC02091741330917513EB -:104C400040917613509177130E94796AF70160833F -:104C5000718382839383F4E0EF0EF11CF401608191 -:104C6000718182819381A9D9F2E03F1619F08CE01D -:104C700098E0BFD9339423E03212C0CF8091C7129D -:104C800082FF0CC086E098E0B4D9809182119091A7 -:104C90008111891708F48E5E891B9DD98091C712F6 -:104CA00083FF0CC081E098E0A4D99091D80D809149 -:104CB000D90D891708F48058891B8DD98091C712A6 -:104CC00084FF08C08BEF97E094D90E94265643E0FA -:104CD00062E0F6D887EF97E08CD99FB7F89480917F -:104CE00091128E7F809391129FBF812F887609F455 -:104CF00041C08091E312882349F0982F9C7791F16D -:104D0000883021F40E944A450093E4128091E31216 -:104D1000811102C04092E41216FF09C0883011F4DC -:104D20005092E3128091E41288608093E41213FFA2 -:104D300005C08091E31285FFB092E31215FF12C007 -:104D40008CEB98E056D988E698E053D989E498E04E -:104D500050D98091E41281FD146084608093E41244 -:104D60006092E3129FB7F8948091911287798093B3 -:104D700091129FBF11FF55C0812F887609F049C05D -:104D80008091E312882339F0807509F442C0809144 -:104D9000E41281FF3EC08091E41282FF1EC0809128 -:104DA0004213882369F0409143135091441360915A -:104DB0004513709146130E94E33280EA9FE020DEA3 -:104DC00080914113882349F0823011F45C9A02C02B -:104DD0000E94DC5888EE93E013DE8091811190915F -:104DE0008211981791F0A89EC00111248156914F0D -:104DF000892B59F08091E41283FD07C07092E31271 -:104E00000E946C450E94B03202C01092E3121092D0 -:104E1000E4129FB7F894809191128D7F8093911244 -:104E20009FBF12FF22C08091E312807391F08091A6 -:104E3000E51281110EC08091E41282FF04C00E942D -:104E4000DC320E94DC588091E41282608093E4128C -:104E500004C01092E4121092E3129FB7F89480916C -:104E600091128B7F809391129FBF8091E3128C7778 -:104E700011F00E946C459091E3128091E4129032FF -:104E800019F481FDB092E3128111EBCD68960FB653 -:104E9000F894DEBF0FBECDBFDF91CF911F910F9170 -:104EA000FF90EF90DF90CF90BF90AF909F908F904A -:104EB0007F906F905F904F903F9008954F925F92D8 -:104EC0006F927F92AF92BF92CF92DF92EF92FF925A -:104ED0000F931F93CF93DF936C01FB015A0130971F -:104EE00029F08081D601A80FB11D01C0DC018C9191 -:104EF000ED018D3229F4229611968C9101E008C0C3 -:104F00008B3211F0219603C0229611968C9100E00D -:104F1000512C612C10E020E030E0A9017E0160ED11 -:104F2000762E780E89E08715D8F06394A8E0A61550 -:104F300098F051101150A5E0B0E00E94D66EDC014F -:104F4000CB01880F991FAA1FBB1F9C01AD01270D24 -:104F5000311D411D511D0BC0511009C01F5F07C0FD -:104F6000BEEF7B1208C0511006C055245394219601 -:104F7000D7018C91D3CF662009F450C07F01CA01BC -:104F8000B9010E94F36B2B013C0120E030E0A90144 -:104F90000E94536B882349F11F3F64F42AE037EDE8 -:104FA00043E25CE3C301B2010E94AC6D2B013C0102 -:104FB0001E5FF2CF1F3F59F42DEC3CEC4CEC5DE34F -:104FC000C301B2010E94AC6D2B013C010EC0112344 -:104FD00061F020E030E040E251E4C301B2010E9400 -:104FE000AC6D2B013C011150F2CF002351F077FA48 -:104FF000709477F87094F5014082518262827382D6 -:1050000006C0D5014D925D926D927C921397CC199A -:10501000DD09C150F701C08381E001C080E0DF916C -:10502000CF911F910F91FF90EF90DF90CF90BF90A5 -:10503000AF907F906F905F904F9008958A98E8E0CE -:10504000F1E080818E7F80835F980E940A3B1092FE -:10505000380D08952F923F924F925F926F927F92F8 -:105060008F929F92AF92BF92CF92DF92EF92FF9278 -:105070000F931F93CF93DF93CDB7DEB7CA55D109F6 -:105080000FB6F894DEBF0FBECDBFFB018E3A28E00D -:10509000920708F048C08C3A38E0930708F01EC722 -:1050A0008B34A8E09A0709F4AFC1F0F4833E27E0FF -:1050B000920709F470C160F48231910509F46BC163 -:1050C0008C3C910509F408C1419709F070C072C089 -:1050D0008934A8E09A0709F47FC108F084C18834B4 -:1050E000984009F435C163C0823A38E0930709F467 -:1050F00007C278F48A39B8E09B0709F4BCC18B3940 -:1051000028E0920709F4DFC18939984009F04FC0BF -:105110008CC1863AA8E09A0708F4E0C6873A98401E -:1051200009F429C244C0813C28E0920709F48CC3E9 -:10513000E0F4883BA8E09A0709F427C350F48E3ABC -:1051400028E0920709F41DC2873B984009F40AC37E -:105150002EC08A3BA8E09A0709F4C0C608F426C30B -:10516000803C984009F445C322C08B3639E0930750 -:1051700009F41FC570F48136B9E09B0709F4B7C480 -:105180008A3629E0920709F4CBC48036994079F435 -:10519000BFC38437A9E09A0709F481C58537B9E010 -:1051A0009B0709F4D4C58C36994009F430C581E0D9 -:1051B00090E096C68A9A80910801816080930801E8 -:1051C0005F9A0E94BC3B8FE08093380D8EE1E2EE47 -:1051D000F2E1DF011D928A95E9F70E9414200E94F6 -:1051E0002F5880E090E00E94EE436093140D70937E -:1051F000150D8093160D9093170D81E090E00E949D -:10520000EE436093180D7093190D80931A0D9093CF -:105210001B0D82E090E00E94EE4360931C0D7093A2 -:105220001D0D80931E0D90931F0D0091E61210919D -:10523000E7122091E8123091E9120093200D1093AB -:10524000210D2093220D3093230D0091EA1210912D -:10525000EB122091EC123091ED120093240D10937B -:10526000250D2093260D3093270D0091EE121091FD -:10527000EF122091F0123091F1120093280D10934B -:10528000290D20932A0D30932B0D20E030E044EBC4 -:1052900052E40E94796A7B018C012091180D3091B3 -:1052A000190D40911A0D50911B0D6091140D7091C4 -:1052B000150D8091160D9091170DE4E38E2EEDE003 -:1052C0009E2EF0E3AF2EFDE0BF2EACE2CA2EADE085 -:1052D000DA2E0E94564102C68E010F5F1F4F1F93A8 -:1052E0000F938BE893E09F938F93FF936F930E94AC -:1052F000206F0F900F900F900F900F900F90181637 -:1053000019060CF0A3C41D8A1E8A1F8A188EAE01CE -:105310004B5E5F4F60E070E0C801D0DD8823C1F1D3 -:105320004D895E896F89788D88E70E9446334D8963 -:105330005E896F89788D89E70E9446334D895E8941 -:105340006F89788D8AE70E9446330E94CC37C6C5A4 -:105350008E010F5F1F4F1F930F9386E993E09F937A -:105360008F93FF936F930E94206F0F900F900F9079 -:105370000F900F900F90181619060CF067C4AE012D -:105380004B5E5F4F60E070E0C80198DD811105C0A1 -:1053900082E390E0A5C552DEA1C520E030E04AE7F7 -:1053A00054E46D897E898F89988D0E94AC6D0E942E -:1053B000C26B1616170684F47093D20C6093D10C4E -:1053C00011E01093D30C8091D00C811187C50E94FD -:1053D0005C3A1093D00C82C51092D30C1092D20C70 -:1053E0001092D10C7BC58081863591F681818053E6 -:1053F000823070F610923C0D813019F010923B0D06 -:105400006DC580933B0D6AC58081863509F0C0CF9C -:1054100081818053823008F0BBCF813019F0109227 -:105420003F0D5CC580933F0D59C580818E3409F0D6 -:10543000AFCF91819053943008F0AACF923061F0B1 -:10544000933099F08091380D913019F05F9A846013 -:1054500025C08A9A816022C0809108018160809372 -:1054600008018091380D826019C00E94BC3B809178 -:10547000380D886013C080818E3409F089CF918106 -:105480009053943008F084CF923071F09330A9F0AB -:105490008091380D913029F05F988B7F8093380D83 -:1054A0001DC58A988E7FFACF809108018E7F8093E8 -:1054B00008018091380D8D7FF1CF0E940A3B8091C9 -:1054C000380D877FEBCF80818E3409F061CF8181E9 -:1054D0008053843008F05CCF9091380D823051F0C9 -:1054E000833059F0813019F090FF35C131C191FD01 -:1054F0002FC131C192FD2CC12EC193FF2CC128C1F7 -:105500001AA619A61D8A1E8A1F8A188E8E010F5F81 -:105510001F4F8AE0D8011D928A95E9F7CE0189963E -:105520009F938F931F930F938FE993E09F938F9394 -:10553000FF936F930E94206F0FB6F894DEBF0FBEEB -:10554000CDBF02970CF482C3AE014B5E5F4F60E0AB -:1055500070E0C801B3DC882309F41ACF2D893E8995 -:105560004F89588D69A57AA5072E000C880B990BD9 -:105570000E94773AB3C48FEF0E9471340E94F839C9 -:10558000ADC465961CAE1DAE1EAE1FAE659761968E -:105590001CAE1DAE1EAE1FAE61972D961CAE1DAE8D -:1055A0001EAE1FAE2D9784E16E0129E2C20ED11C02 -:1055B000D601282F1D922A95E9F77E0135E1E30EE9 -:1055C000F11CD701282F1D922A95E9F7DE011196CB -:1055D0005D011D928A95E9F78E010B5A1F4F8FEFDF -:1055E00090E0D8018D939C931F930F93BF92AF923D -:1055F000FF92EF92DF92CF928BEA93E09F938F938B -:10560000FF936F930E94206F0FB6F894DEBF0FBE1A -:10561000CDBF03970CF41AC3AE014F5A5F4F60E041 -:1056200070E0C6014BDC882309F4B2CEAE01435BC7 -:105630005F4F60E070E0C70141DC882309F4A8CE29 -:10564000AE01475B5F4F60E070E0C50137DC882347 -:1056500009F49ECED8018D919C910097D9F10197C4 -:1056600009F096CE6596CCACDDACEEACFFAC6597A0 -:1056700020E030E044EB52E461966CAD7DAD8EAD40 -:105680009FAD61970E94796A21EE3EE245E652E4C1 -:105690000E945A6B4B015C010E94576B9B01AC014D -:1056A000C701B6010E94AC6D65966CAF7DAF8EAF41 -:1056B0009FAF6597C501B4010E940F6E9B01AC01BD -:1056C000C701B6010E94AC6D61966CAF7DAF8EAF25 -:1056D0009FAF6197AE01475B5F4FBE01635B7F4F3A -:1056E000CE018F5A9F4F0E94FE3D2D96ECACFDAC33 -:1056F0000EAD1FAD2D9761962CAD3DAD4EAD5FAD9E -:10570000619765966CAD7DAD8EAD9FAD6597FE01E1 -:10571000FD964F01DE01AF5BBF4F5D0138966F0113 -:105720000E94A03F2196ECACFDAC0EAD1FAD2197C1 -:1057300025962CAD3DAD4EAD5FAD259729966CAD50 -:105740007DAD8EAD9FAD29970E94B842882319F098 -:105750006AE973E002C066E873E084ED9CE00E94B1 -:10576000EB6EBCC38081863509F012CE81818053F7 -:10577000823008F00DCE813019F00E94F339AEC3AB -:105780009C9A9D9AA49AA598A9C38081863509F010 -:10579000FFCD81818053823008F0FACD813019F03D -:1057A0000E94F0399BC33F9A479898C38081863501 -:1057B00009F0EECD81818053823008F0E9CD81304F -:1057C00019F00E94DF398AC38091010180628093C1 -:1057D00001018091010180648093010180910201A7 -:1057E00080628093020180910201806480930201B3 -:1057F00075C3CE0101969F938F9344969F938F9389 -:105800008DEC93E09F938F93FF936F930E94206F93 -:105810000FB6F894DEBF0FBECDBF02970CF416C2D0 -:105820008D899E898634910508F0B2CD29813A810F -:105830002230310508F0ACCD232B11F061E001C01E -:1058400060E00E94D4504AC3CE0101969F938F938B -:1058500044969F938F938DEC93E09F938F93FF9348 -:105860006F930E94206F0FB6F894DEBF0FBECDBFBE -:1058700002970CF4EBC18D899E898634910508F05E -:1058800087CD29813A812230310508F081CDFC0194 -:10589000E05CF54F8650964F232BD1F02491FC010C -:1058A0008491882309F41AC390E0880F991FFC01A2 -:1058B000E254F74FA591B491FC01E052F64F859167 -:1058C00094918FB7F894EC91E22BEC938FBF06C3C1 -:1058D0002491FC018491882309F400C390E0880F8F -:1058E000991FFC01E254F74F45915491FC01E0529D -:1058F000F64FA591B4919FB7F894FA018081209555 -:10590000822380838C91E22FE823EC939FBFE6C231 -:105910008081833509F03CCD8181E0EDE80FE830EE -:1059200008F036CD8E2F90E0FC013197E730F1057D -:1059300030F48827E956FF4F8F4F0C94BF6E0E94BA -:105940000A3B1092070D1092060D8AE999E1A5E92C -:10595000B2E480930C0D90930D0DA0930E0DB093B7 -:105960000F0D8AE999E9A2E6B2E4B8C00E940A3BA9 -:1059700081E090E09093070D8093060D86EF98E20A -:10598000ACE4B2E480930C0D90930D0DA0930E0D3A -:10599000B0930F0D8DEC9CECA0E8B2E49FC00E9488 -:1059A0000A3B82E090E09093070D8093060D89E218 -:1059B0009CEDA4E9B2E480930C0D90930D0DA0939F -:1059C0000E0DB0930F0D80E090E0A2E6B2E486C029 -:1059D0000E940A3B83E090E09093070D8093060DB0 -:1059E00080E090E0ACE2B2E480930C0D90930D0D5A -:1059F000A0930E0DB0930F0D80E090E0ABE8B2E401 -:105A00006DC00E940A3B84E090E09093070D809364 -:105A1000060D80E090E0ACE1B2E480930C0D909331 -:105A20000D0DA0930E0DB0930F0D80E090E0A9E94D -:105A3000B2E418C00E940A3B85E090E09093070D05 -:105A40008093060D8DEC9CECA2E9B2E480930C0DE2 -:105A500090930D0DA0930E0DB0930F0D80E090E08C -:105A6000A8E9B2E48093080D9093090DA0930A0D64 -:105A7000B0930B0D0E94E33A99C00E940A3B86E066 -:105A800090E09093070D8093060D86E696E6AAE9CE -:105A9000B2E480930C0D90930D0DA0930E0DB09376 -:105AA0000F0D80E090E0AAE5B2E418C00E940A3B26 -:105AB00087E090E09093070D8093060D85E89BEEBC -:105AC000ABECB1E480930C0D90930D0DA0930E0DF3 -:105AD000B0930F0D80E090E0A2E3B2E48093080D54 -:105AE0009093090DA0930A0DB0930B0D5FC080E059 -:105AF00090E00E949C439093430D8093420D81E07F -:105B000090E00E949C439093450D8093440D82E069 -:105B100090E00E949C439093410D8093400DDCC126 -:105B20006091EE127091EF128091F0129091F1124B -:105B30000E94F56B2B013C016091EA127091EB120F -:105B40008091EC129091ED120E94F56B6B966CAF08 -:105B50007DAF8EAF9FAF6B976091E6127091E712A9 -:105B60008091E8129091E9120E94F56B9E012F5FDF -:105B70003F4F4901DE0155965D01FE01B9966F0167 -:105B8000830172016B962CAD3DAD4EAD5FAD6B9751 -:105B90000E94523F89819A81AB81BC8180930C0D18 -:105BA00090930D0DA0930E0DB0930F0D0E941D3A12 -:105BB00095C11D8A1E8A1F8A188E8E010F5F1F4F86 -:105BC00084E1D8011D928A95E9F71F930F9384ED24 -:105BD00093E09F938F93FF936F930E94206F0F909A -:105BE0000F900F900F900F900F901816190674F5E4 -:105BF000AE014B5E5F4F60E070E0C8015FD9882363 -:105C000009F4C6CB8D899E89AF89B88D67CF1D8A6F -:105C10001E8A1F8A188E8E010F5F1F4F84E1D801E4 -:105C20001D928A95E9F71F930F938FED93E09F9351 -:105C30008F93FF936F930E94206F0F900F900F90A0 -:105C40000F900F900F901816190674F01F9281E0B4 -:105C50008F938DE092E09F938F930E949D1F0F90F2 -:105C60000F900F900F9094CBAE014B5E5F4F60E0B2 -:105C700070E0C80123D9882309F48ACB8D899E89D5 -:105C8000AF89B88D8093100D9093110DA093120DD4 -:105C9000B093130D0E941D3A0E94E33A1FC1808108 -:105CA000803509F075CB81818053833008F070CB4B -:105CB0008130D9F0823091F180E090E00E949C43E5 -:105CC0009093530D8093520D81E090E00E949C438D -:105CD0009093550D8093540D82E090E00E949C4378 -:105CE0009093570D8093560DF9C080E090E00E948C -:105CF0009C4390934D0D80934C0D81E090E00E9469 -:105D00009C4390934F0D80934E0D82E090E00E9453 -:105D10009C439093510D8093500DE0C080E090E043 -:105D20000E949C439093470D8093460D81E090E044 -:105D30000E949C439093490D8093480D82E090E02F -:105D40000E949C4390934B0D80934A0DC7C0609175 -:105D5000520D7091530D0091540D1091550D9B01F2 -:105D6000202B312B8091560D9091570D822B932B28 -:105D7000892B19F48AEE93E015C0E0904C0DF09059 -:105D80004D0D60904E0D70904F0D2090500D309045 -:105D9000510DC7018629972982299329892B49F416 -:105DA00080EF93E09F938F930E949D1F0F900F9021 -:105DB000EFCAC090460DD090470D4090480D5090CE -:105DC000490D96012429352980914A0D90914B0D5A -:105DD000822B932B892B19F486EF93E0E3CF80E09D -:105DE00090E00E94F36B24EE35E24EE652E40E940E -:105DF0007A6A4B015C01B60180E090E00E94F36B8F -:105E000020E33CE44AEB52E40E947A6A9B01AC0135 -:105E1000C501B4010E947A6A4B015C01B70180E0C0 -:105E200090E00E94F36B9B01AC01C501B4010E949C -:105E30007A6A20E030E040E450E40E945A6B20E0AF -:105E400030E040E05FE30E947A6A0E94C76B709383 -:105E5000430D6093420DB80180E090E00E94F36B27 -:105E60002CE93DE241E853E40E94796A6B017C0130 -:105E7000B20180E090E00E94F36B24E53AE146E94C -:105E800053E40E947A6A9B01AC01C701B6010E94EB -:105E90007A6A6B017C01B30180E090E00E94F36BB1 -:105EA0009B01AC01C701B6010E947A6A20E030E094 -:105EB00040E450E40E945A6B20E030E040E05FE3B1 -:105EC0000E947A6A0E94C76B7093450D6093440DDF -:105ED0003092410D2092400D0E94A14480E090E05C -:105EE000C65ADF4F0FB6F894DEBF0FBECDBFDF91AD -:105EF000CF911F910F91FF90EF90DF90CF90BF90C7 -:105F0000AF909F908F907F906F905F904F903F9059 -:105F10002F90089569E080E090E00E9435584DE4AC -:105F200050E063E972E181E098E00C945758CF9219 -:105F3000DF92EF92FF920F931F939091C412092F5B -:105F400010E020E030E08091C512482F50E060E082 -:105F500070E09170817068017901F694E794D794AC -:105F6000C794C0FC92606A017B01F694E794D794D1 -:105F7000C794C0FC8260E2E0369527951795079597 -:105F8000EA95D1F700FD946022E0769567955795E4 -:105F900047952A95D1F740FD84609093790E8093C0 -:105FA000780E1F910F91FF90EF90DF90CF900895A2 -:105FB0001F920F920FB60F9211240BB60F922F93D0 -:105FC0003F938F939F93EF93FF9321B33091790E7B -:105FD000832F817090E036E0880F991F3A95E1F7A2 -:105FE000922F9F7B892B81BBEBE0F1E09081809128 -:105FF000790E8270880F880F977F892B808381B3F9 -:106000009091790E92FB992790F98E7F892B81BB15 -:1060100015BCFF91EF919F918F913F912F910F9020 -:106020000BBE0F900FBE0F901F90189580916F00C0 -:106030008D7F80936F0080918100887F8160809345 -:10604000810010927A0E8091C6128F3F21F49091B8 -:10605000E112992349F09091E312943029F090E0F5 -:106060000E94002581E001C080E09091D01292FF53 -:1060700002C091E08927882341F08A9A8091080123 -:106080008160809308015F9A08958A988091080141 -:106090008E7F809308015F9808951F920F920FB62C -:1060A0000F9211240BB60F922F933F934F935F9350 -:1060B0006F937F938F939F93AF93BF93EF93FF93D0 -:1060C00080917A0E811139C280918A0E80FD8F9A5B -:1060D00080FF8F9890910B01482F42709D7F942BE9 -:1060E00090930B0141B3847090E095958795942F20 -:1060F0009D7F892B81BB91B38091890E282F2170C0 -:1061000030E066E0220F331F6A95E1F79F7B292B71 -:1061100021BB90910B01282F2270220F220F977F15 -:10612000922B90930B0121B382FB992790F9822F38 -:106130008E7F892B81BB8091880E86BD82E085BDD4 -:1061400081E080937A0E789480919C0E90919D0EC0 -:10615000892B09F0ACC0809183119091A8119817F8 -:1061600009F49BC0E09183112E2F30E086E0E89F78 -:10617000F0011124EC57FE4EF0939D0EE0939C0E1F -:10618000838194819093890080938800808191819C -:106190009093980E8093970EE2818091990E8E17BE -:1061A00061F1E093990E81E1E89FF0011124E75538 -:1061B000FE4EF0939B0EE0939A0E85859685A785FB -:1061C000B089B695A795979587958093830E909300 -:1061D000840EA093850EB093860E80937F0E9093CD -:1061E000800EA093810EB093820E80937B0E9093CD -:1061F0007C0EA0937D0EB0937E0EE0919A0EF091EE -:106200009B0E90818091780E892780938A0E86E07C -:10621000829FD001839FB00D1124AC57BE4E1596BE -:106220002C9181819281A381B481022E04C0B69504 -:10623000A795979587950A94D2F780938B0E9093A4 -:106240008C0EA0938D0EB0938E0E85819681A781C2 -:10625000B085022E04C0B695A795979587950A94A8 -:10626000D2F780938F0E9093900EA093910EB093DF -:10627000920E81859285A385B48504C0B695A795B5 -:10628000979587952A95D2F78093930E9093940EC5 -:10629000A093950EB093960E0AC0C8DE9FB7F894EF -:1062A000809191128460809391129FBF46C180912A -:1062B00092128130B1F489B180719091E012891706 -:1062C00081F0109292128CE0E6EEF2E1A2EFB2E1E0 -:1062D00001900D928A95E1F78091911280648093EC -:1062E00091121092890E40917B0E50917C0E60911C -:1062F0007D0E70917E0E80918B0E90918C0EA091F0 -:106300008D0EB0918E0E840F951FA61FB71F809320 -:106310007B0E90937C0EA0937D0EB0937E0EE09149 -:106320009A0EF0919B0E45855685678570894817B2 -:1063300059076A077B0768F521E02093890E458598 -:10634000568567857089841B950BA60BB70B8093C8 -:106350007B0E90937C0EA0937D0EB0937E0E2081D9 -:106360008091E6129091E712A091E812B091E912A3 -:1063700020FF04C00197A109B10903C00196A11D26 -:10638000B11D8093E6129093E712A093E812B093A8 -:10639000E91240917F0E5091800E6091810E7091B4 -:1063A000820E80918F0E9091900EA091910EB091DF -:1063B000920E840F951FA61FB71F80937F0E909398 -:1063C000800EA093810EB093820E45855685678519 -:1063D0007089481759076A077B0778F52091890E5D -:1063E00022602093890E4585568567857089841BB8 -:1063F000950BA60BB70B80937F0E9093800EA09306 -:10640000810EB093820E20818091EA129091EB125E -:10641000A091EC12B091ED1221FF04C00197A109E7 -:10642000B10903C00196A11DB11D8093EA1290939A -:10643000EB12A093EC12B093ED124091830E5091A9 -:10644000840E6091850E7091860E8091930E9091CE -:10645000940EA091950EB091960E840F951FA61FD5 -:10646000B71F8093830E9093840EA093850EB093F4 -:10647000860E4585568567857089481759076A07CE -:106480007B0778F52091890E24602093890E45853D -:10649000568567857089841B950BA60BB70B809377 -:1064A000830E9093840EA093850EB093860E208168 -:1064B0008091EE129091EF12A091F012B091F11232 -:1064C00022FF04C00197A109B10903C00196A11DD3 -:1064D000B11D8093EE129093EF12A093F012B0933F -:1064E000F1128091E312843039F49091890E8091F9 -:1064F000FF1289238093890E8091970E9091980EB8 -:1065000001979093980E8093970E892B69F41092BF -:106510009D0E10929C0E809183118F5F809383114A -:10652000863011F4109283119091890E8091790E2A -:1065300089278093890E10927A0EFF91EF91BF9177 -:10654000AF919F918F917F916F915F914F913F910B -:106550002F910F900BBE0F900FBE0F901F901895AC -:106560008091D01282FF08C08A9A809108018160D0 -:10657000809308015F9A07C08A98809108018E7FF6 -:10658000809308015F988091E3128C70A1F0809154 -:10659000780E80938A0E8091790E8093890E809177 -:1065A000C312880F845081958093880E80916F006C -:1065B000826080936F000895E0EAF0E080818F7D33 -:1065C00080835C980895CF92DF92EF92FF926A01E8 -:1065D0007B01811105C0FF90EF90DF90CF90ECCF51 -:1065E000813011F45C9801C05C9A83E28093A00032 -:1065F0008091A100807E8A618093A1008FEF9FEF40 -:106600009093A9008093A80020E030E0A901C70181 -:10661000B6010E94536B1816F4F620E030E0A90191 -:10662000C701B6010E94536B87FD11C020E030E026 -:106630004AE754E4C701B6010E94716D181654F47C -:10664000C12CD12C8AE7E82E84E4F82E03C0C12C9B -:10665000D12C76012CEE31E143E852E4C701B601BA -:106660000E94AC6D20E030E040E05FE30E947A6A77 -:106670000E94306C0E94C76B7093AB006093AA00BD -:106680005C9AFF90EF90DF90CF900895CF92DF92C9 -:10669000EF92FF92CF93DF93C82F6A017B0120E036 -:1066A00030E0A901C701B6010E94536B87FDE2C02B -:1066B000C43608F441C08CE98C0F20E0833098F593 -:1066C00090E0880F991F880F991F223079F0FC0104 -:1066D000233011F1213019F0ED56FD4E02C0E15684 -:1066E000FD4EC082D182E282F382C1C0EC01C55569 -:1066F000DD4E20E030E040E752E4C701B6010E94E1 -:10670000AC6D20E030E040E752E40E94AC6D68835D -:1067100079838A839B83ABC0E954FD4EF7FAF094EA -:10672000F7F8F094DECF2F5F8A3008F4A5C024304C -:1067300009F4A2C08A50C2CFC701B6010E945A6EA6 -:106740000E94C76B8C2F90E08C31910508F094C0AB -:10675000FC018827E256FF4F8F4F0C94BF6E6330C9 -:1067600008F48CC06093C31282C06093C6127FC0CD -:106770006093C41202C06093C512D9DB78C08091C7 -:10678000D012662311F084604CC08B7F4AC0809188 -:10679000D012662311F0806444C08F7B42C0809188 -:1067A000D012662311F080683CC08F773AC06093A6 -:1067B000C7125DC0C092C812D092C912E092CA122C -:1067C000F092CB1254C0C092CC12D092CD12E09273 -:1067D000CE12F092CF124BC08091D012662311F0EE -:1067E00081601FC08E7F1DC08091D012662321F072 -:1067F00084FF46C0806215C08F7D13C08091D01287 -:10680000662311F0886001C0877F8093D0120E94B8 -:106810001D582DC08091D012662311F0806101C0F7 -:106820008F7C8093D01223C06093D11220C0C0927D -:10683000D212D092D312E092D412F092D51217C095 -:10684000C092D612D092D712E092D812F092D912FA -:106850000EC070E07093DB126093DA1208C0C09231 -:10686000DC12D092DD12E092DE12F092DF1252DBE7 -:1068700080E007C084E005C083E003C086E001C07B -:106880008AE0DF91CF91FF90EF90DF90CF90089555 -:106890002DE0829FC00111244CE050E0965F0C94E3 -:1068A00057581F93CF93DF93182FEB018DE0189F5C -:1068B000B0011124765F4CE050E0CE010E949A585E -:1068C000892B51F48CE0FE0111928A95E9F7BE0103 -:1068D000812FDEDF80E001C081E0DF91CF911F9149 -:1068E0000895EF92FF920F931F93CF93DF93CDB74D -:1068F000DEB72C970FB6F894DEBF0FBECDBF182FB2 -:1069000080FFC6C08AE08093C3128FEF8093C612C7 -:106910001092C41287E08093C51283E08093C7125F -:106920008AE097EDA3E2BCE38093C8129093C9126A -:10693000A093CA12B093CB128FE692E1A3E0BBE31F -:106940008093CC129093CD12A093CE12B093CF121D -:106950001092D11280E090E0A8ECB1E48093D212C2 -:106960009093D312A093D412B093D51280E090E00C -:10697000AAEFB3E48093D6129093D712A093D812C3 -:10698000B093D9128AEF90E09093DB128093DA12E1 -:1069900080E090E0A0E8BFE38093DC129093DD12EA -:1069A000A093DE12B093DF1284E08093D01280E0D7 -:1069B00090E0A8ECB5E48093931290939412A09386 -:1069C0009512B09396128093971290939812A09379 -:1069D0009912B0939A1280939B1290939C12A09359 -:1069E0009D12B0939E1280E090E5A3ECB7E48093F3 -:1069F0009F129093A012A093A112B093A212809321 -:106A0000A3129093A412A093A512B093A612809300 -:106A1000A7129093A812A093A912B093AA1280E093 -:106A200090EAACE0B7E48093AB129093AC12A093E1 -:106A3000AD12B093AE128093AF129093B012A093A8 -:106A4000B112B093B2128093B3129093B412A09388 -:106A5000B512B093B61280E090E4ACE1B6EC80934E -:106A6000B7129093B812A093B912B093BA12809350 -:106A7000BB129093BC12A093BD12B093BE12809330 -:106A8000BF129093C012A093C112B093C21242DA07 -:106A900011FF0FC0CE0101967C018CE0F70111922D -:106AA0008A95E9F700E0B701802FF2DE0F5F08302A -:106AB000D1F712FF0AC060E080E09BE00E943558E9 -:106AC00060E081E59BE00E94355813FF05C060E05F -:106AD0008EEA9BE00E9435582C960FB6F894DEBFE4 -:106AE0000FBECDBFDF91CF911F910F91FF90EF901F -:106AF00008951F920F920FB60F9211240BB60F92AA -:106B00002F933F934F935F936F937F938F939F93B5 -:106B1000AF93BF93EF93FF938091D60022E030E0D4 -:106B200030935D0E20935C0E8F33A9F050F48831C2 -:106B300009F1813211F59FB7F89480919112886024 -:106B400015C0803471F08E37C1F49FB7F8948091EE -:106B5000911282600BC09FB7F8948091911281606E -:106B600005C09FB7F8948091911280628093911232 -:106B70009FBF14C00E94DA5111C0E091D90D91E07D -:106B80009E0F903809F490E02091D80D921731F0C3 -:106B9000F0E0E85AF24F80839093D90DFF91EF9186 -:106BA000BF91AF919F918F917F916F915F914F9125 -:106BB0003F912F910F900BBE0F900FBE0F901F9023 -:106BC00018951F920F920FB60F9211240BB60F92C9 -:106BD0002F933F934F935F936F937F938F939F93E5 -:106BE000AF93BF93EF93FF938091CE0021E030E00D -:106BF00030935D0E20935C0E8F33A9F050F48831F2 -:106C000009F1813211F59FB7F89480919112886053 -:106C100015C0803471F08E37C1F49FB7F89480911D -:106C2000911282600BC09FB7F8948091911281609D -:106C300005C09FB7F8948091911280628093911261 -:106C40009FBF14C00E94DA5111C0E091D90D91E0AC -:106C50009E0F903809F490E02091D80D921731F0F2 -:106C6000F0E0E85AF24F80839093D90DFF91EF91B5 -:106C7000BF91AF919F918F917F916F915F914F9154 -:106C80003F912F910F900BBE0F900FBE0F901F9052 -:106C900018951F920F920FB60F9211240BB60F92F8 -:106CA0002F933F934F935F936F937F938F939F9314 -:106CB000AF93BF93EF93FF938091C60010925D0E48 -:106CC00010925C0E8F33A9F050F4883109F18132B3 -:106CD00011F59FB7F89480919112886015C08034A7 -:106CE00071F08E37C1F49FB7F89480919112826051 -:106CF0000BC09FB7F89480919112816005C09FB737 -:106D0000F894809191128062809391129FBF14C079 -:106D10000E94DA5111C0E091D90D91E09E0F903898 -:106D200009F490E02091D80D921731F0F0E0E85A84 -:106D3000F24F80839093D90DFF91EF91BF91AF9166 -:106D40009F918F917F916F915F914F913F912F9183 -:106D50000F900BBE0F900FBE0F901F9018951F92B3 -:106D60000F920FB60F9211240BB60F928F939F9331 -:106D7000EF93FF9380915B0EE82FF0E0E552F24F26 -:106D800090819093D6008F5F803809F480E08093E3 -:106D90005B0E9091DA0D891305C08091D1008F7D33 -:106DA0008093D100FF91EF919F918F910F900BBE37 -:106DB0000F900FBE0F901F9018951F920F920FB655 -:106DC0000F9211240BB60F928F939F93EF93FF9323 -:106DD00080915B0EE82FF0E0E552F24F90819093A6 -:106DE000CE008F5F803809F480E080935B0E909135 -:106DF000DA0D891305C08091C9008F7D8093C90089 -:106E0000FF91EF919F918F910F900BBE0F900FBE4E -:106E10000F901F9018951F920F920FB60F9211248A -:106E20000BB60F928F939F93EF93FF9380915B0E1E -:106E3000E82FF0E0E552F24F90819093C6008F5F0B -:106E4000803809F480E080935B0E9091DA0D89130D -:106E500005C08091C1008F7D8093C100FF91EF91AB -:106E60009F918F910F900BBE0F900FBE0F901F90B0 -:106E70001895E091DA0D91E09E0F903831F490E092 -:106E800004C02091911224FD26C020915B0E291789 -:106E9000C1F3F0E0E552F24F80839093DA0D8091D8 -:106EA0005C0E90915D0E8130910551F018F00297C3 -:106EB00069F008958091C10080628093C1000895B7 -:106EC0008091C90080628093C90008958091D100AB -:106ED00080628093D1000895CF93C82F83ED99E00D -:106EE0000E94F91FC830B9F190F4C43059F148F448 -:106EF000C23001F120F5C13009F042C08BEB99E0BE -:106F00001BC0C63011F120F58CE799E015C0C431E3 -:106F100071F140F4CA3029F108F1CB3089F58CEFDA -:106F200093E02BC0C63131F1F8F0C23349F586E069 -:106F300094E023C089EA99E00E94F91F28C087E9FC -:106F400099E0FACF8DE899E0F7CF8DE699E0F4CF9C -:106F50008CE499E0F1CF83E499E0EECF88E399E007 -:106F6000EBCF85E299E0E8CF8FE099E0E5CF81E0D3 -:106F700094E003C08BEF98E0DFCF0E94082007C0A9 -:106F800089EE98E00E94F91F8C2F0E94EB1F86EE7D -:106F900098E0CF910C94F91F1F93CF93DF93CDB757 -:106FA000DEB72C970FB6F894DEBF0FBECDBF80E0E2 -:106FB00090E00E949258893009F052C04DE450E0B0 -:106FC00061E078E083E992E10E949A58892B09F404 -:106FD00047C020E030E048EC55E460919312709196 -:106FE000941280919512909196120E94536B811188 -:106FF00037C020E030E048EC55E460919712709182 -:1070000098128091991290919A120E94536B81115B -:1070100027C020E030E048EC55E460919B1270916D -:107020009C1280919D1290919E120E94536B81112F -:1070300017C010E0BE016F5F7F4F812F32DC8111DE -:1070400002C087E049DF1F5F1830A1F72C960FB60A -:10705000F894DEBF0FBECDBFDF91CF911F91089591 -:107060008FEF3FDCE6CF8F929F92AF92BF92EF926D -:10707000FF920F931F93CF9380EE98E00E94F91F29 -:1070800082EFE82E82E1F82E03E912E1C0E0F70179 -:1070900061917191819191917F01F801819091901D -:1070A000A190B1908F010E94F56BA50194010E94FF -:1070B0005A6B0E94DD1FC23021F08EED98E00E94D5 -:1070C000F91FCF5FC33019F78CED98E00E94F91FCC -:1070D0008091FE120E94EB1F88ED98E0CF911F91E6 -:1070E0000F91FF90EF90BF90AF909F908F900C9476 -:1070F000F91F9FB7F894809191128260809391124A -:107100009FBF08952091660E3091670E21153105BD -:10711000B9F08091760E9091770E8217930734F430 -:1071200001969093770E8093760E0AC01092770E98 -:107130001092760E1092670E1092660E1092390D14 -:107140002091D10C3091D20C21153105A1F0809104 -:10715000740E9091750E8217930734F401969093F4 -:10716000750E8093740E07C01092750E1092740EF7 -:1071700081E080933A0D8091390D81111BC080917F -:10718000D30C811117C0809173008E7F80937300A0 -:107190001092D00C1092670E1092660E1092D20CC4 -:1071A0001092D10C1092770E1092760E1092750EEE -:1071B0001092740E08958091730E811107C081E0C2 -:1071C0008093730E80910B01806205C01092730E44 -:1071D00080910B018F7D80930B018091710E9091B6 -:1071E000720E9C012F5F3F4F3093720E2093710EF1 -:1071F00020910402309105022817390748F41092B3 -:10720000720E1092710E809170008E7F80937000CC -:1072100008952091060D3091070D2430310529F491 -:1072200026E636E646E65FE307C02530310539F548 -:1072300026E636E646EE5FE30E945A6B20E030E039 -:1072400040E852E40E94AC6D0E94C26B60935E0EF7 -:1072500070935F0E8093600E9093610E8DE499E3BE -:1072600090938B1280938A121092A00085E08093F5 -:10727000A1008DEF9FEF90938D1280938C128091DF -:107280008C1290918D129093A5008093A400809110 -:107290007200816080937200089580915E0E9091DB -:1072A0005F0EA091600EB091610E181619061A06B5 -:1072B0001B06F4F42091700E222389F01092700EB8 -:1072C0000197A109B10980935E0E90935F0EA09380 -:1072D000600EB093610E80910201806406C081E06F -:1072E0008093700E809102018F7B8093020108953C -:1072F0000E948B5110925E0E10925F0E1092600EE3 -:107300001092610E0895CF93DF93EB018431D1F099 -:1073100028F4882361F08C30A8F437C08233E9F078 -:1073200018F4873190F10EC0833311F10BC08881BE -:10733000882329F06BE074E0CE010E94E06E6DE0DE -:1073400074E020C08881882329F06BE074E0CE01CE -:107350000E94E06E60E174E015C08881882329F006 -:107360006BE074E0CE010E94E06E64E174E00AC05C -:107370008881882329F06BE074E0CE010E94E06EE2 -:1073800068E174E0CE010E94E06E8091D40C882305 -:1073900079F064ED7CE0CE010E94E06E82E3E4EDE2 -:1073A000FCE0DF011D928A95E9F7DF91CF91089506 -:1073B0006DE373E0CE01DF91CF910C94E06EE1E0DC -:1073C000F1E0808180628083808180648083E2E05C -:1073D000F1E080818F7D808380818F7B8083089521 -:1073E0003F9A479A08959C9A9D9AA498A59A0895C1 -:1073F000809104018778809304018091030188774C -:10740000803451F46CE174E088E69EE00E94EB6EFB -:1074100040E050E0BA010EC080910301887761F42A -:1074200063E274E088E69EE00E94EB6E40E050E08C -:1074300060EE70E483E02AD9AFCD0F931F93CF9312 -:10744000DF936091060D84E893E00E9435586091C7 -:10745000070D85E893E00E943558C8E0DDE088E933 -:1074600093E069918C010F5F1F4F0E943558C8014E -:107470000C391340B1F7CCE0DDE08EE893E0699180 -:107480008C010F5F1F4F0E943558C801023913400D -:10749000B1F7C0E1DDE082E89CE069918C010F5F0B -:1074A0001F4F0E943558C80106381C40B1F7DF91C4 -:1074B000CF911F910F910895E3E3F2E182E898E301 -:1074C000918380831092200185E08093210181EFD8 -:1074D0009FEF938382838281938190932501809390 -:1074E0002401E3E7F0E08081816080830895CF92FA -:1074F000DF92EF92FF920F931F93CF93DF93690177 -:107500007A01EAE0F1E0208120622083EBE0F1E003 -:1075100020812F7D2083660F771F70930502609373 -:1075200004020CE212E18BED98E3F8019183808371 -:10753000C0E7D0E088818E7F8883E0EBF0E0808137 -:107540008C7F8083E1EBF0E08081877F8083A6EBF6 -:10755000B0E08C918F7D8C9388818D7F8883808132 -:107560008460808380818C7F808320E034E244EFDC -:1075700059E4C701B6010E945A6B20E034E244E7A7 -:107580005BE40E94AC6D20E030E040E85CE30E94E8 -:10759000AC6D0E94C26B20E031E0C901861B970BE5 -:1075A000F80193838283828193818093B2008881E2 -:1075B00081608883DF91CF911F910F91FF90EF90B1 -:1075C000DF90CF9008958091060D9091070D04975C -:1075D0000297F8F41092620E1092630E1092640EED -:1075E0001092650E809107018F7D80930701809135 -:1075F000080180628093080180910201806280937B -:10760000020160E070E084EB93E403DE81E08093AC -:107610003D0D089510925E0E10925F0E1092600E56 -:107620001092610E0E948B5110923D0D0C948B5163 -:107630008F929F92AF92BF92CF92DF92EF92FF9282 -:107640006B017C0120E030E044EB53E40E94716D5B -:1076500018160CF488C020E030E0A901C701B6017B -:107660000E94536B87FD7FC08091060D9091070D9E -:107670000497029790F52091620E3091630E40912D -:10768000640E5091650EC701B6010E94796A4B01E4 -:107690005C01C092620ED092630EE092640EF09292 -:1076A000650E20E030E0A9010E94716D181624F4E7 -:1076B000809102018F7D03C08091020180628093DE -:1076C0000201C501B4019F77FF90EF90DF90CF904A -:1076D000BF90AF909F908F909CCD20E030E044E32E -:1076E00053E4C701B6010E94716D18161CF4C12C39 -:1076F000D12C7601A701960160E070E084E393E469 -:107700000E94796A20E030E044E353E40E945A6B1F -:107710009B01AC010E947A6A20E030E040E05FE328 -:107720000E947A6A609300027093010280930202C1 -:107730009093030220E030E040EA51E40E945A6B4B -:1077400020E030EC4FE754E40E94AC6D0E94C76B20 -:10775000CB01FF90EF90DF90CF90BF90AF909F90C4 -:107760008F900C943C50FF90EF90DF90CF90BF90A3 -:10777000AF909F908F9008958091060D9091070D86 -:107780000497029780F48091010180628093010147 -:1077900080910101806480930101809102018062E7 -:1077A00080930201089580E18093A1001092A000CF -:1077B00082E08093901280E29EE490938F128093F7 -:1077C0008E129093A7008093A60082E18093A1007F -:1077D00020E030E040EA51E4609100027091010243 -:1077E00080910202909103020E945A6B20E030ECDB -:1077F0004FE754E40E94AC6D0E94C76BCB010C9420 -:107800003C50CF93DF93D82FC8E05E98559AD7FFAE -:1078100002C05D9A01C05D9865E070E080E090E094 -:107820000E94C2245E9A65E070E080E090E00E94D1 -:10783000C2245E98DD0F65E070E080E090E00E9479 -:10784000C224C15011F762E070E080E090E00E9435 -:10785000C224559A5D9A62E070E080E090E0DF918A -:10786000CF910C94C2245E98559A5D9865E070E0C3 -:1078700080E090E00E94C2245E9A65E070E080E0C3 -:1078800090E00E94C224559A5D9A65E070E080E025 -:1078900090E00C94C224CF93559A5D9A62E070E018 -:1078A00080E090E00E94C2245E9A62E070E080E096 -:1078B00090E00E94C22455988BEF99B1C92FC072F5 -:1078C00095FF05C08150C9F7CEDFC1E007C05E98C3 -:1078D00062E070E080E090E00E94C2248C2FCF91A3 -:1078E0000895559A5D9A5E9A65E070E080E090E0B8 -:1078F0000E94C224559A5D9865E070E080E090E0B7 -:107900000E94C2245E9862E070E080E090E00C94F7 -:10791000C224CF93DF93D82FC8E0809102018F77E4 -:107920008093020180910101846080930101809124 -:107930000201D7FF02C0846001C08B7F80930201E7 -:1079400065E070E080E090E00E94C2248091020136 -:1079500080688093020165E070E080E090E00E9422 -:10796000C224809102018F7780930201DD0F65E0D0 -:1079700070E080E090E00E94C224C15071F662E0A5 -:1079800070E080E090E00E94C22480910101846058 -:10799000809301018091020184608093020162E082 -:1079A00070E080E090E0DF91CF910C94C2240F93BF -:1079B0001F93CF93DF93C2E0D1E088818F778883D4 -:1079C00001E011E0F80180818460808388818B7FF1 -:1079D000888365E070E080E090E00E94C2248881A6 -:1079E0008068888365E070E080E090E00E94C224B7 -:1079F000F80180818460808388818460888365E069 -:107A000070E080E090E0DF91CF911F910F910C9496 -:107A1000C224CF9380910101846080930101809101 -:107A2000020184608093020162E070E080E090E0F7 -:107A30000E94C2248091020180688093020162E06A -:107A400070E080E090E00E94C224809101018B7F71 -:107A5000809301018BEF90910001C92FC47092FFB8 -:107A600005C08150C1F7A3DFC1E00BC080910201C6 -:107A70008F778093020162E070E080E090E00E94E6 -:107A8000C2248C2FCF9108950F931F93CF93DF9330 -:107A900001E011E0F801808184608083C2E0D1E0E0 -:107AA00088818460888388818068888365E070E04D -:107AB00080E090E00E94C224F8018081846080838D -:107AC00088818B7F888365E070E080E090E00E9491 -:107AD000C22488818F77888362E070E080E090E044 -:107AE000DF91CF911F910F910C94C224CF93DF931C -:107AF000D82FC8E04398399AD7FF02C0419A01C0F5 -:107B0000419865E070E080E090E00E94C224439AD2 -:107B100065E070E080E090E00E94C2244398DD0FB1 -:107B200065E070E080E090E00E94C224C15011F74F -:107B300062E070E080E090E00E94C224399A419AAD -:107B400062E070E080E090E0DF91CF910C94C2247D -:107B50004398399A419865E070E080E090E00E9497 -:107B6000C224439A65E070E080E090E00E94C22465 -:107B7000399A419A65E070E080E090E00C94C2246C -:107B8000CF93399A419A62E070E080E090E00E94E1 -:107B9000C224439A62E070E080E090E00E94C22438 -:107BA00039988BEF96B1C92FC27091FF05C08150F3 -:107BB000C9F7CEDFC1E007C0439862E070E080E023 -:107BC00090E00E94C2248C2FCF910895399A419A57 -:107BD000439A65E070E080E090E00E94C224399A08 -:107BE000419865E070E080E090E00E94C2244398F4 -:107BF00062E070E080E090E00C94C2244F925F92CB -:107C00006F927F92AF92BF92CF92DF92EF92FF92EC -:107C10000F931F93CF93DF935C01EB018A01FC016B -:107C2000408051806280738020E030E0A901C30170 -:107C3000B2010E94536B20E030E0A901811111C014 -:107C4000688179818A819B810E94716D1816E4F0A8 -:107C50002AEDC22E2FE0D22E29ECE22E2FEBF22EAF -:107C600022C0C301B2010E94536B87FD16C0A3015D -:107C70009201688179818A819B810E945A6B0E945E -:107C8000186B6B017C010FC09AEDC92E9FE0D92EB5 -:107C900099ECE92E9FE3F92E06C0C12CD12C80EC83 -:107CA000E82E8FE7F82EC701B6010E94576B20918E -:107CB000080D3091090D40910A0D50910B0D0E9455 -:107CC000AC6D9B01AC01C301B2010E94796AF50160 -:107CD0006083718382839383C701B6010E940F6E14 -:107CE0002091080D3091090D40910A0D50910B0D16 -:107CF0000E94AC6D9B01AC01688179818A819B8176 -:107D00000E94796A688379838A839B8320910C0D12 -:107D100030910D0D40910E0D50910F0DF8016081C5 -:107D20007181828193810E947A6AF80160837183F4 -:107D300082839383DF91CF911F910F91FF90EF90FA -:107D4000DF90CF90BF90AF907F906F905F904F90FB -:107D500008954F925F926F927F92AF92BF92CF92AF -:107D6000DF92EF92FF920F931F93CF93DF935C010B -:107D7000EB018A01FC01408051806280738020E029 -:107D800030E0A901C301B2010E94536B20E030E052 -:107D9000A901811111C0688179818A819B810E942A -:107DA000716D1816E4F02AEDC22E2FE0D22E29ECC8 -:107DB000E22E2FEBF22E22C0C301B2010E94536BC0 -:107DC00087FD16C0A3019201688179818A819B8118 -:107DD0000E945A6B0E94186B6B017C010FC09AEDD8 -:107DE000C92E9FE0D92E99ECE92E9FE3F92E06C00B -:107DF000C12CD12C80ECE82E8FE7F82EC701B601FC -:107E00000E94576B2091080D3091090D40910A0D89 -:107E100050910B0D0E94AC6DA30192010E947A6AF1 -:107E2000F5016083718382839383C701B6010E9449 -:107E30000F6E2091080D3091090D40910A0D50915F -:107E40000B0D0E94AC6D9B01AC01688179818A8128 -:107E50009B810E947A6A688379838A839B832091BD -:107E60000C0D30910D0D40910E0D50910F0DF8013C -:107E700060817181828193810E94796AF8016083B7 -:107E8000718382839383DF91CF911F910F91FF9034 -:107E9000EF90DF90CF90BF90AF907F906F905F900A -:107EA0004F9008952F923F924F925F926F927F92E0 -:107EB0008F929F92AF92BF92CF92DF92EF92FF92FA -:107EC0000F931F93CF93DF93CDB7DEB72C970FB6E9 -:107ED000F894DEBF0FBECDBF160135012401FE01AF -:107EE00039964F0134975F0134976F01C4D2E9840A -:107EF000FA840B851C852D813E814F8158856981CF -:107F00007A818B819C81420153016101CFD12C96F2 -:107F10000FB6F894DEBF0FBECDBFDF91CF911F919A -:107F20000F91FF90EF90DF90CF90BF90AF909F9018 -:107F30008F907F906F905F904F903F902F9008951B -:107F40002F923F924F925F926F927F928F929F9269 -:107F5000AF92BF92CF92DF92EF92FF920F931F9357 -:107F6000CF93DF93CDB7DEB766970FB6F894DEBF39 -:107F70000FBECDBF69837A838B839C832D833E8321 -:107F80004F835887270138011601BA8AA98A8401CC -:107F90009B01AC010E94AC6D6B017C012D813E8187 -:107FA0004F815885CA01B9010E94AC6D9B01AC019B -:107FB000C701B6010E947A6A0E94196E23E333E377 -:107FC00043E551E40E94796A69877A878B879C87A9 -:107FD0002DEC3CEC46ED52E4C301B2010E94796AFB -:107FE0002B013C0129853A854B855C85CA01B90185 -:107FF0000E94AC6D6B017C01A3019201C301B2012F -:108000000E94AC6D9B01AC01C701B6010E947A6A67 -:108010006B017C0124ED35E64DE955E40E94796A57 -:108020004B015C0126EC3FEA4DE957E4C701B6017C -:108030000E94AC6D6D877E878F87988BA501940118 -:10804000C501B4010E94AC6D9B01AC016D857E85BC -:108050008F8598890E94796A0E94196E6B8B7C8B40 -:108060008D8B9E8BA7019601C701B6010E947A6A8B -:108070006D877E878F87988BA501940169857A85A6 -:108080008B859C850E94AC6D4B015C012B893C89E2 -:108090004D895E89C301B2010E94AC6D9B01AC01A8 -:1080A000C501B4010E94796A4B015C012CEE31E1FB -:1080B0004EE053E46D857E858F8598890E94AC6D76 -:1080C0009B01AC01C501B4010E945A6B0E946B6A0E -:1080D00021EE3EE245E652E40E94AC6DF101608380 -:1080E00071838283938324ED35E64DE955E4C7011E -:1080F000B6010E947A6A4B015C012BE339E045EC42 -:1081000057E4C701B6010E94AC6D6B017C01A5016B -:108110009401C501B4010E94AC6D9B01AC01C70183 -:10812000B6010E94796A0E94196E6B017C01A5015B -:10813000940169857A858B859C850E94AC6D4B0185 -:108140005C01A7019601C301B2010E94AC6D9B01C5 -:10815000AC01C501B4010E947A6A6B017C012CE577 -:108160003FEC4EE153E46D857E858F8598890E94B2 -:10817000AC6D9B01AC01C701B6010E945A6B0E9415 -:108180006B6A21EE3EE245E652E40E94AC6D6B0163 -:108190007C01E989FA89608371838283938321EE6C -:1081A0003EE245E652E4F101608171818281938172 -:1081B0000E945A6B0E940F6E2CEE31E14EE053E4A8 -:1081C0000E94AC6D9B01AC01C301B2010E94716DB4 -:1081D000181654F4F7FAF094F7F8F094E989FA894C -:1081E000C082D182E282F38220E030E0A90169817D -:1081F0007A818B819C810E94536B20E030E0A90141 -:10820000811112C06D817E818F8198850E94716D70 -:1082100018162CF480E090E0A4EBB2E411C080E0EA -:1082200090E0A4EBB2EC0CC069817A818B819C81D7 -:108230000E94536B87FF0AC080E090E0A0ECBFE78C -:10824000F80180839183A283B38317C029813A8187 -:108250004B815C816D817E818F8198850E945A6BF4 -:108260000E94186B21EE3EE245E652E40E94AC6D9E -:10827000F801608371838283938366960FB6F894C6 -:10828000DEBF0FBECDBFDF91CF911F910F91FF9049 -:10829000EF90DF90CF90BF90AF909F908F907F90A6 -:1082A0006F905F904F903F902F9008952F923F9244 -:1082B0004F925F926F927F928F929F92AF92BF92F6 -:1082C000CF92DF92EF92FF920F931F93CF93DF93A2 -:1082D000CDB7DEB72E970FB6F894DEBF0FBECDBF79 -:1082E00029833A834B835C83ED82FE820F83188758 -:1082F000860115019E868D8621EE3EE245E652E41A -:108300000E945A6B2B013C0121EE3EE245E652E40D -:1083100069817A818B819C810E945A6B4B015C013F -:1083200021EE3EE245E652E46D817E818F819885A3 -:108330000E945A6B6B017C01C301B2010E94576B12 -:1083400069837A838B839C83C501B4010E94576B38 -:108350006D837E838F839887C301B2010E940F6E65 -:108360002B013C01C501B4010E940F6E69877A8719 -:108370008B879C872CEE31E14EE053E469817A8152 -:108380008B819C810E94AC6D4B015C012CE53FEC24 -:108390004EE153E46D817E818F8198850E94AC6DA2 -:1083A0009B01AC01C501B4010E947A6A23E333E367 -:1083B00043E551E40E947A6A4B015C01C701B601B2 -:1083C0000E94576B9B01AC01C501B4010E94AC6DCA -:1083D000F8016083718382839383C701B6010E9491 -:1083E0000F6E9B01AC01C501B4010E94AC6DF1019F -:1083F00060837183828393832CEE31E14EE053E4FA -:10840000C301B2010E94AC6D6B017C012CE53FEC15 -:108410004EE153E469857A858B859C850E94AC6D1D -:108420009B01AC01C701B6010E94796A2DEC3CECBE -:1084300046ED52E40E947A6AED85FE856083718381 -:10844000828393832E960FB6F894DEBF0FBECDBF06 -:10845000DF91CF911F910F91FF90EF90DF90CF9020 -:10846000BF90AF909F908F907F906F905F904F9054 -:108470003F902F9008954F925F926F927F928F92CC -:108480009F92AF92BF92CF92DF92EF92FF920F93A3 -:108490001F93CF93DF9300D01F92CDB7DEB7290192 -:1084A0003A01E982FA820B831C8306E01DE020E09A -:1084B00030E040EA52E40E945A6B9B01AC01F801A3 -:1084C00066857785808991890E947A6AF601608342 -:1084D00071838283938320E030E040EA52E4C30159 -:1084E000B2010E945A6B9B01AC01F8016289738949 -:1084F000848995890E947A6AF501608371838283F9 -:10850000938320E030E044EB52E4F80166897789F8 -:10851000808D918D0E94796A2B013C0120E030E032 -:1085200040EA52E469817A818B819C810E945A6B76 -:108530009B01AC01C301B2010E947A6AF40160831D -:108540007183828393830F900F900F900F90DF9130 -:10855000CF911F910F91FF90EF90DF90CF90BF9040 -:10856000AF909F908F907F906F905F904F90089505 -:108570004F925F926F927F928F929F92AF92BF9233 -:10858000CF92DF92EF92FF920F931F932B013C014A -:1085900049015A01670178019B01AC010E94616E9B -:1085A000811170C0A5019401C501B4010E94616EE2 -:1085B000811168C0A7019601C701B6010E94616ED2 -:1085C000811160C02AE939E947E053E4C301B201EF -:1085D0000E94716D18160CF455C020E030E0A9011E -:1085E000C301B2010E94536B87FD4CC02DEC3CECE3 -:1085F0004FEE52E4C501B4010E94716D18160CF4DF -:1086000041C020E030E0A901C501B4010E94536BD4 -:1086100087FD38C0A301920160E070E084E393E439 -:108620000E94796AA50194010E94796A4B015C015C -:1086300020E030E047E153E40E94716D181614F118 -:1086400020E030E040E251E4C501B4010E94536BE8 -:1086500087FD18C020E030E044EB52E4C701B601CA -:108660000E94716D181674F020E030E044EB52EC7B -:10867000C701B6010E94536B881F8827881F91E0AD -:10868000892701C080E01F910F91FF90EF90DF904C -:10869000CF90BF90AF909F908F907F906F905F90A2 -:1086A0004F900895EF92FF920F931F93CF93DF9314 -:1086B00082E393E00E9492588B3B19F080E293E0B2 -:1086C00002C084E393E026E4E22E2DE0F22EC0E423 -:1086D000DDE08C0100541D40C8018C0F9D1F0E94DD -:1086E00092588993EC16FD06B9F78091450D8F934A -:1086F0008091440D8F938091430D8F938091420D13 -:108700008F938091410D8F938091400D8F938AE2DA -:1087100094E09F938F930E949D1F8DB79EB70896FC -:108720000FB6F8949EBF0FBE8DBFDF91CF911F9102 -:108730000F91FF90EF900895AF92BF92CF92DF928A -:10874000EF92FF920F931F93CF93DF93A82E6EE0CB -:108750000E94C44EC82F6FE08A2D0E94C44ED0E004 -:10876000DC2FCC27C82B7E016E0104E010E06EE008 -:108770008A2D0E94C44EB82E6FE08A2D0E94C44EEE -:108780002B2D30E0322F2227A901482BCA01C81611 -:10879000D90608F46C018E159F0508F47C01C80FFA -:1087A000D91F0150110919F7CE018C199D098E1995 -:1087B0009F0963E070E00E94896E613050E17507A7 -:1087C00008F48B01C801DF91CF911F910F91FF90A9 -:1087D000EF90DF90CF90BF90AF9008958F929F92CF -:1087E000AF92BF92CF92DF92EF92FF927C01A4DF13 -:1087F0009C0181E0E816F10409F190F082E0E816AE -:10880000F10451F56091400D7091410DCB01A0E054 -:10881000B0E0BC01CD01621B730B8109910941C01D -:108820006091420D7091430DCB01A0E0B0E0BC011E -:10883000CD01621B730B810991091EC06091440D2B -:108840007091450DCB01A0E0B0E0BC01CD01621BF1 -:10885000730B810991091CC081E0E816F104A9F0AD -:1088600040F082E0E816F10419F560E070E0CB0119 -:1088700018C060E070E0CB0145E2842E49E0942E00 -:1088800043E0A42E42E4B42E16C060E070E0CB01B9 -:1088900039E0832E36EF932E31EBA32E32E4B32E44 -:1088A0000AC0812C912C24EBA22E22E4B22E03C00C -:1088B00060E070E0CB010E94F56B20E030E044EB1B -:1088C00053E40E94AC6D20E030E040E859E30E94A0 -:1088D000AC6D9B01AC01C501B4010E94796A6B01CA -:1088E0007C0120E030E044EB53E40E94716D1816E7 -:1088F00054F420E030E044EB53E4C701B6010E9499 -:10890000796A6B017C0120E030E0A901C701B60162 -:108910000E94536B87FF0AC020E030E044EB53E431 -:10892000C701B6010E947A6A6B017C01C701B601DA -:10893000FF90EF90DF90CF90BF90AF909F908F907F -:1089400008950F931F93CF93DF93C0E4DDE084E39A -:1089500093E069918C010F5F1F4F0E943558C80149 -:108960000A331340B1F76BEB82E393E00E94355872 -:1089700099DE80E090E032DF6093140D7093150D66 -:108980008093160D9093170D81E090E027DF6093A0 -:10899000180D7093190D80931A0D90931B0D82E0A2 -:1089A00090E01CDF60931C0D70931D0D80931E0DD5 -:1089B00090931F0DDF91CF911F910F9108958F928A -:1089C0009F92AF92BF92CF92DF92EF92FF920F935E -:1089D0001F93CF93DF93EB0123E9E22E22E1F22EE6 -:1089E0008C016B018CE0C80ED11C69917991899141 -:1089F0009991F70181909190A190B1907F010E948F -:108A0000F56BA50194010E945A6BF8016193719373 -:108A1000819391938F01CC15DD0539F7DF91CF91CB -:108A20001F910F91FF90EF90DF90CF90BF90AF908C -:108A30009F908F9008951F920F920FB60F9211245E -:108A40000BB60F922F933F934F935F936F937F9348 -:108A50008F939F93AF93BF93EF93FF9389B18095CB -:108A6000982F907184FF03C091110E94DA51FF91F9 -:108A7000EF91BF91AF919F918F917F916F915F9196 -:108A80004F913F912F910F900BBE0F900FBE0F9003 -:108A90001F901895CF93DF93C091FF11D0910012D2 -:108AA0002097B9F081E080930212609118127091C2 -:108AB000191280911A1290911B129B01AC010E9415 -:108AC000AC6D698B7A8B8B8B9C8B10920012109201 -:108AD000FF11DF91CF9108952F923F924F925F92B5 -:108AE0006F927F928F929F92AF92BF92CF92DF92BE -:108AF000EF92FF920F931F93CF93DF93CDB7DEB723 -:108B0000CD54D1090FB6F894DEBF0FBECDBF809112 -:108B1000E312807723968FAF2397882389F020E094 -:108B200030E0A901609118127091191280911A1207 -:108B300090911B120E94536B882311F40C944A4E9F -:108B4000209118122F8B30911912388F40911A12E0 -:108B5000498F50911B125A8F809128128B839091CC -:108B600029129D83A0912A12AE83B0912B12BC834F -:108B70000091141210911512E0911612E987F091EC -:108B80001712FD87209107123091081240910912A7 -:108B900050910A122DA33EA34FA358A73091031260 -:108BA0003DAF409104124EAF509105125FAF8091DE -:108BB000061221968FAF219720910F12309110123B -:108BC00040911112509112122DAB3EAB4FAB58AFEA -:108BD0003091A81122963FAF22974091FE114BA7EA -:108BE0005091821124965FAF2497809181118B8FD1 -:108BF00090919E0E25969FAF2597A091FF11B09161 -:108C00000012BA8BA98B20910B1230910C1240915B -:108C10000D1250910E1229AF3AAF4BAF5CAF3091AD -:108C200020123B8B409121124C8B509122125D8B74 -:108C3000809123128E8B90911C129C8FA0911D12FB -:108C4000AD8FB0911E12BE8FE0911F12EF8F30904A -:108C5000241220902512F0912612F98320912712D8 -:108C60002A83809183115BA5851709F4F4C649898D -:108C70005A89452B09F033C224965FAD24978B8D1A -:108C8000581709F478C7A82EB12CA9E2AA9DC001F3 -:108C9000AB9D900D1124FC01E156F14FFA8BE98B4D -:108CA00080910212882319F010920212BCC08091A8 -:108CB00001128F5F853019F08093011202C010926B -:108CC0000112E091011221E12E9FF0011124E755DC -:108CD000FE4E89E28A9DA0018B9D500D11244156C4 -:108CE000514F7A01DA018C91808311964D915D91FB -:108CF0006D917C911497DB01CA0123E0880F991FC5 -:108D0000AA1FBB1F2A95D1F781839283A383B483C3 -:108D1000D70115964D915D916D917C911897DB016E -:108D2000CA0133E0880F991FAA1FBB1F3A95D1F7DC -:108D300085839683A783B087D70119964D915D915E -:108D40006D917C911C97DB01CA0143E0880F991F4C -:108D5000AA1FBB1F4A95D1F781879287A387B48743 -:108D6000D7011D966D917D918D919C9150978B01AE -:108D70009C0153E0000F111F221F331F5A95D1F79A -:108D8000058716872787308B0E94F36B6DAF7EAF08 -:108D90008FAF21969FAF2197F70125A136A147A15B -:108DA00050A50E945A6B6DA37EA38FA398A79B0129 -:108DB000AC0160E070E080EA9FE30E945A6B69AF0B -:108DC0007AAF8BAF9CAF2396FFAD2397FF23D1F0F3 -:108DD0002B893C894D895E896B897C898D899E8927 -:108DE0000E94AC6DD70151966D937D938D939C93AA -:108DF0005497BB89BF8BEC89E88FFD89F98F2E8949 -:108E00002A8F0DC0D70151966D917D918D919C91C6 -:108E100054970E94196E6F8B788F898F9A8F1DAA35 -:108E20001EAA1FAA18AE29E22A9DF0012B9DF00D63 -:108E30001124E156F14FFE87ED87C1A0D2A0E3A037 -:108E4000F4A0A701960160E070E080E09FE30E943B -:108E50005A6B69877A878B879C8723963FAD2397C8 -:108E60003323F1F142E040931312AD85BE85959610 -:108E70004D905D906D907C90989751968D909D90BF -:108E8000AD90BC905497A50194010E94AC6D9B01DC -:108E9000AC01C301B2010E94796A8B0189879D8769 -:108EA00020E030E0A9010E94536B87FF1BC1A7019E -:108EB0009601C701B6010E947A6AA30192010E943D -:108EC000AC6D9B01AC01C501B4010E94796A0E949E -:108ED000196E6B8B7C8B8D8B9E8B3F82288615C188 -:108EE00010921312ED85FE85F5A1FF83AD85BE8539 -:108EF0009696BC91B887ED85FE8507A110A5EB8DF0 -:108F0000EF5FE23109F4E0E02496FFAD2497EF171C -:108F100089F029E22E9FF0011124E156F14F618979 -:108F20007289838994890E94196E6B8B7C8B8D8BDF -:108F30009E8B04C01B8A1C8A1D8A1E8A2B893C8931 -:108F40004D895E896B897C898D899E890E94AC6D73 -:108F50002B013C0189E28A9DA0018B9D500D1124BB -:108F60004156514F5AA349A3DA0151962D913D9193 -:108F70004D915C9154972D873E874F87588BA30165 -:108F800092016D857E858F8598890E94796A2985F1 -:108F90003A854B855C850E94AC6D2F813885A80190 -:108FA0000E947A6A20E030E040E05FE30E94AC6D0E -:108FB000362E272E89839A8320E030E0A9010E9473 -:108FC000716D18160CF095C0232D322D49815A81F0 -:108FD0006F817885C8010E94716D18160CF071C000 -:108FE000E9A1FAA1858C968CA78CB0A0A30192016F -:108FF000C501B4010E94796A29853A854B855C8553 -:109000000E94AC6D6B837D838E839C839B01AC013E -:10901000632D722D89819A810E94716D181694F5C5 -:10902000C501B4010E94196E6C8F7D8F8E8F9F8F4A -:10903000A50194016D857E858F8598890E94536B6B -:10904000811106C0F1E0F093131209831A835DC009 -:109050002D853E854F855889C501B4010E94796AE6 -:1090600029853A854B855C850E94AC6D9B01AC01DE -:109070006F817885C8010E94796A6F8378878983B8 -:109080009A8343C0A7019601C701B6010E947A6A7C -:10909000232D322D49815A810E94AC6DA30192018A -:1090A0000E947A6A0E94196E6C8F7D8F8E8F9F8FBF -:1090B0003F8228863B822D8229812E833A813C8300 -:1090C00024C042E04093131209831A835F895C8FA6 -:1090D000888D8D8F998D9E8FAA8DAF8F16C03F8200 -:1090E000288617C03F8228861B8A1C8A1D8A1E8AF2 -:1090F00010C0BB89BC8FEC89ED8FFD89FE8F2E8956 -:109100002F8F1F82188619821A8200E010E01986BC -:109110001D8622965FAD2297452F50E05AA749A79A -:1091200086E0849FF001859FF00D1124EC57FE4EE0 -:10913000809101128283A989BA899596BC91B8ABB6 -:10914000E989FA89F6A1F9ABA989BA899796BC9100 -:109150002696BFAF2697E989FA89F0A52796FFAF33 -:10916000279729AD3AAD4BAD5CAD68A979A98B2F96 -:109170009F2F0E94796A6CA77DA78EA79FA720E0EA -:1091800030E0A9010E94536B87FF04C01CA61DA6F6 -:109190001EA61FA62091131228A32B813D814E816C -:1091A0005C816F81788589819A810E94536B8111DE -:1091B00005C032E028963FAF289704C041E02896CA -:1091C0004FAF289728A859A92E965FAF2E972696BD -:1091D0008FAD26972D968FAF2D9727963FAC27976B -:1091E0008EE3C82E83ECD82E8EE2E82E89E3F82E8B -:1091F000412C512C3201C9A2DAA2EBA2FCA238A167 -:10920000332321F0313009F485C0C5C0A989BA895A -:1092100091962D913D914D915C919497C701B60126 -:109220000E94AC6D4B015C0120E030E040E05FE368 -:109230000E94AC6D2F89388D498D5A8D0E947A6AB3 -:10924000A70196010E94AC6D9B01AC01622D2E9688 -:109250007FAD2E972D968FAD2D97932D0E94796A15 -:10926000262E2E967FAF2E972D968FAF2D97392EC7 -:109270002F81388549815A810E94536B87FF3DC0F9 -:109280002F81388549815A8168A979A926968FADA1 -:10929000269727969FAD27970E94796A9B01AC017C -:1092A0000E947A6A6B017C012C8D3D8D4E8D5F8D05 -:1092B0006F89788D898D9A8D0E947A6A9B01AC01A5 -:1092C000C701B6010E945A6B6B017C012896BFADA5 -:1092D0002897B8A3EC8DEF8BFD8DF88F2E8D298FFD -:1092E0003F8D3A8F2F8048852E964FAF2E9759810C -:1092F0002D965FAF2D973A80EBC0A50194016F8941 -:10930000788D898D9A8D0E947A6A6F8B788F898F7C -:109310009A8FDEC02C8D3D8D4E8D5F8DC701B601BD -:109320000E94AC6D9B01AC01622D2E967FAD2E97F5 -:109330002D968FAD2D97932D0E94796A4B015C017C -:109340002B813D814E815C810E94536B87FFB8C0A9 -:109350002B813D814E815C81622D2E967FAD2E97B3 -:109360002D968FAD2D97932D0E94796A2C8D3D8D72 -:109370004E8D5F8D0E945A6B6B017C012B808D811D -:109380002E968FAF2E979E812D969FAF2D973C8066 -:10939000A2E0A8A39DC0E989FA8921A132A143A135 -:1093A00054A1C701B6010E94AC6D4B015C012F892D -:1093B000388D498D5A8D0E94536B87FF52C020E033 -:1093C00030E040E05FE3C501B4010E94AC6D9B0159 -:1093D000AC016F89788D898D9A8D0E94796AA70179 -:1093E00096010E94AC6D9B01AC01622D2E967FAD63 -:1093F0002E972D968FAD2D97932D0E94796A2996E1 -:109400006FAF29972A967FAF2A972B968FAF2B970E -:109410002C969FAF2C97980149855D850E94716DB0 -:109420001816FCF4A50194016F89788D898D9A8DA9 -:109430000E94796A6F8B788F898F9A8F29962FACCB -:1094400029972A96FFAD2A972E96FFAF2E972B9637 -:109450002FAD2B972D962FAF2D972C963FAC2C9799 -:1094600037C0980149855D85622D2E967FAD2E9778 -:109470002D968FAD2D97932D0E94796A9B01AC019B -:109480000E947A6A6B017C012B893C894D895E8937 -:109490006F89788D898D9A8D0E947A6A9B01AC01C3 -:1094A000C701B6010E945A6B6B017C01202E2E96DB -:1094B0001FAF2E9739852D963FAF2D973D8408C05D -:1094C000282C2E969FAE2E972D96AFAE2D973B2C27 -:1094D000A7019601C301B2010E947A6A2B013C01E7 -:1094E00029A13AA14BA15CA10E94536B87FF07C041 -:1094F000A301920169A17AA18BA19CA120C02CA5F6 -:109500003DA54EA55FA5622D2E967FAD2E972D967B -:109510008FAD2D97932D0E94716D181644F52EE393 -:1095200033EC4EE259E369A17AA18BA19CA10E9480 -:109530007A6A69A37AA38BA39CA3A30192010E94D8 -:10954000796A6B017C01980149855D85622D2E96B3 -:109550007FAD2E972D968FAD2D97932D0E94716D17 -:1095600018160CF44CCE48A14093131203C058A116 -:10957000509313122DA13EA14FA158A5622D2E96F6 -:109580007FAD2E972D968FAD2D97932D0E94AC6DAC -:1095900068A379A38CA798AB0E94406B6B017C01F8 -:1095A0006DAD7EAD8FAD21969FAD21970E94406B32 -:1095B0004B015C01A70196010E94796A0E94C76B6A -:1095C00069AB7AAB8BAB9CABA6E089A59AA5A89FAB -:1095D000F001A99FF00D1124EC57FE4E29A93AA9DC -:1095E00031832083232B09F087C023965FAD239717 -:1095F000552309F481C0C801A985BD858093141243 -:1096000090931512A0931612B09317128B899C8910 -:10961000AD89BE898093201290932112A0932212CB -:10962000B09323128C8D9D8DAE8DBF8D80931C12B7 -:1096300090931D12A0931E12B0931F128B819D81D7 -:10964000AE81BC818093281290932912A0932A1294 -:10965000B0932B128F819885A981BA8180932412AF -:1096600090932512A0932612B093271222968FADC5 -:1096700022978093A811A989BA89B0930012A09368 -:10968000FF1129AD3AAD4BAD5CAD20930B12309379 -:109690000C1240930D1250930E123B8D309381119A -:1096A0008DA19EA1AFA1B8A5809307129093081237 -:1096B000A0930912B0930A129BA59093FE111092E9 -:1096C00018121092191210921A1210921B12109264 -:1096D0000F12109210121092111210921212C092C8 -:1096E0000312D0920412E0920512F09206122DA1FC -:1096F0003EA14FA158A565C12DA93EA94FA958ADBE -:10970000C301B2010E947A6A2B013C0128A139A150 -:109710004CA558A9C501B4010E94796A9B01AC010E -:10972000C301B2010E945A6B4B015C0128A139A10F -:109730004CA558A9C701B6010E94796AA5019401F8 -:109740000E94AC6D6DAB7EAB8FAB98AF20EC31EE71 -:1097500044E65EE4C501B4010E94AC6D0E94406B1A -:109760000E94C76B603DE7E07E078105910560F4CC -:1097700046E029A53AA5429FF001439FF00D112430 -:10978000EC57FE4E158253C0603A5FE075078105C5 -:10979000910560F426E0A9A5BAA52A9FF0012B9FA8 -:1097A000F00D1124EC57FE4E31E011C060344FE152 -:1097B00074078105910568F426E0A9A5BAA52A9F3A -:1097C000F0012B9FF00D1124EC57FE4E32E0358353 -:1097D0000CC0A6E049A55AA5A49FF001A59FF00DD5 -:1097E0001124EC57FE4EB3E0B58346E029A53AA517 -:1097F000429FF001439FF00D1124EC57FE4E25814E -:10980000022E04C096958795779567950A94D2F7AE -:10981000A9A9BAA902C0AA0FBB1F2A95E2F7B18372 -:10982000A08361157105B1E08B07910568F446E0EE -:1098300029A53AA5429FF001439FF00D1124EC5752 -:10984000FE4E7483638304C08FEF9FEF9483838302 -:10985000BBA4B39496E0B91201C0B12C980149851C -:109860005D85622D2E967FAD2E972D968FAD2D970F -:10987000932D0E94716D1816CCF4822D2E969FADFB -:109880002E972D96AFAD2D97B32DE989FA8985A333 -:1098900096A3A7A3B0A7F8A1FDAF29A12EAF3CA521 -:1098A0003FAF48A921964FAF2197CDC020E030E0CF -:1098B000A901622D2E967FAD2E972D968FAD2D97F7 -:1098C000932D0E94716D18160CF0A6C0C801A985D1 -:1098D000BD858093141290931512A0931612B09325 -:1098E00017128B899C89AD89BE8980932012909331 -:1098F0002112A0932212B09323128C8D9D8DAE8DD8 -:10990000BF8D80931C1290931D12A0931E12B093D2 -:109910001F128B819D81AE81BC8180932812909310 -:109920002912A0932A12B0932B128F819885A981B6 -:10993000BA818093241290932512A0932612B0939B -:1099400027125BA55093A81189899A8990930012D8 -:109950008093FF1129AD3AAD4BAD5CAD20930B1256 -:1099600030930C1240930D1250930E123B8D309396 -:1099700081118DA19EA1AFA1B8A5809307129093EC -:109980000812A0930912B0930A12B092FE1110921D -:1099900018121092191210921A1210921B12109291 -:1099A0000F12109210121092111210921212C092F5 -:1099B0000312D0920412E0920512F09206129C015A -:1099C000AD01C701B6010E945A6BA989BA89959663 -:1099D0006D937D938D939C9398975CD8BB8DB0933A -:1099E0009E0EC35BDF4F0FB6F894DEBF0FBECDBF38 -:1099F000DF91CF911F910F91FF90EF90DF90CF906B -:109A0000BF90AF909F908F907F906F905F904F909E -:109A10003F902F900C9436202496EFAD2497FB8D29 -:109A2000EF1779F08F2F8F5F823109F480E02B8D53 -:109A300025963FAD2597231303C025968FAF259715 -:109A40008B8F1A8A198A3F8028844BA522964FAFA4 -:109A50002297BBA606C9C801A985BD8580931412AB -:109A600090931512A0931612B09317128B899C89AC -:109A7000AD89BE898093201290932112A093221267 -:109A8000B09323128F89988DA98DBA8D8093181267 -:109A900090931912A0931A12B0931B128C8D9D8D66 -:109AA000AE8DBF8D80931C1290931D12A0931E1239 -:109AB000B0931F128B819D81AE81BC81809328124F -:109AC00090932912A0932A12B0932B12832D922DDA -:109AD000A981BA818093241290932512A093261213 -:109AE000B093271222968FAD22978093A811A9894F -:109AF000BA89B0930012A093FF1129AD3AAD4BADD6 -:109B00005CAD20930B1230930C1240930D125093C6 -:109B10000E123B8D309381118DAD9EADAFAD219670 -:109B2000BFAD21978093031290930412A093051266 -:109B3000B09306128DA19EA1AFA1B8A58093071284 -:109B400090930812A0930912B0930A122DA93EA96E -:109B50004FA958AD20930F12309310124093111259 -:109B6000509312123BA53093FE1125964FAD2597C9 -:109B700040939E0E8FC0C801A985BD8580931412A5 -:109B800090931512A0931612B09317128B899C898B -:109B9000AD89BE898093201290932112A093221246 -:109BA000B09323128F89988DA98DBA8D8093181246 -:109BB00090931912A0931A12B0931B128C8D9D8D45 -:109BC000AE8DBF8D80931C1290931D12A0931E1218 -:109BD000B0931F128B819D81AE81BC81809328122E -:109BE00090932912A0932A12B0932B12832D922DB9 -:109BF000A981BA818093241290932512A0932612F2 -:109C0000B093271222965FAD22975093A81110921D -:109C100000121092FF1189AD9AADABADBCAD80932F -:109C20000B1290930C12A0930D12B0930E12249667 -:109C30009FAD2497909381118DAD9EADAFAD2196D0 -:109C4000BFAD21978093031290930412A093051245 -:109C5000B09306122DA13EA14FA158A52093071243 -:109C6000309308124093091250930A128DA99EA9AD -:109C7000AFA9B8AD80930F1290931012A093111258 -:109C8000B09312129BA59093FE112596AFAD259728 -:109C9000A0939E0EC35BDF4F0FB6F894DEBF0FBEDE -:109CA000CDBFDF91CF911F910F91FF90EF90DF908B -:109CB000CF90BF90AF909F908F907F906F905F906C -:109CC0004F903F902F900895CF93DF930E941630CE -:109CD0008BE2E1E0F2E1DF011D928A95E9F783E290 -:109CE000EBE7FEE0DF011D928A95E9F71092001282 -:109CF0001092FF11109283111092A81181E08093AD -:109D0000FE1110927A0E0E94972F81B39091790ED6 -:109D10009170C92FB0E0DB2F96E0CC0FDD1F9A9534 -:109D2000E1F78F7BC82BC1BBEBE0F1E09081809124 -:109D3000790E8270880F880F977F892B808381B37B -:109D40009091790E92FB992790F98E7F892B81BB98 -:109D50008091780E80FD8F9A80FF8F9880819091FE -:109D6000780E92708D7F892B808321B39091780E2D -:109D70009470892F90E095958795922F9D7F892BE0 -:109D800081BBDF91CF910895CF93DF93C62F8130B0 -:109D900009F48EC038F1823009F069C10E94713C2B -:109DA0008CE60E94013C0E944B3C8C2F0E94013C9F -:109DB0000E944B3C0E94713C8DE60E94013C0E9437 -:109DC0004B3C62E070E080E090E00E94C224559A33 -:109DD0005D9A62E070E080E090E00E94C224D8E0EA -:109DE000C0E002C10E94E63D8CE60E94763D0E94E2 -:109DF000C03D8C2F0E94763D0E94C03D0E94E63DF2 -:109E00008DE60E94763D0E94C03D62E070E080E0F9 -:109E100090E00E94C224399A419A62E070E080E0AA -:109E200090E00E94C224D8E0C0E0439865E070E072 -:109E300080E090E00E94C224439ACC0F65E070E07D -:109E400080E090E00E94C22439983199C16065E0B9 -:109E500070E080E090E00E94C224D15031F7439836 -:109E6000399A419A62E070E080E090E00E94C2245A -:109E7000439A65E070E080E090E00E94C22443983D -:109E800062E070E080E090E00E94C224399A419A3A -:109E900062E070E080E090E00E94C224439862E0BB -:109EA00070E080E090E00E94C2240E94A83DE0C0E3 -:109EB0000E94443D8CE60E94893C0E94093D8C2F03 -:109EC0000E94893C0E94093D0E94443D8DE60E940B -:109ED000893C0E94093D62E070E080E090E00E94D1 -:109EE000C22480910101846080930101809102016C -:109EF00084608093020162E070E080E090E00E9464 -:109F0000C224D8E0C0E0809102018F7780930201E3 -:109F100065E070E080E090E00E94C2248091020140 -:109F2000806880930201CC0F65E070E080E090E0F3 -:109F30000E94C224809101018B7F80930101809156 -:109F4000000182FDC16065E070E080E090E00E9469 -:109F5000C224D150C1F6809102018F778093020113 -:109F600080910101846080930101809102018460ED -:109F70008093020162E070E080E090E00E94C224E1 -:109F80008091020180688093020165E070E080E0CA -:109F900090E00E94C224809102018F778093020199 -:109FA00062E070E080E090E00E94C22480910101B4 -:109FB000846080930101809102018460809302019A -:109FC00062E070E080E090E00E94C2248091020193 -:109FD0008F778093020162E070E080E090E00E9461 -:109FE000C2240E94D73C44C05E9865E070E080E0E7 -:109FF00090E00E94C2245E9ACC0F65E070E080E0A1 -:10A0000090E00E94C22455984D99C16065E070E0CF -:10A0100080E090E00E94C224D15031F75E98559ABA -:10A020005D9A62E070E080E090E00E94C2245E9A57 -:10A0300065E070E080E090E00E94C2245E9862E0FB -:10A0400070E080E090E00E94C224559A5D9A62E040 -:10A0500070E080E090E00E94C2245E9862E070E0D0 -:10A0600080E090E00E94C2240E94333C01C0C0E026 -:10A070008C2FDF91CF910895EAE8F2E124813581B8 -:10A08000DC010E94C76EA1E0B1E02C9128602C9306 -:10A09000A0EAB0E02C9120682C93DC01CB012AE0EF -:10A0A000B695A795979587952A95D1F79093A9008E -:10A0B0008093A800868180618093A1000895CF934A -:10A0C000DF9321E5829FC0011124EC01D55F40E5BB -:10A0D00050E0BE018AE392E10E949A58892B51F424 -:10A0E00010923A1240E550E06AE372E1CE01DFD708 -:10A0F00080E001C081E0DF91CF91089590E0FC0104 -:10A100003197E231F10508F04EC08827E654FF4F41 -:10A110008F4F0C94BF6E809180008F7703C0809129 -:10A1200080008F7D80938000089580918000877FDC -:10A13000F9CF84B58F7702C084B58F7D84BD089533 -:10A140008091B0008F7703C08091B0008F7D8093A5 -:10A15000B0000895809190008F7707C080919000A3 -:10A160008F7D03C080919000877F80939000089539 -:10A170008091A0008F7707C08091A0008F7D03C0E1 -:10A180008091A000877F8093A00008958091200196 -:10A190008F7707C0809120018F7D03C080912001BF -:10A1A000877F8093200108951F93CF93DF93282FFB -:10A1B00030E0F901EA57F54F8491F901E05CF54F81 -:10A1C000D491F901E650F64FC491CC23B9F0162F83 -:10A1D000811194DFEC2FF0E0EE0FFF1FE052F64FFD -:10A1E000A591B4919FB7F894111104C08C91D095AA -:10A1F000D82302C0EC91DE2BDC939FBFDF91CF917F -:10A200001F910895863308F0865390917B00282F84 -:10A210002870977F922B90937B0087708064809347 -:10A220007C0080917A00806480937A0080917A002B -:10A2300086FDFCCF809178002091790090E0922BF0 -:10A2400008951F920F920FB60F9211240BB60F9222 -:10A250002F933F934F935F936F937F938F939F932E -:10A26000AF93BF93EF93FF93809135129091361285 -:10A270009093250180932401E0913312F0913412E0 -:10A28000309709F01995FF91EF91BF91AF919F9190 -:10A290008F917F916F915F914F913F912F910F908F -:10A2A0000BBE0F900FBE0F901F9018951F920F922C -:10A2B0000FB60F9211240BB60F922F933F934F932B -:10A2C0005F936F937F938F939F93AF93BF93EF931E -:10A2D000FF9380918C1290918D129093A5008093A2 -:10A2E000A400E0918A12F0918B12309709F0199531 -:10A2F000FF91EF91BF91AF919F918F917F916F915E -:10A300005F914F913F912F910F900BBE0F900FBE19 -:10A310000F901F901895E2E7F0E080818E7F808398 -:10A3200008951F920F920FB60F9211248F939F934F -:10A330008091080290910902909395008093940077 -:10A340009F918F910F900FBE0F901F9018951F92A5 -:10A350000F920FB60F9211240BB60F922F933F93CB -:10A360004F935F936F937F938F939F93AF93BF931D -:10A37000EF93FF9380912E1290912F128093B20051 -:10A38000E0912C12F0912D12309709F01995FF9160 -:10A39000EF91BF91AF919F918F917F916F915F915D -:10A3A0004F913F912F910F900BBE0F900FBE0F90CA -:10A3B0001F9018958091911284FD25C09FB7F89445 -:10A3C000809191128061809391129FBF0E94DC3234 -:10A3D000F3D68091E312982F9C7021F49091E412AF -:10A3E000913089F49FB7843029F4F8948091E11278 -:10A3F000806204C0F8948091E11288608093E11239 -:10A400009FBF0C94163008952F923F924F925F9207 -:10A410006F927F928F929F92AF92BF92CF92DF9274 -:10A42000EF92FF920F931F93CF93DF93CDB7DEB7D9 -:10A43000CB55D1090FB6F894DEBF0FBECDBF2A961B -:10A440008FAF2A971B012F962CAF3DAF4EAF5FAF5A -:10A450002F976C960FAF6C978091D01285FF51C0EB -:10A460003B0103E912E17B012CE0E20EF11CDD244B -:10A47000D394D3018D909D90AD90BD903D0120E08F -:10A4800030E0A901C501B4010E94716D181654F0A5 -:10A49000F80124A135A146A157A1C501B4010E942C -:10A4A000536B87FDD092E5128091E512882319F154 -:10A4B0008091E312883061F07DDF9FB7F89480913E -:10A4C000E11285608093E1129FBF0E940B2519C0A5 -:10A4D0009FB7F894809191128860809391129FBFEA -:10A4E0000E940B258091E21281110BC08091E31232 -:10A4F0008111F6CFE1CF0C5F1F4FE614F70409F08E -:10A50000B8CF8091E312823009F4DAC2F101808180 -:10A510009181A281B38129968CAF9DAFAEAFBFAFC1 -:10A52000299784819581A681B78125968CAF9DAFAF -:10A53000AEAFBFAF259780859185A285B385219663 -:10A540008CAF9DAFAEAFBFAF2197AE01435C5F4F05 -:10A55000BE016F5B7F4FCE018B5B9F4F0E94FE3D24 -:10A560002196ECACFDAC0EAD1FAD219725962CAD20 -:10A570003DAD4EAD5FAD259729966CAD7DAD8EADF1 -:10A580009FAD2997DE0191964D01FE017D965F01F9 -:10A5900018976D010E94A03FE9A0FAA00BA11CA191 -:10A5A0002D8D3E8D4F8D58A1698D7A8D8B8D9C8D13 -:10A5B0000E94B842882309F47FC26091280D7091EF -:10A5C000290D80912A0D90912B0D0E94F56B2B0186 -:10A5D0003C016091240D7091250D8091260D909184 -:10A5E000270D0E94F56B63966CAF7DAF8EAF9FAF6A -:10A5F00063976091200D7091210D8091220D9091B3 -:10A60000230D0E94F56BFE01BD964F019E01275D53 -:10A610003F4F5901DE0195966D01830172016396EA -:10A620002CAD3DAD4EAD5FAD63970E94523FA4018E -:10A63000B501C6010E94A93E0E94CC372A96BFAD43 -:10A640002A97BB2319F0B13041F0DDC0E1E0F0E022 -:10A650002B96FFAFEEAF2B97DAC020E030E048EC4E -:10A6600052E42F966CAD7DAD8EAD9FAD2F970E94BD -:10A67000716D181654F480E090E0A8ECB2E42F96C7 -:10A680008CAF9DAFAEAFBFAF2F972DA13EA14FA115 -:10A6900058A5D1016D917D918D919C910E94796A0F -:10A6A0002B013C0129A53AA54BA55CA5F1016481CC -:10A6B0007581868197810E94796A4B015C012DA585 -:10A6C0003EA54FA558A9D10118966D917D918D9108 -:10A6D0009C911B970E94796A6B017C01A3019201F6 -:10A6E000C301B2010E94AC6D2B013C01A501940194 -:10A6F000C501B4010E94AC6D9B01AC01C301B20164 -:10A700000E947A6A4B015C01A7019601C701B6015C -:10A710000E94AC6D9B01AC01C501B4010E947A6A34 -:10A720000E94196E20E030E040EF51E40E94AC6DD1 -:10A730002F962CAD3DAD4EAD5FAD2F970E945A6B5D -:10A740000E94C76B2B967FAF6EAF2B976A30710557 -:10A7500030F42AE030E02B963FAF2EAF2B9720E06D -:10A7600030E040E950E42F966CAD7DAD8EAD9FADED -:10A770002F970E94AC6D20E030E048EC52E40E943C -:10A780005A6B20E030E040E05FE30E947A6A20E00C -:10A7900030E040E752E40E94AC6D20E030E040E75A -:10A7A00052E40E94AC6D6B017C016093AB1270931C -:10A7B000AC128093AD129093AE126093AF1270936F -:10A7C000B0128093B1129093B21220E030E442E9CB -:10A7D00055E40E94716D87FF09C0C092B312D092F8 -:10A7E000B412E092B512F092B61211C080E090E47B -:10A7F000A2E9B5E48093B3129093B412A093B5127A -:10A80000B093B61204C02B961FAE1EAE2B972B969C -:10A81000AEADBFAD2B97BD0180E090E00E94F36B21 -:10A820006B017C012DA13EA14FA158A5F1016081D2 -:10A830007181828193810E94796AA70196010E94A9 -:10A840005A6B63966CAF7DAF8EAF9FAF639729A5B0 -:10A850003AA54BA55CA5D10114966D917D918D9182 -:10A860009C9117970E94796AA70196010E945A6BE2 -:10A8700067966CAF7DAF8EAF9FAF67972DA53EA556 -:10A880004FA558A9F10160857185828593850E9445 -:10A89000796AA70196010E945A6B6B966CAF7DAFE7 -:10A8A0008EAF9FAF6B9722242394312C2B96EEAD65 -:10A8B000FFAD2B97E215F30508F4FCC0B101032CA2 -:10A8C000000C880B990B0E94F56B6B017C019B01BE -:10A8D000AC0163966CAD7DAD8EAD9FAD63970E946C -:10A8E000AC6D9B01AC016DA17EA18FA198A50E94CA -:10A8F0007A6A6D877E878F87988BA7019601679606 -:10A900006CAD7DAD8EAD9FAD67970E94AC6D9B0128 -:10A91000AC0169A57AA58BA59CA50E947A6A698B72 -:10A920007A8B8B8B9C8BA70196016B966CAD7DAD62 -:10A930008EAD9FAD6B970E94AC6D9B01AC016DA578 -:10A940007EA58FA598A90E947A6A6D8B7E8B8F8BCE -:10A95000988FAE014B5E5F4FBE016F5E7F4FCE01A1 -:10A960000D960E94FE3D6D857E858F85988960934A -:10A970002C0D70932D0D80932E0D90932F0D298902 -:10A980003A894B895C892093300D3093310D409387 -:10A99000320D5093330DED88FE880F89188DE092AB -:10A9A000340DF092350D0093360D1093370DDE0106 -:10A9B000D1964D01FE01F5965F0118966D010E943A -:10A9C000A03FC9A8DAA8EBA8FCA88DA89EA8AFA8AC -:10A9D000B8AC2091140D3091150D4091160D509189 -:10A9E000170D69AD7AAD8BAD9CAD0E94796A20E000 -:10A9F00030E040EA52E40E94AC6D0E94C26B072E28 -:10AA0000000C880B990B0E94F56B69837A838B830A -:10AA10009C832091180D3091190D40911A0D509181 -:10AA20001B0DC501B4010E94796A20E030E040EAC4 -:10AA300052E40E94AC6D0E94C26B072E000C880B82 -:10AA4000990B0E94F56B6D837E838F83988720918D -:10AA50001C0D30911D0D40911E0D50911F0DC70111 -:10AA6000B6010E94796A20E030E044EB52E40E9493 -:10AA70007A6A20E030E040EA52E40E94AC6D0E9425 -:10AA8000C26B072E000C880B990B0E94F56B69872F -:10AA90007A878B879C870E940B258091E212811117 -:10AAA0000DC0909181118091B30C98130AC00E943F -:10AAB0007938F1CF80E079C083E377C082E075C058 -:10AAC00074C089809A80AB80BC80C501B4010E94AB -:10AAD000C26B6093200D7093210D8093220D909393 -:10AAE000230DCD80DE80EF80F884C701B6010E947F -:10AAF000C26B6093240D7093250D8093260D909367 -:10AB0000270D49845A846B847C84C301B2010E945E -:10AB1000C26B6093280D7093290D80932A0D90933A -:10AB20002B0D2091931230919412409195125091D7 -:10AB30009612C501B4010E945A6B69837A838B8394 -:10AB40009C832091971230919812409199125091C4 -:10AB50009A12C701B6010E945A6B6D837E838F8360 -:10AB6000988720919B1230919C1240919D12509198 -:10AB70009E12C301B2010E945A6B69877A878B8744 -:10AB80009C876C962FAD6C972F964CAD5DAD6EADDE -:10AB90007FAD2F97CE0101960E948321F1E0F093C3 -:10ABA0003C0D2FEF221A320A81CEC55ADF4F0FB665 -:10ABB000F894DEBF0FBECDBFDF91CF911F910F91F3 -:10ABC000FF90EF90DF90CF90BF90AF909F908F90CD -:10ABD0007F906F905F904F903F902F9008951F92BD -:10ABE0000F920FB60F9211240BB60F922F933F9333 -:10ABF0004F935F936F937F938F939F93AF93BF9385 -:10AC0000EF93FF938091E312813069F08091E1121C -:10AC1000811109C0CFDB9FB7F8948091E112836066 -:10AC20008093E1129FBFFF91EF91BF91AF919F91F0 -:10AC30008F917F916F915F914F913F912F910F90E5 -:10AC40000BBE0F900FBE0F901F90189589B18071A9 -:10AC50009091D01296FD02C090E18927882319F0C7 -:10AC600011F087E0089580E008952F923F924F926F -:10AC70005F926F927F928F929F92AF92BF92CF928C -:10AC8000DF92EF92FF920F931F93CF93DF93CDB795 -:10AC9000DEB768970FB6F894DEBF0FBECDBF9091B8 -:10ACA000E2129111A6C1782E23E932E1398B288B6B -:10ACB0005901CE010D964C0100E010E0C12CD12CC1 -:10ACC0007601A72DB0E0BD8BAC8B802F002321F047 -:10ACD000013021F094E003C091E001C092E0F40162 -:10ACE00091934F012C893D8902C0359527958A950E -:10ACF000E2F720FF1BC020E030E040EC5FEBD50125 -:10AD000094966D917D918D919C9197970E94AC6DD9 -:10AD1000362E472E582E692EA70196010E94536B9E -:10AD200087FD04C0C32CD42CE52CF62C0F5F1F4FDD -:10AD3000B4E0AB0EB11C0330110539F68090D61289 -:10AD40009090D712A090D812B090D91284E0682EBB -:10AD500001E066EE72E1CE0101960E94DF4480912F -:10AD6000D112E82FF0E0FF8BEE8BFE01319622EE40 -:10AD700032E13B8B2A8B1901CE010D962C0180E02C -:10AD800090E0188E10E0B701A60170582C893D891B -:10AD9000082E02C0359527950A94E2F720FF25C0BA -:10ADA000A88DAF5FA88FD10114961D921D921D92A0 -:10ADB0001C9217972E893F89082E02C0359527953A -:10ADC0000A94E2F720FF03C0002319F007C0002314 -:10ADD00029F0C082D182E282F38204C04083518391 -:10ADE00062837383D2012C91122B0196BFEF4B1A11 -:10ADF0005B0A349624E0220E311C8330910531F633 -:10AE0000388D632F70E080E090E00E94F36B0E9429 -:10AE1000196E9B01AC01C501B4010E94AC6D6B01C0 -:10AE20007C011093FF120E94142020E0B701A601BC -:10AE3000CE0101960E9483210E946C450E94B0328F -:10AE40000023E1F003DFFE013D9620E030E090E0DA -:10AE50006191462F412359F0AC01022E02C0559555 -:10AE600047950A94E2F740FF02C0609516232F5FD2 -:10AE70003F4F2330310561F71093FF120E946C455C -:10AE8000809191128473B1F080919112807321F0BE -:10AE900091DA0E940B25ADC00111A6C0D7DE872133 -:10AEA000B9F79FB7F894809191128B7F809391129C -:10AEB0009FBF04C0812F877009F0C2CF0E94644EEB -:10AEC0000E9425208091DA129091DB120E940025C9 -:10AED00081E00827C9F020E030E040EA50E46091CA -:10AEE000DC127091DD128091DE129091DF120E94CF -:10AEF000AC6D6B017C018090D2129090D312A09027 -:10AF0000D412B090D51210C0C090DC12D090DD12D7 -:10AF1000E090DE12F090DF128090D6129090D7125F -:10AF2000A090D812B090D9126A94611012CFE0901C -:10AF3000D112F12C8090DC129090DD12A090DE12E4 -:10AF4000B090DF122401350177FA709477F870948D -:10AF500000E010E08C899D89002E02C095958795B0 -:10AF60000A94E2F780FF2CC0C701002E02C095951D -:10AF700087950A94E2F7A889B98980FF11C0949651 -:10AF80002D913D914D915C919797C501B4010E941F -:10AF90007A6AE889F989208131814281538106C02A -:10AFA0002D913D914D915C91C301B2010E94AC6D18 -:10AFB0000E947C6DEA89FB8964837583868397830D -:10AFC0000F5F1F4F2A893B892C5F3F4F3B8B2A8B9A -:10AFD000888999890496998B888B0330110509F02B -:10AFE000B9CF0E94142005C08091911282FF59CFE1 -:10AFF0004FCF68960FB6F894DEBF0FBECDBFDF917E -:10B00000CF911F910F91FF90EF90DF90CF90BF9065 -:10B01000AF909F908F907F906F905F904F903F90F8 -:10B020002F900895EBE6F0E080818F7E8083E8E644 -:10B03000F0E080818E7F8083089554985C9A80919F -:10B04000D01283FF0BC080916B00806180936B00F6 -:10B05000809168008160809368000895E3CF66EE78 -:10B0600072E180E593E10C94DF44F894F999FECF06 -:10B0700092BD81BD81E08FBB80B58627482F082E09 -:10B08000000C550B262F30E024233523232B39F0D9 -:10B090006F3F19F060BD84E006C084E104C08823DE -:10B0A00021F060BD84E28FBBF99A789408959F9255 -:10B0B000AF92BF92CF92DF92EF92FF920F931F93C6 -:10B0C000CF93DF935C018A017B01E40EF51EEB0157 -:10B0D000912C6C01C61AD70ACE018C0D9D1DCE1580 -:10B0E000DF0581F0911008C0292D990C330B232F17 -:10B0F000221F2227221F01C021E06991922E960E65 -:10B10000B4DFEACF692DC501800F911FDF91CF9188 -:10B110001F910F91FF90EF90DF90CF90BF90AF9075 -:10B120009F90A3CFF999FECF92BD81BD81E08FBBE7 -:10B1300080B508959F92AF92BF92CF92DF92EF9227 -:10B14000FF920F931F93CF93DF935B018A017C01E2 -:10B15000E40EF51EEC01912C6B01C81AD90AC60148 -:10B160008C0F9D1FCE15DF0581F0DCDF911008C02C -:10B17000292D990C330B232F221F2227221F01C0B8 -:10B1800021E0982E920E8993EACFC501800F911F7E -:10B19000C9DF21E030E0981611F020E030E0C9016D -:10B1A000DF91CF911F910F91FF90EF90DF90CF90A3 -:10B1B000BF90AF909F9008955C980895CF93DF93D0 -:10B1C000CDB7DEB7CC56D1090FB6F894DEBF0FBEAF -:10B1D000CDBF8091C00082608093C0001092C500F6 -:10B1E00080E18093C4009091C10090619093C10070 -:10B1F0009091C10098609093C1009091C1009068B7 -:10B200009093C1009091C80092609093C8001092F2 -:10B21000CD008093CC009091C90090619093C900BB -:10B220009091C90098609093C9009091C90090686E -:10B230009093C9009091D00092609093D0001092AA -:10B24000D5008093D4008091D10080618093D1009B -:10B250008091D10088608093D1008091D100806876 -:10B260008093D1000E94CC37869A879A829A8091E7 -:10B270000A01886080930A0180910A0182608093AC -:10B280000A0180910701816080930701809A819A69 -:10B29000579A80910701806180930701809107018F -:10B2A0008860809307018091070184608093070183 -:10B2B0008091080180618093080180910801877F57 -:10B2C0008093080180910801846080930801809137 -:10B2D000D01282FF08C08A9A809108018160809311 -:10B2E00008015F9A07C08A98809108018E7F809339 -:10B2F00008015F98809181008F7E8093810080910A -:10B300008100886080938100809180008C7F809391 -:10B310008000809180008F708093800080916E000B -:10B32000887F80936E0014BC15BC80916E00816094 -:10B3300080936E0054985C9A80916D008061809338 -:10B340006D00809168008460809368008AE090E0DE -:10B350000E9400250E94F839399A3B9A419A439AF3 -:10B3600080910101846080930101809101018068D6 -:10B370008093010180910201846080930201809199 -:10B380000201806880930201559A569A5D9A5E9AEE -:10B390000E94524380E090E00E94EE436093140DBF -:10B3A0007093150D8093160D9093170D81E090E02A -:10B3B0000E94EE436093180D7093190D80931A0D3F -:10B3C00090931B0D82E090E00E94EE4360931C0D71 -:10B3D00070931D0D80931E0D90931F0D20E030E0A3 -:10B3E0004AE754E464E071E080E090E00E94773A3C -:10B3F00084E893E097DE8093060D85E893E092DE83 -:10B400008093070D08E01DE088E993E07C012FEFB1 -:10B41000E21AF20A87DED8018D938D01C701BCE9DB -:10B42000EB16B3E0FB0691F70CE01DE08EE893E02D -:10B430007C01EFEFEE1AFE0A75DED8018D938D01C7 -:10B44000C701B2E9EB16B3E0FB0691F700E11DE09E -:10B4500082E89CE07C01EFEFEE1AFE0A63DED80181 -:10B460008D938D01C701B6E8EB16BCE0FB0691F7A2 -:10B47000C090100DD090110DE090120DF090130DB2 -:10B4800020E030E044EB53E4C701B6010E94716D47 -:10B49000181644F0A7019601C701B6010E94616E1B -:10B4A000882341F01092100D1092110D1092120D80 -:10B4B0001092130D0EE314E08AEE93E07C01EFEF9F -:10B4C000EE1AFE0A2FDED8018D938D01C701B6EF6B -:10B4D000EB16B3E0FB0691F76091100D7091110D22 -:10B4E0008091120D9091130DFE0131967F018F0115 -:10B4F00024E045E00E94FE67FF92EF9281EE92E029 -:10B500009F938F930E949D1F0E94F3390E94F039F0 -:10B510000E94DF390E94BC3B20E030E044EB52E463 -:10B5200060911C0D70911D0D80911E0D90911F0D4D -:10B530000E94796A7B018C012091180D3091190DC0 -:10B5400040911A0D50911B0D6091140D7091150DC5 -:10B550008091160D9091170DE4E38E2EEDE09E2E56 -:10B56000F0E3AF2EFDE0BF2EACE2CA2EADE0DA2E46 -:10B570000E9456418091E6129091E712A091E81244 -:10B58000B091E9128093200D9093210DA093220D8C -:10B59000B093230D8091EA129091EB12A091EC12DE -:10B5A000B091ED128093240D9093250DA093260D5C -:10B5B000B093270D8091EE129091EF12A091F012AE -:10B5C000B091F1128093280D9093290DA0932A0D2C -:10B5D000B0932B0D80917A00876880937A009B98B6 -:10B5E000A39A8FE08093380D0E94E33A8FE992E0AE -:10B5F0009F938F9383EF92E09F938F930E949D1F61 -:10B6000086EA92E09F938F9383E093E09F938F93DA -:10B610000E949D1F8091070D8F938091060D8F933F -:10B6200082E193E09F938F930E949D1F83E293E0BA -:10B630000E9408208EE1E2EEF2E1DF011D928A9580 -:10B64000E9F781E08093E21278949091D0120FB6DE -:10B65000F894DEBF0FBECDBF94FD8093E3129E0130 -:10B66000235C3F4F6F963FAF2EAF6F971E0135E1C2 -:10B67000230E311CCE018996A1969FAF8EAFA19764 -:10B68000DE011196A396BFAFAEAFA3978091D90DFF -:10B690008093D80D8FE3E9E3F3E1DF011D928A95F2 -:10B6A000E9F76CE573E180E00E945134811103C039 -:10B6B00087E00E946C370C9A549A549A0E94DC32AC -:10B6C000549A7ADDBADC54985C9A0E9425200E9434 -:10B6D000644E0E941420C3DC1092E2121092911268 -:10B6E0001092E1121092E4121092E5128091E3128E -:10B6F000813099F48CEB98E00E94F91F86E998E07C -:10B700000E94F91F89E498E00E94F91FA4961FAED9 -:10B71000A497A5961FAEA5973DC01092E312F6CF51 -:10B720008091060185FD20C00E948B5110923D0D35 -:10B73000809102018F7D809302018091100D909184 -:10B74000110DA091120DB091130DB0588093620E9F -:10B750009093630EA093640EB093650E60E070E06A -:10B7600084EB92E40E94183B80915E0E90915F0EF4 -:10B77000A091600EB091610E892B8A2B8B2B51F416 -:10B7800010923D0DE7E2F3E0FF93EF930E949D1FBF -:10B790000F900F9080913D0D8823E1F0C1CFE92FEC -:10B7A000F0E0E85AF24F80819F5F903809F490E012 -:10B7B0009093D80D8F3F09F473C58A3091F08D3086 -:10B7C00081F0A596BFADA597BB2309F435C5893295 -:10B7D00009F42BC59091D80D8091D90D9813DFCF26 -:10B7E0005FC50AE312E1A4963FADA497E32FF0E012 -:10B7F000E65CFD4E10820E940B258091E2128111C1 -:10B800000DC58AE0D1011D928A95E9F780913A121F -:10B81000843209F076C481E08DAF80913B1283348D -:10B8200081F034F4882351F0843209F06FC209C0EA -:10B83000873439F0883509F069C203C088E696E09C -:10B8400054C390913C1291114EC4833409F42DC21B -:10B850001CF4843241F04DC4873409F46AC1883540 -:10B8600009F440C246C48091E312887109F03DC4D6 -:10B8700084E696E00E94F91F8091C3120E94EB1F9C -:10B880008BE496E00E94F91F8091C6120E94EB1F84 -:10B890008DE296E00E94F91F8091C4120E94EB1F76 -:10B8A00084E196E00E94F91F8091C4120E94F61F65 -:10B8B0008DE096E00E94F91F8091C5120E94EB1F57 -:10B8C00085EF95E00E94F91F8091C5120E94F61F36 -:10B8D0008EEE95E00E94F91F8091D01282FB88279E -:10B8E00080F90E94EB1F8DEC95E00E94F91F80917A -:10B8F000D01286FB882780F90E94EB1F8DEA95E025 -:10B900000E94F91F8091D012881F8827881F0E94EB -:10B91000EB1F8DE895E00E94F91F8091C7120E94ED -:10B92000EB1F87E795E00E94F91F8091C7120E94E4 -:10B93000F61F8FE695E00E94F91F6091C812709182 -:10B94000C9128091CA129091CB120E94CD1F8FE430 -:10B9500095E00E94F91F6091CC127091CD128091F8 -:10B96000CE129091CF120E94CD1F84E395E00E94E9 -:10B97000F91F8091D01281700E94EB1F87E195E042 -:10B980000E94F91F8091D01285FB882780F90E94C0 -:10B99000EB1F8CEF94E00E94F91F8091D01283FB83 -:10B9A000882780F90E94EB1F81EE94E00E94F91F26 -:10B9B0008091D012829581700E94EB1F85EC94E0FB -:10B9C0000E94F91F8091D1120E94EB1F8BEA94E034 -:10B9D0000E94F91F8091D1120E94F61F83EA94E021 -:10B9E0000E94F91F6091D2127091D3128091D412EB -:10B9F0009091D5120E94CD1F86E894E00E94F91F15 -:10BA00006091D6127091D7128091D8129091D9126C -:10BA10000E94CD1F89E694E00E94F91F8091DA12FE -:10BA20000E94EB1F8AE494E00E94F91F6091DC12EF -:10BA30007091DD128091DE129091DF120E94CD1F75 -:10BA400081E394E00E94F91F10E034E6D32E23E94D -:10BA5000E22E22E1F22E00E08FE294E00E94F91F34 -:10BA60008D2D800F0E94EB1F8DE294E00E94F91F44 -:10BA7000123091F01330E1F0113031F0F7016081B4 -:10BA80007181828193811CC0D7011C966D917D913B -:10BA90008D919C911F9714C020E030E041E655E461 -:10BAA000F701608D718D828D938D0E945A6B08C055 -:10BAB000F70184A195A1A6A1B7A1BC01CD01905821 -:10BAC0000E94CD1F8AE294E00E94F91F013029F004 -:10BAD000023031F088E294E005C086E294E002C0D2 -:10BAE00084E294E00E94F91F123051F0133059F0B3 -:10BAF000113019F08AE194E008C088E094E005C0B4 -:10BB000087EF93E002C087EE93E00E94F91F83EE77 -:10BB100093E00E94F91F0F5FF4E0EF0EF11C033079 -:10BB200009F09ACF2AE0D20E1F5F3CE8D3128FCFE4 -:10BB3000E0C281EE93E00E94F91F809139138230B8 -:10BB400091F038F4882361F08130A9F48BED93E013 -:10BB50000CC0833069F0883071F481ED93E005C04A -:10BB60008EED93E002C088ED93E00E94F91F0CC0B7 -:10BB700085ED93E0FACF8CEC93E00E94F91F809161 -:10BB8000391382500E94EB1F89EC93E00E94F91F49 -:10BB900080913F138A5C0E94EB1F80913D1381309E -:10BBA00049F028F0823051F48AEB93E005C084EC30 -:10BBB00093E002C08FEB93E00E94F91F80913B134A -:10BBC000811103C085EB93E002C080EB93E00E94FB -:10BBD000F91F80913C13811103C08BEA93E002C0EE -:10BBE00086EA93E00E94F91F80913A13813019F49C -:10BBF00081EA93E002C08CE993E00E94F91F8091F2 -:10BC00004013813049F028F0823051F480E993E00C -:10BC100005C088E993E002C084E993E00E94F91F1F -:10BC200080914213813031F040F0823051F488E845 -:10BC300093E005C08CE893E002C084E893E00E94A2 -:10BC4000F91F80914113882329F0823039F48CE761 -:10BC500093E002C080E893E00E94F91F89E793E037 -:10BC60000E94F91F80914B130E94EB1F86E793E01F -:10BC70000E94F91F609147137091481380914913F6 -:10BC800090914A130E94CF1F83E793E00E94F91F0F -:10BC90006091431370914413809145139091461322 -:10BCA0000E94CF1F8FE693E020C18091E312823083 -:10BCB00049F40E94DA518CEB98E00E94F91F83E767 -:10BCC00098E00BC0811111C282E08093E3128CEBEB -:10BCD00098E00E94F91F8CE798E00E94F91F89E420 -:10BCE00098E003C18091E312813009F002C28CEB2D -:10BCF00098E00E94F91F84E898E00E94F91F89E407 -:10BD000098E00E94F91F1092E312F3C19091E312A0 -:10BD1000923008F0EAC1893409F4C5C034F48332A2 -:10BD200059F0883409F480C064C18E3409F436C1F6 -:10BD3000823509F4F9C05DC182E08DAF80913C127B -:10BD40008111D1C110E0BE016F5F7F4F812F0E9432 -:10BD50005134811104C087E00E946C37CAC18CE65F -:10BD600093E00E94F91F163029F0173041F486E65F -:10BD700093E002C089E693E00E94F91F04C086E3C5 -:10BD8000810F0E94EB1F84E693E00E94F91FCE0111 -:10BD900001967C0100E0D7016D917D918D919D917F -:10BDA0007D010E94DD1F023019F082E693E002C09F -:10BDB0008EE593E00E94F91F0F5F033061F71F5F6C -:10BDC000183009F688E593E00E94F91F98E6E92EFD -:10BDD00093E1F92E10E0F7016191719181919191B8 -:10BDE0007F010E94DD1F123019F086E593E002C04A -:10BDF00082E593E00E94F91F1F5F133061F78CE426 -:10BE000093E00E94F91F60917413709175138091F3 -:10BE10007613909177130E94DD1F88E493E00E94CF -:10BE2000F91F0E94333865C18091D01284FF59C137 -:10BE300084E08093E312F6D884E00E94355683E0D4 -:10BE40000E9435560E940B258091E212811102C09A -:10BE500006D9F3D88091E21281114BC11092E312FE -:10BE60000E94163010E0812F0E945F50811102C0A5 -:10BE700087E013C080913A12882389F08AE392E127 -:10BE80000E9408208AE392E10E948805811105C082 -:10BE90008BED99E00E94F91F02C00E946C371F5F72 -:10BEA000123009F726C182E08DAF80913C128111DA -:10BEB0001FC040E550E06EEA7BE08AE392E13AD9A8 -:10BEC000892B49F410923A1240E550E06AE372E19E -:10BED0008EEA9BE0ECD888E393E00E94F91F8AE3A6 -:10BEE00092E10E94082084E393E00E94F91F01C1BF -:10BEF00093E09DAF8D3309F0F6C083E0282F30E04A -:10BF0000F901E65CFD4E9081D901A95CBD4E9C9380 -:10BF10008F5F90819111F2CF8DAF40E550E06AE3E1 -:10BF200072E18EEA9BE0ABC082E08DAF80913C1263 -:10BF3000833509F0D8C083E08DAF80913D12843500 -:10BF400009F0D1C084E08DAF80913E128D3309F0AD -:10BF5000CAC0809140128111C6C085E08DAF80912A -:10BF60003F12843239F08A3239F0833209F0BBC093 -:10BF700082E003C081E001C08FEF0E9471348CEB3E -:10BF800098E00E94F91F8DE498E00E94F91F89E46F -:10BF900098E00E94F91F0E94DA51ABC082E08DAF99 -:10BFA00080913C12811121C010E0812F0E945F50CE -:10BFB000811104C087E00E946C3713C081E393E0D5 -:10BFC0000E94F91F812F0E94EB1F8FE293E00E94D5 -:10BFD000F91F8AE392E10E9408208CE293E00E941C -:10BFE000F91F1F5F123009F784C091117EC011E064 -:10BFF00001C010E0AE01475D5F4FBE01635C7F4F43 -:10C000008AE392E10E945E27811102C082E076C03D -:10C01000EDAD81E08E0F8DAFF0E0E65CFD4E9081DE -:10C020009D3309F060C0112361F1482F50E0282FA3 -:10C0300030E0D901A65CBD4E9C91241B350BF90163 -:10C04000E65CFD4E90838F5F9C919111F0CF8DAF98 -:10C050008AE392E10E948805811149C069A57AA509 -:10C060008BA59CA50E945A6E0E94C76BF1E56F9F3D -:10C07000C001112440E550E06AE372E1955F17D8F2 -:10C0800038C0AE014F5F5F4FBE01635C7F4F8AE3F4 -:10C0900092E10E945E27882309F4B8CFEDADF0E06D -:10C0A000E65CFD4E808181111EC089A49AA4ABA4D8 -:10C0B000BCA420E030E04FE753E4C501B4010E9486 -:10C0C000716D181684F0C980DA80EB80FC80C501A0 -:10C0D000B4010E94C76B862FB701A6010E944633A8 -:10C0E00006C085E00BC083E009C088E007C081116D -:10C0F00005C08BED99E00E94F91F90C00E946C373B -:10C100008DC08332D1F43F922F928FE393E09F93BF -:10C110008F931F930F930E94206FF10101900020D5 -:10C12000E9F7BF0162197309665C7D4E0F900F90AD -:10C130000F900F900F900F9009C0873429F08D3425 -:10C1400019F0803509F06AC06AE372E1DB018C9175 -:10C15000803509F58DE49CE00E94EB6E8D89882383 -:10C1600091F03F922F9287E493E09F938F9381E821 -:10C170009CE09F938F930E94F26E0F900F900F9010 -:10C180000F900F900F9082E3EAE3F2E1DF011D923E -:10C190008A95E9F743C080914D04843148F08BE4DF -:10C1A00093E09F938F930E949D1F0F900F9036C036 -:10C1B00000914B04B6E6B09F80011124C8018C5A4F -:10C1C0009B4F0E94EB6E8D89882391F03F922F92B6 -:10C1D00087E493E09F938F9308571B4F1F930F9310 -:10C1E0000E94F26E0F900F900F900F900F900F9093 -:10C1F00082E3EAE3F2E1DF011D928A95E9F780919B -:10C200004B04833120F48F5F80934B0402C0109263 -:10C210004B0480914D048F5F80934D04A4961FAE14 -:10C22000A497A5961FAEA5973BC0B13009F0D2CA1E -:10C23000A5961FAEA597CECA813208F4CBCA8F321D -:10C2400009F4C8CA883211F18B3329F1A496EFADF5 -:10C25000A497EF3438F08BE00E946C37A4961FAEA1 -:10C26000A497B8CAA496FFADA4972F2F30E04F2F04 -:10C270004F5F9FE9980FF901E65CFD4E9A3108F493 -:10C2800080528083A4964FAFA497A4CA21E0A596BC -:10C290002FAFA5979FCA32E0A5963FAFA5979ACA40 -:10C2A00080914D0C882399F08DE49CE00E948805D4 -:10C2B00080937F0C61E87CE00E94833981E0809369 -:10C2C000800C82E3ADE4BCE01D928A95E9F7809191 -:10C2D000390D811137C080914D04882399F1009167 -:10C2E0004C04B6E6B09F800111240C5A1B4FC801C4 -:10C2F0000E948805F80182ABF0904C04F6E6FF9DA1 -:10C3000080011124B80168577B4F0C5A1B4FD8018C -:10C31000D2968C910E94833981E0F80183AB82E34D -:10C32000D8011D928A95E9F7B2E1BF1520F0F39488 -:10C33000F0924C0402C010924C0480914D04815044 -:10C3400080934D040E9479380E940B258091E2125F -:10C3500081119CC98091800C882369F081E89CE060 -:10C360000E94082082E3E1E8FCE0DF011D928A954B -:10C37000E9F71092800C8091E312882309F4E6C05B -:10C3800080913A0D882309F410C110923A0D6D96F0 -:10C390001CAE1DAE1EAE1FAE6D9769961CAE1DAED7 -:10C3A0001EAE1FAE699765961CAE1DAE1EAE1FAECB -:10C3B000659784E16F96EEADFFAD6F97282F1192D0 -:10C3C0002A95E9F7A196AEADBFADA197E82F1D92D2 -:10C3D000EA95E9F7D101E82F1D92EA95E9F7A396CE -:10C3E000AEADBFADA3971D928A95E9F780E090E0CE -:10C3F0000E94EE43A9966CAF7DAF8EAF9FAFA99719 -:10C4000081E090E00E94EE43AD966CAF7DAF8EAFC1 -:10C410009FAFAD9782E090E00E94EE436B017C01FC -:10C4200020E030E040E05FE36091000270910102A3 -:10C4300080910202909103020E94796A20E030E02C -:10C4400040E05FE30E94AC6D20E030E044E353E461 -:10C450000E94AC6D9B01AC0160E070E084E393E46A -:10C460000E94796A2B013C0120E030E044EB52E469 -:10C47000C701B6010E94796AFE01EF5AFF4F4F01D2 -:10C480009E012B5A3F4F5901DE01A75ABF4F6D0144 -:10C490007B018C01AD962CAD3DAD4EAD5FADAD9742 -:10C4A000A9966CAD7DAD8EAD9FADA9970E9456410A -:10C4B000A401B501C6010E94A93E6D966CAD7DAD8B -:10C4C0008EAD9FAD6D978E01035C1F4F24E045E05C -:10C4D00095D569966CAD7DAD8EAD9FAD69970451D4 -:10C4E000110924E045E08AD565966CAD7DAD8EAD31 -:10C4F0009FAD6597810124E045E080D58E010F5FF7 -:10C500001F4F24E045E0C301B20178D51F930F937C -:10C510003F922F92A196FFADA197FF93A0962FADCA -:10C52000A0972F936F963FAD6F973F936E968FAD09 -:10C530006E978F938DE593E09F938F930E949D1F3D -:10C540000FB6F894DEBF0FBECDBF2FC004E110E0E0 -:10C5500082E3B82EA0904C0CB6E6BA9DC00111241F -:10C56000FC01EC5AFB4F7F0123A9222309F408CFD9 -:10C570009C0128573B4F6901C9010E940820D60140 -:10C58000EB2D1D92EA95E9F7D701D3961C92B2E103 -:10C59000BA1528F081E08A0D80934C0C02C01092ED -:10C5A0004C0C01501109B1F6EBCE82B301E083FBD4 -:10C5B000882780F98027909153048917D9F08AE061 -:10C5C00090E00E94002512B313FB112710F91027E9 -:10C5D00080915304181771F01F921F9381E793E025 -:10C5E0009F938F930E949D1F109353040F900F9061 -:10C5F0000F900F9080914F0490915004A09151049E -:10C60000B09152048F3F9105A105B10509F060F486 -:10C610000196A11DB11D80934F0490935004A093E7 -:10C620005104B093520424C010924F04109250044D -:10C6300010925104109252048BE30E94025111E0B7 -:10C640008536910508F410E080914E04181781F0AA -:10C650001F921F938CE793E09F938F930E949D1FDF -:10C6600010934E0410933E0D0F900F900F900F906B -:10C670008091E312811112C080913B0D882371F0EB -:10C6800080913C0D882351F084E893E09F938F9331 -:10C690000E949D1F10923C0D0F900F9080913F0DB6 -:10C6A000882309F477C88091E312811173C88091BF -:10C6B000380D8F3009F06EC880913E0D882309F443 -:10C6C00069C821961CAE1DAE1EAE1FAE219719A6DD -:10C6D0001AA61BA61CA61D8A1E8A1F8A188EE09009 -:10C6E000340DF090350D0091360D1091370D2091DD -:10C6F000300D3091310D4091320D5091330D6091DC -:10C700002C0D70912D0D80912E0D90912F0D4101CA -:10C71000FE01B9965F01DE01DD966D010E94A03F2A -:10C7200080E090E00E94EE434B015C0181E090E0EC -:10C730000E94EE436B017C0182E090E00E94EE4398 -:10C740002B013C01A501940121966CAD7DAD8EAD10 -:10C750009FAD2197CED69F7720E030E040E05FE3A9 -:10C760000E94716D18163CF1A701960169A57AA582 -:10C770008BA59CA5BED69F7720E030E040E05FE32C -:10C780000E94716D1816BCF0A30192016D897E891B -:10C790008F89988DAED620E030E044EB52E4AAD6E3 -:10C7A0009F7720E030E040E05FE30E94716D181653 -:10C7B00014F00C94CA5B8EE1E2EEF2E1DF011D920F -:10C7C0008A95E9F70E9414200E942F588092140D38 -:10C7D0009092150DA092160DB092170DC092180DE3 -:10C7E000D092190DE0921A0DF0921B0D40921C0D83 -:10C7F00050921D0D60921E0D70921F0D20E030E0D2 -:10C800004AE754E464E071E080E090E00E94773A07 -:10C810008091E6129091E712A091E812B091E9128E -:10C820008093200D9093210DA093220DB093230DA2 -:10C830008091EA129091EB12A091EC12B091ED125E -:10C840008093240D9093250DA093260DB093270D72 -:10C850008091EE129091EF12A091F012B091F1122E -:10C860008093280D9093290DA0932A0DB0932B0D42 -:10C870008CE0A396EEADFFADA39711928A95E9F7F0 -:10C8800080912C0D90912D0DA0912E0DB0912F0D1A -:10C8900089839A83AB83BC838091300D9091310D55 -:10C8A000A091320DB091330D8D839E83AF83B887F5 -:10C8B0008091340D9091350DA091360DB091370DCA -:10C8C00089879A87AB87BC87AE01475F5F4FBE0100 -:10C8D0006B5F7F4FCE0101960E94A93E00E020E0F1 -:10C8E00030E048E452E4BE016F5F7F4F80E00E9479 -:10C8F00004520C94CA5BCF930E947938C9E20E941B -:10C900000B258091E212811111C0809181119091CB -:10C910008211981739F0C89FC00111248156914F98 -:10C92000892B69F78091E312883049F3CF910895FC -:10C93000CF9320912D1330912E1340912F135091AE -:10C940003013609150137091511380915213909154 -:10C950005313A9D6811126C020913113309132137F -:10C9600040913313509134136091541370915513C7 -:10C97000809156139091571396D6811113C0C1E040 -:10C98000209135133091361340913713509138135D -:10C99000609158137091591380915A1390915B13C1 -:10C9A00082D68111C0E08C2FCF910895CF92DF9273 -:10C9B000EF92FF920F93CF93DF933091E3123230D7 -:10C9C00009F482C0C02FD22F042F6B017C0193DFAA -:10C9D0001092FE121092E0128091D01287FD03C0D7 -:10C9E00080E18093E012DD2331F09091E01280E14C -:10C9F00089278093E01289B180719091E0128917A4 -:10CA000051F09FB7F8948091E11280618093E11218 -:10CA10009FBF0E940B258091E212811155C0A70192 -:10CA200096016DE273E181E00E94045281E08093FF -:10CA300092129FB7F8948091911282608093911224 -:10CA40009FBF0E940B258091E21281113DC0809111 -:10CA5000E3128111F6CF809192128130A9F4CC2398 -:10CA600051F08CE0E6EEF2E1A2EFB2E101900D921E -:10CA70008A95E1F70CC09FB7F8948091E11280612C -:10CA80008093E1129FBF03C081E08093FE12109259 -:10CA900092120E940B258091E212811115C00E9412 -:10CAA000644E0E9425200E94142066EE72E18DE201 -:10CAB00093E10E94DF44DF91CF910F91FF90EF90BF -:10CAC000DF90CF900C943338DF91CF910F91FF908E -:10CAD000EF90DF90CF9008952F923F924F925F9208 -:10CAE0006F927F928F929F92AF92BF92CF92DF927E -:10CAF000EF92FF920F931F93CF93DF93CDB7DEB7E3 -:10CB0000E1970FB6F894DEBF0FBECDBF6D837E8375 -:10CB10008F8398872F87388B498B5A8B0D8BAD86E7 -:10CB20008B8A24E0E29E80011124C801805B9C4E28 -:10CB30009F8B8E8BD801A15FBC4EB98FA88F8D9033 -:10CB40009D90AD90BC90FC01208131814281538148 -:10CB5000C501B401CFD46A8F7B8F8C8F9D8FF4E099 -:10CB6000CF9E100111249101205B3C4E3F8F2E8FF0 -:10CB7000C101815F9C4E99A388A3DC01CD90DD901B -:10CB8000ED90FC90F9012081318142815381C701F0 -:10CB9000B601B0D46AA37BA38CA39DA32401350165 -:10CBA00077FA709477F87094D701C601B0588983EA -:10CBB0009A83AB83BC83F801E35DFC4E2A8D3B8DE9 -:10CBC0004C8D5D8D608171818281938192D44B0106 -:10CBD0005C01F101E35DFC4E2AA13BA14CA15DA1EA -:10CBE000608171818281938184D46B017C01A50174 -:10CBF0009401C301B201B0D769877A878B879C877C -:10CC0000A701960169817A818B819C81A5D79B01BF -:10CC1000AC0169857A858B859C856CD469877A8718 -:10CC20008B879C87A7019601C301B20195D76B0141 -:10CC30007C01A501940169817A818B819C818CD7CB -:10CC40009B01AC01C701B60154D429853A854B85B7 -:10CC50005C85C3D46B017C019B89992389F02DEB02 -:10CC600037E346E055EBC701B6013BD787FD1AC055 -:10CC70002BED3FE049EC50E4C701B6013AD410C0B7 -:10CC80002DEB37E346E055E3C701B6010CD5181686 -:10CC90004CF02BED3FE049EC50E4C701B6012AD43B -:10CCA0006B017C018090CC129090CD12A090CE129E -:10CCB000B090CF122D813E814F815885CA01B901B4 -:10CCC00019D4A501940115D4A501940145D7B1D774 -:10CCD0004B015C0120E030E040E05FE3C701B601BA -:10CCE0003BD72D813E814F81588536D79F77A5014F -:10CCF0009401E0D4B5D54BD57C8B6B8BDB01AB2B92 -:10CD000009F459C14B01A12CB12CBD89BB2371F091 -:10CD1000C501B40168D59B01AC016F85788989890B -:10CD20009A891AD76F87788B898B9A8BC501B40142 -:10CD30005AD54B015C019B01AC01C701B601BAD4C5 -:10CD40006D837E838F839887FD85E4E0FE9FC0011D -:10CD500011249C01205B3C4E3E872D87FC01E35D46 -:10CD6000FC4ED9012D913D914D915C916081718175 -:10CD700082819381BED3A50194019CD46EA77FA725 -:10CD800088AB99AB2D813E814F815885CA01B9018D -:10CD9000E3D69B01AC0160E070E080E090E4A9D3B1 -:10CDA0006B017C012BEA3AEA4AE25EE36D817E8107 -:10CDB0008F819885D1D64B015C0120E030E040E8BE -:10CDC00050E4C701B60196D39B01AC01C501B40183 -:10CDD000C3D669877A878B879C8720E030E040E064 -:10CDE0005FE3C701B601B8D66EA37FA388A799A752 -:10CDF00010E022242394312CEB89FC89E215F30501 -:10CE000009F4D9C01C3008F03AC029813A814B811D -:10CE10005C816EA17FA188A599A59ED66B017C013E -:10CE2000A301920169857A858B859C8595D6A7019A -:10CE3000960160D37B01082FD92EA30192016EA128 -:10CE40007FA188A599A588D64B015C0129813A81EB -:10CE50004B815C8169857A858B859C857DD69B011C -:10CE6000AC01C501B40145D32B013C011F5FC701D3 -:10CE7000A02FBD2D89839A83AB83BC835BC0B10196 -:10CE800080E090E0B0D42D813E814F81588564D6FA -:10CE90006B017C010CD469837A838B839C83C701EB -:10CEA000B601BDD64B015C01E88DF98DC080D18003 -:10CEB000E280F380F7FAF094F7F8F094A8A1B9A112 -:10CEC0008D919D910D90BC91A02D8AA79BA7ACA799 -:10CED000BDA7A701960169817A818B819C813CD68F -:10CEE0002B013C012AA53BA54CA55DA5C501B401BC -:10CEF00033D69B01AC01C301B201FCD22B013C0132 -:10CF0000A7019601C501B40127D66B017C012AA5B2 -:10CF10003BA54CA55DA569817A818B819C811CD63E -:10CF20009B01AC01C701B601E4D269837A838B838C -:10CF30009C8310E0A30192016A8D7B8D8C8D9D8D69 -:10CF4000D9D2EE89FF89608371838283938329819B -:10CF50003A814B815C816AA17BA18CA19DA1CAD23F -:10CF6000AE8DBF8D6D937D938D939C9313972EA55E -:10CF70003FA548A959A9ED85FE856081718182810F -:10CF80009381B8D2AD85BE856D937D938D939C932F -:10CF900013970D892F85388949895A8960E573E18E -:10CFA00081E00E9404528091E21281110EC0BFEF15 -:10CFB0002B1A3B0A21CF0D892F85388949895A8937 -:10CFC0006DE273E181E00E940452E1960FB6F8949D -:10CFD000DEBF0FBECDBFDF91CF911F910F91FF90AC -:10CFE000EF90DF90CF90BF90AF909F908F907F9009 -:10CFF0006F905F904F903F902F900895EF920F9316 -:10D000001F93CF93DF93E80147FD02C034E001C0D6 -:10D0100034E1042E000C550B57FF03C05195419588 -:10D020005109E32E022F242FAE0107D0CE01DF914C -:10D03000CF911F910F91EF9008958F929F92AF9291 -:10D04000BF92CF92DF92EF92FF920F931F93CF93F5 -:10D05000DF93CDB7DEB729970FB6F894DEBF0FBECA -:10D06000CDBF6A01122FB02E2BE3201720F0FF2432 -:10D07000F394F00E02C02CE3F22E0F2D27E0AE0148 -:10D080004F5F5F4F50D1BC014981842F897081303F -:10D0900031F0E1FC06C0E0FE06C090E205C09DE272 -:10D0A00003C09BE201C090E05E2D507143FF3CC085 -:10D0B000911102C083E001C084E0811718F4212F90 -:10D0C000281B01C020E051110BC0F601822F30E275 -:10D0D000882319F031938150FBCFC20ED11C20E080 -:10D0E000992329F0D6019C93F60131966F01C60170 -:10D0F0000396E2FE0AC03EE4D6013C9341E4119659 -:10D100004C93119712963C9306C03EE6F60130838D -:10D1100041E641833283FC01322F40E2332309F49C -:10D1200042C041933150FACF42FF44C0911102C036 -:10D1300083E001C084E0811718F4212F281B01C06F -:10D1400020E051110BC0F601822F30E2882319F044 -:10D1500031938150FBCFC20ED11C20E0992329F0DE -:10D16000D6019C93F60131966F01C6010396E2FE4B -:10D170000BC039E4D6013C933EE411963C931197E1 -:10D1800036E412963C9307C039E6F60130833EE65A -:10D19000318336E63283FC01322F40E2332319F02B -:10D1A00041933150FBCFFC01E20FF11D10828EEF55 -:10D1B0009FEFA6C021E030E0911102C020E030E0F6 -:10D1C000161617061CF4FB01319602C0E1E0F0E0F0 -:10D1D0002E0F3F1FBB2021F0EB2DF0E0319602C057 -:10D1E000E0E0F0E02E0F3F1FE12FF0E02E173F07A9 -:10D1F0001CF4121B212F01C020E08E2D887159F4E0 -:10D20000F601822F30E2882319F031938150FBCF51 -:10D21000C20ED11C20E0992329F0D6019C93F6017F -:10D2200031966F0151110BC0F601822F90E38823D4 -:10D2300019F091938150FBCFC20ED11C20E00F2D2D -:10D24000060F9A81342F307144FF03C0913309F4E3 -:10D250000150101624F4093018F008E001C001E074 -:10D26000AB0177FF02C040E050E0FB01E41BF50B8F -:10D27000A1E0B0E0AC0FBD1FEA0FFB1F8EE2A82EAD -:10D280004B01801A91080B2D10E0119501951109A1 -:10D290004F3FBFEF5B0721F4D601AC9211966D01B1 -:10D2A000641775072CF08416950614F4818101C06B -:10D2B00080E3415051093196D60111967D01401706 -:10D2C000510724F0D6018C936701E2CF64177507EC -:10D2D00039F4963320F4953319F4311101C081E308 -:10D2E000F6018083F701822F90E2882319F0919351 -:10D2F0008150FBCFF701E20FF11D108280E090E03A -:10D3000029960FB6F894DEBF0FBECDBFDF91CF9147 -:10D310001F910F91FF90EF90DF90CF90BF90AF9053 -:10D320009F908F900895283008F027E03327DA0186 -:10D33000990F311D87FD916000966105710539F4E3 -:10D3400032602E5F3D9330E32A95E1F708959F3FC9 -:10D3500030F080387105610509F03C5F3C5F3D931A -:10D36000913008F08068911DDF93CF931F930F9346 -:10D37000FF92EF92192F987F9695E92F96959695A3 -:10D38000E90FFF27EA59FD4F99273327EE24FF24A1 -:10D39000A701E70105900894079428F4360FE71ECB -:10D3A000F81E491F511D660F771F881F991F06948D -:10D3B000A1F70590079428F4E70EF81E491F561FA1 -:10D3C000C11D770F881F991F661F0694A1F705904E -:10D3D000079428F4F80E491F561FC71FD11D880F48 -:10D3E000991F661F771F0694A1F70590079420F4F4 -:10D3F000490F561FC71FD81F990F661F771F881F19 -:10D400000694A9F784911095177041F0D695C795A9 -:10D4100057954795F794E7941A95C1F7ECE0F2E039 -:10D4200068941590159135916591959105907FE2DD -:10D430007395E118F10A430B560BC90BD009C0F7DD -:10D44000E10CF11E431F561FC91FD01D7EF470331F -:10D4500011F48A95E6CFE894015030F0080F0AF4F1 -:10D460000027021708F4202F2395022F7A3328F083 -:10D4700079E37D932A95E9F710C07D932A9589F683 -:10D48000069497956795379517951794E118F10AC3 -:10D49000430B560BC90BD00998F023957E917395D9 -:10D4A0007A3308F070E37C932013B8F77E917061B3 -:10D4B0007D9330F0839571E37D9370E32A95E1F7D6 -:10D4C0001124EF90FF900F911F91CF91DF91992739 -:10D4D00087FD909508959F939F77D5D10F90002059 -:10D4E0003AF49058A2EA2AED3FE049E450E413D020 -:10D4F00096C25058BB27AA270ED091C25AD230F0FC -:10D500005FD220F031F49F3F11F41EF42AC20EF4D2 -:10D51000E095E7FBF7C1E92FA4D280F3BA176207C1 -:10D5200073078407950718F071F49EF5D3C20EF4C3 -:10D53000E0950B2EBA2FA02D0B01B90190010C0123 -:10D54000CA01A0011124FF27591B99F0593F50F43B -:10D55000503E68F11A16F040A22F232F342F442793 -:10D56000585FF3CF469537952795A795F04053958B -:10D57000C9F77EF41F16BA0B620B730B840BBAF05B -:10D580009150A1F0FF0FBB1F661F771F881FC2F7C6 -:10D590000EC0BA0F621F731F841F48F487957795DA -:10D5A0006795B795F7959E3F08F0B3CF9395880F91 -:10D5B00008F09927EE0F979587950895FAD158F0BE -:10D5C00080E891E009F49EEFFBD128F040E851E0BB -:10D5D00059F45EEF09C0C5C17DC2E92FE07841D2A0 -:10D5E00068F3092E052AC1F326173707480759079C -:10D5F00038F00E2E07F8E02569F0E025E0640AC057 -:10D60000EF6307F8009407FADB01B9019D01DC0123 -:10D61000CA01AD01EF935DD002D20AD05F915523CC -:10D6200031F02BED3FE049E450FD49EC63CF089524 -:10D63000DF93DD27B92FBF7740E85FE316161706A3 -:10D6400048075B0710F4D92F50D29F938F937F9395 -:10D650006F932DD3E8E9F1E087D1E1D12F913F918C -:10D660004F915F9185D2DD2349F09058A2EA2AEDCF -:10D670003FE049EC5FE3D0785D274DDFDF91CFC11C -:10D6800012D280F09F3740F491110EF424C260E072 -:10D6900070E080E89FE3089526F01B16611D711D60 -:10D6A000811D36C150C10AD108F481E0089590D19E -:10D6B000E395C6C10CD0B3C183D140F07AD130F02C -:10D6C00021F45F3F19F01EC1511105C24AC1C9D1F1 -:10D6D00098F39923C9F35523B1F3951B550BBB2739 -:10D6E000AA2762177307840738F09F5F5F4F220FE6 -:10D6F000331F441FAA1FA9F333D00E2E3AF0E0E8DF -:10D7000030D091505040E695001CCAF729D0FE2F2A -:10D7100027D0660F771F881FBB1F261737074807BC -:10D72000AB07B0E809F0BB0B802DBF01FF27935872 -:10D730005F4F2AF09E3F510568F0E4C0CCC15F3FC7 -:10D74000ECF3983EDCF3869577956795B795F7955A -:10D750009F5FC9F7880F911D9695879597F9089552 -:10D76000E1E0660F771F881FBB1F621773078407EE -:10D77000BA0720F0621B730B840BBA0BEE1F88F7FD -:10D78000E095089504D06894B111A5C1089571D1B0 -:10D7900088F09F5790F0B92F9927B751A0F0D1F09A -:10D7A000660F771F881F991F1AF0BA95C9F712C024 -:10D7B000B13081F08FD1B1E008958CC1672F782FFF -:10D7C0008827B85F39F0B93FCCF386957795679590 -:10D7D000B395D9F73EF490958095709561957F4FFC -:10D7E0008F4F9F4F0895E89409C097FB3EF49095A2 -:10D7F0008095709561957F4F8F4F9F4F9923A9F02A -:10D80000F92F96E9BB279395F695879577956795B8 -:10D81000B795F111F8CFFAF4BB0F11F460FF1BC0FC -:10D820006F5F7F4F8F4F9F4F16C0882311F096E98F -:10D8300011C0772321F09EE8872F762F05C066233D -:10D8400071F096E8862F70E060E02AF09A95660FF6 -:10D85000771F881FDAF7880F9695879597F90895AF -:10D8600022D180F09F3740F491110EF034C160E076 -:10D8700070E080E89FEB089526F41B16611D711D72 -:10D88000811D46C060C0DF93CF931F930F938B0120 -:10D89000EC01E5ECF1E068D0C2D09801AE018B015B -:10D8A000EC0160E070E080E89FE323DEC2D19801E4 -:10D8B000AE010F911F91CF91DF915AC1990F0008CE -:10D8C000550FAA0BE0E8FEEF16161706E807F90752 -:10D8D000C0F012161306E407F50798F0621B730BED -:10D8E000840B950B39F40A2661F0232B242B252B6E -:10D8F00021F408950A2609F4A140A6958FEF811D11 -:10D90000811D089597F99F6780E870E060E00895B1 -:10D91000882371F4772321F09850872B762F07C046 -:10D92000662311F499270DC09051862B70E060E0BA -:10D930002AF09A95660F771F881FDAF7880F969559 -:10D94000879597F908959F3F31F0915020F487957E -:10D9500077956795B795880F911D9695879597F957 -:10D9600008959FEF80EC0895DF93CF931F930F935B -:10D97000FF92EF92DF927B018C01689405C0DA2E52 -:10D98000EF01F6D0FE01E894A591259135914591DE -:10D990005591AEF3EF01BFDDFE019701A801DA94C6 -:10D9A00079F7DF90EF90FF900F911F91CF91DF916A -:10D9B000089500240A9416161706180609060895F5 -:10D9C00000240A9412161306140605060895C9CFFA -:10D9D00050D0E8F3E894E0E0BB279F57F0F02AED41 -:10D9E0003FE049EC06C0EE0FBB0F661F771F881F94 -:10D9F00028F0B23A62077307840728F0B25A620B24 -:10DA0000730B840BE3959A9572F7803830F49A95EE -:10DA1000BB0F661F771F881FD2F7904896CF092E3D -:10DA20000394000C11F4882352F0BB0F40F4BF2B79 -:10DA300011F460FF04C06F5F7F4F8F4F9F4F0895B9 -:10DA4000EF93E0FF06C0A2EA2AED3FE049EC5FEB6E -:10DA500062DDE5DF0F90039401FC9058EDEEF1E0FC -:10DA60003BC157FD9058440F551F59F05F3F71F06F -:10DA70004795880F97FB991F61F09F3F79F0879535 -:10DA80000895121613061406551FF2CF4695F1DFBE -:10DA900008C0161617061806991FF1CF869571054E -:10DAA000610508940895E5DFA0F0BEE7B91788F492 -:10DAB000BB279F3860F41616B11D672F782F882773 -:10DAC000985FF7CF869577956795B11D93959639B1 -:10DAD000C8F30895E894BB2766277727CB0197F909 -:10DAE0000895ECDE08F48FEF08959B01AC0160E02F -:10DAF00070E080E89FE3DECDBCDF58F19E5758F11F -:10DB00009851A0F0E9F0983020F5092E9927660F7A -:10DB1000771F881F991F0A94D1F712C0062E672F0E -:10DB2000782F8827985F11F4000C07C0993FB4F351 -:10DB30008695779567959395D9F7611D711D811D20 -:10DB40003EF490958095709561957F4F8F4F9F4FD4 -:10DB500008956894C0CFBECF0BD061CF2ADF28F0E4 -:10DB60002FDF18F0952309F0CDCEFBCE1124B3CFD3 -:10DB700078DFA0F3959FD1F3950F50E0551F629F7A -:10DB8000F001729FBB27F00DB11D639FAA27F00D16 -:10DB9000B11DAA1F649F6627B00DA11D661F829F3D -:10DBA0002227B00DA11D621F739FB00DA11D621F22 -:10DBB000839FA00D611D221F749F3327A00D611D3F -:10DBC000231F849F600D211D822F762F6A2F112421 -:10DBD0009F5750408AF0E1F088234AF0EE0FFF1F74 -:10DBE000BB1F661F771F881F91505040A9F79E3FAB -:10DBF000510570F087CE6FCF5F3FECF3983EDCF3BA -:10DC0000869577956795B795F795E7959F5FC1F7E7 -:10DC1000FE2B880F911D9695879597F908959F93F0 -:10DC2000D7DE0F9007FCEE5F0BCF11F40EF499CE08 -:10DC30008ACE1FDFD0F39923D9F3CEF39F57550B2C -:10DC400087FF43D00024A0E640EA90018058569513 -:10DC5000979528F4805C660F771F881F20F02617A1 -:10DC60003707480730F4621B730B840B20293129D6 -:10DC70004A2BA69517940794202531254A2758F753 -:10DC8000660F771F881F20F026173707480730F4E4 -:10DC9000620B730B840B200D311D411DA09581F784 -:10DCA000B901842F9158880F9695879508959B0107 -:10DCB000AC0152CFF8DE20F09F3708F40CCF28CE0D -:10DCC00042CEFCDD880B990B089591505040660FB1 -:10DCD000771F881FD2F708959F938F937F936F9339 -:10DCE000FF93EF939B01AC0137DFEF91FF913CDE97 -:10DCF0002F913F914F915F912FCF991B79E004C0F5 -:10DD0000991F961708F0961B881F7A95C9F780957A -:10DD10000895AA1BBB1B51E107C0AA1FBB1FA61772 -:10DD2000B70710F0A61BB70B881F991F5A95A9F7C4 -:10DD300080959095BC01CD010895A1E21A2EAA1BF1 -:10DD4000BB1BFD010DC0AA1FBB1FEE1FFF1FA217AB -:10DD5000B307E407F50720F0A21BB30BE40BF50BA8 -:10DD6000661F771F881F991F1A9469F76095709531 -:10DD7000809590959B01AC01BD01CF010895EE0FF8 -:10DD8000FF1F881F8BBF0790F691E02D1994A29F6B -:10DD9000B001B39FC001A39F700D811D1124911D7F -:10DDA000B29F700D811D1124911D0895F0DFA59F74 -:10DDB000900DB49F900DA49F800D911D1124089586 -:10DDC000FB01DC010D900020E9F7119701900D9205 -:10DDD0000020E1F70895FB01DC0101900D92002085 -:10DDE000E1F708950F931F93CF93DF93CDB7DEB77D -:10DDF0002E970FB6F894DEBF0FBECDBF0E891F89D8 -:10DE000086E08C831A8309838FEF9FE79E838D833F -:10DE1000AE01465E5F4F688D798DCE01019659D077 -:10DE2000EF81F885E00FF11F10822E960FB6F8945F -:10DE3000DEBF0FBECDBFDF91CF911F910F9108952F -:10DE4000CF93DF93CDB7DEB72E970FB6F894DEBF32 -:10DE50000FBECDBF85E08C838C899D899A83898391 -:10DE6000AE01485E5F4F6E897F89CE010196E0D397 -:10DE70002E960FB6F894DEBF0FBECDBFDF91CF91C7 -:10DE800008950F931F93CF93DF93CDB7DEB72E97EF -:10DE90000FB6F894DEBF0FBECDBF8C0186E08C8339 -:10DEA0001A8309838FEF9FE79E838D83CE010196AE -:10DEB00010D0EF81F885E00FF11F10822E960FB67B -:10DEC000F894DEBF0FBECDBFDF91CF911F910F91B0 -:10DED00008952F923F924F925F926F927F928F920E -:10DEE0009F92AF92BF92CF92DF92EF92FF920F93E9 -:10DEF0001F93CF93DF93CDB7DEB72B970FB6F89470 -:10DF0000DEBF0FBECDBF6C017B018A01FC01178211 -:10DF10001682838181FFBFC1CE0101963C01F601CB -:10DF20009381F70193FD859193FF81917F01882370 -:10DF300009F4ADC1853239F493FD859193FF819148 -:10DF40007F01853221F4B60190E0F0D4E8CF912C26 -:10DF5000212C312CFFE1F315D8F08B3279F038F415 -:10DF6000803279F08332A1F4232D20611DC08D32DF -:10DF700061F0803369F4232D216016C0832D826007 -:10DF8000382EE32DE4603E2E2AC0F32DF8601DC02C -:10DF900037FC2DC020ED280F2A3040F08E32B9F426 -:10DFA00036FC75C1232D2064322E19C036FE06C002 -:10DFB0008AE0989E200D1124922E11C0EAE02E9E38 -:10DFC000200D1124222EF32DF0623F2E08C08C3636 -:10DFD00021F4832D8068382E02C0883641F4F70181 -:10DFE00093FD859193FF81917F018111B3CF982F8C -:10DFF0009F7D9554933028F40C5F1F4F9FE39983C6 -:10E000000DC0833631F0833771F0833509F055C088 -:10E0100020C0F801808189830E5F1F4F882483947C -:10E02000912C530112C02801F2E04F0E511CF8014F -:10E03000A080B18036FE03C0692D70E002C06FEF92 -:10E040007FEFC5012AD44C018201F32DFF773F2ECB -:10E0500015C0280122E0420E511CF801A080B180B9 -:10E0600036FE03C0692D70E002C06FEF7FEFC5017F -:10E0700009D44C01F32DF0683F2E820133FC19C006 -:10E08000822D90E088169906A0F4B60180E290E017 -:10E090004DD42A94F5CFF50137FC859137FE819157 -:10E0A0005F01B60190E042D421102A9421E0821A47 -:10E0B00091088114910479F7E1C0843611F0893612 -:10E0C00039F5F80137FE07C0608171818281938143 -:10E0D0000C5F1F4F08C060817181072E000C880BF8 -:10E0E000990B0E5F1F4FF32DFF763F2E97FF09C050 -:10E0F00090958095709561957F4F8F4F9F4FF068F9 -:10E100003F2E2AE030E0A30166D4882E861844C052 -:10E11000853731F4232D2F7EB22E2AE030E025C042 -:10E12000932D997FB92E8F36C1F018F4883579F088 -:10E13000AEC0803719F0883721F0A9C0E92FE0611F -:10E14000BE2EB4FE0DC0FB2DF460BF2E09C034FE00 -:10E150000AC0292F2660B22E06C028E030E005C094 -:10E1600020E130E002C020E132E0F801B7FE07C054 -:10E1700060817181828193810C5F1F4F06C0608135 -:10E18000718180E090E00E5F1F4FA30124D4882EA0 -:10E190008618FB2DFF773F2E36FE0DC0232D2E7FD8 -:10E1A000A22E891458F434FE0BC032FC09C0832D12 -:10E1B0008E7EA82E05C0B82CA32C03C0B82C01C09D -:10E1C000B92CA4FE0FC0FE01E80DF11D8081803343 -:10E1D00021F49A2D997EA92E09C0A2FE06C0B394FF -:10E1E000B39404C08A2D867809F0B394A3FC10C0C0 -:10E1F000A0FE06C0B21480F4280C922C9B180DC00F -:10E20000B21458F4B60180E290E090D3B394F8CF02 -:10E21000B21418F42B1802C0982C212CA4FE0FC0A5 -:10E22000B60180E390E082D3A2FE16C0A1FC03C039 -:10E2300088E790E002C088E590E0B6010CC08A2D26 -:10E24000867851F0A1FE02C08BE201C080E2A7FCFB -:10E250008DE2B60190E06AD3891430F4B60180E310 -:10E2600090E064D39A94F8CF8A94F301E80DF11DFD -:10E270008081B60190E05AD38110F6CF222009F4B4 -:10E280004ECEB60180E290E051D32A94F7CFF6014A -:10E290008681978102C08FEF9FEF2B960FB6F8947F -:10E2A000DEBF0FBECDBFDF91CF911F910F91FF90C9 -:10E2B000EF90DF90CF90BF90AF909F908F907F9026 -:10E2C0006F905F904F903F902F90089520FD09C070 -:10E2D000FC0123FD05C022FF02C0738362835183CA -:10E2E0004083089544FD17C046FD17C0AB01BC0133 -:10E2F000DA01FB01AA0FBB1FEE1FFF1F1094D1F71D -:10E300004A0F5B1F6E1F7F1FCB01BA01660F771F7D -:10E31000881F991F09C033E001C034E0660F771FE2 -:10E32000881F991F3150D1F7620F711D811D911DFA -:10E3300008950F931F93CF93DF938C01C801B8D238 -:10E34000EC0197FD06C08BD2892BC1F7B801CE0135 -:10E3500029D3CE01DF91CF911F910F9108958F9214 -:10E360009F92AF92BF92EF92FF920F931F93CF9322 -:10E37000DF938C01D62F7A01B22E9AD29C013327DB -:10E380002B32310531F02D32310559F48B2D806857 -:10E39000B82ED15011F480E061C0C80189D297FD38 -:10E3A000FACFCB2DCD7F2B2D2073F9F48033E9F4F8 -:10E3B000AA24AA94AD0E09F43EC0C80179D297FDF3 -:10E3C0003AC09C012F7D33272835310541F4C264C2 -:10E3D000D25089F1C8016CD297FF07C02CC0B6FE9D -:10E3E00002C0C26001C0C261DA2D812C912C54019F -:10E3F00020ED280F283078F0C4FF03C0B801D2D236 -:10E4000017C02A3040F0C6FFF9CF2F7D3FEE320F04 -:10E410003630A0F727504C2FC501B40163DF4B0104 -:10E420005C01C260D15051F0C80142D297FFE0CFE9 -:10E43000C1FD04C0B0CF812C912C5401C7FF08C08E -:10E44000B094A09490948094811C911CA11CB11C48 -:10E450002C2FB501A401C70139DF81E0DF91CF91F5 -:10E460001F910F91FF90EF90BF90AF909F908F9072 -:10E4700008955F926F927F928F929F92AF92BF9218 -:10E48000CF92DF92EF92FF920F931F93CF93DF9380 -:10E49000CDB7DEB7A0970FB6F894DEBF0FBECDBFE5 -:10E4A0005C01962E7A01F9018E010F5F1F4F680102 -:10E4B00080E2D8011D928A95E9F7D50113968C90D8 -:10E4C00080E090E0612C712C30E061E070E083FC32 -:10E4D000259183FE21918F01522E211103C080E0EE -:10E4E00090E090C02E3511F4009751F1432F50E089 -:10E4F000481759073CF42D3559F12D3219F477207E -:10E5000009F103C0772009F468C0452D469546956A -:10E510004695D601A40FB11D452D47708B0102C051 -:10E52000000F111F4A95E2F7A8015C91452B4C930F -:10E53000651459F0561410F45394E7CF5A94E5CF6C -:10E5400031E004C07724739401C0712C0196BFCFD1 -:10E55000772019F08E8180628E83311103C0882468 -:10E56000839417C0F6019E012F5D3F4F80818095F7 -:10E5700081932E173F07D1F7F2CFE114F10429F070 -:10E58000D7018C93F70131967F019A94812C9920C1 -:10E59000E9F0C5018DD197FD17C0FC01FF2723E0ED -:10E5A000F595E7952A95E1F7EC0DFD1D208130E00A -:10E5B000AC014770552702C0359527954A95E2F77B -:10E5C00020FDDBCFB501EED1811089CFE114F1043C -:10E5D00011F0D7011C92C80115C0422F46954695EF -:10E5E0004695D601A40FB11D422F47708B0102C082 -:10E5F000000F111F4A95E2F7A8015C91452B4C933F -:10E60000622EA4CFA0960FB6F894DEBF0FBECDBF8A -:10E61000DF91CF911F910F91FF90EF90DF90CF90FE -:10E62000BF90AF909F908F907F906F905F90089574 -:10E630005F926F927F928F929F92AF92BF92CF9292 -:10E64000DF92EF92FF920F931F93CF93DF936C01B2 -:10E65000EB015A01FC0117821682512CF601E3806E -:10E66000FE01E3FC8591E3FE8191182FEF018823E1 -:10E6700009F4E0C090E0F3D0892B19F0C60159DE0F -:10E68000EDCF153241F4FE01E3FC1591E3FE11914B -:10E69000EF01153271F4C6010BD197FDC9C0412FAE -:10E6A00050E09C01332724173507C1F2B6017AD117 -:10E6B000C1C01A3239F4E3FC1591E3FE1191EF0168 -:10E6C00001E001C000E0F12C20ED210F2A3078F4A8 -:10E6D00002606F2D70E080E090E040E203DEF62EF5 -:10E6E000FE01E3FC1591E3FE1191EF01EDCF01FF77 -:10E6F00003C0F11003C09EC0FF24FA94183619F02D -:10E700001C3651F010C0FE01E3FC1591E3FE11919F -:10E71000EF01183641F408600460FE01E3FC159136 -:10E72000E3FE1191EF01112309F484C0612F70E021 -:10E7300086E093E09CD0892B09F47CC000FD07C0E3 -:10E74000F50180809180C50102965C0102C0812C98 -:10E75000912C1E3649F4F6014681578160E070E045 -:10E76000202FC401B3DD7ACF1336A1F401FD02C01E -:10E77000FF24F394C6019CD097FD5AC081149104E4 -:10E7800029F0F4018083C40101964C01FA94F11040 -:10E79000F1CF4AC01B3551F49E01A4016F2DC60173 -:10E7A00068DEEC01892B09F03FC039C0C601C1DD2C -:10E7B00097FD3EC01F3649F128F4143621F1193671 -:10E7C00039F125C0133771F01537E9F020C08114F5 -:10E7D000910429F0F4016082C40101964C01FA947D -:10E7E000FF2059F0C60164D03C0197FD06C037D028 -:10E7F000892B69F3B601C301D5D081149104A1F02E -:10E80000F401108211C0006203C0006101C0006405 -:10E81000202FA4016F2DC601A2DD811105C0F601D4 -:10E820008381807329F406C000FD18CF539416CF5E -:10E83000552019F0852D90E002C08FEF9FEFDF91FA -:10E84000CF911F910F91FF90EF90DF90CF90BF90ED -:10E85000AF909F908F907F906F905F9008959111EF -:10E8600018C1803219F089508550D0F70895FC0105 -:10E870000590061621F00020D9F7C00108953197C0 -:10E88000CF010895FC010590615070400110D8F748 -:10E89000809590958E0F9F1F0895FC0161507040E8 -:10E8A00001900110D8F7809590958E0F9F1F0895C5 -:10E8B000CF93DF93EC012B8120FF33C026FF0AC0EA -:10E8C0002F7B2B838E819F8101969F838E838A81EC -:10E8D00090E029C022FF0FC0E881F9818081082ED5 -:10E8E000000C990B009719F420622B831AC0319603 -:10E8F000F983E8830EC0EA85FB85199597FF09C067 -:10E900002B81019611F080E201C080E1822B8B8384 -:10E9100008C02E813F812F5F3F4F3F832E83992771 -:10E9200002C08FEF9FEFDF91CF9108950F931F9358 -:10E93000CF93DF93FB01238121FD03C08FEF9FEF76 -:10E940002CC022FF16C04681578124813581421791 -:10E95000530744F4A081B1819D012F5F3F4F318364 -:10E9600020838C93268137812F5F3F4F3783268307 -:10E9700014C08B01EC01FB010084F185E02D199599 -:10E98000892BE1F6D80116968D919C9117970196E7 -:10E9900017969C938E931697CE01DF91CF911F917E -:10E9A0000F910895FB01238120FF12C026FD10C0A6 -:10E9B0008F3F3FEF930761F082832F7D2064238395 -:10E9C000268137812150310937832683992708957D -:10E9D0008FEF9FEF0895FA01AA27283051F12031D7 -:10E9E00081F1E8946F936E7F6E5F7F4F8F4F9F4FE3 -:10E9F000AF4FB1E03ED0B4E03CD0670F781F891F25 -:10EA00009A1FA11D680F791F8A1F911DA11D6A0FF2 -:10EA1000711D811D911DA11D20D009F468943F91A5 -:10EA20002AE0269F11243019305D3193DEF6CF01A4 -:10EA30000895462F4770405D4193B3E00FD0C9F76A -:10EA4000F6CF462F4F70405D4A3318F0495D31FDD7 -:10EA50004052419302D0A9F7EACFB4E0A69597952A -:10EA6000879577956795BA95C9F700976105710500 -:10EA700008959B01AC010A2E06945795479537954A -:10EA80002795BA95C9F7620F731F841F951FA01DA4 -:0CEA90000895992788270895F894FFCF77 -:10EA9C00AE47C13F08020000000000000073736322 -:10EAAC00616E662025640D0A0053255B302D392DCF -:10EABC002B2E5D52255B302D392D2B2E5D48255B81 -:10EACC00302D392D2B2E5D46255B302D392D2B2EDF -:10EADC005D004E256456255B302D392D2B2E5D4661 -:10EAEC00255B302D392D2B2E5D0058255B302D39B3 -:10EAFC002D2B2E5D59255B302D392D2B2E5D5A2556 -:10EB0C005B302D392D2B2E5D46255B302D392D2B71 -:10EB1C002E5D0020422573204C2573205225730A4C -:10EB2C0000537769667450726F002025730A005683 -:10EB3C00342E332E300056342E302E3300205625F2 -:10EB4C00730A002058257320592573205A25730AFF -:10EB5C00002053257320522573204825730A004E3C -:10EB6C0025640020422564204C2564205225640A2B -:10EB7C0000616E676C65206F66667365743A257309 -:10EB8C000D0A00736F667420766572203A20257327 -:10EB9C000D0A0061706920766572203A2025730D8C -:10EBAC000A00776F726B206D6F6465203A202564C4 -:10EBBC000D0A0040310A006566666563742063685F -:10EBCC0065636B2074696D656F7574210D0A002384 -:10EBDC00255B302D395D00242573004532332062CE -:10EBEC0075666665722066756C6C0D0A0040332084 -:10EBFC0058257320592573205A2573205225730AE2 -:10EC0C00004036204E30205625640A0040352056F0 -:10EC1C0025640A0040392056300A0041255B302D0E -:10EC2C00392D2B2E5D00562573002056310A0046D7 -:10EC3C00255B302D392E5D5425640058255B302D15 -:10EC4C00392D2B2E5D59255B302D392D2B2E5D5AF0 -:10EC5C00255B302D392D2B2E5D502564004E2564FF -:10EC6C005625640053255B302D392D2B2E5D005617 -:10EC7C00255B302D392D2B2E5D006120300D0A00C7 -:10EC8C006220300D0A006320300D0A004532330A31 -:10EC9C00004532300A004532310A0020006F6B000B -:10ECAC0045323000453231004532320056332E3376 -:10ECBC002E310056332E332E300072656665723A53 -:0EECCC00422564204C2564205225640D0A0068 -:00000001FF diff --git a/src/motion_control.c b/src/motion_control.c index 1f4a4d4..29755f6 100755 --- a/src/motion_control.c +++ b/src/motion_control.c @@ -128,13 +128,23 @@ float final_coord[3]; float final_step[3]; + float angle_x, angle_y, angle_z; for( int i = 1; i <= divide_numbers; i++ ){ - final_coord[X_AXIS] = current_coord[X_AXIS] + delta_coord[X_AXIS] * i; + final_coord[X_AXIS] = current_coord[X_AXIS] + delta_coord[X_AXIS] * i; // 1 ){ // 0){ // 1 ){ delay_us(100); } + } + }else{ + if( step_param.n > 1 ){ // 0){ // =step_param.total_conuts/2 ){ + step_param.n++; + step_param.timer_load_val = step_param.timer_load_val - (2 * step_param.timer_load_val) / (4 * step_param.n + 1 ); // step_param.timer_min_val ){ + step_param.n++; + step_param.timer_load_val = step_param.timer_load_val - (2 * step_param.timer_load_val) / (4 * step_param.n + 1 ); // +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +#define STEP_LIB_VERSION 1.2.2 + + +#define DIR_PIN 5 +#define DIR_PORT PORTH +#define DIR_DDR DDRH +#define STEP_PIN 6 +#define STEP_PORT PORTH +#define STEP_DDR DDRH +#define ENABLE_PIN 7 +#define ENABLE_PORT PORTD +#define ENABLE_DDR DDRD + +#define DIR_OUTPUT DIR_DDR |= (1<0 forward,steps<0 backward +* timer_min_val :the timer minimum load count 80 max +* complete_callback :move done callback +* wait :default is wait +*/ +bool set_steps(long steps, long timer_min_val, void(*complete_callback)(void), bool wait); + + + +/* +* direction :direction>0 forward direction<0 backward +* timer_min_val :the timer minimum load count 80 max +* complete_callback :speed reach callback +* wait :default is no wait +*/ + +bool set_speed(int8_t direction, long timer_min_val, void(*complete_callback)(void), bool wait); + + +bool step_terminate(void); + +#endif diff --git a/src/stepper.c b/src/stepper.c index 2158205..5067ef7 100755 --- a/src/stepper.c +++ b/src/stepper.c @@ -547,10 +547,6 @@ void stepper_init() MS2_PORT |= MS2_MASK; MS1_PORT &= (~MS1_MASK); #else - // MS3=1 MS2=1 MS1=0 1/64 step -/* MS3_PORT |= MS3_MASK; - MS2_PORT |= MS2_MASK; - MS1_PORT &= (~MS1_MASK);*/ // MS3=1 MS2=0 MS1=1 1/32 step MS3_PORT |= MS3_MASK; MS2_PORT &= ~(MS2_MASK); diff --git a/src/uarm_angle.c b/src/uarm_angle.c index e7c978a..b52974c 100755 --- a/src/uarm_angle.c +++ b/src/uarm_angle.c @@ -87,11 +87,26 @@ float calculate_current_angle(enum angle_channel_e channel){ float angle = 0.0; switch( channel ){ - case CHANNEL_ARML: offset = (int long)reference.param_l - (int long)angle_reg_value; + case CHANNEL_ARML: + #if defined(UARM_2500) + offset = (int long)angle_reg_value - (int long)reference.param_l; + #else + offset = (int long)reference.param_l - (int long)angle_reg_value; + #endif break; - case CHANNEL_ARMR: offset = (int long)reference.param_r - (int long)angle_reg_value; + case CHANNEL_ARMR: + #if defined(UARM_2500) + offset = (int long)angle_reg_value - (int long)reference.param_r; + #else + offset = (int long)reference.param_r - (int long)angle_reg_value; + #endif break; - case CHANNEL_BASE: offset = (int long)reference.param_b - (int long)angle_reg_value; + case CHANNEL_BASE: + #if defined(UARM_2500) + offset = (int long)angle_reg_value - (int long)reference.param_b; + #else + offset = (int long)reference.param_b - (int long)angle_reg_value; + #endif break; } @@ -198,20 +213,11 @@ bool calculate_refer_write_eeprom(void){ float pointc_b_arml_offset = reference_param_pointc[0] - (POINT_C_ARML_ANGLE-POINT_B_ARML_ANGLE)*4096/360.0; float pointc_b_armr_offset = reference_param_pointc[1] - (POINT_C_ARMR_ANGLE-POINT_B_ARMR_ANGLE)*4096/360.0; -/* DB_PRINT_STR("value offset:"); - DB_PRINT_FLOAT( pointa_b_arml_offset );DB_PRINT_STR(" "); - DB_PRINT_FLOAT( pointa_b_armr_offset );DB_PRINT_STR(" "); - DB_PRINT_FLOAT( pointc_b_arml_offset );DB_PRINT_STR(" "); - DB_PRINT_FLOAT( pointc_b_armr_offset );DB_PRINT_STR("\r\n");*/ - reference.param_l = (pointa_b_arml_offset + pointc_b_arml_offset + reference_param_pointb[0])/3.0 + 0.5; reference.param_r = (pointa_b_armr_offset + pointc_b_armr_offset + reference_param_pointb[1])/3.0 + 0.5; reference.param_b = reference_param_pointb[2]; -/* DB_PRINT_STR("value1 offset:"); - DB_PRINT_FLOAT( reference_param[0] );DB_PRINT_STR(" "); - DB_PRINT_FLOAT( reference_param[1] );DB_PRINT_STR(" "); - DB_PRINT_FLOAT( reference_param[2] );DB_PRINT_STR("\r\n"); */ + write_angle_reference_param(); return true; @@ -234,30 +240,9 @@ void angle_sensor_init(void){ angle_iic_init(); read_angle_reference_param(); // 0 ){ - if( status_flag ){ - status_flag = false; - step_count--; - PORTH |= (1<<6); - }else{ - status_flag = true; - PORTH &= ~(1<<6); - } - }else{ - time4_stop(); - step_count = 0; - //DB_PRINT_STR( "time4 stop\r\n" ); - } -} +//void step_creater(void){ +// static bool status_flag = false; +// if( step_count > 0 ){ +// if( status_flag ){ +// status_flag = false; +// step_count--; +// PORTH |= (1<<6); +// }else{ +// status_flag = true; +// PORTH &= ~(1<<6); +// } +// }else{ +// time4_stop(); +// step_count = 0; +// uarm.effect_ldie = true; +// +// //DB_PRINT_STR( "time4 stop\r\n" ); +// } +//} static void steper_init(void){ - DDRH |= (1<<5); // 200 ){ + speed = 200; + }else if( speed < 0 ){ + speed = 0; + } + + long timer_delay = 300 - speed; + + #if defined(UARM_2500) + if( uarm.param.work_mode==WORK_MODE_STEPER_FLAT ){ + step_count = angle / 0.9 * 64; + }else if( uarm.param.work_mode == WORK_MODE_STEPER_STANDARD ){ + step_count = angle / 0.18 * 16; + } + #else + if( uarm.param.work_mode==WORK_MODE_STEPER_FLAT ){ + step_count = angle / 0.9 * 64; + }else if( uarm.param.work_mode == WORK_MODE_STEPER_STANDARD ){ + step_count = angle / 1.8 * 64; + } + #endif + set_steps( step_count, timer_delay, step_move_complete, false ); +} + static float steper_get_angle(void){ return steper_current_angle; } - void end_effector_init(void){ if( uarm.param.work_mode==WORK_MODE_STEPER_FLAT || uarm.param.work_mode==WORK_MODE_STEPER_STANDARD ){ steper_init(); @@ -91,20 +111,17 @@ void end_effector_init(void){ } } -void end_effector_set_angle(float angle){ +void end_effector_set_angle(float angle, float speed){ if( angle > 360 || angle < 0 ){ return; } if( uarm.param.work_mode==WORK_MODE_STEPER_FLAT || uarm.param.work_mode==WORK_MODE_STEPER_STANDARD ){ float offset_angle = angle - steper_current_angle; steper_current_angle = angle; - if( offset_angle > 0 ){ - PORTH &= ~(1<<5); // 0.5 || fabs(current_angle_r-reg_angle_r)>0.5 || fabs(current_angle_b-reg_angle_b+90)>0.5 ){ - char l_str[20], r_str[20], b_str[20]; - - memset(&sys, 0, sizeof(system_t)); // Clear all system variables - plan_sync_position(); - gc_sync_position(); - - uarm.init_arml_angle = reg_angle_l; - uarm.init_armr_angle = reg_angle_r; - uarm.init_base_angle = reg_angle_b; - beep_tone(260, 1000); + static int cnt = 0; - uarm.target_step[X_AXIS] = sys.position[X_AXIS]; - uarm.target_step[Y_AXIS] = sys.position[Y_AXIS]; - uarm.target_step[Z_AXIS] = sys.position[Z_AXIS]; + if( sys.state == STATE_IDLE && uarm.motor_state_bits == 0x0F && uarm.power_state ){ + + if( cnt++ > 20 ){ + float current_angle_l = 0, current_angle_r = 0, current_angle_b = 0; - /* angle_to_coord( uarm.init_arml_angle, uarm.init_armr_angle, uarm.init_base_angle-90, - &(uarm.coord_x), &(uarm.coord_y), &(uarm.coord_z) ); + coord_to_angle( uarm.coord_x, uarm.coord_y, uarm.coord_z, ¤t_angle_l, ¤t_angle_r, ¤t_angle_b ); - - dtostrf( uarm.coord_x, 5, 4, l_str ); - dtostrf( uarm.coord_y, 5, 4, r_str ); - dtostrf( uarm.coord_z, 5, 4, b_str ); + float reg_angle_l = calculate_current_angle(CHANNEL_ARML); + float reg_angle_r = calculate_current_angle(CHANNEL_ARMR); + float reg_angle_b = calculate_current_angle(CHANNEL_BASE) ; - DB_PRINT_STR( "coord: %s, %s, %s\r\n", l_str, r_str, b_str );*/ + if( fabs(current_angle_l-reg_angle_l)>0.5 || fabs(current_angle_r-reg_angle_r)>0.5 || fabs(current_angle_b-reg_angle_b+90)>0.5 ){ + char l_str[20], r_str[20], b_str[20]; + memset(&sys, 0, sizeof(system_t)); // Clear all system variables + plan_sync_position(); + gc_sync_position(); - float target[3] = {0}; - target[X_AXIS] = uarm.coord_x; - target[Y_AXIS] = uarm.coord_y; - target[Z_AXIS] = uarm.coord_z; - coord_arm2effect( &target[X_AXIS], &target[Y_AXIS], &target[Z_AXIS] ); - mc_line( 0, target, 50, false ); - + uarm.init_arml_angle = reg_angle_l; + uarm.init_armr_angle = reg_angle_r; + uarm.init_base_angle = reg_angle_b; + // beep_tone(260, 1000); + + uarm.target_step[X_AXIS] = sys.position[X_AXIS]; + uarm.target_step[Y_AXIS] = sys.position[Y_AXIS]; + uarm.target_step[Z_AXIS] = sys.position[Z_AXIS]; + + float target[3] = {0}; + target[X_AXIS] = uarm.coord_x; + target[Y_AXIS] = uarm.coord_y; + target[Z_AXIS] = uarm.coord_z; + coord_arm2effect( &target[X_AXIS], &target[Y_AXIS], &target[Z_AXIS] ); + mc_line( 0, target, 50, false ); + + } } + }else{ + cnt = 0; } } diff --git a/src/uarm_peripheral.h b/src/uarm_peripheral.h index 5ae4bfa..d7b5db3 100755 --- a/src/uarm_peripheral.h +++ b/src/uarm_peripheral.h @@ -7,7 +7,7 @@ extern char hardware_version[8]; extern char bt_mac_addr[13]; void end_effector_init(void); -void end_effector_set_angle(float angle); +void end_effector_set_angle(float angle, float speed); void end_effector_deinit(void); float end_effector_get_angle(void); void end_effector_check_limit(void); diff --git a/src/uarm_protocol.c b/src/uarm_protocol.c index 4f965e9..f79a715 100755 --- a/src/uarm_protocol.c +++ b/src/uarm_protocol.c @@ -138,7 +138,10 @@ void parse_cmd_line(void){ if( !uarm.gcode_delay_flag && syn_pack_remain ){ // Date: Thu, 28 Mar 2019 16:10:47 +0800 Subject: [PATCH 53/74] Update 2019-03-28 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d67a815..17f2394 100755 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ ## Update Summary for v4.4.0 * Fix G1 motion planning -* Fix step effector motion bug -* Optimize step effector return funciton -* Add step effector speed control +* Fix motion bug for stepper end-effector +* Optimize the returning funciton of stepper end-effector +* Add speed control for stepper end-effector ## Caution #### The current firmware is not perfect and will be updated periodically From 10a0053d0051f6b0b3474506c5a2c96c3ee997e1 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Thu, 28 Mar 2019 17:24:38 +0800 Subject: [PATCH 54/74] Update 2019-03-28 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 17f2394..d8143da 100755 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ * Fix G1 motion planning * Fix motion bug for stepper end-effector +* Fix P2206 cmd bug * Optimize the returning funciton of stepper end-effector * Add speed control for stepper end-effector From 244593d0d8a31a771c2eecaa586b393d096a2678 Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Thu, 28 Mar 2019 17:27:58 +0800 Subject: [PATCH 55/74] Create 2019-03-28 --- hex/uArmPro_V4.4.0_release_20190327.hex | 3868 +++++++++++++++++++++++ 1 file changed, 3868 insertions(+) create mode 100755 hex/uArmPro_V4.4.0_release_20190327.hex diff --git a/hex/uArmPro_V4.4.0_release_20190327.hex b/hex/uArmPro_V4.4.0_release_20190327.hex new file mode 100755 index 0000000..5cdb920 --- /dev/null +++ b/hex/uArmPro_V4.4.0_release_20190327.hex @@ -0,0 +1,3868 @@ +:1000000065C5000084C5000082C5000080C50000F1 +:100010007EC500007CC500007AC5000078C50000E0 +:1000200076C500000C94D05772C500000C944D4B5F +:100030006EC500006CC500006AC500000C949D5799 +:1000400066C500000C941B2E62C5000060C5000050 +:100050005EC500005CC500005AC500000C94A62DCA +:1000600056C500000C94EC360C94AE3750C5000019 +:100070004EC500004CC500004AC5000048C5000040 +:1000800046C5000044C5000042C500000C948757D7 +:100090000C9484360C9480373AC5000038C50000B3 +:1000A00036C5000034C500000C94AA3030C50000ED +:1000B0002EC500002CC500002AC5000028C5000080 +:1000C00026C5000024C500000C9452570C941C3621 +:1000D0000C9452371CC500001AC5000018C500005A +:1000E00016C500006C13C41DC41D7A138F13A4130E +:1000F000B913C41DC213C41DD513C41DE413EE13DC +:100100004614C41DC41DC41DFD1317143114931CC3 +:10011000A31CD21CA31CD61CED1CDC1CE61C111D50 +:10012000181D231D2E1D4D1D4F1D521D541DE62251 +:10013000FE2216232E23462367237F23EA33F03340 +:10014000F333F633FA3302340A34773477347734BE +:10015000123415341E3427347734773477347734B7 +:10016000773477342F34393445344F3452345B3458 +:1001700064346A34CA56CD56BC56C056C656045767 +:10018000D156D556DB56DF56E356E956ED56F156B5 +:100190000457F756FB56FF56084AD73B3BCE016E35 +:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE +:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD +:1001C000000000803F072C7AA5BA6CC590DA3B93FB +:1001D00065FC8BBC53F810FD3C5692834DBD879D4A +:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 +:1001F000CDB2D44EB93836A9020C50B991868808D0 +:100200003CA6AAAA2ABE000000803F0000407A1047 +:10021000F35A00A0724E18090010A5D4E80000E8B7 +:100220007648170000E40B54020000CA9A3B000015 +:1002300000E1F505000080969800000040420F00A4 +:100240000000A08601000000102700000000E80365 +:10025000000000006400000000000A000000000030 +:100260000100000000002C76D888DC674F0823DFEF +:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 +:10028000997696E8E6C28426EB898C9B62ED407CE9 +:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 +:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA +:1002B000FEF520E6B500D0ED902E030094357705CD +:1002C0000080841E080000204E0A000000C80C3385 +:1002D0003333330F986E12831141EF8D2114893B14 +:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 +:1002F000901DA4BBE424203284725E228100C9F1E7 +:1003000024ECA1E53D276364696E6F7073757858BE +:100310005B00000020002300260029002C002F0095 +:100320003200000100000301060109010D0A003D31 +:1003300000244E005D0D0A005B302E396A2E3230EB +:100340003136303732363A005D0D0A005B544C4F7F +:100350003A005D0D0A002C005B4739323A005D0D12 +:100360000A002C003A003330003238005B47005D51 +:100370000D0A00205300204600205400204D380074 +:10038000204D3900204D3500204D3400204D3300E4 +:10039000204D3200204D3100204D300020473934AF +:1003A00000204739330020473931002047393000D9 +:1003B00020473230002047323100204731390020B9 +:1003C0004731380020473137002047004733382E67 +:1003D000004738300047330047320047310047308C +:1003E000005B00290D0A00206D617820747261762F +:1003F000656C2C206D6D0020616363656C2C206D35 +:100400006D2F7365635E3200206D617820726174B8 +:10041000652C206D6D2F6D696E002C2073746570D6 +:100420002F6D6D007A00790078002028003D0024AF +:10043000002028686F6D696E672070756C6C2D6F79 +:1004400066662C206D6D290D0A002028686F6D6985 +:100450006E67206465626F756E63652C206D7365D1 +:1004600063290D0A2432373D002028686F6D696EBC +:1004700067207365656B2C206D6D2F6D696E290D7E +:100480000A2432363D002028686F6D696E67206649 +:100490006565642C206D6D2F6D696E290D0A2432FF +:1004A000353D00290D0A2432343D002028686F6D47 +:1004B000696E672064697220696E76657274206D5A +:1004C00061736B3A002028686F6D696E67206379ED +:1004D000636C652C20626F6F6C290D0A2432333DEA +:1004E00000202868617264206C696D6974732C2027 +:1004F000626F6F6C290D0A2432323D002028736F21 +:100500006674206C696D6974732C20626F6F6C293E +:100510000D0A2432313D0020287265706F727420FC +:10052000696E636865732C20626F6F6C290D0A24F5 +:1005300032303D00202861726320746F6C657261F7 +:100540006E63652C206D6D290D0A2431333D00202A +:10055000286A756E6374696F6E206465766961746C +:10056000696F6E2C206D6D290D0A2431323D0029F2 +:100570000D0A2431313D0020287374617475732095 +:100580007265706F7274206D61736B3A0020287011 +:10059000726F62652070696E20696E766572742C68 +:1005A00020626F6F6C290D0A2431303D0020286CC9 +:1005B000696D69742070696E7320696E76657274F6 +:1005C0002C20626F6F6C290D0A24363D00202873A1 +:1005D00074657020656E61626C6520696E76657207 +:1005E000742C20626F6F6C290D0A24353D00290D93 +:1005F0000A24343D00202864697220706F727420D0 +:10060000696E76657274206D61736B3A00290D0A0C +:1006100024333D0020287374657020706F7274203D +:10062000696E76657274206D61736B3A0020287371 +:100630007465702069646C652064656C61792C2038 +:100640006D736563290D0A24323D0020287374659B +:10065000702070756C73652C2075736563290D0AA5 +:1006600024313D0024303D0024242028766965771C +:10067000204772626C2073657474696E6773290D0C +:100680000A2423202876696577202320706172610F +:100690006D6574657273290D0A2447202876696593 +:1006A0007720706172736572207374617465290DAF +:1006B0000A2449202876696577206275696C642070 +:1006C000696E666F290D0A244E20287669657720A9 +:1006D0007374617274757020626C6F636B73290D33 +:1006E0000A24783D76616C756520287361766520F3 +:1006F0004772626C2073657474696E67290D0A24F1 +:100700004E783D6C696E6520287361766520737440 +:10071000617274757020626C6F636B290D0A2443DB +:100720002028636865636B2067636F6465206D6F65 +:100730006465290D0A245820286B696C6C20616C53 +:1007400061726D206C6F636B290D0A24482028723A +:10075000756E20686F6D696E67206379636C6529BB +:100760000D0A7E20286379636C652073746172744E +:10077000290D0A2120286665656420686F6C64294C +:100780000D0A3F202863757272656E742073746160 +:10079000747573290D0A6374726C2D782028726544 +:1007A000736574204772626C290D0A0000002100F5 +:1007B000240027002A002D00300033000101000032 +:1007C000040107010A016F6B0D0A000D0A00486F52 +:1007D0006D696E67206661696C0050726F6265209A +:1007E0006661696C0041626F727420647572696E33 +:1007F00067206379636C6500536F6674206C696D64 +:1008000069740048617264206C696D697400414CC0 +:1008100041524D3A20003E0D0A002C4C696D3A00C1 +:100820002C52583A002C4275663A002C002C575036 +:100830006F733A002C002C4D506F733A003C446F9C +:100840006F72003C436865636B003C416C61726D84 +:10085000003C486F6D65003C486F6C64003C52750D +:100860006E003C49646C65005D0D0A00526573744E +:100870006F72696E672064656661756C7473005091 +:10088000676D20456E6400436865636B20446F6F3D +:10089000720044697361626C656400456E61626CEC +:1008A00065640043617574696F6E3A20556E6C6FB4 +:1008B000636B656400272448277C2724582720740D +:1008C0006F20756E6C6F636B005265736574207476 +:1008D0006F20636F6E74696E7565005B005D0D0A55 +:1008E000003A002C005B5052423A000D0A00496E5B +:1008F00076616C69642067636F64652049443A00DF +:10090000556E646566696E6564206665656420720F +:10091000617465004D6F64616C2067726F75702043 +:1009200076696F6C6174696F6E00486F6D696E6790 +:10093000206E6F7420656E61626C656400416C614D +:10094000726D206C6F636B004E6F742069646C6510 +:1009500000454550524F4D207265616420666169C3 +:100960006C2E205573696E672064656661756C74C2 +:10097000730056616C7565203C2033207573656388 +:100980000053657474696E672064697361626C6595 +:10099000640056616C7565203C203000496E7661BC +:1009A0006C69642073746174656D656E7400426176 +:1009B00064206E756D62657220666F726D61740081 +:1009C000457870656374656420636F6D6D616E64F6 +:1009D000206C6574746572006572726F723A2000E3 +:1009E00000002200250028002B002E0031003400DA +:1009F00002010000050108010B01050505050705B9 +:100A000008080808020202020A0A0808040404048A +:100A100001010101010101010303030303030303B6 +:100A2000040707070C0C0C0C0C0C0C0C0202020245 +:100A300006060606060606060B0B0B0B0B0B0B0B2E +:100A400001021020200808102040102040800201E0 +:100A500002010804020101020408102040808040C5 +:100A600020100804020180040201804020100804C4 +:100A70000201080402010102040810204080010262 +:100A800004081020408000000A0B02090C0D0E081B +:100A90000703040100000000000000000000000047 +:100AA0000000000000000000000000000000000046 +:100AB0000000121110000000000000000000000003 +:100AC00000000000000000000000000011241FBE14 +:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D +:100AE000B2E0E6E5FFEE00E00BBF02C007900D921A +:100AF000AC34B107D9F723E1ACE4B4E001C01D92F6 +:100B0000A53AB207E1F70E94C05A0C94A97778CAB7 +:100B10002F923F924F925F926F927F928F929F920D +:100B2000AF92BF92CF92DF92EF92FF920F931F93FB +:100B3000CF93DF93CDB7DEB7CA5CD1090FB6F89477 +:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B +:100B5000D04089E3EDE2F3E1DF011D928A95E9F7E8 +:100B60008AE0E6E6F3E1AEE2B3E101900D928A9508 +:100B7000E1F7FE01E756FF4F1082C155DF4F1982A2 +:100B80001882CF5AD040C555DF4F19821882CB5AF0 +:100B9000D040C554DF4F1882CB5BD040CA55DF4FE1 +:100BA0001882C65AD040C655DF4F1882CA5AD04064 +:100BB000E859F109C256DF4FF983E883CE59D04096 +:100BC0009E01235A3F4FC056DF4F39832883C05AB6 +:100BD000D0401E0131E5230E311CC1010896C154DD +:100BE000DF4F99838883CF5BD040C756DF4F888122 +:100BF000C959D040C754DF4FE881F981C95BD04063 +:100C0000E80FF11D1081112311F40C94A3149FEB34 +:100C1000910F9A3110F00C94B61D8F5FC756DF4FBD +:100C20008883C959D040AE014B565F4FBE0167560D +:100C30007F4FC754DF4F88819981C95BD0400E94A4 +:100C40005141882311F40C94B81DCB56DF4FC88056 +:100C5000D980EA80FB80C559D040C701B6010E9407 +:100C60008C700E94F96DCF54DF4F688379838A833B +:100C70009B83C15BD040CF54DF4F68807980C15BDC +:100C8000D040B30180E090E00E94256E9B01AC0152 +:100C9000C701B6010E94AB6C20E030E048EC52E4A2 +:100CA0000E94DE6F4B015C0120E030E0A9010E9450 +:100CB000A36F20E030E040E05FE387FD05C0C501A1 +:100CC000B4010E94AC6C04C0C501B4010E94AB6CBD +:100CD0000E94F46D2B011D3409F4EFC7103511F497 +:100CE0000C94230F173411F00C945913C756DF4F8F +:100CF0008881C959D040C754DF4FA881B981C95BE9 +:100D0000D040A80FB11DCD01BAE96B16B8E07B0643 +:100D100009F403C158F4F4ED6F16F7E07F0699F07B +:100D200029E9621628E07206D1F14EC53CE9631646 +:100D300038E0730609F472C2ADE96A16A8E07A06D3 +:100D400009F45BC341C51A821982E1E0F0E0EC0FBF +:100D5000FD1FFF93EF9324EC33E03F932F939F937A +:100D60008F930E947D710F900F900F900F900F90B6 +:100D70000F90181619060CF06CC389819A81909314 +:100D8000720D8093710D11E010932C0D8091C30CA6 +:100D900081111DC50E9428271093C30C18C58E0110 +:100DA0000B5E1F4F1F930F939E01275D3F4F3F9395 +:100DB0002F937E01FDE3EF0EF11CFF92EF923F9225 +:100DC0002F9229E132E03F932F939F938F930E94BC +:100DD0007D710FB6F894DEBF0FBECDBF04970CF443 +:100DE00038C3EF961CAE1DAE1EAE1FAEEF97E59654 +:100DF0001CAE1DAE1EAE1FAEE597AB961CAE1DAE73 +:100E00001EAE1FAEAB97A1961CAE1DAE1EAE1FAEA2 +:100E1000A1978CE0C256DF4FA881B981CE59D0404E +:100E20001D928A95E9F7AE0145585F4F60E070E08A +:100E3000C1010E945141882309F4C9C4AE014F5831 +:100E40005F4F60E070E0C7010E945141882309F4C0 +:100E5000BEC4AE0149595F4F60E070E0CE01899693 +:100E60000E945141882309F4B2C4AE01435A5F4F36 +:100E700060E070E0C8010E945141882309F4A7C4D2 +:100E800020E030E044EB52E4E5966CAD7DAD8EADF4 +:100E90009FADE5970E94AB6C21EE3EE245E652E441 +:100EA0000E948C6D6B017C01E5966CAF7DAF8EAFBF +:100EB0009FAFE5970E94896DEF968CAC9DACAEAC70 +:100EC000BFACEF97A50194010E94DE6F69837A831E +:100ED0008B839C83C701B6010E9441709B01AC01CA +:100EE000C501B4010E94DE6F6D837E838F83988776 +:100EF000AB968CAD9DADAEADBFADAB9789879A87F4 +:100F0000AB87BC87A1962CAD3DAD4EAD5FADA19733 +:100F100000E0BE016F5F7F4F52C4F1011082118269 +:100F20001282138221961CAE1DAE1EAE1FAE2197FB +:100F300021E030E02C0F3D1F3F932F938E010B5E7D +:100F40001F4F1F930F93CF55DF4F3881C15AD040A9 +:100F50003F93C056DF4FA881C05AD040AF9322E4E0 +:100F600032E03F932F939F938F930E947D710FB632 +:100F7000F894DEBF0FBECDBF03970CF46AC2A10187 +:100F800060E070E0C8010E945141882309F41FC449 +:100F9000AE01435C5F4F60E070E0CE0101960E94BD +:100FA0005141882309F413C49E01275D3F4FC65663 +:100FB000DF4F39832883CA59D0408CE0D9011D9274 +:100FC0008A95E9F76091130D7091140D8091150DBC +:100FD0009091160D0E94276E20E030E040EA52E426 +:100FE0000E948C6D2091070D3091080D4091090DE4 +:100FF00050910A0D0E94AC6CCE55DF4F6883798307 +:101000008A839B83C25AD0406091170D7091180D4E +:101010008091190D90911A0D0E94276E20E030E00A +:1010200040EA52E40E948C6D20910B0D30910C0D22 +:1010300040910D0D50910E0D0E94AC6CCB54DF4FC2 +:10104000688379838A839B83C55BD04060911B0D45 +:1010500070911C0D80911D0D90911E0D0E94276EA8 +:1010600020E030E040EA52E40E948C6D6B017C018C +:1010700020E030E044EB52E460910F0D7091100DD0 +:101080008091110D9091120D0E94AB6C9B01AC01EF +:10109000C701B6010E94AC6C7B018C016F968EADCE +:1010A0009FAD6F978130910589F14CF5892B09F03F +:1010B000DDC120E030E044EB52E4F1016081718158 +:1010C000828193810E94AB6CD1016D937D938D934E +:1010D0009C931397FE01F1964F019E01235D3F4FB4 +:1010E0005901DE0199966D017B018C01CB54DF4FD4 +:1010F000288139814A815B81C55BD0402DC0823017 +:101100009105E1F0039709F440C0B0C1F10160819D +:101110007181828193819E012F5C3F4F4901DE01E5 +:101120009D965D01FE01B9966F01CB54DF4F28817A +:1011300039814A815B81C55BD04016C0D1012D91B8 +:101140003D914D915C91FE01F1964F01CE018D963E +:101150005C01DE0199966D01CE55DF4F6881798182 +:101160008A819B81C25AD0400E940548A401B501E2 +:10117000C6010E941D2C21962CAD3DAD4EAD5FAD3C +:10118000219700E0B60180E01BC3F101C080D1804F +:10119000E280F38020E030E044EB53E4C701B60185 +:1011A0000E94A36F18160CF412C320E030E0A901CE +:1011B000C701B6010E94856D87FD09C38091F90CB6 +:1011C0009091FA0C0497029708F521968CAC9DAC8F +:1011D000AEACBFAC219720916D0D30916E0D40915A +:1011E0006F0D5091700DC701B6010E94AB6CC0929B +:1011F0006D0DD0926E0DE0926F0DF092700D109209 +:10120000310DA50194010E942528E1C2C701B60154 +:101210000E941F2981E08093310DD9C29E012B5E6F +:101220003F4F3F932F938E01075D1F4F1F930F93E7 +:101230007E01FDE3EF0EF11CFF92EF923F922F92A1 +:101240002AE532E03F932F939F938F930E947D7105 +:101250000FB6F894DEBF0FBECDBF04970CF4F9C0F3 +:10126000EF961CAE1DAE1EAE1FAEEF97E5961CAE00 +:101270001DAE1EAE1FAEE597AB961CAE1DAE1EAEEC +:101280001FAEAB97A1961CAE1DAE1EAE1FAEA197B2 +:10129000AE0145585F4F60E070E0C1010E945141CE +:1012A000882309F494C2AE014F585F4F60E070E0AC +:1012B000C7010E945141882309F489C2AE014959EE +:1012C0005F4F60E070E0C8010E945141882309F43B +:1012D0007EC2AE01435A5F4F60E070E0CE0145969A +:1012E0000E945141882309F472C260911B0D7091D4 +:1012F0001C0D80911D0D90911E0D0E94276ECE55E4 +:10130000DF4F688379838A839B83C25AD040609180 +:10131000170D7091180D8091190D90911A0D0E9462 +:10132000276ECB54DF4F688379838A839B83C55BA9 +:10133000D0406091130D7091140D8091150D909116 +:10134000160D0E94276EDE0119964D01FE0135969D +:101350005F019E012F5F3F4F6901CE55DF4FE8804F +:10136000F9800A811B81C25AD040CB54DF4F2881BB +:1013700039814A815B81C55BD0400E94C62CA401A3 +:10138000B501C6010E941D2CEF962CAD3DAD4EADB2 +:101390005FADEF9769817A818B819C810E94AC6CF3 +:1013A00069837A838B839C83E5962CAD3DAD4EADEE +:1013B0005FADE5976D817E818F8198850E94AC6CD1 +:1013C0006D837E838F839887AB962CAD3DAD4EADFC +:1013D0005FADAB9769857A858B859C850E94AC6CE7 +:1013E00069877A878B879C87A1962CAD3DAD4EADE2 +:1013F0005FADA19700E0B601E2C1CF55DF4F388164 +:10140000C15AD0403F93C056DF4FA881C05AD04048 +:10141000AF938E0109591F4F1F930F937E01B1E7C0 +:10142000EB0EF11CFF92EF926E01EBE7CE0ED11C9A +:10143000DF92CF9229E132E03F932F939F938F93D6 +:101440000E947D710FB6F894DEBF0FBECDBF04972A +:1014500084F41F9281E08F938DE092E09F938F93AD +:101460000E94AA3B0F900F900F900F9082E390E0A4 +:10147000B0C1CF56DF4F188219821A821B82C15920 +:10148000D040C357DF4F188219821A821B82CD5871 +:10149000D040C757DF4F188219821A821B82C95861 +:1014A000D040CB57DF4F188219821A821B82C55851 +:1014B000D0408CE0D1011D928A95E9F7AE014F56DC +:1014C0005F4F60E070E0C6010E945141882309F43B +:1014D0007EC1AE0143575F4F60E070E0C7010E94DC +:1014E0005141882309F473C1AE0147575F4F60E053 +:1014F00070E0C8010E945141882309F468C1AE011F +:101500004B575F4F60E070E0CE01835A9F4F0E94BF +:101510005141882309F45BC160911B0D70911C0D32 +:1015200080911D0D90911E0D0E94276ECB54DF4FB0 +:10153000688379838A839B83C55BD04020E030E059 +:1015400044EB52E460910F0D7091100D8091110DDC +:101550009091120D0E94AB6C6B017C0120E030E099 +:1015600040EA52E4CB54DF4F688179818A819B81C4 +:10157000C55BD0400E948C6D9B01AC01C701B601D8 +:101580000E94AC6CCD53DF4F688379838A839B8341 +:10159000C35CD0406091170D7091180D8091190DAA +:1015A00090911A0D0E94276EC953DF4F688379838B +:1015B0008A839B83C75CD0406091130D7091140D9A +:1015C0008091150D9091160D0E94276EC154DF4F2A +:1015D00088809980CF5BD040F1013496CE55DF4FA3 +:1015E000F983E883C25AD0405F016101CB54DF4FD9 +:1015F000E880F9800A811B81C55BD040C953DF4F69 +:10160000288139814A815B81C75CD0400E94C62C09 +:10161000C154DF4F48815981CF5BD040CE55DF4F59 +:1016200068817981C25AD040C1010E941D2CD1012C +:101630006D917D918D919C9113971496CD90DD9035 +:10164000ED90FC9017979B01AC010E94DE6F4B015F +:101650005C01A7019601C701B6010E94DE6F9B01E4 +:10166000AC01C501B4010E94AC6C0E944B70CF5616 +:10167000DF4F288139814A815B81C159D0400E9466 +:10168000AC6C6B017C01CF56DF4F688379838A8312 +:101690009B83C159D040C357DF4F288139814A818C +:1016A0005B81CD58D040CD53DF4F688179818A81ED +:1016B0009B81C35CD0400E94AC6C21EE3EE245E6CB +:1016C00052E40E948C6DCE55DF4F688379838A8304 +:1016D0009B83C25AD0400E94896D9B01AC01C70117 +:1016E000B6010E94DE6F4B015C01F10160837183E2 +:1016F00082839383CE55DF4F688179818A819B8174 +:10170000C25AD0400E9441709B01AC01C701B60192 +:101710000E94DE6FD10114966D937D938D939C93FF +:101720001797C757DF4F288139814A815B81C95894 +:10173000D04018966D917D918D919C911B970E9440 +:10174000AC6CF10160877187828793878E01035C9F +:101750001F4F24E045E0C501B4010E94306AD10169 +:1017600014966D917D918D919C911797045111095B +:1017700024E045E00E94306AF10160857185828530 +:1017800093850451110924E045E00E94306ACF5648 +:10179000DF4F688179818A819B81C159D040045192 +:1017A000110924E045E00E94306ACB57DF4F2881C1 +:1017B00039814A815B81C558D04000E0B10181E0A8 +:1017C0000E943C4290E005C081E090E002C080E0D1 +:1017D00090E09C01215031092230310510F00C9429 +:1017E0001F1EF8E26F16710409F414C280F534E18B +:1017F0006316710498F481E16816710408F061C100 +:1018000094E06916710409F474C008F4E3C0BAE006 +:101810006B16710409F45EC00C94C41DECE16E16E5 +:10182000710409F457C038F426E16216710408F413 +:10183000A2C10C94C41D3EE16316710409F44AC0B0 +:1018400086E26816710409F4C5C00C94C41D9DE3BA +:101850006916710409F4D3C110F5B5E36B16710470 +:1018600009F447C060F4FBE26F16710409F495C1F6 +:1018700021E36216710409F490C10C94C41D3CE389 +:101880006316710410F00C94C41DCF54DF4F88818F +:10189000C15BD040865380933413A9E0AAC18CE584 +:1018A0006816710460F49AE56916710408F01FC1A6 +:1018B000A0E56A16710409F49BC00C94C41DBCE534 +:1018C0006B16710439F0EFE56E16710408F43CC133 +:1018D0000C94C41D4114510411F00C94D81DC6552C +:1018E000DF4FF881CA5AD040FF2309F445C00C9459 +:1018F000BA1D2CE16216710491F148F484E0681677 +:10190000710479F09AE069167104E1F08AC1AEE1E0 +:101910006A167104D9F1B5E36B16710409F456C067 +:1019200080C181E054C0FFE16F16710408F042C02D +:101930002AE06216710441F4E1E0C655DF4FE88306 +:10194000CA5AD04082E043C03CE16316710409F0FA +:1019500078C1F1E0C655DF4FF883CA5AD040411430 +:10196000510441F02AE04216510411F00C94C41DB8 +:1019700084E010C083E00EC0EEE16E16710499F6AB +:1019800031E0C655DF4F3883CA5AD0404114510464 +:1019900049F485E080932D13CE55DF4F1882C25A4B +:1019A000D0405AC18AE04816510411F00C94C41D6D +:1019B00086E0F0CF85E36816710411F00C94ED1DFC +:1019C00091E0C655DF4F9883CA5AD04087E0809394 +:1019D0002D1327C1C655DF4FE881CA5AD040E11107 +:1019E0000C94BA1DF2E0C655DF4FF883CA5AD040B6 +:1019F00022E06216710419F158F461147104D9F0EF +:101A00006A94672809F013C181E080932E130FC1F7 +:101A100096E269167104C1F0A0E56A16710409F432 +:101A20004BC0B3E06B16710409F001C183E08093F1 +:101A30002E1331E09AC010922E13E1E0ECC082E048 +:101A400080932E1321E088C08EE14816510401F1E5 +:101A500080F4A4E14A16510411F00C94C41D84E0F2 +:101A600080932E13F1E0CE55DF4FF883C25AD04059 +:101A7000F3C0B8E24B165104A9F0E2E34E1651044C +:101A800011F00C94C41D87E080932E1381E039C0BF +:101A900085E080932E1321E0CE55DF4F2883C25A74 +:101AA000D040DAC086E080932E1331E0CE55DF4F70 +:101AB0003883C25AD040D0C088E080932E1391E082 +:101AC00062C0A2E16A16710441F0B3E16B167104C1 +:101AD00049F010923213E2E09EC081E0809332130D +:101AE000F2E0A6C082E08093321322E035C04114B8 +:101AF0005104B9F43AE56316710449F410923113B4 +:101B000083E0CE55DF4F8883C25AD040A5C081E024 +:101B10008093311393E0CE55DF4F9883C25AD04063 +:101B20009BC0AAE04A16510411F00C94C41DBAE5FA +:101B30006B16710411F40C94C41DE4E0CE55DF4F14 +:101B4000E883C25AD04088C0FDE56F16710451F495 +:101B500081E080932F1325E0CE55DF4F2883C25AB2 +:101B6000D0406BC010922F1335E0CE55DF4F388335 +:101B7000C25AD04062C084E16816710451F481E019 +:101B80008093301396E0CE55DF4F9883C25AD040F1 +:101B900054C010923013A6E02CC0C655DF4FB88158 +:101BA000CA5AD040B1110C94BA1DE1E36E1671040B +:101BB00051F410923313F8E0CE55DF4FF883C25A38 +:101BC000D04023E044C03AE04316510411F00C9495 +:101BD000C41D81E08093331388E0CE55DF4F8883A6 +:101BE000C25AD04093E0C655DF4F9883CA5AD040BE +:101BF00033C0CE55DF4FA883C25AD0401EC04528FF +:101C000011F00C94C41DBAE0CE55DF4FB883C25A10 +:101C1000D04022C0E7E0CE55DF4FE883C25AD04023 +:101C20000CC0CE55DF4F1882C25AD04006C0F1E03A +:101C3000CE55DF4FF883C25AD040452869F00C9446 +:101C4000EB1DCE55DF4F1882C25AD04021E0C65559 +:101C5000DF4F2883CA5AD040C555DF4FE881F9814C +:101C6000CB5AD040CF01A0E0B0E0CE55DF4F088086 +:101C7000C25AD04004C0B695A795979587950A9407 +:101C8000D2F780FF03C085E10C941F1E81E090E035 +:101C9000A0E0B0E0CE55DF4F0880C25AD04004C06B +:101CA000880F991FAA1FBB1F0A94D2F7C555DF4F93 +:101CB00028813981CB5AD040F2C4672B11F00C94A3 +:101CC000EB1DC756DF4F8881C959D040C754DF4F3D +:101CD00068817981C95BD040680F711DAE0147569C +:101CE0005F4FCF54DF4F88819981C15BD0400E9404 +:101CF000511E9C01215031092230310510F00C9405 +:101D00001F1E36E06316710428F483E06816710420 +:101D100090F026C098E06916710410F40C94C41D6C +:101D2000AAE06A16710408F440C0BEE16B167104A3 +:101D300011F00C94C41DE2E06E16710461F0FEE136 +:101D40006F16710441F0672809F046C081E0809366 +:101D500035132BE032C082E0809335133BE036C070 +:101D600084E06816710471F095E069167104A1F0C1 +:101D700081E080933713ACE0CE55DF4FA883C25A81 +:101D8000D04030C082E080933713BCE0CE55DF4FA7 +:101D9000B883C25AD04026C010923713ECE0CE551B +:101DA000DF4FE883C25AD0401DC0F9E06F167104BE +:101DB00051F082E0809336132DE0CE55DF4F28831B +:101DC000C25AD0400FC0109236133DE0CE55DF4FBF +:101DD0003883C25AD04006C08BE0CE55DF4F88838F +:101DE000C25AD040C555DF4FE881F981CB5AD04067 +:101DF000CF01A0E0B0E0CE55DF4F0880C25AD040FE +:101E000004C0B695A795979587950A94D2F780FD5B +:101E10003ACF81E090E0A0E0B0E0CE55DF4F0880FF +:101E2000C25AD04004C0880F991FAA1FBB1F0A9432 +:101E3000D2F7E82BF92BC555DF4FF983E883CB5A4E +:101E4000D0400C94F505672B11F00C94EB1DC75690 +:101E5000DF4F8881C959D040C754DF4FE881F981ED +:101E6000C95BD040E80FF11D27EB621628E072062F +:101E700009F4FBC208F06AC18CE9681688E07806AC +:101E800009F4A5C108F076C0A9E96A16A8E07A06A7 +:101E900009F497C108F05FC0E8E96E16E8E07E0635 +:101EA00009F0CCC384E16E0199E2C90ED11CD601C0 +:101EB000E82F1D92EA95E9F77E01F5E1EF0EF11C9E +:101EC000D701E82F1D92EA95E9F7C256DF4FA881A6 +:101ED000B981CE59D0401D928A95E9F780E090E013 +:101EE0000E94204ACF54DF4F688379838A839B8383 +:101EF000C15BD04081E090E00E94204A2B013C0170 +:101F000082E090E00E94204A4B015C01860124E0BF +:101F100045E0CF54DF4F688179818A819B81C15B25 +:101F2000D0400E94306A870124E045E0C301B2013D +:101F30000E94306A0451110924E045E0C501B40152 +:101F40000E94306AFF92EF92DF92CF921F930F931D +:101F500083E892E051C3FAE96F16F8E07F0609F4CE +:101F600033C12BE9621628E0720609F067C38FE9D6 +:101F700092E02FC13EE9631638E0730609F433C1DD +:101F800008F42CC19CEA691698E0790609F4C1C1ED +:101F9000ADEA6A16A8E07A0609F050C3A1961CAE15 +:101FA0001DAE1EAE1FAEA197F101108211821282EA +:101FB000138221961CAE1DAE1EAE1FAE219784E18A +:101FC0009E01275D3F4FC656DF4F39832883CA598C +:101FD000D040D901E82F1D92EA95E9F72451310943 +:101FE000C456DF4F39832883CC59D040D901E82F1C +:101FF0001D92EA95E9F7C256DF4FA881B981CE5903 +:10200000D0401D928A95E9F780E090E00E94204A36 +:10201000CF54DF4F688379838A839B83C15BD04031 +:1020200081E090E00E94204ACB54DF4F688379839F +:102030008A839B83C55BD04082E090E00E94204A67 +:1020400020E030E044EB52E40E94AB6C2B013C01F9 +:10205000FE01FD964F0151019E01235A3F4F690138 +:102060007B018C01CB54DF4F288139814A815B8110 +:10207000C55BD040CF54DF4F688179818A819B81D5 +:10208000C15BD0400E940548A401B101C6010E9475 +:102090001D2CA1966CAD7DAD8EAD9FADA197D101EC +:1020A000CD90DD90ED90FC909B01AC010E94DE6F25 +:1020B0004B015C01A7019601C701B6010E94DE6FCA +:1020C0009B01AC01C501B4010E94AC6C0E944B7035 +:1020D0008E01075D1F4F24E045E00E94306A20E03A +:1020E00030E044EB52E4C301B2010E94AC6C0451F5 +:1020F000110924E045E00E94306A21966CAD7DAD67 +:102100008EAD9FAD21970451110924E045E00E9456 +:10211000306A1F930F93C356DF4FF881CD59D040DB +:10212000FF93C456DF4F2881CC59D0402F93C5561A +:10213000DF4F3881CB59D0403F93C656DF4F88815F +:10214000CA59D0408F9381EC92E056C2B0EC6B1626 +:10215000B8E07B0609F4B5C1D0F439EB631638E07A +:10216000730609F499C108F48CC19AEB691698E0DA +:10217000790609F499C1ABEB6A16A8E07A0609F072 +:102180005DC28091020185FB882780F998C1B2EC7D +:102190006B16B8E07B0609F405C208F4D4C133EC31 +:1021A000631638E0730609F40FC280E6681689E00A +:1021B000780609F043C28091FA0C8F938091F90C54 +:1021C00029C281E992E005C083E79DE002C086EA6A +:1021D00092E09F938F938AE992E01FC28CE494E08F +:1021E0009F938F9393C080818E3409F0D0C18181F9 +:1021F0008053843008F0CBC194E16E013DE3C30EFF +:10220000D11CD601E92F1D92EA95E9F77E01F9E28A +:10221000EF0EF11CD701E92F1D92EA95E9F75E0157 +:10222000F5E1AF0EB11CD501E92F1D92EA95E9F752 +:10223000C256DF4FA881B981CE59D0401D929A95E0 +:10224000E9F78230E1F0833031F1813061F082E0F2 +:1022500090E00E94204A850124E045E00E94306A17 +:10226000BF92AF9253C080E090E00E94204A860166 +:1022700024E045E00E94306ADF92CF9247C081E0BF +:1022800090E00E94204A870124E045E00E94306AE5 +:10229000FF92EF923BC08091F90C9091FA0C049759 +:1022A000029748F460916D0D70916E0D80916F0DE5 +:1022B0009091700D22C020E030E040E05FE360913B +:1022C00000027091010280910202909103020E942B +:1022D000AB6C20E030E040E05FE30E94DE6F20E086 +:1022E00030E044E353E40E94DE6F9B01AC0160E008 +:1022F00070E084E393E40E94AB6C8E010F5F1F4F8C +:1023000024E045E00E94306A1F930F938DEA92E02B +:1023100084C1A1961CAE1DAE1EAE1FAEA197D10109 +:102320001D921D921D921C92139721961CAE1DAEFC +:102330001EAE1FAE219784E1FE01B996C656DF4F4F +:10234000F983E883CA59D040282F11922A95E9F7DA +:10235000DE015596C456DF4FB983A883CC59D040CF +:10236000E82F1D92EA95E9F7C256DF4FA881B9819F +:10237000CE59D0401D928A95E9F780E090E00E9406 +:10238000204A2B013C0181E090E00E94204ACF547A +:10239000DF4F688379838A839B83C15BD04082E06F +:1023A00090E00E94204A20E030E044EB52E40E949A +:1023B000AB6CFE01FD964F0151019E01235A3F4F28 +:1023C00069017B018C01CF54DF4F288139814A811B +:1023D0005B81C15BD040C301B2010E940548A401EA +:1023E000B101C6010E941D2CA1966CAD7DAD8EADD4 +:1023F0009FADA1978E01075D1F4F24E045E00E942D +:10240000306AD1016D917D918D919C91045111099A +:1024100024E045E00E94306A21966CAD7DAD8EAD22 +:102420009FAD21970451110924E045E00E94306AD4 +:102430001F930F93C356DF4FF881CD59D040FF93C0 +:10244000C456DF4F2881CC59D0402F93C556DF4F5B +:102450003881CB59D0403F93C656DF4F8881CA5947 +:10246000D0408F9383EB92E0C7C0A49B11C08FE351 +:102470000E9433578A30910558F08734910530F027 +:1024800009C0479905C00898009904C082E017C0A8 +:1024900080E015C081E013C082B38695869586954D +:1024A00091E0892781700BC08BE30E94335721E0B4 +:1024B0008536910508F420E01F922F93ACC01F923F +:1024C000A9C021E030E02C0F3D1F3F932F938FECEC +:1024D00092E09F938F93FF93EF930E947D710F90F3 +:1024E0000F900F900F900F900F90181619060CF088 +:1024F00041C029813A812634310508F048C0F901EC +:10250000EA57F54F8491F901E05CF54F1491F90118 +:10251000E650F64F0491002391F081110E94AF56CE +:10252000E02FF0E0EE0FFF1FEE5EFC4FA591B4919F +:10253000EC911E2381E090E021F480E002C080E075 +:1025400090E09F9367C081E090E08C0F9D1F9F9368 +:102550008F938FEC92E09F938F93FF93EF930E9462 +:102560007D710F900F900F900F900F900F90181695 +:10257000190684F01F9281E08F938DE092E09F9383 +:102580008F930E94AA3B0F900F900F900F9082E3C1 +:1025900090E056C089819A8180319105C0F70E94F0 +:1025A0003357CFCF8091390D8F938091380D8F9312 +:1025B0008091370D8F938091360D8F938091350DDB +:1025C0008F938091340D15C080E090E00E94CE4939 +:1025D000182F092F81E090E00E94CE49F82EE92EB5 +:1025E00082E090E00E94CE49EF92FF920F931F93FA +:1025F0009F938F9383ED92E09F938F9387EC9CE062 +:102600009F938F930E944F710FB6F894DEBF0FBE59 +:10261000CDBF11C08F9381E793E09F938F9387EC99 +:102620009CE09F938F930E944F710F900F900F909B +:102630000F900F900F9080E090E002C081E090E05A +:102640009C01215031092230310510F00C941F1EDD +:10265000C555DF4F28813981CB5AD040C901A0E050 +:10266000B0E0CE55DF4F0880C25AD04004C0B695C6 +:10267000A795979587950A94D2F780FD04CB81E0C2 +:1026800090E0A0E0B0E0CE55DF4F0880C25AD040C5 +:1026900004C0880F991FAA1FBB1F0A94D2F7282BCA +:1026A000392BC555DF4F39832883CB5AD0400C9442 +:1026B000F505812F110F990BAA0BBB0BFC01E654FA +:1026C000F109E531F10510F00C94C41D8827EE588E +:1026D000FF4F8F4F0C941C71C0923813D092391356 +:1026E000E0923A13F0923B13CE55DF4F1882C25A54 +:1026F000D040D2C0C0923C13D0923D13E0923E1322 +:10270000F0923F13C554DF4F3881CB5BD04031602E +:10271000C554DF4F3883CB5BD04081E04FC0C092BF +:102720004013D0924113E0924213F0924313C554E8 +:10273000DF4F9881CB5BD0409260C554DF4F9883C8 +:10274000CB5BD040A2E053C0C0924413D09245135B +:10275000E0924613F0924713C554DF4FB881CB5B2C +:10276000D040B460C554DF4FB883CB5BD040E3E0CA +:1027700058C0CF54DF4FF881C15BD040F09348136D +:1027800024E069C0C701B6010E94F46D609349134B +:1027900070934A1380934B1390934C1335E0CE55AE +:1027A000DF4F3883C25AD04077C0C0924D13D092C9 +:1027B0004E13E0924F13F092501386E0CE55DF4F48 +:1027C0008883C25AD04068C0C0925113D09252132D +:1027D000E0925313F092541397E059C0C0925513EE +:1027E000D0925613E0925713F0925813A8E0CE55AA +:1027F000DF4FA883C25AD0404FC0C0925A13D09224 +:102800005B13E0925C13F0925D13CA55DF4FB88101 +:10281000C65AD040B160CA55DF4FB883C65AD040BF +:10282000EAE0CE55DF4FE883C25AD04035C0C092AF +:102830005E13D0925F13E0926013F0926113CA5559 +:10284000DF4FF881C65AD040F260CA55DF4FF88397 +:10285000C65AD0402BE0CE55DF4F2883C25AD04015 +:102860001BC0C0926213D0926313E0926413F09283 +:102870006513CA55DF4F3881C65AD0403460CA55F7 +:10288000DF4F3883C65AD0408CE098CF99E0CE55C0 +:10289000DF4F9883C25AD040CE55DF4FA881C25A2D +:1028A000D0400A2FC155DF4FE881F981CF5AD0407F +:1028B000CF01A0E0B0E0CE55DF4F0880C25AD04033 +:1028C00004C0B695A795979587950A94D2F780FF8F +:1028D00002C00C94BC1D81E693E0A0E0B0E0CE55B0 +:1028E000DF4F0880C25AD04004C0B695A79597958F +:1028F00087950A94D2F780FF0BC020E030E0A90151 +:10290000C701B6010E94856D87FF02C00C94BE1DF1 +:1029100081E090E0A0E0B0E004C0880F991FAA1FFA +:10292000BB1F0A95D2F7C155DF4F28813981CF5A95 +:10293000D040282B392BC155DF4F39832883CF5AFC +:10294000D0400C94F505CA55DF4F3881C65AD040A7 +:10295000332369F0C655DF4F8881CA5AD0408111B0 +:1029600006C092E0C655DF4F9883CA5AD040C15581 +:10297000DF4FA881CF5AD040A5FF0FC080914913E7 +:1029800090914A13A0914B13B0914C138038964903 +:10299000A849B10514F00C94C01D80912F1381300B +:1029A00091F4C655DF4FF881CA5AD040F23009F091 +:1029B00040C0C155DF4F2881CF5AD04020FD02C012 +:1029C0000C94CA1D36C080916713811132C0C15565 +:1029D000DF4F3881CF5AD04030FF1BC08091301379 +:1029E000813039F523E333E34BEC51E46091381344 +:1029F0007091391380913A1390913B130E94DE6FCE +:102A0000609338137093391380933A1390933B1368 +:102A100010C08091741390917513A0917613B091AA +:102A200077138093381390933913A0933A13B0938C +:102A30003B13C155DF4F88819981CF5AD04090FD1B +:102A400010C08091701390917113A0917213B09186 +:102A500073138093551390935613A0935713B09309 +:102A6000581380912D138130B9F4C155DF4F9881EF +:102A7000CF5AD04096FD03C08CE10C941F1EC15567 +:102A8000DF4FA881B981CF5AD040AF7BC155DF4F0E +:102A9000B983A883CF5AD04080913213882331F173 +:102AA000813091F4B1E0CF54DF4FB883C15BD040A7 +:102AB000C754DF4F1882C95BD040E2E0CE55DF4FEC +:102AC000E883C25AD04023C0CF54DF4F1882C15B85 +:102AD000D040F2E0C754DF4FF883C95BD04021E01B +:102AE000CE55DF4F2883C25AD04011C032E0CF54B8 +:102AF000DF4F3883C15BD04081E0C754DF4F88830C +:102B0000C95BD040CE55DF4F1882C25AD040809169 +:102B10003013813049F0C655DF4F9881CA5AD040F2 +:102B2000933009F043C036C0BDE2EB2EB3E1FB2E7B +:102B300000E010E0CA55DF4FA881C65AD0408A2E67 +:102B4000912CA12CB12CD501C401002E04C0B69546 +:102B5000A795979587950A94D2F780FF12C023E333 +:102B600033E34BEC51E4F70165A576A587A590A961 +:102B70000E94DE6FD7019D966D937D938D939C93FC +:102B8000D0970F5F1F4FB4E0EB0EF11C033011051F +:102B9000D1F6C1CF80913313813041F4CA55DF4F54 +:102BA000E881C65AD040E43009F0ECC78CE0E9E88F +:102BB000F3E1DE01119601900D928A95E1F7C5557A +:102BC000DF4F28813981CB5AD04031FD08C01091A8 +:102BD0002D131230C1F0183009F4EAC058C18091A9 +:102BE0003413873018F08DE10C941F1E90916C13F4 +:102BF000891769F3BE016F5F7F4F0E94833488237A +:102C000009F4D4C7E4CFCA55DF4F3881C65AD04043 +:102C1000311103C08AE10C941F1EC155DF4F88811A +:102C20009981CF5AD04080759927892B09F424CFF8 +:102C300060914D1370914E1380914F1390915013EA +:102C40000E948C700E94F96D673068F6809148137D +:102C5000843151F0823009F097C7C155DF4F888128 +:102C6000CF5AD04087FD90C7C155DF4FA881B981A9 +:102C7000CF5AD040AF7AC155DF4FB983A883CF5A1E +:102C8000D040662321F022242A94260E02C02090F0 +:102C90003413BE016B5E7F4F822D0E9483348823E4 +:102CA00009F484C7309048138090A1139090A21328 +:102CB000A090A313B090A413ADE2CA2EA3E1DA2E24 +:102CC0008E010B5E1F4FE6E6F3E1C555DF4FF9833A +:102CD000E883CB5AD040E12CF12CCA55DF4FF88164 +:102CE000C65AD0404F2E512C612C712CD301C201F9 +:102CF0000E2C04C0B695A795979587950A94D2F7A0 +:102D000080FF3BC024E132122EC0C555DF4FA881A1 +:102D1000B981CB5AD0409F962D913D914D915C91B8 +:102D2000D29757966D917D918D919C915A970E9463 +:102D3000AB6CF60125A536A547A550A90E94AB6C42 +:102D4000D8016D937D938D939C931397B2E0EB1212 +:102D500014C0A50194010E94AB6CF80160837183DB +:102D6000828393830AC0F60185A596A5A7A5B0A97D +:102D7000F80180839183A283B383FFEFEF1AFF0AE8 +:102D800024E0C20ED11C0C5F1F4FC555DF4F888158 +:102D90009981CB5AD0400496C555DF4F99838883DB +:102DA000CB5AD04093E0E916F10409F09FCF4CC113 +:102DB000CA55DF4FA881C65AD040AA2309F42ACFAA +:102DC0008090A1139090A213A090A313B090A4138D +:102DD000F6E6CF2EF3E1DF2EFE0131961F010DE264 +:102DE00013E1E12CF12C4A2E512C612C712CD301D2 +:102DF000C2010E2C04C0B695A795979587950A94A5 +:102E0000D2F780FF29C0D1012D913D914D915C9168 +:102E1000F6016789708D818D928D0E94AB6CD8010F +:102E20009D962D913D914D915C91D0970E94AB6CF8 +:102E3000F80165A776A787A790ABF2E0EF1216C05E +:102E4000A50194010E94AB6CD8019D966D937D9372 +:102E50008D939C93D0970AC0F60187A590A9A1A94C +:102E6000B2A9F80185A796A7A7A7B0ABFFEFEF1A05 +:102E7000FF0A24E0C20ED11C34E0230E311C0C5F8B +:102E80001F4F83E0E816F10409F0B1CFDCC0C6554E +:102E9000DF4F9881CA5AD040933009F49DC0CA557B +:102EA000DF4FA881C65AD040AA2309F4C2C00091BE +:102EB00031134090A1135090A2136090A31370900F +:102EC000A41376E6A72E73E1B72EEDE2EE2EE3E132 +:102ED000FE2EFE0131964F01C12CD12C8A2F90E09D +:102EE000A0E0B0E0C555DF4F88839983AA83BB83F8 +:102EF000CB5AD040C555DF4F88819981AA81BB81CB +:102F0000CB5AD0400C2C04C0B695A79597958795C1 +:102F10000A94D2F780FD0BC0F5018789908DA18DB1 +:102F2000B28DF70185A796A7A7A7B0AB43C017300E +:102F300009F440C001112BC0D5019F962D913D9100 +:102F40004D915C91D297F40160817181828193816E +:102F50000E94AC6CD7019D962D913D914D915C9155 +:102F6000D0970E94AC6CF70165A776A787A790ABB6 +:102F7000F2E0CF121FC0A30192010E94AC6CD701F6 +:102F80009D966D937D938D939C93D09713C0F5017F +:102F90002789308D418D528DD7019D966D917D9100 +:102FA0008D919C91D0970E94AC6CF70165A776A794 +:102FB00087A790ABFFEFCF1ADF0A24E0A20EB11C67 +:102FC00034E0E30EF11C84E0880E911C93E0C916F6 +:102FD000D10409F08FCF29C61530A9F0173071F14F +:102FE000133089F5CA55DF4FA881C65AD040A111C8 +:102FF00005C0C655DF4F1882CA5AD040BE016B5E6D +:103000007F4F86E010C0CA55DF4FB881C65AD04006 +:10301000B11105C0C655DF4F1882CA5AD040BE0153 +:103020006B5E7F4F87E00E948334882309F4BEC51E +:103030000AC0153079F3173009F0F3C580912E13CB +:10304000823008F0A3C5212C30902E13E8E03E1208 +:1030500011C0CA55DF4FF881C65AD040FF2309F48A +:1030600005C3C655DF4F2881CA5AD040213009F028 +:103070008FC511C3C655DF4F3881CA5AD040323090 +:1030800009F0F4C2311009C0CA55DF4F8881C65A11 +:10309000D040882309F4F1C2FEC220E030E0A9014B +:1030A000609138137091391380913A1390913B13CA +:1030B0000E94856D882309F46DC593E0931538F05F +:1030C000A2E03A1690F4B1E03B1631F0E4C2E7E03A +:1030D000E31508F0BEC2DFC2CA55DF4FF881C65AF9 +:1030E000D040FF2309F4C9C2D6C2CA55DF4F288198 +:1030F000C65AD040222309F48DCDCE55DF4F98819A +:10310000C25AD040892F90E0C555DF4F99838883FC +:10311000CB5AD040C754DF4FB881C95BD040AB2FEA +:10312000B0E0CB54DF4FB983A883C55BD04081E0CA +:1031300090E0A0E0B0E06C017D01CE55DF4F08804B +:10314000C25AD04004C0CC0CDD1CEE1CFF1C0A94FB +:10315000D2F7C754DF4F0880C95BD04004C0880F46 +:10316000991FAA1FBB1F0A94D2F7C82AD92AEA2A94 +:10317000FB2A822F90E0A0E0B0E08C219D21AE21BF +:10318000BF21892B8A2B8B2B09F406C5C555DF4F30 +:1031900088819981CB5AD040880F991F880F991F39 +:1031A000FC01E35DFC4EDC01AA59BC4E57962D9103 +:1031B0003D914D915C915A9765A576A587A590A9FB +:1031C0000E94AB6C4B015C01CB54DF4F888199812D +:1031D000C55BD040880F991F880F991FFC01E35DE4 +:1031E000FC4EDC01AA59BC4E57962D913D914D9154 +:1031F0005C915A9765A576A587A590A90E94AB6CAE +:10320000CA55DF4F688379838A839B83C65AD0402F +:10321000C155DF4F08811981CF5AD040007811275E +:10322000C155DF4FE881CF5AD040E7FF15C1C155E6 +:10323000DF4F28813981CF5AD0402F77C155DF4FDA +:1032400039832883CF5AD0400E94CA66882311F060 +:1032500081E2F5C4809130138130B1F423E333E38C +:103260004BEC51E4609151137091521380915313C0 +:10327000909154130E94DE6F609351137093521318 +:1032800080935313909354134090511350905213C2 +:103290006090531370905413A5019401C501B401BB +:1032A0000E94DE6FC554DF4F688379838A839B83D6 +:1032B000CB5BD040CA55DF4F288139814A815B8181 +:1032C000C65AD040CA01B9010E94DE6FC154DF4F17 +:1032D000688379838A839B83CF5BD04020E030E092 +:1032E00040E850E4C301B2010E94DE6FA3019201E5 +:1032F0000E94DE6FC554DF4F288139814A815B818E +:10330000CB5BD0400E94AB6CC154DF4F2881398128 +:103310004A815B81CF5BD0400E94AB6C6B017C012A +:1033200020E030E0A9010E94856D87FD37C4C70108 +:10333000B6010E944B706B017C01C154DF4F2881A4 +:1033400039814A815B81CF5BD040C554DF4F6881B2 +:1033500079818A819B81CB5BD0400E94AC6C0E94BA +:103360004B709B01AC01C701B60190580E948C6D57 +:103370006B017C0133E0331204C0F7FAF094F7F8E4 +:10338000F09420E030E0A901C301B2010E94856DF4 +:1033900087FF0FC0F7FAF094F7F8F094D301C20159 +:1033A000B0588093511390935213A0935313B0933A +:1033B0005413C555DF4F08811981CB5AD040000FF7 +:1033C000111F000F111F0F5C1C4ECA55DF4F2881C3 +:1033D00039814A815B81C65AD040C701B6010E943B +:1033E000DE6F9B01AC01C501B4010E94AB6C20E013 +:1033F00030E040E05FE30E94DE6FD8011B966D93E2 +:103400007D938D939C931E97CB54DF4F0881198138 +:10341000C55BD040000F111F000F111F0F5C1C4E29 +:10342000A5019401C701B6010E94DE6FCA55DF4FA6 +:10343000288139814A815B81C65AD0400E94AC6C98 +:1034400020E030E040E05FE30E94DE6FF801638738 +:103450007487858796871FC1C554DF4FF881CB5B82 +:10346000D0404F2E512C612C712CC420D520E62049 +:10347000F720CD28CE28CF2809F492C3C155DF4FBD +:1034800028813981CF5AD040217FC155DF4F398300 +:103490002883CF5AD04080913013813009F491C0F5 +:1034A000C555DF4FE881F981CB5AD040EE0FFF1FA1 +:1034B000EE0FFF1FEF5CFC4EC384D484E584F684DA +:1034C000A7019601C501B4010E94AB6C2B013C0120 +:1034D000CB54DF4FE881F981C55BD040EE0FFF1F71 +:1034E000EE0FFF1FEF5CFC4E83859485A585B685A6 +:1034F000C555DF4F88839983AA83BB83CB5AD040BD +:103500009C01AD01CA55DF4F688179818A819B8119 +:10351000C65AD0400E94AB6C4B015C01A3019201E2 +:10352000C301B2010E94DE6F2B013C01A501940191 +:10353000C501B4010E94DE6F9B01AC01C301B20161 +:103540000E94AC6C0E944B704B015C01A70196017C +:10355000C701B6010E94DE6F6B017C01C555DF4FCC +:10356000288139814A815B81CB5AD040CA01B90197 +:103570000E94DE6F9B01AC01C701B6010E94AC6CDA +:103580000E944B706B017C01609351137093521336 +:1035900080935313909354139B01AC01C501B40164 +:1035A0000E94AB6C4B015C01E894B7F82AE037ED60 +:1035B00043EA5BE3C501B4010E94A36F181664F1EE +:1035C0006AC08DE2E82E83E1F82ED301C201002EFD +:1035D00004C0B695A795979587950A94D2F780FF72 +:1035E00012C023E333E34BEC51E4D7011F966D91F6 +:1035F0007D918D919C9152970E94DE6FF7016787B4 +:10360000708B818B928B0F5F1F4FF4E0EF0EF11CDC +:1036100003301105D1F644CF20E030E040E05FE315 +:10362000C501B4010E94A36F18160CF411CE2FE649 +:1036300032E143E85AE3C701B6010E94DE6F9B0105 +:10364000AC01C501B4010E94A36F18160CF400CEA2 +:1036500022C0CA55DF4F2881C65AD040222309F420 +:10366000D9CA0E94CA668111F3CD15C0C655DF4F75 +:103670003881CA5AD04031110EC0C155DF4F888100 +:103680009981CF5AD0408E7D9C7FC655DF4F1882DE +:10369000CA5AD04008C0C155DF4F88819981CF5A9E +:1036A000D0408E7D907E892B09F07CC28091491399 +:1036B00090914A13A0914B13B0914C1380937913BE +:1036C00090937A13A0937B13B0937C1380912F1364 +:1036D000809367138091381390913913A0913A1316 +:1036E000B0913B138093741390937513A09376134A +:1036F000B0937713C0905513D0905613E0905713A2 +:10370000F0905813A7019601609170137091711396 +:1037100080917213909173130E94856D8823F9F044 +:1037200010916F13112359F080911013823039F0EA +:103730000E94AD66B701A601812F0E941E338091C1 +:10374000551390915613A0915713B091581380932D +:10375000701390937113A0937213B09373138091AD +:103760005913809378131091371380916F13811739 +:10377000B9F080911013823079F0C0907013D0901E +:103780007113E0907213F09073130E94AD66B7014D +:10379000A601812F0E941E338091371380936F13EF +:1037A0001091361380916E13811781F08091101360 +:1037B000823041F00E94AD66123011F45C9A02C072 +:1037C0000E94BE5A8091361380936E1380912D1300 +:1037D000813089F08091321380936A138091301385 +:1037E00080936813C655DF4F8881CA5AD040833012 +:1037F00009F074C054C080911013823059F3809046 +:103800004D1390904E13A0904F13B090501320E0A2 +:1038100030E040EA51E4C501B4010E94DE6F0E942D +:10382000626E0E94F96D6B017C010E94AD6620E022 +:1038300030E04AE754E4C501B4010E94DE6F4B0159 +:103840005C0182E38C9DB0018D9D700D112480E0A0 +:1038500090E00E94256E9B01AC01C501B4010E945D +:10386000AB6C0E94626E0E94F96DCB010E944641D2 +:1038700086010115110509F4ADCF0E94B23801503F +:10388000110980910F138111A5CF9FEFA0E7B2E03E +:103890009150A040B040E1F700C00000EACF809115 +:1038A000331380936B13813089F48091621390916C +:1038B0006313A0916413B09165138093A113909347 +:1038C000A213A093A313B093A41308C01092A11342 +:1038D0001092A2131092A3131092A4138091341388 +:1038E00090916C13981759F080936C138CE0FE0143 +:1038F0003196A9E8B3E101900D928A95E1F78091A4 +:10390000311380936913E0912D138E2F90E0FC0109 +:103910003297E830F10508F060C08827E957FF4F7B +:103920008F4F0C941C71BE016B5E7F4F822D0E94E5 +:10393000133680916C13281250C08CE0FE017596EE +:10394000A9E8B3E13EC0C655DF4FE881CA5AD0406E +:10395000EE2371F02091741330917513409176131A +:103960005091771300E06AE573E181E00E943C42E8 +:103970002091741330917513409176135091771301 +:1039800000E0BE016B5E7F4F81E00E943C42182F39 +:103990008CE0FE017596ADE7B3E101900D928A953A +:1039A000E1F71CC06DE773E186E003C06DE773E1EA +:1039B00087E00E94133611C08CE0EAE5F3E1A5E947 +:1039C000B3E101900D928A95E1F707C08CE0E5E93B +:1039D000F3E1DF011D928A95E9F710E080912E1343 +:1039E00080936613883009F470C0C655DF4FB881E4 +:1039F000CA5AD040B23009F068C090E088309105D2 +:103A000008F05AC0FC0140907413509075136090F8 +:103A10007613709077138827E157FF4F8F4F0C94E0 +:103A20001C7100E0A30192016AE573E180E007C028 +:103A300000916713A30192016AE573E181E00E949E +:103A40003C42182F39C060915113709152138091EC +:103A50005313909154138824839409C06091511397 +:103A6000709152138091531390915413812CCF5421 +:103A7000DF4FA880C15BD040C754DF4FC880C95B0F +:103A8000D040CE55DF4FE880C25AD0400091671336 +:103A9000A30192010E949E670FC000E001C001E0F7 +:103AA00020E004C000E001C001E021E04091671384 +:103AB000C301B2010E9408678CE0EAE5F3E1ADE7DB +:103AC000B3E101900D928A95E1F7809135138093CF +:103AD0006D13882309F468C00E94AD6690916D1340 +:103AE00080911013913069F48230E9F19FB7F89416 +:103AF0008091BE1288608093BE129FBF0E94B23830 +:103B000032C091E09093661310926A131092691379 +:103B10001092671310926C1310926F1310926E1321 +:103B20008230A9F0BE016F5F7F4F80E00E94833436 +:103B30008823E1F18CE0FE013196A9E8B3E1019020 +:103B40000D928A95E1F70E9417330E94BE5A8BEDC1 +:103B500098E00E94413C8FE798E00E94413C88E653 +:103B600098E00E94413C10926D131EC081E067C036 +:103B700082E065C088E163C089E161C084E05FC024 +:103B80008BE15DC085E25BC084E159C08EE157C026 +:103B90008FE155C086E153C080E251C082E24FC040 +:103BA00083E24DC084E24BC0812F49C087E047C00B +:103BB000AEE16A16710411F40C94C60C38F5EAE013 +:103BC0006E16710411F40C94A20CFCE16F167104D2 +:103BD00011F40C94AF0C87E132C09CE569167104B6 +:103BE00011F00C94210EA1E0C655DF4FA883CA5AEC +:103BF000D0404114510439F0BAE04B16510421F67B +:103C000089E00C94CA0C88E00C94CA0C25E3621677 +:103C1000710411F40C94E60C3CE56316710449F34D +:103C2000DACF133009F00FCAE4C9153009F4F7C927 +:103C3000173009F403CA133009F005CADFC9C653A7 +:103C4000DF4F0FB6F894DEBF0FBECDBFDF91CF912F +:103C50001F910F91FF90EF90DF90CF90BF90AF90AA +:103C60009F908F907F906F905F904F903F902F909C +:103C700008958091FD1282FF08C08A988091080102 +:103C80008E7F809308015F9807C08A9A809108010F +:103C90008160809308015F9A0E94AF2710922B0DDC +:103CA00008952F923F924F925F926F927F928F92E0 +:103CB0009F92AF92BF92CF92DF92EF92FF920F93BB +:103CC0001F93CF93DF93CDB7DEB7CA55D1090FB697 +:103CD000F894DEBF0FBECDBFFB018E3A28E09207FD +:103CE00008F048C08C3A38E0930708F01EC78B34C0 +:103CF000A8E09A0709F4BCC1F0F4833E27E09207DC +:103D000009F47EC160F48231910509F479C18C3CDB +:103D1000910509F414C1419709F070C072C089344B +:103D2000A8E09A0709F48CC108F091C18834984042 +:103D300009F442C163C0823A38E0930709F412C221 +:103D400078F48A39B8E09B0709F4C8C18B3928E0B8 +:103D5000920709F4EAC18939984009F04FC099C126 +:103D6000863AA8E09A0708F4E0C6873A984009F432 +:103D700034C244C0813C28E0920709F496C3E0F4C1 +:103D8000883BA8E09A0709F433C350F48E3A28E040 +:103D9000920709F427C2873B984009F417C32EC045 +:103DA0008A3BA8E09A0709F4C0C608F431C3803CF6 +:103DB000984009F44FC322C08B3639E0930709F4C9 +:103DC0001FC570F48136B9E09B0709F4B8C48A3680 +:103DD00029E0920709F4CCC48036994079F4C9C32C +:103DE0008437A9E09A0709F481C58537B9E09B07B4 +:103DF00009F4D4C58C36994009F431C581E090E0CE +:103E000096C68091FD1282FF08C08A9A80910801AF +:103E10008160809308015F9A07C08A9880910801A9 +:103E20008E7F809308015F980E94BA278FE080936D +:103E30002B0D8EE1EFE0F3E1DF011D928A95E9F7AA +:103E40000E945A3C0E94115A80E090E00E94204A51 +:103E50006093070D7093080D8093090D90930A0DE0 +:103E600081E090E00E94204A60930B0D70930C0D4E +:103E700080930D0D90930E0D82E090E00E94204AF9 +:103E800060930F0D7093100D8093110D9093120D90 +:103E900000911313109114132091151330911613E0 +:103EA0000093130D1093140D2093150D3093160DE0 +:103EB00000911713109118132091191330911A13B0 +:103EC0000093170D1093180D2093190D30931A0DB0 +:103ED00000911B1310911C1320911D1330911E1380 +:103EE00000931B0D10931C0D20931D0D30931E0D80 +:103EF00020E030E044EB52E40E94AB6C7B018C018B +:103F000020910B0D30910C0D40910D0D50910E0D27 +:103F10006091070D7091080D8091090D90910A0D27 +:103F2000E7E28E2EEDE09E2EF3E2AF2EFDE0BF2EF7 +:103F3000AFE1CA2EADE0DA2E0E940548F6C58E012B +:103F40000F5F1F4F1F930F9386E893E09F938F930C +:103F5000FF936F930E947D710F900F900F900F90C1 +:103F60000F900F90181619060CF098C41D8A1E8A1F +:103F70001F8A188EAE014B5E5F4F60E070E0C80193 +:103F80000E9451418823C9F14D895E896F89788DDE +:103F900088E70E9481334D895E896F89788D89E732 +:103FA0000E9481334D895E896F89788D8AE70E94EE +:103FB00081330E94AC35B9C58E010F5F1F4F1F932F +:103FC0000F9381E993E09F938F93FF936F930E94E8 +:103FD0007D710F900F900F900F900F900F9018160B +:103FE00019060CF05BC4AE014B5E5F4F60E070E001 +:103FF000C8010E945141811105C082E390E097C53C +:1040000038DE93C520E030E04AE754E46D897E89CC +:104010008F89988D0E94DE6F0E94F46D1616170628 +:104020007CF47093C50C6093C40C11E01093C60C23 +:104030008091C30C811179C50BD71093C30C75C542 +:104040001092C60C1092C50C1092C40C6EC58081E3 +:10405000863599F681818053823078F610922F0D43 +:10406000813019F010922E0D60C580932E0D5DC524 +:104070008081863509F0C1CF81818053823008F07C +:10408000BCCF813019F01092330D4FC58093330DA2 +:104090004CC580818E3409F0B0CF9181905394301B +:1040A00008F0ABCF923061F0933099F080912B0DF6 +:1040B000913019F05F9A846024C08A9A816021C08F +:1040C0008091080181608093080180912B0D8260AE +:1040D00018C050D780912B0D886013C080818E341A +:1040E00009F08BCF91819053943008F086CF9230B5 +:1040F00071F09330A9F080912B0D913029F05F98E9 +:104100008B7F80932B0D11C58A988E7FFACF80917B +:1041100008018E7F8093080180912B0D8D7FF1CF58 +:104120001ED780912B0D877FECCF80818E3409F0D4 +:1041300064CF81818053843008F05FCF90912B0D44 +:10414000823051F0833059F0813019F090FF37C13F +:1041500033C191FD31C133C192FD2EC130C193FFF6 +:104160002EC12AC11AA619A61D8A1E8A1F8A188E58 +:104170008E010F5F1F4F8AE0D8011D928A95E9F7E3 +:10418000CE0189969F938F931F930F938AE993E0B3 +:104190009F938F93FF936F930E947D710FB6F89456 +:1041A000DEBF0FBECDBF02970CF478C3AE014B5EED +:1041B0005F4F60E070E0C8010E945141882309F41C +:1041C0001CCF2D893E894F89588D69A57AA5072E68 +:1041D000000C880B990B57D6A8C48FEF0E94A3340C +:1041E000CAD5A3C465961CAE1DAE1EAE1FAE6597A4 +:1041F00061961CAE1DAE1EAE1FAE61972D961CAE15 +:104200001DAE1EAE1FAE2D9784E16E0129E2C20ED7 +:10421000D11CD601282F1D922A95E9F77E0135E1A0 +:10422000E30EF11CD701282F1D922A95E9F7DE0134 +:1042300011965D011D928A95E9F78E010B5A1F4F69 +:104240008FEF90E0D8018D939C931F930F93BF92B3 +:10425000AF92FF92EF92DF92CF9286EA93E09F9324 +:104260008F93FF936F930E947D710FB6F894DEBF1A +:104270000FBECDBF03970CF411C3AE014F5A5F4F71 +:1042800060E070E0C6010E945141882309F4B5CE78 +:10429000AE01435B5F4F60E070E0C7010E94514197 +:1042A000882309F4AACEAE01475B5F4F60E070E05F +:1042B000C5010E945141882309F49FCED8018D91F8 +:1042C0009C910097D9F1019709F097CE6596CCACF7 +:1042D000DDACEEACFFAC659720E030E044EB52E49F +:1042E00061966CAD7DAD8EAD9FAD61970E94AB6C5C +:1042F00021EE3EE245E652E40E948C6D4B015C01EA +:104300000E94896D9B01AC01C701B6010E94DE6F5E +:1043100065966CAF7DAF8EAF9FAF6597C501B40159 +:104320000E9441709B01AC01C701B6010E94DE6F83 +:1043300061966CAF7DAF8EAF9FAF6197AE01475B6B +:104340005F4FBE01635B7F4FCE018F5A9F4F0E942C +:10435000722B2D96ECACFDAC0EAD1FAD2D9761967A +:104360002CAD3DAD4EAD5FAD619765966CAD7DAD4D +:104370008EAD9FAD6597FE01FD964F01DE01AF5BEF +:10438000BF4F5D0138966F010E944F462196ECACFD +:10439000FDAC0EAD1FAD219725962CAD3DAD4EADBC +:1043A0005FAD259729966CAD7DAD8EAD9FAD2997FC +:1043B0000E94EA48882319F065E973E002C061E8C9 +:1043C00073E087EC9CE00E944871AFC38081863522 +:1043D00009F013CE81818053823008F00ECE8130F7 +:1043E00011F0C4D4A2C39C9A9D9AA49AA5989DC387 +:1043F0008081863509F001CE81818053823008F0BA +:10440000FCCD813011F0AFD490C33F9A47988DC353 +:104410008081863509F0F1CD81818053823008F0AA +:10442000ECCD813011F08ED480C380910101806287 +:10443000809301018091010180648093010180914A +:104440000201806280930201809102018064809366 +:1044500002016BC3CE0101969F938F9344969F9365 +:104460008F9388EC93E09F938F93FF936F930E94B9 +:104470007D710FB6F894DEBF0FBECDBF02970CF46E +:104480000DC28D899E898634910508F0B6CD2981AB +:104490003A812230310508F0B0CD232B11F061E0D4 +:1044A00001C060E00E94055740C3CE0101969F9372 +:1044B0008F9344969F938F9388EC93E09F938F9371 +:1044C000FF936F930E947D710FB6F894DEBF0FBE0D +:1044D000CDBF02970CF4E2C18D899E898634910587 +:1044E00008F08BCD29813A812230310508F085CD45 +:1044F000FC01E05CF54F8650964F232BD1F02491C0 +:10450000FC018491882309F410C390E0880F991F5F +:10451000FC01E455F84FA591B491FC01E052F64F2F +:10452000859194918FB7F894EC91E22BEC938FBF27 +:10453000FCC22491FC018491882309F4F6C290E026 +:10454000880F991FFC01E455F84F45915491FC01E7 +:10455000E052F64FA591B4919FB7F894FA0180818B +:104560002095822380838C91E22FE823EC939FBFD8 +:10457000DCC28081833509F040CD8181E0EDE80F18 +:10458000E83008F03ACD8E2F90E0FC013197E7300B +:10459000F10530F48827E956FF4F8F4F0C941C71BA +:1045A000DED41092FA0C1092F90C8AE999E1A5E98F +:1045B000B2E48093FF0C9093000DA093010DB09393 +:1045C000020D8AE999E9A2E6B2E4B0C0C8D481E05C +:1045D00090E09093FA0C8093F90C86EF98E2ACE4AB +:1045E000B2E48093FF0C9093000DA093010DB09363 +:1045F000020D8DEC9CECA0E8B2E498C0B0D482E04F +:1046000090E09093FA0C8093F90C89E29CEDA4E978 +:10461000B2E48093FF0C9093000DA093010DB09332 +:10462000020D80E090E0A2E6B2E480C098D483E07E +:1046300090E09093FA0C8093F90C80E090E0ACE26B +:10464000B2E48093FF0C9093000DA093010DB09302 +:10465000020D80E090E0ABE8B2E468C080D484E072 +:1046600090E09093FA0C8093F90C80E090E0ACE13C +:10467000B2E48093FF0C9093000DA093010DB093D2 +:10468000020D80E090E0A9E9B2E417C068D485E0AB +:1046900090E09093FA0C8093F90C8DEC9CECA2E9DD +:1046A000B2E48093FF0C9093000DA093010DB093A2 +:1046B000020D80E090E0A8E9B2E48093FB0C9093B7 +:1046C000FC0CA093FD0CB093FE0C8DD597C047D485 +:1046D00086E090E09093FA0C8093F90C86E696E6DB +:1046E000AAE9B2E48093FF0C9093000DA093010D12 +:1046F000B093020D80E090E0AAE5B2E417C02FD499 +:1047000087E090E09093FA0C8093F90C85E89BEE9B +:10471000ABECB1E48093FF0C9093000DA093010DDE +:10472000B093020D80E090E0A2E3B2E48093FB0C32 +:104730009093FC0CA093FD0CB093FE0C5FC080E046 +:1047400090E00E94CE499093370D8093360D81E022 +:1047500090E00E94CE499093390D8093380D82E00D +:1047600090E00E94CE499093350D8093340DDBC1CB +:1047700060911B1370911C1380911D1390911E1357 +:104780000E94276E2B013C01609117137091181342 +:104790008091191390911A130E94276E6B966CAF3B +:1047A0007DAF8EAF9FAF6B97609113137091141311 +:1047B00080911513909116130E94276E9E012F5F12 +:1047C0003F4F4901DE0155965D01FE01B9966F012B +:1047D000830172016B962CAD3DAD4EAD5FAD6B9715 +:1047E0000E94C62C89819A81AB81BC818093FF0C89 +:1047F0009093000DA093010DB093020DEAD295C1E4 +:104800001D8A1E8A1F8A188E8E010F5F1F4F84E13A +:10481000D8011D928A95E9F71F930F938FEC93E0CF +:104820009F938F93FF936F930E947D710F900F90D2 +:104830000F900F900F900F90181619067CF5AE018F +:104840004B5E5F4F60E070E0C8010E9451418823D9 +:1048500009F4D3CB8D899E89AF89B88D67CF1D8A26 +:104860001E8A1F8A188E8E010F5F1F4F84E1D801A8 +:104870001D928A95E9F71F930F938AED93E09F931A +:104880008F93FF936F930E947D710F900F900F9005 +:104890000F900F900F901816190674F01F9281E078 +:1048A0008F938DE092E09F938F930E94AA3B0F908D +:1048B0000F900F900F90A1CBAE014B5E5F4F60E069 +:1048C00070E0C8010E945141882309F496CB8D897C +:1048D0009E89AF89B88D8093030D9093040DA093AA +:1048E000050DB093060D75D27ED41FC18081803531 +:1048F00009F083CB81818053833008F07ECB8130F7 +:10490000D9F0823091F180E090E00E94CE499093FE +:10491000470D8093460D81E090E00E94CE49909330 +:10492000490D8093480D82E090E00E94CE4990931B +:104930004B0D80934A0DF9C080E090E00E94CE4973 +:104940009093410D8093400D81E090E00E94CE490C +:104950009093430D8093420D82E090E00E94CE49F7 +:104960009093450D8093440DE0C080E090E00E945C +:10497000CE4990933B0D80933A0D81E090E00E94E8 +:10498000CE4990933D0D80933C0D82E090E00E94D3 +:10499000CE4990933F0D80933E0DC7C06091460D68 +:1049A0007091470D0091480D1091490D9B01202BEE +:1049B000312B80914A0D90914B0D822B932B892B9B +:1049C00019F485EE93E015C0E090400DF090410D94 +:1049D0006090420D7090430D2090440D3090450D35 +:1049E000C7018629972982299329892B49F48BEEBF +:1049F00093E09F938F930E94AA3B0F900F90FDCA64 +:104A0000C0903A0DD0903B0D40903C0D50903D0D24 +:104A100096012429352980913E0D90913F0D822BDE +:104A2000932B892B19F481EF93E0E3CF80E090E0A2 +:104A30000E94256E24EE35E24EE652E40E94AC6CF4 +:104A40004B015C01B60180E090E00E94256E20E3FE +:104A50003CE44AEB52E40E94AC6C9B01AC01C50102 +:104A6000B4010E94AC6C4B015C01B70180E090E0A6 +:104A70000E94256E9B01AC01C501B4010E94AC6C83 +:104A800020E030E040E450E40E948C6D20E030E013 +:104A900040E05FE30E94AC6C0E94F96D7093370DAB +:104AA0006093360DB80180E090E00E94256E2CE9FD +:104AB0003DE241E853E40E94AB6C6B017C01B20122 +:104AC00080E090E00E94256E24E53AE146E953E457 +:104AD0000E94AC6C9B01AC01C701B6010E94AC6C9A +:104AE0006B017C01B30180E090E00E94256E9B0188 +:104AF000AC01C701B6010E94AC6C20E030E040E49C +:104B000050E40E948C6D20E030E040E05FE30E94C2 +:104B1000AC6C0E94F96D7093390D6093380D309232 +:104B2000350D2092340D0E94D34A80E090E0C65AA1 +:104B3000DF4F0FB6F894DEBF0FBECDBFDF91CF9130 +:104B40001F910F91FF90EF90DF90CF90BF90AF90AB +:104B50009F908F907F906F905F904F903F902F909D +:104B600008952091710D3091720D21153105B9F024 +:104B70008091800D9091810D8217930734F40196F6 +:104B80009093810D8093800D0AC01092810D109238 +:104B9000800D1092720D1092710D10922C0D2091BB +:104BA000C40C3091C50C21153105A1F080917E0D0A +:104BB00090917F0D8217930734F4019690937F0DA7 +:104BC00080937E0D07C010927F0D10927E0D81E0C4 +:104BD00080932D0D80912C0D81111BC08091C60CEE +:104BE000811117C0809173008E7F809373001092A3 +:104BF000C30C1092720D1092710D1092C50C109290 +:104C0000C40C1092810D1092800D10927F0D1092A5 +:104C10007E0D089580917D0D811107C081E0809304 +:104C20007D0D80910B01806205C010927D0D8091F9 +:104C30000B018F7D80930B0180917B0D90917C0DFA +:104C40009C012F5F3F4F30937C0D20937B0D209173 +:104C50000402309105022817390748F410927C0DA0 +:104C600010927B0D809170008E7F8093700008956C +:104C7000E9EFFCE081E080AF17AA87EF93E09F9314 +:104C80008F930E94AA3B0F900F900895CF93DF93CC +:104C9000EB018431D1F028F4882361F08C30A8F442 +:104CA00037C08233E9F018F4873190F10EC08333B6 +:104CB00011F10BC08881882329F06AE074E0CE01ED +:104CC0000E943D716CE074E020C08881882329F047 +:104CD0006AE074E0CE010E943D716FE074E015C09F +:104CE0008881882329F06AE074E0CE010E943D713A +:104CF00063E174E00AC08881882329F06AE074E0E7 +:104D0000CE010E943D7167E174E0CE010E943D71C9 +:104D10008091C70C882379F067EC7CE0CE010E947B +:104D20003D7182E3E7ECFCE0DF011D928A95E9F733 +:104D3000DF91CF91089569EE73E0CE01DF91CF91BD +:104D40000C943D71E1E0F1E080818062808380819C +:104D500080648083E2E0F1E080818F7D80838081C8 +:104D60008F7B808308953F9A479A08959C9A9D9AD5 +:104D7000A498A59A089580910401877880930401EE +:104D8000809103018877803451F46BE174E083E70C +:104D90009DE00E94487140E050E0BA010EC0809151 +:104DA0000301887769F462E274E083E79DE00E9482 +:104DB000487140E050E060EE70E483E00E9481338F +:104DC00040E050E060E87FE384E00E9481330C948F +:104DD000AC350F931F93CF93DF936091F90C84E868 +:104DE00093E00E94175A6091FA0C85E893E00E94C4 +:104DF000175ACBEFDCE088E993E069918C010F5FF3 +:104E00001F4F0E94175AC8010C391340B1F7CFEF5A +:104E1000DCE08EE893E069918C010F5F1F4F0E94E8 +:104E2000175AC80102391340B1F7C3E0DDE082E848 +:104E30009CE069918C010F5F1F4F0E94175AC801B7 +:104E400006381C40B1F7DF91CF911F910F91089563 +:104E5000E0E6F2E181EB95E29183808310922001FC +:104E600085E08093210181EF9FEF9383828382818C +:104E700093819093250180932401E3E7F0E0808102 +:104E8000816080830895CF92DF92EF92FF920F931B +:104E90001F93CF93DF9369017A01EAE0F1E020816B +:104EA00020622083EBE0F1E020812F7D2083660FDC +:104EB000771F709305026093040209E512E18AE00E +:104EC00096E2F80191838083C0E7D0E088818E7FED +:104ED0008883E0EBF0E080818C7F8083E1EBF0E081 +:104EE0008081877F8083A6EBB0E08C918F7D8C934F +:104EF00088818D7F888380818460808380818C7F9E +:104F0000808320E034E244EF59E4C701B6010E94F7 +:104F10008C6D20E034E244E75BE40E94DE6F20E029 +:104F200030E040E85CE30E94DE6F0E94F46D20E018 +:104F300031E0C901861B970BF8019383828382813C +:104F400093818093B200888181608883DF91CF91C3 +:104F50001F910F91FF90EF90DF90CF900895E2E7BF +:104F6000F0E080818E7F80831092300D80818E7F73 +:104F7000808308958091F90C9091FA0C0497029720 +:104F8000B0F580910101806280930101809101015F +:104F9000806480930101809102018F7D80930201E2 +:104FA000809102018F7B8093020181E2ECE4FDE0BD +:104FB000DF011D928A95E9F7F8941092A0001092F3 +:104FC000A1001092A5001092A40080E496E09093B6 +:104FD000A9008093A8008091A10088608093A1001F +:104FE0008091A10083608093A1007894089580E16E +:104FF0008093A1001092A00082E08093BD1280E215 +:105000009EE49093BC128093BB129093A700809370 +:10501000A60082E18093A10020E030E040EA51E464 +:10502000609100027091010280910202909103024E +:105030000E948C6D20E030EC4FE754E40E94DE6F5C +:105040000E94F96DCB010C946E568F929F92AF9295 +:10505000BF92CF92DF92EF92FF926B017C014901E8 +:105060005A0120E030E048E453E4C501B4010E9455 +:10507000A36F18166CF020E030E0A901C501B4015F +:105080000E94856D87FF0AC0812C912C540106C0B7 +:10509000812C912C88E4A82E83E4B82E8091F90C01 +:1050A0009091FA0C8430910529F426E636E646E61E +:1050B0005FE306C0059799F426E636E646EE5FE321 +:1050C000C701B6010E948C6D20E030E040E852E458 +:1050D0000E94DE6F0E94F46D6B017C0103C0C12C45 +:1050E000D12C76018091640D9091650DA091660D93 +:1050F000B091670D0297A105B1050CF06BC081E27C +:10510000ECE4FDE0DF011D928A95E9F7D701C601C5 +:10511000F7FE07C088279927DC018C199D09AE0985 +:10512000BF098093500D9093510DA093520DB093F1 +:10513000530D8093540D9093550DA093560DB0933D +:10514000570DA501940160E070E086E993E40E94A8 +:10515000AB6C0E94F46D6093600D7093610D809351 +:10516000620D9093630D80E496E0A0E0B0E0809340 +:105170005C0D90935D0DA0935E0DB0935F0D88E381 +:1051800096E290936A0D8093690D809102011C1440 +:105190001D041E041F0414F48F7D01C080628093DF +:1051A00002011092640D1092650D1092660D10921E +:1051B000670D80915C0D90915D0DA0915E0DB09199 +:1051C0005F0D9093A9008093A80080917200826087 +:1051D00080937200FF90EF90DF90CF90BF90AF90E0 +:1051E0009F908F900895CF93C1E0C093310D80912F +:1051F000F90C9091FA0C04970297F8F4809107014A +:105200008F7D80930701809108018062809308015F +:105210001092310D10926D0D10926E0D10926F0D57 +:105220001092700D20E030E048E452E460E070E05D +:1052300084EB93EC0ADFC093300DCF910895CF92A9 +:10524000DF92EF92FF926B017C0120E030E044E3BB +:1052500053E40E94A36F181684F020E030E0A90107 +:10526000C701B6010E94856D87FF0AC0C12CD12CF1 +:1052700084E3E82E83E4F82E03C0C12CD12C760100 +:10528000A701960160E070E084E393E40E94AB6CB8 +:1052900020E030E044E353E40E948C6D9B01AC01BC +:1052A0000E94AC6C20E030E040E05FE30E94AC6C18 +:1052B00060930002709301028093020290930302B4 +:1052C00020E030E040EA51E40E948C6D20E030ECB8 +:1052D0004FE754E40E94DE6F0E94F96DCB01FF900E +:1052E000EF90DF90CF900C946E56CF93DF93D82F32 +:1052F000C8E05E98559AD7FF02C05D9A01C05D98DC +:1053000065E070E080E090E00E9408415E9A65E010 +:1053100070E080E090E00E9408415E98DD0F65E05B +:1053200070E080E090E00E940841C15011F762E017 +:1053300070E080E090E00E940841559A5D9A62E03A +:1053400070E080E090E0DF91CF910C9408415E988E +:10535000559A5D9865E070E080E090E00E94084119 +:105360005E9A65E070E080E090E00E940841559A06 +:105370005D9A65E070E080E090E00C940841CF9386 +:10538000559A5D9A62E070E080E090E00E940841EA +:105390005E9A62E070E080E090E00E9408415598DB +:1053A0008BEF99B1C92FC07295FF05C08150C9F725 +:1053B000CEDFC1E007C05E9862E070E080E090E080 +:1053C0000E9408418C2FCF910895559A5D9A5E9A5C +:1053D00065E070E080E090E00E940841559A5D9899 +:1053E00065E070E080E090E00E9408415E9862E035 +:1053F00070E080E090E00C940841CF93DF93D82FC9 +:10540000C8E0809102018F778093020180910101B1 +:1054100084608093010180910201D7FF02C0846003 +:1054200001C08B7F8093020165E070E080E090E036 +:105430000E9408418091020180688093020165E02A +:1054400070E080E090E00E940841809102018F7737 +:1054500080930201DD0F65E070E080E090E00E9443 +:105460000841C15071F662E070E080E090E00E9477 +:1054700008418091010184608093010180910201C3 +:1054800084608093020162E070E080E090E0DF9150 +:10549000CF910C9408410F931F93CF93DF93C2E0F9 +:1054A000D1E088818F77888301E011E0F801808165 +:1054B0008460808388818B7F888365E070E080E0F2 +:1054C00090E00E94084188818068888365E070E0F0 +:1054D00080E090E00E940841F80180818460808330 +:1054E00088818460888365E070E080E090E0DF91EF +:1054F000CF911F910F910C940841CF93809101019E +:105500008460809301018091020184608093020194 +:1055100062E070E080E090E00E940841809102012A +:1055200080688093020162E070E080E090E00E9479 +:105530000841809101018B7F809301018BEF909155 +:105540000001C92FC47092FF05C08150C1F7A3DFCD +:10555000C1E00BC0809102018F778093020162E06D +:1055600070E080E090E00E9408418C2FCF91089578 +:105570000F931F93CF93DF9301E011E0F801808137 +:1055800084608083C2E0D1E08881846088838881E0 +:105590008068888365E070E080E090E00E940841C8 +:1055A000F80180818460808388818B7F888365E0B7 +:1055B00070E080E090E00E94084188818F778883C6 +:1055C00062E070E080E090E0DF91CF911F910F9159 +:1055D0000C940841CF93DF93D82FC8E04398399AB1 +:1055E000D7FF02C0419A01C0419865E070E080E0B9 +:1055F00090E00E940841439A65E070E080E090E00E +:105600000E9408414398DD0F65E070E080E090E083 +:105610000E940841C15011F762E070E080E090E024 +:105620000E940841399A419A62E070E080E090E07F +:10563000DF91CF910C9408414398399A419865E0E5 +:1056400070E080E090E00E940841439A65E070E0DD +:1056500080E090E00E940841399A419A65E070E04C +:1056600080E090E00C940841CF93399A419A62E02F +:1056700070E080E090E00E940841439A62E070E0B0 +:1056800080E090E00E94084139988BEF96B1C92FD5 +:10569000C27091FF05C08150C9F7CEDFC1E007C0DD +:1056A000439862E070E080E090E00E9408418C2F17 +:1056B000CF910895399A419A439A65E070E080E06D +:1056C00090E00E940841399A419865E070E080E0DE +:1056D00090E00E940841439862E070E080E090E032 +:1056E0000C9408414F925F926F927F92AF92BF925B +:1056F000CF92DF92EF92FF920F931F93CF93DF939E +:105700005C01EB018A01FC01408051806280738062 +:1057100020E030E0A901C301B2010E94856D20E0C4 +:1057200030E0A901811111C0688179818A819B8152 +:105730000E94A36F1816E4F02AEDC22E2FE0D22E9D +:1057400029ECE22E2FEBF22E22C0C301B2010E94FF +:10575000856D87FD16C0A3019201688179818A81D8 +:105760009B810E948C6D0E944A6D6B017C010FC071 +:105770009AEDC92E9FE0D92E99ECE92E9FE3F92EE0 +:1057800006C0C12CD12C80ECE82E8FE7F82EC70183 +:10579000B6010E94896D2091FB0C3091FC0C409168 +:1057A000FD0C5091FE0C0E94DE6F9B01AC01C30109 +:1057B000B2010E94AB6CF501608371838283938395 +:1057C000C701B6010E9441702091FB0C3091FC0C86 +:1057D0004091FD0C5091FE0C0E94DE6F9B01AC01CC +:1057E000688179818A819B810E94AB6C688379830F +:1057F0008A839B832091FF0C3091000D4091010D15 +:105800005091020DF80160817181828193810E9423 +:10581000AC6CF8016083718382839383DF91CF91B5 +:105820001F910F91FF90EF90DF90CF90BF90AF90BE +:105830007F906F905F904F9008954F925F926F921C +:105840007F92AF92BF92CF92DF92EF92FF920F932F +:105850001F93CF93DF935C01EB018A01FC01408031 +:1058600051806280738020E030E0A901C301B20161 +:105870000E94856D20E030E0A901811111C068818E +:1058800079818A819B810E94A36F1816E4F02AED2A +:10589000C22E2FE0D22E29ECE22E2FEBF22E22C0C8 +:1058A000C301B2010E94856D87FD16C0A30192015C +:1058B000688179818A819B810E948C6D0E944A6DEA +:1058C0006B017C010FC09AEDC92E9FE0D92E99EC97 +:1058D000E92E9FE3F92E06C0C12CD12C80ECE82ED6 +:1058E0008FE7F82EC701B6010E94896D2091FB0C4D +:1058F0003091FC0C4091FD0C5091FE0C0E94DE6F2B +:10590000A30192010E94AC6CF501608371838283D4 +:105910009383C701B6010E9441702091FB0C309126 +:10592000FC0C4091FD0C5091FE0C0E94DE6F9B011F +:10593000AC01688179818A819B810E94AC6C68830B +:1059400079838A839B832091FF0C3091000D4091D5 +:10595000010D5091020DF801608171818281938166 +:105960000E94AB6CF8016083718382839383DF9123 +:10597000CF911F910F91FF90EF90DF90CF90BF904C +:10598000AF907F906F905F904F9008952F923F92CD +:105990004F925F926F927F928F929F92AF92BF923F +:1059A000CF92DF92EF92FF920F931F93CF93DF93EB +:1059B000CDB7DEB728970FB6F894DEBF0FBECDBFC8 +:1059C0002B013C0129833A834B835C83ED82FE8269 +:1059D0000F831887860189EF282E8CE0382E20E06F +:1059E00030E044EB52E4F10166897789808D918D36 +:1059F0000E94AB6C6B017C0120E030E040EA52E495 +:105A00006D817E818F8198850E948C6D9B01AC0198 +:105A1000C701B6010E94AC6C6D837E838F8398872B +:105A200020E030E040EA52E469817A818B819C81F8 +:105A30000E948C6DF10122893389448955890E9425 +:105A4000AC6C69837A838B839C8320E030E040EAEE +:105A500052E4C301B2010E948C6DF10126853785A5 +:105A6000408951890E94AC6C6801ED80FE800F81F5 +:105A7000188529813A814B815C810E9405482896CE +:105A80000FB6F894DEBF0FBECDBFDF91CF911F914F +:105A90000F91FF90EF90DF90CF90BF90AF909F90CD +:105AA0008F907F906F905F904F903F902F900895D0 +:105AB00069E080E090E00E94175A4DE450E060EC0D +:105AC00072E181E098E00C94395ACF92DF92EF9224 +:105AD000FF920F931F939091F112092F10E020E095 +:105AE00030E08091F212482F50E060E070E0917059 +:105AF000817068017901F694E794D794C794C0FC4B +:105B000092606A017B01F694E794D794C794C0FC35 +:105B10008260E2E03695279517950795EA95D1F7CB +:105B200000FD946022E076956795579547952A95F4 +:105B3000D1F740FD84609093A60E8093A50E1F912F +:105B40000F91FF90EF90DF90CF9008951F920F92EA +:105B50000FB60F9211240BB60F922F933F938F9392 +:105B60009F93EF93FF9321B33091A60E832F817003 +:105B700090E036E0880F991F3A95E1F7922F9F7BCE +:105B8000892B81BBEBE0F1E090818091A60E8270C1 +:105B9000880F880F977F892B808381B39091A60E01 +:105BA00092FB992790F98E7F892B81BB15BCFF91C1 +:105BB000EF919F918F913F912F910F900BBE0F907E +:105BC0000FBE0F901F90189580916F008D7F80936E +:105BD0006F0080918100887F8160809381001092A6 +:105BE000A70E8091F3128F3F21F490910E13992309 +:105BF00049F090911013943029F090E00E944641B2 +:105C000081E001C080E09091FD1292FF02C091E01E +:105C10008927882341F08A9A8091080181608093C6 +:105C200008015F9A08958A98809108018E7F809379 +:105C300008015F9808951F920F920FB60F921124DA +:105C40000BB60F922F933F934F935F936F937F9376 +:105C50008F939F93AF93BF93EF93FF938091A70E82 +:105C6000811139C28091B70E80FD8F9A80FF8F9885 +:105C700090910B01482F42709D7F942B90930B01C4 +:105C800041B3847090E095958795942F9D7F892BE3 +:105C900081BB91B38091B60E282F217030E066E071 +:105CA000220F331F6A95E1F79F7B292B21BB90912F +:105CB0000B01282F2270220F220F977F922B909397 +:105CC0000B0121B382FB992790F9822F8E7F892BBC +:105CD00081BB8091B50E86BD82E085BD81E0809359 +:105CE000A70E78948091C90E9091CA0E892B09F065 +:105CF000ACC08091B0119091D511981709F49BC058 +:105D0000E091B0112E2F30E086E0E89FF0011124E1 +:105D1000EF54FE4EF093CA0EE093C90E8381948136 +:105D20009093890080938800808191819093C50E23 +:105D30008093C40EE2818091C60E8E1761F1E093CC +:105D4000C60E81E1E89FF0011124EA52FE4EF09365 +:105D5000C80EE093C70E85859685A785B089B69550 +:105D6000A795979587958093B00E9093B10EA093C9 +:105D7000B20EB093B30E8093AC0E9093AD0EA09381 +:105D8000AE0EB093AF0E8093A80E9093A90EA09381 +:105D9000AA0EB093AB0EE091C70EF091C80E9081A1 +:105DA0008091A50E89278093B70E86E0829FD0014F +:105DB000839FB00D1124AF54BE4E15962C91818156 +:105DC0009281A381B481022E04C0B695A7959795C0 +:105DD00087950A94D2F78093B80E9093B90EA0934A +:105DE000BA0EB093BB0E85819681A781B085022E35 +:105DF00004C0B695A795979587950A94D2F7809396 +:105E0000BC0E9093BD0EA093BE0EB093BF0E8185C5 +:105E10009285A385B48504C0B695A7959795879577 +:105E20002A95D2F78093C00E9093C10EA093C20E14 +:105E3000B093C30E0AC0C8DE9FB7F8948091BE121B +:105E400084608093BE129FBF46C18091BF12813093 +:105E5000B1F489B1807190910D13891781F010927E +:105E6000BF128CE0E3E1F3E1AFE1B3E101900D9209 +:105E70008A95E1F78091BE1280648093BE121092E1 +:105E8000B60E4091A80E5091A90E6091AA0E709185 +:105E9000AB0E8091B80E9091B90EA091BA0EB09150 +:105EA000BB0E840F951FA61FB71F8093A80E90935B +:105EB000A90EA093AA0EB093AB0EE091C70EF0917D +:105EC000C80E4585568567857089481759076A0742 +:105ED0007B0768F521E02093B60E458556856785DA +:105EE0007089841B950BA60BB70B8093A80E90931B +:105EF000A90EA093AA0EB093AB0E2081809113132C +:105F000090911413A0911513B091161320FF04C0A3 +:105F10000197A109B10903C00196A11DB11D80938C +:105F2000131390931413A0931513B0931613409169 +:105F3000AC0E5091AD0E6091AE0E7091AF0E80918F +:105F4000BC0E9091BD0EA091BE0EB091BF0E840FFD +:105F5000951FA61FB71F8093AC0E9093AD0EA09314 +:105F6000AE0EB093AF0E458556856785708948178C +:105F700059076A077B0778F52091B60E22602093B7 +:105F8000B60E4585568567857089841B950BA60BD3 +:105F9000B70B8093AC0E9093AD0EA093AE0EB09362 +:105FA000AF0E20818091171390911813A0911913AF +:105FB000B0911A1321FF04C00197A109B10903C0D0 +:105FC0000196A11DB11D8093171390931813A093F0 +:105FD0001913B0931A134091B00E5091B10E609105 +:105FE000B20E7091B30E8091C00E9091C10EA0912F +:105FF000C20EB091C30E840F951FA61FB71F8093CA +:10600000B00E9093B10EA093B20EB093B30E45852F +:10601000568567857089481759076A077B0778F5A1 +:106020002091B60E24602093B60E4585568567856F +:106030007089841B950BA60BB70B8093B00E9093C1 +:10604000B10EA093B20EB093B30E208180911B13BA +:1060500090911C13A0911D13B0911E1322FF04C038 +:106060000197A109B10903C00196A11DB11D80933B +:106070001B1390931C13A0931D13B0931E138091B8 +:106080001013843039F49091B60E80912C1389232B +:106090008093B60E8091C40E9091C50E0197909397 +:1060A000C50E8093C40E892B69F41092CA0E10920B +:1060B000C90E8091B0118F5F8093B011863011F4BA +:1060C0001092B0119091B60E8091A60E8927809300 +:1060D000B60E1092A70EFF91EF91BF91AF919F91D5 +:1060E0008F917F916F915F914F913F912F910F9081 +:1060F0000BBE0F900FBE0F901F9018958091FD1250 +:1061000082FF08C08A9A809108018160809308010B +:106110005F9A07C08A98809108018E7F809308015A +:106120005F98809110138C70A1F08091A50E8093E0 +:10613000B70E8091A60E8093B60E8091F012880F54 +:10614000845081958093B50E80916F00826080931A +:106150006F0008951F920F920FB60F9211240BB685 +:106160000F92CF92DF92EF92FF920F931F932F9394 +:106170003F934F935F936F937F938F939F93AF93CF +:10618000BF93EF93FF9380914E0D90914F0D009729 +:1061900021F0019709F435C131C28091500D9091E1 +:1061A000510DA091520DB091530DAC01BD01415064 +:1061B0005109610971094093500D5093510D60933D +:1061C000520D7093530D892B8A2B8B2B59F0809194 +:1061D0000201806480930201809102018F7B809391 +:1061E00002010FC0E091690DF0916A0D309709F03E +:1061F0001995809172008D7F8093720081E0809369 +:10620000680D80914C0D90914D0D8130910509F4F0 +:10621000B4C020F0029709F4D3C0E4C1C090500D7F +:10622000D090510DE090520DF090530D6091540DAF +:106230007091550D8091560D9091570D22E030E0F0 +:1062400040E050E00E940071C216D306E406F50655 +:106250000CF4AFC08091640D9091650DA091660D16 +:10626000B091670D0196A11DB11D8093640D9093AF +:10627000650DA093660DB093670DC0905C0DD09036 +:106280005D0DE0905E0DF0905F0D80915C0D909142 +:106290005D0DA0915E0DB0915F0D0091640D1091A8 +:1062A000650D2091660D3091670DBC01CD01660F23 +:1062B000771F881F991F52E0000F111F221F331FE5 +:1062C0005A95D1F7A90198012F5F3F4F4F4F5F4F6C +:1062D0000E940071C21AD30AE40AF50AC0925C0D4A +:1062E000D0925D0DE0925E0DF0925F0D40915C0DDD +:1062F00050915D0D60915E0D70915F0D8091600D0C +:106300009091610DA091620DB091630D48175907EE +:106310006A077B070CF066C18091500D9091510D7A +:10632000A091520DB091530D4091540D5091550DC7 +:106330006091560D7091570D880F991FAA1FBB1FB2 +:10634000841B950BA60BB70B8093580D9093590D9A +:10635000A0935A0DB0935B0D8091600D9091610DEB +:10636000A091620DB091630D80935C0D90935D0DD3 +:10637000A0935E0DB0935F0DC6C08091580D9091B3 +:10638000590DA0915A0DB0915B0DAC01BD0141506A +:106390005109610971094093580D5093590D60934B +:1063A0005A0D70935B0D181619061A061B060CF48D +:1063B00019C182E090E090934D0D80934C0D12C175 +:1063C0008091500D9091510DA091520DB091530DAF +:1063D000892B8A2B8B2B09F405C18091640D909138 +:1063E000650DA091660DB091670D0197A109B109E6 +:1063F0008093640D9093650DA093660DB093670D27 +:10640000A0C080910201806480930201809102010A +:106410008F7B8093020180914C0D90914D0D0097E0 +:1064200021F0029709F472C0DDC040915C0D5091DB +:106430005D0D60915E0D70915F0D8091600D90918A +:10644000610DA091620DB091630D84179507A607A9 +:10645000B7070CF04DC08091640D9091650DA0912F +:10646000660DB091670D0196A11DB11D8093640D5D +:106470009093650DA093660DB093670DC0905C0D71 +:10648000D0905D0DE0905E0DF0905F0D80915C0D01 +:1064900090915D0DA0915E0DB0915F0D0091640D26 +:1064A0001091650D2091660D3091670DBC01CD01F5 +:1064B000660F771F881F991FF2E0000F111F221F20 +:1064C000331FFA95D1F7A90198012F5F3F4F4F4F26 +:1064D0005F4F0E940071C21AD30AE40AF50AC09203 +:1064E0005C0DD0925D0DE0925E0DF0925F0D7AC072 +:1064F000E0916B0DF0916C0D309729F01995109289 +:106500006C0D10926B0D81E090E055CF8091640D81 +:106510009091650DA091660DB091670DAC01BD0124 +:1065200041505109610971094093640D5093650D03 +:106530006093660D7093670D892B8A2B8B2B09F462 +:1065400041C060915C0D70915D0D80915E0D9091E8 +:106550005F0D0091640D1091650D2091660D3091D5 +:10656000670DC090640DD090650DE090660DF090C1 +:10657000670D42E0000F111F221F331F4A95D1F70C +:10658000A90198012F5F3F4F4F4F5F4F0E94AF709F +:106590009701860152E0000F111F221F331F5A95E9 +:1065A000D1F7A901980121503109410951090E94EF +:1065B000007120935C0D30935D0D40935E0D509300 +:1065C0005F0D10C0809172008D7F80937200E0910A +:1065D0006B0DF0916C0D309729F0199510926C0DA0 +:1065E00010926B0D80915C0D90915D0DA0915E0DF0 +:1065F000B0915F0D9093A9008093A800FF91EF9157 +:10660000BF91AF919F918F917F916F915F914F91CA +:106610003F912F911F910F91FF90EF90DF90CF90BE +:106620000F900BBE0F900FBE0F901F901895E0EAD1 +:10663000F0E080818F7D80835C980895CF92DF9217 +:10664000EF92FF926A017B01811105C0FF90EF90EC +:10665000DF90CF90ECCF813011F45C9801C05C9A50 +:1066600083E28093A0008091A100807E8A61809364 +:10667000A1008FEF9FEF9093A9008093A80020E0E6 +:1066800030E0A901C701B6010E94856D1816F4F625 +:1066900020E030E0A901C701B6010E94856D87FDA9 +:1066A00011C020E030E04AE754E4C701B6010E947F +:1066B000A36F181654F4C12CD12C8AE7E82E84E479 +:1066C000F82E03C0C12CD12C76012CEE31E143E829 +:1066D00052E4C701B6010E94DE6F20E030E040E0E6 +:1066E0005FE30E94AC6C0E94626E0E94F96D709331 +:1066F000AB006093AA005C9AFF90EF90DF90CF9080 +:106700000895CF92DF92EF92FF92CF93DF93C82F3D +:106710006A017B0120E030E0A901C701B6010E94B7 +:10672000856D87FDE2C0C43608F441C08CE98C0F4A +:1067300020E0833098F590E0880F991F880F991F0B +:10674000223079F0FC01233011F1213019F0E054AE +:10675000FD4E02C0E453FD4EC082D182E282F3823C +:10676000C1C0EC01C852DD4E20E030E040E752E409 +:10677000C701B6010E94DE6F20E030E040E752E43E +:106780000E94DE6F688379838A839B83ABC0EC5160 +:10679000FD4EF7FAF094F7F8F094DECF2F5F8A30D1 +:1067A00008F4A5C0243009F4A2C08A50C2CFC701A2 +:1067B000B6010E948C700E94F96D8C2F90E08C3194 +:1067C000910508F094C0FC018827E256FF4F8F4FD7 +:1067D0000C941C71633008F48CC06093F01282C07A +:1067E0006093F3127FC06093F11202C06093F212C3 +:1067F0006CD978C08091FD12662311F084604CC082 +:106800008B7F4AC08091FD12662311F0806444C0E2 +:106810008F7B42C08091FD12662311F080683CC0DE +:106820008F773AC06093F4125DC0C092F512D09297 +:10683000F612E092F712F092F81254C0C092F912D8 +:10684000D092FA12E092FB12F092FC124BC08091AF +:10685000FD12662311F081601FC08E7F1DC08091E4 +:10686000FD12662321F084FF46C0806215C08F7D33 +:1068700013C08091FD12662311F0886001C0877FEC +:106880008093FD120E94FF592DC08091FD12662356 +:1068900011F0806101C08F7C8093FD1223C0609352 +:1068A000FE1220C0C092FF12D0920013E09201139A +:1068B000F092021317C0C0920313D0920413E09217 +:1068C0000513F09206130EC070E0709308136093E6 +:1068D000071308C0C0920913D0920A13E0920B1359 +:1068E000F0920C13E5D880E007C084E005C083E097 +:1068F00003C086E001C08AE0DF91CF91FF90EF9066 +:10690000DF90CF9008951F93CF93DF93182FEB0163 +:106910008DE0189FB0011124765F4CE050E0CE016D +:106920000E947C5A892B51F48CE0FE0111928A95C9 +:10693000E9F7BE01812F77D180E001C081E0DF91CE +:10694000CF911F910895EF92FF920F931F93CF93D2 +:10695000DF93CDB7DEB72C970FB6F894DEBF0FBE2E +:10696000CDBF182F80FFC7C08AE08093F0128FEF51 +:106970008093F3121092F11287E08093F21283E079 +:106980008093F4128AE097EDA3E2BCE38093F512C2 +:106990009093F612A093F712B093F8128FE692E15B +:1069A000A3E0BBE38093F9129093FA12A093FB1239 +:1069B000B093FC121092FE1280E090E0A8ECB1E4DB +:1069C0008093FF1290930013A0930113B0930213CE +:1069D00080E090E0AAEFB3E4809303139093041354 +:1069E000A0930513B09306138AEF90E090930813D9 +:1069F0008093071380E090E0A0E8BFE38093091341 +:106A000090930A13A0930B13B0930C1384E080931C +:106A1000FD1280E090E0A8ECB5E48093C012909362 +:106A2000C112A093C212B093C3128093C412909368 +:106A3000C512A093C612B093C7128093C812909348 +:106A4000C912A093CA12B093CB1280E090E5A3ECD8 +:106A5000B7E48093CC129093CD12A093CE12B09352 +:106A6000CF128093D0129093D112A093D212B093F0 +:106A7000D3128093D4129093D512A093D612B093D0 +:106A8000D71280E090EAACE0B7E48093D8129093FC +:106A9000D912A093DA12B093DB128093DC12909398 +:106AA000DD12A093DE12B093DF128093E012909378 +:106AB000E112A093E212B093E31280E090E4ACE123 +:106AC000B6EC8093E4129093E512A093E612B09393 +:106AD000E7128093E8129093E912A093EA12B09320 +:106AE000EB128093EC129093ED12A093EE12B09300 +:106AF000EF120E94582D11FF0FC0CE0101967C01AC +:106B00008CE0F70111928A95E9F700E0B701802F38 +:106B10008AD00F5F0830D1F712FF0AC060E080E032 +:106B20009BE00E94175A60E081E59BE00E94175AA3 +:106B300013FF05C060E08EEA9BE00E94175A2C9676 +:106B40000FB6F894DEBF0FBECDBFDF91CF911F917E +:106B50000F91FF90EF9008951F93CF93DF93CDB7E0 +:106B6000DEB72C970FB6F894DEBF0FBECDBF80E026 +:106B700090E00E94745A893009F052C04DE450E010 +:106B800061E078E080EC92E10E947C5A892B09F464 +:106B900047C020E030E048EC55E46091C0127091AD +:106BA000C1128091C2129091C3120E94856D811111 +:106BB00037C020E030E048EC55E46091C412709199 +:106BC000C5128091C6129091C7120E94856D8111E5 +:106BD00027C020E030E048EC55E46091C812709185 +:106BE000C9128091CA129091CB120E94856D8111B9 +:106BF00017C010E0BE016F5F7F4F812F84DE8111CF +:106C000002C087E00CD21F5F1830A1F72C960FB698 +:106C1000F894DEBF0FBECDBFDF91CF911F910895D5 +:106C20008FEF91DEE6CF2DE0829FC00111244CE072 +:106C300050E0965F0C94395A1F920F920FB60F9244 +:106C400011240BB60F922F933F934F935F936F9343 +:106C50007F938F939F93AF93BF93EF93FF93809115 +:106C6000D60022E030E03093870E2093860E8F33DB +:106C7000A9F050F4883109F1813211F59FB7F894E9 +:106C80008091BE12886015C0803471F08E37C1F4D7 +:106C90009FB7F8948091BE1282600BC09FB7F894A2 +:106CA0008091BE12816005C09FB7F8948091BE129A +:106CB00080628093BE129FBF14C00E94114211C017 +:106CC000E091030E91E09E0F903809F490E020913E +:106CD000020E921731F0F0E0EE57F24F808390935E +:106CE000030EFF91EF91BF91AF919F918F917F9193 +:106CF0006F915F914F913F912F910F900BBE0F902D +:106D00000FBE0F901F9018951F920F920FB60F9203 +:106D100011240BB60F922F933F934F935F936F9372 +:106D20007F938F939F93AF93BF93EF93FF93809144 +:106D3000CE0021E030E03093870E2093860E8F3313 +:106D4000A9F050F4883109F1813211F59FB7F89418 +:106D50008091BE12886015C0803471F08E37C1F406 +:106D60009FB7F8948091BE1282600BC09FB7F894D1 +:106D70008091BE12816005C09FB7F8948091BE12C9 +:106D800080628093BE129FBF14C00E94114211C046 +:106D9000E091030E91E09E0F903809F490E020916D +:106DA000020E921731F0F0E0EE57F24F808390938D +:106DB000030EFF91EF91BF91AF919F918F917F91C2 +:106DC0006F915F914F913F912F910F900BBE0F905C +:106DD0000FBE0F901F9018951F920F920FB60F9233 +:106DE00011240BB60F922F933F934F935F936F93A2 +:106DF0007F938F939F93AF93BF93EF93FF93809174 +:106E0000C6001092870E1092860E8F33A9F050F4B0 +:106E1000883109F1813211F59FB7F8948091BE1243 +:106E2000886015C0803471F08E37C1F49FB7F89434 +:106E30008091BE1282600BC09FB7F8948091BE1201 +:106E4000816005C09FB7F8948091BE1280628093E4 +:106E5000BE129FBF14C00E94114211C0E091030EE8 +:106E600091E09E0F903809F490E02091020E921765 +:106E700031F0F0E0EE57F24F80839093030EFF91D4 +:106E8000EF91BF91AF919F918F917F916F915F91A2 +:106E90004F913F912F910F900BBE0F900FBE0F900F +:106EA0001F9018951F920F920FB60F9211240BB6D8 +:106EB0000F928F939F93EF93FF938091850EE82F0E +:106EC000F0E0EB5FF14F90819093D6008F5F8038B8 +:106ED00009F480E08093850E9091040E891305C01B +:106EE0008091D1008F7D8093D100FF91EF919F9190 +:106EF0008F910F900BBE0F900FBE0F901F901895A3 +:106F00001F920F920FB60F9211240BB60F928F9310 +:106F10009F93EF93FF938091850EE82FF0E0EB5F56 +:106F2000F14F90819093CE008F5F803809F480E01C +:106F30008093850E9091040E891305C08091C9003D +:106F40008F7D8093C900FF91EF919F918F910F905A +:106F50000BBE0F900FBE0F901F9018951F920F92AF +:106F60000FB60F9211240BB60F928F939F93EF934E +:106F7000FF938091850EE82FF0E0EB5FF14F908159 +:106F80009093C6008F5F803809F480E08093850E6F +:106F90009091040E891305C08091C1008F7D80936C +:106FA000C100FF91EF919F918F910F900BBE0F90B9 +:106FB0000FBE0F901F901895E091040E91E09E0F68 +:106FC000903831F490E004C02091BE1224FD26C018 +:106FD0002091850E2917C1F3F0E0EB5FF14F80831C +:106FE0009093040E8091860E9091870E81309105CA +:106FF00051F018F0029769F008958091C100806205 +:107000008093C10008958091C90080628093C90077 +:1070100008958091D10080628093D1000895CF932C +:10702000C82F88ED99E02DD4C830B1F190F4C43068 +:1070300051F148F4C23001F118F5C13009F040C0F7 +:1070400080EC99E01BC0C63009F118F581E899E0A1 +:1070500015C0C43169F140F4CA3021F100F1CB30E0 +:1070600079F589E294E02AC0C63129F1F0F0C23303 +:1070700039F583E394E022C08EEA99E002D425C07A +:107080008CE999E0FBCF82E999E0F8CF82E799E0BB +:10709000F5CF81E599E0F2CF88E499E0EFCF8DE379 +:1070A00099E0ECCF8AE299E0E9CF84E199E0E6CF7C +:1070B0008EE294E003C080E099E0E0CFF0D305C019 +:1070C0008EEE98E0DED38C2FCED38BEE98E0CF916E +:1070D000D8C38F929F92AF92BF92EF92FF920F937D +:1070E0001F93CF9385EE98E0CCD38FE1E82E83E118 +:1070F000F82E00EC12E1C0E0F701619171918191ED +:1071000091917F01F80181909190A190B1908F01B0 +:107110000E94276EA50194010E948C6D5AD3C23043 +:1071200019F083EE98E0ADD3CF5FC33029F781EE3D +:1071300098E0A7D380912B1396D38DED98E0CF9153 +:107140001F910F91FF90EF90BF90AF909F908F9005 +:1071500098C39FB7F8948091BE1282608093BE124C +:107160009FBF08953F924F925F926F927F928F924E +:107170009F92AF92BF92CF92DF92EF92FF920F93C6 +:107180001F93CF93DF93CDB7DEB768970FB6F89410 +:10719000DEBF0FBECDBF01E099E2A92E28E0722E1E +:1071A00030E2632E40E1B42E50E4552E62E0462ECC +:1071B00010910E13112309F451C00093101311FF05 +:1071C00006C08EE098E05DD383E098E01FC012FF18 +:1071D00006C08EE098E055D388EF97E017C013FF04 +:1071E00006C08EE098E04DD385EE97E00FC014FF07 +:1071F00006C08EE098E045D38AED97E007C015FF02 +:107200000DC08EE098E03DD38EEC97E03AD38BEC46 +:1072100097E037D384EF91E00E94464110FD08C00B +:107220008FB7F89490910E1310920E138FBF16C063 +:107230008BED98E026D389EC98E023D388E698E09C +:1072400020D39FB7F8948091BE128F7E8093BE1298 +:107250009FBF8091BE1284FFFCCFE2CF1091BE127F +:10726000112309F4A8C114FF04C081E080930F1317 +:10727000B3C110FFE2C08CE0E3E1F3E1DE011D9653 +:1072800001900D928A95E1F7809110138430E9F016 +:1072900040F48130E9F080F0823001F583E498E039 +:1072A0001CC0803179F018F4883049F017C0803262 +:1072B00091F0803421F012C082E698E00EC08DE596 +:1072C00098E00BC087E598E008C081E598E005C02C +:1072D0008AE498E002C08DE398E0D3D28091F41262 +:1072E000837039F0BE01635F7F4FCE0101960E942B +:1072F000114B8091F41280FD05C08091F41281FF42 +:1073000065C019C086E398E0BCD2CE0101967C012D +:10731000D12CF70161917191819191917F0159D2A5 +:10732000F2E0DF1619F084E398E0ABD2D39423E0C7 +:10733000D212EFCFE2CF8DE298E0A3D289E8C82E37 +:1073400083E1D82ECE0101967C01312C4701F60154 +:1073500061917191819191916F0120853185428573 +:1073600053850E94AC6C9B01AC01F7016081718177 +:10737000828193810E94AB6CF70160837183828369 +:107380009383F2E03F120FC02091A1133091A2131A +:107390004091A3135091A4130E94AB6CF70160833A +:1073A000718382839383F4E0EF0EF11CF40160811A +:1073B0007181828193810DD2F2E03F1619F08BE248 +:1073C00098E05FD2339423E03212C0CF8091F41260 +:1073D00082FF0CC085E298E054D28091AF11909169 +:1073E000AE11891708F48E5E891B3DD28091F4128C +:1073F00083FF0CC080E298E044D29091020E80910D +:10740000030E891708F48058891B2DD28091F4123D +:1074100084FF08C08AE198E034D20E94085843E013 +:1074200062E0E5D186E198E02CD29FB7F894809194 +:10743000BE128E7F8093BE129FBF812F887609F483 +:1074400041C080911013882349F0982F9C7791F1C7 +:10745000883021F40E947C4B00931113809110130B +:10746000811102C04092111316FF09C0883011F437 +:10747000509210138091111388608093111313FFA1 +:1074800005C08091101385FFB092101315FF12C034 +:107490008BED98E0F6D187E898E0F3D188E698E0A4 +:1074A000F0D18091111381FD1460846080931113D9 +:1074B000609210139FB7F8948091BE1287798093E1 +:1074C000BE129FBF11FF54C0812F887609F048C0BB +:1074D00080911013882339F0807509F441C08091A0 +:1074E000111381FF3DC08091111382FF1DC0809157 +:1074F0006F13882361F04091701350917113609164 +:107500007213709173139AD880EA9FE0BFD680916E +:107510006E13882349F0823011F45C9A02C00E94F5 +:10752000BE5A88EE93E0B2D68091AE119091AF1121 +:10753000981791F0A89EC00111248453914F892B74 +:1075400059F08091111383FD07C0709210130E94AF +:107550009E4B0E947E3002C01092101310921113A5 +:107560009FB7F8948091BE128D7F8093BE129FBF0B +:1075700012FF21C080911013807389F08091121343 +:1075800081110DC08091111382FF03C050D80E9459 +:10759000BE5A8091111382608093111304C010921F +:1075A0001113109210139FB7F8948091BE128B7F25 +:1075B0008093BE129FBF809110138C7711F00E94B0 +:1075C0009E4B9091101380911113903219F481FD0C +:1075D000B09210138111ECCD68960FB6F894DEBF0F +:1075E0000FBECDBFDF91CF911F910F91FF90EF9014 +:1075F000DF90CF90BF90AF909F908F907F906F90D3 +:107600005F904F903F9008958F929F92AF92BF925C +:10761000CF92DF92EF92FF920F931F93CF93DF935E +:10762000CDB7DEB72A970FB6F894DEBF0FBECDBF39 +:107630006B017C01042F20E030E0A9010E94856DE0 +:1076400087FF06C08DE2B8DCF7FAF094F7F8F09403 +:10765000102F123060F020E030E048EC52E4C70117 +:10766000B6010E94DE6F6B017C011250F2CF00FF69 +:107670000AC020E030E040E251E4C701B6010E94B8 +:10768000DE6F6B017C0120E030E040E05FE3C7018A +:10769000B6010E94AC6C0E94F46DE1E0F0E0EC0FEA +:1076A000FD1FE00FF11D2EE2208310E03AE0832E53 +:1076B000912CA12CB12C6115710581059105A9F0C2 +:1076C000101301C01F5FEE24E394F12CEC0EFD1E9D +:1076D000E10EF11CA50194010E94DE70605DF701CE +:1076E0006083B901CA011F5FE6CF80E3101748F439 +:1076F000E1E0F0E0EC0FFD1FE10FF11D80831F5F63 +:10770000F5CF10130BC081E0810FE1E0F0E0EC0F4A +:10771000FD1FE80FF11D1E5F80E38083112339F008 +:10772000FE01E10FF11D808147DC1150F7CF2A9651 +:107730000FB6F894DEBF0FBECDBFDF91CF911F9182 +:107740000F91FF90EF90DF90CF90BF90AF909F9000 +:107750008F9008951F93CF93DF93CDB7DEB7C058B6 +:10776000D1090FB6F894DEBF0FBECDBFAE014957A9 +:107770005F4FFA0161917191AF01CE0101960E94B4 +:107780009E7110E0E1E0F0E0EC0FFD1FE10FF11D54 +:107790008081882319F010DC1F5FF4CFC058DF4FC1 +:1077A0000FB6F894DEBF0FBECDBFDF91CF911F9112 +:1077B000089543E029CF2091FD1220FF08C02BE857 +:1077C00032E441E25DE30E94DE6F41E001C040E04F +:1077D0001BCF2091FD1220FF08C02BE832E441E2CC +:1077E0005DE30E94DE6F44E001C043E00DCFCF9225 +:1077F000DF92EF92FF921F93CF93DF93CDB7DEB767 +:10780000362F142FCDB6DEB64DB75EB7411B5109EA +:107810000FB6F8945EBF0FBE4DBF4F5F5F4F7A014A +:10782000242FFA019E2F921B911728F4632F0E9498 +:10783000BE709193F7CF112349F0F701E10FF11DCD +:1078400031978081805DB8DB1150F5CF0FB6F89489 +:10785000DEBE0FBECDBEDF91CF911F91FF90EF90A6 +:10786000DF90CF9008958A3020F0843620F043E0F6 +:1078700003C041E001C042E06AE0B9CF48E062E005 +:10788000B6CFCF93DF93FC018491EF01219688233B +:1078900019F092DBFE01F8CFDF91CF910895CF93DD +:1078A000DF93EC018991882311F086DBFBCFDF9118 +:1078B000CF910895A3E1B3E1E9E8FEE04D915D9138 +:1078C0006D917D9141935193619371938EE0E53970 +:1078D000F807A1F708958CE1E9E8FEE0DF011D92C9 +:1078E0008A95E9F71092AE111092AF1181E0809362 +:1078F000880E1092CB0E08952F923F924F925F9276 +:107900006F927F928F929F92AF92BF92CF92DF92AF +:10791000EF92FF920F931F93CF93DF93C091AF111C +:10792000C11101C0C2E1C150D091CB0EDC1709F4E6 +:107930001DC1EC2EF12C29E2C29F800111240453B9 +:10794000114FF801A588B688C788D08C61A172A1B3 +:1079500083A194A19B01AC010E94AC6CF80125A10C +:1079600036A147A150A50E94DE6F4B018C019B01FF +:10797000AC01B501C6010E94856D87FD02C05401AE +:10798000680189E28E9DF0018F9DF00D1124E45372 +:10799000F14FC501D601818B928BA38BB48BC111A2 +:1079A00001C0C2E1C150DC1761F029E22E9DC00187 +:1079B0002F9D900D11249C012453314F7901D9E260 +:1079C00033C08091AE11D81360C00E947C4B5DC063 +:1079D000AC2EB12CDA9DC001DB9D900D1124FC0171 +:1079E000E453F14F6F01C11101C0C2E1C150809158 +:1079F000AE118C1302C00E947C4BDA9D8001DB9D8E +:107A0000100D11240453114FF80185889688A7881A +:107A1000B08CA501940161897289838994890E943F +:107A2000856D811106C076018091CB0EC813D0CF31 +:107A30002CC0F80161A172A183A194A19B01AC01AA +:107A40000E94AC6CF80125A136A147A150A50E9467 +:107A5000DE6FF70121893289438954890E94AC6C19 +:107A60002B013C019B01AC01C501B4010E94A36F35 +:107A7000F80118162CF4418A528A638A748AD3CF8B +:107A8000818A928AA38AB48ACECFD091CB0EF9E2B2 +:107A9000DF9F800111240453114FC1E0CD0FC2318B +:107AA00009F4C0E02090AF1189E2382EC21509F424 +:107AB0005BC0CC2ED12C3C9CC0013D9C900D112470 +:107AC0009C012453314F7901F80141885288638821 +:107AD0007488F90181889288A388B488A5019401EB +:107AE000C301B2010E94856D87FF24C0F80161A126 +:107AF00072A183A194A19B01AC010E94AC6CF8011E +:107B000025A136A147A150A50E94DE6FA3019201D5 +:107B10000E94AC6C2B013C019B01AC01C501B4017E +:107B20000E94A36F181634F4F701418A528A638ABF +:107B3000748ADC2F3C9CF0013D9CF00D1124E45331 +:107B4000F14F258936894789508D618972898389EA +:107B500094890E94856D811101C0DC2FCF5FC231F5 +:107B600009F4C0E08701A2CFD093CB0EDF91CF9173 +:107B70001F910F91FF90EF90DF90CF90BF90AF904B +:107B80009F908F907F906F905F904F903F902F903D +:107B900008952F923F924F925F926F927F928F92B1 +:107BA0009F92AF92BF92CF92DF92EF92FF920F938C +:107BB0001F93CF93DF93CDB7DEB7E5970FB6F89459 +:107BC000DEBF0FBECDBF4B8F5C8F6D8F072F2DABF0 +:107BD0002091AF112EA3422F50E05BA34AA339E2BC +:107BE000239FF0011124E453F14F15861686178662 +:107BF000108A15A216A217A210A6108249E956E70C +:107C000066E97EE741A352A363A374A31C0140EC81 +:107C100052E158A74FA3CE0101969AAB89AB29E850 +:107C20003EE03EA72DA74EA139E2439FC00111249B +:107C30009C012353314F3AA729A7AE01435F5F4F01 +:107C40005DA34CA359A348A389E89EE098AB8FA7F6 +:107C500020EC32E13F8F2E8F10E03F01AF01435FF8 +:107C60005F4F5CAB4BAB2F0155E2450E511CF10150 +:107C700061917191819191911F01EE8DFF8D8190A4 +:107C80009190A190B190FF8FEE8FA50194010E9479 +:107C9000DE6F0E94AE6FE9A9FAA961937193819397 +:107CA0009193FAABE9ABEFA5F8A9C190D190E1901F +:107CB000F190F8ABEFA76C197D098E099F099B0124 +:107CC000AC0197FF07C022273327A901261B370BDA +:107CD000480B590BE9A5FAA5219331934193519390 +:107CE000FAA7E9A7EBA9FCA9C080D180E280F380C4 +:107CF000C216D306E406F50610F469017A01EBA971 +:107D0000FCA9C082D182E282F3820E94276EA50183 +:107D100094010E948C6D4B015C01E8A1F9A1619373 +:107D2000719381939193F9A3E8A320E030E0A90136 +:107D30000E94856D87FF0DC0112321F0113021F0C5 +:107D400084E003C081E001C082E0F3019081892BCF +:107D50008083A5019401C501B4010E94DE6FF20188 +:107D600020813181428153810E94AC6CF201608399 +:107D70007183828393831F5F133009F078CF0E9451 +:107D80004B704B015C01F2016083718382839383AA +:107D9000CD28CE28CF2809F422C220E030E0A90166 +:107DA0006B8D7C8D8D8D902F0E94856D87FD21C000 +:107DB000FDA9FF2361F0A50194016B8D7C8D8D8D54 +:107DC000902F0E94DE6F6B8F7C8F8D8F092F20E0AC +:107DD00030E040E85FE36B8D7C8D8D8D902F0E94AD +:107DE000856D87FF0DC01B8E1C8E20E82D8F0FE345 +:107DF00007C039E93B8F46E74C8F56E95D8F0EE7A8 +:107E0000A501940160E070E080E89FE30E948C6D22 +:107E100069A77AA78BA79CA7CE0149969A8F898FCD +:107E2000C12CD12C760129E2EAA1FBA12E9FC00131 +:107E30002F9F900D11249C012351314F39A328A36A +:107E4000ECA1FDA180809180A280B38020E030E091 +:107E5000A901C501B4010E94856D882309F472C08F +:107E6000A501940169A57AA58BA59CA50E94DE6F4A +:107E70002B013C01ECA1FDA160837183828393837C +:107E80009B01AC0160E070E080E89FE30E948C6D94 +:107E90004B015C01E894B7F8EFA1F8A5248535857E +:107EA00046855785C501B4010E94DE6F1B018E8F88 +:107EB000192F2B8D3C8D4D8D502F0E94A36F1816BE +:107EC0002CF02B8E3C8EFE8DFD8F012FE8A1F9A1A9 +:107ED000F081FE8FE8A1F9A1118122803380EFA10A +:107EE000F8A5208D318D428D538DC501B4010E94BE +:107EF000DE6F5B014C019B01AC016E8D712FC101E6 +:107F00000E94856D87FD03C0AE8E1B2D14018E8DE2 +:107F1000912FD101E8A1F9A180839183A283B3833A +:107F2000EDA5FEA52485358546855785C301B2019B +:107F30000E94DE6F9B01AC01C701B6010E94AB6CD1 +:107F40006B017C012CA13DA12C5F3F4F3DA32CA3D5 +:107F50004DA55EA54C5F5F4F5EA74DA78FA198A56D +:107F6000049698A78FA3E98DFA8DE217F30709F01D +:107F700067CF8091AE11FEA1F8130FC089E22AA14C +:107F80003BA1829FF001839FF00D1124E453F14F38 +:107F9000118A128A138A148A14C02FEE3FEF4FE71A +:107FA0005FE3C701B6010E94A36F18167CF489E253 +:107FB0004AA15BA1849FF001859FF00D1124E45339 +:107FC000F14F118E128E138E148E6AC02FEE3FEF7A +:107FD0004FE75FEBC701B6010E94A36F181644F08C +:107FE0008FEEC82EDD24DA948FE7E82E8FEBF82E83 +:107FF000A701960160E070E080E89FE30E94AB6C0F +:1080000020E030E040E05FE30E94DE6F0E944B70B2 +:108010006B017C0189E22AA13BA1829FF001839F31 +:10802000F00D1124E453F14F2091F5123091F61226 +:108030004091F7125091F81261A172A183A194A10D +:108040000E94DE6FA70196010E94DE6F4B015C016A +:10805000A701960160E070E080E89FE30E94AB6CAE +:108060009B01AC01C501B4010E948C6D6B017C01C8 +:1080700020E030E0A9010E94856D87FF03C0C12C7C +:10808000D12C760189E24AA15BA1849FF001859FF2 +:10809000F00D1124E453F14FC18ED28EE38EF48E95 +:1080A0002B8D3C8D4D8D502F6B8D7C8D8D8D902F1C +:1080B0000E94DE6F7B018C0189E22AA13BA1829F95 +:1080C000F001839FF00D1124E453F14FC701D80153 +:1080D000858F968FA78FB0A3A18CB28CC38CD48CC4 +:1080E0006090A10E7090A20E8090A30E9090A40EAE +:1080F0009301A401B701C8010E94856D87FD05C0E9 +:10810000B62DA72DF82DE92D04C0BE2DAF2DF02FD3 +:10811000E12F9501A6016B2F7A2F8F2F9E2F0E94A2 +:10812000A36F18166CF09301A401B701C8010E9457 +:10813000856D87FD03C05301640102C057016801CA +:1081400089E24AA15BA1849FF001859FF00D112473 +:10815000E453F14FC501D601858B968BA78BB08F69 +:108160008CE0FE013D96A5E9BEE001900D928A9556 +:10817000E1F7C701D8018093A10E9093A20EA093BE +:10818000A30EB093A40E8CE0FE013196A9E8BEE0E8 +:1081900001900D928A95E1F78091880E8093AF113E +:1081A0008F5F823109F480E08093880EE5960FB6E8 +:1081B000F894DEBF0FBECDBFDF91CF911F910F911D +:1081C000FF90EF90DF90CF90BF90AF909F908F90F7 +:1081D0007F906F905F904F903F902F908DCBE59662 +:1081E0000FB6F894DEBF0FBECDBFDF91CF911F91C8 +:1081F0000F91FF90EF90DF90CF90BF90AF909F9046 +:108200008F907F906F905F904F903F902F90089548 +:108210006115710581059105C1F16A30710581050E +:10822000910548F425E02A95F1F7000061507109A5 +:1082300081099109EDCF643671058105910548F4F6 +:10824000E5E3EA95F1F700006A50710981099109A7 +:10825000DFCF683EF3E07F078105910558F4EFE832 +:10826000F1E03197F1F700C000006456710981090F +:108270009109CECFEFE9FFE03197F1F700C00000A0 +:10828000685E734081099109C3CF0895009741F05A +:10829000EFE9FFE03197F1F700C000000197F6CF5A +:1082A00008954F925F926F927F92AF92BF92CF925A +:1082B000DF92EF92FF920F931F93CF93DF936C01A6 +:1082C000FB015A01309729F08081D601A80FB11D1A +:1082D00001C0DC018C91ED018D3229F422961196BA +:1082E0008C9101E008C08B3211F0219603C02296D8 +:1082F00011968C9100E0512C612C10E020E030E0D0 +:10830000A9017E0160ED762E780E89E08715D8F000 +:108310006394A8E0A61598F051101150A5E0B0E0C4 +:108320000E943371DC01CB01880F991FAA1FBB1F6C +:108330009C01AD01270D311D411D511D0BC0511078 +:1083400009C01F5F07C0BEEF7B1208C0511006C0F6 +:10835000552453942196D7018C91D3CF662009F4EC +:1083600050C07F01CA01B9010E94256E2B013C015A +:1083700020E030E0A9010E94856D882349F11F3F6C +:1083800064F42AE037ED43E25CE3C301B2010E94EA +:10839000DE6F2B013C011E5FF2CF1F3F59F42DEC25 +:1083A0003CEC4CEC5DE3C301B2010E94DE6F2B019B +:1083B0003C010EC0112361F020E030E040E251E4C6 +:1083C000C301B2010E94DE6F2B013C011150F2CFBC +:1083D000002351F077FA709477F87094F501408299 +:1083E00051826282738206C0D5014D925D926D9278 +:1083F0007C921397CC19DD09C150F701C08381E04D +:1084000001C080E0DF91CF911F910F91FF90EF901D +:10841000DF90CF90BF90AF907F906F905F904F9024 +:1084200008958091BE1284FD26C09FB7F894809174 +:10843000BE1280618093BE129FBF0E9417330E94BC +:10844000BE5A80911013982F9C7021F490911113B3 +:10845000913089F49FB7843029F4F89480910E13F9 +:10846000806204C0F89480910E13886080930E138C +:108470009FBF0C94E42D08952F923F924F925F92EC +:108480006F927F928F929F92AF92BF92CF92DF9224 +:10849000EF92FF920F931F93CF93DF93CDB7DEB789 +:1084A000C756D1090FB6F894DEBF0FBECDBF669692 +:1084B0008FAF66971B016B962CAF3DAF4EAF5FAF92 +:1084C0006B97A8960FAFA8978091FD1285FF51C0BA +:1084D0003B0100EC12E17B012CE0E20EF11CDD24FB +:1084E000D394D3018D909D90AD90BD903D0120E03F +:1084F00030E0A901C501B4010E94A36F181654F021 +:10850000F80124A135A146A157A1C501B4010E94DB +:10851000856D87FDD092121380911213882319F173 +:1085200080911013883061F07CDF9FB7F8948091C0 +:108530000E13856080930E139FBF0E94B23819C03E +:108540009FB7F8948091BE1288608093BE129FBF3F +:108550000E94B23880910F1381110BC080911013CB +:108560008111F6CFE1CF0C5F1F4FE614F70409F03D +:10857000B8CF80911013823009F477C3F101808164 +:108580009181A281B38165968CAF9DAFAEAFBFAF35 +:10859000659784819581A681B78161968CAF9DAFE7 +:1085A000AEAFBFAF619780859185A285B3852D96CB +:1085B0008CAF9DAFAEAFBFAF2D97AE01475B5F4FA6 +:1085C000BE01635B7F4FCE018F5A9F4F0E94722B7B +:1085D0002D96ECACFDAC0EAD1FAD2D9761962CAD7C +:1085E0003DAD4EAD5FAD619765966CAD7DAD8EAD29 +:1085F0009FAD6597DE0191964D01FE017D965F016D +:1086000018976D014CD3E9A0FAA00BA11CA12D8DE8 +:108610003E8D4F8D58A1698D7A8D8B8D9C8DDAD5CD +:10862000882309F41EC360911B0D70911C0D80916D +:108630001D0D90911E0D0E94276E2B013C01609133 +:10864000170D7091180D8091190D90911A0D0E94BF +:10865000276E6F966CAF7DAF8EAF9FAF6F976091B7 +:10866000130D7091140D8091150D9091160D0E94AF +:10867000276EFE01BD964F019E01275D3F4F5901B8 +:10868000DE0195966D01830172016F962CAD3DADB3 +:108690004EAD5FAD6F970E94C62CA401B501C60117 +:1086A0000E941D2C0E94AC356696BFAD6697BB2319 +:1086B00019F0B13041F0DDC0E1E0F0E06796FFAFC6 +:1086C000EEAF6797DAC020E030E048EC52E46B96FA +:1086D0006CAD7DAD8EAD9FAD6B970E94A36F1816EC +:1086E00054F480E090E0A8ECB2E46B968CAF9DAFC0 +:1086F000AEAFBFAF6B972DA13EA14FA158A5D10141 +:108700006D917D918D919C910E94AB6C2B013C01F0 +:1087100029A53AA54BA55CA5F101648175818681E7 +:1087200097810E94AB6C4B015C012DA53EA54FA526 +:1087300058A9D10118966D917D918D919C911B97AF +:108740000E94AB6C6B017C01A3019201C301B201D9 +:108750000E94DE6F2B013C01A5019401C501B4010B +:108760000E94DE6F9B01AC01C301B2010E94AC6CA0 +:108770004B015C01A7019601C701B6010E94DE6FA3 +:108780009B01AC01C501B4010E94AC6C0E944B700E +:1087900020E030E040EF51E40E94DE6F6B962CAD9C +:1087A0003DAD4EAD5FAD6B970E948C6D0E94F96D33 +:1087B00067967FAF6EAF67976A30710530F42AE035 +:1087C00030E067963FAF2EAF679720E030E040E99A +:1087D00050E46B966CAD7DAD8EAD9FAD6B970E94F6 +:1087E000DE6F20E030E048EC52E40E948C6D20E027 +:1087F00030E040E05FE30E94AC6C20E030E040E716 +:1088000052E40E94DE6F20E030E040E752E40E9434 +:10881000DE6F6B017C016093D8127093D912809344 +:10882000DA129093DB126093DC127093DD12809366 +:10883000DE129093DF1220E030E442E955E40E941A +:10884000A36F87FF09C0C092E012D092E112E092BC +:10885000E212F092E31211C080E090E4A2E9B5E4E4 +:108860008093E0129093E112A093E212B093E3128E +:1088700004C067961FAE1EAE67976796AEADBFADDC +:108880006797BD0180E090E00E94256E6B017C013E +:108890002DA13EA14FA158A5F10160817181828176 +:1088A00093810E94AB6CA70196010E948C6D6F961C +:1088B0006CAF7DAF8EAF9FAF6F9729A53AA54BA543 +:1088C0005CA5D10114966D917D918D919C91179726 +:1088D0000E94AB6CA70196010E948C6DA3966CAFB1 +:1088E0007DAF8EAF9FAFA3972DA53EA54FA558A9ED +:1088F000F10160857185828593850E94AB6CA7012B +:1089000096010E948C6DA7966CAF7DAF8EAF9FAF26 +:10891000A79722242394312C67962EAD3FAD6797FD +:108920002215330508F49BC1B101032C000C880B00 +:10893000990B0E94276E6B017C019B01AC016F9625 +:108940006CAD7DAD8EAD9FAD6F970E94DE6F9B01CC +:10895000AC016DA17EA18FA198A50E94AC6C6D8722 +:108960007E878F87988BA7019601A3966CAD7DAD0E +:108970008EAD9FADA3970E94DE6F9B01AC0169A5F0 +:108980007AA58BA59CA50E94AC6C698B7A8B8B8B8E +:108990009C8BA7019601A7966CAD7DAD8EAD9FAD6A +:1089A000A7970E94DE6F9B01AC016DA57EA58FA5E8 +:1089B00098A90E94AC6C6D8B7E8B8F8B988FAE01CB +:1089C0004B5E5F4FBE016F5E7F4FCE010D960E94E2 +:1089D000722BED88FE880F89188D29893A894B8979 +:1089E0005C896D857E858F859889DE01DD964D01D8 +:1089F000FE01EF5BFF4F5F0118966D0150D121968C +:108A0000ECACFDAC0EAD1FAD219725962CAD3DAD68 +:108A10004EAD5FAD259729966CAD7DAD8EAD9FAD0A +:108A20002997D8D3882309F416C16D857E858F8553 +:108A3000988960931F0D7093200D8093210D909362 +:108A4000220D29893A894B895C892093230D309323 +:108A5000240D4093250D5093260DED88FE880F8937 +:108A6000188DE092270DF092280D0093290D109398 +:108A70002A0DFE01F1964F01DE01D5965D01389673 +:108A80006F010DD1C9A8DAA8EBA8FCA88DA89EA8F3 +:108A9000AFA8B8AC2091070D3091080D4091090D99 +:108AA00050910A0D69AD7AAD8BAD9CAD0E94AB6C57 +:108AB00020E030E040EA52E40E94DE6F0E94F46D54 +:108AC000072E000C880B990B0E94276E69837A830E +:108AD0008B839C8320910B0D30910C0D40910D0DDB +:108AE00050910E0DC501B4010E94AB6C20E030E046 +:108AF00040EA52E40E94DE6F0E94F46D072E000CE3 +:108B0000880B990B0E94276E6D837E838F839887D5 +:108B100020910F0D3091100D4091110D5091120DBB +:108B2000C701B6010E94AB6C20E030E044EB52E498 +:108B30000E94AC6C20E030E040EA52E40E94DE6F1C +:108B40000E94F46D072E000C880B990B0E94276E73 +:108B500069877A878B879C870E94B23880910F1330 +:108B6000811181C09091AE118091880E981303C03D +:108B70000E94A938F1CF89809A80AB80BC80C50162 +:108B8000B4010E94F46D6093130D7093140D8093E3 +:108B9000150D9093160DCD80DE80EF80F884C7010F +:108BA000B6010E94F46D6093170D7093180D8093B9 +:108BB000190D90931A0D49845A846B847C84C301E7 +:108BC000B2010E94F46D60931B0D70931C0D809395 +:108BD0001D0D90931E0D2091C0123091C112409135 +:108BE000C2125091C312C501B4010E948C6D6983F9 +:108BF0007A838B839C832091C4123091C51240915B +:108C0000C6125091C712C701B6010E948C6D6D83C8 +:108C10007E838F8398872091C8123091C91240912A +:108C2000CA125091CB12C301B2010E948C6D6987A8 +:108C30007A878B879C87A8962FADA8976B964CADAB +:108C40005DAD6EAD7FAD6B97CE0101960E94C93DC3 +:108C500031E030932F0DFFEF2F1A3F0A5DCE80E0F9 +:108C600004C083E302C082E000C0C959DF4F0FB6E1 +:108C7000F894DEBF0FBECDBFDF91CF911F910F9152 +:108C8000FF90EF90DF90CF90BF90AF909F908F902C +:108C90007F906F905F904F903F902F9008952F920C +:108CA0003F924F925F926F927F928F929F92AF927C +:108CB000BF92CF92DF92EF92FF920F931F93CF93C9 +:108CC000DF93CDB7DEB766970FB6F894DEBF0FBE61 +:108CD000CDBF69837A838B839C832D833E834F83AF +:108CE0005887270138011601BA8AA98A84019B0195 +:108CF000AC010E94DE6F6B017C012D813E814F81B2 +:108D00005885CA01B9010E94DE6F9B01AC01C70101 +:108D1000B6010E94AC6C0E944B7023E333E343E541 +:108D200051E40E94AB6C69877A878B879C872DEC16 +:108D30003CEC46ED52E4C301B2010E94AB6C2B0146 +:108D40003C0129853A854B855C85CA01B9010E94A1 +:108D5000DE6F6B017C01A3019201C301B2010E948D +:108D6000DE6F9B01AC01C701B6010E94AC6C6B01C8 +:108D70007C0124ED35E64DE955E40E94AB6C4B01D6 +:108D80005C0126EC3FEA4DE957E4C701B6010E94B9 +:108D9000DE6F6D877E878F87988BA5019401C50153 +:108DA000B4010E94DE6F9B01AC016D857E858F85CD +:108DB00098890E94AB6C0E944B706B8B7C8B8D8B67 +:108DC0009E8BA7019601C701B6010E94AC6C6D870E +:108DD0007E878F87988BA501940169857A858B851D +:108DE0009C850E94DE6F4B015C012B893C894D897B +:108DF0005E89C301B2010E94DE6F9B01AC01C50117 +:108E0000B4010E94AB6C4B015C012CEE31E14EE0F1 +:108E100053E46D857E858F8598890E94DE6F9B0166 +:108E2000AC01C501B4010E948C6D0E949D6C21EEC5 +:108E30003EE245E652E40E94DE6FF10160837183F9 +:108E40008283938324ED35E64DE955E4C701B601ED +:108E50000E94AC6C4B015C012BE339E045EC57E41C +:108E6000C701B6010E94DE6F6B017C01A501940170 +:108E7000C501B4010E94DE6F9B01AC01C701B601C0 +:108E80000E94AB6C0E944B706B017C01A5019401A8 +:108E900069857A858B859C850E94DE6F4B015C011C +:108EA000A7019601C301B2010E94DE6F9B01AC01D4 +:108EB000C501B4010E94AC6C6B017C012CE53FEC58 +:108EC0004EE153E46D857E858F8598890E94DE6F23 +:108ED0009B01AC01C701B6010E948C6D0E949D6C84 +:108EE00021EE3EE245E652E40E94DE6F6B017C011A +:108EF000E989FA89608371838283938321EE3EE25C +:108F000045E652E4F10160817181828193810E9482 +:108F10008C6D0E9441702CEE31E14EE053E40E94D2 +:108F2000DE6F9B01AC01C301B2010E94A36F181652 +:108F300054F4F7FAF094F7F8F094E989FA89C082CA +:108F4000D182E282F38220E030E0A90169817A8156 +:108F50008B819C810E94856D20E030E0A901811108 +:108F600012C06D817E818F8198850E94A36F181633 +:108F70002CF480E090E0A4EBB2E411C080E090E03B +:108F8000A4EBB2EC0CC069817A818B819C810E9438 +:108F9000856D87FF0AC080E090E0A0ECBFE7F80194 +:108FA00080839183A283B38317C029813A814B8147 +:108FB0005C816D817E818F8198850E948C6D0E947D +:108FC0004A6D21EE3EE245E652E40E94DE6FF80172 +:108FD000608371838283938366960FB6F894DEBFB5 +:108FE0000FBECDBFDF91CF911F910F91FF90EF90FA +:108FF000DF90CF90BF90AF909F908F907F906F90B9 +:109000005F904F903F902F9008952F923F924F92F4 +:109010005F926F927F928F929F92AF92BF92CF9208 +:10902000DF92EF92FF920F931F93CF93DF93CDB711 +:10903000DEB72E970FB6F894DEBF0FBECDBF2983E3 +:109040003A834B835C83ED82FE820F83188786010F +:1090500015019E868D8621EE3EE245E652E40E9491 +:109060008C6D2B013C0121EE3EE245E652E4698124 +:109070007A818B819C810E948C6D4B015C0121EE79 +:109080003EE245E652E46D817E818F8198850E94A3 +:109090008C6D6B017C01C301B2010E94896D6983F3 +:1090A0007A838B839C83C501B4010E94896D6D8393 +:1090B0007E838F839887C301B2010E9441702B0188 +:1090C0003C01C501B4010E94417069877A878B8792 +:1090D0009C872CEE31E14EE053E469817A818B81EB +:1090E0009C810E94DE6F4B015C012CE53FEC4EE160 +:1090F00053E46D817E818F8198850E94DE6F9B0194 +:10910000AC01C501B4010E94AC6C23E333E343E539 +:1091100051E40E94AC6C4B015C01C701B6010E9496 +:10912000896D9B01AC01C501B4010E94DE6FF8019D +:109130006083718382839383C701B6010E9441706B +:109140009B01AC01C501B4010E94DE6FF101608397 +:109150007183828393832CEE31E14EE053E4C301AB +:10916000B2010E94DE6F6B017C012CE53FEC4EE109 +:1091700053E469857A858B859C850E94DE6F9B010F +:10918000AC01C701B6010E94AB6C2DEC3CEC46ED86 +:1091900052E40E94AC6CED85FE856083718382830E +:1091A00093832E960FB6F894DEBF0FBECDBFDF912E +:1091B000CF911F910F91FF90EF90DF90CF90BF90D4 +:1091C000AF909F908F907F906F905F904F903F9067 +:1091D0002F9008954F925F926F927F928F929F92FD +:1091E000AF92BF92CF92DF92EF92FF920F931F93B5 +:1091F0002B013C0149015A01670178019B01AC0137 +:109200000E949370811170C0A5019401C501B40141 +:109210000E949370811168C0A7019601C701B60131 +:109220000E949370811160C02AE939E947E053E454 +:10923000C301B2010E94A36F18160CF455C020E0C0 +:1092400030E0A901C301B2010E94856D87FD4CC0C9 +:109250002DEC3CEC4FEE52E4C501B4010E94A36F2B +:1092600018160CF441C020E030E0A901C501B4019A +:109270000E94856D87FD38C0A301920160E070E017 +:1092800084E393E40E94AB6CA50194010E94AB6C53 +:109290004B015C0120E030E047E153E40E94A36F02 +:1092A000181614F120E030E040E251E4C501B401A9 +:1092B0000E94856D87FD18C020E030E044EB52E449 +:1092C000C701B6010E94A36F181674F020E030E0C9 +:1092D00044EB52ECC701B6010E94856D881F8827B8 +:1092E000881F91E0892701C080E01F910F91FF90B6 +:1092F000EF90DF90CF90BF90AF909F908F907F9036 +:109300006F905F904F900895EF92FF920F931F938D +:10931000CF93DF9382E393E00E94745A8B3B19F062 +:1093200080E293E002C084E393E02AE3E22E2DE0A2 +:10933000F22EC4E3DDE08C0104531D40C8018C0F04 +:109340009D1F0E94745A8993EC16FD06B9F780910F +:10935000390D8F938091380D8F938091370D8F93B6 +:109360008091360D8F938091350D8F938091340DC0 +:109370008F9388E394E09F938F930E94AA3B8DB7CD +:109380009EB708960FB6F8949EBF0FBE8DBFDF91B3 +:10939000CF911F910F91FF90EF900895AF92BF92E0 +:1093A000CF92DF92EF92FF920F931F93CF93DF93B1 +:1093B000A82E6EE00E94F654C82F6FE08A2D0E94FE +:1093C000F654D0E0DC2FCC27C82B7E016E0104E0E0 +:1093D00010E06EE08A2D0E94F654B82E6FE08A2DC0 +:1093E0000E94F6542B2D30E0322F2227A901482B62 +:1093F000CA01C816D90608F46C018E159F0508F439 +:109400007C01C80FD91F0150110919F7CE018C1921 +:109410009D098E199F0963E070E00E94CA70613057 +:1094200050E1750708F48B01C801DF91CF911F91BE +:109430000F91FF90EF90DF90CF90BF90AF90089585 +:109440008F929F92AF92BF92CF92DF92EF92FF9254 +:109450007C01A4DF9C0181E0E816F10409F190F0A1 +:1094600082E0E816F10451F56091340D7091350DEC +:10947000CB01A0E0B0E0BC01CD01621B730B810900 +:10948000910941C06091360D7091370DCB01A0E07C +:10949000B0E0BC01CD01621B730B810991091EC0B4 +:1094A0006091380D7091390DCB01A0E0B0E0BC01A6 +:1094B000CD01621B730B810991091CC081E0E81684 +:1094C000F104A9F040F082E0E816F10419F560E03B +:1094D00070E0CB0118C060E070E0CB0145E2842E63 +:1094E00049E0942E43E0A42E42E4B42E16C060E07E +:1094F00070E0CB0139E0832E36EF932E31EBA32EB3 +:1095000032E4B32E0AC0812C912C24EBA22E22E44B +:10951000B22E03C060E070E0CB010E94276E20E015 +:1095200030E044EB53E40E94DE6F20E030E040E89E +:1095300059E30E94DE6F9B01AC01C501B4010E949A +:10954000AB6C6B017C0120E030E044EB53E40E9403 +:10955000A36F181654F420E030E044EB53E4C70145 +:10956000B6010E94AB6C6B017C0120E030E0A901E8 +:10957000C701B6010E94856D87FF0AC020E030E078 +:1095800044EB53E4C701B6010E94AC6C6B017C0153 +:10959000C701B601FF90EF90DF90CF90BF90AF90E2 +:1095A0009F908F9008950F931F93CF93DF93C4E301 +:1095B000DDE084E393E069918C010F5F1F4F0E940F +:1095C000175AC8010A331340B1F76BEB82E393E0FB +:1095D0000E94175A99DE80E090E032DF6093070D19 +:1095E0007093080D8093090D90930A0D81E090E02F +:1095F00027DF60930B0D70930C0D80930D0D9093EE +:109600000E0D82E090E01CDF60930F0D7093100D43 +:109610008093110D9093120DDF91CF911F910F91B7 +:1096200008958F929F92AF92BF92CF92DF92EF9266 +:10963000FF920F931F93CF93DF93EB0120ECE22E69 +:1096400022E1F22E8C016B018CE0C80ED11C6991D5 +:10965000799189919991F70181909190A190B19020 +:109660007F010E94276EA50194010E948C6DF80174 +:1096700061937193819391938F01CC15DD0539F737 +:10968000DF91CF911F910F91FF90EF90DF90CF90DE +:10969000BF90AF909F908F9008951F920F920FB63A +:1096A0000F9211240BB60F922F933F934F935F931A +:1096B0006F937F938F939F93AF93BF93EF93FF939A +:1096C00089B18095982F907184FF03C091110E94F9 +:1096D0001142FF91EF91BF91AF919F918F917F9137 +:1096E0006F915F914F913F912F910F900BBE0F9013 +:1096F0000FBE0F901F901895CF93DF93C0912C123F +:10970000D0912D122097B9F081E080932F126091B3 +:1097100045127091461280914712909148129B0118 +:10972000AC010E94DE6F698B7A8B8B8B9C8B1092C5 +:109730002D1210922C12DF91CF9108952F923F920B +:109740004F925F926F927F928F929F92AF92BF9251 +:10975000CF92DF92EF92FF920F931F93CF93DF93FD +:10976000CDB7DEB7CD54D1090FB6F894DEBF0FBE2A +:10977000CDBF80911013807723968FAF23978823D6 +:1097800089F020E030E0A901609145127091461205 +:1097900080914712909148120E94856D882311F4A0 +:1097A0000C947C54209145122F8B30914612388FA7 +:1097B00040914712498F509148125A8F809155120B +:1097C0008B83909156129D83A0915712AE83B091D6 +:1097D0005812BC830091411210914212E091431241 +:1097E000E987F0914412FD872091341230913512AF +:1097F00040913612509137122DA33EA34FA358A784 +:10980000309130123DAF409131124EAF5091321233 +:109810005FAF8091331221968FAF219720913C1238 +:1098200030913D1240913E1250913F122DAB3EAB14 +:109830004FAB58AF3091D51122963FAF2297409150 +:109840002B124BA75091AF1124965FAF24978091B4 +:10985000AE118B8F9091CB0E25969FAF2597A0913F +:109860002C12B0912D12BA8BA98B20913812309105 +:10987000391240913A1250913B1229AF3AAF4BAF97 +:109880005CAF30914D123B8B40914E124C8B5091FE +:109890004F125D8B809150128E8B909149129C8F4C +:1098A000A0914A12AD8FB0914B12BE8FE0914C1235 +:1098B000EF8F3090511220905212F0915312F98391 +:1098C000209154122A838091B0115BA5851709F469 +:1098D000F4C649895A89452B09F033C224965FADF5 +:1098E00024978B8D581709F478C7A82EB12CA9E2BC +:1098F000AA9DC001AB9D900D1124FC01E453F14FD2 +:10990000FA8BE98B80912F12882319F010922F1275 +:10991000BCC080912E128F5F853019F080932E127B +:1099200002C010922E12E0912E1221E12E9FF00122 +:109930001124EA52FE4E89E28A9DA0018B9D500DB2 +:1099400011244453514F7A01DA018C91808311968E +:109950004D915D916D917C911497DB01CA0123E0DB +:10996000880F991FAA1FBB1F2A95D1F78183928365 +:10997000A383B483D70115964D915D916D917C9130 +:109980001897DB01CA0133E0880F991FAA1FBB1F7C +:109990003A95D1F785839683A783B087D701199627 +:1099A0004D915D916D917C911C97DB01CA0143E063 +:1099B000880F991FAA1FBB1F4A95D1F781879287ED +:1099C000A387B487D7011D966D917D918D919C9150 +:1099D00050978B019C0153E0000F111F221F331F72 +:1099E0005A95D1F7058716872787308B0E94256EF9 +:1099F0006DAF7EAF8FAF21969FAF2197F70125A165 +:109A000036A147A150A50E948C6D6DA37EA38FA3A4 +:109A100098A79B01AC0160E070E080EA9FE30E94A0 +:109A20008C6D69AF7AAF8BAF9CAF2396FFAD239758 +:109A3000FF23D1F02B893C894D895E896B897C8914 +:109A40008D899E890E94DE6FD70151966D937D931B +:109A50008D939C935497BB89BF8BEC89E88FFD89CC +:109A6000F98F2E892A8F0DC0D70151966D917D9166 +:109A70008D919C9154970E944B706F8B788F898F3A +:109A80009A8F1DAA1EAA1FAA18AE29E22A9DF001CC +:109A90002B9DF00D1124E453F14FFE87ED87C1A0FB +:109AA000D2A0E3A0F4A0A701960160E070E080E0FE +:109AB0009FE30E948C6D69877A878B879C872396AA +:109AC0003FAD23973323F1F142E040934012AD853F +:109AD000BE8595964D905D906D907C90989751962F +:109AE0008D909D90AD90BC905497A50194010E94DB +:109AF000DE6F9B01AC01C301B2010E94AB6C8B0114 +:109B000089879D8720E030E0A9010E94856D87FF4D +:109B10001BC1A7019601C701B6010E94AC6CA3014D +:109B200092010E94DE6F9B01AC01C501B4010E944D +:109B3000AB6C0E944B706B8B7C8B8D8B9E8B3F82B2 +:109B4000288615C110924012ED85FE85F5A1FF8390 +:109B5000AD85BE859696BC91B887ED85FE8507A13B +:109B600010A5EB8DEF5FE23109F4E0E02496FFAD44 +:109B70002497EF1789F029E22E9FF0011124E45376 +:109B8000F14F61897289838994890E944B706B8B34 +:109B90007C8B8D8B9E8B04C01B8A1C8A1D8A1E8A1F +:109BA0002B893C894D895E896B897C898D899E8949 +:109BB0000E94DE6F2B013C0189E28A9DA0018B9DF2 +:109BC000500D11244453514F5AA349A3DA01519621 +:109BD0002D913D914D915C9154972D873E874F87F4 +:109BE000588BA30192016D857E858F8598890E948F +:109BF000AB6C29853A854B855C850E94DE6F2F8191 +:109C00003885A8010E94AC6C20E030E040E05FE3C2 +:109C10000E94DE6F362E272E89839A8320E030E063 +:109C2000A9010E94A36F18160CF095C0232D322DA8 +:109C300049815A816F817885C8010E94A36F1816E7 +:109C40000CF071C0E9A1FAA1858C968CA78CB0A00C +:109C5000A3019201C501B4010E94AB6C29853A852C +:109C60004B855C850E94DE6F6B837D838E839C8336 +:109C70009B01AC01632D722D89819A810E94A36F93 +:109C8000181694F5C501B4010E944B706C8F7D8F3E +:109C90008E8F9F8FA50194016D857E858F85988914 +:109CA0000E94856D811106C0F1E0F0934012098396 +:109CB0001A835DC02D853E854F855889C501B40145 +:109CC0000E94AB6C29853A854B855C850E94DE6FCE +:109CD0009B01AC016F817885C8010E94AB6C6F83DA +:109CE000788789839A8343C0A7019601C701B6018B +:109CF0000E94AC6C232D322D49815A810E94DE6F67 +:109D0000A30192010E94AC6C0E944B706C8F7D8FFE +:109D10008E8F9F8F3F8228863B822D8229812E83C2 +:109D20003A813C8324C042E04093401209831A8365 +:109D30005F895C8F888D8D8F998D9E8FAA8DAF8F57 +:109D400016C03F82288617C03F8228861B8A1C8A3D +:109D50001D8A1E8A10C0BB89BC8FEC89ED8FFD89DE +:109D6000FE8F2E892F8F1F82188619821A8200E09B +:109D700010E019861D8622965FAD2297452F50E090 +:109D80005AA749A786E0849FF001859FF00D112412 +:109D9000EF54FE4E80912E128283A989BA8995963E +:109DA000BC91B8ABE989FA89F6A1F9ABA989BA895E +:109DB0009796BC912696BFAF2697E989FA89F0A5B8 +:109DC0002796FFAF279729AD3AAD4BAD5CAD68A99B +:109DD00079A98B2F9F2F0E94AB6C6CA77DA78EA7B4 +:109DE0009FA720E030E0A9010E94856D87FF04C095 +:109DF0001CA61DA61EA61FA62091401228A32B81DB +:109E00003D814E815C816F81788589819A810E9434 +:109E1000856D811105C032E028963FAF289704C0B8 +:109E200041E028964FAF289728A859A92E965FAFF2 +:109E30002E9726968FAD26972D968FAF2D97279626 +:109E40003FAC27978EE3C82E83ECD82E8EE2E82E07 +:109E500089E3F82E412C512C3201C9A2DAA2EBA2DF +:109E6000FCA238A1332321F0313009F485C0C5C0EC +:109E7000A989BA8991962D913D914D915C919497C4 +:109E8000C701B6010E94DE6F4B015C0120E030E0AB +:109E900040E05FE30E94DE6F2F89388D498D5A8D37 +:109EA0000E94AC6CA70196010E94DE6F9B01AC0181 +:109EB000622D2E967FAD2E972D968FAD2D97932DDB +:109EC0000E94AB6C262E2E967FAF2E972D968FAFCD +:109ED0002D97392E2F81388549815A810E94856DB1 +:109EE00087FF3DC02F81388549815A8168A979A9AA +:109EF00026968FAD269727969FAD27970E94AB6C2D +:109F00009B01AC010E94AC6C6B017C012C8D3D8DE2 +:109F10004E8D5F8D6F89788D898D9A8D0E94AC6C86 +:109F20009B01AC01C701B6010E948C6D6B017C01E5 +:109F30002896BFAD2897B8A3EC8DEF8BFD8DF88FD9 +:109F40002E8D298F3F8D3A8F2F8048852E964FAFCB +:109F50002E9759812D965FAF2D973A80EBC0A501C2 +:109F600094016F89788D898D9A8D0E94AC6C6F8B6E +:109F7000788F898F9A8FDEC02C8D3D8D4E8D5F8DB1 +:109F8000C701B6010E94DE6F9B01AC01622D2E96C7 +:109F90007FAD2E972D968FAD2D97932D0E94AB6C94 +:109FA0004B015C012B813D814E815C810E94856D5E +:109FB00087FFB8C02B813D814E815C81622D2E963A +:109FC0007FAD2E972D968FAD2D97932D0E94AB6C64 +:109FD0002C8D3D8D4E8D5F8D0E948C6D6B017C01B3 +:109FE0002B808D812E968FAF2E979E812D969FAFC1 +:109FF0002D973C80A2E0A8A39DC0E989FA8921A100 +:10A0000032A143A154A1C701B6010E94DE6F4B01EA +:10A010005C012F89388D498D5A8D0E94856D87FF8F +:10A0200052C020E030E040E05FE3C501B4010E948F +:10A03000DE6F9B01AC016F89788D898D9A8D0E94AE +:10A04000AB6CA70196010E94DE6F9B01AC01622DF3 +:10A050002E967FAD2E972D968FAD2D97932D0E9426 +:10A06000AB6C29966FAF29972A967FAF2A972B96CC +:10A070008FAF2B972C969FAF2C97980149855D85C4 +:10A080000E94A36F1816FCF4A50194016F89788DC6 +:10A09000898D9A8D0E94AB6C6F8B788F898F9A8F88 +:10A0A00029962FAC29972A96FFAD2A972E96FFAFB7 +:10A0B0002E972B962FAD2B972D962FAF2D972C9655 +:10A0C0003FAC2C9737C0980149855D85622D2E964F +:10A0D0007FAD2E972D968FAD2D97932D0E94AB6C53 +:10A0E0009B01AC010E94AC6C6B017C012B893C890B +:10A0F0004D895E896F89788D898D9A8D0E94AC6CAF +:10A100009B01AC01C701B6010E948C6D6B017C0103 +:10A11000202E2E961FAF2E9739852D963FAF2D9767 +:10A120003D8408C0282C2E969FAE2E972D96AFAE5C +:10A130002D973B2CA7019601C301B2010E94AC6C84 +:10A140002B013C0129A13AA14BA15CA10E94856D84 +:10A1500087FF07C0A301920169A17AA18BA19CA1ED +:10A1600020C02CA53DA54EA55FA5622D2E967FADE6 +:10A170002E972D968FAD2D97932D0E94A36F1816B5 +:10A1800044F52EE333EC4EE259E369A17AA18BA1A9 +:10A190009CA10E94AC6C69A37AA38BA39CA3A3018E +:10A1A00092010E94AB6C6B017C01980149855D8531 +:10A1B000622D2E967FAD2E972D968FAD2D97932DD8 +:10A1C0000E94A36F18160CF44CCE48A14093401285 +:10A1D00003C058A1509340122DA13EA14FA158A5F4 +:10A1E000622D2E967FAD2E972D968FAD2D97932DA8 +:10A1F0000E94DE6F68A379A38CA798AB0E94726D52 +:10A200006B017C016DAD7EAD8FAD21969FAD219729 +:10A210000E94726D4B015C01A70196010E94AB6C1C +:10A220000E94F96D69AB7AAB8BAB9CABA6E089A5BC +:10A230009AA5A89FF001A99FF00D1124EF54FE4E9E +:10A2400029A93AA931832083232B09F087C02396BB +:10A250005FAD2397552309F481C0C801A985BD8549 +:10A260008093411290934212A0934312B0934412F0 +:10A270008B899C89AD89BE8980934D1290934E1233 +:10A28000A0934F12B09350128C8D9D8DAE8DBF8DCB +:10A290008093491290934A12A0934B12B0934C12A0 +:10A2A0008B819D81AE81BC81809355129093561213 +:10A2B000A0935712B09358128F819885A981BA81C3 +:10A2C0008093511290935212A0935312B093541250 +:10A2D00022968FAD22978093D511A989BA89B09320 +:10A2E0002D12A0932C1229AD3AAD4BAD5CAD20934D +:10A2F00038123093391240933A1250933B123B8DEF +:10A300003093AE118DA19EA1AFA1B8A58093341258 +:10A3100090933512A0933612B09337129BA5909369 +:10A320002B12109245121092461210924712109260 +:10A33000481210923C1210923D1210923E1210924E +:10A340003F12C0923012D0923112E0923212F0924B +:10A3500033122DA13EA14FA158A565C12DA93EA93B +:10A360004FA958ADC301B2010E94AC6C2B013C0156 +:10A3700028A139A14CA558A9C501B4010E94AB6C14 +:10A380009B01AC01C301B2010E948C6D4B015C01C9 +:10A3900028A139A14CA558A9C701B6010E94AB6CF0 +:10A3A000A50194010E94DE6F6DAB7EAB8FAB98AFC1 +:10A3B00020EC31EE44E65EE4C501B4010E94DE6F9C +:10A3C0000E94726D0E94F96D603DE7E07E07810595 +:10A3D000910560F446E029A53AA5429FF001439F0C +:10A3E000F00D1124EF54FE4E158253C0603A5FE029 +:10A3F00075078105910560F426E0A9A5BAA52A9FF5 +:10A40000F0012B9FF00D1124EF54FE4E31E011C0EE +:10A4100060344FE174078105910568F426E0A9A531 +:10A42000BAA52A9FF0012B9FF00D1124EF54FE4E88 +:10A4300032E035830CC0A6E049A55AA5A49FF001DF +:10A44000A59FF00D1124EF54FE4EB3E0B58346E016 +:10A4500029A53AA5429FF001439FF00D1124EF5426 +:10A46000FE4E2581022E04C09695879577956795B7 +:10A470000A94D2F7A9A9BAA902C0AA0FBB1F2A95AC +:10A48000E2F7B183A08361157105B1E08B079105F7 +:10A4900068F446E029A53AA5429FF001439FF00DDC +:10A4A0001124EF54FE4E7483638304C08FEF9FEF3B +:10A4B00094838383BBA4B39496E0B91201C0B12CFA +:10A4C000980149855D85622D2E967FAD2E972D963C +:10A4D0008FAD2D97932D0E94A36F1816CCF4822D6B +:10A4E0002E969FAD2E972D96AFAD2D97B32DE98962 +:10A4F000FA8985A396A3A7A3B0A7F8A1FDAF29A1C8 +:10A500002EAF3CA53FAF48A921964FAF2197CDC0B4 +:10A5100020E030E0A901622D2E967FAD2E972D967A +:10A520008FAD2D97932D0E94A36F18160CF0A6C027 +:10A53000C801A985BD858093411290934212A093D2 +:10A540004312B09344128B899C89AD89BE89809354 +:10A550004D1290934E12A0934F12B09350128C8DC7 +:10A560009D8DAE8DBF8D8093491290934A12A0931A +:10A570004B12B0934C128B819D81AE81BC81809334 +:10A58000551290935612A0935712B09358128F8180 +:10A590009885A981BA818093511290935212A09309 +:10A5A0005312B09354125BA55093D51189899A899F +:10A5B00090932D1280932C1229AD3AAD4BAD5CAD2A +:10A5C000209338123093391240933A1250933B1231 +:10A5D0003B8D3093AE118DA19EA1AFA1B8A5809304 +:10A5E000341290933512A0933612B0933712B09272 +:10A5F0002B1210924512109246121092471210928E +:10A60000481210923C1210923D1210923E1210927B +:10A610003F12C0923012D0923112E0923212F09278 +:10A6200033129C01AD01C701B6010E948C6DA9894E +:10A63000BA8995966D937D938D939C9398975CD8EA +:10A64000BB8DB093CB0EC35BDF4F0FB6F894DEBF6C +:10A650000FBECDBFDF91CF911F910F91FF90EF9073 +:10A66000DF90CF90BF90AF909F908F907F906F9032 +:10A670005F904F903F902F900C947C3C2496EFADD0 +:10A680002497FB8DEF1779F08F2F8F5F823109F4BC +:10A6900080E02B8D25963FAD2597231303C025968B +:10A6A0008FAF25978B8F1A8A198A3F8028844BA5F4 +:10A6B00022964FAF2297BBA606C9C801A985BD85C2 +:10A6C0008093411290934212A0934312B09344128C +:10A6D0008B899C89AD89BE8980934D1290934E12CF +:10A6E000A0934F12B09350128F89988DA98DBA8D77 +:10A6F0008093451290934612A0934712B09348124C +:10A700008C8D9D8DAE8DBF8D8093491290934A1292 +:10A71000A0934B12B0934C128B819D81AE81BC8172 +:10A720008093551290935612A0935712B0935812DB +:10A73000832D922DA981BA81809351129093521248 +:10A74000A0935312B093541222968FAD2297809308 +:10A75000D511A989BA89B0932D12A0932C1229ADD5 +:10A760003AAD4BAD5CAD2093381230933912409323 +:10A770003A1250933B123B8D3093AE118DAD9EAD8E +:10A78000AFAD2196BFAD21978093301290933112D7 +:10A79000A0933212B09333128DA19EA1AFA1B8A5A0 +:10A7A0008093341290933512A0933612B0933712DF +:10A7B0002DA93EA94FA958AD20933C1230933D12CC +:10A7C00040933E1250933F123BA530932B12259697 +:10A7D0004FAD25974093CB0E8FC0C801A985BD858D +:10A7E0008093411290934212A0934312B09344126B +:10A7F0008B899C89AD89BE8980934D1290934E12AE +:10A80000A0934F12B09350128F89988DA98DBA8D55 +:10A810008093451290934612A0934712B09348122A +:10A820008C8D9D8DAE8DBF8D8093491290934A1271 +:10A83000A0934B12B0934C128B819D81AE81BC8151 +:10A840008093551290935612A0935712B0935812BA +:10A85000832D922DA981BA81809351129093521227 +:10A86000A0935312B093541222965FAD2297509347 +:10A87000D51110922D1210922C1289AD9AADABAD5C +:10A88000BCAD8093381290933912A0933A12B093D2 +:10A890003B1224969FAD24979093AE118DAD9EAD43 +:10A8A000AFAD2196BFAD21978093301290933112B6 +:10A8B000A0933212B09333122DA13EA14FA158A5FF +:10A8C000209334123093351240933612509337123E +:10A8D0008DA99EA9AFA9B8AD80933C1290933D126B +:10A8E000A0933E12B0933F129BA590932B122596F6 +:10A8F000AFAD2597A093CB0EC35BDF4F0FB6F89497 +:10A90000DEBF0FBECDBFDF91CF911F910F91FF90A2 +:10A91000EF90DF90CF90BF90AF909F908F907F90FF +:10A920006F905F904F903F902F900895CF93DF935B +:10A930000E94E42D8BE2EEE2F2E1DF011D928A95A6 +:10A94000E9F783E2E8EAFEE0DF011D928A95E9F784 +:10A9500010922D1210922C121092B0111092D5114B +:10A9600081E080932B121092A70E0E94652D81B377 +:10A970009091A60E9170C92FB0E0DB2F96E0CC0F1E +:10A98000DD1F9A95E1F78F7BC82BC1BBEBE0F1E0AF +:10A9900090818091A60E8270880F880F977F892BF7 +:10A9A000808381B39091A60E92FB992790F98E7FB8 +:10A9B000892B81BB8091A50E80FD8F9A80FF8F9897 +:10A9C00080819091A50E92708D7F892B808321B319 +:10A9D0009091A50E9470892F90E095958795922F70 +:10A9E0009D7F892B81BBDF91CF910895CF93DF931A +:10A9F000C62F813009F48EC038F1823009F069C168 +:10AA00000E94E5298CE60E9475290E94BF298C2F9F +:10AA10000E9475290E94BF290E94E5298DE60E94A7 +:10AA200075290E94BF2962E070E080E090E00E94FA +:10AA30000841559A5D9A62E070E080E090E00E94E3 +:10AA40000841D8E0C0E002C10E945A2B8CE60E9467 +:10AA5000EA2A0E94342B8C2F0E94EA2A0E94342B6F +:10AA60000E945A2B8DE60E94EA2A0E94342B62E053 +:10AA700070E080E090E00E940841399A419A62E0DB +:10AA800070E080E090E00E940841D8E0C0E0439888 +:10AA900065E070E080E090E00E940841439ACC0FAE +:10AAA00065E070E080E090E00E94084139983199BB +:10AAB000C16065E070E080E090E00E940841D15004 +:10AAC00031F74398399A419A62E070E080E090E073 +:10AAD0000E940841439A65E070E080E090E00E94A7 +:10AAE0000841439862E070E080E090E00E940841F5 +:10AAF000399A419A62E070E080E090E00E9408415B +:10AB0000439862E070E080E090E00E9408410E947B +:10AB10001C2BE0C00E94B82A8CE60E94FD290E94EE +:10AB20007D2A8C2F0E94FD290E947D2A0E94B82A2E +:10AB30008DE60E94FD290E947D2A62E070E080E09F +:10AB400090E00E940841809101018460809301019E +:10AB50008091020184608093020162E070E080E0F5 +:10AB600090E00E940841D8E0C0E0809102018F7718 +:10AB70008093020165E070E080E090E00E9408416F +:10AB800080910201806880930201CC0F65E070E043 +:10AB900080E090E00E940841809101018B7F8093CA +:10ABA00001018091000182FDC16065E070E080E0FC +:10ABB00090E00E940841D150C1F6809102018F7748 +:10ABC0008093020180910101846080930101809152 +:10ABD000020184608093020162E070E080E090E016 +:10ABE0000E9408418091020180688093020165E023 +:10ABF00070E080E090E00E940841809102018F7730 +:10AC00008093020162E070E080E090E00E940841E1 +:10AC10008091010184608093010180910201846030 +:10AC20008093020162E070E080E090E00E940841C1 +:10AC3000809102018F778093020162E070E080E0F2 +:10AC400090E00E9408410E944B2A44C05E9865E053 +:10AC500070E080E090E00E9408415E9ACC0F65E0D1 +:10AC600070E080E090E00E94084155984D99C160E5 +:10AC700065E070E080E090E00E940841D15031F73B +:10AC80005E98559A5D9A62E070E080E090E00E94E4 +:10AC900008415E9A65E070E080E090E00E94084123 +:10ACA0005E9862E070E080E090E00E940841559A72 +:10ACB0005D9A62E070E080E090E00E9408415E985A +:10ACC00062E070E080E090E00E9408410E94A729C5 +:10ACD00001C0C0E08C2FDF91CF910895E7EBF2E146 +:10ACE00024813581DC010E942471A1E0B1E02C9126 +:10ACF00028602C93A0EAB0E02C9120682C93DC0112 +:10AD0000CB012AE0B695A795979587952A95D1F717 +:10AD10009093A9008093A800868180618093A10010 +:10AD20000895CF93DF9321E5829FC0011124EC01A8 +:10AD3000D55F40E550E0BE0187E692E1DDD3892B87 +:10AD400051F41092671240E550E067E672E1CE01DF +:10AD500090D380E001C081E0DF91CF91089590E031 +:10AD6000FC013197E231F10508F04EC08827E65426 +:10AD7000FF4F8F4F0C941C71809180008F7703C020 +:10AD8000809180008F7D8093800008958091800065 +:10AD9000877FF9CF84B58F7702C084B58F7D84BD5E +:10ADA00008958091B0008F7703C08091B0008F7DAF +:10ADB0008093B0000895809190008F7707C08091B4 +:10ADC00090008F7D03C080919000877F80939000DA +:10ADD00008958091A0008F7707C08091A0008F7D9B +:10ADE00003C08091A000877F8093A0000895809188 +:10ADF00020018F7707C0809120018F7D03C0809153 +:10AE00002001877F8093200108951F93CF93DF93C4 +:10AE1000282F30E0F901EA57F54F8491F901E05C01 +:10AE2000F54FD491F901E650F64FC491CC23B9F017 +:10AE3000162F811194DFEC2FF0E0EE0FFF1FE05290 +:10AE4000F64FA591B4919FB7F894111104C08C915D +:10AE5000D095D82302C0EC91DE2BDC939FBFDF910D +:10AE6000CF911F910895863308F0865390917B000F +:10AE7000282F2870977F922B90937B008770806497 +:10AE800080937C0080917A00806480937A00809126 +:10AE90007A0086FDFCCF809178002091790090E0C7 +:10AEA000922B08951F920F920FB60F9211240BB69A +:10AEB0000F922F933F934F935F936F937F938F9353 +:10AEC0009F93AF93BF93EF93FF9380916212909102 +:10AED00063129093250180932401E0916012F09118 +:10AEE0006112309709F01995FF91EF91BF91AF91E1 +:10AEF0009F918F917F916F915F914F913F912F9192 +:10AF00000F900BBE0F900FBE0F901F9018951F92C1 +:10AF10000F920FB60F9211248F939F938091080286 +:10AF20009091090290939500809394009F918F9146 +:10AF30000F900FBE0F901F9018951F920F920FB693 +:10AF40000F9211240BB60F922F933F934F935F9361 +:10AF50006F937F938F939F93AF93BF93EF93FF93E1 +:10AF600080915B1290915C128093B200E091591233 +:10AF7000F0915A12309709F01995FF91EF91BF9116 +:10AF8000AF919F918F917F916F915F914F913F9181 +:10AF90002F910F900BBE0F900FBE0F901F90189522 +:10AFA0001F920F920FB60F9211240BB60F922F9390 +:10AFB0003F934F935F936F937F938F939F93AF9341 +:10AFC000BF93EF93FF9380911013813071F08091C4 +:10AFD0000E1381110AC00E9411429FB7F89480910C +:10AFE0000E13836080930E139FBFFF91EF91BF916B +:10AFF000AF919F918F917F916F915F914F913F9111 +:10B000002F910F900BBE0F900FBE0F901F901895B1 +:10B0100089B180719091FD1296FD02C090E189275F +:10B02000882319F011F087E0089580E008952F92A9 +:10B030003F924F925F926F927F928F929F92AF92C8 +:10B04000BF92CF92DF92EF92FF920F931F93CF9315 +:10B05000DF93CDB7DEB768970FB6F894DEBF0FBEAB +:10B06000CDBF90910F139111A6C1782E20EC32E143 +:10B07000398B288B5901CE010D964C0100E010E070 +:10B08000C12CD12C7601A72DB0E0BD8BAC8B802FCD +:10B09000002321F0013021F094E003C091E001C0D1 +:10B0A00092E0F40191934F012C893D8902C03595BE +:10B0B00027958A95E2F720FF1BC020E030E040ECA6 +:10B0C0005FEBD50194966D917D918D919C919797B1 +:10B0D0000E94DE6F362E472E582E692EA70196014C +:10B0E0000E94856D87FD04C0C32CD42CE52CF62C62 +:10B0F0000F5F1F4FB4E0AB0EB11C0330110539F6E2 +:10B100008090031390900413A0900513B090061341 +:10B1100084E0682E01E063E173E1CE0101960E94B4 +:10B12000114B8091FE12E82FF0E0FF8BEE8BFE01B9 +:10B1300031962FE033E13B8B2A8B1901CE010D961E +:10B140002C0180E090E0188E10E0B701A601705845 +:10B150002C893D89082E02C0359527950A94E2F77F +:10B1600020FF25C0A88DAF5FA88FD10114961D9236 +:10B170001D921D921C9217972E893F89082E02C09E +:10B18000359527950A94E2F720FF03C0002319F0B4 +:10B1900007C0002329F0C082D182E282F38204C07A +:10B1A0004083518362837383D2012C91122B0196C9 +:10B1B000BFEF4B1A5B0A349624E0220E311C833019 +:10B1C000910531F6388D632F70E080E090E00E94A9 +:10B1D000256E0E944B709B01AC01C501B4010E9419 +:10B1E000DE6F6B017C0110932C130E945A3C20E00F +:10B1F000B701A601CE0101960E94C93D0E949E4B57 +:10B200000E947E300023E1F003DFFE013D9620E046 +:10B2100030E090E06191462F412359F0AC01022EBD +:10B2200002C0559547950A94E2F740FF02C0609529 +:10B2300016232F5F3F4F2330310561F710932C13F6 +:10B240000E949E4B8091BE128473B9F08091BE1211 +:10B25000807329F00E9411420E94B238ACC00111E3 +:10B26000A5C0D6DE8721B1F79FB7F8948091BE12B2 +:10B270008B7F8093BE129FBF04C0812F877009F01F +:10B28000C1CF54DB0E946B3C80910713909108134F +:10B290000E94464181E00827C9F020E030E040EA02 +:10B2A00050E46091091370910A1380910B139091EF +:10B2B0000C130E94DE6F6B017C018090FF12909056 +:10B2C0000013A0900113B090021310C0C090091396 +:10B2D000D0900A13E0900B13F0900C13809003139E +:10B2E00090900413A0900513B09006136A94611017 +:10B2F00012CFE090FE12F12C8090091390900A1367 +:10B30000A0900B13B0900C132401350177FA7094C0 +:10B3100077F8709400E010E08C899D89002E02C0BF +:10B32000959587950A94E2F780FF2CC0C701002EFF +:10B3300002C0959587950A94E2F7A889B98980FF9C +:10B3400011C094962D913D914D915C919797C501B7 +:10B35000B4010E94AC6CE889F98920813181428175 +:10B36000538106C02D913D914D915C91C301B20175 +:10B370000E94DE6F0E94AE6FEA89FB896483758349 +:10B38000868397830F5F1F4F2A893B892C5F3F4F2E +:10B390003B8B2A8B888999890496998B888B0330FB +:10B3A000110509F0B9CF0E945A3C05C08091BE1228 +:10B3B00082FF5ACF4FCF68960FB6F894DEBF0FBE0C +:10B3C000CDBFDF91CF911F910F91FF90EF90DF9054 +:10B3D000CF90BF90AF909F908F907F906F905F9035 +:10B3E0004F903F902F900895EBE6F0E080818F7EA4 +:10B3F0008083E8E6F0E080818E7F80830895549812 +:10B400005C9A8091FD1283FF0BC080916B0080617C +:10B4100080936B008091680081608093680008953C +:10B42000E3CF63E173E18DE793E10C94114BF89462 +:10B43000F999FECF92BD81BD81E08FBB80B5862793 +:10B44000482F082E000C550B262F30E024233523DF +:10B45000232B39F06F3F19F060BD84E006C084E112 +:10B4600004C0882321F060BD84E28FBBF99A7894F0 +:10B4700008959F92AF92BF92CF92DF92EF92FF9288 +:10B480000F931F93CF93DF935C018A017B01E40E3E +:10B49000F51EEB01912C6C01C61AD70ACE018C0D5A +:10B4A0009D1DCE15DF0581F0911008C0292D990C46 +:10B4B000330B232F221F2227221F01C021E0699175 +:10B4C000922E960EB4DFEACF692DC501800F911F31 +:10B4D000DF91CF911F910F91FF90EF90DF90CF9070 +:10B4E000BF90AF909F90A3CFF999FECF92BD81BD41 +:10B4F00081E08FBB80B508959F92AF92BF92CF92AB +:10B50000DF92EF92FF920F931F93CF93DF935B0134 +:10B510008A017C01E40EF51EEC01912C6B01C81A26 +:10B52000D90AC6018C0F9D1FCE15DF0581F0DCDF27 +:10B53000911008C0292D990C330B232F221F22278D +:10B54000221F01C021E0982E920E8993EACFC501F7 +:10B55000800F911FC9DF21E030E0981611F020E044 +:10B5600030E0C901DF91CF911F910F91FF90EF90D3 +:10B57000DF90CF90BF90AF909F9008955C98089512 +:10B58000CF93DF93CDB7DEB7CC56D1090FB6F89481 +:10B59000DEBF0FBECDBF8091C00082608093C0002F +:10B5A0001092C50080E18093C4009091C100906129 +:10B5B0009093C1009091C10098609093C1009091C8 +:10B5C000C10090689093C1009091C80092609093E0 +:10B5D000C8001092CD008093CC009091C90090617A +:10B5E0009093C9009091C90098609093C900909180 +:10B5F000C90090689093C9009091D0009260909398 +:10B60000D0001092D5008093D4008091D100806149 +:10B610008093D1008091D10088608093D100809187 +:10B62000D10080688093D1000E94AC35869A879AB9 +:10B63000829A80910A01886080930A0180910A01B0 +:10B64000826080930A0180910701816080930701E5 +:10B65000809A819A579A80910701806180930701AF +:10B6600080910701886080930701809107018460C1 +:10B670008093070180910801806180930801809187 +:10B680000801877F8093080180910801846080937E +:10B6900008018091FD1282FF08C08A9A80910801FA +:10B6A0008160809308015F9A07C08A9880910801A1 +:10B6B0008E7F809308015F98809181008F7E8093B8 +:10B6C000810080918100886080938100809180005A +:10B6D0008C7F80938000809180008F7080938000A9 +:10B6E00080916E00887F80936E0014BC15BC8091A1 +:10B6F0006E00816080936E0054985C9A80916D001A +:10B70000806180936D008091680084608093680000 +:10B710008AE090E00E9446410E94BB26399A3B9AFB +:10B72000419A439A80910101846080930101809144 +:10B7300001018068809301018091020184608093FF +:10B74000020180910201806880930201559A569A05 +:10B750005D9A5E9A0E94844980E090E00E94204AAF +:10B760006093070D7093080D8093090D90930A0D57 +:10B7700081E090E00E94204A60930B0D70930C0DC5 +:10B7800080930D0D90930E0D82E090E00E94204A70 +:10B7900060930F0D7093100D8093110D9093120D07 +:10B7A00020E030E04AE754E464E071E080E090E0BB +:10B7B0000E94432784E893E097DE8093F90C85E8A4 +:10B7C00093E092DE8093FA0C0BEF1CE088E993E0A3 +:10B7D0007C012FEFE21AF20A87DED8018D938D01EA +:10B7E000C701BCE9EB16B3E0FB0691F70FEF1CE0D5 +:10B7F0008EE893E07C01EFEFEE1AFE0A75DED801C9 +:10B800008D938D01C701B2E9EB16B3E0FB0691F70A +:10B8100003E01DE082E89CE07C01EFEFEE1AFE0AF7 +:10B8200063DED8018D938D01C701B6E8EB16BCE04D +:10B83000FB0691F7C090030DD090040DE090050D2C +:10B84000F090060D20E030E044EB53E4C701B60170 +:10B850000E94A36F181644F0A7019601C701B60114 +:10B860000E949370882341F01092030D1092040DF2 +:10B870001092050D1092060D0CE414E08AEE93E090 +:10B880007C01EFEFEE1AFE0A2FDED8018D938D01B9 +:10B89000C701B6EFEB16B3E0FB0691F76091030D1D +:10B8A0007091040D8091050D9091060DFE01319669 +:10B8B0007F018F0124E045E00E94306AFF92EF9201 +:10B8C00081EE92E09F938F930E94AA3B0E94B6263E +:10B8D0000E94B3260E94A2260E94BA2720E030E0F0 +:10B8E00044EB52E460910F0D7091100D8091110D99 +:10B8F0009091120D0E94AB6C7B018C0120910B0D7D +:10B9000030910C0D40910D0D50910E0D6091070D71 +:10B910007091080D8091090D90910A0DE7E28E2E2D +:10B92000EDE09E2EF3E2AF2EFDE0BF2EAFE1CA2E7A +:10B93000ADE0DA2E0E940548809113139091141304 +:10B94000A0911513B09116138093130D9093140DBD +:10B95000A093150DB093160D8091171390911813A5 +:10B96000A0911913B0911A138093170D9093180D8D +:10B97000A093190DB0931A0D80911B1390911C1375 +:10B98000A0911D13B0911E1380931B0D90931C0D5D +:10B99000A0931D0DB0931E0D80917A00876880934F +:10B9A0007A009B98A39A8FE080932B0D0E94F32836 +:10B9B00081E992E09F938F9383EF92E09F938F931F +:10B9C0000E94AA3B8FE992E09F938F9386E093E0D9 +:10B9D0009F938F930E94AA3B86EA92E09F938F9356 +:10B9E00086E193E09F938F930E94AA3B8091FA0C8B +:10B9F0008F938091F90C8F9385E293E09F938F93BF +:10BA00000E94AA3B86E393E00E944F3C8EE1EFE068 +:10BA1000F3E1DF011D928A95E9F781E080930F132E +:10BA200078949091FD120FB6F894DEBF0FBECDBF93 +:10BA300094FD809310139E01235C3F4F6F963FAFA0 +:10BA40002EAF6F971E0135E1230E311CCE01899672 +:10BA5000A1969FAF8EAFA197DE011196A396BFAFBF +:10BA6000AEAFA3978091030E8093020E8FE3E6E6BC +:10BA7000F3E1DF011D928A95E9F769E873E180E05F +:10BA80000E948334811103C087E00E940F380C9A12 +:10BA9000549A549A0E941733549A70DDB0DC54982B +:10BAA0005C9A0E946B3C0E9496540E945A3CB9DCFE +:10BAB00010920F131092BE1210920E1310921113C7 +:10BAC0001092121380911013813099F48BED98E04D +:10BAD0000E94413C85EB98E00E94413C88E698E05A +:10BAE0000E94413CA4961FAEA497A5961FAEA597B1 +:10BAF00007C010921013F6CF8091060185FF06C093 +:10BB00008091300D882309F482C0F6CF81E2ECE405 +:10BB1000FDE011928A95E9F7F8941092A000109236 +:10BB2000A1001092A5001092A40020E436E030930A +:10BB3000A9002093A8008091A10088608093A100B3 +:10BB40008091A10083608093A1007894809172001D +:10BB50008D7F809372001092300D6091030D709173 +:10BB6000040D8091050D9091060D8B019C013058BC +:10BB700000936D0D10936E0D20936F0D3093700D2B +:10BB80002091F90C3091FA0C245031092230310502 +:10BB9000C8F400E010E024EB32E400936D0D109344 +:10BBA0006E0D20936F0D3093700D1092310DA90121 +:10BBB00098010E94AC6C20E030E048E452E40E941E +:10BBC00025289ECF60E070E084EB92E40E941F295C +:10BBD00081E08093310D94CFE92FF0E0EE57F24FE2 +:10BBE00080819F5F903809F490E09093020E8F3F20 +:10BBF00009F474C58A3091F08D3081F0A596BFADFF +:10BC0000A597BB2309F436C5893209F42CC5909158 +:10BC1000020E8091030E9813DFCF60C507E612E194 +:10BC2000A4963FADA497E32FF0E0E959FD4E1082B2 +:10BC30000E94B23880910F1381110EC58AE0D101A4 +:10BC40001D928A95E9F780916712843209F077C4D2 +:10BC500081E08DAF80916812833481F034F48823C1 +:10BC600051F0843209F06FC209C0873439F0883549 +:10BC700009F069C203C088E696E054C39091691246 +:10BC800091114FC4833409F42DC21CF4843241F065 +:10BC90004EC4873409F46AC1883509F440C247C4E8 +:10BCA00080911013887109F03EC484E696E00E94EA +:10BCB000413C8091F0120E94333C8BE496E00E945C +:10BCC000413C8091F3120E94333C8DE296E00E9449 +:10BCD000413C8091F1120E94333C84E196E00E9445 +:10BCE000413C8091F1120E943E3C8DE096E00E9422 +:10BCF000413C8091F2120E94333C85EF95E00E9416 +:10BD0000413C8091F2120E943E3C8EEE95E00E94F2 +:10BD1000413C8091FD1282FB882780F90E94333CD0 +:10BD20008DEC95E00E94413C8091FD1286FB8827B6 +:10BD300080F90E94333C8DEA95E00E94413C80915D +:10BD4000FD12881F8827881F0E94333C8DE895E0EC +:10BD50000E94413C8091F4120E94333C87E795E0B9 +:10BD60000E94413C8091F4120E943E3C8FE695E097 +:10BD70000E94413C6091F5127091F6128091F71289 +:10BD80009091F8120E94D93B8FE495E00E94413CCB +:10BD90006091F9127091FA128091FB129091FC124D +:10BDA0000E94D93B84E395E00E94413C8091FD12C2 +:10BDB00081700E94333C87E195E00E94413C809174 +:10BDC000FD1285FB882780F90E94333C8CEF94E0BC +:10BDD0000E94413C8091FD1283FB882780F90E94DC +:10BDE000333C81EE94E00E94413C8091FD128295AB +:10BDF00081700E94333C85EC94E00E94413C80912C +:10BE0000FE120E94333C8BEA94E00E94413C8091F8 +:10BE1000FE120E943E3C83EA94E00E94413C609105 +:10BE2000FF127091001380910113909102130E94F0 +:10BE3000D93B86E894E00E94413C609103137091E5 +:10BE4000041380910513909106130E94D93B89E653 +:10BE500094E00E94413C809107130E94333C8AE4A5 +:10BE600094E00E94413C6091091370910A13809103 +:10BE70000B1390910C130E94D93B81E394E00E9434 +:10BE8000413C10E064E6D62E50ECE52E52E1F52E52 +:10BE900000E08FE294E00E94413C8D2D800F0E94D3 +:10BEA000333C8DE294E00E94413C123091F013301B +:10BEB000E1F0113031F0F70160817181828193816D +:10BEC0001CC0D7011C966D917D918D919C911F97FF +:10BED00014C020E030E041E655E4F701608D718D3B +:10BEE000828D938D0E948C6D08C0F70184A195A16D +:10BEF000A6A1B7A1BC01CD0190580E94D93B8AE20E +:10BF000094E00E94413C013029F0023031F088E297 +:10BF100094E005C086E294E002C084E294E00E94CE +:10BF2000413C123051F0133059F0113019F08AE1D0 +:10BF300094E008C088E094E005C087EF93E002C079 +:10BF400087EE93E00E94413C83EE93E00E94413CE7 +:10BF50000F5FF4E0EF0EF11C033009F09ACF2AE0F6 +:10BF6000D20E1F5F3CE8D3128FCFE1C281EE93E087 +:10BF70000E94413C80916613823091F038F488230E +:10BF800061F08130A9F48BED93E00CC0833069F04F +:10BF9000883071F481ED93E005C08EED93E002C02E +:10BFA00088ED93E00E94413C0CC085ED93E0FACF10 +:10BFB0008CEC93E00E94413C8091661382500E9479 +:10BFC000333C89EC93E00E94413C80916C138A5C85 +:10BFD0000E94333C80916A13813049F028F082300E +:10BFE00051F48AEB93E005C084EC93E002C08FEB40 +:10BFF00093E00E94413C80916813811103C085EB5E +:10C0000093E002C080EB93E00E94413C8091691371 +:10C01000811103C08BEA93E002C086EA93E00E949C +:10C02000413C80916713813019F481EA93E002C0AA +:10C030008CE993E00E94413C80916D13813049F07E +:10C0400028F0823051F480E993E005C088E993E05C +:10C0500002C084E993E00E94413C80916F138130DB +:10C0600031F040F0823051F488E893E005C08CE86C +:10C0700093E002C084E893E00E94413C80916E13FB +:10C08000882329F0823039F48CE793E002C080E8FD +:10C0900093E00E94413C89E793E00E94413C8091FB +:10C0A00078130E94333C86E793E00E94413C609104 +:10C0B00074137091751380917613909177130E9489 +:10C0C000DB3B83E793E00E94413C609170137091E9 +:10C0D000711380917213909173130E94DB3B8FE672 +:10C0E00093E020C180911013823049F40E941142E4 +:10C0F0008BED98E00E94413C82E998E00BC08111F1 +:10C1000012C282E0809310138BED98E00E94413CB4 +:10C110008BE998E00E94413C88E698E003C1809159 +:10C120001013813009F003C28BED98E00E94413C6E +:10C1300083EA98E00E94413C88E698E00E94413CF6 +:10C1400010921013F4C190911013923008F0EBC1CB +:10C15000893409F4C5C034F4833259F0883409F4C1 +:10C1600080C064C18E3409F436C1823509F4F9C047 +:10C170005DC182E08DAF809169128111D2C110E062 +:10C18000BE016F5F7F4F812F0E948334811104C0F5 +:10C1900087E00E940F38CBC18CE693E00E94413CBF +:10C1A000163029F0173041F486E693E002C089E6A4 +:10C1B00093E00E94413C04C086E3810F0E94333C1F +:10C1C00084E693E00E94413CCE0101967C0100E0B0 +:10C1D000D7016D917D918D919D917D010E94E93BEB +:10C1E000023019F082E693E002C08EE593E00E94EF +:10C1F000413C0F5F033061F71F5F183009F688E597 +:10C2000093E00E94413C45E9E42E43E1F42E10E026 +:10C21000F70161917191819191917F010E94E93BB8 +:10C22000123019F086E593E002C082E593E00E94A7 +:10C23000413C1F5F133061F78CE493E00E94413C66 +:10C240006091A1137091A2138091A3139091A413F4 +:10C250000E94E93B88E493E00E94413C0E946938D7 +:10C2600066C18091FD1284FF5AC184E0809310134F +:10C27000BBD884E00E94175883E00E9417580E94A0 +:10C28000B23880910F13811102C0CBD8B8D88091F9 +:10C290000F1381114CC1109210130E94E42D10E075 +:10C2A000812F0E949156811102C087E013C08091B6 +:10C2B0006712882389F087E692E10E944F3C87E667 +:10C2C00092E10E948805811105C086EC97E00E94EA +:10C2D000413C02C00E940F381F5F123009F727C18E +:10C2E00082E08DAF8091691281111FC040E550E05E +:10C2F0006EEA7BE087E692E1FFD8892B49F4109241 +:10C30000671240E550E067E672E18EEA9BE0B1D843 +:10C3100088E393E00E94413C87E692E10E944F3C13 +:10C3200084E393E00E94413C02C193E09DAF8D33D2 +:10C3300009F0F7C083E0282F30E0F901E959FD4EFC +:10C340009081D901AC59BD4E9C938F5F9081911122 +:10C35000F2CF8DAF40E550E067E672E18EEA9BE0F8 +:10C36000ABC082E08DAF80916912833509F0D9C0EE +:10C3700083E08DAF80916A12843509F0D2C084E0E9 +:10C380008DAF80916B128D3309F0CBC080916D120F +:10C390008111C7C085E08DAF80916C12843239F075 +:10C3A0008A3239F0833209F0BCC082E003C081E0F8 +:10C3B00001C08FEF0E94A3348BED98E00E94413CB6 +:10C3C0008CE698E00E94413C88E698E00E94413C5F +:10C3D0000E941142ACC082E08DAF80916912811140 +:10C3E00021C010E0812F0E949156811104C087E086 +:10C3F0000E940F3813C081E393E00E94413C812FDB +:10C400000E94333C8FE293E00E94413C87E692E138 +:10C410000E944F3C8CE293E00E94413C1F5F12302F +:10C4200009F785C091117FC011E001C010E0AE0195 +:10C43000475D5F4FBE01635C7F4F87E692E10E94DC +:10C440005141811102C082E077C0EDAD81E08E0FD5 +:10C450008DAFF0E0E959FD4E90819D3309F061C048 +:10C46000112369F1482F50E0282F30E0D901A95954 +:10C47000BD4E9C91241B350BF901E959FD4E90836B +:10C480008F5F9C919111F0CF8DAF87E692E10E9472 +:10C49000880581114AC069A57AA58BA59CA50E9433 +:10C4A0008C700E94F96DF1E56F9FC001112440E589 +:10C4B00050E067E672E1955F0E94395A38C0AE01DC +:10C4C0004F5F5F4FBE01635C7F4F87E692E10E9442 +:10C4D0005141882309F4B7CFEDADF0E0E959FD4EA5 +:10C4E000808181111EC089A49AA4ABA4BCA420E0C1 +:10C4F00030E04FE753E4C501B4010E94A36F181662 +:10C5000084F0C980DA80EB80FC80C501B4010E9410 +:10C51000F96D862FB701A6010E94813306C085E020 +:10C520000BC083E009C088E007C0811105C086EC1C +:10C5300097E00E94413C90C00E940F388DC083322A +:10C54000D1F43F922F928AE393E09F938F931F93AE +:10C550000F930E947D71F10101900020E9F7BF0166 +:10C560006219730969597D4E0F900F900F900F90CB +:10C570000F900F9009C0873429F08D3419F0803561 +:10C5800009F06AC067E672E1DB018C91803509F53C +:10C590008BE59CE00E9448718D89882391F03F9241 +:10C5A0002F9282E493E09F938F938FE89CE09F9378 +:10C5B0008F930E944F710F900F900F900F900F90DC +:10C5C0000F9082E3E7E6F2E1DF011D928A95E9F739 +:10C5D00043C080915B04843148F086E493E09F93EC +:10C5E0008F930E94AA3B0F900F9036C00091590480 +:10C5F000B6E60B9F80011124C8018E599B4F0E9403 +:10C6000048718D89882391F03F922F9282E493E0C4 +:10C610009F938F930A561B4F1F930F930E944F7146 +:10C620000F900F900F900F900F900F9082E3E7E61E +:10C63000F2E1DF011D928A95E9F780915904833177 +:10C6400020F48F5F8093590402C0109259048091A6 +:10C650005B048F5F80935B04A4961FAEA497A5969E +:10C660001FAEA5973BC0B13009F0D1CAA5961FAE49 +:10C67000A597CDCA813208F4CACA8F3209F4C7CA55 +:10C68000883211F18B3329F1A496EFADA497EF34E2 +:10C6900038F08BE00E940F38A4961FAEA497B7CA5B +:10C6A000A496FFADA4972F2F30E04F2F4F5F9FE947 +:10C6B000980FF901E959FD4E9A3108F480528083B0 +:10C6C000A4964FAFA497A3CA21E0A5962FAFA59734 +:10C6D0009ECA32E0A5963FAFA59799CA80915B0CA0 +:10C6E000882399F08BE59CE00E94880580938D0C4F +:10C6F0006FE87CE00E94462681E080938E0C82E306 +:10C70000ABE5BCE01D928A95E9F780912C0D811173 +:10C710003BC080915B048823B9F18091310D88235F +:10C7200099F100915A0436E6E32EE09E800111242F +:10C730000E591B4FC8010E948805F80182ABF0908A +:10C740005A04EF9C80011124B8016A567B4F0E59A0 +:10C750001B4FD801D2968C910E94462681E0F801A9 +:10C7600083AB82E3D8011D928A95E9F7B2E1BF1548 +:10C7700020F0F394F0925A0402C010925A0480916F +:10C780005B04815080935B040E94A9380E94B238F8 +:10C7900080910F13811166C980918E0C882369F0F6 +:10C7A0008FE89CE00E944F3C82E3EFE8FCE0DF0171 +:10C7B0001D928A95E9F710928E0C809110138823B0 +:10C7C00009F4E6C080912D0D882309F416C110925A +:10C7D0002D0D6D961CAE1DAE1EAE1FAE6D976996EB +:10C7E0001CAE1DAE1EAE1FAE699765961CAE1DAE8B +:10C7F0001EAE1FAE659784E16F96AEADBFAD6F976D +:10C80000E82F1D92EA95E9F7A196AEADBFADA197CD +:10C81000E82F1D92EA95E9F7D101E82F1D92EA95DC +:10C82000E9F7A396AEADBFADA3971D928A95E9F740 +:10C8300080E090E00E94204AA9966CAF7DAF8EAF59 +:10C840009FAFA99781E090E00E94204AAD966CAF1F +:10C850007DAF8EAF9FAFAD9782E090E00E94204AFF +:10C860006B017C0120E030E040E05FE3609100027A +:10C870007091010280910202909103020E94AB6CC0 +:10C8800020E030E040E05FE30E94DE6F20E030E037 +:10C8900044E353E40E94DE6F9B01AC0160E070E072 +:10C8A00084E393E40E94AB6C2B013C0120E030E078 +:10C8B00044EB52E4C701B6010E94AB6CFE01EF5A93 +:10C8C000FF4F4F019E012B5A3F4F5901DE01A75ADE +:10C8D000BF4F6D017B018C01AD962CAD3DAD4EADD2 +:10C8E0005FADAD97A9966CAD7DAD8EAD9FADA997AF +:10C8F0000E940548A401B501C6010E941D2C6D9639 +:10C900006CAD7DAD8EAD9FAD6D978E01035C1F4FFD +:10C9100024E045E0A5D569966CAD7DAD8EAD9FADAB +:10C9200069970451110924E045E09AD565966CADEC +:10C930007DAD8EAD9FAD6597810124E045E090D53A +:10C940008E010F5F1F4F24E045E0C301B20188D57F +:10C950001F930F933F922F92A196FFADA197FF9344 +:10C96000A0962FADA0972F936F963FAD6F973F93F3 +:10C970006E968FAD6E978F9388E593E09F938F931C +:10C980000E94AA3B0FB6F894DEBF0FBECDBF35C0E4 +:10C990008091310D882309F415CF84E1E82EF12C24 +:10C9A00096E6A92E22E3922EB0905A0CAB9C800101 +:10C9B0001124F801EE59FB4F6F0183A9882309F474 +:10C9C00001CF0A561B4FC8010E944F3CD801E92DE8 +:10C9D0001D92EA95E9F7D601D3961C92B2E1BB15F8 +:10C9E00028F081E08B0D80935A0C02C010925A0CF3 +:10C9F000E1E0EE1AF108C1F6E5CE82B301E083FB77 +:10CA0000882780F98027909161048917D9F08AE0FE +:10CA100090E00E94464112B313FB112710F9102732 +:10CA200080916104181771F01F921F938CE693E0B8 +:10CA30009F938F930E94AA3B109361040F900F90D5 +:10CA40000F900F9080915D0490915E04A0915F041F +:10CA5000B09160048F3F9105A105B10509F060F424 +:10CA60000196A11DB11D80935D0490935E04A09377 +:10CA70005F04B093600424C010925D0410925E04C1 +:10CA800010925F04109260048BE30E94335711E010 +:10CA90008536910508F410E080915C04181781F048 +:10CAA0001F921F9387E793E09F938F930E94AA3B67 +:10CAB00010935C041093320D0F900F900F900F9015 +:10CAC00080911013811112C080912E0D882371F076 +:10CAD00080912F0D882351F08FE793E09F938F93E0 +:10CAE0000E94AA3B10922F0D0F900F908091330D52 +:10CAF000882309F405C880911013811128C1809101 +:10CB00002B0D8F3009F023C18091320D882309F459 +:10CB10001EC18091C10C9091C20C9C012F5F3F4FB0 +:10CB20003093C20C2093C10C459714F40C94805D93 +:10CB300021961CAE1DAE1EAE1FAE219719A61AA6D9 +:10CB40001BA61CA61D8A1E8A1F8A188EE090270D20 +:10CB5000F090280D0091290D10912A0D2091230DA0 +:10CB60003091240D4091250D5091260D60911F0D9F +:10CB70007091200D8091210D9091220D4101FE01B7 +:10CB8000B9965F01DE01DD966D010E944F4680E09F +:10CB900090E00E94204A4B015C0181E090E00E94FD +:10CBA000204A6B017C0182E090E00E94204A2B0128 +:10CBB0003C01A501940121966CAD7DAD8EAD9FAD7C +:10CBC0002197C9D69F7720E030E040E05FE30E94E4 +:10CBD000A36F18163CF1A701960169A57AA58BA54C +:10CBE0009CA5B9D69F7720E030E040E05FE30E944B +:10CBF000A36F1816BCF0A30192016D897E898F89FD +:10CC0000988DA9D620E030E044EB52E4A5D69F777A +:10CC100020E030E040E05FE30E94A36F181614F0BC +:10CC20000C94805D8EE1EFE0F3E111928A95E9F7D3 +:10CC30000E945A3C0E94115A8092070D9092080D52 +:10CC4000A092090DB0920A0DC0920B0DD0920C0D5E +:10CC5000E0920D0DF0920E0D40920F0D5092100DBE +:10CC60006092110D7092120D809113139091141314 +:10CC7000A0911513B09116138093130D9093140D7A +:10CC8000A093150DB093160D809117139091181362 +:10CC9000A0911913B0911A138093170D9093180D4A +:10CCA000A093190DB0931A0D80911B1390911C1332 +:10CCB000A0911D13B0911E1380931B0D90931C0D1A +:10CCC000A0931D0DB0931E0D8CE0A396AEADBFAD2D +:10CCD000A3971D928A95E9F780911F0D9091200DE1 +:10CCE000A091210DB091220D89839A83AB83BC83DF +:10CCF0008091230D9091240DA091250DB091260DCA +:10CD00008D839E83AF83B8878091270D9091280DE6 +:10CD1000A091290DB0912A0D89879A87AB87BC878E +:10CD2000AE01475F5F4FBE016B5F7F4FCE01019643 +:10CD30000E941D2C00E020E030E048E452E4BE01F7 +:10CD40006F5F7F4F80E00E943C420C94805D1092A8 +:10CD5000C20C1092C10C0C94805DCF930E94A93834 +:10CD6000C9E20E94B23880910F13811111C08091E5 +:10CD7000AE119091AF11981739F0C89FC0011124DE +:10CD80008453914F892B69F780911013883049F3B0 +:10CD9000CF910895CF9320915A1330915B13409116 +:10CDA0005C1350915D1360917D1370917E1380919F +:10CDB0007F1390918013A9D6811126C020915E1314 +:10CDC00030915F1340916013509161136091811312 +:10CDD00070918213809183139091841396D6811160 +:10CDE00013C0C1E02091621330916313409164132A +:10CDF000509165136091851370918613809187130C +:10CE00009091881382D68111C0E08C2FCF91089524 +:10CE1000CF92DF92EF92FF920F93CF93DF933091F7 +:10CE20001013323009F482C0C02FD22F042F6B01AF +:10CE30007C0193DF10922B1310920D138091FD1241 +:10CE400087FD03C080E180930D13DD2331F09091C5 +:10CE50000D1380E1892780930D1389B18071909122 +:10CE60000D13891751F09FB7F89480910E138061CC +:10CE700080930E139FBF0E94B23880910F138111CF +:10CE800055C0A70196016AE573E181E00E943C422A +:10CE900081E08093BF129FB7F8948091BE128260A8 +:10CEA0008093BE129FBF0E94B23880910F138111F0 +:10CEB0003DC0809110138111F6CF8091BF12813057 +:10CEC000A9F4CC2351F08CE0E3E1F3E1AFE1B3E16D +:10CED00001900D928A95E1F70CC09FB7F89480916C +:10CEE0000E13806180930E139FBF03C081E0809377 +:10CEF0002B131092BF120E94B23880910F13811130 +:10CF000015C00E9496540E946B3C0E945A3C63E1FB +:10CF100073E18AE593E10E94114BDF91CF910F916C +:10CF2000FF90EF90DF90CF900C946938DF91CF9114 +:10CF30000F91FF90EF90DF90CF9008952F923F9246 +:10CF40004F925F926F927F928F929F92AF92BF9219 +:10CF5000CF92DF92EF92FF920F931F93CF93DF93C5 +:10CF6000CDB7DEB7E1970FB6F894DEBF0FBECDBFE9 +:10CF70006D837E838F8398872F87388B498B5A8B5D +:10CF80000D8BAD868B8A24E0E29E80011124C801BE +:10CF900083589C4E9F8B8E8BD801A45CBC4EB98F5E +:10CFA000A88F8D909D90AD90BC90FC012081318127 +:10CFB00042815381C501B401CFD46A8F7B8F8C8F9E +:10CFC0009D8FF4E0CF9E10011124910123583C4E17 +:10CFD0003F8F2E8FC101845C9C4E99A388A3DC01F6 +:10CFE000CD90DD90ED90FC90F9012081318142815E +:10CFF0005381C701B601B0D46AA37BA38CA39DA3C0 +:10D000002401350177FA709477F87094D701C6013E +:10D01000B05889839A83AB83BC83F801E65AFC4EEF +:10D020002A8D3B8D4C8D5D8D6081718182819381D4 +:10D0300092D44B015C01F101E65AFC4E2AA13BA1BE +:10D040004CA15DA1608171818281938184D46B0147 +:10D050007C01A5019401C301B201B0D769877A8729 +:10D060008B879C87A701960169817A818B819C813E +:10D07000A5D79B01AC0169857A858B859C856CD48D +:10D0800069877A878B879C87A7019601C301B201C4 +:10D0900095D76B017C01A501940169817A818B810F +:10D0A0009C818CD79B01AC01C701B60154D4298562 +:10D0B0003A854B855C85C3D46B017C019B899923A0 +:10D0C00089F02DEB37E346E055EBC701B6013BD7BE +:10D0D00087FD1AC02BED3FE049EC50E4C701B601D3 +:10D0E0003AD410C02DEB37E346E055E3C701B60153 +:10D0F0000CD518164CF02BED3FE049EC50E4C7017D +:10D10000B6012AD46B017C018090F9129090FA123A +:10D11000A090FB12B090FC122D813E814F8158856A +:10D12000CA01B90119D4A501940115D4A50194012E +:10D1300045D7B1D74B015C0120E030E040E05FE330 +:10D14000C701B6013BD72D813E814F81588536D727 +:10D150009F77A5019401E0D4B5D54BD57C8B6B8B23 +:10D16000DB01AB2B09F459C14B01A12CB12CBD89BA +:10D17000BB2371F0C501B40168D59B01AC016F857B +:10D18000788989899A891AD76F87788B898B9A8B46 +:10D19000C501B4015AD54B015C019B01AC01C7012B +:10D1A000B601BAD46D837E838F839887FD85E4E0D2 +:10D1B000FE9FC00111249C0123583C4E3E872D87C1 +:10D1C000FC01E65AFC4ED9012D913D914D915C91A7 +:10D1D0006081718182819381BED3A50194019CD429 +:10D1E0006EA77FA788AB99AB2D813E814F81588573 +:10D1F000CA01B901E3D69B01AC0160E070E080E0B8 +:10D2000090E4A9D36B017C012BEA3AEA4AE25EE39F +:10D210006D817E818F819885D1D64B015C0120E0A4 +:10D2200030E040E850E4C701B60196D39B01AC0161 +:10D23000C501B401C3D669877A878B879C8720E0B4 +:10D2400030E040E05FE3C701B601B8D66EA37FA32C +:10D2500088A799A710E022242394312CEB89FC891C +:10D26000E215F30509F4D9C01C3008F03AC0298151 +:10D270003A814B815C816EA17FA188A599A59ED63C +:10D280006B017C01A301920169857A858B859C8560 +:10D2900095D6A701960160D37B01082FD92EA30153 +:10D2A00092016EA17FA188A599A588D64B015C014A +:10D2B00029813A814B815C8169857A858B859C8542 +:10D2C0007DD69B01AC01C501B40145D32B013C01C6 +:10D2D0001F5FC701A02FBD2D89839A83AB83BC83B9 +:10D2E0005BC0B10180E090E0B0D42D813E814F81E0 +:10D2F000588564D66B017C010CD469837A838B8357 +:10D300009C83C701B601BDD64B015C01E88DF98D48 +:10D31000C080D180E280F380F7FAF094F7F8F094BF +:10D32000A8A1B9A18D919D910D90BC91A02D8AA726 +:10D330009BA7ACA7BDA7A701960169817A818B81C4 +:10D340009C813CD62B013C012AA53BA54CA55DA5A3 +:10D35000C501B40133D69B01AC01C301B201FCD2BB +:10D360002B013C01A7019601C501B40127D66B0131 +:10D370007C012AA53BA54CA55DA569817A818B819D +:10D380009C811CD69B01AC01C701B601E4D2698324 +:10D390007A838B839C8310E0A30192016A8D7B8D3D +:10D3A0008C8D9D8DD9D2EE89FF89608371838283B4 +:10D3B000938329813A814B815C816AA17BA18CA1F5 +:10D3C0009DA1CAD2AE8DBF8D6D937D938D939C939D +:10D3D00013972EA53FA548A959A9ED85FE85608123 +:10D3E000718182819381B8D2AD85BE856D937D9325 +:10D3F0008D939C9313970D892F85388949895A8974 +:10D400006DE773E181E00E943C4280910F1381112E +:10D410000EC0BFEF2B1A3B0A21CF0D892F8538890B +:10D4200049895A896AE573E181E00E943C42E196AC +:10D430000FB6F894DEBF0FBECDBFDF91CF911F9125 +:10D440000F91FF90EF90DF90CF90BF90AF909F90A3 +:10D450008F907F906F905F904F903F902F900895A6 +:10D46000EF920F931F93CF93DF93E80147FD02C024 +:10D4700034E001C034E1042E000C550B57FF03C00B +:10D48000519541955109E32E022F242FAE0107D06B +:10D49000CE01DF91CF911F910F91EF9008958F9260 +:10D4A0009F92AF92BF92CF92DF92EF92FF920F9333 +:10D4B0001F93CF93DF93CDB7DEB729970FB6F894BC +:10D4C000DEBF0FBECDBF6A01122FB02E2BE3201797 +:10D4D00020F0FF24F394F00E02C02CE3F22E0F2D67 +:10D4E00027E0AE014F5F5F4F50D1BC014981842FCF +:10D4F0008970813031F0E1FC06C0E0FE06C090E2A8 +:10D5000005C09DE203C09BE201C090E05E2D50711A +:10D5100043FF3CC0911102C083E001C084E0811749 +:10D5200018F4212F281B01C020E051110BC0F60177 +:10D53000822F30E2882319F031938150FBCFC20E45 +:10D54000D11C20E0992329F0D6019C93F601319655 +:10D550006F01C6010396E2FE0AC03EE4D6013C9389 +:10D5600041E411964C93119712963C9306C03EE607 +:10D57000F601308341E641833283FC01322F40E2E1 +:10D58000332309F442C041933150FACF42FF44C0E3 +:10D59000911102C083E001C084E0811718F4212FAB +:10D5A000281B01C020E051110BC0F601822F30E290 +:10D5B000882319F031938150FBCFC20ED11C20E09B +:10D5C000992329F0D6019C93F60131966F01C6018B +:10D5D0000396E2FE0BC039E4D6013C933EE411967B +:10D5E0003C93119736E412963C9307C039E6F60156 +:10D5F00030833EE6318336E63283FC01322F40E24F +:10D60000332319F041933150FBCFFC01E20FF11DA0 +:10D6100010828EEF9FEFA6C021E030E0911102C092 +:10D6200020E030E0161617061CF4FB01319602C00C +:10D63000E1E0F0E02E0F3F1FBB2021F0EB2DF0E0EA +:10D64000319602C0E0E0F0E02E0F3F1FE12FF0E046 +:10D650002E173F071CF4121B212F01C020E08E2D36 +:10D66000887159F4F601822F30E2882319F0319342 +:10D670008150FBCFC20ED11C20E0992329F0D601A6 +:10D680009C93F60131966F0151110BC0F601822F68 +:10D6900090E3882319F091938150FBCFC20ED11CE7 +:10D6A00020E00F2D060F9A81342F307144FF03C004 +:10D6B000913309F40150101624F4093018F008E0F1 +:10D6C00001C001E0AB0177FF02C040E050E0FB0188 +:10D6D000E41BF50BA1E0B0E0AC0FBD1FEA0FFB1F90 +:10D6E0008EE2A82E4B01801A91080B2D10E01195A7 +:10D6F000019511094F3FBFEF5B0721F4D601AC92B2 +:10D7000011966D01641775072CF08416950614F4B4 +:10D71000818101C080E3415051093196D6011196B3 +:10D720007D014017510724F0D6018C936701E2CFA9 +:10D730006417750739F4963320F4953319F43111D1 +:10D7400001C081E3F6018083F701822F90E28823F4 +:10D7500019F091938150FBCFF701E20FF11D108278 +:10D7600080E090E029960FB6F894DEBF0FBECDBFE3 +:10D77000DF91CF911F910F91FF90EF90DF90CF90AD +:10D78000BF90AF909F908F900895283008F027E0C9 +:10D790003327DA01990F311D87FD916000966105ED +:10D7A000710539F432602E5F3D9330E32A95E1F73D +:10D7B00008959F3F30F080387105610509F03C5FA6 +:10D7C0003C5F3D93913008F08068911DDF93CF93CB +:10D7D0001F930F93FF92EF92192F987F9695E92F41 +:10D7E00096959695E90FFF27EA59FD4F992733271C +:10D7F000EE24FF24A701E70105900894079428F47C +:10D80000360FE71EF81E491F511D660F771F881F30 +:10D81000991F0694A1F70590079428F4E70EF81EC7 +:10D82000491F561FC11D770F881F991F661F069439 +:10D83000A1F70590079428F4F80E491F561FC71F3B +:10D84000D11D880F991F661F771F0694A1F70590B9 +:10D85000079420F4490F561FC71FD81F990F661F42 +:10D86000771F881F0694A9F784911095177041F0CF +:10D87000D695C79557954795F794E7941A95C1F7AC +:10D88000ECE0F2E0689415901591359165919591D1 +:10D8900005907FE27395E118F10A430B560BC90B13 +:10D8A000D009C0F7E10CF11E431F561FC91FD01D40 +:10D8B0007EF4703311F48A95E6CFE894015030F08D +:10D8C000080F0AF40027021708F4202F2395022FCF +:10D8D0007A3328F079E37D932A95E9F710C07D9398 +:10D8E0002A9589F606949795679537951795179415 +:10D8F000E118F10A430B560BC90BD00998F0239598 +:10D900007E9173957A3308F070E37C932013B8F717 +:10D910007E9170617D9330F0839571E37D9370E328 +:10D920002A95E1F71124EF90FF900F911F91CF916D +:10D93000DF91992787FD909508959F939F77D5D183 +:10D940000F9000203AF49058A2EA2AED3FE049E413 +:10D9500050E413D096C25058BB27AA270ED091C2CC +:10D960005AD230F05FD220F031F49F3F11F41EF410 +:10D970002AC20EF4E095E7FBF7C1E92FA4D280F3A9 +:10D98000BA17620773078407950718F071F49EF5BC +:10D99000D3C20EF4E0950B2EBA2FA02D0B01B901C6 +:10D9A00090010C01CA01A0011124FF27591B99F015 +:10D9B000593F50F4503E68F11A16F040A22F232F21 +:10D9C000342F4427585FF3CF469537952795A79571 +:10D9D000F0405395C9F77EF41F16BA0B620B730B18 +:10D9E000840BBAF09150A1F0FF0FBB1F661F771F89 +:10D9F000881FC2F70EC0BA0F621F731F841F48F43E +:10DA0000879577956795B795F7959E3F08F0B3CFC3 +:10DA10009395880F08F09927EE0F979587950895AD +:10DA2000FAD158F080E891E009F49EEFFBD128F09C +:10DA300040E851E059F45EEF09C0C5C17DC2E92F4D +:10DA4000E07841D268F3092E052AC1F3261737077B +:10DA50004807590738F00E2E07F8E02569F0E02551 +:10DA6000E0640AC0EF6307F8009407FADB01B9012C +:10DA70009D01DC01CA01AD01EF935DD002D20AD055 +:10DA80005F91552331F02BED3FE049E450FD49EC27 +:10DA900063CF0895DF93DD27B92FBF7740E85FE3B9 +:10DAA0001616170648075B0710F4D92F50D29F931C +:10DAB0008F937F936F932DD3E8E9F1E087D1E1D184 +:10DAC0002F913F914F915F9185D2DD2349F090587E +:10DAD000A2EA2AED3FE049EC5FE3D0785D274DDF15 +:10DAE000DF91CFC112D280F09F3740F491110EF434 +:10DAF00024C260E070E080E89FE3089526F01B16E2 +:10DB0000611D711D811D36C150C10AD108F481E02B +:10DB1000089590D1E395C6C10CD0B3C183D140F034 +:10DB20007AD130F021F45F3F19F01EC1511105C2C6 +:10DB30004AC1C9D198F39923C9F35523B1F3951B71 +:10DB4000550BBB27AA2762177307840738F09F5F1E +:10DB50005F4F220F331F441FAA1FA9F333D00E2E8D +:10DB60003AF0E0E830D091505040E695001CCAF7FA +:10DB700029D0FE2F27D0660F771F881FBB1F2617BF +:10DB800037074807AB07B0E809F0BB0B802DBF0192 +:10DB9000FF2793585F4F2AF09E3F510568F0E4C07D +:10DBA000CCC15F3FECF3983EDCF3869577956795A3 +:10DBB000B795F7959F5FC9F7880F911D9695879543 +:10DBC00097F90895E1E0660F771F881FBB1F621762 +:10DBD00073078407BA0720F0621B730B840BBA0B20 +:10DBE000EE1F88F7E095089504D06894B111A5C19F +:10DBF000089571D188F09F5790F0B92F9927B751A8 +:10DC0000A0F0D1F0660F771F881F991F1AF0BA9500 +:10DC1000C9F712C0B13081F08FD1B1E008958CC145 +:10DC2000672F782F8827B85F39F0B93FCCF38695F6 +:10DC300077956795B395D9F73EF490958095709553 +:10DC400061957F4F8F4F9F4F0895E89409C097FBD0 +:10DC50003EF490958095709561957F4F8F4F9F4FC3 +:10DC60009923A9F0F92F96E9BB279395F695879507 +:10DC700077956795B795F111F8CFFAF4BB0F11F4CA +:10DC800060FF1BC06F5F7F4F8F4F9F4F16C0882371 +:10DC900011F096E911C0772321F09EE8872F762FA7 +:10DCA00005C0662371F096E8862F70E060E02AF0E8 +:10DCB0009A95660F771F881FDAF7880F96958795D4 +:10DCC00097F9089522D180F09F3740F491110EF01A +:10DCD00034C160E070E080E89FEB089526F41B16E5 +:10DCE000611D711D811D46C060C0DF93CF931F93DE +:10DCF0000F938B01EC01E5ECF1E068D0C2D0980104 +:10DD0000AE018B01EC0160E070E080E89FE323DE70 +:10DD1000C2D19801AE010F911F91CF91DF915AC1ED +:10DD2000990F0008550FAA0BE0E8FEEF161617062C +:10DD3000E807F907C0F012161306E407F50798F094 +:10DD4000621B730B840B950B39F40A2661F0232BAD +:10DD5000242B252B21F408950A2609F4A140A69529 +:10DD60008FEF811D811D089597F99F6780E870E00E +:10DD700060E00895882371F4772321F09850872B71 +:10DD8000762F07C0662311F499270DC09051862B7A +:10DD900070E060E02AF09A95660F771F881FDAF727 +:10DDA000880F9695879597F908959F3F31F0915088 +:10DDB00020F4879577956795B795880F911D96956F +:10DDC000879597F908959FEF80EC0895DF93CF939F +:10DDD0001F930F93FF92EF92DF927B018C01689467 +:10DDE00005C0DA2EEF01F6D0FE01E894A591259149 +:10DDF000359145915591AEF3EF01BFDDFE019701DD +:10DE0000A801DA9479F7DF90EF90FF900F911F91BE +:10DE1000CF91DF91089500240A941616170618066C +:10DE20000906089500240A9412161306140605061E +:10DE30000895C9CF50D0E8F3E894E0E0BB279F579E +:10DE4000F0F02AED3FE049EC06C0EE0FBB0F661F75 +:10DE5000771F881F28F0B23A62077307840728F0FB +:10DE6000B25A620B730B840BE3959A9572F7803864 +:10DE700030F49A95BB0F661F771F881FD2F7904822 +:10DE800096CF092E0394000C11F4882352F0BB0F97 +:10DE900040F4BF2B11F460FF04C06F5F7F4F8F4FC2 +:10DEA0009F4F0895EF93E0FF06C0A2EA2AED3FE0FE +:10DEB00049EC5FEB62DDE5DF0F90039401FC9058C5 +:10DEC000EDEEF1E03BC157FD9058440F551F59F05E +:10DED0005F3F71F04795880F97FB991F61F09F3F57 +:10DEE00079F087950895121613061406551FF2CF80 +:10DEF0004695F1DF08C0161617061806991FF1CFD0 +:10DF000086957105610508940895E5DFA0F0BEE7E8 +:10DF1000B91788F4BB279F3860F41616B11D672F18 +:10DF2000782F8827985FF7CF869577956795B11DED +:10DF300093959639C8F30895E894BB276627772709 +:10DF4000CB0197F90895ECDE08F48FEF08959B015B +:10DF5000AC0160E070E080E89FE3DECDBCDF58F10B +:10DF60009E5758F19851A0F0E9F0983020F5092E0D +:10DF70009927660F771F881F991F0A94D1F712C03F +:10DF8000062E672F782F8827985F11F4000C07C0A2 +:10DF9000993FB4F38695779567959395D9F7611D69 +:10DFA000711D811D3EF490958095709561957F4F10 +:10DFB0008F4F9F4F08956894C0CFBECF0BD061CFD5 +:10DFC0002ADF28F02FDF18F0952309F0CDCEFBCE05 +:10DFD0001124B3CF78DFA0F3959FD1F3950F50E0D4 +:10DFE000551F629FF001729FBB27F00DB11D639F0B +:10DFF000AA27F00DB11DAA1F649F6627B00DA11DB1 +:10E00000661F829F2227B00DA11D621F739FB00D56 +:10E01000A11D621F839FA00D611D221F749F3327C6 +:10E02000A00D611D231F849F600D211D822F762F5F +:10E030006A2F11249F5750408AF0E1F088234AF05C +:10E04000EE0FFF1FBB1F661F771F881F91505040A8 +:10E05000A9F79E3F510570F087CE6FCF5F3FECF37D +:10E06000983EDCF3869577956795B795F795E79594 +:10E070009F5FC1F7FE2B880F911D9695879597F9A5 +:10E0800008959F93D7DE0F9007FCEE5F0BCF11F43E +:10E090000EF499CE8ACE1FDFD0F39923D9F3CEF3B5 +:10E0A0009F57550B87FF43D00024A0E640EA90011C +:10E0B00080585695979528F4805C660F771F881FC7 +:10E0C00020F026173707480730F4621B730B840BC8 +:10E0D000202931294A2BA69517940794202531250C +:10E0E0004A2758F7660F771F881F20F02617370733 +:10E0F000480730F4620B730B840B200D311D411D5A +:10E10000A09581F7B901842F9158880F969587952E +:10E1100008959B01AC0152CFF8DE20F09F3708F440 +:10E120000CCF28CE42CEFCDD880B990B0895915080 +:10E130005040660F771F881FD2F708959F938F93E3 +:10E140007F936F93FF93EF939B01AC0137DFEF91C8 +:10E15000FF913CDE2F913F914F915F912FCFDB01DB +:10E160008F939F9380D0BF91AF91A29F800D911DFF +:10E17000A39F900DB29F900D11240895991B79E0F3 +:10E1800004C0991F961708F0961B881F7A95C9F747 +:10E1900080950895AA1BBB1B51E107C0AA1FBB1F96 +:10E1A000A617B70710F0A61BB70B881F991F5A9523 +:10E1B000A9F780959095BC01CD010895A1E21A2E92 +:10E1C000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1F1B +:10E1D000A217B307E407F50720F0A21BB30BE40B6B +:10E1E000F50B661F771F881F991F1A9469F76095B2 +:10E1F0007095809590959B01AC01BD01CF0108956C +:10E20000052E97FB16F400940FD057FD05D0D6DFEE +:10E2100007FC02D046F408C05095409530952195F2 +:10E220003F4F4F4F5F4F0895909580957095619542 +:10E230007F4F8F4F9F4F0895EE0FFF1F881F8BBF9B +:10E240000790F691E02D1994A29FB001B39FC001F1 +:10E25000A39F700D811D1124911DB29F700D811D12 +:10E260001124911D0895F0DFA59F900DB49F900D8E +:10E27000A49F800D911D11240895FB01DC010D90D8 +:10E280000020E9F7119701900D920020E1F7089521 +:10E29000FB01DC0101900D920020E1F708950F933E +:10E2A0001F93CF93DF93CDB7DEB72E970FB6F894B9 +:10E2B000DEBF0FBECDBF0E891F8986E08C831A8317 +:10E2C00009838FEF9FE79E838D83AE01465E5F4F8C +:10E2D000688D798DCE01019659D0EF81F885E00FD8 +:10E2E000F11F10822E960FB6F894DEBF0FBECDBF81 +:10E2F000DF91CF911F910F910895CF93DF93CDB709 +:10E30000DEB72E970FB6F894DEBF0FBECDBF85E007 +:10E310008C838C899D899A838983AE01485E5F4F87 +:10E320006E897F89CE010196E0D32E960FB6F894C0 +:10E33000DEBF0FBECDBFDF91CF9108950F931F9326 +:10E34000CF93DF93CDB7DEB72E970FB6F894DEBF2D +:10E350000FBECDBF8C0186E08C831A8309838FEFBB +:10E360009FE79E838D83CE01019610D0EF81F885C3 +:10E37000E00FF11F10822E960FB6F894DEBF0FBE8D +:10E38000CDBFDF91CF911F910F9108952F923F92B2 +:10E390004F925F926F927F928F929F92AF92BF92B5 +:10E3A000CF92DF92EF92FF920F931F93CF93DF9361 +:10E3B000CDB7DEB72B970FB6F894DEBF0FBECDBF3B +:10E3C0006C017B018A01FC0117821682838181FF27 +:10E3D000BFC1CE0101963C01F6019381F70193FD87 +:10E3E000859193FF81917F01882309F4ADC1853226 +:10E3F00039F493FD859193FF81917F01853221F45A +:10E40000B60190E0F0D4E8CF912C212C312CFFE123 +:10E41000F315D8F08B3279F038F4803279F083320A +:10E42000A1F4232D20611DC08D3261F0803369F489 +:10E43000232D216016C0832D8260382EE32DE460E9 +:10E440003E2E2AC0F32DF8601DC037FC2DC020EDF4 +:10E45000280F2A3040F08E32B9F436FC75C1232DD6 +:10E460002064322E19C036FE06C08AE0989E200D28 +:10E470001124922E11C0EAE02E9E200D1124222E8E +:10E48000F32DF0623F2E08C08C3621F4832D806876 +:10E49000382E02C0883641F4F70193FD859193FF31 +:10E4A00081917F018111B3CF982F9F7D9554933037 +:10E4B00028F40C5F1F4F9FE399830DC0833631F022 +:10E4C000833771F0833509F055C020C0F801808191 +:10E4D00089830E5F1F4F88248394912C530112C0AF +:10E4E0002801F2E04F0E511CF801A080B18036FEE9 +:10E4F00003C0692D70E002C06FEF7FEFC5012AD421 +:10E500004C018201F32DFF773F2E15C0280122E038 +:10E51000420E511CF801A080B18036FE03C0692D67 +:10E5200070E002C06FEF7FEFC50109D44C01F32DFD +:10E53000F0683F2E820133FC19C0822D90E08816CE +:10E540009906A0F4B60180E290E04DD42A94F5CF6C +:10E55000F50137FC859137FE81915F01B60190E0AE +:10E5600042D421102A9421E0821A91088114910446 +:10E5700079F7E1C0843611F0893639F5F80137FEB4 +:10E5800007C060817181828193810C5F1F4F08C039 +:10E5900060817181072E000C880B990B0E5F1F4F55 +:10E5A000F32DFF763F2E97FF09C0909580957095CB +:10E5B00061957F4F8F4F9F4FF0683F2E2AE030E0EC +:10E5C000A30166D4882E861844C0853731F4232DE4 +:10E5D0002F7EB22E2AE030E025C0932D997FB92EF0 +:10E5E0008F36C1F018F4883579F0AEC0803719F055 +:10E5F000883721F0A9C0E92FE061BE2EB4FE0DC01E +:10E60000FB2DF460BF2E09C034FE0AC0292F2660FE +:10E61000B22E06C028E030E005C020E130E002C0A4 +:10E6200020E132E0F801B7FE07C06081718182818C +:10E6300093810C5F1F4F06C06081718180E090E084 +:10E640000E5F1F4FA30124D4882E8618FB2DFF7761 +:10E650003F2E36FE0DC0232D2E7FA22E891458F496 +:10E6600034FE0BC032FC09C0832D8E7EA82E05C05F +:10E67000B82CA32C03C0B82C01C0B92CA4FE0FC029 +:10E68000FE01E80DF11D8081803321F49A2D997EE1 +:10E69000A92E09C0A2FE06C0B394B39404C08A2D6B +:10E6A000867809F0B394A3FC10C0A0FE06C0B21493 +:10E6B00080F4280C922C9B180DC0B21458F4B601AB +:10E6C00080E290E090D3B394F8CFB21418F42B18F2 +:10E6D00002C0982C212CA4FE0FC0B60180E390E06C +:10E6E00082D3A2FE16C0A1FC03C088E790E002C05E +:10E6F00088E590E0B6010CC08A2D867851F0A1FE25 +:10E7000002C08BE201C080E2A7FC8DE2B60190E07E +:10E710006AD3891430F4B60180E390E064D39A940C +:10E72000F8CF8A94F301E80DF11D8081B60190E0E5 +:10E730005AD38110F6CF222009F44ECEB60180E2E2 +:10E7400090E051D32A94F7CFF6018681978102C0D9 +:10E750008FEF9FEF2B960FB6F894DEBF0FBECDBFA5 +:10E76000DF91CF911F910F91FF90EF90DF90CF90AD +:10E77000BF90AF909F908F907F906F905F904F90E1 +:10E780003F902F90089520FD09C0FC0123FD05C096 +:10E7900022FF02C07383628351834083089544FD46 +:10E7A00017C046FD17C0AB01BC01DA01FB01AA0F7F +:10E7B000BB1FEE1FFF1F1094D1F74A0F5B1F6E1F88 +:10E7C0007F1FCB01BA01660F771F881F991F09C0F1 +:10E7D00033E001C034E0660F771F881F991F315066 +:10E7E000D1F7620F711D811D911D08950F931F9325 +:10E7F000CF93DF938C01C801B8D2EC0197FD06C01E +:10E800008BD2892BC1F7B801CE0129D3CE01DF917C +:10E81000CF911F910F9108958F929F92AF92BF92C7 +:10E82000EF92FF920F931F93CF93DF938C01D62F1C +:10E830007A01B22E9AD29C0133272B32310531F066 +:10E840002D32310559F48B2D8068B82ED15011F43A +:10E8500080E061C0C80189D297FDFACFCB2DCD7F72 +:10E860002B2D2073F9F48033E9F4AA24AA94AD0E79 +:10E8700009F43EC0C80179D297FD3AC09C012F7DB2 +:10E8800033272835310541F4C264D25089F1C801DB +:10E890006CD297FF07C02CC0B6FE02C0C26001C098 +:10E8A000C261DA2D812C912C540120ED280F2830E3 +:10E8B00078F0C4FF03C0B801D2D217C02A3040F0AC +:10E8C000C6FFF9CF2F7D3FEE320F3630A0F727502D +:10E8D0004C2FC501B40163DF4B015C01C260D15014 +:10E8E00051F0C80142D297FFE0CFC1FD04C0B0CFC4 +:10E8F000812C912C5401C7FF08C0B094A09490942F +:10E900008094811C911CA11CB11C2C2FB501A40169 +:10E91000C70139DF81E0DF91CF911F910F91FF9007 +:10E92000EF90BF90AF909F908F9008955F926F92FD +:10E930007F928F929F92AF92BF92CF92DF92EF928F +:10E94000FF920F931F93CF93DF93CDB7DEB7A097BE +:10E950000FB6F894DEBF0FBECDBF5C01962E7A01D4 +:10E96000F9018E010F5F1F4F680180E2D8011D92EF +:10E970008A95E9F7D50113968C9080E090E0612CA0 +:10E98000712C30E061E070E083FC259183FE2191E1 +:10E990008F01522E211103C080E090E090C02E35EF +:10E9A00011F4009751F1432F50E0481759073CF4F8 +:10E9B0002D3559F12D3219F4772009F103C0772054 +:10E9C00009F468C0452D469546954695D601A40F95 +:10E9D000B11D452D47708B0102C0000F111F4A95D4 +:10E9E000E2F7A8015C91452B4C93651459F056143D +:10E9F00010F45394E7CF5A94E5CF31E004C0772464 +:10EA0000739401C0712C0196BFCF772019F08E81CD +:10EA100080628E83311103C08824839417C0F6016D +:10EA20009E012F5D3F4F8081809581932E173F0778 +:10EA3000D1F7F2CFE114F10429F0D7018C93F7015B +:10EA400031967F019A94812C9920E9F0C5018DD1EE +:10EA500097FD17C0FC01FF2723E0F595E7952A9560 +:10EA6000E1F7EC0DFD1D208130E0AC01477055272A +:10EA700002C0359527954A95E2F720FDDBCFB50119 +:10EA8000EED1811089CFE114F10411F0D7011C926D +:10EA9000C80115C0422F469546954695D601A40F4C +:10EAA000B11D422F47708B0102C0000F111F4A9504 +:10EAB000E2F7A8015C91452B4C93622EA4CFA0965F +:10EAC0000FB6F894DEBF0FBECDBFDF91CF911F917F +:10EAD0000F91FF90EF90DF90CF90BF90AF909F90FD +:10EAE0008F907F906F905F9008955F926F927F926A +:10EAF0008F929F92AF92BF92CF92DF92EF92FF924E +:10EB00000F931F93CF93DF936C01EB015A01FC012C +:10EB100017821682512CF601E380FE01E3FC8591F9 +:10EB2000E3FE8191182FEF01882309F4E0C090E003 +:10EB3000F3D0892B19F0C60159DEEDCF153241F41F +:10EB4000FE01E3FC1591E3FE1191EF01153271F422 +:10EB5000C6010BD197FDC9C0412F50E09C0133275E +:10EB600024173507C1F2B6017AD1C1C01A3239F47F +:10EB7000E3FC1591E3FE1191EF0101E001C000E01B +:10EB8000F12C20ED210F2A3078F402606F2D70E017 +:10EB900080E090E040E203DEF62EFE01E3FC1591FA +:10EBA000E3FE1191EF01EDCF01FF03C0F11003C0AF +:10EBB0009EC0FF24FA94183619F01C3651F010C08C +:10EBC000FE01E3FC1591E3FE1191EF01183641F4CB +:10EBD00008600460FE01E3FC1591E3FE1191EF0172 +:10EBE000112309F484C0612F70E086E093E09CD08B +:10EBF000892B09F47CC000FD07C0F501808091805D +:10EC0000C50102965C0102C0812C912C1E3649F48C +:10EC1000F6014681578160E070E0202FC401B3DD2A +:10EC20007ACF1336A1F401FD02C0FF24F394C6018C +:10EC30009CD097FD5AC08114910429F0F40180837F +:10EC4000C40101964C01FA94F110F1CF4AC01B3572 +:10EC500051F49E01A4016F2DC60168DEEC01892BE1 +:10EC600009F03FC039C0C601C1DD97FD3EC01F3667 +:10EC700049F128F4143621F1193639F125C013373A +:10EC800071F01537E9F020C08114910429F0F401E6 +:10EC90006082C40101964C01FA94FF2059F0C6012C +:10ECA00064D03C0197FD06C037D0892B69F3B601CB +:10ECB000C301D5D081149104A1F0F401108211C0D8 +:10ECC000006203C0006101C00064202FA4016F2D09 +:10ECD000C601A2DD811105C0F6018381807329F48C +:10ECE00006C000FD18CF539416CF552019F0852D7E +:10ECF00090E002C08FEF9FEFDF91CF911F910F91B6 +:10ED0000FF90EF90DF90CF90BF90AF909F908F904B +:10ED10007F906F905F900895911118C1803219F023 +:10ED200089508550D0F70895FC010590061621F012 +:10ED30000020D9F7C00108953197CF010895FC0153 +:10ED40000590615070400110D8F7809590958E0F16 +:10ED50009F1F0895FC016150704001900110D8F789 +:10ED6000809590958E0F9F1F0895CF93DF93EC01B0 +:10ED70002B8120FF33C026FF0AC02F7B2B838E817F +:10ED80009F8101969F838E838A8190E029C022FF14 +:10ED90000FC0E881F9818081082E000C990B009743 +:10EDA00019F420622B831AC03196F983E8830EC0D0 +:10EDB000EA85FB85199597FF09C02B81019611F013 +:10EDC00080E201C080E1822B8B8308C02E813F81CD +:10EDD0002F5F3F4F3F832E83992702C08FEF9FEF16 +:10EDE000DF91CF9108950F931F93CF93DF93FB0192 +:10EDF000238121FD03C08FEF9FEF2CC022FF16C09F +:10EE000046815781248135814217530744F4A081FC +:10EE1000B1819D012F5F3F4F318320838C932681E9 +:10EE200037812F5F3F4F3783268314C08B01EC015E +:10EE3000FB010084F185E02D1995892BE1F6D801BD +:10EE400016968D919C911797019617969C938E9389 +:10EE50001697CE01DF91CF911F910F910895FB017D +:10EE6000238120FF12C026FD10C08F3F3FEF930784 +:10EE700061F082832F7D2064238326813781215096 +:10EE8000310937832683992708958FEF9FEF0895DF +:10EE9000FA01AA27283051F1203181F1E8946F93CB +:10EEA0006E7F6E5F7F4F8F4F9F4FAF4FB1E03ED071 +:10EEB000B4E03CD0670F781F891F9A1FA11D680F0F +:10EEC000791F8A1F911DA11D6A0F711D811D911D42 +:10EED000A11D20D009F468943F912AE0269F1124B7 +:10EEE0003019305D3193DEF6CF010895462F47701B +:10EEF000405D4193B3E00FD0C9F7F6CF462F4F7076 +:10EF0000405D4A3318F0495D31FD4052419302D0D3 +:10EF1000A9F7EACFB4E0A695979587957795679579 +:10EF2000BA95C9F700976105710508959B01AC0179 +:10EF30000A2E06945795479537952795BA95C9F7A0 +:10EF4000620F731F841F951FA01D0895992788279E +:06EF50000895F894FFCFC4 +:10EF5600AE47C13F08020000000000000073736363 +:10EF6600616E662025640D0A0053255B302D392D10 +:10EF76002B2E5D52255B302D392D2B2E5D48255BC2 +:10EF8600302D392D2B2E5D46255B302D392D2B2E20 +:10EF96005D004E256456255B302D392D2B2E5D46A2 +:10EFA600255B302D392D2B2E5D0058255B302D39F4 +:10EFB6002D2B2E5D59255B302D392D2B2E5D5A2597 +:10EFC6005B302D392D2B2E5D46255B302D392D2BB3 +:10EFD6002E5D0020422573204C2573205225730A8E +:10EFE60000537769667450726F002025730A0056C5 +:10EFF600342E342E300056342E302E330020562533 +:10F00600730A002058257320592573205A25730A40 +:10F01600002053257320522573204825730A004E7D +:10F0260025640020422564204C2564205225640A6C +:10F0360000616E676C65206F66667365743A25734A +:10F046000D0A00646576696365206E616D65203A18 +:10F056002025730D0A00736F667420766572203A58 +:10F066002025730D0A0061706920766572203A20AA +:10F0760025730D0A00776F726B206D6F6465203AF9 +:10F086002025640D0A0040310A0023255B302D3906 +:10F096005D0024257300453233206275666665720D +:10F0A6002066756C6C0D0A00403320582573205974 +:10F0B6002573205A2573205225730A004036204EA8 +:10F0C60030205625640A004035205625640A004043 +:10F0D600392056300A0041255B302D392D2B2E5D07 +:10F0E60000562573002056310A0046255B302D391F +:10F0F6002E5D5425640058255B302D392D2B2E5D51 +:10F1060059255B302D392D2B2E5D5A255B302D3937 +:10F116002D2B2E5D502564004E2564562564005324 +:10F12600255B302D392D2B2E5D0056255B302D3974 +:10F136002D2B2E5D006120300D0A006220300D0A55 +:10F14600006320300D0A00656666656374206D6F86 +:10F15600766520646F6E650D0A0020006F6B0045B2 +:10F16600323000453231004532320056332E332ECE +:10F17600310056332E332E30004532330A004532E5 +:10F18600300A004532310A0072656665723A4225D8 +:0CF1960064204C2564205225640D0A0002 +:00000001FF From daa46b6f57fb3032d6d142cbb11aac32f56ee486 Mon Sep 17 00:00:00 2001 From: TopgunZh <39727447+TopgunZh@users.noreply.github.com> Date: Fri, 20 Sep 2019 10:42:44 +0800 Subject: [PATCH 56/74] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d8143da..485aadf 100755 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ not support currently **M2211,M2212,M2213,M2234,M2245**. #### To flash hex to Swift Pro: * Download the [hex](hex/) -* Download and extract [XLoader](http://xloader.russemotto.com/XLoader.zip). +* Download and extract [XLoader](https://github-production-release-asset-2e65be.s3.amazonaws.com/100216711/c333948a-8d18-11e8-8116-f20b1880562e?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190920%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190920T024059Z&X-Amz-Expires=300&X-Amz-Signature=f8dffc50f2fbaeb6d157e114d0775d1969158ab187c2c980bab2c325d64e7c97&X-Amz-SignedHeaders=host&actor_id=39727447&response-content-disposition=attachment%3B%20filename%3DxLoader_V1_339.zip&response-content-type=application%2Foctet-stream). * Open XLoader and select your uArm's COM port from the drop down menu on the lower left. * Select the appropriate device from the dropdown list titled "Device". * Check that Xloader set the correct baud rate for the device: 115200 for Mega (ATMEGA2560). From f2996d30dd445878bb50ddba2e4f1a0dfdadd93a Mon Sep 17 00:00:00 2001 From: TopgunZh <907304747@qq.com> Date: Mon, 23 Sep 2019 17:39:32 -0900 Subject: [PATCH 57/74] Create 2019-09-24 --- doc/uArm Swift Pro Protocol V4.0.3_cn.pdf | Bin 349671 -> 0 bytes doc/uArm Swift Pro Protocol V4.0.3_en.pdf | Bin 234552 -> 0 bytes doc/uArm Swift Pro Protocol V4.0.4_cn.pdf | Bin 0 -> 364950 bytes doc/uArm Swift Pro Protocol V4.0.4_en.pdf | Bin 0 -> 244122 bytes hex/uArmPro_V4.4.0_release_20190327.hex | 3868 --------------------- src/gcode.c | 9 +- src/protocol.c | 9 +- src/serial.c | 89 +- src/uarm_angle.c | 333 +- src/uarm_angle.h | 4 +- src/uarm_common.h | 5 +- src/uarm_peripheral.c | 177 +- src/uarm_peripheral.h | 5 +- src/uarm_protocol.c | 275 +- src/uarm_protocol.h | 1 + src/uarm_swift.c | 7 +- src/uarm_swift.h | 6 +- src/uarm_timer.c | 12 +- 18 files changed, 703 insertions(+), 4097 deletions(-) delete mode 100755 doc/uArm Swift Pro Protocol V4.0.3_cn.pdf delete mode 100755 doc/uArm Swift Pro Protocol V4.0.3_en.pdf create mode 100755 doc/uArm Swift Pro Protocol V4.0.4_cn.pdf create mode 100755 doc/uArm Swift Pro Protocol V4.0.4_en.pdf delete mode 100755 hex/uArmPro_V4.4.0_release_20190327.hex diff --git a/doc/uArm Swift Pro Protocol V4.0.3_cn.pdf b/doc/uArm Swift Pro Protocol V4.0.3_cn.pdf deleted file mode 100755 index ecf76985161693252a8f8be4191e1a7e4bdf512e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349671 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%0Dp@)ff)NoQ7`W`J?Lcc?Qmyj%$8X5Cr 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≪Ym^f+#%yHP@mSlA|Vtb;= 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%0DwZy!@dIUFampX* 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

      aEgcVlOM6qP%Np#-THJ`9KJ#D2-{6s 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 D&!?{xwY&+BDobac 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�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

      ^f#9 z@YulN;hyn{QDtv@$vF~~B*ZU|^P6C`9C3a#WVq?DX_+xLEn^xzpv_|X$W3Dd&>YC= zkLJ)+w^W+Fh+KB*#317!PTjZ* zc8DB9Z^cArRaFCa`s_?%sK%;8H&*H-no*qW{F(4d_-tgSD9CvE+x)0TlIdJ_rLa#!N#rbJ`uXqH; z32bf}H)z$%Vs|Z`T?C_!tHnG4B-)JxM_nJxJXd2=xc$)b<@0WScpO|atSGqD3~@T! z`74B2f5yjf*v`iwMezR*7PC0kj-a#5jzhAU-zfS*L?EGsPGv3ZY#6rnqnVy`Z?JLe zR4qoQ?l^JQTsHB?h6Z@=FwiS}!+^d!Rbh4N!s;~MgB>HrLe0y1i&&t+tMcVWGq))2tB7}y9cD^!sTEaHIIo?yf>lGF z(hWJA0Y^%uJ$6@if(a^9ZO2)_gvbU5bwT2bBVv0cB-49PQs|Dfi*JWLn#NGM+hf4H zg8;@e3dZjXWe!7c4am9}_+Ch9LGmMglTt3U$f!lS}@ffhY zVsQ+wB0iKgr%(Btm29{7M7i$kqsmEk4-J_#Wmt+Y=V5`0V((J*Jk=?zLIr7qVfO(Z z8XSQdJbXAa)^meu_;4;9I(4yg;#kGgv%|77)#|>1^V-B_|3a@sVp|EBup4#ot&t5Ux;MwBu^l`J`Yey`QT_zVa zj*tibRO88Sz78%gbZznAfG`qqb8_Ix3T(je+?Y_xexco%xm`SRAkdVt&DmDj$WoM* z6ibP1eQ8LUP?V}WW|79m`ZQ5e5p`;!6g`)0kV}Ussvd@9X+WB49w5qQ)R;|RWP%IV zluf2!s`N5N2#)jn#F3riCSOKiS2~D=4!*&N3$RPn?Pa9kgj5Z^BzWedV2zT}ot+@MLm zw(fh^77J6?&g62}7Luvt-fC_yxQR0h@z}NTeTjXEYxnKb{}sx)Vm5HCLW%YphWbsYqkXu3Fc>unQHOd5dQ7yleJCABFa^+9fUK)M zJ)9m0qF@wbGX-`xS($A*q+wCHUkh@A^_Ba?xK?j!tA^TQwv0-1(jlR79?Az-jOqm` zyK*goh4;3RVSK~z@DQ$a^E>UJ2+?ui4~@*|R~^_WEUAt^&_!GFXlz)5HB1ntWa&ET zhBR?b!(`>OJcBf2eCUYh?n1H^nqhI3K7UNzx=EkyLl^OkU|F+i4p=UeJeM6(5*pUY z!%{*5q&YIsmxlfm_X}nE`p0@l2hw6t+0ibVw@yix2D+ZnG3ap73OEfjkB)Y}=b!_X z1Abu`wZqYg;iJPN$A&ZGBS-t$_Kpswvy^@wQuVu}4B3r}>@?TGLhVq&Ee1WS15QZl zEQ3j&K_zPlNhc>s2^r99VWdaAGYSF>jPkdRd4|z%Ia0_2f!Lp#VGA_SV3_C- zzE^=QUZd2wmLr^fm&JByq>s-*sm+2w&0LoK>}O0ot<=%Zx|GDAJ6#JtI|~0lfcV&K zVVd}l0_`c19pwT$JTah^i#s3+GqYB*2^nCf+aY0^aFTEkl^cj$M2=b(`ARSLU z1vrLJ-;F^15)p*OMWx9_yXaKQ#29YJ=o#)~JHvRnv)iQ;Y%c(mctYJT!;myVqv9lJ zAQ4_!qnt0hE;^JzROgti&+JlYCdt8x@o_ejkscE{;+L^l8DQBOb#YgszGjj=A~)do z6bo7X;uqU#X;f(CDC4=9Ufh+g-=uC{P&;r_kKq7!DF>Ll=#c}QEXh_&UJ#x9gjo_Pzvo`vJp5Z8*xPHCk+{xn@98m`Mj zE?co{L}coem9BNab@G7LbgWYjVaytiFVpC;GJo)c(~0NpYBk*CTh%oD9$iAi2EhhN zDiI(Ng{;O+C}kuZ;E?u=kB<&OHS8C43s-sl zXbe=zH;+t|=gO6ZvRX&m!XFJrVD4ml@O=lI3sJ8RH_Qvqe_Z5Wl}lq%QG|&O>3yqW z8XOqLdkY2!xu?k) zv|X|UlClK&%MH5y#uf4Z-(3p0OGmQ)aJ^V0XewCMP#f_im)w|bO(eAD^!%*8BZW8z zsQ$oH7YW%Z;ngXr2+pR~{Ql#5kyb3qFkFND)a_tp22a3AM<}jlG-ZJBgY>me>Dfg; z7)3mFFGF-3u|C7|9Sb;z9r6FWox_gA|Gmy3X%krU(INWTj)-h(EDAY&(J3b<)PPJ( z+Q@lL2ujI$3Fhp`=?LzNu+w7jB^(8IGRI1WvlN{xp3g*1edghBvQmp z1#UUwc4Q56%MlBhWYt93jS#}@pyPb*DK6)p?C?$=o)Xyyx?H6^?|L<8b;c__ey&j1 zFLwk?@$--AJyB4MQ!f|xv(^l!8nTSg<01KasmhmoWz4GQP8W{Ln2-+s#92V6?oYAx zBlbS*v`Cp@Ji*AJKDUOKQ}Fb-39tdiRSvg7 z#?aM^XH1+~zB!*skyJ_1-BhgH!dXaV;8$R5-w~C{Fle-Da>a`8D&6E}EAXjS5T|+O zil9BAb`{SD6P4juc2!Y!@EggidtxF4zdZFNvycotxZBZz*^F{#yiN0X;y#a15b;@I=iH>nqCa8$Aanbb#L(NL`crdMU(q-_%EJjKC}m0BB$i~tk0~9 zntHXUdUI5L1yCH%6E5zO1cC-QEV#Q{kl^m_hr1-W2R+*@Zw``ekFp7u^QcZ>^TU~R4n$?x6w)cK{TLX)t5lMPyPgkxocGtO~Z z2F*Hh(!GW5#=YSo-UMtP1QUOk9n8E3D+VE2*i;@3xpnQPFue-B%lF@6*!cPSX<8}{ ziD#IDTcb=Na2S>!w};)k^IX)T;X-a7rrU`2Z(gnO`~EQ&%d3ECa-1+E8jR}6q+eSP z$J1Y2s4VB)L6Lqtb^UM7FFcV5XlXW9lDp!v@- z1%;8b-FGy`P_7cVynC&trAiE~bI3oa1X8KdQ8reCe4z!I*GRTr5kd^?W#hxS6`wbT zti`FaA-?nzw<)f~HfC`%NZjBOZg%&|!`Ozpsyc4VhS$o|%cw?K!%4=D6$c~EDv;?y z%{e@x0zJZ;eDCHpbfV@!jPPkER*lPyTC_r{vZa6X(y=t-jqv^{lmz#|{l4RxG4h!- zB|Ojv>$O{poDi23q?A)ETWW}?(D7Qo!z>qW3*Yn@Gxn*}e|4ca*jb@zWJZO^R;O8R zcox;(ic`Roe-buPD#31DFXa7=~WhVA?Yw_hz0=%!&8JK}?5 zHD~$9owzeP^PKa8l8kxD6|@t~MQk9UvcQU9uGmxLn`fQc02Q^V0$Sbd*~Qk68YSeM z!fpvWcgxWSb9BSrZC@!zyX;FD@BABP-|q__gI$oN2ONg7u)zJJ^D$#2Zy0bJ3yL?c z9DqbL6L(heJyTA}x$;0pxccU}l4}QfKH2y;I2qdn3Np!}M2cJ(s;*p$+`%leJa8)L zfIrd)bG9vqLZtVZ04%qaJJHqWa`-4F7UbRc(L6ayG(cc;;X~Cn(bO$5+a+ z7gL>!H>Z^3SX$3<9u`j#f%6pOJ#)NQX7JfeW;630%5-IC`bnuHaeNXv&egRA5_?z7 zYK0Wu)*%DN-r?3EWIHd%+fTXrE_;|M6>M?r9gg!%dDD52)$OiY^#R@h}`>^+K zh7AZzwy4J@7Pil*K&IVI_bgilA`_U}(3e!pIG}3LYKCypG z_M)F2ajw=1E#7m6qef2VZ*KY+Td@)pvuH*c5A^w=)%dE?MwJkLWYK{_PIS?RGdev< zqOI8z;<^)22@p{K!i5_(=q0B=L-$8gdVwA)oLP}~twfO1%NLZOYyIiZ@63k=LuNlG z&VZ$px%R>g{G%|Q4Vj0`6)7(dIvx*EY*t|?t>iE zSNsRu916jnpdnFZw#3UkaA<%X5%?5F=Mflr22b_E9BF*HbjyM3jSgTya=`$BJLuT4 zW#&cw@IW!1$V`E@7+n5WaGG^L4~&fES}*2TL#W;S2kZHlC#8$1pIaJQFD0x)s2dw) zm!ePa($T2tAX|aKJrpE-} zI2aucP?Tu1JG?guAQNdOcH?kL?P5KEkq}G(m^VU6p-Uxkzc<;+Vs*cVO9h_j=#*p{ zIq)XPLPxbqDM$ZWFu5Ugy~{#!)}NbVu`}qvpQ7-#1b4t5`_))n_W*9L<*>-GpTFPC zt|*Jpc-p0Mzad7YPEVE0Oi_FAi;FmFKGL-h8+@;PfCafNfL(xj~!Ria16+AQAxnbI#1P^^9 z>cv)4*NAy-i=Z86(F-*AXz_eIf-EiMQ- zTKl8u!lty@3+K=`vX~n`QC*yLuZvwAQ~E?hnkNjLhP7;!mzTF*nY8?gzhu^r^{B=E564@%1}JzlyoX;<5!qH4s)B~2nnnDT{-n3MB%n(^0&65 z*oDQYP-X>RJbf`A5@$TNy#cz5b`V*?ty-T856Bay{_pAlR$l{T{bCa}Mc^>>Th8V# zuRpHtMdsx3>i7i5k(y;;{aQ^hm66p9*d=v;zTT&9_qpU>D6f7AvFW=|%@Pp1ZIUdX zH-a_4VQIdw&0B!2lo({LPLy8+^Z)KH9`Hj~Ql|lLHhIJM(#b_&if-&8 z^}U#{R8hYD+P53=oyqgYoObhfjar6}(9o-FKelhY>qIlPf99w{G-zeKWs3YHmf@(j zXCKfgBoR+R@g^Rx$CiDmx`z+D%n3>isPu`W$VD)p5M7Ax2=pN_6S5s|$VMi5((3d-X#F6Be8!ct-}jrgqyLP?z|He_Np2 zLABQ%=*p67VpL4m&6u78)yh`jU*k#+R~XYke&`xinLpZIGG}!XA1c zt|_SVfUSSDiTnbi7?lQ2-VMtk;x+Ndg)TrQ$bXs7wL=5p=}h!nA%K zg8k4s4>j}E(7fC+JsG1moOlLW7eqj!ma4f3;8+MZ9fr!~qokl{Rs|izPn7#(fzAsTnRG4~ zv&)KV-H4!h;dCqqPX;YOiWro^Sb<7hu^~hSV0u|LJMDYP*7h&)rSI5OUzsU@va^q> zG7nX_ZD^okl}Kak`gW$JU^@aZto(2U7YaBm@EHM6VTMabUgI3uNeucM@;erG#v?f2 zYOCAfM$=X^t{Hd}9h)B$XNI*YrS|&iz$t;kKPtkc%V;o0YBuTMDNQk+f+e)PUY+X< z88o3sn*e7%QwnAsg8Yn8Xx^cRmpsu%J(ZG!gW|>q0hF9u1P%^pyhYF>Hbk!Tc)QRu z);H!Iu5VJ|YO%n4^^Z5320ORRxsHWFNsnIUuCKrs+lCYy69%skscO-6YQ4-TW(#!E zB&kMj>EJ3%pdGu~@;B0@D!*~^-5P1p+x>?sz0Bc2OZS|VL9O>Xd0@}lPQTG37DJ?c z3jhnU`3s3u+b(oiFy@s6wBU(!dR%Uj&I7M-_o4VFysB^N?_KzMQ@~v(hSgb&Cfv0d zK$|6{1^E;*b8Bp$u}1ord=?2pDARV1RahmVG?mx)O_vKatilZcz<+XuAG3l0&IrtU zbIHaVxlu8+%V~!pih9F=TgpW zMA6p^C8qDMzQ8G0))IZr^F!~YhWZ#*5!s7Relja3Dh$-X3T$P)iO2b^Pd6lh!N=0( z=6R#RpQ{aJ+=|@^H4?UaW&vwmQa24qV6YV}1V5nj4|$;i%pM66gh{m90w990CxGO# zU6Du41zLoKI3l@x1Po5877>Gv{0pHZ>upxF1WK3EC|cm^Zx8!a4~Qft-nJjMXwowL zNsBApmS!wx!6fLp$;HoOn0M8JbuniK$B|M&#n0$~LC9eX^FDT7QEq8{E)>k@xDQkS zIV1?m5Id;m9}8XL@F2duHjsZ%k#*(1fa3&3vGj3aMe2K?R%roMSnNuT`JuN6{WtW61e*ev34mbLy zb)U`8a7FuBoPZ;J|J6tLL;7KgL#EW<=&3FU<8O|QyCx|CD{c{*^Q)mSkNXMxgOlE9 zJ&!JN#q?eNl&xL8)$PQxTs6&@@A@{odRK4gnF~_7K*|s)Ycpx+Cl@Tb4L0?feug$? z6N=K-yB}8->=A7Dv8VkM?WUS>T z2J`8xUyw)g`RiGNQ)%1>SbzpR-({1r+5Zx`3-!N<0SAp3k1#s6%Tl10ZoI{nX2jL2 z%Q4m030LBCKRcnjheqA^nNmrR^^ZEE(yt3E%e04AN+YT{z@;!Ujbi-?q`ScF6aOaV zTa6q-{vY*@o6Qyinm$aAjp}Am0qU50Rz^{z@n1?#W-Cva3HM)N^MC@GL;R@FWaWe5 zoh=dHw77FdE%^!uY7BhlN`X=zMEhO+NFQ{jZNbQA7&SjsNkg>crt_dYYNwaHgB}l3 zFF?rwlbm(ai?<1?oYi!u$X{k4YRBv3N*Bwa|ErYlFXR5YeyXZVO?%HQ0|4+w&<1r8 z?n9fCt=tiEMlt%&p&^*#?g)xEC>z&|9KZOLtQ_ejbL|qjh6EmBpepddGoa-XL3lJk znfLi3+vgFLjZ^;6#9k zr=FPsO2oz2rDYFMEzH?0CZqU?{JfYxl*Ce_O2%|X;#_Z-jOg$Wiv~-~%6pxQu%7VV zT!0FsdSpED;3<+^0n1$sngQ- zHJbAbic#O=BE~yp79g-z&im!kqOCu#wQus;Xhl)#G~Lt$?KQqQXL~WKcGsa@UJmem z^|Xa~RxhyR8`k{x6nwoS&-^wrOga~oeCj)eesK~;W8Z50>BcIeanwx{lO%#wr&*nM z?1KiHBaM8f25h#|Ya8mL%_%)nZ*hgDq$YIj^AGdi(TvLN*ILZXgyG+xIDGnb*=(m3aLy zcf(bi|L||sg6ovbsllp4lOF^jCaG}{SXOt0)nu4geVga6+j}E#)X?Oo%R&vkZM2Bc zm*B$tm+`)_41Sc4j5dmVf~DPoo3RIw0_>k?A*AxdqJHq85nDQlvuFzCT#iV19Yx=V zy##(!N2$3vZ8hqpd)(fWhI)iy;#&bZqh#uP%MOx6drS4b95y!W8&0~W)+2g812G9*TGv_f;VMTZXh zy8G{MjSd}Ii|U32v^Z$7Phc{nJ=tYK_TdA={%K`WF0|l!zw86_QfQ08|6VyfRY}kW z1getMG)I+my**6(l2R*^JoV_v>QoiAy&alVa~f4QOo}^)WgkM454jokJCh-8nxp5M zqtM@zu1rd;O2W|`<_;R+T9aKiWcloi1#SNc;W8lWJux#>lnhzd z9HnE}&#X$itcB>$(;=^V&zG}Q2rIe_zobIf$Reh#Y3Ww3xG933RMplN885h^o`mr3 zxTBt2)Yi!AT3K|~lyuiNyQy1X^-pG?zO1d+BgRZmt>HaBV1tC}+BI@Q&pdMs zZzt7e{C-`Kp^x5lGG0f_6N#AV98hc83Id;)6r3*`S{-%QJayMPm@YCEoXHwnMQoin zEu2Lho<#mwwtDKVd*(9ch4-|BN}LruI}PG?fl zuKGhk1qX0k!|zEo{cz}7M8FW+f*zP9AGW#DTJTQqcGG=nyZqfU4dybut98m5c>{y^ ztrGomMYrCR*6lZkx&j_9-kKo68hi3o$h3OS9k1pp1w>y6{z*qD81fiB>RPQkC4Y^6 zI6|$!2EINZ-1Ao3f6yt7&&f5)AzppP2a=4-YaI)Jz7KisXqp&UxOFAimqn-wr3Alx zVi>xPH$BJTd}~aA``yyLkr)5sGJI@%aXl8tMR%&+HHv$1XxDdY=kZ1#)~QJD;diTh zESURT>6lOUyc@(#K~mb%9x*xIw=W%|oya1uV>cqVG$c1UBM{W7zu@UgZ69Bz_s#@9rVs9Qqq{CgOX6L|=~e^2rbG${g$2lOGpN z-wLEZ*`7~bAZPBph77(qL_NXd-90f~oGLgwHd!{4HMfe`JNNvl#1DIFNI9#(yBlV_ z!0!}Y-*ce_y1Dv)x9t-Y38+j`ktSzSeUfvs2nzsPi*au#3Gx@kKi3`~AH z*K8B9O8)Mtwg#Qvr(wL{(OrwvTbosI&TVRK(OG+9yjav(qk&?_&RN9tAABxbTD3BF z{Ne_M?Ek^%U%cZQ^c~#sD;#`*hQLI;yM1WmCeBbn51B5YEkdIpwCUXXlP6bAU!!{6 z%z5Z}duWs~uhFfq(W(Cz1}&qW6r;Y6?)d!}^zEX%cpvqomU6&S+nU?R+4CFs4yrj| z)c1-(-}#;HW!yXAs3+I|;%)ojI^PV&-8$YK^mk$hU$COS+p4YQHhx>e!Mo$C7!tC) zskK*d?paTG;U7DoVOmaQ%8cV2^c~sBsc+r1gPyq9g!W}-$FJevhuy%tO9kgmptJt~ z{hdO^+I7mj0#w(lJFk_4zNyqt{djjaYHPE2cdkqmEzqF&U)Q_VcV3IApV~aIZJmuA zBA>9Lo`Ui2Fe}z5@$QmKT9tIySn4?av#FmP#txv0dySZ1Sa%rltD*irVJK!D`L8EX zJd`qCq%L(UsI3h%O&A#ig-wAQb-tM;tqI?u;oVJ?wB|xZXyAM+vT$Eq?w%0kfQo4M3e^@=Pye-M1ii|^*?(xqu(7oT zs&@XUCl0(jxwGFPgF-X7ccqLIHBivin{U>xv|m7*t2HNUv3qT$exh4#0Y*aY(+wQy zp51v3IA4WoF?H~TEeZt-CgS-WCOgfR*!<-Ws%Lxwe-Nj*;Idb~YTGmGqz_?iGpvs0vB&?u78}O3(hi z9cKE6iB>4?|5*qML{G*GXtGk$u7^4U6cxg@&ONg`-Lv)lhfEVrMlHIT0+kB~!WB(z z>xP+7B_l$8L1!(uzLo5E27W~gezxnQ0o%7^v5QFP#?XI=J%+8hrU$p>PC+greMSI8<0@ZyU^&c%Zgu-E?#ovG|v0mAIkb zlDq!DzHSZdUctS?jCz718rg1Q^-w6&Hil^e>Sno(R%%QWEIflR`v1dM)Dskw#dH_n z8KGKO%QoIj>g?q=Xo6l|TInKU0>y#3|A6o%)LX2W{_%}PrVIO&gGHz#1D!>n2w%z> zYck)2ss^iKjjXm6dPUE2f^P%e#gumarY+P1NS(FU{wxO{PWiS#?GN?1+voy|>nf-> z4M0IW=sW8GWLjR$*y$eI`43ao&K_@2fOdu*Kj$8*N!*Y=qfthTOCyHy{bi$s$Be*MOuIvgf0S3JCC$?f|(^V9;#-G7;a zex(OWCMJbmv`cnJIIbQj^|Gi2MI5aYUF^Hmw8mbgqE12+NZ!supBb@p`X;x<(sO$r z>-MErOg8E)1w9Z>w;XJ#a>;$SDjcoBQw*Tm4!nLhZ0bLW~R)upU79*)Gn%?w?(i^!3a+0Q<1gK1XWGJE4$ zV18Z3CD8e|#n?J#7I=RE?e-@vdam5RJo9Ihq{4b;9|ETaWx-mjt7*7iYZad@(Wz^+ z#44@aDhCI}3H`SHsz}5=A~eb)Nq#V9%QhW+%W-}7$>`s+cvfJ}&h-<`f;OiI+cpLA zMFKrx?v=94Qd-A8KUzFjkril&=0Har{0RL6V}He8Z*1}2 z5gd1tf&`-73If0?A}iQ3hSd?-9QOKVZOfI1Up(kzEJ~t;H{{CxW{o7*!tvTmrQi05 zZER89aA1MYrTlCHwm3X>Bk#HbON-*Mdjee-z*ZaYl3vCl&Wb$lxkNn(Z?7ea_+)Qf z`-p>&_0b{(b*ADGX56N=9qUaodsH^eK2yJZ6;v17 zMI)m5z1^`{HVpXGh7J;F`JE(!0e(S(po)@m{(ZhDzLANfe8Z3#ot}E=AUQOo%+`Xd zHz{)E0(_6weu7;F0vr*GrXsjd!4pWTuwQa|cfeC{svD~g`SQ~$g3fMaPJ5|Q zd_z(@AZ5UsEm#;O0(k8$nu784Q=j>=CK24hytqLpy@3rzRWs|>CrheR)Mxe_l-X-x zSuDlpa}hbvxxr7jt71O~3#rerm(q8402{CU!&C{Hw%A1X>_rMRdh|Di2i_l|Nw22{ zT{=81>)NYii6ryc!DqN)R(*y}e9W{Ff=H0qkx@1z^IY#^8G`tH$N(A=w?>HOE%B4# zu<>1dE85-KF%-eX~l=RT2LxPQOL3TVBh(LFQGKNGL${`;Xk*Ez3G?uZML7{R;# zWo9P%+k(npBN?-$C6a(F_Qr2KGX!|A@eKRtN$d;oT96j#gB(+^_2!M+MsQR$*6h?R z2xvGRzUE3X$c(8m+QeEegU3m4h-%zkT}T)=Ma)s+=@0i~VSd#s5~u7g;Zk~M<|%7` zaLwnhaIhpQEwWvZAgQ}Q>HR4ylzimu*BYg#>|D(~;?~6Ift^AtM*Coac&WouO*&0H zeHK&gxu?Jq8!t_o+oJ}{Pi@efoiM*wuedc6irEK70E6Z6+3%K0r@c$i(DXJ>tr+Xc z*4^C^A<}{k+mx$;T>J=LRI>iUnJY^tnhosDPNakP5RePvia1?Kw1yMF_|rqUKUNKI zkPv}xQLnmy?@NYH7yV>W!!wk%Wxg~d9bh>DdcjsPV<8tN-f%2*D1Xm&K`+!0 zb1Qg>Z|UM{FLn7qH4T2s;Dyu#2%3TYZs)h;2jWS3}3`J{=?MCB;vwKs_A1TK&5v z*WT=~ejU=O-IU7bLo*FspWwX6_01#o;dx*1)>(?FOaro036i(kClX>{7*c4+S;_?f zg<&~q8jFmT_U%-%*vy-L4n&HdsixGuLWuYu$K(&8PpL*Uz$aM3Tj#J>UicdpT7f0~ z@;oC5>YAIzRuwFw3}_FtGgQzG5jh1gs|+_Ljh<#?KGjr*Gb^M*003f^VqKvyPANSt zn7t4Eekm*7{sq7dY?+q6moLyNTslvvO`};$?w|J`N%FjxB5vqJN!dUw@GgbWu{2Q9 z@5o7s<$%MsUMeDZIN8Drre9a~58vee* zpXF}eU8fThM1wgobvFNm#_O_b_?`Ln<4F;*b7dsx@-MrY7e* ze%D7prW9Rn$COFUg(^$6`Z{ang}bP0cAxL1u&)4)bT#sxjzlD^C@F_&^4%YtOa7_L z0=OuC@+H8HnEQ=Rlsnqv#{Vqw(4-jG2zl>=glgqgMSJPNA`Wf` z=5h~ou8E+t*$CZCNMc3{hQi80@)Q}2Ram0$U$q8LsYVJzWuiS6vpCw(O0580XO3Gl z&dC|ky_P=#$zrJ$_L`|3548>E?;H~sMgvEZ50b$`Lh=tqkj)pS3A(B4?5uBU0uSIM zW~^Y^R%ITZQRXa|5WRAWM>{);4)vBk&K(N%bs#ohXhg!9S%7Ok-GX4IzU2_&oyP;>$I#`Q#iqZU= z^zg88h#Guc()w@dp16;r60l{46IQm&*V;mhcO1OU&Al$6yMsYSyVlL>E%U)~|BgzA3Q3e2C2PNeHVXC+OCzqZ0@x^;|TJtbvXlvAswk(d1t z2p{W?%-QSH(kY9}-Wy0)+aka5UqKWs36haZM{M zXM3EA-499!vs;q>&#oIcXtPnzJdNDxYo^sl;<2X|@#;;aa0iy?^UI{Yo zAKx_+F9Y$r+$Y`JW51yFcT(;NpwaK#bw?ms626;_u8&#(oa$AISZyCM_|H#vR%?x z-Bqae*)INPy)x4J`{)>BR)tMOrPx)}76%7M2+xpYKO@JZ=?0=%IisbEnswpUj;J-^ zd~6K;6Wv#@WnQQ@J^etkj5L?&VI16X7ft@G2;nDk)*Eu*Z8I zd)XW(<~OaUy{`%*brP7W%?MNde?%-GYdeOCsH2w%O%3XR@eb9w@KC>!&Zj3-!V_{2 zaDoalc>?Jbxr{$wZTeXB74ZPg4y@Lm<qq?m{ zYHL4bad<47a-&y0<-Bi4u~fYi#3!PBWyBA^qExf!Y2dS~Syo!8tu@-msE)rsyR$1! zv&ua~XM(Fx&sV)$o{JmXGR0d}OTp!Ije&QWM^kd=*9#_s=^sKI%VSnLTE#+oFPj-7risd#09ZshxQD0MEdV3La=&NC(lc zd}`p#x_S3VtSeC5XG&dhUELTTyfA4DtI4MJQ)6JtE>^PId%4~S*I8Sm+Dvp|xP)Jg zDFDbkj;Bmqpn3fnL6^j^s_$Jb;_dQS)XeQRK3SNh_Nid-LLeXwl{Wq@hrGu&IX%5# z?7Tu*jQ#h$7&Uw$6Lf+<;J~48p;nb%ObeT;Wp3RCYvke!`8gb^w=CFovQ2~IcPS(y7(+Ys z_a#|k2r~`VKIp+oj8#tP^ZVclbzd`$0z%}4Q6R-QQ*>R6vJB`u#>coajbeEc>f}bu z`bK+#s3ofr%Qe-HU8?rdF!ZGob?9Qh8-H29DC-wT>(+lL$&+0y`rB`8_*VOi_=X1| zkoyBa-4!9jgFKKK4`nYW9u^h4OXqazFQlJhqf+i)hBLS%Rc86UMTn$iR2GASSS$cW zTYnQ_?CNV3(1|D;RXL`QMIo5tqKknrmBQ1z$R~ti>eQ436G0?jTz<1oA4qU~HKU+B zs^}$#ouAufTR06`RE_(*Je5{>9kgDON(r;b;N|+!@ppjSE5^e?OxGhW^f-tS%Ev2_ zL`i#t%P}MmHzO1|{8-La*3hb~n#tt~7C;M~_7FrE-@}iNo^2)?MlK!<>s#~0A$xeo zKEI;!8$)h^zD|ZZE`W(B*YZH}57H3|5h%Ht3^qy2zrcUlLDAy$LDvIqI3p}{lvF&h zkq;v+s&VvN@*GSUJ7mbsI4fJslYkItYpE|1C6Q$)ECb^<}#Os#FfWb}}ertGe&V4s1Xv&vpw_=BLV-X!}_-mM9TR^?!eG;^{fSQmw8b zMXP(Es`xH4T1NDNnNZYb^AL+LGGyc?m{44U(TiXtnD`(ZH~n^qWV&G{9upO~56HQv z<~=4^W1s1ll473^%0Wi;+3#~{jj%j(ty*t>Zzc^nMSvZ@N<=A{7G-_({KQpP2bY_z z!dplGtEF&!6X5#8j09Iq2zL`39|a?k^u3V`av&BbntsqjzHwi>ErR zV8N*HK8XAM$|Zu4&B8$NK|m{x<0GKYp{IGC9!$cFjzstpI_y~R>3wC=@C?KL{H3u) zGLT_p+)PQk$ig#%P2SId{32i0qY^>GdMDgk_6rcX&S*@|p)n#pO%Q1@D$U71w z5+2A)JDCP6nud&va;C|lU`>e+o%O|gvLeza@*Olwt(m}2fmF<#LI}8<8-@cGMC5$|OD`?GY9Xpyj&&m4m;QWI^zkRZF=T|; z0xP24xW_`J7CTuQB(tyl%xp0h^=uY~kfsy*_HZ=z$Q6fNkyVDxwwQh6R`N#z)2luw zOFYEL1&vLPW`&J9D{w$Vzvtw@Cl)w`mL<)aG^$TRWLb>o#(=+5$JWAaNZUr)In~!od4p&0;J)(YE5`(($vaSaPJx1m) z#;FcN`vQG}n!opL;(aFQlE_gX^>IV+n#pL&hn*F)smn6iU+LJ>GOK!f*zG@56Pe$7 zmnk!n;?DN+M~QvmS$kHKK_v_dth=Zboj=Mqmy`}OX}|o%GD%EV8d!6p$QI!WAWH|v zG0~vN)Q)@e>3CeJF@N|qW!E%nuqSR$ub0!O9Qy=gj4G(Qwin1SV$n-PVYz^b)xgXxnseILGKX%=Q+)|q^46c3)MCF! zB2RPf*6bVnfVPjI?vDOPoqczHtkpQvB(B%Ow)H4}WLkPbd#AN3zDN6DT6*_(XJ@nf zlbLeb6#kBnD}g^MTD=CNW;s_^Z&ompmR~Z11xg}=z)n;$e(CNhzaZi(@pz?rxC0(e zJa(be)30pD544)B?vFbWE5d3?J+jNYS89SOf$244YyDHI)Kh*$r+Vq)KQrQq2Lf!| zOuc-J%R~}MPjiomN1|`BWB*zrArB345PoI!K(XA=_3Rqt%v~Q#adlv+R*0HFjs`WQ z*)<`c{irfx2fj*dXkrs*49)z`O#;wQjs7o%5_8=^O z^p0oe!dm`k5|f)4mc9&aF@og7efPF}iFO+O!!@4_9r`VG<|pgSNLNz{__%>IQSMno zYG{SOp)?CuP2Mk~>LqLv%6iVeWxeR57`;UM6CI32Nxt6^S9TtgdX5&?5(J9}qVPFf zJInUb?YQzKg`sy!gJ(sTP8PRt{y8i;%7NNgD5sPP&AQV&aO-EEcqyrnHrqydYrkf< zUvdb9-Zz8_{-FP>lkw|j9izf#yZM(JmPXN*$rMekO)Sgy^%T>IVh=WEXH)`7d8(_m z#yVX&61SVh>4ZDWn1EJafpU66Ph9?HMDsLB)HJwYWOhCxu8hO(v(B zP_ij$)BCx|B}g^<4mxxpli-~Yt(oB}@!||!E`dktPneYr&{b=XFkUi6fJ*pt9{7=nXm>D6FN~>_Omw>z>`UU0j{0f?bnnNr=U;6p5A7s9;jrLVe;^Bw$rG-#0wsH; z?7Fu8no56ORc6*S^a|kpEOT9MV=xT}tKa8$FbT-%Ev({fk@Oo{;44(jz72i>pmDw! zqYKN*x=iw0>Fj8~IZ2ay>all8Nl%o1C}({H@I#8t#M^l)kJu$|vlyp>*Tnlv#zN}$ zskRAf`gtRM&e?W5kV(Lqi)+^_24@t_U^nyHUDi14Ue&_c|7bFmKMpov+bp1!mtP`Y z#R`!a;AqfVPyRXnn^Z5$cDIVh(Tg?wS1mxOOubK7BTH9{pG_ZaE%<}!K+Gd)U4x#5 zwA}{^A+)hc1;cYSsYIT+urQI z5jVuAGd5!s(0=*u!|4B9jQY#RijCoy)Hc_KUD;aH`ybY16AOwMPU`kJeEZT6_%6F$ z(u{}O0+m&YCo$@u+%cGJp_1t_%`;gx`A5^KjpTFGOD>}Qr{tF(ziME3W$^N$Dy+M) z3GCW7yc?F4#EIK=Km5xaK_mp>G#A=Be|P@pM+0@{7$1Q^$Do%yPikM_WGCrobYjqt zm9WXSy)XDv*{N55Ft8hvs07SCmIG9IMT7t%hZ+i{g=^EJBpV&|YImAkiLv!Z9zKAN zQDi08o3*;z&Zz;jBr+9$oc_4^p^;?eEcnyx;unS#x0DHJrf-5iCwhog2F@K&S#7Js zTemjP83##HJH*5%M?RIl5i85VBjCcoz@Wf<33CxmLo1B6g}z&Y9yriLTi(&c+`@&$ z+`aJgkb1cU32C9^z*00Jb*z|^i-&`T zjirZCV-s5j)_o6-i-=eUh6`o{j)IFIBajp3YuYynIm+5cWkE|Kq6~4|2Z}Wta~mW# zTT@gSu#bk7DObYf6d9=pMoTI)qf#qBE6|GkR zPpuV~%%>D3`xVo|jT#Fr9=|0`k~OA@)jS!lj6d3KxK56DeRa^A^L^`iyL@>uq?}z# z=W{(6PvNfD-gxm6i&{FVL4g($Ay9*h)bz8lbbff`u@U52s9jWnk0~j$t{4^UPVa8nl!toyM0YJ0b>MuM=skOG47t1jT)4~$oKJ2I#qh0PtD26es36uQ}NMuzsaStMNE*)#%x;s2<>q|4}nft=cg_`O0&n0@{E`w z!lX~M*I{eU^xy6q4uj?3slYtD-DL1$;-GivF-|6U)Vcg+hEQ`e^7r_Q6P$a$1k(9IcSzw*eik3 zbeIDEW9&bH4IBjBEem`NNysy3=n7s+6!;)eZ`VrFSSR@LD_*g#_gy$dys%|m^_mJ73|~a>Km_V~ zg~%6jt}h8Da#~-*JToYK)w~EkMp+ivYeEC7#&kB%64%e=c_bj?WVQ$66b~4(dg&2j z{b3uSsN#l013cIo()m(tpie_Edq?_b!uup30of5uS14|ut%$@DF5*@9w?nuRYc1K^ z!QC=nM@Bas0`w~oWb;A?WSl)mZ?TlrK8$)$?gb$eqV^em8B27-^CqF`a8^}WX23q! zhWz1{iGl8q04vR?k+w%8Z%mTOvCFoZMJPR(F8U)qCm_su5nxq}U5@lEW2dNj5L>K8 z`ICOoQjnOt-zjb$QK+@LP`T-H4hkgg3wu^_7VYZpHiKa^w2EPt9nYOa1^Sew2(uh_ z{O2s0)MP52MY3Oz26X!>^n;p90(i*wY6*-$S=Xw$Ele`}D9WEYjf9lSO1Ol;Im#4F z|6kOrANBlEWf_S*#V1{yt$7g<|SE-HNstKN*7n*d&D^h)(u3MIDZ5P*43}a&!0Zm6O?F{k^y}`%X%BQO@$&~TPh}lltG26vu@Gg2GKc3TIOUH_WuW_>bp9`{ zM#HUpCm|#FD9Sqwqp8xu#fGf!x_UDaf99Z%Ib)qHUT1Dv31R2oRDx}%tWR|q<8;Yd zSuY2$+H1esuq+veVB|le6Jhp}N-e>vCL@_%f~?CRiHkT9tslN6cLyo@!%sMW8Z0D` zMi>%s#HqIKC}1}BhWVv}9JtEa6 zhrp}9WdQTILi9be3z53<2V3F@FJAZKR!cPb| z7~_1ARgy|I71)I~KTevy7oy%6vq|v9wRrhjA)0rM47sGRsczn1$cMu_31Ai;}=b%f*Yq!ihkD_=TBc4Q=pB+sp zu;*7T{qWW(N)kve`-BLC>^Wpe-n~DzZbAs;%OHqO1V=F9{f|i;!yF%<*aU^Wd~q!C z57}5d9!B*uG1l`^_j)paTSOP-e>dS&IK}%=`~FDWX`dV*eX3}Xn`e`}hK$-ZvS27J zv`!Ucs4>HX*uvhzuT?hDFl**3@fHz5P`(;BHlkBM^I z--Z!*N~u3dN$~58gxXiDRP_o=ZJT(FPiT7mJ!_jtDRF7%PAlBT43+O4l;yt8tc*cc z1~6~0m2p}24M5l932AmK#v;fWKC+O<7Ilui@!&f6Y41E;c_>9jL^4^<{C;r-#A(g? z116LpCX9QnO#aa(a->7M>j%ex#UJ3Xn81y3%^8t z5NT{9-`FrNdn_&L?0#$>1wvo5_)guR~eJ6S|%3R}2{ zqM#4I!`Ax&@pIT|*CpO7lmfO%6wT{bb4E%1p{>LCTT@gQ7{2JiA$83El>w8f>{E^fvCNECeSby$C?Sv;`j5az@VN7oRzA}Ti_g|lx@6G+;K&U=G` zCPZ84s`53H@w-`Tj7^R(ZjaRJ6v5fS!ErE~+Dn;A?OYaeU6aAzN+Gj=tHJt_AbNo* z!N&w%gm>WC@B)|3SU=DUFD4eMhOx~a5PtuRL)a|y(3Vq2_4elh#>`+!%!c1M8`dg| zcl&RAqw}$!3cbajt#VT^d5gpe65O<#b8nkvKg&)0g+;JKcfPvU?H5q>AP%sSnHBY0 zNyEr^F3t)Z70A=rTjM4;w0@%NR|$S;wK}H@-V<)V`0eBaSLL&u?We_5<%`3$hK4ED zDNw;e$fz`a9_};w>LM{lu!|eK-$praG%RY(U3+d3{B&}m=}drfC*QAf7UX_)Ut!FN zBczt7vZ}+)^n^I3w~+Zf z4)Z1ThlvP`FmnIGviI-|V%y4I)a!5N;n?%e!4R2npd_q&j4#MT^f&t)@~w_D5GKNm zEpsmu3$f*7`x(ooeb67V^ED%}^L%gYys7$YgE&ItTmkx^dmCqjyMFv>2#aeTMV4@& zjVsV}fI{@w_Co(h55Q3G{g(OT&peGf*R-1qL6+zG;jxRP=F0` z+n~X8Xt1XrYar(y19&oaZG^E+dT?l98oJ1P+oZO`r%}ZM!kZsp;@bw|I}281dOw4Y%G(im{bk9D3%jg7K6K!nyr2*Dv`yR&UXdy+nz4IIF)ZRJSe#)|GD*~;= zF67)j@~nXbZFtj{{ZA>kC9+jLwaWV^O${_mk0rbDuPOa3HAhf*RQ_WGXlnqeHXH?t zK)^%x6CV4Xp(uNk?I$c7w;-c>SwD*+=-T)&DlkIn4XwKk3~391(j*V&(%d(|8V<20WgPFIw zAJ@%!n2f+akZYg)pR{6Jnx<|-OZ*-E+dJ`~y( zTqz*wPYLQuX;4?nZxJB7MS5^>;1AG-kKMBI8d^4uH2(Cbdl~D&4=m%h4mBomlYZ(#AOCVlT`6S2+HX!Zl& zV$TVLqTRCT0qBxZwDenTAklKo@%V30og9PeqCK9?hlBF84&`Y}m>cWPUWpU&YSUn& z#=ZAJ7@^~Lp4N37-=pLH$cx`!4)emY@degc(fDyoU;JpD1C3W;Z&TF*~m=Lz2dqy|n z+k1>S9^3jaMNiREt11oiCUeM4?>|L+;R_k*R5S#|Lm10M<9O!nM8e6l$|P#h3KH94qCWf)M57X8Re^ar2Gb z_;}kNzbWtx8WXbeA zj%DvcqwQi%yLhMVWN--BqZvqXqg31R}F+Nzd&(5I~%E7Xq*9c&=i0sbw2(f zz~g3k%j};0KE6SwJ(pK!y<`1jy}_e|K8b!G4nVzfv>e;%O2n-@~g3M~% z&+7ETbv^XL<(aBvGyfIM*P@vyBKtjde*$OQWcz;0rY})JKLLN%egL?qs<;ms*rHe0 zx<83`68sNMPtENnJ+(wnPihZ(%AoJSjoo1rvu-SI2)@SI?>DI}YM<>X7NHp+7Bumg zdm3`KR%s*V18+xIr&B;mlb)2@dXVxDXdm3ID*1IIy$w}!5tNw+>Yr`0z$8hTiJp!mTYH8$$>-=|`}x4vctEZ^*%1oWccXDWgCv51 z+Kh~5-tf=0%4TKV7mNiAYEcAKmIk#0YBoR(j|*_++ zI-bCE#L2*6`KRe%E=>Hau@SXcdnWDpva>}cr-Mx-VAzc;P7a1b$|fj;CSRT4L4iGp z9*jD@1_1FBr(VX1*#fQp30eOIEZP!2PXq2HbJ-e%CN$Pll^C+rypL9Ft{I%XjsL*M zj5u6~zawEwWpRMHIWvuvMrIO?)+%SFqwp@X(~hn$bCkB{l_+Og>EtFe31!Nk$QQIP z)5rvXHq7K$IU^AY%|BBeZxxc_<2)}IYu&Q!Y^}^SZavus7M3EhFxIyY3 z1~yGLpw7{(s?XlUfC=guf`UmE@AO_2 z`^iw*U$&pXs^(0-BY%OMUmysmVk9ZIXR7?)$)SIxLEG9RLDl_IT%H*qV7L!m2_EWZodNVFw_i1pyHVoGk5KvElO{(C4O~uZo7Uk#N7(a++ z$rW#F@HAzhB2q>M*bX{|(|{c&A@MoBEI$7Xgd{hB!E^?$99V5^WiAB><=AJcK%QRWE8)PlVS~FXR2SI$m+5;&^CQbL%WV^ zcUuEj?tGNUUuCkwR46Aa`IkV}032eaq8lRX4q(a<=95oV(*FcS`?07^D|%777;#?V z>4?YSfWq$zi4*1dao+YS3wd&2?5-j^M2og|nr4|m9yrmQWWI`Pzmq?E=MK&!1Kd_W)+pR)A?d z8z~4P7VSP87KDq@=i|EZ;3YB~h*^A)WZNRGLF#c#^+urkdkeSk5)JJqlFN)ki{z*( z>UVt_HNY2;(*8KWM?Q@hAk>_~nvOG6NWAzZ99{e=Q9^m;dT~Qe+XOKpJ{T?z5 z9pvYvPgM^Q!EkYHx*U)wo6gWg6Y|#Zc`+i(HRG9yoE=}&P<5S@9S07(1S;%Av)zQ| zd2wD~TvsSmQX5@0k5yd*Rbl$%Y!l(iH3P02n(c8c#G^(n&DVJ(jAQ zu$s~L{qQ||Wqe{7-$LKo7L5Lh3x+)lbSj?l~PR*^eR08zg%hUZ=31k~)*Crx>n1>G|aH`o=U|N9StV zs~!R3JPlC4hwe{IrU0ecQu7hp1e6BIfM+HhEzATXa$K5eMhh?#Y|$xcX1tth_03E~ z8z<)`sT*AfCTp=3o{-r0s5_58g?<{CL4x*vvSqpZsWq6V52PvN55NkLyJ!VmBX!m^ zteyr|N*y<|$I9eSG#{V|`E%9BkcZ(|q=7)UQuYaPin~Z4UsIBms=IJNRuvI9{6^rL z@|S-=jI)j6;WjxpaUU6@++%^0bY76SFAnqeV}Z8_6T>4+AfLtI0F!e{>*0 zK9#&lENm6CV210khz^D6zL;`)66$|bq1%<>%Op3x1j3V4bb($)?7}~gi6$u#?R5NN zQa;D9Vxih?@UvXdgl890Oo?&N5{%`%`!R|+fY%R#6QIpyY;*Hzw%7VfIz=_g@X6$b zfUE%6dIH9aIF?OaD85u$k4M{ew&&SysqLa~i-L%O{C(-qQ+$R;jMD2(ENF^TZkR;= z+ZY^qQMwwiZ!}Pt=f`5(MRsIiBNr@@@d1uZ-1Vj)Pb;lawnUY$AE|O>o|ijJK$*EE3@g0l@_TNQjk^KsF31c6L(V< zJ&*p_hail%c5C_{r`$ggx4^Vsuh&|vp@8f=R96FIG!`Q_X=pvYm{vYOE{5zfaD9@#n@MW&Q#AGgw z?a{>5p2!D4b z)zGxY(LCc~9}!o>wlkEJzvGDG%jLvBF8%5PL@3Smi_ zw!j<3`TyS1I-xB17cH%uQ1reTAGNe*tnVfrwQ(v=SwLNB$4@}6t%S~FY$0|--))kg zh~rllF@9k=xfTy|z3mq7L>T1J>RWNoT7C{qUC>g?VTN^6xwqZ@Px-|-I(hJ5!Qs;} zw0~~{g6ZBUZ#ay%tERi8@qT&OOlbSLrwN9rX#_OGr&75Caz-`5Quxk5zKtA^m8F%U zUm)KE{110QS&FR{VyETqLg6Uc!(m4~gK^{hs0TY8c+@i#$8gj$jC~D??_V(fL4$0< z8{Lud4eB>g5{>+LMUWpeu^l;#Dy6l@K;K;C>P^l_WV%PwJigo(kV`XInfPQ?&6$)L zUywZ9%=pB2>2}yqFid#iH{v8k`TTEO0jy#BVJQE5--AVWBZ!D})YkCThY?7Y^oj&6 z%8RgAa5XBc-y?4&+-6j-Z6eV1&QwZD_W4k-q>A+q0ZEJeK`kDs?|K24+vp@!7lTxS==Uh9%#c({>^sPF1(b zATsHqa93%5Pt!@uk(gh;3&V{0o3`%=>JKc+)p)#))m87Zu=ptoi(z@gShbi1FJWv_1|>s>iPb7HafSy+)jCIT(iBCMWyj5 z9hSY>CVtY2Hc|PVg2GbuFxj{D-S~!^bbejGee{6$80?+uxzxb`zui6q0~gwX?8NdC z_161XgS}()QA4x$qUARYlRmI)K4RJ1?rn3w>|=nwf1#%weh(qHBY0N#J`2Xz7^It< z?Pk?m%r@l(ZVKUkL2mu%KI&t5eP8WA?!I#SBdnh7hmgv#$b!K=M18n# z4crkMeyxbw83|-5fe_{Y!0^V47aeV(gGOe&P5WYagEbTb(A_F(SWFE;$%wmIBZ^lK zVlV^swv)=Iqw(mGd>&uTWl|Q2L~4Ab^;S3Lqeq-W*N;P6kgq;(4UO7Lo;|BaJw=_8 zf0?BnDuuS-6xNOW4bjHwrSoYOAR&wKga?&P7>$I~cwr44?S&FD2nM(2YhDuAfg$pP z`71u}1~wY~2oOt7GO2)2!W=@81nikneE=H>zHRs=-dR$M)88_R;y6AEG~7o=lb7MG z<`LeE+d$cz@GUY_R~ZENTQe!p0KP65G<51<*#_V-;aBgJtx?E1MZE4r6Y}M zj7m1xO=ZJ1FwKq&+|ytq!#yqHbTu0=%+4CEaXV+@V2ihabq`a0l6*Uqfx1DAE5NQQ z&MqW=2@eONd1R@%9^)||LRwjadZX%3BBGgL{?aQ&G}uK<0t27)I;_C35DQ_^YXW&t zF22ogX+;EBOR(baYDMrY6xCwUn@|)C^43jQ;(xnGCw{)kAN&IcjNgv?zu5Gb`upjm zzv58mmM0gP7VrScHG$>>hZM_(i>vOjA_bYq| zPz?ZeMcZkvQQmi83+&H{wH1)5ui&*g5w#CsZ37`U`Mulubpo|^Jl1CL+O7K91gzc7 zYyVSU`xOZI&h5PRb$#voSX;|$8}+sOuy!f0eNSJz4QuB@Mjl+vV7#sPPAm=*Jf;Wa z!8jl&n<*z`u(GN0;N7fjyqvI|m5r7M*Rrx3=AW_oq*f90i3na}2zW_t*xzOM{rOJ0vUng1I50|5KBNOMi+46| z<-Wr*H8&fyQ`NeMq3?b72o^!rb)f{t7tjr;<9-oCDy%+aun7J~cd#oPYz03IXbVu|vDD5Ex1RCJX8A z0IX558@GB!X3JSVjGfxOk_NX;@zzVrv8z41ox;07sa`l;>fF~f{f*AKvhpov*t9Ny#uF%3Q{RL+KMB0Q(p+r7oy$L8 zV$#tMcd!2rC3S=UL%o9EME74uqHouPS^#oQ#BHNu9*+D01E72yAIT)LhuEn$B5{#A zHR-G^4$l3zKpslM>u+iiK{9l!cw3>c6Er5hDyKXbt}e#v60Cj)tNlp(DpqYe^eCHC zgnJp`?gqHPWmuC+&YL|sq#($32=c(U>aykf^rg#8)7Iufe0X+!M-|Sc?>Lixat0cF+fFcF#dIjvz_-E4wL5hq z+ZI;mJJE0E#!xL$T?gwyD{s^T# zr5=V~wG;QhoAI)bGO9(Bw*6S#bretel}CWdQjHAMn z7ptEi50F23J>~z#I7-yv26!@n$poL+M<)qT8+zk`7LDN%H_`nIK?51*Gr(UYY0e;rqF%05mHljQ6}d>M4%fvwO3-32@U3hqjd zGLW!!ld!2F8#M<#GfQi0{>u9T)Z(jZ?(`Xb_Thek@)+L8G?s|X+>%-x%}YzmXDB-x zVT!m+;r7xWp(Yh-ly8pU_FM2+#QU@+#S0^B{i^M-azmqTzX8u*Jss)vYHcE&u$bty zC0@$wB%X4)K7SqXsC$^@NxZugN`8IHf6~vK$aclns(NJc^%1w-;&2kV_r>0d13!QU znMke?yM2hUHv2(?h&Rb0o2sY9FN8NyOh3@vQBPu{`++j~Y8iu$}Hm|JBy6 zJ8)^XpV{}@rRA#s*=$#kM%rJb-y~p>Q#_*~k<);rvrT{~@-c|BwX;xnE7G#^85(g= zhF%UsFTw5b@L%}wOL%CF?M?J+|d|eda$FH{i9Jdn`|BvJ(q^Uw2F8L ze`%PdhFn2VlIzwsO$pd4YB(eCqvVk{dI_*CJgL?#qwb}>=o z%_4P=#8Tq~U=qz<_Iu^L`0B|*a3~IL?oT43esNIs#$gRbvr zu|irsp;*htmzf5LN1{b0ld5oas>0QA9TzT(_b*(menmyhqoJQWP~Nyq9BPl|P~d&` zgCHhbD?4^XAD~aJ(9efJ$9S*jKl#}{Y3`Rg})lgq?yMkpai+tv;8-j23@G{_mZZ zy|K~7et#ktHg^J0M2DTxzprBNgt~iVdxvU+l;1IreH#8?f$9Uth5L>` zzKM`026td)dLp|v9L7Wl25Wvzfi|V z9;cqH>c$?thL2qYJ#Yc&&coLiI@SBM*mdvrhaC&qFCgvjU89&Q_)A1CwCE;^ILgdo?JFH5K zWAhsEr6ug~3Zh5x-4k$NhWsR>MY)y&Ci2MOtsy z;^8c+ziaDI{jG1JOGkK<1N#!0!{9gkj+=l#llgYPhlTys!WXHK)S-AVSdaHN>U*OH zx1RB5vS<{xAY&jAE8ogg!cQr!OC4__M z(*rlBfHx2J+ULeSbd&1J_i?b%C_YR&U){e6`|2sQzPa?plK{C>XZ8;4{+s4>N4VSg zJ_fX(i3o;+o(>)X3X*_cWy>3oJ3;r$=(k*mejpgBkJ#+Pv8nWD{U6bv)BS%)|M;&X z>3?^xN(yBkmSPJ(6MhId`-PzWMN1%}@Dy1$!lRciNI zdL5=aEwI2q_Sx*`2X5?z%CNCkoUDKE8`#=Qmumq+W>3sJiaN0B5c)=lFCHt`6GHKS zpx&8xnIc`8hD73d`WrUfB7aYu>0gM;+mO(3t5Ti&!7XmqoG`9)_y&) z6}qoC(SEABRFoIYe7k|+H~?9B01KmI!GFe{s2{u;)z16W`wP-hvdBVkNJ*_smsp;- z3fi9l{&ljK(!j!U+m)w}|M~h~6N~HrU*QuMzW(uN5^SxKZ#Qlp|B>qJNBtgZwrqtG z_f`J6nDK69KWae77T!Jl5LEA!5)_Sk!4U1};xIaRUPSLZaDo|I?{w1JdcR>S!u!d_<6f*Q1GxstB@$k3jJpT1_{8UZ znNh)alp}8n_^2_(*Nl(+=1tmQ{*Ir;yH8+_)FT6tb6eRltrCk<-Y9*k^N;BFwtTgr z?(Xid+HO3u{^M%+h=H$;R96dvyZ_?Ry6&>2nbL0 z@A1C%Zi-ERg?oWve{g-r3n-s=e8J@NZ9$XIr%*mG0@Gion+n@DV@CrBt`6n2ekp>n zOBq}6Y~Ot~7g;Rwk0K;kF4JFI$OC?)nPq0mX@2iTafM8M51s4~db(lv5a(fde2Z$qu- zJK*PMG0Y%F-tvGo^Etj2#O`g7@!Y`dUJv8>FQ%e4 zD@dS2@UQ_VO#TDX&tYMJC;OvRstj9ULWcQ#Sj+BDe?NI-_)sbjt5Rus5`SQsRrt1T z)mBMOSll#zD+wkhcf{gR->9b!Y2l4kx@TjQytVx2FPZjnj}9CVC@xTLy1*65Q>x0? z%`ULtP8z9P;}us#eo`R(jrj@8#=Q}Z;LtgybDsPsBi^s+9Nz40Qn2n9fw^7C+_C?Y z>!4?RM5uzlP86ks@I3w%fHeM3S~p{u1c_Mm<*Q`c-i^`+p^>Ja@>#lkhAuxxm!G1`r|I&Gbop7j{9Ii=N0(2J%JcgP)v&x^WsBE@;^e`Y zksmPnrWtqQqqp51(B3!a@!XCE5%>B+;%Ktm!?k!X6u%9t?sZ>8ja3G0esotT^x$H= zN938>1XV(CP==i3#YdR93&Df>`!N(RjyU}q)lZR04z4YvF&@OhV zFsi?J)?YjH*BCY5xpft@j#aEByH*{Hdq9@Fv@U;8a8FPpgJhuet5z zY3>UH--6ugbDqgL?g7#X^$pVFAfxqP320Pa4d2sH9y8Kyk8~*8_a&mGT7I~r9ZmFoY)1=yx9vDa-^VR)^lO8s63KpoPDyis zPsBsKZ{mG~-D$}|jrz4geba0cyY6IbJ($CEzY*O9rHX!O+t^Ua1*JLDw0p(U@*M(< zwmB9-XO2RaNSX0FYSFIEPm~ij<3ncBjyS3xLx=41tx{&{j;*)~5?-MCv>jHQ z_4(;?LNY#NPT7%44YF8+3@LM#oUjXEcWfujb7{(@%sJAD8(Zl2<&&+3R^zk{HMh-z z7C&A68Sz~5Vr)fRmb_*7=%+_KUnG7?Ufj4~y!7Jl4>NXp*We@LXf@|(O_-w_d|vE@ zVzs1o%iJP)xw#-kCw)rkzXiTiulGR7?Oi z>4bF7{ioocluHKfx9^$$+^*A~uj=w`x_qZDzekt9tjo9P@?E-oyiVVp*3~EJ>KkhjBV@QZZ$8eP6Zm*1?*&(-BO=<>64`7B+2jxPU{F26>XU!uzw>+)r~ zyr|1p>+-dF{^{~db@?1!K0`16x_qL3{`KoYFF$(ujmp#ie`3Hk`fYPs@9^1;Ru*B| zE5<*5e*FCS`SJ7P=X-w8XEpQhknU6Q($exZkZK@pfb1u(}T zU4WDX(R3E1GDw?$%i6YyJ#nadT>t&!=l}ap?)>TbS@!9!rL$7F z&&eO=%$`n=bLQN|O760bbPb9sE-f!{veL*;Vd1Jm{0N2W2c87i!=)7!rRB@4#ST|d zWod=zthA<9ja)Q{)i{c+Ba5v?Wd$zR9V;E>#Zc?2a1@o6lonYbTj4A%7bBWtmz4$O zR;OFEI!huetQ7^7F6d{F;4XJm0SXaN>-rpHWi?1nFUZGO#nlxKP94&Z;}L|?@|6W; zrBTSr9OcWzL3`5yRtwmb(XuVqhJ#5hM5=*F!wou zd*x2|vgN%&O<_Q(IBdj~k|GFhS7E->mG7)@ zl;g5yf?iSz&B_Z_IKHbMRDhs^DJg);V(b+20C1OeRcU!xk?7&Wi)&>m2*>h*@?tbR<2`{3;4>;*C5 zYLU_Hau=>B6;)W4BZ?{=kGLH!m8LOzntHZXX$milk;T2iamL{PUKKgkD;+AXDDmzC zUj!`w|B`YRJ zSLRoxqs&p@a^&}lkXJ?_>@nN_Hl98S>jPg8h9Ddif|C194oD?jE>$PNO!D zQ3&)C$<=5tqSt5p0<$&yNk zqpuZ5Jb~v*XIcIV*Rn7GsAhM$%Uw|c765dps#4G?fnio@a}(Lt1v(A&4=)7u<#H9k zV6UKudhJ{73^Zd^Z~gQ!XHhUcRVSkYV3*#xwA>Eq*@;WbZ{y#X`or_b@O=W(Tafla zdKnV85hbPN#rcJ9m&*Zmq{QhiFOHB=ef<@>kAi1IadGKF0Rgk3S)j0;6h^v6rlu7O zOO}jXQdSDR6sD#?SxO38kF+ZO)dy~sSSzjrSMM-aAeh6KmY0gadyvbO4)AVK>_!%k zRsZSXmND1PT3lHQ;A#^MX*A9#7(Lo(SeJ^|QRrR<{?JNCnTnL@B>-?#M6T9?LUdvr z72MGFR5E?EqoTgsMYZZf_c;nG^Ou9lk5*YwYQ@qqS0GB?Uf+S%dryiPXrJWv#N~v4 zB_(0qLafzsdKo@3Zi71ouIi|fF7(^TXCV&f{~)gG+V#%Ag7P9q*_C~dXqevp30P6k z1^)eR=O_#>g384Zgn3-y@}7O*r`)j$2pkKm1AN^I@Yo$$B-AsUm2=D7%chkV&n+uh zoyAt$G=aQ4pobdF$4sWPV)gy@?Ahfd(*zENL9#0UrR6RW)@D9iDx*ft(sMS5-c2utBIj9lcE{vkk0;%wty{2qFax)(YjpQtZR?NVb zxXX)JAP6yU5*o-;-ZVxXrhaU_~0Db{-(mF1v%nNAsF<-CtFl-w&2 zT&rE8W5xJ!OV|=}sqVs9sEDSAB3Pn_oKo(&p;vpwA@zad-{5OcI@FlD&)z2&6c@v4 zDO_!3!$Q4K2(2Erip#-oM#XR|sGZVfrJzQvuF_@YFh`XRVX{yl6vKZGNLHaxSPg&6 zgi?5N3oiI;6-2>FHI)EUAUsSZ%K^d#PbKhO2IaR>t{8I5Ac+8126-3d%OMB;G_@Dt zZ)KrS0RIG=y3+2m+q359&$Caz|NfjPU03dK6uZzkqk73NuRu=loE7U-f9Xo_n!Ckx zD{hKXn4&6=NFh)q1^x)jON+sFi9+cLm?Qy$jM4&Og|pbP0><#z_=zP&lN=LMQ;O0i zPDruYib_(_QzuMJNlQzcFk$?Jv{d-41-LuYCKTB2EJ#hcGp%?$z!j&a6izI0q@<=6 zq!vv|Etzmj+DZZB3nvodTQ#pLWeDNye%E!CKeVK+e(Ti zrli|aOE^A9(VZ&XxYSAGO2YUi7JU~!4p;nLa1&CCizkd554{zn7hu0OfSXX9g5xZK zk(W#u597_m{Zt{lWEmLx3b62{We~W55_7H!XP5=YJv?DnL1i&&(%D(UeL2~4*%Idd z#IjPCSh+eMCNICD5*ARUxSCBqQ|Kyy^6(b=^*pKh&mx{9 zQzxXa7qHkyqr;`6LsL^~VdQ!gge$gHy~p00Ub*dejK4=)CiMBJj~$VH)6Tb*FB{w| zEm+~e>G>hJilAu^T$(zIZoi^HELxsl?#y5AE_6k%%H>=Jthiyx8s4&^G+(H6Iz4yJC%IqOMBFC+Xx?fV+X{0Haf z*t1oiL-Vi1CH!#-t;QvN!>PWB3J7tuOV4A@AI6wSkF(MtR+d80!)G7F&^1Wtxpt{G zA8WshCDCm`nn2`x=@&Vm2|t7zZpR>f+rInli8#@7??qCkc9i`*bC*A@0QW(AzKsdGt+st%`(?sWr z`(PzcvyLi&$1zsd7_|@A=+V|2r&?35c=Y(==l_zA(;u?q_j`xg9e~?;8r2{O$01ci zc}12WWTXi~Eqq&1If9^NOoh4xK{yTNyWu-ym>_h*_xACE&^A;M8h#=OsgSJk&>qv> z01M?yp|{T2f-pA+%I=5yc>o7^YXQ$(`0j-EyNAPbCX_=u4RUlE`pTFBb$0-6=(`$l zSreg63cz4{z!f(Ka09-Nf!~LmCSy3(|d%eg?@2$qVUO zNZTR(2~snpGmyTeU)VDUF+!|h6#5DMg#m&|7$^)9t`f|`U}1=05#ofQ!Z2aD5HBPM zR}0q&iNdwQPlW4)Bw>Vby>J6~y*COs2{#ML!bss3@QX(YqlMcvFB7A2)Ha3gvWIco zq&S?5INu5vuBt2*9X&ii$FaR?4?Mxr<*a_OcHGPJZvD`IYW+mDzoT z2T_%3%++UcG)CZhrMp55&tbSoKat^@@NAa4oJGqko#jrqs|S3U zKLC7x6$E2@xNHoRiGS^z#%idmg|rLO9!O1)PDH?WL_8ahgB^fmg_H^@15ys8rI18O zHIOz#dKr=*(lJP9Aay}9y(Y@NNJF!K+1wN7t$g~#gHl>t%0-w(q>58A-xL852*=K8>CZ^ z6i64|i(t^-06(NuNOK`Ahg1z|7o-+Qry&V2kI9gxK$;6_`H67zHSqjYME*y9|NqDD zUl`^&meKzAy^ht8mod+FyBA=*F%8N#VVS+$y#he&Rnvs$F^{|IJpU5rX&0QDV3DvJ z%OLIwmk8i7WM=1s+SQ{WQq?BdP+n9p_=yURGO0P_%*-46!2tN`!a&2zZiWq2<1 zb1a`*=`4a_f_0*O&p%)p-@e8CA0zU}u0b(#oCU?4M!=mBbH7`xaEn=JqUMwTKx26< zW**u*Vh`r`!~oOnKF zSz?KBz>vRE%fKfgh7S0I>ti5JD}@*`ri8g_@JWp+DJgTimgDpIm=f@VT*3tUUPXLL zk0~JsVNy(qhVU+Uc8f*AWcqdqQ|X(*-xGuW8^nh(CCvSR&%H5#&QZP+pDSb71w?$V zido@UQB;8sEkGx@0>@?&;+35vC_n3ZLfW*Ie8sbCHbwx(CcWzI!m2 zZ`Mr{>Qori3jhQVq)?8k<@0&JI`nV;@Aj?+Hmm9kpO(5=V+iY*8*E`sLktDV&fmS~ z+;i?dmzJ-U;@6*iEu|U)^bh(?`s1Ynoi(eqPR1Z~rH;vulm;`!DA2hd#AOSh85^)# z$>ye=(wQkNlcm!cowB|6e#I7o*|Nl$EIT*noO|B$^SbqR z(#l)bP4*N+*N*wIs{Ha|Mi<25@erTsK&xB5rfE$uegFw!&d|pbZ!Jue7RD#|xIk-K zx4tfDOHs;)KG`@~minRpEM9Ra9@^yOi3ExFbgY*mVICC{U zd@qErLC?%UXffPXzY2TBl!-Crl<+^%SD^~D64FAHfV*N;hDxDa3~3SEhv6p~7cX5N zKMmdZVeXHQlL1%yRq}o(B2=I@6rdz(Mr&ZS)VW|Wlvbl~V+^7;7;%VBl-Gvxqej?S z)4=PupeEFcYM^~PNK*r)Xsd$yHn>`mLSKPv^2uZ#+7NMLh@u5RX^GAl>!4rAF#stV zfZhygxN()D&jO#za>XF7gSMf(tx%tY9;rWjiANlk!fXnF!?F)KWJ4(%`o&S?;((Gl zX}l_kL3G}Ec^nM9Nfc?6Mr#n^8Di2FwQr8jNhfAId3Is{dZ2`+y&mO4zc{p66ZHtu zY6YBv=zO&?n%_c@jzTXCY2Nsq1+)qnCmWSO-}Z>-d?>lVA(UWc#5YA>2xv9{-v!ZG zu!-bd7|B~U&L=r8@8vl+|4X@xBFxL7e+$s=0=(O*GCtZ$Kc)Z%AAYxU5iY@Z;w^XppT;laG5i@a zpVX4Iq?ha_!{j`fLL2D2^cL35a%7$~vPdT6GT9-w%Kh>QIVg|HU&(XwkMc%miBsX! zIqlBl&Tkyz2Hy9)_dI4EGlS+0!~NU*q#uOFoeiI{AdBO#;ivHH_|qhde4dn%YVs19 zN#{~Vze?BByXgsf6PwEzt7NNL3%j57um{=C*(>Yv$voHt*+;@H2db zkMbL=8P+VT$XaUMZgp8(tzPS-b=LZ=H7fohJ}0Tv^3QUm)8qusN#~67rt^W5uI8y? zl~DJnO=_$9zB-{!sxkGBnyzQ)`}C{&Z~9BF?Jn|ay>_qKw3*FjpE+nkhZ17fj(6cF z@kzXjbdw#VlkTTKqBZPpww=AmT&vbvZtt`=iHF2HVw#M}F1bUFIP+AsItpAas<+e* z{g^(epVH6imvpXsz|Hn@y+ht<&oxU;V0z3hGhhyzXUvfKy|Ml6J{Sr-lOc2%)@2c` zqC@l|oyr1hv-P-j+~RhXowT>u&)PNO9%;oEenG#k%iLPG!`{mSa^|O|Z&S?QZ+DeZl^#{l0yjm?~z9JaIsr7Y*{1 z{D++GEQXcua<)17s!ZLh`c$dk>fi6b70R#*KIcQ0gR4M>hha^J@g;l{A!G$<21|IF zoFyNS1bvMrSd#5yM__$taf=u77QTx=4LWwtDzOjPBldYQ4>0eL_sTxGS6-5HoEX@| zHs@uhS@o(vsae|5b$Y$-)dPA^AJfBnRFCO&H_Od&saxPC0L8$4!0mJQx<7Vba7WxX z-FMv?UXGXNE%Hjd6<*To@^*Ut-k^8Rn`venX$nlU`G(nReqerSeh27YFk|L@lj+~; zFY}lCjs6C|)8FLp^!xos{loqd|CIl{|DF$y9reSUufx;u7xB%QU>C=5DXzg?_(8k} zKLQwxfGwKSkzw3iOhL3)f1 z(@{D`(^(eFVU!iH1gm8M>telZfDN)^Y#7#YjHUA|p2I0G;0a#K1K!1Z`2at`!zYgL zS5vb2Y(9t2=NN2Wa+j~-^X4F3dBO9KQH00008 z0EC5dK#xb{)&_b3002A$022TJ09Z_KVPs`;FIY@(VPs`;E@gOS%vybP9MyGyJF}XZ z{gU=+q?z5-$2=P(54$T_()trH*v2-tgZVOr6(Ptgd4*(b4bj>JtV$>p2qoB{ga9!B zSU{)0#s#;el%%wLq=(X;LQhMNX(4so_MA3teIV%{ZAwY#A^Z_j)O+8XnVlWmN!!0F zduQ(Zz5DL_z5DL_+}&~WqeLczMB%fzNXTnM{H-Uy{BIsU&DQJ9B>GfR+*Y|_OsC{n?5kbCa2h@Yj(1I&hBb|Diy!bwQ=ocLavI)a02w4;5*p@2D3@eocJCr5Cn~?gOJQL+OA>J#^|JUFCi~oJFTOv2{ zauWITk0R%2q(qYc17Do=2mG`^QiJr?K)Qc_^{)N!zG}1EE^MoGmWf^c)78Ds7!e%i zU7f9sit7p4*gsvH1~t(JXbbsIcyB*TZ+)1iT@^aWO(IR?oplmn%LqYFfS;6sZG;^C z_#A#Y&tJD>8-&F3@_a~H>rJ!kb@eKC9uRj3EK2^$aW59su15xtV5gztbnt?u#vO~W1AbP-!DA5f= zyg`aIV`8erJ(Tf8TfuPS{mK;+(oBaZC#9L3C#PyF;HgK!VJkr}oK^626Q;Aeo?x%} zRMyl{D{*KWdcKJ^8SF++<2Y?HWAMnZTLMs4nt|Cj3Q~?;5x_g}(aEL*P?rXeZgzJ7 zvSKPe>pop5q8Lv3~Rl;K@7qlig6m~+Cb;I z6T(KUx|8=SAJfpG3dRjSUjAQ9B3MQqkjaQYW;=M*fw_oRrPpVY+&LB6e1)^~+HrQ1 zd1N1yi@G!e0U0eO#M`+73(58-&IaRNfpIBg+}Aea@Ij@Mke2K%kgQ$FLtT`uZAAr@ zPodjT)VR1E#TXYqha#WRYFD9{sH4exu@o0~px9hTTk6HqT)Y}Z%EfC?Y^^Kkbqj5E zw7qW3;NrC?nsqT#*Ui=~p=8 zbH45kK4^7<;;*3MjXsuhZmJi$$uHF9gQipVWf)m9j;vv{aWjX}>+B1DxzGC`=tfcZ z7S#QMAJbOS$_B|I#_kT0<>2Gku(lvyggacm2~O=+U$$aaENB-oHW9MR74udqXcV!| zfKk>Jazc_XLLHY0>VaP(R9tQI58{^sSzI=JqYjVc_Rft{5Wo@*p3?*ldUo2l3$77@WMk z;Zou{d(J@#f+gh#%WXk88H%CyfUnvGw}Bux#8@W8jVoT%=qrwyE-_vz6(VK?<|dR` z3FZ~+K(ICrUlytjL2E~&8#tD6YvZNZIcoF9k0IKg2({e|v|Y#(0eRAwJ<=$%B9iV1 zlIHODUuh(bptaG9%Ny%h)+NnL{pl->q|E^7On_Y`z#`+bCC_QUBTVozh1Vb{37ul5vd-g#`gvDaaK zh~xaQA3NiK-&(`Dv)=MA340u|F#!jZo9(+mFzmbGS(DKGLE@bi-o*1fo)!4@3mfzq z%n*JewjqiO{9HQQg;P`z=nMnhVZcIq2}O?@dQ)L1jnbwgNzFW@;V~BuiiUN`(^PS0 zp{kTLgZ9;!apbr()6GQ_MT?6W6g#7U>%5%d>#XC1S_n`OY(JRV4D)SQg+}sj; zfz5d?;92ki|NiRBpgy}4y~37zCTB0eG-n`5>@QyR9L_NBLd=uciAJmSjOTD%iEi z_Py9xw@UB_w~qaS`S~HY{I7|SBpm}1S&ipyem{dQibECX8s|PxNvM4aZ&hBEo%?aL zU_2#H$9g%MJWaGb5qDNyq@_q=cxTlCzDJwt*)|{GHsz@E6%fqi>GodsnD5O80qZq_ zHeuRhq+Q&D$)q#F?_?=#i7o^E`DHlO#}%XY>u6OmhvTZ^JcP8^;>6!>9IuX#SMf7m zWu3=2{|A?<9Id3ZqNX`t1>HiVO^<3t8e{*p2s+hqPlHB_F&cFqc6A`cPj1GU0)w!W ziLqsPWGq)wbFhPp=622Ft5Bm&eM@3&yR*0$sNPjFU8SpO6OZDPT0>Cx8!`58)A@p{ zopH5UjCCCcbDl9}*j2F7LSwEU9*hiK+# zPmdUH0w7q`PqX&=U3wI9I=YOcVy0AI_HUGpev)6kkb9B6c0 zkDC0}jt7LU2+b|90Me#i6|M}k)i9_)OL(B@DpjGERX-B6IibbfR(8v1prZMK0P1~d zVfvM_OkAB+#NB3|aIh*kc?#>V0pc8REQJK&aG|{&-pz_2Aeq3^e`8-A#j6H)$=t36&F>1$=Lf141VSy1M%WI_~0 zxRlR|6|I>z8&>&g+H6__@XTo}Q1m$jEN0k6LO{NiGTwt&BBLFM^6rL?c9O-~oD6uzb0 zw|d&pTMI>+rmc^_U)NHuj@~@BNEfNfX+ZS)gs%1uH$ei?$gsyy0aoSeemX zQWf&o9Q<@~k?OFVk@X`64@A9Pr02b~A=1oCn~+|_9)qgWqLn(Y*Y3f}Gdw6nP>Vi# z;K2;x$^O-bo-Gu)0?l@fEa*9!%Z}1q$Jnk@AZKV6KMOQhIdzm~!3|kJ^r7#Gp^+Tc zJE+kYry0GI>UvjUfM%e18ACKLljY6Ji00{CwCfPM6Ld2<+G$^aE^IHZrXB1c5GwUU zK98DiL$?ZP+D$FmNv(yasRb2Vkm?%xG3^%NQ)soHfH&lFJ4ieds(@RnKO zGG6E_*5##6(eJS6!q`Hwt%naWK1v~&Piu6E{S=t^C(800R){t8nFya_$qNzjT`68M z;J1XZohFw8lWk4)?>6!KCD_7}1g_QQLR>yPnNY1nS?MZQP9-H{LCT;zwd`m)Wr+Rb z7MO}g`r2W^yh0{7vp+l5OUkL3mEQe*{L1ANtPs)eF_2~2w4kf-q^eTUvgHa@us_wL zw`Ej^zANJ%q`y|ciDv-UFWfsk8{yxVQa<0Gj5jQjB^AH_Qu^XcesJh#>*a}m-<+Qt z;7dtDEG3x0uee|(G4`zA9&s0sMC~XpAu6BNQm0#b)%vWKI!$7HPDB2<=)+VdxABCg z!4}|Y$kKSn$DCtGl%fBR@TJU1YE)mIKF@MVs59{bC6r$(-Md| z%pQeKcsx>%xqke@N$Hb}yb1di@%=r-CawJzpQ5vTX-=p`&0m+3e7okZz^TAmTLL37 zv=kFNs>WdH=T*QS*m(}Ou$Q^JePa*q(G|W|(t%gAA8U!m;wt;;SBhj$UWA;N${oV* z*MTSd`D9|BzhgY6m~7Rr?$7(n)iEW*UYuL;iN7WvQw;Xu-ame8+}nl%B+U%sDkjZ9 z;6#&b^8+U;u08yu*!w5aYkdP^{9U4{xly%atfH1_6b74>7|V`4R;~;uX*4#hM^!C1 zszJ6UvPGVMPP16)4MSH73EapXqY7@{sFExFRNG^*QQQ!zQ@ikm=Te3IO!Viu{S$FL z6Y+gwvX#OGegmP+A7GoS{(5x|zhv1NbfsuCV#nB4;R&IUkSCL}#l|MRIp`8CmK%*h zBV&O^mcaok>|bMz4)FX_PW@6JNZKrRhZLI~a?ej!OESCj-ZxhJoibd>KP0hLcU?B* z_x!NTY9C%W=%>q-Jh>Ih=_g-V=kK)->>` z*!^d5k;(lHTw2b<Yu5Ev(EOD zLY`>gmOc-+!EI;EeAqFmU+AZnU(|zPFZMU~YJZ(=(2t*Q;7ZTK^&3BW?$f-z>KtLS z!neKr92}O1>Wh+x8tQ93Pkk@_-6tFJA!Fg@rp~S^y z*SmAPl|BS-X|_bX-=RnZ^l(4q-mzKfxNMH5BZa79j>Z*vc~mh5K8C}s3^|e#DBdm2 ztPp2wnfxx;p!{B=#P2n5yOg;(sTl*2yvECTQ`7-CWIlqx%vvITk5RnEht?njldNVA zkLVg4FYB6py`P;<(?gX~$ds6Ov`9jR_ z6Niwq{J4?N)xHJQ9_0J#>%c~vdk-UCiuT@od4no%)tD07zp zHBnqqWnLX@wNk29PRQDDIwBhb@2k+4{kqDvQ;HEYRQubw6^?sz<#%vCxDkKmq1Z4y z;`>eLviXZe;N|9oaC6|o(|M7&7m0bYJ%G#3@1ZHwJ#il06X(!9)1dp@GOl}T0GA&| zOcZz(`}Hq>@+bJSC^!m`y*ux&?XT|ZzrI>?4or_#Yrb@SwX(Z9U1a-eW6t#6$@Biu4~*`e9Q$1L?i-xjt5fSnSFf(D z99y|+aBXQtbzsff3(l_Wz|{W9eN_+GS=}G}$>+5jHsOEde9uoJ|NnVM+|RhHziGPi zrOBz=`nQcaQ$^MY{$FSfl*U(%uO1&9+`V$3QmSm+^VAV^(@LoGzuEf^crLs5|Bt=1 zC6!tBN}^h~K zJFn+@?vGEO`@YY)uIpUa`+d&2&rNm&;fOFtSRfn_oCq0&5yBQ>^GS!IpK62zWp5EI zKCG(pH?Iu_ygun~v>e_J8-9>9bTs_*;k?CF6D)MpuYU}`hChaa1J~|hY=dh5-mfs6 zEsPz_G0jaZ%*-9Z9k9Rj971@y%zG4gEfhGo|H(46h!Hbj9q`%P`~fq@*BCfJ+5O z9SCI3N~-Mn0yez0j(x5vTn#NFDW>XjYtF;jg=}yWX=YkAWQB`EB#SC@mbL;rSEnnB zMNNrpe&<#Ft6u3+U2?0`SM?N`Sbj>R=qO@|jzm!xmELlQ=Hk%d;AE~Dk8JNYl|NE2 z<;NK|=1bZU>=hh7cWSxk)b!4+H4nv%aq)Av1vN=YNLn=5Db5}t;l@WR7{m=Q6jdfO zPYjTxM?u_S#|toQ;>J%;Pe(OR+?UN9jDZMFw_1D5YrQ3}eB(XUns9J>Q<+ue^5__^ zd`5o0Y;1D!;T~>$wy3jK7BP;U%^plh0r>%^x5x2~V!ACWebbqrTk#?7-gHEfmNf2e zdZgXEj8kPhHa}E(X{bj{O^pmuXFolJ5@*s}#@;_Luy9-8%DbvgV_#KPfAIfdD@^%; zJ6c8DN!@oe*tw~~s*p!Xa6->8uv6e^#Q96o8}4jxvu75fL@r?>G}z-Tc`o;A7O6kx zB?voXlxFc<-7FCQjZo%%R7I9bp1dM+u&*S&j}B+`y_Kihj2GT8sV#Fo$TVQZ#<*>B&kE%Q2oUX-CkN& zJ~yUc1Gm!_a5~UNN8SAa(VOpv6 zUXcv9ri49nE|3RhEjChH@sVk{?%g+D>4BMgkso(uyVBJQ@HFGHI!@7}ZKT|bf1;hy zXI{5^;joz+s~V^Lfclb6I>Vd#Ols|-re67>CjD=5G%Rcg41~aaG?V;G%SUwfRJWIx)WhKke4f)#`^K8O0z?Qf= z>XR=edZKvQDMEC+6mQ&AJR-?xA1){OMstZ;++MOFC&g2%ll#$rwhP6h%l&d(YBj78 zNylHkdgb2V-yipO<*JwXE1gM9gY&{>VR*GE+NN*D`4FQ>WIh^xSDEJut2-k?A_ARqEbGrGal@IGsu;tlsqT_;Tw1R~N%fqfNL%yW|!5;oe{O71Nsu`Lan0PyX;F&Q60E#Np)ee2etsreUmd=neHr{nSc zw%v=PPg%Nl?ug@R#-v9hle4-b&`!!mC?eh*oa#x&OIC=#^5Iom$A{PL`*BQf?yqcl zUU}*Ciw2J^KfRKnLXA>Xe}8|(+-q?ilUMv?Zv;^qnN;db5CMVowhq#&(U5Q1NWjPKsCLN0cpG zx~Q{CYHI#r2l>U*lq#%V++E2je)M`OKv87p22aAd0nkHva}-m~*w_>oDcH@DuW_B~ z<+xxojMEm4?e`9+_WIVovvHW@Izwu_B`7=J7dr9Ub$p;VcNk#toOE13JWJE zwX%weFN1WrC};c##>I{6M4EWSp4KTx7be(FH*SO2lc~aTgak)cPR?#?)!Nw9^tqM? zr)9?W=*eL}9MZr`A0}=dGqS1S@zPa5;Nak#QdU-u$x>n2-rly_jbSjw@Y9ShxfOo9 zAkQC*)+PCpuz=h({m0@<_CaB83jqWN4S1=@-;Y!ypAK$}9=daRLR?K<{VBV@xY%Jq zm&cqZy9hZQWNuwTIcZ6`PC&G#Y1Vt19uL9H$$3Ugi>j==Tv<=g#=*^1(TS}_=LDD!{911$OD?|E)6+Au)7VLDzZpjz18K6pcevJN>EPLO z%^Uvj=T0F8AIZ(z@~rxpXfl)G>eSj}NJmg(bd@Pm3%k3VlXz3fB*7Z%*};9T{l*P4 zokq{YJPD7A=MKjnZrtv?Nhq9vw?mOnlj+aoW%0bhtu{3kk(Za(@$jLziAk0&QAzQ* z7FBa|^ZK+1G6=+u!ujy#1Vo!9hU@xk}6rQBhIzD@R3F)KzD0 zJw9H1vc|t#J|0QEyYf5|hyPW9O5U9-v+88zGx^a8EN`t+|VS1mZD!y8{`n|GVvt zWo9PpMva&}oM(h~n21`P@cZ{ANAF(2yIQ|1qFrqhX4xUQhW_#0;OsDn<8&H6~9Izs-vT0xbU)GB(Bq#!pqBRB$wSR_)TFK5fODf*T+JoqvMIr z;n-riJg4MB7A{3Ue27GX{DO+GHaDMnL~xLgdtX`Mu+iK8ti-~?!neHg$IW_fl@1;t zF=3i)O4g@$#J(c3Tw+I_yd{D-=(C@K;?;w&gJ*hrDytNT6Fn&+5uklJ*L;1?@HsZ{t5sN!IPu6294;>_v+@zK*fErph)83nKyoptD8hS@647v=yRlcfi|dK(>7|WBEGL5&m$dOYPc4o$$0`OIudjjr zI5%2LN)h5;s#T<4qTi@D^w@Rm$sNPi00kBn7F%t0idzC#V5)Dbzbj_ihQq>DeQ({Q z^YBQsN5E-5|8(Z0D=>Q967iz0ws}z|_0fMk-+)Hy1^;OWQZh=1VIzps@ih_bqE>E>gAi0Or{8jE`NvGg`6)QR#rLz;Y4?E+V6D}zY zxJpx?1mV4T^JaX!`PyU4O5(o0K3o1XFZsy}_39IkC7c`UFy?tb*%coZ6JwOrbo7Y< z5w_-)o^sFk>i3JDJnj{)yXhuVWJjnlqQ2$r_`q-mtUzoiaZ@-Muo zbG~q`VVjE=7X{(nb}@*6fS_LVE(XdI*`Ql2E*?6*&vi(nWz18t*AR1c1hqvsbU536 z(6E#=Gy;LAuQ|^>BktGOSeQ5OOK&@V^ytx6c}CKn+d_B==P(gf6o+eUZ{x8DR3}9) zJSAT2@-@*Mz2{0g-J8-5!n1Yon8vt*#p=pR+p|(5!%~eU5MYIG^V{lW6dvs}N9P8v z`Vi#mh8*<*j@{keH9bANqs~uW38*MZGuANx2ZHQ|1G-zB$#99D`-irqu$A323gBRZ!#gv2E!=L9Z!Md#~s9s8XA>B61M?(Au1w5vAD6ZQP&`cQ9s3t z`m*3md&1kEl5>?OK5U2`rJK!U(hs02^$ZY@Eiaz`10HSqql@TsD_7!0g3Q^`0}PYBJVV=KdMoC zIEIvR_Q#JOs~P1Jjf*!dhSK_Q40g9Soa>wygf&Zs7-(rzpPv&eE_>$pCfUJw^|WQB z|LrS|DGd941=)@eis&|wH;Wka8~}+I@Ec<0*oQp;SJ|F8Yg%`T&t{bQ7**JD4|n&E zot>Q>U0vk|KeSsn`v+dgZDT^GiSXE{Myk04 zoaO@6i?lerUWf6A^Hm9QY7^&jGIMb36oYCb(=9ej)6?lkNG`g!O&}SO4ov%_97Y=v zbFBVKi8?3UE?6&2q>x_4ib_srW{#EJULCPL^6s<=fVr2j2&isoCT%a1QQ`+oY;0^W zfIxnE>d^rZQ|idw);V|*E{TagygAAhD+>r2E*>5*aq#HqsHL25(B$m$n4&Tnz)i=D zJBUEed?D;O6UjV#hW9Q80&zY^p>lm=V@EnoiBh}D%7Xty{K6PcWyf|9o%idsh7$?1 z;n|+JwOHHB;x<0z&Lokxz#h*Uy+krq@?Q4#+6GXX&{3$D=oN7?Gv7=bczbz!-L9^Q z24@^67SGFx`q(l#E(UhgAra3*&hw*rRk_*E#5(r+KRv?2I=ecS_`*t{1RL z(jgExPujg2-rd>a!p6tZfP}0B}7#Mi7P?fc> z%38aQg8Ghrmj75HYB<`}H=1Ud;~nDTTOW1UylvC4J6q-By~3FV*X~Nvi(S1cz^Qi+ zJ4mu$tz@Y2Y11&L0CRBS?CflTfY+|z((-aat3}9*%JuN;#wDkIL z@@qYYhRlr8*WsgxT^GBC*=GKg4bQv`G1l#^PNECrdQ!1nlj|T&De37c0NSfKRIGdO zh-t z#cV`mWPYAIn_>lndbl{*JS33_1Gkgj;H5vkSMjn)^Hd4+}eAaH;xQ2_8Uhux}6o=ixxei#7M^o$G+ z4y_6or$;xBjkLwdIpQG@4GVvT`$r#f!1m1f3rVAPxz;Q`*<+7;;mZ z&Oa-am|*WsBw2kwvY#`)Ys^G5ZgaU;#9G;lF1^w_(14`K;?@b>*;*U0uXWE> z$Qb}IfsUWQT1zjQ+^a;lEGGH+Pymx>oXXZu{z$n3?blR{;8+ z6U?#SXM_lWz(2@m<+Zi?eyAF_G~hmnxg9%BoRd85hY4u&x`e`gy}}DIrGpnbP7s%= zbSxR-x6&Rv7G+hqIXuyN9j%R>^a4QO;l`Ry=4xu>3bzF)i9QVz8E6C50ryAVfuL5J7R#8=DNy!4)v964UXI0io z4TXhPiFzgR+aKC#;K*E3cVyROq-++r&;4TEy2zV116x|e>zee=^Q>*qqBF*Ha@)T- z%Z-2Db#4BIGw3+))a#_`q__|?Nqp8<%PT4zC)z^x13yD=65fY+W{ck$QHGcN`nEGg zTgh9^U5B1sflZDISC$QG8`W)ny5s!_^=N(u#<9C8!q& zQ5-mcQ>4!JtYsN%`Xuhmhh95v9ckj3=c8PXi!V^pyy?9Tojw(aCpurQRdmvQo!e0$ zIlrvTeift|se~Fe8mo~ij>62$H;4VjeL$=OIQK?;yb*GD=UKfQKY+7yPA`rUsd(-R z&EwiI7;#f_TRr1Go7F#;AsyjKUu7kJSq{|&L_vARn72UrmYy?d*R4pUI^MBtHzhuP zY$)Aa{TzJ;f&G%pQSU5;^!#-OIsYWaQ(W;~FinFL1$u3Jh1Pow;^0?4rFO5+1T`Dn zoB#nCASXCJUXGzs=|!ZU3CA)01~kuOAD^xqTH^AbB4Enlv6eD?_gIAxzlS zM-T|g(@t|TfSepXEZ|6+#PFQH4RNdLsk>Zr0-;{g)5h#n`csF(M9In&4z(dVs*gRY z*R%oXlWw~4WxZRq-aV4MgYF(4Sm()3v{>;OeR$ROtipm6;6j3ozGuc-%UCFM%a0!` zeFU8y^tJ27I<;kItZEN6TLV-$|FZt{pcS8)@W;mzN(F<1g&>kOF!*12+CP+CotiC5 zJ(fQ%BJpyX-CCR;@CA|}biiC|E>ECVXjyAlY6)pRTFT|{T%W)q=qfu7vS|0CTc=2| z_8k({)I8wr=2M@2XtV%_y-S=iW}wNBxld}rz)i7URgglZ~`)%YA zh{%|ja^)xGACuM5CzDe6@lEVDP}u&?6ad=CsbIUZrV>%$uL1wh_=-jE&hU zd|X$HbRgVC&2@KO&y-Y`XB-Nr7QziqH;*$h+g|G8(z-BJ%J#U-q$>^A|Dpy!AtWRu zR%3H{<8f>V$G80$fNo;r;0)i2j$SJ7cr}PC?+ZFO1A`H#lybblm3QcX^-r^r%84@L zF61`qb*PPx_38%5<}SR9B7ZfbyDiUpI1Gh$sK!qW)fZ%75ZB%V>Mu-DcdkaG+9o+T z`|YW#_0(gYTO9Td4%SORyjmzv5cPVTLKn|SkD-!YYC6Q8gS?XjWCL%(Fomn0{XnQY; zu`ICiObp1w%&e@N!|m;64wo-;16FCWpJTeJ-`(Gl&pzUk5O(EK&*uAC9)ZY_=gUQ? zbeF^e&CL@7`phK(>js%N-0-GmP*6~M{KRb`Hv!Aa=WCP!&4rrfb54URswCs9Ruz_m zxDg_|CwZy5J3~W5v*<(AnF94(-}x$MoY7=sV`D03PdZ3We)L%x>R|PJzV#)&q_Yi= zPo>4(+Mc@YV0vXy-o#T8vB425YxnvA0T~5_ui?#Rf#mswGo9{Ck7rjLe0_Z@4)WXF zA1*gTaVdVa+{}$1fPVlLkj+70_%)H8kLRls=gyNRk^#4hq?53DIJsnDSxJ?amR98> zcK^+r7;lD2#v)Ey!6QRanhSGR|GO!V~hL?k3-mNSpjuD8YI6`R|GBx+(} zV#gZ$PO?4xaN5vp0S7Y+nUX_hP52{Q&mp=sPifitnZx0Q1k!Q-k>oA<`$gE;@TzUc z0?skc7OLb)4r^HfRB{zD;NjtsfPqIr%fyt^$vLXLKXRdec7;;Vg_{glY6@Vk4Sl<; ztK7UYsFcS|L;K8m8>E$0OB$FrxIp@M}M0*wUl_KbT?WRz% zvzR{OH?E=H(MNiZ>T7BSy?J9ivvO4=z%cu;(AA1QzN^EHUS57$MV=QJW0a4Z^;8s% zOn1`SFiI(dUMhC(96m@AgzsO}ImbRL6JkzeM?rXZ8gG_J(s#ma`o_LiqRo+F#(@Ii zXk3g&q^cwRcG-le4D}E(nutwP^*&DhhR|29E^4sH9TP~lQ8Ie7^|VOaLSKLE00=Sx z9NJY7p*bZvxS+24=%6Mx@QYp=Z}Ksq%)XbKJCjV~xt`YP=@P@}4IFVYUo}7C2no(e znTg!UD-!pCT}hYeOI=HW1?FShcthBC7BR7A9lx5T}n) zlo9!j5=kEsedEka8^jhPN$&#^oj>0G4x5^kBS()`TIJpg4+?UX&Qg)u-Iz{!*5Gm4 zJaKhKOk|W2zpD&}Cc5~pJ`nGn&AJoS7|UE%0;GwWj`s>W$Yk_A0)!i+*i?(>J!Vd1 zozB^j+kGygD|C(Sq`EWJkw@tq!@OxO5xqN16rBdR5DN z8GrW3O@3QyK#=mSo8Ma;X*xVVk|u#ADJ`9GW%g;3zRQHaE`7)pi3>UkLe$lD;~YqX z-3Hvxs$yT+aK9~7n`WygIMU)17Yt4};^NZN z(_gg#%L&cD6Xc`BcK{As34>D*DN}x%oZtbT1pJ-N6*MVjjM&)Ng%FO2g7IVMi?2es z;s8BTEYo0rY|iVOvAw=q$8bD(>(=p0VrQfLefpNzzp zQU-wftb#&-R#Em90o}PO>k*x*=tU3=u`Z~q3&$iSg#ffXa*^Zq(^t!44aXQ6F+Dv! z7uVKOR;Q9|Uy^BaUT8MLMj(QNgPi~{vQ}XxbE@mTd>t2$C0B{9yAm5QQMx70agTwX zt`Wzt5WDzjQ+#_Az7DAxV+mTH4Xm zgDIst!uf95G+x4xj6a{&C-6K^x#eUMnO}WY$g;ZfvMv2+Ws;sdF_)Sqb zJ=OSr>=@Dwb;ni48{-eYAr0nV9B?qzjl^I^5zSMj2k}uZj=h;F#T~U^P?m)(IPb%U z4=XRV3e^hK7qr>q76HIF0_34;`S$ZohoHo43&Gv>*T8+q$jEr@K-`+751z7jf%#xS zQN$wyoHoEtfhV_`{QArz|GPsq4Hc0zoQ{ax?8tC;&oqagyZiima5T~1jF=}rnCebC z=C$jdnVC60TI=xap6hV{Bn{x~MTw#(4;HI?VaTEx7 z+*Ik`>xS%6YR`4UT-E$XWo2c^U^dOxCI%dX(Hc7w zKrC6BjqXCTY z93*B%eYf|OR#B3dlw6L0F4yR};~5efs$;^FU=+YK|5KVXi zRxf{Jf2tf-BCp}L`L07X1C}?Sxv6sToY({eLN2pUiz?|uh71-pfHg)(M|;&+)hLFe z6K9W~4&GeeahE3cObe`kT)+J^nI;lli9;Th^HlDj<(oHe44Qp0G|Ej0WaZ>gPO6`Y zGlAo@n&qZqB}3;`@;;X9dv0VsMQI)%AD00=3y!n30JbxGdqbXR^vcnzYx4xPI(q8L z%E#;;gdU(iJ=m9l11ArA_7M^yA6fBf%gM%3DOmK({R7h-+wiL#*D}w<gz2#WX((KkkV-5jkYbdBgD_7&TFW!Dm?{vZPUj1AY5c>jy zf_x$(6dwW-)Ig&BARwTfw5i7KH9H()G1ROIu2UD%-`Kd{MA(BxiGO>_ zM*HE~Tvb*;>PtO$u0jR}k^tfM4zE1Ji4)`@`?<~-7^L=JEPVv*751oaM_F0{$JTLTEF^VW4DPf*|lIRQ=p{F929_?X2+i@!}{xuVC!2LR!W+QWs0fG#jh%MUm& zye#5V#;&ndz}uJo#A-4BE|7NWX8|R%?Lx!WF)&^!JxahGCTBo zX|n5%R?$vNYpXQgi#p>@5?yumr|05KjwbP0ms!tGbdIlXU}0jWpU+X48LeGjl?UIG zYF3;PE2l*u0M11Y%&u6ty1I@(KwD=N*&t|A2=c#?=tj79;Nk;3sh!$|R}K1%F=^@P zsB9OC?{9A`!>r#_>#9#$GcRsvNJqi0fvD9{C}ltW{&AWF=I#y});{;?=arX~0mW}> zzJ_HzHWhTFiR)63q%VN-fbWu*vv19VkAe#s7>}*6p>J}&AIRxFO%dWRuc)~H7DmU~ z2+CHo;2SFaJpZdWe!c;tbWNj_-m+P6N-kS5B^+czKu<23zeklXe$lhKF++%=v&7 z0IxiK*XjM;$~$+6z~@1Cx3pr>w0ZH}_BjYq*Qs{VAx z-$b{_oxQ8Yif<%fIXfq(vCev=iWzbC>{$b2p5ekLPgGkwW0>q#-l-uLU63g^g47G7 zhKhCjK#V$m>eMN``*8)w`pgSD?xH!(k9Ia}zAI=yucGo`dV0D`yTTkL@8e6vsWi@( z=hWi5ZawTM!Re_gd6zdoT0BY-p#kCAK$AkfV32~)92*aTSXy3A8+iM;*1=3hR8%xm zhf`k&gvuPR?GNo-0GZrzm{x!b!n&{&(OF^u2y8OozDeWyChAxWlcEB-cJTwr@-hTs zeAp~S{;+`KOng>W7U&%TMYBcOJ|g15b5?$|C_zgxO&L0z*Za)xM<12rwtXpRY&Le# zPGv(;36e%zUTweJ2C*>;Vw8 z(f~Gcc@@N@zPF~iGNaCP3;6P0|P^c0k>$8`pD+XOH1$lZ@f4l zcG(C^HjBip=a!h26+5Ty-6y$>d_&}Ug@uw97A#j+-uZ)=lmk~2Q2+>Z(tZ7oG;1A0 zhcS=fQU?Pd9W?-^wu93uRIL)I4tDo|sC+@+qjI~nojM7<=`7~m%hR}s7BpAHM67Gz zFeiHOUH+zabKZ+@`?CVW!lV=w!VMzCC45I1M3u?*Q40ow&Yzx|D%$hQtY5jf;NY8S z-)sv%KR+0=czBk|f%V6TwHc2+X2*dK(BbY|Ss3%O*3+Xd)~m-&I5)+OINN0Vp>}$G zAhc6I;aosw=8<#B0_0eP)P8Lj?PMv#Ff#fAPh5J6K&YHQ9~Bj4$WQxVAZ^gHFYi1P zxXqzQ9UU4RRe~4OH18r1cZ}NiIn6yQ%>lR^nGhG3Z821Q_>H}57>bCfOAH~x2}LmB z9A^1&DA4@GbsA4mL&LP>1Dx5>QDV}ywY3Ou;0fu#Rm6NF=FvG_k>u-a2LxRfk@B}r z9+R*dzVAC7=fpw0fB)Jh=wcMWgoc2^a3`GOlZrcgWRNU&tf(EsjzN``oKvU9o19IZ zmV={v-qYD!cSG`l{__#i=AEhWaf6R@!=#FUIX}W7Wqe}kdm|@(_$~q+zxBSfv^3Ib zYt>q(&WXUj_SP*dTERsu(aM>|LCeZo#HFF)wvTTIqT=GFsyHkil--5Na53l^7$C5} z#H4WRCLK^i#xQA<9}ej`;J`OCRq`GxBn$XIeE87PVaea!Yo1#(z%aGXJTfjWpjQNW z2-G2_h%5Qhd|gPH9a^%^#%OGz4n|@&F$D!?*cqen;NVSeIyyRitAzV!%EM4Dmx3yc zWSj}($;`-7HlFyyx4}Iz4~K#DY@5t$(Z8QQWQOAM@B?D`!+<5N-}Ts9%_z~S?H6We#|K{^ye&OX%Mb7k zXaX<_Ffhz7Dk{+$>27ogo6rCvF=OK+Pb{y{AtF9Su2oJ%GavwXTdVK48gw|#BB+Hd zhs=6to=6PvKCwKp@34R$a6twZmd@AR)7hBCZbp?_aC&WhVfAg!7s}#diPz5TgNz7affvR+6YC#dM|MqC z>G@P%8hTYw(jcy`9;Y2TwcK*7LlDo)%j?q!knrYAJ|HDb!R&D(%?HuRywwYmNvWxY z`Hmhv8q7{jvVZ^eu6V8sNpGi*qO75@Fa#J95fh`->!mQnbTWpp$L*KL(FRcWq~#N4 zCx9XgOG>!p26(%;@$s76YCec5-*^wuoJor3riIhfLd}wsoNuQHO7O;E%4ih+aG$h* zC0HC_0FK1Du+=)Q8ni0V=9ZS0$Dqy<7fSSY^sI(Q$@Ne#d-K0^Y0V#+%~@YxAALJo zd)(dK9pSPI)PX;LW4fc`EOYF`U=W_}O%rUN3W!JCGT2`KaGh;F34_g#Z)0`qoRaTzpED`Zt4~!gC?MFkB(8JW0|`6_&>^jh z7cUBjM?`RuY4bT>ucjD6l?cE;^|H|mX<}b{2oM21ye4_T&#pyA5`oTXwgu2gQd^Jk zihn%9G6?V(F2Kxeue^JL16M~D<-hi?8Sm*`XIs307|*b6+<8i0Y%GuVl1fMJ(amEF z`~m`3gNLoEz?HDI#xZHLy$aNe#upYMK!qN`RoN#>CoNeQNkk7{2IzVP)c%Dn z=wQH}P0Refmz^Umh5-OGAIR>mef8>cTibCoG_;b6OGEpLw5wO|BIv!-nE{jVyMA4wVDRNB zpaC*amEc8^CNzWR6&92Dt=sL!Jeo9DXXr*`Tl9GMb+A7I;iTDsJ5@S@`g{X&cgwUE z0>q=Hu@&zfW#eh4IBV1bCd|0^~)BiZ>=sgBIix?x$ZXu;5_IP=MD(nHMlz5tw ziyOKQ_I%kT_O5h*mm)ijX9f#~u8(;kJ)(X&s|iD+)_#%(kPQU@Y(ei^=^?#LS96*- zs#Cb$ZSAGg%Dcf7Ns4ZU@xyJeP~oyr6ciLDUaD@9N2cY)H8szw_*3^2?weo74KRG1 zCAWWlbCUuX$7YUy%sqyo%!L}o_V^_I{r2`TkB@!QBBfeIRv>aUbB7L*Uq(4gjfsf~ zRCfnvkq>WkQuK&5*&}@75juef`E9lzm*_WosN|9P`1pX969WtexHIrMY&^Wv+B!Oi zn5xd*20m0nRBqbMQ=pnph>s~@7ec|2s><3%k=J=G+rn|~8L@0uKY;PQGJxl1UF>=z zvq<6{0)r&u3g||{@&nlW_EpuQj&@7cU*0$W^rb-ZKI`WdV#wW{p?lj)T`xO@IYEG+ zf(sPN0hYb0meKc2{=jOwO)4|4?p;S8g`7IKr8k|5_v6}0fe&HAWso0I#je4zs;5tj zv?W+$Q5WY~l=g#Q0{_hDyYr&XIpr?EP*$ZTOOn8FK8q1v+eYm(eHqpLykUTOUCqHC zBH@(>4FGh=apo}!=zKc>r7?(E)e3_6W-j`ecgIsnNvTw?vSgXRAeP577MRqRxUW5|EmjstvBSmGW%KWkRaH z)M6mJab<3JpdVmiba%dbJZ;Ifv!@VTD7>g3D734qsd)e%7nL{g zHg(|bJx&Cc@k3j{bpbjLK1$M=IoTEO=Dhl$rTmWj#!`HGdipcaOm)`SV4JIT0~6EJ z?QlYIF7d=A;e0bbH)Sjr4(~Jf!w&L4g-hSDG~)b0214+Td_Wl$+Brgkv#X{2c66fk z`u;%n#Ql1_hxQ#h`8We4mMnly3RPJv@w}S}v|c?BJj?y0w>N?S2PaSGjzKeG=uO#v zy_#ciQEoTXs5Fho6B{d0hf_7iIqC(&sj0N9*9e8zivd&W?j<8RptoNXJy$iqOW$LK zT&vo~I*D1*6p!zLGAY$NO&h8=)hQ`7w>?%h{Q?3uS7!QJ>%`R=Y6VGDs)1rql`WL&?(fI&ilrurV3um-TWT+8Ri4U9w7#@N5e*a`Fk_vo&sOHtjjLuUbZjl)u1Z0y%)e zurFOI8piZ{9$Qtb?KEB$b*7bC1uW4yRqHxRWG33HTd&$e&dSI%gB~%KAmrxc_pI#1 ze$W-79)qq*x3RGy0oar@85x->ULa00xv-N_s<6GvlX_)uK;3f`l6~7Q_MzT9=DK8T z`@#y{<#;VIq)4%YmdSARXl|ss*L2D4I$G;fJaJ{R`Iq$}+SN96931Zx03E|8(XRT% z!|po1T}oM6T2jEl!QoCSD6yU>=5RCerXf6O_X^#Z=Rp6!z_dalZ)aVhJsL0oK`0!M zWg`pj1R<<7OD-Of`kX$kdzggQRctBs-n~QcK?6-qO=B0Ab;+oc@Z+OHAU1}>+pq~u*zRu=KnW9u#jxYdP$j!}-#6(Ab zw7Jy9WkR@Fq<8XDuymO2AxO8_9AJ9y zh2jGKCC1*H-KKD*vaQ!vQa|INJ6#{Rk`vH@j)xDaP6H;`PNjdb*B>UXV%<7nZ55S% zufcpZW{%3S2Mv52CFKYmc~2MJh`Z^!$%QG6aC29Ao$FV#%@b`Qw2ovQY8R@@SRbe5Jc#K(*P6{ zrsd*V820l+2XW(+)eenn6xG9u66<){wcB?)ln&M=ugG3rj&e(ByC^0uj#{W*;Fq3z zYI&+V=BXAlS3ZbJD^2NAA!H;$#;b1!a^C8D?U0iM-LJamEOBn_3ONq8Cd-K|-4Vn3 zN|^%A@m}Io=3w^2m@%CnT>w*iaCgq6n+Q|{3#5pb?Ck7wkgDY8v(}~3RJTOa#M72&L1|O74f+ZtR+*%1i$d+{eIT*|>@+aln^IC@)aUwP|2_0Y?`I7j zZfuoWJ8$P-)Y(lwB?85!yA>x&8?uGiuH`=<%8 zpP~TmqD}RtER+nq6-ELQ06LYz@Pn<8V_n6ZeI6Hbj`HCwy5RuIeyyhFB*=dIl21E( zDymK-QUW@K6?*8Dy{w*|-eP~2-1`TcbrM}2`s!T+%~#MU1Dc^1FTIgrWoDjv0buME z3e9_rXtqRm;+}#2Nf;|z$t^6b=d`{!VHx7ix7vLDaph(xp3CEgod=svyF`Y-r5`;y zhfgD{Lku#C6*r})p!@nAw&0f;6O{-{9{@>?B@0~HoO(A{kVtTl&pX>%+xgB} zDzxpsAkgPptE@+wxF6j~leivE25yeBR@iJ4Ff%hVEhi_3#i3OJAG+f!FF$qj`8+OX zv)zjnIK?j_lCrwIyk$9DX7bY8fBDo;}LQ_#87$qv$E41VUb_ z=dSO@Vt?al5%tdmcRtH-%bY3dk4+~_IwyBadze*s!OkSsm@)ioivRli{N+uE(5r~3kG>U`tu5w;7(IxNVQA^ie*r4KDa zqIWOK)ZRSD2%ijMI1{Rbj)_^tLy4aRxZjbgn>IKl7~=>KPBKnkdB^)6BRkvtVBu`SCFQZ4$G7Hy@(lanH)oe?^$U`I=&#C*8nT6#o59l?Zhk*YOtL1&zIz^eq53VH+hDphu z=+ulU+}=Vwdth-kOQle+o(et!k&-et4YKLS;vY|q{=qJ2?$^ytyRurU9&i^uQ*!?_zG z+-fvVV6q&Un7FBHY57jh=s~EMo!v2DLFRY6Z%EBTJWm!p^IqTi(DNowUNF7NV({b3 z#Qx&h<(_^9KL~I>E{u)YPqg^^0KO)yk%KNosfXu%4fI?QEoJ3noSdBd{QdoXiz1IN zrx0Gis(XiLw)BK4Rb!xf@WlJ)!VB2qHqU)A@RaoQdK~9RU3-Gb+3vC7AThX5w*5gb zkf{Uc(QS23v$IzOi65M9z?WpriKy-$JaKYzpAUb7Ao{kgWuW&(kJq$UT*GgWmOh~j z@R6i%9xS-5aFq%+seG@h;) zCk%d${_I_JctK|&9~`qXaa6abn8DhlMH?g4~$zSIfOXfN)+4aF6TSuvtnQU}M%VJmhN!ZRanWDi`Y1 zl6Y)>%4I02 zy_S-TUTkyktp(6=DQlA$JsD?Wx4Z3Hs9BCl5|n8R@Y60!mDR;`%{l~=;%#@aER`a+ zot2@t;96)r36G3oy^*@_pI1tln=`L2jM?Hj@l{&%^w54hJW87u5kXjG^8%NKCgo#A zMa50ff2IQIa-Nx2Q2?HLE27z8-5#WakEKTKw6U^=r5b{9h??wD@ias$x66F(^!UO8 z;kf6WN2E8#h|f|327B+G;Qa>=#93pj-ag42FfKJA#p{kk+;*F<4FUvtLN1QIG$CLV z_Z8ZXQEZFHjo<$*2~DKr1H(^rXWm?yJLQ zs*a8yD`tmEW`_zjjYgiuFgN7*etPtkIac;uBCo~Uz6|M@Vx3wZ`Ha5I`j7o`k!O$a z@q5d;%aivQGa2`C;{#v44nUPpdTyh%q~yKF8cVf!g4GXBHdwJggH;ly$2bMjN-m+zwy4n@P-_pEYPa-)q; z?cgf|O$wkKVPRpHcX>J44WQc2GPiXaJv}lS8<7pij2^&e4k<#~R`GqFE%D!w6TOHE z?51(gRR1yFtrsPCc>gbPa9j1ra*w`{acO%GCwH$gCBbv(OUC@--GP`mWBFBE zA06iq5_)mReZ#)Pn5Ry?|GbtbXUAHnF^@Sf)w!G8hTVW1dpbKJLEkWCjeU5ddd%~n zeeG!W_Nd^iDb4d(bSM{bKwgHu&24QSLw-PFcl~vQX=$ZKIjwh*cD1l2UsAir*86H^ z4i1dVUgpfsH6=M1_skQ|h>9Yvew?w}8gIUKp75~18znbD_y7E*C}1JEqM$Y|OFT+&1YxqbZ2 zl3Rg93~tk5Qm(4EdSll@brDSj+of;_W$43)51J=>+kj+7LtB> z{zC2jM>%)z^;%Ynrzsh9C!VOWdyNS&>DUVZncFeR6dhf7QP?%hj@$vJN5YJneB;Iu zjVPMTmCNY!S4!Ct!FTyzEtE9r$LesV)EG4TTKb4cLzj*Y2??1N0tTSuHIIA|Jwv!; z9ln%Dr|s;i`D8K~p`@u9^z4}ih&djrs!#YY4Hd6w2z_`)h~{l}+tpN7U0uBZP+L%` zXDmW%C2VwYCq%Wpg41bZIt{of7vY8)@6A#?rnncUu~}GHN=?f*9!k@ApzG`FBZ{^6 z6&_of5_{PkW(&gF5k|&WK(7Xrrjmf|pD&K<(;Y8GzXM>>yqcO?34n0$!I9@DFDnWL zVt|W3hRcNkHd1trya(vFPHCs{CNnK<)6(-xCCyfRXqOv8PsXcWvNW6>xqBLwpRlI! z5^3EymHJ>aHFrs zKkeu=rw=H%bm0D=W3$J(tov;kSncUAWm#o?M4Hg}0<}_pWXP4nK|1QISr5yE?2% z`%{2=GEw3O+yk+<9dv4TdE;ZcxDn+DK$TW@cX#z|#~PAPxh`c|>jKLpRxAw}+iMr8 zg9ZVs!rA4RcLm#s#kEG{j+UX}MB&SNxAJRPgjF0jTMi!_ml@Y0z5jxRlk)*!IB81E z+w}DG4eJxvX#{1>1m77U3}zmuEl>dN2l%oWaDxrU+kB6&dxx40Syob>uzYg2rlzK~ zSoZYMqbAvs^tHPH^+{y(J-cx&Qq*WFub|r_?PKi%%6zRV04NV^8+S0{OpsiHg4?zP zOZHLY%2cHuTdUk5ZA&kskIG%1?h#rWQbS=bCFG3y(CBZXxxTSMcjU;Cc*C2WJ!iHD z$pQY$E6mMxInB%*n9Oa68hVC-G61EOyYi)4hZ@#?f*tC4+dS3aQw~#2mX$of0anXQ zy51B&)GwVlhJMF>QZ^gJ=Yg1*n3dV5MWi|_Re2KT(+3L%absmMDz(CJNEzLiU%D;S zj!MG?3c~*4r6wO|`T(h`(mvgHehTw)^A(g1K_B2m7Xg4!VkWD{+;?a_yMz8NKD7j* zudfg7k?C@IxoLNqyv5N)bb2C7oFJC@>FMjj9-Fs@@3}5V2e_<_*fw@&XJAJqj!e2Or4x@AoQmm{y2*ruB#c+u&_~)>2bb($-pCe|EJDD;u&Oc<5_!-ujtHbG2> z(BC*~Y90Wr0W0jx>k;6JB?nnc4w6!fApoTFDgbzAd9>CcO=)ywrj1noJZk?ETdZvE zprzpQqvImCPugAdl4#^VapFXeG0)NZ<(|`vYilKZryrj$LK(l!213Fe=LNl6C+$#q z<&l>_wD!0kSI}U-gbv_ndMe0iUYjqR$LJUsTA#k3&Lj5f7wF?9sMm`C|1y0He_7MY z%Icb}5idvp!4Drkl=1ZRoZ^4!g2s5h-i_)7i4LB3qoAOaGN1<-U1jGaCGX!`Uw1jf zeoEJevE(R-$UBT29NlJ<4`Y=I2CHJNU$mi)C$(4BUYHS{rzHmwE4~YO_u{*PlAfK# zR>JcKC0$TJn%}vQn9VP^HtGOu900OQXB%?gg;veo8j{gXiI>tnGDk>s?mFTCjE~|i zeE77}p|R8!UhYI*6qtvJgVT3ypB8H7=H?Q;Fe?nB(M)plpMTA10B|9Q3yRJt*BvLwld8>F$)K^>R+Jh0xhk(TzL__y7}% z0Xt<4S~lv`Ts9QFX5xaD(Mcle?k-45N_u*f&fqE=I5h&TjCWxZQGn^iJhFu zuUI#ZjE}z#QYJH5a4J)ZyS-(-J}pTiI|>{$I~vpZ@vM~?Oup=+C@S zcYIJ46TOn7eAAaLMU}M;08zLC31GhPu^Kz0P&xglXU(J0?|=kG0pLtZiFS4PU62X^ zZECw{S5uo4NiTf%R;sWc-A8xbmvRHVk4%p{3LHj7MGZa>u(7x{=Cz;W@iE{+_8EQa zKFtQX?ytl6mDJQs7*IHe2ah(^%wNkW%PWW;8u~c>@PT}UiKa%8I=fB{5q@i~goK1y zp+;$XCkA@b5fu0^qAc*igJmsTV%BWZx~sbdgzvQ9)&Rh0Uweou3=@!^gpE$7l+oPy z%bcPBe-k1!L@b{$e|$U8Ue!o@AxbyP`wB}+z*Ryz6wU+iv25TASl*rhh$GEs1f5SL z9zrS9t*gqBq~Gu=H|ss4tW4~^l_ZFLWoPh0p04hxOL#VTXA8+eE`^4W1+n|q)uZ#` zAdz}LESq})8cRbGgx<6>c;#IZR;5qDay=hyF(V>Zm6cuhE}4mm3CM4o7oS&H$g|Qu z%fudE?iDeEdlz*Nmz$jc;kc@Dcl+3q`;#2|Cs~ztN7vt4R%&%j+COb?H|y`ul4H}| zEV~L9$tD1btbgU*lOPX3a13}7tR6P&+Sk+dQ9e|B_c0Gc+yXJ_Y_(fL`_+I2T_Boh!%;6L{UO0 zp(>$0Mm&DH1pcSNP9ZNN6U2D>w02B%bUF?;w)qPHc#t5vhX^>&-?BDRR77#^vJ6hQ z+T}&etXy4RU%&BoWz)IsMjx@B%LK;j%1c8p2P`Y6WMUYHopdn;ZOh3~Iirr@qs4Uk z9hHj{EmALNZE0!feE6_mzy7LP%bJEb{!#ogc zD~I%wj+;EZaRZaJXhd);Z9iHO&>+a?-v%A>CL1JwnPrZDbxIqHWOVB!#=M7BnAORP_XB5c z-n=vS_T0d=o_Dsd;Imj!vYoFMp8^gg32x!bL0)mtW|8A92=e@x*^v#W@-Is z+l1J}0^Ht+?mmo_&9Yye8%`l7BXeAzO0u_s-$63?Q38#YT(c%_Ti4 zBFI9#hxuXvNQIXH>UP7=-=Ba3KpQ}2L3*;R@2+{~icH0F-uN&&ssk|T$9IEW(s`;X zK|w+B8gWOjXg@p^$Qg-yZrios+L*X>{RC$>QzyPS=6ziyArLwh1Fm03TED#Kig+iS z-H_)KdOPOqk;iWxT>xHM1Kn~S7iR)~`S_~eGaQ+~V?K-6 zV#X5Z;=(A7wp*)ry(mr}xmDKxZq?6GKsWP_+pxqihBS^cX9(@Xwm@wPY%A<3QLCnL z?@$7t`%R3Z-gi6+!Vgnpx@{+#iOdt$JvcFWJ6`DZvANyMrym_JfHJt2Thg#;nW&+n z!t+*S9&o6}3uKcYAI7pByYfzzIhf>_Dq4E=i)37Nozi{vA~VE`*ccc` zDU!Mae0_aUbcc{v7GBm@3sFaa^ui3Xtqe(80W}jIz#7sZncp9&ww*0w*XLwo+nP>K zr-w^oCr+Twu{XVV;v~3?>n}d@?p@1(q6kN9T-@D#hfXS8Ck`q`QOda0UMC%K!vZzW z81WHpa6%%;K3BO%`h|A=)fGh=&-IC5K!^ODbAp~m%{wZQs|;P~C<_IqeUyCKxeMeL zLIW2oN?iYQ!Rcqge|L*R&Suy#N717ZVbi6zU5vuS#C&w2SmzkPG@4XYRCnXK^yjb6 zm9|g0uMA!=x3wk2BF-v5^g4kgbb2ic=guQhGO3yuHs?}=4?~(QB%HF)(iXBm34xAS zzwSjUM2Nsf#U`M+!IJ5>mDA;%V1mi+bG=3)$Z7XJsUlg4R%O2Z@>F+!5Gj)ZUs6VX za9_;_<9D>BqFwSq>8Ys*5YN5bBqUmGue!Ni3B?bap|hJN33$%)0^f%wKLJHURV{YM zvoUlcEop3_x}vH|Pp`p!W2`s%G`|_peE^Dl`*Y#fu6)UVv=Cokn`MWX)nwM|pw&4YtV-bg@=I6g7C>c7PQC7xtZ%QyR;uImn znaIF*6kOH_tC^xu#*-#N$`$Yj9uVAfrp@ zqgP6^E4dEUBSp13#p94}wCR<^-xBr^n5&VhOfG%u%=nx&VKwti@BF;Yo5@K-fSfj9 zV3&@d7TTxKFBeVrm^UnTNtIL~A&rZIr}Qd|)x;6MTvu1u;I2vB;rFXbHa5lmBO?c| z0%Vb*dC%oTK0vmwoa$nnHf7G>1-29Q6FA?ya7ZU zVNp(^2BWpPJN_g>m3jwBYMWi}S8_FOml+M0nJmX~>T0Q;KYy*cxtZH1wE87u24+*M z6(3x`4*Cc!K#09_;NM;(X6phy_+Zhva|3!MakrRFIK{RF`?mChcrHv-lozi*%m@hy zJ&#co&V#y&BWF{egByk!0n>N%^iVIqBFQj&B@<=591<_w$Lm-c@xq4C(b4hV0ALT- z-vkOhM{3~vB*&R#xwlAC&o=Z3-~b{dJDU+M&*3_q+>-)# znR!jK)W1XDEkTrJG|A^FaSppo-{`X+r=O!dGh~Db((!$S9tEl{Zgs#EKP<0o|k+D*k2h%;W&XOGXYYR`_bOg@vK=sOZR`rfA)}yZnYgS|SWr-) z$SlF>CP}rBt7Tj9lzx8{UP-#{w8zk}ng#m=li*~HVQawMo}L~yu6v89vT}0L{1)QZeXGpuP|N$_kTy(s^%arXkzH zu;_s?PqR%m0~6EqcNO?zKGbm^Tx6*canYLIw$SZQd7rQ0ory}R9a{EtTAxR z9Ec&ZtzUV1-LtWA%S>eJ0MNiQ?8N*kg)9mpHeH^L{)LRH!gud15s{c!SYuZKs4eeT z8w#S$z&BWVH+X;2z6b{$b+t&lI^eLU%RaYi@Ao>jwY42xUDt+YUradFF}XWLoJ*^( z_qYuB{ptC-1!1@q>a}av3>gu$^NSoWC_|>=v6)GUq=?}TdEC1O$*C zu<{Kx7{~^>=lOHaoyF@Sk}@(ls%nST#`21{9I1m=_Z!@w&dAQjY&IbBZ1j>hF`2w^ zu2Sj&WfK4&8~~*^Ub3;FAfyovEi5eLj>=5jVq#EpK~rEAV`x8lXy485DFbQg_9`DA zloMH8wP>mNtbA6_7Tt7*B)IB7l8C1%`Q@MMT_8I$qK_^nYHP~{(l{-)c;DP`xmV0f zk_XIk*?Kw}8tYtT?7bs^c`(N!ZB({cW+;{7OrE`W0$Iqz{?+{;$*JuH*(XCo)ycvh zn~yUhgoC9*D4G}6BD827`Ms-|9y^4z`6`O+kPQ{!tqq@uO&T zrn1UM1&py_mmHFu0i2ux*S8%}3@OGnxiOd!cy%7+x4ETXW-RlJ7CWEC$<-@(@_u?-( zJM%YeFUg@_YmNr4gFI&&CVf%-fcFabp5x$C&ruHeGHIzqCCOrw4zSlWLKI_FZ zUax#YUP4`+0&a5o@}(X+s!uGal$+xtuCrBwq$}wFg2WG6>UylsY5Kf)9%6#(+|o?1 zE^s$kdFaZG8#ic0L>kwCZ`3XFr}ImysSP3t_U(HKrwVDi$_$fp#5W_PU**tqWh~|8 z1}N9Nef~Zrbfv_#~MdliOkHk!(z->b*-t#f!xaO)pMNqDgXMV88_> zAmU1`U9GPZ5D*YNz)Vut=@*<<;~+MlYB$qQ;m$)1zQ+uw5!sCzv>aq*WkpENvzNeeyk;S7a5+wZ)4WE>gj?VPTFDh#5PU4RV zPIO>8%sx}u->>p!db;|_lP8A~0`F2|(!`z$Of$Hlhq#8oM0_NqL2Dgyr^Hn~HQ~d; z;`ILcm3xhi$ffO#Wo1=WvX@7Lo|p!qj}55F|_*c3{yWx-&xG{mH<4v+W+H87mh=8~gh+TGo>#Rmk*@)F;3~S*i93cH9)Sfj}X~izYX$Vrb)ev)(M16wCB;T zrFys3xuDC}Pf)dIk&wPv|LE~#X~9w8LlYX|IAC0LNr{OMEZ1KTUX`5@4h?;+*=cj6 z+4U_AhrAc+MjI7p<`d6xr@AemGLc6QANHGdCz4a+KHf#UU;XePhL;TggMpM`45@VH zSDP!daB1%D_OytIzN+d+XA5RdZ(d6Tjr(G=QM19KSI@0e49RJf-ZBUTmM2^bAmql! zzT_@*gVEzur5Icl_DqGcwpw zLDc&~vygXu(GmCbxDM^Z`rsl63B>007$!wb(!4t3ND53PO-+kqN!_P;<=w{NYIPkO zYsvN3V)U`exOXgbX|Vy`VCLd#f0S^%62xh%9SBs~yHGRQmkPCL!fG<|HcGKycHC@l zOyQ6a42bO5aar}vB}iuurp88x(Vp`}!nu~}G0)SC)gL;!4+UaXg%&msOfNTIEEOH7 zXbBF+9c%E|qEgwJufRtsD=X6@lKPPM{JGZp4nymhMt_1-{>gk|mG1iCjuQ0(ay$xl z@80Q4xkW|w=8IPuDqltrS9%hC7+jKk;-JTo!|KXTd4T*i0skw46YE=!cl#oUv&jaL zsimc*ZLdEZ>g?^62F^_;Rhxn8f8_avVd1WQSB}WEfN+ndrdH~O+`aJ9<#m{a-E(e> zOdT|rwHMBKj=Ez5gM+bd>x&cILyUfs8fP^r)i8JD9gjzvyY-eYj4y{d^|Uab%p}g} zyK-1jXoU>m)h*%8nGENKomFkFGXf{-#!lPT$f=hd%v;-j5S?c~Gf|1A<>`5T$hZ>S zzbj@)78@~hS3!_karxuhf%u!}7&oT6lMn_S=!n-&(>a7JB;>Sb9-QGjywKkhM@JR4 z?E1mAY@^RyCY@OexWCZK%1RxYc=%@dxnFs`P)-6&ITCEHoBuT@f44|w|YY5jCha$OKHORqxjhkjn- zP8-LtFORf)(pQh-Y+}hycN_YwSk)%$k=Qld}e6feWQ%h;-GuN z`lXNC(juG0!66~qPm6Wy@&Shl=_mp?T4N}5zEs6tyakI1r{$2PL?eyiAJa#bE}v}RWMgy7FDY4A1=z5?d+~e=LeK5}iT)QaGZ3bDE1$%iN#VGLJ1%rB5jDF@&_BBriaT+XuK zl@EEQ7n<*Dm4${K?{jsbv+R&w&;vgD_g41=WKQ@uGzh!zZcN95I4k1&23z>~iKo$? z(~{>7pmyP_v=G5{I>QjTEX>VWIk>u>LWGiVvfH6BNM`2e8@@4&^I2Ro-$k@|gqX0i z+b#82e@yH&_RY4KNG>*~A;i2kv80k{P)|K)Fd}-(#50b% zOu^~cenjcBaQaNW;6#@(k4Y)PL-l}8V-jpS*9tmwld>>+Y;jIR6qAnWekwdV$?RLn zJeY}Rh|r0>&5sahJU|N#<#@ZLt)(^YC?G+pVn!M}cLqJB6yp>N`sq4^BoCUWBI@lK zf&>X`YwOoZwhgr~*dj%TaPG9q#Gx!cKe{t{Lg@D6qcSR2bT6TVjuh#x3m2=MQ_*>ii3T2Ej zL6Qdx63#KIsHz$VnVjqF>^z3&D{9`_H(P;nR3`e7X}RPAOK>{IHL+xTGlA{G1Yv0} z%^;AZmeIuw68sdf`#gm8b3tcWTI^{E%3X`mEmCAMPdaF=L=r}f4Xj<>og(5DMT^ak zL+49ur-F`(f&{?Z9TAz7#D+?l<#}E_yEi|ds-IW>gi3G5iky_P@AJzK+yyes9Ch2r z#|=c))I4skzfHsSO$|!V4NlLMjm|t9oe4f9c27ONpzkqx)Gv4KrCW)B(F6Rpi>2m( z!fm=O)W^FL&{E>lQ{sm|UyMRKLEpEpSA_?K$Z&ijjTv{;#+fxZY2RbpR~%Dk(7kf< zSMtzJTq?pt1Mmb%iAJ73zXzCjSAg$La& zKL4P}GF0^At|R}G6AOh|Xphy@q-cq}vn}puu)p@~M4}x_e5Nv5Q!@--7bGL4AXzMK z;L8kO7xc^fgFe0T=TpH(LHwPfprC+8OiT=41iKIM>4kBK{Xh-?q595p@bhs$3JMAd zDk>@-_>B4aWlR4`1=a`F3)YVq@#&>)pY(I^3;EuwzP`S;j*gBQkV{%xTDF>+n)cv(S8y-)Jpmoznxms*;FT*^0^!lc z#U&Itehd^(PtO={Z|}Hk*RG{N0iSOJN%8gd%>;jE`uqE51_T6TMny#xMn^{%0V&ke z)AIt=U;}al$l=fWg)c0Iudc#C{CIyr{d`}X&-I}ATrXHZR(5uFrLeHD(wLZ-B0xcl z;1RT^C@3f>`}+0kS%HCp@c2nUd$axg{4zoNQ+#}UJ_*!^mzP%x&{Yc1*$sDh_ZT-f zw-{Gf*G~fU83S}1Zf|dY-NC`Z-^t0z7kuXhe&Yttb+Wa!H3iqzv9q(o{T7V{^xK$7k)iL(a_L90w4KRw6(QAiLS0L z68I1j*!I&A_|>P+P=G%n4Gj&Ez?YE5#>PmXiy;gQ3@K0*As~E+PcN!Qzz|1|_@!@= zA%2NXFh;?bsQtY__xlB25B>A?_kF(K!O!<+{#+keFCjEEG)d6rUeGs?Mn*=T+5p=E z+qc(7c!ceTpZD~zrx$o06sRkxyDxRQr&}mc-%$Thpe>*s_KxuUt5>gxX{*QNb@ACAxWh4&ZxTpw63MSgz% zurp`Q{D1BIx{bfr)~~;3WMusRzWe&RUw#i_5A2U`LChfjdzSv~0^-U65Wg1o>hyQy z%QpVib3m+{CnF=%1yxZ2qWoE)Kga<&14Ih=j)4pzMtIZ`|s67W#7JiTBfF^bF8eaf2ob%O5i;uBqWd^Cm4M@%l}V_kB_&3 zG3w~iqo3{vkAGJ7>iAdA`SQF|r%u7RR*Cq<{$C5!zY-7yAhJLtfd~WP2LfLp&4T!! zTmdl>jNveM!~PBZVlRgu0>S_Uz9je9=ktX>Ur+Y)^_BMQ{k4FYeFyGT^ex-}SM+rJ z_;Dn_YMmh8pnVVf1Kfg{l9JNL$;tWM+VOjGpLC(MRJ#D{Nva+&rL_|b>ZRd}WJwG^o`t&Y{a}j^m zHoqZzu|e?*`AhcxTF#z58w|MCE{ILvti6A9tv!7}fp`P(!S{d%?*GoF|5U=m!w-Tu z@PUqw?o&N~q`>w99y$lGmgYZWvu`CtL`0fE7jN0v*pS~+AAfW$`0r2`@c5bUUHa~Z z|Dt4MWH`e6!ux*@`Ldl~3kL@WjCaL|U;6G(wLj>0MUcOLi+250f%ZRf;si1zB&65Y z))xJ{8~uxN{rYu`;^N|`FyFzt(9+U=ciC$<{46FWwh4~b-^;FlMgZ5gPE1VPq@kht zVLJFy7w`yT{tmz%!au;||6j?>%#;F{V;8m`%8zP0ychI4IXSsLh`s)<{r*|Gb?eq+ zh=abY*Nbm&(d z{0Q08yQHM#EIvNI*6-QrH{{E)0XU`uc|PQY|8Q*QOCcsE)~c$inuX(SKeEkVw%x|Y z2AQ6o?(~Dq{0~c6S=m)M2L$W&qXpUk#2<(S|H$5ZV}o!WX>V+h2l31J;BmwsjO~6Y z0Q;1fn3y1;&;N`zL(ErLSokC~G!*N{Soj|o2L}i2($dmrFekzK9XxpOlR*7^DPOkX z>wo+5H-F`OD5p-H+N7eQvO@fiz4yj@;CRm7c#i<$7kjfK6kT;xR9_dRQ7H-OM!Hd& zVL(Jw6cm4gNGeE3HwerSDo88cAT1rzFen`|NS6%VFvP$F6W{yR(tl*B@7;IrJ^So) z&fX9%K=1y_(}>pFK@DmYiy`g!uePp{xH%})2b+QYbuKWoQ#+KG*WJD1L13V6V!e(* zySus`W(wG^Kwpui>ym5e!a}eONL9^KIA#hY^?6ubou{gl)IOLSS)z}B>(L6K z9^d=bO*uHc)(OwgTGBT#NdHk&1Cf!FBLY3YeilO8l-TAcIyz*0eO(?PIKgoQIUWyO z53_pi-DWnsbkDl+`097aMc}sRSYBRM5P+y7D0h4=w}T5p|1v|hIPe`VnldsnyhY!? z`%6knLc7pt*QL3mk8QyBgr;U@a@9nJDaNu3d%s^Xe{t(CO1iU;DmQ_MR?cjE@f}Th`_4yrK|B7R{O3FCm2CWK4ONA zWnT{l6x7nbe#QPAx4AJrh-P!*0W{sfG&G+*R+zG~vwPRtb8DASMT;~W?*ZbFhk}Bl z0^a^v158|?iOY98yI4&3sFyo#Ib>>g(&XP7oCsb+Dk^P?tgg zY1mOza&vPVbnA9NW!2Ty4|UMlC%6-B@Q=?T^i57K$@qVbTY>FUMs=&0Tv66x{L z&Jx@JvKd)ubo`1w{#Qxv6-Krx5&>5ywNQ~7&0CzZBFis|R zWpjyTrchh-!EEP3OBnvzeE0iE2V)kweH_k_F=YcV4G7OZlz{$RA-QU< zf!1D8u3m8?7UjSVJ>vOm=e(piIbw~@p}mvSD~#Cz{b7Q}-MhXdKSZM4X+h_0rx95~PG9V@Y zv`14NmTm>HC&ye+^-NfRALsY=^^pwAfDdl0%TIdY^GKB1}z9YoMihI!M(uAKwWx=mRUEx!t|J%!uIEP>*c< z(6_uiqvy|_DHuF_hMq;(^AJ4@Vjxgy+Y2w>-b+BLL#*?ss+jyA{{LtjeN*-PQON5Ii>XSf;PxOH;VpL5{4Yt2(5EB;G^Bu74umn>MexRzc z>S&ISii-MpR&)>%8ykzdxcC%;z&kE&8L)>@Y5}KKdyjYD)|dpoXUp&D>pKRF*6G1~ zc8pXvErTyHUoXNa&{Vi42+T|;*o#bn^HVGB0QoK@`0*-XcX!vHf|Bxu zkO1~8dWF>~_*Eh>*Ln2q8%trnTVnomve}mnO-;+6K4AW8lU*>)P5#E8ix7@S;hwc( zJ?KeDGatm1T#;<+S0wGr6Y~cE9lDt(fR|Wk?1i_g@*W%=9$F5KjTPe-{4trLva<2m zfq0&SSFc{>AJzrnjX44W0&bs#cH~!+pr0mz=>7qqd2Wk|ZP#j_1fLm@h>rGf8UVan zAV@{$q%jzjz{BaY+TIFe0^(t`Z;18&#B;;@_xrTNs7njnFGI-q(VO`{(eRYoP_kxm zA)z-d1qC|$jt2yr3LtPF{36^}P*8yU#0o4B4F#~8XYl!pg9H4EAFNw^xvT;>??}gk zE1T*t&ag>f57F$<5Mvk$Vfb6vvmEF^00fz3V}l+=u43+mh7tyWC{F4P8Y0b7ycMo3 zE8Cg1`MC#+)VZ=SHx~*|>>#*;NYd#*Oc4J~5QU}l0euM27{XfPQrH3582J8Wv&E#c zbc+`E=VV5BhS|r==g*%%p54K(B1f!4*Om(OOefQnF?3>3IU5FWLi_-hc35{Xf8&uBW~+-wg@gU^=pgWRj20iNz6as4Fy zEEoYLWW!kINPmB#A(V4>fr}z|5`iFr_p#OaR_hxZ=0KvTa;Y$%u0dkHB;A?&i~tVb z;Xq&CF3B~NAf5&QD^GIraHx|78(Rvv=?akwZdX~3x~rnnyZ}fOkQ5LB5_7dS;#99} zxyKnoj5SH-OHeEy>Jf&*3Fwxz16vrAhJjuE=Vmv@g~1{bj-k$Jq#|;m8!yiDt$}0p zT$g|MW3VhClb0kyH6YSs?2wz2^AOSuA@V$a@L=H4O~;n*<47PaLjVFxE6V8ZNEb7} zu;~w^*_xRB7#P!3QdLEh8sPAot%E61QG>m79CG*xv<2lDdqt`&MAo$RTfin?&TsAmxCh z^sgrqQ=f73)f@%3JTudL1nowE29O7l)Ozq1NoWxwwJWhihxfzbd_CW@!TdA1SrY1d zO-({+QPC9n+()8x9|6IFu>?jEw!=C*@g&e3Ha-@(0@Xuy_FzAb3VYghE#JGiT*;qW zkCRd;>Xb!SUm@3Czwd*E_p*%qS9A{YeuIYA`c=Rd#=O;(TzkHAml%b3+#zkK=Z z**qcOR|x500qM8;TRXcAQnmn&wSO3pBbc4_r_k2KB3IDN`A1Cow19sjgtqRG^oNO{ zOYQ}Zi;CJQTRO6!Tizf{mKe5lS2q(I9|s1isYYM%)WHOSg};=g9v}x&2{%p64$??h z9;qCI#THU@lgPTS=(P{pR1+dF9CiO%SXv!)4Gmp%EG&37cq);I?!cg+%#5roVL&k% z@M<}I$j+WdQoHKC>>(-2M%m4p>BdP?) zNK3P`>I)3=RaodJdCS(i+_bdMPXH%i2Y^M83MK;5Hn_da5Ay-t?_@CMoRll)eP38R z0Aa8ggkBj*j@njRMo+Idysl2c{_*1xaZNq&JnJq~ur@h?%(K@xbjMErPC_3;XK4$@ zdAPY}kC)qeuN}O2_RN<4{ANhP20VvUZO;S+P~mSaTMWpLSZnhA`}Y%IRC*vXGV<%{ zon>)`<9I?PU?lzj*IN|03|SxLB!@HKx7&MGRlLolYgoL)EC=dZmqDo3<$>2jiG=6<_{-gwW&=qDJ6)IBN ztR^JOMHipYEwp`bbi_v+vJPE42EGKVV4mx5G&yml4WW1WmdsL>5%UL%!rz>b*BttJ z0N{b4f&#(YapYl?f3|=l9Q8*Kv4xr3r^CCP=f++J^lq^6|UB0R|EPgU#LSJR8*F_^F29Bo?fj|IbdoK>=z{4I`$~fi;CSd>U(%D?~ zd-T)q(s}ZeZ+{F%AG-l;3BDI(F2w#3yXja3iqIC6khpfSj*;~vH5$6R%W+NYY4%`~ zf+^0(CI<&;u@=OW65|jqkxMFEZ~ECgB1Xgg5PPi$H`LtRd;WRidpM7*CNTtaQn+GM5ny02`1I9aJ~L%OPY(6s zhvR$`qOlyA;~N0Qq3;C)DoRimHTRAkI^dHiAW1O{69NT?0QJQRyCr_PX$YH729d(- z?o(1yG65VmaT0ehIccJlMC$;YQ^*a*FuSFKr}FYP-Emj&`Bld>z&uQoGioiEX$_NA zU40}@-gaaL4eKUTze?|}$Ars(M;1z*fS##HF1mUjzKLxJ)$Wx*FMA-GW%ZiE(HLwh-8z_ng3h zIYz5I z@7$aL;OvIqXY$NN&k@OdsN)!Hwqt6~`{%SzOFRy-w3{Cj1;CL1Uc89BlwG8HOD5UF z?30u(1i42aRxd6r{FY{wYtrLy9@0GQi15bx^ZCJqMZW)7ms3PObylUIoC|_jJLNPOcGb z;T)HEU>al13|l=A>6OCD^aNDWRfD>Wu_00?_jo?`XOZKvC2^Wy#$Wtzz8zJ z;q?M9>j^r3o+iNi_34PTxg1XFdrjWbS;6a{@0+0UqjawuZvX(Vmci;!(XHG$-IzZq zL}zuSYm;`EPWE-v%}$*w-iS@=5fcl%;8x^U@!}jon^%Wem91NU0D@00!ww&dpnAn_ zF2`>^zPf7r*ErR3n!51HX@Yub`_`XkitT?jYinyHhv2!27X~L_Y?umt(`XuAr{f7o ze)nDECat;=C-&D6>jU*)ko2Ualby?>CBtpeqb82!HXp|uqrc9E8tQXo9 zj}Cf2PHL~CnjC}zIF*%EL;S-(&6>O3*{a0b~ z>B5sj<5^y{05=#CLf4e~pzQ&|0p&O9ee<@wr$=*DplhF6Xl`+K$Vn4XR?_f60&j&b$8IhM>hfR?PNxC)YX%YS zn3SGc!s)&VpgIMyz-q<{Tr=^o{r9kYVlID^u9*Z-9HfYGGYxsCaj7aBSodr&vJ0Kz z25%O9n3vXc^LFSrbjf(%Pl551a9#r^RpMU*0fHj{w%Ul$Yn>{&Zo^%iBkA%U)MpV? z!*r=qFB?YbQs`KQm`oh&N(}b>Xeo{~6%g59mzo^JUFYl8C?Sz)Zia%!h97RbX?;VB zCi$DwZc+juybKeDyXpINrtOi)cFxuWiTM2~1q{mi%7Nlt=H~SgsxC{x-JoB2t`q0L zT2GH&+c*9H@$&!I?nipz?`4=KBiZ_X=7)`%(eT+pkmclHQE_IEh62SwD&i}UDt&Ff zmq7<2u0}HLZ_$KiI95{9&__F3G!ohbC=(x8CxsO3P+NHaN^`9f6|lD&>5kBt^*>si z5mI#uS*#1ep6NE}eZ#v}#+P(I5j^tlyuEwy$zWCzCau}for^XfEYFr#U=P~7>o(!h z-hju`_7fOIsc2|!B;jpS=mxy*!I?Ix32KEqv=$rGJLVHu#_hXq>bJK4WbZUM{K@jc ztGuao6a7Qg6_Vm7{H~0DzO2;&B(3@18QI0#u}9w14s1Rkl8W2n@|z_fXSF1QUq^Wv zCw1y*4?R)g9K7DeSg}J3G9K!tSTXv%ET5m;wB_5Q_KfcQ7h4*_^lE>}93fvkmLhl% zBY2Q-@v8ipkRsCTun7i(fk~0t133zVhc;qQv)G2)WG@ud4Mc|867YFt`IW3{rsvu5 zcz+StQXO=N^!rScUl(GqrTUTp6{K*B0S;laTA9R1Y=o1YJWJO4C9xs_W&xyHZ7gw`hsUBHkNanL$v*&=J+BhJX{RQ5h?WCW>=DtmLh&pam9v0W_ zy%lp2c(FgTTicC`8O(r#NqDjq^{^c#%XVMDmlPbfL$yi_2TJ*T7~DZElO+sd1t{Ff zY^#yv@gh18r~#t76Hr}ibNUTX^+oU;bymWHW4``W8k^mHHdIsjEosyHvKGxUH$GTQ z=cxO9cYx>dDFfHI#8Be3p|6sFCNg`S=h|<{RuyV3Wl<@q_cs>pMu0@tVEy0M3H1l- zT;vZ8cu(bOnPTJP|9ER>aEA}2#M~5mb}n>VS=s#Wn%F3FV1(M|43A0{w1U8i<#%mA zk>jsfS;d2t_S*g@J=4=EW1cB5rZ%Q@4IElijh0%ovQC41fOWj<7Y(_T#EW2*yQexC5KB1|1*&W?zS+V$M#&A2_Rm_8Owds`~aLAB+X z&b<$oO=VGBJC&u^?p)9ht9Z^lPN?}57Z}ae(me0G)cTWJru^q8`c^3~pPA8h$3E6S ztx zhKlR-<`tahwCe0m8vJ1*GyI1({e@$dhlsmtZHmm|+z``)R{S2=e{u+tB zYa>6PoL9;9u6rm6#@9s2(SOm60GJ(AXCA9fIxkYr%0`)2p`y{WfMN%J?mF4wL%q7uRkX4RXo zinCIAT@+=7&%tx>5talWrlu6?m!X_!r} z;rGKBMsrI!K%S?X#9U*1^*o+id8Ej+`n7IG_RQdN)%66~%9oY1?GNI)-4u;?pTQu6 z1P1QAyAfF3bl}e}dUy+I6S{z(#JA}{$3%7`%hU`hJ0{nje9);C_UYm*RGI*D+aS5^9za1P{Q18mHZ)x=qXeAeWCSgBL;A0?&@*h4In$@tRky2EdbV{rbr-6m6CA4iQZ#v(RR=kteTi{j+NzI9}7 znOT%h26X(kp4!kA`jtgbYZho^@h#>V54Lf)RMpB(1^ zK*Fi{%&S-ikXpe8Bpy!4^+r(Br77}ZkEEq1pkT+YNTjLbJ!l$P=G;#xiHNpuAMo%@ zNZC1RK@ja1o1Be?R{=a30>lT5IfQPOa;n9zCJInb1p|rUm6{1mK0c$YVRg%Q|7fB7I8cm zMao;X`(mdi#wTj5G+(@WHLs2heMO3&5BxK$j{B8-@6!!08@8_HBC8kIdwgQdFMUEb z)gr6SmG18D z?{w06(XQ1t?*#nNmzRt{A~qY>$23guQ%shD8KqteBN)<}@Ps={lI4}?+>v;B6;R9-Slrwmjr#R*lO+}(cL-*sC zlPDJQhoePLvsId6@$rbgT=JoC8=wy$30ygbWk@4g=KLvpS!pWCd2n!bb!9Q?L9V*B z=j(;T@ffv@ba6YCJy~tzpR<`mh~IUYb$#csCjgW$MRzrZ2T*ZA^CO8m#JDeChEJ8h zD;2msL2Ur+)i~Lv$z$Y7*AcGDywTwgv*VN)y?{0z{U=+MV?-7w>v!`WA+7n*IN7#D zJ_Em&8l}L%;9$TSNyl-jBo79}g1Y5mtIzL7)B3$hHpE^y;|X6gYhWi(!4ok^z{K-u zUaBA+Q)^DULmUBPrgTPrtqk!4gBG_XQwpCL@SXvj{luoEEBNC`sx+c^9-s5XV>C^c zPNG98IDPJ-02YO2K)p5TvH46b_Vap_5{?E8N=NY z8#WiXCApeC5XXvd`=ULZ=CR=lhZvGeq-``qk-m2pmABcKuahLGEYAo5};5Jcf2@nQ6wFuX$EzrtzwT+8`^`h)OjC9TC=108;w1R%$s&{`Ma?c{HoSzu!xj0OWHVfYZl+p??J}Drl^}No){hee7hDt z-&xj!odBBAZlWw+-vB8SJ_5uqg9h}xv$QvptUI9As^jvOXp~d>vr5zIgI!uu@`qY& z)bT$}E!B|TXJv=e6)*1Ru_XWb{{b?2`Qtxq?YG`0!)x^P_%fjTdh6_4DUc5CHXZ2Vp(c+Z|28KBnpWD z8_bez-Oo^X^E;%*%G)8ndOiZW;p|ersmoVTTLQ>a z_Er##y`{q3{eYTA8Q|O5w{nzm6)QqeU9=c2r){$dHia)l0#PfsSL=>J$S+M+VPRpM z7n25IWox-5D|o>t|HdMtgDGTD%>QuyG;u6%n7-UmXO1_o?7qcs0IkvK9211m-m}Pm zGU!t=&n|I44!eaQhLA=9q<=|uR?%G^@`e-Q>aR$jetBO9ApknbqJ^iCFWxU7SROk+ z1*Z*wXmF^#bKu4eb~-PWdEK;|(dZ+(&y&Hkxks{Tav=bRAM_V_QHg*}wazszkEXl4 z8g6VtkRO?n{QpmgP-zEk(i39L+27j@#5reiG={10W@K+&ocOB7Bml*GJ({>ETONIQ93YNvOTH*X(7v>h-%JIn zDn*x*fX|GlDsj%QneqK>6&9T$`C??7oxr)_Khzbv$#3k9P$dwdI8e@J_tPqlxcJ10 zOL@mM+5w}ocS0A}Q>3+3oe=GQEj1A5;Jy*j7HV@r! zL*5U-rJ+=tJ>PN)`0N%&oeu2xM$@&yy9atWY!U=?+hdo|YM4*l)hq)@vb<^!3_!gd ze(o+(v>LBykY@eyvhtEs%YxwSREB(da(aEQ_8AVG?xzcu@MfY44c$d+hb4r$In%c}Xt97sNOAp}V25Mmb<} zuA#K!mzv!wskm^_O@`1ru9S;i>LyInWd-?+eqtVD(&ypL!IK`TsF&|5FjlP~}yU%|f0)c!1d+f$&J6;6r}TB&-N^^`n;Q zlKO;DP*#{rt`RBV8>2Z1FI^!CpF5bhZujPetZK31b_NbNznpe4IvIV1)D(M2@6A0% z@|Yo6&5%fz^IV^f0Oa`BF228zfAcLU2u%rGeJ|kayY&obmzsD-<&&>^=OS?nVoeC@ zJ<2CIlG5xa6vKNI`LNO(`oM@FlcSshE1KQE;>G#OT}avCBAnl^D%v6ehoP^?LYQL( ztF0U>edrNe_@(8<5?nXE^_sdjvrl_$QW=M0Vn;OgNPq0e-BvD;^1O}5sfZ^7jp*ql z(QM96<`n0WpO>Zs*Cs}N;A8B>S9xLhoz;UE8832vhitG7TqTzm*-4NTa|HAj5_OSk z*EAR-E+bn5Zn}N@l^{5LSQHKs&|;A#^53M`dXAf)m=s`uc(Z-rQxMIVDm2a_yI%1H z^=Ly^m4<&kqi^S<0L_b!*zyM%1i5l&$Sq$8hslLOESUNw^vT0>k|06+A^18u&dxgv z@kJ*V9CI@k5pxqHmpJSUk(?|^&e%@Z#T6zI#U@inO{^b9{Y|7wV0M5$alj?-c8Ca8 zL+nF^9xGi%>4e?@-*ggLBMCj@{o{7Kd}7Q^Qm}vdfso|3%69>wQ=@MSWuMh$dH2L4 zMji=>{xQCPpB*}{uoKLz^j5*1;IvE5s-W^TA|xw9@dNh&fh&p7SRifi_VCMZH6@OQ z;DWc8jy+KJgyW6dp+amuoM!BM4+JwD8EE^m2n;=S!p}Rer z6RZRGXg!?d-=G#KCZ0pWJ12Z06nDE4E&hQR?rNW)(L3DU#KVpdQ&O5ds;8+(z>yo zf3U<^ta3lXWfdfTW{>GdQv8~mYoSGDB81HNMxwR`G3u(71D~qyzJd4}wOAus2W+MU zbfxE*6JJc$7Nrd`(k$cXF>e#c&B7eS!3XM?b%UW7Q6ZwX38p-57kv#Y)_1C4b8&Nu z+Sau4hWXd_Mw}0L{nWWbW%?gvsle5>frhBgt%nQmdIIa&H?#;ZizzMU3TRJo-g>z{ z|32L5A2ZyPT$>{I_5aB4Ig{~OHYo_mvG#9cey;_+)zJyN0qUT_oI_66`;~j!J^y&J z?W}IxHa0efKtpcz5a!zaqmTY{kNr$;Qmm%z&ZOn*wa(%i7h)2y%QI#5Rcjx}^8U^y zcG5l>pw#a!727_VYbRjiWxy{fI((gFc zb^uzTEsMH9ATJWwmc7h_pJ>|$i~!W0%hr8hsXOI!ob_ymSe)htyFCg)VB9LmU?mwT zT+544<#yZqTVj~b!--a2T-;4if&V4(1NK<$XNL=oX5OIpV(_xwLLTA(NY$quPoJ&g z_MR@Y&o7fvmw>x~^|dCg@17rO0$R@^-bIH>aa?yE)KpIUy71?3FUQzv2cBY1H`?B- z)`wnQo&iG^Mu1%8+-4Ri$UWS5r(GF%(+d}3w4V5f2ng}Ddzux^SnW=oE0DXW(*T4v ze72>$>^g8MUT!R2|EHmJBsq@FMU&%P>pP{ul)mA|Dbi^db}FOWLw-a7>o)H#Os9+{ zX(lKYAk9~k8=$6odDb(TzYws zEcW#EJDJ9!oqrtx(Cy$eZ{yz|F7^onN)rRw z_z|TjsP9!b9=|i8ny&--tQFe;w8C|~)yC-ikGg8rnv{&(n%2u3C52PcCKNIjtNl{_ zP_PVG*&G#j%3J~K`}m&C^wOM$6^Uw0k{GKZk!rRj03=)f`*+k|Le?{Eki)SJb_svq z189D6Ec1?Xt}OgTdcIG_c&_Ho52mp4atZm9@fM(sX7MuvPm{9CtkeJ7NDqgN_w{p< zm)afaq)e*7e0nqFMd!ucj7WxHL(Z5+X}v`&uN%Xro;Jwf__*WviJ$ zC<4!(1MPA%IWn3sE1*f@gcD1?$_mi3%=KVkXL%xbit_==y}79=*0T?>eX0~ za;%%o9|c6QBqixRd$!KgMau8Tq`1UH`OI96 zw>D|PAO+dQuIKsRHuAr+kJSfgev`wrtCKv=0RAc%$d?}V^6C{;b7Gr;gk;RH2pKxj zt6tFTJXLyfn379w_qbnmB~T=DPXRGge!ma=p<9-7HC80*1+@GIDgJ&IW6(*t zlvY+t#AD5@mIRX&w$bP7UzWWecJ2rzRNVErCtLC$LwL+UIRd1lto!oGdU;0Tm%FvU z6(x^2dx{iBC;2|Lr5%@NGUS`w(fOElnsppxr!f#>Pi(L}lNjYG%-BmpJ=AyvmCEEn z89NdJZ~v8&_$2m9sH&{T-Y1m0^d#ecay8kkS+qk<%ij7!y8@G#pkA`d+_afU_kl1K zH|ij^ct`_tgED)AAKj(_@8%HW(08j<#Pb-e4GaX^ZF=_|hC54gqZ3LD&|^Hh&#fs) z=P%gh2C(w`>^+04z~p{yVHw+J`X@@qP$_c4nYQo0>?CP!y&Bi zY8fVKtrQLmJWA16Kk10bh-s(xRyI7!O5_v z_3Eb5hUi$M!9-b8*Uki*#LCLLk%IgJjPU#{bo(d^9>;@egZ#KR4nl*`dj~v0XdsE< zDwsm5;wEP{SWxIK<<4LlrLBsPuWwdN8I@$!JG5>7?wBZ)4KYKRlDK>t4xnryZ5rZd z4rCbYRw%q{aRS#mq41Y%^! z)lrKJ28SzE%L3cOlleg(HitfB0TC&?=S4oS-Kln8135_Wd+m?bY7qw!lJG_gnv?bN zvSFU{%I~}AM=1C`8~U6p z{JzM`ToOq*F(l6B0w{rs2 zzSR#QksGgdEZ&7#LuFz+HAj^j@p1z{3oT(INOKvcOWVVA4;5hQkMwEweQDm7|5d7cBekje!yOigN`l0gPn^rW_OiSbC z!F~aoR&iU9BqlI7V$kwZ1qV$d(BGA7Xi4J_N#6_U08n$SEq%~feS8Q-9^sZZV7RHh zf2L?}qilhUkbfB$p6?~IIX?!iW@cvA69ikAS%p8LyqnYC$VI$(o5S4)b>}tQb)nwC z1)UTJ)&KzM>cY2^h&$K|5u&1|zV%Ut7*Dd4*b%bGv#qL;M(R1FemW!=EYh!HGzY%@ zKGU|JU>Pa^XQ{a1#8*iF$Any$D|&6EktF_t#AW#xrDMp|3v>|Z-qT1br_?X_QeNB7 zn>u$M=Abc8es}P)vH=Re_-8W=Chx4f!>I?_*_^CG?awkHZ&(q1ip#Z_eNAHOECFve zSet0t$>-yCp219QQ5`7z-VeO&*6w5GOF-Nh3vwn)3Zb(zLcO|s`Rdyh)ab6d*IpVOUou@#s)8^UbkRZA!r}1BZ4n4bGiyye6Dp|*k44o$Rp1sFO3hg z&Rf0JZ6*h29B;24&NuJnve-zVM2+TBk@LgQN2A7cX0ABRiGyEm?(lM7q*;!?%fAxR zSy#L^eOrUF|5f zBoG-6d$y6%^3r(a@pUVBb&xdVm;8$sdMu{J)bE&Pr}7)@pk9H*B==!VGuXi_DmZZa z@7VKzj@cY7h2LGv2pu$3OZ0c6d-7*Ry6}|F6#UX*!t-96+~yO#g6bO~YPRp!lhg+} zw9T1N*pWHQw~L{Ke$-q7WpE%2x^%rnY_6?drW; z73}w@TZDkx1TTx(E<~eesHJzTO)bg3c{@&aGrzq0@G|pm7yIozv;XBwLuW+*zborKn`Y4a7m$MFXC!*s|_DoMQj-Q&=uGg|%d zv3V_zCv8QayqZhLFdXk~au+eFiPB`6>`DI>&ZKbctMmi~7LMn4&z#S|(n5Y7uuYWw zwJRkm?$zc$kk82c8giWjB&GnXc)3U=I(~H{6{)ZR$V<^guZ;= zwQZdml^vYlVeVoiQ$sb2fG9bQ9v;=kb%z`$c?%b#Cm8;{kAK2n2OUXz*Ad*JW(AY3 zD>R#{scktjIZ%!KPD24oZg)rbe(fUR-)kkY4ucP6!#7e7y2SgfIdASR?vA_o^#1U6 zcG@ti=B`X*TEgGeDts_g@Z*>6ubGb_zArGru6Iz~N>glGLAb#1VyP+T<&45Nk%MPn zc5Lpt+!ZQQe0KmKoQbgx2q_~`wX_p_IZ^7X3bBW|TVqu#z|j1uBEZP-p#A1kaw@8j?H zxl7sEFz@Ic*0PyYmLEU9^OJR5p^rEcsLXQ8&5XQx%EfHMa{BZF7TsmZna<%=7roR* z?|Et_ChTv<9(#Tyydqx{BDQWAeJ-tPwJ(WHwGbvg>VpA4C3-TK+^T>7_E3IZxU@km zprl64Lu`Fk_*igVPWbp8cdTQn@THkU7W;aL>^Pky&r?k=$bGHzFMB>YQ0aA;zU4%! zS5ov+OkhT|cuZh@w4FZwOLT24ra2nfQQF=v4R51vYm+|G*Rt&M(dXT07C61dOj^C< z^wJGTEBqdP5ZhWGjbQU)LWdt8k2s+{`_Auo-nX<7TK_4$BC+l!yplL?p?*lDScl&a z(eFbc@OgHif^5K+DCa`>%YD=VQY!?c;OYP zbxL7v$#r>sd}Ophw3>cjUS3>2tJigAV2v1U`U< zZT+;OxYK2rz=?bE(o23U;w9_61Rc9fog#ZxY0rRp-6BP{?XUeCuHUFD6Co1kbf(s< z=rQcfe_3QN?nCY*J#gtCJhQ*^lMyOFk-evmXyn?w?=n550RJ6r5Xf%8yUi6H7#D32 zl=eVtypebPdfqK&sEPwH<9QNhSN7*kbBFZqXo`Wb1#VQGGVfjdc793 zBuF&1#Oi9DC##WOYGHdCDS@wse`RUbiHXZL<9q(w{QJko`_~=6u#Dg9U^uso3H-S8 z_;k$Z^ocEv6h(jXPJeRx&8Q%2eXW6Wjkl8-On1*lsJyfv^}PUj#Iz8ZCDYk~Upt~R zP3KbU_#f-X*3*@DKd|Nda=aTV>)gHdqq*$F)PZAR-<%8{@H8qYrVHz^nmgVT^QzuD zX+)RZmFl=n(yAIwb1y>tbv^Sg<$+;#y@J+WWd`BHIGJ0nP%2nPI-i#=fwUMA{~I)9 zOsB#)e;(tZen*A;mC(CyJx0vA@wYw9hFYpzAqJmggw4WkjC$fav|Z_RfIr?QMVhs*W`3s9WXr_Iw`T1Yo@z52S^ zv}`El^-Br-_A$ekBWlx;7`_Kg(2CD8boGJyQZ}L+!&~cb#hPs;Cx#!n2u@O^-H`be z5r6a5!p+RcN7d#3F+Qp+Nl!J?!)$i6?o@YIp`0WXp|+vi!>^?ZOih42#N6{kqEhA+ zXPsG!Rs7`px-9SVuQKM(e`cAq)f27b2XMhrlm84K1|Z|baKWIgU8LmG3$#}DJ~IAs zfQLzYFkE>G5j-4|I?zS_XL7N&UFo|ycZ;c+_4~Ym$eC1g(<+LlG+|kLshOFq$MNiE z)>c2$&VJmYBcCnOf6e$arC)Z^yS${T0dOp|_of>*rxpwtZB9WdKX;L4mYs4cFB)^s z9ANcJxuCFEGyhX5dmH6&o}5=3#5d4IMaRBB!;G$ZRd?KKW`>=KVE6?p&na|p?VR&^ zcqz;-^SiR?ap<#KB4M$dBE0IVUrt3jJk%k1K{@sG2`P8ZEgLMPu1Z3u3vU?H2ACKoskH@wvnCjmU?@#6EPv!KvA)LT*`kp!e zmY25H9WLA*#0?I~sCL)$8~=4a(E=YdEFCbV8_F4U-q5ko-b+0+`QyuI=?UKw!)&&X z^2z_vR~8MA#QiYtw0s)+(gT_B-sWdr0J){)8pwR_;H;sAqlWg>(k<-3BBgXC>Z_pz z5?}f({dncm)1s$@6Vvk1rIkT1p!@Y+-<>YQ^Q_Bko!PF)b9K)&`bSQIgZ> zH#d%M&M9|ootIW*RkXmpO1|$i{OEeZ+wogpPS5JW)yK>S8zI6Hi~H(-n)IhFXrG(u z>0ACa@rb*MITr<%#O%1O6970upUg{xDm(Tsh_Yz3HBM&G#qKW14GClHrfaksZSe`O&y?cfsbpX%DdCDPx`jV1X6-1wfqpIbMV75+C}eFZ1@Dkr^Ob=$43K{_2=Hu^Vr z^Hom#AA8>ch}G9Wejj^pk}^t3*%BptBzuIA8IP5fEnBv%gpg!pkC2tDN=T6;DV3%s zMcF+6a~__)UT@#`JKo0ozQ6zB^W1yxIQO&8XPkTPy%cKTw~VS8?5(5H0qd<)282V{ zTy5qp<5~$RyPr!Zgs%EBrLjjwJy< zh{QMH@q;LvAN(FbYEk@13=#y^GqCGP$N*S(Lt??NFLuju?C&8&3~aFk{g59yf<3+j zIS97rg1yQh+CK<>d9dsBVBHS8#cpLCZjS=Lt>71KiNfx^3gRqd@C&yfc;w*M5|0zf zMLoyc3)Y|GZ26+S<{B|ZTGKY=>IAp#eIRDx^*Izm=LGeQSKZ^Gk*5rnCP=Lky( z>j|3)*I~yBVo1xtB8jvL{AOT(^GGkF@DO!il~IT$h+Xjz4e*OXv_a&GhiHLc6yO6X zSl0o+qJ#uNYbOTc#wvcRFFzRlkK5S3v2Eu+Z6ia(zj2)Ms&xc`ulcH9S%;rbmG}s= zMFfFUKgdA~6aXjzPywKZ*(d;70CWK8L5#uxfDr%_sLdkG1c-r}vxODf6}RL^d!rFY zH%n(%2fM?_0UtMav?KpPJ0~k=FE{>u&aRGbD;sh96kIL5?3`?HRe5JuG-BX@ZA;e0 z#lgTZX2mG2ei4+Z$~*epe^Cm-1xEW*;yiL06B1k zyoHk`+CkA1AP10i`|S)z7iTB1Q5{^sVf9h_Eu5_2g}xqvW1+f*lZ6d-hm*U7ofE|6 zx7AhrKY(_3hr@Vs7H+G^aI&_u@o>c+fGD7?Ej%3DR}R#-aPU}7`0CU3+|aHEEP*tw zRyO~3oPveBg$~*hZRd%$`X}-f>?~}YoZZ~*EZzS3Kpce%=))d1fFccNCwQHIwg>u!$hx_q9S=MB;P&aDtylE!>n^A^7EV6DG4i(^t5o1yyIp)-?QCq_|9O`J z+Rf6{&gI+ZLAvzOu5RDlsR5;gs{lz_d02j-ksR=FaRDaKP1(W9!p-rw?ci{IJ2$(-4*zV2 za7X}ULj&vj6$d2`yH%IfwQ#jTyJI_tm-A}It!ZUNV9=JYY+B~qa^Jvh)AeyduWUI0 z4uuO{SzTM8r>icxe9r*rt);WoD&L@s_I5|q!6n?CzjA*0RCv(x8UinX=q>jsz2z>Y zx7??&HVM01-`UP;wRJ;eJ=~oSSXwxsq2&bT+}+*TX=Q;GySy#h@`#+X_woub5zCA{ z>;%k}gR{+VmKCnJIy)e1maEQNJ_G0yP)BUvUTFflP3(`Hvnz0m z2i$!C+hASZ!P#xKpOfI|{zB}3TV1BtZPga60n~IsJFPVixgbzBu(_2bmTS7eJ+ADz2?Z1KaJkY8`tncCR&Hyc0BdZmTPBj};nrR_ykbRa~pMR=ys- zvR~2B#oY&cF628fH6V5YPTtB28{1%8I)H|n@!u-8W9K&Bk6QnT=J_E^>1NUUPXX)@}g~XK|;%X8(ao5JUr&Ty6^|w6E*S=J)IMq1jddp2Z1zAGd$pjy31l6CLb;h_JX~ z6=B&9xKj>JBX#r!rRUfGy*LhmKR?QE{qI-8mtIG3+-wRcCFNw z$y~){H)ynQe%t{K^-~8(5DoPi*NcI_M4(>CIygYpfRTX*3`Bu(13S?m-#`O%g4KLC zEKOhIIC&3Ou+JTazrduf_);yv{pD^6dJfEP0EJkGh%9UD%GLw8tx78{AFeF>@fFKu z>0kjH#QIT17&yQqmb(oM<#9-Wjq(-_4r?}nu*uFE?e;bOSP4+U9u1sb+XpPbSL5Pw z7-%5COV|0xiapVCcC*8(Hau3($<7i=7#zAnCN`9DLa-gk2B-XBH%!gkRzwfkh_iyr z;)N@43n0|O3Ut)v%R%mAQ#!bU$T>K}uHgdXWG72oR}h9A17d%adn@)tGp$06`);A# zCYtXNlDcEY`s+nTqDU@Cn+4Jikcs1SASiqyx{UxB@QA4Jh)BSiECCT+P$l>Y)`LGq z@TUg;B*Pyx{K4++f;S1(zlRfCri;p$pyx+9HD}kr5(zBqStY z4?u;L)&OoJ0qvtms32A~L>v&48bS_$Rt-3bh>!zb0kmjL08llC$5Ro&@d_CfvU6>~ z%@2bHH+~>~XAn*LK((~O?UeJda{!%+7*10Ge+UAvN<~GALI|)TM+itj`}o`l6(M#| z2CR_~p%4@}(h!BH{x&v%>$)CRcFz2YRxthqmt2WEKqg~n1LC`{8O)RU3^r5IS+HXD4-aT99hwkm z7ArgewUHS%OJ_)l5P)W>sAz+;X@k#`5#!VCVWkUhW8FxCpn#^)2Cv5|QSdJ8;j&oe zB7y6)9@t->WgUyc?%o9}w83RqyxWN(-k`1JjTZ1!3JUB={>z)RvBxd95bUwMEeepZ zkqX<|(d8Y9kX$@$rwR_EBqj#*02;tAD?T8Hm5K_V3`Ipo16aaHw;jcXfV04Ed_rOr zwnyUOZQO|M0Bx`{Q-LLDkA#XCP)bTi3aYd#>mz}ZyTOAJ9qOM1;2#M z#1v%UWJWqZ6d^bd9zsG+LPp0+h}}dAnt<$~N3bRU%V6v}J?NK^FnWZ7nBX^z$%#o= zSEwQ<13X_@2TDgmO-u?*4Il&l07WAqCRko2BPPPGkdWXJ5CgjeP=yqdU?oul48do;~W7?_SbP15cRbR0x^#S!&Z%fgQCO~Xg-8i}&M}VyUYz}ig z0aCikY(;5lC{dEJz$XMLmG>*?;AYyAK*1Qh7Ft8=r>r2W>wV_Ezn3?|z#PWLx^~ck zjFd(NPkBGbMUq0}?(^IAv>3(~pEW(}RjM>$bU62{i7AgbREwSfC7bR}lXzI`4WCRQ z=_XRrylJb43rnrlH#MxqNQbOMGZrO!C5F`YO!n*Atke-h2iUBXv z{w;KZ6!;|rWZ@Pv+6=bo;R>5k$OT^VaEn$!ikzGrJlk}teC}vMBs#}o`nHJUyt?+O z4=mGC(K)SE4mFd*Pejyni;Go~Gc#Fx1SxnD_dD1nxp%esZ^MYI_j|tCNnx3E%f2Qg zhx>tpDCX#k&P4i(mZdrW?8`2swa!n*25XKC_UP&9F(8euql2gvbXyhgo&Nsuv*I3a zYrCvMba#Y--ysJg_5KS+Wr7*EE*S6%vc%S6w$hQF*vHAsL~f80rm)#!abbZsuN0Lq zL4+9arq~O+^ct4w-xi^a-DjC?_dwq!lH!GA-dN(r^EyT9n%vPL3Y&wC`Rgu!xp#=` z;EQc~lYBK-a};AP8I;|-cHx2``vk2q9>@BtTal9}rkL~TcU&1`BvgfigSa`nc;$Ay z2sqiNz!uYv7ba)n``Etbfz{?|aJfU`p6lB;(FHun6HdEjeOir67nIYtULEzHpL+Bx z=lvJFR_B(*DQ^plr`9z_A2b=r>MMBj-bV_frjrv6Y2LK1Ho5d7Feft4G~x4-N_UQa z3Atg)`OZC?@n^Fxr`|o3+h^Ojbdc3XZ-*YgdcXdJQx4~graZPoW%uk|6MXY@?1I&} zGG@mEF}{cVCv|n65Rlxsabsbpu<*svp3LK2R#n?YwT)a8)N;AWTpKnfCnt;QAY?OE|_Or3_?AW~~46v3yUW2rpBNNw?;y)0$fpxLo5@C0-a#u*tb9G#6wA z76NEL+KDlb7F? zpO>ewW!pB(C(Ztzu|(UqIdxME3v7^M81{{Pc2qg^E}>5Ee#N? zYS`IrztP=oA)4{waYu5Rs#Tt>2s4F2l@;lZ9Xk@z(q`LvDlSiC@JtM#`4Pl#_GM~3 zo4EVyx-(}sz8ZVfDEf4EX>Te;=z?GQ$vyTyU5j#LhDkXmF`4IY#pCZ*iPuD4YhbAWd*`R;9qUM~Pp_-F@}TC(-bc;;^P#2{gQW(Qcwu2-$ouDV#^`5a3@;>5 zEp1PidIL>guXnn7RWpNI(r4f1#8xZe?7~8l^XJbCrm2PWk_I2y(}G!=_nv!GkeHZw z)F4~ybKuhKD4zy<`PSFz&P9?^^Y5#r=cYc)XJ%!wpHew*axVTzt=n-s<8{Hq2kB?p z!~@cMddLYE>VqZA-?c7g1txq(&690P+^?ml7Z$rgOfFmNqQj$0Ukb`^K7SRiDZO|~ zI8Ch|^iYuk&8&S+PUU49N8d3{3+(CTJLoh-+J2HG^et&a#5`5@#o+li$2-q#Y-~7p z?xY8_38sy8e6ZIEaHa09dVQ~K0}<86$oKExZ%$L2!Wf@l2#O&^5aFFW3toSjYvemr zdvWKj`t`*3ZA94p+Fwe&i`*Yd7NJShx)|~ziEfY54w4qvqv%)cF9IgYb|jN2#ch;z zbroJ%TzvB2lE)F7gQIS4vb|>|v$pf|vuW$-gm5aw$?&H>Bs@GDL1Rcx8{n9=b^IyM z-j)Smd-8O)Z=oYqQB^%UKjmm;ZT-N=pWi-rVR-jYC@Fp9kxx%g3t2kV3kRBLAf%+E zd$hH+lg{gGUszahSW4owCJZ%9tvC~RwxlSGn8Q2sh?KbMakJZU6RuIQzT@GP8_Y#m z7(YC$!`vH~9o~4s<*A&WzWzPlFgaOP3GdtdySu6R-IUK9LG89@o}r|fHni#8yO|u} z=I7sMWW-WcU9D|u>f{y}{9wD}x))2?@)4VPc`1O6edy-uN@tv0N5H=gfk&G@Jg=Gx zKLDE0W#uWm&W5j%lRncdD9*@5Df*pS+ici}_j{0mo2p~Z!c)O$Lv98#;|5nkrFb^N z?kY_-DL-#D`4=_Y*+%R<*_YN<5xMW$l*ys&M7 zb`P3;8_u1B@3!o`aYGJ`K5s%(Q9feC($>~CGb)XV0=A>HxVTvC$+35QscB0DlyV69 zI{wn=sHn6;E$$m2$11KFmieNu`})l7o#ngh!)~dkV%V0xJV+oFdsd=Tbiw1DJ_93T zA4{zDgB!^_{w$kYBx&CbR#2A|7tgiY*F5V?

      c$i5(by@8|fASei}o)Y*kv1KxVK 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 Z|5%EqMyzcA-oy@kH3A>(mi+HV{vW{{d; Date: Wed, 8 Jan 2020 18:01:13 +0800 Subject: [PATCH 61/74] Add 2020-01-08 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c2b26f3..a9a3f40 100755 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ not support currently **M2211,M2212,M2213,M2234,M2245**. #### To flash hex to Swift Pro: * Download the [hex](hex/) -* Download and extract [XLoader](https://github-production-release-asset-2e65be.s3.amazonaws.com/100216711/c333948a-8d18-11e8-8116-f20b1880562e?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190920%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190920T024059Z&X-Amz-Expires=300&X-Amz-Signature=f8dffc50f2fbaeb6d157e114d0775d1969158ab187c2c980bab2c325d64e7c97&X-Amz-SignedHeaders=host&actor_id=39727447&response-content-disposition=attachment%3B%20filename%3DxLoader_V1_339.zip&response-content-type=application%2Foctet-stream). +* Download and extract [XLoader](https://raw.githubusercontent.com/uArm-Developer/SwiftProForArduino/Version_V4.0/imagaes/XLoader.zip). * Open XLoader and select your uArm's COM port from the drop down menu on the lower left. * Select the appropriate device from the dropdown list titled "Device". * Check that Xloader set the correct baud rate for the device: 115200 for Mega (ATMEGA2560). From f2bb1ad5401b9cef62a055e6a96a117293273073 Mon Sep 17 00:00:00 2001 From: HuttonGe Date: Mon, 23 Mar 2020 16:12:47 +0800 Subject: [PATCH 62/74] Update 2020-03-23 --- README.md | 18 +- hex/uArmPro_V4.5.0_release_20190924.hex | 3933 ----------------------- src/uarm_common.h | 2 +- src/uarm_peripheral.c | 93 +- src/uarm_peripheral.h | 15 + src/uarm_swift.c | 2 + src/uarm_swift.h | 2 +- 7 files changed, 113 insertions(+), 3952 deletions(-) delete mode 100755 hex/uArmPro_V4.5.0_release_20190924.hex diff --git a/README.md b/README.md index a9a3f40..22f4ed3 100755 --- a/README.md +++ b/README.md @@ -1,18 +1,10 @@ -# Swift Pro Firmware V4.5.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.5.1 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- -## Update Summary for v4.5.0 - -* Fix beep bug -* Fix effector motor control bug -* Add multi motor control interface -* Fix motor angle read bug -* Fix G2204 bug -* Fix M2201 update position bug -* Add M2220/M2221 interface -* Add S1000 start/stop motion interface -* Add S1100 clear current motion interface -* Add uart3 communication interface +## Update Summary for v4.5.1 + +* Compatible with version 3.0 air pump control + ## Caution #### The current firmware is not perfect and will be updated periodically diff --git a/hex/uArmPro_V4.5.0_release_20190924.hex b/hex/uArmPro_V4.5.0_release_20190924.hex deleted file mode 100755 index 0c6e053..0000000 --- a/hex/uArmPro_V4.5.0_release_20190924.hex +++ /dev/null @@ -1,3933 +0,0 @@ -:1000000065C5000084C5000082C5000080C50000F1 -:100010007EC500007CC500007AC5000078C50000E0 -:1000200076C500000C942C5A72C500000C946A48E6 -:100030006EC500006CC500006AC500000C94F75442 -:1000400066C500000C94412A62C5000060C500002E -:100050005EC500005CC500005AC500000C94CC29A8 -:1000600056C500000C94A5300C94953150C5000085 -:100070004EC500004CC500004AC5000048C5000040 -:1000800046C5000044C5000042C500000C94E15480 -:100090000C943D300C9467313AC5000038C500001F -:1000A00036C5000034C5000032C5000030C5000070 -:1000B0002EC500000C94A6542AC5000028C50000D7 -:1000C00026C5000024C500000C9471540C94D52F53 -:1000D0000C9439311CC500000C946D2F0C940B311D -:1000E00016C500006E14D41ED41E7C149114A614E0 -:1000F000BB14D41EC414D41ED714D41EE614F0149A -:100100005015D41ED41ED41E071521153B15A31D52 -:10011000B31DE21DB31DE61DFD1DEC1DF61D211EC8 -:10012000281E331E3E1E5D1E5F1E621E641E1426A8 -:100130002D2646265F2678269B26B426A32DA92D9C -:10014000AC2DAF2DB32DBB2DC32D302E302E302E28 -:10015000CB2DCE2DD72DE02D302E302E302E302E23 -:10016000302E302EE82DF22DFE2D082E0B2E142EC3 -:100170001D2E232EE953EC53DB53DF53E553235459 -:10018000F053F453FA53FE53025408540C541054D1 -:10019000235416541A541E54084AD73B3BCE016EC2 -:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE -:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD -:1001C000000000803F072C7AA5BA6CC590DA3B93FB -:1001D00065FC8BBC53F810FD3C5692834DBD879D4A -:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 -:1001F000CDB2D44EB93836A9020C50B991868808D0 -:100200003CA6AAAA2ABE000000803F0000407A1047 -:10021000F35A00A0724E18090010A5D4E80000E8B7 -:100220007648170000E40B54020000CA9A3B000015 -:1002300000E1F505000080969800000040420F00A4 -:100240000000A08601000000102700000000E80365 -:10025000000000006400000000000A000000000030 -:100260000100000000002C76D888DC674F0823DFEF -:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 -:10028000997696E8E6C28426EB898C9B62ED407CE9 -:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 -:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA -:1002B000FEF520E6B500D0ED902E030094357705CD -:1002C0000080841E080000204E0A000000C80C3385 -:1002D0003333330F986E12831141EF8D2114893B14 -:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 -:1002F000901DA4BBE424203284725E228100C9F1E7 -:1003000024ECA1E53D276364696E6F7073757858BE -:100310005B00000020002300260029002C002F0095 -:100320003200000100000301060109010D0A003D31 -:1003300000244E005D0D0A005B302E396A2E3230EB -:100340003136303732363A005D0D0A005B544C4F7F -:100350003A005D0D0A002C005B4739323A005D0D12 -:100360000A002C003A003330003238005B47005D51 -:100370000D0A00205300204600205400204D380074 -:10038000204D3900204D3500204D3400204D3300E4 -:10039000204D3200204D3100204D300020473934AF -:1003A00000204739330020473931002047393000D9 -:1003B00020473230002047323100204731390020B9 -:1003C0004731380020473137002047004733382E67 -:1003D000004738300047330047320047310047308C -:1003E000005B00290D0A00206D617820747261762F -:1003F000656C2C206D6D0020616363656C2C206D35 -:100400006D2F7365635E3200206D617820726174B8 -:10041000652C206D6D2F6D696E002C2073746570D6 -:100420002F6D6D007A00790078002028003D0024AF -:10043000002028686F6D696E672070756C6C2D6F79 -:1004400066662C206D6D290D0A002028686F6D6985 -:100450006E67206465626F756E63652C206D7365D1 -:1004600063290D0A2432373D002028686F6D696EBC -:1004700067207365656B2C206D6D2F6D696E290D7E -:100480000A2432363D002028686F6D696E67206649 -:100490006565642C206D6D2F6D696E290D0A2432FF -:1004A000353D00290D0A2432343D002028686F6D47 -:1004B000696E672064697220696E76657274206D5A -:1004C00061736B3A002028686F6D696E67206379ED -:1004D000636C652C20626F6F6C290D0A2432333DEA -:1004E00000202868617264206C696D6974732C2027 -:1004F000626F6F6C290D0A2432323D002028736F21 -:100500006674206C696D6974732C20626F6F6C293E -:100510000D0A2432313D0020287265706F727420FC -:10052000696E636865732C20626F6F6C290D0A24F5 -:1005300032303D00202861726320746F6C657261F7 -:100540006E63652C206D6D290D0A2431333D00202A -:10055000286A756E6374696F6E206465766961746C -:10056000696F6E2C206D6D290D0A2431323D0029F2 -:100570000D0A2431313D0020287374617475732095 -:100580007265706F7274206D61736B3A0020287011 -:10059000726F62652070696E20696E766572742C68 -:1005A00020626F6F6C290D0A2431303D0020286CC9 -:1005B000696D69742070696E7320696E76657274F6 -:1005C0002C20626F6F6C290D0A24363D00202873A1 -:1005D00074657020656E61626C6520696E76657207 -:1005E000742C20626F6F6C290D0A24353D00290D93 -:1005F0000A24343D00202864697220706F727420D0 -:10060000696E76657274206D61736B3A00290D0A0C -:1006100024333D0020287374657020706F7274203D -:10062000696E76657274206D61736B3A0020287371 -:100630007465702069646C652064656C61792C2038 -:100640006D736563290D0A24323D0020287374659B -:10065000702070756C73652C2075736563290D0AA5 -:1006600024313D0024303D0024242028766965771C -:10067000204772626C2073657474696E6773290D0C -:100680000A2423202876696577202320706172610F -:100690006D6574657273290D0A2447202876696593 -:1006A0007720706172736572207374617465290DAF -:1006B0000A2449202876696577206275696C642070 -:1006C000696E666F290D0A244E20287669657720A9 -:1006D0007374617274757020626C6F636B73290D33 -:1006E0000A24783D76616C756520287361766520F3 -:1006F0004772626C2073657474696E67290D0A24F1 -:100700004E783D6C696E6520287361766520737440 -:10071000617274757020626C6F636B290D0A2443DB -:100720002028636865636B2067636F6465206D6F65 -:100730006465290D0A245820286B696C6C20616C53 -:1007400061726D206C6F636B290D0A24482028723A -:10075000756E20686F6D696E67206379636C6529BB -:100760000D0A7E20286379636C652073746172744E -:10077000290D0A2120286665656420686F6C64294C -:100780000D0A3F202863757272656E742073746160 -:10079000747573290D0A6374726C2D782028726544 -:1007A000736574204772626C290D0A0000002100F5 -:1007B000240027002A002D00300033000101000032 -:1007C000040107010A010D0A00496E76616C696433 -:1007D0002067636F64652049443A00556E6465661E -:1007E000696E656420666565642072617465004D9C -:1007F0006F64616C2067726F75702076696F6C61D1 -:1008000074696F6E00486F6D696E67206E6F74203B -:10081000656E61626C656400416C61726D206C6F25 -:10082000636B004E6F742069646C650045455052DF -:100830004F4D2072656164206661696C2E2055738E -:10084000696E672064656661756C74730056616CCF -:100850007565203C2033207573656300536574749F -:10086000696E672064697361626C65640056616CCF -:100870007565203C203000496E76616C6964207398 -:10088000746174656D656E7400426164206E756D8F -:1008900062657220666F726D617400457870656381 -:1008A00074656420636F6D6D616E64206C65747433 -:1008B0006572006572726F723A20006F6B0D0A00EC -:1008C0000D0A00486F6D696E67206661696C0050A3 -:1008D000726F6265206661696C0041626F7274209C -:1008E000647572696E67206379636C6500536F6627 -:1008F00074206C696D69740048617264206C696D64 -:10090000697400414C41524D3A20003E0D0A002CC2 -:100910004C696D3A002C52583A002C4275663A00E8 -:100920002C002C57506F733A002C002C4D506F73D5 -:100930003A003C446F6F72003C436865636B003C57 -:10094000416C61726D003C486F6D65003C486F6C96 -:1009500064003C52756E003C49646C65005D0D0A94 -:1009600000526573746F72696E67206465666175A5 -:100970006C74730050676D20456E64004368656356 -:100980006B20446F6F720044697361626C65640030 -:10099000456E61626C65640043617574696F6E3A9F -:1009A00020556E6C6F636B656400272448277C2795 -:1009B00024582720746F20756E6C6F636B0052652E -:1009C00073657420746F20636F6E74696E75650053 -:1009D0005B005D0D0A003A002C005B5052423A0069 -:1009E00000002200250028002B002E0031003400DA -:1009F00002010000050108010B01050505050705B9 -:100A000008080808020202020A0A0808040404048A -:100A100001010101010101010303030303030303B6 -:100A2000040707070C0C0C0C0C0C0C0C0202020245 -:100A300006060606060606060B0B0B0B0B0B0B0B2E -:100A400001021020200808102040102040800201E0 -:100A500002010804020101020408102040808040C5 -:100A600020100804020180040201804020100804C4 -:100A70000201080402010102040810204080010262 -:100A800004081020408000000A0B02090C0D0E081B -:100A90000703040100000000000000000000000047 -:100AA0000000000000000000000000000000000046 -:100AB0000000121110000000000000000000000003 -:100AC00000000000000000000000000011241FBE14 -:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D -:100AE000B2E0E2E0F3EF00E00BBF02C007900D922E -:100AF000AC3AB107D9F725E1ACEAB4E001C01D92E8 -:100B0000AC39B207E1F70E941B5D0C947F7978CA7B -:100B10002F923F924F925F926F927F928F929F920D -:100B2000AF92BF92CF92DF92EF92FF920F931F93FB -:100B3000CF93DF93CDB7DEB7C85CD1090FB6F89479 -:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B -:100B5000D04089E3E4E2F5E1DF011D928A95E9F7EF -:100B60008AE0EDE5F5E1A5E2B5E101900D928A9507 -:100B7000E1F7FE01E756FF4F1082CD54DF4F198297 -:100B80001882C35BD040C155DF4F19821882CF5AFB -:100B9000D040C154DF4F1882CF5BD040C655DF4FE5 -:100BA0001882CA5AD040C255DF4F1882CE5AD04060 -:100BB000E859F109C456DF4FF983E883CC59D04096 -:100BC0009E01235A3F4FC256DF4F39832883CE59A7 -:100BD000D040CE018F5A9F4FC056DF4F99838883F4 -:100BE000C05AD040DE01A959BF4FCE55DF4FB9835F -:100BF000A883C25AD040E059FF4FCC55DF4FF9834C -:100C0000E883C45AD0409C01285F3F4FCD53DF4F4B -:100C100039832883C35CD040C756DF4F8881C959C8 -:100C2000D040C754DF4FE881F981C95BD040E80F5D -:100C3000F11D1081112311F40C94B3159FEB910F4A -:100C40009A3110F00C94C61E8F5FC756DF4F888311 -:100C5000C959D040AE014B565F4FBE0167567F4F1A -:100C6000C754DF4F88819981C95BD0400E942A55C3 -:100C7000882311F40C94C81ECB56DF4FC880D9804E -:100C8000EA80FB80C559D040C701B6010E948D7231 -:100C90000E94FA6FCB54DF4F688379838A839B83EA -:100CA000C55BD040CB54DF4F48805980C55BD040F6 -:100CB000B20180E090E00E9426709B01AC01C70168 -:100CC000B6010E94AC6E20E030E048EC52E40E9495 -:100CD000DF714B015C0120E030E0A9010E94A471AA -:100CE00020E030E040E05FE387FD05C0C501B401CE -:100CF0000E94AD6E04C0C501B4010E94AC6E0E949A -:100D0000F56F1B011D3411F40C942F0F24F41734CC -:100D100061F00C945B14103511F40C94C50F13356D -:100D200011F40C94E7130C945B14C756DF4F8881C1 -:100D3000C959D040C754DF4FA881B981C95BD040A1 -:100D4000A80FB11DCD01BAE94B16B8E05B0609F456 -:100D500016C160F4F4ED4F16F7E05F06D1F029E913 -:100D6000421628E0520609F440C0FAC53DE9431690 -:100D700038E0530609F451C3AEE94A16A8E05A0612 -:100D800009F436C5BCE94B16B8E05B0609F0E8C5C6 -:100D900049C21A821982E1E0F0E0EC0FFD1FFF93D7 -:100DA000EF932EE434E03F932F939F938F930E9411 -:100DB00053730F900F900F900F900F900F90181685 -:100DC00019060CF03BC589819A8190938B10809312 -:100DD0008A1011E01093920D8091160D811148C573 -:100DE0000E940F3E1093160D43C58E010B5E1F4FE0 -:100DF0001F930F939E01275D3F4F3F932F937E01DB -:100E0000FDE3EF0EF11CFF92EF92CF55DF4F2881EB -:100E1000C15AD0402F93C056DF4F3881C05AD040BE -:100E20003F9329E132E03F932F939F938F930E944A -:100E300053730FB6F894DEBF0FBECDBF04970CF40A -:100E4000FDC4EF961CAE1DAE1EAE1FAEEF97E5962D -:100E50001CAE1DAE1EAE1FAEE597AB961CAE1DAE12 -:100E60001EAE1FAEAB97A1961CAE1DAE1EAE1FAE42 -:100E7000A1978CE0C456DF4FE881F981CC59D0406E -:100E800011928A95E9F7AE0145585F4F60E070E036 -:100E9000CE018F5A9F4F0E942A55882309F4E8C437 -:100EA000AE014F585F4F60E070E0C7010E942A55C5 -:100EB000882309F4DDC4AE0149595F4F60E070E05A -:100EC000CE0189960E942A55882309F4D1C4AE0127 -:100ED000435A5F4F60E070E0C8010E942A558823A2 -:100EE00009F4C6C420E030E044EB52E4E5966CAD72 -:100EF0007DAD8EAD9FADE5970E94AC6E21EE3EE2DA -:100F000045E652E40E948D6F6B017C01E5966CAF63 -:100F10007DAF8EAF9FAFE5970E948A6FEF968CAC46 -:100F20009DACAEACBFACEF97A50194010E94DF7100 -:100F300069837A838B839C83C701B6010E944272C6 -:100F40009B01AC01C501B4010E94DF716D837E83FA -:100F50008F839887AB968CAD9DADAEADBFADAB9793 -:100F600089879A87AB87BC87A1962CAD3DAD4EADE6 -:100F70005FADA19700E0BE016F5F7F4F37C46596FC -:100F80001CAE1DAE1EAE1FAE659721961CAE1DAEEB -:100F90001EAE1FAE219721E030E02C0F3D1F3F9386 -:100FA0002F938E010B5E1F4F1F930F93C156DF4F80 -:100FB0003881CF59D0403F93C256DF4FA881CE59D8 -:100FC000D040AF9322E432E03F932F939F938F93CF -:100FD0000E9453730FB6F894DEBF0FBECDBF0397C8 -:100FE0000CF42CC4AE014F5A5F4F60E070E0C801B2 -:100FF0000E942A55882309F43BC4AE01435C5F4F2D -:1010000060E070E0CE0101960E942A55882309F421 -:101010002FC43E01F9E26F0E711C8CE0D3011D92CA -:101020008A95E9F76091790D70917A0D80917B0D29 -:1010300090917C0D0E94287020E030E040EA52E45C -:101040000E948D6F20916D0D30916E0D40916F0D4E -:101050005091700D0E94AD6ECA55DF4F6883798341 -:101060008A839B83C65AD04060917D0D70917E0D1E -:1010700080917F0D9091800D0E94287020E030E0DB -:1010800040EA52E40E948D6F2091710D3091720DF3 -:101090004091730D5091740D0E94AD6EC554DF4F99 -:1010A000688379838A839B83CB5BD0406091810D79 -:1010B0007091820D8091830D9091840D0E94287013 -:1010C00020E030E040EA52E40E948D6F6B017C0129 -:1010D00020E030E044EB52E46091750D7091760DA4 -:1010E0008091770D9091780D0E94AC6E9B01AC01C0 -:1010F000C701B6010E94AD6E7B018C016F968EAD6B -:101100009FAD6F978130910509F450C00CF03FC03E -:10111000892B09F0A0C320E030E044EB52E465964F -:101120006CAD7DAD8EAD9FAD65970E94AC6E659642 -:101130006CAF7DAF8EAF9FAF6597FE01F1964F010B -:101140009E01235D3F4F5901DE0199966D017B01A0 -:101150008C01C554DF4F288139814A815B81CB5B8B -:10116000D040CA55DF4F688179818A819B81C65AF8 -:10117000D0400E94C144A401B501C6010E94624250 -:1011800021962CAD3DAD4EAD5FAD2197E2C38230CF -:10119000910519F1039709F05EC365966CAD7DADBD -:1011A0008EAD9FAD65970E94EA3E62C365966CADB9 -:1011B0007DAD8EAD9FAD6597FE01F1964F019E010D -:1011C000235D3F4F59016301C554DF4F28813981A9 -:1011D0004A815B81CB5BD04015C065962CAD3DAD9F -:1011E0004EAD5FAD6597CE01C1964C01DE019D9677 -:1011F0005D016301CA55DF4F688179818A819B81D6 -:10120000C65AD0400E94C144A401B501C3010E9446 -:10121000624221962CAD3DAD4EAD5FAD219700E011 -:10122000B30199C38E010B5E1F4F1F930F937E0175 -:10123000B9E2EB0EF11CFF92EF926E01EDE3CE0EE0 -:10124000D11CDF92CF92CF55DF4FF881C15AD040E9 -:10125000FF93C056DF4F2881C05AD0402F932AE514 -:1012600032E03F932F939F938F930E9453730FB657 -:10127000F894DEBF0FBECDBF04970CF4DFC2EF962B -:101280001CAE1DAE1EAE1FAEEF97E5961CAE1DAE9A -:101290001EAE1FAEE597AB961CAE1DAE1EAE1FAECA -:1012A000AB97A1961CAE1DAE1EAE1FAEA197AE01B0 -:1012B00045585F4F60E070E0CE018F5A9F4F0E940B -:1012C0002A55882309F4D4C2AE014F585F4F60E01D -:1012D00070E0C6010E942A55882309F4C9C2AE01F4 -:1012E00049595F4F60E070E0C7010E942A5588238A -:1012F00009F4BEC2AE01435A5F4F60E070E0C8011E -:101300000E942A55882309F4B3C26091810D70911F -:10131000820D8091830D9091840D0E942870CA5592 -:10132000DF4F688379838A839B83C65AD04060915C -:101330007D0D70917E0D80917F0D9091800D0E94AA -:101340002870C554DF4F688379838A839B83CB5B86 -:10135000D0406091790D70917A0D80917B0D9091C4 -:101360007C0D0E942870FE0139964F019E012B5F73 -:101370003F4F5901DE0111966D01CA55DF4FE880DC -:10138000F9800A811B81C65AD040C554DF4F28819D -:1013900039814A815B81CB5BD0400E94A645A40184 -:1013A000B501C6010E946242EF962CAD3DAD4EAD37 -:1013B0005FADEF9769817A818B819C810E94AD6ED0 -:1013C00069837A838B839C83E5962CAD3DAD4EADCE -:1013D0005FADE5976D817E818F8198850E94AD6EAE -:1013E0006D837E838F839887AB962CAD3DAD4EADDC -:1013F0005FADAB9769857A858B859C850E94AD6EC4 -:1014000069877A878B879C87A1962CAD3DAD4EADC1 -:101410005FADA19700E0B601E9C1C156DF4FB881C9 -:10142000CF59D040BF93C256DF4FE881CE59D0404C -:10143000EF93CD55DF4FF881C35AD040FF93CE557F -:10144000DF4F2881C25AD0402F93CB55DF4F3881D0 -:10145000C55AD0403F93CC55DF4FA881C45AD040E5 -:10146000AF938E0105581F4F1F930F9329E132E070 -:101470003F932F939F938F930E9453730FB6F894CB -:10148000DEBF0FBECDBF04970CF4D8C1CF56DF4FDF -:10149000188219821A821B82C159D040C357DF4F6C -:1014A000188219821A821B82CD58D040C757DF4F4D -:1014B000188219821A821B82C958D040CB57DF4F3D -:1014C000188219821A821B82C558D0408CE0C056FF -:1014D000DF4FA881B981C05AD0401D928A95E9F7A3 -:1014E000AE014F565F4F60E070E0C8010E942A5580 -:1014F000882309F4BDC1AE0143575F4F60E070E03F -:10150000CE018F589F4F0E942A55882309F4B0C1FD -:10151000AE0147575F4F60E070E0CE0189599F4FA1 -:101520000E942A55882309F4A3C1AE014B575F4F8F -:1015300060E070E0CE01835A9F4F0E942A558823B5 -:1015400009F496C16091810D7091820D8091830D97 -:101550009091840D0E942870CA55DF4F688379836B -:101560008A839B83C65AD04020E030E044EB52E4AB -:101570006091750D7091760D8091770D9091780D39 -:101580000E94AC6E6B017C0120E030E040EA52E446 -:10159000CA55DF4F688179818A819B81C65AD040C4 -:1015A0000E948D6F9B01AC01C701B6010E94AD6E18 -:1015B000C554DF4F688379838A839B83CB5BD0409C -:1015C00060917D0D70917E0D80917F0D9091800DC9 -:1015D0000E942870CB53DF4F688379838A839B8373 -:1015E000C55CD0406091790D70917A0D80917B0D32 -:1015F00090917C0D0E942870CD53DF4F8880998098 -:10160000C35CD040F1E56F2E712C6C0E7D1EB4E0F2 -:101610006B0E711C5301FE01EF5AFF4F6F01CA554B -:10162000DF4FE880F9800A811B81C65AD040CB5336 -:10163000DF4F288139814A815B81C55CD0400E949F -:10164000A645CD53DF4F48815981C35CD040B301DB -:10165000C6010E94624265966CAD7DAD8EAD9FADB8 -:1016600065976996CCACDDACEEACFFAC69979B019D -:10167000AC010E94DF714B015C01A7019601C7011B -:10168000B6010E94DF719B01AC01C501B4010E944B -:10169000AD6E0E944C72CF56DF4F288139814A814E -:1016A0005B81C159D0400E94AD6E6B017C01CF5669 -:1016B000DF4F688379838A839B83C159D040C357A6 -:1016C000DF4F288139814A815B81CD58D040C55494 -:1016D000DF4F688179818A819B81CB5BD0400E94FA -:1016E000AD6E21EE3EE245E652E40E948D6FCA5592 -:1016F000DF4F688379838A839B83C65AD0400E94D8 -:101700008A6F9B01AC01C701B6010E94DF714B01DA -:101710005C0165966CAF7DAF8EAF9FAF6597CA5584 -:10172000DF4F688179818A819B81C65AD0400E94AF -:1017300042729B01AC01C701B6010E94DF7169963C -:101740006CAF7DAF8EAF9FAF6997C757DF4F2881D2 -:1017500039814A815B81C958D0406D966CAD7DADB1 -:101760008EAD9FAD6D970E94AD6E6D966CAF7DAFE7 -:101770008EAF9FAF6D978E01035C1F4F24E045E055 -:10178000C501B4010E94316C69966CAD7DAD8EAD22 -:101790009FAD69970451110924E045E00E94316C26 -:1017A0006D966CAD7DAD8EAD9FAD6D9704511109F9 -:1017B00024E045E00E94316CCF56DF4F688179818B -:1017C0008A819B81C159D0400451110924E045E030 -:1017D0000E94316CCB57DF4F288139814A815B8170 -:1017E000C558D04000E0BE016F5A7F4F81E0B4C0C1 -:1017F00021E030E02C0F3D1F3F932F938E010B5EB5 -:101800001F4F1F930F937E0139E2E30EF11CFF92ED -:10181000EF926E01ADE3CA0ED11CDF92CF9223E8A6 -:1018200032E03F932F939F938F930E9453730FB691 -:10183000F894DEBF0FBECDBF049784F41F9281E001 -:101840008F938DE092E09F938F930E94AF330F9020 -:101850000F900F900F9082E390E084C0AE01455846 -:101860005F4F60E070E0C6010E942A55811103C0FD -:1018700080E090E077C0AE014F585F4F60E070E0CD -:10188000C7010E942A55882399F3AE0149595F4F39 -:1018900060E070E0C8010E942A55882349F3AE0138 -:1018A000435A5F4F60E070E0CE0101960E942A55D6 -:1018B0008823F1F220E030E044EB52E4EF966CAD87 -:1018C0007DAD8EAD9FADEF970E94AC6E7B018C011C -:1018D000EF966CAF7DAF8EAF9FAFEF978CE0C056A9 -:1018E000DF4FA881B981C05AD0401D928A95E9F78F -:1018F000AB962CAD3DAD4EAD5FADAB97E5966CAD07 -:101900007DAD8EAD9FADE597CD53DF4F888099803B -:10191000C35CD040E1E56E2E712C6C0E7D1EB4E0F0 -:101920006B0E711C5301FE01EF5AFF4F6F010E94B5 -:10193000C144CD53DF4F48815981C35CD040B301CE -:10194000C6010E946242A1962CAD3DAD4EAD5FAD89 -:10195000A19700E0B60180E00E94145690E002C01A -:1019600081E090E09C01215031092230310510F0D6 -:101970000C942F1FF8E24F16510409F414C280F59D -:1019800034E14316510498F481E14816510408F0FB -:1019900061C194E04916510409F474C008F4E3C02D -:1019A000BAE04B16510409F45EC00C94D41EECE16D -:1019B0004E16510409F457C038F426E1421651047A -:1019C00008F4A2C10C94D41E3EE14316510409F45C -:1019D0004AC086E24816510409F4C5C00C94D41ECE -:1019E0009DE34916510409F4D3C110F5B5E34B1634 -:1019F000510409F447C060F4FBE24F16510409F4A6 -:101A000095C121E34216510409F490C10C94D41EEF -:101A10003CE34316510410F00C94D41ECB54DF4F1A -:101A20008881C55BD040865380932B15A9E0AAC15D -:101A30008CE54816510460F49AE54916510408F003 -:101A40001FC1A0E54A16510409F49BC00C94D41E92 -:101A5000BCE54B16510439F0EFE54E16510408F47D -:101A60003CC10C94D41E2114310411F00C94E81ED6 -:101A7000C255DF4FF881CE5AD040FF2309F445C04C -:101A80000C94CA1E2CE14216510491F148F484E0F2 -:101A90004816510479F09AE049165104E1F08AC1E0 -:101AA000AEE14A165104D9F1B5E34B16510409F4DD -:101AB00056C080C181E054C0BFE14B16510408F00C -:101AC00042C0EAE04E16510441F4E1E0C255DF4F56 -:101AD000E883CE5AD04082E043C0FCE14F16510467 -:101AE00009F078C1F1E0C255DF4FF883CE5AD040FB -:101AF0002114310441F02AE02216310411F00C9433 -:101B0000D41E84E010C083E00EC0AEE14A1651043A -:101B100099F631E0C255DF4F3883CE5AD0402114B8 -:101B2000310449F485E080932415CA55DF4F1882AB -:101B3000C65AD0405AC18AE02816310411F00C94DC -:101B4000D41E86E0F0CF25E34216510411F00C9428 -:101B5000141F91E0C255DF4F9883CE5AD04087E0E2 -:101B60008093241527C1C255DF4FE881CE5AD0405B -:101B7000E1110C94CA1EF2E0C255DF4FF883CE5A31 -:101B8000D04022E04216510419F158F44114510496 -:101B9000D9F04A94452809F013C181E080932515B6 -:101BA0000FC196E249165104C1F0A0E54A1651044E -:101BB00009F44BC0B3E04B16510409F001C183E0B6 -:101BC0008093251531E09AC010922515E1E0ECC014 -:101BD00082E08093251521E088C08EE1281631042B -:101BE00001F180F4A4E12A16310411F00C94D41E02 -:101BF00084E080932515F1E0CA55DF4FF883C65A7B -:101C0000D040F3C0B8E22B163104A9F0E2E32E165F -:101C1000310411F00C94D41E87E08093251581E0E7 -:101C200039C085E08093251521E0CA55DF4F288310 -:101C3000C65AD040DAC086E08093251531E0CA55F7 -:101C4000DF4F3883C65AD040D0C088E08093251536 -:101C500091E062C0A2E14A16510441F0B3E14B1693 -:101C6000510449F010922915E2E09EC081E0809372 -:101C70002915F2E0A6C082E08093291522E035C044 -:101C800021143104B9F43AE54316510449F4109291 -:101C9000281583E0CA55DF4F8883C65AD040A5C0B7 -:101CA00081E08093281593E0CA55DF4F9883C65A88 -:101CB000D0409BC0AAE02A16310411F00C94D41E27 -:101CC000BAE54B16510411F40C94D41EE4E0CA5545 -:101CD000DF4FE883C65AD04088C0FDE54F16510457 -:101CE00051F481E08093261525E0CA55DF4F288303 -:101CF000C65AD0406BC01092261535E0CA55DF4F4A -:101D00003883C65AD04062C084E14816510451F469 -:101D100081E08093271596E0CA55DF4F9883C65A15 -:101D2000D04054C010922715A6E02CC0C255DF4FFA -:101D3000B881CE5AD040B1110C94CA1EE1E34E16C0 -:101D4000510451F410922A15F8E0CA55DF4FF88378 -:101D5000C65AD04023E044C03AE02316310411F0C3 -:101D60000C94D41E81E080932A1588E0CA55DF4F79 -:101D70008883C65AD04093E0C255DF4F9883CE5A2D -:101D8000D04033C0CA55DF4FA883C65AD0401EC0CA -:101D9000232811F00C94D41EBAE0CA55DF4FB88343 -:101DA000C65AD04022C0E7E0CA55DF4FE883C65A82 -:101DB000D0400CC0CA55DF4F1882C65AD04006C06A -:101DC000F1E0CA55DF4FF883C65AD040232869F0A6 -:101DD0000C94FB1ECA55DF4F1882C65AD04021E032 -:101DE000C255DF4F2883CE5AD040C155DF4FE8811E -:101DF000F981CF5AD040CF01A0E0B0E0CA55DF4F03 -:101E00000880C65AD04004C0B695A7959795879587 -:101E10000A94D2F780FF03C085E10C942F1F81E064 -:101E200090E0A0E0B0E0CA55DF4F0880C65AD0402D -:101E300004C0880F991FAA1FBB1F0A94D2F7C1556F -:101E4000DF4F28813981CF5AD040282B392BC155FB -:101E5000DF4F39832883CF5AD0400C940C06672B70 -:101E600011F00C94FB1EC756DF4F8881C959D04032 -:101E7000C754DF4F68817981C95BD040680F711DFD -:101E8000AE0147565F4FCB54DF4F88819981C55BC8 -:101E9000D0400E94491F9C01215031092230310558 -:101EA00010F00C942F1F36E04316510428F483E001 -:101EB0004816510490F026C098E04916510410F4D9 -:101EC0000C94D41EAAE04A16510408F440C0BEE1A6 -:101ED0004B16510411F00C94D41EE2E04E1651043E -:101EE00061F0FEE14F16510441F0452809F046C06B -:101EF00081E080932C152BE032C082E080932C157A -:101F00003BE036C084E04816510471F095E0491674 -:101F10005104A1F081E080932E15ACE0CA55DF4F4B -:101F2000A883C65AD04022C482E080932E15BCE01C -:101F3000CA55DF4FB883C65AD04018C410922E1528 -:101F4000ECE0CA55DF4FE883C65AD0400FC4F9E031 -:101F50004F16510451F082E080932D152DE0CA55A3 -:101F6000DF4F2883C65AD04001C410922D153DE0A2 -:101F7000CA55DF4F3883C65AD040F8C38BE0CA55E4 -:101F8000DF4F8883C65AD040F1C3672B11F00C9401 -:101F9000FB1EC756DF4F8881C959D040C754DF4F59 -:101FA000E881F981C95BD040E80FF11D27EB4216AB -:101FB00028E0520609F4E7C208F05EC18CE9481631 -:101FC00088E0580609F499C108F076C0A9E94A16D4 -:101FD000A8E05A0609F48BC108F05FC0E8E94E1684 -:101FE000E8E05E0609F0B8C384E16E0199E2C90E2B -:101FF000D11CD601E82F1D92EA95E9F77E01F5E1A3 -:10200000EF0EF11CD701E82F1D92EA95E9F7C456AF -:10201000DF4FA881B981CC59D0401D928A95E9F74C -:1020200080E090E00E944D47CB54DF4F6883798376 -:102030008A839B83C55BD04081E090E00E944D473E -:102040002B013C0182E090E00E944D474B015C0176 -:10205000860124E045E0CB54DF4F688179818A8195 -:102060009B81C55BD0400E94316C870124E045E034 -:10207000C301B2010E94316C0451110924E045E012 -:10208000C501B4010E94316CFF92EF92DF92CF92B2 -:102090001F930F938CEA92E03DC3FAE94F16F8E0E4 -:1020A0005F0609F427C12BE9421628E0520609F021 -:1020B00053C388EC92E023C13EE9431638E053064F -:1020C00009F427C108F420C19CEA491698E0590692 -:1020D00009F4B5C1ADEA4A16A8E05A0609F03CC3B6 -:1020E000A1961CAE1DAE1EAE1FAEA19765961CAE8E -:1020F0001DAE1EAE1FAE659721961CAE1DAE1EAE68 -:102100001FAE219784E1DE019996C656DF4FB98351 -:10211000A883CA59D040E82F1D92EA95E9F71E011D -:10212000F5E12F0E311CD101E82F1D92EA95E9F758 -:10213000C456DF4FA881B981CC59D0401D928A95F1 -:10214000E9F780E090E00E944D47CB54DF4F688371 -:1021500079838A839B83C55BD04081E090E00E94B5 -:102160004D47C554DF4F688379838A839B83CB5B5C -:10217000D04082E090E00E944D4720E030E044EB08 -:1021800052E40E94AC6E2B013C01FE01FD964F0112 -:102190009E012F5A3F4F5901CE01835A9F4F6C0128 -:1021A00083017201C554DF4F288139814A815B81E7 -:1021B000CB5BD040CB54DF4F688179818A819B8192 -:1021C000C55BD0400E94C144A401B501C6010E9474 -:1021D0006242A1966CAD7DAD8EAD9FADA197659627 -:1021E000CCACDDACEEACFFAC65979B01AC010E94C2 -:1021F000DF714B015C01A7019601C701B6010E9486 -:10220000DF719B01AC01C501B4010E94AD6E0E945B -:102210004C728E01075D1F4F24E045E00E94316C37 -:1022200020E030E044EB52E4C301B2010E94AD6E05 -:10223000810124E045E00E94316C21966CAD7DADBA -:102240008EAD9FAD21970451110924E045E00E9415 -:10225000316C1F930F933F922F92C556DF4FB88179 -:10226000CB59D040BF93C656DF4FE881CA59D04002 -:10227000EF938AEE92E04EC2B0EC4B16B8E05B06EC -:1022800009F4ADC1D0F439EB431638E0530609F434 -:1022900091C108F484C19AEB491698E0590609F4F3 -:1022A00091C1ABEB4A16A8E05A0609F055C28091DD -:1022B000020185FB882780F990C1B2EC4B16B8E08B -:1022C0005B0609F4FDC108F4CCC133EC431638E0D9 -:1022D000530609F407C280E6481689E0580609F05B -:1022E0003BC28091600D8F9380915F0D21C28AEB7C -:1022F00092E005C08CE890E102C08FEC92E09F93E1 -:102300008F9383EC92E017C28AE19DE09F938F93B5 -:1023100093C080818E3409F0C8C18181805384309C -:1023200008F0C3C194E16E013DE3C30ED11CD60198 -:10233000E92F1D92EA95E9F77E01F9E2EF0EF11C13 -:10234000D701E92F1D92EA95E9F75E01F5E1AF0E9D -:10235000B11CD501E92F1D92EA95E9F7C456DF4F6C -:10236000A881B981CC59D0401D929A95E9F7823065 -:10237000E1F0833031F1813061F082E090E00E9441 -:102380004D47850124E045E00E94316CBF92AF9239 -:1023900053C080E090E00E944D47860124E045E074 -:1023A0000E94316CDF92CF9247C081E090E00E94A2 -:1023B0004D47870124E045E00E94316CFF92EF9287 -:1023C0003BC080915F0D9091600D0497029748F497 -:1023D000609186107091871080918810909189107B -:1023E00022C020E030E040E05FE3609100027091A5 -:1023F000010280910202909103020E94AC6E20E0E3 -:1024000030E040E05FE30E94DF7120E030E044E331 -:1024100053E40E94DF719B01AC0160E070E084E353 -:1024200093E40E94AC6E8E010F5F1F4F24E045E0E5 -:102430000E94316C1F930F9386ED92E07CC1A196B0 -:102440001CAE1DAE1EAE1FAEA19765961CAE1DAE96 -:102450001EAE1FAE659721961CAE1DAE1EAE1FAE02 -:10246000219784E19E01275D3F4FC656DF4F398398 -:102470002883CA59D040D901E82F1D92EA95E9F77F -:102480001E01F5E12F0E311CD101E82F1D92EA95B6 -:10249000E9F7C456DF4FA881B981CC59D0401D92CD -:1024A0008A95E9F780E090E00E944D472B013C01BE -:1024B00081E090E00E944D47CB54DF4F68837983E1 -:1024C0008A839B83C55BD04082E090E00E944D47A9 -:1024D00020E030E044EB52E40E94AC6EFE01FD9639 -:1024E0004F019E012F5A3F4F5901DE01A35ABF4FA2 -:1024F0006D017B018C01CB54DF4F288139814A81EA -:102500005B81C55BD040C301B2010E94C144A401FC -:10251000B501C6010E946242A1966CAD7DAD8EAD43 -:102520009FADA1978E01075D1F4F24E045E00E94FB -:10253000316C65966CAD7DAD8EAD9FAD65978101BB -:1025400024E045E00E94316C21966CAD7DAD8EADEE -:102550009FAD21970451110924E045E00E94316CA0 -:102560001F930F933F922F92C556DF4FF881CB599F -:10257000D040FF93C656DF4F2881CA59D0402F93D1 -:102580008CED92E0C7C0A49B11C08FE30E9452540F -:102590008A30910558F08734910550F005C047996D -:1025A00005C00898009B04C081E017C080E015C0FA -:1025B00082E013C082B386958695869591E089273F -:1025C00081700BC08BE30E94525421E08536910547 -:1025D00008F420E01F922F93ACC01F92A9C081E0A5 -:1025E00090E08C0F9D1F9F938F9388EF92E09F93B5 -:1025F0008F93FF93EF930E9453730F900F900F9060 -:102600000F900F900F90181619060CF041C02981F9 -:102610003A812634310508F048C0F901EA57F54FF0 -:102620008491F901E05CF54F1491F901E650F64F01 -:102630000491002391F081110E94CE53E02FF0E02D -:10264000EE0FFF1FEE5EFC4FA591B491EC911E239F -:1026500081E090E021F480E002C080E090E09F9370 -:1026600067C0A1E0B0E0AC0FBD1FBF93AF9388EF90 -:1026700092E09F938F93FF93EF930E9453730F9079 -:102680000F900F900F900F900F901816190684F06E -:102690001F9281E08F938DE092E09F938F930E9431 -:1026A000AF330F900F900F900F9082E390E056C0E1 -:1026B00089819A8180319105C0F70E945254CFCF11 -:1026C00080915E0D8F9380915D0D8F9380915C0D55 -:1026D0008F9380915B0D8F9380915A0D8F93809192 -:1026E000590D15C080E090E00E94FB46182F092F7D -:1026F00081E090E00E94FB46F82EE92E82E090E017 -:102700000E94FB46EF92FF920F931F939F938F932C -:102710008CEF92E09F938F9387E29DE09F938F933E -:102720000E9425730FB6F894DEBF0FBECDBF11C057 -:102730008F9382EB93E09F938F9387E29DE09F932B -:102740008F930E9425730F900F900F900F900F9012 -:102750000F9080E090E002C081E090E09C01215069 -:1027600031092230310510F00C942F1FC155DF4F75 -:10277000E881F981CF5AD040CF01A0E0B0E0CA553E -:10278000DF4F0880C65AD04004C0B695A7959795EC -:1027900087950A94D2F780FD3FCB81E090E0A0E0DE -:1027A000B0E0CA55DF4F0880C65AD04004C0880F39 -:1027B000991FAA1FBB1F0A94D2F7E82BF92BC1550A -:1027C000DF4FF983E883CF5AD0400C940C06672B77 -:1027D00011F00C94FB1EF8EE4F16F3E05F0641F08B -:1027E0002CE4421624E0520649F50E94EA5523C023 -:1027F000C756DF4F8881C959D040C754DF4FE881A1 -:10280000F981C95BD040E80FF11D80818635C9F49C -:10281000818180538230A8F49FB7813029F0F894E9 -:102820008091B514886004C0F8948091B5148260DA -:102830008093B5149FBF80E090E005C081E090E0F8 -:1028400002C082E390E09C01215031092230310521 -:1028500010F00C942F1FC155DF4FE881F981CF5A3A -:10286000D040CF01A0E0B0E0CA55DF4F0880C65A83 -:10287000D04004C0B695A795979587950A94D2F74E -:1028800080FDCACA81E090E0A0E0B0E0CA55DF4F09 -:102890000880C65AD04004C0880F991FAA1FBB1FCA -:1028A0000A94D2F7E82BF92BC155DF4FF983E8835F -:1028B000CF5AD04095C0812F110F990BAA0BBB0B9B -:1028C000FC01E654F109E531F10510F00C94D41E39 -:1028D0008827EE58FF4F8F4F0C94F272C0922F153D -:1028E000D0923015E0923115F0923215CA55DF4F73 -:1028F0001882C65AD040DAC0C0923315D09234152F -:10290000E0923515F0923615C154DF4FF881CF5B58 -:10291000D040F160C154DF4FF883CF5BD04021E05D -:102920004FC0C0923715D0923815E0923915F09209 -:102930003A15C154DF4F3881CF5BD0403260C1546B -:10294000DF4F3883CF5BD04082E05BC0C0923B1545 -:10295000D0923C15E0923D15F0923E15C154DF4FE8 -:102960009881CF5BD0409460C154DF4F9883CF5B98 -:10297000D040A3E060C0CB54DF4FB881C55BD040EE -:10298000B0933F15E4E071C0C701B6010E94F56F36 -:1029900060934015709341158093421590934315B1 -:1029A000F5E0CA55DF4FF883C65AD0407FC0C092C9 -:1029B0004415D0924515E0924615F092471526E051 -:1029C000CA55DF4F2883C65AD04070C0C092481500 -:1029D000D0924915E0924A15F0924B1537E061C04C -:1029E000CB56DF4F88819981AA81BB81C559D040E0 -:1029F00080934C1590934D15A0934E15B0934F15A1 -:102A000088E0CA55DF4F8883C65AD0404FC0C09275 -:102A10005115D0925215E0925315F0925415C655A7 -:102A2000DF4F9881CA5AD0409160C655DF4F9883D6 -:102A3000CA5AD040AAE0CA55DF4FA883C65AD04030 -:102A400035C0C0925515D0925615E0925715F092A8 -:102A50005815C655DF4FB881CA5AD040B260C65526 -:102A6000DF4FB883CA5AD040EBE0CA55DF4FE88346 -:102A7000C65AD0401BC0C0925915D0925A15E09248 -:102A80005B15F0925C15C655DF4FF881CA5AD040ED -:102A9000F460C655DF4FF883CA5AD0402CE090CF7F -:102AA00039E0CA55DF4F3883C65AD040CA55DF4F88 -:102AB0008881C65AD040082FCD54DF4FE881F98174 -:102AC000C35BD040CF01A0E0B0E0CA55DF4F088023 -:102AD000C65AD04004C0B695A795979587950A9495 -:102AE000D2F780FF02C00C94CC1E81E693E0A0E0F8 -:102AF000B0E0CA55DF4F0880C65AD04004C0B69532 -:102B0000A795979587950A94D2F780FF11C020E08A -:102B100030E0A901CB56DF4F688179818A819B81A2 -:102B2000C559D0400E94866F87FF02C00C94CE1E0C -:102B300081E090E0A0E0B0E004C0880F991FAA1FD8 -:102B4000BB1F0A95D2F7CD54DF4F28813981C35B73 -:102B5000D040282B392BCD54DF4F39832883C35BDA -:102B6000D0400C940C06C655DF4F3881CA5AD0406D -:102B7000332369F0C255DF4F8881CE5AD04081118E -:102B800006C092E0C255DF4F9883CE5AD040CD5454 -:102B9000DF4FA881C35BD040A5FF0FC080914015D7 -:102BA00090914115A0914215B091431580389649F6 -:102BB000A849B10514F00C94D01E809126158130DF -:102BC00091F4C255DF4FF881CE5AD040F23009F06F -:102BD00040C0CD54DF4F2881C35BD04020FD02C0F0 -:102BE0000C94DA1E36C080915E15811132C0CD542E -:102BF000DF4F3881C35BD04030FF1BC08091271569 -:102C0000813039F523E333E34BEC51E460912F1528 -:102C10007091301580913115909132150E94DF71BD -:102C200060932F1570933015809331159093321562 -:102C300010C080916B1590916C15A0916D15B0919D -:102C40006E1580932F1590933015A0933115B09386 -:102C50003215CD54DF4F88819981C35BD04090FD00 -:102C600010C08091671590916815A0916915B09179 -:102C70006A1580934C1590934D15A0934E15B09303 -:102C80004F15809124158130B9F4CD54DF4F9881D0 -:102C9000C35BD04096FD03C08CE10C942F1FCD5434 -:102CA000DF4FA881B981C35BD040AF7BCD54DF4FEC -:102CB000B983A883C35BD040809129158823A1F0F4 -:102CC000813021F1CB54DF4F1882C55BD040F2E058 -:102CD000C754DF4FF883C95BD04021E0CA55DF4FAE -:102CE0002883C65AD04023C0B2E0CB54DF4FB8830C -:102CF000C55BD040E1E0C754DF4FE883C95BD040FB -:102D0000CA55DF4F1882C65AD04011C031E0CB54AB -:102D1000DF4F3883C55BD040C754DF4F1882C95B93 -:102D2000D04082E0CA55DF4F8883C65AD040809198 -:102D30002715813049F0C255DF4F9881CE5AD040D7 -:102D4000933009F043C036C0B4E2EB2EB5E1FB2E60 -:102D500000E010E0C655DF4FA881CA5AD0408A2E45 -:102D6000912CA12CB12CD501C401002E04C0B69524 -:102D7000A795979587950A94D2F780FF12C023E311 -:102D800033E34BEC51E4F70165A576A587A590A93F -:102D90000E94DF71D7019D966D937D938D939C93D7 -:102DA000D0970F5F1F4FB4E0EB0EF11C03301105FD -:102DB000D1F6C1CF80912A15813041F4C655DF4F3D -:102DC000E881CA5AD040E43009F0ECC78CE0E0E872 -:102DD000F5E1DE01119601900D928A95E1F7C1555A -:102DE000DF4F28813981CF5AD04031FD08C0109182 -:102DF00024151230C1F0183009F4EAC058C180918E -:102E00002B15873018F08DE10C942F1F90916315CE -:102E1000891769F3BE016F5F7F4F0E94452E88239B -:102E200009F4D4C7E4CFC655DF4F3881CA5AD04021 -:102E3000311103C08AE10C942F1FCD54DF4F8881DC -:102E40009981C35BD04080759927892B09F424CFE1 -:102E500060914415709145158091461590914715E4 -:102E60000E948D720E94FA6F673068F680913F155C -:102E7000843151F0823009F097C7CD54DF4F8881FB -:102E8000C35BD04087FD90C7CD54DF4FA881B98187 -:102E9000C35BD040AF7ACD54DF4FB983A883C35B07 -:102EA000D040662321F022242A94260E02C02090CE -:102EB0002B15BE016B5E7F4F822D0E94452E88230D -:102EC00009F484C730903F1580909815909099151B -:102ED000A0909A15B0909B15A4E2CA2EA5E1DA2E17 -:102EE0008E010B5E1F4FEDE5F5E1C155DF4FF98314 -:102EF000E883CF5AD040E12CF12CC655DF4FF88142 -:102F0000CA5AD0404F2E512C612C712CD301C201D2 -:102F10000E2C04C0B695A795979587950A94D2F77D -:102F200080FF3BC024E132122EC0C155DF4FA88183 -:102F3000B981CF5AD0409F962D913D914D915C9192 -:102F4000D29757966D917D918D919C915A970E9441 -:102F5000AC6EF60125A536A547A550A90E94AC6E1A -:102F6000D8016D937D938D939C931397B2E0EB12F0 -:102F700014C0A50194010E94AC6EF80160837183B6 -:102F8000828393830AC0F60185A596A5A7A5B0A95B -:102F9000F80180839183A283B383FFEFEF1AFF0AC6 -:102FA00024E0C20ED11C0C5F1F4FC155DF4F88813A -:102FB0009981CF5AD0400496C155DF4F99838883B9 -:102FC000CF5AD04093E0E916F10409F09FCF4CC1ED -:102FD000C655DF4FA881CA5AD040AA2309F42ACF88 -:102FE0008090981590909915A0909A15B0909B1587 -:102FF000FDE5CF2EF5E1DF2EFE0131961F0104E243 -:1030000015E1E12CF12C4A2E512C612C712CD301AD -:10301000C2010E2C04C0B695A795979587950A9482 -:10302000D2F780FF29C0D1012D913D914D915C9146 -:10303000F6016789708D818D928D0E94AC6ED801EA -:103040009D962D913D914D915C91D0970E94AC6ED3 -:10305000F80165A776A787A790ABF2E0EF1216C03C -:10306000A50194010E94AC6ED8019D966D937D934D -:103070008D939C93D0970AC0F60187A590A9A1A92A -:10308000B2A9F80185A796A7A7A7B0ABFFEFEF1AE3 -:10309000FF0A24E0C20ED11C34E0230E311C0C5F69 -:1030A0001F4F83E0E816F10409F0B1CFDCC0C25530 -:1030B000DF4F9881CE5AD040933009F49DC0C65559 -:1030C000DF4FA881CA5AD040AA2309F4C2C0009198 -:1030D0002815409098155090991560909A15709009 -:1030E0009B157DE5A72E75E1B72EE4E2EE2EE5E116 -:1030F000FE2EFE0131964F01C12CD12C8A2F90E07B -:10310000A0E0B0E0C155DF4F88839983AA83BB83D9 -:10311000CF5AD040C155DF4F88819981AA81BB81A8 -:10312000CF5AD0400C2C04C0B695A795979587959B -:103130000A94D2F780FD0BC0F5018789908DA18D8F -:10314000B28DF70185A796A7A7A7B0AB43C01730EC -:1031500009F440C001112BC0D5019F962D913D91DE -:103160004D915C91D297F40160817181828193814C -:103170000E94AD6ED7019D962D913D914D915C9130 -:10318000D0970E94AD6EF70165A776A787A790AB91 -:10319000F2E0CF121FC0A30192010E94AD6ED701D1 -:1031A0009D966D937D938D939C93D09713C0F5015D -:1031B0002789308D418D528DD7019D966D917D91DE -:1031C0008D919C91D0970E94AD6EF70165A776A76F -:1031D00087A790ABFFEFCF1ADF0A24E0A20EB11C45 -:1031E00034E0E30EF11C84E0880E911C93E0C916D4 -:1031F000D10409F08FCF29C61530A9F0173071F12D -:10320000133089F5C655DF4FA881CA5AD040A111A5 -:1032100005C0C255DF4F1882CE5AD040BE016B5E4A -:103220007F4F86E010C0C655DF4FB881CA5AD040E4 -:10323000B11105C0C255DF4F1882CE5AD040BE0131 -:103240006B5E7F4F87E00E94452E882309F4BEC540 -:103250000AC0153079F3173009F0F3C580912515B0 -:10326000823008F0A3C5212C30902515E8E03E12ED -:1032700011C0C655DF4FF881CA5AD040FF2309F468 -:1032800005C3C255DF4F2881CE5AD040213009F006 -:103290008FC511C3C255DF4F3881CE5AD04032306E -:1032A00009F0F4C2311009C0C655DF4F8881CA5AEF -:1032B000D040882309F4F1C2FEC220E030E0A90129 -:1032C00060912F15709130158091311590913215C4 -:1032D0000E94866F882309F46DC593E0931538F03A -:1032E000A2E03A1690F4B1E03B1631F0E4C2E7E018 -:1032F000E31508F0BEC2DFC2C655DF4FF881CA5AD7 -:10330000D040FF2309F4C9C2D6C2C655DF4F288179 -:10331000CA5AD040222309F48DCDCA55DF4F988177 -:10332000C65AD040892F90E0C155DF4F99838883DA -:10333000CF5AD040C754DF4FB881C95BD040AB2FC4 -:10334000B0E0CD53DF4FB983A883C35CD04081E0A8 -:1033500090E0A0E0B0E06C017D01CA55DF4F08802D -:10336000C65AD04004C0CC0CDD1CEE1CFF1C0A94D5 -:10337000D2F7C754DF4F0880C95BD04004C0880F24 -:10338000991FAA1FBB1F0A94D2F7C82AD92AEA2A72 -:10339000FB2A822F90E0A0E0B0E08C219D21AE219D -:1033A000BF21892B8A2B8B2B09F406C5C155DF4F12 -:1033B00088819981CF5AD040880F991F880F991F13 -:1033C000FC01EC5DFA4EDC01A35ABA4E57962D91E2 -:1033D0003D914D915C915A9765A576A587A590A9D9 -:1033E0000E94AC6E4B015C01CD53DF4F8881998107 -:1033F000C35CD040880F991F880F991FFC01EC5DBA -:10340000FA4EDC01A35ABA4E57962D913D914D913B -:103410005C915A9765A576A587A590A90E94AC6E88 -:10342000C655DF4F688379838A839B83CA5AD0400D -:10343000CD54DF4F08811981C35BD040007811273C -:10344000CD54DF4FE881C35BD040E7FF15C1CD54B9 -:10345000DF4F28813981C35BD0402F77CD54DF4FB8 -:1034600039832883C35BD0400E94CB68882311F046 -:1034700081E2F5C4809127158130B1F423E333E371 -:103480004BEC51E4609148157091491580914A15B3 -:1034900090914B150E94DF71609348157093491508 -:1034A00080934A1590934B154090481550904915BC -:1034B00060904A1570904B15A5019401C501B401A7 -:1034C0000E94DF71C154DF4F688379838A839B83B5 -:1034D000CF5BD040C655DF4F288139814A815B815F -:1034E000CA5AD040CA01B9010E94DF71C554DF4FEA -:1034F000688379838A839B83CB5BD04020E030E074 -:1035000040E850E4C301B2010E94DF71A3019201BF -:103510000E94DF71C154DF4F288139814A815B816C -:10352000CF5BD0400E94AC6EC554DF4F28813981FB -:103530004A815B81CB5BD0400E94AC6E6B017C0109 -:1035400020E030E0A9010E94866F87FD37C4C701E3 -:10355000B6010E944C726B017C01C554DF4F28817B -:1035600039814A815B81CB5BD040C154DF4F688198 -:1035700079818A819B81CF5BD0400E94AD6E0E9491 -:103580004C729B01AC01C701B60190580E948D6F2F -:103590006B017C0133E0331204C0F7FAF094F7F8C2 -:1035A000F09420E030E0A901C301B2010E94866FCF -:1035B00087FF0FC0F7FAF094F7F8F094D301C20137 -:1035C000B0588093481590934915A0934A15B0932D -:1035D0004B15C155DF4F08811981CF5AD040000FDC -:1035E000111F000F111F085D1A4EC655DF4F2881AD -:1035F00039814A815B81CA5AD040C701B6010E9415 -:10360000DF719B01AC01C501B4010E94AC6E20E0EA -:1036100030E040E05FE30E94DF71D8011B966D93BC -:103620007D938D939C931E97CD53DF4F0881198115 -:10363000C35CD040000F111F000F111F085D1A4E10 -:10364000A5019401C701B6010E94DF71C655DF4F85 -:10365000288139814A815B81CA5AD0400E94AD6E6F -:1036600020E030E040E05FE30E94DF71F801638713 -:103670007487858796871FC1C154DF4FF881CF5B60 -:10368000D0404F2E512C612C712CC420D520E62027 -:10369000F720CD28CE28CF2809F492C3CD54DF4F90 -:1036A00028813981C35BD040217FCD54DF4F3983DE -:1036B0002883C35BD04080912715813009F491C0E5 -:1036C000C155DF4FE881F981CF5AD040EE0FFF1F7F -:1036D000EE0FFF1FE85DFA4EC384D484E584F684C0 -:1036E000A7019601C501B4010E94AC6E2B013C01FB -:1036F000CD53DF4FE881F981C35CD040EE0FFF1F4F -:10370000EE0FFF1FE85DFA4E83859485A585B6858B -:10371000C155DF4F88839983AA83BB83CF5AD0409A -:103720009C01AD01C655DF4F688179818A819B81FB -:10373000CA5AD0400E94AC6E4B015C01A3019201B9 -:10374000C301B2010E94DF712B013C01A50194016C -:10375000C501B4010E94DF719B01AC01C301B2013C -:103760000E94AD6E0E944C724B015C01A701960154 -:10377000C701B6010E94DF716B017C01C155DF4FAB -:10378000288139814A815B81CF5AD040CA01B90171 -:103790000E94DF719B01AC01C701B6010E94AD6EB2 -:1037A0000E944C726B017C0160934815709349151F -:1037B00080934A1590934B159B01AC01C501B40150 -:1037C0000E94AC6E4B015C01E894B7F82AE037ED3B -:1037D00043EA5BE3C501B4010E94A471181664F1C9 -:1037E0006AC084E2E82E85E1F82ED301C201002EE2 -:1037F00004C0B695A795979587950A94D2F780FF50 -:1038000012C023E333E34BEC51E4D7011F966D91D3 -:103810007D918D919C9152970E94DF71F70167878E -:10382000708B818B928B0F5F1F4FF4E0EF0EF11CBA -:1038300003301105D1F644CF20E030E040E05FE3F3 -:10384000C501B4010E94A47118160CF411CE2FE624 -:1038500032E143E85AE3C701B6010E94DF719B01E0 -:10386000AC01C501B4010E94A47118160CF400CE7D -:1038700022C0C655DF4F2881CA5AD040222309F4FE -:10388000D9CA0E94CB688111F3CD15C0C255DF4F54 -:103890003881CE5AD04031110EC0CD54DF4F8881CF -:1038A0009981C35BD0408E7D9C7FC255DF4F1882CB -:1038B000CE5AD04008C0CD54DF4F88819981C35B78 -:1038C000D0408E7D907E892B09F07CC2809140157E -:1038D00090914115A0914215B091431580937015B8 -:1038E00090937115A0937215B0937315809126155E -:1038F00080935E1580912F1590913015A091311510 -:10390000B091321580936B1590936C15A0936D1543 -:10391000B0936E15C0904C15D0904D15E0904E159B -:10392000F0904F15A7019601609167157091681589 -:103930008091691590916A150E94866F8823F9F02D -:1039400010916615112359F080910715823039F0D6 -:103950000E94AE68B701A601812F0E94D72C8091EA -:103960004C1590914D15A0914E15B0914F15809327 -:10397000671590936815A0936915B0936A158091A7 -:10398000501580936F1510912E1580916615811733 -:10399000B9F080910715823079F0C0906715D0900A -:1039A0006815E0906915F0906A150E94AE68B7013D -:1039B000A601812F0E94D72C80912E158093661529 -:1039C00010912D1580916515811781F08091071553 -:1039D000823041F00E94AE68123011F45C9A02C04D -:1039E0000E94195D80912D15809365158091241595 -:1039F000813089F080912915809361158091271578 -:103A000080935F15C255DF4F8881CE5AD0408330F6 -:103A100009F074C054C080910715823059F380902A -:103A2000441590904515A0904615B090471520E09C -:103A300030E040EA51E4C501B4010E94DF710E9408 -:103A400063700E94FA6F6B017C010E94AE6820E0F7 -:103A500030E04AE754E4C501B4010E94DF714B0134 -:103A60005C0182E38C9DB0018D9D700D112480E07E -:103A700090E00E9426709B01AC01C501B4010E9438 -:103A8000AC6E0E9463700E94FA6FCB010E944F39A6 -:103A900086010115110509F4ADCF0E945A39015074 -:103AA0001109809106158111A5CF9FEFA0E7B2E023 -:103AB0009150A040B040E1F700C00000EACF8091F3 -:103AC0002A1580936215813089F48091591590915F -:103AD0005A15A0915B15B0915C1580939815909341 -:103AE0009915A0939A15B0939B1508C0109298153C -:103AF0001092991510929A1510929B1580912B1582 -:103B000090916315981759F0809363158CE0FE012E -:103B10003196A0E8B5E101900D928A95E1F7809188 -:103B2000281580936015E09124158E2F90E0FC01FC -:103B30003297E830F10508F060C08827E957FF4F59 -:103B40008F4F0C94F272BE016B5E7F4F822D0E94EC -:103B50003C2E80916315281250C08CE0FE017596B2 -:103B6000A0E8B5E13EC0C255DF4FE881CE5AD04053 -:103B7000EE2371F020916B1530916C1540916D150D -:103B800050916E1500E061E575E181E00E941456E8 -:103B900020916B1530916C1540916D1550916E15FB -:103BA00000E0BE016B5E7F4F81E00E941456182F2B -:103BB0008CE0FE017596A4E7B5E101900D928A951F -:103BC000E1F71CC064E775E186E003C064E775E1D6 -:103BD00087E00E943C2E11C08CE0E1E5F5E1ACE805 -:103BE000B5E101900D928A95E1F707C08CE0ECE811 -:103BF000F5E1DF011D928A95E9F710E08091251526 -:103C000080935D15883009F470C0C255DF4FB881CC -:103C1000CE5AD040B23009F068C090E088309105AB -:103C200008F05AC0FC0140906B1550906C156090E4 -:103C30006D1570906E158827E157FF4F8F4F0C94CC -:103C4000F27200E0A301920161E575E180E007C036 -:103C500000915E15A301920161E575E181E00E948A -:103C60001456182F39C060914815709149158091EC -:103C70004A1590914B158824839409C0609148158A -:103C80007091491580914A1590914B15812CCB5418 -:103C9000DF4FA880C55BD040C754DF4FC880C95BE9 -:103CA000D040CA55DF4FE880C65AD04000915E151B -:103CB000A30192010E949F690FC000E001C001E0D2 -:103CC00020E004C000E001C001E021E040915E1569 -:103CD000C301B2010E9409698CE0E1E5F5E1A4E7C6 -:103CE000B5E101900D928A95E1F780912C158093B2 -:103CF0006415882309F468C00E94AE689091641529 -:103D000080910715913069F48230E9F19FB7F894FA -:103D10008091B51488608093B5149FBF0E945A3972 -:103D200032C091E090935D1510926115109260156C -:103D300010925E151092631510926615109265151B -:103D40008230A9F0BE016F5F7F4F80E00E94452E58 -:103D50008823E1F18CE0FE013196A0E8B5E1019005 -:103D60000D928A95E1F70E94D02C0E94195D80ED9A -:103D700099E00E940A3484E799E00E940A348DE5B4 -:103D800099E00E940A34109264151EC081E067C059 -:103D900082E065C088E163C089E161C084E05FC002 -:103DA0008BE15DC085E25BC084E159C08EE157C004 -:103DB0008FE155C086E153C080E251C082E24FC01E -:103DC00083E24DC084E24BC0812F49C087E047C0E9 -:103DD000EEE14E16510411F40C948F0D70F42AE0AC -:103DE0004216510411F40C946B0D3CE1431651043E -:103DF00011F40C94780D87E132C085E34816510424 -:103E000011F40C94AF0D9CE549165104A1F721144F -:103E1000310439F0BAE02B16310431F689E00C9404 -:103E2000930D88E00C94930D3CE54316510411F07A -:103E30000C94EA0EA1E0C255DF4FA883CE5AD040C1 -:103E4000E6CF133009F00FCAE4C9153009F4F7C9F9 -:103E5000173009F403CA133009F005CADFC9C85383 -:103E6000DF4F0FB6F894DEBF0FBECDBFDF91CF910D -:103E70001F910F91FF90EF90DF90CF90BF90AF9088 -:103E80009F908F907F906F905F904F903F902F907A -:103E900008952F923F924F925F926F927F928F92EE -:103EA0009F92AF92BF92CF92DF92EF92FF920F93C9 -:103EB0001F93CF93DF93CDB7DEB7C459D1090FB6A7 -:103EC000F894DEBF0FBECDBFFB01873A28E0920712 -:103ED00009F480C208F046C08B34A8E09A0709F4C0 -:103EE00045C1F0F4833E27E0920709F4FFC060F477 -:103EF0008231910509F4FAC08C3C910509F493C014 -:103F0000419709F075C078C08934A8E09A0709F490 -:103F100012C108F018C18834984009F4C2C068C0C2 -:103F20008D3938E0930709F4E6C178F48A39B8E0AE -:103F30009B0709F488C18B3928E0920709F4BEC1B8 -:103F40008939984009F054C024C1823AA8E09A0700 -:103F500009F404C208F44CC0863A984010F40C945A -:103F6000622946C0803C28E0920709F4A0C508F504 -:103F7000873BA8E09A0709F453C570F48D3A28E00E -:103F8000920709F43AC38E3A38E0930709F443C420 -:103F90008C3A984069F524C2893BB8E09B0709F444 -:103FA00063C508F450C58A3B984011F40C9462290B -:103FB0001FC08A36A9E09A0709F44EC770F480360C -:103FC00029E0920709F402C6813639E0930709F423 -:103FD000ECC6813C984061F495C58C36B9E09B07EE -:103FE00009F4B6C708F485C7843C994009F4F9C7B9 -:103FF00081E090E00C9464298091F41482FF08C061 -:104000008A9A809108018160809308015F9A07C0B5 -:104010008A98809108018E7F809308015F980E94A2 -:104020008E3F8FE00CC18E010F5F1F4F1F930F93C8 -:1040300087EC93E09F938F93FF936F930E9453734A -:104040000F900F900F900F900F900F901816190669 -:104050000CF09DC71D8A1E8A1F8A188EAE014B5E0A -:104060005F4F60E070E0C8010E942A558823D1F1BB -:104070004D895E896F89788D88E70E943A2D4D8938 -:104080005E896F89788D89E70E943A2D4D895E8916 -:104090006F89788D8AE70E943A2D0E9459320C94DC -:1040A00062298E010F5F1F4F1F930F9382ED93E0E4 -:1040B0009F938F93FF936F930E9453730F900F9072 -:1040C0000F900F900F900F90181619060CF05FC705 -:1040D000AE014B5E5F4F60E070E0C8010E942A5560 -:1040E000811108C082E390E00C9464290E94D33EC1 -:1040F0000C94622920E030E04AE754E46D897E891F -:104100008F89988D0E94DF710E94F56F1616170631 -:1041100094F47093180D6093170D11E01093190D1E -:104120008091160D81110C9462290E940F3E10930C -:10413000160D0C9462291092190D1092180D109200 -:10414000170D0C9462298081863561F68181805338 -:10415000823040F61092950D813021F01092940D2E -:104160000C9462298093940D0C9462298081863589 -:1041700009F0B8CF81818053823008F0B3CF81300D -:1041800021F010929A0D0C94622980939A0D0C9450 -:10419000622980818E3409F0A5CF918190539430AB -:1041A00008F0A0CF923079F1933009F443C0209108 -:1041B000F4148091910D913099F022FF08C08A9AF1 -:1041C000909108019160909308015F9A07C08A98C6 -:1041D000909108019E7F909308015F9884602FC0A2 -:1041E00022FF08C08A9A909108019160909308017B -:1041F0005F9A07C08A98909108019E7F909308016A -:104200005F9881601CC08091F41482FF08C08A9A74 -:10421000809108018160809308015F9A07C08A98A5 -:10422000809108018E7F809308015F988091910DA5 -:10423000826005C00E948E3F8091910D88608093BE -:10424000910D0C94602980818E3409F04BCF9181BF -:104250009053943008F046CF9230B1F0933041F152 -:104260002091F4148091910D913039F022FF02C019 -:104270005F9801C05F9A8B7F17C022FF02C08A98A7 -:1042800001C08A9A8E7F10C08091F41482FF04C00E -:10429000809108018E7F03C0809108018160809326 -:1042A00008018091910D8D7F8093910D0C9462296E -:1042B0000E94C53E8091910D877FF6CF80818E341C -:1042C00009F010CF81818053843008F00BCF90919A -:1042D000910D823051F0833059F0813019F090FF08 -:1042E00098C394C391FD92C394C392FD8FC391C3AD -:1042F00093FF8FC38BC38E010F5F1F4F1F930F93CD -:104300008BED93E09F938F93FF936F930E94537372 -:104310000F900F900F900F900F900F901816190696 -:104320000CF035C68CE0F801AAE1BDE001900D92D9 -:104330008A95E1F70AE11DE08AEE93E0D8016D91DC -:104340008D017C01BFEFEB1AFB0A0E94725CC70172 -:10435000E6EFEE16E3E0FE0689F7B4C71AA619A643 -:104360001D8A1E8A1F8A188E8E010F5F1F4F8AE0DA -:10437000D8011D928A95E9F7CE0189969F938F9374 -:104380001F930F9386EE93E09F938F93FF936F930A -:104390000E9453730FB6F894DEBF0FBECDBF0297D5 -:1043A0000CF4F5C5AE014B5E5F4F60E070E0C801F4 -:1043B0000E942A55882309F495CE2D893E894F897C -:1043C000588D69A57AA5072E000C880B990B0E94C1 -:1043D0002A3E78C78FEF0E94652E0E94863D72C7E5 -:1043E0002E0125E6420E511C84E1D201282F1D9298 -:1043F0002A95E9F73E0131E5630E711CD301282FA0 -:104400001D922A95E9F78E01035C1F4FD8011D927A -:104410008A95E9F7C357DF4F188219821A821B82E7 -:10442000CD58D040C757DF4F188219821A821B829D -:10443000C958D040CB57DF4F188219821A821B828D -:10444000C558D0401F930F937F926F925F924F9207 -:1044500082EF93E09F938F93FF936F930E94537328 -:104460000FB6F894DEBF0FBECDBF03970CF48FC517 -:10447000AE0143575F4F60E070E0C2010E942A55D1 -:10448000882309F42FCEAE0147575F4F60E070E0FC -:10449000C3010E942A55882309F424CEAE014B574C -:1044A0005F4F60E070E0C8010E942A55882309F43C -:1044B00019CECF57DF4F188219821A821B82C1583A -:1044C000D040C358DF4F188219821A821B82CD5701 -:1044D000D040ED961CAE1DAE1EAE1FAEED9784E132 -:1044E0003E01F9E26F0E711CD301E82F1D92EA958F -:1044F000E9F72E01F5E14F0E511CD201E82F1D9274 -:10450000EA95E9F79E012F5F3F4F1901D9011D92EE -:104510008A95E9F7AE014B575F4FBE0167577F4F52 -:10452000CE0183579F4F0E94B741CB57DF4FE880A2 -:10453000F9800A811B81C558D040C757DF4F2881B9 -:1045400039814A815B81C958D040C357DF4F6881A8 -:1045500079818A819B81CD58D040FE01EF57FF4F72 -:104560004F01DE01A758BF4F5D0134976F010E94D4 -:104570000B4320E030E044EB52E4CF57DF4F68813B -:1045800079818A819B81C158D0400E94AD6ECF57FE -:10459000DF4F688379838A839B83C158D040C35897 -:1045A000DF4F688179818A819B81CD57D04082011C -:1045B00024E045E00E94316CED966CAD7DAD8EAD92 -:1045C0009FADED97810124E045E00E94316CCF570B -:1045D000DF4F688179818A819B81C158D0408301F6 -:1045E00024E045E00E94316C3F922F925F924F92FF -:1045F0007F926F928CEA92E000C12E0135E6430E65 -:10460000511C84E1D201282F1D922A95E9F73E0121 -:1046100031E5630E711CD301282F1D922A95E9F70D -:104620008E01035C1F4FD8011D928A95E9F7C3578D -:10463000DF4F188219821A821B82CD58D040C7578B -:10464000DF4F188219821A821B82C958D040CB577B -:10465000DF4F188219821A821B82C558D0401F93DF -:104660000F937F926F925F924F9281E194E09F93BC -:104670008F93FF936F930E9453730FB6F894DEBF2E -:104680000FBECDBF03970CF482C4AE0143575F4FFA -:1046900060E070E0C2010E942A55882309F422CD0F -:1046A000AE0147575F4F60E070E0C3010E942A559A -:1046B000882309F417CDAE014B575F4F60E070E0DF -:1046C000C8010E942A55882309F40CCDCF57DF4F2B -:1046D000188219821A821B82C158D040C358DF4FFA -:1046E000188219821A821B82CD57D040ED961CAEDB -:1046F0001DAE1EAE1FAEED9784E13E01F9E26F0ED6 -:10470000711CD301E82F1D92EA95E9F72E01F5E11E -:104710004F0E511CD201E82F1D92EA95E9F79E0138 -:104720002F5F3F4F1901D9011D928A95E9F720E0CB -:1047300030E044EB52E4C357DF4F688179818A81CE -:104740009B81CD58D0400E94AC6E7B018C01C35739 -:10475000DF4F688379838A839B83CD58D040CB57C2 -:10476000DF4F288139814A815B81C558D040C757C6 -:10477000DF4F688179818A819B81C958D040FE01D1 -:10478000E758FF4F4F01DE01A358BF4F5D01389638 -:104790006F010E94C144A401B501C6010E9462429A -:1047A000CF57DF4F688179818A819B81C158D04082 -:1047B000830124E045E00E94316CC358DF4F6881DB -:1047C00079818A819B81CD57D040820124E045E0E8 -:1047D0000E94316CED966CAD7DAD8EAD9FADED97C9 -:1047E000810124E045E00E94316C3F922F925F925C -:1047F0004F927F926F928CED92E09F938F9387E21E -:104800009DE09F938F930E9425730FB6F894DEBFAF -:104810000FBECDBF57C5CF57DF4F188219821A82FE -:104820001B82C158D040C358DF4F188219821A82A8 -:104830001B82CD57D040ED961CAE1DAE1EAE1FAEF6 -:10484000ED9784E12E0139E2430E511CD201282F4D -:104850001D922A95E9F73E0135E1630E711CD301E3 -:10486000282F1D922A95E9F7DE0111967D011D92F0 -:104870008A95E9F78E010B571F4F8FEF90E0D80113 -:104880008D939C931F930F93FF92EF927F926F9261 -:104890005F924F9280E394E09F938F93FF936F9387 -:1048A0000E9453730FB6F894DEBF0FBECDBF0497BE -:1048B0000CF46DC3AE014F575F4F60E070E0C20172 -:1048C0000E942A55882309F40DCCAE0143585F4F4E -:1048D00060E070E0C3010E942A55882309F402CCED -:1048E000AE0147585F4F60E070E0C7010E942A5553 -:1048F000882309F4F7CBD8018D919C91009709F496 -:1049000043C0019709F0EECBCF57DF4F4880598065 -:104910006A807B80C158D04020E030E044EB52E414 -:10492000C358DF4F688179818A819B81CD57D04000 -:104930000E94AC6E21EE3EE245E652E40E948D6F8D -:104940006B017C010E948A6F9B01AC01C301B20123 -:104950000E94DF71CF57DF4F688379838A839B83FF -:10496000C158D040C701B6010E9442729B01AC0100 -:10497000C301B2010E94DF71C358DF4F688379839E -:104980008A839B83CD57D040AE0147585F4FBE010D -:1049900063587F4FCE018F579F4F0E94B741ED96CE -:1049A000ECACFDAC0EAD1FADED97C358DF4F2881C9 -:1049B00039814A815B81CD57D040CF57DF4F688125 -:1049C00079818A819B81C158D040FE01FD964F01BB -:1049D000DE01AF5ABF4F5D01B8966F010E940B43D5 -:1049E0002196ECACFDAC0EAD1FAD219765962CADBC -:1049F0003DAD4EAD5FAD6597A9966CAD7DAD8EAD0D -:104A00009FADA9970E943746882319F066ED73E0A1 -:104A100002C062EC73E087E29DE00E941E7352C404 -:104A20008081863509F05ECB81818053823008F029 -:104A300059CB813019F00E94813D44C49C9A9D9AC3 -:104A4000A49AA5983FC48081863509F04BCB81811B -:104A50008053823008F046CB813019F00E947E3DB1 -:104A600031C43F9A47982EC48081863509F03ACBED -:104A700081818053823008F035CB813019F00E945B -:104A80006D3D20C48091010180628093010180917D -:104A90000101806480930101809102018062809312 -:104AA0000201809102018064809302010BC4CE0157 -:104AB00001969F938F9344969F938F9382E594E002 -:104AC0009F938F93FF936F930E9453730FB6F89445 -:104AD000DEBF0FBECDBF02970CF459C28D899E89EF -:104AE0008634910508F0FECA29813A8122303105C9 -:104AF00008F0F8CA232B11F061E001C060E00E94C9 -:104B00002454E0C3CE0101969F938F9344969F93C4 -:104B10008F9382E594E09F938F93FF936F930E940E -:104B200053730FB6F894DEBF0FBECDBF02970CF4DF -:104B30002EC28D899E898634910508F0D3CA2981B9 -:104B40003A812230310508F0CDCAFC01E05CF54F16 -:104B50008650964F232BD1F02491FC018491882319 -:104B600009F4B0C390E0880F991FFC01E455F84F99 -:104B7000A591B491FC01E052F64F859194918FB7C5 -:104B8000F894EC91E22BEC938FBF9CC32491FC0131 -:104B90008491882309F496C390E0880F991FFC0143 -:104BA000E455F84F45915491FC01E052F64FA59120 -:104BB000B4919FB7F894FA01808120958223808375 -:104BC0008C91E22FE823EC939FBF7CC380818335D7 -:104BD00009F088CA8181E0EDE80FE83008F082CA68 -:104BE0008E2F90E0FC013197E730F10530F48827F3 -:104BF000E956FF4F8F4F0C94F2720E94C53E1092FF -:104C0000600D10925F0D8AE999E1A5E9B2E4809305 -:104C1000650D9093660DA093670DB093680D8AE9BA -:104C200099E9A2E6B2E4B8C00E94C53E81E090E0F6 -:104C30009093600D80935F0D86EF98E2ACE4B2E450 -:104C40008093650D9093660DA093670DB093680DEA -:104C50008DEC9CECA0E8B2E49FC00E94C53E82E0CF -:104C600090E09093600D80935F0D89E29CEDA4E944 -:104C7000B2E48093650D9093660DA093670DB09399 -:104C8000680D80E090E0A2E6B2E486C00E94C53ED6 -:104C900083E090E09093600D80935F0D80E090E062 -:104CA000ACE2B2E48093650D9093660DA093670D1E -:104CB000B093680D80E090E0ABE8B2E46DC00E9474 -:104CC000C53E84E090E09093600D80935F0D80E09E -:104CD00090E0ACE1B2E48093650D9093660DA093F3 -:104CE000670DB093680D80E090E0A9E9B2E418C0C8 -:104CF0000E94C53E85E090E09093600D80935F0D2B -:104D00008DEC9CECA2E9B2E48093650D9093660D66 -:104D1000A093670DB093680D80E090E0A8E9B2E43D -:104D20008093610D9093620DA093630DB093640D19 -:104D30000E94983EDBC00E94C53E86E090E09093C2 -:104D4000600D80935F0D86E696E6AAE9B2E4809353 -:104D5000650D9093660DA093670DB093680D80E08C -:104D600090E0AAE5B2E418C00E94C53E87E090E05A -:104D70009093600D80935F0D85E89BEEABECB1E402 -:104D80008093650D9093660DA093670DB093680DA9 -:104D900080E090E0A2E3B2E48093610D9093620D15 -:104DA000A093630DB093640DA1C080E090E00E94D9 -:104DB000FB4690935C0D80935B0D81E090E00E9438 -:104DC000FB4690935E0D80935D0D82E090E00E9423 -:104DD000FB4690935A0D8093590D09E51DE084E33D -:104DE00093E0D8016D918D017C01BFEFEB1AFB0AB6 -:104DF0000E94725CC701EAE3EE16E3E0FE0689F763 -:104E00006BEB82E393E00E94725C0E94D14680E0EB -:104E100090E00E944D4760936D0D70936E0D8093EE -:104E20006F0D9093700D81E090E00E944D4760936C -:104E3000710D7093720D8093730D9093740D82E0D9 -:104E400090E00E944D476093750D7093760D8093AE -:104E5000770D9093780D36C26091121570911315ED -:104E600080911415909115150E9428702B013C011A -:104E700060910E1570910F1580911015909111157C -:104E80000E942870CF56DF4F688379838A839B8383 -:104E9000C159D04060910A1570910B1580910C1585 -:104EA00090910D150E9428709E012F5F3F4F490180 -:104EB000DE0155965D01FE01B9966F018301720115 -:104EC000CF56DF4F288139814A815B81C159D0405B -:104ED0000E94A64589819A81AB81BC818093650D32 -:104EE0009093660DA093670DB093680D0E94D03D1E -:104EF000E9C11D8A1E8A1F8A188E8E010F5F1F4FFF -:104F000084E1D8011D928A95E9F71F930F9389E5F3 -:104F100094E09F938F93FF936F930E9453730F902E -:104F20000F900F900F900F900F90181619067CF5A8 -:104F3000AE014B5E5F4F60E070E0C8010E942A55F1 -:104F4000882309F4CFC88D899E89AF89B88D24CF75 -:104F50001D8A1E8A1F8A188E8E010F5F1F4F84E1E3 -:104F6000D8011D928A95E9F71F930F9384E694E088 -:104F70009F938F93FF936F930E9453730F900F90A3 -:104F80000F900F900F900F901816190674F01F9243 -:104F900081E08F938DE092E09F938F930E94AF33D7 -:104FA0000F900F900F900F909DC8AE014B5E5F4F1A -:104FB00060E070E0C8010E942A55882309F492C875 -:104FC0008D899E89AF89B88D8093690D90936A0D04 -:104FD000A0936B0DB0936C0D0E94D03D0E94983E43 -:104FE00071C1899865E9662E6EE0762E830182E0B4 -:104FF00090E00E94FB46F801819391938F0150E964 -:10500000E52EFF24F394889A6AE070E080E090E057 -:105010000E94113988986CE271E080E090E00E9473 -:105020001139F1E0EF1AF10871F788EE93E00E9470 -:105030004F392FE00D351207D1F682E090E00E9443 -:10504000FB4690935E0F80935D0F899A00E21EE409 -:10505000889A6AE070E080E090E00E9411398898B8 -:105060006CE271E080E090E00E941139015011097A -:1050700079F78F984EE0E42EF12C00E911E08E9A3A -:105080006AE070E080E090E00E9411398E986CE256 -:1050900071E080E090E00E9411390150110979F728 -:1050A00031E0E31AF10849F788EE93E00E944F39A6 -:1050B0008F9A35E1232E3EE0332E210100E010E0EF -:1050C00080E090E00E94FB46D2018D939D932D01DC -:1050D00020E9E22EFF24F3948E9A6AE070E080E0EB -:1050E00090E00E9411398E9864EF71E080E090E0CA -:1050F0000E941139B1E0EB1AF10871F70E30110579 -:10510000A9F088EE93E00E944F390F5F1F4F0F33D5 -:105110001105B1F680E090E00E94FB469093940E5A -:105120008093930E8F9800E51DE223C080910B01C0 -:105130008D7F80930B01E12C92E3F92E80910B017E -:10514000886080930B016AE070E080E090E00E944C -:10515000113980910B01877F80930B016CE271E024 -:1051600080E090E00E941139E1E0EE1AF10831F799 -:10517000C8CF8E9A6AE070E080E090E00E9411391A -:105180008E986CE271E080E090E00E94113901504D -:10519000110979F788EE93E00E944F3980910B0155 -:1051A000826080930B0100E913E380910B0188601A -:1051B00080930B016AE070E080E090E00E9411397A -:1051C00080910B01877F80930B016CE271E080E09E -:1051D00090E00E9411390150110939F788EE93E0EF -:1051E0000E944F3980910B018D7F80930B010BE959 -:1051F0001DE0280181E090E00E94FB46D2018D93E2 -:105200009D932D0180E9E82EFF24F39480910B01FA -:10521000886080930B016AE070E080E090E00E947B -:10522000113980910B01877F80930B016CE271E053 -:1052300080E090E00E941139B1E0EB1AF10831F7FB -:1052400088EE93E00E944F39E3E14E16EEE05E06F1 -:1052500089F681E090E00E94FB469093140E8093C3 -:10526000130E81E090E0D3016D913D012C01BFEF61 -:105270004B1A5B0A0E94725CC2018B3C910599F744 -:10528000F10161911F013201FFEF6F1A7F0AC20124 -:105290000E94725C23012BE4621621E0720681F702 -:1052A000D8016D918D017301BFEFEB1AFB0AC301A9 -:1052B0000E94725C3701E5ECEE16E1E0FE0681F734 -:1052C0000E94F93C80E090E0CC56DF4F0FB6F89496 -:1052D000DEBF0FBECDBFDF91CF911F910F91FF9029 -:1052E000EF90DF90CF90BF90AF909F908F907F9086 -:1052F0006F905F904F903F902F90089569E080E00D -:1053000090E00E94725C4DE450E067EB74E181E054 -:1053100098E00C94945CCF92DF92EF92FF920F93FF -:105320001F939091E814092F10E020E030E0809165 -:10533000E914482F50E060E070E0917081706801DE -:105340007901F694E794D794C794C0FC92606A01FF -:105350007B01F694E794D794C794C0FC8260E2E0A6 -:105360003695279517950795EA95D1F700FD946036 -:1053700022E076956795579547952A95D1F740FD98 -:10538000846090939D1080939C101F910F91FF90CB -:10539000EF90DF90CF9008951F920F920FB60F926B -:1053A00011240BB60F922F933F938F939F93EF93FC -:1053B000FF9321B330919D10832F817090E036E0F0 -:1053C000880F991F3A95E1F7922F9F7B892B81BB1C -:1053D000EBE0F1E0908180919D108270880F880F42 -:1053E000977F892B808381B390919D1092FB9927A1 -:1053F00090F98E7F892B81BB15BCFF91EF919F9116 -:105400008F913F912F910F900BBE0F900FBE0F9079 -:105410001F90189580916F008D7F80936F00809111 -:105420008100887F81608093810010929E1080911E -:10543000EA148F3F21F490910515992349F090913A -:105440000715943029F090E00E944F3981E001C0A7 -:1054500080E09091F41492FF02C091E089278823A4 -:1054600041F08A9A809108018160809308015F9AD7 -:1054700008958A98809108018E7F809308015F9833 -:1054800008951F920F920FB60F9211240BB60F9230 -:105490002F933F934F935F936F937F938F939F933C -:1054A000AF93BF93EF93FF9380919E10811139C208 -:1054B0008091AE1080FD8F9A80FF8F9890910B01A4 -:1054C000482F42709D7F942B90930B0141B38470C1 -:1054D00090E095958795942F9D7F892B81BB91B303 -:1054E0008091AD10282F217030E066E0220F331F2D -:1054F0006A95E1F79F7B292B21BB90910B01282F07 -:105500002270220F220F977F922B90930B0121B3D1 -:1055100082FB992790F9822F8E7F892B81BB809106 -:10552000AC1086BD82E085BD81E080939E107894AA -:105530008091C0109091C110892B09F0ACC080916E -:10554000A7139091CC13981709F49BC0E091A7136F -:105550002E2F30E086E0E89FF0011124E855FC4E44 -:10556000F093C110E093C0108381948190938900DF -:1055700080938800808191819093BC108093BB10B0 -:10558000E2818091BD108E1761F1E093BD1081E141 -:10559000E89FF0011124E353FC4EF093BF10E09319 -:1055A000BE1085859685A785B089B695A7959795F0 -:1055B00087958093A7109093A810A093A910B093FB -:1055C000AA108093A3109093A410A093A510B09359 -:1055D000A61080939F109093A010A093A110B09359 -:1055E000A210E091BE10F091BF10908180919C10AC -:1055F00089278093AE1086E0829FD001839FB00DF3 -:105600001124A855BC4E15962C9181819281A381BD -:10561000B481022E04C0B695A795979587950A94F4 -:10562000D2F78093AF109093B010A093B110B093C5 -:10563000B21085819681A781B085022E04C0B695EF -:10564000A795979587950A94D2F78093B310909376 -:10565000B410A093B510B093B61081859285A38540 -:10566000B48504C0B695A795979587952A95D2F7E6 -:105670008093B7109093B810A093B910B093BA105C -:105680000AC0C8DE9FB7F8948091B51484608093F7 -:10569000B5149FBF46C18091B6148130B1F489B171 -:1056A000807190910415891781F01092B6148CE0E6 -:1056B000EAE0F5E1A6E1B5E101900D928A95E1F706 -:1056C0008091B51480648093B5141092AD10409110 -:1056D0009F105091A0106091A1107091A210809124 -:1056E000AF109091B010A091B110B091B210840F92 -:1056F000951FA61FB71F80939F109093A010A09393 -:10570000A110B093A210E091BE10F091BF1045859A -:10571000568567857089481759076A077B0768F5BA -:1057200021E02093AD104585568567857089841BDF -:10573000950BA60BB70B80939F109093A010A0938E -:10574000A110B093A210208180910A1590910B15A1 -:10575000A0910C15B0910D1520FF04C00197A1096F -:10576000B10903C00196A11DB11D80930A15909344 -:105770000B15A0930C15B0930D154091A3105091EB -:10578000A4106091A5107091A6108091B310909113 -:10579000B410A091B510B091B610840F951FA61F3C -:1057A000B71F8093A3109093A410A093A510B0935B -:1057B000A6104585568567857089481759076A0779 -:1057C0007B0778F52091AD1022602093AD104585C0 -:1057D000568567857089841B950BA60BB70B809344 -:1057E000A3109093A410A093A510B093A6102081AD -:1057F00080910E1590910F15A0911015B091111573 -:1058000021FF04C00197A109B10903C00196A11DA0 -:10581000B11D80930E1590930F15A0931015B093A2 -:1058200011154091A7105091A8106091A910709186 -:10583000AA108091B7109091B810A091B910B091B2 -:10584000BA10840F951FA61FB71F8093A7109093BF -:10585000A810A093A910B093AA1045855685678516 -:105860007089481759076A077B0778F52091AD10B2 -:1058700024602093AD104585568567857089841B0B -:10588000950BA60BB70B8093A7109093A810A0932D -:10589000A910B093AA102081809112159091131530 -:1058A000A0911415B091151522FF04C00197A1090C -:1058B000B10903C00196A11DB11D809312159093EB -:1058C0001315A0931415B093151580910715843006 -:1058D00039F49091AD108091231589238093AD10F8 -:1058E0008091BB109091BC1001979093BC10809355 -:1058F000BB10892B69F41092C1101092C0108091D6 -:10590000A7138F5F8093A713863011F41092A7130B -:105910009091AD1080919D1089278093AD101092C9 -:105920009E10FF91EF91BF91AF919F918F917F91C9 -:105930006F915F914F913F912F910F900BBE0F9000 -:105940000FBE0F901F9018958091F41482FF08C02D -:105950008A9A809108018160809308015F9A07C04C -:105960008A98809108018E7F809308015F988091CA -:1059700007158C70A1F080919C108093AE108091DF -:105980009D108093AD108091E714880F845081950D -:105990008093AC1080916F00826080936F000895B7 -:1059A000E0EAF0E080818F7D80835C980895CF925B -:1059B000DF92EF92FF926A017B01811105C0FF9097 -:1059C000EF90DF90CF90ECCF813011F45C9801C064 -:1059D0005C9A83E28093A0008091A100807E8A611E -:1059E0008093A1008FEF9FEF9093A9008093A80070 -:1059F00020E030E0A901C701B6010E94866F1816A9 -:105A0000F4F620E030E0A901C701B6010E94866FDC -:105A100087FD11C020E030E04AE754E4C701B60139 -:105A20000E94A471181654F4C12CD12C8AE7E82ED8 -:105A300084E4F82E03C0C12CD12C76012CEE31E188 -:105A400043E852E4C701B6010E94DF7120E030E074 -:105A500040E05FE30E94AD6E0E9463700E94FA6FA7 -:105A60007093AB006093AA005C9AFF90EF90DF9078 -:105A7000CF900895CF92DF92EF92FF92CF93DF9372 -:105A8000C82F6A017B0120E030E0A901C701B601FF -:105A90000E94866F87FDE2C0C43608F441C08CE9DD -:105AA0008C0F20E0833098F590E0880F991F880FC5 -:105AB000991F223079F0FC01233011F1213019F0C7 -:105AC000E954FB4E02C0ED53FB4EC082D182E2820C -:105AD000F382C1C0EC01C153DB4E20E030E040E76F -:105AE00052E4C701B6010E94DF7120E030E040E7D8 -:105AF00052E40E94DF71688379838A839B83ABC001 -:105B0000E552FB4EF7FAF094F7F8F094DECF2F5FF2 -:105B10008A3008F4A5C0243009F4A2C08A50C2CF4C -:105B2000C701B6010E948D720E94FA6F8C2F90E01F -:105B30008C31910508F094C0FC018827E256FF4F94 -:105B40008F4F0C94F272633008F48CC06093E714AA -:105B500082C06093EA147FC06093E81402C060932F -:105B6000E914D9DB78C08091F414662311F08460C5 -:105B70004CC08B7F4AC08091F414662311F080647E -:105B800044C08F7B42C08091F414662311F080687A -:105B90003CC08F773AC06093EB145DC0C092EC14A8 -:105BA000D092ED14E092EE14F092EF1454C0C09233 -:105BB000F014D092F114E092F214F092F3144BC06E -:105BC0008091F414662311F081601FC08E7F1DC088 -:105BD0008091F414662321F084FF46C0806215C0D2 -:105BE0008F7D13C08091F414662311F0886001C08A -:105BF000877F8093F4140E945A5C2DC08091F41426 -:105C0000662311F0806101C08F7C8093F41423C05F -:105C10006093F51420C0C092F614D092F714E0926D -:105C2000F814F092F91417C0C092FA14D092FB1431 -:105C3000E092FC14F092FD140EC070E07093FF141B -:105C40006093FE1408C0C0920015D0920115E09236 -:105C50000215F092031552DB80E007C084E005C016 -:105C600083E003C086E001C08AE0DF91CF91FF901E -:105C7000EF90DF90CF9008952DE0829FC001112416 -:105C80004CE050E0965F0C94945C1F93CF93DF93AD -:105C9000182FEB018DE0189FB0011124765F4CE0C6 -:105CA00050E0CE010E94D75C892B51F48CE0FE01BC -:105CB00011928A95E9F7BE01812FDEDF80E001C0F5 -:105CC00081E0DF91CF911F910895EF92FF920F93A2 -:105CD0001F93CF93DF93CDB7DEB72C970FB6F89411 -:105CE000DEBF0FBECDBF182F80FFC6C08AE08093F5 -:105CF000E7148FEF8093EA141092E81487E0809302 -:105D0000E91483E08093EB148AE097EDA3E2BCE30F -:105D10008093EC149093ED14A093EE14B093EF14D1 -:105D20008FE692E1A3E0BBE38093F0149093F1142B -:105D3000A093F214B093F3141092F51480E090E065 -:105D4000A8ECB1E48093F6149093F714A093F814A0 -:105D5000B093F91480E090E0AAEFB3E48093FA14D2 -:105D60009093FB14A093FC14B093FD148AEF90E081 -:105D70009093FF148093FE1480E090E0A0E8BFE3CE -:105D80008093001590930115A0930215B09303150D -:105D900084E08093F41480E090E0A8ECB5E4809374 -:105DA000B7149093B814A093B914B093BA14809315 -:105DB000BB149093BC14A093BD14B093BE148093F5 -:105DC000BF149093C014A093C114B093C21480E088 -:105DD00090E5A3ECB7E48093C3149093C414A0930C -:105DE000C514B093C6148093C7149093C814A0939D -:105DF000C914B093CA148093CB149093CC14A0937D -:105E0000CD14B093CE1480E090EAACE0B7E4809378 -:105E1000CF149093D014A093D114B093D214809344 -:105E2000D3149093D414A093D514B093D614809324 -:105E3000D7149093D814A093D914B093DA1480E0B7 -:105E400090E4ACE1B6EC8093DB149093DC14A09367 -:105E5000DD14B093DE148093DF149093E014A093CC -:105E6000E114B093E2148093E3149093E414A093AC -:105E7000E514B093E61442DA11FF0FC0CE0101968B -:105E80007C018CE0F70111928A95E9F700E0B701F7 -:105E9000802FF2DE0F5F0830D1F712FF0AC060E0FA -:105EA00080E09BE00E94725C60E081E59BE00E94E4 -:105EB000725C13FF05C060E08EEA9BE00E94725C9A -:105EC0002C960FB6F894DEBF0FBECDBFDF91CF91F9 -:105ED0001F910F91FF90EF9008951F920F920FB6B0 -:105EE0000F9211240BB60F922F933F934F935F9312 -:105EF0006F937F938F939F93AF93BF93EF93FF9392 -:105F00008091360123E030E03093641020936310D9 -:105F10008F33A9F050F4883109F1813211F59FB720 -:105F2000F8948091B514886015C0803471F08E3774 -:105F3000C1F49FB7F8948091B51482600BC09FB7ED -:105F4000F8948091B514816005C09FB7F894809152 -:105F5000B51480628093B5149FBF14C00E94EA55A7 -:105F600011C0E091E00F91E09E0F903809F490E0AD -:105F70002091DF0F921731F0F0E0E15AF04F80836B -:105F80009093E00FFF91EF91BF91AF919F918F910F -:105F90007F916F915F914F913F912F910F900BBE29 -:105FA0000F900FBE0F901F9018951F920F920FB673 -:105FB0000F9211240BB60F922F933F934F935F9341 -:105FC0006F937F938F939F93AF93BF93EF93FF93C1 -:105FD0008091D60022E030E030936410209363106B -:105FE0008F33A9F050F4883109F1813211F59FB750 -:105FF000F8948091B514886015C0803471F08E37A4 -:10600000C1F49FB7F8948091B51482600BC09FB71C -:10601000F8948091B514816005C09FB7F894809181 -:10602000B51480628093B5149FBF14C00E94EA55D6 -:1060300011C0E091E00F91E09E0F903809F490E0DC -:106040002091DF0F921731F0F0E0E15AF04F80839A -:106050009093E00FFF91EF91BF91AF919F918F913E -:106060007F916F915F914F913F912F910F900BBE58 -:106070000F900FBE0F901F9018951F920F920FB6A2 -:106080000F9211240BB60F922F933F934F935F9370 -:106090006F937F938F939F93AF93BF93EF93FF93F0 -:1060A0008091CE0021E030E03093641020936310A3 -:1060B0008F33A9F050F4883109F1813211F59FB77F -:1060C000F8948091B514886015C0803471F08E37D3 -:1060D000C1F49FB7F8948091B51482600BC09FB74C -:1060E000F8948091B514816005C09FB7F8948091B1 -:1060F000B51480628093B5149FBF14C00E94EA5506 -:1061000011C0E091E00F91E09E0F903809F490E00B -:106110002091DF0F921731F0F0E0E15AF04F8083C9 -:106120009093E00FFF91EF91BF91AF919F918F916D -:106130007F916F915F914F913F912F910F900BBE87 -:106140000F900FBE0F901F9018951F920F920FB6D1 -:106150000F9211240BB60F922F933F934F935F939F -:106160006F937F938F939F93AF93BF93EF93FF931F -:106170008091C60010926410109263108F33A9F0C2 -:1061800050F4883109F1813211F59FB7F89480916C -:10619000B514886015C0803471F08E37C1F49FB794 -:1061A000F8948091B51482600BC09FB7F8948091E9 -:1061B000B514816005C09FB7F8948091B5148062D2 -:1061C0008093B5149FBF14C00E94EA5511C0E0919E -:1061D000E00F91E09E0F903809F490E02091DF0FDE -:1061E000921731F0F0E0E15AF04F80839093E00F86 -:1061F000FF91EF91BF91AF919F918F917F916F919F -:106200005F914F913F912F910F900BBE0F900FBE5A -:106210000F901F9018951F920F920FB60F92112496 -:106220000BB60F928F939F93EF93FF938091621021 -:10623000E82FF0E0EE51F04F9081909336018F5FA0 -:10624000803809F480E0809362109091E10F891307 -:1062500005C0809131018F7D80933101FF91EF91D5 -:106260009F918F910F900BBE0F900FBE0F901F90BC -:1062700018951F920F920FB60F9211240BB60F9222 -:106280008F939F93EF93FF9380916210E82FF0E03C -:10629000EE51F04F90819093D6008F5F803809F4D3 -:1062A00080E0809362109091E10F891305C0809186 -:1062B000D1008F7D8093D100FF91EF919F918F91BD -:1062C0000F900BBE0F900FBE0F901F9018951F924E -:1062D0000F920FB60F9211240BB60F928F939F93CC -:1062E000EF93FF9380916210E82FF0E0EE51F04FB2 -:1062F00090819093CE008F5F803809F480E0809386 -:1063000062109091E10F891305C08091C9008F7DC3 -:106310008093C900FF91EF919F918F910F900BBED9 -:106320000F900FBE0F901F9018951F920F920FB6EF -:106330000F9211240BB60F928F939F93EF93FF93BD -:1063400080916210E82FF0E0EE51F04F9081909331 -:10635000C6008F5F803809F480E0809362109091CE -:10636000E10F891305C08091C1008F7D8093C1002A -:10637000FF91EF919F918F910F900BBE0F900FBEE9 -:106380000F901F901895E091E10F91E09E0F9038CB -:1063900031F490E004C02091B51424FD2FC0209169 -:1063A00062102917C1F3F0E0EE51F04F8083909313 -:1063B000E10F80916310909164108130910569F034 -:1063C00030F08230910579F0039799F0089580912B -:1063D000C10080628093C10008958091C9008062ED -:1063E0008093C90008958091D10080628093D1008C -:1063F0000895809131018062809331010895CF9397 -:10640000C82F83EB98E006D2C830B1F190F4C430C5 -:1064100051F148F4C23001F118F5C13009F040C023 -:106420008BE998E01BC0C63009F118F58CE598E0BF -:1064300015C0C43169F140F4CA3021F100F1CB300C -:1064400079F58FE694E02AC0C63129F1F0F0C23325 -:1064500039F589E794E022C089E898E0DBD125C0CE -:1064600087E798E0FBCF8DE698E0F8CF8DE498E0E1 -:10647000F5CF8CE298E0F2CF83E298E0EFCF88E1AD -:1064800098E0ECCF85E098E0E9CF8FEE97E0E6CF9B -:1064900084E794E003C08BED97E0E0CF09D205C01C -:1064A00089EC97E0B7D18C2FA7D186EC97E0CF91FC -:1064B000B1C11F93CF93DF93CDB7DEB72C970FB643 -:1064C000F894DEBF0FBECDBF80E090E00E94CF5CAD -:1064D000893009F052C04DE450E061E078E087EB8C -:1064E00094E10E94D75C892B09F447C020E030E09A -:1064F00048EC55E46091B7147091B8148091B914C8 -:106500009091BA140E94866F811137C020E030E06C -:1065100048EC55E46091BB147091BC148091BD149B -:106520009091BE140E94866F811127C020E030E058 -:1065300048EC55E46091BF147091C0148091C1146F -:106540009091C2140E94866F811117C010E0BE01A5 -:106550006F5F7F4F812F99DB811102C087E04FDF92 -:106560001F5F1830A1F72C960FB6F894DEBF0FBE50 -:10657000CDBFDF91CF911F9108958FEFA6DBE6CFBE -:106580008F929F92AF92BF92CF92DF92EF92FF9243 -:106590000F931F93CF93DF93CDB7DEB72A970FB634 -:1065A000F894DEBF0FBECDBF6B017C01042F20E04D -:1065B00030E0A9010E94866F87FF06C08DE2E3DE0E -:1065C000F7FAF094F7F8F094102F123060F020E012 -:1065D00030E048EC52E4C701B6010E94DF716B0164 -:1065E0007C011250F2CF00FF0AC020E030E040E210 -:1065F00051E4C701B6010E94DF716B017C0120E00C -:1066000030E040E05FE3C701B6010E94AD6E0E943A -:10661000F56FE1E0F0E0EC0FFD1FE00FF11D2EE261 -:10662000208310E03AE0832E912CA12CB12C61152F -:10663000710581059105A9F0101301C01F5FEE24BB -:10664000E394F12CEC0EFD1EE10EF11CA50194016A -:106650000E94D072605DF7016083B901CA011F5FBB -:10666000E6CF80E3101748F4E1E0F0E0EC0FFD1F07 -:10667000E10FF11D80831F5FF5CF10130BC081E088 -:10668000810FE1E0F0E0EC0FFD1FE80FF11D1E5F50 -:1066900080E38083112339F0FE01E10FF11D808139 -:1066A00072DE1150F7CF2A960FB6F894DEBF0FBEF8 -:1066B000CDBFDF91CF911F910F91FF90EF90DF90B1 -:1066C000CF90BF90AF909F908F900895CF92DF9220 -:1066D000EF92FF921F93CF93DF93CDB7DEB7362FA4 -:1066E000142FCDB6DEB64DB75EB7411B51090FB6BC -:1066F000F8945EBF0FBE4DBF4F5F5F4F7A01242FEE -:10670000FA019E2F921B911728F4632F0E94B072FA -:106710009193F7CF112349F0F701E10FF11D319764 -:106720008081805D30DE1150F5CF0FB6F894DEBE6B -:106730000FBECDBEDF91CF911F91FF90EF90DF9004 -:10674000CF90089580910815811108C09FB7F894E3 -:106750008091B51482608093B5149FBF08951F93F4 -:10676000CF93DF93CDB7DEB7C058D1090FB6F894F9 -:10677000DEBF0FBECDBFAE0149575F4FFA01619139 -:106780007191AF01CE0101960E94747310E0E1E0B7 -:10679000F0E0EC0FFD1FE10FF11D8081882319F05F -:1067A000F2DD1F5FF4CFC058DF4F0FB6F894DEBFA5 -:1067B0000FBECDBFDF91CF911F91089543E0E0CE92 -:1067C0002091F41420FF08C02BE832E441E25DE39D -:1067D0000E94DF7141E001C040E0D2CE2091F4146C -:1067E00020FF08C02BE832E441E25DE30E94DF7144 -:1067F00044E001C043E0C4CE8A3020F0843620F06B -:1068000043E003C041E001C042E06AE05FCF48E0FE -:1068100062E05CCFCF93DF93FC018491EF0121967E -:10682000882319F0B0DDFE01F8CFDF91CF910895F4 -:106830008F929F92AF92BF92EF92FF920F931F930E -:10684000CF938AED99E0E6DF86E1E82E85E1F82E28 -:1068500007EB14E1C0E0F701619171918191919191 -:106860007F01F80181909190A190B1908F010E94D9 -:106870002870A50194010E948D6FB0DFC23019F01D -:1068800088ED99E0C7DFCF5FC33029F786ED99E047 -:10689000C1DF80912215B0DF82ED99E0CF911F9189 -:1068A0000F91FF90EF90BF90AF909F908F90B2CFDD -:1068B000CF93DF93EC018991882311F064DDFBCF46 -:1068C000DF91CF910895AAE0B5E1E6E6F0E14D91C0 -:1068D0005D916D917D91419351936193719380E1AD -:1068E000E237F807A1F708958CE1E6E6F0E1DF0171 -:1068F0001D928A95E9F71092A5131092A61381E0D4 -:10690000809365101092C21008952F923F924F927B -:106910005F926F927F928F929F92AF92BF92CF922F -:10692000DF92EF92FF920F931F93CF93DF93C0916B -:10693000A613C11101C0C2E1C150D091C210DC1731 -:1069400009F41DC1EC2EF12C29E2C29F8001112413 -:106950000D531F4EF801A588B688C788D08C61A159 -:1069600072A183A194A19B01AC010E94AD6EF801BC -:1069700025A136A147A150A50E94DF714B018C01D2 -:106980009B01AC01B501C6010E94866F87FD02C064 -:106990005401680189E28E9DF0018F9DF00D112454 -:1069A000ED53FF4EC501D601818B928BA38BB48B27 -:1069B000C11101C0C2E1C150DC1761F029E22E9D76 -:1069C000C0012F9D900D11249C012D533F4E790144 -:1069D000D9E233C08091A513D81360C00E949948B2 -:1069E0005DC0AC2EB12CDA9DC001DB9D900D112451 -:1069F000FC01ED53FF4E6F01C11101C0C2E1C15056 -:106A00008091A5138C1302C00E949948DA9D8001E1 -:106A1000DB9D100D11240D531F4EF80185889688BB -:106A2000A788B08CA50194016189728983899489B2 -:106A30000E94866F811106C076018091C210C81332 -:106A4000D0CF2CC0F80161A172A183A194A19B01B8 -:106A5000AC010E94AD6EF80125A136A147A150A559 -:106A60000E94DF71F70121893289438954890E948C -:106A7000AD6E2B013C019B01AC01C501B4010E942C -:106A8000A471F80118162CF4418A528A638A748A18 -:106A9000D3CF818A928AA38AB48ACECFD091C210F2 -:106AA000F9E2DF9F800111240D531F4EC1E0CD0F8D -:106AB000C23109F4C0E02090A61389E2382EC21535 -:106AC00009F45BC0CC2ED12C3C9CC0013D9C900DA8 -:106AD00011249C012D533F4E7901F80141885288C1 -:106AE00063887488F90181889288A388B488A50195 -:106AF0009401C301B2010E94866F87FF24C0F80190 -:106B000061A172A183A194A19B01AC010E94AD6E11 -:106B1000F80125A136A147A150A50E94DF71A3016C -:106B200092010E94AD6E2B013C019B01AC01C5019D -:106B3000B4010E94A471181634F4F701418A528AF4 -:106B4000638A748ADC2F3C9CF0013D9CF00D11247B -:106B5000ED53FF4E258936894789508D61897289A9 -:106B6000838994890E94866F811101C0DC2FCF5FD9 -:106B7000C23109F4C0E08701A2CFD093C210DF91E7 -:106B8000CF911F910F91FF90EF90DF90CF90BF902A -:106B9000AF909F908F907F906F905F904F903F90BD -:106BA0002F9008952F923F924F925F926F927F9213 -:106BB0008F929F92AF92BF92CF92DF92EF92FF920D -:106BC0000F931F93CF93DF93CDB7DEB7E5970FB643 -:106BD000F894DEBF0FBECDBF4B8F5C8F6D8F072F3C -:106BE0002DAB2091A6132EA3422F50E05BA34AA306 -:106BF00039E2239FF0011124ED53FF4E15861686CE -:106C00001786108A15A216A217A210A6108249E9AB -:106C100056E766E97EE741A352A363A374A31C0170 -:106C200047EB54E158A74FA3CE0101969AAB89AB2D -:106C300026E630E13EA72DA74EA139E2439FC001D1 -:106C400011249C012C533F4E3AA729A7AE01435F64 -:106C50005F4F5DA34CA359A348A386E690E198AB90 -:106C60008FA727EB34E13F8F2E8F10E03F01AF015C -:106C7000435F5F4F5CAB4BAB2F0155E2450E511CA0 -:106C8000F10161917191819191911F01EE8DFF8DC3 -:106C900081909190A190B190FF8FEE8FA50194010A -:106CA0000E94DF710E94AF71E9A9FAA96193719303 -:106CB00081939193FAABE9ABEFA5F8A9C190D1907C -:106CC000E190F190F8ABEFA76C197D098E099F094F -:106CD0009B01AC0197FF07C022273327A901261B80 -:106CE000370B480B590BE9A5FAA521933193419332 -:106CF0005193FAA7E9A7EBA9FCA9C080D180E28053 -:106D0000F380C216D306E406F50610F469017A0191 -:106D1000EBA9FCA9C082D182E282F3820E94287092 -:106D2000A50194010E948D6F4B015C01E8A1F9A1BE -:106D30006193719381939193F9A3E8A320E030E0EC -:106D4000A9010E94866F87FF0DC0112321F0113029 -:106D500021F084E003C081E001C082E0F301908172 -:106D6000892B8083A5019401C501B4010E94DF71C4 -:106D7000F20120813181428153810E94AD6EF20186 -:106D800060837183828393831F5F133009F078CF10 -:106D90000E944C724B015C01F2016083718382831B -:106DA0009383CD28CE28CF2809F422C220E030E0FA -:106DB000A9016B8D7C8D8D8D902F0E94866F87FD34 -:106DC00021C0FDA9FF2361F0A50194016B8D7C8D8D -:106DD0008D8D902F0E94DF716B8F7C8F8D8F092F8F -:106DE00020E030E040E85FE36B8D7C8D8D8D902F4F -:106DF0000E94866F87FF0DC01B8E1C8E20E82D8F92 -:106E00000FE307C039E93B8F46E74C8F56E95D8FAA -:106E10000EE7A501940160E070E080E89FE30E9426 -:106E20008D6F69A77AA78BA79CA7CE0149969A8FE9 -:106E3000898FC12CD12C760129E2EAA1FBA12E9FDA -:106E4000C0012F9F900D11249C012C513F4E39A35E -:106E500028A3ECA1FDA180809180A280B38020E0D6 -:106E600030E0A901C501B4010E94866F882309F4AE -:106E700072C0A501940169A57AA58BA59CA50E9465 -:106E8000DF712B013C01ECA1FDA160837183828342 -:106E900093839B01AC0160E070E080E89FE30E9477 -:106EA0008D6F4B015C01E894B7F8EFA1F8A524853C -:106EB000358546855785C501B4010E94DF711B01E8 -:106EC0008E8F192F2B8D3C8D4D8D502F0E94A471CC -:106ED00018162CF02B8E3C8EFE8DFD8F012FE8A115 -:106EE000F9A1F081FE8FE8A1F9A111812280338000 -:106EF000EFA1F8A5208D318D428D538DC501B401D0 -:106F00000E94DF715B014C019B01AC016E8D712F02 -:106F1000C1010E94866F87FD03C0AE8E1B2D140138 -:106F20008E8D912FD101E8A1F9A180839183A28355 -:106F3000B383EDA5FEA52485358546855785C30118 -:106F4000B2010E94DF719B01AC01C701B6010E9432 -:106F5000AC6E6B017C012CA13DA12C5F3F4F3DA38A -:106F60002CA34DA55EA54C5F5F4F5EA74DA78FA1DB -:106F700098A5049698A78FA3E98DFA8DE217F307D9 -:106F800009F067CF8091A513FEA1F8130FC089E225 -:106F90002AA13BA1829FF001839FF00D1124ED53A4 -:106FA000FF4E118A128A138A148A14C02FEE3FEF03 -:106FB0004FE75FE3C701B6010E94A47118167CF485 -:106FC00089E24AA15BA1849FF001859FF00D112405 -:106FD000ED53FF4E118E128E138E148E6AC02FEE5B -:106FE0003FEF4FE75FEBC701B6010E94A47118168F -:106FF00044F08FEEC82EDD24DA948FE7E82E8FEB75 -:10700000F82EA701960160E070E080E89FE30E94FF -:10701000AC6E20E030E040E05FE30E94DF710E9450 -:107020004C726B017C0189E22AA13BA1829FF00195 -:10703000839FF00D1124ED53FF4E2091EC143091FD -:10704000ED144091EE145091EF1461A172A183A14F -:1070500094A10E94DF71A70196010E94DF714B018C -:107060005C01A701960160E070E080E89FE30E9468 -:10707000AC6E9B01AC01C501B4010E948D6F6B0128 -:107080007C0120E030E0A9010E94866F87FF03C0E9 -:10709000C12CD12C760189E24AA15BA1849FF00129 -:1070A000859FF00D1124ED53FF4EC18ED28EE38EDD -:1070B000F48E2B8D3C8D4D8D502F6B8D7C8D8D8D59 -:1070C000902F0E94DF717B018C0189E22AA13BA1F4 -:1070D000829FF001839FF00D1124ED53FF4EC701F5 -:1070E000D801858F968FA78FB0A3A18CB28CC38C4B -:1070F000D48C60907E1070907F1080908010909063 -:1071000081109301A401B701C8010E94866F87FD19 -:1071100005C0B62DA72DF82DE92D04C0BE2DAF2D2D -:10712000F02FE12F9501A6016B2F7A2F8F2F9E2F25 -:107130000E94A47118166CF09301A401B701C80154 -:107140000E94866F87FD03C05301640102C057018E -:10715000680189E24AA15BA1849FF001859FF00D3F -:107160001124ED53FF4EC501D601858B968BA78B5D -:10717000B08F8CE0FE013D96A2E7B0E101900D9248 -:107180008A95E1F7C701D80180937E1090937F1014 -:10719000A0938010B09381108CE0FE013196A6E69A -:1071A000B0E101900D928A95E1F78091651080938E -:1071B000A6138F5F823109F480E080936510E59615 -:1071C0000FB6F894DEBF0FBECDBFDF91CF911F91F8 -:1071D0000F91FF90EF90DF90CF90BF90AF909F9076 -:1071E0008F907F906F905F904F903F902F908DCBBE -:1071F000E5960FB6F894DEBF0FBECDBFDF91CF91FD -:107200001F910F91FF90EF90DF90CF90BF90AF90C4 -:107210009F908F907F906F905F904F903F902F90B6 -:1072200008956115710581059105C1F16A307105F7 -:107230008105910548F425E02A95F1F70000615099 -:10724000710981099109EDCF6436710581059105B8 -:1072500048F4E5E3EA95F1F700006A507109810905 -:107260009109DFCF683EF3E07F078105910558F46F -:10727000EFE8F1E03197F1F700C0000064567109C2 -:1072800081099109CECFEFE9FFE03197F1F700C016 -:107290000000685E734081099109C3CF089500978B -:1072A00041F0EFE9FFE03197F1F700C000000197EE -:1072B000F6CF0895AF92BF92CF92DF92EF92FF92F6 -:1072C0000F931F93CF93DF93CDB7DEB768970FB6B9 -:1072D000F894DEBF0FBECDBF10910515112309F440 -:1072E00051C081E08093071511FF06C083E099E04B -:1072F00091DA88EF98E01FC012FF06C083E099E0A2 -:1073000089DA8DEE98E017C013FF06C083E099E09C -:1073100081DA8AED98E00FC014FF06C083E099E09F -:1073200079DA8FEC98E007C015FF0CC083E099E094 -:1073300071DA83EC98E06EDA80EC98E06BDA84EF37 -:1073400091E0ADDF10FD08C08FB7F894909105155E -:10735000109205158FBF16C080ED99E05BDA8EEBB9 -:1073600099E058DA8DE599E055DA9FB7F894809165 -:10737000B5148F7E8093B5149FBF8091B51484FFA0 -:10738000FCCFE2CF1091B514112309F4ADC114FF65 -:1073900004C081E080930615B8C110FFDDC08CE009 -:1073A000EAE0F5E1DE011D9601900D928A95E1F784 -:1073B000809107158430E9F040F48130E9F080F0E5 -:1073C000823001F588E399E01CC0803179F018F42F -:1073D000883049F017C0803291F0803421F012C01B -:1073E00087E599E00EC082E599E00BC08CE499E056 -:1073F00008C086E499E005C08FE399E002C082E30B -:1074000099E008DA8091EB14837039F0BE01635F74 -:107410007F4FCE0101960E942E488091EB1480FD93 -:1074200005C08091EB1481FF60C017C08BE299E02A -:10743000F1D9CE0101967C0100E0F70161917191D3 -:10744000819191917F01CAD9023019F089E299E0C6 -:10745000E1D90F5F033089F7E4CF82E299E0DAD90E -:1074600080E8C82E85E1D82ECE0101967C0100E08F -:107470005701F60161917191819191916F01208580 -:107480003185428553850E94AD6E9B01AC01F701A9 -:1074900060817181828193810E94AC6EF70160836B -:1074A000718382839383023079F42091981530910F -:1074B000991540919A1550919B150E94AC6EF70159 -:1074C0006083718382839383F4E0EF0EF11CF501F6 -:1074D000608171818281938181D9023019F080E2CB -:1074E00099E098D90F5F033019F68091EB1482FF71 -:1074F0000CC08AE199E08ED98091A6139091A513D2 -:10750000891708F48E5E891B77D98091EB1483FF6D -:107510000CC085E199E07ED99091DF0F8091E00F5A -:10752000891708F48058891B67D98091EB1484FF70 -:1075300008C08FE099E06ED90E94635A43E062E090 -:10754000C5D88BE099E066D99FB7F8948091B514BF -:107550008E7F8093B5149FBF812F887609F447C032 -:1075600080910715882351F0982F9C77C1F18830BE -:1075700029F40E94994881E08093081580910715AD -:10758000811103C092E09093081516FF0AC088305D -:1075900019F480E480930715809108158860809322 -:1075A000081513FF07C08091071585FD03C080E112 -:1075B0008093071515FF13C080ED99E02BD98CE758 -:1075C00099E028D98DE599E025D98091081581FDAC -:1075D000146084608093081580E2809307159FB73C -:1075E000F8948091B51487798093B5149FBF11FFEB -:1075F00057C0812F887609F04BC0809107158823EA -:1076000039F0807509F444C08091081581FF40C0AD -:107610008091081582FF1EC080916615882369F04D -:1076200040916715509168156091691570916A15C0 -:107630000E94D72C80EA9FE032DE80916515882376 -:1076400049F0823011F45C9A02C00E94195D88EE04 -:1076500093E025DE8091A5139091A6139817A1F0D1 -:10766000F9E28F9FC00111248D539F4E892B61F049 -:107670008091081583FD08C088E0809307150E945B -:10768000BB480E94A42C02C0109207151092081546 -:107690009FB7F8948091B5148D7F8093B5149FBFE8 -:1076A00012FF22C080910715807391F08091091517 -:1076B00081110EC08091081582FF04C00E94D02C59 -:1076C0000E94195D8091081582608093081504C09E -:1076D00010920815109207159FB7F8948091B51471 -:1076E0008B7F8093B5149FBF809107158C7711F025 -:1076F0000E94BB4880910715803239F480910815AB -:1077000081FF03C080E18093071568960FB6F89457 -:10771000DEBF0FBECDBFDF91CF911F910F91FF90C4 -:10772000EF90DF90CF90BF90AF90089520918A1096 -:1077300030918B1021153105B9F080919A109091FC -:107740009B108217930734F4019690939B108093BB -:107750009A100AC010929B1010929A1010928B10DF -:1077600010928A101092920D2091170D3091180DE1 -:1077700021153105A1F080919810909199108217F0 -:10778000930734F40196909399108093981007C052 -:10779000109299101092981081E08093930D80912F -:1077A000920D81111BC08091190D811117C080911C -:1077B00073008E7F809373001092160D10928B10C1 -:1077C00010928A101092180D1092170D10929B10A3 -:1077D00010929A101092991010929810089580911A -:1077E0009710811107C081E08093971080910B0161 -:1077F000806205C01092971080910B018F7D80935D -:107800000B0180919510909196109C012F5F3F4F36 -:107810003093961020939510209104023091050228 -:107820002817390760F410929610109295108091E5 -:1078300070008E7F8093700081E08093980D089592 -:1078400020915F0D3091600D2430310529F426E63A -:1078500036E646E65FE307C02530310539F526E612 -:1078600036E646EE5FE30E948D6F20E030E040E8B0 -:1078700052E40E94DF710E94F56F60938210709352 -:107880008310809384109093851084E69CE39093FA -:10789000AF148093AE141092A00085E08093A100F5 -:1078A0008DEF9FEF9093B1148093B0148091B0143A -:1078B0009091B1149093A5008093A40080917200E0 -:1078C000816080937200089580918210909183105E -:1078D000A0918410B0918510181619061A061B067F -:1078E000F4F420919410222389F0109294100197BF -:1078F000A109B1098093821090938310A093841002 -:10790000B093851080910201806406C081E080936D -:107910009410809102018F7B8093020108950E9450 -:10792000DB541092821010928310109284101092E7 -:10793000851081E08093970D0895CF93DF93EB013D -:107940008431D1F028F4882361F08C30A8F437C05A -:107950008233E9F018F4873190F10EC0833311F1CE -:107960000BC08881882329F06EE774E0CE010E9465 -:10797000137360E874E020C08881882329F06EE7E3 -:1079800074E0CE010E94137363E874E015C088812F -:10799000882329F06EE774E0CE010E94137367E834 -:1079A00074E00AC08881882329F06EE774E0CE0174 -:1079B0000E9413736BE874E0CE010E9413738091F0 -:1079C000270D882379F067E27DE0CE010E941373D2 -:1079D00082E3E7E2FDE0DF011D928A95E9F7DF919E -:1079E000CF91089569E773E0CE01DF91CF910C94B8 -:1079F00013738F929F92AF92BF92CF92DF92EF92CA -:107A0000FF920F931F93CF93DF9306E015E18EE172 -:107A1000F80111928A95E9F70E9463340E946C5C28 -:107A200080E090E00E944D47CFE5DDE06E877F87E4 -:107A3000888B998B81E090E00E944D476A8B7B8B0D -:107A40008C8B9D8B82E090E00E944D476E8B7F8BEC -:107A5000888F998FF801C480D580E680F780CA8E20 -:107A6000DB8EEC8EFD8EC084D184E284F384CE8ED6 -:107A7000DF8EE8A2F9A204851585268537850AA33D -:107A80001BA32CA33DA320E030E044EB52E40E9472 -:107A9000AC6E7B018C012A893B894C895D896E859E -:107AA0007F8588899989EDE88E2EEDE09E2EF9E894 -:107AB000AF2EFDE0BF2EA5E8CA2EADE0DA2E61D7CD -:107AC000DF91CF911F910F91FF90EF90DF90CF90BA -:107AD000BF90AF909F908F900895E1E0F1E080819A -:107AE00080628083808180648083E2E0F1E0808135 -:107AF0008F7D808380818F7B808308953F9A479A12 -:107B000008959C9A9D9AA498A59A0895809104013D -:107B1000877880930401809103018877803451F441 -:107B200040E050E060E87FE384E00E943A2D6FE897 -:107B300074E02AC080910301887791F440E050E01E -:107B400060E87FE384E00E943A2D66E974E08CE807 -:107B500090E10E941E7340E050E060EE70E41BC0B4 -:107B600080910301887740E050E060E87FE3803255 -:107B700031F484E00E943A2D6DE974E005C084E0A0 -:107B80000E943A2D64EA74E08CE890E10E941E7332 -:107B900040E050E0BA0183E00E943A2D0C94593243 -:107BA0000F931F93CF93DF9360915F0D84E893E071 -:107BB0000E94725C6091600D85E893E00E94725CA7 -:107BC000C1E6DDE088E993E069918C010F5F1F4F0A -:107BD0000E94725CC8010C391340B1F7C5E6DDE0C4 -:107BE0008EE893E069918C010F5F1F4F0E94725CD9 -:107BF000C80102391340B1F7C9E6DDE082E89CE034 -:107C000069918C010F5F1F4F0E94725CC80106389A -:107C10001C40B1F7DF91CF911F910F910895E7E5D7 -:107C2000F4E186E99BE3918380831092200185E053 -:107C30008093210181EF9FEF9383828382819381DF -:107C40009093250180932401E3E7F0E08081816037 -:107C500080830895CF92DF92EF92FF920F931F934C -:107C6000CF93DF9369017A011092980DEAE0F1E079 -:107C7000208120622083EBE0F1E020812F7D2083B2 -:107C8000660F771F709305026093040200E514E10C -:107C90008FEE9BE3F80191838083C0E7D0E0888179 -:107CA0008E7F8883E0EBF0E080818C7F8083E1EB46 -:107CB000F0E08081877F8083A6EBB0E08C918F7DA0 -:107CC0008C9388818D7F888380818460808380818C -:107CD0008C7F808320E034E244EF59E4C701B60191 -:107CE0000E948D6F20E034E244E75BE40E94DF7184 -:107CF00020E030E040E85CE30E94DF710E94F56F15 -:107D000020E031E0C901861B970BF8019383828341 -:107D1000828193818093B200888181608883DF9122 -:107D2000CF911F910F91FF90EF90DF90CF9008952A -:107D3000CF93C1E0C093970D80915F0D9091600D3E -:107D40000497029700F51092970D109286101092EA -:107D500087101092881010928910809107018F7DF2 -:107D600080930701809108018062809308018091CF -:107D7000020180628093020160E070E084EB93E492 -:107D80005FDDC093960DCF910895109282101092EE -:107D9000831010928410109285100E94DB54109270 -:107DA000960D0C94DB548091F41482FF08C08A98DD -:107DB000809108018E7F809308015F9807C08A9A9E -:107DC000809108018160809308015F9ADEDF109244 -:107DD000910D08958F929F92AF92BF92CF92DF92B2 -:107DE000EF92FF926B017C0120E030E044EB53E422 -:107DF0000E94A47118160CF488C020E030E0A9019C -:107E0000C701B6010E94866F87FD7FC080915F0D1C -:107E10009091600D04970297B8F5209186103091EB -:107E200087104091881050918910C701B6010E94B7 -:107E3000AC6E4B015C0120E030E0A9010E94866F2E -:107E4000882309F462C0C0928610D0928710E09215 -:107E50008810F092891020E030E0A901C501B4013A -:107E60000E94A471181624F4809102018F7D03C032 -:107E700080910201806280930201C501B4019F7765 -:107E8000DFDC1092970D41C020E030E044E353E482 -:107E9000C701B6010E94A47118161CF4C12CD12C84 -:107EA0007601A701960160E070E084E393E40E940C -:107EB000AC6E20E030E044E353E40E948D6F9B0100 -:107EC000AC010E94AD6E20E030E040E05FE30E9434 -:107ED000AD6E609300027093010280930202909352 -:107EE000030220E030E040EA51E40E948D6F20E080 -:107EF00030EC4FE754E40E94DF710E94FA6FCB012F -:107F00000E948B5381E08093970DFF90EF90DF905C -:107F1000CF90BF90AF909F908F90089580915F0D0C -:107F20009091600D0497029780F480910101806226 -:107F3000809301018091010180648093010180910F -:107F40000201806280930201089580E18093A10084 -:107F50001092A00082E08093B41480E29EE490939B -:107F6000B3148093B2149093A7008093A60082E18B -:107F70008093A10020E030E040EA51E460910002EB -:107F80007091010280910202909103020E948D6F14 -:107F900020E030EC4FE754E40E94DF710E94FA6F5A -:107FA000CB010C948B53CF93DF93D82FC8E05E980E -:107FB000559AD7FF02C05D9A01C05D9865E070E0F8 -:107FC00080E090E02ED95E9A65E070E080E090E07D -:107FD00028D95E98DD0F65E070E080E090E021D95F -:107FE000C15029F762E070E080E090E01AD9559A1C -:107FF0005D9A62E070E080E090E0DF91CF9111C97E -:108000005E98559A5D9865E070E080E090E009D94F -:108010005E9A65E070E080E090E003D9559A5D9A41 -:1080200065E070E080E090E0FCC8CF93559A5D9ADF -:1080300062E070E080E090E0F4D85E9A62E070E088 -:1080400080E090E0EED855988BEF99B1C92FC072BF -:1080500095FF05C08150C9F7D3DFC1E006C05E9827 -:1080600062E070E080E090E0DCD88C2FCF91089542 -:10807000559A5D9A5E9A65E070E080E090E0D1D814 -:10808000559A5D9865E070E080E090E0CAD85E980F -:1080900062E070E080E090E0C4C8CF93DF93D82F17 -:1080A000C8E0809102018F778093020180910101E5 -:1080B00084608093010180910201D7FF02C0846037 -:1080C00001C08B7F8093020165E070E080E090E06A -:1080D000A8D88091020180688093020165E070E079 -:1080E00080E090E09ED8809102018F77809302011A -:1080F000DD0F65E070E080E090E093D8C15089F634 -:1081000062E070E080E090E08CD8809101018460B2 -:10811000809301018091020184608093020162E0FA -:1081200070E080E090E0DF91CF917BC80F931F93C8 -:10813000CF93DF93C2E0D1E088818F77888301E01D -:1081400011E0F80180818460808388818B7F88833F -:1081500065E070E080E090E064D888818068888382 -:1081600065E070E080E090E05CD8F8018081846098 -:10817000808388818460888365E070E080E090E09F -:10818000DF91CF911F910F914CC8CF938091010146 -:1081900084608093010180910201846080930201D8 -:1081A00062E070E080E090E03CD88091020180685D -:1081B0008093020162E070E080E090E032D880912C -:1081C00001018B7F809301018BEF90910001C92FFA -:1081D000C47092FF05C08150C1F7A8DFC1E00AC09A -:1081E000809102018F778093020162E070E080E06D -:1081F00090E017D88C2FCF9108950F931F93CF93B2 -:10820000DF9301E011E0F801808184608083C2E0A7 -:10821000D1E088818460888388818068888365E074 -:1082200070E080E090E00E941139F8018081846064 -:10823000808388818B7F888365E070E080E090E0B8 -:108240000E94113988818F77888362E070E080E036 -:1082500090E0DF91CF911F910F910C941139CF9342 -:10826000DF93D82FC8E04398399AD7FF02C0419ACC -:1082700001C0419865E070E080E090E00E94113913 -:10828000439A65E070E080E090E00E9411394398E5 -:10829000DD0F65E070E080E090E00E941139C15090 -:1082A00011F762E070E080E090E00E941139399AA5 -:1082B000419A62E070E080E090E0DF91CF910C9411 -:1082C00011394398399A419865E070E080E090E078 -:1082D0000E941139439A65E070E080E090E00E94CE -:1082E0001139399A419A65E070E080E090E00C9491 -:1082F0001139CF93399A419A62E070E080E090E0C2 -:108300000E941139439A62E070E080E090E00E94A0 -:10831000113939988BEF96B1C92FC27091FF05C002 -:108320008150C9F7CEDFC1E007C0439862E070E03A -:1083300080E090E00E9411398C2FCF910895399AF6 -:10834000419A439A65E070E080E090E00E94113924 -:10835000399A419865E070E080E090E00E94113920 -:10836000439862E070E080E090E00C9411394F9205 -:108370005F926F927F92AF92BF92CF92DF92EF9215 -:10838000FF920F931F93CF93DF935C01EB018A0160 -:10839000FC01408051806280738020E030E0A901C0 -:1083A000C301B2010E94866F20E030E0A901811173 -:1083B00011C0688179818A819B810E94A4711816FD -:1083C000E4F02AEDC22E2FE0D22E29ECE22E2FEB84 -:1083D000F22E22C0C301B2010E94866F87FD16C033 -:1083E000A3019201688179818A819B810E948D6FAE -:1083F0000E944B6F6B017C010FC09AEDC92E9FE06C -:10840000D92E99ECE92E9FE3F92E06C0C12CD12C70 -:1084100080ECE82E8FE7F82EC701B6010E948A6F24 -:108420002091610D3091620D4091630D5091640D6A -:108430000E94DF719B01AC01C301B2010E94AC6ECE -:10844000F5016083718382839383C701B6010E9423 -:1084500042722091610D3091620D4091630D5091F7 -:10846000640D0E94DF719B01AC01688179818A8172 -:108470009B810E94AC6E688379838A839B83209161 -:10848000650D3091660D4091670D5091680DF801B2 -:1084900060817181828193810E94AD6EF801608359 -:1084A000718382839383DF91CF911F910F91FF900E -:1084B000EF90DF90CF90BF90AF907F906F905F90E4 -:1084C0004F9008954F925F926F927F92AF92BF92BA -:1084D000CF92DF92EF92FF920F931F93CF93DF9390 -:1084E0005C01EB018A01FC01408051806280738055 -:1084F00020E030E0A901C301B2010E94866F20E0B4 -:1085000030E0A901811111C0688179818A819B8144 -:108510000E94A4711816E4F02AEDC22E2FE0D22E8C -:1085200029ECE22E2FEBF22E22C0C301B2010E94F1 -:10853000866F87FD16C0A3019201688179818A81C7 -:108540009B810E948D6F0E944B6F6B017C010FC05D -:108550009AEDC92E9FE0D92E99ECE92E9FE3F92ED2 -:1085600006C0C12CD12C80ECE82E8FE7F82EC70175 -:10857000B6010E948A6F2091610D3091620D409189 -:10858000630D5091640D0E94DF71A30192010E945E -:10859000AD6EF5016083718382839383C701B60159 -:1085A0000E9442722091610D3091620D4091630DE5 -:1085B0005091640D0E94DF719B01AC01688179814B -:1085C0008A819B810E94AD6E688379838A839B83B5 -:1085D0002091650D3091660D4091670D5091680DA9 -:1085E000F80160817181828193810E94AC6EF801F3 -:1085F0006083718382839383DF91CF911F910F9169 -:10860000FF90EF90DF90CF90BF90AF907F906F90F2 -:108610005F904F9008952F923F924F925F926F928A -:108620007F928F929F92AF92BF92CF92DF92EF9202 -:10863000FF920F931F93CF93DF93CDB7DEB766976B -:108640000FB6F894DEBF0FBECDBF69837A838B83EC -:108650009C832D833E834F83588727013801160161 -:10866000BA8AA98A84019B01AC010E94DF716B0167 -:108670007C012D813E814F815885CA01B9010E943C -:10868000DF719B01AC01C701B6010E94AD6E0E9473 -:108690004C7223E333E343E551E40E94AC6E6987F7 -:1086A0007A878B879C872DEC3CEC46ED52E4C30126 -:1086B000B2010E94AC6E2B013C0129853A854B85A5 -:1086C0005C85CA01B9010E94DF716B017C01A301C5 -:1086D0009201C301B2010E94DF719B01AC01C7018D -:1086E000B6010E94AD6E6B017C0124ED35E64DE9CB -:1086F00055E40E94AC6E4B015C0126EC3FEA4DE96B -:1087000057E4C701B6010E94DF716D877E878F87AE -:10871000988BA5019401C501B4010E94DF719B01F2 -:10872000AC016D857E858F8598890E94AC6E0E9414 -:108730004C726B8B7C8B8D8B9E8BA7019601C70136 -:10874000B6010E94AD6E6D877E878F87988BA501DD -:10875000940169857A858B859C850E94DF714B0128 -:108760005C012B893C894D895E89C301B2010E945D -:10877000DF719B01AC01C501B4010E94AC6E4B01DD -:108780005C012CEE31E14EE053E46D857E858F85F2 -:1087900098890E94DF719B01AC01C501B4010E9460 -:1087A0008D6F0E949E6E21EE3EE245E652E40E94ED -:1087B000DF71F101608371838283938324ED35E659 -:1087C0004DE955E4C701B6010E94AD6E4B015C0155 -:1087D0002BE339E045EC57E4C701B6010E94DF7195 -:1087E0006B017C01A5019401C501B4010E94DF71F8 -:1087F0009B01AC01C701B6010E94AC6E0E944C7295 -:108800006B017C01A501940169857A858B859C8526 -:108810000E94DF714B015C01A7019601C301B20107 -:108820000E94DF719B01AC01C501B4010E94AD6ED5 -:108830006B017C012CE53FEC4EE153E46D857E85B8 -:108840008F8598890E94DF719B01AC01C701B60139 -:108850000E948D6F0E949E6E21EE3EE245E652E43C -:108860000E94DF716B017C01E989FA896083718361 -:108870008283938321EE3EE245E652E4F10160817A -:108880007181828193810E948D6F0E9442722CEED1 -:1088900031E14EE053E40E94DF719B01AC01C30162 -:1088A000B2010E94A471181654F4F7FAF094F7F884 -:1088B000F094E989FA89C082D182E282F38220E0D1 -:1088C00030E0A90169817A818B819C810E94866F49 -:1088D00020E030E0A901811112C06D817E818F817D -:1088E00098850E94A47118162CF480E090E0A4EB07 -:1088F000B2E411C080E090E0A4EBB2EC0CC069815E -:108900007A818B819C810E94866F87FF0AC080E0FC -:1089100090E0A0ECBFE7F80180839183A283B3834A -:1089200017C029813A814B815C816D817E818F8165 -:1089300098850E948D6F0E944B6F21EE3EE245E6C6 -:1089400052E40E94DF71F801608371838283938314 -:1089500066960FB6F894DEBF0FBECDBFDF91CF9104 -:108960001F910F91FF90EF90DF90CF90BF90AF904D -:108970009F908F907F906F905F904F903F902F903F -:1089800008952F923F924F925F926F927F928F92B3 -:108990009F92AF92BF92CF92DF92EF92FF920F938E -:1089A0001F93CF93DF93CDB7DEB72E970FB6F89412 -:1089B000DEBF0FBECDBF29833A834B835C83ED823C -:1089C000FE820F831887860115019E868D8621EE13 -:1089D0003EE245E652E40E948D6F2B013C0121EE00 -:1089E0003EE245E652E469817A818B819C810E9456 -:1089F0008D6F4B015C0121EE3EE245E652E46D8154 -:108A00007E818F8198850E948D6F6B017C01C301EF -:108A1000B2010E948A6F69837A838B839C83C5012C -:108A2000B4010E948A6F6D837E838F839887C30110 -:108A3000B2010E9442722B013C01C501B4010E94A7 -:108A4000427269877A878B879C872CEE31E14EE0F2 -:108A500053E469817A818B819C810E94DF714B0193 -:108A60005C012CE53FEC4EE153E46D817E818F810A -:108A700098850E94DF719B01AC01C501B4010E9481 -:108A8000AD6E23E333E343E551E40E94AD6E4B0149 -:108A90005C01C701B6010E948A6F9B01AC01C50150 -:108AA000B4010E94DF71F801608371838283938334 -:108AB000C701B6010E9442729B01AC01C501B4011D -:108AC0000E94DF71F10160837183828393832CEEB6 -:108AD00031E14EE053E4C301B2010E94DF716B014A -:108AE0007C012CE53FEC4EE153E469857A858B856A -:108AF0009C850E94DF719B01AC01C701B6010E94F9 -:108B0000AC6E2DEC3CEC46ED52E40E94AD6EED8572 -:108B1000FE8560837183828393832E960FB6F894CB -:108B2000DEBF0FBECDBFDF91CF911F910F91FF90A0 -:108B3000EF90DF90CF90BF90AF909F908F907F90FD -:108B40006F905F904F903F902F9008952F923F929B -:108B50004F925F926F927F928F929F92AF92BF924D -:108B6000CF92DF92EF92FF920F931F93CF93DF93F9 -:108B7000CDB7DEB728970FB6F894DEBF0FBECDBFD6 -:108B80002B013C0129833A834B835C83ED82FE8277 -:108B90000F83188786018FE5282E8DE0382E20E080 -:108BA00030E044EB52E4F10166897789808D918D44 -:108BB0000E94AC6E6B017C0120E030E040EA52E4A0 -:108BC0006D817E818F8198850E948D6F9B01AC01A4 -:108BD000C701B6010E94AD6E6D837E838F83988737 -:108BE00020E030E040EA52E469817A818B819C8107 -:108BF0000E948D6FF10122893389448955890E9431 -:108C0000AD6E69837A838B839C8320E030E040EAF9 -:108C100052E4C301B2010E948D6FF10126853785B0 -:108C2000408951890E94AD6E6801ED80FE800F8100 -:108C3000188529813A814B815C81A3DE28960FB685 -:108C4000F894DEBF0FBECDBFDF91CF911F910F9182 -:108C5000FF90EF90DF90CF90BF90AF909F908F905C -:108C60007F906F905F904F903F902F9008954F921C -:108C70005F926F927F928F929F92AF92BF92CF92AC -:108C8000DF92EF92FF920F931F932B013C0149015A -:108C90005A01670178019B01AC010E949472811115 -:108CA00070C0A5019401C501B4010E9494728111A4 -:108CB00068C0A7019601C701B6010E949472811194 -:108CC00060C02AE939E947E053E4C301B2010E94D8 -:108CD000A47118160CF455C020E030E0A901C301BE -:108CE000B2010E94866F87FD4CC02DEC3CEC4FEE2C -:108CF00052E4C501B4010E94A47118160CF441C0DD -:108D000020E030E0A901C501B4010E94866F87FD13 -:108D100038C0A301920160E070E084E393E40E9414 -:108D2000AC6EA50194010E94AC6E4B015C0120E089 -:108D300030E047E153E40E94A471181614F120E0DA -:108D400030E040E251E4C501B4010E94866F87FD26 -:108D500018C020E030E044EB52E4C701B6010E94A5 -:108D6000A471181674F020E030E044EB52ECC70117 -:108D7000B6010E94866F881F8827881F91E0892787 -:108D800001C080E01F910F91FF90EF90DF90CF9096 -:108D9000BF90AF909F908F907F906F905F904F901B -:108DA0000895EF92FF920F931F93CF93DF9382E387 -:108DB00093E00E94CF5C8B3B19F080E293E002C00D -:108DC00084E393E02FE5E22E2DE0F22EC9E5DDE00D -:108DD0008C0109551D40C8018C0F9D1F0E94CF5C5E -:108DE0008993EC16FD06B9F7DF91CF911F910F9192 -:108DF000FF90EF900895AF92BF92CF92DF92EF92E3 -:108E0000FF920F931F93CF93DF93A82E6EE00E94E3 -:108E10001352C82F6FE08A2D0E941352D0E0DC2F2E -:108E2000CC27C82B7E016E0104E010E06EE08A2D95 -:108E30000E941352B82E6FE08A2D0E9413522B2DE0 -:108E400030E0322F2227A901482BCA01C816D906C3 -:108E500008F46C018E159F0508F47C01C80FD91F1A -:108E60000150110919F7CE018C199D098E199F091E -:108E700063E070E00E94BC72613050E1750708F455 -:108E80008B01C801DF91CF911F910F91FF90EF905F -:108E9000DF90CF90BF90AF900895CF92DF92EF9286 -:108EA000FF920F931F93CF93DF93EC01A4DF9C01FC -:108EB000C130D10591F128F0C230D10509F459C073 -:108EC00084C060915B0D70915C0DCB01A0E0B0E0BF -:108ED000890120E030E06C017D01C01AD10AE20A6C -:108EE000F30A41E0C41648E0D406E104F10424F09A -:108EF0009051A109B1090AC0C11448EFD4064FEF3F -:108F0000E406F4061CF4905FAF4FBF4FBC01CD01E7 -:108F1000601B710B820B930B65C060915D0D7091AE -:108F20005E0DCB01A0E0B0E0890120E030E06C01F3 -:108F30007D01C01AD10AE20AF30A41E0C41648E0F2 -:108F4000D406E104F10424F09051A109B1090AC04A -:108F5000C11448EFD4064FEFE406F4061CF4905F0A -:108F6000AF4FBF4FBC01CD01601B710B820B930B48 -:108F700045C06091590D70915A0DCB01A0E0B0E051 -:108F8000890120E030E06C017D01C01AD10AE20ABB -:108F9000F30A41E0C41648E0D406E104F10424F0E9 -:108FA0009051A109B1090AC0C11448EFD4064FEF8E -:108FB000E406F4061CF4905FAF4FBF4FBC01CD0137 -:108FC000601B710B820B930B22C0C130D10599F04D -:108FD00030F0229719F560E070E0CB0118C060E036 -:108FE00070E0CB0145E2C42E49E0D42E43E0E42EEC -:108FF00042E4F42E16C060E070E0CB0139E0C32EED -:1090000036EFD32E31EBE32E32E4F32E0AC0C12C1F -:10901000D12C24EBE22E22E4F22E03C060E070E0BB -:10902000CB010E94287020E030E044EB53E40E9422 -:10903000DF7120E030E040E859E30E94DF719B01DE -:10904000AC01C701B6010E94AC6EDF91CF911F91B8 -:109050000F91FF90EF90DF90CF9008958F929F92A5 -:10906000AF92BF92CF92DF92EF92FF920F931F9336 -:10907000CF93DF93EB0127EBE22E24E1F22E8C015C -:109080006B018CE0C80ED11C6991799189919991FD -:10909000F70181909190A190B1907F010E9428707A -:1090A000A50194010E948D6FF801619371938193E2 -:1090B00091938F01CC15DD0539F7DF91CF911F9189 -:1090C0000F91FF90EF90DF90CF90BF90AF909F9067 -:1090D0008F9008951F920F920FB60F9211240BB626 -:1090E0000F922F933F934F935F936F937F938F9341 -:1090F0009F93AF93BF93EF93FF9389B18095982F80 -:10910000907184FF03C091110E94EA55FF91EF9185 -:10911000BF91AF919F918F917F916F915F914F918F -:109120003F912F910F900BBE0F900FBE0F901F908D -:109130001895CF93DF93C0912314D09124142097D6 -:10914000B9F081E08093261460913C1470913D1435 -:1091500080913E1490913F149B01AC010E94DF71FD -:10916000698B7A8B8B8B9C8B109224141092231416 -:10917000DF91CF9108952F923F924F925F926F921D -:109180007F928F929F92AF92BF92CF92DF92EF9297 -:10919000FF920F931F93CF93DF93CDB7DEB7CD54DC -:1091A000D1090FB6F894DEBF0FBECDBF8091071571 -:1091B000807723968FAF2397882389F020E030E0D3 -:1091C000A90160913C1470913D1480913E149091DE -:1091D0003F140E94866F882311F40C9499512091BA -:1091E0003C142F8B30913D14388F40913E14498FA1 -:1091F00050913F145A8F80914C148B8390914D1451 -:109200009D83A0914E14AE83B0914F14BC83009106 -:10921000381410913914E0913A14E987F0913B1415 -:10922000FD8720912B1430912C1440912D145091D6 -:109230002E142DA33EA34FA358A7309127143DAF62 -:10924000409128144EAF509129145FAF80912A1499 -:1092500021968FAF2197209133143091341440918F -:109260003514509136142DAB3EAB4FAB58AF309107 -:10927000CC1322963FAF2297409122144BA75091D6 -:10928000A61324965FAF24978091A5138B8F90919E -:10929000C21025969FAF2597A0912314B091241456 -:1092A000BA8BA98B20912F14309130144091311436 -:1092B0005091321429AF3AAF4BAF5CAF30914414A8 -:1092C0003B8B409145144C8B509146145D8B8091A3 -:1092D00047148E8B909140149C8FA0914114AD8FB8 -:1092E000B0914214BE8FE0914314EF8F3090481438 -:1092F00020904914F0914A14F98320914B142A8349 -:109300008091A7135BA5851709F4F4C649895A898A -:10931000452B09F033C224965FAD24978B8D5817E7 -:1093200009F478C7A82EB12CA9E2AA9DC001AB9D73 -:10933000900D1124FC01ED53FF4EFA8BE98B8091C7 -:109340002614882319F010922614BCC0809125148D -:109350008F5F853019F08093251402C01092251478 -:10936000E091251421E12E9FF0011124E353FC4EDE -:1093700089E28A9DA0018B9D500D11244D535F4EB3 -:109380007A01DA018C91808311964D915D916D91F6 -:109390007C911497DB01CA0123E0880F991FAA1F53 -:1093A000BB1F2A95D1F781839283A383B483D7010E -:1093B00015964D915D916D917C911897DB01CA01D5 -:1093C00033E0880F991FAA1FBB1F3A95D1F78583F9 -:1093D0009683A783B087D70119964D915D916D91C2 -:1093E0007C911C97DB01CA0143E0880F991FAA1FDB -:1093F000BB1F4A95D1F781879287A387B487D7018E -:109400001D966D917D918D919C9150978B019C0142 -:1094100053E0000F111F221F331F5A95D1F7058704 -:1094200016872787308B0E9426706DAF7EAF8FAF77 -:1094300021969FAF2197F70125A136A147A150A5FD -:109440000E948D6F6DA37EA38FA398A79B01AC0193 -:1094500060E070E080EA9FE30E948D6F69AF7AAFB1 -:109460008BAF9CAF2396FFAD2397FF23D1F02B89C1 -:109470003C894D895E896B897C898D899E890E9492 -:10948000DF71D70151966D937D938D939C93549783 -:10949000BB89BF8BEC89E88FFD89F98F2E892A8FD4 -:1094A0000DC0D70151966D917D918D919C915497EE -:1094B0000E944C726F8B788F898F9A8F1DAA1EAA7B -:1094C0001FAA18AE29E22A9DF0012B9DF00D112450 -:1094D000ED53FF4EFE87ED87C1A0D2A0E3A0F4A01C -:1094E000A701960160E070E080E09FE30E948D6F2D -:1094F00069877A878B879C8723963FAD2397332391 -:10950000F1F142E040933714AD85BE8595964D90BC -:109510005D906D907C90989751968D909D90AD90B8 -:10952000BC905497A50194010E94DF719B01AC018E -:10953000C301B2010E94AC6E8B0189879D8720E038 -:1095400030E0A9010E94866F87FF1BC1A701960129 -:10955000C701B6010E94AD6EA30192010E94DF71A6 -:109560009B01AC01C501B4010E94AC6E0E944C721B -:109570006B8B7C8B8D8B9E8B3F82288615C11092C6 -:109580003714ED85FE85F5A1FF83AD85BE859696E2 -:10959000BC91B887ED85FE8507A110A5EB8DEF5F27 -:1095A000E23109F4E0E02496FFAD2497EF1789F04B -:1095B00029E22E9FF0011124ED53FF4E618972893B -:1095C000838994890E944C726B8B7C8B8D8B9E8BD4 -:1095D00004C01B8A1C8A1D8A1E8A2B893C894D89DE -:1095E0005E896B897C898D899E890E94DF712B0140 -:1095F0003C0189E28A9DA0018B9D500D11244D53A1 -:109600005F4E5AA349A3DA0151962D913D914D9198 -:109610005C9154972D873E874F87588BA301920109 -:109620006D857E858F8598890E94AC6E29853A85E7 -:109630004B855C850E94DF712F813885A8010E94CF -:10964000AD6E20E030E040E05FE30E94DF71362E37 -:10965000272E89839A8320E030E0A9010E94A4711B -:1096600018160CF095C0232D322D49815A816F8137 -:109670007885C8010E94A47118160CF071C0E9A188 -:10968000FAA1858C968CA78CB0A0A3019201C5018C -:10969000B4010E94AC6E29853A854B855C850E9499 -:1096A000DF716B837D838E839C839B01AC01632D73 -:1096B000722D89819A810E94A471181694F5C501B2 -:1096C000B4010E944C726C8F7D8F8E8F9F8FA5018D -:1096D00094016D857E858F8598890E94866F8111A2 -:1096E00006C0F1E0F093371409831A835DC02D851D -:1096F0003E854F855889C501B4010E94AC6E29850D -:109700003A854B855C850E94DF719B01AC016F81BE -:109710007885C8010E94AC6E6F83788789839A83AD -:1097200043C0A7019601C701B6010E94AD6E232D6B -:10973000322D49815A810E94DF71A30192010E945A -:10974000AD6E0E944C726C8F7D8F8E8F9F8F3F828B -:1097500028863B822D8229812E833A813C8324C036 -:1097600042E04093371409831A835F895C8F888DA8 -:109770008D8F998D9E8FAA8DAF8F16C03F822886C0 -:1097800017C03F8228861B8A1C8A1D8A1E8A10C029 -:10979000BB89BC8FEC89ED8FFD89FE8F2E892F8FC1 -:1097A0001F82188619821A8200E010E019861D8631 -:1097B00022965FAD2297452F50E05AA749A786E031 -:1097C000849FF001859FF00D1124E855FC4E809197 -:1097D00025148283A989BA899596BC91B8ABE98989 -:1097E000FA89F6A1F9ABA989BA899796BC91269610 -:1097F000BFAF2697E989FA89F0A52796FFAF27978B -:1098000029AD3AAD4BAD5CAD68A979A98B2F9F2FDF -:109810000E94AC6E6CA77DA78EA79FA720E030E0CA -:10982000A9010E94866F87FF04C01CA61DA61EA664 -:109830001FA62091371428A32B813D814E815C8186 -:109840006F81788589819A810E94866F811105C018 -:1098500032E028963FAF289704C041E028964FAFEA -:10986000289728A859A92E965FAF2E9726968FADD8 -:1098700026972D968FAF2D9727963FAC27978EE38F -:10988000C82E83ECD82E8EE2E82E89E3F82E412CE8 -:10989000512C3201C9A2DAA2EBA2FCA238A13323D7 -:1098A00021F0313009F485C0C5C0A989BA899196E3 -:1098B0002D913D914D915C919497C701B6010E9405 -:1098C000DF714B015C0120E030E040E05FE30E948B -:1098D000DF712F89388D498D5A8D0E94AD6EA70199 -:1098E00096010E94DF719B01AC01622D2E967FAD27 -:1098F0002E972D968FAD2D97932D0E94AC6E262E10 -:109900002E967FAF2E972D968FAF2D97392E2F81C4 -:10991000388549815A810E94866F87FF3DC02F811B -:10992000388549815A8168A979A926968FAD2697ED -:1099300027969FAD27970E94AC6E9B01AC010E94B9 -:10994000AD6E6B017C012C8D3D8D4E8D5F8D6F89D1 -:10995000788D898D9A8D0E94AD6E9B01AC01C701F7 -:10996000B6010E948D6F6B017C012896BFAD2897D0 -:10997000B8A3EC8DEF8BFD8DF88F2E8D298F3F8D49 -:109980003A8F2F8048852E964FAF2E9759812D966E -:109990005FAF2D973A80EBC0A50194016F89788D58 -:1099A000898D9A8D0E94AD6E6F8B788F898F9A8F7B -:1099B000DEC02C8D3D8D4E8D5F8DC701B6010E949E -:1099C000DF719B01AC01622D2E967FAD2E972D96F7 -:1099D0008FAD2D97932D0E94AC6E4B015C012B81B6 -:1099E0003D814E815C810E94866F87FFB8C02B81CC -:1099F0003D814E815C81622D2E967FAD2E972D96F6 -:109A00008FAD2D97932D0E94AC6E2C8D3D8D4E8D7C -:109A10005F8D0E948D6F6B017C012B808D812E9656 -:109A20008FAF2E979E812D969FAF2D973C80A2E001 -:109A3000A8A39DC0E989FA8921A132A143A154A11B -:109A4000C701B6010E94DF714B015C012F89388D7F -:109A5000498D5A8D0E94866F87FF52C020E030E00A -:109A600040E05FE3C501B4010E94DF719B01AC01DE -:109A70006F89788D898D9A8D0E94AC6EA7019601B1 -:109A80000E94DF719B01AC01622D2E967FAD2E9757 -:109A90002D968FAD2D97932D0E94AC6E29966FAFAA -:109AA00029972A967FAF2A972B968FAF2B972C96C4 -:109AB0009FAF2C97980149855D850E94A471181667 -:109AC000FCF4A50194016F89788D898D9A8D0E948F -:109AD000AC6E6F8B788F898F9A8F29962FAC2997D0 -:109AE0002A96FFAD2A972E96FFAF2E972B962FAD75 -:109AF0002B972D962FAF2D972C963FAC2C9737C0D8 -:109B0000980149855D85622D2E967FAD2E972D9605 -:109B10008FAD2D97932D0E94AC6E9B01AC010E94DE -:109B2000AD6E6B017C012B893C894D895E896F8903 -:109B3000788D898D9A8D0E94AD6E9B01AC01C70115 -:109B4000B6010E948D6F6B017C01202E2E961FAFF7 -:109B50002E9739852D963FAF2D973D8408C0282C30 -:109B60002E969FAE2E972D96AFAE2D973B2CA7012C -:109B70009601C301B2010E94AD6E2B013C0129A1E7 -:109B80003AA14BA15CA10E94866F87FF07C0A30189 -:109B9000920169A17AA18BA19CA120C02CA53DA511 -:109BA0004EA55FA5622D2E967FAD2E972D968FAD7B -:109BB0002D97932D0E94A471181644F52EE333ECD3 -:109BC0004EE259E369A17AA18BA19CA10E94AD6EDE -:109BD00069A37AA38BA39CA3A30192010E94AC6EFC -:109BE0006B017C01980149855D85622D2E967FADC4 -:109BF0002E972D968FAD2D97932D0E94A471181638 -:109C00000CF44CCE48A14093371403C058A1509394 -:109C100037142DA13EA14FA158A5622D2E967FADE0 -:109C20002E972D968FAD2D97932D0E94DF7168A3EF -:109C300079A38CA798AB0E94736F6B017C016DAD0B -:109C40007EAD8FAD21969FAD21970E94736F4B0122 -:109C50005C01A70196010E94AC6E0E94FA6F69AB8D -:109C60007AAB8BAB9CABA6E089A59AA5A89FF00127 -:109C7000A99FF00D1124E855FC4E29A93AA931837A -:109C80002083232B09F087C023965FAD23975523AC -:109C900009F481C0C801A985BD85809338149093CB -:109CA0003914A0933A14B0933B148B899C89AD89E5 -:109CB000BE898093441490934514A0934614B093A6 -:109CC00047148C8D9D8DAE8DBF8D809340149093E5 -:109CD0004114A0934214B09343148B819D81AE81B3 -:109CE000BC8180934C1490934D14A0934E14B09368 -:109CF0004F148F819885A981BA81809348149093DD -:109D00004914A0934A14B0934B1422968FAD229716 -:109D10008093CC13A989BA89B0932414A0932314F7 -:109D200029AD3AAD4BAD5CAD20932F143093301478 -:109D300040933114509332143B8D3093A5138DA171 -:109D40009EA1AFA1B8A580932B1490932C14A0933F -:109D50002D14B0932E149BA59093221410923C14B2 -:109D600010923D1410923E1410923F14109233142E -:109D7000109234141092351410923614C092271495 -:109D8000D0922814E0922914F0922A142DA13EA119 -:109D90004FA158A565C12DA93EA94FA958ADC30132 -:109DA000B2010E94AD6E2B013C0128A139A14CA546 -:109DB00058A9C501B4010E94AC6E9B01AC01C3015E -:109DC000B2010E948D6F4B015C0128A139A14CA505 -:109DD00058A9C701B6010E94AC6EA50194010E946A -:109DE000DF716DAB7EAB8FAB98AF20EC31EE44E60C -:109DF0005EE4C501B4010E94DF710E94736F0E948E -:109E0000FA6F603DE7E07E078105910560F446E06A -:109E100029A53AA5429FF001439FF00D1124E85572 -:109E2000FC4E158253C0603A5FE0750781059105CD -:109E300060F426E0A9A5BAA52A9FF0012B9FF00D9A -:109E40001124E855FC4E31E011C060344FE1740735 -:109E50008105910568F426E0A9A5BAA52A9FF0011D -:109E60002B9FF00D1124E855FC4E32E035830CC0D9 -:109E7000A6E049A55AA5A49FF001A59FF00D1124C5 -:109E8000E855FC4EB3E0B58346E029A53AA5429FCC -:109E9000F001439FF00D1124E855FC4E2581022E60 -:109EA00004C096958795779567950A94D2F7A9A9E6 -:109EB000BAA902C0AA0FBB1F2A95E2F7B183A083FB -:109EC00061157105B1E08B07910568F446E029A59D -:109ED0003AA5429FF001439FF00D1124E855FC4E36 -:109EE0007483638304C08FEF9FEF94838383BBA449 -:109EF000B39496E0B91201C0B12C980149855D85F3 -:109F0000622D2E967FAD2E972D968FAD2D97932D8A -:109F10000E94A4711816CCF4822D2E969FAD2E9718 -:109F20002D96AFAD2D97B32DE989FA8985A396A318 -:109F3000A7A3B0A7F8A1FDAF29A12EAF3CA53FAFC5 -:109F400048A921964FAF2197CDC020E030E0A9016C -:109F5000622D2E967FAD2E972D968FAD2D97932D3A -:109F60000E94A47118160CF0A6C0C801A985BD8571 -:109F70008093381490933914A0933A14B0933B14FF -:109F80008B899C89AD89BE89809344149093451434 -:109F9000A0934614B09347148C8D9D8DAE8DBF8DCC -:109FA0008093401490934114A0934214B0934314AF -:109FB0008B819D81AE81BC8180934C1490934D1414 -:109FC000A0934E14B0934F148F819885A981BA81C4 -:109FD0008093481490934914A0934A14B0934B145F -:109FE0005BA55093CC1389899A899093241480930C -:109FF000231429AD3AAD4BAD5CAD20932F143093B3 -:10A00000301440933114509332143B8D3093A51388 -:10A010008DA19EA1AFA1B8A580932B1490932C1471 -:10A02000A0932D14B0932E14B092221410923C14CD -:10A0300010923D1410923E1410923F14109233145B -:10A04000109234141092351410923614C0922714C2 -:10A05000D0922814E0922914F0922A149C01AD01A8 -:10A06000C701B6010E948D6FA989BA8995966D9333 -:10A070007D938D939C9398975CD8BB8DB093C210C1 -:10A08000C35BDF4F0FB6F894DEBF0FBECDBFDF91CD -:10A09000CF911F910F91FF90EF90DF90CF90BF90E5 -:10A0A000AF909F908F907F906F905F904F903F9078 -:10A0B0002F900C9485342496EFAD2497FB8DEF17E9 -:10A0C00079F08F2F8F5F823109F480E02B8D2596F8 -:10A0D0003FAD2597231303C025968FAF25978B8F10 -:10A0E0001A8A198A3F8028844BA522964FAF22975F -:10A0F000BBA606C9C801A985BD8580933814909375 -:10A100003914A0933A14B0933B148B899C89AD8980 -:10A11000BE898093441490934514A0934614B09341 -:10A1200047148F89988DA98DBA8D80933C14909394 -:10A130003D14A0933E14B0933F148C8D9D8DAE8D35 -:10A14000BF8D8093401490934114A0934214B09318 -:10A1500043148B819D81AE81BC8180934C1490937C -:10A160004D14A0934E14B0934F14832D922DA981BA -:10A17000BA818093481490934914A0934A14B093E1 -:10A180004B1422968FAD22978093CC13A989BA895C -:10A19000B0932414A093231429AD3AAD4BAD5CAD1C -:10A1A00020932F1430933014409331145093321471 -:10A1B0003B8D3093A5138DAD9EADAFAD2196BFAD58 -:10A1C00021978093271490932814A0932914B09377 -:10A1D0002A148DA19EA1AFA1B8A580932B149093B2 -:10A1E0002C14A0932D14B0932E142DA93EA94FA981 -:10A1F00058AD209333143093341440933514509356 -:10A2000036143BA53093221425964FAD25974093E5 -:10A21000C2108FC0C801A985BD8580933814909362 -:10A220003914A0933A14B0933B148B899C89AD895F -:10A23000BE898093441490934514A0934614B09320 -:10A2400047148F89988DA98DBA8D80933C14909373 -:10A250003D14A0933E14B0933F148C8D9D8DAE8D14 -:10A26000BF8D8093401490934114A0934214B093F7 -:10A2700043148B819D81AE81BC8180934C1490935B -:10A280004D14A0934E14B0934F14832D922DA98199 -:10A29000BA818093481490934914A0934A14B093C0 -:10A2A0004B1422965FAD22975093CC131092241436 -:10A2B0001092231489AD9AADABADBCAD80932F1431 -:10A2C00090933014A0933114B093321424969FAD20 -:10A2D00024979093A5138DAD9EADAFAD2196BFADE4 -:10A2E00021978093271490932814A0932914B09356 -:10A2F0002A142DA13EA14FA158A520932B143093D1 -:10A300002C1440932D1450932E148DA99EA9AFA9FF -:10A31000B8AD8093331490933414A0933514B09354 -:10A3200036149BA5909322142596AFAD2597A09344 -:10A33000C210C35BDF4F0FB6F894DEBF0FBECDBFB8 -:10A34000DF91CF911F910F91FF90EF90DF90CF9011 -:10A35000BF90AF909F908F907F906F905F904F9045 -:10A360003F902F900895CF93DF930E940A2A8BE2AB -:10A37000E5E2F4E1DF011D928A95E9F783E2EFE976 -:10A38000F0E1DF011D928A95E9F7109224141092F2 -:10A3900023141092A7131092CC1381E080932214FF -:10A3A00010929E100E948B2981B390919D10917004 -:10A3B000C92FB0E0DB2F96E0CC0FDD1F9A95E1F7B7 -:10A3C0008F7BC82BC1BBEBE0F1E0908180919D10A9 -:10A3D0008270880F880F977F892B808381B390913B -:10A3E0009D1092FB992790F98E7F892B81BB8091DC -:10A3F0009C1080FD8F9A80FF8F98808190919C1097 -:10A4000092708D7F892B808321B390919C109470E2 -:10A41000892F90E095958795922F9D7F892B81BB01 -:10A42000DF91CF910895CF93DF93C62F813009F448 -:10A430008EC038F1823009F069C10E9438408CE644 -:10A440000E94D33F0E9415408C2F0E94D33F0E9450 -:10A4500015400E9438408DE60E94D33F0E9415406F -:10A4600062E070E080E090E00E941139559A5D9AB8 -:10A4700062E070E080E090E00E941139D8E0C0E036 -:10A4800002C10E949F418CE60E942F410E947941A7 -:10A490008C2F0E942F410E9479410E949F418DE69E -:10A4A0000E942F410E94794162E070E080E090E0DC -:10A4B0000E941139399A419A62E070E080E090E0A0 -:10A4C0000E941139D8E0C0E0439865E070E080E078 -:10A4D00090E00E941139439ACC0F65E070E080E073 -:10A4E00090E00E94113939983199C16065E070E0BF -:10A4F00080E090E00E941139D15031F74398399AA9 -:10A50000419A62E070E080E090E00E941139439A45 -:10A5100065E070E080E090E00E941139439862E0CD -:10A5200070E080E090E00E941139399A419A62E02F -:10A5300070E080E090E00E941139439862E070E0A2 -:10A5400080E090E00E9411390E946141E0C00E94C9 -:10A55000FD408CE60E944D400E94C5408C2F0E9419 -:10A560004D400E94C5400E94FD408DE60E944D4036 -:10A570000E94C54062E070E080E090E00E941139E6 -:10A5800080910101846080930101809102018460C7 -:10A590008093020162E070E080E090E00E94113957 -:10A5A000D8E0C0E0809102018F778093020165E0DE -:10A5B00070E080E090E00E94113980910201806893 -:10A5C00080930201CC0F65E070E080E090E00E9493 -:10A5D0001139809101018B7F8093010180910001ED -:10A5E00082FDC16065E070E080E090E00E9411397A -:10A5F000D150C1F6809102018F7780930201809142 -:10A600000101846080930101809102018460809344 -:10A61000020162E070E080E090E00E9411398091D8 -:10A62000020180688093020165E070E080E090E0C4 -:10A630000E941139809102018F778093020162E0BC -:10A6400070E080E090E00E94113980910101846007 -:10A65000809301018091020184608093020162E095 -:10A6600070E080E090E00E941139809102018F77C4 -:10A670008093020162E070E080E090E00E94113976 -:10A680000E94964044C05E9865E070E080E090E0F3 -:10A690000E9411395E9ACC0F65E070E080E090E096 -:10A6A0000E94113955984D99C16065E070E080E0D5 -:10A6B00090E00E941139D15031F75E98559A5D9A19 -:10A6C00062E070E080E090E00E9411395E9A65E0FF -:10A6D00070E080E090E00E9411395E9862E070E0E6 -:10A6E00080E090E00E941139559A5D9A62E070E036 -:10A6F00080E090E00E9411395E9862E070E080E0B6 -:10A7000090E00E9411390E94004001C0C0E08C2FEF -:10A71000DF91CF910895EEEAF4E124813581DC01E7 -:10A720000E94FA72A1E0B1E02C9128602C93A0EA7B -:10A73000B0E02C9120682C93DC01CB012AE0B69587 -:10A74000A795979587952A95D1F79093A90080931F -:10A75000A800868180618093A1000895CF93DF9344 -:10A7600021E5829FC0011124EC01D55F40E550E056 -:10A77000BE018EE594E10E94D75C892B59F41092BA -:10A780005E1440E550E06EE574E1CE010E94945CF9 -:10A7900080E001C081E0DF91CF91089590E0FC015D -:10A7A0003197E231F10508F04EC08827E654FF4F9B -:10A7B0008F4F0C94F272809180008F7703C080914C -:10A7C00080008F7D80938000089580918000877F36 -:10A7D000F9CF84B58F7702C084B58F7D84BD08958D -:10A7E0008091B0008F7703C08091B0008F7D8093FF -:10A7F000B0000895809190008F7707C080919000FD -:10A800008F7D03C080919000877F80939000089592 -:10A810008091A0008F7707C08091A0008F7D03C03A -:10A820008091A000877F8093A000089580912001EF -:10A830008F7707C0809120018F7D03C08091200118 -:10A84000877F8093200108951F93CF93DF93282F54 -:10A8500030E0F901EA57F54F8491F901E05CF54FDA -:10A86000D491F901E650F64FC491CC23B9F0162FDC -:10A87000811194DFEC2FF0E0EE0FFF1FE052F64F56 -:10A88000A591B4919FB7F894111104C08C91D09503 -:10A89000D82302C0EC91DE2BDC939FBFDF91CF91D8 -:10A8A0001F910895863308F0865390917B00282FDE -:10A8B0002870977F922B90937B00877080648093A1 -:10A8C0007C0080917A00806480937A0080917A0085 -:10A8D00086FDFCCF809178002091790090E0922B4A -:10A8E00008951F920F920FB60F9211240BB60F927C -:10A8F0002F933F934F935F936F937F938F939F9388 -:10A90000AF93BF93EF93FF938091591490915A1492 -:10A910009093250180932401E0915714F0915814ED -:10A92000309709F01995FF91EF91BF91AF919F91E9 -:10A930008F917F916F915F914F913F912F910F90E8 -:10A940000BBE0F900FBE0F901F9018951F920F9285 -:10A950000FB60F9211240BB60F922F933F934F9384 -:10A960005F936F937F938F939F93AF93BF93EF9377 -:10A97000FF938091B0149091B1149093A5008093AF -:10A98000A400E091AE14F091AF14309709F019953E -:10A99000FF91EF91BF91AF919F918F917F916F91B7 -:10A9A0005F914F913F912F910F900BBE0F900FBE73 -:10A9B0000F901F901895E2E7F0E080818E7F8083F2 -:10A9C00008951F920F920FB60F9211248F939F93A9 -:10A9D00080910802909109029093950080939400D1 -:10A9E0009F918F910F900FBE0F901F9018951F92FF -:10A9F0000F920FB60F9211240BB60F922F933F9325 -:10AA00004F935F936F937F938F939F93AF93BF9376 -:10AA1000EF93FF9380915214909153148093B2005E -:10AA2000E0915014F0915114309709F01995FF916D -:10AA3000EF91BF91AF919F918F917F916F915F91B6 -:10AA40004F913F912F910F900BBE0F900FBE0F9023 -:10AA50001F9018954F925F926F927F92AF92BF9224 -:10AA6000CF92DF92EF92FF920F931F93CF93DF93DA -:10AA70006C01FB015A01309729F08081D601A80FA3 -:10AA8000B11D01C0DC018C91ED018D3229F42296BB -:10AA900011968C9101E008C08B3211F0219603C011 -:10AAA000229611968C9100E0512C612C10E020E050 -:10AAB00030E0A9017E0160ED762E780E89E08715E1 -:10AAC000D8F06394A8E0A61598F051101150A5E0B5 -:10AAD000B0E00E940973DC01CB01880F991FAA1F07 -:10AAE000BB1F9C01AD01270D311D411D511D0BC028 -:10AAF000511009C01F5F07C0BEEF7B1208C0511084 -:10AB000006C0552453942196D7018C91D3CF66204B -:10AB100009F450C07F01CA01B9010E9426702B01BF -:10AB20003C0120E030E0A9010E94866F882349F1B2 -:10AB30001F3F64F42AE037ED43E25CE3C301B20156 -:10AB40000E94DF712B013C011E5FF2CF1F3F59F4C1 -:10AB50002DEC3CEC4CEC5DE3C301B2010E94DF71D3 -:10AB60002B013C010EC0112361F020E030E040E2F7 -:10AB700051E4C301B2010E94DF712B013C0111506D -:10AB8000F2CF002351F077FA709477F87094F501C2 -:10AB9000408251826282738206C0D5014D925D92DD -:10ABA0006D927C921397CC19DD09C150F701C083D7 -:10ABB00081E001C080E0DF91CF911F910F91FF9064 -:10ABC000EF90DF90CF90BF90AF907F906F905F90AD -:10ABD0004F9008958091B51484FD25C09FB7F894D7 -:10ABE0008091B51480618093B5149FBF0E94D02CD2 -:10ABF00020D780910715982F9C7021F4909108150B -:10AC0000913089F49FB7843029F4F8948091051528 -:10AC1000806204C0F89480910515886080930515C2 -:10AC20009FBF0C940A2A08952F923F924F925F92F1 -:10AC30006F927F928F929F92AF92BF92CF92DF924C -:10AC4000EF92FF920F931F93CF93DF93CDB7DEB7B1 -:10AC5000C756D1090FB6F894DEBF0FBECDBF6696BA -:10AC60008FAF66971B016B962CAF3DAF4EAF5FAFBA -:10AC70006B97A8960FAFA8978091F41485FF51C0E9 -:10AC80003B0107EB14E17B012CE0E20EF11CDD241B -:10AC9000D394D3018D909D90AD90BD903D0120E067 -:10ACA00030E0A901C501B4010E94A471181654F046 -:10ACB000F80124A135A146A157A1C501B4010E9404 -:10ACC000866F87FDD092091580910915882319F1A7 -:10ACD00080910715883061F07DDF9FB7F8948091EF -:10ACE00005158560809305159FBF0E945A3919C0CC -:10ACF0009FB7F8948091B51488608093B5149FBF76 -:10AD00000E945A398091061581110BC08091071558 -:10AD10008111F6CFE1CF0C5F1F4FE614F70409F065 -:10AD2000B8CF80910715823009F47CC3F10180818E -:10AD30009181A281B38165968CAF9DAFAEAFBFAF5D -:10AD4000659784819581A681B78161968CAF9DAF0F -:10AD5000AEAFBFAF619780859185A285B3852D96F3 -:10AD60008CAF9DAFAEAFBFAF2D97AE01475B5F4FCE -:10AD7000BE01635B7F4FCE018F5A9F4F0E94B74148 -:10AD80002D96ECACFDAC0EAD1FAD2D9761962CADA4 -:10AD90003DAD4EAD5FAD619765966CAD7DAD8EAD51 -:10ADA0009FAD6597DE0191964D01FE017D965F0195 -:10ADB00018976D010E940B43E9A0FAA00BA11CA1FA -:10ADC0002D8D3E8D4F8D58A1698D7A8D8B8D9C8DEB -:10ADD0000E943746882309F421C36091810D709148 -:10ADE000820D8091830D9091840D0E9428702B011B -:10ADF0003C0160917D0D70917E0D80917F0D909151 -:10AE0000800D0E9428706F966CAF7DAF8EAF9FAFA4 -:10AE10006F976091790D70917A0D80917B0D909173 -:10AE20007C0D0E942870FE01BD964F019E01275D9A -:10AE30003F4F5901DE0195966D01830172016F96B6 -:10AE40002CAD3DAD4EAD5FAD6F970E94A645A40100 -:10AE5000B501C6010E9462420E9459326696BFAD9A -:10AE60006697BB2319F0B13041F0DDC0E1E0F0E0BE -:10AE70006796FFAFEEAF6797DAC020E030E048ECAE -:10AE800052E46B966CAD7DAD8EAD9FAD6B970E941D -:10AE9000A471181654F480E090E0A8ECB2E46B962C -:10AEA0008CAF9DAFAEAFBFAF6B972DA13EA14FA1B1 -:10AEB00058A5D1016D917D918D919C910E94AC6EB0 -:10AEC0002B013C0129A53AA54BA55CA5F1016481A4 -:10AED0007581868197810E94AC6E4B015C012DA526 -:10AEE0003EA54FA558A9D10118966D917D918D91E0 -:10AEF0009C911B970E94AC6E6B017C01A301920197 -:10AF0000C301B2010E94DF712B013C01A501940134 -:10AF1000C501B4010E94DF719B01AC01C301B20104 -:10AF20000E94AD6E4B015C01A7019601C701B601FD -:10AF30000E94DF719B01AC01C501B4010E94AD6E9E -:10AF40000E944C7220E030E040EF51E40E94DF713B -:10AF50006B962CAD3DAD4EAD5FAD6B970E948D6F86 -:10AF60000E94FA6F67967FAF6EAF67976A30710580 -:10AF700030F42AE030E067963FAF2EAF679720E0CD -:10AF800030E040E950E46B966CAD7DAD8EAD9FAD89 -:10AF90006B970E94DF7120E030E048EC52E40E94A1 -:10AFA0008D6F20E030E040E05FE30E94AD6E20E076 -:10AFB00030E040E752E40E94DF7120E030E040E7FB -:10AFC00052E40E94DF716B017C016093CF14709397 -:10AFD000D0148093D1149093D2146093D3147093AF -:10AFE000D4148093D5149093D61420E030E442E931 -:10AFF00055E40E94A47187FF09C0C092D714D09273 -:10B00000D814E092D914F092DA1411C080E090E4E0 -:10B01000A2E9B5E48093D7149093D814A093D914DF -:10B02000B093DA1404C067961FAE1EAE679767969A -:10B03000AEADBFAD6797BD0180E090E00E94267085 -:10B040006B017C012DA13EA14FA158A5F1016081AA -:10B050007181828193810E94AC6EA70196010E944A -:10B060008D6F6F966CAF7DAF8EAF9FAF6F9729A539 -:10B070003AA54BA55CA5D10114966D917D918D915A -:10B080009C9117970E94AC6EA70196010E948D6F4C -:10B09000A3966CAF7DAF8EAF9FAFA3972DA53EA5B6 -:10B0A0004FA558A9F10160857185828593850E941D -:10B0B000AC6EA70196010E948D6FA7966CAF7DAF15 -:10B0C0008EAF9FAFA79722242394312C67962EAD85 -:10B0D0003FAD67972215330508F49EC1B101032CDB -:10B0E000000C880B990B0E9428706B017C019B015E -:10B0F000AC016F966CAD7DAD8EAD9FAD6F970E942C -:10B10000DF719B01AC016DA17EA18FA198A50E946A -:10B11000AD6E6D877E878F87988BA7019601A3966A -:10B120006CAD7DAD8EAD9FADA3970E94DF719B018D -:10B13000AC0169A57AA58BA59CA50E94AD6E698B13 -:10B140007A8B8B8B9C8BA7019601A7966CAD7DADFE -:10B150008EAD9FADA7970E94DF719B01AC016DA5DD -:10B160007EA58FA598A90E94AD6E6D8B7E8B8F8B6F -:10B17000988FAE014B5E5F4FBE016F5E7F4FCE0179 -:10B180000D960E94B741ED88FE880F89188D298998 -:10B190003A894B895C896D857E858F859889DE012A -:10B1A000DD964D01FE01EF5BFF4F5F0118966D01CB -:10B1B0000E940B432196ECACFDAC0EAD1FAD219768 -:10B1C00025962CAD3DAD4EAD5FAD259729966CAD66 -:10B1D0007DAD8EAD9FAD29970E943746882309F437 -:10B1E00017C16D857E858F8598896093850D7093D5 -:10B1F000860D8093870D9093880D29893A894B8914 -:10B200005C892093890D30938A0D40938B0D509368 -:10B210008C0DED88FE880F89188DE0928D0DF092CF -:10B220008E0D00938F0D1093900DFE01F1964F013E -:10B23000DE01D5965D0138966F010E940B43C9A8C7 -:10B24000DAA8EBA8FCA88DA89EA8AFA8B8AC20915E -:10B250006D0D30916E0D40916F0D5091700D69AD77 -:10B260007AAD8BAD9CAD0E94AC6E20E030E040EA40 -:10B2700052E40E94DF710E94F56F072E000C880BCC -:10B28000990B0E94287069837A838B839C83209119 -:10B29000710D3091720D4091730D5091740DC50177 -:10B2A000B4010E94AC6E20E030E040EA52E40E941B -:10B2B000DF710E94F56F072E000C880B990B0E941E -:10B2C00028706D837E838F8398872091750D3091D0 -:10B2D000760D4091770D5091780DC701B6010E940F -:10B2E000AC6E20E030E044EB52E40E94AD6E20E012 -:10B2F00030E040EA52E40E94DF710E94F56F072EB1 -:10B30000000C880B990B0E94287069877A878B87BD -:10B310009C870E945A3980910615811181C09091B5 -:10B32000A51380916510981303C00E94A233F1CF3A -:10B3300089809A80AB80BC80C501B4010E94F56F02 -:10B340006093790D70937A0D80937B0D90937C0DB3 -:10B35000CD80DE80EF80F884C701B6010E94F56FD2 -:10B3600060937D0D70937E0D80937F0D9093800D83 -:10B3700049845A846B847C84C301B2010E94F56FB6 -:10B380006093810D7093820D8093830D9093840D53 -:10B390002091B7143091B8144091B9145091BA1457 -:10B3A000C501B4010E948D6F69837A838B839C836E -:10B3B0002091BB143091BC144091BD145091BE1427 -:10B3C000C701B6010E948D6F6D837E838F8398873E -:10B3D0002091BF143091C0144091C1145091C214F7 -:10B3E000C301B2010E948D6F69877A878B879C8722 -:10B3F000A8962FADA8976B964CAD5DAD6EAD7FADA9 -:10B400006B97CE0101960E94D23531E03093950DB5 -:10B41000FFEF2F1A3F0A5ACE80E004C083E302C038 -:10B4200082E000C0C959DF4F0FB6F894DEBF0FBEEF -:10B43000CDBFDF91CF911F910F91FF90EF90DF90E3 -:10B44000CF90BF90AF909F908F907F906F905F90C4 -:10B450004F903F902F9008951F920F920FB60F922A -:10B4600011240BB60F922F933F934F935F936F93DB -:10B470007F938F939F93AF93BF93EF93FF938091AD -:10B480000715813069F080910515811109C0A2DB93 -:10B490009FB7F894809105158360809305159FBF31 -:10B4A000FF91EF91BF91AF919F918F917F916F919C -:10B4B0005F914F913F912F910F900BBE0F900FBE58 -:10B4C0000F901F90189589B180719091F41496FD9A -:10B4D00002C090E18927882319F011F087E00895D0 -:10B4E00080E008952F923F924F925F926F927F92E9 -:10B4F0008F929F92AF92BF92CF92DF92EF92FF9284 -:10B500000F931F93CF93DF93CDB7DEB768970FB636 -:10B51000F894DEBF0FBECDBF909106159111A6C164 -:10B52000782E27EB34E1398B288B5901CE010D960B -:10B530004C0100E010E0C12CD12C7601A72DB0E029 -:10B54000BD8BAC8B802F002321F0013021F094E0E3 -:10B5500003C091E001C092E0F40191934F012C8966 -:10B560003D8902C0359527958A95E2F720FF1BC0DB -:10B5700020E030E040EC5FEBD50194966D917D9139 -:10B580008D919C9197970E94DF71362E472E582EF1 -:10B59000692EA70196010E94866F87FD04C0C32C07 -:10B5A000D42CE52CF62C0F5F1F4FB4E0AB0EB11C72 -:10B5B0000330110539F68090FA149090FB14A09096 -:10B5C000FC14B090FD1484E0682E01E06AE075E19F -:10B5D000CE0101960E942E488091F514E82FF0E0EC -:10B5E000FF8BEE8BFE01319626E035E13B8B2A8BFB -:10B5F0001901CE010D962C0180E090E0188E10E02C -:10B60000B701A60170582C893D89082E02C03595D6 -:10B6100027950A94E2F720FF25C0A88DAF5FA88F79 -:10B62000D10114961D921D921D921C9217972E897E -:10B630003F89082E02C0359527950A94E2F720FF2E -:10B6400003C0002319F007C0002329F0C082D18273 -:10B65000E282F38204C04083518362837383D20108 -:10B660002C91122B0196BFEF4B1A5B0A349624E003 -:10B67000220E311C8330910531F6388D632F70E036 -:10B6800080E090E00E9426700E944C729B01AC0109 -:10B69000C501B4010E94DF716B017C011093231579 -:10B6A0000E94633420E0B701A601CE0101960E94FA -:10B6B000D2350E94BB480E94A42C0023E1F003DF96 -:10B6C000FE013D9620E030E090E06191462F41235D -:10B6D00059F0AC01022E02C0559547950A94E2F745 -:10B6E00040FF02C0609516232F5F3F4F2330310586 -:10B6F00061F7109323150E94BB488091B5148473A1 -:10B70000B1F08091B514807321F064DA0E945A3947 -:10B71000ADC00111A6C0D7DE8721B9F79FB7F89455 -:10B720008091B5148B7F8093B5149FBF04C0812F87 -:10B73000877009F0C2CF0E94B3510E947434809187 -:10B74000FE149091FF140E944F3981E00827C9F040 -:10B7500020E030E040EA50E460910015709101155E -:10B7600080910215909103150E94DF716B017C019D -:10B770008090F6149090F714A090F814B090F914FB -:10B7800010C0C0900015D0900115E0900215F09007 -:10B7900003158090FA149090FB14A090FC14B090C4 -:10B7A000FD146A94611012CFE090F514F12C809092 -:10B7B000001590900115A0900215B090031524017A -:10B7C000350177FA709477F8709400E010E08C8976 -:10B7D0009D89002E02C0959587950A94E2F780FF17 -:10B7E0002CC0C701002E02C0959587950A94E2F7F8 -:10B7F000A889B98980FF11C094962D913D914D91F2 -:10B800005C919797C501B4010E94AD6EE889F989F2 -:10B81000208131814281538106C02D913D914D910E -:10B820005C91C301B2010E94DF710E94AF71EA898D -:10B83000FB8964837583868397830F5F1F4F2A89F3 -:10B840003B892C5F3F4F3B8B2A8B888999890496D3 -:10B85000998B888B0330110509F0B9CF0E946334AE -:10B8600005C08091B51482FF59CF4FCF68960FB6AF -:10B87000F894DEBF0FBECDBFDF91CF911F910F9126 -:10B88000FF90EF90DF90CF90BF90AF909F908F9000 -:10B890007F906F905F904F903F902F900895EBE6D0 -:10B8A000F0E080818F7E8083E8E6F0E080818E7F0B -:10B8B0008083089554985C9A8091F41483FF0BC0A0 -:10B8C00080916B00806180936B0080916800816043 -:10B8D000809368000895E3CF6AE075E184E795E11D -:10B8E0000C942E48F894F999FECF92BD81BD81E069 -:10B8F0008FBB80B58627482F082E000C550B262FAE -:10B9000030E024233523232B39F06F3F19F060BD3D -:10B9100084E006C084E104C0882321F060BD84E295 -:10B920008FBBF99A789408959F92AF92BF92CF926D -:10B93000DF92EF92FF920F931F93CF93DF935C01FF -:10B940008A017B01E40EF51EEB01912C6C01C61AF5 -:10B95000D70ACE018C0D9D1DCE15DF0581F091100B -:10B9600008C0292D990C330B232F221F2227221FB9 -:10B9700001C021E06991922E960EB4DFEACF692DC5 -:10B98000C501800F911FDF91CF911F910F91FF9003 -:10B99000EF90DF90CF90BF90AF909F90A3CFF99999 -:10B9A000FECF92BD81BD81E08FBB80B508959F928F -:10B9B000AF92BF92CF92DF92EF92FF920F931F93BD -:10B9C000CF93DF935B018A017C01E40EF51EEC014D -:10B9D000912C6B01C81AD90AC6018C0F9D1FCE1578 -:10B9E000DF0581F0DCDF911008C0292D990C330BA5 -:10B9F000232F221F2227221F01C021E0982E920E02 -:10BA00008993EACFC501800F911FC9DF21E030E0A3 -:10BA1000981611F020E030E0C901DF91CF911F911D -:10BA20000F91FF90EF90DF90CF90BF90AF909F90DD -:10BA300008955C980895CF93DF93CDB7DEB7CC56C9 -:10BA4000D1090FB6F894DEBF0FBECDBF8091C00004 -:10BA500082608093C0001092C50080E18093C40092 -:10BA60009091C10090619093C1009091C100986045 -:10BA70009093C1009091C10090689093C100909103 -:10BA8000C80092609093C8001092CD008093CC00C3 -:10BA90009091C90090619093C9009091C9009860FD -:10BAA0009093C9009091C90090689093C9009091BB -:10BAB000D00092609093D0001092D5008093D40073 -:10BAC0009091D10090619093D1009091D1009860B5 -:10BAD0009093D1009091D10090689093D100909173 -:10BAE00030019260909330011092350180933401BF -:10BAF00080913101806180933101809131018860B2 -:10BB000080933101809131018068809331010E94DE -:10BB10005932869A879A829A80910A018860809326 -:10BB20000A0180910A01826080930A0180910701D5 -:10BB3000816080930701809A819A579A80910701CA -:10BB400080618093070180910701886080930701DD -:10BB500080910701846080930701809108018061D2 -:10BB60008093080180910801877F8093080180916C -:10BB700008018460809308018091F41482FF08C05A -:10BB80008A9A809108018160809308015F9A07C0BA -:10BB90008A98809108018E7F809308015F98809138 -:10BBA00081008F7E809381008091810088608093E6 -:10BBB0008100809180008C7F809380008091800044 -:10BBC0008F708093800080916E00887F80936E00DC -:10BBD00014BC15BC80916E00816080936E005498F7 -:10BBE0005C9A80916D00806180936D008091680007 -:10BBF0008460809368008AE090E00E944F390E9440 -:10BC0000863D399A3B9A419A439A8091010184601A -:10BC100080930101809101018068809301018091EE -:10BC20000201846080930201809102018068809308 -:10BC30000201559A569A5D9A5E9A0E94D14605E98C -:10BC40001EE081E090E07C012FEFE21AF20AA7DE0D -:10BC5000D8018D938D01C7018B3C9105A1F755E16A -:10BC6000C52E5EE0D52E87010F5F1F4FC70197DEFF -:10BC7000F60181936F0178010B34F1E01F0799F70A -:10BC80004BE9E42E4DE0F42E68012FEFC21AD20AE0 -:10BC9000C80185DED7018D937D018601B5ECCB16F9 -:10BCA000B1E0DB0689F720E030E04AE754E464E0E5 -:10BCB00071E080E090E00E942A3E84E893E06FDE2D -:10BCC00080935F0D85E893E06ADE8093600D01E666 -:10BCD0001DE088E993E07C01EFEFEE1AFE0A5FDEDB -:10BCE000D8018D938D01C701BCE9EB16B3E0FB06CB -:10BCF00091F705E61DE08EE893E07C01EFEFEE1A88 -:10BD0000FE0A4DDED8018D938D01C701B2E9EB1615 -:10BD1000B3E0FB0691F709E61DE082E89CE07C01B8 -:10BD2000EFEFEE1AFE0A3BDED8018D938D01C701BD -:10BD3000B6E8EB16BCE0FB0691F7C090690DD09019 -:10BD40006A0DE0906B0DF0906C0D20E030E044EB5C -:10BD500053E4C701B6010E94A471181644F0A7016C -:10BD60009601C701B6010E949472882341F0109297 -:10BD7000690D10926A0D10926B0D10926C0D0AE114 -:10BD80001DE08AEE93E07C01EFEFEE1AFE0A07DE7B -:10BD9000D8018D938D01C701B6EFEB16B3E0FB061A -:10BDA00091F76091690D70916A0D80916B0D909182 -:10BDB0006C0DFE0131967F018F0124E045E00E9469 -:10BDC000316CFF92EF928AE093E09F938F930E94F1 -:10BDD000AF330E94813D0E947E3D0E946D3D0E94D6 -:10BDE0008E3F0E94F93C80917A00876880937A00A8 -:10BDF0009B98A39A8FE08093910D0E94983E8AEBC6 -:10BE000092E09F938F938CE193E09F938F930E9496 -:10BE1000AF3388EC92E09F938F938FE293E09F93F0 -:10BE20008F930E94AF338FEC92E09F938F938FE3B9 -:10BE300093E09F938F930E94AF338091600D8F9317 -:10BE400080915F0D8F938EE493E09F938F930E9478 -:10BE5000AF338FE593E00E9458348EE1E6E0F5E1E0 -:10BE6000DF011D928A95E9F781E0809306157894A9 -:10BE70009091F4140FB6F894DEBF0FBECDBF94FDC1 -:10BE8000809307159E01235C3F4F6F963FAF2EAF07 -:10BE90006F971E0135E1230E311CCE018996A196C4 -:10BEA0009FAF8EAFA197DE011196A396BFAFAEAF45 -:10BEB000A3978091E00F8093DF0F8FE3EDE5F5E12D -:10BEC000DF011D928A95E9F760E875E180E00E9444 -:10BED000452E811103C087E00E94FF310C9A549ACD -:10BEE000549A0E94D02C549AA4DDE4DC54985C9AB5 -:10BEF0000E9474340E94B3510E946334EDDC1092AE -:10BF000006151092B514109205151092081510928E -:10BF1000091580910715813099F480ED99E00E9410 -:10BF20000A348AEA99E00E940A348DE599E00E9479 -:10BF30000A34A4961FAEA497A5961FAEA5973DC040 -:10BF400010920715F6CF8091060185FD20C00E9452 -:10BF5000DB541092960D809102018F7D8093020137 -:10BF60008091690D90916A0DA0916B0DB0916C0D4F -:10BF7000B0588093861090938710A0938810B09348 -:10BF8000891060E070E084EB92E40E94EA3E8091C8 -:10BF9000821090918310A0918410B0918510892B0C -:10BFA0008A2B8B2B51F41092960DE3E6F3E0FF936E -:10BFB000EF930E94AF330F900F908091960D8823DE -:10BFC000E1F0C1CFE92FF0E0E15AF04F80819F5FAF -:10BFD000903809F490E09093DF0F8F3F09F477C514 -:10BFE0008A3091F08D3081F0A596BFADA597BB2327 -:10BFF00009F439C5893209F42FC59091DF0F80917A -:10C00000E00F9813DFCF63C50EE514E1A4963FADB2 -:10C01000A497E32FF0E0E25AFB4E10820E945A39B7 -:10C0200080910615811111C58AE0D1011D928A9572 -:10C03000E9F780915E14843209F076C481E08DAF17 -:10C0400080915F14833481F034F4882351F084327A -:10C0500009F06FC209C0873439F0883509F069C228 -:10C0600003C088E696E054C39091601491114EC4C9 -:10C07000833409F42DC21CF4843241F04DC487345A -:10C0800009F46AC1883509F440C246C48091071595 -:10C09000887109F03DC484E696E00E940A348091DC -:10C0A000E7140E94FC338BE496E00E940A348091EE -:10C0B000EA140E94FC338DE296E00E940A348091DB -:10C0C000E8140E94FC3384E196E00E940A348091D7 -:10C0D000E8140E9407348DE096E00E940A348091B3 -:10C0E000E9140E94FC3385EF95E00E940A348091A8 -:10C0F000E9140E9407348EEE95E00E940A34809184 -:10C10000F41482FB882780F90E94FC338DEC95E0C3 -:10C110000E940A348091F41486FB882780F90E94DB -:10C12000FC338DEA95E00E940A348091F414881F54 -:10C130008827881F0E94FC338DE895E00E940A340E -:10C140008091EB140E94FC3387E795E00E940A344B -:10C150008091EB140E9407348FE695E00E940A3428 -:10C160006091EC147091ED148091EE149091EF14A5 -:10C170000E94DE338FE495E00E940A346091F0144F -:10C180007091F1148091F2149091F3140E94DE33B7 -:10C1900084E395E00E940A348091F41481700E9437 -:10C1A000FC3387E195E00E940A348091F41485FB0A -:10C1B000882780F90E94FC338CEF94E00E940A34B7 -:10C1C0008091F41483FB882780F90E94FC3381EE70 -:10C1D00094E00E940A348091F414829581700E9448 -:10C1E000FC3385EC94E00E940A348091F5140E949F -:10C1F000FC338BEA94E00E940A348091F5140E948B -:10C20000073483EA94E00E940A346091F614709136 -:10C21000F7148091F8149091F9140E94DE3386E8A7 -:10C2200094E00E940A346091FA147091FB1480919A -:10C23000FC149091FD140E94DE3389E694E00E9484 -:10C240000A348091FE140E94FC338AE494E00E9438 -:10C250000A3460910015709101158091021590913A -:10C2600003150E94DE3381E394E00E940A3410E05B -:10C2700034E6D32E27EBE22E24E1F22E00E08FE20B -:10C2800094E00E940A34802F8D0D0E94FC338DE2D1 -:10C2900094E00E940A34123091F01330E1F0113032 -:10C2A00031F0F70160817181828193811CC0D701D7 -:10C2B0001C966D917D918D919C911F9714C020E0EB -:10C2C00030E041E655E4F701608D718D828D938DEC -:10C2D0000E948D6F08C0F70184A195A1A6A1B7A106 -:10C2E000BC01CD0190580E94DE338AE294E00E94A6 -:10C2F0000A34013029F0023031F088E294E005C0C0 -:10C3000086E294E002C084E294E00E940A34123093 -:10C3100051F0133059F0113019F08AE194E008C05F -:10C3200088E094E005C087EF93E002C087EE93E0D9 -:10C330000E940A3483EE93E00E940A340F5FF4E017 -:10C34000EF0EF11C033009F09ACF2AE0D20E1F5FE6 -:10C350003CE8D3128FCFE0C281EE93E00E940A3412 -:10C3600080915D15823091F038F4882361F081303E -:10C37000A9F48BED93E00CC0833069F0883071F440 -:10C3800081ED93E005C08EED93E002C088ED93E06F -:10C390000E940A340CC085ED93E0FACF8CEC93E058 -:10C3A0000E940A3480915D1582500E94FC3389EC12 -:10C3B00093E00E940A34809163158A5C0E94FC33EA -:10C3C00080916115813049F028F0823051F48AEB78 -:10C3D00093E005C084EC93E002C08FEB93E00E94F1 -:10C3E0000A3480915F15811103C085EB93E002C090 -:10C3F00080EB93E00E940A3480916015811103C0A4 -:10C400008BEA93E002C086EA93E00E940A348091AE -:10C410005E15813019F481EA93E002C08CE993E063 -:10C420000E940A3480916415813049F028F08230EE -:10C4300051F480E993E005C088E993E002C084E903 -:10C4400093E00E940A3480916615813031F040F00B -:10C45000823051F488E893E005C08CE893E002C094 -:10C4600084E893E00E940A3480916515882329F0BE -:10C47000823039F48CE793E002C080E893E00E94B8 -:10C480000A3489E793E00E940A3480916F150E9474 -:10C49000FC3386E793E00E940A3460916B1570913B -:10C4A0006C1580916D1590916E150E94E03383E7B5 -:10C4B00093E00E940A34609167157091681580912D -:10C4C000691590916A150E94E0338FE693E020C1D0 -:10C4D00080910715823049F40E94EA5580ED99E079 -:10C4E0000E940A3487E899E00BC0811111C282E0F2 -:10C4F0008093071580ED99E00E940A3480E999E065 -:10C500000E940A348DE599E003C1809107158130BE -:10C5100009F002C280ED99E00E940A3488E999E0AE -:10C520000E940A348DE599E00E940A3410920715A2 -:10C53000F3C190910715923008F0EAC1893409F4EB -:10C54000C5C034F4833259F0883409F480C064C122 -:10C550008E3409F436C1823509F4F9C05DC182E038 -:10C560008DAF809160148111D1C110E0BE016F5F69 -:10C570007F4F812F0E94452E811104C087E00E94C9 -:10C58000FF31CAC18CE693E00E940A34163029F0CC -:10C59000173041F486E693E002C089E693E00E94FA -:10C5A0000A3404C086E3810F0E94FC3384E693E0E2 -:10C5B0000E940A34CE0101967C0100E0D7016D9102 -:10C5C0007D918D919D917D010E94EE33023019F095 -:10C5D00082E693E002C08EE593E00E940A340F5F8A -:10C5E000033061F71F5F183009F688E593E00E9479 -:10C5F0000A349CE8E92E95E1F92E10E0F7016191EB -:10C600007191819191917F010E94EE33123019F066 -:10C6100086E593E002C082E593E00E940A341F5F42 -:10C62000133061F78CE493E00E940A34609198150E -:10C630007091991580919A1590919B150E94EE33F7 -:10C6400088E493E00E940A340E94183465C1809106 -:10C65000F41484FF59C184E08093071520D984E045 -:10C660000E94725A83E00E94725A0E945A39809145 -:10C670000615811102C030D91DD98091061581118E -:10C680004BC1109207150E940A2A10E0812F0E94C8 -:10C69000AE53811102C087E013C080915E148823DD -:10C6A00089F08EE594E10E9458348EE594E10E9471 -:10C6B0008805811105C08BEB98E00E940A3402C006 -:10C6C0000E94FF311F5F123009F726C182E08DAF53 -:10C6D0008091601481111FC040E550E06EEA7BE05C -:10C6E0008EE594E164D9892B49F410925E1440E5FB -:10C6F00050E06EE574E18EEA9BE016D988E393E0A2 -:10C700000E940A348EE594E10E94583484E393E059 -:10C710000E940A3401C193E09DAF8D3309F0F6C049 -:10C7200083E0282F30E0F901E25AFB4E9081D901D5 -:10C73000A55ABB4E9C938F5F90819111F2CF8DAF24 -:10C7400040E550E06EE574E18EEA9BE0ABC082E02C -:10C750008DAF80916014833509F0D8C083E08DAF30 -:10C7600080916114843509F0D1C084E08DAF80914F -:10C7700062148D3309F0CAC0809164148111C6C05F -:10C7800085E08DAF80916314843239F08A3239F0BC -:10C79000833209F0BBC082E003C081E001C08FEFAB -:10C7A0000E94652E80ED99E00E940A3481E699E0AE -:10C7B0000E940A348DE599E00E940A340E94EA55ED -:10C7C000ABC082E08DAF80916014811121C010E078 -:10C7D000812F0E94AE53811104C087E00E94FF3177 -:10C7E00013C081E393E00E940A34812F0E94FC333E -:10C7F0008FE293E00E940A348EE594E10E9458345F -:10C800008CE293E00E940A341F5F123009F784C063 -:10C8100091117EC011E001C010E0AE01475D5F4F95 -:10C82000BE01635C7F4F8EE594E10E942A55811121 -:10C8300002C082E076C0EDAD81E08E0F8DAFF0E0FA -:10C84000E25AFB4E90819D3309F060C0112361F1E3 -:10C85000482F50E0282F30E0D901A25ABB4E9C91BE -:10C86000241B350BF901E25AFB4E90838F5F9C919C -:10C870009111F0CF8DAF8EE594E10E948805811172 -:10C8800049C069A57AA58BA59CA50E948D720E94BE -:10C89000FA6FF1E56F9FC001112440E550E06EE5AD -:10C8A00074E1955F41D838C0AE014F5F5F4FBE0164 -:10C8B000635C7F4F8EE594E10E942A55882309F43A -:10C8C000B8CFEDADF0E0E25AFB4E808181111EC081 -:10C8D00089A49AA4ABA4BCA420E030E04FE753E4C1 -:10C8E000C501B4010E94A471181684F0C980DA80D1 -:10C8F000EB80FC80C501B4010E94FA6F862FB7015E -:10C90000A6010E943A2D06C085E00BC083E009C055 -:10C9100088E007C0811105C08BEB98E00E940A34C3 -:10C9200094C00E94FF3191C08332D1F43F922F9284 -:10C930008BE793E09F938F931F930F930E94537302 -:10C94000F10101900020E9F7BF0162197309625AF1 -:10C950007B4E0F900F900F900F900F900F900BC089 -:10C96000873439F08D3429F0803519F0833509F09A -:10C970006CC06EE574E1DB018C91803511F083357C -:10C9800009F58EEA9CE00E941E738D89882391F040 -:10C990003F922F9283E893E09F938F9382EE9CE0E7 -:10C9A0009F938F930E9425730F900F900F900F907D -:10C9B0000F900F9082E3EEE5F4E1DF011D928A957E -:10C9C000E9F743C08091AE04843148F087E893E0F2 -:10C9D0009F938F930E94AF330F900F9036C00091BA -:10C9E000AC04B6E6B09F80011124C8018B549B4F64 -:10C9F0000E941E738D89882391F03F922F9283E8C5 -:10CA000093E09F938F9307511B4F1F930F930E94A7 -:10CA100025730F900F900F900F900F900F9082E35F -:10CA2000EEE5F4E1DF011D928A95E9F78091AC040F -:10CA3000833120F48F5F8093AC0402C01092AC0469 -:10CA40008091AE048F5F8093AE04A4961FAEA4972E -:10CA5000A5961FAEA5973BC0B13009F0CECAA596EA -:10CA60001FAEA597CACA813208F4C7CA8F3209F42B -:10CA7000C4CA883211F18B3329F1A496EFADA49783 -:10CA8000EF3438F08BE00E94FF31A4961FAEA497DC -:10CA9000B4CAA496FFADA4972F2F30E04F2F4F5F5D -:10CAA0009FE9980FF901E25AFB4E9A3108F480523F -:10CAB0008083A4964FAFA497A0CA21E0A5962FAF7C -:10CAC000A5979BCA32E0A5963FAFA59796CA8091DD -:10CAD000AE0C882399F08EEA9CE00E948805809332 -:10CAE000E00C62EE7CE00E949D3C81E08093E10CD2 -:10CAF00082E3AEEABCE01D928A95E9F78091920D3F -:10CB000081113FC08091AE048823D9F18091970DA7 -:10CB10008823B9F18091980D882399F10091AD0493 -:10CB2000B6E6B09F800111240B541B4FC8010E9430 -:10CB30008805F80182ABF090AD04F6E6FF9D800118 -:10CB40001124B80167517B4F0B541B4FD801D2966B -:10CB50008C910E949D3C81E0F80183AB82E3D80177 -:10CB60001D928A95E9F7B2E1BF1520F0F394F09297 -:10CB7000AD0402C01092AD048091AE048150809348 -:10CB8000AE040E94A2330E945A3980910615811189 -:10CB900090C98091E10C882369F082EE9CE00E94AC -:10CBA000583482E3E2EEFCE0DF011D928A95E9F75A -:10CBB0001092E10C80910715882309F4E6C080915A -:10CBC000930D882309F41AC11092930D6D961CAE33 -:10CBD0001DAE1EAE1FAE6D9769961CAE1DAE1EAE8D -:10CBE0001FAE699765961CAE1DAE1EAE1FAE659753 -:10CBF00084E16F96EEADFFAD6F97282F11922A95C5 -:10CC0000E9F7A196AEADBFADA197E82F1D92EA95C9 -:10CC1000E9F7D101E82F1D92EA95E9F7A396AEADA9 -:10CC2000BFADA3971D928A95E9F780E090E00E943E -:10CC30004D47A9966CAF7DAF8EAF9FAFA99781E0AE -:10CC400090E00E944D47AD966CAF7DAF8EAF9FAF29 -:10CC5000AD9782E090E00E944D476B017C0120E09F -:10CC600030E040E05FE3609100027091010280914A -:10CC70000202909103020E94AC6E20E030E040E09E -:10CC80005FE30E94DF7120E030E044E353E40E9460 -:10CC9000DF719B01AC0160E070E084E393E40E94EB -:10CCA000AC6E2B013C0120E030E044EB52E4C701C4 -:10CCB000B6010E94AC6EFE01EF5AFF4F4F019E017C -:10CCC0002B5A3F4F5901DE01A75ABF4F6D017B011F -:10CCD0008C01AD962CAD3DAD4EAD5FADAD97A99637 -:10CCE0006CAD7DAD8EAD9FADA9970E94C144A401EE -:10CCF000B501C6010E9462426D966CAD7DAD8EADF0 -:10CD00009FAD6D978E01035C1F4F24E045E0A9D5D0 -:10CD100069966CAD7DAD8EAD9FAD699704511109DB -:10CD200024E045E09ED565966CAD7DAD8EAD9FADA2 -:10CD30006597810124E045E094D58E010F5F1F4F78 -:10CD400024E045E0C301B2018CD51F930F933F92BD -:10CD50002F92A196FFADA197FF93A0962FADA0971C -:10CD60002F936F963FAD6F973F936E968FAD6E97F3 -:10CD70008F9389E993E09F938F930E94AF330FB60F -:10CD8000F894DEBF0FBECDBF39C08091970D8823C8 -:10CD900009F415CF8091980D882309F410CF04E190 -:10CDA00010E082E3B82EA090AD0CB6E6BA9DC001AB -:10CDB0001124FC01EB54FB4F7F0123A9222309F42A -:10CDC000FECE9C0127513B4F6901C9010E94583496 -:10CDD000D601EB2D1D92EA95E9F7D701D3961C9267 -:10CDE000B2E1BA1528F081E08A0D8093AD0C02C043 -:10CDF0001092AD0C01501109B1F6E1CE82B301E001 -:10CE000083FB882780F980279091B4048917D9F093 -:10CE10008AE090E00E944F3912B313FB112710F9FA -:10CE200010278091B404181771F01F921F938DEA98 -:10CE300093E09F938F930E94AF331093B4040F90AD -:10CE40000F900F900F908091B0049091B104A09139 -:10CE5000B204B091B3048F3F9105A105B10509F06B -:10CE600060F40196A11DB11D8093B0049093B104AC -:10CE7000A093B204B093B30424C01092B0041092F3 -:10CE8000B1041092B2041092B3048BE30E94525486 -:10CE900011E08536910508F410E08091AF04811708 -:10CEA00081F01F921F9388EB93E09F938F930E94D2 -:10CEB000AF331093AF041093990D0F900F900F9014 -:10CEC0000F9080910715811112C08091940D8823D5 -:10CED00071F08091950D882351F080EC93E09F9341 -:10CEE0008F930E94AF331092950D0F900F90809109 -:10CEF0009A0D882309F461C880910715811128C112 -:10CF00008091910D8F3009F023C18091990D882374 -:10CF100009F41EC18091140D9091150D9C012F5F95 -:10CF20003F4F3093150D2093140D45970CF445C8D1 -:10CF300021961CAE1DAE1EAE1FAE219719A61AA6D5 -:10CF40001BA61CA61D8A1E8A1F8A188EE0908D0DB6 -:10CF5000F0908E0D00918F0D1091900D2091890D04 -:10CF600030918A0D40918B0D50918C0D6091850D03 -:10CF70007091860D8091870D9091880D4101FE0181 -:10CF8000B9965F01DE01DD966D010E940B4380E0E2 -:10CF900090E00E944D474B015C0181E090E00E94CF -:10CFA0004D476B017C0182E090E00E944D472B01D0 -:10CFB0003C01A501940121966CAD7DAD8EAD9FAD78 -:10CFC0002197CAD69F7720E030E040E05FE30E94DF -:10CFD000A47118163CF1A701960169A57AA58BA545 -:10CFE0009CA5BAD69F7720E030E040E05FE30E9446 -:10CFF000A4711816BCF0A30192016D897E898F89F6 -:10D00000988DAAD620E030E044EB52E4A6D69F7774 -:10D0100020E030E040E05FE30E94A471181614F0B5 -:10D020000C94DD5F8EE1E6E0F5E1DF011D928A956B -:10D03000E9F70E9463340E946C5C80926D0D9092BF -:10D040006E0DA0926F0DB092700DC092710DD092C6 -:10D05000720DE092730DF092740D4092750D509226 -:10D06000760D6092770D7092780D80910A159091EF -:10D070000B15A0910C15B0910D158093790D90931F -:10D080007A0DA0937B0DB0937C0D80910E1590913D -:10D090000F15A0911015B091111580937D0D9093EF -:10D0A0007E0DA0937F0DB093800D8091121590910D -:10D0B0001315A0911415B09115158093810D9093BF -:10D0C000820DA093830DB093840D8CE0A396EEADFA -:10D0D000FFADA39711928A95E9F78091850D909104 -:10D0E000860DA091870DB091880D89839A83AB83BB -:10D0F000BC838091890D90918A0DA0918B0DB09188 -:10D100008C0D8D839E83AF83B88780918D0D909118 -:10D110008E0DA0918F0DB091900D89879A87AB8766 -:10D12000BC87AE01475F5F4FBE016B5F7F4FCE0193 -:10D1300001960E94624200E020E030E048E452E4C0 -:10D14000BE016F5F7F4F80E00E9414560C94DD5F3C -:10D150001092150D1092140D0C94DD5FCF930E9468 -:10D16000A233C9E20E945A3980910615811111C07B -:10D170008091A5139091A613981739F0C89FC0010C -:10D1800011248D539F4E892B69F7809107158830A4 -:10D1900049F3CF910895CF932091511530915215B5 -:10D1A00040915315509154156091741570917515F7 -:10D1B0008091761590917715A9D6811126C020917E -:10D1C000551530915615409157155091581560914D -:10D1D00078157091791580917A1590917B1596D676 -:10D1E000811113C0C1E02091591530915A15409119 -:10D1F0005B1550915C1560917C1570917D15809147 -:10D200007E1590917F1582D68111C0E08C2FCF9131 -:10D210000895CF92DF92EF92FF920F93CF93DF9317 -:10D2200030910715323009F482C0C02FD22F042F5D -:10D230006B017C0193DF10922215109204158091EE -:10D24000F41487FD03C080E180930415DD2331F0E1 -:10D250009091041580E189278093041589B180712C -:10D2600090910415891751F09FB7F8948091051596 -:10D270008061809305159FBF0E945A3980910615E1 -:10D28000811155C0A701960161E575E181E00E9419 -:10D29000145681E08093B6149FB7F8948091B5142A -:10D2A00082608093B5149FBF0E945A398091061501 -:10D2B00081113DC0809107158111F6CF8091B61480 -:10D2C0008130A9F4CC2351F08CE0EAE0F5E1A6E14D -:10D2D000B5E101900D928A95E1F70CC09FB7F894E3 -:10D2E000809105158061809305159FBF03C081E083 -:10D2F000809322151092B6140E945A398091061517 -:10D30000811115C00E94B3510E9474340E9463348D -:10D310006AE075E181E595E10E942E48DF91CF91A9 -:10D320000F91FF90EF90DF90CF900C941834DF9125 -:10D33000CF910F91FF90EF90DF90CF9008952F92B3 -:10D340003F924F925F926F927F928F929F92AF9295 -:10D35000BF92CF92DF92EF92FF920F931F93CF93E2 -:10D36000DF93CDB7DEB7E1970FB6F894DEBF0FBEFF -:10D37000CDBF6D837E838F8398872F87388B498BB2 -:10D380005A8B0D8BAD868B8A24E0E29E800111249E -:10D39000C8018C589A4E9F8B8E8BD801AD5CBA4ECB -:10D3A000B98FA88F8D909D90AD90BC90FC0120818D -:10D3B000318142815381C501B401CFD46A8F7B8F03 -:10D3C0008C8F9D8FF4E0CF9E1001112491012C5879 -:10D3D0003A4E3F8F2E8FC1018D5C9A4E99A388A340 -:10D3E000DC01CD90DD90ED90FC90F9012081318140 -:10D3F00042815381C701B601B0D46AA37BA38CA339 -:10D400009DA32401350177FA709477F87094D701C1 -:10D41000C601B05889839A83AB83BC83F801EF5A65 -:10D42000FA4E2A8D3B8D4C8D5D8D6081718182819C -:10D43000938192D44B015C01F101EF5AFA4E2AA17B -:10D440003BA14CA15DA1608171818281938184D4D3 -:10D450006B017C01A5019401C301B201B0D76987BA -:10D460007A878B879C87A701960169817A818B8156 -:10D470009C81A5D79B01AC0169857A858B859C85AC -:10D480006CD469877A878B879C87A7019601C30133 -:10D49000B20195D76B017C01A501940169817A8164 -:10D4A0008B819C818CD79B01AC01C701B60154D400 -:10D4B00029853A854B855C85C3D46B017C019B89AA -:10D4C000992389F02DEB37E346E055EBC701B60110 -:10D4D0003BD787FD1AC02BED3FE049EC50E4C70174 -:10D4E000B6013AD410C02DEB37E346E055E3C7014F -:10D4F000B6010CD518164CF02BED3FE049EC50E48A -:10D50000C701B6012AD46B017C018090F014909081 -:10D51000F114A090F214B090F3142D813E814F814C -:10D520005885CA01B90119D4A501940115D4A501E2 -:10D53000940145D7B1D74B015C0120E030E040E0D9 -:10D540005FE3C701B6013BD72D813E814F815885EE -:10D5500036D79F77A5019401E0D4B5D54BD57C8B08 -:10D560006B8BDB01AB2B09F459C14B01A12CB12C06 -:10D57000BD89BB2371F0C501B40168D59B01AC0125 -:10D580006F85788989899A891AD76F87788B898B73 -:10D590009A8BC501B4015AD54B015C019B01AC01CA -:10D5A000C701B601BAD46D837E838F839887FD85CA -:10D5B000E4E0FE9FC00111249C012C583A4E3E87A6 -:10D5C0002D87FC01EF5AFA4ED9012D913D914D91D5 -:10D5D0005C916081718182819381BED3A5019401A8 -:10D5E0009CD46EA77FA788AB99AB2D813E814F81DC -:10D5F0005885CA01B901E3D69B01AC0160E070E037 -:10D6000080E090E4A9D36B017C012BEA3AEA4AE27C -:10D610005EE36D817E818F819885D1D64B015C015F -:10D6200020E030E040E850E4C701B60196D39B010A -:10D63000AC01C501B401C3D669877A878B879C8703 -:10D6400020E030E040E05FE3C701B601B8D66EA34A -:10D650007FA388A799A710E022242394312CEB897B -:10D66000FC89E215F30509F4D9C01C3008F03AC072 -:10D6700029813A814B815C816EA17FA188A599A502 -:10D680009ED66B017C01A301920169857A858B8509 -:10D690009C8595D6A701960160D37B01082FD92ED2 -:10D6A000A30192016EA17FA188A599A588D64B01FF -:10D6B0005C0129813A814B815C8169857A858B8502 -:10D6C0009C857DD69B01AC01C501B40145D32B01DE -:10D6D0003C011F5FC701A02FBD2D89839A83AB83B7 -:10D6E000BC835BC0B10180E090E0B0D42D813E816D -:10D6F0004F81588564D66B017C010CD469837A8391 -:10D700008B839C83C701B601BDD64B015C01E88DBC -:10D71000F98DC080D180E280F380F7FAF094F7F8B9 -:10D72000F094A8A1B9A18D919D910D90BC91A02DCF -:10D730008AA79BA7ACA7BDA7A701960169817A819B -:10D740008B819C813CD62B013C012AA53BA54CA595 -:10D750005DA5C501B40133D69B01AC01C301B20183 -:10D76000FCD22B013C01A7019601C501B40127D6CB -:10D770006B017C012AA53BA54CA55DA569817A8139 -:10D780008B819C811CD69B01AC01C701B601E4D200 -:10D7900069837A838B839C8310E0A30192016A8D55 -:10D7A0007B8D8C8D9D8DD9D2EE89FF8960837183AD -:10D7B0008283938329813A814B815C816AA17BA119 -:10D7C0008CA19DA1CAD2AE8DBF8D6D937D938D939B -:10D7D0009C9313972EA53FA548A959A9ED85FE85D1 -:10D7E0006081718182819381B8D2AD85BE856D9350 -:10D7F0007D938D939C9313970D892F853889498943 -:10D800005A8964E775E181E00E94145680910615FB -:10D8100081110EC0BFEF2B1A3B0A21CF0D892F8536 -:10D82000388949895A8961E575E181E00E94145679 -:10D83000E1960FB6F894DEBF0FBECDBFDF91CF915A -:10D840001F910F91FF90EF90DF90CF90BF90AF901E -:10D850009F908F907F906F905F904F903F902F9010 -:10D860000895EF920F931F93CF93DF93E80147FD45 -:10D8700002C034E001C034E1042E000C550B57FF08 -:10D8800003C0519541955109E32E022F242FAE017B -:10D8900007D0CE01DF91CF911F910F91EF900895A6 -:10D8A0008F929F92AF92BF92CF92DF92EF92FF92B0 -:10D8B0000F931F93CF93DF93CDB7DEB729970FB6A2 -:10D8C000F894DEBF0FBECDBF6A01122FB02E2BE33E -:10D8D000201720F0FF24F394F00E02C02CE3F22E68 -:10D8E0000F2D27E0AE014F5F5F4F50D1BC01498142 -:10D8F000842F8970813031F0E1FC06C0E0FE06C063 -:10D9000090E205C09DE203C09BE201C090E05E2D65 -:10D91000507143FF3CC0911102C083E001C084E01C -:10D92000811718F4212F281B01C020E051110BC0D2 -:10D93000F601822F30E2882319F031938150FBCF1A -:10D94000C20ED11C20E0992329F0D6019C93F60148 -:10D9500031966F01C6010396E2FE0AC03EE4D6018D -:10D960003C9341E411964C93119712963C9306C058 -:10D970003EE6F601308341E641833283FC01322FDB -:10D9800040E2332309F442C041933150FACF42FFC1 -:10D9900044C0911102C083E001C084E0811718F4F3 -:10D9A000212F281B01C020E051110BC0F601822F4E -:10D9B00030E2882319F031938150FBCFC20ED11C85 -:10D9C00020E0992329F0D6019C93F60131966F014E -:10D9D000C6010396E2FE0BC039E4D6013C933EE457 -:10D9E00011963C93119736E412963C9307C039E6A2 -:10D9F000F60130833EE6318336E63283FC01322F76 -:10DA000040E2332319F041933150FBCFFC01E20F88 -:10DA1000F11D10828EEF9FEFA6C021E030E0911142 -:10DA200002C020E030E0161617061CF4FB01319608 -:10DA300002C0E1E0F0E02E0F3F1FBB2021F0EB2DF4 -:10DA4000F0E0319602C0E0E0F0E02E0F3F1FE12F42 -:10DA5000F0E02E173F071CF4121B212F01C020E01D -:10DA60008E2D887159F4F601822F30E2882319F047 -:10DA700031938150FBCFC20ED11C20E0992329F0B5 -:10DA8000D6019C93F60131966F0151110BC0F6013E -:10DA9000822F90E3882319F091938150FBCFC20E1F -:10DAA000D11C20E00F2D060F9A81342F307144FFD6 -:10DAB00003C0913309F40150101624F4093018F012 -:10DAC00008E001C001E0AB0177FF02C040E050E098 -:10DAD000FB01E41BF50BA1E0B0E0AC0FBD1FEA0FAA -:10DAE000FB1F8EE2A82E4B01801A91080B2D10E02F -:10DAF0001195019511094F3FBFEF5B0721F4D60146 -:10DB0000AC9211966D01641775072CF0841695067A -:10DB100014F4818101C080E3415051093196D6014E -:10DB200011967D014017510724F0D6018C936701AF -:10DB3000E2CF6417750739F4963320F4953319F45E -:10DB4000311101C081E3F6018083F701822F90E259 -:10DB5000882319F091938150FBCFF701E20FF11D5B -:10DB6000108280E090E029960FB6F894DEBF0FBED9 -:10DB7000CDBFDF91CF911F910F91FF90EF90DF907C -:10DB8000CF90BF90AF909F908F900895283008F06D -:10DB900027E03327DA01990F311D87FD9160009648 -:10DBA0006105710539F432602E5F3D9330E32A95AB -:10DBB000E1F708959F3F30F080387105610509F065 -:10DBC0003C5F3C5F3D93913008F08068911DDF938E -:10DBD000CF931F930F93FF92EF92192F987F9695F3 -:10DBE000E92F96959695E90FFF27EA59FD4F99275A -:10DBF0003327EE24FF24A701E7010590089407943A -:10DC000028F4360FE71EF81E491F511D660F771FB7 -:10DC1000881F991F0694A1F70590079428F4E70E32 -:10DC2000F81E491F561FC11D770F881F991F661FB9 -:10DC30000694A1F70590079428F4F80E491F561F83 -:10DC4000C71FD11D880F991F661F771F0694A1F764 -:10DC50000590079420F4490F561FC71FD81F990F2E -:10DC6000661F771F881F0694A9F784911095177077 -:10DC700041F0D695C79557954795F794E7941A952F -:10DC8000C1F7ECE0F2E0689415901591359165913B -:10DC9000959105907FE27395E118F10A430B560BBD -:10DCA000C90BD009C0F7E10CF11E431F561FC91F55 -:10DCB000D01D7EF4703311F48A95E6CFE8940150BC -:10DCC00030F0080F0AF40027021708F4202F2395DC -:10DCD000022F7A3328F079E37D932A95E9F710C073 -:10DCE0007D932A9589F606949795679537951795AC -:10DCF0001794E118F10A430B560BC90BD00998F0A1 -:10DD000023957E9173957A3308F070E37C9320130A -:10DD1000B8F77E9170617D9330F0839571E37D93C8 -:10DD200070E32A95E1F71124EF90FF900F911F9176 -:10DD3000CF91DF91992787FD909508959F939F77C5 -:10DD4000D5D10F9000203AF49058A2EA2AED3FE096 -:10DD500049E450E413D096C25058BB27AA270ED0EE -:10DD600091C25AD230F05FD220F031F49F3F11F4CB -:10DD70001EF42AC20EF4E095E7FBF7C1E92FA4D206 -:10DD800080F3BA17620773078407950718F071F4D8 -:10DD90009EF5D3C20EF4E0950B2EBA2FA02D0B01E9 -:10DDA000B90190010C01CA01A0011124FF27591BE0 -:10DDB00099F0593F50F4503E68F11A16F040A22FE6 -:10DDC000232F342F4427585FF3CF46953795279557 -:10DDD000A795F0405395C9F77EF41F16BA0B620B56 -:10DDE000730B840BBAF09150A1F0FF0FBB1F661F9D -:10DDF000771F881FC2F70EC0BA0F621F731F841FE0 -:10DE000048F4879577956795B795F7959E3F08F005 -:10DE1000B3CF9395880F08F09927EE0F97958795C4 -:10DE20000895FAD158F080E891E009F49EEFFBD113 -:10DE300028F040E851E059F45EEF09C0C5C17DC249 -:10DE4000E92FE07841D268F3092E052AC1F326179D -:10DE500037074807590738F00E2E07F8E02569F014 -:10DE6000E025E0640AC0EF6307F8009407FADB01DD -:10DE7000B9019D01DC01CA01AD01EF935DD002D271 -:10DE80000AD05F91552331F02BED3FE049E450FD7E -:10DE900049EC63CF0895DF93DD27B92FBF7740E8C2 -:10DEA0005FE31616170648075B0710F4D92F50D208 -:10DEB0009F938F937F936F932DD3E8E9F1E087D100 -:10DEC000E1D12F913F914F915F9185D2DD2349F0B0 -:10DED0009058A2EA2AED3FE049EC5FE3D0785D2755 -:10DEE0004DDFDF91CFC112D280F09F3740F4911106 -:10DEF0000EF424C260E070E080E89FE3089526F00D -:10DF00001B16611D711D811D36C150C10AD108F457 -:10DF100081E0089590D1E395C6C10CD0B3C183D1FF -:10DF200040F07AD130F021F45F3F19F01EC1511159 -:10DF300005C24AC1C9D198F39923C9F35523B1F356 -:10DF4000951B550BBB27AA2762177307840738F068 -:10DF50009F5F5F4F220F331F441FAA1FA9F333D0C7 -:10DF60000E2E3AF0E0E830D091505040E695001C7B -:10DF7000CAF729D0FE2F27D0660F771F881FBB1F37 -:10DF8000261737074807AB07B0E809F0BB0B802D11 -:10DF9000BF01FF2793585F4F2AF09E3F510568F05D -:10DFA000E4C0CCC15F3FECF3983EDCF386957795F7 -:10DFB0006795B795F7959F5FC9F7880F911D96955F -:10DFC000879597F90895E1E0660F771F881FBB1FBB -:10DFD000621773078407BA0720F0621B730B840B68 -:10DFE000BA0BEE1F88F7E095089504D06894B1113C -:10DFF000A5C1089571D188F09F5790F0B92F992746 -:10E00000B751A0F0D1F0660F771F881F991F1AF043 -:10E01000BA95C9F712C0B13081F08FD1B1E008953F -:10E020008CC1672F782F8827B85F39F0B93FCCF3C0 -:10E03000869577956795B395D9F73EF49095809539 -:10E04000709561957F4F8F4F9F4F0895E89409C059 -:10E0500097FB3EF490958095709561957F4F8F4F1B -:10E060009F4F9923A9F0F92F96E9BB279395F69531 -:10E07000879577956795B795F111F8CFFAF4BB0FAF -:10E0800011F460FF1BC06F5F7F4F8F4F9F4F16C013 -:10E09000882311F096E911C0772321F09EE8872F9D -:10E0A000762F05C0662371F096E8862F70E060E059 -:10E0B0002AF09A95660F771F881FDAF7880F9695D2 -:10E0C000879597F9089522D180F09F3740F49111F8 -:10E0D0000EF034C160E070E080E89FEB089526F414 -:10E0E0001B16611D711D811D46C060C0DF93CF935B -:10E0F0001F930F938B01EC01E5ECF1E068D0C2D0E7 -:10E100009801AE018B01EC0160E070E080E89FE3D4 -:10E1100023DEC2D19801AE010F911F91CF91DF9103 -:10E120005AC1990F0008550FAA0BE0E8FEEF16162A -:10E130001706E807F907C0F012161306E407F507FB -:10E1400098F0621B730B840B950B39F40A2661F06F -:10E15000232B242B252B21F408950A2609F4A14012 -:10E16000A6958FEF811D811D089597F99F6780E81F -:10E1700070E060E00895882371F4772321F09850CF -:10E18000872B762F07C0662311F499270DC0905175 -:10E19000862B70E060E02AF09A95660F771F881F43 -:10E1A000DAF7880F9695879597F908959F3F31F094 -:10E1B000915020F4879577956795B795880F911DB5 -:10E1C0009695879597F908959FEF80EC0895DF93D2 -:10E1D000CF931F930F93FF92EF92DF927B018C01FD -:10E1E000689405C0DA2EEF01F6D0FE01E894A591FF -:10E1F0002591359145915591AEF3EF01BFDDFE01BB -:10E200009701A801DA9479F7DF90EF90FF900F91D2 -:10E210001F91CF91DF91089500240A9416161706D6 -:10E2200018060906089500240A9412161306140607 -:10E2300005060895C9CF50D0E8F3E894E0E0BB2785 -:10E240009F57F0F02AED3FE049EC06C0EE0FBB0F00 -:10E25000661F771F881F28F0B23A6207730784078A -:10E2600028F0B25A620B730B840BE3959A9572F700 -:10E27000803830F49A95BB0F661F771F881FD2F73E -:10E28000904896CF092E0394000C11F4882352F085 -:10E29000BB0F40F4BF2B11F460FF04C06F5F7F4FD2 -:10E2A0008F4F9F4F0895EF93E0FF06C0A2EA2AED3B -:10E2B0003FE049EC5FEB62DDE5DF0F90039401FC8A -:10E2C0009058EDEEF1E03BC157FD9058440F551FBB -:10E2D00059F05F3F71F04795880F97FB991F61F0E8 -:10E2E0009F3F79F087950895121613061406551F5F -:10E2F000F2CF4695F1DF08C0161617061806991FCB -:10E30000F1CF86957105610508940895E5DFA0F0C9 -:10E31000BEE7B91788F4BB279F3860F41616B11D05 -:10E32000672F782F8827985FF7CF86957795679521 -:10E33000B11D93959639C8F30895E894BB276627D5 -:10E340007727CB0197F90895ECDE08F48FEF089555 -:10E350009B01AC0160E070E080E89FE3DECDBCDFB4 -:10E3600058F19E5758F19851A0F0E9F0983020F5F7 -:10E37000092E9927660F771F881F991F0A94D1F7D6 -:10E3800012C0062E672F782F8827985F11F4000C93 -:10E3900007C0993FB4F38695779567959395D9F71C -:10E3A000611D711D811D3EF490958095709561955C -:10E3B0007F4F8F4F9F4F08956894C0CFBECF0BD033 -:10E3C00061CF2ADF28F02FDF18F0952309F0CDCE9A -:10E3D000FBCE1124B3CF78DFA0F3959FD1F3950F37 -:10E3E00050E0551F629FF001729FBB27F00DB11DD9 -:10E3F000639FAA27F00DB11DAA1F649F6627B00D69 -:10E40000A11D661F829F2227B00DA11D621F739F51 -:10E41000B00DA11D621F839FA00D611D221F749F5F -:10E420003327A00D611D231F849F600D211D822FA6 -:10E43000762F6A2F11249F5750408AF0E1F08823ED -:10E440004AF0EE0FFF1FBB1F661F771F881F9150FA -:10E450005040A9F79E3F510570F087CE6FCF5F3FC8 -:10E46000ECF3983EDCF3869577956795B795F7952D -:10E47000E7959F5FC1F7FE2B880F911D96958795B5 -:10E4800097F908959F93D7DE0F9007FCEE5F0BCFAF -:10E4900011F40EF499CE8ACE1FDFD0F39923D9F36D -:10E4A000CEF39F57550B87FF43D00024A0E640EAE8 -:10E4B000900180585695979528F4805C660F771FD9 -:10E4C000881F20F026173707480730F4621B730BAC -:10E4D000840B202931294A2BA695179407942025CF -:10E4E00031254A2758F7660F771F881F20F0261717 -:10E4F0003707480730F4620B730B840B200D311D76 -:10E50000411DA09581F7B901842F9158880F9695E8 -:10E51000879508959B01AC0152CFF8DE20F09F371C -:10E5200008F40CCF28CE42CEFCDD880B990B089561 -:10E5300091505040660F771F881FD2F708959F9320 -:10E540008F937F936F93FF93EF939B01AC0137DF22 -:10E55000EF91FF913CDE2F913F914F915F912FCF33 -:10E56000991B79E004C0991F961708F0961B881F25 -:10E570007A95C9F780950895AA1BBB1B51E107C086 -:10E58000AA1FBB1FA617B70710F0A61BB70B881F43 -:10E59000991F5A95A9F780959095BC01CD010895D2 -:10E5A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F97 -:10E5B000EE1FFF1FA217B307E407F50720F0A21B09 -:10E5C000B30BE40BF50B661F771F881F991F1A9476 -:10E5D00069F760957095809590959B01AC01BD01A0 -:10E5E000CF010895EE0FFF1F881F8BBF0790F69194 -:10E5F000E02D1994A29FB001B39FC001A39F700D9D -:10E60000811D1124911DB29F700D811D1124911D3A -:10E610000895F0DFA59F900DB49F900DA49F800DED -:10E62000911D11240895FB01DC010D900020E9F7F4 -:10E63000119701900D920020E1F70895FB01DC0194 -:10E6400001900D920020E1F708950F931F93CF934F -:10E65000DF93CDB7DEB72E970FB6F894DEBF0FBEAF -:10E66000CDBF0E891F8986E08C831A8309838FEFC3 -:10E670009FE79E838D83AE01465E5F4F688D798DE7 -:10E68000CE01019659D0EF81F885E00FF11F10827D -:10E690002E960FB6F894DEBF0FBECDBFDF91CF919F -:10E6A0001F910F910895CF93DF93CDB7DEB72E97CB -:10E6B0000FB6F894DEBF0FBECDBF85E08C838C898A -:10E6C0009D899A838983AE01485E5F4F6E897F89F9 -:10E6D000CE010196E0D32E960FB6F894DEBF0FBEA2 -:10E6E000CDBFDF91CF9108950F931F93CF93DF9309 -:10E6F000CDB7DEB72E970FB6F894DEBF0FBECDBFF5 -:10E700008C0186E08C831A8309838FEF9FE79E83B9 -:10E710008D83CE01019610D0EF81F885E00FF11FB7 -:10E7200010822E960FB6F894DEBF0FBECDBFDF91DC -:10E73000CF911F910F9108952F923F924F925F9228 -:10E740006F927F928F929F92AF92BF92CF92DF9201 -:10E75000EF92FF920F931F93CF93DF93CDB7DEB766 -:10E760002B970FB6F894DEBF0FBECDBF6C017B01B7 -:10E770008A01FC0117821682838181FFBFC1CE010D -:10E7800001963C01F6019381F70193FD859193FF7A -:10E7900081917F01882309F4ADC1853239F493FD5D -:10E7A000859193FF81917F01853221F4B60190E03C -:10E7B000F0D4E8CF912C212C312CFFE1F315D8F0C7 -:10E7C0008B3279F038F4803279F08332A1F4232D42 -:10E7D00020611DC08D3261F0803369F4232D2160EA -:10E7E00016C0832D8260382EE32DE4603E2E2AC0B1 -:10E7F000F32DF8601DC037FC2DC020ED280F2A3006 -:10E8000040F08E32B9F436FC75C1232D2064322ECF -:10E8100019C036FE06C08AE0989E200D1124922E63 -:10E8200011C0EAE02E9E200D1124222EF32DF0625D -:10E830003F2E08C08C3621F4832D8068382E02C00C -:10E84000883641F4F70193FD859193FF81917F0113 -:10E850008111B3CF982F9F7D9554933028F40C5F8E -:10E860001F4F9FE399830DC0833631F0833771F0DA -:10E87000833509F055C020C0F801808189830E5F7F -:10E880001F4F88248394912C530112C02801F2E079 -:10E890004F0E511CF801A080B18036FE03C0692DD7 -:10E8A00070E002C06FEF7FEFC5012AD44C018201F6 -:10E8B000F32DFF773F2E15C0280122E0420E511C98 -:10E8C000F801A080B18036FE03C0692D70E002C05F -:10E8D0006FEF7FEFC50109D44C01F32DF0683F2E97 -:10E8E000820133FC19C0822D90E088169906A0F4AD -:10E8F000B60180E290E04DD42A94F5CFF50137FCC3 -:10E90000859137FE81915F01B60190E042D42110DC -:10E910002A9421E0821A91088114910479F7E1C0C8 -:10E92000843611F0893639F5F80137FE07C0608169 -:10E930007181828193810C5F1F4F08C0608171815A -:10E94000072E000C880B990B0E5F1F4FF32DFF76DF -:10E950003F2E97FF09C090958095709561957F4FE8 -:10E960008F4F9F4FF0683F2E2AE030E0A30166D41E -:10E97000882E861844C0853731F4232D2F7EB22E81 -:10E980002AE030E025C0932D997FB92E8F36C1F053 -:10E9900018F4883579F0AEC0803719F0883721F047 -:10E9A000A9C0E92FE061BE2EB4FE0DC0FB2DF460BE -:10E9B000BF2E09C034FE0AC0292F2660B22E06C021 -:10E9C00028E030E005C020E130E002C020E132E084 -:10E9D000F801B7FE07C060817181828193810C5F6D -:10E9E0001F4F06C06081718180E090E00E5F1F4F75 -:10E9F000A30124D4882E8618FB2DFF773F2E36FEE8 -:10EA00000DC0232D2E7FA22E891458F434FE0BC086 -:10EA100032FC09C0832D8E7EA82E05C0B82CA32CF5 -:10EA200003C0B82C01C0B92CA4FE0FC0FE01E80D34 -:10EA3000F11D8081803321F49A2D997EA92E09C081 -:10EA4000A2FE06C0B394B39404C08A2D867809F060 -:10EA5000B394A3FC10C0A0FE06C0B21480F4280C2E -:10EA6000922C9B180DC0B21458F4B60180E290E0CD -:10EA700090D3B394F8CFB21418F42B1802C0982C8A -:10EA8000212CA4FE0FC0B60180E390E082D3A2FE49 -:10EA900016C0A1FC03C088E790E002C088E590E0C2 -:10EAA000B6010CC08A2D867851F0A1FE02C08BE21F -:10EAB00001C080E2A7FC8DE2B60190E06AD3891420 -:10EAC00030F4B60180E390E064D39A94F8CF8A944E -:10EAD000F301E80DF11D8081B60190E05AD3811059 -:10EAE000F6CF222009F44ECEB60180E290E051D359 -:10EAF0002A94F7CFF6018681978102C08FEF9FEFAE -:10EB00002B960FB6F894DEBF0FBECDBFDF91CF912D -:10EB10001F910F91FF90EF90DF90CF90BF90AF903B -:10EB20009F908F907F906F905F904F903F902F902D -:10EB3000089520FD09C0FC0123FD05C022FF02C08D -:10EB40007383628351834083089544FD17C046FD5B -:10EB500017C0AB01BC01DA01FB01AA0FBB1FEE1FFE -:10EB6000FF1F1094D1F74A0F5B1F6E1F7F1FCB0151 -:10EB7000BA01660F771F881F991F09C033E001C0D3 -:10EB800034E0660F771F881F991F3150D1F7620F4D -:10EB9000711D811D911D08950F931F93CF93DF93D6 -:10EBA0008C01C801B8D2EC0197FD06C08BD2892B2D -:10EBB000C1F7B801CE0129D3CE01DF91CF911F91CA -:10EBC0000F9108958F929F92AF92BF92EF92FF9212 -:10EBD0000F931F93CF93DF938C01D62F7A01B22E20 -:10EBE0009AD29C0133272B32310531F02D32310579 -:10EBF00059F48B2D8068B82ED15011F480E061C09B -:10EC0000C80189D297FDFACFCB2DCD7F2B2D207354 -:10EC1000F9F48033E9F4AA24AA94AD0E09F43EC0B5 -:10EC2000C80179D297FD3AC09C012F7D3327283542 -:10EC3000310541F4C264D25089F1C8016CD297FF0A -:10EC400007C02CC0B6FE02C0C26001C0C261DA2D8E -:10EC5000812C912C540120ED280F283078F0C4FF2E -:10EC600003C0B801D2D217C02A3040F0C6FFF9CF96 -:10EC70002F7D3FEE320F3630A0F727504C2FC501C5 -:10EC8000B40163DF4B015C01C260D15051F0C80197 -:10EC900042D297FFE0CFC1FD04C0B0CF812C912CB0 -:10ECA0005401C7FF08C0B094A09490948094811C34 -:10ECB000911CA11CB11C2C2FB501A401C70139DF87 -:10ECC00081E0DF91CF911F910F91FF90EF90BF9066 -:10ECD000AF909F908F9008955F926F927F928F92E6 -:10ECE0009F92AF92BF92CF92DF92EF92FF920F93DB -:10ECF0001F93CF93DF93CDB7DEB7A0970FB6F894ED -:10ED0000DEBF0FBECDBF5C01962E7A01F9018E01E8 -:10ED10000F5F1F4F680180E2D8011D928A95E9F7C5 -:10ED2000D50113968C9080E090E0612C712C30E03E -:10ED300061E070E083FC259183FE21918F01522ECA -:10ED4000211103C080E090E090C02E3511F40097AF -:10ED500051F1432F50E0481759073CF42D3559F134 -:10ED60002D3219F4772009F103C0772009F468C027 -:10ED7000452D469546954695D601A40FB11D452DC6 -:10ED800047708B0102C0000F111F4A95E2F7A801DE -:10ED90005C91452B4C93651459F0561410F4539420 -:10EDA000E7CF5A94E5CF31E004C07724739401C0D3 -:10EDB000712C0196BFCF772019F08E8180628E83EF -:10EDC000311103C08824839417C0F6019E012F5D82 -:10EDD0003F4F8081809581932E173F07D1F7F2CF67 -:10EDE000E114F10429F0D7018C93F70131967F01EA -:10EDF0009A94812C9920E9F0C5018DD197FD17C017 -:10EE0000FC01FF2723E0F595E7952A95E1F7EC0D46 -:10EE1000FD1D208130E0AC014770552702C03595BB -:10EE200027954A95E2F720FDDBCFB501EED18110A1 -:10EE300089CFE114F10411F0D7011C92C80115C06B -:10EE4000422F469546954695D601A40FB11D422FF7 -:10EE500047708B0102C0000F111F4A95E2F7A8010D -:10EE60005C91452B4C93622EA4CFA0960FB6F894DC -:10EE7000DEBF0FBECDBFDF91CF911F910F91FF90ED -:10EE8000EF90DF90CF90BF90AF909F908F907F904A -:10EE90006F905F9008955F926F927F928F929F9292 -:10EEA000AF92BF92CF92DF92EF92FF920F931F9398 -:10EEB000CF93DF936C01EB015A01FC01178216829C -:10EEC000512CF601E380FE01E3FC8591E3FE819184 -:10EED000182FEF01882309F4E0C090E0F3D0892BCC -:10EEE00019F0C60159DEEDCF153241F4FE01E3FC05 -:10EEF0001591E3FE1191EF01153271F4C6010BD1AA -:10EF000097FDC9C0412F50E09C01332724173507D6 -:10EF1000C1F2B6017AD1C1C01A3239F4E3FC1591BD -:10EF2000E3FE1191EF0101E001C000E0F12C20EDC2 -:10EF3000210F2A3078F402606F2D70E080E090E0BD -:10EF400040E203DEF62EFE01E3FC1591E3FE119193 -:10EF5000EF01EDCF01FF03C0F11003C09EC0FF24FD -:10EF6000FA94183619F01C3651F010C0FE01E3FC7B -:10EF70001591E3FE1191EF01183641F40860046029 -:10EF8000FE01E3FC1591E3FE1191EF01112309F459 -:10EF900084C0612F70E086E093E09CD0892B09F457 -:10EFA0007CC000FD07C0F50180809180C5010296FC -:10EFB0005C0102C0812C912C1E3649F4F601468179 -:10EFC000578160E070E0202FC401B3DD7ACF1336A3 -:10EFD000A1F401FD02C0FF24F394C6019CD097FD6B -:10EFE0005AC08114910429F0F4018083C401019670 -:10EFF0004C01FA94F110F1CF4AC01B3551F49E0137 -:10F00000A4016F2DC60168DEEC01892B09F03FC019 -:10F0100039C0C601C1DD97FD3EC01F3649F128F455 -:10F02000143621F1193639F125C0133771F015372F -:10F03000E9F020C08114910429F0F4016082C40138 -:10F0400001964C01FA94FF2059F0C60164D03C01AE -:10F0500097FD06C037D0892B69F3B601C301D5D01F -:10F0600081149104A1F0F401108211C0006203C068 -:10F07000006101C00064202FA4016F2DC601A2DD34 -:10F08000811105C0F6018381807329F406C000FD5B -:10F0900018CF539416CF552019F0852D90E002C05B -:10F0A0008FEF9FEFDF91CF911F910F91FF90EF9026 -:10F0B000DF90CF90BF90AF909F908F907F906F9098 -:10F0C0005F900895911118C1803219F089508550D0 -:10F0D000D0F70895FC010590061621F00020D9F71D -:10F0E000C00108953197CF010895FC01059061504A -:10F0F00070400110D8F7809590958E0F9F1F08954E -:10F10000FC016150704001900110D8F780959095F6 -:10F110008E0F9F1F0895CF93DF93EC012B8120FF6B -:10F1200033C026FF0AC02F7B2B838E819F810196DF -:10F130009F838E838A8190E029C022FF0FC0E881DF -:10F14000F9818081082E000C990B009719F4206238 -:10F150002B831AC03196F983E8830EC0EA85FB85BC -:10F16000199597FF09C02B81019611F080E201C02B -:10F1700080E1822B8B8308C02E813F812F5F3F4F20 -:10F180003F832E83992702C08FEF9FEFDF91CF91AE -:10F1900008950F931F93CF93DF93FB01238121FDEC -:10F1A00003C08FEF9FEF2CC022FF16C0468157810E -:10F1B000248135814217530744F4A081B1819D0118 -:10F1C0002F5F3F4F318320838C93268137812F5FC0 -:10F1D0003F4F3783268314C08B01EC01FB01008471 -:10F1E000F185E02D1995892BE1F6D80116968D91C0 -:10F1F0009C911797019617969C938E931697CE0124 -:10F20000DF91CF911F910F910895FB01238120FF82 -:10F2100012C026FD10C08F3F3FEF930761F082833D -:10F220002F7D206423832681378121503109378344 -:10F230002683992708958FEF9FEF0895FA01AA2753 -:10F24000283051F1203181F1E8946F936E7F6E5F29 -:10F250007F4F8F4F9F4FAF4FB1E03ED0B4E03CD0D7 -:10F26000670F781F891F9A1FA11D680F791F8A1FBA -:10F27000911DA11D6A0F711D811D911DA11D20D021 -:10F2800009F468943F912AE0269F11243019305DDB -:10F290003193DEF6CF010895462F4770405D4193CC -:10F2A000B3E00FD0C9F7F6CF462F4F70405D4A3319 -:10F2B00018F0495D31FD4052419302D0A9F7EACFE1 -:10F2C000B4E0A6959795879577956795BA95C9F710 -:10F2D00000976105710508959B01AC010A2E069403 -:10F2E0005795479537952795BA95C9F7620F731FBC -:10F2F000841F951FA01D0895992788270895F894C5 -:02F30000FFCF3D -:10F30200AE47C13F080200000000000000737363B3 -:10F31200616E662025640D0A0053255B302D392D60 -:10F322002B2E5D52255B302D392D2B2E5D48255B12 -:10F33200302D392D2B2E5D46255B302D392D2B2E70 -:10F342005D004E256456255B302D392D2B2E5D46F2 -:10F35200255B302D392D2B2E5D0058255B302D3944 -:10F362002D2B2E5D59255B302D392D2B2E5D5A25E7 -:10F372005B302D392D2B2E5D46255B302D392D2B03 -:10F382002E5D0042255B302D392D2B2E5D4C255BE9 -:10F39200302D392D2B2E5D52255B302D392D2B2E04 -:10F3A2005D46255B302D392D2B2E5D0020422573C5 -:10F3B200204C2573205225730A00537769667450D6 -:10F3C200726F002025730A0056342E352E300056F7 -:10F3D200342E302E3400205625730A00205825730F -:10F3E20020592573205A25730A0020532573205271 -:10F3F2002573204825730A004E25640020422564A7 -:10F40200204C2564205225640A00616E676C6520D9 -:10F412006F66667365743A25730D0A0064657669D2 -:10F422006365206E616D65203A2025730D0A0073B5 -:10F432006F667420766572203A2025730D0A00618A -:10F44200706920766572203A2025730D0A00776F65 -:10F45200726B206D6F6465203A2025640D0A0040AE -:10F46200310A0065666665637420636865636B20B4 -:10F4720074696D656F7574210D0A0023255B302D4B -:10F48200395D002425730045323320627566666556 -:10F49200722066756C6C0D0A00403320582573206B -:10F4A200592573205A2573205225730A00403620AD -:10F4B2004E30205625640A004035205625640A0045 -:10F4C20040392056300A0041255B302D392D2B2E34 -:10F4D2005D00562573002056310A00565542255BC1 -:10F4E200302D392E5D0046255B302D392E5D542599 -:10F4F200640058255B302D392D2B2E5D59255B304C -:10F502002D392D2B2E5D5A255B302D392D2B2E5D5D -:10F512000042255B302D392D2B2E5D4C255B302D85 -:10F52200392D2B2E5D52255B302D392D2B2E5D0072 -:10F5320058255B302D392D2B2E5D59255B302D3909 -:10F542002D2B2E5D5A255B302D392D2B2E5D50250E -:10F5520064004E25645625640053255B302D392DF9 -:10F562002B2E5D0056255B302D392D2B2E5D00454F -:10F5720032330A004532300A004532310A00200097 -:10F582006F6B004532300045323100453232005651 -:10F59200332E332E310056332E332E300056332E77 -:0CF5A200332E320056302E302E30000088 -:00000001FF diff --git a/src/uarm_common.h b/src/uarm_common.h index 5baa98d..9e759b8 100755 --- a/src/uarm_common.h +++ b/src/uarm_common.h @@ -15,7 +15,7 @@ //#define EEPROM_ADDR_ANGLE_REFER 3072U //#define UARM_MINI -#define UARM_2500 +//#define UARM_2500 #define EEPROM_ADDR_ANGLE_REFER 820U diff --git a/src/uarm_peripheral.c b/src/uarm_peripheral.c index 660631f..90cc090 100755 --- a/src/uarm_peripheral.c +++ b/src/uarm_peripheral.c @@ -5,6 +5,7 @@ /* end-effector driver * */ + /*************** servo mode ****************/ float duty_ms = 1.51; static void servo_init(void){ @@ -500,23 +501,107 @@ static int getAnalogPinValue(unsigned int pin) /* pump * */ +#define VALVE_ON_TIMES_MAX 10 + +pump_state_t pump_state = PUMP_STATE_OFF; + +void pump_set_state(pump_state_t state) +{ + if (state >= PUMP_STATE_COUNT) + return; + + pump_state = state; +} +pump_state_t pump_get_state() +{ + return pump_state; +} + + void pump_on(void){ DDRG |= 0x10; // PG4 PUMP_D5_N DDRG |= 0x20; // PG5 PUMP_D5 PORTG |= 0x10; PORTG &= (~0x20); + + + pump_set_state(PUMP_STATE_ON); } void pump_off(void){ - DDRG |= 0x10; // PG4 PUMP_D5_N - DDRG |= 0x20; // PG5 PUMP_D5 + if (pump_get_state() == PUMP_STATE_ON) + { + + DDRG |= 0x10; // PG4 PUMP_D5_N + DDRG |= 0x20; // PG5 PUMP_D5 + + PORTG &= (~0x10); + PORTG |= 0x20; + + + pump_set_state(PUMP_STATE_VALVE_ON); + } +} +void pump_tick(void) +{ + static uint8_t valve_on_times = 0; + #define HARD_MASK ( 1<<6 | 1<<5 | 1<<4 | 1<<3 ) + + + switch (pump_state) + { + case PUMP_STATE_OFF: + valve_on_times = 0; + break; + + case PUMP_STATE_ON: + valve_on_times = 0; + break; + + case PUMP_STATE_VALVE_ON: + valve_on_times++; + PORTG |= 0x20; + + if ( (PINJ & HARD_MASK) >0x00) + { + if (valve_on_times >= VALVE_ON_TIMES_MAX*10) + { + valve_on_times = 0; + PORTG &= (~0x20); + pump_state = PUMP_STATE_OFF; + + } + } + else + { + + delay_ms(50); + if (valve_on_times >= VALVE_ON_TIMES_MAX) + { + valve_on_times = 0; + pump_state = PUMP_STATE_OFF; + } + else + { + pump_state = PUMP_STATE_VALVE_OFF; + } + + } + break; + + case PUMP_STATE_VALVE_OFF: + PORTG &= (~0x20); + delay_ms(50); + pump_state = PUMP_STATE_VALVE_ON; + + break; - PORTG &= (~0x10); - PORTG |= 0x20; + } } + uint8_t get_pump_status(void){ if( (PORTG & 0x10) == 0x00 ){ return 0; } uint16_t value = analogRead(A9); diff --git a/src/uarm_peripheral.h b/src/uarm_peripheral.h index bf45917..367dfe8 100755 --- a/src/uarm_peripheral.h +++ b/src/uarm_peripheral.h @@ -6,6 +6,18 @@ extern char hardware_version[8]; extern char bt_mac_addr[13]; +typedef enum _pump_state_t +{ + PUMP_STATE_OFF, + PUMP_STATE_ON, + PUMP_STATE_VALVE_ON, + PUMP_STATE_VALVE_OFF, + + + PUMP_STATE_COUNT +} pump_state_t; +#define VALVE_EN 4 + void end_effector_init(void); void end_effector_set_angle(float angle); void end_effector_deinit(void); @@ -30,6 +42,8 @@ void read_hardware_version(void); void pump_on(void); void pump_off(void); +void pump_tick(void); + uint8_t get_pump_status(void); void gripper_relesae(void); @@ -47,6 +61,7 @@ uint8_t get_power_status(void); void check_motor_positon(void); void update_motor_position(void); +unsigned long millis_2(void); #endif diff --git a/src/uarm_swift.c b/src/uarm_swift.c index 980e26f..43723c8 100755 --- a/src/uarm_swift.c +++ b/src/uarm_swift.c @@ -30,6 +30,7 @@ void uarm_swift_init(void){ uart_printf( "soft ver : %s\r\n" , SOFTWARE_VERSION ); uart_printf( "api ver : %s\r\n", API_VERSION ); uart_printf( "work mode : %d\r\n", uarm.param.work_mode ); + printString( "@1\n" ); } @@ -37,6 +38,7 @@ void uarm_swift_init(void){ void uarm_swift_tick_run(void){ // swift_buzzer.tick(); + pump_tick(); } diff --git a/src/uarm_swift.h b/src/uarm_swift.h index 6f95f17..39952c7 100755 --- a/src/uarm_swift.h +++ b/src/uarm_swift.h @@ -13,7 +13,7 @@ #endif #define HARDWARE_VERSION hardware_version -#define SOFTWARE_VERSION "V4.5.0" +#define SOFTWARE_VERSION "V4.5.1" #define API_VERSION "V4.0.4" #define BLE_UUID bt_mac_addr From dfcd2b1cf9037c81a22267deb5a281f55616e1ee Mon Sep 17 00:00:00 2001 From: HuttonGe Date: Mon, 23 Mar 2020 17:26:48 +0800 Subject: [PATCH 63/74] Updat2 2020-03-23 --- hex/uArm3Plus_V4.5.0_release_20190924.hex | 3953 -------------------- hex/uArmPro_V4.5.1_release_20200320.hex | 4033 +++++++++++++++++++++ 2 files changed, 4033 insertions(+), 3953 deletions(-) delete mode 100755 hex/uArm3Plus_V4.5.0_release_20190924.hex create mode 100644 hex/uArmPro_V4.5.1_release_20200320.hex diff --git a/hex/uArm3Plus_V4.5.0_release_20190924.hex b/hex/uArm3Plus_V4.5.0_release_20190924.hex deleted file mode 100755 index 61b785d..0000000 --- a/hex/uArm3Plus_V4.5.0_release_20190924.hex +++ /dev/null @@ -1,3953 +0,0 @@ -:1000000065C5000084C5000082C5000080C50000F1 -:100010007EC500007CC500007AC5000078C50000E0 -:1000200076C500000C94D25A72C500000C94104999 -:100030006EC500006CC500006AC500000C949D559B -:1000400066C500000C94412A62C5000060C500002E -:100050005EC500005CC500005AC500000C94CC29A8 -:1000600056C500000C94A5300C94953150C5000085 -:100070004EC500004CC500004AC5000048C5000040 -:1000800046C5000044C5000042C500000C948755D9 -:100090000C943D300C9467313AC5000038C500001F -:1000A00036C5000034C5000032C5000030C5000070 -:1000B0002EC500000C944C552AC5000028C5000030 -:1000C00026C5000024C500000C9417550C94D52FAC -:1000D0000C9439311CC500000C946D2F0C940B311D -:1000E00016C500006E14D41ED41E7C149114A614E0 -:1000F000BB14D41EC414D41ED714D41EE614F0149A -:100100005015D41ED41ED41E071521153B15A31D52 -:10011000B31DE21DB31DE61DFD1DEC1DF61D211EC8 -:10012000281E331E3E1E5D1E5F1E621E641E1426A8 -:100130002D2646265F2678269B26B426A32DA92D9C -:10014000AC2DAF2DB32DBB2DC32D302E302E302E28 -:10015000CB2DCE2DD72DE02D302E302E302E302E23 -:10016000302E302EE82DF22DFE2D082E0B2E142EC3 -:100170001D2E232E8F549254815485548B54C95470 -:1001800096549A54A054A454A854AE54B254B6549D -:10019000C954BC54C054C454084AD73B3BCE016E2A -:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE -:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD -:1001C000000000803F072C7AA5BA6CC590DA3B93FB -:1001D00065FC8BBC53F810FD3C5692834DBD879D4A -:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 -:1001F000CDB2D44EB93836A9020C50B991868808D0 -:100200003CA6AAAA2ABE000000803F0000407A1047 -:10021000F35A00A0724E18090010A5D4E80000E8B7 -:100220007648170000E40B54020000CA9A3B000015 -:1002300000E1F505000080969800000040420F00A4 -:100240000000A08601000000102700000000E80365 -:10025000000000006400000000000A000000000030 -:100260000100000000002C76D888DC674F0823DFEF -:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 -:10028000997696E8E6C28426EB898C9B62ED407CE9 -:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 -:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA -:1002B000FEF520E6B500D0ED902E030094357705CD -:1002C0000080841E080000204E0A000000C80C3385 -:1002D0003333330F986E12831141EF8D2114893B14 -:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 -:1002F000901DA4BBE424203284725E228100C9F1E7 -:1003000024ECA1E53D276364696E6F7073757858BE -:100310005B00000020002300260029002C002F0095 -:100320003200000100000301060109010D0A003D31 -:1003300000244E005D0D0A005B302E396A2E3230EB -:100340003136303732363A005D0D0A005B544C4F7F -:100350003A005D0D0A002C005B4739323A005D0D12 -:100360000A002C003A003330003238005B47005D51 -:100370000D0A00205300204600205400204D380074 -:10038000204D3900204D3500204D3400204D3300E4 -:10039000204D3200204D3100204D300020473934AF -:1003A00000204739330020473931002047393000D9 -:1003B00020473230002047323100204731390020B9 -:1003C0004731380020473137002047004733382E67 -:1003D000004738300047330047320047310047308C -:1003E000005B00290D0A00206D617820747261762F -:1003F000656C2C206D6D0020616363656C2C206D35 -:100400006D2F7365635E3200206D617820726174B8 -:10041000652C206D6D2F6D696E002C2073746570D6 -:100420002F6D6D007A00790078002028003D0024AF -:10043000002028686F6D696E672070756C6C2D6F79 -:1004400066662C206D6D290D0A002028686F6D6985 -:100450006E67206465626F756E63652C206D7365D1 -:1004600063290D0A2432373D002028686F6D696EBC -:1004700067207365656B2C206D6D2F6D696E290D7E -:100480000A2432363D002028686F6D696E67206649 -:100490006565642C206D6D2F6D696E290D0A2432FF -:1004A000353D00290D0A2432343D002028686F6D47 -:1004B000696E672064697220696E76657274206D5A -:1004C00061736B3A002028686F6D696E67206379ED -:1004D000636C652C20626F6F6C290D0A2432333DEA -:1004E00000202868617264206C696D6974732C2027 -:1004F000626F6F6C290D0A2432323D002028736F21 -:100500006674206C696D6974732C20626F6F6C293E -:100510000D0A2432313D0020287265706F727420FC -:10052000696E636865732C20626F6F6C290D0A24F5 -:1005300032303D00202861726320746F6C657261F7 -:100540006E63652C206D6D290D0A2431333D00202A -:10055000286A756E6374696F6E206465766961746C -:10056000696F6E2C206D6D290D0A2431323D0029F2 -:100570000D0A2431313D0020287374617475732095 -:100580007265706F7274206D61736B3A0020287011 -:10059000726F62652070696E20696E766572742C68 -:1005A00020626F6F6C290D0A2431303D0020286CC9 -:1005B000696D69742070696E7320696E76657274F6 -:1005C0002C20626F6F6C290D0A24363D00202873A1 -:1005D00074657020656E61626C6520696E76657207 -:1005E000742C20626F6F6C290D0A24353D00290D93 -:1005F0000A24343D00202864697220706F727420D0 -:10060000696E76657274206D61736B3A00290D0A0C -:1006100024333D0020287374657020706F7274203D -:10062000696E76657274206D61736B3A0020287371 -:100630007465702069646C652064656C61792C2038 -:100640006D736563290D0A24323D0020287374659B -:10065000702070756C73652C2075736563290D0AA5 -:1006600024313D0024303D0024242028766965771C -:10067000204772626C2073657474696E6773290D0C -:100680000A2423202876696577202320706172610F -:100690006D6574657273290D0A2447202876696593 -:1006A0007720706172736572207374617465290DAF -:1006B0000A2449202876696577206275696C642070 -:1006C000696E666F290D0A244E20287669657720A9 -:1006D0007374617274757020626C6F636B73290D33 -:1006E0000A24783D76616C756520287361766520F3 -:1006F0004772626C2073657474696E67290D0A24F1 -:100700004E783D6C696E6520287361766520737440 -:10071000617274757020626C6F636B290D0A2443DB -:100720002028636865636B2067636F6465206D6F65 -:100730006465290D0A245820286B696C6C20616C53 -:1007400061726D206C6F636B290D0A24482028723A -:10075000756E20686F6D696E67206379636C6529BB -:100760000D0A7E20286379636C652073746172744E -:10077000290D0A2120286665656420686F6C64294C -:100780000D0A3F202863757272656E742073746160 -:10079000747573290D0A6374726C2D782028726544 -:1007A000736574204772626C290D0A0000002100F5 -:1007B000240027002A002D00300033000101000032 -:1007C000040107010A010D0A00496E76616C696433 -:1007D0002067636F64652049443A00556E6465661E -:1007E000696E656420666565642072617465004D9C -:1007F0006F64616C2067726F75702076696F6C61D1 -:1008000074696F6E00486F6D696E67206E6F74203B -:10081000656E61626C656400416C61726D206C6F25 -:10082000636B004E6F742069646C650045455052DF -:100830004F4D2072656164206661696C2E2055738E -:10084000696E672064656661756C74730056616CCF -:100850007565203C2033207573656300536574749F -:10086000696E672064697361626C65640056616CCF -:100870007565203C203000496E76616C6964207398 -:10088000746174656D656E7400426164206E756D8F -:1008900062657220666F726D617400457870656381 -:1008A00074656420636F6D6D616E64206C65747433 -:1008B0006572006572726F723A20006F6B0D0A00EC -:1008C0000D0A00486F6D696E67206661696C0050A3 -:1008D000726F6265206661696C0041626F7274209C -:1008E000647572696E67206379636C6500536F6627 -:1008F00074206C696D69740048617264206C696D64 -:10090000697400414C41524D3A20003E0D0A002CC2 -:100910004C696D3A002C52583A002C4275663A00E8 -:100920002C002C57506F733A002C002C4D506F73D5 -:100930003A003C446F6F72003C436865636B003C57 -:10094000416C61726D003C486F6D65003C486F6C96 -:1009500064003C52756E003C49646C65005D0D0A94 -:1009600000526573746F72696E67206465666175A5 -:100970006C74730050676D20456E64004368656356 -:100980006B20446F6F720044697361626C65640030 -:10099000456E61626C65640043617574696F6E3A9F -:1009A00020556E6C6F636B656400272448277C2795 -:1009B00024582720746F20756E6C6F636B0052652E -:1009C00073657420746F20636F6E74696E75650053 -:1009D0005B005D0D0A003A002C005B5052423A0069 -:1009E00000002200250028002B002E0031003400DA -:1009F00002010000050108010B01050505050705B9 -:100A000008080808020202020A0A0808040404048A -:100A100001010101010101010303030303030303B6 -:100A2000040707070C0C0C0C0C0C0C0C0202020245 -:100A300006060606060606060B0B0B0B0B0B0B0B2E -:100A400001021020200808102040102040800201E0 -:100A500002010804020101020408102040808040C5 -:100A600020100804020180040201804020100804C4 -:100A70000201080402010102040810204080010262 -:100A800004081020408000000A0B02090C0D0E081B -:100A90000703040100000000000000000000000047 -:100AA0000000000000000000000000000000000046 -:100AB0000000121110000000000000000000000003 -:100AC00000000000000000000000000011241FBE14 -:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D -:100AE000B2E0EEE4F4EF00E00BBF02C007900D921D -:100AF000AC3AB107D9F725E1ACEAB4E001C01D92E8 -:100B0000AC39B207E1F70E94C15D0C94257A78CA2E -:100B10002F923F924F925F926F927F928F929F920D -:100B2000AF92BF92CF92DF92EF92FF920F931F93FB -:100B3000CF93DF93CDB7DEB7C85CD1090FB6F89479 -:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B -:100B5000D04089E3E4E2F5E1DF011D928A95E9F7EF -:100B60008AE0EDE5F5E1A5E2B5E101900D928A9507 -:100B7000E1F7FE01E756FF4F1082CD54DF4F198297 -:100B80001882C35BD040C155DF4F19821882CF5AFB -:100B9000D040C154DF4F1882CF5BD040C655DF4FE5 -:100BA0001882CA5AD040C255DF4F1882CE5AD04060 -:100BB000E859F109C456DF4FF983E883CC59D04096 -:100BC0009E01235A3F4FC256DF4F39832883CE59A7 -:100BD000D040CE018F5A9F4FC056DF4F99838883F4 -:100BE000C05AD040DE01A959BF4FCE55DF4FB9835F -:100BF000A883C25AD040E059FF4FCC55DF4FF9834C -:100C0000E883C45AD0409C01285F3F4FCD53DF4F4B -:100C100039832883C35CD040C756DF4F8881C959C8 -:100C2000D040C754DF4FE881F981C95BD040E80F5D -:100C3000F11D1081112311F40C94B3159FEB910F4A -:100C40009A3110F00C94C61E8F5FC756DF4F888311 -:100C5000C959D040AE014B565F4FBE0167567F4F1A -:100C6000C754DF4F88819981C95BD0400E94D0551D -:100C7000882311F40C94C81ECB56DF4FC880D9804E -:100C8000EA80FB80C559D040C701B6010E9433738A -:100C90000E94A070CB54DF4F688379838A839B8343 -:100CA000C55BD040CB54DF4F48805980C55BD040F6 -:100CB000B20180E090E00E94CC709B01AC01C701C2 -:100CC000B6010E94526F20E030E048EC52E40E94EE -:100CD00085724B015C0120E030E0A9010E944A725C -:100CE00020E030E040E05FE387FD05C0C501B401CE -:100CF0000E94536F04C0C501B4010E94526F0E944C -:100D00009B701B011D3411F40C942F0F24F4173425 -:100D100061F00C945B14103511F40C94C50F13356D -:100D200011F40C94E7130C945B14C756DF4F8881C1 -:100D3000C959D040C754DF4FA881B981C95BD040A1 -:100D4000A80FB11DCD01BAE94B16B8E05B0609F456 -:100D500016C160F4F4ED4F16F7E05F06D1F029E913 -:100D6000421628E0520609F440C0FAC53DE9431690 -:100D700038E0530609F451C3AEE94A16A8E05A0612 -:100D800009F436C5BCE94B16B8E05B0609F0E8C5C6 -:100D900049C21A821982E1E0F0E0EC0FFD1FFF93D7 -:100DA000EF932FE434E03F932F939F938F930E9410 -:100DB000F9730F900F900F900F900F900F901816DF -:100DC00019060CF03BC589819A8190938B10809312 -:100DD0008A1011E01093920D8091160D811148C573 -:100DE0000E94153E1093160D43C58E010B5E1F4FDA -:100DF0001F930F939E01275D3F4F3F932F937E01DB -:100E0000FDE3EF0EF11CFF92EF92CF55DF4F2881EB -:100E1000C15AD0402F93C056DF4F3881C05AD040BE -:100E20003F9329E132E03F932F939F938F930E944A -:100E3000F9730FB6F894DEBF0FBECDBF04970CF464 -:100E4000FDC4EF961CAE1DAE1EAE1FAEEF97E5962D -:100E50001CAE1DAE1EAE1FAEE597AB961CAE1DAE12 -:100E60001EAE1FAEAB97A1961CAE1DAE1EAE1FAE42 -:100E7000A1978CE0C456DF4FE881F981CC59D0406E -:100E800011928A95E9F7AE0145585F4F60E070E036 -:100E9000CE018F5A9F4F0E94D055882309F4E8C491 -:100EA000AE014F585F4F60E070E0C7010E94D0551F -:100EB000882309F4DDC4AE0149595F4F60E070E05A -:100EC000CE0189960E94D055882309F4D1C4AE0181 -:100ED000435A5F4F60E070E0C8010E94D0558823FC -:100EE00009F4C6C420E030E044EB52E4E5966CAD72 -:100EF0007DAD8EAD9FADE5970E94526F21EE3EE233 -:100F000045E652E40E9433706B017C01E5966CAFBC -:100F10007DAF8EAF9FAFE5970E943070EF968CAC9F -:100F20009DACAEACBFACEF97A50194010E94857259 -:100F300069837A838B839C83C701B6010E94E87220 -:100F40009B01AC01C501B4010E9485726D837E8353 -:100F50008F839887AB968CAD9DADAEADBFADAB9793 -:100F600089879A87AB87BC87A1962CAD3DAD4EADE6 -:100F70005FADA19700E0BE016F5F7F4F37C46596FC -:100F80001CAE1DAE1EAE1FAE659721961CAE1DAEEB -:100F90001EAE1FAE219721E030E02C0F3D1F3F9386 -:100FA0002F938E010B5E1F4F1F930F93C156DF4F80 -:100FB0003881CF59D0403F93C256DF4FA881CE59D8 -:100FC000D040AF9322E432E03F932F939F938F93CF -:100FD0000E94F9730FB6F894DEBF0FBECDBF039722 -:100FE0000CF42CC4AE014F5A5F4F60E070E0C801B2 -:100FF0000E94D055882309F43BC4AE01435C5F4F87 -:1010000060E070E0CE0101960E94D055882309F47B -:101010002FC43E01F9E26F0E711C8CE0D3011D92CA -:101020008A95E9F76091790D70917A0D80917B0D29 -:1010300090917C0D0E94CE7024EE38E34EE553E48F -:101040000E94337020916D0D30916E0D40916F0DA7 -:101050005091700D0E94536FCA55DF4F688379839A -:101060008A839B83C65AD04060917D0D70917E0D1E -:1010700080917F0D9091800D0E94CE7024EE38E318 -:101080004EE553E40E9433702091710D3091720D42 -:101090004091730D5091740D0E94536FC554DF4FF2 -:1010A000688379838A839B83CB5BD0406091810D79 -:1010B0007091820D8091830D9091840D0E94CE706D -:1010C00024EE38E34EE553E40E9433706B017C015B -:1010D00020E030E044EB52E46091750D7091760DA4 -:1010E0008091770D9091780D0E94526F9B01AC0119 -:1010F000C701B6010E94536F7B018C016F968EADC4 -:101100009FAD6F978130910509F450C00CF03FC03E -:10111000892B09F0A0C320E030E044EB52E465964F -:101120006CAD7DAD8EAD9FAD65970E94526F65969B -:101130006CAF7DAF8EAF9FAF6597FE01F1964F010B -:101140009E01235D3F4F5901DE0199966D017B01A0 -:101150008C01C554DF4F288139814A815B81CB5B8B -:10116000D040CA55DF4F688179818A819B81C65AF8 -:10117000D0400E947644A401B501C6010E94684295 -:1011800021962CAD3DAD4EAD5FAD2197E2C38230CF -:10119000910519F1039709F05EC365966CAD7DADBD -:1011A0008EAD9FAD65970E94F03E62C365966CADB3 -:1011B0007DAD8EAD9FAD6597FE01F1964F019E010D -:1011C000235D3F4F59016301C554DF4F28813981A9 -:1011D0004A815B81CB5BD04015C065962CAD3DAD9F -:1011E0004EAD5FAD6597CE01C1964C01DE019D9677 -:1011F0005D016301CA55DF4F688179818A819B81D6 -:10120000C65AD0400E947644A401B501C3010E9491 -:10121000684221962CAD3DAD4EAD5FAD219700E00B -:10122000B30199C38E010B5E1F4F1F930F937E0175 -:10123000B9E2EB0EF11CFF92EF926E01EDE3CE0EE0 -:10124000D11CDF92CF92CF55DF4FF881C15AD040E9 -:10125000FF93C056DF4F2881C05AD0402F932AE514 -:1012600032E03F932F939F938F930E94F9730FB6B1 -:10127000F894DEBF0FBECDBF04970CF4DFC2EF962B -:101280001CAE1DAE1EAE1FAEEF97E5961CAE1DAE9A -:101290001EAE1FAEE597AB961CAE1DAE1EAE1FAECA -:1012A000AB97A1961CAE1DAE1EAE1FAEA197AE01B0 -:1012B00045585F4F60E070E0CE018F5A9F4F0E940B -:1012C000D055882309F4D4C2AE014F585F4F60E077 -:1012D00070E0C6010E94D055882309F4C9C2AE014E -:1012E00049595F4F60E070E0C7010E94D0558823E4 -:1012F00009F4BEC2AE01435A5F4F60E070E0C8011E -:101300000E94D055882309F4B3C26091810D709179 -:10131000820D8091830D9091840D0E94CE70CA55EC -:10132000DF4F688379838A839B83C65AD04060915C -:101330007D0D70917E0D80917F0D9091800D0E94AA -:10134000CE70C554DF4F688379838A839B83CB5BE0 -:10135000D0406091790D70917A0D80917B0D9091C4 -:101360007C0D0E94CE70FE0139964F019E012B5FCD -:101370003F4F5901DE0111966D01CA55DF4FE880DC -:10138000F9800A811B81C65AD040C554DF4F28819D -:1013900039814A815B81CB5BD0400E945A45A401D0 -:1013A000B501C6010E946842EF962CAD3DAD4EAD31 -:1013B0005FADEF9769817A818B819C810E94536F29 -:1013C00069837A838B839C83E5962CAD3DAD4EADCE -:1013D0005FADE5976D817E818F8198850E94536F07 -:1013E0006D837E838F839887AB962CAD3DAD4EADDC -:1013F0005FADAB9769857A858B859C850E94536F1D -:1014000069877A878B879C87A1962CAD3DAD4EADC1 -:101410005FADA19700E0B601E9C1C156DF4FB881C9 -:10142000CF59D040BF93C256DF4FE881CE59D0404C -:10143000EF93CD55DF4FF881C35AD040FF93CE557F -:10144000DF4F2881C25AD0402F93CB55DF4F3881D0 -:10145000C55AD0403F93CC55DF4FA881C45AD040E5 -:10146000AF938E0105581F4F1F930F9329E132E070 -:101470003F932F939F938F930E94F9730FB6F89425 -:10148000DEBF0FBECDBF04970CF4D8C1CF56DF4FDF -:10149000188219821A821B82C159D040C357DF4F6C -:1014A000188219821A821B82CD58D040C757DF4F4D -:1014B000188219821A821B82C958D040CB57DF4F3D -:1014C000188219821A821B82C558D0408CE0C056FF -:1014D000DF4FA881B981C05AD0401D928A95E9F7A3 -:1014E000AE014F565F4F60E070E0C8010E94D055DA -:1014F000882309F4BDC1AE0143575F4F60E070E03F -:10150000CE018F589F4F0E94D055882309F4B0C157 -:10151000AE0147575F4F60E070E0CE0189599F4FA1 -:101520000E94D055882309F4A3C1AE014B575F4FE9 -:1015300060E070E0CE01835A9F4F0E94D05588230F -:1015400009F496C16091810D7091820D8091830D97 -:101550009091840D0E94CE70CA55DF4F68837983C5 -:101560008A839B83C65AD04020E030E044EB52E4AB -:101570006091750D7091760D8091770D9091780D39 -:101580000E94526F6B017C0124EE38E34EE553E478 -:10159000CA55DF4F688179818A819B81C65AD040C4 -:1015A0000E9433709B01AC01C701B6010E94536FCA -:1015B000C554DF4F688379838A839B83CB5BD0409C -:1015C00060917D0D70917E0D80917F0D9091800DC9 -:1015D0000E94CE70CB53DF4F688379838A839B83CD -:1015E000C55CD0406091790D70917A0D80917B0D32 -:1015F00090917C0D0E94CE70CD53DF4F88809980F2 -:10160000C35CD040F1E56F2E712C6C0E7D1EB4E0F2 -:101610006B0E711C5301FE01EF5AFF4F6F01CA554B -:10162000DF4FE880F9800A811B81C65AD040CB5336 -:10163000DF4F288139814A815B81C55CD0400E949F -:101640005A45CD53DF4F48815981C35CD040B30127 -:10165000C6010E94684265966CAD7DAD8EAD9FADB2 -:1016600065976996CCACDDACEEACFFAC69979B019D -:10167000AC010E9485724B015C01A7019601C70174 -:10168000B6010E9485729B01AC01C501B4010E94A4 -:10169000536F0E94F272CF56DF4F288139814A8101 -:1016A0005B81C159D0400E94536F6B017C01CF56C2 -:1016B000DF4F688379838A839B83C159D040C357A6 -:1016C000DF4F288139814A815B81CD58D040C55494 -:1016D000DF4F688179818A819B81CB5BD0400E94FA -:1016E000536F21EE3EE245E652E40E943370CA5544 -:1016F000DF4F688379838A839B83C65AD0400E94D8 -:1017000030709B01AC01C701B6010E9485724B018C -:101710005C0165966CAF7DAF8EAF9FAF6597CA5584 -:10172000DF4F688179818A819B81C65AD0400E94AF -:10173000E8729B01AC01C701B6010E9485726996EF -:101740006CAF7DAF8EAF9FAF6997C757DF4F2881D2 -:1017500039814A815B81C958D0406D966CAD7DADB1 -:101760008EAD9FAD6D970E94536F6D966CAF7DAF40 -:101770008EAF9FAF6D978E01035C1F4F24E045E055 -:10178000C501B4010E94D76C69966CAD7DAD8EAD7C -:101790009FAD69970451110924E045E00E94D76C80 -:1017A0006D966CAD7DAD8EAD9FAD6D9704511109F9 -:1017B00024E045E00E94D76CCF56DF4F68817981E5 -:1017C0008A819B81C159D0400451110924E045E030 -:1017D0000E94D76CCB57DF4F288139814A815B81CA -:1017E000C558D04000E0BE016F5A7F4F81E0B4C0C1 -:1017F00021E030E02C0F3D1F3F932F938E010B5EB5 -:101800001F4F1F930F937E0139E2E30EF11CFF92ED -:10181000EF926E01ADE3CA0ED11CDF92CF9223E8A6 -:1018200032E03F932F939F938F930E94F9730FB6EB -:10183000F894DEBF0FBECDBF049784F41F9281E001 -:101840008F938DE092E09F938F930E94AF330F9020 -:101850000F900F900F9082E390E084C0AE01455846 -:101860005F4F60E070E0C6010E94D055811103C057 -:1018700080E090E077C0AE014F585F4F60E070E0CD -:10188000C7010E94D055882399F3AE0149595F4F93 -:1018900060E070E0C8010E94D055882349F3AE0192 -:1018A000435A5F4F60E070E0CE0101960E94D05530 -:1018B0008823F1F220E030E044EB52E4EF966CAD87 -:1018C0007DAD8EAD9FADEF970E94526F7B018C0175 -:1018D000EF966CAF7DAF8EAF9FAFEF978CE0C056A9 -:1018E000DF4FA881B981C05AD0401D928A95E9F78F -:1018F000AB962CAD3DAD4EAD5FADAB97E5966CAD07 -:101900007DAD8EAD9FADE597CD53DF4F888099803B -:10191000C35CD040E1E56E2E712C6C0E7D1EB4E0F0 -:101920006B0E711C5301FE01EF5AFF4F6F010E94B5 -:101930007644CD53DF4F48815981C35CD040B30119 -:10194000C6010E946842A1962CAD3DAD4EAD5FAD83 -:10195000A19700E0B60180E00E94BA5690E002C074 -:1019600081E090E09C01215031092230310510F0D6 -:101970000C942F1FF8E24F16510409F414C280F59D -:1019800034E14316510498F481E14816510408F0FB -:1019900061C194E04916510409F474C008F4E3C02D -:1019A000BAE04B16510409F45EC00C94D41EECE16D -:1019B0004E16510409F457C038F426E1421651047A -:1019C00008F4A2C10C94D41E3EE14316510409F45C -:1019D0004AC086E24816510409F4C5C00C94D41ECE -:1019E0009DE34916510409F4D3C110F5B5E34B1634 -:1019F000510409F447C060F4FBE24F16510409F4A6 -:101A000095C121E34216510409F490C10C94D41EEF -:101A10003CE34316510410F00C94D41ECB54DF4F1A -:101A20008881C55BD040865380932B15A9E0AAC15D -:101A30008CE54816510460F49AE54916510408F003 -:101A40001FC1A0E54A16510409F49BC00C94D41E92 -:101A5000BCE54B16510439F0EFE54E16510408F47D -:101A60003CC10C94D41E2114310411F00C94E81ED6 -:101A7000C255DF4FF881CE5AD040FF2309F445C04C -:101A80000C94CA1E2CE14216510491F148F484E0F2 -:101A90004816510479F09AE049165104E1F08AC1E0 -:101AA000AEE14A165104D9F1B5E34B16510409F4DD -:101AB00056C080C181E054C0BFE14B16510408F00C -:101AC00042C0EAE04E16510441F4E1E0C255DF4F56 -:101AD000E883CE5AD04082E043C0FCE14F16510467 -:101AE00009F078C1F1E0C255DF4FF883CE5AD040FB -:101AF0002114310441F02AE02216310411F00C9433 -:101B0000D41E84E010C083E00EC0AEE14A1651043A -:101B100099F631E0C255DF4F3883CE5AD0402114B8 -:101B2000310449F485E080932415CA55DF4F1882AB -:101B3000C65AD0405AC18AE02816310411F00C94DC -:101B4000D41E86E0F0CF25E34216510411F00C9428 -:101B5000141F91E0C255DF4F9883CE5AD04087E0E2 -:101B60008093241527C1C255DF4FE881CE5AD0405B -:101B7000E1110C94CA1EF2E0C255DF4FF883CE5A31 -:101B8000D04022E04216510419F158F44114510496 -:101B9000D9F04A94452809F013C181E080932515B6 -:101BA0000FC196E249165104C1F0A0E54A1651044E -:101BB00009F44BC0B3E04B16510409F001C183E0B6 -:101BC0008093251531E09AC010922515E1E0ECC014 -:101BD00082E08093251521E088C08EE1281631042B -:101BE00001F180F4A4E12A16310411F00C94D41E02 -:101BF00084E080932515F1E0CA55DF4FF883C65A7B -:101C0000D040F3C0B8E22B163104A9F0E2E32E165F -:101C1000310411F00C94D41E87E08093251581E0E7 -:101C200039C085E08093251521E0CA55DF4F288310 -:101C3000C65AD040DAC086E08093251531E0CA55F7 -:101C4000DF4F3883C65AD040D0C088E08093251536 -:101C500091E062C0A2E14A16510441F0B3E14B1693 -:101C6000510449F010922915E2E09EC081E0809372 -:101C70002915F2E0A6C082E08093291522E035C044 -:101C800021143104B9F43AE54316510449F4109291 -:101C9000281583E0CA55DF4F8883C65AD040A5C0B7 -:101CA00081E08093281593E0CA55DF4F9883C65A88 -:101CB000D0409BC0AAE02A16310411F00C94D41E27 -:101CC000BAE54B16510411F40C94D41EE4E0CA5545 -:101CD000DF4FE883C65AD04088C0FDE54F16510457 -:101CE00051F481E08093261525E0CA55DF4F288303 -:101CF000C65AD0406BC01092261535E0CA55DF4F4A -:101D00003883C65AD04062C084E14816510451F469 -:101D100081E08093271596E0CA55DF4F9883C65A15 -:101D2000D04054C010922715A6E02CC0C255DF4FFA -:101D3000B881CE5AD040B1110C94CA1EE1E34E16C0 -:101D4000510451F410922A15F8E0CA55DF4FF88378 -:101D5000C65AD04023E044C03AE02316310411F0C3 -:101D60000C94D41E81E080932A1588E0CA55DF4F79 -:101D70008883C65AD04093E0C255DF4F9883CE5A2D -:101D8000D04033C0CA55DF4FA883C65AD0401EC0CA -:101D9000232811F00C94D41EBAE0CA55DF4FB88343 -:101DA000C65AD04022C0E7E0CA55DF4FE883C65A82 -:101DB000D0400CC0CA55DF4F1882C65AD04006C06A -:101DC000F1E0CA55DF4FF883C65AD040232869F0A6 -:101DD0000C94FB1ECA55DF4F1882C65AD04021E032 -:101DE000C255DF4F2883CE5AD040C155DF4FE8811E -:101DF000F981CF5AD040CF01A0E0B0E0CA55DF4F03 -:101E00000880C65AD04004C0B695A7959795879587 -:101E10000A94D2F780FF03C085E10C942F1F81E064 -:101E200090E0A0E0B0E0CA55DF4F0880C65AD0402D -:101E300004C0880F991FAA1FBB1F0A94D2F7C1556F -:101E4000DF4F28813981CF5AD040282B392BC155FB -:101E5000DF4F39832883CF5AD0400C940C06672B70 -:101E600011F00C94FB1EC756DF4F8881C959D04032 -:101E7000C754DF4F68817981C95BD040680F711DFD -:101E8000AE0147565F4FCB54DF4F88819981C55BC8 -:101E9000D0400E94491F9C01215031092230310558 -:101EA00010F00C942F1F36E04316510428F483E001 -:101EB0004816510490F026C098E04916510410F4D9 -:101EC0000C94D41EAAE04A16510408F440C0BEE1A6 -:101ED0004B16510411F00C94D41EE2E04E1651043E -:101EE00061F0FEE14F16510441F0452809F046C06B -:101EF00081E080932C152BE032C082E080932C157A -:101F00003BE036C084E04816510471F095E0491674 -:101F10005104A1F081E080932E15ACE0CA55DF4F4B -:101F2000A883C65AD04022C482E080932E15BCE01C -:101F3000CA55DF4FB883C65AD04018C410922E1528 -:101F4000ECE0CA55DF4FE883C65AD0400FC4F9E031 -:101F50004F16510451F082E080932D152DE0CA55A3 -:101F6000DF4F2883C65AD04001C410922D153DE0A2 -:101F7000CA55DF4F3883C65AD040F8C38BE0CA55E4 -:101F8000DF4F8883C65AD040F1C3672B11F00C9401 -:101F9000FB1EC756DF4F8881C959D040C754DF4F59 -:101FA000E881F981C95BD040E80FF11D27EB4216AB -:101FB00028E0520609F4E7C208F05EC18CE9481631 -:101FC00088E0580609F499C108F076C0A9E94A16D4 -:101FD000A8E05A0609F48BC108F05FC0E8E94E1684 -:101FE000E8E05E0609F0B8C384E16E0199E2C90E2B -:101FF000D11CD601E82F1D92EA95E9F77E01F5E1A3 -:10200000EF0EF11CD701E82F1D92EA95E9F7C456AF -:10201000DF4FA881B981CC59D0401D928A95E9F74C -:1020200080E090E00E940147CB54DF4F68837983C2 -:102030008A839B83C55BD04081E090E00E9401478A -:102040002B013C0182E090E00E9401474B015C01C2 -:10205000860124E045E0CB54DF4F688179818A8195 -:102060009B81C55BD0400E94D76C870124E045E08E -:10207000C301B2010E94D76C0451110924E045E06C -:10208000C501B4010E94D76CFF92EF92DF92CF920C -:102090001F930F938CEA92E03DC3FAE94F16F8E0E4 -:1020A0005F0609F427C12BE9421628E0520609F021 -:1020B00053C389EC92E023C13EE9431638E053064E -:1020C00009F427C108F420C19CEA491698E0590692 -:1020D00009F4B5C1ADEA4A16A8E05A0609F03CC3B6 -:1020E000A1961CAE1DAE1EAE1FAEA19765961CAE8E -:1020F0001DAE1EAE1FAE659721961CAE1DAE1EAE68 -:102100001FAE219784E1DE019996C656DF4FB98351 -:10211000A883CA59D040E82F1D92EA95E9F71E011D -:10212000F5E12F0E311CD101E82F1D92EA95E9F758 -:10213000C456DF4FA881B981CC59D0401D928A95F1 -:10214000E9F780E090E00E940147CB54DF4F6883BD -:1021500079838A839B83C55BD04081E090E00E94B5 -:102160000147C554DF4F688379838A839B83CB5BA8 -:10217000D04082E090E00E94014720E030E044EB54 -:1021800052E40E94526F2B013C01FE01FD964F016B -:102190009E012F5A3F4F5901CE01835A9F4F6C0128 -:1021A00083017201C554DF4F288139814A815B81E7 -:1021B000CB5BD040CB54DF4F688179818A819B8192 -:1021C000C55BD0400E947644A401B501C6010E94BF -:1021D0006842A1966CAD7DAD8EAD9FADA197659621 -:1021E000CCACDDACEEACFFAC65979B01AC010E94C2 -:1021F00085724B015C01A7019601C701B6010E94DF -:1022000085729B01AC01C501B4010E94536F0E940D -:10221000F2728E01075D1F4F24E045E00E94D76CEB -:1022200020E030E044EB52E4C301B2010E94536F5E -:10223000810124E045E00E94D76C21966CAD7DAD14 -:102240008EAD9FAD21970451110924E045E00E9415 -:10225000D76C1F930F933F922F92C556DF4FB881D3 -:10226000CB59D040BF93C656DF4FE881CA59D04002 -:10227000EF938BEE92E04EC2B0EC4B16B8E05B06EB -:1022800009F4ADC1D0F439EB431638E0530609F434 -:1022900091C108F484C19AEB491698E0590609F4F3 -:1022A00091C1ABEB4A16A8E05A0609F055C28091DD -:1022B000020185FB882780F990C1B2EC4B16B8E08B -:1022C0005B0609F4FDC108F4CCC133EC431638E0D9 -:1022D000530609F407C280E6481689E0580609F05B -:1022E0003BC28091600D8F9380915F0D21C28AEB7C -:1022F00092E005C08CE890E102C080ED92E09F93EF -:102300008F9384EC92E017C28AE19DE09F938F93B4 -:1023100093C080818E3409F0C8C18181805384309C -:1023200008F0C3C194E16E013DE3C30ED11CD60198 -:10233000E92F1D92EA95E9F77E01F9E2EF0EF11C13 -:10234000D701E92F1D92EA95E9F75E01F5E1AF0E9D -:10235000B11CD501E92F1D92EA95E9F7C456DF4F6C -:10236000A881B981CC59D0401D929A95E9F7823065 -:10237000E1F0833031F1813061F082E090E00E9441 -:102380000147850124E045E00E94D76CBF92AF92DF -:1023900053C080E090E00E940147860124E045E0C0 -:1023A0000E94D76CDF92CF9247C081E090E00E94FC -:1023B0000147870124E045E00E94D76CFF92EF922D -:1023C0003BC080915F0D9091600D0497029748F497 -:1023D000609186107091871080918810909189107B -:1023E00022C020E030E040E05FE3609100027091A5 -:1023F000010280910202909103020E94526F20E03C -:1024000030E040E05FE30E94857220E030E044E38A -:1024100053E40E9485729B01AC0160E070E084E3AC -:1024200093E40E94526F8E010F5F1F4F24E045E03E -:102430000E94D76C1F930F9387ED92E07CC1A19609 -:102440001CAE1DAE1EAE1FAEA19765961CAE1DAE96 -:102450001EAE1FAE659721961CAE1DAE1EAE1FAE02 -:10246000219784E19E01275D3F4FC656DF4F398398 -:102470002883CA59D040D901E82F1D92EA95E9F77F -:102480001E01F5E12F0E311CD101E82F1D92EA95B6 -:10249000E9F7C456DF4FA881B981CC59D0401D92CD -:1024A0008A95E9F780E090E00E9401472B013C010A -:1024B00081E090E00E940147CB54DF4F688379832D -:1024C0008A839B83C55BD04082E090E00E940147F5 -:1024D00020E030E044EB52E40E94526FFE01FD9692 -:1024E0004F019E012F5A3F4F5901DE01A35ABF4FA2 -:1024F0006D017B018C01CB54DF4F288139814A81EA -:102500005B81C55BD040C301B2010E947644A40147 -:10251000B501C6010E946842A1966CAD7DAD8EAD3D -:102520009FADA1978E01075D1F4F24E045E00E94FB -:10253000D76C65966CAD7DAD8EAD9FAD6597810115 -:1025400024E045E00E94D76C21966CAD7DAD8EAD48 -:102550009FAD21970451110924E045E00E94D76CFA -:102560001F930F933F922F92C556DF4FF881CB599F -:10257000D040FF93C656DF4F2881CA59D0402F93D1 -:102580008DED92E0C7C0A49B11C08FE30E94F85468 -:102590008A30910558F08734910550F005C047996D -:1025A00005C00898009B04C081E017C080E015C0FA -:1025B00082E013C082B386958695869591E089273F -:1025C00081700BC08BE30E94F85421E085369105A1 -:1025D00008F420E01F922F93ACC01F92A9C081E0A5 -:1025E00090E08C0F9D1F9F938F9389EF92E09F93B4 -:1025F0008F93FF93EF930E94F9730F900F900F90BA -:102600000F900F900F90181619060CF041C02981F9 -:102610003A812634310508F048C0F901EA57F54FF0 -:102620008491F901E05CF54F1491F901E650F64F01 -:102630000491002391F081110E947454E02FF0E086 -:10264000EE0FFF1FEE5EFC4FA591B491EC911E239F -:1026500081E090E021F480E002C080E090E09F9370 -:1026600067C0A1E0B0E0AC0FBD1FBF93AF9389EF8F -:1026700092E09F938F93FF93EF930E94F9730F90D3 -:102680000F900F900F900F900F901816190684F06E -:102690001F9281E08F938DE092E09F938F930E9431 -:1026A000AF330F900F900F900F9082E390E056C0E1 -:1026B00089819A8180319105C0F70E94F854CFCF6B -:1026C00080915E0D8F9380915D0D8F9380915C0D55 -:1026D0008F9380915B0D8F9380915A0D8F93809192 -:1026E000590D15C080E090E00E94AF46182F092FC9 -:1026F00081E090E00E94AF46F82EE92E82E090E063 -:102700000E94AF46EF92FF920F931F939F938F9378 -:102710008DEF92E09F938F9387E29DE09F938F933D -:102720000E94CB730FB6F894DEBF0FBECDBF11C0B1 -:102730008F9383EB93E09F938F9387E29DE09F932A -:102740008F930E94CB730F900F900F900F900F906C -:102750000F9080E090E002C081E090E09C01215069 -:1027600031092230310510F00C942F1FC155DF4F75 -:10277000E881F981CF5AD040CF01A0E0B0E0CA553E -:10278000DF4F0880C65AD04004C0B695A7959795EC -:1027900087950A94D2F780FD3FCB81E090E0A0E0DE -:1027A000B0E0CA55DF4F0880C65AD04004C0880F39 -:1027B000991FAA1FBB1F0A94D2F7E82BF92BC1550A -:1027C000DF4FF983E883CF5AD0400C940C06672B77 -:1027D00011F00C94FB1EF8EE4F16F3E05F0641F08B -:1027E0002CE4421624E0520649F50E94905623C07C -:1027F000C756DF4F8881C959D040C754DF4FE881A1 -:10280000F981C95BD040E80FF11D80818635C9F49C -:10281000818180538230A8F49FB7813029F0F894E9 -:102820008091B514886004C0F8948091B5148260DA -:102830008093B5149FBF80E090E005C081E090E0F8 -:1028400002C082E390E09C01215031092230310521 -:1028500010F00C942F1FC155DF4FE881F981CF5A3A -:10286000D040CF01A0E0B0E0CA55DF4F0880C65A83 -:10287000D04004C0B695A795979587950A94D2F74E -:1028800080FDCACA81E090E0A0E0B0E0CA55DF4F09 -:102890000880C65AD04004C0880F991FAA1FBB1FCA -:1028A0000A94D2F7E82BF92BC155DF4FF983E8835F -:1028B000CF5AD04095C0812F110F990BAA0BBB0B9B -:1028C000FC01E654F109E531F10510F00C94D41E39 -:1028D0008827EE58FF4F8F4F0C949873C0922F1596 -:1028E000D0923015E0923115F0923215CA55DF4F73 -:1028F0001882C65AD040DAC0C0923315D09234152F -:10290000E0923515F0923615C154DF4FF881CF5B58 -:10291000D040F160C154DF4FF883CF5BD04021E05D -:102920004FC0C0923715D0923815E0923915F09209 -:102930003A15C154DF4F3881CF5BD0403260C1546B -:10294000DF4F3883CF5BD04082E05BC0C0923B1545 -:10295000D0923C15E0923D15F0923E15C154DF4FE8 -:102960009881CF5BD0409460C154DF4F9883CF5B98 -:10297000D040A3E060C0CB54DF4FB881C55BD040EE -:10298000B0933F15E4E071C0C701B6010E949B708F -:1029900060934015709341158093421590934315B1 -:1029A000F5E0CA55DF4FF883C65AD0407FC0C092C9 -:1029B0004415D0924515E0924615F092471526E051 -:1029C000CA55DF4F2883C65AD04070C0C092481500 -:1029D000D0924915E0924A15F0924B1537E061C04C -:1029E000CB56DF4F88819981AA81BB81C559D040E0 -:1029F00080934C1590934D15A0934E15B0934F15A1 -:102A000088E0CA55DF4F8883C65AD0404FC0C09275 -:102A10005115D0925215E0925315F0925415C655A7 -:102A2000DF4F9881CA5AD0409160C655DF4F9883D6 -:102A3000CA5AD040AAE0CA55DF4FA883C65AD04030 -:102A400035C0C0925515D0925615E0925715F092A8 -:102A50005815C655DF4FB881CA5AD040B260C65526 -:102A6000DF4FB883CA5AD040EBE0CA55DF4FE88346 -:102A7000C65AD0401BC0C0925915D0925A15E09248 -:102A80005B15F0925C15C655DF4FF881CA5AD040ED -:102A9000F460C655DF4FF883CA5AD0402CE090CF7F -:102AA00039E0CA55DF4F3883C65AD040CA55DF4F88 -:102AB0008881C65AD040082FCD54DF4FE881F98174 -:102AC000C35BD040CF01A0E0B0E0CA55DF4F088023 -:102AD000C65AD04004C0B695A795979587950A9495 -:102AE000D2F780FF02C00C94CC1E81E693E0A0E0F8 -:102AF000B0E0CA55DF4F0880C65AD04004C0B69532 -:102B0000A795979587950A94D2F780FF11C020E08A -:102B100030E0A901CB56DF4F688179818A819B81A2 -:102B2000C559D0400E942C7087FF02C00C94CE1E65 -:102B300081E090E0A0E0B0E004C0880F991FAA1FD8 -:102B4000BB1F0A95D2F7CD54DF4F28813981C35B73 -:102B5000D040282B392BCD54DF4F39832883C35BDA -:102B6000D0400C940C06C655DF4F3881CA5AD0406D -:102B7000332369F0C255DF4F8881CE5AD04081118E -:102B800006C092E0C255DF4F9883CE5AD040CD5454 -:102B9000DF4FA881C35BD040A5FF0FC080914015D7 -:102BA00090914115A0914215B091431580389649F6 -:102BB000A849B10514F00C94D01E809126158130DF -:102BC00091F4C255DF4FF881CE5AD040F23009F06F -:102BD00040C0CD54DF4F2881C35BD04020FD02C0F0 -:102BE0000C94DA1E36C080915E15811132C0CD542E -:102BF000DF4F3881C35BD04030FF1BC08091271569 -:102C0000813039F523E333E34BEC51E460912F1528 -:102C10007091301580913115909132150E94857216 -:102C200060932F1570933015809331159093321562 -:102C300010C080916B1590916C15A0916D15B0919D -:102C40006E1580932F1590933015A0933115B09386 -:102C50003215CD54DF4F88819981C35BD04090FD00 -:102C600010C08091671590916815A0916915B09179 -:102C70006A1580934C1590934D15A0934E15B09303 -:102C80004F15809124158130B9F4CD54DF4F9881D0 -:102C9000C35BD04096FD03C08CE10C942F1FCD5434 -:102CA000DF4FA881B981C35BD040AF7BCD54DF4FEC -:102CB000B983A883C35BD040809129158823A1F0F4 -:102CC000813021F1CB54DF4F1882C55BD040F2E058 -:102CD000C754DF4FF883C95BD04021E0CA55DF4FAE -:102CE0002883C65AD04023C0B2E0CB54DF4FB8830C -:102CF000C55BD040E1E0C754DF4FE883C95BD040FB -:102D0000CA55DF4F1882C65AD04011C031E0CB54AB -:102D1000DF4F3883C55BD040C754DF4F1882C95B93 -:102D2000D04082E0CA55DF4F8883C65AD040809198 -:102D30002715813049F0C255DF4F9881CE5AD040D7 -:102D4000933009F043C036C0B4E2EB2EB5E1FB2E60 -:102D500000E010E0C655DF4FA881CA5AD0408A2E45 -:102D6000912CA12CB12CD501C401002E04C0B69524 -:102D7000A795979587950A94D2F780FF12C023E311 -:102D800033E34BEC51E4F70165A576A587A590A93F -:102D90000E948572D7019D966D937D938D939C9330 -:102DA000D0970F5F1F4FB4E0EB0EF11C03301105FD -:102DB000D1F6C1CF80912A15813041F4C655DF4F3D -:102DC000E881CA5AD040E43009F0ECC78CE0E0E872 -:102DD000F5E1DE01119601900D928A95E1F7C1555A -:102DE000DF4F28813981CF5AD04031FD08C0109182 -:102DF00024151230C1F0183009F4EAC058C180918E -:102E00002B15873018F08DE10C942F1F90916315CE -:102E1000891769F3BE016F5F7F4F0E94452E88239B -:102E200009F4D4C7E4CFC655DF4F3881CA5AD04021 -:102E3000311103C08AE10C942F1FCD54DF4F8881DC -:102E40009981C35BD04080759927892B09F424CFE1 -:102E500060914415709145158091461590914715E4 -:102E60000E9433730E94A070673068F680913F150E -:102E7000843151F0823009F097C7CD54DF4F8881FB -:102E8000C35BD04087FD90C7CD54DF4FA881B98187 -:102E9000C35BD040AF7ACD54DF4FB983A883C35B07 -:102EA000D040662321F022242A94260E02C02090CE -:102EB0002B15BE016B5E7F4F822D0E94452E88230D -:102EC00009F484C730903F1580909815909099151B -:102ED000A0909A15B0909B15A4E2CA2EA5E1DA2E17 -:102EE0008E010B5E1F4FEDE5F5E1C155DF4FF98314 -:102EF000E883CF5AD040E12CF12CC655DF4FF88142 -:102F0000CA5AD0404F2E512C612C712CD301C201D2 -:102F10000E2C04C0B695A795979587950A94D2F77D -:102F200080FF3BC024E132122EC0C155DF4FA88183 -:102F3000B981CF5AD0409F962D913D914D915C9192 -:102F4000D29757966D917D918D919C915A970E9441 -:102F5000526FF60125A536A547A550A90E94526FCC -:102F6000D8016D937D938D939C931397B2E0EB12F0 -:102F700014C0A50194010E94526FF801608371830F -:102F8000828393830AC0F60185A596A5A7A5B0A95B -:102F9000F80180839183A283B383FFEFEF1AFF0AC6 -:102FA00024E0C20ED11C0C5F1F4FC155DF4F88813A -:102FB0009981CF5AD0400496C155DF4F99838883B9 -:102FC000CF5AD04093E0E916F10409F09FCF4CC1ED -:102FD000C655DF4FA881CA5AD040AA2309F42ACF88 -:102FE0008090981590909915A0909A15B0909B1587 -:102FF000FDE5CF2EF5E1DF2EFE0131961F0104E243 -:1030000015E1E12CF12C4A2E512C612C712CD301AD -:10301000C2010E2C04C0B695A795979587950A9482 -:10302000D2F780FF29C0D1012D913D914D915C9146 -:10303000F6016789708D818D928D0E94526FD80143 -:103040009D962D913D914D915C91D0970E94526F2C -:10305000F80165A776A787A790ABF2E0EF1216C03C -:10306000A50194010E94526FD8019D966D937D93A6 -:103070008D939C93D0970AC0F60187A590A9A1A92A -:10308000B2A9F80185A796A7A7A7B0ABFFEFEF1AE3 -:10309000FF0A24E0C20ED11C34E0230E311C0C5F69 -:1030A0001F4F83E0E816F10409F0B1CFDCC0C25530 -:1030B000DF4F9881CE5AD040933009F49DC0C65559 -:1030C000DF4FA881CA5AD040AA2309F4C2C0009198 -:1030D0002815409098155090991560909A15709009 -:1030E0009B157DE5A72E75E1B72EE4E2EE2EE5E116 -:1030F000FE2EFE0131964F01C12CD12C8A2F90E07B -:10310000A0E0B0E0C155DF4F88839983AA83BB83D9 -:10311000CF5AD040C155DF4F88819981AA81BB81A8 -:10312000CF5AD0400C2C04C0B695A795979587959B -:103130000A94D2F780FD0BC0F5018789908DA18D8F -:10314000B28DF70185A796A7A7A7B0AB43C01730EC -:1031500009F440C001112BC0D5019F962D913D91DE -:103160004D915C91D297F40160817181828193814C -:103170000E94536FD7019D962D913D914D915C9189 -:10318000D0970E94536FF70165A776A787A790ABEA -:10319000F2E0CF121FC0A30192010E94536FD7012A -:1031A0009D966D937D938D939C93D09713C0F5015D -:1031B0002789308D418D528DD7019D966D917D91DE -:1031C0008D919C91D0970E94536FF70165A776A7C8 -:1031D00087A790ABFFEFCF1ADF0A24E0A20EB11C45 -:1031E00034E0E30EF11C84E0880E911C93E0C916D4 -:1031F000D10409F08FCF29C61530A9F0173071F12D -:10320000133089F5C655DF4FA881CA5AD040A111A5 -:1032100005C0C255DF4F1882CE5AD040BE016B5E4A -:103220007F4F86E010C0C655DF4FB881CA5AD040E4 -:10323000B11105C0C255DF4F1882CE5AD040BE0131 -:103240006B5E7F4F87E00E94452E882309F4BEC540 -:103250000AC0153079F3173009F0F3C580912515B0 -:10326000823008F0A3C5212C30902515E8E03E12ED -:1032700011C0C655DF4FF881CA5AD040FF2309F468 -:1032800005C3C255DF4F2881CE5AD040213009F006 -:103290008FC511C3C255DF4F3881CE5AD04032306E -:1032A00009F0F4C2311009C0C655DF4F8881CA5AEF -:1032B000D040882309F4F1C2FEC220E030E0A90129 -:1032C00060912F15709130158091311590913215C4 -:1032D0000E942C70882309F46DC593E0931538F093 -:1032E000A2E03A1690F4B1E03B1631F0E4C2E7E018 -:1032F000E31508F0BEC2DFC2C655DF4FF881CA5AD7 -:10330000D040FF2309F4C9C2D6C2C655DF4F288179 -:10331000CA5AD040222309F48DCDCA55DF4F988177 -:10332000C65AD040892F90E0C155DF4F99838883DA -:10333000CF5AD040C754DF4FB881C95BD040AB2FC4 -:10334000B0E0CD53DF4FB983A883C35CD04081E0A8 -:1033500090E0A0E0B0E06C017D01CA55DF4F08802D -:10336000C65AD04004C0CC0CDD1CEE1CFF1C0A94D5 -:10337000D2F7C754DF4F0880C95BD04004C0880F24 -:10338000991FAA1FBB1F0A94D2F7C82AD92AEA2A72 -:10339000FB2A822F90E0A0E0B0E08C219D21AE219D -:1033A000BF21892B8A2B8B2B09F406C5C155DF4F12 -:1033B00088819981CF5AD040880F991F880F991F13 -:1033C000FC01EC5DFA4EDC01A35ABA4E57962D91E2 -:1033D0003D914D915C915A9765A576A587A590A9D9 -:1033E0000E94526F4B015C01CD53DF4F8881998160 -:1033F000C35CD040880F991F880F991FFC01EC5DBA -:10340000FA4EDC01A35ABA4E57962D913D914D913B -:103410005C915A9765A576A587A590A90E94526FE1 -:10342000C655DF4F688379838A839B83CA5AD0400D -:10343000CD54DF4F08811981C35BD040007811273C -:10344000CD54DF4FE881C35BD040E7FF15C1CD54B9 -:10345000DF4F28813981C35BD0402F77CD54DF4FB8 -:1034600039832883C35BD0400E947169882311F09F -:1034700081E2F5C4809127158130B1F423E333E371 -:103480004BEC51E4609148157091491580914A15B3 -:1034900090914B150E948572609348157093491561 -:1034A00080934A1590934B154090481550904915BC -:1034B00060904A1570904B15A5019401C501B401A7 -:1034C0000E948572C154DF4F688379838A839B830E -:1034D000CF5BD040C655DF4F288139814A815B815F -:1034E000CA5AD040CA01B9010E948572C554DF4F43 -:1034F000688379838A839B83CB5BD04020E030E074 -:1035000040E850E4C301B2010E948572A301920118 -:103510000E948572C154DF4F288139814A815B81C5 -:10352000CF5BD0400E94526FC554DF4F2881398154 -:103530004A815B81CB5BD0400E94526F6B017C0162 -:1035400020E030E0A9010E942C7087FD37C4C7013C -:10355000B6010E94F2726B017C01C554DF4F2881D5 -:1035600039814A815B81CB5BD040C154DF4F688198 -:1035700079818A819B81CF5BD0400E94536F0E94EA -:10358000F2729B01AC01C701B60190580E943370E2 -:103590006B017C0133E0331204C0F7FAF094F7F8C2 -:1035A000F09420E030E0A901C301B2010E942C7028 -:1035B00087FF0FC0F7FAF094F7F8F094D301C20137 -:1035C000B0588093481590934915A0934A15B0932D -:1035D0004B15C155DF4F08811981CF5AD040000FDC -:1035E000111F000F111F085D1A4EC655DF4F2881AD -:1035F00039814A815B81CA5AD040C701B6010E9415 -:1036000085729B01AC01C501B4010E94526F20E09C -:1036100030E040E05FE30E948572D8011B966D9315 -:103620007D938D939C931E97CD53DF4F0881198115 -:10363000C35CD040000F111F000F111F085D1A4E10 -:10364000A5019401C701B6010E948572C655DF4FDE -:10365000288139814A815B81CA5AD0400E94536FC8 -:1036600020E030E040E05FE30E948572F80163876C -:103670007487858796871FC1C154DF4FF881CF5B60 -:10368000D0404F2E512C612C712CC420D520E62027 -:10369000F720CD28CE28CF2809F492C3CD54DF4F90 -:1036A00028813981C35BD040217FCD54DF4F3983DE -:1036B0002883C35BD04080912715813009F491C0E5 -:1036C000C155DF4FE881F981CF5AD040EE0FFF1F7F -:1036D000EE0FFF1FE85DFA4EC384D484E584F684C0 -:1036E000A7019601C501B4010E94526F2B013C0154 -:1036F000CD53DF4FE881F981C35CD040EE0FFF1F4F -:10370000EE0FFF1FE85DFA4E83859485A585B6858B -:10371000C155DF4F88839983AA83BB83CF5AD0409A -:103720009C01AD01C655DF4F688179818A819B81FB -:10373000CA5AD0400E94526F4B015C01A301920112 -:10374000C301B2010E9485722B013C01A5019401C5 -:10375000C501B4010E9485729B01AC01C301B20195 -:103760000E94536F0E94F2724B015C01A701960107 -:10377000C701B6010E9485726B017C01C155DF4F04 -:10378000288139814A815B81CF5AD040CA01B90171 -:103790000E9485729B01AC01C701B6010E94536F64 -:1037A0000E94F2726B017C01609348157093491579 -:1037B00080934A1590934B159B01AC01C501B40150 -:1037C0000E94526F4B015C01E894B7F82AE037ED94 -:1037D00043EA5BE3C501B4010E944A72181664F122 -:1037E0006AC084E2E82E85E1F82ED301C201002EE2 -:1037F00004C0B695A795979587950A94D2F780FF50 -:1038000012C023E333E34BEC51E4D7011F966D91D3 -:103810007D918D919C9152970E948572F7016787E7 -:10382000708B818B928B0F5F1F4FF4E0EF0EF11CBA -:1038300003301105D1F644CF20E030E040E05FE3F3 -:10384000C501B4010E944A7218160CF411CE2FE67D -:1038500032E143E85AE3C701B6010E9485729B0139 -:10386000AC01C501B4010E944A7218160CF400CED6 -:1038700022C0C655DF4F2881CA5AD040222309F4FE -:10388000D9CA0E9471698111F3CD15C0C255DF4FAD -:103890003881CE5AD04031110EC0CD54DF4F8881CF -:1038A0009981C35BD0408E7D9C7FC255DF4F1882CB -:1038B000CE5AD04008C0CD54DF4F88819981C35B78 -:1038C000D0408E7D907E892B09F07CC2809140157E -:1038D00090914115A0914215B091431580937015B8 -:1038E00090937115A0937215B0937315809126155E -:1038F00080935E1580912F1590913015A091311510 -:10390000B091321580936B1590936C15A0936D1543 -:10391000B0936E15C0904C15D0904D15E0904E159B -:10392000F0904F15A7019601609167157091681589 -:103930008091691590916A150E942C708823F9F086 -:1039400010916615112359F080910715823039F0D6 -:103950000E945469B701A601812F0E94D72C809143 -:103960004C1590914D15A0914E15B0914F15809327 -:10397000671590936815A0936915B0936A158091A7 -:10398000501580936F1510912E1580916615811733 -:10399000B9F080910715823079F0C0906715D0900A -:1039A0006815E0906915F0906A150E945469B70196 -:1039B000A601812F0E94D72C80912E158093661529 -:1039C00010912D1580916515811781F08091071553 -:1039D000823041F00E945469123011F45C9A02C0A6 -:1039E0000E94BF5D80912D158093651580912415EF -:1039F000813089F080912915809361158091271578 -:103A000080935F15C255DF4F8881CE5AD0408330F6 -:103A100009F074C054C080910715823059F380902A -:103A2000441590904515A0904615B090471520E09C -:103A300030E040EA51E4C501B4010E9485720E9461 -:103A400009710E94A0706B017C010E94546920E002 -:103A500030E04AE754E4C501B4010E9485724B018D -:103A60005C0182E38C9DB0018D9D700D112480E07E -:103A700090E00E94CC709B01AC01C501B4010E9492 -:103A8000526F0E9409710E94A070CB010E944F39B1 -:103A900086010115110509F4ADCF0E945A39015074 -:103AA0001109809106158111A5CF9FEFA0E7B2E023 -:103AB0009150A040B040E1F700C00000EACF8091F3 -:103AC0002A1580936215813089F48091591590915F -:103AD0005A15A0915B15B0915C1580939815909341 -:103AE0009915A0939A15B0939B1508C0109298153C -:103AF0001092991510929A1510929B1580912B1582 -:103B000090916315981759F0809363158CE0FE012E -:103B10003196A0E8B5E101900D928A95E1F7809188 -:103B2000281580936015E09124158E2F90E0FC01FC -:103B30003297E830F10508F060C08827E957FF4F59 -:103B40008F4F0C949873BE016B5E7F4F822D0E9445 -:103B50003C2E80916315281250C08CE0FE017596B2 -:103B6000A0E8B5E13EC0C255DF4FE881CE5AD04053 -:103B7000EE2371F020916B1530916C1540916D150D -:103B800050916E1500E061E575E181E00E94BA5642 -:103B900020916B1530916C1540916D1550916E15FB -:103BA00000E0BE016B5E7F4F81E00E94BA56182F85 -:103BB0008CE0FE017596A4E7B5E101900D928A951F -:103BC000E1F71CC064E775E186E003C064E775E1D6 -:103BD00087E00E943C2E11C08CE0E1E5F5E1ACE805 -:103BE000B5E101900D928A95E1F707C08CE0ECE811 -:103BF000F5E1DF011D928A95E9F710E08091251526 -:103C000080935D15883009F470C0C255DF4FB881CC -:103C1000CE5AD040B23009F068C090E088309105AB -:103C200008F05AC0FC0140906B1550906C156090E4 -:103C30006D1570906E158827E157FF4F8F4F0C94CC -:103C4000987300E0A301920161E575E180E007C08F -:103C500000915E15A301920161E575E181E00E948A -:103C6000BA56182F39C06091481570914915809146 -:103C70004A1590914B158824839409C0609148158A -:103C80007091491580914A1590914B15812CCB5418 -:103C9000DF4FA880C55BD040C754DF4FC880C95BE9 -:103CA000D040CA55DF4FE880C65AD04000915E151B -:103CB000A30192010E94456A0FC000E001C001E02B -:103CC00020E004C000E001C001E021E040915E1569 -:103CD000C301B2010E94AF698CE0E1E5F5E1A4E720 -:103CE000B5E101900D928A95E1F780912C158093B2 -:103CF0006415882309F468C00E9454699091641582 -:103D000080910715913069F48230E9F19FB7F894FA -:103D10008091B51488608093B5149FBF0E945A3972 -:103D200032C091E090935D1510926115109260156C -:103D300010925E151092631510926615109265151B -:103D40008230A9F0BE016F5F7F4F80E00E94452E58 -:103D50008823E1F18CE0FE013196A0E8B5E1019005 -:103D60000D928A95E1F70E94D02C0E94BF5D80EDF4 -:103D700099E00E940A3484E799E00E940A348DE5B4 -:103D800099E00E940A34109264151EC081E067C059 -:103D900082E065C088E163C089E161C084E05FC002 -:103DA0008BE15DC085E25BC084E159C08EE157C004 -:103DB0008FE155C086E153C080E251C082E24FC01E -:103DC00083E24DC084E24BC0812F49C087E047C0E9 -:103DD000EEE14E16510411F40C948F0D70F42AE0AC -:103DE0004216510411F40C946B0D3CE1431651043E -:103DF00011F40C94780D87E132C085E34816510424 -:103E000011F40C94AF0D9CE549165104A1F721144F -:103E1000310439F0BAE02B16310431F689E00C9404 -:103E2000930D88E00C94930D3CE54316510411F07A -:103E30000C94EA0EA1E0C255DF4FA883CE5AD040C1 -:103E4000E6CF133009F00FCAE4C9153009F4F7C9F9 -:103E5000173009F403CA133009F005CADFC9C85383 -:103E6000DF4F0FB6F894DEBF0FBECDBFDF91CF910D -:103E70001F910F91FF90EF90DF90CF90BF90AF9088 -:103E80009F908F907F906F905F904F903F902F907A -:103E900008952F923F924F925F926F927F928F92EE -:103EA0009F92AF92BF92CF92DF92EF92FF920F93C9 -:103EB0001F93CF93DF93CDB7DEB7C459D1090FB6A7 -:103EC000F894DEBF0FBECDBFFB01873A28E0920712 -:103ED00009F480C208F046C08B34A8E09A0709F4C0 -:103EE00045C1F0F4833E27E0920709F4FFC060F477 -:103EF0008231910509F4FAC08C3C910509F493C014 -:103F0000419709F075C078C08934A8E09A0709F490 -:103F100012C108F018C18834984009F4C2C068C0C2 -:103F20008D3938E0930709F4E6C178F48A39B8E0AE -:103F30009B0709F488C18B3928E0920709F4BEC1B8 -:103F40008939984009F054C024C1823AA8E09A0700 -:103F500009F404C208F44CC0863A984010F40C945A -:103F6000622946C0803C28E0920709F4A0C508F504 -:103F7000873BA8E09A0709F453C570F48D3A28E00E -:103F8000920709F43AC38E3A38E0930709F443C420 -:103F90008C3A984069F524C2893BB8E09B0709F444 -:103FA00063C508F450C58A3B984011F40C9462290B -:103FB0001FC08A36A9E09A0709F44EC770F480360C -:103FC00029E0920709F402C6813639E0930709F423 -:103FD000ECC6813C984061F495C58C36B9E09B07EE -:103FE00009F4B6C708F485C7843C994009F4F9C7B9 -:103FF00081E090E00C9464298091F41482FF08C061 -:104000008A9A809108018160809308015F9A07C0B5 -:104010008A98809108018E7F809308015F980E94A2 -:10402000943F8FE00CC18E010F5F1F4F1F930F93C2 -:1040300088EC93E09F938F93FF936F930E94F973A3 -:104040000F900F900F900F900F900F901816190669 -:104050000CF09DC71D8A1E8A1F8A188EAE014B5E0A -:104060005F4F60E070E0C8010E94D0558823D1F115 -:104070004D895E896F89788D88E70E943A2D4D8938 -:104080005E896F89788D89E70E943A2D4D895E8916 -:104090006F89788D8AE70E943A2D0E9459320C94DC -:1040A00062298E010F5F1F4F1F930F9383ED93E0E3 -:1040B0009F938F93FF936F930E94F9730F900F90CC -:1040C0000F900F900F900F90181619060CF05FC705 -:1040D000AE014B5E5F4F60E070E0C8010E94D055BA -:1040E000811108C082E390E00C9464290E94D93EBB -:1040F0000C94622920E030E04AE754E46D897E891F -:104100008F89988D0E9485720E949B7016161706E3 -:1041100094F47093180D6093170D11E01093190D1E -:104120008091160D81110C9462290E94153E109306 -:10413000160D0C9462291092190D1092180D109200 -:10414000170D0C9462298081863561F68181805338 -:10415000823040F61092950D813021F01092940D2E -:104160000C9462298093940D0C9462298081863589 -:1041700009F0B8CF81818053823008F0B3CF81300D -:1041800021F010929A0D0C94622980939A0D0C9450 -:10419000622980818E3409F0A5CF918190539430AB -:1041A00008F0A0CF923079F1933009F443C0209108 -:1041B000F4148091910D913099F022FF08C08A9AF1 -:1041C000909108019160909308015F9A07C08A98C6 -:1041D000909108019E7F909308015F9884602FC0A2 -:1041E00022FF08C08A9A909108019160909308017B -:1041F0005F9A07C08A98909108019E7F909308016A -:104200005F9881601CC08091F41482FF08C08A9A74 -:10421000809108018160809308015F9A07C08A98A5 -:10422000809108018E7F809308015F988091910DA5 -:10423000826005C00E94943F8091910D88608093B8 -:10424000910D0C94602980818E3409F04BCF9181BF -:104250009053943008F046CF9230B1F0933041F152 -:104260002091F4148091910D913039F022FF02C019 -:104270005F9801C05F9A8B7F17C022FF02C08A98A7 -:1042800001C08A9A8E7F10C08091F41482FF04C00E -:10429000809108018E7F03C0809108018160809326 -:1042A00008018091910D8D7F8093910D0C9462296E -:1042B0000E94CB3E8091910D877FF6CF80818E3416 -:1042C00009F010CF81818053843008F00BCF90919A -:1042D000910D823051F0833059F0813019F090FF08 -:1042E00098C394C391FD92C394C392FD8FC391C3AD -:1042F00093FF8FC38BC38E010F5F1F4F1F930F93CD -:104300008CED93E09F938F93FF936F930E94F973CB -:104310000F900F900F900F900F900F901816190696 -:104320000CF035C68CE0F801AAE1BDE001900D92D9 -:104330008A95E1F70AE11DE08AEE93E0D8016D91DC -:104340008D017C01BFEFEB1AFB0A0E94185DC701CB -:10435000E6EFEE16E3E0FE0689F7B4C71AA619A643 -:104360001D8A1E8A1F8A188E8E010F5F1F4F8AE0DA -:10437000D8011D928A95E9F7CE0189969F938F9374 -:104380001F930F9387EE93E09F938F93FF936F9309 -:104390000E94F9730FB6F894DEBF0FBECDBF02972F -:1043A0000CF4F5C5AE014B5E5F4F60E070E0C801F4 -:1043B0000E94D055882309F495CE2D893E894F89D6 -:1043C000588D69A57AA5072E000C880B990B0E94C1 -:1043D000303E78C78FEF0E94652E0E948C3D72C7D9 -:1043E0002E0125E6420E511C84E1D201282F1D9298 -:1043F0002A95E9F73E0131E5630E711CD301282FA0 -:104400001D922A95E9F78E01035C1F4FD8011D927A -:104410008A95E9F7C357DF4F188219821A821B82E7 -:10442000CD58D040C757DF4F188219821A821B829D -:10443000C958D040CB57DF4F188219821A821B828D -:10444000C558D0401F930F937F926F925F924F9207 -:1044500083EF93E09F938F93FF936F930E94F97381 -:104460000FB6F894DEBF0FBECDBF03970CF48FC517 -:10447000AE0143575F4F60E070E0C2010E94D0552B -:10448000882309F42FCEAE0147575F4F60E070E0FC -:10449000C3010E94D055882309F424CEAE014B57A6 -:1044A0005F4F60E070E0C8010E94D055882309F496 -:1044B00019CECF57DF4F188219821A821B82C1583A -:1044C000D040C358DF4F188219821A821B82CD5701 -:1044D000D040ED961CAE1DAE1EAE1FAEED9784E132 -:1044E0003E01F9E26F0E711CD301E82F1D92EA958F -:1044F000E9F72E01F5E14F0E511CD201E82F1D9274 -:10450000EA95E9F79E012F5F3F4F1901D9011D92EE -:104510008A95E9F7AE014B575F4FBE0167577F4F52 -:10452000CE0183579F4F0E94BD41CB57DF4FE8809C -:10453000F9800A811B81C558D040C757DF4F2881B9 -:1045400039814A815B81C958D040C357DF4F6881A8 -:1045500079818A819B81CD58D040FE01EF57FF4F72 -:104560004F01DE01A758BF4F5D0134976F010E94D4 -:10457000114320E030E044EB52E4CF57DF4F688135 -:1045800079818A819B81C158D0400E94536FCF5757 -:10459000DF4F688379838A839B83C158D040C35897 -:1045A000DF4F688179818A819B81CD57D04082011C -:1045B00024E045E00E94D76CED966CAD7DAD8EADEC -:1045C0009FADED97810124E045E00E94D76CCF5765 -:1045D000DF4F688179818A819B81C158D0408301F6 -:1045E00024E045E00E94D76C3F922F925F924F9259 -:1045F0007F926F928CEA92E000C12E0135E6430E65 -:10460000511C84E1D201282F1D922A95E9F73E0121 -:1046100031E5630E711CD301282F1D922A95E9F70D -:104620008E01035C1F4FD8011D928A95E9F7C3578D -:10463000DF4F188219821A821B82CD58D040C7578B -:10464000DF4F188219821A821B82C958D040CB577B -:10465000DF4F188219821A821B82C558D0401F93DF -:104660000F937F926F925F924F9282E194E09F93BB -:104670008F93FF936F930E94F9730FB6F894DEBF88 -:104680000FBECDBF03970CF482C4AE0143575F4FFA -:1046900060E070E0C2010E94D055882309F422CD69 -:1046A000AE0147575F4F60E070E0C3010E94D055F4 -:1046B000882309F417CDAE014B575F4F60E070E0DF -:1046C000C8010E94D055882309F40CCDCF57DF4F85 -:1046D000188219821A821B82C158D040C358DF4FFA -:1046E000188219821A821B82CD57D040ED961CAEDB -:1046F0001DAE1EAE1FAEED9784E13E01F9E26F0ED6 -:10470000711CD301E82F1D92EA95E9F72E01F5E11E -:104710004F0E511CD201E82F1D92EA95E9F79E0138 -:104720002F5F3F4F1901D9011D928A95E9F720E0CB -:1047300030E044EB52E4C357DF4F688179818A81CE -:104740009B81CD58D0400E94526F7B018C01C35792 -:10475000DF4F688379838A839B83CD58D040CB57C2 -:10476000DF4F288139814A815B81C558D040C757C6 -:10477000DF4F688179818A819B81C958D040FE01D1 -:10478000E758FF4F4F01DE01A358BF4F5D01389638 -:104790006F010E947644A401B501C6010E946842DF -:1047A000CF57DF4F688179818A819B81C158D04082 -:1047B000830124E045E00E94D76CC358DF4F688135 -:1047C00079818A819B81CD57D040820124E045E0E8 -:1047D0000E94D76CED966CAD7DAD8EAD9FADED9723 -:1047E000810124E045E00E94D76C3F922F925F92B6 -:1047F0004F927F926F928DED92E09F938F9387E21D -:104800009DE09F938F930E94CB730FB6F894DEBF09 -:104810000FBECDBF57C5CF57DF4F188219821A82FE -:104820001B82C158D040C358DF4F188219821A82A8 -:104830001B82CD57D040ED961CAE1DAE1EAE1FAEF6 -:10484000ED9784E12E0139E2430E511CD201282F4D -:104850001D922A95E9F73E0135E1630E711CD301E3 -:10486000282F1D922A95E9F7DE0111967D011D92F0 -:104870008A95E9F78E010B571F4F8FEF90E0D80113 -:104880008D939C931F930F93FF92EF927F926F9261 -:104890005F924F9281E394E09F938F93FF936F9386 -:1048A0000E94F9730FB6F894DEBF0FBECDBF049718 -:1048B0000CF46DC3AE014F575F4F60E070E0C20172 -:1048C0000E94D055882309F40DCCAE0143585F4FA8 -:1048D00060E070E0C3010E94D055882309F402CC47 -:1048E000AE0147585F4F60E070E0C7010E94D055AD -:1048F000882309F4F7CBD8018D919C91009709F496 -:1049000043C0019709F0EECBCF57DF4F4880598065 -:104910006A807B80C158D04020E030E044EB52E414 -:10492000C358DF4F688179818A819B81CD57D04000 -:104930000E94526F21EE3EE245E652E40E9433703F -:104940006B017C010E9430709B01AC01C301B2017C -:104950000E948572CF57DF4F688379838A839B8358 -:10496000C158D040C701B6010E94E8729B01AC015A -:10497000C301B2010E948572C358DF4F68837983F7 -:104980008A839B83CD57D040AE0147585F4FBE010D -:1049900063587F4FCE018F579F4F0E94BD41ED96C8 -:1049A000ECACFDAC0EAD1FADED97C358DF4F2881C9 -:1049B00039814A815B81CD57D040CF57DF4F688125 -:1049C00079818A819B81C158D040FE01FD964F01BB -:1049D000DE01AF5ABF4F5D01B8966F010E941143CF -:1049E0002196ECACFDAC0EAD1FAD219765962CADBC -:1049F0003DAD4EAD5FAD6597A9966CAD7DAD8EAD0D -:104A00009FADA9970E94EB45882319F067ED73E0ED -:104A100002C063EC73E087E29DE00E94C47352C45D -:104A20008081863509F05ECB81818053823008F029 -:104A300059CB813019F00E94873D44C49C9A9D9ABD -:104A4000A49AA5983FC48081863509F04BCB81811B -:104A50008053823008F046CB813019F00E94843DAB -:104A600031C43F9A47982EC48081863509F03ACBED -:104A700081818053823008F035CB813019F00E945B -:104A8000733D20C480910101806280930101809177 -:104A90000101806480930101809102018062809312 -:104AA0000201809102018064809302010BC4CE0157 -:104AB00001969F938F9344969F938F9383E594E001 -:104AC0009F938F93FF936F930E94F9730FB6F8949F -:104AD000DEBF0FBECDBF02970CF459C28D899E89EF -:104AE0008634910508F0FECA29813A8122303105C9 -:104AF00008F0F8CA232B11F061E001C060E00E94C9 -:104B0000CA54E0C3CE0101969F938F9344969F931E -:104B10008F9383E594E09F938F93FF936F930E940D -:104B2000F9730FB6F894DEBF0FBECDBF02970CF439 -:104B30002EC28D899E898634910508F0D3CA2981B9 -:104B40003A812230310508F0CDCAFC01E05CF54F16 -:104B50008650964F232BD1F02491FC018491882319 -:104B600009F4B0C390E0880F991FFC01E455F84F99 -:104B7000A591B491FC01E052F64F859194918FB7C5 -:104B8000F894EC91E22BEC938FBF9CC32491FC0131 -:104B90008491882309F496C390E0880F991FFC0143 -:104BA000E455F84F45915491FC01E052F64FA59120 -:104BB000B4919FB7F894FA01808120958223808375 -:104BC0008C91E22FE823EC939FBF7CC380818335D7 -:104BD00009F088CA8181E0EDE80FE83008F082CA68 -:104BE0008E2F90E0FC013197E730F10530F48827F3 -:104BF000E956FF4F8F4F0C9498730E94CB3E109252 -:104C0000600D10925F0D8AE999E1A5E9B2E4809305 -:104C1000650D9093660DA093670DB093680D8AE9BA -:104C200099E9A2E6B2E4B8C00E94CB3E81E090E0F0 -:104C30009093600D80935F0D86EF98E2ACE4B2E450 -:104C40008093650D9093660DA093670DB093680DEA -:104C50008DEC9CECA0E8B2E49FC00E94CB3E82E0C9 -:104C600090E09093600D80935F0D89E29CEDA4E944 -:104C7000B2E48093650D9093660DA093670DB09399 -:104C8000680D80E090E0A2E6B2E486C00E94CB3ED0 -:104C900083E090E09093600D80935F0D80E090E062 -:104CA000ACE2B2E48093650D9093660DA093670D1E -:104CB000B093680D80E090E0ABE8B2E46DC00E9474 -:104CC000CB3E84E090E09093600D80935F0D80E098 -:104CD00090E0ACE1B2E48093650D9093660DA093F3 -:104CE000670DB093680D80E090E0A9E9B2E418C0C8 -:104CF0000E94CB3E85E090E09093600D80935F0D25 -:104D000080E090E0ACEDB1E48093650D9093660D8A -:104D1000A093670DB093680D80E090E0A7E9B2E43E -:104D20008093610D9093620DA093630DB093640D19 -:104D30000E949E3EDBC00E94CB3E86E090E09093B6 -:104D4000600D80935F0D86E696E6AAE9B2E4809353 -:104D5000650D9093660DA093670DB093680D80E08C -:104D600090E0AAE5B2E418C00E94CB3E87E090E054 -:104D70009093600D80935F0D85E89BEEABECB1E402 -:104D80008093650D9093660DA093670DB093680DA9 -:104D900080E090E0A2E3B2E48093610D9093620D15 -:104DA000A093630DB093640DA1C080E090E00E94D9 -:104DB000AF4690935C0D80935B0D81E090E00E9484 -:104DC000AF4690935E0D80935D0D82E090E00E946F -:104DD000AF4690935A0D8093590D09E51DE084E389 -:104DE00093E0D8016D918D017C01BFEFEB1AFB0AB6 -:104DF0000E94185DC701EAE3EE16E3E0FE0689F7BC -:104E00006BEB82E393E00E94185D0E94854680E090 -:104E100090E00E94014760936D0D70936E0D80933A -:104E20006F0D9093700D81E090E00E9401476093B8 -:104E3000710D7093720D8093730D9093740D82E0D9 -:104E400090E00E9401476093750D7093760D8093FA -:104E5000770D9093780D36C26091121570911315ED -:104E600080911415909115150E94CE702B013C0174 -:104E700060910E1570910F1580911015909111157C -:104E80000E94CE70CF56DF4F688379838A839B83DD -:104E9000C159D04060910A1570910B1580910C1585 -:104EA00090910D150E94CE709E012F5F3F4F4901DA -:104EB000DE0155965D01FE01B9966F018301720115 -:104EC000CF56DF4F288139814A815B81C159D0405B -:104ED0000E945A4589819A81AB81BC818093650D7E -:104EE0009093660DA093670DB093680D0E94D63D18 -:104EF000E9C11D8A1E8A1F8A188E8E010F5F1F4FFF -:104F000084E1D8011D928A95E9F71F930F938AE5F2 -:104F100094E09F938F93FF936F930E94F9730F9088 -:104F20000F900F900F900F900F90181619067CF5A8 -:104F3000AE014B5E5F4F60E070E0C8010E94D0554B -:104F4000882309F4CFC88D899E89AF89B88D24CF75 -:104F50001D8A1E8A1F8A188E8E010F5F1F4F84E1E3 -:104F6000D8011D928A95E9F71F930F9385E694E087 -:104F70009F938F93FF936F930E94F9730F900F90FD -:104F80000F900F900F900F901816190674F01F9243 -:104F900081E08F938DE092E09F938F930E94AF33D7 -:104FA0000F900F900F900F909DC8AE014B5E5F4F1A -:104FB00060E070E0C8010E94D055882309F492C8CF -:104FC0008D899E89AF89B88D8093690D90936A0D04 -:104FD000A0936B0DB0936C0D0E94D63D0E949E3E37 -:104FE00071C1899865E9662E6EE0762E830182E0B4 -:104FF00090E00E94AF46F801819391938F0150E9B0 -:10500000E52EFF24F394889A6AE070E080E090E057 -:105010000E94113988986CE271E080E090E00E9473 -:105020001139F1E0EF1AF10871F788EE93E00E9470 -:105030004F392FE00D351207D1F682E090E00E9443 -:10504000AF4690935E0F80935D0F899A00E21EE455 -:10505000889A6AE070E080E090E00E9411398898B8 -:105060006CE271E080E090E00E941139015011097A -:1050700079F78F984EE0E42EF12C00E911E08E9A3A -:105080006AE070E080E090E00E9411398E986CE256 -:1050900071E080E090E00E9411390150110979F728 -:1050A00031E0E31AF10849F788EE93E00E944F39A6 -:1050B0008F9A35E1232E3EE0332E210100E010E0EF -:1050C00080E090E00E94AF46D2018D939D932D0128 -:1050D00020E9E22EFF24F3948E9A6AE070E080E0EB -:1050E00090E00E9411398E9864EF71E080E090E0CA -:1050F0000E941139B1E0EB1AF10871F70E30110579 -:10510000A9F088EE93E00E944F390F5F1F4F0F33D5 -:105110001105B1F680E090E00E94AF469093940EA6 -:105120008093930E8F9800E51DE223C080910B01C0 -:105130008D7F80930B01E12C92E3F92E80910B017E -:10514000886080930B016AE070E080E090E00E944C -:10515000113980910B01877F80930B016CE271E024 -:1051600080E090E00E941139E1E0EE1AF10831F799 -:10517000C8CF8E9A6AE070E080E090E00E9411391A -:105180008E986CE271E080E090E00E94113901504D -:10519000110979F788EE93E00E944F3980910B0155 -:1051A000826080930B0100E913E380910B0188601A -:1051B00080930B016AE070E080E090E00E9411397A -:1051C00080910B01877F80930B016CE271E080E09E -:1051D00090E00E9411390150110939F788EE93E0EF -:1051E0000E944F3980910B018D7F80930B010BE959 -:1051F0001DE0280181E090E00E94AF46D2018D932E -:105200009D932D0180E9E82EFF24F39480910B01FA -:10521000886080930B016AE070E080E090E00E947B -:10522000113980910B01877F80930B016CE271E053 -:1052300080E090E00E941139B1E0EB1AF10831F7FB -:1052400088EE93E00E944F39E3E14E16EEE05E06F1 -:1052500089F681E090E00E94AF469093140E80930F -:10526000130E81E090E0D3016D913D012C01BFEF61 -:105270004B1A5B0A0E94185DC2018B3C910599F79D -:10528000F10161911F013201FFEF6F1A7F0AC20124 -:105290000E94185D23012BE4621621E0720681F75B -:1052A000D8016D918D017301BFEFEB1AFB0AC301A9 -:1052B0000E94185D3701E5ECEE16E1E0FE0681F78D -:1052C0000E94FF3C80E090E0CC56DF4F0FB6F89490 -:1052D000DEBF0FBECDBFDF91CF911F910F91FF9029 -:1052E000EF90DF90CF90BF90AF909F908F907F9086 -:1052F0006F905F904F903F902F90089569E080E00D -:1053000090E00E94185D4DE450E067EB74E181E0AD -:1053100098E00C943A5DCF92DF92EF92FF920F9358 -:105320001F939091E814092F10E020E030E0809165 -:10533000E914482F50E060E070E0917081706801DE -:105340007901F694E794D794C794C0FC92606A01FF -:105350007B01F694E794D794C794C0FC8260E2E0A6 -:105360003695279517950795EA95D1F700FD946036 -:1053700022E076956795579547952A95D1F740FD98 -:10538000846090939D1080939C101F910F91FF90CB -:10539000EF90DF90CF9008951F920F920FB60F926B -:1053A00011240BB60F922F933F938F939F93EF93FC -:1053B000FF9321B330919D10832F817090E036E0F0 -:1053C000880F991F3A95E1F7922F9F7B892B81BB1C -:1053D000EBE0F1E0908180919D108270880F880F42 -:1053E000977F892B808381B390919D1092FB9927A1 -:1053F00090F98E7F892B81BB15BCFF91EF919F9116 -:105400008F913F912F910F900BBE0F900FBE0F9079 -:105410001F90189580916F008D7F80936F00809111 -:105420008100887F81608093810010929E1080911E -:10543000EA148F3F21F490910515992349F090913A -:105440000715943029F090E00E944F3981E001C0A7 -:1054500080E09091F41492FF02C091E089278823A4 -:1054600041F08A9A809108018160809308015F9AD7 -:1054700008958A98809108018E7F809308015F9833 -:1054800008951F920F920FB60F9211240BB60F9230 -:105490002F933F934F935F936F937F938F939F933C -:1054A000AF93BF93EF93FF9380919E10811139C208 -:1054B0008091AE1080FD8F9A80FF8F9890910B01A4 -:1054C000482F42709D7F942B90930B0141B38470C1 -:1054D00090E095958795942F9D7F892B81BB91B303 -:1054E0008091AD10282F217030E066E0220F331F2D -:1054F0006A95E1F79F7B292B21BB90910B01282F07 -:105500002270220F220F977F922B90930B0121B3D1 -:1055100082FB992790F9822F8E7F892B81BB809106 -:10552000AC1086BD82E085BD81E080939E107894AA -:105530008091C0109091C110892B09F0ACC080916E -:10554000A7139091CC13981709F49BC0E091A7136F -:105550002E2F30E086E0E89FF0011124E855FC4E44 -:10556000F093C110E093C0108381948190938900DF -:1055700080938800808191819093BC108093BB10B0 -:10558000E2818091BD108E1761F1E093BD1081E141 -:10559000E89FF0011124E353FC4EF093BF10E09319 -:1055A000BE1085859685A785B089B695A7959795F0 -:1055B00087958093A7109093A810A093A910B093FB -:1055C000AA108093A3109093A410A093A510B09359 -:1055D000A61080939F109093A010A093A110B09359 -:1055E000A210E091BE10F091BF10908180919C10AC -:1055F00089278093AE1086E0829FD001839FB00DF3 -:105600001124A855BC4E15962C9181819281A381BD -:10561000B481022E04C0B695A795979587950A94F4 -:10562000D2F78093AF109093B010A093B110B093C5 -:10563000B21085819681A781B085022E04C0B695EF -:10564000A795979587950A94D2F78093B310909376 -:10565000B410A093B510B093B61081859285A38540 -:10566000B48504C0B695A795979587952A95D2F7E6 -:105670008093B7109093B810A093B910B093BA105C -:105680000AC0C8DE9FB7F8948091B51484608093F7 -:10569000B5149FBF46C18091B6148130B1F489B171 -:1056A000807190910415891781F01092B6148CE0E6 -:1056B000EAE0F5E1A6E1B5E101900D928A95E1F706 -:1056C0008091B51480648093B5141092AD10409110 -:1056D0009F105091A0106091A1107091A210809124 -:1056E000AF109091B010A091B110B091B210840F92 -:1056F000951FA61FB71F80939F109093A010A09393 -:10570000A110B093A210E091BE10F091BF1045859A -:10571000568567857089481759076A077B0768F5BA -:1057200021E02093AD104585568567857089841BDF -:10573000950BA60BB70B80939F109093A010A0938E -:10574000A110B093A210208180910A1590910B15A1 -:10575000A0910C15B0910D1520FF04C00197A1096F -:10576000B10903C00196A11DB11D80930A15909344 -:105770000B15A0930C15B0930D154091A3105091EB -:10578000A4106091A5107091A6108091B310909113 -:10579000B410A091B510B091B610840F951FA61F3C -:1057A000B71F8093A3109093A410A093A510B0935B -:1057B000A6104585568567857089481759076A0779 -:1057C0007B0778F52091AD1022602093AD104585C0 -:1057D000568567857089841B950BA60BB70B809344 -:1057E000A3109093A410A093A510B093A6102081AD -:1057F00080910E1590910F15A0911015B091111573 -:1058000021FF04C00197A109B10903C00196A11DA0 -:10581000B11D80930E1590930F15A0931015B093A2 -:1058200011154091A7105091A8106091A910709186 -:10583000AA108091B7109091B810A091B910B091B2 -:10584000BA10840F951FA61FB71F8093A7109093BF -:10585000A810A093A910B093AA1045855685678516 -:105860007089481759076A077B0778F52091AD10B2 -:1058700024602093AD104585568567857089841B0B -:10588000950BA60BB70B8093A7109093A810A0932D -:10589000A910B093AA102081809112159091131530 -:1058A000A0911415B091151522FF04C00197A1090C -:1058B000B10903C00196A11DB11D809312159093EB -:1058C0001315A0931415B093151580910715843006 -:1058D00039F49091AD108091231589238093AD10F8 -:1058E0008091BB109091BC1001979093BC10809355 -:1058F000BB10892B69F41092C1101092C0108091D6 -:10590000A7138F5F8093A713863011F41092A7130B -:105910009091AD1080919D1089278093AD101092C9 -:105920009E10FF91EF91BF91AF919F918F917F91C9 -:105930006F915F914F913F912F910F900BBE0F9000 -:105940000FBE0F901F9018958091F41482FF08C02D -:105950008A9A809108018160809308015F9A07C04C -:105960008A98809108018E7F809308015F988091CA -:1059700007158C70A1F080919C108093AE108091DF -:105980009D108093AD108091E714880F845081950D -:105990008093AC1080916F00826080936F000895B7 -:1059A000E0EAF0E080818F7D80835C980895CF925B -:1059B000DF92EF92FF926A017B01811105C0FF9097 -:1059C000EF90DF90CF90ECCF813011F45C9801C064 -:1059D0005C9A83E28093A0008091A100807E8A611E -:1059E0008093A1008FEF9FEF9093A9008093A80070 -:1059F00020E030E0A901C701B6010E942C70181602 -:105A0000F4F620E030E0A901C701B6010E942C7035 -:105A100087FD11C020E030E04AE754E4C701B60139 -:105A20000E944A72181654F4C12CD12C8AE7E82E31 -:105A300084E4F82E03C0C12CD12C76012CEE31E188 -:105A400043E852E4C701B6010E94857220E030E0CD -:105A500040E05FE30E94536F0E9409710E94A070B2 -:105A60007093AB006093AA005C9AFF90EF90DF9078 -:105A7000CF900895CF92DF92EF92FF92CF93DF9372 -:105A8000C82F6A017B0120E030E0A901C701B601FF -:105A90000E942C7087FDE2C0C43608F441C08CE936 -:105AA0008C0F20E0833098F590E0880F991F880FC5 -:105AB000991F223079F0FC01233011F1213019F0C7 -:105AC000E954FB4E02C0ED53FB4EC082D182E2820C -:105AD000F382C1C0EC01C153DB4E20E030E040E76F -:105AE00052E4C701B6010E94857220E030E040E731 -:105AF00052E40E948572688379838A839B83ABC05A -:105B0000E552FB4EF7FAF094F7F8F094DECF2F5FF2 -:105B10008A3008F4A5C0243009F4A2C08A50C2CF4C -:105B2000C701B6010E9433730E94A0708C2F90E0D1 -:105B30008C31910508F094C0FC018827E256FF4F94 -:105B40008F4F0C949873633008F48CC06093E71403 -:105B500082C06093EA147FC06093E81402C060932F -:105B6000E914D9DB78C08091F414662311F08460C5 -:105B70004CC08B7F4AC08091F414662311F080647E -:105B800044C08F7B42C08091F414662311F080687A -:105B90003CC08F773AC06093EB145DC0C092EC14A8 -:105BA000D092ED14E092EE14F092EF1454C0C09233 -:105BB000F014D092F114E092F214F092F3144BC06E -:105BC0008091F414662311F081601FC08E7F1DC088 -:105BD0008091F414662321F084FF46C0806215C0D2 -:105BE0008F7D13C08091F414662311F0886001C08A -:105BF000877F8093F4140E94005D2DC08091F4147F -:105C0000662311F0806101C08F7C8093F41423C05F -:105C10006093F51420C0C092F614D092F714E0926D -:105C2000F814F092F91417C0C092FA14D092FB1431 -:105C3000E092FC14F092FD140EC070E07093FF141B -:105C40006093FE1408C0C0920015D0920115E09236 -:105C50000215F092031552DB80E007C084E005C016 -:105C600083E003C086E001C08AE0DF91CF91FF901E -:105C7000EF90DF90CF9008952DE0829FC001112416 -:105C80004CE050E0965F0C943A5D1F93CF93DF9306 -:105C9000182FEB018DE0189FB0011124765F4CE0C6 -:105CA00050E0CE010E947D5D892B51F48CE0FE0115 -:105CB00011928A95E9F7BE01812FDEDF80E001C0F5 -:105CC00081E0DF91CF911F910895EF92FF920F93A2 -:105CD0001F93CF93DF93CDB7DEB72C970FB6F89411 -:105CE000DEBF0FBECDBF182F80FFC6C08AE08093F5 -:105CF000E7148FEF8093EA141092E81487E0809302 -:105D0000E91483E08093EB148AE097EDA3E2BCE30F -:105D10008093EC149093ED14A093EE14B093EF14D1 -:105D20008FE692E1A3E0BBE38093F0149093F1142B -:105D3000A093F214B093F3141092F51480E090E065 -:105D4000A8ECB1E48093F6149093F714A093F814A0 -:105D5000B093F91480E090E0AAEFB3E48093FA14D2 -:105D60009093FB14A093FC14B093FD148AEF90E081 -:105D70009093FF148093FE1480E090E0A0E8BFE3CE -:105D80008093001590930115A0930215B09303150D -:105D900084E08093F41480E090E0A8ECB5E4809374 -:105DA000B7149093B814A093B914B093BA14809315 -:105DB000BB149093BC14A093BD14B093BE148093F5 -:105DC000BF149093C014A093C114B093C21480E088 -:105DD00090E5A3ECB7E48093C3149093C414A0930C -:105DE000C514B093C6148093C7149093C814A0939D -:105DF000C914B093CA148093CB149093CC14A0937D -:105E0000CD14B093CE1480E090EAACE0B7E4809378 -:105E1000CF149093D014A093D114B093D214809344 -:105E2000D3149093D414A093D514B093D614809324 -:105E3000D7149093D814A093D914B093DA1480E0B7 -:105E400090E4ACE1B6EC8093DB149093DC14A09367 -:105E5000DD14B093DE148093DF149093E014A093CC -:105E6000E114B093E2148093E3149093E414A093AC -:105E7000E514B093E61442DA11FF0FC0CE0101968B -:105E80007C018CE0F70111928A95E9F700E0B701F7 -:105E9000802FF2DE0F5F0830D1F712FF0AC060E0FA -:105EA00080E09BE00E94185D60E081E59BE00E943D -:105EB000185D13FF05C060E08EEA9BE00E94185D4C -:105EC0002C960FB6F894DEBF0FBECDBFDF91CF91F9 -:105ED0001F910F91FF90EF9008951F920F920FB6B0 -:105EE0000F9211240BB60F922F933F934F935F9312 -:105EF0006F937F938F939F93AF93BF93EF93FF9392 -:105F00008091360123E030E03093641020936310D9 -:105F10008F33A9F050F4883109F1813211F59FB720 -:105F2000F8948091B514886015C0803471F08E3774 -:105F3000C1F49FB7F8948091B51482600BC09FB7ED -:105F4000F8948091B514816005C09FB7F894809152 -:105F5000B51480628093B5149FBF14C00E94905600 -:105F600011C0E091E00F91E09E0F903809F490E0AD -:105F70002091DF0F921731F0F0E0E15AF04F80836B -:105F80009093E00FFF91EF91BF91AF919F918F910F -:105F90007F916F915F914F913F912F910F900BBE29 -:105FA0000F900FBE0F901F9018951F920F920FB673 -:105FB0000F9211240BB60F922F933F934F935F9341 -:105FC0006F937F938F939F93AF93BF93EF93FF93C1 -:105FD0008091D60022E030E030936410209363106B -:105FE0008F33A9F050F4883109F1813211F59FB750 -:105FF000F8948091B514886015C0803471F08E37A4 -:10600000C1F49FB7F8948091B51482600BC09FB71C -:10601000F8948091B514816005C09FB7F894809181 -:10602000B51480628093B5149FBF14C00E9490562F -:1060300011C0E091E00F91E09E0F903809F490E0DC -:106040002091DF0F921731F0F0E0E15AF04F80839A -:106050009093E00FFF91EF91BF91AF919F918F913E -:106060007F916F915F914F913F912F910F900BBE58 -:106070000F900FBE0F901F9018951F920F920FB6A2 -:106080000F9211240BB60F922F933F934F935F9370 -:106090006F937F938F939F93AF93BF93EF93FF93F0 -:1060A0008091CE0021E030E03093641020936310A3 -:1060B0008F33A9F050F4883109F1813211F59FB77F -:1060C000F8948091B514886015C0803471F08E37D3 -:1060D000C1F49FB7F8948091B51482600BC09FB74C -:1060E000F8948091B514816005C09FB7F8948091B1 -:1060F000B51480628093B5149FBF14C00E9490565F -:1061000011C0E091E00F91E09E0F903809F490E00B -:106110002091DF0F921731F0F0E0E15AF04F8083C9 -:106120009093E00FFF91EF91BF91AF919F918F916D -:106130007F916F915F914F913F912F910F900BBE87 -:106140000F900FBE0F901F9018951F920F920FB6D1 -:106150000F9211240BB60F922F933F934F935F939F -:106160006F937F938F939F93AF93BF93EF93FF931F -:106170008091C60010926410109263108F33A9F0C2 -:1061800050F4883109F1813211F59FB7F89480916C -:10619000B514886015C0803471F08E37C1F49FB794 -:1061A000F8948091B51482600BC09FB7F8948091E9 -:1061B000B514816005C09FB7F8948091B5148062D2 -:1061C0008093B5149FBF14C00E94905611C0E091F7 -:1061D000E00F91E09E0F903809F490E02091DF0FDE -:1061E000921731F0F0E0E15AF04F80839093E00F86 -:1061F000FF91EF91BF91AF919F918F917F916F919F -:106200005F914F913F912F910F900BBE0F900FBE5A -:106210000F901F9018951F920F920FB60F92112496 -:106220000BB60F928F939F93EF93FF938091621021 -:10623000E82FF0E0EE51F04F9081909336018F5FA0 -:10624000803809F480E0809362109091E10F891307 -:1062500005C0809131018F7D80933101FF91EF91D5 -:106260009F918F910F900BBE0F900FBE0F901F90BC -:1062700018951F920F920FB60F9211240BB60F9222 -:106280008F939F93EF93FF9380916210E82FF0E03C -:10629000EE51F04F90819093D6008F5F803809F4D3 -:1062A00080E0809362109091E10F891305C0809186 -:1062B000D1008F7D8093D100FF91EF919F918F91BD -:1062C0000F900BBE0F900FBE0F901F9018951F924E -:1062D0000F920FB60F9211240BB60F928F939F93CC -:1062E000EF93FF9380916210E82FF0E0EE51F04FB2 -:1062F00090819093CE008F5F803809F480E0809386 -:1063000062109091E10F891305C08091C9008F7DC3 -:106310008093C900FF91EF919F918F910F900BBED9 -:106320000F900FBE0F901F9018951F920F920FB6EF -:106330000F9211240BB60F928F939F93EF93FF93BD -:1063400080916210E82FF0E0EE51F04F9081909331 -:10635000C6008F5F803809F480E0809362109091CE -:10636000E10F891305C08091C1008F7D8093C1002A -:10637000FF91EF919F918F910F900BBE0F900FBEE9 -:106380000F901F901895E091E10F91E09E0F9038CB -:1063900031F490E004C02091B51424FD2FC0209169 -:1063A00062102917C1F3F0E0EE51F04F8083909313 -:1063B000E10F80916310909164108130910569F034 -:1063C00030F08230910579F0039799F0089580912B -:1063D000C10080628093C10008958091C9008062ED -:1063E0008093C90008958091D10080628093D1008C -:1063F0000895809131018062809331010895CF9397 -:10640000C82F83EB98E006D2C830B1F190F4C430C5 -:1064100051F148F4C23001F118F5C13009F040C023 -:106420008BE998E01BC0C63009F118F58CE598E0BF -:1064300015C0C43169F140F4CA3021F100F1CB300C -:1064400079F580E794E02AC0C63129F1F0F0C23333 -:1064500039F58AE794E022C089E898E0DBD125C0CD -:1064600087E798E0FBCF8DE698E0F8CF8DE498E0E1 -:10647000F5CF8CE298E0F2CF83E298E0EFCF88E1AD -:1064800098E0ECCF85E098E0E9CF8FEE97E0E6CF9B -:1064900085E794E003C08BED97E0E0CF09D205C01B -:1064A00089EC97E0B7D18C2FA7D186EC97E0CF91FC -:1064B000B1C11F93CF93DF93CDB7DEB72C970FB643 -:1064C000F894DEBF0FBECDBF80E090E00E94755D06 -:1064D000893009F052C04DE450E061E078E087EB8C -:1064E00094E10E947D5D892B09F447C020E030E0F3 -:1064F00048EC55E46091B7147091B8148091B914C8 -:106500009091BA140E942C70811137C020E030E0C5 -:1065100048EC55E46091BB147091BC148091BD149B -:106520009091BE140E942C70811127C020E030E0B1 -:1065300048EC55E46091BF147091C0148091C1146F -:106540009091C2140E942C70811117C010E0BE01FE -:106550006F5F7F4F812F99DB811102C087E04FDF92 -:106560001F5F1830A1F72C960FB6F894DEBF0FBE50 -:10657000CDBFDF91CF911F9108958FEFA6DBE6CFBE -:106580008F929F92AF92BF92CF92DF92EF92FF9243 -:106590000F931F93CF93DF93CDB7DEB72A970FB634 -:1065A000F894DEBF0FBECDBF6B017C01042F20E04D -:1065B00030E0A9010E942C7087FF06C08DE2E3DE67 -:1065C000F7FAF094F7F8F094102F123060F020E012 -:1065D00030E048EC52E4C701B6010E9485726B01BD -:1065E0007C011250F2CF00FF0AC020E030E040E210 -:1065F00051E4C701B6010E9485726B017C0120E065 -:1066000030E040E05FE3C701B6010E94536F0E9493 -:106610009B70E1E0F0E0EC0FFD1FE00FF11D2EE2BA -:10662000208310E03AE0832E912CA12CB12C61152F -:10663000710581059105A9F0101301C01F5FEE24BB -:10664000E394F12CEC0EFD1EE10EF11CA50194016A -:106650000E947673605DF7016083B901CA011F5F14 -:10666000E6CF80E3101748F4E1E0F0E0EC0FFD1F07 -:10667000E10FF11D80831F5FF5CF10130BC081E088 -:10668000810FE1E0F0E0EC0FFD1FE80FF11D1E5F50 -:1066900080E38083112339F0FE01E10FF11D808139 -:1066A00072DE1150F7CF2A960FB6F894DEBF0FBEF8 -:1066B000CDBFDF91CF911F910F91FF90EF90DF90B1 -:1066C000CF90BF90AF909F908F900895CF92DF9220 -:1066D000EF92FF921F93CF93DF93CDB7DEB7362FA4 -:1066E000142FCDB6DEB64DB75EB7411B51090FB6BC -:1066F000F8945EBF0FBE4DBF4F5F5F4F7A01242FEE -:10670000FA019E2F921B911728F4632F0E94567353 -:106710009193F7CF112349F0F701E10FF11D319764 -:106720008081805D30DE1150F5CF0FB6F894DEBE6B -:106730000FBECDBEDF91CF911F91FF90EF90DF9004 -:10674000CF90089580910815811108C09FB7F894E3 -:106750008091B51482608093B5149FBF08951F93F4 -:10676000CF93DF93CDB7DEB7C058D1090FB6F894F9 -:10677000DEBF0FBECDBFAE0149575F4FFA01619139 -:106780007191AF01CE0101960E941A7410E0E1E010 -:10679000F0E0EC0FFD1FE10FF11D8081882319F05F -:1067A000F2DD1F5FF4CFC058DF4F0FB6F894DEBFA5 -:1067B0000FBECDBFDF91CF911F91089543E0E0CE92 -:1067C0002091F41420FF08C02BE832E441E25DE39D -:1067D0000E94857241E001C040E0D2CE2091F414C5 -:1067E00020FF08C02BE832E441E25DE30E9485729D -:1067F00044E001C043E0C4CE8A3020F0843620F06B -:1068000043E003C041E001C042E06AE05FCF48E0FE -:1068100062E05CCFCF93DF93FC018491EF0121967E -:10682000882319F0B0DDFE01F8CFDF91CF910895F4 -:106830008F929F92AF92BF92EF92FF920F931F930E -:10684000CF938AED99E0E6DF86E1E82E85E1F82E28 -:1068500007EB14E1C0E0F701619171918191919191 -:106860007F01F80181909190A190B1908F010E94D9 -:10687000CE70A50194010E943370B0DFC23019F0D0 -:1068800088ED99E0C7DFCF5FC33029F786ED99E047 -:10689000C1DF80912215B0DF82ED99E0CF911F9189 -:1068A0000F91FF90EF90BF90AF909F908F90B2CFDD -:1068B000CF93DF93EC018991882311F064DDFBCF46 -:1068C000DF91CF910895AAE0B5E1E6E6F0E14D91C0 -:1068D0005D916D917D91419351936193719380E1AD -:1068E000E237F807A1F708958CE1E6E6F0E1DF0171 -:1068F0001D928A95E9F71092A5131092A61381E0D4 -:10690000809365101092C21008952F923F924F927B -:106910005F926F927F928F929F92AF92BF92CF922F -:10692000DF92EF92FF920F931F93CF93DF93C0916B -:10693000A613C11101C0C2E1C150D091C210DC1731 -:1069400009F41DC1EC2EF12C29E2C29F8001112413 -:106950000D531F4EF801A588B688C788D08C61A159 -:1069600072A183A194A19B01AC010E94536FF80115 -:1069700025A136A147A150A50E9485724B018C012B -:106980009B01AC01B501C6010E942C7087FD02C0BD -:106990005401680189E28E9DF0018F9DF00D112454 -:1069A000ED53FF4EC501D601818B928BA38BB48B27 -:1069B000C11101C0C2E1C150DC1761F029E22E9D76 -:1069C000C0012F9D900D11249C012D533F4E790144 -:1069D000D9E233C08091A513D81360C00E943F490B -:1069E0005DC0AC2EB12CDA9DC001DB9D900D112451 -:1069F000FC01ED53FF4E6F01C11101C0C2E1C15056 -:106A00008091A5138C1302C00E943F49DA9D80013A -:106A1000DB9D100D11240D531F4EF80185889688BB -:106A2000A788B08CA50194016189728983899489B2 -:106A30000E942C70811106C076018091C210C8138B -:106A4000D0CF2CC0F80161A172A183A194A19B01B8 -:106A5000AC010E94536FF80125A136A147A150A5B2 -:106A60000E948572F70121893289438954890E94E5 -:106A7000536F2B013C019B01AC01C501B4010E9485 -:106A80004A72F80118162CF4418A528A638A748A71 -:106A9000D3CF818A928AA38AB48ACECFD091C210F2 -:106AA000F9E2DF9F800111240D531F4EC1E0CD0F8D -:106AB000C23109F4C0E02090A61389E2382EC21535 -:106AC00009F45BC0CC2ED12C3C9CC0013D9C900DA8 -:106AD00011249C012D533F4E7901F80141885288C1 -:106AE00063887488F90181889288A388B488A50195 -:106AF0009401C301B2010E942C7087FF24C0F801E9 -:106B000061A172A183A194A19B01AC010E94536F6A -:106B1000F80125A136A147A150A50E948572A301C5 -:106B200092010E94536F2B013C019B01AC01C501F6 -:106B3000B4010E944A72181634F4F701418A528A4D -:106B4000638A748ADC2F3C9CF0013D9CF00D11247B -:106B5000ED53FF4E258936894789508D61897289A9 -:106B6000838994890E942C70811101C0DC2FCF5F32 -:106B7000C23109F4C0E08701A2CFD093C210DF91E7 -:106B8000CF911F910F91FF90EF90DF90CF90BF902A -:106B9000AF909F908F907F906F905F904F903F90BD -:106BA0002F9008952F923F924F925F926F927F9213 -:106BB0008F929F92AF92BF92CF92DF92EF92FF920D -:106BC0000F931F93CF93DF93CDB7DEB7E5970FB643 -:106BD000F894DEBF0FBECDBF4B8F5C8F6D8F072F3C -:106BE0002DAB2091A6132EA3422F50E05BA34AA306 -:106BF00039E2239FF0011124ED53FF4E15861686CE -:106C00001786108A15A216A217A210A6108249E9AB -:106C100056E766E97EE741A352A363A374A31C0170 -:106C200047EB54E158A74FA3CE0101969AAB89AB2D -:106C300026E630E13EA72DA74EA139E2439FC001D1 -:106C400011249C012C533F4E3AA729A7AE01435F64 -:106C50005F4F5DA34CA359A348A386E690E198AB90 -:106C60008FA727EB34E13F8F2E8F10E03F01AF015C -:106C7000435F5F4F5CAB4BAB2F0155E2450E511CA0 -:106C8000F10161917191819191911F01EE8DFF8DC3 -:106C900081909190A190B190FF8FEE8FA50194010A -:106CA0000E9485720E945572E9A9FAA961937193B5 -:106CB00081939193FAABE9ABEFA5F8A9C190D1907C -:106CC000E190F190F8ABEFA76C197D098E099F094F -:106CD0009B01AC0197FF07C022273327A901261B80 -:106CE000370B480B590BE9A5FAA521933193419332 -:106CF0005193FAA7E9A7EBA9FCA9C080D180E28053 -:106D0000F380C216D306E406F50610F469017A0191 -:106D1000EBA9FCA9C082D182E282F3820E94CE70EC -:106D2000A50194010E9433704B015C01E8A1F9A117 -:106D30006193719381939193F9A3E8A320E030E0EC -:106D4000A9010E942C7087FF0DC0112321F0113082 -:106D500021F084E003C081E001C082E0F301908172 -:106D6000892B8083A5019401C501B4010E9485721D -:106D7000F20120813181428153810E94536FF201DF -:106D800060837183828393831F5F133009F078CF10 -:106D90000E94F2724B015C01F20160837183828375 -:106DA0009383CD28CE28CF2809F422C220E030E0FA -:106DB000A9016B8D7C8D8D8D902F0E942C7087FD8D -:106DC00021C0FDA9FF2361F0A50194016B8D7C8D8D -:106DD0008D8D902F0E9485726B8F7C8F8D8F092FE8 -:106DE00020E030E040E85FE36B8D7C8D8D8D902F4F -:106DF0000E942C7087FF0DC01B8E1C8E20E82D8FEB -:106E00000FE307C039E93B8F46E74C8F56E95D8FAA -:106E10000EE7A501940160E070E080E89FE30E9426 -:106E2000337069A77AA78BA79CA7CE0149969A8F42 -:106E3000898FC12CD12C760129E2EAA1FBA12E9FDA -:106E4000C0012F9F900D11249C012C513F4E39A35E -:106E500028A3ECA1FDA180809180A280B38020E0D6 -:106E600030E0A901C501B4010E942C70882309F407 -:106E700072C0A501940169A57AA58BA59CA50E9465 -:106E800085722B013C01ECA1FDA16083718382839B -:106E900093839B01AC0160E070E080E89FE30E9477 -:106EA00033704B015C01E894B7F8EFA1F8A5248595 -:106EB000358546855785C501B4010E9485721B0141 -:106EC0008E8F192F2B8D3C8D4D8D502F0E944A7225 -:106ED00018162CF02B8E3C8EFE8DFD8F012FE8A115 -:106EE000F9A1F081FE8FE8A1F9A111812280338000 -:106EF000EFA1F8A5208D318D428D538DC501B401D0 -:106F00000E9485725B014C019B01AC016E8D712F5B -:106F1000C1010E942C7087FD03C0AE8E1B2D140191 -:106F20008E8D912FD101E8A1F9A180839183A28355 -:106F3000B383EDA5FEA52485358546855785C30118 -:106F4000B2010E9485729B01AC01C701B6010E948B -:106F5000526F6B017C012CA13DA12C5F3F4F3DA3E3 -:106F60002CA34DA55EA54C5F5F4F5EA74DA78FA1DB -:106F700098A5049698A78FA3E98DFA8DE217F307D9 -:106F800009F067CF8091A513FEA1F8130FC089E225 -:106F90002AA13BA1829FF001839FF00D1124ED53A4 -:106FA000FF4E118A128A138A148A14C02FEE3FEF03 -:106FB0004FE75FE3C701B6010E944A7218167CF4DE -:106FC00089E24AA15BA1849FF001859FF00D112405 -:106FD000ED53FF4E118E128E138E148E6AC02FEE5B -:106FE0003FEF4FE75FEBC701B6010E944A721816E8 -:106FF00044F08FEEC82EDD24DA948FE7E82E8FEB75 -:10700000F82EA701960160E070E080E89FE30E94FF -:10701000526F20E030E040E05FE30E9485720E9402 -:10702000F2726B017C0189E22AA13BA1829FF001EF -:10703000839FF00D1124ED53FF4E2091EC143091FD -:10704000ED144091EE145091EF1461A172A183A14F -:1070500094A10E948572A70196010E9485724B013E -:107060005C01A701960160E070E080E89FE30E9468 -:10707000526F9B01AC01C501B4010E9433706B01DA -:107080007C0120E030E0A9010E942C7087FF03C042 -:10709000C12CD12C760189E24AA15BA1849FF00129 -:1070A000859FF00D1124ED53FF4EC18ED28EE38EDD -:1070B000F48E2B8D3C8D4D8D502F6B8D7C8D8D8D59 -:1070C000902F0E9485727B018C0189E22AA13BA14D -:1070D000829FF001839FF00D1124ED53FF4EC701F5 -:1070E000D801858F968FA78FB0A3A18CB28CC38C4B -:1070F000D48C60907E1070907F1080908010909063 -:1071000081109301A401B701C8010E942C7087FD72 -:1071100005C0B62DA72DF82DE92D04C0BE2DAF2D2D -:10712000F02FE12F9501A6016B2F7A2F8F2F9E2F25 -:107130000E944A7218166CF09301A401B701C801AD -:107140000E942C7087FD03C05301640102C05701E7 -:10715000680189E24AA15BA1849FF001859FF00D3F -:107160001124ED53FF4EC501D601858B968BA78B5D -:10717000B08F8CE0FE013D96A2E7B0E101900D9248 -:107180008A95E1F7C701D80180937E1090937F1014 -:10719000A0938010B09381108CE0FE013196A6E69A -:1071A000B0E101900D928A95E1F78091651080938E -:1071B000A6138F5F823109F480E080936510E59615 -:1071C0000FB6F894DEBF0FBECDBFDF91CF911F91F8 -:1071D0000F91FF90EF90DF90CF90BF90AF909F9076 -:1071E0008F907F906F905F904F903F902F908DCBBE -:1071F000E5960FB6F894DEBF0FBECDBFDF91CF91FD -:107200001F910F91FF90EF90DF90CF90BF90AF90C4 -:107210009F908F907F906F905F904F903F902F90B6 -:1072200008956115710581059105C1F16A307105F7 -:107230008105910548F425E02A95F1F70000615099 -:10724000710981099109EDCF6436710581059105B8 -:1072500048F4E5E3EA95F1F700006A507109810905 -:107260009109DFCF683EF3E07F078105910558F46F -:10727000EFE8F1E03197F1F700C0000064567109C2 -:1072800081099109CECFEFE9FFE03197F1F700C016 -:107290000000685E734081099109C3CF089500978B -:1072A00041F0EFE9FFE03197F1F700C000000197EE -:1072B000F6CF0895AF92BF92CF92DF92EF92FF92F6 -:1072C0000F931F93CF93DF93CDB7DEB768970FB6B9 -:1072D000F894DEBF0FBECDBF10910515112309F440 -:1072E00051C081E08093071511FF06C083E099E04B -:1072F00091DA88EF98E01FC012FF06C083E099E0A2 -:1073000089DA8DEE98E017C013FF06C083E099E09C -:1073100081DA8AED98E00FC014FF06C083E099E09F -:1073200079DA8FEC98E007C015FF0CC083E099E094 -:1073300071DA83EC98E06EDA80EC98E06BDA84EF37 -:1073400091E0ADDF10FD08C08FB7F894909105155E -:10735000109205158FBF16C080ED99E05BDA8EEBB9 -:1073600099E058DA8DE599E055DA9FB7F894809165 -:10737000B5148F7E8093B5149FBF8091B51484FFA0 -:10738000FCCFE2CF1091B514112309F4ADC114FF65 -:1073900004C081E080930615B8C110FFDDC08CE009 -:1073A000EAE0F5E1DE011D9601900D928A95E1F784 -:1073B000809107158430E9F040F48130E9F080F0E5 -:1073C000823001F588E399E01CC0803179F018F42F -:1073D000883049F017C0803291F0803421F012C01B -:1073E00087E599E00EC082E599E00BC08CE499E056 -:1073F00008C086E499E005C08FE399E002C082E30B -:1074000099E008DA8091EB14837039F0BE01635F74 -:107410007F4FCE0101960E94D4488091EB1480FDED -:1074200005C08091EB1481FF60C017C08BE299E02A -:10743000F1D9CE0101967C0100E0F70161917191D3 -:10744000819191917F01CAD9023019F089E299E0C6 -:10745000E1D90F5F033089F7E4CF82E299E0DAD90E -:1074600080E8C82E85E1D82ECE0101967C0100E08F -:107470005701F60161917191819191916F01208580 -:107480003185428553850E94536F9B01AC01F70102 -:1074900060817181828193810E94526FF7016083C4 -:1074A000718382839383023079F42091981530910F -:1074B000991540919A1550919B150E94526FF701B2 -:1074C0006083718382839383F4E0EF0EF11CF501F6 -:1074D000608171818281938181D9023019F080E2CB -:1074E00099E098D90F5F033019F68091EB1482FF71 -:1074F0000CC08AE199E08ED98091A6139091A513D2 -:10750000891708F48E5E891B77D98091EB1483FF6D -:107510000CC085E199E07ED99091DF0F8091E00F5A -:10752000891708F48058891B67D98091EB1484FF70 -:1075300008C08FE099E06ED90E94095B43E062E0E9 -:10754000C5D88BE099E066D99FB7F8948091B514BF -:107550008E7F8093B5149FBF812F887609F447C032 -:1075600080910715882351F0982F9C77C1F18830BE -:1075700029F40E943F4981E0809308158091071506 -:10758000811103C092E09093081516FF0AC088305D -:1075900019F480E480930715809108158860809322 -:1075A000081513FF07C08091071585FD03C080E112 -:1075B0008093071515FF13C080ED99E02BD98CE758 -:1075C00099E028D98DE599E025D98091081581FDAC -:1075D000146084608093081580E2809307159FB73C -:1075E000F8948091B51487798093B5149FBF11FFEB -:1075F00057C0812F887609F04BC0809107158823EA -:1076000039F0807509F444C08091081581FF40C0AD -:107610008091081582FF1EC080916615882369F04D -:1076200040916715509168156091691570916A15C0 -:107630000E94D72C80EA9FE032DE80916515882376 -:1076400049F0823011F45C9A02C00E94BF5D88EE5E -:1076500093E025DE8091A5139091A6139817A1F0D1 -:10766000F9E28F9FC00111248D539F4E892B61F049 -:107670008091081583FD08C088E0809307150E945B -:1076800061490E94A42C02C010920715109208159F -:107690009FB7F8948091B5148D7F8093B5149FBFE8 -:1076A00012FF22C080910715807391F08091091517 -:1076B00081110EC08091081582FF04C00E94D02C59 -:1076C0000E94BF5D8091081582608093081504C0F8 -:1076D00010920815109207159FB7F8948091B51471 -:1076E0008B7F8093B5149FBF809107158C7711F025 -:1076F0000E94614980910715803239F48091081504 -:1077000081FF03C080E18093071568960FB6F89457 -:10771000DEBF0FBECDBFDF91CF911F910F91FF90C4 -:10772000EF90DF90CF90BF90AF90089520918A1096 -:1077300030918B1021153105B9F080919A109091FC -:107740009B108217930734F4019690939B108093BB -:107750009A100AC010929B1010929A1010928B10DF -:1077600010928A101092920D2091170D3091180DE1 -:1077700021153105A1F080919810909199108217F0 -:10778000930734F40196909399108093981007C052 -:10779000109299101092981081E08093930D80912F -:1077A000920D81111BC08091190D811117C080911C -:1077B00073008E7F809373001092160D10928B10C1 -:1077C00010928A101092180D1092170D10929B10A3 -:1077D00010929A101092991010929810089580911A -:1077E0009710811107C081E08093971080910B0161 -:1077F000806205C01092971080910B018F7D80935D -:107800000B0180919510909196109C012F5F3F4F36 -:107810003093961020939510209104023091050228 -:107820002817390760F410929610109295108091E5 -:1078300070008E7F8093700081E08093980D089592 -:1078400020915F0D3091600D2430310559F426E60A -:1078500036E646E65FE30E94337020E030E040E821 -:1078600052E40DC02530310539F52CEE31E548E301 -:107870005EE30E94337020E030E040E851E40E9473 -:1078800085720E949B706093821070938310809326 -:107890008410909385108AE69CE39093AF148093B4 -:1078A000AE141092A00085E08093A1008DEF9FEFB1 -:1078B0009093B1148093B0148091B0149091B1144E -:1078C0009093A5008093A4008091720081608093C2 -:1078D000720008958091821090918310A09184107D -:1078E000B0918510181619061A061B06F4F420919B -:1078F0009410222389F0109294100197A109B109E4 -:107900008093821090938310A0938410B09385107D -:1079100080910201806406C081E080939410809180 -:1079200002018F7B8093020108950E94815510927D -:10793000821010928310109284101092851081E0B2 -:107940008093970D0895CF93DF93EB018431D1F0AD -:1079500028F4882361F08C30A8F437C08233E9F032 -:1079600018F4873190F10EC0833311F10BC0888178 -:10797000882329F06FE774E0CE010E94B97361E8B3 -:1079800074E020C08881882329F06FE774E0CE017D -:107990000E94B97364E874E015C08881882329F0D7 -:1079A0006FE774E0CE010E94B97368E874E00AC022 -:1079B0008881882329F06FE774E0CE010E94B973B3 -:1079C0006CE874E0CE010E94B9738091270D882382 -:1079D00079F067E27DE0CE010E94B97382E3E7E2CD -:1079E000FDE0DF011D928A95E9F7DF91CF910895BF -:1079F0006AE773E0CE01DF91CF910C94B9738F9257 -:107A00009F92AF92BF92CF92DF92EF92FF920F932D -:107A10001F93CF93DF9306E015E18EE1F8011192F9 -:107A20008A95E9F70E9463340E94125D80E090E03D -:107A30000E940147CFE5DDE06E877F87888B998BB9 -:107A400081E090E00E9401476A8B7B8B8C8B9D8B41 -:107A500082E090E00E9401476E8B7F8B888F998F28 -:107A6000F801C480D580E680F780CA8EDB8EEC8E6C -:107A7000FD8EC084D184E284F384CE8EDF8EE8A2B2 -:107A8000F9A204851585268537850AA31BA32CA397 -:107A90003DA320E030E044EB52E40E94526F7B01B2 -:107AA0008C012A893B894C895D896E857F8588890F -:107AB0009989EDE88E2EEDE09E2EF9E8AF2EFDE0DF -:107AC000BF2EA5E8CA2EADE0DA2E10D7DF91CF91F8 -:107AD0001F910F91FF90EF90DF90CF90BF90AF90EC -:107AE0009F908F900895E1E0F1E080818062808333 -:107AF000808180648083E2E0F1E080818F7D8083FB -:107B000080818F7B808308953F9A479A08959C9A3D -:107B10009D9AA498A59A08958091040187788093EE -:107B20000401809103018877803451F440E050E0F3 -:107B300060E87FE384E00E943A2D60E974E02AC0A7 -:107B400080910301887791F440E050E060E87FE3A2 -:107B500084E00E943A2D67E974E08CE890E10E948D -:107B6000C47340E050E060EE70E41BC080910301FC -:107B7000887740E050E060E87FE3803231F484E0D1 -:107B80000E943A2D6EE974E005C084E00E943A2D0F -:107B900065EA74E08CE890E10E94C47340E050E034 -:107BA000BA0183E00E943A2D0C9459320F931F932F -:107BB000CF93DF9360915F0D84E893E00E94185D9E -:107BC0006091600D85E893E00E94185DC1E6DDE0FC -:107BD00088E993E069918C010F5F1F4F0E94185D47 -:107BE000C8010C391340B1F7C5E6DDE08EE893E03B -:107BF00069918C010F5F1F4F0E94185DC801023907 -:107C00001340B1F7C9E6DDE082E89CE069918C01A0 -:107C10000F5F1F4F0E94185DC80106381C40B1F766 -:107C2000DF91CF911F910F910895E7E5F4E186E987 -:107C30009BE3918380831092200185E08093210152 -:107C400081EF9FEF938382838281938190932501BB -:107C500080932401E3E7F0E08081816080830895D0 -:107C6000CF92DF92EF92FF920F931F93CF93DF9308 -:107C700069017A011092980DEAE0F1E0208120621A -:107C80002083EBE0F1E020812F7D2083660F771FBA -:107C9000709305026093040200E514E18FEE9BE30C -:107CA000F80191838083C0E7D0E088818E7F88834C -:107CB000E0EBF0E080818C7F8083E1EBF0E080817D -:107CC000877F8083A6EBB0E08C918F7D8C93888139 -:107CD0008D7F888380818460808380818C7F808396 -:107CE00020E034E244EF59E4C701B6010E9433704A -:107CF00020E034E244E75BE40E94857220E030E05B -:107D000040E85CE30E9485720E949B7020E031E0B5 -:107D1000C901861B970BF80193838283828193812B -:107D20008093B200888181608883DF91CF911F9119 -:107D30000F91FF90EF90DF90CF900895CF93C1E027 -:107D4000C093970D80915F0D9091600D04970297FD -:107D500000F51092970D10928610109287101092D5 -:107D6000881010928910809107018F7D8093070100 -:107D700080910801806280930801809102018062F5 -:107D80008093020160E070E084EB93E459DDC093DE -:107D9000960DCF9108951092821010928310109238 -:107DA0008410109285100E9481551092960D0C94AB -:107DB00081558091F41482FF08C08A98809108014F -:107DC0008E7F809308015F9807C08A9A809108018E -:107DD0008160809308015F9ADEDF1092910D089513 -:107DE0008F929F92AF92BF92CF92DF92EF92FF92CB -:107DF0006B017C0120E030E044EB53E40E944A72C6 -:107E000018160CF488C020E030E0A901C701B601C3 -:107E10000E942C7087FD7FC080915F0D9091600D56 -:107E200004970297B8F52091861030918710409101 -:107E3000881050918910C701B6010E94526F4B0102 -:107E40005C0120E030E0A9010E942C70882309F435 -:107E500062C0C0928610D0928710E0928810F09293 -:107E6000891020E030E0A901C501B4010E944A72E6 -:107E7000181624F4809102018F7D03C080910201C5 -:107E8000806280930201C501B4019F77D9DC109212 -:107E9000970D41C020E030E044E353E4C701B60150 -:107EA0000E944A7218161CF4C12CD12C7601A7012D -:107EB000960160E070E084E393E40E94526F20E05A -:107EC00030E044E353E40E9433709B01AC010E9414 -:107ED000536F20E030E040E05FE30E94536F609317 -:107EE000000270930102809302029093030220E04B -:107EF00030E040EA51E40E94337020E030EC4FE77C -:107F000054E40E9485720E94A070CB010E943154FB -:107F100081E08093970DFF90EF90DF90CF90BF901E -:107F2000AF909F908F90089580915F0D9091600D1C -:107F30000497029780F4809101018062809301018F -:107F4000809101018064809301018091020180622F -:107F500080930201089580E18093A1001092A00017 -:107F600082E08093B41480E29EE49093B3148093F3 -:107F7000B2149093A7008093A60082E18093A100A1 -:107F800020E030E040EA51E460910002709101028B -:107F900080910202909103020E94337020E030EC45 -:107FA0004FE754E40E9485720E94A070CB010C94AC -:107FB0003154CF93DF93D82FC8E05E98559AD7FFFE -:107FC00002C05D9A01C05D9865E070E080E090E0DD -:107FD00028D95E9A65E070E080E090E022D95E9852 -:107FE000DD0F65E070E080E090E01BD9C15029F71B -:107FF00062E070E080E090E014D9559A5D9A62E00A -:1080000070E080E090E0DF91CF910BC95E98559AC7 -:108010005D9865E070E080E090E003D95E9A65E0ED -:1080200070E080E090E0FDD8559A5D9A65E070E0E0 -:1080300080E090E0F6C8CF93559A5D9A62E070E0D8 -:1080400080E090E0EED85E9A62E070E080E090E040 -:10805000E8D855988BEF99B1C92FC07295FF05C02C -:108060008150C9F7D3DFC1E006C05E9862E070E0DE -:1080700080E090E0D6D88C2FCF910895559A5D9AE4 -:108080005E9A65E070E080E090E0CBD8559A5D980C -:1080900065E070E080E090E0C4D85E9862E070E057 -:1080A00080E090E0BEC8CF93DF93D82FC8E08091E6 -:1080B00002018F7780930201809101018460809397 -:1080C000010180910201D7FF02C0846001C08B7F53 -:1080D0008093020165E070E080E090E0A2D880919A -:1080E000020180688093020165E070E080E090E02A -:1080F00098D8809102018F7780930201DD0F65E0AF -:1081000070E080E090E08DD8C15089F662E070E0C8 -:1081100080E090E086D88091010184608093010125 -:108120008091020184608093020162E070E080E04F -:1081300090E0DF91CF9175C80F931F93CF93DF939A -:10814000C2E0D1E088818F77888301E011E0F801F7 -:1081500080818460808388818B7F888365E070E084 -:1081600080E090E05ED888818068888365E070E078 -:1081700080E090E056D8F801808184608083888117 -:108180008460888365E070E080E090E0DF91CF91CB -:108190001F910F9146C8CF93809101018460809315 -:1081A00001018091020184608093020162E070E02D -:1081B00080E090E036D880910201806880930201CF -:1081C00062E070E080E090E02CD8809101018B7F2C -:1081D000809301018BEF90910001C92FC47092FF31 -:1081E00005C08150C1F7A8DFC1E00AC0809102013B -:1081F0008F778093020162E070E080E090E011D818 -:108200008C2FCF9108950F931F93CF93DF9301E0AD -:1082100011E0F801808184608083C2E0D1E0888130 -:108220008460888388818068888365E070E080E06E -:1082300090E00E941139F8018081846080838881F8 -:108240008B7F888365E070E080E090E00E941139C8 -:1082500088818F77888362E070E080E090E0DF9132 -:10826000CF911F910F910C941139CF93DF93D82F99 -:10827000C8E04398399AD7FF02C0419A01C041989B -:1082800065E070E080E090E00E941139439A65E07B -:1082900070E080E090E00E9411394398DD0F65E0C6 -:1082A00070E080E090E00E941139C15011F762E067 -:1082B00070E080E090E00E941139399A419A62E0C2 -:1082C00070E080E090E0DF91CF910C9411394398F9 -:1082D000399A419865E070E080E090E00E941139A1 -:1082E000439A65E070E080E090E00E941139399A8D -:1082F000419A65E070E080E090E00C941139CF93F2 -:10830000399A419A62E070E080E090E00E94113971 -:10831000439A62E070E080E090E00E941139399861 -:108320008BEF96B1C92FC27091FF05C08150C9F77C -:10833000CEDFC1E007C0439862E070E080E090E0EB -:108340000E9411398C2FCF910895399A419A439AFE -:1083500065E070E080E090E00E941139399A419820 -:1083600065E070E080E090E00E941139439862E09F -:1083700070E080E090E00C9411394F925F926F9220 -:108380007F92AF92BF92CF92DF92EF92FF920F93C4 -:108390001F93CF93DF935C01EB018A01FC014080C6 -:1083A00051806280738020E030E0A901C301B201F6 -:1083B0000E942C7020E030E0A901811111C0688179 -:1083C00079818A819B810E944A721816E4F02AED15 -:1083D000C22E2FE0D22E29ECE22E2FEBF22E22C05D -:1083E000C301B2010E942C7087FD16C0A301920147 -:1083F000688179818A819B810E9433700E94F16F2C -:108400006B017C010FC09AEDC92E9FE0D92E99EC2B -:10841000E92E9FE3F92E06C0C12CD12C80ECE82E6A -:108420008FE7F82EC701B6010E9430702091610DD0 -:108430003091620D4091630D5091640D0E948572E0 -:108440009B01AC01C301B2010E94526FF501608330 -:10845000718382839383C701B6010E94E8722091E1 -:10846000610D3091620D4091630D5091640D0E9439 -:1084700085729B01AC01688179818A819B810E9410 -:10848000526F688379838A839B832091650D309135 -:10849000660D4091670D5091680DF8016081718102 -:1084A000828193810E94536FF8016083718382837C -:1084B0009383DF91CF911F910F91FF90EF90DF9009 -:1084C000CF90BF90AF907F906F905F904F90089546 -:1084D0004F925F926F927F92AF92BF92CF92DF9254 -:1084E000EF92FF920F931F93CF93DF935C01EB0109 -:1084F0008A01FC01408051806280738020E030E07E -:10850000A901C301B2010E942C7020E030E0A90152 -:10851000811111C0688179818A819B810E944A7290 -:108520001816E4F02AEDC22E2FE0D22E29ECE22E0E -:108530002FEBF22E22C0C301B2010E942C7087FDE6 -:1085400016C0A3019201688179818A819B810E9472 -:1085500033700E94F16F6B017C010FC09AEDC92E40 -:108560009FE0D92E99ECE92E9FE3F92E06C0C12C8D -:10857000D12C80ECE82E8FE7F82EC701B6010E94BF -:1085800030702091610D3091620D4091630D5091DA -:10859000640D0E948572A30192010E94536FF50140 -:1085A0006083718382839383C701B6010E94E8725E -:1085B0002091610D3091620D4091630D5091640DD9 -:1085C0000E9485729B01AC01688179818A819B81BF -:1085D0000E94536F688379838A839B832091650D02 -:1085E0003091660D4091670D5091680DF8016081E2 -:1085F0007181828193810E94526FF801608371833F -:1086000082839383DF91CF911F910F91FF90EF9021 -:10861000DF90CF90BF90AF907F906F905F904F9022 -:1086200008952F923F924F925F926F927F928F9216 -:108630009F92AF92BF92CF92DF92EF92FF920F93F1 -:108640001F93CF93DF93CDB7DEB762970FB6F89441 -:10865000DEBF0FBECDBF6D837E838F839887298752 -:108660003A874B875C87E982FA820B831C83160169 -:10867000BE86AD8684019B01AC010E9485726B01B0 -:108680007C0129853A854B855C85CA01B9010E9428 -:1086900085729B01AC01C701B6010E94536F0E9415 -:1086A000F2722B013C0120E030E04DE353E469819C -:1086B0007A818B819C810E94526F69837A838B833C -:1086C0009C83A3019201C301B2010E9485726B01D8 -:1086D0007C0129813A814B815C81CA01B9010E94E8 -:1086E00085729B01AC01C701B6010E94536F6B01FB -:1086F0007C0120E030E0A9010E94536F4B015C0136 -:108700009B01AC01C301B2010E9485722B013C01A7 -:1087100020E034E244E758E4C701B6010E948572C4 -:108720006F87788B898B9A8BA5019401C501B40161 -:108730000E9485729B01AC016F85788989899A892D -:108740000E94526F0E94F2729B01AC0169817A8192 -:108750008B819C810E9485724B015C01A70196016F -:10876000C701B6010E94536F20E030E04AE753E4AE -:108770000E9485726B017C01A5019401C301B201C5 -:108780000E94526FA70196010E9433700E94446FAD -:1087900021EE3EE245E652E40E948572F1016083DB -:1087A000718382839383A5019401C301B2010E9466 -:1087B000536FA70196010E9433700E94446F21EE0F -:1087C0003EE245E652E40E9485726B017C01ED8534 -:1087D000FE85608371838283938321EE3EE245E6CA -:1087E00052E4F10160817181828193810E94337032 -:1087F0000E94E87220E030E04AE753E40E9485726C -:108800009B01AC0169817A818B819C810E944A72B3 -:10881000181654F4F7FAF094F7F8F094ED85FE8505 -:10882000C082D182E282F38220E030E0A9016D8132 -:108830007E818F8198850E942C7020E030E0A90114 -:10884000811112C069857A858B859C850E944A7248 -:1088500018162CF480E090E0A4EBB2E411C080E0A4 -:1088600090E0A4EBB2EC0CC06D817E818F81988585 -:108870000E942C7087FF0AC080E090E0A0ECBFE768 -:10888000F80180839183A283B38317C02D813E8139 -:108890004F81588569857A858B859C850E943370C8 -:1088A0000E94F16F21EE3EE245E652E40E9485729D -:1088B000F801608371838283938362960FB6F89484 -:1088C000DEBF0FBECDBFDF91CF911F910F91FF9003 -:1088D000EF90DF90CF90BF90AF909F908F907F9060 -:1088E0006F905F904F903F902F9008952F923F92FE -:1088F0004F925F926F927F928F929F92AF92BF92B0 -:10890000CF92DF92EF92FF920F931F93CF93DF935B -:10891000CDB7DEB72E970FB6F894DEBF0FBECDBF32 -:1089200029833A834B835C83ED82FE820F83188711 -:10893000860115019E868D8621EE3EE245E652E4D3 -:108940000E9433702B013C0121EE3EE245E652E4E9 -:1089500069817A818B819C810E9433704B015C011B -:1089600021EE3EE245E652E46D817E818F8198855D -:108970000E9433706B017C01C301B2010E94307010 -:1089800069837A838B839C83C501B4010E94307014 -:108990006D837E838F839887C301B2010E94E87242 -:1089A0002B013C01C501B4010E94E87269877A87F6 -:1089B0008B879C8720E030E04AE753E469817A8125 -:1089C0008B819C810E9485724B015C0120E030E02C -:1089D0004AE753E46D817E818F8198850E9485727C -:1089E0009B01AC01C501B4010E94536F20E030E04F -:1089F000A9010E94536F4B015C01C701B6010E949F -:108A000030709B01AC01C501B4010E948572F80170 -:108A10006083718382839383C701B6010E94E872E9 -:108A20009B01AC01C501B4010E948572F101608314 -:108A300071838283938320E030E04AE753E4C301EB -:108A4000B2010E9485726B017C0120E030E04AE7B0 -:108A500053E469857A858B859C850E9485729B018C -:108A6000AC01C701B6010E94526F20E030E04DE337 -:108A700053E40E94536FED85FE856083718382838A -:108A800093832E960FB6F894DEBF0FBECDBFDF9155 -:108A9000CF911F910F91FF90EF90DF90CF90BF90FB -:108AA000AF909F908F907F906F905F904F903F908E -:108AB0002F9008952F923F924F925F926F927F92E4 -:108AC0008F929F92AF92BF92CF92DF92EF92FF92DE -:108AD0000F931F93CF93DF93CDB7DEB728970FB6D1 -:108AE000F894DEBF0FBECDBF2B013C0129833A8332 -:108AF0004B835C83ED82FE820F83188786018FE5AE -:108B0000282E8DE0382E20E030E044EB52E4F101D5 -:108B100066897789808D918D0E94526F6B017C01EF -:108B200024EE38E34EE553E46D817E818F81988594 -:108B30000E9433709B01AC01C701B6010E94536FC4 -:108B40006D837E838F83988724EE38E34EE553E46C -:108B500069817A818B819C810E943370F101228925 -:108B60003389448955890E94536F69837A838B8343 -:108B70009C8324EE38E34EE553E4C301B2010E9426 -:108B80003370F10126853785408951890E94536FE2 -:108B90006801ED80FE800F81188529813A814B8123 -:108BA0005C81A4DE28960FB6F894DEBF0FBECDBF61 -:108BB000DF91CF911F910F91FF90EF90DF90CF90B9 -:108BC000BF90AF909F908F907F906F905F904F90ED -:108BD0003F902F9008954F925F926F927F928F9265 -:108BE0009F92AF92BF92CF92DF92EF92FF920F933C -:108BF0001F932B013C0149015A01670178019B0138 -:108C0000AC010E943A73811170C0A5019401C501A5 -:108C1000B4010E943A73811168C0A7019601C7018F -:108C2000B6010E943A73811160C02AE939E947E030 -:108C300053E4C301B2010E944A7218160CF455C0E5 -:108C400020E030E0A901C301B2010E942C7087FD31 -:108C50004CC02DEC3CEC4FEE52E4C501B4010E9437 -:108C60004A7218160CF441C020E030E0A901C50199 -:108C7000B4010E942C7087FD38C0A301920160E00E -:108C800070E084E393E40E94526FA50194010E9476 -:108C9000526F4B015C0120E030E047E153E40E9459 -:108CA0004A72181614F120E030E040E251E4C501A8 -:108CB000B4010E942C7087FD18C020E030E040EB2A -:108CC00052E4C701B6010E944A72181674F020E0FF -:108CD00030E040EB52ECC701B6010E942C70881FB7 -:108CE0008827881F91E0892701C080E01F910F919C -:108CF000FF90EF90DF90CF90BF90AF909F908F90BC -:108D00007F906F905F904F900895EF92FF920F9336 -:108D10001F93CF93DF9382E393E00E94755D8B3BBB -:108D200019F080E293E002C084E393E02FE5E22EA5 -:108D30002DE0F22EC9E5DDE08C0109551D40C8018A -:108D40008C0F9D1F0E94755D8993EC16FD06B9F787 -:108D5000DF91CF911F910F91FF90EF900895AF9207 -:108D6000BF92CF92DF92EF92FF920F931F93CF9318 -:108D7000DF93A82E6EE00E94B952C82F6FE08A2DB3 -:108D80000E94B952D0E0DC2FCC27C82B7E016E01A7 -:108D900004E010E06EE08A2D0E94B952B82E6FE018 -:108DA0008A2D0E94B9522B2D30E0322F2227A901A3 -:108DB000482BCA01C816D90608F46C018E159F0508 -:108DC00008F47C01C80FD91F0150110919F7CE0111 -:108DD0008C199D098E199F0963E070E00E946273EF -:108DE000613050E1750708F48B01C801DF91CF9124 -:108DF0001F910F91FF90EF90DF90CF90BF90AF90B9 -:108E000008954F925F926F927F928F929F92AF924E -:108E1000BF92CF92DF92EF92FF920F931F93CF9367 -:108E2000DF938C019CDFEC010130110551F070F0F3 -:108E30000230110509F086C1E5E9FEE080E090E02E -:108E40001BC1EBE9FDE080E090E08EC0E5E1FEE0D3 -:108E500080E090E0A190B1907C012FEFE21AF20A3D -:108E6000008111810A151B0510F40150104F0C17D9 -:108E70001D0718F0CA15DB0530F4C7012FE3E21611 -:108E8000F10441F701C07C01B7016F5F7F4F072EEE -:108E9000000C880B990B0E94CE7026E636E646EE53 -:108EA0005FE30E9485729B01AC0166E676E686EE82 -:108EB00092E40E94526F2B013C01B8016C1B7D0BA8 -:108EC00080E090E00E94CC7020E030E040E859E380 -:108ED0000E94857220E030E044EB53E40E948572EA -:108EE0009B01AC01C301B2010E94536F2B013C01F5 -:108EF000B701FF0C880B990B0E94CE7026E636E670 -:108F000046EE5FE30E9485729B01AC0166E676E661 -:108F100086EE92E40E94526F6B017C01CA19DB0954 -:108F2000BE0180E090E00E94CC7020E030E040E89C -:108F300059E30E94857220E030E044EB53E40E9444 -:108F400085729B01AC01C701B6010E94526F9B0163 -:108F5000AC01C301B2017DC00C171D0798F4C70115 -:108F60002CE3E216F10491F0019111917C012FEFB5 -:108F7000E21AF20AA080B1800A151B0568F70150B9 -:108F8000104FEACFCA15DB0550F37C01B7016F5FC4 -:108F90007F4F072E000C880B990B0E94CE7026E69F -:108FA00036E646EE5FE30E94857226E636E646EE3A -:108FB0005FE30E94526F2B013C01BE016A197B09DD -:108FC00080E090E00E94CC7020E030E040E859E37F -:108FD0000E94857220E030E044EB53E40E948572E9 -:108FE0009B01AC01C301B2010E94526F4B015C01B5 -:108FF000B8016C1B7D0B80E090E00E94CC7020E0FB -:1090000030E040E859E30E94857220E030E044EB14 -:1090100053E40E9485722B013C01B701FF0C880BC1 -:10902000990B0E94CE7026E636E646EE5FE30E947C -:1090300085729B01AC01C301B2010E94536F26E609 -:1090400036E646EE5FE30E94526F9B01AC01C5011C -:10905000B4010E94536F20E030E040E05FE30E94E3 -:1090600085724B015C018DC00C171D0798F4C70178 -:1090700024E6E216F10491F0019111917C012FEFA9 -:10908000E21AF20AA080B1800A151B0568F70150A8 -:10909000104FEACFAC16BD0650F77C01B7016F5FE9 -:1090A0007F4F072E000C880B990B0E94CE7026E68E -:1090B00036E646EE5FE30E9485722B013C01BE015D -:1090C0006A197B0980E090E00E94CC7020E030E0DB -:1090D00040E859E30E94857220E030E044EB53E41D -:1090E0000E9485729B01AC01C301B2010E94526FC4 -:1090F0004B015C01B8016C1B7D0B80E090E00E948D -:10910000CC7020E030E040E859E30E94857220E016 -:1091100030E044EB53E40E9485722B013C01B7011F -:10912000FF0C880B990B0E94CE7026E636E646EEC1 -:109130005FE30E9485729B01AC01C301B2010E94F2 -:10914000536F83CF0130110559F098F002301105AB -:10915000C1F4812C912C94EBA92E92E4B92E11C06C -:1091600029E0822E26EF922E21EBA22E22E4B22EAF -:1091700008C085E2882E89E0982E83E0A82E82E43C -:10918000B82EC501B401DF91CF911F910F91FF90CF -:10919000EF90DF90CF90BF90AF909F908F907F9097 -:1091A0006F905F904F9008958F929F92AF92BF9271 -:1091B000CF92DF92EF92FF920F931F93CF93DF93A3 -:1091C000EB0127EBE22E24E1F22E8C016B018CE007 -:1091D000C80ED11C6991799189919991F70181907B -:1091E0009190A190B1907F010E94CE70A501940151 -:1091F0000E943370F80161937193819391938F0171 -:10920000CC15DD0539F7DF91CF911F910F91FF90BC -:10921000EF90DF90CF90BF90AF909F908F90089588 -:109220001F920F920FB60F9211240BB60F922F932D -:109230003F934F935F936F937F938F939F93AF93DE -:10924000BF93EF93FF9389B18095982F907184FF1E -:1092500003C091110E949056FF91EF91BF91AF9181 -:109260009F918F917F916F915F914F913F912F913E -:109270000F900BBE0F900FBE0F901F901895CF93BD -:10928000DF93C0912314D09124142097B9F081E08A -:109290008093261460913C1470913D1480913E148B -:1092A00090913F149B01AC010E948572698B7A8B6F -:1092B0008B8B9C8B1092241410922314DF91CF91EE -:1092C00008952F923F924F925F926F927F928F926A -:1092D0009F92AF92BF92CF92DF92EF92FF920F9345 -:1092E0001F93CF93DF93CDB7DEB7CD54D1090FB61F -:1092F000F894DEBF0FBECDBF80910715807723960F -:109300008FAF2397882389F020E030E0A901609196 -:109310003C1470913D1480913E1490913F140E9432 -:109320002C70882311F40C943F5220913C142F8B05 -:1093300030913D14388F40913E14498F50913F1425 -:109340005A8F80914C148B8390914D149D83A091E2 -:109350004E14AE83B0914F14BC8300913814109119 -:109360003914E0913A14E987F0913B14FD8720917C -:109370002B1430912C1440912D1450912E142DA3A8 -:109380003EA34FA358A7309127143DAF4091281416 -:109390004EAF509129145FAF80912A1421968FAF60 -:1093A0002197209133143091341440913514509109 -:1093B00036142DAB3EAB4FAB58AF3091CC13229649 -:1093C0003FAF2297409122144BA75091A6132496A9 -:1093D0005FAF24978091A5138B8F9091C210259633 -:1093E0009FAF2597A0912314B0912414BA8BA98B19 -:1093F00020912F1430913014409131145091321437 -:1094000029AF3AAF4BAF5CAF309144143B8B4091E6 -:1094100045144C8B509146145D8B809147148E8B74 -:10942000909140149C8FA0914114AD8FB091421443 -:10943000BE8FE0914314EF8F309048142090491470 -:10944000F0914A14F98320914B142A838091A71339 -:109450005BA5851709F4F4C649895A89452B09F09B -:1094600033C224965FAD24978B8D581709F478C7C3 -:10947000A82EB12CA9E2AA9DC001AB9D900D11248C -:10948000FC01ED53FF4EFA8BE98B80912614882363 -:1094900019F010922614BCC0809125148F5F85307E -:1094A00019F08093251402C010922514E091251420 -:1094B00021E12E9FF0011124E353FC4E89E28A9DA5 -:1094C000A0018B9D500D11244D535F4E7A01DA019E -:1094D0008C91808311964D915D916D917C91149743 -:1094E000DB01CA0123E0880F991FAA1FBB1F2A9521 -:1094F000D1F781839283A383B483D70115964D91CD -:109500005D916D917C911897DB01CA0133E0880F62 -:10951000991FAA1FBB1F3A95D1F785839683A7830E -:10952000B087D70119964D915D916D917C911C97F3 -:10953000DB01CA0143E0880F991FAA1FBB1F4A9590 -:10954000D1F781879287A387B487D7011D966D9144 -:109550007D918D919C9150978B019C0153E0000F60 -:10956000111F221F331F5A95D1F7058716872787AA -:10957000308B0E94CC706DAF7EAF8FAF21969FAFC6 -:109580002197F70125A136A147A150A50E9433706C -:109590006DA37EA38FA398A79B01AC0160E070E050 -:1095A00080EA9FE30E94337069AF7AAF8BAF9CAFC4 -:1095B0002396FFAD2397FF23D1F02B893C894D895A -:1095C0005E896B897C898D899E890E948572D7010D -:1095D00051966D937D938D939C935497BB89BF8BCC -:1095E000EC89E88FFD89F98F2E892A8F0DC0D7016C -:1095F00051966D917D918D919C9154970E94F2723C -:109600006F8B788F898F9A8F1DAA1EAA1FAA18AEFA -:1096100029E22A9DF0012B9DF00D1124ED53FF4E00 -:10962000FE87ED87C1A0D2A0E3A0F4A0A701960118 -:1096300060E070E080E09FE30E94337069877A8782 -:109640008B879C8723963FAD23973323F1F142E02C -:1096500040933714AD85BE8595964D905D906D9085 -:109660007C90989751968D909D90AD90BC9054971A -:10967000A50194010E9485729B01AC01C301B20156 -:109680000E94526F8B0189879D8720E030E0A901FD -:109690000E942C7087FF1BC1A7019601C701B6016C -:1096A0000E94536FA30192010E9485729B01AC013D -:1096B000C501B4010E94526F0E94F2726B8B7C8BC9 -:1096C0008D8B9E8B3F82288615C110923714ED85B5 -:1096D000FE85F5A1FF83AD85BE859696BC91B887C2 -:1096E000ED85FE8507A110A5EB8DEF5FE23109F452 -:1096F000E0E02496FFAD2497EF1789F029E22E9F32 -:10970000F0011124ED53FF4E618972898389948998 -:109710000E94F2726B8B7C8B8D8B9E8B04C01B8A9C -:109720001C8A1D8A1E8A2B893C894D895E896B891A -:109730007C898D899E890E9485722B013C0189E27A -:109740008A9DA0018B9D500D11244D535F4E5AA34D -:1097500049A3DA0151962D913D914D915C91549719 -:109760002D873E874F87588BA30192016D857E859B -:109770008F8598890E94526F29853A854B855C8533 -:109780000E9485722F813885A8010E94536F20E0C6 -:1097900030E040E05FE30E948572362E272E8983F9 -:1097A0009A8320E030E0A9010E944A7218160CF05A -:1097B00095C0232D322D49815A816F817885C8014A -:1097C0000E944A7218160CF071C0E9A1FAA1858CAA -:1097D000968CA78CB0A0A3019201C501B4010E9490 -:1097E000526F29853A854B855C850E9485726B8313 -:1097F0007D838E839C839B01AC01632D722D8981B7 -:109800009A810E944A72181694F5C501B4010E940B -:10981000F2726C8F7D8F8E8F9F8FA50194016D8565 -:109820007E858F8598890E942C70811106C0F1E099 -:10983000F093371409831A835DC02D853E854F85CB -:109840005889C501B4010E94526F29853A854B851C -:109850005C850E9485729B01AC016F817885C8018F -:109860000E94526F6F83788789839A8343C0A701D0 -:109870009601C701B6010E94536F232D322D4981F5 -:109880005A810E948572A30192010E94536F0E9427 -:10989000F2726C8F7D8F8E8F9F8F3F8228863B82E6 -:1098A0002D8229812E833A813C8324C042E040935B -:1098B000371409831A835F895C8F888D8D8F998D0A -:1098C0009E8FAA8DAF8F16C03F82288617C03F8219 -:1098D00028861B8A1C8A1D8A1E8A10C0BB89BC8FE1 -:1098E000EC89ED8FFD89FE8F2E892F8F1F821886C0 -:1098F00019821A8200E010E019861D8622965FAD5B -:109900002297452F50E05AA749A786E0849FF0018F -:10991000859FF00D1124E855FC4E8091251482831B -:10992000A989BA899596BC91B8ABE989FA89F6A15B -:10993000F9ABA989BA899796BC912696BFAF2697AD -:10994000E989FA89F0A52796FFAF279729AD3AADA7 -:109950004BAD5CAD68A979A98B2F9F2F0E94526FE8 -:109960006CA77DA78EA79FA720E030E0A9010E94E9 -:109970002C7087FF04C01CA61DA61EA61FA6209142 -:10998000371428A32B813D814E815C816F817885BE -:1099900089819A810E942C70811105C032E028963D -:1099A0003FAF289704C041E028964FAF289728A8DA -:1099B00059A92E965FAF2E9726968FAD26972D9696 -:1099C0008FAF2D9727963FAC27978EE3C82E83EC59 -:1099D000D82E8EE2E82E89E3F82E412C512C32014C -:1099E000C9A2DAA2EBA2FCA238A1332321F03130C4 -:1099F00009F485C0C5C0A989BA8991962D913D9178 -:109A00004D915C919497C701B6010E9485724B01FC -:109A10005C0120E030E040E05FE30E9485722F8926 -:109A2000388D498D5A8D0E94536FA70196010E946F -:109A300085729B01AC01622D2E967FAD2E972D96DF -:109A40008FAD2D97932D0E94526F262E2E967FAFAD -:109A50002E972D968FAF2D97392E2F8138854981DE -:109A60005A810E942C7087FF3DC02F813885498123 -:109A70005A8168A979A926968FAD269727969FAD1A -:109A800027970E94526F9B01AC010E94536F6B019C -:109A90007C012C8D3D8D4E8D5F8D6F89788D898DEC -:109AA0009A8D0E94536F9B01AC01C701B6010E94C1 -:109AB00033706B017C012896BFAD2897B8A3EC8D5D -:109AC000EF8BFD8DF88F2E8D298F3F8D3A8F2F8054 -:109AD00048852E964FAF2E9759812D965FAF2D97C3 -:109AE0003A80EBC0A50194016F89788D898D9A8D9C -:109AF0000E94536F6F8B788F898F9A8FDEC02C8D69 -:109B00003D8D4E8D5F8DC701B6010E9485729B0110 -:109B1000AC01622D2E967FAD2E972D968FAD2D9791 -:109B2000932D0E94526F4B015C012B813D814E8130 -:109B30005C810E942C7087FFB8C02B813D814E81D3 -:109B40005C81622D2E967FAD2E972D968FAD2D9731 -:109B5000932D0E94526F2C8D3D8D4E8D5F8D0E94F6 -:109B600033706B017C012B808D812E968FAF2E97E9 -:109B70009E812D969FAF2D973C80A2E0A8A39DC00B -:109B8000E989FA8921A132A143A154A1C701B601F3 -:109B90000E9485724B015C012F89388D498D5A8D49 -:109BA0000E942C7087FF52C020E030E040E05FE36D -:109BB000C501B4010E9485729B01AC016F89788D4B -:109BC000898D9A8D0E94526FA70196010E9485721D -:109BD0009B01AC01622D2E967FAD2E972D968FADF9 -:109BE0002D97932D0E94526F29966FAF29972A9631 -:109BF0007FAF2A972B968FAF2B972C969FAF2C97E2 -:109C0000980149855D850E944A721816FCF4A501E9 -:109C100094016F89788D898D9A8D0E94526F6F8B18 -:109C2000788F898F9A8F29962FAC29972A96FFAD26 -:109C30002A972E96FFAF2E972B962FAD2B972D960A -:109C40002FAF2D972C963FAC2C9737C098014985A4 -:109C50005D85622D2E967FAD2E972D968FAD2D971B -:109C6000932D0E94526F9B01AC010E94536F6B01B8 -:109C70007C012B893C894D895E896F89788D898D1E -:109C80009A8D0E94536F9B01AC01C701B6010E94DF -:109C900033706B017C01202E2E961FAF2E973985D5 -:109CA0002D963FAF2D973D8408C0282C2E969FAE51 -:109CB0002E972D96AFAE2D973B2CA7019601C30191 -:109CC000B2010E94536F2B013C0129A13AA14BA183 -:109CD0005CA10E942C7087FF07C0A301920169A1BB -:109CE0007AA18BA19CA120C02CA53DA54EA55FA566 -:109CF000622D2E967FAD2E972D968FAD2D97932D9D -:109D00000E944A72181644F52EE333EC4EE259E3F2 -:109D100069A17AA18BA19CA10E94536F69A37AA328 -:109D20008BA39CA3A30192010E94526F6B017C0143 -:109D3000980149855D85622D2E967FAD2E972D96D3 -:109D40008FAD2D97932D0E944A7218160CF44CCEAD -:109D500048A14093371403C058A1509337142DA144 -:109D60003EA14FA158A5622D2E967FAD2E972D9620 -:109D70008FAD2D97932D0E94857268A379A38CA730 -:109D800098AB0E9419706B017C016DAD7EAD8FADFB -:109D900021969FAD21970E9419704B015C01A7018C -:109DA00096010E94526F0E94A07069AB7AAB8BAB98 -:109DB0009CABA6E089A59AA5A89FF001A99FF00DEC -:109DC0001124E855FC4E29A93AA931832083232B7D -:109DD00009F087C023965FAD2397552309F481C00E -:109DE000C801A985BD858093381490933914A09338 -:109DF0003A14B0933B148B899C89AD89BE898093BA -:109E0000441490934514A0934614B09347148C8D3A -:109E10009D8DAE8DBF8D8093401490934114A0937F -:109E20004214B09343148B819D81AE81BC81809399 -:109E30004C1490934D14A0934E14B0934F148F81F3 -:109E40009885A981BA818093481490934914A0936E -:109E50004A14B0934B1422968FAD22978093CC1363 -:109E6000A989BA89B0932414A093231429AD3AADDB -:109E70004BAD5CAD20932F143093301440933114CC -:109E8000509332143B8D3093A5138DA19EA1AFA1A9 -:109E9000B8A580932B1490932C14A0932D14B093F9 -:109EA0002E149BA59093221410923C1410923D14F2 -:109EB00010923E1410923F141092331410923414E6 -:109EC0001092351410923614C0922714D092281490 -:109ED000E0922914F0922A142DA13EA14FA158A579 -:109EE00065C12DA93EA94FA958ADC301B2010E9479 -:109EF000536F2B013C0128A139A14CA558A9C501DC -:109F0000B4010E94526F9B01AC01C301B2010E94D7 -:109F100033704B015C0128A139A14CA558A9C70198 -:109F2000B6010E94526FA50194010E9485726DAB2B -:109F30007EAB8FAB98AF20EC31EE44E65EE4C5011A -:109F4000B4010E9485720E9419700E94A070603D49 -:109F5000E7E07E078105910560F446E029A53AA572 -:109F6000429FF001439FF00D1124E855FC4E1582ED -:109F700053C0603A5FE075078105910560F426E003 -:109F8000A9A5BAA52A9FF0012B9FF00D1124E85531 -:109F9000FC4E31E011C060344FE17407810591053A -:109FA00068F426E0A9A5BAA52A9FF0012B9FF00D21 -:109FB0001124E855FC4E32E035830CC0A6E049A5DB -:109FC0005AA5A49FF001A59FF00D1124E855FC4E61 -:109FD000B3E0B58346E029A53AA5429FF001439F2F -:109FE000F00D1124E855FC4E2581022E04C09695F3 -:109FF0008795779567950A94D2F7A9A9BAA902C05F -:10A00000AA0FBB1F2A95E2F7B183A08361157105E2 -:10A01000B1E08B07910568F446E029A53AA5429F77 -:10A02000F001439FF00D1124E855FC4E74836383C7 -:10A0300004C08FEF9FEF94838383BBA4B39496E017 -:10A04000B91201C0B12C980149855D85622D2E960B -:10A050007FAD2E972D968FAD2D97932D0E944A722E -:10A060001816CCF4822D2E969FAD2E972D96AFAD5F -:10A070002D97B32DE989FA8985A396A3A7A3B0A745 -:10A08000F8A1FDAF29A12EAF3CA53FAF48A921966D -:10A090004FAF2197CDC020E030E0A901622D2E9670 -:10A0A0007FAD2E972D968FAD2D97932D0E944A72DE -:10A0B00018160CF0A6C0C801A985BD858093381478 -:10A0C00090933914A0933A14B0933B148B899C89D4 -:10A0D000AD89BE898093441490934514A09346148F -:10A0E000B09347148C8D9D8DAE8DBF8D80934014A1 -:10A0F00090934114A0934214B09343148B819D819B -:10A10000AE81BC8180934C1490934D14A0934E1457 -:10A11000B0934F148F819885A981BA818093481498 -:10A1200090934914A0934A14B0934B145BA5509399 -:10A13000CC1389899A89909324148093231429AD90 -:10A140003AAD4BAD5CAD20932F1430933014409357 -:10A150003114509332143B8D3093A5138DA19EA1E1 -:10A16000AFA1B8A580932B1490932C14A0932D1419 -:10A17000B0932E14B092221410923C1410923D14FD -:10A1800010923E1410923F14109233141092341413 -:10A190001092351410923614C0922714D0922814BD -:10A1A000E0922914F0922A149C01AD01C701B60176 -:10A1B0000E943370A989BA8995966D937D938D938A -:10A1C0009C9398975CD8BB8DB093C210C35BDF4F54 -:10A1D0000FB6F894DEBF0FBECDBFDF91CF911F91B8 -:10A1E0000F91FF90EF90DF90CF90BF90AF909F9036 -:10A1F0008F907F906F905F904F903F902F900C9436 -:10A2000085342496EFAD2497FB8DEF1779F08F2FCF -:10A210008F5F823109F480E02B8D25963FAD259725 -:10A22000231303C025968FAF25978B8F1A8A198A1F -:10A230003F8028844BA522964FAF2297BBA606C924 -:10A24000C801A985BD858093381490933914A093D3 -:10A250003A14B0933B148B899C89AD89BE89809355 -:10A26000441490934514A0934614B09347148F89D7 -:10A27000988DA98DBA8D80933C1490933D14A09332 -:10A280003E14B0933F148C8D9D8DAE8DBF8D809309 -:10A29000401490934114A0934214B09343148B81C3 -:10A2A0009D81AE81BC8180934C1490934D14A093FA -:10A2B0004E14B0934F14832D922DA981BA818093AF -:10A2C000481490934914A0934A14B0934B142296C7 -:10A2D0008FAD22978093CC13A989BA89B0932414A7 -:10A2E000A093231429AD3AAD4BAD5CAD20932F1450 -:10A2F0003093301440933114509332143B8D30938B -:10A30000A5138DAD9EADAFAD2196BFAD21978093C6 -:10A31000271490932814A0932914B0932A148DA184 -:10A320009EA1AFA1B8A580932B1490932C14A09359 -:10A330002D14B0932E142DA93EA94FA958AD2093EA -:10A3400033143093341440933514509336143BA592 -:10A350003093221425964FAD25974093C2108FC09D -:10A36000C801A985BD858093381490933914A093B2 -:10A370003A14B0933B148B899C89AD89BE89809334 -:10A38000441490934514A0934614B09347148F89B6 -:10A39000988DA98DBA8D80933C1490933D14A09311 -:10A3A0003E14B0933F148C8D9D8DAE8DBF8D8093E8 -:10A3B000401490934114A0934214B09343148B81A2 -:10A3C0009D81AE81BC8180934C1490934D14A093D9 -:10A3D0004E14B0934F14832D922DA981BA8180938E -:10A3E000481490934914A0934A14B0934B142296A6 -:10A3F0005FAD22975093CC13109224141092231423 -:10A4000089AD9AADABADBCAD80932F149093301451 -:10A41000A0933114B093321424969FAD2497909357 -:10A42000A5138DAD9EADAFAD2196BFAD21978093A5 -:10A43000271490932814A0932914B0932A142DA1C3 -:10A440003EA14FA158A520932B1430932C14409378 -:10A450002D1450932E148DA99EA9AFA9B8AD809349 -:10A46000331490933414A0933514B09336149BA5F1 -:10A47000909322142596AFAD2597A093C210C35B8D -:10A48000DF4F0FB6F894DEBF0FBECDBFDF91CF9187 -:10A490001F910F91FF90EF90DF90CF90BF90AF9002 -:10A4A0009F908F907F906F905F904F903F902F90F4 -:10A4B0000895CF93DF930E940A2A8BE2E5E2F4E14C -:10A4C000DF011D928A95E9F783E2EFE9F0E1DF0110 -:10A4D0001D928A95E9F71092241410922314109279 -:10A4E000A7131092CC1381E08093221410929E1037 -:10A4F0000E948B2981B390919D109170C92FB0E07B -:10A50000DB2F96E0CC0FDD1F9A95E1F78F7BC82BF0 -:10A51000C1BBEBE0F1E0908180919D108270880FCB -:10A52000880F977F892B808381B390919D1092FB38 -:10A53000992790F98E7F892B81BB80919C1080FD9B -:10A540008F9A80FF8F98808190919C1092708D7F60 -:10A55000892B808321B390919C109470892F90E077 -:10A5600095958795922F9D7F892B81BBDF91CF9108 -:10A570000895CF93DF93C62F813009F48EC038F150 -:10A58000823009F069C10E943E408CE60E94D93FAA -:10A590000E941B408C2F0E94D93F0E941B400E94AA -:10A5A0003E408DE60E94D93F0E941B4062E070E071 -:10A5B00080E090E00E941139559A5D9A62E070E067 -:10A5C00080E090E00E941139D8E0C0E002C10E9412 -:10A5D000A5418CE60E9435410E947F418C2F0E944C -:10A5E00035410E947F410E94A5418DE60E94354180 -:10A5F0000E947F4162E070E080E090E00E941139AB -:10A60000399A419A62E070E080E090E00E9411394E -:10A61000D8E0C0E0439865E070E080E090E00E9400 -:10A620001139439ACC0F65E070E080E090E00E9421 -:10A63000113939983199C16065E070E080E090E0AF -:10A640000E941139D15031F74398399A419A62E00A -:10A6500070E080E090E00E941139439A65E070E07C -:10A6600080E090E00E941139439862E070E080E061 -:10A6700090E00E941139399A419A62E070E080E0DE -:10A6800090E00E941139439862E070E080E090E031 -:10A690000E9411390E946741E0C00E9403418CE68C -:10A6A0000E9453400E94CB408C2F0E9453400E9436 -:10A6B000CB400E9403418DE60E9453400E94CB4054 -:10A6C00062E070E080E090E00E9411398091010129 -:10A6D0008460809301018091020184608093020173 -:10A6E00062E070E080E090E00E941139D8E0C0E0C4 -:10A6F000809102018F778093020165E070E080E035 -:10A7000090E00E94113980910201806880930201DB -:10A71000CC0F65E070E080E090E00E9411398091FC -:10A7200001018B7F809301018091000182FDC16056 -:10A7300065E070E080E090E00E941139D150C1F6F0 -:10A74000809102018F7780930201809101018460E2 -:10A75000809301018091020184608093020162E094 -:10A7600070E080E090E00E941139809102018068E1 -:10A770008093020165E070E080E090E00E94113972 -:10A78000809102018F778093020162E070E080E0A7 -:10A7900090E00E9411398091010184608093010151 -:10A7A0008091020184608093020162E070E080E0A9 -:10A7B00090E00E941139809102018F77809302010D -:10A7C00062E070E080E090E00E9411390E949C40BD -:10A7D00044C05E9865E070E080E090E00E9411392E -:10A7E0005E9ACC0F65E070E080E090E00E94113945 -:10A7F00055984D99C16065E070E080E090E00E945E -:10A800001139D15031F75E98559A5D9A62E070E047 -:10A8100080E090E00E9411395E9A65E070E080E08F -:10A8200090E00E9411395E9862E070E080E090E074 -:10A830000E941139559A5D9A62E070E080E090E0E4 -:10A840000E9411395E9862E070E080E090E00E9422 -:10A8500011390E94064001C0C0E08C2FDF91CF91DA -:10A860000895EEEAF4E124813581DC010E94A073B1 -:10A87000A1E0B1E02C9128602C93A0EAB0E02C91EB -:10A8800020682C93DC01CB012AE0B695A79597951B -:10A8900087952A95D1F79093A9008093A800868187 -:10A8A00080618093A1000895CF93DF9321E5829F7B -:10A8B000C0011124EC01D55F40E550E0BE018EE5FA -:10A8C00094E10E947D5D892B59F410925E1440E55D -:10A8D00050E06EE574E1CE010E943A5D80E001C077 -:10A8E00081E0DF91CF91089590E0FC013197E23152 -:10A8F000F10508F04EC08827E654FF4F8F4F0C94A7 -:10A900009873809180008F7703C0809180008F7D45 -:10A9100080938000089580918000877FF9CF84B56F -:10A920008F7702C084B58F7D84BD08958091B0007B -:10A930008F7703C08091B0008F7D8093B000089521 -:10A94000809190008F7707C0809190008F7D03C029 -:10A9500080919000877F8093900008958091A0005F -:10A960008F7707C08091A0008F7D03C08091A000E9 -:10A97000877F8093A0000895809120018F7707C082 -:10A98000809120018F7D03C080912001877F80937B -:10A99000200108951F93CF93DF93282F30E0F90112 -:10A9A000EA57F54F8491F901E05CF54FD491F90134 -:10A9B000E650F64FC491CC23B9F0162F811194DFE5 -:10A9C000EC2FF0E0EE0FFF1FE052F64FA591B4918F -:10A9D0009FB7F894111104C08C91D095D82302C070 -:10A9E000EC91DE2BDC939FBFDF91CF911F910895F7 -:10A9F000863308F0865390917B00282F2870977F2C -:10AA0000922B90937B008770806480937C00809170 -:10AA10007A00806480937A0080917A0086FDFCCF72 -:10AA2000809178002091790090E0922B08951F92F8 -:10AA30000F920FB60F9211240BB60F922F933F93E4 -:10AA40004F935F936F937F938F939F93AF93BF9336 -:10AA5000EF93FF938091591490915A14909325018C -:10AA600080932401E0915714F0915814309709F025 -:10AA70001995FF91EF91BF91AF919F918F917F9128 -:10AA80006F915F914F913F912F910F900BBE0F905F -:10AA90000FBE0F901F9018951F920F920FB60F9236 -:10AAA00011240BB60F922F933F934F935F936F93A5 -:10AAB0007F938F939F93AF93BF93EF93FF93809177 -:10AAC000B0149091B1149093A5008093A400E091EC -:10AAD000AE14F091AF14309709F01995FF91EF91F2 -:10AAE000BF91AF919F918F917F916F915F914F91A6 -:10AAF0003F912F910F900BBE0F900FBE0F901F90A4 -:10AB00001895E2E7F0E080818E7F808308951F92A0 -:10AB10000F920FB60F9211248F939F93809108028A -:10AB20009091090290939500809394009F918F914A -:10AB30000F900FBE0F901F9018951F920F920FB697 -:10AB40000F9211240BB60F922F933F934F935F9365 -:10AB50006F937F938F939F93AF93BF93EF93FF93E5 -:10AB600080915214909153148093B200E09150144C -:10AB7000F0915114309709F01995FF91EF91BF9121 -:10AB8000AF919F918F917F916F915F914F913F9185 -:10AB90002F910F900BBE0F900FBE0F901F90189526 -:10ABA0004F925F926F927F92AF92BF92CF92DF925D -:10ABB000EF92FF920F931F93CF93DF936C01FB01F2 -:10ABC0005A01309729F08081D601A80FB11D01C02C -:10ABD000DC018C91ED018D3229F4229611968C9135 -:10ABE00001E008C08B3211F0219603C02296119625 -:10ABF0008C9100E0512C612C10E020E030E0A901A4 -:10AC00007E0160ED762E780E89E08715D8F063948A -:10AC1000A8E0A61598F051101150A5E0B0E00E94F0 -:10AC2000AF73DC01CB01880F991FAA1FBB1F9C01CA -:10AC3000AD01270D311D411D511D0BC0511009C023 -:10AC40001F5F07C0BEEF7B1208C0511006C055241D -:10AC500053942196D7018C91D3CF662009F450C02C -:10AC60007F01CA01B9010E94CC702B013C0120E098 -:10AC700030E0A9010E942C70882349F11F3F64F441 -:10AC80002AE037ED43E25CE3C301B2010E94857222 -:10AC90002B013C011E5FF2CF1F3F59F42DEC3CEC21 -:10ACA0004CEC5DE3C301B2010E9485722B013C01B3 -:10ACB0000EC0112361F020E030E040E251E4C30116 -:10ACC000B2010E9485722B013C011150F2CF00238A -:10ACD00051F077FA709477F87094F50140825182C0 -:10ACE0006282738206C0D5014D925D926D927C9214 -:10ACF0001397CC19DD09C150F701C08381E001C071 -:10AD000080E0DF91CF911F910F91FF90EF90DF9046 -:10AD1000CF90BF90AF907F906F905F904F900895CD -:10AD20008091B51484FD25C09FB7F8948091B51427 -:10AD300080618093B5149FBF0E94D02C20D7809152 -:10AD40000715982F9C7021F490910815913089F483 -:10AD50009FB7843029F4F89480910515806204C06F -:10AD6000F894809105158860809305159FBF0C9419 -:10AD70000A2A08952F923F924F925F926F927F928C -:10AD80008F929F92AF92BF92CF92DF92EF92FF92FB -:10AD90000F931F93CF93DF93CDB7DEB7C756D1097B -:10ADA0000FB6F894DEBF0FBECDBF66968FAF669725 -:10ADB0001B016B962CAF3DAF4EAF5FAF6B97A89664 -:10ADC0000FAFA8978091F41485FF51C03B0107EBAA -:10ADD00014E17B012CE0E20EF11CDD24D394D301BD -:10ADE0008D909D90AD90BD903D0120E030E0A90197 -:10ADF000C501B4010E944A72181654F0F80124A14A -:10AE000035A146A157A1C501B4010E942C7087FD50 -:10AE1000D092091580910915882319F180910715A1 -:10AE2000883061F07DDF9FB7F894809105158560CB -:10AE3000809305159FBF0E945A3919C09FB7F89497 -:10AE40008091B51488608093B5149FBF0E945A39D1 -:10AE50008091061581110BC0809107158111F6CFE5 -:10AE6000E1CF0C5F1F4FE614F70409F0B8CF8091D3 -:10AE70000715823009F47CC3F10180819181A281A0 -:10AE8000B38165968CAF9DAFAEAFBFAF6597848140 -:10AE90009581A681B78161968CAF9DAFAEAFBFAFF4 -:10AEA000619780859185A285B3852D968CAF9DAFE6 -:10AEB000AEAFBFAF2D97AE01475B5F4FBE01635B87 -:10AEC0007F4FCE018F5A9F4F0E94BD412D96ECAC13 -:10AED000FDAC0EAD1FAD2D9761962CAD3DAD4EADC9 -:10AEE0005FAD619765966CAD7DAD8EAD9FAD65979D -:10AEF000DE0191964D01FE017D965F0118976D016F -:10AF00000E941143E9A0FAA00BA11CA12D8D3E8D3A -:10AF10004F8D58A1698D7A8D8B8D9C8D0E94EB454C -:10AF2000882309F421C36091810D7091820D809175 -:10AF3000830D9091840D0E94CE702B013C01609195 -:10AF40007D0D70917E0D80917F0D9091800D0E94FE -:10AF5000CE706F966CAF7DAF8EAF9FAF6F976091E5 -:10AF6000790D70917A0D80917B0D90917C0D0E94EE -:10AF7000CE70FE01BD964F019E01275D3F4F5901E6 -:10AF8000DE0195966D01830172016F962CAD3DAD8A -:10AF90004EAD5FAD6F970E945A45A401B501C60141 -:10AFA0000E9468420E9459326696BFAD6697BB23E5 -:10AFB00019F0B13041F0DDC0E1E0F0E06796FFAF9D -:10AFC000EEAF6797DAC020E030E048EC52E46B96D1 -:10AFD0006CAD7DAD8EAD9FAD6B970E944A72181619 -:10AFE00054F480E090E0A8ECB2E46B968CAF9DAF97 -:10AFF000AEAFBFAF6B972DA13EA14FA158A5D10118 -:10B000006D917D918D919C910E94526F2B013C011D -:10B0100029A53AA54BA55CA5F101648175818681BE -:10B0200097810E94526F4B015C012DA53EA54FA553 -:10B0300058A9D10118966D917D918D919C911B9786 -:10B040000E94526F6B017C01A3019201C301B20106 -:10B050000E9485722B013C01A5019401C501B40138 -:10B060000E9485729B01AC01C301B2010E94536F23 -:10B070004B015C01A7019601C701B6010E948572D0 -:10B080009B01AC01C501B4010E94536F0E94F27292 -:10B0900020E030E040EF51E40E9485726B962CADC9 -:10B0A0003DAD4EAD5FAD6B970E9433700E94A070B6 -:10B0B00067967FAF6EAF67976A30710530F42AE00C -:10B0C00030E067963FAF2EAF679720E030E040E971 -:10B0D00050E46B966CAD7DAD8EAD9FAD6B970E94CD -:10B0E000857220E030E048EC52E40E94337020E0AA -:10B0F00030E040E05FE30E94536F20E030E040E743 -:10B1000052E40E94857220E030E040E752E40E9461 -:10B1100085726B017C016093CF147093D01480937F -:10B12000D1149093D2146093D3147093D414809359 -:10B13000D5149093D61420E030E442E955E40E94FF -:10B140004A7287FF09C0C092D714D092D814E092F7 -:10B15000D914F092DA1411C080E090E4A2E9B5E4C9 -:10B160008093D7149093D814A093D914B093DA1481 -:10B1700004C067961FAE1EAE67976796AEADBFADB3 -:10B180006797BD0180E090E00E94CC706B017C016C -:10B190002DA13EA14FA158A5F1016081718182814D -:10B1A00093810E94526FA70196010E9433706F969F -:10B1B0006CAF7DAF8EAF9FAF6F9729A53AA54BA51A -:10B1C0005CA5D10114966D917D918D919C911797FD -:10B1D0000E94526FA70196010E943370A3966CAF34 -:10B1E0007DAF8EAF9FAFA3972DA53EA54FA558A9C4 -:10B1F000F10160857185828593850E94526FA70158 -:10B2000096010E943370A7966CAF7DAF8EAF9FAF53 -:10B21000A79722242394312C67962EAD3FAD6797D4 -:10B220002215330508F49EC1B101032C000C880BD4 -:10B23000990B0E94CE706B017C019B01AC016F9653 -:10B240006CAD7DAD8EAD9FAD6F970E9485729B01F9 -:10B25000AC016DA17EA18FA198A50E94536F6D874F -:10B260007E878F87988BA7019601A3966CAD7DADE5 -:10B270008EAD9FADA3970E9485729B01AC0169A51D -:10B280007AA58BA59CA50E94536F698B7A8B8B8BBB -:10B290009C8BA7019601A7966CAD7DAD8EAD9FAD41 -:10B2A000A7970E9485729B01AC016DA57EA58FA515 -:10B2B00098A90E94536F6D8B7E8B8F8B988FAE01F8 -:10B2C0004B5E5F4FBE016F5E7F4FCE010D960E94B9 -:10B2D000BD41ED88FE880F89188D29893A894B89EF -:10B2E0005C896D857E858F859889DE01DD964D01AF -:10B2F000FE01EF5BFF4F5F0118966D010E94114345 -:10B300002196ECACFDAC0EAD1FAD219725962CAD72 -:10B310003DAD4EAD5FAD259729966CAD7DAD8EAD43 -:10B320009FAD29970E94EB45882309F417C16D85CD -:10B330007E858F8598896093850D7093860D8093A7 -:10B34000870D9093880D29893A894B895C892093D0 -:10B35000890D30938A0D40938B0D50938C0DED88A1 -:10B36000FE880F89188DE0928D0DF0928E0D00935E -:10B370008F0D1093900DFE01F1964F01DE01D596D1 -:10B380005D0138966F010E941143C9A8DAA8EBA8A5 -:10B39000FCA88DA89EA8AFA8B8AC20916D0D3091E7 -:10B3A0006E0D40916F0D5091700D69AD7AAD8BAD02 -:10B3B0009CAD0E94526F24EE38E34EE553E40E94A8 -:10B3C00085720E949B70072E000C880B990B0E94BF -:10B3D000CE7069837A838B839C832091710D309129 -:10B3E000720D4091730D5091740DC501B4010E940E -:10B3F000526F24EE38E34EE553E40E9485720E94BA -:10B400009B70072E000C880B990B0E94CE706D83E9 -:10B410007E838F8398872091750D3091760D4091B2 -:10B42000770D5091780DC701B6010E94526F20E050 -:10B4300030E044EB52E40E94536F24EE38E34EE5D3 -:10B4400053E40E9485720E949B70072E000C880BAB -:10B45000990B0E94CE7069877A878B879C870E94A0 -:10B460005A3980910615811181C09091A513809160 -:10B470006510981303C00E94A233F1CF89809A808F -:10B48000AB80BC80C501B4010E949B706093790DB4 -:10B4900070937A0D80937B0D90937C0DCD80DE8030 -:10B4A000EF80F884C701B6010E949B7060937D0D08 -:10B4B00070937E0D80937F0D9093800D49845A8404 -:10B4C0006B847C84C301B2010E949B706093810DE8 -:10B4D0007093820D8093830D9093840D2091B71407 -:10B4E0003091B8144091B9145091BA14C501B40107 -:10B4F0000E94337069837A838B839C832091BB1471 -:10B500003091BC144091BD145091BE14C701B601D6 -:10B510000E9433706D837E838F8398872091BF1440 -:10B520003091C0144091C1145091C214C301B201B2 -:10B530000E94337069877A878B879C87A8962FAD86 -:10B54000A8976B964CAD5DAD6EAD7FAD6B97CE01A0 -:10B5500001960E94D23531E03093950DFFEF2F1AFE -:10B560003F0A5ACE80E004C083E302C082E000C0FC -:10B57000C959DF4F0FB6F894DEBF0FBECDBFDF91C4 -:10B58000CF911F910F91FF90EF90DF90CF90BF90E0 -:10B59000AF909F908F907F906F905F904F903F9073 -:10B5A0002F9008951F920F920FB60F9211240BB691 -:10B5B0000F922F933F934F935F936F937F938F934C -:10B5C0009F93AF93BF93EF93FF93809107158130C3 -:10B5D00069F080910515811109C0A2DB9FB7F8942D -:10B5E000809105158360809305159FBFFF91EF91B2 -:10B5F000BF91AF919F918F917F916F915F914F918B -:10B600003F912F910F900BBE0F900FBE0F901F9088 -:10B61000189589B180719091F41496FD02C090E163 -:10B620008927882319F011F087E0089580E00895B4 -:10B630002F923F924F925F926F927F928F929F9242 -:10B64000AF92BF92CF92DF92EF92FF920F931F9330 -:10B65000CF93DF93CDB7DEB768970FB6F894DEBF10 -:10B660000FBECDBF909106159111A6C1782E27EB84 -:10B6700034E1398B288B5901CE010D964C0100E045 -:10B6800010E0C12CD12C7601A72DB0E0BD8BAC8B86 -:10B69000802F002321F0013021F094E003C091E0DD -:10B6A00001C092E0F40191934F012C893D8902C0C1 -:10B6B000359527958A95E2F720FF1BC020E030E002 -:10B6C00040EC5FEBD50194966D917D918D919C91AD -:10B6D00097970E948572362E472E582E692EA70105 -:10B6E00096010E942C7087FD04C0C32CD42CE52C3D -:10B6F000F62C0F5F1F4FB4E0AB0EB11C03301105E9 -:10B7000039F68090FA149090FB14A090FC14B0903D -:10B71000FD1484E0682E01E06AE075E1CE01019637 -:10B720000E94D4488091F514E82FF0E0FF8BEE8B57 -:10B73000FE01319626E035E13B8B2A8B1901CE01C3 -:10B740000D962C0180E090E0188E10E0B701A60164 -:10B7500070582C893D89082E02C0359527950A948A -:10B76000E2F720FF25C0A88DAF5FA88FD101149606 -:10B770001D921D921D921C9217972E893F89082EAB -:10B7800002C0359527950A94E2F720FF03C00023F5 -:10B7900019F007C0002329F0C082D182E282F3822F -:10B7A00004C04083518362837383D2012C91122B96 -:10B7B0000196BFEF4B1A5B0A349624E0220E311C2F -:10B7C0008330910531F6388D632F70E080E090E092 -:10B7D0000E94CC700E94F2729B01AC01C501B401C1 -:10B7E0000E9485726B017C01109323150E946334C3 -:10B7F00020E0B701A601CE0101960E94D2350E9439 -:10B8000061490E94A42C0023E1F003DFFE013D9674 -:10B8100020E030E090E06191462F412359F0AC01E7 -:10B82000022E02C0559547950A94E2F740FF02C0E8 -:10B83000609516232F5F3F4F2330310561F710933A -:10B8400023150E9461498091B5148473B1F08091F1 -:10B85000B514807321F064DA0E945A39ADC0011129 -:10B86000A6C0D7DE8721B9F79FB7F8948091B514A9 -:10B870008B7F8093B5149FBF04C0812F877009F020 -:10B88000C2CF0E9459520E9474348091FE1490914C -:10B89000FF140E944F3981E00827C9F020E030E012 -:10B8A00040EA50E4609100157091011580910215F5 -:10B8B000909103150E9485726B017C018090F614B3 -:10B8C0009090F714A090F814B090F91410C0C090A4 -:10B8D0000015D0900115E0900215F09003158090AE -:10B8E000FA149090FB14A090FC14B090FD146A948C -:10B8F000611012CFE090F514F12C8090001590901B -:10B900000115A0900215B09003152401350177FAB6 -:10B91000709477F8709400E010E08C899D89002E77 -:10B9200002C0959587950A94E2F780FF2CC0C70165 -:10B93000002E02C0959587950A94E2F7A889B989E7 -:10B9400080FF11C094962D913D914D915C919797F8 -:10B95000C501B4010E94536FE889F98920813181C2 -:10B960004281538106C02D913D914D915C91C3015F -:10B97000B2010E9485720E945572EA89FB89648334 -:10B980007583868397830F5F1F4F2A893B892C5FBE -:10B990003F4F3B8B2A8B888999890496998B888B9A -:10B9A0000330110509F0B9CF0E94633405C08091BE -:10B9B000B51482FF59CF4FCF68960FB6F894DEBF0B -:10B9C0000FBECDBFDF91CF911F910F91FF90EF90F0 -:10B9D000DF90CF90BF90AF909F908F907F906F90AF -:10B9E0005F904F903F902F900895EBE6F0E08081BC -:10B9F0008F7E8083E8E6F0E080818E7F80830895EB -:10BA000054985C9A8091F41483FF0BC080916B0072 -:10BA1000806180936B0080916800816080936800F2 -:10BA20000895E3CF6AE075E184E795E10C94D4488A -:10BA3000F894F999FECF92BD81BD81E08FBB80B5AE -:10BA40008627482F082E000C550B262F30E0242384 -:10BA50003523232B39F06F3F19F060BD84E006C019 -:10BA600084E104C0882321F060BD84E28FBBF99A91 -:10BA7000789408959F92AF92BF92CF92DF92EF9207 -:10BA8000FF920F931F93CF93DF935C018A017B0199 -:10BA9000E40EF51EEB01912C6C01C61AD70ACE01FB -:10BAA0008C0D9D1DCE15DF0581F0911008C0292D4C -:10BAB000990C330B232F221F2227221F01C021E0C4 -:10BAC0006991922E960EB4DFEACF692DC501800FE1 -:10BAD000911FDF91CF911F910F91FF90EF90DF9019 -:10BAE000CF90BF90AF909F90A3CFF999FECF92BD1A -:10BAF00081BD81E08FBB80B508959F92AF92BF92C8 -:10BB0000CF92DF92EF92FF920F931F93CF93DF9329 -:10BB10005B018A017C01E40EF51EEC01912C6B01A6 -:10BB2000C81AD90AC6018C0F9D1FCE15DF0581F0FA -:10BB3000DCDF911008C0292D990C330B232F221F15 -:10BB40002227221F01C021E0982E920E8993EACF6E -:10BB5000C501800F911FC9DF21E030E0981611F078 -:10BB600020E030E0C901DF91CF911F910F91FF904C -:10BB7000EF90DF90CF90BF90AF909F9008955C982A -:10BB80000895CF93DF93CDB7DEB7CC56D1090FB66A -:10BB9000F894DEBF0FBECDBF8091C000826080935D -:10BBA000C0001092C50080E18093C4009091C10054 -:10BBB00090619093C1009091C10098609093C100F2 -:10BBC0009091C10090689093C1009091C8009260DC -:10BBD0009093C8001092CD008093CC009091C90042 -:10BBE00090619093C9009091C90098609093C900AA -:10BBF0009091C90090689093C9009091D000926094 -:10BC00009093D0001092D5008093D4009091D100F1 -:10BC100090619093D1009091D10098609093D10061 -:10BC20009091D10090689093D100909130019260F2 -:10BC3000909330011092350180933401809131014D -:10BC4000806180933101809131018860809331015E -:10BC5000809131018068809331010E945932869A27 -:10BC6000879A829A80910A01886080930A01809164 -:10BC70000A01826080930A018091070181608093AC -:10BC80000701809A819A579A809107018061809379 -:10BC90000701809107018860809307018091070167 -:10BCA000846080930701809108018F7E8093080152 -:10BCB00080910801886080930801809108018B7F42 -:10BCC000809308018091F41482FF08C08A9A8091C1 -:10BCD00008018160809308015F9A07C08A9880916B -:10BCE00008018E7F809308015F98809181008F7E8C -:10BCF0008093810080918100886080938100809191 -:10BD000080008C7F80938000809180008F70809372 -:10BD1000800080916E00887F80936E0014BC15BCFB -:10BD200080916E00816080936E0054985C9A80913F -:10BD30006D00806180936D008091680084608093C5 -:10BD400068008AE090E00E944F390E948C3D399A49 -:10BD50003B9A419A439A809101018460809301014A -:10BD600080910101806880930101809102018460CB -:10BD70008093020180910201806880930201559AAC -:10BD8000569A5D9A5E9A0E94854605E91EE081E01A -:10BD900090E07C012FEFE21AF20AA7DED8018D9322 -:10BDA0008D01C7018B3C9105A1F755E1C52E5EE0E1 -:10BDB000D52E87010F5F1F4FC70197DEF6018193D4 -:10BDC0006F0178010B34F1E01F0799F74BE9E42E7E -:10BDD0004DE0F42E68012FEFC21AD20AC80185DEA9 -:10BDE000D7018D937D018601B5ECCB16B1E0DB0662 -:10BDF00089F720E030E04AE754E464E071E080E055 -:10BE000090E00E94303E84E893E06FDE80935F0D07 -:10BE100085E893E06ADE8093600D01E61DE088E925 -:10BE200093E07C01EFEFEE1AFE0A5FDED8018D93FE -:10BE30008D01C701BCE9EB16B3E0FB0691F705E6FF -:10BE40001DE08EE893E07C01EFEFEE1AFE0A4DDE76 -:10BE5000D8018D938D01C701B2E9EB16B3E0FB0663 -:10BE600091F709E61DE082E89CE07C01EFEFEE1A15 -:10BE7000FE0A3BDED8018D938D01C701B6E8EB16B3 -:10BE8000BCE0FB0691F7C090690DD0906A0DE09080 -:10BE90006B0DF0906C0D20E030E044EB53E4C701F3 -:10BEA000B6010E944A72181644F0A7019601C70114 -:10BEB000B6010E943A73882341F01092690D1092E6 -:10BEC0006A0D10926B0D10926C0D0AE11DE08AEE66 -:10BED00093E07C01EFEFEE1AFE0A07DED8018D93A6 -:10BEE0008D01C701B6EFEB16B3E0FB0691F7609149 -:10BEF000690D70916A0D80916B0D90916C0DFE0132 -:10BF000031967F018F0124E045E00E94D76CFF92BB -:10BF1000EF928BE093E09F938F930E94AF330E9448 -:10BF2000873D0E94843D0E94733D0E94943F0E9481 -:10BF3000FF3C80917A00876880937A009B98A39A4F -:10BF40008FE08093910D0E949E3E8AEB92E09F933A -:10BF50008F938DE193E09F938F930E94AF3389EC91 -:10BF600092E09F938F9380E393E09F938F930E943F -:10BF7000AF3380ED92E09F938F9380E493E09F93A3 -:10BF80008F930E94AF338091600D8F9380915F0DEE -:10BF90008F938FE493E09F938F930E94AF3380E65B -:10BFA00093E00E9458348EE1E6E0F5E1DF011D9256 -:10BFB0008A95E9F781E08093061578949091F414BE -:10BFC0000FB6F894DEBF0FBECDBF94FD809307156A -:10BFD0009E01235C3F4F6F963FAF2EAF6F971E01C0 -:10BFE00035E1230E311CCE018996A1969FAF8EAF0D -:10BFF000A197DE011196A396BFAFAEAFA397809134 -:10C00000E00F8093DF0F8FE3EDE5F5E1DF011D9297 -:10C010008A95E9F760E875E180E00E94452E81117C -:10C0200003C087E00E94FF310C9A549A549A0E94F0 -:10C03000D02C549AA4DDE4DC54985C9A0E947434A9 -:10C040000E9459520E946334EDDC10920615109242 -:10C05000B5141092051510920815109209158091CB -:10C060000715813099F480ED99E00E940A348AEA3C -:10C0700099E00E940A348DE599E00E940A34A49662 -:10C080001FAEA497A5961FAEA5973DC010920715A9 -:10C09000F6CF8091060185FD20C00E948155109247 -:10C0A000960D809102018F7D809302018091690D30 -:10C0B00090916A0DA0916B0DB0916C0DB05880936A -:10C0C000861090938710A0938810B093891060E039 -:10C0D00070E084EB92E40E94F03E80918210909197 -:10C0E0008310A0918410B0918510892B8A2B8B2B03 -:10C0F00051F41092960DE4E6F3E0FF93EF930E9463 -:10C10000AF330F900F908091960D8823E1F0C1CF4F -:10C11000E92FF0E0E15AF04F80819F5F903809F4F9 -:10C1200090E09093DF0F8F3F09F477C58A3091F04C -:10C130008D3081F0A596BFADA597BB2309F439C515 -:10C14000893209F42FC59091DF0F8091E00F981389 -:10C15000DFCF63C50EE514E1A4963FADA497E32FAE -:10C16000F0E0E25AFB4E10820E945A398091061587 -:10C17000811111C58AE0D1011D928A95E9F780915C -:10C180005E14843209F076C481E08DAF80915F1433 -:10C19000833481F034F4882351F0843209F06FC283 -:10C1A00009C0873439F0883509F069C203C088E6D0 -:10C1B00096E054C39091601491114EC4833409F4F5 -:10C1C0002DC21CF4843241F04DC4873409F46AC195 -:10C1D000883509F440C246C480910715887109F07A -:10C1E0003DC484E696E00E940A348091E7140E94E0 -:10C1F000FC338BE496E00E940A348091EA140E949A -:10C20000FC338DE296E00E940A348091E8140E948B -:10C21000FC3384E196E00E940A348091E8140E9485 -:10C2200007348DE096E00E940A348091E9140E9460 -:10C23000FC3385EF95E00E940A348091E9140E9456 -:10C2400007348EEE95E00E940A348091F41482FB4C -:10C25000882780F90E94FC338DEC95E00E940A3417 -:10C260008091F41486FB882780F90E94FC338DEAC4 -:10C2700095E00E940A348091F414881F8827881F53 -:10C280000E94FC338DE895E00E940A348091EB1403 -:10C290000E94FC3387E795E00E940A348091EB14FA -:10C2A0000E9407348FE695E00E940A346091EC14F6 -:10C2B0007091ED148091EE149091EF140E94DE3392 -:10C2C0008FE495E00E940A346091F0147091F114AB -:10C2D0008091F2149091F3140E94DE3384E395E090 -:10C2E0000E940A348091F41481700E94FC3387E12B -:10C2F00095E00E940A348091F41485FB882780F928 -:10C300000E94FC338CEF94E00E940A348091F41474 -:10C3100083FB882780F90E94FC3381EE94E00E9421 -:10C320000A348091F414829581700E94FC3385EC6C -:10C3300094E00E940A348091F5140E94FC338BEA49 -:10C3400094E00E940A348091F5140E94073483EA35 -:10C3500094E00E940A346091F6147091F714809171 -:10C36000F8149091F9140E94DE3386E894E00E945C -:10C370000A346091FA147091FB148091FC1490912E -:10C38000FD140E94DE3389E694E00E940A34809115 -:10C39000FE140E94FC338AE494E00E940A34609107 -:10C3A00000157091011580910215909103150E945E -:10C3B000DE3381E394E00E940A3410E034E6D32EA9 -:10C3C00027EBE22E24E1F22E00E08FE294E00E94BF -:10C3D0000A34802F8D0D0E94FC338DE294E00E9480 -:10C3E0000A34123091F01330E1F0113031F0F701DE -:10C3F00060817181828193811CC0D7011C966D91EF -:10C400007D918D919C911F9714C020E030E041E612 -:10C4100055E4F701608D718D828D938D0E9433708C -:10C4200008C0F70184A195A1A6A1B7A1BC01CD01C7 -:10C4300090580E94DE338AE294E00E940A34013070 -:10C4400029F0023031F088E294E005C086E294E001 -:10C4500002C084E294E00E940A34123051F013309A -:10C4600059F0113019F08AE194E008C088E094E0B6 -:10C4700005C087EF93E002C087EE93E00E940A3484 -:10C4800083EE93E00E940A340F5FF4E0EF0EF11C9C -:10C49000033009F09ACF2AE0D20E1F5F3CE8D31296 -:10C4A0008FCFE0C281EE93E00E940A3480915D1547 -:10C4B000823091F038F4882361F08130A9F48BED5B -:10C4C00093E00CC0833069F0883071F481ED93E023 -:10C4D00005C08EED93E002C088ED93E00E940A341F -:10C4E0000CC085ED93E0FACF8CEC93E00E940A3407 -:10C4F00080915D1582500E94FC3389EC93E00E948C -:10C500000A34809163158A5C0E94FC338091611526 -:10C51000813049F028F0823051F48AEB93E005C075 -:10C5200084EC93E002C08FEB93E00E940A34809188 -:10C530005F15811103C085EB93E002C080EB93E0AF -:10C540000E940A3480916015811103C08BEA93E048 -:10C5500002C086EA93E00E940A3480915E15813021 -:10C5600019F481EA93E002C08CE993E00E940A3456 -:10C5700080916415813049F028F0823051F480E9CF -:10C5800093E005C088E993E002C084E993E00E944B -:10C590000A3480916615813031F040F0823051F4D8 -:10C5A00088E893E005C08CE893E002C084E893E05B -:10C5B0000E940A3480916515882329F0823039F46D -:10C5C0008CE793E002C080E893E00E940A3489E798 -:10C5D00093E00E940A3480916F150E94FC3386E735 -:10C5E00093E00E940A3460916B1570916C158091F4 -:10C5F0006D1590916E150E94E03383E793E00E94E1 -:10C600000A34609167157091681580916915909151 -:10C610006A150E94E0338FE693E020C180910715F0 -:10C62000823049F40E94905680ED99E00E940A34CD -:10C6300087E899E00BC0811111C282E08093071551 -:10C6400080ED99E00E940A3480E999E00E940A3462 -:10C650008DE599E003C180910715813009F002C290 -:10C6600080ED99E00E940A3488E999E00E940A343A -:10C670008DE599E00E940A3410920715F3C190915C -:10C680000715923008F0EAC1893409F4C5C034F4C2 -:10C69000833259F0883409F480C064C18E3409F4BF -:10C6A00036C1823509F4F9C05DC182E08DAF809159 -:10C6B00060148111D1C110E0BE016F5F7F4F812FE7 -:10C6C0000E94452E811104C087E00E94FF31CAC13B -:10C6D0008CE693E00E940A34163029F0173041F4BA -:10C6E00086E693E002C089E693E00E940A3404C023 -:10C6F00086E3810F0E94FC3384E693E00E940A34B3 -:10C70000CE0101967C0100E0D7016D917D918D9164 -:10C710009D917D010E94EE33023019F082E693E094 -:10C7200002C08EE593E00E940A340F5F033061F788 -:10C730001F5F183009F688E593E00E940A349CE8F0 -:10C74000E92E95E1F92E10E0F70161917191819147 -:10C7500091917F010E94EE33123019F086E593E04B -:10C7600002C082E593E00E940A341F5F133061F734 -:10C770008CE493E00E940A346091981570919915A9 -:10C7800080919A1590919B150E94EE3388E493E076 -:10C790000E940A340E94183465C18091F41484FF09 -:10C7A00059C184E08093071520D984E00E94185B6A -:10C7B00083E00E94185B0E945A398091061581110E -:10C7C00002C030D91DD98091061581114BC110923C -:10C7D00007150E940A2A10E0812F0E9454548111EB -:10C7E00002C087E013C080915E14882389F08EE533 -:10C7F00094E10E9458348EE594E10E9488058111ED -:10C8000005C08BEB98E00E940A3402C00E94FF3101 -:10C810001F5F123009F726C182E08DAF809160144E -:10C8200081111FC040E550E06EEA7BE08EE594E1A7 -:10C8300064D9892B49F410925E1440E550E06EE50E -:10C8400074E18EEA9BE016D988E393E00E940A34F3 -:10C850008EE594E10E94583484E393E00E940A3408 -:10C8600001C193E09DAF8D3309F0F6C083E0282F1E -:10C8700030E0F901E25AFB4E9081D901A55ABB4E36 -:10C880009C938F5F90819111F2CF8DAF40E550E086 -:10C890006EE574E18EEA9BE0ABC082E08DAF8091E3 -:10C8A0006014833509F0D8C083E08DAF80916114A6 -:10C8B000843509F0D1C084E08DAF809162148D334E -:10C8C00009F0CAC0809164148111C6C085E08DAFA3 -:10C8D00080916314843239F08A3239F0833209F05E -:10C8E000BBC082E003C081E001C08FEF0E94652ED3 -:10C8F00080ED99E00E940A3481E699E00E940A34B2 -:10C900008DE599E00E940A340E949056ABC082E007 -:10C910008DAF80916014811121C010E0812F0E94A1 -:10C920005454811104C087E00E94FF3113C081E399 -:10C9300093E00E940A34812F0E94FC338FE293E03F -:10C940000E940A348EE594E10E9458348CE293E010 -:10C950000E940A341F5F123009F784C091117EC013 -:10C9600011E001C010E0AE01475D5F4FBE01635CA6 -:10C970007F4F8EE594E10E94D055811102C082E084 -:10C9800076C0EDAD81E08E0F8DAFF0E0E25AFB4E48 -:10C9900090819D3309F060C0112361F1482F50E070 -:10C9A000282F30E0D901A25ABB4E9C91241B350B95 -:10C9B000F901E25AFB4E90838F5F9C919111F0CF69 -:10C9C0008DAF8EE594E10E948805811149C069A56B -:10C9D0007AA58BA59CA50E9433730E94A070F1E5F7 -:10C9E0006F9FC001112440E550E06EE574E1955F52 -:10C9F00041D838C0AE014F5F5F4FBE01635C7F4FCF -:10CA00008EE594E10E94D055882309F4B8CFEDADAE -:10CA1000F0E0E25AFB4E808181111EC089A49AA4E5 -:10CA2000ABA4BCA420E030E04FE753E4C501B4015F -:10CA30000E944A72181684F0C980DA80EB80FC806C -:10CA4000C501B4010E94A070862FB701A6010E9403 -:10CA50003A2D06C085E00BC083E009C088E007C01E -:10CA6000811105C08BEB98E00E940A3494C00E94AB -:10CA7000FF3191C08332D1F43F922F928CE793E043 -:10CA80009F938F931F930F930E94F973F10101906D -:10CA90000020E9F7BF0162197309625A7B4E0F90BB -:10CAA0000F900F900F900F900F900BC0873439F0BC -:10CAB0008D3429F0803519F0833509F06CC06EE5AE -:10CAC00074E1DB018C91803511F0833509F58EEA34 -:10CAD0009CE00E94C4738D89882391F03F922F922D -:10CAE00084E893E09F938F9382EE9CE09F938F93D3 -:10CAF0000E94CB730F900F900F900F900F900F909C -:10CB000082E3EEE5F4E1DF011D928A95E9F743C087 -:10CB10008091AE04843148F088E893E09F938F932E -:10CB20000E94AF330F900F9036C00091AC04B6E670 -:10CB3000B09F80011124C8018B549B4F0E94C47385 -:10CB40008D89882391F03F922F9284E893E09F9300 -:10CB50008F9307511B4F1F930F930E94CB730F901E -:10CB60000F900F900F900F900F9082E3EEE5F4E19D -:10CB7000DF011D928A95E9F78091AC04833120F49E -:10CB80008F5F8093AC0402C01092AC048091AE041D -:10CB90008F5F8093AE04A4961FAEA497A5961FAE98 -:10CBA000A5973BC0B13009F0CECAA5961FAEA59798 -:10CBB000CACA813208F4C7CA8F3209F4C4CA88329B -:10CBC00011F18B3329F1A496EFADA497EF3438F02F -:10CBD0008BE00E94FF31A4961FAEA497B4CAA4961E -:10CBE000FFADA4972F2F30E04F2F4F5F9FE9980F95 -:10CBF000F901E25AFB4E9A3108F480528083A496E0 -:10CC00004FAFA497A0CA21E0A5962FAFA5979BCAC6 -:10CC100032E0A5963FAFA59796CA8091AE0C8823C7 -:10CC200099F08EEA9CE00E9488058093E00C62EE09 -:10CC30007CE00E94A33C81E08093E10C82E3AEEAB9 -:10CC4000BCE01D928A95E9F78091920D81113FC059 -:10CC50008091AE048823D9F18091970D8823B9F192 -:10CC60008091980D882399F10091AD04B6E6B09FAC -:10CC7000800111240B541B4FC8010E948805F80144 -:10CC800082ABF090AD04F6E6FF9D80011124B8015F -:10CC900067517B4F0B541B4FD801D2968C910E9449 -:10CCA000A33C81E0F80183AB82E3D8011D928A9511 -:10CCB000E9F7B2E1BF1520F0F394F092AD0402C0A1 -:10CCC0001092AD048091AE0481508093AE040E9416 -:10CCD000A2330E945A3980910615811190C9809122 -:10CCE000E10C882369F082EE9CE00E94583482E3D4 -:10CCF000E2EEFCE0DF011D928A95E9F71092E10C6B -:10CD000080910715882309F4E6C08091930D88234C -:10CD100009F41AC11092930D6D961CAE1DAE1EAE95 -:10CD20001FAE6D9769961CAE1DAE1EAE1FAE699705 -:10CD300065961CAE1DAE1EAE1FAE659784E16F9664 -:10CD4000EEADFFAD6F97282F11922A95E9F7A196C6 -:10CD5000AEADBFADA197E82F1D92EA95E9F7D101DD -:10CD6000E82F1D92EA95E9F7A396AEADBFADA39764 -:10CD70001D928A95E9F780E090E00E940147A9960C -:10CD80006CAF7DAF8EAF9FAFA99781E090E00E941E -:10CD90000147AD966CAF7DAF8EAF9FAFAD9782E090 -:10CDA00090E00E9401476B017C0120E030E040E010 -:10CDB0005FE3609100027091010280910202909104 -:10CDC00003020E94526F20E030E040E05FE30E94E7 -:10CDD000857220E030E044E353E40E9485729B01B9 -:10CDE000AC0160E070E084E393E40E94526F2B0199 -:10CDF0003C0120E030E044EB52E4C701B6010E9460 -:10CE0000526FFE01EF5AFF4F4F019E012B5A3F4FC9 -:10CE10005901DE01A75ABF4F6D017B018C01AD9610 -:10CE20002CAD3DAD4EAD5FADAD97A9966CAD7DAD72 -:10CE30008EAD9FADA9970E947644A401B501C601AD -:10CE40000E9468426D966CAD7DAD8EAD9FAD6D97C5 -:10CE50008E01035C1F4F24E045E0A9D569966CADB7 -:10CE60007DAD8EAD9FAD69970451110924E045E079 -:10CE70009ED565966CAD7DAD8EAD9FAD65978101FC -:10CE800024E045E094D58E010F5F1F4F24E045E07C -:10CE9000C301B2018CD51F930F933F922F92A1969D -:10CEA000FFADA197FF93A0962FADA0972F936F96FC -:10CEB0003FAD6F973F936E968FAD6E978F938AE9D4 -:10CEC00093E09F938F930E94AF330FB6F894DEBF29 -:10CED0000FBECDBF39C08091970D882309F415CFBF -:10CEE0008091980D882309F410CF04E110E082E3CB -:10CEF000B82EA090AD0CB6E6BA9DC0011124FC017D -:10CF0000EB54FB4F7F0123A9222309F4FECE9C01A1 -:10CF100027513B4F6901C9010E945834D601EB2DBE -:10CF20001D92EA95E9F7D701D3961C92B2E1BA15A2 -:10CF300028F081E08A0D8093AD0C02C01092AD0CF8 -:10CF400001501109B1F6E1CE82B301E083FB8827DD -:10CF500080F980279091B4048917D9F08AE090E095 -:10CF60000E944F3912B313FB112710F9102780913B -:10CF7000B404181771F01F921F938EEA93E09F93E9 -:10CF80008F930E94AF331093B4040F900F900F90C3 -:10CF90000F908091B0049091B104A091B204B0912F -:10CFA000B3048F3F9105A105B10509F060F4019626 -:10CFB000A11DB11D8093B0049093B104A093B2045D -:10CFC000B093B30424C01092B0041092B104109234 -:10CFD000B2041092B3048BE30E94F85411E085363A -:10CFE000910508F410E08091AF04811781F01F9241 -:10CFF0001F9389EB93E09F938F930E94AF3310931D -:10D00000AF041093990D0F900F900F900F90809197 -:10D010000715811112C08091940D882371F08091C1 -:10D02000950D882351F081EC93E09F938F930E949C -:10D03000AF331092950D0F900F9080919A0D882329 -:10D0400009F461C880910715811128C18091910D63 -:10D050008F3009F023C18091990D882309F41EC1F6 -:10D060008091140D9091150D9C012F5F3F4F3093CF -:10D07000150D2093140D45970CF445C821961CAE50 -:10D080001DAE1EAE1FAE219719A61AA61BA61CA682 -:10D090001D8A1E8A1F8A188EE0908D0DF0908E0DCD -:10D0A00000918F0D1091900D2091890D30918A0D76 -:10D0B00040918B0D50918C0D6091850D7091860D76 -:10D0C0008091870D9091880D4101FE01B9965F0115 -:10D0D000DE01DD966D010E94114380E090E00E9428 -:10D0E00001474B015C0181E090E00E9401476B0128 -:10D0F0007C0182E090E00E9401472B013C01A501E8 -:10D10000940121966CAD7DAD8EAD9FAD2197CAD6B1 -:10D110009F7720E030E040E05FE30E944A721816FB -:10D120003CF1A701960169A57AA58BA59CA5BAD665 -:10D130009F7720E030E040E05FE30E944A721816DB -:10D14000BCF0A30192016D897E898F89988DAAD642 -:10D1500020E030E044EB52E4A6D69F7720E030E0B8 -:10D1600040E05FE30E944A72181614F00C9483604A -:10D170008EE1E6E0F5E1DF011D928A95E9F70E9474 -:10D1800063340E94125D80926D0D90926E0DA0929C -:10D190006F0DB092700DC092710DD092720DE09231 -:10D1A000730DF092740D4092750D5092760D609251 -:10D1B000770D7092780D80910A1590910B15A091C2 -:10D1C0000C15B0910D158093790D90937A0DA09365 -:10D1D0007B0DB0937C0D80910E1590910F15A09151 -:10D1E0001015B091111580937D0D90937E0DA09335 -:10D1F0007F0DB093800D8091121590911315A09121 -:10D200001415B09115158093810D9093820DA09304 -:10D21000830DB093840D8CE0A396EEADFFADA39784 -:10D2200011928A95E9F78091850D9091860DA091D4 -:10D23000870DB091880D89839A83AB83BC838091DD -:10D24000890D90918A0DA0918B0DB0918C0D8D83DD -:10D250009E83AF83B88780918D0D90918E0DA091A4 -:10D260008F0DB091900D89879A87AB87BC87AE01EF -:10D27000475F5F4FBE016B5F7F4FCE0101960E94FB -:10D28000684200E020E030E048E452E4BE016F5F15 -:10D290007F4F80E00E94BA560C9483601092150D67 -:10D2A0001092140D0C948360CF930E94A233C9E2B4 -:10D2B0000E945A3980910615811111C08091A513E1 -:10D2C0009091A613981739F0C89FC00111248D536F -:10D2D0009F4E892B69F780910715883049F3CF91CC -:10D2E0000895CF93209151153091521540915315C7 -:10D2F0005091541560917415709175158091761543 -:10D3000090917715A9D6811126C02091551530919D -:10D310005615409157155091581560917815709198 -:10D32000791580917A1590917B1596D6811113C04D -:10D33000C1E02091591530915A1540915B155091DB -:10D340005C1560917C1570917D1580917E15909192 -:10D350007F1582D68111C0E08C2FCF910895CF9296 -:10D36000DF92EF92FF920F93CF93DF9330910715E7 -:10D37000323009F482C0C02FD22F042F6B017C0100 -:10D3800093DF10922215109204158091F41487FDFA -:10D3900003C080E180930415DD2331F090910415E2 -:10D3A00080E189278093041589B1807190910415DB -:10D3B000891751F09FB7F89480910515806180938B -:10D3C00005159FBF0E945A3980910615811155C0DD -:10D3D000A701960161E575E181E00E94BA5681E0FE -:10D3E0008093B6149FB7F8948091B51482608093AF -:10D3F000B5149FBF0E945A398091061581113DC016 -:10D40000809107158111F6CF8091B6148130A9F46F -:10D41000CC2351F08CE0EAE0F5E1A6E1B5E1019022 -:10D420000D928A95E1F70CC09FB7F894809105158D -:10D430008061809305159FBF03C081E08093221512 -:10D440001092B6140E945A3980910615811115C0A8 -:10D450000E9459520E9474340E9463346AE075E15C -:10D4600081E595E10E94D448DF91CF910F91FF9023 -:10D47000EF90DF90CF900C941834DF91CF910F9103 -:10D48000FF90EF90DF90CF9008952F923F924F92B0 -:10D490005F926F927F928F929F92AF92BF92CF9244 -:10D4A000DF92EF92FF920F931F93CF93DF93CDB74D -:10D4B000DEB7E1970FB6F894DEBF0FBECDBF6D8328 -:10D4C0007E838F8398872F87388B498B5A8B0D8B60 -:10D4D000AD868B8A24E0E29E80011124C8018C581D -:10D4E0009A4E9F8B8E8BD801AD5CBA4EB98FA88FA8 -:10D4F0008D909D90AD90BC90FC0120813181428146 -:10D500005381C501B401CFD46A8F7B8F8C8F9D8FDF -:10D51000F4E0CF9E1001112491012C583A4E3F8F18 -:10D520002E8FC1018D5C9A4E99A388A3DC01CD900A -:10D53000DD90ED90FC90F901208131814281538191 -:10D54000C701B601B0D46AA37BA38CA39DA3240119 -:10D55000350177FA709477F87094D701C601B05806 -:10D5600089839A83AB83BC83F801EF5AFA4E2A8DE4 -:10D570003B8D4C8D5D8D608171818281938192D4D0 -:10D580004B015C01F101EF5AFA4E2AA13BA14CA1DB -:10D590005DA1608171818281938184D46B017C0162 -:10D5A000A5019401C301B201B0D769877A878B873F -:10D5B0009C87A701960169817A818B819C81A5D77F -:10D5C0009B01AC0169857A858B859C856CD46987C4 -:10D5D0007A878B879C87A7019601C301B20195D7F3 -:10D5E0006B017C01A501940169817A818B819C8109 -:10D5F0008CD79B01AC01C701B60154D429853A856B -:10D600004B855C85C3D46B017C019B89992389F090 -:10D610002DEB37E346E055EBC701B6013BD787FD5D -:10D620001AC02BED3FE049EC50E4C701B6013AD4F3 -:10D6300010C02DEB37E346E055E3C701B6010CD52A -:10D6400018164CF02BED3FE049EC50E4C701B60151 -:10D650002AD46B017C018090F0149090F114A0907A -:10D66000F214B090F3142D813E814F815885CA0188 -:10D67000B90119D4A501940115D4A501940145D788 -:10D68000B1D74B015C0120E030E040E05FE3C7012F -:10D69000B6013BD72D813E814F81588536D79F7784 -:10D6A000A5019401E0D4B5D54BD57C8B6B8BDB0108 -:10D6B000AB2B09F459C14B01A12CB12CBD89BB2363 -:10D6C00071F0C501B40168D59B01AC016F85788903 -:10D6D00089899A891AD76F87788B898B9A8BC5012C -:10D6E000B4015AD54B015C019B01AC01C701B601E5 -:10D6F000BAD46D837E838F839887FD85E4E0FE9F97 -:10D70000C00111249C012C583A4E3E872D87FC0104 -:10D71000EF5AFA4ED9012D913D914D915C91608166 -:10D72000718182819381BED3A50194019CD46EA79F -:10D730007FA788AB99AB2D813E814F815885CA0167 -:10D74000B901E3D69B01AC0160E070E080E090E4B9 -:10D75000A9D36B017C012BEA3AEA4AE25EE36D81D0 -:10D760007E818F819885D1D64B015C0120E030E02D -:10D7700040E850E4C701B60196D39B01AC01C50156 -:10D78000B401C3D669877A878B879C8720E030E015 -:10D7900040E05FE3C701B601B8D66EA37FA388A7B8 -:10D7A00099A710E022242394312CEB89FC89E215FF -:10D7B000F30509F4D9C01C3008F03AC029813A8138 -:10D7C0004B815C816EA17FA188A599A59ED66B0136 -:10D7D0007C01A301920169857A858B859C8595D60C -:10D7E000A701960160D37B01082FD92EA3019201D6 -:10D7F0006EA17FA188A599A588D64B015C012981DE -:10D800003A814B815C8169857A858B859C857DD643 -:10D810009B01AC01C501B40145D32B013C011F5F45 -:10D82000C701A02FBD2D89839A83AB83BC835BC0C6 -:10D83000B10180E090E0B0D42D813E814F815885C8 -:10D8400064D66B017C010CD469837A838B839C83BF -:10D85000C701B601BDD64B015C01E88DF98DC080D2 -:10D86000D180E280F380F7FAF094F7F8F094A8A161 -:10D87000B9A18D919D910D90BC91A02D8AA79BA7D8 -:10D88000ACA7BDA7A701960169817A818B819C8194 -:10D890003CD62B013C012AA53BA54CA55DA5C501A5 -:10D8A000B40133D69B01AC01C301B201FCD22B0100 -:10D8B0003C01A7019601C501B40127D66B017C018B -:10D8C0002AA53BA54CA55DA569817A818B819C81A8 -:10D8D0001CD69B01AC01C701B601E4D269837A83EF -:10D8E0008B839C8310E0A30192016A8D7B8D8C8DCC -:10D8F0009D8DD9D2EE89FF89608371838283938362 -:10D9000029813A814B815C816AA17BA18CA19DA177 -:10D91000CAD2AE8DBF8D6D937D938D939C931397DB -:10D920002EA53FA548A959A9ED85FE856081718185 -:10D9300082819381B8D2AD85BE856D937D938D93A1 -:10D940009C9313970D892F85388949895A8964E7F3 -:10D9500075E181E00E94BA568091061581110EC0D2 -:10D96000BFEF2B1A3B0A21CF0D892F8538894989B2 -:10D970005A8961E575E181E00E94BA56E1960FB6D9 -:10D98000F894DEBF0FBECDBFDF91CF911F910F91F5 -:10D99000FF90EF90DF90CF90BF90AF909F908F90CF -:10D9A0007F906F905F904F903F902F900895EF92EF -:10D9B0000F931F93CF93DF93E80147FD02C034E03C -:10D9C00001C034E1042E000C550B57FF03C05195E4 -:10D9D00041955109E32E022F242FAE0107D0CE012D -:10D9E000DF91CF911F910F91EF9008958F929F92A9 -:10D9F000AF92BF92CF92DF92EF92FF920F931F935D -:10DA0000CF93DF93CDB7DEB729970FB6F894DEBF7B -:10DA10000FBECDBF6A01122FB02E2BE3201720F0CE -:10DA2000FF24F394F00E02C02CE3F22E0F2D27E01A -:10DA3000AE014F5F5F4F50D1BC014981842F897087 -:10DA4000813031F0E1FC06C0E0FE06C090E205C086 -:10DA50009DE203C09BE201C090E05E2D507143FF48 -:10DA60003CC0911102C083E001C084E0811718F42A -:10DA7000212F281B01C020E051110BC0F601822F7D -:10DA800030E2882319F031938150FBCFC20ED11CB4 -:10DA900020E0992329F0D6019C93F60131966F017D -:10DAA000C6010396E2FE0AC03EE4D6013C9341E47F -:10DAB00011964C93119712963C9306C03EE6F601E0 -:10DAC000308341E641833283FC01322F40E233232D -:10DAD00009F442C041933150FACF42FF44C0911142 -:10DAE00002C083E001C084E0811718F4212F281BB5 -:10DAF00001C020E051110BC0F601822F30E28823D3 -:10DB000019F031938150FBCFC20ED11C20E0992334 -:10DB100029F0D6019C93F60131966F01C601039658 -:10DB2000E2FE0BC039E4D6013C933EE411963C93EF -:10DB3000119736E412963C9307C039E6F60130831C -:10DB40003EE6318336E63283FC01322F40E2332356 -:10DB500019F041933150FBCFFC01E20FF11D10820F -:10DB60008EEF9FEFA6C021E030E0911102C020E0CF -:10DB700030E0161617061CF4FB01319602C0E1E0F6 -:10DB8000F0E02E0F3F1FBB2021F0EB2DF0E031968F -:10DB900002C0E0E0F0E02E0F3F1FE12FF0E02E1773 -:10DBA0003F071CF4121B212F01C020E08E2D88712D -:10DBB00059F4F601822F30E2882319F03193815015 -:10DBC000FBCFC20ED11C20E0992329F0D6019C93F3 -:10DBD000F60131966F0151110BC0F601822F90E3CF -:10DBE000882319F091938150FBCFC20ED11C20E005 -:10DBF0000F2D060F9A81342F307144FF03C09133EB -:10DC000009F40150101624F4093018F008E001C09E -:10DC100001E0AB0177FF02C040E050E0FB01E41BF4 -:10DC2000F50BA1E0B0E0AC0FBD1FEA0FFB1F8EE2C9 -:10DC3000A82E4B01801A91080B2D10E0119501952B -:10DC400011094F3FBFEF5B0721F4D601AC9211964B -:10DC50006D01641775072CF08416950614F4818104 -:10DC600001C080E3415051093196D60111967D01E2 -:10DC70004017510724F0D6018C936701E2CF641757 -:10DC8000750739F4963320F4953319F4311101C036 -:10DC900081E3F6018083F701822F90E2882319F057 -:10DCA00091938150FBCFF701E20FF11D108280E0CC -:10DCB00090E029960FB6F894DEBF0FBECDBFDF917E -:10DCC000CF911F910F91FF90EF90DF90CF90BF9079 -:10DCD000AF909F908F900895283008F027E0332769 -:10DCE000DA01990F311D87FD91600096610571057C -:10DCF00039F432602E5F3D9330E32A95E1F70895C1 -:10DD00009F3F30F080387105610509F03C5F3C5F52 -:10DD10003D93913008F08068911DDF93CF931F935E -:10DD20000F93FF92EF92192F987F9695E92F969572 -:10DD30009695E90FFF27EA59FD4F99273327EE24DF -:10DD4000FF24A701E70105900894079428F4360FF3 -:10DD5000E71EF81E491F511D660F771F881F991F68 -:10DD60000694A1F70590079428F4E70EF81E491FC2 -:10DD7000561FC11D770F881F991F661F0694A1F7B4 -:10DD80000590079428F4F80E491F561FC71FD11D90 -:10DD9000880F991F661F771F0694A1F705900794B7 -:10DDA00020F4490F561FC71FD81F990F661F771FF2 -:10DDB000881F0694A9F784911095177041F0D695A5 -:10DDC000C79557954795F794E7941A95C1F7ECE0F6 -:10DDD000F2E06894159015913591659195910590B3 -:10DDE0007FE27395E118F10A430B560BC90BD0097A -:10DDF000C0F7E10CF11E431F561FC91FD01D7EF452 -:10DE0000703311F48A95E6CFE894015030F0080F92 -:10DE10000AF40027021708F4202F2395022F7A33E3 -:10DE200028F079E37D932A95E9F710C07D932A9530 -:10DE300089F6069497956795379517951794E11885 -:10DE4000F10A430B560BC90BD00998F023957E912C -:10DE500073957A3308F070E37C932013B8F77E91C2 -:10DE600070617D9330F0839571E37D9370E32A9523 -:10DE7000E1F71124EF90FF900F911F91CF91DF9167 -:10DE8000992787FD909508959F939F77D5D10F90FF -:10DE900000203AF49058A2EA2AED3FE049E450E429 -:10DEA00013D096C25058BB27AA270ED091C25AD27F -:10DEB00030F05FD220F031F49F3F11F41EF42AC2FB -:10DEC0000EF4E095E7FBF7C1E92FA4D280F3BA176F -:10DED000620773078407950718F071F49EF5D3C2A3 -:10DEE0000EF4E0950B2EBA2FA02D0B01B901900175 -:10DEF0000C01CA01A0011124FF27591B99F0593FB9 -:10DF000050F4503E68F11A16F040A22F232F342F00 -:10DF10004427585FF3CF469537952795A795F0404E -:10DF20005395C9F77EF41F16BA0B620B730B840B63 -:10DF3000BAF09150A1F0FF0FBB1F661F771F881F1B -:10DF4000C2F70EC0BA0F621F731F841F48F4879573 -:10DF500077956795B795F7959E3F08F0B3CF939562 -:10DF6000880F08F09927EE0F979587950895FAD1B5 -:10DF700058F080E891E009F49EEFFBD128F040E8EA -:10DF800051E059F45EEF09C0C5C17DC2E92FE078C8 -:10DF900041D268F3092E052AC1F32617370748072F -:10DFA000590738F00E2E07F8E02569F0E025E06407 -:10DFB0000AC0EF6307F8009407FADB01B9019D017D -:10DFC000DC01CA01AD01EF935DD002D20AD05F91AE -:10DFD000552331F02BED3FE049E450FD49EC63CF90 -:10DFE0000895DF93DD27B92FBF7740E85FE316166A -:10DFF000170648075B0710F4D92F50D29F938F93D1 -:10E000007F936F932DD3E8E9F1E087D1E1D12F9190 -:10E010003F914F915F9185D2DD2349F09058A2EA5C -:10E020002AED3FE049EC5FE3D0785D274DDFDF91DB -:10E03000CFC112D280F09F3740F491110EF424C268 -:10E0400060E070E080E89FE3089526F01B16611DF4 -:10E05000711D811D36C150C10AD108F481E00895B7 -:10E0600090D1E395C6C10CD0B3C183D140F07AD131 -:10E0700030F021F45F3F19F01EC1511105C24AC1B1 -:10E08000C9D198F39923C9F35523B1F3951B550BC7 -:10E09000BB27AA2762177307840738F09F5F5F4F7B -:10E0A000220F331F441FAA1FA9F333D00E2E3AF0BC -:10E0B000E0E830D091505040E695001CCAF729D0D6 -:10E0C000FE2F27D0660F771F881FBB1F2617370725 -:10E0D0004807AB07B0E809F0BB0B802DBF01FF2755 -:10E0E00093585F4F2AF09E3F510568F0E4C0CCC1C1 -:10E0F0005F3FECF3983EDCF3869577956795B7958F -:10E10000F7959F5FC9F7880F911D9695879597F9A9 -:10E110000895E1E0660F771F881FBB1F6217730722 -:10E120008407BA0720F0621B730B840BBA0BEE1F37 -:10E1300088F7E095089504D06894B111A5C10895B9 -:10E1400071D188F09F5790F0B92F9927B751A0F05F -:10E15000D1F0660F771F881F991F1AF0BA95C9F77B -:10E1600012C0B13081F08FD1B1E008958CC1672F1A -:10E17000782F8827B85F39F0B93FCCF3869577952B -:10E180006795B395D9F73EF4909580957095619514 -:10E190007F4F8F4F9F4F0895E89409C097FB3EF43F -:10E1A00090958095709561957F4F8F4F9F4F9923E4 -:10E1B000A9F0F92F96E9BB279395F6958795779562 -:10E1C0006795B795F111F8CFFAF4BB0F11F460FF22 -:10E1D0001BC06F5F7F4F8F4F9F4F16C0882311F07A -:10E1E00096E911C0772321F09EE8872F762F05C08E -:10E1F000662371F096E8862F70E060E02AF09A9529 -:10E20000660F771F881FDAF7880F9695879597F91D -:10E21000089522D180F09F3740F491110EF034C15F -:10E2200060E070E080E89FEB089526F41B16611D06 -:10E23000711D811D46C060C0DF93CF931F930F9364 -:10E240008B01EC01E5ECF1E068D0C2D09801AE01A1 -:10E250008B01EC0160E070E080E89FE323DEC2D137 -:10E260009801AE010F911F91CF91DF915AC1990F83 -:10E270000008550FAA0BE0E8FEEF16161706E80790 -:10E28000F907C0F012161306E407F50798F0621BB1 -:10E29000730B840B950B39F40A2661F0232B242B86 -:10E2A000252B21F408950A2609F4A140A6958FEFA5 -:10E2B000811D811D089597F99F6780E870E060E0F7 -:10E2C0000895882371F4772321F09850872B762FB7 -:10E2D00007C0662311F499270DC09051862B70E07A -:10E2E00060E02AF09A95660F771F881FDAF7880F8B -:10E2F0009695879597F908959F3F31F0915020F4B6 -:10E30000879577956795B795880F911D9695879511 -:10E3100097F908959FEF80EC0895DF93CF931F93B3 -:10E320000F93FF92EF92DF927B018C01689405C0FE -:10E33000DA2EEF01F6D0FE01E894A59125913591F2 -:10E3400045915591AEF3EF01BFDDFE019701A801A4 -:10E35000DA9479F7DF90EF90FF900F911F91CF91B2 -:10E36000DF91089500240A94161617061806090668 -:10E37000089500240A94121613061406050608953B -:10E38000C9CF50D0E8F3E894E0E0BB279F57F0F006 -:10E390002AED3FE049EC06C0EE0FBB0F661F771F6A -:10E3A000881F28F0B23A62077307840728F0B25A30 -:10E3B000620B730B840BE3959A9572F7803830F4F7 -:10E3C0009A95BB0F661F771F881FD2F7904896CF8C -:10E3D000092E0394000C11F4882352F0BB0F40F473 -:10E3E000BF2B11F460FF04C06F5F7F4F8F4F9F4FB3 -:10E3F0000895EF93E0FF06C0A2EA2AED3FE049EC62 -:10E400005FEB62DDE5DF0F90039401FC9058EDEEC9 -:10E41000F1E03BC157FD9058440F551F59F05F3F45 -:10E4200071F04795880F97FB991F61F09F3F79F036 -:10E4300087950895121613061406551FF2CF4695B8 -:10E44000F1DF08C0161617061806991FF1CF86953A -:10E450007105610508940895E5DFA0F0BEE7B917DE -:10E4600088F4BB279F3860F41616B11D672F782FEC -:10E470008827985FF7CF869577956795B11D939517 -:10E480009639C8F30895E894BB2766277727CB0110 -:10E4900097F90895ECDE08F48FEF08959B01AC0125 -:10E4A00060E070E080E89FE3DECDBCDF58F19E576E -:10E4B00058F19851A0F0E9F0983020F5092E9927ED -:10E4C000660F771F881F991F0A94D1F712C0062E76 -:10E4D000672F782F8827985F11F4000C07C0993FA9 -:10E4E000B4F38695779567959395D9F7611D711D5E -:10E4F000811D3EF490958095709561957F4F8F4F6B -:10E500009F4F08956894C0CFBECF0BD061CF2ADF54 -:10E5100028F02FDF18F0952309F0CDCEFBCE112483 -:10E52000B3CF78DFA0F3959FD1F3950F50E0551F3F -:10E53000629FF001729FBB27F00DB11D639FAA2758 -:10E54000F00DB11DAA1F649F6627B00DA11D661FA7 -:10E55000829F2227B00DA11D621F739FB00DA11DC8 -:10E56000621F839FA00D611D221F749F3327A00D82 -:10E57000611D231F849F600D211D822F762F6A2F1E -:10E5800011249F5750408AF0E1F088234AF0EE0FA3 -:10E59000FF1FBB1F661F771F881F91505040A9F7B0 -:10E5A0009E3F510570F087CE6FCF5F3FECF3983EF2 -:10E5B000DCF3869577956795B795F795E7959F5F17 -:10E5C000C1F7FE2B880F911D9695879597F90895B1 -:10E5D0009F93D7DE0F9007FCEE5F0BCF11F40EF484 -:10E5E00099CE8ACE1FDFD0F39923D9F3CEF39F576C -:10E5F000550B87FF43D00024A0E640EA90018058E5 -:10E600005695979528F4805C660F771F881F20F039 -:10E6100026173707480730F4621B730B840B202939 -:10E6200031294A2BA69517940794202531254A278E -:10E6300058F7660F771F881F20F0261737074807FF -:10E6400030F4620B730B840B200D311D411DA0951E -:10E6500081F7B901842F9158880F96958795089571 -:10E660009B01AC0152CFF8DE20F09F3708F40CCFAD -:10E6700028CE42CEFCDD880B990B08959150504076 -:10E68000660F771F881FD2F708959F938F937F930C -:10E690006F93FF93EF939B01AC0137DFEF91FF91F5 -:10E6A0003CDE2F913F914F915F912FCF991B79E0E5 -:10E6B00004C0991F961708F0961B881F7A95C9F712 -:10E6C00080950895AA1BBB1B51E107C0AA1FBB1F61 -:10E6D000A617B70710F0A61BB70B881F991F5A95EE -:10E6E000A9F780959095BC01CD010895A1E21A2E5D -:10E6F000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FE6 -:10E70000A217B307E407F50720F0A21BB30BE40B35 -:10E71000F50B661F771F881F991F1A9469F760957C -:10E720007095809590959B01AC01BD01CF01089536 -:10E73000EE0FFF1F881F8BBF0790F691E02D1994F5 -:10E74000A29FB001B39FC001A39F700D811D112432 -:10E75000911DB29F700D811D1124911D0895F0DF50 -:10E76000A59F900DB49F900DA49F800D911D112425 -:10E770000895FB01DC010D900020E9F7119701904D -:10E780000D920020E1F70895FB01DC0101900D924C -:10E790000020E1F708950F931F93CF93DF93CDB738 -:10E7A000DEB72E970FB6F894DEBF0FBECDBF0E8931 -:10E7B0001F8986E08C831A8309838FEF9FE79E83EE -:10E7C0008D83AE01465E5F4F688D798DCE010196D7 -:10E7D00059D0EF81F885E00FF11F10822E960FB609 -:10E7E000F894DEBF0FBECDBFDF91CF911F910F9187 -:10E7F0000895CF93DF93CDB7DEB72E970FB6F89479 -:10E80000DEBF0FBECDBF85E08C838C899D899A8346 -:10E810008983AE01485E5F4F6E897F89CE01019684 -:10E82000E0D32E960FB6F894DEBF0FBECDBFDF91BA -:10E83000CF9108950F931F93CF93DF93CDB7DEB79A -:10E840002E970FB6F894DEBF0FBECDBF8C0186E0C9 -:10E850008C831A8309838FEF9FE79E838D83CE017C -:10E86000019610D0EF81F885E00FF11F10822E96EF -:10E870000FB6F894DEBF0FBECDBFDF91CF911F91D1 -:10E880000F9108952F923F924F925F926F927F92D5 -:10E890008F929F92AF92BF92CF92DF92EF92FF92B0 -:10E8A0000F931F93CF93DF93CDB7DEB72B970FB6A0 -:10E8B000F894DEBF0FBECDBF6C017B018A01FC0165 -:10E8C00017821682838181FFBFC1CE0101963C0170 -:10E8D000F6019381F70193FD859193FF81917F016B -:10E8E000882309F4ADC1853239F493FD859193FFF6 -:10E8F00081917F01853221F4B60190E0F0D4E8CF18 -:10E90000912C212C312CFFE1F315D8F08B3279F0CA -:10E9100038F4803279F08332A1F4232D20611DC0B8 -:10E920008D3261F0803369F4232D216016C0832D70 -:10E930008260382EE32DE4603E2E2AC0F32DF8606D -:10E940001DC037FC2DC020ED280F2A3040F08E323C -:10E95000B9F436FC75C1232D2064322E19C036FE61 -:10E9600006C08AE0989E200D1124922E11C0EAE084 -:10E970002E9E200D1124222EF32DF0623F2E08C072 -:10E980008C3621F4832D8068382E02C0883641F4FD -:10E99000F70193FD859193FF81917F018111B3CFA1 -:10E9A000982F9F7D9554933028F40C5F1F4F9FE361 -:10E9B00099830DC0833631F0833771F0833509F0C8 -:10E9C00055C020C0F801808189830E5F1F4F8824C5 -:10E9D0008394912C530112C02801F2E04F0E511C78 -:10E9E000F801A080B18036FE03C0692D70E002C03E -:10E9F0006FEF7FEFC5012AD44C018201F32DFF7721 -:10EA00003F2E15C0280122E0420E511CF801A080C3 -:10EA1000B18036FE03C0692D70E002C06FEF7FEF5A -:10EA2000C50109D44C01F32DF0683F2E820133FC5F -:10EA300019C0822D90E088169906A0F4B60180E2F4 -:10EA400090E04DD42A94F5CFF50137FC859137FE3F -:10EA500081915F01B60190E042D421102A9421E017 -:10EA6000821A91088114910479F7E1C0843611F07B -:10EA7000893639F5F80137FE07C0608171818281DE -:10EA800093810C5F1F4F08C060817181072E000CBD -:10EA9000880B990B0E5F1F4FF32DFF763F2E97FFCC -:10EAA00009C090958095709561957F4F8F4F9F4FCE -:10EAB000F0683F2E2AE030E0A30166D4882E861845 -:10EAC00044C0853731F4232D2F7EB22E2AE030E06A -:10EAD00025C0932D997FB92E8F36C1F018F4883553 -:10EAE00079F0AEC0803719F0883721F0A9C0E92F3E -:10EAF000E061BE2EB4FE0DC0FB2DF460BF2E09C038 -:10EB000034FE0AC0292F2660B22E06C028E030E06D -:10EB100005C020E130E002C020E132E0F801B7FE9C -:10EB200007C060817181828193810C5F1F4F06C095 -:10EB30006081718180E090E00E5F1F4FA30124D4BB -:10EB4000882E8618FB2DFF773F2E36FE0DC0232D15 -:10EB50002E7FA22E891458F434FE0BC032FC09C05B -:10EB6000832D8E7EA82E05C0B82CA32C03C0B82CF4 -:10EB700001C0B92CA4FE0FC0FE01E80DF11D80817B -:10EB8000803321F49A2D997EA92E09C0A2FE06C0D9 -:10EB9000B394B39404C08A2D867809F0B394A3FC8F -:10EBA00010C0A0FE06C0B21480F4280C922C9B1852 -:10EBB0000DC0B21458F4B60180E290E090D3B39443 -:10EBC000F8CFB21418F42B1802C0982C212CA4FEF4 -:10EBD0000FC0B60180E390E082D3A2FE16C0A1FC74 -:10EBE00003C088E790E002C088E590E0B6010CC061 -:10EBF0008A2D867851F0A1FE02C08BE201C080E22E -:10EC0000A7FC8DE2B60190E06AD3891430F4B60116 -:10EC100080E390E064D39A94F8CF8A94F301E80DEE -:10EC2000F11D8081B60190E05AD38110F6CF2220E9 -:10EC300009F44ECEB60180E290E051D32A94F7CF8A -:10EC4000F6018681978102C08FEF9FEF2B960FB65A -:10EC5000F894DEBF0FBECDBFDF91CF911F910F9112 -:10EC6000FF90EF90DF90CF90BF90AF909F908F90EC -:10EC70007F906F905F904F903F902F90089520FD70 -:10EC800009C0FC0123FD05C022FF02C0738362831B -:10EC900051834083089544FD17C046FD17C0AB0162 -:10ECA000BC01DA01FB01AA0FBB1FEE1FFF1F10946E -:10ECB000D1F74A0F5B1F6E1F7F1FCB01BA01660F92 -:10ECC000771F881F991F09C033E001C034E0660F29 -:10ECD000771F881F991F3150D1F7620F711D811D59 -:10ECE000911D08950F931F93CF93DF938C01C8015B -:10ECF000B8D2EC0197FD06C08BD2892BC1F7B801C1 -:10ED0000CE0129D3CE01DF91CF911F910F910895AC -:10ED10008F929F92AF92BF92EF92FF920F931F93A9 -:10ED2000CF93DF938C01D62F7A01B22E9AD29C0119 -:10ED300033272B32310531F02D32310559F48B2D2B -:10ED40008068B82ED15011F480E061C0C80189D22A -:10ED500097FDFACFCB2DCD7F2B2D2073F9F4803387 -:10ED6000E9F4AA24AA94AD0E09F43EC0C80179D2F0 -:10ED700097FD3AC09C012F7D33272835310541F49A -:10ED8000C264D25089F1C8016CD297FF07C02CC071 -:10ED9000B6FE02C0C26001C0C261DA2D812C912C86 -:10EDA000540120ED280F283078F0C4FF03C0B801CB -:10EDB000D2D217C02A3040F0C6FFF9CF2F7D3FEEE8 -:10EDC000320F3630A0F727504C2FC501B40163DF56 -:10EDD0004B015C01C260D15051F0C80142D297FF93 -:10EDE000E0CFC1FD04C0B0CF812C912C5401C7FFEE -:10EDF00008C0B094A09490948094811C911CA11C94 -:10EE0000B11C2C2FB501A401C70139DF81E0DF91CE -:10EE1000CF911F910F91FF90EF90BF90AF909F9077 -:10EE20008F9008955F926F927F928F929F92AF9290 -:10EE3000BF92CF92DF92EF92FF920F931F93CF93E7 -:10EE4000DF93CDB7DEB7A0970FB6F894DEBF0FBE45 -:10EE5000CDBF5C01962E7A01F9018E010F5F1F4F25 -:10EE6000680180E2D8011D928A95E9F7D5011396D1 -:10EE70008C9080E090E0612C712C30E061E070E0DB -:10EE800083FC259183FE21918F01522E211103C015 -:10EE900080E090E090C02E3511F4009751F1432F9F -:10EEA00050E0481759073CF42D3559F12D3219F42B -:10EEB000772009F103C0772009F468C0452D4695F5 -:10EEC00046954695D601A40FB11D452D47708B017F -:10EED00002C0000F111F4A95E2F7A8015C91452B73 -:10EEE0004C93651459F0561410F45394E7CF5A9488 -:10EEF000E5CF31E004C07724739401C0712C0196F2 -:10EF0000BFCF772019F08E8180628E83311103C0CC -:10EF10008824839417C0F6019E012F5D3F4F8081A6 -:10EF2000809581932E173F07D1F7F2CFE114F104BA -:10EF300029F0D7018C93F70131967F019A94812CA7 -:10EF40009920E9F0C5018DD197FD17C0FC01FF277D -:10EF500023E0F595E7952A95E1F7EC0DFD1D20815D -:10EF600030E0AC014770552702C0359527954A958A -:10EF7000E2F720FDDBCFB501EED1811089CFE1149E -:10EF8000F10411F0D7011C92C80115C0422F46951B -:10EF900046954695D601A40FB11D422F47708B01AF -:10EFA00002C0000F111F4A95E2F7A8015C91452BA2 -:10EFB0004C93622EA4CFA0960FB6F894DEBF0FBE7E -:10EFC000CDBFDF91CF911F910F91FF90EF90DF9018 -:10EFD000CF90BF90AF909F908F907F906F905F90F9 -:10EFE00008955F926F927F928F929F92AF92BF929D -:10EFF000CF92DF92EF92FF920F931F93CF93DF9305 -:10F000006C01EB015A01FC0117821682512CF601AA -:10F01000E380FE01E3FC8591E3FE8191182FEF016F -:10F02000882309F4E0C090E0F3D0892B19F0C601E1 -:10F0300059DEEDCF153241F4FE01E3FC1591E3FEFC -:10F040001191EF01153271F4C6010BD197FDC9C0C2 -:10F05000412F50E09C01332724173507C1F2B60138 -:10F060007AD1C1C01A3239F4E3FC1591E3FE119153 -:10F07000EF0101E001C000E0F12C20ED210F2A306A -:10F0800078F402606F2D70E080E090E040E203DEF3 -:10F09000F62EFE01E3FC1591E3FE1191EF01EDCF99 -:10F0A00001FF03C0F11003C09EC0FF24FA9418367C -:10F0B00019F01C3651F010C0FE01E3FC1591E3FE7F -:10F0C0001191EF01183641F408600460FE01E3FC81 -:10F0D0001591E3FE1191EF01112309F484C0612F12 -:10F0E00070E086E093E09CD0892B09F47CC000FDA1 -:10F0F00007C0F50180809180C50102965C0102C0C5 -:10F10000812C912C1E3649F4F6014681578160E02E -:10F1100070E0202FC401B3DD7ACF1336A1F401FDD6 -:10F1200002C0FF24F394C6019CD097FD5AC08114FD -:10F13000910429F0F4018083C40101964C01FA94F2 -:10F14000F110F1CF4AC01B3551F49E01A4016F2D7F -:10F15000C60168DEEC01892B09F03FC039C0C60149 -:10F16000C1DD97FD3EC01F3649F128F4143621F168 -:10F17000193639F125C0133771F01537E9F020C081 -:10F180008114910429F0F4016082C40101964C01BC -:10F19000FA94FF2059F0C60164D03C0197FD06C0E7 -:10F1A00037D0892B69F3B601C301D5D081149104FE -:10F1B000A1F0F401108211C0006203C0006101C01F -:10F1C0000064202FA4016F2DC601A2DD811105C0AE -:10F1D000F6018381807329F406C000FD18CF539493 -:10F1E00016CF552019F0852D90E002C08FEF9FEFCC -:10F1F000DF91CF911F910F91FF90EF90DF90CF9013 -:10F20000BF90AF909F908F907F906F905F90089588 -:10F21000911118C1803219F089508550D0F70895A6 -:10F22000FC010590061621F00020D9F7C0010895D1 -:10F230003197CF010895FC01059061507040011095 -:10F24000D8F7809590958E0F9F1F0895FC0161500F -:10F25000704001900110D8F7809590958E0F9F1FF8 -:10F260000895CF93DF93EC012B8120FF33C026FF5D -:10F270000AC02F7B2B838E819F8101969F838E8373 -:10F280008A8190E029C022FF0FC0E881F981808146 -:10F29000082E000C990B009719F420622B831AC0DA -:10F2A0003196F983E8830EC0EA85FB85199597FFAF -:10F2B00009C02B81019611F080E201C080E1822B10 -:10F2C0008B8308C02E813F812F5F3F4F3F832E836A -:10F2D000992702C08FEF9FEFDF91CF9108950F9391 -:10F2E0001F93CF93DF93FB01238121FD03C08FEF99 -:10F2F0009FEF2CC022FF16C04681578124813581A3 -:10F300004217530744F4A081B1819D012F5F3F4F05 -:10F31000318320838C93268137812F5F3F4F378342 -:10F32000268314C08B01EC01FB010084F185E02DE4 -:10F330001995892BE1F6D80116968D919C91179716 -:10F34000019617969C938E931697CE01DF91CF91DD -:10F350001F910F910895FB01238120FF12C026FD0C -:10F3600010C08F3F3FEF930761F082832F7D2064B1 -:10F3700023832681378121503109378326839927BA -:10F3800008958FEF9FEF0895FA01AA27283051F1D1 -:10F39000203181F1E8946F936E7F6E5F7F4F8F4FC6 -:10F3A0009F4FAF4FB1E03ED0B4E03CD0670F781F25 -:10F3B000891F9A1FA11D680F791F8A1F911DA11D0A -:10F3C0006A0F711D811D911DA11D20D009F4689443 -:10F3D0003F912AE0269F11243019305D3193DEF6EB -:10F3E000CF010895462F4770405D4193B3E00FD0A1 -:10F3F000C9F7F6CF462F4F70405D4A3318F0495D8C -:10F4000031FD4052419302D0A9F7EACFB4E0A6956E -:10F410009795879577956795BA95C9F70097610590 -:10F42000710508959B01AC010A2E069457954795E6 -:10F4300037952795BA95C9F7620F731F841F951FDB -:0EF44000A01D0895992788270895F894FFCFFE -:10F44E00AE47C13F08020000000000000073736366 -:10F45E00616E662025640D0A0053255B302D392D13 -:10F46E002B2E5D52255B302D392D2B2E5D48255BC5 -:10F47E00302D392D2B2E5D46255B302D392D2B2E23 -:10F48E005D004E256456255B302D392D2B2E5D46A5 -:10F49E00255B302D392D2B2E5D0058255B302D39F7 -:10F4AE002D2B2E5D59255B302D392D2B2E5D5A259A -:10F4BE005B302D392D2B2E5D46255B302D392D2BB6 -:10F4CE002E5D0042255B302D392D2B2E5D4C255B9C -:10F4DE00302D392D2B2E5D52255B302D392D2B2EB7 -:10F4EE005D46255B302D392D2B2E5D002042257378 -:10F4FE00204C2573205225730A007541726D3350CE -:10F50E006C7573002025730A0056342E352E30008C -:10F51E0056342E302E3400205625730A00205825DE -:10F52E007320592573205A25730A00205325732002 -:10F53E00522573204825730A004E2564002042256B -:10F54E0064204C2564205225640A00616E676C6548 -:10F55E00206F66667365743A25730D0A00646576CE -:10F56E00696365206E616D65203A2025730D0A0072 -:10F57E00736F667420766572203A2025730D0A002B -:10F58E0061706920766572203A2025730D0A007726 -:10F59E006F726B206D6F6465203A2025640D0A0032 -:10F5AE0040310A0065666665637420636865636B47 -:10F5BE002074696D656F7574210D0A0023255B300B -:10F5CE002D395D0024257300453233206275666641 -:10F5DE0065722066756C6C0D0A00403320582573D9 -:10F5EE0020592573205A2573205225730A00403660 -:10F5FE00204E30205625640A004035205625640AD8 -:10F60E000040392056300A0041255B302D392D2B14 -:10F61E002E5D00562573002056310A0056554225A0 -:10F62E005B302D392E5D0046255B302D392E5D5415 -:10F63E0025640058255B302D392D2B2E5D59255B09 -:10F64E00302D392D2B2E5D5A255B302D392D2B2E3D -:10F65E005D0042255B302D392D2B2E5D4C255B3008 -:10F66E002D392D2B2E5D52255B302D392D2B2E5DF8 -:10F67E000058255B302D392D2B2E5D59255B302DF5 -:10F68E00392D2B2E5D5A255B302D392D2B2E5D50AD -:10F69E002564004E25645625640053255B302D39B4 -:10F6AE002D2B2E5D0056255B302D392D2B2E5D001A -:10F6BE004532330A004532300A004532310A002005 -:10F6CE00006F6B004532300045323100453232005A -:10F6DE0056332E332E310056332E332E3000563302 -:0CF6EE002E332E320056302E302E30000D -:00000001FF diff --git a/hex/uArmPro_V4.5.1_release_20200320.hex b/hex/uArmPro_V4.5.1_release_20200320.hex new file mode 100644 index 0000000..47c10c4 --- /dev/null +++ b/hex/uArmPro_V4.5.1_release_20200320.hex @@ -0,0 +1,4033 @@ +:1000000065C5000084C5000082C5000080C50000F1 +:100010007EC500007CC500007AC5000078C50000E0 +:1000200076C500000C94DF5C72C500000C94215072 +:100030006EC500006CC500006AC500000C94AC5C85 +:1000400066C500000C94CF3662C5000060C5000094 +:100050005EC500005CC500005AC500000C945A360D +:1000600056C500000C94A8310C94983250C500007D +:100070004EC500004CC500004AC5000048C5000040 +:1000800046C5000044C5000042C500000C94965CC3 +:100090000C9440310C946A323AC5000038C5000017 +:1000A00036C5000034C500000C945E3930C5000030 +:1000B0002EC500000C945B5C2AC5000028C500001A +:1000C00026C5000024C500000C94265C0C94D83092 +:1000D0000C943C321CC500000C9470300C940E3211 +:1000E00016C500006E14D41ED41E7C149114A614E0 +:1000F000BB14D41EC414D41ED714D41EE614F0149A +:100100005015D41ED41ED41E071521153B15A31D52 +:10011000B31DE21DB31DE61DFD1DEC1DF61D211EC8 +:10012000281E331E3E1E5D1E5F1E621E641E1D269F +:1001300035264D2665267D269E26B6269E3CA43C69 +:10014000A73CAA3CAE3CB63CBE3C2B3D2B3D2B3DD8 +:10015000C63CC93CD23CDB3C2B3D2B3D2B3D2B3DD3 +:100160002B3D2B3DE33CED3CF93C033D063D0F3D73 +:10017000183D1E3D9E5BA15B905B945B9A5BD85BD8 +:10018000A55BA95BAF5BB35BB75BBD5BC15BC55BED +:10019000D85BCB5BCF5BD35B084AD73B3BCE016ED2 +:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE +:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD +:1001C000000000803F072C7AA5BA6CC590DA3B93FB +:1001D00065FC8BBC53F810FD3C5692834DBD879D4A +:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 +:1001F000CDB2D44EB93836A9020C50B991868808D0 +:100200003CA6AAAA2ABE000000803F0000407A1047 +:10021000F35A00A0724E18090010A5D4E80000E8B7 +:100220007648170000E40B54020000CA9A3B000015 +:1002300000E1F505000080969800000040420F00A4 +:100240000000A08601000000102700000000E80365 +:10025000000000006400000000000A000000000030 +:100260000100000000002C76D888DC674F0823DFEF +:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 +:10028000997696E8E6C28426EB898C9B62ED407CE9 +:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 +:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA +:1002B000FEF520E6B500D0ED902E030094357705CD +:1002C0000080841E080000204E0A000000C80C3385 +:1002D0003333330F986E12831141EF8D2114893B14 +:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 +:1002F000901DA4BBE424203284725E228100C9F1E7 +:1003000024ECA1E53D276364696E6F7073757858BE +:100310005B00000020002300260029002C002F0095 +:100320003200000100000301060109010D0A003D31 +:1003300000244E005D0D0A005B302E396A2E3230EB +:100340003136303732363A005D0D0A005B544C4F7F +:100350003A005D0D0A002C005B4739323A005D0D12 +:100360000A002C003A003330003238005B47005D51 +:100370000D0A00205300204600205400204D380074 +:10038000204D3900204D3500204D3400204D3300E4 +:10039000204D3200204D3100204D300020473934AF +:1003A00000204739330020473931002047393000D9 +:1003B00020473230002047323100204731390020B9 +:1003C0004731380020473137002047004733382E67 +:1003D000004738300047330047320047310047308C +:1003E000005B00290D0A00206D617820747261762F +:1003F000656C2C206D6D0020616363656C2C206D35 +:100400006D2F7365635E3200206D617820726174B8 +:10041000652C206D6D2F6D696E002C2073746570D6 +:100420002F6D6D007A00790078002028003D0024AF +:10043000002028686F6D696E672070756C6C2D6F79 +:1004400066662C206D6D290D0A002028686F6D6985 +:100450006E67206465626F756E63652C206D7365D1 +:1004600063290D0A2432373D002028686F6D696EBC +:1004700067207365656B2C206D6D2F6D696E290D7E +:100480000A2432363D002028686F6D696E67206649 +:100490006565642C206D6D2F6D696E290D0A2432FF +:1004A000353D00290D0A2432343D002028686F6D47 +:1004B000696E672064697220696E76657274206D5A +:1004C00061736B3A002028686F6D696E67206379ED +:1004D000636C652C20626F6F6C290D0A2432333DEA +:1004E00000202868617264206C696D6974732C2027 +:1004F000626F6F6C290D0A2432323D002028736F21 +:100500006674206C696D6974732C20626F6F6C293E +:100510000D0A2432313D0020287265706F727420FC +:10052000696E636865732C20626F6F6C290D0A24F5 +:1005300032303D00202861726320746F6C657261F7 +:100540006E63652C206D6D290D0A2431333D00202A +:10055000286A756E6374696F6E206465766961746C +:10056000696F6E2C206D6D290D0A2431323D0029F2 +:100570000D0A2431313D0020287374617475732095 +:100580007265706F7274206D61736B3A0020287011 +:10059000726F62652070696E20696E766572742C68 +:1005A00020626F6F6C290D0A2431303D0020286CC9 +:1005B000696D69742070696E7320696E76657274F6 +:1005C0002C20626F6F6C290D0A24363D00202873A1 +:1005D00074657020656E61626C6520696E76657207 +:1005E000742C20626F6F6C290D0A24353D00290D93 +:1005F0000A24343D00202864697220706F727420D0 +:10060000696E76657274206D61736B3A00290D0A0C +:1006100024333D0020287374657020706F7274203D +:10062000696E76657274206D61736B3A0020287371 +:100630007465702069646C652064656C61792C2038 +:100640006D736563290D0A24323D0020287374659B +:10065000702070756C73652C2075736563290D0AA5 +:1006600024313D0024303D0024242028766965771C +:10067000204772626C2073657474696E6773290D0C +:100680000A2423202876696577202320706172610F +:100690006D6574657273290D0A2447202876696593 +:1006A0007720706172736572207374617465290DAF +:1006B0000A2449202876696577206275696C642070 +:1006C000696E666F290D0A244E20287669657720A9 +:1006D0007374617274757020626C6F636B73290D33 +:1006E0000A24783D76616C756520287361766520F3 +:1006F0004772626C2073657474696E67290D0A24F1 +:100700004E783D6C696E6520287361766520737440 +:10071000617274757020626C6F636B290D0A2443DB +:100720002028636865636B2067636F6465206D6F65 +:100730006465290D0A245820286B696C6C20616C53 +:1007400061726D206C6F636B290D0A24482028723A +:10075000756E20686F6D696E67206379636C6529BB +:100760000D0A7E20286379636C652073746172744E +:10077000290D0A2120286665656420686F6C64294C +:100780000D0A3F202863757272656E742073746160 +:10079000747573290D0A6374726C2D782028726544 +:1007A000736574204772626C290D0A0000002100F5 +:1007B000240027002A002D00300033000101000032 +:1007C000040107010A010D0A00486F6D696E672078 +:1007D0006661696C0050726F6265206661696C00C9 +:1007E00041626F727420647572696E672063796309 +:1007F0006C6500536F6674206C696D6974004861A4 +:100800007264206C696D697400414C41524D3A200C +:10081000003E0D0A002C4C696D3A002C52583A00EB +:100820002C4275663A002C002C57506F733A002CFE +:10083000002C4D506F733A003C446F6F72003C4384 +:100840006865636B003C416C61726D003C486F6D84 +:1008500065003C486F6C64003C52756E003C496416 +:100860006C65005D0D0A00526573746F72696E6786 +:100870002064656661756C74730050676D20456E09 +:100880006400436865636B20446F6F720044697352 +:1008900061626C656400456E61626C656400436111 +:1008A0007574696F6E3A20556E6C6F636B6564008A +:1008B000272448277C2724582720746F20756E6CC6 +:1008C0006F636B00526573657420746F20636F6E85 +:1008D00074696E7565005B005D0D0A003A002C00BE +:1008E0005B5052423A000D0A00496E76616C6964B1 +:1008F0002067636F64652049443A00556E646566FD +:10090000696E656420666565642072617465004D7A +:100910006F64616C2067726F75702076696F6C61AF +:1009200074696F6E00486F6D696E67206E6F74201A +:10093000656E61626C656400416C61726D206C6F04 +:10094000636B004E6F742069646C650045455052BE +:100950004F4D2072656164206661696C2E2055736D +:10096000696E672064656661756C74730056616CAE +:100970007565203C2033207573656300536574747E +:10098000696E672064697361626C65640056616CAE +:100990007565203C203000496E76616C6964207377 +:1009A000746174656D656E7400426164206E756D6E +:1009B00062657220666F726D617400457870656360 +:1009C00074656420636F6D6D616E64206C65747412 +:1009D0006572006572726F723A20006F6B0D0A00CB +:1009E00000002200250028002B002E0031003400DA +:1009F00002010000050108010B01050505050705B9 +:100A000008080808020202020A0A0808040404048A +:100A100001010101010101010303030303030303B6 +:100A2000040707070C0C0C0C0C0C0C0C0202020245 +:100A300006060606060606060B0B0B0B0B0B0B0B2E +:100A400001021020200808102040102040800201E0 +:100A500002010804020101020408102040808040C5 +:100A600020100804020180040201804020100804C4 +:100A70000201080402010102040810204080010262 +:100A800004081020408000000A0B02090C0D0E081B +:100A90000703040100000000000000000000000047 +:100AA0000000000000000000000000000000000046 +:100AB0000000121110000000000000000000000003 +:100AC00000000000000000000000000011241FBE14 +:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D +:100AE000B2E0E0E5F9EF00E00BBF02C007900D9225 +:100AF000AC3AB107D9F725E1ACEAB4E001C01D92E8 +:100B0000A03CB207E1F70E94CF5F0C94A67C78CAA4 +:100B10002F923F924F925F926F927F928F929F920D +:100B2000AF92BF92CF92DF92EF92FF920F931F93FB +:100B3000CF93DF93CDB7DEB7C85CD1090FB6F89479 +:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B +:100B5000D04089E3E8E4F5E1DF011D928A95E9F7E9 +:100B60008AE0E1E8F5E1A9E4B5E101900D928A950A +:100B7000E1F7FE01E756FF4F1082CD54DF4F198297 +:100B80001882C35BD040C155DF4F19821882CF5AFB +:100B9000D040C154DF4F1882CF5BD040C655DF4FE5 +:100BA0001882CA5AD040C255DF4F1882CE5AD04060 +:100BB000E859F109C456DF4FF983E883CC59D04096 +:100BC0009E01235A3F4FC256DF4F39832883CE59A7 +:100BD000D040CE018F5A9F4FC056DF4F99838883F4 +:100BE000C05AD040DE01A959BF4FCE55DF4FB9835F +:100BF000A883C25AD040E059FF4FCC55DF4FF9834C +:100C0000E883C45AD0409C01285F3F4FCD53DF4F4B +:100C100039832883C35CD040C756DF4F8881C959C8 +:100C2000D040C754DF4FE881F981C95BD040E80F5D +:100C3000F11D1081112311F40C94B3159FEB910F4A +:100C40009A3110F00C94C61E8F5FC756DF4F888311 +:100C5000C959D040AE014B565F4FBE0167567F4F1A +:100C6000C754DF4F88819981C95BD0400E941D45E0 +:100C7000882311F40C94C81ECB56DF4FC880D9804E +:100C8000EA80FB80C559D040C701B6010E94897532 +:100C90000E94F672CB54DF4F688379838A839B83EB +:100CA000C55BD040CB54DF4F48805980C55BD040F6 +:100CB000B20180E090E00E9422739B01AC01C70169 +:100CC000B6010E94A87120E030E048EC52E40E9496 +:100CD000DB744B015C0120E030E0A9010E94A074AC +:100CE00020E030E040E05FE387FD05C0C501B401CE +:100CF0000E94A97104C0C501B4010E94A8710E949C +:100D0000F1721B011D3411F40C942F0F24F41734CD +:100D100061F00C945B14103511F40C94C50F13356D +:100D200011F40C94E7130C945B14C756DF4F8881C1 +:100D3000C959D040C754DF4FA881B981C95BD040A1 +:100D4000A80FB11DCD01BAE94B16B8E05B0609F456 +:100D500016C160F4F4ED4F16F7E05F06D1F029E913 +:100D6000421628E0520609F440C0FAC53DE9431690 +:100D700038E0530609F451C3AEE94A16A8E05A0612 +:100D800009F436C5BCE94B16B8E05B0609F0E8C5C6 +:100D900049C21A821982E1E0F0E0EC0FFD1FFF93D7 +:100DA000EF932EE434E03F932F939F938F930E9411 +:100DB0007A760F900F900F900F900F900F9018165B +:100DC00019060CF03BC589819A8190936B0F809333 +:100DD0006A0F11E01093950D8091170D811148C590 +:100DE0000E94FB2B1093170D43C58E010B5E1F4F06 +:100DF0001F930F939E01275D3F4F3F932F937E01DB +:100E0000FDE3EF0EF11CFF92EF92CF55DF4F2881EB +:100E1000C15AD0402F93C056DF4F3881C05AD040BE +:100E20003F9329E132E03F932F939F938F930E944A +:100E30007A760FB6F894DEBF0FBECDBF04970CF4E0 +:100E4000FDC4EF961CAE1DAE1EAE1FAEEF97E5962D +:100E50001CAE1DAE1EAE1FAEE597AB961CAE1DAE12 +:100E60001EAE1FAEAB97A1961CAE1DAE1EAE1FAE42 +:100E7000A1978CE0C456DF4FE881F981CC59D0406E +:100E800011928A95E9F7AE0145585F4F60E070E036 +:100E9000CE018F5A9F4F0E941D45882309F4E8C454 +:100EA000AE014F585F4F60E070E0C7010E941D45E2 +:100EB000882309F4DDC4AE0149595F4F60E070E05A +:100EC000CE0189960E941D45882309F4D1C4AE0144 +:100ED000435A5F4F60E070E0C8010E941D458823BF +:100EE00009F4C6C420E030E044EB52E4E5966CAD72 +:100EF0007DAD8EAD9FADE5970E94A87121EE3EE2DB +:100F000045E652E40E9489726B017C01E5966CAF64 +:100F10007DAF8EAF9FAFE5970E948672EF968CAC47 +:100F20009DACAEACBFACEF97A50194010E94DB7401 +:100F300069837A838B839C83C701B6010E943E75C7 +:100F40009B01AC01C501B4010E94DB746D837E83FB +:100F50008F839887AB968CAD9DADAEADBFADAB9793 +:100F600089879A87AB87BC87A1962CAD3DAD4EADE6 +:100F70005FADA19700E0BE016F5F7F4F37C46596FC +:100F80001CAE1DAE1EAE1FAE659721961CAE1DAEEB +:100F90001EAE1FAE219721E030E02C0F3D1F3F9386 +:100FA0002F938E010B5E1F4F1F930F93C156DF4F80 +:100FB0003881CF59D0403F93C256DF4FA881CE59D8 +:100FC000D040AF9322E432E03F932F939F938F93CF +:100FD0000E947A760FB6F894DEBF0FBECDBF03979E +:100FE0000CF42CC4AE014F5A5F4F60E070E0C801B2 +:100FF0000E941D45882309F43BC4AE01435C5F4F4A +:1010000060E070E0CE0101960E941D45882309F43E +:101010002FC43E01F9E26F0E711C8CE0D3011D92CA +:101020008A95E9F760917C0D70917D0D80917E0D20 +:1010300090917F0D0E94247320E030E040EA52E45A +:101040000E9489722091700D3091710D4091720D46 +:101050005091730D0E94A971CA55DF4F688379833F +:101060008A839B83C65AD0406091800D7091810D18 +:101070008091820D9091830D0E94247320E030E0D6 +:1010800040EA52E40E9489722091740D3091750DEE +:101090004091760D5091770D0E94A971C554DF4F94 +:1010A000688379838A839B83CB5BD0406091840D76 +:1010B0007091850D8091860D9091870D0E9424730B +:1010C00020E030E040EA52E40E9489726B017C012A +:1010D00020E030E044EB52E46091780D7091790D9E +:1010E00080917A0D90917B0D0E94A8719B01AC01BB +:1010F000C701B6010E94A9717B018C016F968EAD6C +:101100009FAD6F978130910509F450C00CF03FC03E +:10111000892B09F0A0C320E030E044EB52E465964F +:101120006CAD7DAD8EAD9FAD65970E94A871659643 +:101130006CAF7DAF8EAF9FAF6597FE01F1964F010B +:101140009E01235D3F4F5901DE0199966D017B01A0 +:101150008C01C554DF4F288139814A815B81CB5B8B +:10116000D040CA55DF4F688179818A819B81C65AF8 +:10117000D0400E94784CA401B501C6010E94194AD2 +:1011800021962CAD3DAD4EAD5FAD2197E2C38230CF +:10119000910519F1039709F05EC365966CAD7DADBD +:1011A0008EAD9FAD65970E94D62C62C365966CADDF +:1011B0007DAD8EAD9FAD6597FE01F1964F019E010D +:1011C000235D3F4F59016301C554DF4F28813981A9 +:1011D0004A815B81CB5BD04015C065962CAD3DAD9F +:1011E0004EAD5FAD6597CE01C1964C01DE019D9677 +:1011F0005D016301CA55DF4F688179818A819B81D6 +:10120000C65AD0400E94784CA401B501C3010E9487 +:10121000194A21962CAD3DAD4EAD5FAD219700E052 +:10122000B30199C38E010B5E1F4F1F930F937E0175 +:10123000B9E2EB0EF11CFF92EF926E01EDE3CE0EE0 +:10124000D11CDF92CF92CF55DF4FF881C15AD040E9 +:10125000FF93C056DF4F2881C05AD0402F932AE514 +:1012600032E03F932F939F938F930E947A760FB62D +:10127000F894DEBF0FBECDBF04970CF4DFC2EF962B +:101280001CAE1DAE1EAE1FAEEF97E5961CAE1DAE9A +:101290001EAE1FAEE597AB961CAE1DAE1EAE1FAECA +:1012A000AB97A1961CAE1DAE1EAE1FAEA197AE01B0 +:1012B00045585F4F60E070E0CE018F5A9F4F0E940B +:1012C0001D45882309F4D4C2AE014F585F4F60E03A +:1012D00070E0C6010E941D45882309F4C9C2AE0111 +:1012E00049595F4F60E070E0C7010E941D458823A7 +:1012F00009F4BEC2AE01435A5F4F60E070E0C8011E +:101300000E941D45882309F4B3C26091840D709139 +:10131000850D8091860D9091870D0E942473CA558A +:10132000DF4F688379838A839B83C65AD04060915C +:10133000800D7091810D8091820D9091830D0E949E +:101340002473C554DF4F688379838A839B83CB5B87 +:10135000D04060917C0D70917D0D80917E0D9091BB +:101360007F0D0E942473FE0139964F019E012B5F71 +:101370003F4F5901DE0111966D01CA55DF4FE880DC +:10138000F9800A811B81C65AD040C554DF4F28819D +:1013900039814A815B81CB5BD0400E945D4DA401C5 +:1013A000B501C6010E94194AEF962CAD3DAD4EAD78 +:1013B0005FADEF9769817A818B819C810E94A971D1 +:1013C00069837A838B839C83E5962CAD3DAD4EADCE +:1013D0005FADE5976D817E818F8198850E94A971AF +:1013E0006D837E838F839887AB962CAD3DAD4EADDC +:1013F0005FADAB9769857A858B859C850E94A971C5 +:1014000069877A878B879C87A1962CAD3DAD4EADC1 +:101410005FADA19700E0B601E9C1C156DF4FB881C9 +:10142000CF59D040BF93C256DF4FE881CE59D0404C +:10143000EF93CD55DF4FF881C35AD040FF93CE557F +:10144000DF4F2881C25AD0402F93CB55DF4F3881D0 +:10145000C55AD0403F93CC55DF4FA881C45AD040E5 +:10146000AF938E0105581F4F1F930F9329E132E070 +:101470003F932F939F938F930E947A760FB6F894A1 +:10148000DEBF0FBECDBF04970CF4D8C1CF56DF4FDF +:10149000188219821A821B82C159D040C357DF4F6C +:1014A000188219821A821B82CD58D040C757DF4F4D +:1014B000188219821A821B82C958D040CB57DF4F3D +:1014C000188219821A821B82C558D0408CE0C056FF +:1014D000DF4FA881B981C05AD0401D928A95E9F7A3 +:1014E000AE014F565F4F60E070E0C8010E941D459D +:1014F000882309F4BDC1AE0143575F4F60E070E03F +:10150000CE018F589F4F0E941D45882309F4B0C11A +:10151000AE0147575F4F60E070E0CE0189599F4FA1 +:101520000E941D45882309F4A3C1AE014B575F4FAC +:1015300060E070E0CE01835A9F4F0E941D458823D2 +:1015400009F496C16091840D7091850D8091860D8E +:101550009091870D0E942473CA55DF4F6883798369 +:101560008A839B83C65AD04020E030E044EB52E4AB +:101570006091780D7091790D80917A0D90917B0D2D +:101580000E94A8716B017C0120E030E040EA52E447 +:10159000CA55DF4F688179818A819B81C65AD040C4 +:1015A0000E9489729B01AC01C701B6010E94A9711A +:1015B000C554DF4F688379838A839B83CB5BD0409C +:1015C0006091800D7091810D8091820D9091830DBD +:1015D0000E942473CB53DF4F688379838A839B8374 +:1015E000C55CD04060917C0D70917D0D80917E0D29 +:1015F00090917F0D0E942473CD53DF4F8880998096 +:10160000C35CD040F1E56F2E712C6C0E7D1EB4E0F2 +:101610006B0E711C5301FE01EF5AFF4F6F01CA554B +:10162000DF4FE880F9800A811B81C65AD040CB5336 +:10163000DF4F288139814A815B81C55CD0400E949F +:101640005D4DCD53DF4F48815981C35CD040B3011C +:10165000C6010E94194A65966CAD7DAD8EAD9FADF9 +:1016600065976996CCACDDACEEACFFAC69979B019D +:10167000AC010E94DB744B015C01A7019601C7011C +:10168000B6010E94DB749B01AC01C501B4010E944C +:10169000A9710E944875CF56DF4F288139814A8150 +:1016A0005B81C159D0400E94A9716B017C01CF566A +:1016B000DF4F688379838A839B83C159D040C357A6 +:1016C000DF4F288139814A815B81CD58D040C55494 +:1016D000DF4F688179818A819B81CB5BD0400E94FA +:1016E000A97121EE3EE245E652E40E948972CA5594 +:1016F000DF4F688379838A839B83C65AD0400E94D8 +:1017000086729B01AC01C701B6010E94DB744B01DC +:101710005C0165966CAF7DAF8EAF9FAF6597CA5584 +:10172000DF4F688179818A819B81C65AD0400E94AF +:101730003E759B01AC01C701B6010E94DB7469963E +:101740006CAF7DAF8EAF9FAF6997C757DF4F2881D2 +:1017500039814A815B81C958D0406D966CAD7DADB1 +:101760008EAD9FAD6D970E94A9716D966CAF7DAFE8 +:101770008EAF9FAF6D978E01035C1F4F24E045E055 +:10178000C501B4010E942D6F69966CAD7DAD8EAD23 +:101790009FAD69970451110924E045E00E942D6F27 +:1017A0006D966CAD7DAD8EAD9FAD6D9704511109F9 +:1017B00024E045E00E942D6FCF56DF4F688179818C +:1017C0008A819B81C159D0400451110924E045E030 +:1017D0000E942D6FCB57DF4F288139814A815B8171 +:1017E000C558D04000E0BE016F5A7F4F81E0B4C0C1 +:1017F00021E030E02C0F3D1F3F932F938E010B5EB5 +:101800001F4F1F930F937E0139E2E30EF11CFF92ED +:10181000EF926E01ADE3CA0ED11CDF92CF9223E8A6 +:1018200032E03F932F939F938F930E947A760FB667 +:10183000F894DEBF0FBECDBF049784F41F9281E001 +:101840008F938DE092E09F938F930E94723F0F9051 +:101850000F900F900F9082E390E084C0AE01455846 +:101860005F4F60E070E0C6010E941D45811103C01A +:1018700080E090E077C0AE014F585F4F60E070E0CD +:10188000C7010E941D45882399F3AE0149595F4F56 +:1018900060E070E0C8010E941D45882349F3AE0155 +:1018A000435A5F4F60E070E0CE0101960E941D45F3 +:1018B0008823F1F220E030E044EB52E4EF966CAD87 +:1018C0007DAD8EAD9FADEF970E94A8717B018C011D +:1018D000EF966CAF7DAF8EAF9FAFEF978CE0C056A9 +:1018E000DF4FA881B981C05AD0401D928A95E9F78F +:1018F000AB962CAD3DAD4EAD5FADAB97E5966CAD07 +:101900007DAD8EAD9FADE597CD53DF4F888099803B +:10191000C35CD040E1E56E2E712C6C0E7D1EB4E0F0 +:101920006B0E711C5301FE01EF5AFF4F6F010E94B5 +:10193000784CCD53DF4F48815981C35CD040B3010F +:10194000C6010E94194AA1962CAD3DAD4EAD5FADCA +:10195000A19700E0B60180E00E94084690E002C036 +:1019600081E090E09C01215031092230310510F0D6 +:101970000C942F1FF8E24F16510409F414C280F59D +:1019800034E14316510498F481E14816510408F0FB +:1019900061C194E04916510409F474C008F4E3C02D +:1019A000BAE04B16510409F45EC00C94D41EECE16D +:1019B0004E16510409F457C038F426E1421651047A +:1019C00008F4A2C10C94D41E3EE14316510409F45C +:1019D0004AC086E24816510409F4C5C00C94D41ECE +:1019E0009DE34916510409F4D3C110F5B5E34B1634 +:1019F000510409F447C060F4FBE24F16510409F4A6 +:101A000095C121E34216510409F490C10C94D41EEF +:101A10003CE34316510410F00C94D41ECB54DF4F1A +:101A20008881C55BD040865380934F15A9E0AAC139 +:101A30008CE54816510460F49AE54916510408F003 +:101A40001FC1A0E54A16510409F49BC00C94D41E92 +:101A5000BCE54B16510439F0EFE54E16510408F47D +:101A60003CC10C94D41E2114310411F00C94E81ED6 +:101A7000C255DF4FF881CE5AD040FF2309F445C04C +:101A80000C94CA1E2CE14216510491F148F484E0F2 +:101A90004816510479F09AE049165104E1F08AC1E0 +:101AA000AEE14A165104D9F1B5E34B16510409F4DD +:101AB00056C080C181E054C0BFE14B16510408F00C +:101AC00042C0EAE04E16510441F4E1E0C255DF4F56 +:101AD000E883CE5AD04082E043C0FCE14F16510467 +:101AE00009F078C1F1E0C255DF4FF883CE5AD040FB +:101AF0002114310441F02AE02216310411F00C9433 +:101B0000D41E84E010C083E00EC0AEE14A1651043A +:101B100099F631E0C255DF4F3883CE5AD0402114B8 +:101B2000310449F485E080934815CA55DF4F188287 +:101B3000C65AD0405AC18AE02816310411F00C94DC +:101B4000D41E86E0F0CF25E34216510411F00C9428 +:101B5000141F91E0C255DF4F9883CE5AD04087E0E2 +:101B60008093481527C1C255DF4FE881CE5AD04037 +:101B7000E1110C94CA1EF2E0C255DF4FF883CE5A31 +:101B8000D04022E04216510419F158F44114510496 +:101B9000D9F04A94452809F013C181E08093491592 +:101BA0000FC196E249165104C1F0A0E54A1651044E +:101BB00009F44BC0B3E04B16510409F001C183E0B6 +:101BC0008093491531E09AC010924915E1E0ECC0CC +:101BD00082E08093491521E088C08EE12816310407 +:101BE00001F180F4A4E12A16310411F00C94D41E02 +:101BF00084E080934915F1E0CA55DF4FF883C65A57 +:101C0000D040F3C0B8E22B163104A9F0E2E32E165F +:101C1000310411F00C94D41E87E08093491581E0C3 +:101C200039C085E08093491521E0CA55DF4F2883EC +:101C3000C65AD040DAC086E08093491531E0CA55D3 +:101C4000DF4F3883C65AD040D0C088E08093491512 +:101C500091E062C0A2E14A16510441F0B3E14B1693 +:101C6000510449F010924D15E2E09EC081E080934E +:101C70004D15F2E0A6C082E080934D1522E035C0FC +:101C800021143104B9F43AE54316510449F4109291 +:101C90004C1583E0CA55DF4F8883C65AD040A5C093 +:101CA00081E080934C1593E0CA55DF4F9883C65A64 +:101CB000D0409BC0AAE02A16310411F00C94D41E27 +:101CC000BAE54B16510411F40C94D41EE4E0CA5545 +:101CD000DF4FE883C65AD04088C0FDE54F16510457 +:101CE00051F481E080934A1525E0CA55DF4F2883DF +:101CF000C65AD0406BC010924A1535E0CA55DF4F26 +:101D00003883C65AD04062C084E14816510451F469 +:101D100081E080934B1596E0CA55DF4F9883C65AF1 +:101D2000D04054C010924B15A6E02CC0C255DF4FD6 +:101D3000B881CE5AD040B1110C94CA1EE1E34E16C0 +:101D4000510451F410924E15F8E0CA55DF4FF88354 +:101D5000C65AD04023E044C03AE02316310411F0C3 +:101D60000C94D41E81E080934E1588E0CA55DF4F55 +:101D70008883C65AD04093E0C255DF4F9883CE5A2D +:101D8000D04033C0CA55DF4FA883C65AD0401EC0CA +:101D9000232811F00C94D41EBAE0CA55DF4FB88343 +:101DA000C65AD04022C0E7E0CA55DF4FE883C65A82 +:101DB000D0400CC0CA55DF4F1882C65AD04006C06A +:101DC000F1E0CA55DF4FF883C65AD040232869F0A6 +:101DD0000C94FB1ECA55DF4F1882C65AD04021E032 +:101DE000C255DF4F2883CE5AD040C155DF4FE8811E +:101DF000F981CF5AD040CF01A0E0B0E0CA55DF4F03 +:101E00000880C65AD04004C0B695A7959795879587 +:101E10000A94D2F780FF03C085E10C942F1F81E064 +:101E200090E0A0E0B0E0CA55DF4F0880C65AD0402D +:101E300004C0880F991FAA1FBB1F0A94D2F7C1556F +:101E4000DF4F28813981CF5AD040282B392BC155FB +:101E5000DF4F39832883CF5AD0400C940C06672B70 +:101E600011F00C94FB1EC756DF4F8881C959D04032 +:101E7000C754DF4F68817981C95BD040680F711DFD +:101E8000AE0147565F4FCB54DF4F88819981C55BC8 +:101E9000D0400E94491F9C01215031092230310558 +:101EA00010F00C942F1F36E04316510428F483E001 +:101EB0004816510490F026C098E04916510410F4D9 +:101EC0000C94D41EAAE04A16510408F440C0BEE1A6 +:101ED0004B16510411F00C94D41EE2E04E1651043E +:101EE00061F0FEE14F16510441F0452809F046C06B +:101EF00081E0809350152BE032C082E08093501532 +:101F00003BE036C084E04816510471F095E0491674 +:101F10005104A1F081E080935215ACE0CA55DF4F27 +:101F2000A883C65AD04022C482E080935215BCE0F8 +:101F3000CA55DF4FB883C65AD04018C41092521504 +:101F4000ECE0CA55DF4FE883C65AD0400FC4F9E031 +:101F50004F16510451F082E0809351152DE0CA557F +:101F6000DF4F2883C65AD04001C4109251153DE07E +:101F7000CA55DF4F3883C65AD040F8C38BE0CA55E4 +:101F8000DF4F8883C65AD040F1C3672B11F00C9401 +:101F9000FB1EC756DF4F8881C959D040C754DF4F59 +:101FA000E881F981C95BD040E80FF11D27EB4216AB +:101FB00028E0520609F4E7C208F05EC18CE9481631 +:101FC00088E0580609F499C108F076C0A9E94A16D4 +:101FD000A8E05A0609F48BC108F05FC0E8E94E1684 +:101FE000E8E05E0609F0B8C384E16E0199E2C90E2B +:101FF000D11CD601E82F1D92EA95E9F77E01F5E1A3 +:10200000EF0EF11CD701E82F1D92EA95E9F7C456AF +:10201000DF4FA881B981CC59D0401D928A95E9F74C +:1020200080E090E00E94044FCB54DF4F68837983B7 +:102030008A839B83C55BD04081E090E00E94044F7F +:102040002B013C0182E090E00E94044F4B015C01B7 +:10205000860124E045E0CB54DF4F688179818A8195 +:102060009B81C55BD0400E942D6F870124E045E035 +:10207000C301B2010E942D6F0451110924E045E013 +:10208000C501B4010E942D6FFF92EF92DF92CF92B3 +:102090001F930F938CEA92E03DC3FAE94F16F8E0E4 +:1020A0005F0609F427C12BE9421628E0520609F021 +:1020B00053C388EC92E023C13EE9431638E053064F +:1020C00009F427C108F420C19CEA491698E0590692 +:1020D00009F4B5C1ADEA4A16A8E05A0609F03CC3B6 +:1020E000A1961CAE1DAE1EAE1FAEA19765961CAE8E +:1020F0001DAE1EAE1FAE659721961CAE1DAE1EAE68 +:102100001FAE219784E1DE019996C656DF4FB98351 +:10211000A883CA59D040E82F1D92EA95E9F71E011D +:10212000F5E12F0E311CD101E82F1D92EA95E9F758 +:10213000C456DF4FA881B981CC59D0401D928A95F1 +:10214000E9F780E090E00E94044FCB54DF4F6883B2 +:1021500079838A839B83C55BD04081E090E00E94B5 +:10216000044FC554DF4F688379838A839B83CB5B9D +:10217000D04082E090E00E94044F20E030E044EB49 +:1021800052E40E94A8712B013C01FE01FD964F0113 +:102190009E012F5A3F4F5901CE01835A9F4F6C0128 +:1021A00083017201C554DF4F288139814A815B81E7 +:1021B000CB5BD040CB54DF4F688179818A819B8192 +:1021C000C55BD0400E94784CA401B501C6010E94B5 +:1021D000194AA1966CAD7DAD8EAD9FADA197659668 +:1021E000CCACDDACEEACFFAC65979B01AC010E94C2 +:1021F000DB744B015C01A7019601C701B6010E9487 +:10220000DB749B01AC01C501B4010E94A9710E945D +:1022100048758E01075D1F4F24E045E00E942D6F39 +:1022200020E030E044EB52E4C301B2010E94A97106 +:10223000810124E045E00E942D6F21966CAD7DADBB +:102240008EAD9FAD21970451110924E045E00E9415 +:102250002D6F1F930F933F922F92C556DF4FB8817A +:10226000CB59D040BF93C656DF4FE881CA59D04002 +:10227000EF938AEE92E04EC2B0EC4B16B8E05B06EC +:1022800009F4ADC1D0F439EB431638E0530609F434 +:1022900091C108F484C19AEB491698E0590609F4F3 +:1022A00091C1ABEB4A16A8E05A0609F055C28091DD +:1022B000020185FB882780F990C1B2EC4B16B8E08B +:1022C0005B0609F4FDC108F4CCC133EC431638E0D9 +:1022D000530609F407C280E6481689E0580609F05B +:1022E0003BC28091630D8F938091620D21C28AEB76 +:1022F00092E005C08CE69FE002C08FEC92E09F93D5 +:102300008F9383EC92E017C28BE19DE09F938F93B4 +:1023100093C080818E3409F0C8C18181805384309C +:1023200008F0C3C194E16E013DE3C30ED11CD60198 +:10233000E92F1D92EA95E9F77E01F9E2EF0EF11C13 +:10234000D701E92F1D92EA95E9F75E01F5E1AF0E9D +:10235000B11CD501E92F1D92EA95E9F7C456DF4F6C +:10236000A881B981CC59D0401D929A95E9F7823065 +:10237000E1F0833031F1813061F082E090E00E9441 +:10238000044F850124E045E00E942D6FBF92AF927B +:1023900053C080E090E00E94044F860124E045E0B5 +:1023A0000E942D6FDF92CF9247C081E090E00E94A3 +:1023B000044F870124E045E00E942D6FFF92EF92C9 +:1023C0003BC08091620D9091630D0497029748F491 +:1023D0006091660F7091670F8091680F9091690FFF +:1023E00022C020E030E040E05FE3609100027091A5 +:1023F000010280910202909103020E94A87120E0E4 +:1024000030E040E05FE30E94DB7420E030E044E332 +:1024100053E40E94DB749B01AC0160E070E084E354 +:1024200093E40E94A8718E010F5F1F4F24E045E0E6 +:102430000E942D6F1F930F9386ED92E07CC1A196B1 +:102440001CAE1DAE1EAE1FAEA19765961CAE1DAE96 +:102450001EAE1FAE659721961CAE1DAE1EAE1FAE02 +:10246000219784E19E01275D3F4FC656DF4F398398 +:102470002883CA59D040D901E82F1D92EA95E9F77F +:102480001E01F5E12F0E311CD101E82F1D92EA95B6 +:10249000E9F7C456DF4FA881B981CC59D0401D92CD +:1024A0008A95E9F780E090E00E94044F2B013C01FF +:1024B00081E090E00E94044FCB54DF4F6883798322 +:1024C0008A839B83C55BD04082E090E00E94044FEA +:1024D00020E030E044EB52E40E94A871FE01FD963A +:1024E0004F019E012F5A3F4F5901DE01A35ABF4FA2 +:1024F0006D017B018C01CB54DF4F288139814A81EA +:102500005B81C55BD040C301B2010E94784CA4013D +:10251000B501C6010E94194AA1966CAD7DAD8EAD84 +:102520009FADA1978E01075D1F4F24E045E00E94FB +:102530002D6F65966CAD7DAD8EAD9FAD65978101BC +:1025400024E045E00E942D6F21966CAD7DAD8EADEF +:102550009FAD21970451110924E045E00E942D6FA1 +:102560001F930F933F922F92C556DF4FF881CB599F +:10257000D040FF93C656DF4F2881CA59D0402F93D1 +:102580008CED92E0C7C0A49B11C08FE30E94075C52 +:102590008A30910558F08734910550F005C047996D +:1025A00005C00898009B04C081E017C080E015C0FA +:1025B00082E013C082B386958695869591E089273F +:1025C00081700BC08BE30E94075C21E0853691058A +:1025D00008F420E01F922F93ACC01F92A9C081E0A5 +:1025E00090E08C0F9D1F9F938F9388EF92E09F93B5 +:1025F0008F93FF93EF930E947A760F900F900F9036 +:102600000F900F900F90181619060CF041C02981F9 +:102610003A812634310508F048C0F901EA57F54FF0 +:102620008491F901E05CF54F1491F901E650F64F01 +:102630000491002391F081110E94835BE02FF0E070 +:10264000EE0FFF1FEE5EFC4FA591B491EC911E239F +:1026500081E090E021F480E002C080E090E09F9370 +:1026600067C0A1E0B0E0AC0FBD1FBF93AF9388EF90 +:1026700092E09F938F93FF93EF930E947A760F904F +:102680000F900F900F900F900F901816190684F06E +:102690001F9281E08F938DE092E09F938F930E9431 +:1026A000723F0F900F900F900F9082E390E056C012 +:1026B00089819A8180319105C0F70E94075CCFCF54 +:1026C0008091610D8F938091600D8F9380915F0D4C +:1026D0008F9380915E0D8F9380915D0D8F9380918C +:1026E0005C0D15C080E090E00E94B24E182F092FBB +:1026F00081E090E00E94B24EF82EE92E82E090E058 +:102700000E94B24EEF92FF920F931F939F938F936D +:102710008CEF92E09F938F9388E29DE09F938F933D +:102720000E944C760FB6F894DEBF0FBECDBF11C02D +:102730008F9382EB93E09F938F9388E29DE09F932A +:102740008F930E944C760F900F900F900F900F90E8 +:102750000F9080E090E002C081E090E09C01215069 +:1027600031092230310510F00C942F1FC155DF4F75 +:10277000E881F981CF5AD040CF01A0E0B0E0CA553E +:10278000DF4F0880C65AD04004C0B695A7959795EC +:1027900087950A94D2F780FD3FCB81E090E0A0E0DE +:1027A000B0E0CA55DF4F0880C65AD04004C0880F39 +:1027B000991FAA1FBB1F0A94D2F7E82BF92BC1550A +:1027C000DF4FF983E883CF5AD0400C940C06672B77 +:1027D00011F00C94FB1EF8EE4F16F3E05F0641F08B +:1027E0002CE4421624E0520649F50E94DD4523C040 +:1027F000C756DF4F8881C959D040C754DF4FE881A1 +:10280000F981C95BD040E80FF11D80818635C9F49C +:10281000818180538230A8F49FB7813029F0F894E9 +:102820008091D914886004C0F8948091D914826092 +:102830008093D9149FBF80E090E005C081E090E0D4 +:1028400002C082E390E09C01215031092230310521 +:1028500010F00C942F1FC155DF4FE881F981CF5A3A +:10286000D040CF01A0E0B0E0CA55DF4F0880C65A83 +:10287000D04004C0B695A795979587950A94D2F74E +:1028800080FDCACA81E090E0A0E0B0E0CA55DF4F09 +:102890000880C65AD04004C0880F991FAA1FBB1FCA +:1028A0000A94D2F7E82BF92BC155DF4FF983E8835F +:1028B000CF5AD04095C0812F110F990BAA0BBB0B9B +:1028C000FC01E654F109E531F10510F00C94D41E39 +:1028D0008827EE58FF4F8F4F0C941976C0925315EE +:1028E000D0925415E0925515F0925615CA55DF4F07 +:1028F0001882C65AD040DAC0C0925715D0925815E7 +:10290000E0925915F0925A15C154DF4FF881CF5B10 +:10291000D040F160C154DF4FF883CF5BD04021E05D +:102920004FC0C0925B15D0925C15E0925D15F0929D +:102930005E15C154DF4F3881CF5BD0403260C15447 +:10294000DF4F3883CF5BD04082E05BC0C0925F1521 +:10295000D0926015E0926115F0926215C154DF4F7C +:102960009881CF5BD0409460C154DF4F9883CF5B98 +:10297000D040A3E060C0CB54DF4FB881C55BD040EE +:10298000B0936315E4E071C0C701B6010E94F17213 +:102990006093641570936515809366159093671521 +:1029A000F5E0CA55DF4FF883C65AD0407FC0C092C9 +:1029B0006815D0926915E0926A15F0926B1526E0C1 +:1029C000CA55DF4F2883C65AD04070C0C0926C15DC +:1029D000D0926D15E0926E15F0926F1537E061C0E0 +:1029E000CB56DF4F88819981AA81BB81C559D040E0 +:1029F0008093701590937115A0937215B093731511 +:102A000088E0CA55DF4F8883C65AD0404FC0C09275 +:102A10007515D0927615E0927715F0927815C65517 +:102A2000DF4F9881CA5AD0409160C655DF4F9883D6 +:102A3000CA5AD040AAE0CA55DF4FA883C65AD04030 +:102A400035C0C0927915D0927A15E0927B15F0923C +:102A50007C15C655DF4FB881CA5AD040B260C65502 +:102A6000DF4FB883CA5AD040EBE0CA55DF4FE88346 +:102A7000C65AD0401BC0C0927D15D0927E15E09200 +:102A80007F15F0928015C655DF4FF881CA5AD040A5 +:102A9000F460C655DF4FF883CA5AD0402CE090CF7F +:102AA00039E0CA55DF4F3883C65AD040CA55DF4F88 +:102AB0008881C65AD040082FCD54DF4FE881F98174 +:102AC000C35BD040CF01A0E0B0E0CA55DF4F088023 +:102AD000C65AD04004C0B695A795979587950A9495 +:102AE000D2F780FF02C00C94CC1E81E693E0A0E0F8 +:102AF000B0E0CA55DF4F0880C65AD04004C0B69532 +:102B0000A795979587950A94D2F780FF11C020E08A +:102B100030E0A901CB56DF4F688179818A819B81A2 +:102B2000C559D0400E94827287FF02C00C94CE1E0D +:102B300081E090E0A0E0B0E004C0880F991FAA1FD8 +:102B4000BB1F0A95D2F7CD54DF4F28813981C35B73 +:102B5000D040282B392BCD54DF4F39832883C35BDA +:102B6000D0400C940C06C655DF4F3881CA5AD0406D +:102B7000332369F0C255DF4F8881CE5AD04081118E +:102B800006C092E0C255DF4F9883CE5AD040CD5454 +:102B9000DF4FA881C35BD040A5FF0FC080916415B3 +:102BA00090916515A0916615B0916715803896498A +:102BB000A849B10514F00C94D01E80914A158130BB +:102BC00091F4C255DF4FF881CE5AD040F23009F06F +:102BD00040C0CD54DF4F2881C35BD04020FD02C0F0 +:102BE0000C94DA1E36C080918215811132C0CD540A +:102BF000DF4F3881C35BD04030FF1BC080914B1545 +:102C0000813039F523E333E34BEC51E46091531504 +:102C10007091541580915515909156150E94DB7452 +:102C200060935315709354158093551590935615D2 +:102C300010C080918F1590919015A0919115B09131 +:102C400092158093531590935415A0935515B093F6 +:102C50005615CD54DF4F88819981C35BD04090FDDC +:102C600010C080918B1590918C15A0918D15B0910D +:102C70008E158093701590937115A0937215B09373 +:102C80007315809148158130B9F4CD54DF4F988188 +:102C9000C35BD04096FD03C08CE10C942F1FCD5434 +:102CA000DF4FA881B981C35BD040AF7BCD54DF4FEC +:102CB000B983A883C35BD04080914D158823A1F0D0 +:102CC000813021F1CB54DF4F1882C55BD040F2E058 +:102CD000C754DF4FF883C95BD04021E0CA55DF4FAE +:102CE0002883C65AD04023C0B2E0CB54DF4FB8830C +:102CF000C55BD040E1E0C754DF4FE883C95BD040FB +:102D0000CA55DF4F1882C65AD04011C031E0CB54AB +:102D1000DF4F3883C55BD040C754DF4F1882C95B93 +:102D2000D04082E0CA55DF4F8883C65AD040809198 +:102D30004B15813049F0C255DF4F9881CE5AD040B3 +:102D4000933009F043C036C0B8E4EB2EB5E1FB2E5A +:102D500000E010E0C655DF4FA881CA5AD0408A2E45 +:102D6000912CA12CB12CD501C401002E04C0B69524 +:102D7000A795979587950A94D2F780FF12C023E311 +:102D800033E34BEC51E4F70165A576A587A590A93F +:102D90000E94DB74D7019D966D937D938D939C93D8 +:102DA000D0970F5F1F4FB4E0EB0EF11C03301105FD +:102DB000D1F6C1CF80914E15813041F4C655DF4F19 +:102DC000E881CA5AD040E43009F0ECC78CE0E4EA6C +:102DD000F5E1DE01119601900D928A95E1F7C1555A +:102DE000DF4F28813981CF5AD04031FD08C0109182 +:102DF00048151230C1F0183009F4EAC058C180916A +:102E00004F15873018F08DE10C942F1F9091871586 +:102E1000891769F3BE016F5F7F4F0E94373D88239A +:102E200009F4D4C7E4CFC655DF4F3881CA5AD04021 +:102E3000311103C08AE10C942F1FCD54DF4F8881DC +:102E40009981C35BD04080759927892B09F424CFE1 +:102E5000609168157091691580916A1590916B1554 +:102E60000E9489750E94F672673068F6809163153A +:102E7000843151F0823009F097C7CD54DF4F8881FB +:102E8000C35BD04087FD90C7CD54DF4FA881B98187 +:102E9000C35BD040AF7ACD54DF4FB983A883C35B07 +:102EA000D040662321F022242A94260E02C02090CE +:102EB0004F15BE016B5E7F4F822D0E94373D8823E8 +:102EC00009F484C7309063158090BC159090BD15AF +:102ED000A090BE15B090BF15A8E4CA2EA5E1DA2EC9 +:102EE0008E010B5E1F4FE1E8F5E1C155DF4FF9831D +:102EF000E883CF5AD040E12CF12CC655DF4FF88142 +:102F0000CA5AD0404F2E512C612C712CD301C201D2 +:102F10000E2C04C0B695A795979587950A94D2F77D +:102F200080FF3BC024E132122EC0C155DF4FA88183 +:102F3000B981CF5AD0409F962D913D914D915C9192 +:102F4000D29757966D917D918D919C915A970E9441 +:102F5000A871F60125A536A547A550A90E94A8711C +:102F6000D8016D937D938D939C931397B2E0EB12F0 +:102F700014C0A50194010E94A871F80160837183B7 +:102F8000828393830AC0F60185A596A5A7A5B0A95B +:102F9000F80180839183A283B383FFEFEF1AFF0AC6 +:102FA00024E0C20ED11C0C5F1F4FC155DF4F88813A +:102FB0009981CF5AD0400496C155DF4F99838883B9 +:102FC000CF5AD04093E0E916F10409F09FCF4CC1ED +:102FD000C655DF4FA881CA5AD040AA2309F42ACF88 +:102FE0008090BC159090BD15A090BE15B090BF15F7 +:102FF000F1E8CF2EF5E1DF2EFE0131961F0108E446 +:1030000015E1E12CF12C4A2E512C612C712CD301AD +:10301000C2010E2C04C0B695A795979587950A9482 +:10302000D2F780FF29C0D1012D913D914D915C9146 +:10303000F6016789708D818D928D0E94A871D801EB +:103040009D962D913D914D915C91D0970E94A871D4 +:10305000F80165A776A787A790ABF2E0EF1216C03C +:10306000A50194010E94A871D8019D966D937D934E +:103070008D939C93D0970AC0F60187A590A9A1A92A +:10308000B2A9F80185A796A7A7A7B0ABFFEFEF1AE3 +:10309000FF0A24E0C20ED11C34E0230E311C0C5F69 +:1030A0001F4F83E0E816F10409F0B1CFDCC0C25530 +:1030B000DF4F9881CE5AD040933009F49DC0C65559 +:1030C000DF4FA881CA5AD040AA2309F4C2C0009198 +:1030D0004C154090BC155090BD156090BE15709079 +:1030E000BF1571E8A72E75E1B72EE8E4EE2EE5E1F5 +:1030F000FE2EFE0131964F01C12CD12C8A2F90E07B +:10310000A0E0B0E0C155DF4F88839983AA83BB83D9 +:10311000CF5AD040C155DF4F88819981AA81BB81A8 +:10312000CF5AD0400C2C04C0B695A795979587959B +:103130000A94D2F780FD0BC0F5018789908DA18D8F +:10314000B28DF70185A796A7A7A7B0AB43C01730EC +:1031500009F440C001112BC0D5019F962D913D91DE +:103160004D915C91D297F40160817181828193814C +:103170000E94A971D7019D962D913D914D915C9131 +:10318000D0970E94A971F70165A776A787A790AB92 +:10319000F2E0CF121FC0A30192010E94A971D701D2 +:1031A0009D966D937D938D939C93D09713C0F5015D +:1031B0002789308D418D528DD7019D966D917D91DE +:1031C0008D919C91D0970E94A971F70165A776A770 +:1031D00087A790ABFFEFCF1ADF0A24E0A20EB11C45 +:1031E00034E0E30EF11C84E0880E911C93E0C916D4 +:1031F000D10409F08FCF29C61530A9F0173071F12D +:10320000133089F5C655DF4FA881CA5AD040A111A5 +:1032100005C0C255DF4F1882CE5AD040BE016B5E4A +:103220007F4F86E010C0C655DF4FB881CA5AD040E4 +:10323000B11105C0C255DF4F1882CE5AD040BE0131 +:103240006B5E7F4F87E00E94373D882309F4BEC53F +:103250000AC0153079F3173009F0F3C5809149158C +:10326000823008F0A3C5212C30904915E8E03E12C9 +:1032700011C0C655DF4FF881CA5AD040FF2309F468 +:1032800005C3C255DF4F2881CE5AD040213009F006 +:103290008FC511C3C255DF4F3881CE5AD04032306E +:1032A00009F0F4C2311009C0C655DF4F8881CA5AEF +:1032B000D040882309F4F1C2FEC220E030E0A90129 +:1032C0006091531570915415809155159091561534 +:1032D0000E948272882309F46DC593E0931538F03B +:1032E000A2E03A1690F4B1E03B1631F0E4C2E7E018 +:1032F000E31508F0BEC2DFC2C655DF4FF881CA5AD7 +:10330000D040FF2309F4C9C2D6C2C655DF4F288179 +:10331000CA5AD040222309F48DCDCA55DF4F988177 +:10332000C65AD040892F90E0C155DF4F99838883DA +:10333000CF5AD040C754DF4FB881C95BD040AB2FC4 +:10334000B0E0CD53DF4FB983A883C35CD04081E0A8 +:1033500090E0A0E0B0E06C017D01CA55DF4F08802D +:10336000C65AD04004C0CC0CDD1CEE1CFF1C0A94D5 +:10337000D2F7C754DF4F0880C95BD04004C0880F24 +:10338000991FAA1FBB1F0A94D2F7C82AD92AEA2A72 +:10339000FB2A822F90E0A0E0B0E08C219D21AE219D +:1033A000BF21892B8A2B8B2B09F406C5C155DF4F12 +:1033B00088819981CF5AD040880F991F880F991F13 +:1033C000FC01E85BFA4EDC01AF57BA4E57962D91DF +:1033D0003D914D915C915A9765A576A587A590A9D9 +:1033E0000E94A8714B015C01CD53DF4F8881998108 +:1033F000C35CD040880F991F880F991FFC01E85BC0 +:10340000FA4EDC01AF57BA4E57962D913D914D9132 +:103410005C915A9765A576A587A590A90E94A87189 +:10342000C655DF4F688379838A839B83CA5AD0400D +:10343000CD54DF4F08811981C35BD040007811273C +:10344000CD54DF4FE881C35BD040E7FF15C1CD54B9 +:10345000DF4F28813981C35BD0402F77CD54DF4FB8 +:1034600039832883C35BD0400E94C76B882311F047 +:1034700081E2F5C480914B158130B1F423E333E34D +:103480004BEC51E460916C1570916D1580916E1547 +:1034900090916F150E94DB7460936C1570936D159D +:1034A00080936E1590936F1540906C1550906D152C +:1034B00060906E1570906F15A5019401C501B4015F +:1034C0000E94DB74C154DF4F688379838A839B83B6 +:1034D000CF5BD040C655DF4F288139814A815B815F +:1034E000CA5AD040CA01B9010E94DB74C554DF4FEB +:1034F000688379838A839B83CB5BD04020E030E074 +:1035000040E850E4C301B2010E94DB74A3019201C0 +:103510000E94DB74C154DF4F288139814A815B816D +:10352000CF5BD0400E94A871C554DF4F28813981FC +:103530004A815B81CB5BD0400E94A8716B017C010A +:1035400020E030E0A9010E94827287FD37C4C701E4 +:10355000B6010E9448756B017C01C554DF4F28817C +:1035600039814A815B81CB5BD040C154DF4F688198 +:1035700079818A819B81CF5BD0400E94A9710E9492 +:1035800048759B01AC01C701B60190580E94897231 +:103590006B017C0133E0331204C0F7FAF094F7F8C2 +:1035A000F09420E030E0A901C301B2010E948272D0 +:1035B00087FF0FC0F7FAF094F7F8F094D301C20137 +:1035C000B05880936C1590936D15A0936E15B093C1 +:1035D0006F15C155DF4F08811981CF5AD040000FB8 +:1035E000111F000F111F045B1A4EC655DF4F2881B3 +:1035F00039814A815B81CA5AD040C701B6010E9415 +:10360000DB749B01AC01C501B4010E94A87120E0EC +:1036100030E040E05FE30E94DB74D8011B966D93BD +:103620007D938D939C931E97CD53DF4F0881198115 +:10363000C35CD040000F111F000F111F045B1A4E16 +:10364000A5019401C701B6010E94DB74C655DF4F86 +:10365000288139814A815B81CA5AD0400E94A97170 +:1036600020E030E040E05FE30E94DB74F801638714 +:103670007487858796871FC1C154DF4FF881CF5B60 +:10368000D0404F2E512C612C712CC420D520E62027 +:10369000F720CD28CE28CF2809F492C3CD54DF4F90 +:1036A00028813981C35BD040217FCD54DF4F3983DE +:1036B0002883C35BD04080914B15813009F491C0C1 +:1036C000C155DF4FE881F981CF5AD040EE0FFF1F7F +:1036D000EE0FFF1FE45BFA4EC384D484E584F684C6 +:1036E000A7019601C501B4010E94A8712B013C01FC +:1036F000CD53DF4FE881F981C35CD040EE0FFF1F4F +:10370000EE0FFF1FE45BFA4E83859485A585B68591 +:10371000C155DF4F88839983AA83BB83CF5AD0409A +:103720009C01AD01C655DF4F688179818A819B81FB +:10373000CA5AD0400E94A8714B015C01A3019201BA +:10374000C301B2010E94DB742B013C01A50194016D +:10375000C501B4010E94DB749B01AC01C301B2013D +:103760000E94A9710E9448754B015C01A701960156 +:10377000C701B6010E94DB746B017C01C155DF4FAC +:10378000288139814A815B81CF5AD040CA01B90171 +:103790000E94DB749B01AC01C701B6010E94A971B4 +:1037A0000E9448756B017C0160936C1570936D15D8 +:1037B00080936E1590936F159B01AC01C501B40108 +:1037C0000E94A8714B015C01E894B7F82AE037ED3C +:1037D00043EA5BE3C501B4010E94A074181664F1CA +:1037E0006AC088E4E82E85E1F82ED301C201002EDC +:1037F00004C0B695A795979587950A94D2F780FF50 +:1038000012C023E333E34BEC51E4D7011F966D91D3 +:103810007D918D919C9152970E94DB74F70167878F +:10382000708B818B928B0F5F1F4FF4E0EF0EF11CBA +:1038300003301105D1F644CF20E030E040E05FE3F3 +:10384000C501B4010E94A07418160CF411CE2FE625 +:1038500032E143E85AE3C701B6010E94DB749B01E1 +:10386000AC01C501B4010E94A07418160CF400CE7E +:1038700022C0C655DF4F2881CA5AD040222309F4FE +:10388000D9CA0E94C76B8111F3CD15C0C255DF4F55 +:103890003881CE5AD04031110EC0CD54DF4F8881CF +:1038A0009981C35BD0408E7D9C7FC255DF4F1882CB +:1038B000CE5AD04008C0CD54DF4F88819981C35B78 +:1038C000D0408E7D907E892B09F07CC2809164155A +:1038D00090916515A0916615B09167158093941528 +:1038E00090939515A0939615B093971580914A15CE +:1038F000809382158091531590915415A091551580 +:10390000B091561580938F1590939015A0939115B3 +:10391000B0939215C0907015D0907115E09072150B +:10392000F0907315A701960160918B1570918C151D +:1039300080918D1590918E150E9482728823F9F0E6 +:1039400010918A15112359F080912B15823039F08E +:103950000E94AA6BB701A601812F0E94D23B8091E1 +:10396000701590917115A0917215B0917315809397 +:103970008B1590938C15A0938D15B0938E15809117 +:103980007415809393151091521580918A158117A3 +:10399000B9F080912B15823079F0C0908B15D090C2 +:1039A0008C15E0908D15F0908E150E94AA6BB701D2 +:1039B000A601812F0E94D23B8091521580938A15D7 +:1039C0001091511580918915811781F080912B15E7 +:1039D000823041F00E94AA6B123011F45C9A02C04E +:1039E0000E94CD5F80915115809389158091481573 +:1039F000813089F080914D158093851580914B150C +:103A000080938315C255DF4F8881CE5AD0408330D2 +:103A100009F074C054C080912B15823059F3809006 +:103A2000681590906915A0906A15B0906B1520E00C +:103A300030E040EA51E4C501B4010E94DB740E9409 +:103A40005F730E94F6726B017C010E94AA6B20E0FA +:103A500030E04AE754E4C501B4010E94DB744B0135 +:103A60005C0182E38C9DB0018D9D700D112480E07E +:103A700090E00E9422739B01AC01C501B4010E9439 +:103A8000A8710E945F730E94F672CB010E941245DA +:103A900086010115110509F4ADCF0E94B53301501F +:103AA000110980912A158111A5CF9FEFA0E7B2E0FF +:103AB0009150A040B040E1F700C00000EACF8091F3 +:103AC0004E1580938615813089F480917D159091F3 +:103AD0007E15A0917F15B09180158093BC159093B1 +:103AE000BD15A093BE15B093BF1508C01092BC15AC +:103AF0001092BD151092BE151092BF1580914F15F2 +:103B000090918715981759F0809387158CE0FE01E6 +:103B10003196A4EAB5E101900D928A95E1F7809182 +:103B20004C1580938415E09148158E2F90E0FC0190 +:103B30003297E830F10508F060C08827E957FF4F59 +:103B40008F4F0C941976BE016B5E7F4F822D0E94C1 +:103B5000673080918715281250C08CE0FE01759661 +:103B6000A4EAB5E13EC0C255DF4FE881CE5AD0404D +:103B7000EE2371F020918F153091901540919115A1 +:103B80005091921500E065E775E181E00E940846DA +:103B900020918F153091901540919115509192156B +:103BA00000E0BE016B5E7F4F81E00E940846182F47 +:103BB0008CE0FE017596A8E9B5E101900D928A9519 +:103BC000E1F71CC068E975E186E003C068E975E1CA +:103BD00087E00E94673011C08CE0E5E7F5E1A0EBDB +:103BE000B5E101900D928A95E1F707C08CE0E0EB1A +:103BF000F5E1DF011D928A95E9F710E08091491502 +:103C000080938115883009F470C0C255DF4FB881A8 +:103C1000CE5AD040B23009F068C090E088309105AB +:103C200008F05AC0FC0140908F155090901560909C +:103C30009115709092158827E157FF4F8F4F0C9484 +:103C4000197600E0A301920165E775E180E007C005 +:103C500000918215A301920165E775E181E00E9460 +:103C60000846182F39C060916C1570916D158091C0 +:103C70006E1590916F158824839409C060916C151E +:103C800070916D1580916E1590916F15812CCB54AC +:103C9000DF4FA880C55BD040C754DF4FC880C95BE9 +:103CA000D040CA55DF4FE880C65AD04000918215F7 +:103CB000A30192010E949B6C0FC000E001C001E0D3 +:103CC00020E004C000E001C001E021E04091821545 +:103CD000C301B2010E94056C8CE0E5E7F5E1A8E9BB +:103CE000B5E101900D928A95E1F78091501580938E +:103CF0008815882309F468C00E94AA6B90918815E2 +:103D000080912B15913069F48230E9F19FB7F894D6 +:103D10008091D91488608093D9149FBF0E94B533D5 +:103D200032C091E090938115109285151092841500 +:103D3000109282151092871510928A15109289158B +:103D40008230A9F0BE016F5F7F4F80E00E94373D57 +:103D50008823E1F18CE0FE013196A4EAB5E10190FF +:103D60000D928A95E1F70E94CB3B0E94CD5F86EDD4 +:103D700098E00E940B408AE798E00E940B4083E69F +:103D800098E00E940B40109288151EC081E067C029 +:103D900082E065C088E163C089E161C084E05FC002 +:103DA0008BE15DC085E25BC084E159C08EE157C004 +:103DB0008FE155C086E153C080E251C082E24FC01E +:103DC00083E24DC084E24BC0812F49C087E047C0E9 +:103DD000EEE14E16510411F40C948F0D70F42AE0AC +:103DE0004216510411F40C946B0D3CE1431651043E +:103DF00011F40C94780D87E132C085E34816510424 +:103E000011F40C94AF0D9CE549165104A1F721144F +:103E1000310439F0BAE02B16310431F689E00C9404 +:103E2000930D88E00C94930D3CE54316510411F07A +:103E30000C94EA0EA1E0C255DF4FA883CE5AD040C1 +:103E4000E6CF133009F00FCAE4C9153009F4F7C9F9 +:103E5000173009F403CA133009F005CADFC9C85383 +:103E6000DF4F0FB6F894DEBF0FBECDBFDF91CF910D +:103E70001F910F91FF90EF90DF90CF90BF90AF9088 +:103E80009F908F907F906F905F904F903F902F907A +:103E900008952F923F924F925F926F927F928F92EE +:103EA0009F92AF92BF92CF92DF92EF92FF920F93C9 +:103EB0001F93CF93DF93CDB7DEB7C459D1090FB6A7 +:103EC000F894DEBF0FBECDBFFB01873A28E0920712 +:103ED00009F480C208F046C08B34A8E09A0709F4C0 +:103EE00045C1F0F4833E27E0920709F4FFC060F477 +:103EF0008231910509F4FAC08C3C910509F493C014 +:103F0000419709F075C078C08934A8E09A0709F490 +:103F100012C108F018C18834984009F4C2C068C0C2 +:103F20008D3938E0930709F4E6C178F48A39B8E0AE +:103F30009B0709F488C18B3928E0920709F4BEC1B8 +:103F40008939984009F054C024C1823AA8E09A0700 +:103F500009F404C208F44CC0863A984010F40C945A +:103F60005F2946C0803C28E0920709F4AAC508F5FD +:103F7000873BA8E09A0709F453C570F48D3A28E00E +:103F8000920709F43AC38E3A38E0930709F443C420 +:103F90008C3A984069F524C2893BB8E09B0709F444 +:103FA0006EC508F45CC58A3B984011F40C945F29F7 +:103FB0001FC08A36A9E09A0709F44FC770F480360B +:103FC00029E0920709F40CC6813639E0930709F419 +:103FD000EDC6813C984061F49FC58C36B9E09B07E3 +:103FE00009F4B6C708F485C7843C994009F4F7C7BB +:103FF00081E090E00C9461298091181582FF08C03F +:104000008A9A809108018160809308015F9A07C0B5 +:104010008A98809108018E7F809308015F980E94A2 +:104020007A2D8FE00CC18E010F5F1F4F1F930F93EE +:1040300087EC93E09F938F93FF936F930E947A7620 +:104040000F900F900F900F900F900F901816190669 +:104050000CF09DC71D8A1E8A1F8A188EAE014B5E0A +:104060005F4F60E070E0C8010E941D458823D1F1D8 +:104070004D895E896F89788D88E70E94353C4D892E +:104080005E896F89788D89E70E94353C4D895E890C +:104090006F89788D8AE70E94353C0E94623E0C94BD +:1040A0005F298E010F5F1F4F1F930F9382ED93E0E7 +:1040B0009F938F93FF936F930E947A760F900F9048 +:1040C0000F900F900F900F90181619060CF05FC705 +:1040D000AE014B5E5F4F60E070E0C8010E941D457D +:1040E000811108C082E390E00C9461290E94BF2CEA +:1040F0000C945F2920E030E04AE754E46D897E8922 +:104100008F89988D0E94DB740E94F1721616170633 +:1041100094F47093190D6093180D11E010931A0D1B +:104120008091170D81110C945F290E94FB2B109335 +:10413000170D0C945F2910921A0D1092190D109200 +:10414000180D0C945F298081863561F6818180533A +:10415000823040F61092980D813021F01092970D28 +:104160000C945F298093970D0C945F29808186358C +:1041700009F0B8CF81818053823008F0B3CF81300D +:1041800021F010929D0D0C945F2980939D0D0C944D +:104190005F2980818E3409F0A5CF918190539430AE +:1041A00008F0A0CF923079F1933009F443C0209108 +:1041B00018158091940D913099F022FF08C08A9AC9 +:1041C000909108019160909308015F9A07C08A98C6 +:1041D000909108019E7F909308015F9884602FC0A2 +:1041E00022FF08C08A9A909108019160909308017B +:1041F0005F9A07C08A98909108019E7F909308016A +:104200005F9881601CC08091181582FF08C08A9A4F +:10421000809108018160809308015F9A07C08A98A5 +:10422000809108018E7F809308015F988091940DA2 +:10423000826005C00E947A2D8091940D88608093E1 +:10424000940D0C945E2980818E3409F04BCF9181BE +:104250009053943008F046CF9230B1F0933029F16A +:10426000209118158091940D913039F022FF02C0F1 +:104270005F9801C05F9A8B7F1DC022FF02C08A98A1 +:1042800001C08A9A8E7F16C08091181582FF04C0E3 +:10429000809108018E7F03C0809108018160809326 +:1042A00008018091940D8D7F05C00E94B12C8091F2 +:1042B000940D877F8093940D0C945F2980818E34B8 +:1042C00009F010CF81818053843008F00BCF90919A +:1042D000940D823051F0833059F0813019F090FF05 +:1042E00098C394C391FD92C394C392FD8FC391C3AD +:1042F00093FF8FC38BC38E010F5F1F4F1F930F93CD +:104300008BED93E09F938F93FF936F930E947A7648 +:104310000F900F900F900F900F900F901816190696 +:104320000CF035C68CE0F801ABE1BDE001900D92D8 +:104330008A95E1F70BE11DE08AEE93E0D8016D91DB +:104340008D017C01BFEFEB1AFB0A0E94265FC701BB +:10435000E6EFEE16E3E0FE0689F7B1C71AA619A646 +:104360001D8A1E8A1F8A188E8E010F5F1F4F8AE0DA +:10437000D8011D928A95E9F7CE0189969F938F9374 +:104380001F930F9386EE93E09F938F93FF936F930A +:104390000E947A760FB6F894DEBF0FBECDBF0297AB +:1043A0000CF4F5C5AE014B5E5F4F60E070E0C801F4 +:1043B0000E941D45882309F495CE2D893E894F8999 +:1043C000588D69A57AA5072E000C880B990B0E94C1 +:1043D000162C75C78FEF0E94583D0E94722B6FC735 +:1043E0002E0125E6420E511C84E1D201282F1D9298 +:1043F0002A95E9F73E0131E5630E711CD301282FA0 +:104400001D922A95E9F78E01035C1F4FD8011D927A +:104410008A95E9F7C357DF4F188219821A821B82E7 +:10442000CD58D040C757DF4F188219821A821B829D +:10443000C958D040CB57DF4F188219821A821B828D +:10444000C558D0401F930F937F926F925F924F9207 +:1044500082EF93E09F938F93FF936F930E947A76FE +:104460000FB6F894DEBF0FBECDBF03970CF48FC517 +:10447000AE0143575F4F60E070E0C2010E941D45EE +:10448000882309F42FCEAE0147575F4F60E070E0FC +:10449000C3010E941D45882309F424CEAE014B5769 +:1044A0005F4F60E070E0C8010E941D45882309F459 +:1044B00019CECF57DF4F188219821A821B82C1583A +:1044C000D040C358DF4F188219821A821B82CD5701 +:1044D000D040ED961CAE1DAE1EAE1FAEED9784E132 +:1044E0003E01F9E26F0E711CD301E82F1D92EA958F +:1044F000E9F72E01F5E14F0E511CD201E82F1D9274 +:10450000EA95E9F79E012F5F3F4F1901D9011D92EE +:104510008A95E9F7AE014B575F4FBE0167577F4F52 +:10452000CE0183579F4F0E94BC2FCB57DF4FE880AF +:10453000F9800A811B81C558D040C757DF4F2881B9 +:1045400039814A815B81C958D040C357DF4F6881A8 +:1045500079818A819B81CD58D040FE01EF57FF4F72 +:104560004F01DE01A758BF4F5D0134976F010E94D4 +:10457000C24A20E030E044EB52E4CF57DF4F68817D +:1045800079818A819B81C158D0400E94A971CF57FF +:10459000DF4F688379838A839B83C158D040C35897 +:1045A000DF4F688179818A819B81CD57D04082011C +:1045B00024E045E00E942D6FED966CAD7DAD8EAD93 +:1045C0009FADED97810124E045E00E942D6FCF570C +:1045D000DF4F688179818A819B81C158D0408301F6 +:1045E00024E045E00E942D6F3F922F925F924F9200 +:1045F0007F926F928CEA92E000C12E0135E6430E65 +:10460000511C84E1D201282F1D922A95E9F73E0121 +:1046100031E5630E711CD301282F1D922A95E9F70D +:104620008E01035C1F4FD8011D928A95E9F7C3578D +:10463000DF4F188219821A821B82CD58D040C7578B +:10464000DF4F188219821A821B82C958D040CB577B +:10465000DF4F188219821A821B82C558D0401F93DF +:104660000F937F926F925F924F9281E194E09F93BC +:104670008F93FF936F930E947A760FB6F894DEBF04 +:104680000FBECDBF03970CF482C4AE0143575F4FFA +:1046900060E070E0C2010E941D45882309F422CD2C +:1046A000AE0147575F4F60E070E0C3010E941D45B7 +:1046B000882309F417CDAE014B575F4F60E070E0DF +:1046C000C8010E941D45882309F40CCDCF57DF4F48 +:1046D000188219821A821B82C158D040C358DF4FFA +:1046E000188219821A821B82CD57D040ED961CAEDB +:1046F0001DAE1EAE1FAEED9784E13E01F9E26F0ED6 +:10470000711CD301E82F1D92EA95E9F72E01F5E11E +:104710004F0E511CD201E82F1D92EA95E9F79E0138 +:104720002F5F3F4F1901D9011D928A95E9F720E0CB +:1047300030E044EB52E4C357DF4F688179818A81CE +:104740009B81CD58D0400E94A8717B018C01C3573A +:10475000DF4F688379838A839B83CD58D040CB57C2 +:10476000DF4F288139814A815B81C558D040C757C6 +:10477000DF4F688179818A819B81C958D040FE01D1 +:10478000E758FF4F4F01DE01A358BF4F5D01389638 +:104790006F010E94784CA401B501C6010E94194A1C +:1047A000CF57DF4F688179818A819B81C158D04082 +:1047B000830124E045E00E942D6FC358DF4F6881DC +:1047C00079818A819B81CD57D040820124E045E0E8 +:1047D0000E942D6FED966CAD7DAD8EAD9FADED97CA +:1047E000810124E045E00E942D6F3F922F925F925D +:1047F0004F927F926F928CED92E09F938F9388E21D +:104800009DE09F938F930E944C760FB6F894DEBF85 +:104810000FBECDBF54C5CF57DF4F188219821A8201 +:104820001B82C158D040C358DF4F188219821A82A8 +:104830001B82CD57D040ED961CAE1DAE1EAE1FAEF6 +:10484000ED9784E12E0139E2430E511CD201282F4D +:104850001D922A95E9F73E0135E1630E711CD301E3 +:10486000282F1D922A95E9F7DE0111967D011D92F0 +:104870008A95E9F78E010B571F4F8FEF90E0D80113 +:104880008D939C931F930F93FF92EF927F926F9261 +:104890005F924F9280E394E09F938F93FF936F9387 +:1048A0000E947A760FB6F894DEBF0FBECDBF049794 +:1048B0000CF46DC3AE014F575F4F60E070E0C20172 +:1048C0000E941D45882309F40DCCAE0143585F4F6B +:1048D00060E070E0C3010E941D45882309F402CC0A +:1048E000AE0147585F4F60E070E0C7010E941D4570 +:1048F000882309F4F7CBD8018D919C91009709F496 +:1049000043C0019709F0EECBCF57DF4F4880598065 +:104910006A807B80C158D04020E030E044EB52E414 +:10492000C358DF4F688179818A819B81CD57D04000 +:104930000E94A87121EE3EE245E652E40E9489728F +:104940006B017C010E9486729B01AC01C301B20124 +:104950000E94DB74CF57DF4F688379838A839B8300 +:10496000C158D040C701B6010E943E759B01AC0101 +:10497000C301B2010E94DB74C358DF4F688379839F +:104980008A839B83CD57D040AE0147585F4FBE010D +:1049900063587F4FCE018F579F4F0E94BC2FED96DB +:1049A000ECACFDAC0EAD1FADED97C358DF4F2881C9 +:1049B00039814A815B81CD57D040CF57DF4F688125 +:1049C00079818A819B81C158D040FE01FD964F01BB +:1049D000DE01AF5ABF4F5D01B8966F010E94C24A17 +:1049E0002196ECACFDAC0EAD1FAD219765962CADBC +:1049F0003DAD4EAD5FAD6597A9966CAD7DAD8EAD0D +:104A00009FADA9970E94EE4D882319F066ED73E0E3 +:104A100002C062EC73E088E29DE00E9445764FC4DC +:104A20008081863509F05ECB81818053823008F029 +:104A300059CB813049F080915A0D90915B0D0197CF +:104A400009F03DC4BBD53BC49C9A9D9AA49AA598F5 +:104A500081E090E090935B0D80935A0D30C480818B +:104A6000863509F03FCB81818053823008F03ACB04 +:104A7000813011F034D623C43F9A479820C48081F6 +:104A8000863509F02FCB81818053823008F02ACB04 +:104A9000813011F013D613C480910101806280939C +:104AA00001018091010180648093010180910201E4 +:104AB00080628093020180910201806480930201F0 +:104AC000FEC3CE0101969F938F9344969F938F933D +:104AD00082E594E09F938F93FF936F930E947A7681 +:104AE0000FB6F894DEBF0FBECDBF02970CF44FC2D5 +:104AF0008D899E898634910508F0F4CA29813A810E +:104B00002230310508F0EECA232B11F061E001C01C +:104B100060E00E94D95BD3C3CE0101969F938F932F +:104B200044969F938F9382E594E09F938F93FF9396 +:104B30006F930E947A760FB6F894DEBF0FBECDBF9A +:104B400002970CF424C28D899E898634910508F061 +:104B5000C9CA29813A812230310508F0C3CAFC0153 +:104B6000E05CF54F8650964F232BD1F02491FC0149 +:104B70008491882309F4A3C390E0880F991FFC0156 +:104B8000E455F84FA591B491FC01E052F64F8591A0 +:104B900094918FB7F894EC91E22BEC938FBF8FC375 +:104BA0002491FC018491882309F489C390E0880F43 +:104BB000991FFC01E455F84F45915491FC01E052D6 +:104BC000F64FA591B4919FB7F894FA018081209592 +:104BD000822380838C91E22FE823EC939FBF6FC3E5 +:104BE0008081833509F07ECA8181E0EDE80FE830ED +:104BF00008F078CA8E2F90E0FC013197E730F1057C +:104C000030F48827E956FF4F8F4F0C941976A9D6B8 +:104C10001092630D1092620D8AE999E1A5E9B2E460 +:104C20008093680D9093690DA0936A0DB0936B0DFE +:104C30008AE999E9A2E6B2E4B0C093D681E090E0B7 +:104C40009093630D8093620D86EF98E2ACE4B2E43A +:104C50008093680D9093690DA0936A0DB0936B0DCE +:104C60008DEC9CECA0E8B2E498C07BD682E090E0AA +:104C70009093630D8093620D89E29CEDA4E9B2E408 +:104C80008093680D9093690DA0936A0DB0936B0D9E +:104C900080E090E0A2E6B2E480C063D683E090E0DA +:104CA0009093630D8093620D80E090E0ACE2B2E4FB +:104CB0008093680D9093690DA0936A0DB0936B0D6E +:104CC00080E090E0ABE8B2E468C04BD684E090E0CE +:104CD0009093630D8093620D80E090E0ACE1B2E4CC +:104CE0008093680D9093690DA0936A0DB0936B0D3E +:104CF00080E090E0A9E9B2E417C033D685E090E007 +:104D00009093630D8093620D8DEC9CECA2E9B2E46C +:104D10008093680D9093690DA0936A0DB0936B0D0D +:104D200080E090E0A8E9B2E48093640D9093650D73 +:104D3000A093660DB093670DE7D5D9C012D686E073 +:104D400090E09093630D8093620D86E696E6AAE963 +:104D5000B2E48093680D9093690DA0936A0DB093AF +:104D60006B0D80E090E0AAE5B2E417C0FAD587E0C9 +:104D700090E09093630D8093620D85E89BEEABEC21 +:104D8000B1E48093680D9093690DA0936A0DB09380 +:104D90006B0D80E090E0A2E3B2E48093640D909309 +:104DA000650DA093660DB093670DA1C080E090E003 +:104DB0000E94B24E90935F0D80935E0D81E090E073 +:104DC0000E94B24E9093610D8093600D82E090E05E +:104DD0000E94B24E90935D0D80935C0D0CE51DE03A +:104DE00084E393E0D8016D918D017C01BFEFEB1A54 +:104DF000FB0A0E94265FC701EAE3EE16E3E0FE0627 +:104E000089F76BEB82E393E00E94265F0E94884E55 +:104E100080E090E00E94044F6093700D7093710DDC +:104E20008093720D9093730D81E090E00E94044F87 +:104E30006093740D7093750D8093760D9093770D3C +:104E400082E090E00E94044F6093780D7093790D9A +:104E500080937A0D90937B0D32C2609136157091DC +:104E6000371580913815909139150E9424732B01C4 +:104E70003C016091321570913315809134159091F9 +:104E800035150E942473CF56DF4F688379838A8358 +:104E90009B83C159D04060912E1570912F15809140 +:104EA0003015909131150E9424739E012F5F3F4F62 +:104EB0004901DE0155965D01FE01B9966F0183013E +:104EC0007201CF56DF4F288139814A815B81C159F8 +:104ED000D0400E945D4D89819A81AB81BC818093D5 +:104EE000680D9093690DA0936A0DB0936B0D44D437 +:104EF000E6C11D8A1E8A1F8A188E8E010F5F1F4F02 +:104F000084E1D8011D928A95E9F71F930F9389E5F3 +:104F100094E09F938F93FF936F930E947A760F9004 +:104F20000F900F900F900F900F90181619067CF5A8 +:104F3000AE014B5E5F4F60E070E0C8010E941D450E +:104F4000882309F4CFC88D899E89AF89B88D25CF74 +:104F50001D8A1E8A1F8A188E8E010F5F1F4F84E1E3 +:104F6000D8011D928A95E9F71F930F9384E694E088 +:104F70009F938F93FF936F930E947A760F900F9079 +:104F80000F900F900F900F901816190674F01F9243 +:104F900081E08F938DE092E09F938F930E94723F08 +:104FA0000F900F900F900F909DC8AE014B5E5F4F1A +:104FB00060E070E0C8010E941D45882309F492C892 +:104FC0008D899E89AF89B88D80936C0D90936D0DFE +:104FD000A0936E0DB0936F0DCFD396D470C1899806 +:104FE00068E9662E6EE0762E830182E090E00E94F2 +:104FF000B24EF801819391938F0150E9E52EFF2481 +:10500000F394889A6AE070E080E090E00E94D444D3 +:1050100088986CE271E080E090E00E94D444F1E076 +:10502000EF1AF10871F788EE93E00E9412452FE025 +:1050300000361207D1F682E090E00E94B24E9093C3 +:10504000610F8093600F899A00E21EE4889A6AE0FB +:1050500070E080E090E00E94D44488986CE271E0B7 +:1050600080E090E00E94D4440150110979F78F98B4 +:105070004EE0E42EF12C00E911E08E9A6AE070E037 +:1050800080E090E00E94D4448E986CE271E080E071 +:1050900090E00E94D4440150110979F731E0E31AFD +:1050A000F10849F788EE93E00E9412458F9A38E1A3 +:1050B000232E3EE0332E210100E010E080E090E05E +:1050C0000E94B24ED2018D939D932D0120E9E22ED4 +:1050D000FF24F3948E9A6AE070E080E090E00E94F2 +:1050E000D4448E9864EF71E080E090E00E94D44454 +:1050F000B1E0EB1AF10871F70E301105A9F088EE56 +:1051000093E00E9412450F5F1F4F0F331105B1F658 +:1051100080E090E00E94B24E9093970E8093960E9E +:105120008F9800E51DE223C080910B018D7F809355 +:105130000B01E12C92E3F92E80910B0188608093A2 +:105140000B016AE070E080E090E00E94D44480911E +:105150000B01877F80930B016CE271E080E090E0AF +:105160000E94D444E1E0EE1AF10831F7C8CF8E9ADC +:105170006AE070E080E090E00E94D4448E986CE297 +:1051800071E080E090E00E94D4440150110979F769 +:1051900088EE93E00E94124580910B01826080931B +:1051A0000B0100E913E380910B01886080930B01F0 +:1051B0006AE070E080E090E00E94D44480910B01AE +:1051C000877F80930B016CE271E080E090E00E94A9 +:1051D000D4440150110939F788EE93E00E9412453A +:1051E00080910B018D7F80930B010EE91DE028015A +:1051F00081E090E00E94B24ED2018D939D932D01EB +:1052000080E9E82EFF24F39480910B01886080935D +:105210000B016AE070E080E090E00E94D44480914D +:105220000B01877F80930B016CE271E080E090E0DE +:105230000E94D444B1E0EB1AF10831F788EE93E014 +:105240000E941245E6E14E16EEE05E0689F681E028 +:1052500090E00E94B24E9093170E8093160E81E05C +:1052600090E0D3016D913D012C01BFEF4B1A5B0A19 +:105270000E94265FC2018B3C910599F7F101619173 +:105280001F013201FFEF6F1A7F0AC2010E94265FE1 +:1052900023012BE4621621E0720681F7D8016D919B +:1052A0008D017301BFEFEB1AFB0AC3010E94265F59 +:1052B0003701E5ECEE16E1E0FE0681F78AD180E0E9 +:1052C00090E0CC56DF4F0FB6F894DEBF0FBECDBFD7 +:1052D000DF91CF911F910F91FF90EF90DF90CF90D2 +:1052E000BF90AF909F908F907F906F905F904F9006 +:1052F0003F902F90089520916A0F30916B0F2115E8 +:105300003105B9F080917A0F90917B0F8217930746 +:1053100034F4019690937B0F80937A0F0AC0109219 +:105320007B0F10927A0F10926B0F10926A0F1092EF +:10533000950D2091180D3091190D21153105A1F011 +:105340008091780F9091790F8217930734F401962A +:105350009093790F8093780F07C01092790F109275 +:10536000780F81E08093960D8091950D81111BC07F +:1053700080911A0D811117C0809173008E7F8093E8 +:1053800073001092170D10926B0F10926A0F10920B +:10539000190D1092180D10927B0F10927A0F109227 +:1053A000790F1092780F08958091770F811107C0BF +:1053B00081E08093770F80910B01806205C010928D +:1053C000770F80910B018F7D80930B018091750F7A +:1053D0009091760F9C012F5F3F4F3093760F209373 +:1053E000750F20910402309105022817390760F4E7 +:1053F0001092760F1092750F809170008E7F8093BF +:10540000700081E080939B0D08952091620D309192 +:10541000630D2430310529F426E636E646E65FE3DF +:1054200007C02530310539F526E636E646EE5FE35E +:105430000E94897220E030E040E852E40E94DB7470 +:105440000E94F1726093620F7093630F8093640FF8 +:105450009093650F89E49AE29093D3148093D214C9 +:105460001092A00085E08093A1008DEF9FEF9093B4 +:10547000D5148093D4148091D4149091D514909322 +:10548000A5008093A40080917200816080937200D7 +:1054900008958091620F9091630FA091640FB09175 +:1054A000650F181619061A061B06F4F42091740FDE +:1054B000222389F01092740F0197A109B1098093FA +:1054C000620F9093630FA093640FB093650F809168 +:1054D0000201806406C081E08093740F8091020114 +:1054E0008F7B8093020108950E94905C1092620F5E +:1054F0001092630F1092640F1092650F81E08093F9 +:105500009A0D0895CF93DF93EB018431D1F028F405 +:10551000882361F08C30A8F437C08233E9F018F4A6 +:10552000873190F10EC0833311F10BC0888188233D +:1055300029F06FE674E0CE010E943A7661E774E0EC +:1055400020C08881882329F06FE674E0CE010E9494 +:105550003A7664E774E015C08881882329F06FE605 +:1055600074E0CE010E943A7668E774E00AC0888150 +:10557000882329F06FE674E0CE010E943A766CE74A +:1055800074E0CE010E943A768091280D882379F04C +:1055900068E27DE0CE010E943A7682E3E8E2FDE037 +:1055A000DF011D928A95E9F7DF91CF91089569E7B0 +:1055B00073E0CE01DF91CF910C943A769C9A9D9A3C +:1055C000A498A59A82E090E090935B0D80935A0D89 +:1055D00008958F929F92AF92BF92CF92DF92EF92F7 +:1055E000FF920F931F93CF93DF930AE215E18EE1B1 +:1055F000F80111928A95E9F70E9426400E94205FE7 +:1056000080E090E00E94044FC2E6DDE06E877F8775 +:10561000888B998B81E090E00E94044F6A8B7B8B92 +:105620008C8B9D8B82E090E00E94044F6E8B7F8B71 +:10563000888F998FF801C480D580E680F780CA8E64 +:10564000DB8EEC8EFD8EC084D184E284F384CE8E1A +:10565000DF8EE8A2F9A204851585268537850AA381 +:105660001BA32CA33DA320E030E044EB52E40E94B6 +:10567000A8717B018C012A893B894C895D896E85E3 +:105680007F8588899989E0E98E2EEDE09E2EFCE8E1 +:10569000AF2EFDE0BF2EA8E8CA2EADE0DA2E0E94A4 +:1056A000784CDF91CF911F910F91FF90EF90DF9099 +:1056B000CF90BF90AF909F908F900895E1E0F1E080 +:1056C000808180628083808180648083E2E0F1E079 +:1056D00080818F7D808380818F7B808308953F9A36 +:1056E000479A0895809104018778809304018091FE +:1056F00003018877803451F440E050E060E87FE3B4 +:1057000084E00E94353C60E874E02AC08091030187 +:10571000887791F440E050E060E87FE384E00E9405 +:10572000353C67E874E08CE69FE00E94457640E0F7 +:1057300050E060EE70E41BC080910301887740E088 +:1057400050E060E87FE3803231F484E00E94353C31 +:105750006EE874E005C084E00E94353C65E974E0C1 +:105760008CE69FE00E94457640E050E0BA0183E07D +:105770000E94353C0C94623E0F931F93CF93DF93AE +:105780006091620D84E893E00E94265F6091630D52 +:1057900085E893E00E94265FC4E6DDE088E993E0B7 +:1057A00069918C010F5F1F4F0E94265FC8010C3961 +:1057B0001340B1F7C8E6DDE08EE893E069918C0113 +:1057C0000F5F1F4F0E94265FC80102391340B1F7D7 +:1057D000CCE6DDE082E89CE069918C010F5F1F4F11 +:1057E0000E94265FC80106381C40B1F7DF91CF91B7 +:1057F0001F910F910895EBE7F4E18BE799E2918314 +:1058000080831092200185E08093210181EF9FEF3A +:1058100093838283828193819093250180932401D5 +:10582000E3E7F0E08081816080830895CF92DF928A +:10583000EF92FF920F931F93CF93DF9369017A0149 +:1058400010929B0DEAE0F1E0208120622083EBE0E2 +:10585000F1E020812F7D2083660F771F7093050272 +:105860006093040204E714E184ED99E2F801918366 +:105870008083C0E7D0E088818E7F8883E0EBF0E012 +:1058800080818C7F8083E1EBF0E08081877F808363 +:10589000A6EBB0E08C918F7D8C9388818D7F88837F +:1058A00080818460808380818C7F808320E034E2EB +:1058B00044EF59E4C701B6010E94897220E034E246 +:1058C00044E75BE40E94DB7420E030E040E85CE306 +:1058D0000E94DB740E94F17220E031E0C901861B56 +:1058E000970BF80193838283828193818093B20026 +:1058F000888181608883DF91CF911F910F91FF9004 +:10590000EF90DF90CF900895CF93C1E0C0939A0DB0 +:105910008091620D9091630D0497029700F51092AB +:105920009A0D1092660F1092670F1092680F1092E6 +:10593000690F809107018F7D809307018091080195 +:10594000806280930801809102018062809302014D +:1059500060E070E084EB93E458DDC093990DCF9143 +:1059600008951092620F1092630F1092640F1092BC +:10597000650F0E94905C1092990D0C94905C809140 +:10598000181582FF08C08A98809108018E7F809345 +:1059900008015F9807C08A9A80910801816080930E +:1059A00008015F9ADEDF1092940D08958F929F9206 +:1059B000AF92BF92CF92DF92EF92FF926B017C0188 +:1059C00020E030E044EB53E40E94A07418160CF47D +:1059D00088C020E030E0A901C701B6010E948272B0 +:1059E00087FD7FC08091620D9091630D04970297AF +:1059F000B8F52091660F3091670F4091680F509174 +:105A0000690FC701B6010E94A8714B015C0120E03B +:105A100030E0A9010E948272882309F462C0C0921A +:105A2000660FD092670FE092680FF092690F20E046 +:105A300030E0A901C501B4010E94A074181624F435 +:105A4000809102018F7D03C080910201806280936A +:105A50000201C501B4019F77D8DC10929A0D41C0B4 +:105A600020E030E044E353E4C701B6010E94A07493 +:105A700018161CF4C12CD12C7601A701960160E008 +:105A800070E084E393E40E94A87120E030E044E3F6 +:105A900053E40E9489729B01AC010E94A97120E02D +:105AA00030E040E05FE30E94A971609300027093D0 +:105AB0000102809302029093030220E030E040EA6A +:105AC00051E40E94897220E030EC4FE754E40E94D8 +:105AD000DB740E94F672CB010E94425B81E08093EE +:105AE0009A0DFF90EF90DF90CF90BF90AF909F9076 +:105AF0008F9008958091620D9091630D04970297A5 +:105B000080F4809101018062809301018091010104 +:105B10008064809301018091020180628093020180 +:105B2000089580E18093A1001092A00082E080930C +:105B3000D81480E29EE49093D7148093D614909367 +:105B4000A7008093A60082E18093A10020E030E0CE +:105B500040EA51E4609100027091010280910202DA +:105B6000909103020E94897220E030EC4FE754E4E8 +:105B70000E94DB740E94F672CB010C94425BCF93BF +:105B8000DF93D82FC8E05E98559AD7FF02C05D9A80 +:105B900001C05D9865E070E080E090E00E94D44430 +:105BA0005E9A65E070E080E090E00E94D4445E98E8 +:105BB000DD0F65E070E080E090E00E94D444C150C9 +:105BC00011F762E070E080E090E00E94D444559AC2 +:105BD0005D9A62E070E080E090E0DF91CF910C94FC +:105BE000D4445E98559A5D9865E070E080E090E05E +:105BF0000E94D4445E9A65E070E080E090E00E94EC +:105C0000D444559A5D9A65E070E080E090E00C9491 +:105C1000D444CF93559A5D9A62E070E080E090E0C2 +:105C20000E94D4445E9A62E070E080E090E00E94BE +:105C3000D44455988BEF99B1C92FC07295FF05C018 +:105C40008150C9F7CEDFC1E007C05E9862E070E026 +:105C500080E090E00E94D4448C2FCF910895559A13 +:105C60005D9A5E9A65E070E080E090E00E94D44426 +:105C7000559A5D9865E070E080E090E00E94D44421 +:105C80005E9862E070E080E090E00C94D444CF93A2 +:105C9000DF93D82FC8E0809102018F7780930201B3 +:105CA0008091010184608093010180910201D7FFFE +:105CB00002C0846001C08B7F8093020165E070E0C8 +:105CC00080E090E00E94D44480910201806880933B +:105CD000020165E070E080E090E00E94D444809191 +:105CE00002018F7780930201DD0F65E070E080E0B4 +:105CF00090E00E94D444C15071F662E070E080E010 +:105D000090E00E94D444809101018460809301015D +:105D10008091020184608093020162E070E080E083 +:105D200090E0DF91CF910C94D4440F931F93CF93C5 +:105D3000DF93C2E0D1E088818F77888301E011E0B2 +:105D4000F80180818460808388818B7F888365E00F +:105D500070E080E090E00E94D4448881806888836D +:105D600065E070E080E090E00E94D444F80180811A +:105D70008460808388818460888365E070E080E04F +:105D800090E0DF91CF911F910F910C94D444CF9369 +:105D900080910101846080930101809102018460FF +:105DA0008093020162E070E080E090E00E94D444C1 +:105DB0008091020180688093020162E070E080E0DF +:105DC00090E00E94D444809101018B7F8093010177 +:105DD0008BEF90910001C92FC47092FF05C08150D4 +:105DE000C1F7A3DFC1E00BC0809102018F778093E0 +:105DF000020162E070E080E090E00E94D4448C2FC9 +:105E0000CF9108950F931F93CF93DF9301E011E09B +:105E1000F801808184608083C2E0D1E08881846061 +:105E2000888388818068888365E070E080E090E006 +:105E30000E94D444F80180818460808388818B7FB4 +:105E4000888365E070E080E090E00E94D44488811F +:105E50008F77888362E070E080E090E0DF91CF91FF +:105E60001F910F910C94D444CF93DF93D82FC8E0A7 +:105E70004398399AD7FF02C0419A01C0419865E022 +:105E800070E080E090E00E94D444439A65E070E0C6 +:105E900080E090E00E94D4444398DD0F65E070E01C +:105EA00080E090E00E94D444C15011F762E070E0BD +:105EB00080E090E00E94D444399A419A62E070E018 +:105EC00080E090E0DF91CF910C94D4444398399ACC +:105ED000419865E070E080E090E00E94D444439AED +:105EE00065E070E080E090E00E94D444399A419AE5 +:105EF00065E070E080E090E00C94D444CF93399A50 +:105F0000419A62E070E080E090E00E94D444439ABD +:105F100062E070E080E090E00E94D44439988BEF1A +:105F200096B1C92FC27091FF05C08150C9F7CEDF6D +:105F3000C1E007C0439862E070E080E090E00E941A +:105F4000D4448C2FCF910895399A419A439A65E0B1 +:105F500070E080E090E00E94D444399A419865E076 +:105F600070E080E090E00E94D444439862E070E0EA +:105F700080E090E00C94D4444F925F926F927F92B5 +:105F8000AF92BF92CF92DF92EF92FF920F931F9347 +:105F9000CF93DF935C01EB018A01FC0140805180CB +:105FA0006280738020E030E0A901C301B2010E9449 +:105FB000827220E030E0A901811111C068817981ED +:105FC0008A819B810E94A0741816E4F02AEDC22EEB +:105FD0002FE0D22E29ECE22E2FEBF22E22C0C301AD +:105FE000B2010E94827287FD16C0A30192016881EE +:105FF00079818A819B810E9489720E9447726B011C +:106000007C010FC09AEDC92E9FE0D92E99ECE92EA4 +:106010009FE3F92E06C0C12CD12C80ECE82E8FE72F +:10602000F82EC701B6010E9486722091640D30914E +:10603000650D4091660D5091670D0E94DB749B01C8 +:10604000AC01C301B2010E94A871F50160837183A4 +:1060500082839383C701B6010E943E752091640D2F +:106060003091650D4091660D5091670D0E94DB7473 +:106070009B01AC01688179818A819B810E94A87112 +:10608000688379838A839B832091680D3091690DA1 +:1060900040916A0D50916B0DF80160817181828190 +:1060A00093810E94A971F801608371838283938335 +:1060B000DF91CF911F910F91FF90EF90DF90CF90E4 +:1060C000BF90AF907F906F905F904F9008952DE0BC +:1060D000829FC00111244CE050E0965F0C94485F11 +:1060E0001F920F920FB60F9211240BB60F922F939F +:1060F0003F934F935F936F937F938F939F93AF9350 +:10610000BF93EF93FF938091360123E030E030930B +:106110008110209380108F33A9F050F4883109F159 +:10612000813211F59FB7F8948091D914886015C019 +:10613000803471F08E37C1F49FB7F8948091D914F0 +:1061400082600BC09FB7F8948091D914816005C01C +:106150009FB7F8948091D91480628093D9149FBF1F +:1061600014C00E94DD4511C0E091FD0F91E09E0F2B +:10617000903809F490E02091FC0F921731F0F0E094 +:10618000E458F04F80839093FD0FFF91EF91BF9102 +:10619000AF919F918F917F916F915F914F913F91BF +:1061A0002F910F900BBE0F900FBE0F901F90189560 +:1061B0001F920F920FB60F9211240BB60F922F93CE +:1061C0003F934F935F936F937F938F939F93AF937F +:1061D000BF93EF93FF938091D60022E030E030939D +:1061E0008110209380108F33A9F050F4883109F189 +:1061F000813211F59FB7F8948091D914886015C049 +:10620000803471F08E37C1F49FB7F8948091D9141F +:1062100082600BC09FB7F8948091D914816005C04B +:106220009FB7F8948091D91480628093D9149FBF4E +:1062300014C00E94DD4511C0E091FD0F91E09E0F5A +:10624000903809F490E02091FC0F921731F0F0E0C3 +:10625000E458F04F80839093FD0FFF91EF91BF9131 +:10626000AF919F918F917F916F915F914F913F91EE +:106270002F910F900BBE0F900FBE0F901F9018958F +:106280001F920F920FB60F9211240BB60F922F93FD +:106290003F934F935F936F937F938F939F93AF93AE +:1062A000BF93EF93FF938091CE0021E030E03093D5 +:1062B0008110209380108F33A9F050F4883109F1B8 +:1062C000813211F59FB7F8948091D914886015C078 +:1062D000803471F08E37C1F49FB7F8948091D9144F +:1062E00082600BC09FB7F8948091D914816005C07B +:1062F0009FB7F8948091D91480628093D9149FBF7E +:1063000014C00E94DD4511C0E091FD0F91E09E0F89 +:10631000903809F490E02091FC0F921731F0F0E0F2 +:10632000E458F04F80839093FD0FFF91EF91BF9160 +:10633000AF919F918F917F916F915F914F913F911D +:106340002F910F900BBE0F900FBE0F901F901895BE +:106350001F920F920FB60F9211240BB60F922F932C +:106360003F934F935F936F937F938F939F93AF93DD +:10637000BF93EF93FF938091C6001092811010920B +:1063800080108F33A9F050F4883109F1813211F572 +:106390009FB7F8948091D914886015C0803471F04B +:1063A0008E37C1F49FB7F8948091D91482600BC0E6 +:1063B0009FB7F8948091D914816005C09FB7F89475 +:1063C0008091D91480628093D9149FBF14C00E9419 +:1063D000DD4511C0E091FD0F91E09E0F903809F46A +:1063E00090E02091FC0F921731F0F0E0E458F04F6C +:1063F00080839093FD0FFF91EF91BF91AF919F919B +:106400008F917F916F915F914F913F912F910F905D +:106410000BBE0F900FBE0F901F9018951F920F92FA +:106420000FB60F9211240BB60F928F939F93EF9399 +:10643000FF9380917F10E82FF0E0E150F04F9081C2 +:10644000909336018F5F803809F480E080937F104D +:106450009091FE0F891305C0809131018F7D80934B +:106460003101FF91EF919F918F910F900BBE0F9093 +:106470000FBE0F901F9018951F920F920FB60F929C +:1064800011240BB60F928F939F93EF93FF938091FC +:106490007F10E82FF0E0E150F04F90819093D6000C +:1064A0008F5F803809F480E080937F109091FE0F19 +:1064B000891305C08091D1008F7D8093D100FF9119 +:1064C000EF919F918F910F900BBE0F900FBE0F9089 +:1064D0001F9018951F920F920FB60F9211240BB6B2 +:1064E0000F928F939F93EF93FF9380917F10E82FEC +:1064F000F0E0E150F04F90819093CE008F5F8038B4 +:1065000009F480E080937F109091FE0F891305C0FD +:106510008091C9008F7D8093C900FF91EF919F9179 +:106520008F910F900BBE0F900FBE0F901F9018957C +:106530001F920F920FB60F9211240BB60F928F93EA +:106540009F93EF93FF9380917F10E82FF0E0E1504D +:10655000F04F90819093C6008F5F803809F480E0FF +:1065600080937F109091FE0F891305C08091C10028 +:106570008F7D8093C100FF91EF919F918F910F903C +:106580000BBE0F900FBE0F901F901895E091FE0F5D +:1065900091E09E0F903831F490E004C02091D9141E +:1065A00024FD2FC020917F102917C1F3F0E0E150A6 +:1065B000F04F80839093FE0F809180109091811016 +:1065C0008130910569F030F08230910579F00397C0 +:1065D00099F008958091C10080628093C100089570 +:1065E0008091C90080628093C90008958091D10094 +:1065F00080628093D1000895809131018062809300 +:1066000031010895CF93C82F83ED99E00E940B408C +:10661000C830B9F190F4C43059F148F4C23001F1F6 +:1066200020F5C13009F042C08BEB99E01BC0C630A9 +:1066300011F120F58CE799E015C0C43171F140F4F7 +:10664000CA3029F108F1CB3089F58CE994E02BC0F0 +:10665000C63131F1F8F0C23349F586EA94E023C03F +:1066600089EA99E00E940B4028C087E999E0FACFB7 +:106670008DE899E0F7CF8DE699E0F4CF8CE499E0CE +:10668000F1CF83E499E0EECF88E399E0EBCF85E2A8 +:1066900099E0E8CF8FE099E0E5CF81EA94E003C08C +:1066A0008BEF98E0DFCF0E941A4007C089EE98E098 +:1066B0000E940B408C2F0E94FD3F86EE98E0CF9108 +:1066C0000C940B408F929F92AF92BF92EF92FF92E9 +:1066D0000F931F93CF9380EE98E00E940B408AE3C4 +:1066E000E82E85E1F82E0BED14E1C0E0F701619191 +:1066F0007191819191917F01F80181909190A19088 +:10670000B1908F010E942473A50194010E948972A7 +:106710000E94B23FC23021F08EED98E00E940B4003 +:10672000CF5FC33019F78CED98E00E940B40809149 +:1067300046150E94FD3F88ED98E0CF911F910F9183 +:10674000FF90EF90BF90AF909F908F900C940B4074 +:1067500080912C15811108C09FB7F8948091D914AD +:1067600082608093D9149FBF0895AF92BF92CF9259 +:10677000DF92EF92FF920F931F93CF93DF93CDB7EA +:10678000DEB768970FB6F894DEBF0FBECDBF10918D +:106790002915112309F45CC081E080932B1511FFAA +:1067A00007C089E098E00E940B408EEF97E023C07D +:1067B00012FF07C089E098E00E940B4083EF97E04A +:1067C0001AC013FF07C089E098E00E940B4080EEDA +:1067D00097E011C014FF07C089E098E00E940B40C9 +:1067E00085ED97E008C015FF10C089E098E00E9491 +:1067F0000B4089EC97E00E940B4086EC97E00E94EA +:106800000B4084EF91E00E94124510FD08C08FB745 +:10681000F89490912915109229158FBF19C086ED13 +:1068200098E00E940B4084EC98E00E940B4083E6C5 +:1068300098E00E940B409FB7F8948091D9148F7E06 +:106840008093D9149FBF8091D91484FFFCCFDFCFF0 +:106850001091D914112309F4BDC114FF04C081E0C3 +:1068600080932A15C8C110FFEBC08CE0EEE2F5E181 +:10687000DE011D9601900D928A95E1F780912B150E +:106880008430E9F040F48130E9F080F0823009F59D +:106890008EE398E01CC0803179F018F4883049F01C +:1068A00018C0803291F0803421F013C08DE598E05B +:1068B0000EC088E598E00BC082E598E008C08CE443 +:1068C00098E005C085E498E002C088E398E00E9463 +:1068D0000B4080910F15837039F0BE01635F7F4FCD +:1068E000CE0101960E94E54F80910F1580FD05C0F5 +:1068F00080910F1581FF66C01AC081E398E00E9465 +:106900000B40CE0101967C0100E0F701619171918D +:10691000819191917F010E94B23F023021F08FE27C +:1069200098E00E940B400F5F033079F7E1CF88E2D7 +:1069300098E00E940B4084EAC82E85E1D82ECE0153 +:1069400001967C0100E05701F601619171918191FE +:1069500091916F0120853185428553850E94A971EF +:106960009B01AC01F70160817181828193810E945A +:10697000A871F7016083718382839383023079F475 +:106980002091BC153091BD154091BE155091BF1599 +:106990000E94A871F7016083718382839383F4E07E +:1069A000EF0EF11CF50160817181828193810E945B +:1069B000B23F023021F086E298E00E940B400F5F68 +:1069C000033009F680910F1582FF0EC080E298E037 +:1069D0000E940B408091CA139091C913891708F443 +:1069E0008E5E891B0E94FD3F80910F1583FF0EC0B4 +:1069F0008BE198E00E940B409091FC0F8091FD0F7D +:106A0000891708F48058891B0E94FD3F80910F155B +:106A100084FF0AC085E198E00E940B400E94175D48 +:106A200043E062E00E94C03F81E198E00E940B4099 +:106A30009FB7F8948091D9148E7F8093D9149FBF0B +:106A4000812F887609F44AC080912B15882351F054 +:106A5000982F9C77D9F1883029F40E94505081E01A +:106A600080932C1580912B15811103C092E0909397 +:106A70002C1516FF0AC0883019F480E480932B157A +:106A800080912C15886080932C1513FF07C080918E +:106A90002B1585FD03C080E180932B1515FF16C0D3 +:106AA00086ED98E00E940B4082E898E00E940B403F +:106AB00083E698E00E940B4080912C1581FD1460C4 +:106AC000846080932C1580E280932B159FB7F894F7 +:106AD0008091D91487798093D9149FBF11FF57C033 +:106AE000812F887609F04BC080912B15882339F0CF +:106AF000807509F444C080912C1581FF40C08091BD +:106B00002C1582FF1FC080918A15882369F040915F +:106B10008B1550918C1560918D1570918E1542D604 +:106B200080EA9FE00E94124580918915882351F0E8 +:106B3000823011F45C9A02C00E94CD5F88EE93E02F +:106B40000E9412458091C9139091CA13981799F029 +:106B5000F9E28F9FC001112489519F4E892B59F072 +:106B600080912C1583FD07C088E080932B150E942F +:106B7000725078D302C010922B1510922C159FB72B +:106B8000F8948091D9148D7F8093D9149FBF12FF00 +:106B900021C080912B15807389F080912D15811172 +:106BA0000DC080912C1582FF03C0F5D50E94CD5FEA +:106BB00080912C15826080932C1504C010922C15A6 +:106BC00010922B159FB7F8948091D9148B7F8093E6 +:106BD000D9149FBF80912B158C7711F00E947250B1 +:106BE00080912B15803239F480912C1581FF03C0E0 +:106BF00080E180932B1568960FB6F894DEBF0FBE28 +:106C0000CDBFDF91CF911F910F91FF90EF90DF905B +:106C1000CF90BF90AF90089569E080E090E00E942F +:106C2000265F4DE450E06BED74E181E098E00C9458 +:106C3000485FCF92DF92EF92FF920F931F93909154 +:106C40000C15092F10E020E030E080910D15482F41 +:106C500050E060E070E09170817068017901F69415 +:106C6000E794D794C794C0FC92606A017B01F694C4 +:106C7000E794D794C794C0FC8260E2E036952795EC +:106C800017950795EA95D1F700FD946022E0769577 +:106C90006795579547952A95D1F740FD8460909365 +:106CA000C1108093C0101F910F91FF90EF90DF9063 +:106CB000CF9008951F920F920FB60F9211240BB62A +:106CC0000F922F933F938F939F93EF93FF9321B353 +:106CD0003091C110832F817090E036E0880F991FAA +:106CE0003A95E1F7922F9F7B892B81BBEBE0F1E096 +:106CF00090818091C1108270880F880F977F892BB7 +:106D0000808381B39091C11092FB992790F98E7F77 +:106D1000892B81BB15BCFF91EF919F918F913F9182 +:106D20002F910F900BBE0F900FBE0F901F901895D4 +:106D300080916F008D7F80936F0080918100887FAC +:106D40008160809381001092C21080910E158F3F58 +:106D500021F490912915992349F090912B159430A5 +:106D600029F090E00E94124581E001C080E09091FE +:106D7000181592FF02C091E08927882341F08A9A72 +:106D8000809108018160809308015F9A08958A9834 +:106D9000809108018E7F809308015F9808951F926B +:106DA0000F920FB60F9211240BB60F922F933F93B1 +:106DB0004F935F936F937F938F939F93AF93BF9303 +:106DC000EF93FF938091C210811139C28091D2104C +:106DD00080FD8F9A80FF8F9890910B01482F427011 +:106DE0009D7F942B90930B0141B3847090E0959517 +:106DF0008795942F9D7F892B81BB91B38091D11072 +:106E0000282F217030E066E0220F331F6A95E1F7EA +:106E10009F7B292B21BB90910B01282F2270220FE1 +:106E2000220F977F922B90930B0121B382FB99271E +:106E300090F9822F8E7F892B81BB8091D01086BDE7 +:106E400082E085BD81E08093C21078948091E41047 +:106E50009091E510892B09F0ACC08091CB139091F3 +:106E6000F013981709F49BC0E091CB132E2F30E05C +:106E700086E0E89FF0011124E453FC4EF093E51006 +:106E8000E093E4108381948190938900809388003B +:106E9000808191819093E0108093DF10E281809156 +:106EA000E1108E1761F1E093E11081E1E89FF001BC +:106EB0001124EF50FC4EF093E310E093E21085852F +:106EC0009685A785B089B695A79597958795809360 +:106ED000CB109093CC10A093CD10B093CE10809394 +:106EE000C7109093C810A093C910B093CA10809394 +:106EF000C3109093C410A093C510B093C610E09136 +:106F0000E210F091E31090818091C0108927809366 +:106F1000D21086E0829FD001839FB00D1124A4532C +:106F2000BC4E15962C9181819281A381B481022E51 +:106F300004C0B695A795979587950A94D2F7809344 +:106F4000D3109093D410A093D510B093D610858110 +:106F50009681A781B085022E04C0B695A795979516 +:106F600087950A94D2F78093D7109093D810A09366 +:106F7000D910B093DA1081859285A385B48504C0B9 +:106F8000B695A795979587952A95D2F78093DB10AC +:106F90009093DC10A093DD10B093DE100AC0C8DE21 +:106FA0009FB7F8948091D91484608093D9149FBFBF +:106FB00046C18091DA148130B1F489B18071909129 +:106FC0002815891781F01092DA148CE0EEE2F5E1D1 +:106FD000AAE3B5E101900D928A95E1F78091D91469 +:106FE00080648093D9141092D1104091C3105091B5 +:106FF000C4106091C5107091C6108091D31090910B +:10700000D410A091D510B091D610840F951FA61F53 +:10701000B71F8093C3109093C410A093C510B09372 +:10702000C610E091E210F091E31045855685678522 +:107030007089481759076A077B0768F521E0209394 +:10704000D1104585568567857089841B950BA60BE5 +:10705000B70B8093C3109093C410A093C510B09346 +:10706000C610208180912E1590912F15A09130157A +:10707000B091311520FF04C00197A109B10903C0E7 +:107080000196A11DB11D80932E1590932F15A093ED +:107090003015B09331154091C7105091C8106091D0 +:1070A000C9107091CA108091D7109091D810A091FA +:1070B000D910B091DA10840F951FA61FB71F8093C7 +:1070C000C7109093C810A093C910B093CA104585FB +:1070D000568567857089481759076A077B0778F5D1 +:1070E0002091D11022602093D11045855685678567 +:1070F0007089841B950BA60BB70B8093C7109093D8 +:10710000C810A093C910B093CA1020818091321585 +:1071100090913315A0913415B091351521FF04C01D +:107120000197A109B10903C00196A11DB11D80936A +:10713000321590933315A0933415B09335154091C3 +:10714000CB105091CC106091CD107091CE108091E9 +:10715000DB109091DC10A091DD10B091DE10840F57 +:10716000951FA61FB71F8093CB109093CC10A093B0 +:10717000CD10B093CE104585568567857089481728 +:1071800059076A077B0778F52091D1102460209376 +:10719000D1104585568567857089841B950BA60B94 +:1071A000B70B8093CB109093CC10A093CD10B093DD +:1071B000CE1020818091361590913715A091381509 +:1071C000B091391522FF04C00197A109B10903C08C +:1071D0000196A11DB11D8093361590933715A0938C +:1071E0003815B093391580912B15843039F490916E +:1071F000D1108091471589238093D1108091DF10A1 +:107200009091E01001979093E0108093DF10892B0C +:1072100069F41092E5101092E4108091CB138F5F07 +:107220008093CB13863011F41092CB139091D11030 +:107230008091C11089278093D1101092C210FF91C4 +:10724000EF91BF91AF919F918F917F916F915F91DE +:107250004F913F912F910F900BBE0F900FBE0F904B +:107260001F9018958091181582FF08C08A9A809106 +:1072700008018160809308015F9A07C08A98809115 +:1072800008018E7F809308015F9880912B158C7088 +:10729000A1F08091C0108093D2108091C110809392 +:1072A000D11080910B15880F845081958093D01058 +:1072B00080916F00826080936F0008951F920F92FB +:1072C0000FB60F9211240BB60F92CF92DF92EF926E +:1072D000FF920F931F932F933F934F935F936F935F +:1072E0007F938F939F93AF93BF93EF93FF9380917F +:1072F000841090918510009721F0019709F435C111 +:1073000031C28091861090918710A0918810B09121 +:107310008910AC01BD0141505109610971094093C7 +:107320008610509387106093881070938910892B72 +:107330008A2B8B2B59F0809102018064809302018B +:10734000809102018F7B809302010FC0E0919F101A +:10735000F091A010309709F01995809172008D7FFF +:107360008093720081E080939E10809182109091B2 +:1073700083108130910509F4B4C020F0029709F41C +:10738000D3C0E4C1C0908610D0908710E0908810E0 +:10739000F090891060918A1070918B1080918C1000 +:1073A00090918D1022E030E040E050E00E94FD75A9 +:1073B000C216D306E406F5060CF4AFC080919A100D +:1073C00090919B10A0919C10B0919D100196A11DD1 +:1073D000B11D80939A1090939B10A0939C10B09332 +:1073E0009D10C0909210D0909310E0909410F09067 +:1073F00095108091921090919310A0919410B0915B +:10740000951000919A1010919B1020919C10309132 +:107410009D10BC01CD01660F771F881F991F52E098 +:10742000000F111F221F331F5A95D1F7A901980190 +:107430002F5F3F4F4F4F5F4F0E94FD75C21AD30A17 +:10744000E40AF50AC0929210D0929310E092941040 +:10745000F092951040919210509193106091941079 +:10746000709195108091961090919710A09198101E +:10747000B0919910481759076A077B070CF066C14D +:107480008091861090918710A0918810B0918910FA +:1074900040918A1050918B1060918C1070918D10DA +:1074A000880F991FAA1FBB1F841B950BA60BB70B38 +:1074B00080938E1090938F10A0939010B0939110A2 +:1074C0008091961090919710A0919810B09199107A +:1074D0008093921090939310A0939410B093951072 +:1074E000C6C080918E1090918F10A0919010B09195 +:1074F0009110AC01BD0141505109610971094093DE +:107500008E1050938F1060939010709391101816F6 +:1075100019061A061B060CF419C182E090E090933C +:1075200083108093821012C18091861090918710F1 +:10753000A0918810B0918910892B8A2B8B2B09F48C +:1075400005C180919A1090919B10A0919C10B091D0 +:107550009D100197A109B10980939A1090939B10F7 +:10756000A0939C10B0939D10A0C0809102018064F4 +:1075700080930201809102018F7B809302018091B0 +:10758000821090918310009721F0029709F472C045 +:10759000DDC04091921050919310609194107091C1 +:1075A00095108091961090919710A0919810B0919D +:1075B000991084179507A607B7070CF04DC0809166 +:1075C0009A1090919B10A0919C10B0919D100196E3 +:1075D000A11DB11D80939A1090939B10A0939C10B5 +:1075E000B0939D10C0909210D0909310E0909410A2 +:1075F000F09095108091921090919310A09194101A +:10760000B091951000919A1010919B1020919C10B0 +:1076100030919D10BC01CD01660F771F881F991F07 +:10762000F2E0000F111F221F331FFA95D1F7A901B5 +:1076300098012F5F3F4F4F4F5F4F0E94FD75C21A59 +:10764000D30AE40AF50AC0929210D0929310E09205 +:107650009410F09295107AC0E091A110F091A210D0 +:10766000309729F019951092A2101092A11081E084 +:1076700090E055CF80919A1090919B10A0919C1012 +:10768000B0919D10AC01BD014150510961097109D2 +:1076900040939A1050939B1060939C1070939D1090 +:1076A000892B8A2B8B2B09F441C060919210709129 +:1076B0009310809194109091951000919A101091D0 +:1076C0009B1020919C1030919D10C0909A10D090EA +:1076D0009B10E0909C10F0909D1042E0000F111F55 +:1076E000221F331F4A95D1F7A90198012F5F3F4F01 +:1076F0004F4F5F4F0E94AC759701860152E0000F1B +:10770000111F221F331F5A95D1F7A901980121504B +:107710003109410951090E94FD752093921030935F +:107720009310409394105093951010C08091720064 +:107730008D7F80937200E091A110F091A21030979C +:1077400029F019951092A2101092A1108091921018 +:1077500090919310A0919410B09195109093A900DE +:107760008093A800FF91EF91BF91AF919F918F916E +:107770007F916F915F914F913F912F911F910F9149 +:10778000FF90EF90DF90CF900F900BBE0F900FBE49 +:107790000F901F901895E0EAF0E080818F7D808344 +:1077A0005C980895CF92DF92EF92FF926A017B017D +:1077B000811105C0FF90EF90DF90CF90ECCF81302A +:1077C00011F45C9801C05C9A83E28093A0008091E0 +:1077D000A100807E8A618093A1008FEF9FEF90933C +:1077E000A9008093A80020E030E0A901C701B601FC +:1077F0000E9482721816F4F620E030E0A901C70159 +:10780000B6010E94827287FD11C020E030E04AE795 +:1078100054E4C701B6010E94A074181654F4C12C98 +:10782000D12C8AE7E82E84E4F82E03C0C12CD12C99 +:1078300076012CEE31E143E852E4C701B6010E9423 +:10784000DB7420E030E040E05FE30E94A9710E9419 +:107850005F730E94F6727093AB006093AA005C9A0B +:10786000FF90EF90DF90CF900895CF92DF92EF924C +:10787000FF92CF93DF93C82F6A017B0120E030E0B5 +:10788000A901C701B6010E94827287FDE2C0C43619 +:1078900008F441C08CE98C0F20E0833098F590E02B +:1078A000880F991F880F991F223079F0FC0123302F +:1078B00011F1213019F0E552FB4E02C0E951FB4EA7 +:1078C000C082D182E282F382C1C0EC01CD50DB4E96 +:1078D00020E030E040E752E4C701B6010E94DB74CB +:1078E00020E030E040E752E40E94DB746883798353 +:1078F0008A839B83ABC0E150FB4EF7FAF094F7F814 +:10790000F094DECF2F5F8A3008F4A5C0243009F44C +:10791000A2C08A50C2CFC701B6010E9489750E94D9 +:10792000F6728C2F90E08C31910508F094C0FC0128 +:107930008827E256FF4F8F4F0C941976633008F476 +:107940008CC060930B1582C060930E157FC060934E +:107950000C1502C060930D156CD978C08091181574 +:10796000662311F084604CC08B7F4AC0809118154B +:10797000662311F0806444C08F7B42C0809118154B +:10798000662311F080683CC08F773AC060930F1572 +:107990005DC0C0921015D0921115E0921215F092B0 +:1079A000131554C0C0921415D0921515E0921615F7 +:1079B000F09217154BC080911815662311F0816065 +:1079C0001FC08E7F1DC080911815662321F084FF93 +:1079D00046C0806215C08F7D13C080911815662344 +:1079E00011F0886001C0877F809318150E940E5F98 +:1079F0002DC080911815662311F0806101C08F7C25 +:107A00008093181523C06093191520C0C0921A15D1 +:107A1000D0921B15E0921C15F0921D1517C0C09254 +:107A20001E15D0921F15E0922015F09221150EC060 +:107A300070E0709323156093221508C0C09224153E +:107A4000D0922515E0922615F0922715E5D880E012 +:107A500007C084E005C083E003C086E001C08AE07F +:107A6000DF91CF91FF90EF90DF90CF9008951F931B +:107A7000CF93DF93182FEB018DE0189FB0011124F5 +:107A8000765F4CE050E0CE010E948B5F892B59F469 +:107A90008CE0FE0111928A95E9F7BE01812F0E94C8 +:107AA000673080E001C081E0DF91CF911F910895A0 +:107AB000EF92FF920F931F93CF93DF93CDB7DEB773 +:107AC0002C970FB6F894DEBF0FBECDBF182F80FFE6 +:107AD000C7C08AE080930B158FEF80930E1510922C +:107AE0000C1587E080930D1583E080930F158AE0D5 +:107AF00097EDA3E2BCE38093101590931115A0932A +:107B00001215B09313158FE692E1A3E0BBE38093C7 +:107B1000141590931515A0931615B0931715109280 +:107B2000191580E090E0A8ECB1E480931A159093C9 +:107B30001B15A0931C15B0931D1580E090E0AAEFD3 +:107B4000B3E480931E1590931F15A0932015B09356 +:107B500021158AEF90E0909323158093221580E001 +:107B600090E0A0E8BFE38093241590932515A0939F +:107B70002615B093271584E08093181580E090E0D7 +:107B8000A8ECB5E48093DB149093DC14A093DD148F +:107B9000B093DE148093DF149093E014A093E1146B +:107BA000B093E2148093E3149093E414A093E5144B +:107BB000B093E61480E090E5A3ECB7E48093E7147B +:107BC0009093E814A093E914B093EA148093EB1413 +:107BD0009093EC14A093ED14B093EE148093EF14F3 +:107BE0009093F014A093F114B093F21480E090EA13 +:107BF000ACE0B7E48093F3149093F414A093F514DD +:107C0000B093F6148093F7149093F814A093F9149A +:107C1000B093FA148093FB149093FC14A093FD147A +:107C2000B093FE1480E090E4ACE1B6EC8093FF14D6 +:107C300090930015A0930115B0930215809303153E +:107C400090930415A0930515B0930615809307151E +:107C500090930815A0930915B0930A150E940C364D +:107C600011FF10C0CE0101967C018CE0F70111924A +:107C70008A95E9F700E0B701802F0E9467300F5F17 +:107C80000830C9F712FF0AC060E080E09BE00E9464 +:107C9000265F60E081E59BE00E94265F13FF05C040 +:107CA00060E08EEA9BE00E94265F2C960FB6F89467 +:107CB000DEBF0FBECDBFDF91CF911F910F91FF901F +:107CC000EF9008951F93CF93DF93CDB7DEB72C9736 +:107CD0000FB6F894DEBF0FBECDBF80E090E00E94EB +:107CE000835F893009F053C04DE450E061E078E0F3 +:107CF0008BED94E10E948B5F892B09F448C020E052 +:107D000030E048EC55E46091DB147091DC14809114 +:107D1000DD149091DE140E948272811138C020E03F +:107D200030E048EC55E46091DF147091E0148091EC +:107D3000E1149091E2140E948272811128C020E027 +:107D400030E048EC55E46091E3147091E4148091C4 +:107D5000E5149091E6140E948272811118C010E01F +:107D6000BE016F5F7F4F812F82DE811103C087E0EC +:107D70000E9402331F5F183099F72C960FB6F894C3 +:107D8000DEBF0FBECDBFDF91CF911F9108958FEF62 +:107D90008FDEE5CF8F929F92AF92BF92CF92DF920C +:107DA000EF92FF920F931F93CF93DF93CDB7DEB780 +:107DB0002A970FB6F894DEBF0FBECDBF6B017C01D2 +:107DC000042F20E030E0A9010E94827287FF07C0E3 +:107DD0008DE20E94C632F7FAF094F7F8F094102F73 +:107DE000123060F020E030E048EC52E4C701B60108 +:107DF0000E94DB746B017C011250F2CF00FF0AC0BD +:107E000020E030E040E251E4C701B6010E94DB749B +:107E10006B017C0120E030E040E05FE3C701B60188 +:107E20000E94A9710E94F172E1E0F0E0EC0FFD1FE9 +:107E3000E00FF11D2EE2208310E03AE0832E912C1A +:107E4000A12CB12C6115710581059105A9F01013C4 +:107E500001C01F5FEE24E394F12CEC0EFD1EE10E39 +:107E6000F11CA50194010E94DB75605DF701608340 +:107E7000B901CA011F5FE6CF80E3101748F4E1E0C3 +:107E8000F0E0EC0FFD1FE10FF11D80831F5FF5CFC8 +:107E900010130BC081E0810FE1E0F0E0EC0FFD1F5B +:107EA000E80FF11D1E5F80E38083112341F0FE0186 +:107EB000E10FF11D80810E94C6321150F6CF2A9643 +:107EC0000FB6F894DEBF0FBECDBFDF91CF911F91EB +:107ED0000F91FF90EF90DF90CF90BF90AF909F9069 +:107EE0008F9008951F93CF93DF93CDB7DEB7C0581F +:107EF000D1090FB6F894DEBF0FBECDBFAE01495712 +:107F00005F4FFA0161917191AF01CE0101960E941C +:107F10009B7610E0E1E0F0E0EC0FFD1FE10FF11DBA +:107F20008081882321F00E94C6321F5FF3CFC058A2 +:107F3000DF4F0FB6F894DEBF0FBECDBFDF91CF91FC +:107F40001F91089543E026CF2091181520FF08C007 +:107F50002BE832E441E25DE30E94DB7441E001C0C2 +:107F600040E018CF2091181520FF08C02BE832E41C +:107F700041E25DE30E94DB7444E001C043E00ACFCC +:107F8000CF92DF92EF92FF921F93CF93DF93CDB703 +:107F9000DEB7362F142FCDB6DEB64DB75EB7411B18 +:107FA00051090FB6F8945EBF0FBE4DBF4F5F5F4FD4 +:107FB0007A01242FFA019E2F921B911728F4632F28 +:107FC0000E94BB759193F7CF112351F0F701E10F98 +:107FD000F11D31978081805D0E94C6321150F4CF2F +:107FE0000FB6F894DEBE0FBECDBEDF91CF911F91CC +:107FF000FF90EF90DF90CF9008958A3020F0843684 +:1080000020F043E003C041E001C042E06AE0B8CFA5 +:1080100048E062E0B5CFCF93DF93FC018491EF019C +:108020002196882321F00E94C632FE01F7CFDF910E +:10803000CF910895CF93DF93EC018991882319F0B4 +:108040000E94C632FACFDF91CF910895AEE2B5E13A +:10805000E4EAF0E14D915D916D917D9141935193F1 +:108060006193719380E1E03BF807A1F708958CE1FB +:10807000E4EAF0E1DF011D928A95E9F71092C91355 +:108080001092CA1381E08093A3101092E610089515 +:108090002F923F924F925F926F927F928F929F9218 +:1080A000AF92BF92CF92DF92EF92FF920F931F9306 +:1080B000CF93DF93C091CA13C11101C0C2E1C15077 +:1080C000D091E610DC1709F41DC1EC2EF12C29E249 +:1080D000C29F8001112409511F4EF801A588B6885E +:1080E000C788D08C61A172A183A194A19B01AC012E +:1080F0000E94A971F80125A136A147A150A50E94AF +:10810000DB744B018C019B01AC01B501C6010E94DF +:10811000827287FD02C05401680189E28E9DF001E0 +:108120008F9DF00D1124E951FF4EC501D601818BC1 +:10813000928BA38BB48BC11101C0C2E1C150DC177B +:1081400061F029E22E9DC0012F9D900D11249C010C +:1081500029513F4E7901D9E233C08091C913D81318 +:1081600060C00E9450505DC0AC2EB12CDA9DC001A1 +:10817000DB9D900D1124FC01E951FF4E6F01C111EF +:1081800001C0C2E1C1508091C9138C1302C00E948A +:108190005050DA9D8001DB9D100D112409511F4EB6 +:1081A000F80185889688A788B08CA501940161891B +:1081B0007289838994890E948272811106C0760136 +:1081C0008091E610C813D0CF2CC0F80161A172A134 +:1081D00083A194A19B01AC010E94A971F80125A182 +:1081E00036A147A150A50E94DB74F701218932898D +:1081F000438954890E94A9712B013C019B01AC0168 +:10820000C501B4010E94A074F80118162CF4418A2B +:10821000528A638A748AD3CF818A928AA38AB48A63 +:10822000CECFD091E610F9E2DF9F800111240951F1 +:108230001F4EC1E0CD0FC23109F4C0E02090CA1337 +:1082400089E2382EC21509F45BC0CC2ED12C3C9C9F +:10825000C0013D9C900D11249C0129513F4E790194 +:10826000F8014188528863887488F901818892886E +:10827000A388B488A5019401C301B2010E9482724F +:1082800087FF24C0F80161A172A183A194A19B0181 +:10829000AC010E94A971F80125A136A147A150A502 +:1082A0000E94DB74A30192010E94A9712B013C0181 +:1082B0009B01AC01C501B4010E94A074181634F4EE +:1082C000F701418A528A638A748ADC2F3C9CF00150 +:1082D0003D9CF00D1124E951FF4E258936894789CF +:1082E000508D61897289838994890E94827281117B +:1082F00001C0DC2FCF5FC23109F4C0E08701A2CFFB +:10830000D093E610DF91CF911F910F91FF90EF90E6 +:10831000DF90CF90BF90AF909F908F907F906F90A5 +:108320005F904F903F902F9008952F923F924F92E1 +:108330005F926F927F928F929F92AF92BF92CF92F5 +:10834000DF92EF92FF920F931F93CF93DF93CDB7FE +:10835000DEB7E5970FB6F894DEBF0FBECDBF4B8FEB +:108360005C8F6D8F072F2DAB2091CA132EA3422F48 +:1083700050E05BA34AA339E2239FF0011124E951A5 +:10838000FF4E158616861786108A15A216A217A20A +:1083900010A6108249E956E766E97EE741A352A399 +:1083A00063A374A31C014BED54E158A74FA3CE0166 +:1083B00001969AAB89AB24EA30E13EA72DA74EA1E6 +:1083C00039E2439FC00111249C0128513F4E3AA736 +:1083D00029A7AE01435F5F4F5DA34CA359A348A3F8 +:1083E00084EA90E198AB8FA72BED34E13F8F2E8F7D +:1083F00010E03F01AF01435F5F4F5CAB4BAB2F0120 +:1084000055E2450E511CF10161917191819191915B +:108410001F01EE8DFF8D81909190A190B190FF8F03 +:10842000EE8FA50194010E94DB740E94AB74E9A950 +:10843000FAA96193719381939193FAABE9ABEFA59C +:10844000F8A9C190D190E190F190F8ABEFA76C1929 +:108450007D098E099F099B01AC0197FF07C0222768 +:108460003327A901261B370B480B590BE9A5FAA5A1 +:108470002193319341935193FAA7E9A7EBA9FCA962 +:10848000C080D180E280F380C216D306E406F506F0 +:1084900010F469017A01EBA9FCA9C082D182E282C1 +:1084A000F3820E942473A50194010E9489724B01FA +:1084B0005C01E8A1F9A16193719381939193F9A370 +:1084C000E8A320E030E0A9010E94827287FF0DC07E +:1084D000112321F0113021F084E003C081E001C0BC +:1084E00082E0F3019081892B8083A5019401C5016D +:1084F000B4010E94DB74F2012081318142815381F9 +:108500000E94A971F20160837183828393831F5F4C +:10851000133009F078CF0E9448754B015C01F201DD +:108520006083718382839383CD28CE28CF2809F47A +:1085300022C220E030E0A9016B8D7C8D8D8D902FC3 +:108540000E94827287FD21C0FDA9FF2361F0A50171 +:1085500094016B8D7C8D8D8D902F0E94DB746B8FC1 +:108560007C8F8D8F092F20E030E040E85FE36B8D3A +:108570007C8D8D8D902F0E94827287FF0DC01B8E87 +:108580001C8E20E82D8F0FE307C039E93B8F46E7AB +:108590004C8F56E95D8F0EE7A501940160E070E015 +:1085A00080E89FE30E94897269A77AA78BA79CA79E +:1085B000CE0149969A8F898FC12CD12C760129E260 +:1085C000EAA1FBA12E9FC0012F9F900D11249C01B9 +:1085D000285F3E4E39A328A3ECA1FDA180809180A5 +:1085E000A280B38020E030E0A901C501B4010E945F +:1085F0008272882309F472C0A501940169A57AA545 +:108600008BA59CA50E94DB742B013C01ECA1FDA174 +:1086100060837183828393839B01AC0160E070E08F +:1086200080E89FE30E9489724B015C01E894B7F8EF +:10863000EFA1F8A52485358546855785C501B40188 +:108640000E94DB741B018E8F192F2B8D3C8D4D8D5D +:10865000502F0E94A07418162CF02B8E3C8EFE8D8D +:10866000FD8F012FE8A1F9A1F081FE8FE8A1F9A10A +:10867000118122803380EFA1F8A5208D318D428DAC +:10868000538DC501B4010E94DB745B014C019B0159 +:10869000AC016E8D712FC1010E94827287FD03C0F3 +:1086A000AE8E1B2D14018E8D912FD101E8A1F9A161 +:1086B00080839183A283B383EDA5FEA524853585B0 +:1086C00046855785C301B2010E94DB749B01AC0152 +:1086D000C701B6010E94A8716B017C012CA13DA1CC +:1086E0002C5F3F4F3DA32CA34DA55EA54C5F5F4F74 +:1086F0005EA74DA78FA198A5049698A78FA3E98D93 +:10870000FA8DE217F30709F067CF8091C913FEA134 +:10871000F8130FC089E22AA13BA1829FF001839F39 +:10872000F00D1124E951FF4E118A128A138A148A1E +:1087300014C02FEE3FEF4FE75FE3C701B6010E9481 +:10874000A07418167CF489E24AA15BA1849FF00111 +:10875000859FF00D1124E951FF4E118E128E138E5C +:10876000148E6AC02FEE3FEF4FE75FEBC701B601F3 +:108770000E94A074181644F08FEEC82EDD24DA94FF +:108780008FE7E82E8FEBF82EA701960160E070E0EE +:1087900080E89FE30E94A87120E030E040E05FE3C2 +:1087A0000E94DB740E9448756B017C0189E22AA15A +:1087B0003BA1829FF001839FF00D1124E951FF4EF0 +:1087C00020911015309111154091121550911315EB +:1087D00061A172A183A194A10E94DB74A7019601FB +:1087E0000E94DB744B015C01A701960160E070E020 +:1087F00080E89FE30E94A8719B01AC01C501B40110 +:108800000E9489726B017C0120E030E0A9010E9486 +:10881000827287FF03C0C12CD12C760189E24AA164 +:108820005BA1849FF001859FF00D1124E951FF4E5B +:10883000C18ED28EE38EF48E2B8D3C8D4D8D502FBC +:108840006B8D7C8D8D8D902F0E94DB747B018C0154 +:1088500089E22AA13BA1829FF001839FF00D1124A0 +:10886000E951FF4EC701D801858F968FA78FB0A31E +:10887000A18CB28CC38CD48C6090BC107090BD1055 +:108880008090BE109090BF109301A401B701C80161 +:108890000E94827287FD05C0B62DA72DF82DE92D07 +:1088A00004C0BE2DAF2DF02FE12F9501A6016B2F37 +:1088B0007A2F8F2F9E2F0E94A07418166CF09301B0 +:1088C000A401B701C8010E94827287FD03C0530151 +:1088D000640102C05701680189E24AA15BA1849F3B +:1088E000F001859FF00D1124E951FF4EC501D6011D +:1088F000858B968BA78BB08F8CE0FE013D96A0EB0D +:10890000B0E101900D928A95E1F7C701D8018093FB +:10891000BC109093BD10A093BE10B093BF108CE01C +:10892000FE013196A4EAB0E101900D928A95E1F73B +:108930008091A3108093CA138F5F823109F480E085 +:108940008093A310E5960FB6F894DEBF0FBECDBF9F +:10895000DF91CF911F910F91FF90EF90DF90CF901B +:10896000BF90AF909F908F907F906F905F904F904F +:108970003F902F908DCBE5960FB6F894DEBF0FBEDB +:10898000CDBFDF91CF911F910F91FF90EF90DF90BE +:10899000CF90BF90AF909F908F907F906F905F909F +:1089A0004F903F902F9008956115710581059105B5 +:1089B000C1F16A3071058105910548F425E02A95D9 +:1089C000F1F700006150710981099109EDCF64361A +:1089D00071058105910548F4E5E3EA95F1F700009A +:1089E0006A50710981099109DFCF683EF3E07F0782 +:1089F0008105910558F4EFE8F1E03197F1F700C0F7 +:108A000000006456710981099109CECFEFE9FFE0BA +:108A10003197F1F700C00000685E73408109910949 +:108A2000C3CF0895009741F0EFE9FFE03197F1F7E8 +:108A300000C000000197F6CF08954F925F926F92A9 +:108A40007F92AF92BF92CF92DF92EF92FF920F93FD +:108A50001F93CF93DF936C01FB015A01309729F0EC +:108A60008081D601A80FB11D01C0DC018C91ED0100 +:108A70008D3229F4229611968C9101E008C08B3238 +:108A800011F0219603C0229611968C9100E0512C92 +:108A9000612C10E020E030E0A9017E0160ED762E2F +:108AA000780E89E08715D8F06394A8E0A61598F0B1 +:108AB00051101150A5E0B0E00E943076DC01CB01EE +:108AC000880F991FAA1FBB1F9C01AD01270D311DE7 +:108AD000411D511D0BC0511009C01F5F07C0BEEFE3 +:108AE0007B1208C0511006C0552453942196D7011B +:108AF0008C91D3CF662009F450C07F01CA01B9011F +:108B00000E9422732B013C0120E030E0A9010E9469 +:108B10008272882349F11F3F64F42AE037ED43E273 +:108B20005CE3C301B2010E94DB742B013C011E5FB8 +:108B3000F2CF1F3F59F42DEC3CEC4CEC5DE3C3014C +:108B4000B2010E94DB742B013C010EC0112361F0C5 +:108B500020E030E040E251E4C301B2010E94DB7446 +:108B60002B013C011150F2CF002351F077FA7094A1 +:108B700077F87094F501408251826282738206C058 +:108B8000D5014D925D926D927C921397CC19DD09BF +:108B9000C150F701C08381E001C080E0DF91CF9137 +:108BA0001F910F91FF90EF90DF90CF90BF90AF900B +:108BB0007F906F905F904F9008958091D91484FDBD +:108BC00026C09FB7F8948091D91480618093D914FE +:108BD0009FBF0E94CB3B0E94CD5F80912B15982FA9 +:108BE0009C7021F490912C15913089F49FB78430BA +:108BF00029F4F89480912915806204C0F89480913A +:108C000029158860809329159FBF0C949836089584 +:108C10002F923F924F925F926F927F928F929F928C +:108C2000AF92BF92CF92DF92EF92FF920F931F937A +:108C3000CF93DF93CDB7DEB7C756D1090FB6F894FF +:108C4000DEBF0FBECDBF66968FAF66971B016B96DA +:108C50002CAF3DAF4EAF5FAF6B97A8960FAFA89705 +:108C60008091181585FF51C03B010BED14E17B018C +:108C70002CE0E20EF11CDD24D394D3018D909D9065 +:108C8000AD90BD903D0120E030E0A901C501B401E7 +:108C90000E94A074181654F0F80124A135A146A131 +:108CA00057A1C501B4010E94827287FDD0922D1593 +:108CB00080912D15882319F180912B15883061F052 +:108CC0007CDF9FB7F89480912915856080932915E2 +:108CD0009FBF0E94B53319C09FB7F8948091D914F3 +:108CE00088608093D9149FBF0E94B53380912A1564 +:108CF00081110BC080912B158111F6CFE1CF0C5F54 +:108D00001F4FE614F70409F0B8CF80912B1582307D +:108D100009F475C3F10180819181A281B3816596C7 +:108D20008CAF9DAFAEAFBFAF659784819581A681B3 +:108D3000B78161968CAF9DAFAEAFBFAF61978085B5 +:108D40009185A285B3852D968CAF9DAFAEAFBFAF99 +:108D50002D97AE01475B5F4FBE01635B7F4FCE0136 +:108D60008F5A9F4F0E94BC2F2D96ECACFDAC0EADE0 +:108D70001FAD2D9761962CAD3DAD4EAD5FAD6197AA +:108D800065966CAD7DAD8EAD9FAD6597DE0191961C +:108D90004D01FE017D965F0118976D01F3D3E9A0A7 +:108DA000FAA00BA11CA12D8D3E8D4F8D58A1698D70 +:108DB0007A8D8B8D9C8D12D7882309F41CC360910A +:108DC000840D7091850D8091860D9091870D0E9484 +:108DD00024732B013C016091800D7091810D809175 +:108DE000820D9091830D0E9424736F966CAF7DAFBE +:108DF0008EAF9FAF6F9760917C0D70917D0D8091CC +:108E00007E0D90917F0D0E942473FE01BD964F014F +:108E10009E01275D3F4F5901DE0195966D0183014B +:108E200072016F962CAD3DAD4EAD5FAD6F9745D6DF +:108E3000A401B501C601FDD20E94623E6696BFAD97 +:108E40006697BB2319F0B13041F0DDC0E1E0F0E0FE +:108E50006796FFAFEEAF6797DAC020E030E048ECEE +:108E600052E46B966CAD7DAD8EAD9FAD6B970E945D +:108E7000A074181654F480E090E0A8ECB2E46B966D +:108E80008CAF9DAFAEAFBFAF6B972DA13EA14FA1F1 +:108E900058A5D1016D917D918D919C910E94A871F1 +:108EA0002B013C0129A53AA54BA55CA5F1016481E4 +:108EB0007581868197810E94A8714B015C012DA567 +:108EC0003EA54FA558A9D10118966D917D918D9120 +:108ED0009C911B970E94A8716B017C01A3019201D8 +:108EE000C301B2010E94DB742B013C01A501940176 +:108EF000C501B4010E94DB749B01AC01C301B20146 +:108F00000E94A9714B015C01A7019601C701B6013E +:108F10000E94DB749B01AC01C501B4010E94A971E0 +:108F20000E94487520E030E040EF51E40E94DB747D +:108F30006B962CAD3DAD4EAD5FAD6B970E948972C7 +:108F40000E94F67267967FAF6EAF67976A307105C1 +:108F500030F42AE030E067963FAF2EAF679720E00D +:108F600030E040E950E46B966CAD7DAD8EAD9FADC9 +:108F70006B970E94DB7420E030E048EC52E40E94E2 +:108F8000897220E030E040E05FE30E94A97120E0B8 +:108F900030E040E752E40E94DB7420E030E040E73C +:108FA00052E40E94DB746B017C016093F3147093B4 +:108FB000F4148093F5149093F6146093F71470935F +:108FC000F8148093F9149093FA1420E030E442E905 +:108FD00055E40E94A07487FF09C0C092FB14D09290 +:108FE000FC14E092FD14F092FE1411C080E090E4B5 +:108FF000A2E9B5E48093FB149093FC14A093FD14B4 +:10900000B093FE1404C067961FAE1EAE67976796B6 +:10901000AEADBFAD6797BD0180E090E00E942273C6 +:109020006B017C012DA13EA14FA158A5F1016081EA +:109030007181828193810E94A871A70196010E948B +:1090400089726F966CAF7DAF8EAF9FAF6F9729A57A +:109050003AA54BA55CA5D10114966D917D918D919A +:109060009C9117970E94A871A70196010E9489728E +:10907000A3966CAF7DAF8EAF9FAFA3972DA53EA5F6 +:109080004FA558A9F10160857185828593850E945D +:10909000A871A70196010E948972A7966CAF7DAF57 +:1090A0008EAF9FAFA79722242394312C67962EADC5 +:1090B0003FAD67972215330508F49BC1B101032C1E +:1090C000000C880B990B0E9424736B017C019B019F +:1090D000AC016F966CAD7DAD8EAD9FAD6F970E946C +:1090E000DB749B01AC016DA17EA18FA198A50E94AC +:1090F000A9716D877E878F87988BA7019601A396AC +:109100006CAD7DAD8EAD9FADA3970E94DB749B01CE +:10911000AC0169A57AA58BA59CA50E94A971698B54 +:109120007A8B8B8B9C8BA7019601A7966CAD7DAD3E +:109130008EAD9FADA7970E94DB749B01AC016DA51E +:109140007EA58FA598A90E94A9716D8B7E8B8F8BB0 +:10915000988FAE014B5E5F4FBE016F5E7F4FCE01B9 +:109160000D960E94BC2FED88FE880F89188D2989E5 +:109170003A894B895C896D857E858F859889DE016A +:10918000DD964D01FE01EF5BFF4F5F0118966D010B +:10919000F9D12196ECACFDAC0EAD1FAD2197259613 +:1091A0002CAD3DAD4EAD5FAD259729966CAD7DAD37 +:1091B0008EAD9FAD299712D5882309F416C16D8510 +:1091C0007E858F8598896093880D7093890D809333 +:1091D0008A0D90938B0D29893A894B895C8920935C +:1091E0008C0D30938D0D40938E0D50938F0DED8827 +:1091F000FE880F89188DE092900DF092910D0093EA +:10920000920D1093930DFE01F1964F01DE01D5965C +:109210005D0138966F01B6D1C9A8DAA8EBA8FCA801 +:109220008DA89EA8AFA8B8AC2091700D3091710D9B +:109230004091720D5091730D69AD7AAD8BAD9CADBF +:109240000E94A87120E030E040EA52E40E94DB7402 +:109250000E94F172072E000C880B990B0E94247358 +:1092600069837A838B839C832091740D3091750D73 +:109270004091760D5091770DC501B4010E94A871FF +:1092800020E030E040EA52E40E94DB740E94F17278 +:10929000072E000C880B990B0E9424736D837E832C +:1092A0008F8398872091780D3091790D40917A0DB8 +:1092B00050917B0DC701B6010E94A87120E030E0FB +:1092C00044EB52E40E94A97120E030E040EA52E40D +:1092D0000E94DB740E94F172072E000C880B990B20 +:1092E0000E94247369877A878B879C870E94B53395 +:1092F00080912A15811181C09091C9138091A3108A +:10930000981303C00E94A833F1CF89809A80AB8064 +:10931000BC80C501B4010E94F17260937C0D709312 +:109320007D0D80937E0D90937F0DCD80DE80EF804C +:10933000F884C701B6010E94F1726093800D7093AA +:10934000810D8093820D9093830D49845A846B84A0 +:109350007C84C301B2010E94F1726093840D70930A +:10936000850D8093860D9093870D2091DB143091AD +:10937000DC144091DD145091DE14C501B4010E944B +:10938000897269837A838B839C832091DF14309167 +:10939000E0144091E1145091E214C701B6010E941B +:1093A00089726D837E838F8398872091E314309137 +:1093B000E4144091E5145091E614C301B2010E94F7 +:1093C000897269877A878B879C87A8962FADA89723 +:1093D0006B964CAD5DAD6EAD7FAD6B97CE010196DA +:1093E0000E94954131E03093980DFFEF2F1A3F0A0C +:1093F0005DCE80E004C083E302C082E000C0C959B2 +:10940000DF4F0FB6F894DEBF0FBECDBFDF91CF9117 +:109410001F910F91FF90EF90DF90CF90BF90AF9092 +:109420009F908F907F906F905F904F903F902F9084 +:1094300008954F925F926F927F92AF92BF92CF92B8 +:10944000DF92EF92FF920F931F93CF93DF935C0114 +:10945000EB018A01FC01408051806280738020E032 +:1094600030E0A901C301B2010E94827220E030E025 +:10947000A901811111C0688179818A819B810E9433 +:10948000A0741816E4F02AEDC22E2FE0D22E29EC9B +:10949000E22E2FEBF22E22C0C301B2010E94827293 +:1094A00087FD16C0A3019201688179818A819B8121 +:1094B0000E9489720E9447726B017C010FC09AED75 +:1094C000C92E9FE0D92E99ECE92E9FE3F92E06C014 +:1094D000C12CD12C80ECE82E8FE7F82EC701B60105 +:1094E0000E9486722091640D3091650D4091660D49 +:1094F0005091670D0E94DB74A30192010E94A97133 +:10950000F5016083718382839383C701B6010E9452 +:109510003E752091640D3091650D4091660D50911E +:10952000670D0E94DB749B01AC01688179818A819F +:109530009B810E94A971688379838A839B83209190 +:10954000680D3091690D40916A0D50916B0DF801D5 +:1095500060817181828193810E94A871F80160838A +:10956000718382839383DF91CF911F910F91FF903D +:10957000EF90DF90CF90BF90AF907F906F905F9013 +:109580004F9008952F923F924F925F926F927F92E9 +:109590008F929F92AF92BF92CF92DF92EF92FF9203 +:1095A0000F931F93CF93DF93CDB7DEB766970FB6B8 +:1095B000F894DEBF0FBECDBF69837A838B839C8313 +:1095C0002D833E834F835887270138011601BA8ABD +:1095D000A98A84019B01AC010E94DB746B017C01B0 +:1095E0002D813E814F815885CA01B9010E94DB74EB +:1095F0009B01AC01C701B6010E94A9710E94487588 +:1096000023E333E343E551E40E94A87169877A8735 +:109610008B879C872DEC3CEC46ED52E4C301B201F4 +:109620000E94A8712B013C0129853A854B855C85F8 +:10963000CA01B9010E94DB746B017C01A301920194 +:10964000C301B2010E94DB749B01AC01C701B601EA +:109650000E94A9716B017C0124ED35E64DE955E4CA +:109660000E94A8714B015C0126EC3FEA4DE957E4EA +:10967000C701B6010E94DB746D877E878F87988B48 +:10968000A5019401C501B4010E94DB749B01AC01EA +:109690006D857E858F8598890E94A8710E94487586 +:1096A0006B8B7C8B8D8B9E8BA7019601C701B601BE +:1096B0000E94A9716D877E878F87988BA501940181 +:1096C00069857A858B859C850E94DB744B015C01E2 +:1096D0002B893C894D895E89C301B2010E94DB74EC +:1096E0009B01AC01C501B4010E94A8714B015C0152 +:1096F0002CEE31E14EE053E46D857E858F859889AF +:109700000E94DB749B01AC01C501B4010E94897207 +:109710000E949A7121EE3EE245E652E40E94DB741B +:10972000F101608371838283938324ED35E64DE9F3 +:1097300055E4C701B6010E94A9714B015C012BE3FE +:1097400039E045EC57E4C701B6010E94DB746B01B8 +:109750007C01A5019401C501B4010E94DB749B0149 +:10976000AC01C701B6010E94A8710E9448756B0147 +:109770007C01A501940169857A858B859C850E9471 +:10978000DB744B015C01A7019601C301B2010E9489 +:10979000DB749B01AC01C501B4010E94A9716B018E +:1097A0007C012CE53FEC4EE153E46D857E858F8591 +:1097B00098890E94DB749B01AC01C701B6010E942D +:1097C00089720E949A7121EE3EE245E652E40E94BF +:1097D000DB746B017C01E989FA8960837183828380 +:1097E000938321EE3EE245E652E4F101608171810E +:1097F000828193810E9489720E943E752CEE31E134 +:109800004EE053E40E94DB749B01AC01C301B20142 +:109810000E94A074181654F4F7FAF094F7F8F09434 +:10982000E989FA89C082D182E282F38220E030E0C5 +:10983000A90169817A818B819C810E94827220E0DA +:1098400030E0A901811112C06D817E818F819885E0 +:109850000E94A07418162CF480E090E0A4EBB2E40F +:1098600011C080E090E0A4EBB2EC0CC069817A8179 +:109870008B819C810E94827287FF0AC080E090E009 +:10988000A0ECBFE7F80180839183A283B38317C064 +:1098900029813A814B815C816D817E818F819885A0 +:1098A0000E9489720E94477221EE3EE245E652E430 +:1098B0000E94DB74F80160837183828393836696D0 +:1098C0000FB6F894DEBF0FBECDBFDF91CF911F91D1 +:1098D0000F91FF90EF90DF90CF90BF90AF909F904F +:1098E0008F907F906F905F904F903F902F90089552 +:1098F0002F923F924F925F926F927F928F929F92A0 +:10990000AF92BF92CF92DF92EF92FF920F931F938D +:10991000CF93DF93CDB7DEB72E970FB6F894DEBFA7 +:109920000FBECDBF29833A834B835C83ED82FE82D9 +:109930000F831887860115019E868D8621EE3EE2F3 +:1099400045E652E40E9489722B013C0121EE3EE281 +:1099500045E652E469817A818B819C810E948972FB +:109960004B015C0121EE3EE245E652E46D817E81D1 +:109970008F8198850E9489726B017C01C301B201BD +:109980000E94867269837A838B839C83C501B401AC +:109990000E9486726D837E838F839887C301B20194 +:1099A0000E943E752B013C01C501B4010E943E7529 +:1099B00069877A878B879C872CEE31E14EE053E4F0 +:1099C00069817A818B819C810E94DB744B015C01EF +:1099D0002CE53FEC4EE153E46D817E818F819885CB +:1099E0000E94DB749B01AC01C501B4010E94A97106 +:1099F00023E333E343E551E40E94A9714B015C0189 +:109A0000C701B6010E9486729B01AC01C501B40179 +:109A10000E94DB74F8016083718382839383C701A2 +:109A2000B6010E943E759B01AC01C501B4010E94C4 +:109A3000DB74F10160837183828393832CEE31E1C7 +:109A40004EE053E4C301B2010E94DB746B017C0160 +:109A50002CE53FEC4EE153E469857A858B859C8546 +:109A60000E94DB749B01AC01C701B6010E94A87182 +:109A70002DEC3CEC46ED52E40E94A971ED85FE858B +:109A800060837183828393832E960FB6F894DEBF32 +:109A90000FBECDBFDF91CF911F910F91FF90EF903F +:109AA000DF90CF90BF90AF909F908F907F906F90FE +:109AB0005F904F903F902F9008952F923F924F923A +:109AC0005F926F927F928F929F92AF92BF92CF924E +:109AD000DF92EF92FF920F931F93CF93DF93CDB757 +:109AE000DEB728970FB6F894DEBF0FBECDBF2B01AF +:109AF0003C0129833A834B835C83ED82FE820F8392 +:109B00001887860182E6282E8DE0382E20E030E08E +:109B100044EB52E4F10166897789808D918D0E9432 +:109B2000A8716B017C0120E030E040EA52E46D81D5 +:109B30007E818F8198850E9489729B01AC01C7014B +:109B4000B6010E94A9716D837E838F83988720E080 +:109B500030E040EA52E469817A818B819C810E94E5 +:109B60008972F10122893389448955890E94A9713A +:109B700069837A838B839C8320E030E040EA52E45F +:109B8000C301B2010E948972F1012685378540899F +:109B900051890E94A9716801ED80FE800F811885AE +:109BA00029813A814B815C81A3DE28960FB6F89417 +:109BB000DEBF0FBECDBFDF91CF911F910F91FF9000 +:109BC000EF90DF90CF90BF90AF909F908F907F905D +:109BD0006F905F904F903F902F9008954F925F92BB +:109BE0006F927F928F929F92AF92BF92CF92DF92AD +:109BF000EF92FF920F931F932B013C0149015A01F1 +:109C0000670178019B01AC010E949075811170C0C1 +:109C1000A5019401C501B4010E949075811168C02D +:109C2000A7019601C701B6010E949075811160C01D +:109C30002AE939E947E053E4C301B2010E94A07464 +:109C400018160CF455C020E030E0A901C301B201A0 +:109C50000E94827287FD4CC02DEC3CEC4FEE52E42A +:109C6000C501B4010E94A07418160CF441C020E094 +:109C700030E0A901C501B4010E94827287FD38C09D +:109C8000A301920160E070E084E393E40E94A87174 +:109C9000A50194010E94A8714B015C0120E030E015 +:109CA00047E153E40E94A074181614F120E030E05C +:109CB00040E251E4C501B4010E94827287FD18C0E0 +:109CC00020E030E044EB52E4C701B6010E94A074EA +:109CD000181674F020E030E044EB52ECC701B601F6 +:109CE0000E948272881F8827881F91E0892701C0FF +:109CF00080E01F910F91FF90EF90DF90CF90BF9089 +:109D0000AF909F908F907F906F905F904F9008954D +:109D1000EF92FF920F931F93CF93DF9382E393E031 +:109D20000E94835F8B3B19F080E293E002C084E3E2 +:109D300093E022E6E22E2DE0F22ECCE5DDE08C0170 +:109D40000C551D40C8018C0F9D1F0E94835F899395 +:109D5000EC16FD06B9F7DF91CF911F910F91FF909F +:109D6000EF900895AF92BF92CF92DF92EF92FF9261 +:109D70000F931F93CF93DF93A82E6EE00E94CA59D2 +:109D8000C82F6FE08A2D0E94CA59D0E0DC2FCC2763 +:109D9000C82B7E016E0104E010E06EE08A2D0E9467 +:109DA000CA59B82E6FE08A2D0E94CA592B2D30E077 +:109DB000322F2227A901482BCA01C816D90608F458 +:109DC0006C018E159F0508F47C01C80FD91F015046 +:109DD000110919F7CE018C199D098E199F0963E0AD +:109DE00070E00E94C775613050E1750708F48B017F +:109DF000C801DF91CF911F910F91FF90EF90DF90FD +:109E0000CF90BF90AF900895CF92DF92EF92FF92E4 +:109E10000F931F93CF93DF93EC01A4DF9C01C1301C +:109E2000D10591F128F0C230D10509F459C084C0A0 +:109E300060915E0D70915F0DCB01A0E0B0E08901F3 +:109E400020E030E06C017D01C01AD10AE20AF30A79 +:109E500041E0C41648E0D406E104F10424F0905136 +:109E6000A109B1090AC0C11448EFD4064FEFE406B6 +:109E7000F4061CF4905FAF4FBF4FBC01CD01601BD7 +:109E8000710B820B930B65C06091600D7091610D39 +:109E9000CB01A0E0B0E0890120E030E06C017D0161 +:109EA000C01AD10AE20AF30A41E0C41648E0D40617 +:109EB000E104F10424F09051A109B1090AC0C114D0 +:109EC00048EFD4064FEFE406F4061CF4905FAF4F62 +:109ED000BF4FBC01CD01601B710B820B930B45C0C2 +:109EE00060915C0D70915D0DCB01A0E0B0E0890147 +:109EF00020E030E06C017D01C01AD10AE20AF30AC9 +:109F000041E0C41648E0D406E104F10424F0905185 +:109F1000A109B1090AC0C11448EFD4064FEFE40605 +:109F2000F4061CF4905FAF4FBF4FBC01CD01601B26 +:109F3000710B820B930B22C0C130D10599F030F028 +:109F4000229719F560E070E0CB0118C060E070E086 +:109F5000CB0145E2C42E49E0D42E43E0E42E42E496 +:109F6000F42E16C060E070E0CB0139E0C32E36EF6E +:109F7000D32E31EBE32E32E4F32E0AC0C12CD12CC8 +:109F800024EBE22E22E4F22E03C060E070E0CB016D +:109F90000E94247320E030E044EB53E40E94DB7421 +:109FA00020E030E040E859E30E94DB749B01AC0103 +:109FB000C701B6010E94A871DF91CF911F910F9147 +:109FC000FF90EF90DF90CF9008958F929F92AF9285 +:109FD000BF92CF92DF92EF92FF920F931F93CF9396 +:109FE000DF93EB012BEDE22E24E1F22E8C016B01CD +:109FF0008CE0C80ED11C6991799189919991F701F2 +:10A0000081909190A190B1907F010E942473A5014D +:10A0100094010E948972F8016193719381939193E5 +:10A020008F01CC15DD0539F7DF91CF911F910F918D +:10A03000FF90EF90DF90CF90BF90AF909F908F9068 +:10A0400008951F920F920FB60F9211240BB60F9224 +:10A050002F933F934F935F936F937F938F939F9330 +:10A06000AF93BF93EF93FF9389B18095982F907131 +:10A0700084FF03C091110E94DD45FF91EF91BF91D4 +:10A08000AF919F918F917F916F915F914F913F9190 +:10A090002F910F900BBE0F900FBE0F901F90189531 +:10A0A000CF93DF93C0914714D09148142097B9F013 +:10A0B00081E080934A1460916014709161148091E2 +:10A0C0006214909163149B01AC010E94DB74698B54 +:10A0D0007A8B8B8B9C8B1092481410924714DF91D3 +:10A0E000CF9108952F923F924F925F926F927F92FD +:10A0F0008F929F92AF92BF92CF92DF92EF92FF9298 +:10A100000F931F93CF93DF93CDB7DEB7CD54D10913 +:10A110000FB6F894DEBF0FBECDBF80912B158077B0 +:10A1200023968FAF2397882389F020E030E0A901A0 +:10A130006091601470916114809162149091631425 +:10A140000E948272882311F40C945059209160145B +:10A150002F8B30916114388F40916214498F509148 +:10A1600063145A8F809170148B83909171149D8326 +:10A17000A0917214AE83B0917314BC8300915C14EF +:10A1800010915D14E0915E14E987F0915F14FD87F2 +:10A1900020914F1430915014409151145091521409 +:10A1A0002DA33EA34FA358A730914B143DAF409130 +:10A1B0004C144EAF50914D145FAF80914E142196C8 +:10A1C0008FAF219720915714309158144091591412 +:10A1D00050915A142DAB3EAB4FAB58AF3091F013AA +:10A1E00022963FAF2297409146144BA75091CA1335 +:10A1F00024965FAF24978091C9138B8F9091E610BE +:10A2000025969FAF2597A0914714B0914814BA8B1B +:10A21000A98B2091531430915414409155145091AE +:10A22000561429AF3AAF4BAF5CAF309168143B8BFB +:10A23000409169144C8B50916A145D8B80916B1422 +:10A240008E8B909164149C8FA0916514AD8FB0910A +:10A250006614BE8FE0916714EF8F30906C142090DD +:10A260006D14F0916E14F98320916F142A838091FC +:10A27000CB135BA5851709F4F4C649895A89452B88 +:10A2800009F033C224965FAD24978B8D581709F4DB +:10A2900078C7A82EB12CA9E2AA9DC001AB9D900D54 +:10A2A0001124FC01E951FF4EFA8BE98B80914A148D +:10A2B000882319F010924A14BCC0809149148F5F12 +:10A2C000853019F08093491402C010924914E0912E +:10A2D000491421E12E9FF0011124EF50FC4E89E238 +:10A2E0008A9DA0018B9D500D112449515F4E7A012A +:10A2F000DA018C91808311964D915D916D917C91E5 +:10A300001497DB01CA0123E0880F991FAA1FBB1F06 +:10A310002A95D1F781839283A383B483D7011596BD +:10A320004D915D916D917C911897DB01CA0133E0ED +:10A33000880F991FAA1FBB1F3A95D1F78583968373 +:10A34000A783B087D70119964D915D916D917C914E +:10A350001C97DB01CA0143E0880F991FAA1FBB1F8E +:10A360004A95D1F781879287A387B487D7011D9635 +:10A370006D917D918D919C9150978B019C0153E043 +:10A38000000F111F221F331F5A95D1F7058716871B +:10A390002787308B0E9422736DAF7EAF8FAF2196DF +:10A3A0009FAF2197F70125A136A147A150A50E9493 +:10A3B00089726DA37EA38FA398A79B01AC0160E077 +:10A3C00070E080EA9FE30E94897269AF7AAF8BAF39 +:10A3D0009CAF2396FFAD2397FF23D1F02B893C89B7 +:10A3E0004D895E896B897C898D899E890E94DB7489 +:10A3F000D70151966D937D938D939C935497BB8910 +:10A40000BF8BEC89E88FFD89F98F2E892A8F0DC0CB +:10A41000D70151966D917D918D919C9154970E9499 +:10A4200048756F8B788F898F9A8F1DAA1EAA1FAAD5 +:10A4300018AE29E22A9DF0012B9DF00D1124E9515F +:10A44000FF4EFE87ED87C1A0D2A0E3A0F4A0A70134 +:10A45000960160E070E080E09FE30E948972698766 +:10A460007A878B879C8723963FAD23973323F1F11F +:10A4700042E040935B14AD85BE8595964D905D900E +:10A480006D907C90989751968D909D90AD90BC90DA +:10A490005497A50194010E94DB749B01AC01C30198 +:10A4A000B2010E94A8718B0189879D8720E030E06E +:10A4B000A9010E94827287FF1BC1A7019601C701F3 +:10A4C000B6010E94A971A30192010E94DB749B0155 +:10A4D000AC01C501B4010E94A8710E9448756B8B44 +:10A4E0007C8B8D8B9E8B3F82288615C110925B14CE +:10A4F000ED85FE85F5A1FF83AD85BE859696BC9161 +:10A50000B887ED85FE8507A110A5EB8DEF5FE231E1 +:10A5100009F4E0E02496FFAD2497EF1789F029E2D3 +:10A520002E9FF0011124E951FF4E618972898389C0 +:10A5300094890E9448756B8B7C8B8D8B9E8B04C09D +:10A540001B8A1C8A1D8A1E8A2B893C894D895E893B +:10A550006B897C898D899E890E94DB742B013C016B +:10A5600089E28A9DA0018B9D500D112449515F4EB7 +:10A570005AA349A3DA0151962D913D914D915C91D9 +:10A5800054972D873E874F87588BA30192016D8585 +:10A590007E858F8598890E94A87129853A854B858B +:10A5A0005C850E94DB742F813885A8010E94A97107 +:10A5B00020E030E040E05FE30E94DB74362E272E7F +:10A5C00089839A8320E030E0A9010E94A0741816C4 +:10A5D0000CF095C0232D322D49815A816F817885E9 +:10A5E000C8010E94A07418160CF071C0E9A1FAA16C +:10A5F000858C968CA78CB0A0A3019201C501B401F3 +:10A600000E94A87129853A854B855C850E94DB7480 +:10A610006B837D838E839C839B01AC01632D722DA4 +:10A6200089819A810E94A074181694F5C501B4011D +:10A630000E9448756C8F7D8F8E8F9F8FA50194012E +:10A640006D857E858F8598890E948272811106C0F2 +:10A65000F1E0F0935B1409831A835DC02D853E857C +:10A660004F855889C501B4010E94A87129853A8592 +:10A670004B855C850E94DB749B01AC016F81788502 +:10A68000C8010E94A8716F83788789839A8343C029 +:10A69000A7019601C701B6010E94A971232D322D91 +:10A6A00049815A810E94DB74A30192010E94A97121 +:10A6B0000E9448756C8F7D8F8E8F9F8F3F8228867A +:10A6C0003B822D8229812E833A813C8324C042E043 +:10A6D00040935B1409831A835F895C8F888D8D8F0B +:10A6E000998D9E8FAA8DAF8F16C03F82288617C086 +:10A6F0003F8228861B8A1C8A1D8A1E8A10C0BB893D +:10A70000BC8FEC89ED8FFD89FE8F2E892F8F1F82E4 +:10A71000188619821A8200E010E019861D8622969A +:10A720005FAD2297452F50E05AA749A786E0849F46 +:10A73000F001859FF00D1124E453FC4E80914914E3 +:10A740008283A989BA899596BC91B8ABE989FA89BF +:10A75000F6A1F9ABA989BA899796BC912696BFAFA5 +:10A760002697E989FA89F0A52796FFAF279729ADA3 +:10A770003AAD4BAD5CAD68A979A98B2F9F2F0E9494 +:10A78000A8716CA77DA78EA79FA720E030E0A90144 +:10A790000E94827287FF04C01CA61DA61EA61FA6CB +:10A7A00020915B1428A32B813D814E815C816F81B8 +:10A7B000788589819A810E948272811105C032E078 +:10A7C00028963FAF289704C041E028964FAF2897BE +:10A7D00028A859A92E965FAF2E9726968FAD26975B +:10A7E0002D968FAF2D9727963FAC27978EE3C82ED7 +:10A7F00083ECD82E8EE2E82E89E3F82E412C512CE2 +:10A800003201C9A2DAA2EBA2FCA238A1332321F0C3 +:10A81000313009F485C0C5C0A989BA8991962D91B6 +:10A820003D914D915C919497C701B6010E94DB74F4 +:10A830004B015C0120E030E040E05FE30E94DB740C +:10A840002F89388D498D5A8D0E94A971A7019601D3 +:10A850000E94DB749B01AC01622D2E967FAD2E977A +:10A860002D968FAD2D97932D0E94A871262E2E9692 +:10A870007FAF2E972D968FAF2D97392E2F8138854C +:10A8800049815A810E94827287FF3DC02F8138859D +:10A8900049815A8168A979A926968FAD269727966E +:10A8A0009FAD27970E94A8719B01AC010E94A971DE +:10A8B0006B017C012C8D3D8D4E8D5F8D6F89788D68 +:10A8C000898D9A8D0E94A9719B01AC01C701B601C7 +:10A8D0000E9489726B017C012896BFAD2897B8A3AE +:10A8E000EC8DEF8BFD8DF88F2E8D298F3F8D3A8F5C +:10A8F0002F8048852E964FAF2E9759812D965FAFAA +:10A900002D973A80EBC0A50194016F89788D898DD0 +:10A910009A8D0E94A9716F8B788F898F9A8FDEC074 +:10A920002C8D3D8D4E8D5F8DC701B6010E94DB746D +:10A930009B01AC01622D2E967FAD2E972D968FAD8B +:10A940002D97932D0E94A8714B015C012B813D81B5 +:10A950004E815C810E94827287FFB8C02B813D814D +:10A960004E815C81622D2E967FAD2E972D968FADF8 +:10A970002D97932D0E94A8712C8D3D8D4E8D5F8D4E +:10A980000E9489726B017C012B808D812E968FAF86 +:10A990002E979E812D969FAF2D973C80A2E0A8A375 +:10A9A0009DC0E989FA8921A132A143A154A1C7011F +:10A9B000B6010E94DB744B015C012F89388D498DF3 +:10A9C0005A8D0E94827287FF52C020E030E040E042 +:10A9D0005FE3C501B4010E94DB749B01AC016F8988 +:10A9E000788D898D9A8D0E94A871A70196010E9489 +:10A9F000DB749B01AC01622D2E967FAD2E972D96B8 +:10AA00008FAD2D97932D0E94A87129966FAF29972E +:10AA10002A967FAF2A972B968FAF2B972C969FAFB6 +:10AA20002C97980149855D850E94A0741816FCF446 +:10AA3000A50194016F89788D898D9A8D0E94A871E6 +:10AA40006F8B788F898F9A8F29962FAC29972A96AA +:10AA5000FFAD2A972E96FFAF2E972B962FAD2B97F3 +:10AA60002D962FAF2D972C963FAC2C9737C0980181 +:10AA700049855D85622D2E967FAD2E972D968FADE3 +:10AA80002D97932D0E94A8719B01AC010E94A97182 +:10AA90006B017C012B893C894D895E896F89788D9A +:10AAA000898D9A8D0E94A9719B01AC01C701B601E5 +:10AAB0000E9489726B017C01202E2E961FAF2E976B +:10AAC00039852D963FAF2D973D8408C0282C2E96B2 +:10AAD0009FAE2E972D96AFAE2D973B2CA7019601DA +:10AAE000C301B2010E94A9712B013C0129A13AA125 +:10AAF0004BA15CA10E94827287FF07C0A301920153 +:10AB000069A17AA18BA19CA120C02CA53DA54EA531 +:10AB10005FA5622D2E967FAD2E972D968FAD2D972A +:10AB2000932D0E94A074181644F52EE333EC4EE2E8 +:10AB300059E369A17AA18BA19CA10E94A97169A383 +:10AB40007AA38BA39CA3A30192010E94A8716B011D +:10AB50007C01980149855D85622D2E967FAD2E97EB +:10AB60002D968FAD2D97932D0E94A07418160CF47E +:10AB70004CCE48A140935B1403C058A150935B1482 +:10AB80002DA13EA14FA158A5622D2E967FAD2E97E7 +:10AB90002D968FAD2D97932D0E94DB7468A379A31A +:10ABA0008CA798AB0E946F726B017C016DAD7EAD7E +:10ABB0008FAD21969FAD21970E946F724B015C0172 +:10ABC000A70196010E94A8710E94F67269AB7AAB48 +:10ABD0008BAB9CABA6E089A59AA5A89FF001A99F85 +:10ABE000F00D1124E453FC4E29A93AA931832083A6 +:10ABF000232B09F087C023965FAD2397552309F4D3 +:10AC000081C0C801A985BD8580935C1490935D14B3 +:10AC1000A0935E14B0935F148B899C89AD89BE8923 +:10AC20008093681490936914A0936A14B0936B1482 +:10AC30008C8D9D8DAE8DBF8D809364149093651423 +:10AC4000A0936614B09367148B819D81AE81BC8103 +:10AC50008093701490937114A0937214B093731432 +:10AC60008F819885A981BA8180936C1490936D141B +:10AC7000A0936E14B0936F1422968FAD2297809399 +:10AC8000F013A989BA89B0934814A093471429AD49 +:10AC90003AAD4BAD5CAD20935314309354144093B4 +:10ACA0005514509356143B8D3093C9138DA19EA11A +:10ACB000AFA1B8A580934F1490935014A093511452 +:10ACC000B09352149BA59093461410926014109266 +:10ACD000611410926214109263141092571410921F +:10ACE00058141092591410925A14C0924B14D092C6 +:10ACF0004C14E0924D14F0924E142DA13EA14FA1A0 +:10AD000058A565C12DA93EA94FA958ADC301B201EF +:10AD10000E94A9712B013C0128A139A14CA558A979 +:10AD2000C501B4010E94A8719B01AC01C301B2012D +:10AD30000E9489724B015C0128A139A14CA558A938 +:10AD4000C701B6010E94A871A50194010E94DB749D +:10AD50006DAB7EAB8FAB98AF20EC31EE44E65EE49A +:10AD6000C501B4010E94DB740E946F720E94F672EA +:10AD7000603DE7E07E078105910560F446E029A586 +:10AD80003AA5429FF001439FF00D1124E453FC4E7D +:10AD9000158253C0603A5FE075078105910560F444 +:10ADA00026E0A9A5BAA52A9FF0012B9FF00D11243A +:10ADB000E453FC4E31E011C060344FE1740781056B +:10ADC000910568F426E0A9A5BAA52A9FF0012B9F5A +:10ADD000F00D1124E453FC4E32E035830CC0A6E0A4 +:10ADE00049A55AA5A49FF001A59FF00D1124E45395 +:10ADF000FC4EB3E0B58346E029A53AA5429FF00199 +:10AE0000439FF00D1124E453FC4E2581022E04C013 +:10AE100096958795779567950A94D2F7A9A9BAA9C7 +:10AE200002C0AA0FBB1F2A95E2F7B183A083611568 +:10AE30007105B1E08B07910568F446E029A53AA5B4 +:10AE4000429FF001439FF00D1124E453FC4E7483A4 +:10AE5000638304C08FEF9FEF94838383BBA4B39479 +:10AE600096E0B91201C0B12C980149855D85622D2B +:10AE70002E967FAD2E972D968FAD2D97932D0E94F8 +:10AE8000A0741816CCF4822D2E969FAD2E972D9679 +:10AE9000AFAD2D97B32DE989FA8985A396A3A7A312 +:10AEA000B0A7F8A1FDAF29A12EAF3CA53FAF48A99F +:10AEB00021964FAF2197CDC020E030E0A901622D4F +:10AEC0002E967FAD2E972D968FAD2D97932D0E94A8 +:10AED000A07418160CF0A6C0C801A985BD85809382 +:10AEE0005C1490935D14A0935E14B0935F148B89EF +:10AEF0009C89AD89BE898093681490936914A0934E +:10AF00006A14B0936B148C8D9D8DAE8DBF8D809324 +:10AF1000641490936514A0936614B09367148B81A6 +:10AF20009D81AE81BC818093701490937114A09325 +:10AF30007214B09373148F819885A981BA8180931C +:10AF40006C1490936D14A0936E14B0936F145BA562 +:10AF50005093F01389899A899093481480934714E9 +:10AF600029AD3AAD4BAD5CAD2093531430935414DE +:10AF700040935514509356143B8D3093C9138DA1B3 +:10AF80009EA1AFA1B8A580934F1490935014A093A5 +:10AF90005114B0935214B09246141092601410924F +:10AFA000611410926214109263141092571410924C +:10AFB00058141092591410925A14C0924B14D092F3 +:10AFC0004C14E0924D14F0924E149C01AD01C70157 +:10AFD000B6010E948972A989BA8995966D937D936D +:10AFE0008D939C9398975CD8BB8DB093E610C35B10 +:10AFF000DF4F0FB6F894DEBF0FBECDBFDF91CF910C +:10B000001F910F91FF90EF90DF90CF90BF90AF9086 +:10B010009F908F907F906F905F904F903F902F9078 +:10B020000C9448402496EFAD2497FB8DEF1779F0F0 +:10B030008F2F8F5F823109F480E02B8D25963FADF5 +:10B040002597231303C025968FAF25978B8F1A8AD8 +:10B05000198A3F8028844BA522964FAF2297BBA622 +:10B0600006C9C801A985BD8580935C1490935D14C1 +:10B07000A0935E14B0935F148B899C89AD89BE89BF +:10B080008093681490936914A0936A14B0936B141E +:10B090008F89988DA98DBA8D8093601490936114D7 +:10B0A000A0936214B09363148C8D9D8DAE8DBF8D73 +:10B0B0008093641490936514A0936614B0936714FE +:10B0C0008B819D81AE81BC818093701490937114AB +:10B0D000A0937214B0937314832D922DA981BA8119 +:10B0E00080936C1490936D14A0936E14B0936F14AE +:10B0F00022968FAD22978093F013A989BA89B093D5 +:10B100004814A093471429AD3AAD4BAD5CAD2093E4 +:10B1100053143093541440935514509356143B8D4C +:10B120003093C9138DAD9EADAFAD2196BFAD2197C4 +:10B1300080934B1490934C14A0934D14B0934E14E1 +:10B140008DA19EA1AFA1B8A580934F1490935014E8 +:10B15000A0935114B09352142DA93EA94FA958ADF4 +:10B1600020935714309358144093591450935A1401 +:10B170003BA53093461425964FAD25974093E61096 +:10B180008FC0C801A985BD8580935C1490935D1420 +:10B19000A0935E14B0935F148B899C89AD89BE899E +:10B1A0008093681490936914A0936A14B0936B14FD +:10B1B0008F89988DA98DBA8D8093601490936114B6 +:10B1C000A0936214B09363148C8D9D8DAE8DBF8D52 +:10B1D0008093641490936514A0936614B0936714DD +:10B1E0008B819D81AE81BC8180937014909371148A +:10B1F000A0937214B0937314832D922DA981BA81F8 +:10B2000080936C1490936D14A0936E14B0936F148C +:10B2100022965FAD22975093F0131092481410922B +:10B22000471489AD9AADABADBCAD809353149093E8 +:10B230005414A0935514B093561424969FAD24979C +:10B240009093C9138DAD9EADAFAD2196BFAD219743 +:10B2500080934B1490934C14A0934D14B0934E14C0 +:10B260002DA13EA14FA158A520934F143093501407 +:10B2700040935114509352148DA99EA9AFA9B8AD13 +:10B280008093571490935814A0935914B0935A1460 +:10B290009BA5909346142596AFAD2597A093E610F5 +:10B2A000C35BDF4F0FB6F894DEBF0FBECDBFDF919B +:10B2B000CF911F910F91FF90EF90DF90CF90BF90B3 +:10B2C000AF909F908F907F906F905F904F903F9046 +:10B2D0002F900895CF93DF930E9498368BE2E9E494 +:10B2E000F4E1DF011D928A95E9F783E2E3ECF0E1F6 +:10B2F000DF011D928A95E9F71092481410924714C5 +:10B300001092CB131092F01381E0809346141092A8 +:10B31000C2100E94193681B39091C1109170C92F4B +:10B32000B0E0DB2F96E0CC0FDD1F9A95E1F78F7B25 +:10B33000C82BC1BBEBE0F1E090818091C11082701D +:10B34000880F880F977F892B808381B39091C110DC +:10B3500092FB992790F98E7F892B81BB8091C01039 +:10B3600080FD8F9A80FF8F9880819091C01092709D +:10B370008D7F892B808321B39091C0109470892F89 +:10B3800090E095958795922F9D7F892B81BBDF91CA +:10B39000CF910895CF93DF93C62F813009F48EC0EB +:10B3A00038F1823009F069C10E942F2E8CE60E948C +:10B3B000BF2D0E94092E8C2F0E94BF2D0E94092EA6 +:10B3C0000E942F2E8DE60E94BF2D0E94092E62E062 +:10B3D00070E080E090E00E94D444559A5D9A62E06B +:10B3E00070E080E090E00E94D444D8E0C0E002C168 +:10B3F0000E94A42F8CE60E94342F0E947E2F8C2F57 +:10B400000E94342F0E947E2F0E94A42F8DE60E945E +:10B41000342F0E947E2F62E070E080E090E00E9476 +:10B42000D444399A419A62E070E080E090E00E9452 +:10B43000D444D8E0C0E0439865E070E080E090E05C +:10B440000E94D444439ACC0F65E070E080E090E025 +:10B450000E94D44439983199C16065E070E080E081 +:10B4600090E00E94D444D15031F74398399A419AE0 +:10B4700062E070E080E090E00E94D444439A65E08E +:10B4800070E080E090E00E94D444439862E070E075 +:10B4900080E090E00E94D444399A419A62E070E0E2 +:10B4A00080E090E00E94D444439862E070E080E045 +:10B4B00090E00E94D4440E94662FE0C00E94022FB8 +:10B4C0008CE60E94472E0E94C72E8C2F0E94472E8A +:10B4D0000E94C72E0E94022F8DE60E94472E0E94D6 +:10B4E000C72E62E070E080E090E00E94D44480913A +:10B4F0000101846080930101809102018460809346 +:10B50000020162E070E080E090E00E94D444D8E064 +:10B51000C0E0809102018F778093020165E070E0C6 +:10B5200080E090E00E94D444809102018068809382 +:10B530000201CC0F65E070E080E090E00E94D4440E +:10B54000809101018B7F809301018091000182FD38 +:10B55000C16065E070E080E090E00E94D444D1508A +:10B56000C1F6809102018F778093020180910101E1 +:10B5700084608093010180910201846080930201C4 +:10B5800062E070E080E090E00E94D444809102018B +:10B5900080688093020165E070E080E090E00E94A6 +:10B5A000D444809102018F778093020162E070E0C1 +:10B5B00080E090E00E94D4448091010184608093F7 +:10B5C00001018091020184608093020162E070E0D9 +:10B5D00080E090E00E94D444809102018F778093B4 +:10B5E000020162E070E080E090E00E94D4440E949A +:10B5F000952E44C05E9865E070E080E090E00E9487 +:10B60000D4445E9ACC0F65E070E080E090E00E9448 +:10B61000D44455984D99C16065E070E080E090E0B9 +:10B620000E94D444D15031F75E98559A5D9A62E0F9 +:10B6300070E080E090E00E94D4445E9A65E070E0A3 +:10B6400080E090E00E94D4445E9862E070E080E088 +:10B6500090E00E94D444559A5D9A62E070E080E0E8 +:10B6600090E00E94D4445E9862E070E080E090E058 +:10B670000E94D4440E94F12D01C0C0E08C2FDF91C4 +:10B68000CF910895E2EDF4E124813581DC010E943F +:10B690002176A1E0B1E02C9128602C93A0EAB0E0E3 +:10B6A0002C9120682C93DC01CB012AE0B695A7955C +:10B6B000979587952A95D1F79093A9008093A80034 +:10B6C000868180618093A1000895CF93DF9321E567 +:10B6D000829FC0011124EC01D55F40E550E0BE011E +:10B6E00082E894E118D4892B51F41092821440E539 +:10B6F00050E062E874E1CE01CBD380E001C081E08C +:10B70000DF91CF91089590E0FC013197E231F1058E +:10B7100008F04EC08827E654FF4F8F4F0C941976DF +:10B72000809180008F7703C0809180008F7D80930F +:10B730008000089580918000877FF9CF84B58F774E +:10B7400002C084B58F7D84BD08958091B0008F774D +:10B7500003C08091B0008F7D8093B00008958091E8 +:10B7600090008F7707C0809190008F7D03C08091FB +:10B770009000877F8093900008958091A0008F773C +:10B7800007C08091A0008F7D03C08091A000877FBB +:10B790008093A0000895809120018F7707C0809149 +:10B7A00020018F7D03C080912001877F809320013D +:10B7B00008951F93CF93DF93282F30E0F901EA57C4 +:10B7C000F54F8491F901E05CF54FD491F901E65011 +:10B7D000F64FC491CC23B9F0162F811194DFEC2FD2 +:10B7E000F0E0EE0FFF1FE052F64FA591B4919FB726 +:10B7F000F894111104C08C91D095D82302C0EC911B +:10B80000DE2BDC939FBFDF91CF911F91089586338C +:10B8100008F0865390917B00282F2870977F922BF9 +:10B8200090937B008770806480937C0080917A0085 +:10B83000806480937A0080917A0086FDFCCF8091AD +:10B8400078002091790090E0922B08951F920F923A +:10B850000FB60F9211240BB60F922F933F934F9375 +:10B860005F936F937F938F939F93AF93BF93EF9368 +:10B87000FF9380917D1490917E1490932501809385 +:10B880002401E0917B14F0917C14309709F0199514 +:10B89000FF91EF91BF91AF919F918F917F916F91A8 +:10B8A0005F914F913F912F910F900BBE0F900FBE64 +:10B8B0000F901F9018951F920F920FB60F921124A0 +:10B8C0000BB60F922F933F934F935F936F937F939A +:10B8D0008F939F93AF93BF93EF93FF938091D41473 +:10B8E0009091D5149093A5008093A400E091D21478 +:10B8F000F091D314309709F01995FF91EF91BF9112 +:10B90000AF919F918F917F916F915F914F913F91F7 +:10B910002F910F900BBE0F900FBE0F901F90189598 +:10B92000E2E7F0E080818E7F808308951F920F927E +:10B930000FB60F9211248F939F93809108029091DC +:10B94000090290939500809394009F918F910F909E +:10B950000FBE0F901F9018951F920F920FB60F9267 +:10B9600011240BB60F922F933F934F935F936F93D6 +:10B970007F938F939F93AF93BF93EF93FF938091A8 +:10B980007614909177148093B200E0917414F09142 +:10B990007514309709F01995FF91EF91BF91AF9110 +:10B9A0009F918F917F916F915F914F913F912F91D7 +:10B9B0000F900BBE0F900FBE0F901F9018951F9207 +:10B9C0000F920FB60F9211240BB60F922F933F9345 +:10B9D0004F935F936F937F938F939F93AF93BF9397 +:10B9E000EF93FF9380912B15813071F08091291591 +:10B9F00081110AC00E94DD459FB7F89480912915F6 +:10BA00008360809329159FBFFF91EF91BF91AF9104 +:10BA10009F918F917F916F915F914F913F912F9166 +:10BA20000F900BBE0F900FBE0F901F90189589B10D +:10BA300080719091181596FD02C090E189278823A6 +:10BA400019F011F087E0089580E008952F923F9259 +:10BA50004F925F926F927F928F929F92AF92BF921E +:10BA6000CF92DF92EF92FF920F931F93CF93DF93CA +:10BA7000CDB7DEB768970FB6F894DEBF0FBECDBF67 +:10BA800090912A159111A6C1782E2BED34E1398BB6 +:10BA9000288B5901CE010D964C0100E010E0C12C1D +:10BAA000D12C7601A72DB0E0BD8BAC8B802F00236D +:10BAB00021F0013021F094E003C091E001C092E058 +:10BAC000F40191934F012C893D8902C0359527954A +:10BAD0008A95E2F720FF1BC020E030E040EC5FEBEE +:10BAE000D50194966D917D918D919C9197970E942F +:10BAF000DB74362E472E582E692EA70196010E9420 +:10BB0000827287FD04C0C32CD42CE52CF62C0F5F69 +:10BB10001F4FB4E0AB0EB11C0330110539F6809015 +:10BB20001E1590901F15A0902015B090211584E04F +:10BB3000682E01E06EE275E1CE0101960E94E54FAC +:10BB400080911915E82FF0E0FF8BEE8BFE01319606 +:10BB50002AE235E13B8B2A8B1901CE010D962C018F +:10BB600080E090E0188E10E0B701A60170582C8993 +:10BB70003D89082E02C0359527950A94E2F720FFEB +:10BB800025C0A88DAF5FA88FD10114961D921D927C +:10BB90001D921C9217972E893F89082E02C0359559 +:10BBA00027950A94E2F720FF03C0002319F007C08D +:10BBB000002329F0C082D182E282F38204C0408354 +:10BBC000518362837383D2012C91122B0196BFEFB4 +:10BBD0004B1A5B0A349624E0220E311C8330910507 +:10BBE00031F6388D632F70E080E090E00E94227380 +:10BBF0000E9448759B01AC01C501B4010E94DB7431 +:10BC00006B017C01109347150E94264020E0B7018C +:10BC1000A601CE0101960E9495410E9472500E9499 +:10BC200032390023E1F003DFFE013D9620E030E0F1 +:10BC300090E06191462F412359F0AC01022E02C0E1 +:10BC4000559547950A94E2F740FF02C06095162388 +:10BC50002F5F3F4F2330310561F7109347150E9446 +:10BC600072508091D9148473B9F08091D914807383 +:10BC700029F00E94DD450E94B533ACC00111A5C07A +:10BC8000D6DE8721B1F79FB7F8948091D9148B7FC6 +:10BC90008093D9149FBF04C0812F877009F0C1CF52 +:10BCA00019DB0E94374080912215909123150E9444 +:10BCB000124581E00827C9F020E030E040EA50E476 +:10BCC0006091241570912515809126159091271566 +:10BCD0000E94DB746B017C0180901A1590901B15FB +:10BCE000A0901C15B0901D1510C0C0902415D090C8 +:10BCF0002515E0902615F090271580901E15909040 +:10BD00001F15A0902015B09021156A94611012CFD4 +:10BD1000E0901915F12C8090241590902515A09095 +:10BD20002615B09027152401350177FA709477F81D +:10BD3000709400E010E08C899D89002E02C09595DA +:10BD400087950A94E2F780FF2CC0C701002E02C03D +:10BD5000959587950A94E2F7A889B98980FF11C063 +:10BD600094962D913D914D915C919797C501B401A9 +:10BD70000E94A971E889F98920813181428153812A +:10BD800006C02D913D914D915C91C301B2010E947D +:10BD9000DB740E94AB74EA89FB89648375838683B4 +:10BDA00097830F5F1F4F2A893B892C5F3F4F3B8B47 +:10BDB0002A8B888999890496998B888B0330110581 +:10BDC00009F0B9CF0E94264005C08091D91482FFA6 +:10BDD0005ACF4FCF68960FB6F894DEBF0FBECDBFD7 +:10BDE000DF91CF911F910F91FF90EF90DF90CF9057 +:10BDF000BF90AF909F908F907F906F905F904F908B +:10BE00003F902F900895EBE6F0E080818F7E808355 +:10BE1000E8E6F0E080818E7F8083089554985C9AF4 +:10BE20008091181583FF0BC080916B008061809317 +:10BE30006B00809168008160809368000895E3CF73 +:10BE40006EE275E188E995E10C94E54FF894F99973 +:10BE5000FECF92BD81BD81E08FBB80B58627482F84 +:10BE6000082E000C550B262F30E024233523232BDE +:10BE700039F06F3F19F060BD84E006C084E104C072 +:10BE8000882321F060BD84E28FBBF99A78940895ED +:10BE90009F92AF92BF92CF92DF92EF92FF920F9359 +:10BEA0001F93CF93DF935C018A017B01E40EF51EA3 +:10BEB000EB01912C6C01C61AD70ACE018C0D9D1D89 +:10BEC000CE15DF0581F0911008C0292D990C330B98 +:10BED000232F221F2227221F01C021E06991922EC9 +:10BEE000960EB4DFEACF692DC501800F911FDF9157 +:10BEF000CF911F910F91FF90EF90DF90CF90BF9067 +:10BF0000AF909F90A3CFF999FECF92BD81BD81E004 +:10BF10008FBB80B508959F92AF92BF92CF92DF9270 +:10BF2000EF92FF920F931F93CF93DF935B018A01F0 +:10BF30007C01E40EF51EEC01912C6B01C81AD90AA4 +:10BF4000C6018C0F9D1FCE15DF0581F0DCDF91103F +:10BF500008C0292D990C330B232F221F2227221FC3 +:10BF600001C021E0982E920E8993EACFC501800F7F +:10BF7000911FC9DF21E030E0981611F020E030E099 +:10BF8000C901DF91CF911F910F91FF90EF90DF904A +:10BF9000CF90BF90AF909F9008955C980895CF93F5 +:10BFA000DF93CDB7DEB7CC56D1090FB6F894DEBF1C +:10BFB0000FBECDBF8091C00082608093C000109200 +:10BFC000C50080E18093C4009091C100906190937E +:10BFD000C1009091C10098609093C1009091C10000 +:10BFE00090689093C1009091C80092609093C800AF +:10BFF0001092CD008093CC009091C90090619093F5 +:10C00000C9009091C90098609093C9009091C900AF +:10C0100090689093C9009091D00092609093D00066 +:10C020001092D5008093D4009091D10090619093AC +:10C03000D1009091D10098609093D1009091D1005F +:10C0400090689093D100909130019260909330016C +:10C050001092350180933401809131018061809389 +:10C0600031018091310188608093310180913101EB +:10C070008068809331010E94623E869A879A829AF4 +:10C0800080910A01886080930A0180910A01826090 +:10C0900080930A0180910701816080930701809A53 +:10C0A000819A579A8091070180618093070180915E +:10C0B0000701886080930701809107018460809365 +:10C0C0000701809108018061809308018091080137 +:10C0D000877F809308018091080184608093080124 +:10C0E0008091181582FF08C08A9A809108018160AA +:10C0F000809308015F9A07C08A98809108018E7F1B +:10C10000809308015F98809181008F7E80938100E9 +:10C1100080918100886080938100809180008C7F75 +:10C1200080938000809180008F7080938000809148 +:10C130006E00887F80936E0014BC15BC80916E00E9 +:10C14000816080936E0054985C9A80916D0080614C +:10C1500080936D00809168008460809368008AE01D +:10C1600090E00E9412450E94722B399A3B9A419AA4 +:10C17000439A8091010184608093010180910101C3 +:10C1800080688093010180910201846080930201A4 +:10C1900080910201806880930201559A569A5D9AB7 +:10C1A0005E9A0E94884E08E91EE081E090E07C01E2 +:10C1B0002FEFE21AF20AA7DED8018D938D01C70195 +:10C1C0008B3C9105A1F758E1C52E5EE0D52E870185 +:10C1D0000F5F1F4FC70197DEF60181936F01780152 +:10C1E0000B34F1E01F0799F74EE9E42E4DE0F42EF1 +:10C1F00068012FEFC21AD20AC80185DED7018D93DC +:10C200007D018601B5ECCB16B1E0DB0689F720E0B5 +:10C2100030E04AE754E464E071E080E090E00E949E +:10C22000162C84E893E06FDE8093620D85E893E03E +:10C230006ADE8093630D04E61DE088E993E07C01EB +:10C24000EFEFEE1AFE0A5FDED8018D938D01C70174 +:10C25000BCE9EB16B3E0FB0691F708E61DE08EE8BB +:10C2600093E07C01EFEFEE1AFE0A4DDED8018D93CC +:10C270008D01C701B2E9EB16B3E0FB0691F70CE6BE +:10C280001DE082E89CE07C01EFEFEE1AFE0A3BDE47 +:10C29000D8018D938D01C701B6E8EB16BCE0FB0613 +:10C2A00091F7C0906C0DD0906D0DE0906E0DF090F8 +:10C2B0006F0D20E030E044EB53E4C701B6010E946B +:10C2C000A074181644F0A7019601C701B6010E9498 +:10C2D0009075882341F010926C0D10926D0D1092A4 +:10C2E0006E0D10926F0D0BE11DE08AEE93E07C0164 +:10C2F000EFEFEE1AFE0A07DED8018D938D01C7011C +:10C30000B6EFEB16B3E0FB0691F760916C0D709100 +:10C310006D0D80916E0D90916F0DFE0131967F0134 +:10C320008F0124E045E00E942D6FFF92EF928AE09A +:10C3300093E09F938F930E94723F0F900F900F9006 +:10C340000F9080915A0D90915B0D019711F40E940E +:10C35000DE2A0E946F2B0E945E2B0E947A2D0E9483 +:10C36000E92A80917A00876880937A009B98A39A43 +:10C370008FE08093940D0E94842C8AEB92E09F932F +:10C380008F938CE193E09F938F930E94723F88EC90 +:10C3900092E09F938F938FE293E09F938F930E94FD +:10C3A000723F8FEC92E09F938F938FE393E09F9384 +:10C3B0008F930E94723F8091630D8F938091620DE5 +:10C3C0008F938EE493E09F938F930E94723F8FE54B +:10C3D00093E00E941A408EE1EAE2F5E1DF011D924E +:10C3E0008A95E9F781E080932A1578949091181541 +:10C3F0000FB6F894DEBF0FBECDBF94FD80932B1512 +:10C400009E01235C3F4F6F963FAF2EAF6F971E018B +:10C4100035E1230E311CCE018996A1969FAF8EAFD8 +:10C42000A197DE011196A396BFAFAEAFA3978091FF +:10C43000FD0F8093FC0F8FE3E1E8F5E1DF011D9232 +:10C440008A95E9F764EA75E180E00E94373D811141 +:10C4500003C087E00E9402330C9A549A549A0E94B7 +:10C46000CB3B549A9ADDDADC54985C9A0E943740B0 +:10C470000E946A590E942640E3DC10922A1510920D +:10C48000D9141092291510922C1510922D15809107 +:10C490002B15813099F486ED98E00E940B4080EBDB +:10C4A00098E00E940B4083E698E00E940B40A4961F +:10C4B0001FAEA497A5961FAEA5973CC010922B1552 +:10C4C000F6CF8091060185FD1FC02ADA1092990DE2 +:10C4D000809102018F7D8093020180916C0D90917B +:10C4E0006D0DA0916E0DB0916F0DB0588093660FD9 +:10C4F0009093670FA093680FB093690F60E070E0AE +:10C5000084EB92E40E94D62C8091620F9091630F8D +:10C51000A091640FB091650F892B8A2B8B2B51F45E +:10C520001092990DE3E6F3E0FF93EF930E94723FC0 +:10C530000F900F908091990D8823E1F0C2CFE92FE1 +:10C54000F0E0E458F04F80819F5F903809F490E06C +:10C550009093FC0F8F3F09F477C58A3091F08D30AE +:10C5600081F0A596BFADA597BB2309F439C58932E3 +:10C5700009F42FC59091FC0F8091FD0F9813DFCF28 +:10C5800063C502E814E1A4963FADA497E32FF0E061 +:10C59000EE57FB4E10820E94B53380912A1581110F +:10C5A00011C58AE0D1011D928A95E9F78091821424 +:10C5B000843209F076C481E08DAF80918314833496 +:10C5C00081F034F4882351F0843209F06FC209C03D +:10C5D000873439F0883509F069C203C088E696E0EF +:10C5E00054C39091841491114EC4833409F42DC224 +:10C5F0001CF4843241F04DC4873409F46AC1883593 +:10C6000009F440C246C480912B15887109F03DC4DD +:10C6100084E696E00E940B4080910B150E94FD3F3E +:10C620008BE496E00E940B4080910E150E94FD3F26 +:10C630008DE296E00E940B4080910C150E94FD3F18 +:10C6400084E196E00E940B4080910C150E94084006 +:10C650008DE096E00E940B4080910D150E94FD3FF9 +:10C6600085EF95E00E940B4080910D150E940840D7 +:10C670008EEE95E00E940B408091181582FB882772 +:10C6800080F90E94FD3F8DEC95E00E940B40809167 +:10C69000181586FB882780F90E94FD3F8DEA95E0FA +:10C6A0000E940B4080911815881F8827881F0E94C0 +:10C6B000FD3F8DE895E00E940B4080910F150E9490 +:10C6C000FD3F87E795E00E940B4080910F150E9487 +:10C6D00008408FE695E00E940B4060911015709124 +:10C6E000111580911215909113150E94A23F8FE4AD +:10C6F00095E00E940B406091141570911515809182 +:10C700001615909117150E94A23F84E395E00E94B0 +:10C710000B408091181581700E94FD3F87E195E0E4 +:10C720000E940B408091181585FB882780F90E9494 +:10C73000FD3F8CEF94E00E940B408091181583FB25 +:10C74000882780F90E94FD3F81EE94E00E940B4013 +:10C7500080911815829581700E94FD3F85EC94E0D0 +:10C760000E940B40809119150E94FD3F8BEA94E0D6 +:10C770000E940B40809119150E94084083EA94E0C2 +:10C780000E940B4060911A1570911B1580911C1529 +:10C7900090911D150E94A23F86E894E00E940B40F4 +:10C7A00060911E1570911F15809120159091211593 +:10C7B0000E94A23F89E694E00E940B4080912215DE +:10C7C0000E94FD3F8AE494E00E940B406091241592 +:10C7D0007091251580912615909127150E94A23FF2 +:10C7E00081E394E00E940B4010E034E6D32E2BED61 +:10C7F000E22E24E1F22E00E08FE294E00E940B4052 +:10C80000802F8D0D0E94FD3F8DE294E00E940B4031 +:10C81000123091F01330E1F0113031F0F701608106 +:10C820007181828193811CC0D7011C966D917D918D +:10C830008D919C911F9714C020E030E041E655E4B3 +:10C84000F701608D718D828D938D0E94897208C071 +:10C85000F70184A195A1A6A1B7A1BC01CD01905873 +:10C860000E94A23F8AE294E00E940B40013029F02E +:10C87000023031F088E294E005C086E294E002C024 +:10C8800084E294E00E940B40123051F0133059F0D2 +:10C89000113019F08AE194E008C088E094E005C006 +:10C8A00087EF93E002C087EE93E00E940B4083EE97 +:10C8B00093E00E940B400F5FF4E0EF0EF11C033099 +:10C8C00009F09ACF2AE0D20E1F5F3CE8D3128FCF37 +:10C8D000E0C281EE93E00E940B408091811582308E +:10C8E00091F038F4882361F08130A9F48BED93E066 +:10C8F0000CC0833069F0883071F481ED93E005C09D +:10C900008EED93E002C088ED93E00E940B400CC0D6 +:10C9100085ED93E0FACF8CEC93E00E940B40809180 +:10C92000811582500E94FD3F89EC93E00E940B40EC +:10C93000809187158A5C0E94FD3F8091851581302A +:10C9400049F028F0823051F48AEB93E005C084EC82 +:10C9500093E002C08FEB93E00E940B40809183151F +:10C96000811103C085EB93E002C080EB93E00E944D +:10C970000B4080918415811103C08BEA93E002C0C3 +:10C9800086EA93E00E940B4080918215813019F471 +:10C9900081EA93E002C08CE993E00E940B40809111 +:10C9A0008815813049F028F0823051F480E993E015 +:10C9B00005C088E993E002C084E993E00E940B403F +:10C9C00080918A15813031F040F0823051F488E84E +:10C9D00093E005C08CE893E002C084E893E00E94F5 +:10C9E0000B4080918915882329F0823039F48CE737 +:10C9F00093E002C080E893E00E940B4089E793E057 +:10CA00000E940B40809193150E94FD3F86E793E0C2 +:10CA10000E940B4060918F15709190158091911537 +:10CA2000909192150E94A43F83E793E00E940B40EF +:10CA300060918B1570918C1580918D1590918E154C +:10CA40000E94A43F8FE693E020C180912B15823095 +:10CA500049F40E94DD4586ED98E00E940B408DE888 +:10CA600098E00BC0811111C282E080932B1586EDF6 +:10CA700098E00E940B4086E998E00E940B4083E614 +:10CA800098E003C180912B15813009F002C286ED38 +:10CA900098E00E940B408EE998E00E940B4083E6EC +:10CAA00098E00E940B4010922B15F3C190912B152A +:10CAB000923008F0EAC1893409F4C5C034F48332F5 +:10CAC00059F0883409F480C064C18E3409F436C149 +:10CAD000823509F4F9C05DC182E08DAF8091841484 +:10CAE0008111D1C110E0BE016F5F7F4F812F0E9485 +:10CAF000373D811104C087E00E940233CAC18CE631 +:10CB000093E00E940B40163029F0173041F486E67E +:10CB100093E002C089E693E00E940B4004C086E3E4 +:10CB2000810F0E94FD3F84E693E00E940B40CE01FE +:10CB300001967C0100E0D7016D917D918D919D91D1 +:10CB40007D010E94B23F023019F082E693E002C0FC +:10CB50008EE593E00E940B400F5F033061F71F5F8B +:10CB6000183009F688E593E00E940B4090EBE92E1F +:10CB700095E1F92E10E0F701619171918191919108 +:10CB80007F010E94B23F123019F086E593E002C0A7 +:10CB900082E593E00E940B401F5F133061F78CE445 +:10CBA00093E00E940B406091BC157091BD1580917F +:10CBB000BE159091BF150E94B23F88E493E00E9499 +:10CBC0000B400E94623365C18091181584FF59C1E2 +:10CBD00084E080932B1517D984E00E94265D83E0C2 +:10CBE0000E94265D0E94B53380912A15811102C0F2 +:10CBF00027D914D980912A1581114BC110922B1578 +:10CC00000E94983610E0812F0E94655B811102C05E +:10CC100087E013C080918214882389F082E894E130 +:10CC20000E941A4082E894E10E948805811105C0A3 +:10CC30008BED99E00E940B4002C00E9402331F5FFF +:10CC4000123009F726C182E08DAF809184148111E2 +:10CC50001FC040E550E06EEA7BE082E894E15BD9DA +:10CC6000892B49F41092821440E550E062E874E1A7 +:10CC70008EEA9BE00DD988E393E00E940B4082E8A6 +:10CC800094E10E941A4084E393E00E940B4001C1AA +:10CC900093E09DAF8D3309F0F6C083E0282F30E09C +:10CCA000F901EE57FB4E9081D901A158BB4E9C93E0 +:10CCB0008F5F90819111F2CF8DAF40E550E062E837 +:10CCC00074E18EEA9BE0ABC082E08DAF809184146A +:10CCD000833509F0D8C083E08DAF80918514843509 +:10CCE00009F0D1C084E08DAF809186148D3309F0B6 +:10CCF000CAC0809188148111C6C085E08DAF809133 +:10CD00008714843239F08A3239F0833209F0BBC09B +:10CD100082E003C081E001C08FEF0E94583D86EDA4 +:10CD200098E00E940B4087E698E00E940B4083E663 +:10CD300098E00E940B400E94DD45ABC082E08DAFC1 +:10CD400080918414811121C010E0812F0E94655BC5 +:10CD5000811104C087E00E94023313C081E393E095 +:10CD60000E940B40812F0E94FD3F8FE293E00E94C2 +:10CD70000B4082E894E10E941A408CE293E00E940A +:10CD80000B401F5F123009F784C091117EC011E083 +:10CD900001C010E0AE01475D5F4FBE01635C7F4F95 +:10CDA00082E894E10E941D45811102C082E076C0B4 +:10CDB000EDAD81E08E0F8DAFF0E0EE57FB4E908130 +:10CDC0009D3309F060C0112361F1482F50E0282FF6 +:10CDD00030E0D901AE57BB4E9C91241B350BF901B5 +:10CDE000EE57FB4E90838F5F9C919111F0CF8DAFEA +:10CDF00082E894E10E948805811149C069A57AA55D +:10CE00008BA59CA50E9489750E94F672F1E56F9F23 +:10CE1000C001112440E550E062E874E1955F38D824 +:10CE200038C0AE014F5F5F4FBE01635C7F4F82E849 +:10CE300094E10E941D45882309F4B8CFEDADF0E0E0 +:10CE4000EE57FB4E808181111EC089A49AA4ABA429 +:10CE5000BCA420E030E04FE753E4C501B4010E94D8 +:10CE6000A074181684F0C980DA80EB80FC80C501BC +:10CE7000B4010E94F672862FB701A6010E94353CCC +:10CE800006C085E00BC083E009C088E007C08111BF +:10CE900005C08BED99E00E940B4094C00E940233C4 +:10CEA00091C08332D1F43F922F928BE793E09F930E +:10CEB0008F931F930F930E947A76F10101900020C7 +:10CEC000E9F7BF01621973096E577B4E0F900F90FF +:10CED0000F900F900F900F900BC0873439F08D3466 +:10CEE00029F0803519F0833509F06CC062E874E1EF +:10CEF000DB018C91803511F0833509F58FEA9CE0D8 +:10CF00000E9445768D89882391F03F922F9283E885 +:10CF100093E09F938F9383EE9CE09F938F930E9467 +:10CF20004C760F900F900F900F900F900F9082E320 +:10CF3000E2E8F4E1DF011D928A95E9F743C08091B0 +:10CF4000AE04843148F087E893E09F938F930E946A +:10CF5000723F0F900F9036C00091AC04B6E6B09FC0 +:10CF600080011124C8018A549B4F0E9445768D8907 +:10CF7000882391F03F922F9283E893E09F938F93C1 +:10CF800006511B4F1F930F930E944C760F900F90EA +:10CF90000F900F900F900F9082E3E2E8F4E1DF0131 +:10CFA0001D928A95E9F78091AC04833120F48F5F5C +:10CFB0008093AC0402C01092AC048091AE048F5FE9 +:10CFC0008093AE04A4961FAEA497A5961FAEA59716 +:10CFD0003BC0B13009F0CECAA5961FAEA597CACA0C +:10CFE000813208F4C7CA8F3209F4C4CA883211F1F9 +:10CFF0008B3329F1A496EFADA497EF3438F08BE092 +:10D000000E940233A4961FAEA497B4CAA496FFADA3 +:10D01000A4972F2F30E04F2F4F5F9FE9980FF90112 +:10D02000EE57FB4E9A3108F480528083A4964FAF9E +:10D03000A497A0CA21E0A5962FAFA5979BCA32E07E +:10D04000A5963FAFA59796CA8091AF0C882399F01B +:10D050008FEA9CE00E9488058093E10C63EE7CE0FF +:10D060000E94822A81E08093E20C82E3AFEABCE076 +:10D070001D928A95E9F78091950D81113FC08091AD +:10D08000AE048823D9F180919A0D8823B9F180915B +:10D090009B0D882399F10091AD04B6E6B09F800105 +:10D0A00011240A541B4FC8010E948805F80182AB65 +:10D0B000F090AD04F6E6FF9D80011124B8016651A1 +:10D0C0007B4F0A541B4FD801D2968C910E94822A22 +:10D0D00081E0F80183AB82E3D8011D928A95E9F7DC +:10D0E000B2E1BF1520F0F394F092AD0402C01092AB +:10D0F000AD048091AE0481508093AE0480915A0DAE +:10D1000090915B0D8130910571F068F0823091054E +:10D1100069F0039791F5A59882E390E00E9412458B +:10D1200082E090E026C01092AF0427C08091AF0447 +:10D130008F5F8093AF04A59A80910301887741F0B7 +:10D140008091AF048436C8F01092AF04A5980AC04D +:10D1500082E390E00E9412458091AF048A3038F05B +:10D160001092AF0410925B0D10925A0D06C083E02E +:10D1700090E090935B0D80935A0D0E94A8330E941B +:10D18000B53380912A15811152C98091E20C882310 +:10D1900069F083EE9CE00E941A4082E3E3EEFCE03B +:10D1A000DF011D928A95E9F71092E20C80912B1510 +:10D1B000882309F4E6C08091960D882309F41AC1EA +:10D1C0001092960D6D961CAE1DAE1EAE1FAE6D97E5 +:10D1D00069961CAE1DAE1EAE1FAE699765961CAE5D +:10D1E0001DAE1EAE1FAE659784E16F96EEADFFAD2E +:10D1F0006F97282F11922A95E9F7A196AEADBFAD92 +:10D20000A197E82F1D92EA95E9F7D101E82F1D9229 +:10D21000EA95E9F7A396AEADBFADA3971D928A95A7 +:10D22000E9F780E090E00E94044FA9966CAF7DAFD3 +:10D230008EAF9FAFA99781E090E00E94044FAD961A +:10D240006CAF7DAF8EAF9FAFAD9782E090E00E9454 +:10D25000044F6B017C0120E030E040E05FE360912F +:10D2600000027091010280910202909103020E94DB +:10D27000A87120E030E040E05FE30E94DB7420E032 +:10D2800030E044E353E40E94DB749B01AC0160E0B6 +:10D2900070E084E393E40E94A8712B013C0120E03C +:10D2A00030E044EB52E4C701B6010E94A871FE01D0 +:10D2B000EF5AFF4F4F019E012B5A3F4F5901DE019C +:10D2C000A75ABF4F6D017B018C01AD962CAD3DADD2 +:10D2D0004EAD5FADAD97A9966CAD7DAD8EAD9FADFA +:10D2E000A9970E94784CA401B501C6010E94194A71 +:10D2F0006D966CAD7DAD8EAD9FAD6D978E01035C6F +:10D300001F4F24E045E0A9D569966CAD7DAD8EAD8B +:10D310009FAD69970451110924E045E09ED56596BB +:10D320006CAD7DAD8EAD9FAD6597810124E045E08C +:10D3300094D58E010F5F1F4F24E045E0C301B20179 +:10D340008CD51F930F933F922F92A196FFADA1977B +:10D35000FF93A0962FADA0972F936F963FAD6F9739 +:10D360003F936E968FAD6E978F9389E993E09F936D +:10D370008F930E94723F0FB6F894DEBF0FBECDBFF1 +:10D3800039C080919A0D882309F415CF80919B0DA7 +:10D39000882309F410CF04E110E082E3B82EA090B6 +:10D3A000AE0CB6E6BA9DC0011124FC01EA54FB4F55 +:10D3B0007F0123A9222309F4FECE9C0126513B4F75 +:10D3C0006901C9010E941A40D601EB2D1D92EA9510 +:10D3D000E9F7D701D3961C92B2E1BA1528F081E0A3 +:10D3E0008A0D8093AE0C02C01092AE0C0150110950 +:10D3F000B1F6E1CE82B301E083FB882780F9802774 +:10D400009091B5048917D9F08AE090E00E94124506 +:10D4100012B313FB112710F910278091B5041817C8 +:10D4200071F01F921F938DEA93E09F938F930E9458 +:10D43000723F1093B5040F900F900F900F90809152 +:10D44000B1049091B204A091B304B091B4048F3FA1 +:10D450009105A105B10509F060F40196A11DB11D6A +:10D460008093B1049093B204A093B304B093B40436 +:10D4700024C01092B1041092B2041092B30410921E +:10D48000B4048BE30E94075C11E08536910508F433 +:10D4900010E08091B004811781F01F921F9388EBF8 +:10D4A00093E09F938F930E94723F1093B004109368 +:10D4B0009C0D0F900F900F900F9080912B15811164 +:10D4C00012C08091970D882371F08091980D882368 +:10D4D00051F080EC93E09F938F930E94723F1092E3 +:10D4E000980D0F900F9080919D0D882309F422C80C +:10D4F00080912B15811128C18091940D8F3009F0F6 +:10D5000023C180919C0D882309F41EC18091150DC3 +:10D510009091160D9C012F5F3F4F3093160D209375 +:10D52000150D45970CF406C821961CAE1DAE1EAE17 +:10D530001FAE219719A61AA61BA61CA61D8A1E8A15 +:10D540001F8A188EE090900DF090910D0091920D31 +:10D550001091930D20918C0D30918D0D40918E0D79 +:10D5600050918F0D6091880D7091890D80918A0D79 +:10D5700090918B0D4101FE01B9965F01DE01DD96B0 +:10D580006D010E94C24A80E090E00E94044F4B016E +:10D590005C0181E090E00E94044F6B017C0182E01D +:10D5A00090E00E94044F2B013C01A50194012196BB +:10D5B0006CAD7DAD8EAD9FAD2197CAD69F7720E033 +:10D5C00030E040E05FE30E94A07418163CF1A70130 +:10D5D000960169A57AA58BA59CA5BAD69F7720E070 +:10D5E00030E040E05FE30E94A0741816BCF0A30195 +:10D5F00092016D897E898F89988DAAD620E030E0CE +:10D6000044EB52E4A6D69F7720E030E040E05FE3B1 +:10D610000E94A074181614F00C949A628EE1EAE24B +:10D62000F5E1DF011D928A95E9F70E9426400E94EC +:10D63000205F8092700D9092710DA092720DB09249 +:10D64000730DC092740DD092750DE092760DF0922C +:10D65000770D4092780D5092790D60927A0D70920C +:10D660007B0D80912E1590912F15A0913015B091C2 +:10D67000311580937C0D90937D0DA0937E0DB0931A +:10D680007F0D8091321590913315A0913415B09192 +:10D6900035158093800D9093810DA093820DB093EA +:10D6A000830D8091361590913715A0913815B09162 +:10D6B00039158093840D9093850DA093860DB093BA +:10D6C000870D8CE0A396EEADFFADA39711928A95DE +:10D6D000E9F78091880D9091890DA0918A0DB09104 +:10D6E0008B0D89839A83AB83BC8380918C0D909141 +:10D6F0008D0DA0918E0DB0918F0D8D839E83AF8384 +:10D70000B8878091900D9091910DA091920DB0915C +:10D71000930D89879A87AB87BC87AE01475F5F4FC0 +:10D72000BE016B5F7F4FCE0101960E94194A00E057 +:10D7300020E030E048E452E4BE016F5F7F4F80E0BC +:10D740000E9408460C949A621092160D1092150DC4 +:10D750000C949A62CF930E94A833C9E20E94B53319 +:10D7600080912A15811111C08091C9139091CA131B +:10D77000981739F0C89FC001112489519F4E892BF9 +:10D7800069F780912B15883049F3CF910895CF9395 +:10D790002091751530917615409177155091781537 +:10D7A000609198157091991580919A1590919B159B +:10D7B000A9D6811126C02091791530917A15409112 +:10D7C0007B1550917C1560919C1570919D158091F1 +:10D7D0009E1590919F1596D6811113C0C1E020919E +:10D7E0007D1530917E1540917F1550918015609187 +:10D7F000A0157091A1158091A2159091A31582D6C4 +:10D800008111C0E08C2FCF910895CF92DF92EF92DB +:10D81000FF920F93CF93DF9330912B15323009F4A1 +:10D8200082C0C02FD22F042F6B017C0193DF109296 +:10D830004615109228158091181587FD03C080E1C8 +:10D8400080932815DD2331F09091281580E18927F8 +:10D850008093281589B1807190912815891751F00E +:10D860009FB7F894809129158061809329159FBFF7 +:10D870000E94B53380912A15811155C0A7019601E8 +:10D8800065E775E181E00E94084681E08093DA1443 +:10D890009FB7F8948091D91482608093D9149FBF68 +:10D8A0000E94B53380912A1581113DC080912B15BE +:10D8B0008111F6CF8091DA148130A9F4CC2351F094 +:10D8C0008CE0EEE2F5E1AAE3B5E101900D928A95D4 +:10D8D000E1F70CC09FB7F89480912915806180937F +:10D8E00029159FBF03C081E0809346151092DA147A +:10D8F0000E94B53380912A15811115C00E946A5982 +:10D900000E9437400E9426406EE275E185E795E16E +:10D910000E94E54FDF91CF910F91FF90EF90DF9044 +:10D92000CF900C946233DF91CF910F91FF90EF90E5 +:10D93000DF90CF9008952F923F924F925F926F9217 +:10D940007F928F929F92AF92BF92CF92DF92EF928F +:10D95000FF920F931F93CF93DF93CDB7DEB7E1977D +:10D960000FB6F894DEBF0FBECDBF6D837E838F836D +:10D9700098872F87388B498B5A8B0D8BAD868B8A76 +:10D9800024E0E29E80011124C80188569A4E9F8BA4 +:10D990008E8BD801A95ABA4EB98FA88F8D909D90C1 +:10D9A000AD90BC90FC012081318142815381C50141 +:10D9B000B401CFD46A8F7B8F8C8F9D8FF4E0CF9E84 +:10D9C00010011124910128563A4E3F8F2E8FC1012C +:10D9D000895A9A4E99A388A3DC01CD90DD90ED90F1 +:10D9E000FC90F9012081318142815381C701B60148 +:10D9F000B0D46AA37BA38CA39DA32401350177FA3D +:10DA0000709477F87094D701C601B05889839A83CF +:10DA1000AB83BC83F801EB58FA4E2A8D3B8D4C8DBD +:10DA20005D8D608171818281938192D44B015C0113 +:10DA3000F101EB58FA4E2AA13BA14CA15DA16081F6 +:10DA400071818281938184D46B017C01A501940151 +:10DA5000C301B201B0D769877A878B879C87A701FA +:10DA6000960169817A818B819C81A5D79B01AC014C +:10DA700069857A858B859C856CD469877A878B8745 +:10DA80009C87A7019601C301B20195D76B017C0168 +:10DA9000A501940169817A818B819C818CD79B013E +:10DAA000AC01C701B60154D429853A854B855C8504 +:10DAB000C3D46B017C019B89992389F02DEB37E35B +:10DAC00046E055EBC701B6013BD787FD1AC02BEDE9 +:10DAD0003FE049EC50E4C701B6013AD410C02DEB49 +:10DAE00037E346E055E3C701B6010CD518164CF0F4 +:10DAF0002BED3FE049EC50E4C701B6012AD46B019D +:10DB00007C018090141590901515A0901615B0907A +:10DB100017152D813E814F815885CA01B90119D44D +:10DB2000A501940115D4A501940145D7B1D74B01A6 +:10DB30005C0120E030E040E05FE3C701B6013BD785 +:10DB40002D813E814F81588536D79F77A50194015D +:10DB5000E0D4B5D54BD57C8B6B8BDB01AB2B09F4BB +:10DB600059C14B01A12CB12CBD89BB2371F0C5015A +:10DB7000B40168D59B01AC016F85788989899A8940 +:10DB80001AD76F87788B898B9A8BC501B4015AD5C8 +:10DB90004B015C019B01AC01C701B601BAD46D8396 +:10DBA0007E838F839887FD85E4E0FE9FC00111246A +:10DBB0009C0128563A4E3E872D87FC01EB58FA4EC1 +:10DBC000D9012D913D914D915C916081718182814E +:10DBD0009381BED3A50194019CD46EA77FA788AB87 +:10DBE00099AB2D813E814F815885CA01B901E3D699 +:10DBF0009B01AC0160E070E080E090E4A9D36B0190 +:10DC00007C012BEA3AEA4AE25EE36D817E818F81F4 +:10DC10009885D1D64B015C0120E030E040E850E42B +:10DC2000C701B60196D39B01AC01C501B401C3D6AF +:10DC300069877A878B879C8720E030E040E05FE34C +:10DC4000C701B601B8D66EA37FA388A799A710E035 +:10DC500022242394312CEB89FC89E215F30509F485 +:10DC6000D9C01C3008F03AC029813A814B815C81CF +:10DC70006EA17FA188A599A59ED66B017C01A30109 +:10DC8000920169857A858B859C8595D6A701960139 +:10DC900060D37B01082FD92EA30192016EA17FA131 +:10DCA00088A599A588D64B015C0129813A814B81D1 +:10DCB0005C8169857A858B859C857DD69B01AC01CD +:10DCC000C501B40145D32B013C011F5FC701A02F43 +:10DCD000BD2D89839A83AB83BC835BC0B10180E097 +:10DCE00090E0B0D42D813E814F81588564D66B0180 +:10DCF0007C010CD469837A838B839C83C701B60132 +:10DD0000BDD64B015C01E88DF98DC080D180E280E9 +:10DD1000F380F7FAF094F7F8F094A8A1B9A18D91E7 +:10DD20009D910D90BC91A02D8AA79BA7ACA7BDA7E4 +:10DD3000A701960169817A818B819C813CD62B0158 +:10DD40003C012AA53BA54CA55DA5C501B40133D670 +:10DD50009B01AC01C301B201FCD22B013C01A70124 +:10DD60009601C501B40127D66B017C012AA53BA50C +:10DD70004CA55DA569817A818B819C811CD69B0114 +:10DD8000AC01C701B601E4D269837A838B839C839B +:10DD900010E0A30192016A8D7B8D8C8D9D8DD9D26F +:10DDA000EE89FF89608371838283938329813A811D +:10DDB0004B815C816AA17BA18CA19DA1CAD2AE8D51 +:10DDC000BF8D6D937D938D939C9313972EA53FA547 +:10DDD00048A959A9ED85FE85608171818281938171 +:10DDE000B8D2AD85BE856D937D938D939C9313972B +:10DDF0000D892F85388949895A8968E975E181E05B +:10DE00000E94084680912A1581110EC0BFEF2B1A7F +:10DE10003B0A21CF0D892F85388949895A8965E7C1 +:10DE200075E181E00E940846E1960FB6F894DEBFE6 +:10DE30000FBECDBFDF91CF911F910F91FF90EF905B +:10DE4000DF90CF90BF90AF909F908F907F906F901A +:10DE50005F904F903F902F900895EF920F931F93F4 +:10DE6000CF93DF93E80147FD02C034E001C034E105 +:10DE7000042E000C550B57FF03C0519541955109D5 +:10DE8000E32E022F242FAE0107D0CE01DF91CF91D8 +:10DE90001F910F91EF9008958F929F92AF92BF9232 +:10DEA000CF92DF92EF92FF920F931F93CF93DF9366 +:10DEB000CDB7DEB729970FB6F894DEBF0FBECDBF42 +:10DEC0006A01122FB02E2BE3201720F0FF24F394C9 +:10DED000F00E02C02CE3F22E0F2D27E0AE014F5FB3 +:10DEE0005F4F50D1BC014981842F8970813031F05E +:10DEF000E1FC06C0E0FE06C090E205C09DE203C062 +:10DF00009BE201C090E05E2D507143FF3CC0911137 +:10DF100002C083E001C084E0811718F4212F281B80 +:10DF200001C020E051110BC0F601822F30E288239E +:10DF300019F031938150FBCFC20ED11C20E0992300 +:10DF400029F0D6019C93F60131966F01C601039624 +:10DF5000E2FE0AC03EE4D6013C9341E411964C93A4 +:10DF6000119712963C9306C03EE6F601308341E6D7 +:10DF700041833283FC01322F40E2332309F442C053 +:10DF800041933150FACF42FF44C0911102C083E067 +:10DF900001C084E0811718F4212F281B01C020E064 +:10DFA00051110BC0F601822F30E2882319F0319312 +:10DFB0008150FBCFC20ED11C20E0992329F0D6015D +:10DFC0009C93F60131966F01C6010396E2FE0BC0E9 +:10DFD00039E4D6013C933EE411963C93119736E424 +:10DFE00012963C9307C039E6F60130833EE6318352 +:10DFF00036E63283FC01322F40E2332319F041939D +:10E000003150FBCFFC01E20FF11D10828EEF9FEF2C +:10E01000A6C021E030E0911102C020E030E01616E9 +:10E0200017061CF4FB01319602C0E1E0F0E02E0F70 +:10E030003F1FBB2021F0EB2DF0E0319602C0E0E065 +:10E04000F0E02E0F3F1FE12FF0E02E173F071CF4EA +:10E05000121B212F01C020E08E2D887159F4F6018A +:10E06000822F30E2882319F031938150FBCFC20E0A +:10E07000D11C20E0992329F0D6019C93F60131961A +:10E080006F0151110BC0F601822F90E3882319F024 +:10E0900091938150FBCFC20ED11C20E00F2D060FB3 +:10E0A0009A81342F307144FF03C0913309F4015039 +:10E0B000101624F4093018F008E001C001E0AB01AB +:10E0C00077FF02C040E050E0FB01E41BF50BA1E04C +:10E0D000B0E0AC0FBD1FEA0FFB1F8EE2A82E4B0174 +:10E0E000801A91080B2D10E01195019511094F3FF1 +:10E0F000BFEF5B0721F4D601AC9211966D01641756 +:10E1000075072CF08416950614F4818101C080E314 +:10E11000415051093196D60111967D0140175107A2 +:10E1200024F0D6018C936701E2CF6417750739F4A8 +:10E13000963320F4953319F4311101C081E3F601CF +:10E140008083F701822F90E2882319F09193815008 +:10E15000FBCFF701E20FF11D108280E090E02996DD +:10E160000FB6F894DEBF0FBECDBFDF91CF911F91E8 +:10E170000F91FF90EF90DF90CF90BF90AF909F9066 +:10E180008F900895283008F027E03327DA01990F9F +:10E19000311D87FD916000966105710539F432608B +:10E1A0002E5F3D9330E32A95E1F708959F3F30F0CD +:10E1B00080387105610509F03C5F3C5F3D9391300B +:10E1C00008F08068911DDF93CF931F930F93FF9208 +:10E1D000EF92192F987F9695E92F96959695E90FCE +:10E1E000FF27EA59FD4F99273327EE24FF24A70183 +:10E1F000E70105900894079428F4360FE71EF81EEF +:10E20000491F511D660F771F881F991F0694A1F79C +:10E210000590079428F4E70EF81E491F561FC11DEC +:10E22000770F881F991F661F0694A1F70590079422 +:10E2300028F4F80E491F561FC71FD11D880F991FBC +:10E24000661F771F0694A1F70590079420F4490FE5 +:10E25000561FC71FD81F990F661F771F881F069468 +:10E26000A9F784911095177041F0D695C7955795E9 +:10E270004795F794E7941A95C1F7ECE0F2E06894BB +:10E280001590159135916591959105907FE2739563 +:10E29000E118F10A430B560BC90BD009C0F7E10C8A +:10E2A000F11E431F561FC91FD01D7EF4703311F499 +:10E2B0008A95E6CFE894015030F0080F0AF4002761 +:10E2C000021708F4202F2395022F7A3328F079E3E0 +:10E2D0007D932A95E9F710C07D932A9589F60694D7 +:10E2E00097956795379517951794E118F10A430BA1 +:10E2F000560BC90BD00998F023957E9173957A330C +:10E3000008F070E37C932013B8F77E9170617D93E1 +:10E3100030F0839571E37D9370E32A95E1F7112442 +:10E32000EF90FF900F911F91CF91DF91992787FD7B +:10E33000909508959F939F77D5D10F9000203AF440 +:10E340009058A2EA2AED3FE049E450E413D096C287 +:10E350005058BB27AA270ED091C25AD230F05FD2B4 +:10E3600020F031F49F3F11F41EF42AC20EF4E09520 +:10E37000E7FBF7C1E92FA4D280F3BA17620773074E +:10E380008407950718F071F49EF5D3C20EF4E0955A +:10E390000B2EBA2FA02D0B01B90190010C01CA015F +:10E3A000A0011124FF27591B99F0593F50F4503E0A +:10E3B00068F11A16F040A22F232F342F4427585FFC +:10E3C000F3CF469537952795A795F0405395C9F714 +:10E3D0007EF41F16BA0B620B730B840BBAF09150CC +:10E3E000A1F0FF0FBB1F661F771F881FC2F70EC06B +:10E3F000BA0F621F731F841F48F48795779567953E +:10E40000B795F7959E3F08F0B3CF9395880F08F026 +:10E410009927EE0F979587950895FAD158F080E8DF +:10E4200091E009F49EEFFBD128F040E851E059F467 +:10E430005EEF09C0C5C17DC2E92FE07841D268F323 +:10E44000092E052AC1F3261737074807590738F060 +:10E450000E2E07F8E02569F0E025E0640AC0EF63BE +:10E4600007F8009407FADB01B9019D01DC01CA013C +:10E47000AD01EF935DD002D20AD05F91552331F008 +:10E480002BED3FE049E450FD49EC63CF0895DF9365 +:10E49000DD27B92FBF7740E85FE316161706480758 +:10E4A0005B0710F4D92F50D29F938F937F936F9374 +:10E4B0002DD3E8E9F1E087D1E1D12F913F914F9140 +:10E4C0005F9185D2DD2349F09058A2EA2AED3FE022 +:10E4D00049EC5FE3D0785D274DDFDF91CFC112D2E9 +:10E4E00080F09F3740F491110EF424C260E070E098 +:10E4F00080E89FE3089526F01B16611D711D811DA4 +:10E5000036C150C10AD108F481E0089590D1E39555 +:10E51000C6C10CD0B3C183D140F07AD130F021F420 +:10E520005F3F19F01EC1511105C24AC1C9D198F30C +:10E530009923C9F35523B1F3951B550BBB27AA2784 +:10E5400062177307840738F09F5F5F4F220F331FF6 +:10E55000441FAA1FA9F333D00E2E3AF0E0E830D0C2 +:10E5600091505040E695001CCAF729D0FE2F27D0C5 +:10E57000660F771F881FBB1F261737074807AB0793 +:10E58000B0E809F0BB0B802DBF01FF2793585F4F08 +:10E590002AF09E3F510568F0E4C0CCC15F3FECF328 +:10E5A000983EDCF3869577956795B795F7959F5FCD +:10E5B000C9F7880F911D9695879597F90895E1E021 +:10E5C000660F771F881FBB1F621773078407BA0780 +:10E5D00020F0621B730B840BBA0BEE1F88F7E095DB +:10E5E000089504D06894B111A5C1089571D188F03F +:10E5F0009F5790F0B92F9927B751A0F0D1F0660F2F +:10E60000771F881F991F1AF0BA95C9F712C0B13049 +:10E6100081F08FD1B1E008958CC1672F782F8827C2 +:10E62000B85F39F0B93FCCF3869577956795B39588 +:10E63000D9F73EF490958095709561957F4F8F4FF7 +:10E640009F4F0895E89409C097FB3EF490958095FC +:10E65000709561957F4F8F4F9F4F9923A9F0F92FA8 +:10E6600096E9BB279395F695879577956795B79526 +:10E67000F111F8CFFAF4BB0F11F460FF1BC06F5F0C +:10E680007F4F8F4F9F4F16C0882311F096E911C01E +:10E69000772321F09EE8872F762F05C0662371F03F +:10E6A00096E8862F70E060E02AF09A95660F771F53 +:10E6B000881FDAF7880F9695879597F9089522D1E4 +:10E6C00080F09F3740F491110EF034C160E070E0AB +:10E6D00080E89FEB089526F41B16611D711D811DB6 +:10E6E00046C060C0DF93CF931F930F938B01EC0163 +:10E6F000E5ECF1E068D0C2D09801AE018B01EC01ED +:10E7000060E070E080E89FE323DEC2D19801AE01B3 +:10E710000F911F91CF91DF915AC1990F0008550FAA +:10E72000AA0BE0E8FEEF16161706E807F907C0F097 +:10E7300012161306E407F50798F0621B730B840B9F +:10E74000950B39F40A2661F0232B242B252B21F479 +:10E7500008950A2609F4A140A6958FEF811D811D19 +:10E76000089597F99F6780E870E060E00895882336 +:10E7700071F4772321F09850872B762F07C06623FA +:10E7800011F499270DC09051862B70E060E02AF0BB +:10E790009A95660F771F881FDAF7880F96958795E9 +:10E7A00097F908959F3F31F0915020F48795779520 +:10E7B0006795B795880F911D9695879597F9089558 +:10E7C0009FEF80EC0895DF93CF931F930F93FF92F9 +:10E7D000EF92DF927B018C01689405C0DA2EEF0185 +:10E7E000F6D0FE01E894A59125913591459155917A +:10E7F000AEF3EF01BFDDFE019701A801DA9479F7CE +:10E80000DF90EF90FF900F911F91CF91DF910895CE +:10E8100000240A94161617061806090608950024FF +:10E820000A9412161306140605060895C9CF50D08F +:10E83000E8F3E894E0E0BB279F57F0F02AED3FE0D3 +:10E8400049EC06C0EE0FBB0F661F771F881F28F02C +:10E85000B23A62077307840728F0B25A620B730B4F +:10E86000840BE3959A9572F7803830F49A95BB0F34 +:10E87000661F771F881FD2F7904896CF092E039402 +:10E88000000C11F4882352F0BB0F40F4BF2B11F49D +:10E8900060FF04C06F5F7F4F8F4F9F4F0895EF93CE +:10E8A000E0FF06C0A2EA2AED3FE049EC5FEB62DD43 +:10E8B000E5DF0F90039401FC9058EDEEF1E03BC1D1 +:10E8C00057FD9058440F551F59F05F3F71F0479521 +:10E8D000880F97FB991F61F09F3F79F08795089506 +:10E8E000121613061406551FF2CF4695F1DF08C025 +:10E8F000161617061806991FF1CF86957105610542 +:10E9000008940895E5DFA0F0BEE7B91788F4BB27A7 +:10E910009F3860F41616B11D672F782F8827985FEF +:10E92000F7CF869577956795B11D93959639C8F37E +:10E930000895E894BB2766277727CB0197F90895B8 +:10E94000ECDE08F48FEF08959B01AC0160E070E00D +:10E9500080E89FE3DECDBCDF58F19E5758F1985117 +:10E96000A0F0E9F0983020F5092E9927660F771F5F +:10E97000881F991F0A94D1F712C0062E672F782F8F +:10E980008827985F11F4000C07C0993FB4F386956F +:10E99000779567959395D9F7611D711D811D3EF49B +:10E9A00090958095709561957F4F8F4F9F4F0895FB +:10E9B0006894C0CFBECF0BD061CF2ADF28F02FDF05 +:10E9C00018F0952309F0CDCEFBCE1124B3CF78DF1C +:10E9D000A0F3959FD1F3950F50E0551F629FF00172 +:10E9E000729FBB27F00DB11D639FAA27F00DB11DCB +:10E9F000AA1F649F6627B00DA11D661F829F222754 +:10EA0000B00DA11D621F739FB00DA11D621F839FDA +:10EA1000A00D611D221F749F3327A00D611D231FB0 +:10EA2000849F600D211D822F762F6A2F11249F57FE +:10EA300050408AF0E1F088234AF0EE0FFF1FBB1F21 +:10EA4000661F771F881F91505040A9F79E3F5105C0 +:10EA500070F087CE6FCF5F3FECF3983EDCF3869586 +:10EA600077956795B795F795E7959F5FC1F7FE2B6B +:10EA7000880F911D9695879597F908959F93D7DEF6 +:10EA80000F9007FCEE5F0BCF11F40EF499CE8ACEF7 +:10EA90001FDFD0F39923D9F3CEF39F57550B87FF90 +:10EAA00043D00024A0E640EA9001805856959795FF +:10EAB00028F4805C660F771F881F20F02617370721 +:10EAC000480730F4621B730B840B202931294A2B31 +:10EAD000A69517940794202531254A2758F7660FE5 +:10EAE000771F881F20F026173707480730F4620B7E +:10EAF000730B840B200D311D411DA09581F7B901C9 +:10EB0000842F9158880F9695879508959B01AC01A5 +:10EB100052CFF8DE20F09F3708F40CCF28CE42CE3B +:10EB2000FCDD880B990B089591505040660F771FBC +:10EB3000881FD2F708959F938F937F936F93FF93CE +:10EB4000EF939B01AC0137DFEF91FF913CDE2F91FA +:10EB50003F914F915F912FCFDB018F939F9380D097 +:10EB6000BF91AF91A29F800D911DA39F900DB29F69 +:10EB7000900D11240895991B79E004C0991F9617F0 +:10EB800008F0961B881F7A95C9F780950895AA1BEF +:10EB9000BB1B51E107C0AA1FBB1FA617B70710F088 +:10EBA000A61BB70B881F991F5A95A9F780959095BA +:10EBB000BC01CD010895A1E21A2EAA1BBB1BFD01C9 +:10EBC0000DC0AA1FBB1FEE1FFF1FA217B307E4074C +:10EBD000F50720F0A21BB30BE40BF50B661F771FA4 +:10EBE000881F991F1A9469F7609570958095909584 +:10EBF0009B01AC01BD01CF010895052E97FB16F4D2 +:10EC000000940FD057FD05D0D6DF07FC02D046F4A4 +:10EC100008C050954095309521953F4F4F4F5F4F1D +:10EC2000089590958095709561957F4F8F4F9F4F78 +:10EC30000895EE0FFF1F881F8BBF0790F691E02D00 +:10EC40001994A29FB001B39FC001A39F700D811DB5 +:10EC50001124911DB29F700D811D1124911D0895E5 +:10EC6000F0DFA59F900DB49F900DA49F800D911D86 +:10EC700011240895FB01DC010D900020E9F71197A4 +:10EC800001900D920020E1F70895FB01DC01019055 +:10EC90000D920020E1F708950F931F93CF93DF9318 +:10ECA000CDB7DEB72E970FB6F894DEBF0FBECDBF3F +:10ECB0000E891F8986E08C831A8309838FEF9FE773 +:10ECC0009E838D83AE01465E5F4F688D798DCE0148 +:10ECD000019659D0EF81F885E00FF11F10822E9632 +:10ECE0000FB6F894DEBF0FBECDBFDF91CF911F915D +:10ECF0000F910895CF93DF93CDB7DEB72E970FB660 +:10ED0000F894DEBF0FBECDBF85E08C838C899D89D2 +:10ED10009A838983AE01485E5F4F6E897F89CE01F9 +:10ED20000196E0D32E960FB6F894DEBF0FBECDBF8E +:10ED3000DF91CF9108950F931F93CF93DF93CDB7BA +:10ED4000DEB72E970FB6F894DEBF0FBECDBF8C0195 +:10ED500086E08C831A8309838FEF9FE79E838D83E0 +:10ED6000CE01019610D0EF81F885E00FF11F1082DF +:10ED70002E960FB6F894DEBF0FBECDBFDF91CF91B8 +:10ED80001F910F9108952F923F924F925F926F9231 +:10ED90007F928F929F92AF92BF92CF92DF92EF922B +:10EDA000FF920F931F93CF93DF93CDB7DEB72B97CF +:10EDB0000FB6F894DEBF0FBECDBF6C017B018A0198 +:10EDC000FC0117821682838181FFBFC1CE010196AB +:10EDD0003C01F6019381F70193FD859193FF8191A9 +:10EDE0007F01882309F4ADC1853239F493FD859103 +:10EDF00093FF81917F01853221F4B60190E0F0D438 +:10EE0000E8CF912C212C312CFFE1F315D8F08B3277 +:10EE100079F038F4803279F08332A1F4232D206127 +:10EE20001DC08D3261F0803369F4232D216016C03E +:10EE3000832D8260382EE32DE4603E2E2AC0F32D10 +:10EE4000F8601DC037FC2DC020ED280F2A3040F09F +:10EE50008E32B9F436FC75C1232D2064322E19C0D0 +:10EE600036FE06C08AE0989E200D1124922E11C015 +:10EE7000EAE02E9E200D1124222EF32DF0623F2E6B +:10EE800008C08C3621F4832D8068382E02C0883665 +:10EE900041F4F70193FD859193FF81917F018111E9 +:10EEA000B3CF982F9F7D9554933028F40C5F1F4F5C +:10EEB0009FE399830DC0833631F0833771F083353A +:10EEC00009F055C020C0F801808189830E5F1F4F73 +:10EED00088248394912C530112C02801F2E04F0E34 +:10EEE000511CF801A080B18036FE03C0692D70E08E +:10EEF00002C06FEF7FEFC5012AD44C018201F32DD0 +:10EF0000FF773F2E15C0280122E0420E511CF80168 +:10EF1000A080B18036FE03C0692D70E002C06FEFA3 +:10EF20007FEFC50109D44C01F32DF0683F2E82011B +:10EF300033FC19C0822D90E088169906A0F4B60122 +:10EF400080E290E04DD42A94F5CFF50137FC85910D +:10EF500037FE81915F01B60190E042D421102A94DE +:10EF600021E0821A91088114910479F7E1C0843676 +:10EF700011F0893639F5F80137FE07C060817181DB +:10EF8000828193810C5F1F4F08C060817181072EC1 +:10EF9000000C880B990B0E5F1F4FF32DFF763F2E51 +:10EFA00097FF09C090958095709561957F4F8F4F21 +:10EFB0009F4FF0683F2E2AE030E0A30166D4882EF0 +:10EFC000861844C0853731F4232D2F7EB22E2AE0D7 +:10EFD00030E025C0932D997FB92E8F36C1F018F4FB +:10EFE000883579F0AEC0803719F0883721F0A9C094 +:10EFF000E92FE061BE2EB4FE0DC0FB2DF460BF2EE4 +:10F0000009C034FE0AC0292F2660B22E06C028E0AF +:10F0100030E005C020E130E002C020E132E0F8013C +:10F02000B7FE07C060817181828193810C5F1F4FA1 +:10F0300006C06081718180E090E00E5F1F4FA301E8 +:10F0400024D4882E8618FB2DFF773F2E36FE0DC068 +:10F05000232D2E7FA22E891458F434FE0BC032FCCF +:10F0600009C0832D8E7EA82E05C0B82CA32C03C00A +:10F07000B82C01C0B92CA4FE0FC0FE01E80DF11D93 +:10F080008081803321F49A2D997EA92E09C0A2FE99 +:10F0900006C0B394B39404C08A2D867809F0B39463 +:10F0A000A3FC10C0A0FE06C0B21480F4280C922C61 +:10F0B0009B180DC0B21458F4B60180E290E090D3D2 +:10F0C000B394F8CFB21418F42B1802C0982C212C4A +:10F0D000A4FE0FC0B60180E390E082D3A2FE16C06A +:10F0E000A1FC03C088E790E002C088E590E0B6018B +:10F0F0000CC08A2D867851F0A1FE02C08BE201C0BF +:10F1000080E2A7FC8DE2B60190E06AD3891430F466 +:10F11000B60180E390E064D39A94F8CF8A94F30127 +:10F12000E80DF11D8081B60190E05AD38110F6CF31 +:10F13000222009F44ECEB60180E290E051D32A9409 +:10F14000F7CFF6018681978102C08FEF9FEF2B9654 +:10F150000FB6F894DEBF0FBECDBFDF91CF911F91E8 +:10F160000F91FF90EF90DF90CF90BF90AF909F9066 +:10F170008F907F906F905F904F903F902F90089569 +:10F1800020FD09C0FC0123FD05C022FF02C07383DE +:10F19000628351834083089544FD17C046FD17C024 +:10F1A000AB01BC01DA01FB01AA0FBB1FEE1FFF1F61 +:10F1B0001094D1F74A0F5B1F6E1F7F1FCB01BA015E +:10F1C000660F771F881F991F09C033E001C034E024 +:10F1D000660F771F881F991F3150D1F7620F711D7D +:10F1E000811D911D08950F931F93CF93DF938C0181 +:10F1F000C801B8D2EC0197FD06C08BD2892BC1F7AC +:10F20000B801CE0129D3CE01DF91CF911F910F918B +:10F2100008958F929F92AF92BF92EF92FF920F93B9 +:10F220001F93CF93DF938C01D62F7A01B22E9AD2FF +:10F230009C0133272B32310531F02D32310559F441 +:10F240008B2D8068B82ED15011F480E061C0C801C8 +:10F2500089D297FDFACFCB2DCD7F2B2D2073F9F4DA +:10F260008033E9F4AA24AA94AD0E09F43EC0C80183 +:10F2700079D297FD3AC09C012F7D3327283531057F +:10F2800041F4C264D25089F1C8016CD297FF07C023 +:10F290002CC0B6FE02C0C26001C0C261DA2D812C52 +:10F2A000912C540120ED280F283078F0C4FF03C0C2 +:10F2B000B801D2D217C02A3040F0C6FFF9CF2F7D57 +:10F2C0003FEE320F3630A0F727504C2FC501B40166 +:10F2D00063DF4B015C01C260D15051F0C80142D2E2 +:10F2E00097FFE0CFC1FD04C0B0CF812C912C540119 +:10F2F000C7FF08C0B094A09490948094811C911C86 +:10F30000A11CB11C2C2FB501A401C70139DF81E07C +:10F31000DF91CF911F910F91FF90EF90BF90AF9031 +:10F320009F908F9008955F926F927F928F929F929D +:10F33000AF92BF92CF92DF92EF92FF920F931F9303 +:10F34000CF93DF93CDB7DEB7A0970FB6F894DEBFAB +:10F350000FBECDBF5C01962E7A01F9018E010F5FC1 +:10F360001F4F680180E2D8011D928A95E9F7D50107 +:10F3700013968C9080E090E0612C712C30E061E07D +:10F3800070E083FC259183FE21918F01522E211183 +:10F3900003C080E090E090C02E3511F4009751F149 +:10F3A000432F50E0481759073CF42D3559F12D32C1 +:10F3B00019F4772009F103C0772009F468C0452DBE +:10F3C000469546954695D601A40FB11D452D47702B +:10F3D0008B0102C0000F111F4A95E2F7A8015C9152 +:10F3E000452B4C93651459F0561410F45394E7CF01 +:10F3F0005A94E5CF31E004C07724739401C0712C96 +:10F400000196BFCF772019F08E8180628E833111F3 +:10F4100003C08824839417C0F6019E012F5D3F4FDF +:10F420008081809581932E173F07D1F7F2CFE114A9 +:10F43000F10429F0D7018C93F70131967F019A945A +:10F44000812C9920E9F0C5018DD197FD17C0FC01F1 +:10F45000FF2723E0F595E7952A95E1F7EC0DFD1DD3 +:10F46000208130E0AC014770552702C035952795C3 +:10F470004A95E2F720FDDBCFB501EED1811089CFAF +:10F48000E114F10411F0D7011C92C80115C0422FFC +:10F49000469546954695D601A40FB11D422F47705B +:10F4A0008B0102C0000F111F4A95E2F7A8015C9181 +:10F4B000452B4C93622EA4CFA0960FB6F894DEBFD6 +:10F4C0000FBECDBFDF91CF911F910F91FF90EF90B5 +:10F4D000DF90CF90BF90AF909F908F907F906F9074 +:10F4E0005F9008955F926F927F928F929F92AF92FA +:10F4F000BF92CF92DF92EF92FF920F931F93CF9321 +:10F50000DF936C01EB015A01FC0117821682512C2A +:10F51000F601E380FE01E3FC8591E3FE8191182F63 +:10F52000EF01882309F4E0C090E0F3D0892B19F0B3 +:10F53000C60159DEEDCF153241F4FE01E3FC159111 +:10F54000E3FE1191EF01153271F4C6010BD197FD65 +:10F55000C9C0412F50E09C01332724173507C1F261 +:10F56000B6017AD1C1C01A3239F4E3FC1591E3FE39 +:10F570001191EF0101E001C000E0F12C20ED210F1D +:10F580002A3078F402606F2D70E080E090E040E275 +:10F5900003DEF62EFE01E3FC1591E3FE1191EF016F +:10F5A000EDCF01FF03C0F11003C09EC0FF24FA9409 +:10F5B000183619F01C3651F010C0FE01E3FC15910D +:10F5C000E3FE1191EF01183641F408600460FE017A +:10F5D000E3FC1591E3FE1191EF01112309F484C0BE +:10F5E000612F70E086E093E09CD0892B09F47CC009 +:10F5F00000FD07C0F50180809180C50102965C0185 +:10F6000002C0812C912C1E3649F4F60146815781A7 +:10F6100060E070E0202FC401B3DD7ACF1336A1F48F +:10F6200001FD02C0FF24F394C6019CD097FD5AC08F +:10F630008114910429F0F4018083C40101964C01E6 +:10F64000FA94F110F1CF4AC01B3551F49E01A40188 +:10F650006F2DC60168DEEC01892B09F03FC039C06F +:10F66000C601C1DD97FD3EC01F3649F128F41436AE +:10F6700021F1193639F125C0133771F01537E9F04A +:10F6800020C08114910429F0F4016082C401019624 +:10F690004C01FA94FF2059F0C60164D03C0197FD5B +:10F6A00006C037D0892B69F3B601C301D5D08114C8 +:10F6B0009104A1F0F401108211C0006203C0006146 +:10F6C00001C00064202FA4016F2DC601A2DD8111AD +:10F6D00005C0F6018381807329F406C000FD18CFB0 +:10F6E000539416CF552019F0852D90E002C08FEF6E +:10F6F0009FEFDF91CF911F910F91FF90EF90DF90DF +:10F70000CF90BF90AF909F908F907F906F905F90C1 +:10F710000895911118C1803219F089508550D0F7A1 +:10F720000895FC010590061621F00020D9F7C001CC +:10F7300008953197CF010895FC0105906150704004 +:10F740000110D8F7809590958E0F9F1F0895FC01AA +:10F750006150704001900110D8F7809590958E0F00 +:10F760009F1F0895CF93DF93EC012B8120FF33C0BF +:10F7700026FF0AC02F7B2B838E819F8101969F835A +:10F780008E838A8190E029C022FF0FC0E881F98131 +:10F790008081082E000C990B009719F420622B83AE +:10F7A0001AC03196F983E8830EC0EA85FB85199566 +:10F7B00097FF09C02B81019611F080E201C080E122 +:10F7C000822B8B8308C02E813F812F5F3F4F3F8369 +:10F7D0002E83992702C08FEF9FEFDF91CF9108957D +:10F7E0000F931F93CF93DF93FB01238121FD03C070 +:10F7F0008FEF9FEF2CC022FF16C0468157812481D6 +:10F8000035814217530744F4A081B1819D012F5FD8 +:10F810003F4F318320838C93268137812F5F3F4F69 +:10F820003783268314C08B01EC01FB010084F18532 +:10F83000E02D1995892BE1F6D80116968D919C91B2 +:10F840001797019617969C938E931697CE01DF918A +:10F85000CF911F910F910895FB01238120FF12C0CA +:10F8600026FD10C08F3F3FEF930761F082832F7D0D +:10F8700020642383268137812150310937832683F1 +:10F88000992708958FEF9FEF0895FA01AA2728304E +:10F8900051F1203181F1E8946F936E7F6E5F7F4F5D +:10F8A0008F4F9F4FAF4FB1E03ED0B4E03CD0670FD9 +:10F8B000781F891F9A1FA11D680F791F8A1F911D2C +:10F8C000A11D6A0F711D811D911DA11D20D009F47C +:10F8D00068943F912AE0269F11243019305D3193BE +:10F8E000DEF6CF010895462F4770405D4193B3E0A7 +:10F8F0000FD0C9F7F6CF462F4F70405D4A3318F04E +:10F90000495D31FD4052419302D0A9F7EACFB4E0FE +:10F91000A6959795879577956795BA95C9F70097B6 +:10F920006105710508959B01AC010A2E0694579557 +:10F93000479537952795BA95C9F7620F731F841FAE +:10F94000951FA01D0895992788270895F894FFCF43 +:10F95000AE47C13F0802000000000000007373635F +:10F96000616E662025640D0A0053255B302D392D0C +:10F970002B2E5D52255B302D392D2B2E5D48255BBE +:10F98000302D392D2B2E5D46255B302D392D2B2E1C +:10F990005D004E256456255B302D392D2B2E5D469E +:10F9A000255B302D392D2B2E5D0058255B302D39F0 +:10F9B0002D2B2E5D59255B302D392D2B2E5D5A2593 +:10F9C0005B302D392D2B2E5D46255B302D392D2BAF +:10F9D0002E5D0042255B302D392D2B2E5D4C255B95 +:10F9E000302D392D2B2E5D52255B302D392D2B2EB0 +:10F9F0005D46255B302D392D2B2E5D002042257371 +:10FA0000204C2573205225730A0053776966745081 +:10FA1000726F002025730A0056342E352E310056A1 +:10FA2000342E302E3400205625730A0020582573BA +:10FA300020592573205A25730A002053257320521C +:10FA40002573204825730A004E2564002042256452 +:10FA5000204C2564205225640A00616E676C652085 +:10FA60006F66667365743A25730D0A00646576697E +:10FA70006365206E616D65203A2025730D0A007361 +:10FA80006F667420766572203A2025730D0A006136 +:10FA9000706920766572203A2025730D0A00776F11 +:10FAA000726B206D6F6465203A2025640D0A00405A +:10FAB000310A0065666665637420636865636B2060 +:10FAC00074696D656F7574210D0A0023255B302DF7 +:10FAD000395D002425730045323320627566666502 +:10FAE000722066756C6C0D0A004033205825732017 +:10FAF000592573205A2573205225730A0040362059 +:10FB00004E30205625640A004035205625640A00F0 +:10FB100040392056300A0041255B302D392D2B2EDF +:10FB20005D00562573002056310A00565542255B6C +:10FB3000302D392E5D0046255B302D392E5D542544 +:10FB4000640058255B302D392D2B2E5D59255B30F7 +:10FB50002D392D2B2E5D5A255B302D392D2B2E5D09 +:10FB60000042255B302D392D2B2E5D4C255B302D31 +:10FB7000392D2B2E5D52255B302D392D2B2E5D001E +:10FB800058255B302D392D2B2E5D59255B302D39B5 +:10FB90002D2B2E5D5A255B302D392D2B2E5D5025BA +:10FBA00064004E25645625640053255B302D392DA5 +:10FBB0002B2E5D0056255B302D392D2B2E5D002020 +:10FBC000006F6B0045323000453231004532320063 +:10FBD00056332E332E310056332E332E300056330B +:10FBE0002E332E320056302E302E30004532330A5E +:0CFBF000004532300A004532310A0000A6 +:00000001FF From 5de7f2e55e263e4c34c732733ee5b172cea61fc0 Mon Sep 17 00:00:00 2001 From: HuttonGe Date: Mon, 23 Mar 2020 17:28:46 +0800 Subject: [PATCH 64/74] Update 2020-03-23 --- hex/uArm3Plus_V4.5.0_release_20190924.hex | 3953 +++++++++++++++++++++ src/protocol.c | 2 +- 2 files changed, 3954 insertions(+), 1 deletion(-) create mode 100644 hex/uArm3Plus_V4.5.0_release_20190924.hex diff --git a/hex/uArm3Plus_V4.5.0_release_20190924.hex b/hex/uArm3Plus_V4.5.0_release_20190924.hex new file mode 100644 index 0000000..9ef0df1 --- /dev/null +++ b/hex/uArm3Plus_V4.5.0_release_20190924.hex @@ -0,0 +1,3953 @@ +:1000000065C5000084C5000082C5000080C50000F1 +:100010007EC500007CC500007AC5000078C50000E0 +:1000200076C500000C94D25A72C500000C94104999 +:100030006EC500006CC500006AC500000C949D559B +:1000400066C500000C94412A62C5000060C500002E +:100050005EC500005CC500005AC500000C94CC29A8 +:1000600056C500000C94A5300C94953150C5000085 +:100070004EC500004CC500004AC5000048C5000040 +:1000800046C5000044C5000042C500000C948755D9 +:100090000C943D300C9467313AC5000038C500001F +:1000A00036C5000034C5000032C5000030C5000070 +:1000B0002EC500000C944C552AC5000028C5000030 +:1000C00026C5000024C500000C9417550C94D52FAC +:1000D0000C9439311CC500000C946D2F0C940B311D +:1000E00016C500006E14D41ED41E7C149114A614E0 +:1000F000BB14D41EC414D41ED714D41EE614F0149A +:100100005015D41ED41ED41E071521153B15A31D52 +:10011000B31DE21DB31DE61DFD1DEC1DF61D211EC8 +:10012000281E331E3E1E5D1E5F1E621E641E1426A8 +:100130002D2646265F2678269B26B426A32DA92D9C +:10014000AC2DAF2DB32DBB2DC32D302E302E302E28 +:10015000CB2DCE2DD72DE02D302E302E302E302E23 +:10016000302E302EE82DF22DFE2D082E0B2E142EC3 +:100170001D2E232E8F549254815485548B54C95470 +:1001800096549A54A054A454A854AE54B254B6549D +:10019000C954BC54C054C454084AD73B3BCE016E2A +:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE +:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD +:1001C000000000803F072C7AA5BA6CC590DA3B93FB +:1001D00065FC8BBC53F810FD3C5692834DBD879D4A +:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 +:1001F000CDB2D44EB93836A9020C50B991868808D0 +:100200003CA6AAAA2ABE000000803F0000407A1047 +:10021000F35A00A0724E18090010A5D4E80000E8B7 +:100220007648170000E40B54020000CA9A3B000015 +:1002300000E1F505000080969800000040420F00A4 +:100240000000A08601000000102700000000E80365 +:10025000000000006400000000000A000000000030 +:100260000100000000002C76D888DC674F0823DFEF +:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 +:10028000997696E8E6C28426EB898C9B62ED407CE9 +:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 +:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA +:1002B000FEF520E6B500D0ED902E030094357705CD +:1002C0000080841E080000204E0A000000C80C3385 +:1002D0003333330F986E12831141EF8D2114893B14 +:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 +:1002F000901DA4BBE424203284725E228100C9F1E7 +:1003000024ECA1E53D276364696E6F7073757858BE +:100310005B00000020002300260029002C002F0095 +:100320003200000100000301060109010D0A003D31 +:1003300000244E005D0D0A005B302E396A2E3230EB +:100340003136303732363A005D0D0A005B544C4F7F +:100350003A005D0D0A002C005B4739323A005D0D12 +:100360000A002C003A003330003238005B47005D51 +:100370000D0A00205300204600205400204D380074 +:10038000204D3900204D3500204D3400204D3300E4 +:10039000204D3200204D3100204D300020473934AF +:1003A00000204739330020473931002047393000D9 +:1003B00020473230002047323100204731390020B9 +:1003C0004731380020473137002047004733382E67 +:1003D000004738300047330047320047310047308C +:1003E000005B00290D0A00206D617820747261762F +:1003F000656C2C206D6D0020616363656C2C206D35 +:100400006D2F7365635E3200206D617820726174B8 +:10041000652C206D6D2F6D696E002C2073746570D6 +:100420002F6D6D007A00790078002028003D0024AF +:10043000002028686F6D696E672070756C6C2D6F79 +:1004400066662C206D6D290D0A002028686F6D6985 +:100450006E67206465626F756E63652C206D7365D1 +:1004600063290D0A2432373D002028686F6D696EBC +:1004700067207365656B2C206D6D2F6D696E290D7E +:100480000A2432363D002028686F6D696E67206649 +:100490006565642C206D6D2F6D696E290D0A2432FF +:1004A000353D00290D0A2432343D002028686F6D47 +:1004B000696E672064697220696E76657274206D5A +:1004C00061736B3A002028686F6D696E67206379ED +:1004D000636C652C20626F6F6C290D0A2432333DEA +:1004E00000202868617264206C696D6974732C2027 +:1004F000626F6F6C290D0A2432323D002028736F21 +:100500006674206C696D6974732C20626F6F6C293E +:100510000D0A2432313D0020287265706F727420FC +:10052000696E636865732C20626F6F6C290D0A24F5 +:1005300032303D00202861726320746F6C657261F7 +:100540006E63652C206D6D290D0A2431333D00202A +:10055000286A756E6374696F6E206465766961746C +:10056000696F6E2C206D6D290D0A2431323D0029F2 +:100570000D0A2431313D0020287374617475732095 +:100580007265706F7274206D61736B3A0020287011 +:10059000726F62652070696E20696E766572742C68 +:1005A00020626F6F6C290D0A2431303D0020286CC9 +:1005B000696D69742070696E7320696E76657274F6 +:1005C0002C20626F6F6C290D0A24363D00202873A1 +:1005D00074657020656E61626C6520696E76657207 +:1005E000742C20626F6F6C290D0A24353D00290D93 +:1005F0000A24343D00202864697220706F727420D0 +:10060000696E76657274206D61736B3A00290D0A0C +:1006100024333D0020287374657020706F7274203D +:10062000696E76657274206D61736B3A0020287371 +:100630007465702069646C652064656C61792C2038 +:100640006D736563290D0A24323D0020287374659B +:10065000702070756C73652C2075736563290D0AA5 +:1006600024313D0024303D0024242028766965771C +:10067000204772626C2073657474696E6773290D0C +:100680000A2423202876696577202320706172610F +:100690006D6574657273290D0A2447202876696593 +:1006A0007720706172736572207374617465290DAF +:1006B0000A2449202876696577206275696C642070 +:1006C000696E666F290D0A244E20287669657720A9 +:1006D0007374617274757020626C6F636B73290D33 +:1006E0000A24783D76616C756520287361766520F3 +:1006F0004772626C2073657474696E67290D0A24F1 +:100700004E783D6C696E6520287361766520737440 +:10071000617274757020626C6F636B290D0A2443DB +:100720002028636865636B2067636F6465206D6F65 +:100730006465290D0A245820286B696C6C20616C53 +:1007400061726D206C6F636B290D0A24482028723A +:10075000756E20686F6D696E67206379636C6529BB +:100760000D0A7E20286379636C652073746172744E +:10077000290D0A2120286665656420686F6C64294C +:100780000D0A3F202863757272656E742073746160 +:10079000747573290D0A6374726C2D782028726544 +:1007A000736574204772626C290D0A0000002100F5 +:1007B000240027002A002D00300033000101000032 +:1007C000040107010A010D0A00496E76616C696433 +:1007D0002067636F64652049443A00556E6465661E +:1007E000696E656420666565642072617465004D9C +:1007F0006F64616C2067726F75702076696F6C61D1 +:1008000074696F6E00486F6D696E67206E6F74203B +:10081000656E61626C656400416C61726D206C6F25 +:10082000636B004E6F742069646C650045455052DF +:100830004F4D2072656164206661696C2E2055738E +:10084000696E672064656661756C74730056616CCF +:100850007565203C2033207573656300536574749F +:10086000696E672064697361626C65640056616CCF +:100870007565203C203000496E76616C6964207398 +:10088000746174656D656E7400426164206E756D8F +:1008900062657220666F726D617400457870656381 +:1008A00074656420636F6D6D616E64206C65747433 +:1008B0006572006572726F723A20006F6B0D0A00EC +:1008C0000D0A00486F6D696E67206661696C0050A3 +:1008D000726F6265206661696C0041626F7274209C +:1008E000647572696E67206379636C6500536F6627 +:1008F00074206C696D69740048617264206C696D64 +:10090000697400414C41524D3A20003E0D0A002CC2 +:100910004C696D3A002C52583A002C4275663A00E8 +:100920002C002C57506F733A002C002C4D506F73D5 +:100930003A003C446F6F72003C436865636B003C57 +:10094000416C61726D003C486F6D65003C486F6C96 +:1009500064003C52756E003C49646C65005D0D0A94 +:1009600000526573746F72696E67206465666175A5 +:100970006C74730050676D20456E64004368656356 +:100980006B20446F6F720044697361626C65640030 +:10099000456E61626C65640043617574696F6E3A9F +:1009A00020556E6C6F636B656400272448277C2795 +:1009B00024582720746F20756E6C6F636B0052652E +:1009C00073657420746F20636F6E74696E75650053 +:1009D0005B005D0D0A003A002C005B5052423A0069 +:1009E00000002200250028002B002E0031003400DA +:1009F00002010000050108010B01050505050705B9 +:100A000008080808020202020A0A0808040404048A +:100A100001010101010101010303030303030303B6 +:100A2000040707070C0C0C0C0C0C0C0C0202020245 +:100A300006060606060606060B0B0B0B0B0B0B0B2E +:100A400001021020200808102040102040800201E0 +:100A500002010804020101020408102040808040C5 +:100A600020100804020180040201804020100804C4 +:100A70000201080402010102040810204080010262 +:100A800004081020408000000A0B02090C0D0E081B +:100A90000703040100000000000000000000000047 +:100AA0000000000000000000000000000000000046 +:100AB0000000121110000000000000000000000003 +:100AC00000000000000000000000000011241FBE14 +:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D +:100AE000B2E0EEE4F4EF00E00BBF02C007900D921D +:100AF000AC3AB107D9F725E1ACEAB4E001C01D92E8 +:100B0000AC39B207E1F70E94C15D0C94257A78CA2E +:100B10002F923F924F925F926F927F928F929F920D +:100B2000AF92BF92CF92DF92EF92FF920F931F93FB +:100B3000CF93DF93CDB7DEB7C85CD1090FB6F89479 +:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B +:100B5000D04089E3E4E2F5E1DF011D928A95E9F7EF +:100B60008AE0EDE5F5E1A5E2B5E101900D928A9507 +:100B7000E1F7FE01E756FF4F1082CD54DF4F198297 +:100B80001882C35BD040C155DF4F19821882CF5AFB +:100B9000D040C154DF4F1882CF5BD040C655DF4FE5 +:100BA0001882CA5AD040C255DF4F1882CE5AD04060 +:100BB000E859F109C456DF4FF983E883CC59D04096 +:100BC0009E01235A3F4FC256DF4F39832883CE59A7 +:100BD000D040CE018F5A9F4FC056DF4F99838883F4 +:100BE000C05AD040DE01A959BF4FCE55DF4FB9835F +:100BF000A883C25AD040E059FF4FCC55DF4FF9834C +:100C0000E883C45AD0409C01285F3F4FCD53DF4F4B +:100C100039832883C35CD040C756DF4F8881C959C8 +:100C2000D040C754DF4FE881F981C95BD040E80F5D +:100C3000F11D1081112311F40C94B3159FEB910F4A +:100C40009A3110F00C94C61E8F5FC756DF4F888311 +:100C5000C959D040AE014B565F4FBE0167567F4F1A +:100C6000C754DF4F88819981C95BD0400E94D0551D +:100C7000882311F40C94C81ECB56DF4FC880D9804E +:100C8000EA80FB80C559D040C701B6010E9433738A +:100C90000E94A070CB54DF4F688379838A839B8343 +:100CA000C55BD040CB54DF4F48805980C55BD040F6 +:100CB000B20180E090E00E94CC709B01AC01C701C2 +:100CC000B6010E94526F20E030E048EC52E40E94EE +:100CD00085724B015C0120E030E0A9010E944A725C +:100CE00020E030E040E05FE387FD05C0C501B401CE +:100CF0000E94536F04C0C501B4010E94526F0E944C +:100D00009B701B011D3411F40C942F0F24F4173425 +:100D100061F00C945B14103511F40C94C50F13356D +:100D200011F40C94E7130C945B14C756DF4F8881C1 +:100D3000C959D040C754DF4FA881B981C95BD040A1 +:100D4000A80FB11DCD01BAE94B16B8E05B0609F456 +:100D500016C160F4F4ED4F16F7E05F06D1F029E913 +:100D6000421628E0520609F440C0FAC53DE9431690 +:100D700038E0530609F451C3AEE94A16A8E05A0612 +:100D800009F436C5BCE94B16B8E05B0609F0E8C5C6 +:100D900049C21A821982E1E0F0E0EC0FFD1FFF93D7 +:100DA000EF932FE434E03F932F939F938F930E9410 +:100DB000F9730F900F900F900F900F900F901816DF +:100DC00019060CF03BC589819A8190938B10809312 +:100DD0008A1011E01093920D8091160D811148C573 +:100DE0000E94153E1093160D43C58E010B5E1F4FDA +:100DF0001F930F939E01275D3F4F3F932F937E01DB +:100E0000FDE3EF0EF11CFF92EF92CF55DF4F2881EB +:100E1000C15AD0402F93C056DF4F3881C05AD040BE +:100E20003F9329E132E03F932F939F938F930E944A +:100E3000F9730FB6F894DEBF0FBECDBF04970CF464 +:100E4000FDC4EF961CAE1DAE1EAE1FAEEF97E5962D +:100E50001CAE1DAE1EAE1FAEE597AB961CAE1DAE12 +:100E60001EAE1FAEAB97A1961CAE1DAE1EAE1FAE42 +:100E7000A1978CE0C456DF4FE881F981CC59D0406E +:100E800011928A95E9F7AE0145585F4F60E070E036 +:100E9000CE018F5A9F4F0E94D055882309F4E8C491 +:100EA000AE014F585F4F60E070E0C7010E94D0551F +:100EB000882309F4DDC4AE0149595F4F60E070E05A +:100EC000CE0189960E94D055882309F4D1C4AE0181 +:100ED000435A5F4F60E070E0C8010E94D0558823FC +:100EE00009F4C6C420E030E044EB52E4E5966CAD72 +:100EF0007DAD8EAD9FADE5970E94526F21EE3EE233 +:100F000045E652E40E9433706B017C01E5966CAFBC +:100F10007DAF8EAF9FAFE5970E943070EF968CAC9F +:100F20009DACAEACBFACEF97A50194010E94857259 +:100F300069837A838B839C83C701B6010E94E87220 +:100F40009B01AC01C501B4010E9485726D837E8353 +:100F50008F839887AB968CAD9DADAEADBFADAB9793 +:100F600089879A87AB87BC87A1962CAD3DAD4EADE6 +:100F70005FADA19700E0BE016F5F7F4F37C46596FC +:100F80001CAE1DAE1EAE1FAE659721961CAE1DAEEB +:100F90001EAE1FAE219721E030E02C0F3D1F3F9386 +:100FA0002F938E010B5E1F4F1F930F93C156DF4F80 +:100FB0003881CF59D0403F93C256DF4FA881CE59D8 +:100FC000D040AF9322E432E03F932F939F938F93CF +:100FD0000E94F9730FB6F894DEBF0FBECDBF039722 +:100FE0000CF42CC4AE014F5A5F4F60E070E0C801B2 +:100FF0000E94D055882309F43BC4AE01435C5F4F87 +:1010000060E070E0CE0101960E94D055882309F47B +:101010002FC43E01F9E26F0E711C8CE0D3011D92CA +:101020008A95E9F76091790D70917A0D80917B0D29 +:1010300090917C0D0E94CE7024EE38E34EE553E48F +:101040000E94337020916D0D30916E0D40916F0DA7 +:101050005091700D0E94536FCA55DF4F688379839A +:101060008A839B83C65AD04060917D0D70917E0D1E +:1010700080917F0D9091800D0E94CE7024EE38E318 +:101080004EE553E40E9433702091710D3091720D42 +:101090004091730D5091740D0E94536FC554DF4FF2 +:1010A000688379838A839B83CB5BD0406091810D79 +:1010B0007091820D8091830D9091840D0E94CE706D +:1010C00024EE38E34EE553E40E9433706B017C015B +:1010D00020E030E044EB52E46091750D7091760DA4 +:1010E0008091770D9091780D0E94526F9B01AC0119 +:1010F000C701B6010E94536F7B018C016F968EADC4 +:101100009FAD6F978130910509F450C00CF03FC03E +:10111000892B09F0A0C320E030E044EB52E465964F +:101120006CAD7DAD8EAD9FAD65970E94526F65969B +:101130006CAF7DAF8EAF9FAF6597FE01F1964F010B +:101140009E01235D3F4F5901DE0199966D017B01A0 +:101150008C01C554DF4F288139814A815B81CB5B8B +:10116000D040CA55DF4F688179818A819B81C65AF8 +:10117000D0400E947644A401B501C6010E94684295 +:1011800021962CAD3DAD4EAD5FAD2197E2C38230CF +:10119000910519F1039709F05EC365966CAD7DADBD +:1011A0008EAD9FAD65970E94F03E62C365966CADB3 +:1011B0007DAD8EAD9FAD6597FE01F1964F019E010D +:1011C000235D3F4F59016301C554DF4F28813981A9 +:1011D0004A815B81CB5BD04015C065962CAD3DAD9F +:1011E0004EAD5FAD6597CE01C1964C01DE019D9677 +:1011F0005D016301CA55DF4F688179818A819B81D6 +:10120000C65AD0400E947644A401B501C3010E9491 +:10121000684221962CAD3DAD4EAD5FAD219700E00B +:10122000B30199C38E010B5E1F4F1F930F937E0175 +:10123000B9E2EB0EF11CFF92EF926E01EDE3CE0EE0 +:10124000D11CDF92CF92CF55DF4FF881C15AD040E9 +:10125000FF93C056DF4F2881C05AD0402F932AE514 +:1012600032E03F932F939F938F930E94F9730FB6B1 +:10127000F894DEBF0FBECDBF04970CF4DFC2EF962B +:101280001CAE1DAE1EAE1FAEEF97E5961CAE1DAE9A +:101290001EAE1FAEE597AB961CAE1DAE1EAE1FAECA +:1012A000AB97A1961CAE1DAE1EAE1FAEA197AE01B0 +:1012B00045585F4F60E070E0CE018F5A9F4F0E940B +:1012C000D055882309F4D4C2AE014F585F4F60E077 +:1012D00070E0C6010E94D055882309F4C9C2AE014E +:1012E00049595F4F60E070E0C7010E94D0558823E4 +:1012F00009F4BEC2AE01435A5F4F60E070E0C8011E +:101300000E94D055882309F4B3C26091810D709179 +:10131000820D8091830D9091840D0E94CE70CA55EC +:10132000DF4F688379838A839B83C65AD04060915C +:101330007D0D70917E0D80917F0D9091800D0E94AA +:10134000CE70C554DF4F688379838A839B83CB5BE0 +:10135000D0406091790D70917A0D80917B0D9091C4 +:101360007C0D0E94CE70FE0139964F019E012B5FCD +:101370003F4F5901DE0111966D01CA55DF4FE880DC +:10138000F9800A811B81C65AD040C554DF4F28819D +:1013900039814A815B81CB5BD0400E945A45A401D0 +:1013A000B501C6010E946842EF962CAD3DAD4EAD31 +:1013B0005FADEF9769817A818B819C810E94536F29 +:1013C00069837A838B839C83E5962CAD3DAD4EADCE +:1013D0005FADE5976D817E818F8198850E94536F07 +:1013E0006D837E838F839887AB962CAD3DAD4EADDC +:1013F0005FADAB9769857A858B859C850E94536F1D +:1014000069877A878B879C87A1962CAD3DAD4EADC1 +:101410005FADA19700E0B601E9C1C156DF4FB881C9 +:10142000CF59D040BF93C256DF4FE881CE59D0404C +:10143000EF93CD55DF4FF881C35AD040FF93CE557F +:10144000DF4F2881C25AD0402F93CB55DF4F3881D0 +:10145000C55AD0403F93CC55DF4FA881C45AD040E5 +:10146000AF938E0105581F4F1F930F9329E132E070 +:101470003F932F939F938F930E94F9730FB6F89425 +:10148000DEBF0FBECDBF04970CF4D8C1CF56DF4FDF +:10149000188219821A821B82C159D040C357DF4F6C +:1014A000188219821A821B82CD58D040C757DF4F4D +:1014B000188219821A821B82C958D040CB57DF4F3D +:1014C000188219821A821B82C558D0408CE0C056FF +:1014D000DF4FA881B981C05AD0401D928A95E9F7A3 +:1014E000AE014F565F4F60E070E0C8010E94D055DA +:1014F000882309F4BDC1AE0143575F4F60E070E03F +:10150000CE018F589F4F0E94D055882309F4B0C157 +:10151000AE0147575F4F60E070E0CE0189599F4FA1 +:101520000E94D055882309F4A3C1AE014B575F4FE9 +:1015300060E070E0CE01835A9F4F0E94D05588230F +:1015400009F496C16091810D7091820D8091830D97 +:101550009091840D0E94CE70CA55DF4F68837983C5 +:101560008A839B83C65AD04020E030E044EB52E4AB +:101570006091750D7091760D8091770D9091780D39 +:101580000E94526F6B017C0124EE38E34EE553E478 +:10159000CA55DF4F688179818A819B81C65AD040C4 +:1015A0000E9433709B01AC01C701B6010E94536FCA +:1015B000C554DF4F688379838A839B83CB5BD0409C +:1015C00060917D0D70917E0D80917F0D9091800DC9 +:1015D0000E94CE70CB53DF4F688379838A839B83CD +:1015E000C55CD0406091790D70917A0D80917B0D32 +:1015F00090917C0D0E94CE70CD53DF4F88809980F2 +:10160000C35CD040F1E56F2E712C6C0E7D1EB4E0F2 +:101610006B0E711C5301FE01EF5AFF4F6F01CA554B +:10162000DF4FE880F9800A811B81C65AD040CB5336 +:10163000DF4F288139814A815B81C55CD0400E949F +:101640005A45CD53DF4F48815981C35CD040B30127 +:10165000C6010E94684265966CAD7DAD8EAD9FADB2 +:1016600065976996CCACDDACEEACFFAC69979B019D +:10167000AC010E9485724B015C01A7019601C70174 +:10168000B6010E9485729B01AC01C501B4010E94A4 +:10169000536F0E94F272CF56DF4F288139814A8101 +:1016A0005B81C159D0400E94536F6B017C01CF56C2 +:1016B000DF4F688379838A839B83C159D040C357A6 +:1016C000DF4F288139814A815B81CD58D040C55494 +:1016D000DF4F688179818A819B81CB5BD0400E94FA +:1016E000536F21EE3EE245E652E40E943370CA5544 +:1016F000DF4F688379838A839B83C65AD0400E94D8 +:1017000030709B01AC01C701B6010E9485724B018C +:101710005C0165966CAF7DAF8EAF9FAF6597CA5584 +:10172000DF4F688179818A819B81C65AD0400E94AF +:10173000E8729B01AC01C701B6010E9485726996EF +:101740006CAF7DAF8EAF9FAF6997C757DF4F2881D2 +:1017500039814A815B81C958D0406D966CAD7DADB1 +:101760008EAD9FAD6D970E94536F6D966CAF7DAF40 +:101770008EAF9FAF6D978E01035C1F4F24E045E055 +:10178000C501B4010E94D76C69966CAD7DAD8EAD7C +:101790009FAD69970451110924E045E00E94D76C80 +:1017A0006D966CAD7DAD8EAD9FAD6D9704511109F9 +:1017B00024E045E00E94D76CCF56DF4F68817981E5 +:1017C0008A819B81C159D0400451110924E045E030 +:1017D0000E94D76CCB57DF4F288139814A815B81CA +:1017E000C558D04000E0BE016F5A7F4F81E0B4C0C1 +:1017F00021E030E02C0F3D1F3F932F938E010B5EB5 +:101800001F4F1F930F937E0139E2E30EF11CFF92ED +:10181000EF926E01ADE3CA0ED11CDF92CF9223E8A6 +:1018200032E03F932F939F938F930E94F9730FB6EB +:10183000F894DEBF0FBECDBF049784F41F9281E001 +:101840008F938DE092E09F938F930E94AF330F9020 +:101850000F900F900F9082E390E084C0AE01455846 +:101860005F4F60E070E0C6010E94D055811103C057 +:1018700080E090E077C0AE014F585F4F60E070E0CD +:10188000C7010E94D055882399F3AE0149595F4F93 +:1018900060E070E0C8010E94D055882349F3AE0192 +:1018A000435A5F4F60E070E0CE0101960E94D05530 +:1018B0008823F1F220E030E044EB52E4EF966CAD87 +:1018C0007DAD8EAD9FADEF970E94526F7B018C0175 +:1018D000EF966CAF7DAF8EAF9FAFEF978CE0C056A9 +:1018E000DF4FA881B981C05AD0401D928A95E9F78F +:1018F000AB962CAD3DAD4EAD5FADAB97E5966CAD07 +:101900007DAD8EAD9FADE597CD53DF4F888099803B +:10191000C35CD040E1E56E2E712C6C0E7D1EB4E0F0 +:101920006B0E711C5301FE01EF5AFF4F6F010E94B5 +:101930007644CD53DF4F48815981C35CD040B30119 +:10194000C6010E946842A1962CAD3DAD4EAD5FAD83 +:10195000A19700E0B60180E00E94BA5690E002C074 +:1019600081E090E09C01215031092230310510F0D6 +:101970000C942F1FF8E24F16510409F414C280F59D +:1019800034E14316510498F481E14816510408F0FB +:1019900061C194E04916510409F474C008F4E3C02D +:1019A000BAE04B16510409F45EC00C94D41EECE16D +:1019B0004E16510409F457C038F426E1421651047A +:1019C00008F4A2C10C94D41E3EE14316510409F45C +:1019D0004AC086E24816510409F4C5C00C94D41ECE +:1019E0009DE34916510409F4D3C110F5B5E34B1634 +:1019F000510409F447C060F4FBE24F16510409F4A6 +:101A000095C121E34216510409F490C10C94D41EEF +:101A10003CE34316510410F00C94D41ECB54DF4F1A +:101A20008881C55BD040865380932B15A9E0AAC15D +:101A30008CE54816510460F49AE54916510408F003 +:101A40001FC1A0E54A16510409F49BC00C94D41E92 +:101A5000BCE54B16510439F0EFE54E16510408F47D +:101A60003CC10C94D41E2114310411F00C94E81ED6 +:101A7000C255DF4FF881CE5AD040FF2309F445C04C +:101A80000C94CA1E2CE14216510491F148F484E0F2 +:101A90004816510479F09AE049165104E1F08AC1E0 +:101AA000AEE14A165104D9F1B5E34B16510409F4DD +:101AB00056C080C181E054C0BFE14B16510408F00C +:101AC00042C0EAE04E16510441F4E1E0C255DF4F56 +:101AD000E883CE5AD04082E043C0FCE14F16510467 +:101AE00009F078C1F1E0C255DF4FF883CE5AD040FB +:101AF0002114310441F02AE02216310411F00C9433 +:101B0000D41E84E010C083E00EC0AEE14A1651043A +:101B100099F631E0C255DF4F3883CE5AD0402114B8 +:101B2000310449F485E080932415CA55DF4F1882AB +:101B3000C65AD0405AC18AE02816310411F00C94DC +:101B4000D41E86E0F0CF25E34216510411F00C9428 +:101B5000141F91E0C255DF4F9883CE5AD04087E0E2 +:101B60008093241527C1C255DF4FE881CE5AD0405B +:101B7000E1110C94CA1EF2E0C255DF4FF883CE5A31 +:101B8000D04022E04216510419F158F44114510496 +:101B9000D9F04A94452809F013C181E080932515B6 +:101BA0000FC196E249165104C1F0A0E54A1651044E +:101BB00009F44BC0B3E04B16510409F001C183E0B6 +:101BC0008093251531E09AC010922515E1E0ECC014 +:101BD00082E08093251521E088C08EE1281631042B +:101BE00001F180F4A4E12A16310411F00C94D41E02 +:101BF00084E080932515F1E0CA55DF4FF883C65A7B +:101C0000D040F3C0B8E22B163104A9F0E2E32E165F +:101C1000310411F00C94D41E87E08093251581E0E7 +:101C200039C085E08093251521E0CA55DF4F288310 +:101C3000C65AD040DAC086E08093251531E0CA55F7 +:101C4000DF4F3883C65AD040D0C088E08093251536 +:101C500091E062C0A2E14A16510441F0B3E14B1693 +:101C6000510449F010922915E2E09EC081E0809372 +:101C70002915F2E0A6C082E08093291522E035C044 +:101C800021143104B9F43AE54316510449F4109291 +:101C9000281583E0CA55DF4F8883C65AD040A5C0B7 +:101CA00081E08093281593E0CA55DF4F9883C65A88 +:101CB000D0409BC0AAE02A16310411F00C94D41E27 +:101CC000BAE54B16510411F40C94D41EE4E0CA5545 +:101CD000DF4FE883C65AD04088C0FDE54F16510457 +:101CE00051F481E08093261525E0CA55DF4F288303 +:101CF000C65AD0406BC01092261535E0CA55DF4F4A +:101D00003883C65AD04062C084E14816510451F469 +:101D100081E08093271596E0CA55DF4F9883C65A15 +:101D2000D04054C010922715A6E02CC0C255DF4FFA +:101D3000B881CE5AD040B1110C94CA1EE1E34E16C0 +:101D4000510451F410922A15F8E0CA55DF4FF88378 +:101D5000C65AD04023E044C03AE02316310411F0C3 +:101D60000C94D41E81E080932A1588E0CA55DF4F79 +:101D70008883C65AD04093E0C255DF4F9883CE5A2D +:101D8000D04033C0CA55DF4FA883C65AD0401EC0CA +:101D9000232811F00C94D41EBAE0CA55DF4FB88343 +:101DA000C65AD04022C0E7E0CA55DF4FE883C65A82 +:101DB000D0400CC0CA55DF4F1882C65AD04006C06A +:101DC000F1E0CA55DF4FF883C65AD040232869F0A6 +:101DD0000C94FB1ECA55DF4F1882C65AD04021E032 +:101DE000C255DF4F2883CE5AD040C155DF4FE8811E +:101DF000F981CF5AD040CF01A0E0B0E0CA55DF4F03 +:101E00000880C65AD04004C0B695A7959795879587 +:101E10000A94D2F780FF03C085E10C942F1F81E064 +:101E200090E0A0E0B0E0CA55DF4F0880C65AD0402D +:101E300004C0880F991FAA1FBB1F0A94D2F7C1556F +:101E4000DF4F28813981CF5AD040282B392BC155FB +:101E5000DF4F39832883CF5AD0400C940C06672B70 +:101E600011F00C94FB1EC756DF4F8881C959D04032 +:101E7000C754DF4F68817981C95BD040680F711DFD +:101E8000AE0147565F4FCB54DF4F88819981C55BC8 +:101E9000D0400E94491F9C01215031092230310558 +:101EA00010F00C942F1F36E04316510428F483E001 +:101EB0004816510490F026C098E04916510410F4D9 +:101EC0000C94D41EAAE04A16510408F440C0BEE1A6 +:101ED0004B16510411F00C94D41EE2E04E1651043E +:101EE00061F0FEE14F16510441F0452809F046C06B +:101EF00081E080932C152BE032C082E080932C157A +:101F00003BE036C084E04816510471F095E0491674 +:101F10005104A1F081E080932E15ACE0CA55DF4F4B +:101F2000A883C65AD04022C482E080932E15BCE01C +:101F3000CA55DF4FB883C65AD04018C410922E1528 +:101F4000ECE0CA55DF4FE883C65AD0400FC4F9E031 +:101F50004F16510451F082E080932D152DE0CA55A3 +:101F6000DF4F2883C65AD04001C410922D153DE0A2 +:101F7000CA55DF4F3883C65AD040F8C38BE0CA55E4 +:101F8000DF4F8883C65AD040F1C3672B11F00C9401 +:101F9000FB1EC756DF4F8881C959D040C754DF4F59 +:101FA000E881F981C95BD040E80FF11D27EB4216AB +:101FB00028E0520609F4E7C208F05EC18CE9481631 +:101FC00088E0580609F499C108F076C0A9E94A16D4 +:101FD000A8E05A0609F48BC108F05FC0E8E94E1684 +:101FE000E8E05E0609F0B8C384E16E0199E2C90E2B +:101FF000D11CD601E82F1D92EA95E9F77E01F5E1A3 +:10200000EF0EF11CD701E82F1D92EA95E9F7C456AF +:10201000DF4FA881B981CC59D0401D928A95E9F74C +:1020200080E090E00E940147CB54DF4F68837983C2 +:102030008A839B83C55BD04081E090E00E9401478A +:102040002B013C0182E090E00E9401474B015C01C2 +:10205000860124E045E0CB54DF4F688179818A8195 +:102060009B81C55BD0400E94D76C870124E045E08E +:10207000C301B2010E94D76C0451110924E045E06C +:10208000C501B4010E94D76CFF92EF92DF92CF920C +:102090001F930F938CEA92E03DC3FAE94F16F8E0E4 +:1020A0005F0609F427C12BE9421628E0520609F021 +:1020B00053C389EC92E023C13EE9431638E053064E +:1020C00009F427C108F420C19CEA491698E0590692 +:1020D00009F4B5C1ADEA4A16A8E05A0609F03CC3B6 +:1020E000A1961CAE1DAE1EAE1FAEA19765961CAE8E +:1020F0001DAE1EAE1FAE659721961CAE1DAE1EAE68 +:102100001FAE219784E1DE019996C656DF4FB98351 +:10211000A883CA59D040E82F1D92EA95E9F71E011D +:10212000F5E12F0E311CD101E82F1D92EA95E9F758 +:10213000C456DF4FA881B981CC59D0401D928A95F1 +:10214000E9F780E090E00E940147CB54DF4F6883BD +:1021500079838A839B83C55BD04081E090E00E94B5 +:102160000147C554DF4F688379838A839B83CB5BA8 +:10217000D04082E090E00E94014720E030E044EB54 +:1021800052E40E94526F2B013C01FE01FD964F016B +:102190009E012F5A3F4F5901CE01835A9F4F6C0128 +:1021A00083017201C554DF4F288139814A815B81E7 +:1021B000CB5BD040CB54DF4F688179818A819B8192 +:1021C000C55BD0400E947644A401B501C6010E94BF +:1021D0006842A1966CAD7DAD8EAD9FADA197659621 +:1021E000CCACDDACEEACFFAC65979B01AC010E94C2 +:1021F00085724B015C01A7019601C701B6010E94DF +:1022000085729B01AC01C501B4010E94536F0E940D +:10221000F2728E01075D1F4F24E045E00E94D76CEB +:1022200020E030E044EB52E4C301B2010E94536F5E +:10223000810124E045E00E94D76C21966CAD7DAD14 +:102240008EAD9FAD21970451110924E045E00E9415 +:10225000D76C1F930F933F922F92C556DF4FB881D3 +:10226000CB59D040BF93C656DF4FE881CA59D04002 +:10227000EF938BEE92E04EC2B0EC4B16B8E05B06EB +:1022800009F4ADC1D0F439EB431638E0530609F434 +:1022900091C108F484C19AEB491698E0590609F4F3 +:1022A00091C1ABEB4A16A8E05A0609F055C28091DD +:1022B000020185FB882780F990C1B2EC4B16B8E08B +:1022C0005B0609F4FDC108F4CCC133EC431638E0D9 +:1022D000530609F407C280E6481689E0580609F05B +:1022E0003BC28091600D8F9380915F0D21C28AEB7C +:1022F00092E005C08CE890E102C080ED92E09F93EF +:102300008F9384EC92E017C28AE19DE09F938F93B4 +:1023100093C080818E3409F0C8C18181805384309C +:1023200008F0C3C194E16E013DE3C30ED11CD60198 +:10233000E92F1D92EA95E9F77E01F9E2EF0EF11C13 +:10234000D701E92F1D92EA95E9F75E01F5E1AF0E9D +:10235000B11CD501E92F1D92EA95E9F7C456DF4F6C +:10236000A881B981CC59D0401D929A95E9F7823065 +:10237000E1F0833031F1813061F082E090E00E9441 +:102380000147850124E045E00E94D76CBF92AF92DF +:1023900053C080E090E00E940147860124E045E0C0 +:1023A0000E94D76CDF92CF9247C081E090E00E94FC +:1023B0000147870124E045E00E94D76CFF92EF922D +:1023C0003BC080915F0D9091600D0497029748F497 +:1023D000609186107091871080918810909189107B +:1023E00022C020E030E040E05FE3609100027091A5 +:1023F000010280910202909103020E94526F20E03C +:1024000030E040E05FE30E94857220E030E044E38A +:1024100053E40E9485729B01AC0160E070E084E3AC +:1024200093E40E94526F8E010F5F1F4F24E045E03E +:102430000E94D76C1F930F9387ED92E07CC1A19609 +:102440001CAE1DAE1EAE1FAEA19765961CAE1DAE96 +:102450001EAE1FAE659721961CAE1DAE1EAE1FAE02 +:10246000219784E19E01275D3F4FC656DF4F398398 +:102470002883CA59D040D901E82F1D92EA95E9F77F +:102480001E01F5E12F0E311CD101E82F1D92EA95B6 +:10249000E9F7C456DF4FA881B981CC59D0401D92CD +:1024A0008A95E9F780E090E00E9401472B013C010A +:1024B00081E090E00E940147CB54DF4F688379832D +:1024C0008A839B83C55BD04082E090E00E940147F5 +:1024D00020E030E044EB52E40E94526FFE01FD9692 +:1024E0004F019E012F5A3F4F5901DE01A35ABF4FA2 +:1024F0006D017B018C01CB54DF4F288139814A81EA +:102500005B81C55BD040C301B2010E947644A40147 +:10251000B501C6010E946842A1966CAD7DAD8EAD3D +:102520009FADA1978E01075D1F4F24E045E00E94FB +:10253000D76C65966CAD7DAD8EAD9FAD6597810115 +:1025400024E045E00E94D76C21966CAD7DAD8EAD48 +:102550009FAD21970451110924E045E00E94D76CFA +:102560001F930F933F922F92C556DF4FF881CB599F +:10257000D040FF93C656DF4F2881CA59D0402F93D1 +:102580008DED92E0C7C0A49B11C08FE30E94F85468 +:102590008A30910558F08734910550F005C047996D +:1025A00005C00898009B04C081E017C080E015C0FA +:1025B00082E013C082B386958695869591E089273F +:1025C00081700BC08BE30E94F85421E085369105A1 +:1025D00008F420E01F922F93ACC01F92A9C081E0A5 +:1025E00090E08C0F9D1F9F938F9389EF92E09F93B4 +:1025F0008F93FF93EF930E94F9730F900F900F90BA +:102600000F900F900F90181619060CF041C02981F9 +:102610003A812634310508F048C0F901EA57F54FF0 +:102620008491F901E05CF54F1491F901E650F64F01 +:102630000491002391F081110E947454E02FF0E086 +:10264000EE0FFF1FEE5EFC4FA591B491EC911E239F +:1026500081E090E021F480E002C080E090E09F9370 +:1026600067C0A1E0B0E0AC0FBD1FBF93AF9389EF8F +:1026700092E09F938F93FF93EF930E94F9730F90D3 +:102680000F900F900F900F900F901816190684F06E +:102690001F9281E08F938DE092E09F938F930E9431 +:1026A000AF330F900F900F900F9082E390E056C0E1 +:1026B00089819A8180319105C0F70E94F854CFCF6B +:1026C00080915E0D8F9380915D0D8F9380915C0D55 +:1026D0008F9380915B0D8F9380915A0D8F93809192 +:1026E000590D15C080E090E00E94AF46182F092FC9 +:1026F00081E090E00E94AF46F82EE92E82E090E063 +:102700000E94AF46EF92FF920F931F939F938F9378 +:102710008DEF92E09F938F9387E29DE09F938F933D +:102720000E94CB730FB6F894DEBF0FBECDBF11C0B1 +:102730008F9383EB93E09F938F9387E29DE09F932A +:102740008F930E94CB730F900F900F900F900F906C +:102750000F9080E090E002C081E090E09C01215069 +:1027600031092230310510F00C942F1FC155DF4F75 +:10277000E881F981CF5AD040CF01A0E0B0E0CA553E +:10278000DF4F0880C65AD04004C0B695A7959795EC +:1027900087950A94D2F780FD3FCB81E090E0A0E0DE +:1027A000B0E0CA55DF4F0880C65AD04004C0880F39 +:1027B000991FAA1FBB1F0A94D2F7E82BF92BC1550A +:1027C000DF4FF983E883CF5AD0400C940C06672B77 +:1027D00011F00C94FB1EF8EE4F16F3E05F0641F08B +:1027E0002CE4421624E0520649F50E94905623C07C +:1027F000C756DF4F8881C959D040C754DF4FE881A1 +:10280000F981C95BD040E80FF11D80818635C9F49C +:10281000818180538230A8F49FB7813029F0F894E9 +:102820008091B514886004C0F8948091B5148260DA +:102830008093B5149FBF80E090E005C081E090E0F8 +:1028400002C082E390E09C01215031092230310521 +:1028500010F00C942F1FC155DF4FE881F981CF5A3A +:10286000D040CF01A0E0B0E0CA55DF4F0880C65A83 +:10287000D04004C0B695A795979587950A94D2F74E +:1028800080FDCACA81E090E0A0E0B0E0CA55DF4F09 +:102890000880C65AD04004C0880F991FAA1FBB1FCA +:1028A0000A94D2F7E82BF92BC155DF4FF983E8835F +:1028B000CF5AD04095C0812F110F990BAA0BBB0B9B +:1028C000FC01E654F109E531F10510F00C94D41E39 +:1028D0008827EE58FF4F8F4F0C949873C0922F1596 +:1028E000D0923015E0923115F0923215CA55DF4F73 +:1028F0001882C65AD040DAC0C0923315D09234152F +:10290000E0923515F0923615C154DF4FF881CF5B58 +:10291000D040F160C154DF4FF883CF5BD04021E05D +:102920004FC0C0923715D0923815E0923915F09209 +:102930003A15C154DF4F3881CF5BD0403260C1546B +:10294000DF4F3883CF5BD04082E05BC0C0923B1545 +:10295000D0923C15E0923D15F0923E15C154DF4FE8 +:102960009881CF5BD0409460C154DF4F9883CF5B98 +:10297000D040A3E060C0CB54DF4FB881C55BD040EE +:10298000B0933F15E4E071C0C701B6010E949B708F +:1029900060934015709341158093421590934315B1 +:1029A000F5E0CA55DF4FF883C65AD0407FC0C092C9 +:1029B0004415D0924515E0924615F092471526E051 +:1029C000CA55DF4F2883C65AD04070C0C092481500 +:1029D000D0924915E0924A15F0924B1537E061C04C +:1029E000CB56DF4F88819981AA81BB81C559D040E0 +:1029F00080934C1590934D15A0934E15B0934F15A1 +:102A000088E0CA55DF4F8883C65AD0404FC0C09275 +:102A10005115D0925215E0925315F0925415C655A7 +:102A2000DF4F9881CA5AD0409160C655DF4F9883D6 +:102A3000CA5AD040AAE0CA55DF4FA883C65AD04030 +:102A400035C0C0925515D0925615E0925715F092A8 +:102A50005815C655DF4FB881CA5AD040B260C65526 +:102A6000DF4FB883CA5AD040EBE0CA55DF4FE88346 +:102A7000C65AD0401BC0C0925915D0925A15E09248 +:102A80005B15F0925C15C655DF4FF881CA5AD040ED +:102A9000F460C655DF4FF883CA5AD0402CE090CF7F +:102AA00039E0CA55DF4F3883C65AD040CA55DF4F88 +:102AB0008881C65AD040082FCD54DF4FE881F98174 +:102AC000C35BD040CF01A0E0B0E0CA55DF4F088023 +:102AD000C65AD04004C0B695A795979587950A9495 +:102AE000D2F780FF02C00C94CC1E81E693E0A0E0F8 +:102AF000B0E0CA55DF4F0880C65AD04004C0B69532 +:102B0000A795979587950A94D2F780FF11C020E08A +:102B100030E0A901CB56DF4F688179818A819B81A2 +:102B2000C559D0400E942C7087FF02C00C94CE1E65 +:102B300081E090E0A0E0B0E004C0880F991FAA1FD8 +:102B4000BB1F0A95D2F7CD54DF4F28813981C35B73 +:102B5000D040282B392BCD54DF4F39832883C35BDA +:102B6000D0400C940C06C655DF4F3881CA5AD0406D +:102B7000332369F0C255DF4F8881CE5AD04081118E +:102B800006C092E0C255DF4F9883CE5AD040CD5454 +:102B9000DF4FA881C35BD040A5FF0FC080914015D7 +:102BA00090914115A0914215B091431580389649F6 +:102BB000A849B10514F00C94D01E809126158130DF +:102BC00091F4C255DF4FF881CE5AD040F23009F06F +:102BD00040C0CD54DF4F2881C35BD04020FD02C0F0 +:102BE0000C94DA1E36C080915E15811132C0CD542E +:102BF000DF4F3881C35BD04030FF1BC08091271569 +:102C0000813039F523E333E34BEC51E460912F1528 +:102C10007091301580913115909132150E94857216 +:102C200060932F1570933015809331159093321562 +:102C300010C080916B1590916C15A0916D15B0919D +:102C40006E1580932F1590933015A0933115B09386 +:102C50003215CD54DF4F88819981C35BD04090FD00 +:102C600010C08091671590916815A0916915B09179 +:102C70006A1580934C1590934D15A0934E15B09303 +:102C80004F15809124158130B9F4CD54DF4F9881D0 +:102C9000C35BD04096FD03C08CE10C942F1FCD5434 +:102CA000DF4FA881B981C35BD040AF7BCD54DF4FEC +:102CB000B983A883C35BD040809129158823A1F0F4 +:102CC000813021F1CB54DF4F1882C55BD040F2E058 +:102CD000C754DF4FF883C95BD04021E0CA55DF4FAE +:102CE0002883C65AD04023C0B2E0CB54DF4FB8830C +:102CF000C55BD040E1E0C754DF4FE883C95BD040FB +:102D0000CA55DF4F1882C65AD04011C031E0CB54AB +:102D1000DF4F3883C55BD040C754DF4F1882C95B93 +:102D2000D04082E0CA55DF4F8883C65AD040809198 +:102D30002715813049F0C255DF4F9881CE5AD040D7 +:102D4000933009F043C036C0B4E2EB2EB5E1FB2E60 +:102D500000E010E0C655DF4FA881CA5AD0408A2E45 +:102D6000912CA12CB12CD501C401002E04C0B69524 +:102D7000A795979587950A94D2F780FF12C023E311 +:102D800033E34BEC51E4F70165A576A587A590A93F +:102D90000E948572D7019D966D937D938D939C9330 +:102DA000D0970F5F1F4FB4E0EB0EF11C03301105FD +:102DB000D1F6C1CF80912A15813041F4C655DF4F3D +:102DC000E881CA5AD040E43009F0ECC78CE0E0E872 +:102DD000F5E1DE01119601900D928A95E1F7C1555A +:102DE000DF4F28813981CF5AD04031FD08C0109182 +:102DF00024151230C1F0183009F4EAC058C180918E +:102E00002B15873018F08DE10C942F1F90916315CE +:102E1000891769F3BE016F5F7F4F0E94452E88239B +:102E200009F4D4C7E4CFC655DF4F3881CA5AD04021 +:102E3000311103C08AE10C942F1FCD54DF4F8881DC +:102E40009981C35BD04080759927892B09F424CFE1 +:102E500060914415709145158091461590914715E4 +:102E60000E9433730E94A070673068F680913F150E +:102E7000843151F0823009F097C7CD54DF4F8881FB +:102E8000C35BD04087FD90C7CD54DF4FA881B98187 +:102E9000C35BD040AF7ACD54DF4FB983A883C35B07 +:102EA000D040662321F022242A94260E02C02090CE +:102EB0002B15BE016B5E7F4F822D0E94452E88230D +:102EC00009F484C730903F1580909815909099151B +:102ED000A0909A15B0909B15A4E2CA2EA5E1DA2E17 +:102EE0008E010B5E1F4FEDE5F5E1C155DF4FF98314 +:102EF000E883CF5AD040E12CF12CC655DF4FF88142 +:102F0000CA5AD0404F2E512C612C712CD301C201D2 +:102F10000E2C04C0B695A795979587950A94D2F77D +:102F200080FF3BC024E132122EC0C155DF4FA88183 +:102F3000B981CF5AD0409F962D913D914D915C9192 +:102F4000D29757966D917D918D919C915A970E9441 +:102F5000526FF60125A536A547A550A90E94526FCC +:102F6000D8016D937D938D939C931397B2E0EB12F0 +:102F700014C0A50194010E94526FF801608371830F +:102F8000828393830AC0F60185A596A5A7A5B0A95B +:102F9000F80180839183A283B383FFEFEF1AFF0AC6 +:102FA00024E0C20ED11C0C5F1F4FC155DF4F88813A +:102FB0009981CF5AD0400496C155DF4F99838883B9 +:102FC000CF5AD04093E0E916F10409F09FCF4CC1ED +:102FD000C655DF4FA881CA5AD040AA2309F42ACF88 +:102FE0008090981590909915A0909A15B0909B1587 +:102FF000FDE5CF2EF5E1DF2EFE0131961F0104E243 +:1030000015E1E12CF12C4A2E512C612C712CD301AD +:10301000C2010E2C04C0B695A795979587950A9482 +:10302000D2F780FF29C0D1012D913D914D915C9146 +:10303000F6016789708D818D928D0E94526FD80143 +:103040009D962D913D914D915C91D0970E94526F2C +:10305000F80165A776A787A790ABF2E0EF1216C03C +:10306000A50194010E94526FD8019D966D937D93A6 +:103070008D939C93D0970AC0F60187A590A9A1A92A +:10308000B2A9F80185A796A7A7A7B0ABFFEFEF1AE3 +:10309000FF0A24E0C20ED11C34E0230E311C0C5F69 +:1030A0001F4F83E0E816F10409F0B1CFDCC0C25530 +:1030B000DF4F9881CE5AD040933009F49DC0C65559 +:1030C000DF4FA881CA5AD040AA2309F4C2C0009198 +:1030D0002815409098155090991560909A15709009 +:1030E0009B157DE5A72E75E1B72EE4E2EE2EE5E116 +:1030F000FE2EFE0131964F01C12CD12C8A2F90E07B +:10310000A0E0B0E0C155DF4F88839983AA83BB83D9 +:10311000CF5AD040C155DF4F88819981AA81BB81A8 +:10312000CF5AD0400C2C04C0B695A795979587959B +:103130000A94D2F780FD0BC0F5018789908DA18D8F +:10314000B28DF70185A796A7A7A7B0AB43C01730EC +:1031500009F440C001112BC0D5019F962D913D91DE +:103160004D915C91D297F40160817181828193814C +:103170000E94536FD7019D962D913D914D915C9189 +:10318000D0970E94536FF70165A776A787A790ABEA +:10319000F2E0CF121FC0A30192010E94536FD7012A +:1031A0009D966D937D938D939C93D09713C0F5015D +:1031B0002789308D418D528DD7019D966D917D91DE +:1031C0008D919C91D0970E94536FF70165A776A7C8 +:1031D00087A790ABFFEFCF1ADF0A24E0A20EB11C45 +:1031E00034E0E30EF11C84E0880E911C93E0C916D4 +:1031F000D10409F08FCF29C61530A9F0173071F12D +:10320000133089F5C655DF4FA881CA5AD040A111A5 +:1032100005C0C255DF4F1882CE5AD040BE016B5E4A +:103220007F4F86E010C0C655DF4FB881CA5AD040E4 +:10323000B11105C0C255DF4F1882CE5AD040BE0131 +:103240006B5E7F4F87E00E94452E882309F4BEC540 +:103250000AC0153079F3173009F0F3C580912515B0 +:10326000823008F0A3C5212C30902515E8E03E12ED +:1032700011C0C655DF4FF881CA5AD040FF2309F468 +:1032800005C3C255DF4F2881CE5AD040213009F006 +:103290008FC511C3C255DF4F3881CE5AD04032306E +:1032A00009F0F4C2311009C0C655DF4F8881CA5AEF +:1032B000D040882309F4F1C2FEC220E030E0A90129 +:1032C00060912F15709130158091311590913215C4 +:1032D0000E942C70882309F46DC593E0931538F093 +:1032E000A2E03A1690F4B1E03B1631F0E4C2E7E018 +:1032F000E31508F0BEC2DFC2C655DF4FF881CA5AD7 +:10330000D040FF2309F4C9C2D6C2C655DF4F288179 +:10331000CA5AD040222309F48DCDCA55DF4F988177 +:10332000C65AD040892F90E0C155DF4F99838883DA +:10333000CF5AD040C754DF4FB881C95BD040AB2FC4 +:10334000B0E0CD53DF4FB983A883C35CD04081E0A8 +:1033500090E0A0E0B0E06C017D01CA55DF4F08802D +:10336000C65AD04004C0CC0CDD1CEE1CFF1C0A94D5 +:10337000D2F7C754DF4F0880C95BD04004C0880F24 +:10338000991FAA1FBB1F0A94D2F7C82AD92AEA2A72 +:10339000FB2A822F90E0A0E0B0E08C219D21AE219D +:1033A000BF21892B8A2B8B2B09F406C5C155DF4F12 +:1033B00088819981CF5AD040880F991F880F991F13 +:1033C000FC01EC5DFA4EDC01A35ABA4E57962D91E2 +:1033D0003D914D915C915A9765A576A587A590A9D9 +:1033E0000E94526F4B015C01CD53DF4F8881998160 +:1033F000C35CD040880F991F880F991FFC01EC5DBA +:10340000FA4EDC01A35ABA4E57962D913D914D913B +:103410005C915A9765A576A587A590A90E94526FE1 +:10342000C655DF4F688379838A839B83CA5AD0400D +:10343000CD54DF4F08811981C35BD040007811273C +:10344000CD54DF4FE881C35BD040E7FF15C1CD54B9 +:10345000DF4F28813981C35BD0402F77CD54DF4FB8 +:1034600039832883C35BD0400E947169882311F09F +:1034700081E2F5C4809127158130B1F423E333E371 +:103480004BEC51E4609148157091491580914A15B3 +:1034900090914B150E948572609348157093491561 +:1034A00080934A1590934B154090481550904915BC +:1034B00060904A1570904B15A5019401C501B401A7 +:1034C0000E948572C154DF4F688379838A839B830E +:1034D000CF5BD040C655DF4F288139814A815B815F +:1034E000CA5AD040CA01B9010E948572C554DF4F43 +:1034F000688379838A839B83CB5BD04020E030E074 +:1035000040E850E4C301B2010E948572A301920118 +:103510000E948572C154DF4F288139814A815B81C5 +:10352000CF5BD0400E94526FC554DF4F2881398154 +:103530004A815B81CB5BD0400E94526F6B017C0162 +:1035400020E030E0A9010E942C7087FD37C4C7013C +:10355000B6010E94F2726B017C01C554DF4F2881D5 +:1035600039814A815B81CB5BD040C154DF4F688198 +:1035700079818A819B81CF5BD0400E94536F0E94EA +:10358000F2729B01AC01C701B60190580E943370E2 +:103590006B017C0133E0331204C0F7FAF094F7F8C2 +:1035A000F09420E030E0A901C301B2010E942C7028 +:1035B00087FF0FC0F7FAF094F7F8F094D301C20137 +:1035C000B0588093481590934915A0934A15B0932D +:1035D0004B15C155DF4F08811981CF5AD040000FDC +:1035E000111F000F111F085D1A4EC655DF4F2881AD +:1035F00039814A815B81CA5AD040C701B6010E9415 +:1036000085729B01AC01C501B4010E94526F20E09C +:1036100030E040E05FE30E948572D8011B966D9315 +:103620007D938D939C931E97CD53DF4F0881198115 +:10363000C35CD040000F111F000F111F085D1A4E10 +:10364000A5019401C701B6010E948572C655DF4FDE +:10365000288139814A815B81CA5AD0400E94536FC8 +:1036600020E030E040E05FE30E948572F80163876C +:103670007487858796871FC1C154DF4FF881CF5B60 +:10368000D0404F2E512C612C712CC420D520E62027 +:10369000F720CD28CE28CF2809F492C3CD54DF4F90 +:1036A00028813981C35BD040217FCD54DF4F3983DE +:1036B0002883C35BD04080912715813009F491C0E5 +:1036C000C155DF4FE881F981CF5AD040EE0FFF1F7F +:1036D000EE0FFF1FE85DFA4EC384D484E584F684C0 +:1036E000A7019601C501B4010E94526F2B013C0154 +:1036F000CD53DF4FE881F981C35CD040EE0FFF1F4F +:10370000EE0FFF1FE85DFA4E83859485A585B6858B +:10371000C155DF4F88839983AA83BB83CF5AD0409A +:103720009C01AD01C655DF4F688179818A819B81FB +:10373000CA5AD0400E94526F4B015C01A301920112 +:10374000C301B2010E9485722B013C01A5019401C5 +:10375000C501B4010E9485729B01AC01C301B20195 +:103760000E94536F0E94F2724B015C01A701960107 +:10377000C701B6010E9485726B017C01C155DF4F04 +:10378000288139814A815B81CF5AD040CA01B90171 +:103790000E9485729B01AC01C701B6010E94536F64 +:1037A0000E94F2726B017C01609348157093491579 +:1037B00080934A1590934B159B01AC01C501B40150 +:1037C0000E94526F4B015C01E894B7F82AE037ED94 +:1037D00043EA5BE3C501B4010E944A72181664F122 +:1037E0006AC084E2E82E85E1F82ED301C201002EE2 +:1037F00004C0B695A795979587950A94D2F780FF50 +:1038000012C023E333E34BEC51E4D7011F966D91D3 +:103810007D918D919C9152970E948572F7016787E7 +:10382000708B818B928B0F5F1F4FF4E0EF0EF11CBA +:1038300003301105D1F644CF20E030E040E05FE3F3 +:10384000C501B4010E944A7218160CF411CE2FE67D +:1038500032E143E85AE3C701B6010E9485729B0139 +:10386000AC01C501B4010E944A7218160CF400CED6 +:1038700022C0C655DF4F2881CA5AD040222309F4FE +:10388000D9CA0E9471698111F3CD15C0C255DF4FAD +:103890003881CE5AD04031110EC0CD54DF4F8881CF +:1038A0009981C35BD0408E7D9C7FC255DF4F1882CB +:1038B000CE5AD04008C0CD54DF4F88819981C35B78 +:1038C000D0408E7D907E892B09F07CC2809140157E +:1038D00090914115A0914215B091431580937015B8 +:1038E00090937115A0937215B0937315809126155E +:1038F00080935E1580912F1590913015A091311510 +:10390000B091321580936B1590936C15A0936D1543 +:10391000B0936E15C0904C15D0904D15E0904E159B +:10392000F0904F15A7019601609167157091681589 +:103930008091691590916A150E942C708823F9F086 +:1039400010916615112359F080910715823039F0D6 +:103950000E945469B701A601812F0E94D72C809143 +:103960004C1590914D15A0914E15B0914F15809327 +:10397000671590936815A0936915B0936A158091A7 +:10398000501580936F1510912E1580916615811733 +:10399000B9F080910715823079F0C0906715D0900A +:1039A0006815E0906915F0906A150E945469B70196 +:1039B000A601812F0E94D72C80912E158093661529 +:1039C00010912D1580916515811781F08091071553 +:1039D000823041F00E945469123011F45C9A02C0A6 +:1039E0000E94BF5D80912D158093651580912415EF +:1039F000813089F080912915809361158091271578 +:103A000080935F15C255DF4F8881CE5AD0408330F6 +:103A100009F074C054C080910715823059F380902A +:103A2000441590904515A0904615B090471520E09C +:103A300030E040EA51E4C501B4010E9485720E9461 +:103A400009710E94A0706B017C010E94546920E002 +:103A500030E04AE754E4C501B4010E9485724B018D +:103A60005C0182E38C9DB0018D9D700D112480E07E +:103A700090E00E94CC709B01AC01C501B4010E9492 +:103A8000526F0E9409710E94A070CB010E944F39B1 +:103A900086010115110509F4ADCF0E945A39015074 +:103AA0001109809106158111A5CF9FEFA0E7B2E023 +:103AB0009150A040B040E1F700C00000EACF8091F3 +:103AC0002A1580936215813089F48091591590915F +:103AD0005A15A0915B15B0915C1580939815909341 +:103AE0009915A0939A15B0939B1508C0109298153C +:103AF0001092991510929A1510929B1580912B1582 +:103B000090916315981759F0809363158CE0FE012E +:103B10003196A0E8B5E101900D928A95E1F7809188 +:103B2000281580936015E09124158E2F90E0FC01FC +:103B30003297E830F10508F060C08827E957FF4F59 +:103B40008F4F0C949873BE016B5E7F4F822D0E9445 +:103B50003C2E80916315281250C08CE0FE017596B2 +:103B6000A0E8B5E13EC0C255DF4FE881CE5AD04053 +:103B7000EE2371F020916B1530916C1540916D150D +:103B800050916E1500E061E575E181E00E94BA5642 +:103B900020916B1530916C1540916D1550916E15FB +:103BA00000E0BE016B5E7F4F81E00E94BA56182F85 +:103BB0008CE0FE017596A4E7B5E101900D928A951F +:103BC000E1F71CC064E775E186E003C064E775E1D6 +:103BD00087E00E943C2E11C08CE0E1E5F5E1ACE805 +:103BE000B5E101900D928A95E1F707C08CE0ECE811 +:103BF000F5E1DF011D928A95E9F710E08091251526 +:103C000080935D15883009F470C0C255DF4FB881CC +:103C1000CE5AD040B23009F068C090E088309105AB +:103C200008F05AC0FC0140906B1550906C156090E4 +:103C30006D1570906E158827E157FF4F8F4F0C94CC +:103C4000987300E0A301920161E575E180E007C08F +:103C500000915E15A301920161E575E181E00E948A +:103C6000BA56182F39C06091481570914915809146 +:103C70004A1590914B158824839409C0609148158A +:103C80007091491580914A1590914B15812CCB5418 +:103C9000DF4FA880C55BD040C754DF4FC880C95BE9 +:103CA000D040CA55DF4FE880C65AD04000915E151B +:103CB000A30192010E94456A0FC000E001C001E02B +:103CC00020E004C000E001C001E021E040915E1569 +:103CD000C301B2010E94AF698CE0E1E5F5E1A4E720 +:103CE000B5E101900D928A95E1F780912C158093B2 +:103CF0006415882309F468C00E9454699091641582 +:103D000080910715913069F48230E9F19FB7F894FA +:103D10008091B51488608093B5149FBF0E945A3972 +:103D200032C091E090935D1510926115109260156C +:103D300010925E151092631510926615109265151B +:103D40008230A9F0BE016F5F7F4F80E00E94452E58 +:103D50008823E1F18CE0FE013196A0E8B5E1019005 +:103D60000D928A95E1F70E94D02C0E94BF5D80EDF4 +:103D700099E00E940A3484E799E00E940A348DE5B4 +:103D800099E00E940A34109264151EC081E067C059 +:103D900082E065C088E163C089E161C084E05FC002 +:103DA0008BE15DC085E25BC084E159C08EE157C004 +:103DB0008FE155C086E153C080E251C082E24FC01E +:103DC00083E24DC084E24BC0812F49C087E047C0E9 +:103DD000EEE14E16510411F40C948F0D70F42AE0AC +:103DE0004216510411F40C946B0D3CE1431651043E +:103DF00011F40C94780D87E132C085E34816510424 +:103E000011F40C94AF0D9CE549165104A1F721144F +:103E1000310439F0BAE02B16310431F689E00C9404 +:103E2000930D88E00C94930D3CE54316510411F07A +:103E30000C94EA0EA1E0C255DF4FA883CE5AD040C1 +:103E4000E6CF133009F00FCAE4C9153009F4F7C9F9 +:103E5000173009F403CA133009F005CADFC9C85383 +:103E6000DF4F0FB6F894DEBF0FBECDBFDF91CF910D +:103E70001F910F91FF90EF90DF90CF90BF90AF9088 +:103E80009F908F907F906F905F904F903F902F907A +:103E900008952F923F924F925F926F927F928F92EE +:103EA0009F92AF92BF92CF92DF92EF92FF920F93C9 +:103EB0001F93CF93DF93CDB7DEB7C459D1090FB6A7 +:103EC000F894DEBF0FBECDBFFB01873A28E0920712 +:103ED00009F480C208F046C08B34A8E09A0709F4C0 +:103EE00045C1F0F4833E27E0920709F4FFC060F477 +:103EF0008231910509F4FAC08C3C910509F493C014 +:103F0000419709F075C078C08934A8E09A0709F490 +:103F100012C108F018C18834984009F4C2C068C0C2 +:103F20008D3938E0930709F4E6C178F48A39B8E0AE +:103F30009B0709F488C18B3928E0920709F4BEC1B8 +:103F40008939984009F054C024C1823AA8E09A0700 +:103F500009F404C208F44CC0863A984010F40C945A +:103F6000622946C0803C28E0920709F4A0C508F504 +:103F7000873BA8E09A0709F453C570F48D3A28E00E +:103F8000920709F43AC38E3A38E0930709F443C420 +:103F90008C3A984069F524C2893BB8E09B0709F444 +:103FA00063C508F450C58A3B984011F40C9462290B +:103FB0001FC08A36A9E09A0709F44EC770F480360C +:103FC00029E0920709F402C6813639E0930709F423 +:103FD000ECC6813C984061F495C58C36B9E09B07EE +:103FE00009F4B6C708F485C7843C994009F4F9C7B9 +:103FF00081E090E00C9464298091F41482FF08C061 +:104000008A9A809108018160809308015F9A07C0B5 +:104010008A98809108018E7F809308015F980E94A2 +:10402000943F8FE00CC18E010F5F1F4F1F930F93C2 +:1040300088EC93E09F938F93FF936F930E94F973A3 +:104040000F900F900F900F900F900F901816190669 +:104050000CF09DC71D8A1E8A1F8A188EAE014B5E0A +:104060005F4F60E070E0C8010E94D0558823D1F115 +:104070004D895E896F89788D88E70E943A2D4D8938 +:104080005E896F89788D89E70E943A2D4D895E8916 +:104090006F89788D8AE70E943A2D0E9459320C94DC +:1040A00062298E010F5F1F4F1F930F9383ED93E0E3 +:1040B0009F938F93FF936F930E94F9730F900F90CC +:1040C0000F900F900F900F90181619060CF05FC705 +:1040D000AE014B5E5F4F60E070E0C8010E94D055BA +:1040E000811108C082E390E00C9464290E94D93EBB +:1040F0000C94622920E030E04AE754E46D897E891F +:104100008F89988D0E9485720E949B7016161706E3 +:1041100094F47093180D6093170D11E01093190D1E +:104120008091160D81110C9462290E94153E109306 +:10413000160D0C9462291092190D1092180D109200 +:10414000170D0C9462298081863561F68181805338 +:10415000823040F61092950D813021F01092940D2E +:104160000C9462298093940D0C9462298081863589 +:1041700009F0B8CF81818053823008F0B3CF81300D +:1041800021F010929A0D0C94622980939A0D0C9450 +:10419000622980818E3409F0A5CF918190539430AB +:1041A00008F0A0CF923079F1933009F443C0209108 +:1041B000F4148091910D913099F022FF08C08A9AF1 +:1041C000909108019160909308015F9A07C08A98C6 +:1041D000909108019E7F909308015F9884602FC0A2 +:1041E00022FF08C08A9A909108019160909308017B +:1041F0005F9A07C08A98909108019E7F909308016A +:104200005F9881601CC08091F41482FF08C08A9A74 +:10421000809108018160809308015F9A07C08A98A5 +:10422000809108018E7F809308015F988091910DA5 +:10423000826005C00E94943F8091910D88608093B8 +:10424000910D0C94602980818E3409F04BCF9181BF +:104250009053943008F046CF9230B1F0933041F152 +:104260002091F4148091910D913039F022FF02C019 +:104270005F9801C05F9A8B7F17C022FF02C08A98A7 +:1042800001C08A9A8E7F10C08091F41482FF04C00E +:10429000809108018E7F03C0809108018160809326 +:1042A00008018091910D8D7F8093910D0C9462296E +:1042B0000E94CB3E8091910D877FF6CF80818E3416 +:1042C00009F010CF81818053843008F00BCF90919A +:1042D000910D823051F0833059F0813019F090FF08 +:1042E00098C394C391FD92C394C392FD8FC391C3AD +:1042F00093FF8FC38BC38E010F5F1F4F1F930F93CD +:104300008CED93E09F938F93FF936F930E94F973CB +:104310000F900F900F900F900F900F901816190696 +:104320000CF035C68CE0F801AAE1BDE001900D92D9 +:104330008A95E1F70AE11DE08AEE93E0D8016D91DC +:104340008D017C01BFEFEB1AFB0A0E94185DC701CB +:10435000E6EFEE16E3E0FE0689F7B4C71AA619A643 +:104360001D8A1E8A1F8A188E8E010F5F1F4F8AE0DA +:10437000D8011D928A95E9F7CE0189969F938F9374 +:104380001F930F9387EE93E09F938F93FF936F9309 +:104390000E94F9730FB6F894DEBF0FBECDBF02972F +:1043A0000CF4F5C5AE014B5E5F4F60E070E0C801F4 +:1043B0000E94D055882309F495CE2D893E894F89D6 +:1043C000588D69A57AA5072E000C880B990B0E94C1 +:1043D000303E78C78FEF0E94652E0E948C3D72C7D9 +:1043E0002E0125E6420E511C84E1D201282F1D9298 +:1043F0002A95E9F73E0131E5630E711CD301282FA0 +:104400001D922A95E9F78E01035C1F4FD8011D927A +:104410008A95E9F7C357DF4F188219821A821B82E7 +:10442000CD58D040C757DF4F188219821A821B829D +:10443000C958D040CB57DF4F188219821A821B828D +:10444000C558D0401F930F937F926F925F924F9207 +:1044500083EF93E09F938F93FF936F930E94F97381 +:104460000FB6F894DEBF0FBECDBF03970CF48FC517 +:10447000AE0143575F4F60E070E0C2010E94D0552B +:10448000882309F42FCEAE0147575F4F60E070E0FC +:10449000C3010E94D055882309F424CEAE014B57A6 +:1044A0005F4F60E070E0C8010E94D055882309F496 +:1044B00019CECF57DF4F188219821A821B82C1583A +:1044C000D040C358DF4F188219821A821B82CD5701 +:1044D000D040ED961CAE1DAE1EAE1FAEED9784E132 +:1044E0003E01F9E26F0E711CD301E82F1D92EA958F +:1044F000E9F72E01F5E14F0E511CD201E82F1D9274 +:10450000EA95E9F79E012F5F3F4F1901D9011D92EE +:104510008A95E9F7AE014B575F4FBE0167577F4F52 +:10452000CE0183579F4F0E94BD41CB57DF4FE8809C +:10453000F9800A811B81C558D040C757DF4F2881B9 +:1045400039814A815B81C958D040C357DF4F6881A8 +:1045500079818A819B81CD58D040FE01EF57FF4F72 +:104560004F01DE01A758BF4F5D0134976F010E94D4 +:10457000114320E030E044EB52E4CF57DF4F688135 +:1045800079818A819B81C158D0400E94536FCF5757 +:10459000DF4F688379838A839B83C158D040C35897 +:1045A000DF4F688179818A819B81CD57D04082011C +:1045B00024E045E00E94D76CED966CAD7DAD8EADEC +:1045C0009FADED97810124E045E00E94D76CCF5765 +:1045D000DF4F688179818A819B81C158D0408301F6 +:1045E00024E045E00E94D76C3F922F925F924F9259 +:1045F0007F926F928CEA92E000C12E0135E6430E65 +:10460000511C84E1D201282F1D922A95E9F73E0121 +:1046100031E5630E711CD301282F1D922A95E9F70D +:104620008E01035C1F4FD8011D928A95E9F7C3578D +:10463000DF4F188219821A821B82CD58D040C7578B +:10464000DF4F188219821A821B82C958D040CB577B +:10465000DF4F188219821A821B82C558D0401F93DF +:104660000F937F926F925F924F9282E194E09F93BB +:104670008F93FF936F930E94F9730FB6F894DEBF88 +:104680000FBECDBF03970CF482C4AE0143575F4FFA +:1046900060E070E0C2010E94D055882309F422CD69 +:1046A000AE0147575F4F60E070E0C3010E94D055F4 +:1046B000882309F417CDAE014B575F4F60E070E0DF +:1046C000C8010E94D055882309F40CCDCF57DF4F85 +:1046D000188219821A821B82C158D040C358DF4FFA +:1046E000188219821A821B82CD57D040ED961CAEDB +:1046F0001DAE1EAE1FAEED9784E13E01F9E26F0ED6 +:10470000711CD301E82F1D92EA95E9F72E01F5E11E +:104710004F0E511CD201E82F1D92EA95E9F79E0138 +:104720002F5F3F4F1901D9011D928A95E9F720E0CB +:1047300030E044EB52E4C357DF4F688179818A81CE +:104740009B81CD58D0400E94526F7B018C01C35792 +:10475000DF4F688379838A839B83CD58D040CB57C2 +:10476000DF4F288139814A815B81C558D040C757C6 +:10477000DF4F688179818A819B81C958D040FE01D1 +:10478000E758FF4F4F01DE01A358BF4F5D01389638 +:104790006F010E947644A401B501C6010E946842DF +:1047A000CF57DF4F688179818A819B81C158D04082 +:1047B000830124E045E00E94D76CC358DF4F688135 +:1047C00079818A819B81CD57D040820124E045E0E8 +:1047D0000E94D76CED966CAD7DAD8EAD9FADED9723 +:1047E000810124E045E00E94D76C3F922F925F92B6 +:1047F0004F927F926F928DED92E09F938F9387E21D +:104800009DE09F938F930E94CB730FB6F894DEBF09 +:104810000FBECDBF57C5CF57DF4F188219821A82FE +:104820001B82C158D040C358DF4F188219821A82A8 +:104830001B82CD57D040ED961CAE1DAE1EAE1FAEF6 +:10484000ED9784E12E0139E2430E511CD201282F4D +:104850001D922A95E9F73E0135E1630E711CD301E3 +:10486000282F1D922A95E9F7DE0111967D011D92F0 +:104870008A95E9F78E010B571F4F8FEF90E0D80113 +:104880008D939C931F930F93FF92EF927F926F9261 +:104890005F924F9281E394E09F938F93FF936F9386 +:1048A0000E94F9730FB6F894DEBF0FBECDBF049718 +:1048B0000CF46DC3AE014F575F4F60E070E0C20172 +:1048C0000E94D055882309F40DCCAE0143585F4FA8 +:1048D00060E070E0C3010E94D055882309F402CC47 +:1048E000AE0147585F4F60E070E0C7010E94D055AD +:1048F000882309F4F7CBD8018D919C91009709F496 +:1049000043C0019709F0EECBCF57DF4F4880598065 +:104910006A807B80C158D04020E030E044EB52E414 +:10492000C358DF4F688179818A819B81CD57D04000 +:104930000E94526F21EE3EE245E652E40E9433703F +:104940006B017C010E9430709B01AC01C301B2017C +:104950000E948572CF57DF4F688379838A839B8358 +:10496000C158D040C701B6010E94E8729B01AC015A +:10497000C301B2010E948572C358DF4F68837983F7 +:104980008A839B83CD57D040AE0147585F4FBE010D +:1049900063587F4FCE018F579F4F0E94BD41ED96C8 +:1049A000ECACFDAC0EAD1FADED97C358DF4F2881C9 +:1049B00039814A815B81CD57D040CF57DF4F688125 +:1049C00079818A819B81C158D040FE01FD964F01BB +:1049D000DE01AF5ABF4F5D01B8966F010E941143CF +:1049E0002196ECACFDAC0EAD1FAD219765962CADBC +:1049F0003DAD4EAD5FAD6597A9966CAD7DAD8EAD0D +:104A00009FADA9970E94EB45882319F067ED73E0ED +:104A100002C063EC73E087E29DE00E94C47352C45D +:104A20008081863509F05ECB81818053823008F029 +:104A300059CB813019F00E94873D44C49C9A9D9ABD +:104A4000A49AA5983FC48081863509F04BCB81811B +:104A50008053823008F046CB813019F00E94843DAB +:104A600031C43F9A47982EC48081863509F03ACBED +:104A700081818053823008F035CB813019F00E945B +:104A8000733D20C480910101806280930101809177 +:104A90000101806480930101809102018062809312 +:104AA0000201809102018064809302010BC4CE0157 +:104AB00001969F938F9344969F938F9383E594E001 +:104AC0009F938F93FF936F930E94F9730FB6F8949F +:104AD000DEBF0FBECDBF02970CF459C28D899E89EF +:104AE0008634910508F0FECA29813A8122303105C9 +:104AF00008F0F8CA232B11F061E001C060E00E94C9 +:104B0000CA54E0C3CE0101969F938F9344969F931E +:104B10008F9383E594E09F938F93FF936F930E940D +:104B2000F9730FB6F894DEBF0FBECDBF02970CF439 +:104B30002EC28D899E898634910508F0D3CA2981B9 +:104B40003A812230310508F0CDCAFC01E05CF54F16 +:104B50008650964F232BD1F02491FC018491882319 +:104B600009F4B0C390E0880F991FFC01E455F84F99 +:104B7000A591B491FC01E052F64F859194918FB7C5 +:104B8000F894EC91E22BEC938FBF9CC32491FC0131 +:104B90008491882309F496C390E0880F991FFC0143 +:104BA000E455F84F45915491FC01E052F64FA59120 +:104BB000B4919FB7F894FA01808120958223808375 +:104BC0008C91E22FE823EC939FBF7CC380818335D7 +:104BD00009F088CA8181E0EDE80FE83008F082CA68 +:104BE0008E2F90E0FC013197E730F10530F48827F3 +:104BF000E956FF4F8F4F0C9498730E94CB3E109252 +:104C0000600D10925F0D8AE999E1A5E9B2E4809305 +:104C1000650D9093660DA093670DB093680D8AE9BA +:104C200099E9A2E6B2E4B8C00E94CB3E81E090E0F0 +:104C30009093600D80935F0D86EF98E2ACE4B2E450 +:104C40008093650D9093660DA093670DB093680DEA +:104C50008DEC9CECA0E8B2E49FC00E94CB3E82E0C9 +:104C600090E09093600D80935F0D89E29CEDA4E944 +:104C7000B2E48093650D9093660DA093670DB09399 +:104C8000680D80E090E0A2E6B2E486C00E94CB3ED0 +:104C900083E090E09093600D80935F0D80E090E062 +:104CA000ACE2B2E48093650D9093660DA093670D1E +:104CB000B093680D80E090E0ABE8B2E46DC00E9474 +:104CC000CB3E84E090E09093600D80935F0D80E098 +:104CD00090E0ACE1B2E48093650D9093660DA093F3 +:104CE000670DB093680D80E090E0A9E9B2E418C0C8 +:104CF0000E94CB3E85E090E09093600D80935F0D25 +:104D000080E090E0ACEDB1E48093650D9093660D8A +:104D1000A093670DB093680D80E090E0A7E9B2E43E +:104D20008093610D9093620DA093630DB093640D19 +:104D30000E949E3EDBC00E94CB3E86E090E09093B6 +:104D4000600D80935F0D86E696E6AAE9B2E4809353 +:104D5000650D9093660DA093670DB093680D80E08C +:104D600090E0AAE5B2E418C00E94CB3E87E090E054 +:104D70009093600D80935F0D85E89BEEABECB1E402 +:104D80008093650D9093660DA093670DB093680DA9 +:104D900080E090E0A2E3B2E48093610D9093620D15 +:104DA000A093630DB093640DA1C080E090E00E94D9 +:104DB000AF4690935C0D80935B0D81E090E00E9484 +:104DC000AF4690935E0D80935D0D82E090E00E946F +:104DD000AF4690935A0D8093590D09E51DE084E389 +:104DE00093E0D8016D918D017C01BFEFEB1AFB0AB6 +:104DF0000E94185DC701EAE3EE16E3E0FE0689F7BC +:104E00006BEB82E393E00E94185D0E94854680E090 +:104E100090E00E94014760936D0D70936E0D80933A +:104E20006F0D9093700D81E090E00E9401476093B8 +:104E3000710D7093720D8093730D9093740D82E0D9 +:104E400090E00E9401476093750D7093760D8093FA +:104E5000770D9093780D36C26091121570911315ED +:104E600080911415909115150E94CE702B013C0174 +:104E700060910E1570910F1580911015909111157C +:104E80000E94CE70CF56DF4F688379838A839B83DD +:104E9000C159D04060910A1570910B1580910C1585 +:104EA00090910D150E94CE709E012F5F3F4F4901DA +:104EB000DE0155965D01FE01B9966F018301720115 +:104EC000CF56DF4F288139814A815B81C159D0405B +:104ED0000E945A4589819A81AB81BC818093650D7E +:104EE0009093660DA093670DB093680D0E94D63D18 +:104EF000E9C11D8A1E8A1F8A188E8E010F5F1F4FFF +:104F000084E1D8011D928A95E9F71F930F938AE5F2 +:104F100094E09F938F93FF936F930E94F9730F9088 +:104F20000F900F900F900F900F90181619067CF5A8 +:104F3000AE014B5E5F4F60E070E0C8010E94D0554B +:104F4000882309F4CFC88D899E89AF89B88D24CF75 +:104F50001D8A1E8A1F8A188E8E010F5F1F4F84E1E3 +:104F6000D8011D928A95E9F71F930F9385E694E087 +:104F70009F938F93FF936F930E94F9730F900F90FD +:104F80000F900F900F900F901816190674F01F9243 +:104F900081E08F938DE092E09F938F930E94AF33D7 +:104FA0000F900F900F900F909DC8AE014B5E5F4F1A +:104FB00060E070E0C8010E94D055882309F492C8CF +:104FC0008D899E89AF89B88D8093690D90936A0D04 +:104FD000A0936B0DB0936C0D0E94D63D0E949E3E37 +:104FE00071C1899865E9662E6EE0762E830182E0B4 +:104FF00090E00E94AF46F801819391938F0150E9B0 +:10500000E52EFF24F394889A6AE070E080E090E057 +:105010000E94113988986CE271E080E090E00E9473 +:105020001139F1E0EF1AF10871F788EE93E00E9470 +:105030004F392FE00D351207D1F682E090E00E9443 +:10504000AF4690935E0F80935D0F899A00E21EE455 +:10505000889A6AE070E080E090E00E9411398898B8 +:105060006CE271E080E090E00E941139015011097A +:1050700079F78F984EE0E42EF12C00E911E08E9A3A +:105080006AE070E080E090E00E9411398E986CE256 +:1050900071E080E090E00E9411390150110979F728 +:1050A00031E0E31AF10849F788EE93E00E944F39A6 +:1050B0008F9A35E1232E3EE0332E210100E010E0EF +:1050C00080E090E00E94AF46D2018D939D932D0128 +:1050D00020E9E22EFF24F3948E9A6AE070E080E0EB +:1050E00090E00E9411398E9864EF71E080E090E0CA +:1050F0000E941139B1E0EB1AF10871F70E30110579 +:10510000A9F088EE93E00E944F390F5F1F4F0F33D5 +:105110001105B1F680E090E00E94AF469093940EA6 +:105120008093930E8F9800E51DE223C080910B01C0 +:105130008D7F80930B01E12C92E3F92E80910B017E +:10514000886080930B016AE070E080E090E00E944C +:10515000113980910B01877F80930B016CE271E024 +:1051600080E090E00E941139E1E0EE1AF10831F799 +:10517000C8CF8E9A6AE070E080E090E00E9411391A +:105180008E986CE271E080E090E00E94113901504D +:10519000110979F788EE93E00E944F3980910B0155 +:1051A000826080930B0100E913E380910B0188601A +:1051B00080930B016AE070E080E090E00E9411397A +:1051C00080910B01877F80930B016CE271E080E09E +:1051D00090E00E9411390150110939F788EE93E0EF +:1051E0000E944F3980910B018D7F80930B010BE959 +:1051F0001DE0280181E090E00E94AF46D2018D932E +:105200009D932D0180E9E82EFF24F39480910B01FA +:10521000886080930B016AE070E080E090E00E947B +:10522000113980910B01877F80930B016CE271E053 +:1052300080E090E00E941139B1E0EB1AF10831F7FB +:1052400088EE93E00E944F39E3E14E16EEE05E06F1 +:1052500089F681E090E00E94AF469093140E80930F +:10526000130E81E090E0D3016D913D012C01BFEF61 +:105270004B1A5B0A0E94185DC2018B3C910599F79D +:10528000F10161911F013201FFEF6F1A7F0AC20124 +:105290000E94185D23012BE4621621E0720681F75B +:1052A000D8016D918D017301BFEFEB1AFB0AC301A9 +:1052B0000E94185D3701E5ECEE16E1E0FE0681F78D +:1052C0000E94FF3C80E090E0CC56DF4F0FB6F89490 +:1052D000DEBF0FBECDBFDF91CF911F910F91FF9029 +:1052E000EF90DF90CF90BF90AF909F908F907F9086 +:1052F0006F905F904F903F902F90089569E080E00D +:1053000090E00E94185D4DE450E067EB74E181E0AD +:1053100098E00C943A5DCF92DF92EF92FF920F9358 +:105320001F939091E814092F10E020E030E0809165 +:10533000E914482F50E060E070E0917081706801DE +:105340007901F694E794D794C794C0FC92606A01FF +:105350007B01F694E794D794C794C0FC8260E2E0A6 +:105360003695279517950795EA95D1F700FD946036 +:1053700022E076956795579547952A95D1F740FD98 +:10538000846090939D1080939C101F910F91FF90CB +:10539000EF90DF90CF9008951F920F920FB60F926B +:1053A00011240BB60F922F933F938F939F93EF93FC +:1053B000FF9321B330919D10832F817090E036E0F0 +:1053C000880F991F3A95E1F7922F9F7B892B81BB1C +:1053D000EBE0F1E0908180919D108270880F880F42 +:1053E000977F892B808381B390919D1092FB9927A1 +:1053F00090F98E7F892B81BB15BCFF91EF919F9116 +:105400008F913F912F910F900BBE0F900FBE0F9079 +:105410001F90189580916F008D7F80936F00809111 +:105420008100887F81608093810010929E1080911E +:10543000EA148F3F21F490910515992349F090913A +:105440000715943029F090E00E944F3981E001C0A7 +:1054500080E09091F41492FF02C091E089278823A4 +:1054600041F08A9A809108018160809308015F9AD7 +:1054700008958A98809108018E7F809308015F9833 +:1054800008951F920F920FB60F9211240BB60F9230 +:105490002F933F934F935F936F937F938F939F933C +:1054A000AF93BF93EF93FF9380919E10811139C208 +:1054B0008091AE1080FD8F9A80FF8F9890910B01A4 +:1054C000482F42709D7F942B90930B0141B38470C1 +:1054D00090E095958795942F9D7F892B81BB91B303 +:1054E0008091AD10282F217030E066E0220F331F2D +:1054F0006A95E1F79F7B292B21BB90910B01282F07 +:105500002270220F220F977F922B90930B0121B3D1 +:1055100082FB992790F9822F8E7F892B81BB809106 +:10552000AC1086BD82E085BD81E080939E107894AA +:105530008091C0109091C110892B09F0ACC080916E +:10554000A7139091CC13981709F49BC0E091A7136F +:105550002E2F30E086E0E89FF0011124E855FC4E44 +:10556000F093C110E093C0108381948190938900DF +:1055700080938800808191819093BC108093BB10B0 +:10558000E2818091BD108E1761F1E093BD1081E141 +:10559000E89FF0011124E353FC4EF093BF10E09319 +:1055A000BE1085859685A785B089B695A7959795F0 +:1055B00087958093A7109093A810A093A910B093FB +:1055C000AA108093A3109093A410A093A510B09359 +:1055D000A61080939F109093A010A093A110B09359 +:1055E000A210E091BE10F091BF10908180919C10AC +:1055F00089278093AE1086E0829FD001839FB00DF3 +:105600001124A855BC4E15962C9181819281A381BD +:10561000B481022E04C0B695A795979587950A94F4 +:10562000D2F78093AF109093B010A093B110B093C5 +:10563000B21085819681A781B085022E04C0B695EF +:10564000A795979587950A94D2F78093B310909376 +:10565000B410A093B510B093B61081859285A38540 +:10566000B48504C0B695A795979587952A95D2F7E6 +:105670008093B7109093B810A093B910B093BA105C +:105680000AC0C8DE9FB7F8948091B51484608093F7 +:10569000B5149FBF46C18091B6148130B1F489B171 +:1056A000807190910415891781F01092B6148CE0E6 +:1056B000EAE0F5E1A6E1B5E101900D928A95E1F706 +:1056C0008091B51480648093B5141092AD10409110 +:1056D0009F105091A0106091A1107091A210809124 +:1056E000AF109091B010A091B110B091B210840F92 +:1056F000951FA61FB71F80939F109093A010A09393 +:10570000A110B093A210E091BE10F091BF1045859A +:10571000568567857089481759076A077B0768F5BA +:1057200021E02093AD104585568567857089841BDF +:10573000950BA60BB70B80939F109093A010A0938E +:10574000A110B093A210208180910A1590910B15A1 +:10575000A0910C15B0910D1520FF04C00197A1096F +:10576000B10903C00196A11DB11D80930A15909344 +:105770000B15A0930C15B0930D154091A3105091EB +:10578000A4106091A5107091A6108091B310909113 +:10579000B410A091B510B091B610840F951FA61F3C +:1057A000B71F8093A3109093A410A093A510B0935B +:1057B000A6104585568567857089481759076A0779 +:1057C0007B0778F52091AD1022602093AD104585C0 +:1057D000568567857089841B950BA60BB70B809344 +:1057E000A3109093A410A093A510B093A6102081AD +:1057F00080910E1590910F15A0911015B091111573 +:1058000021FF04C00197A109B10903C00196A11DA0 +:10581000B11D80930E1590930F15A0931015B093A2 +:1058200011154091A7105091A8106091A910709186 +:10583000AA108091B7109091B810A091B910B091B2 +:10584000BA10840F951FA61FB71F8093A7109093BF +:10585000A810A093A910B093AA1045855685678516 +:105860007089481759076A077B0778F52091AD10B2 +:1058700024602093AD104585568567857089841B0B +:10588000950BA60BB70B8093A7109093A810A0932D +:10589000A910B093AA102081809112159091131530 +:1058A000A0911415B091151522FF04C00197A1090C +:1058B000B10903C00196A11DB11D809312159093EB +:1058C0001315A0931415B093151580910715843006 +:1058D00039F49091AD108091231589238093AD10F8 +:1058E0008091BB109091BC1001979093BC10809355 +:1058F000BB10892B69F41092C1101092C0108091D6 +:10590000A7138F5F8093A713863011F41092A7130B +:105910009091AD1080919D1089278093AD101092C9 +:105920009E10FF91EF91BF91AF919F918F917F91C9 +:105930006F915F914F913F912F910F900BBE0F9000 +:105940000FBE0F901F9018958091F41482FF08C02D +:105950008A9A809108018160809308015F9A07C04C +:105960008A98809108018E7F809308015F988091CA +:1059700007158C70A1F080919C108093AE108091DF +:105980009D108093AD108091E714880F845081950D +:105990008093AC1080916F00826080936F000895B7 +:1059A000E0EAF0E080818F7D80835C980895CF925B +:1059B000DF92EF92FF926A017B01811105C0FF9097 +:1059C000EF90DF90CF90ECCF813011F45C9801C064 +:1059D0005C9A83E28093A0008091A100807E8A611E +:1059E0008093A1008FEF9FEF9093A9008093A80070 +:1059F00020E030E0A901C701B6010E942C70181602 +:105A0000F4F620E030E0A901C701B6010E942C7035 +:105A100087FD11C020E030E04AE754E4C701B60139 +:105A20000E944A72181654F4C12CD12C8AE7E82E31 +:105A300084E4F82E03C0C12CD12C76012CEE31E188 +:105A400043E852E4C701B6010E94857220E030E0CD +:105A500040E05FE30E94536F0E9409710E94A070B2 +:105A60007093AB006093AA005C9AFF90EF90DF9078 +:105A7000CF900895CF92DF92EF92FF92CF93DF9372 +:105A8000C82F6A017B0120E030E0A901C701B601FF +:105A90000E942C7087FDE2C0C43608F441C08CE936 +:105AA0008C0F20E0833098F590E0880F991F880FC5 +:105AB000991F223079F0FC01233011F1213019F0C7 +:105AC000E954FB4E02C0ED53FB4EC082D182E2820C +:105AD000F382C1C0EC01C153DB4E20E030E040E76F +:105AE00052E4C701B6010E94857220E030E040E731 +:105AF00052E40E948572688379838A839B83ABC05A +:105B0000E552FB4EF7FAF094F7F8F094DECF2F5FF2 +:105B10008A3008F4A5C0243009F4A2C08A50C2CF4C +:105B2000C701B6010E9433730E94A0708C2F90E0D1 +:105B30008C31910508F094C0FC018827E256FF4F94 +:105B40008F4F0C949873633008F48CC06093E71403 +:105B500082C06093EA147FC06093E81402C060932F +:105B6000E914D9DB78C08091F414662311F08460C5 +:105B70004CC08B7F4AC08091F414662311F080647E +:105B800044C08F7B42C08091F414662311F080687A +:105B90003CC08F773AC06093EB145DC0C092EC14A8 +:105BA000D092ED14E092EE14F092EF1454C0C09233 +:105BB000F014D092F114E092F214F092F3144BC06E +:105BC0008091F414662311F081601FC08E7F1DC088 +:105BD0008091F414662321F084FF46C0806215C0D2 +:105BE0008F7D13C08091F414662311F0886001C08A +:105BF000877F8093F4140E94005D2DC08091F4147F +:105C0000662311F0806101C08F7C8093F41423C05F +:105C10006093F51420C0C092F614D092F714E0926D +:105C2000F814F092F91417C0C092FA14D092FB1431 +:105C3000E092FC14F092FD140EC070E07093FF141B +:105C40006093FE1408C0C0920015D0920115E09236 +:105C50000215F092031552DB80E007C084E005C016 +:105C600083E003C086E001C08AE0DF91CF91FF901E +:105C7000EF90DF90CF9008952DE0829FC001112416 +:105C80004CE050E0965F0C943A5D1F93CF93DF9306 +:105C9000182FEB018DE0189FB0011124765F4CE0C6 +:105CA00050E0CE010E947D5D892B51F48CE0FE0115 +:105CB00011928A95E9F7BE01812FDEDF80E001C0F5 +:105CC00081E0DF91CF911F910895EF92FF920F93A2 +:105CD0001F93CF93DF93CDB7DEB72C970FB6F89411 +:105CE000DEBF0FBECDBF182F80FFC6C08AE08093F5 +:105CF000E7148FEF8093EA141092E81487E0809302 +:105D0000E91483E08093EB148AE097EDA3E2BCE30F +:105D10008093EC149093ED14A093EE14B093EF14D1 +:105D20008FE692E1A3E0BBE38093F0149093F1142B +:105D3000A093F214B093F3141092F51480E090E065 +:105D4000A8ECB1E48093F6149093F714A093F814A0 +:105D5000B093F91480E090E0AAEFB3E48093FA14D2 +:105D60009093FB14A093FC14B093FD148AEF90E081 +:105D70009093FF148093FE1480E090E0A0E8BFE3CE +:105D80008093001590930115A0930215B09303150D +:105D900084E08093F41480E090E0A8ECB5E4809374 +:105DA000B7149093B814A093B914B093BA14809315 +:105DB000BB149093BC14A093BD14B093BE148093F5 +:105DC000BF149093C014A093C114B093C21480E088 +:105DD00090E5A3ECB7E48093C3149093C414A0930C +:105DE000C514B093C6148093C7149093C814A0939D +:105DF000C914B093CA148093CB149093CC14A0937D +:105E0000CD14B093CE1480E090EAACE0B7E4809378 +:105E1000CF149093D014A093D114B093D214809344 +:105E2000D3149093D414A093D514B093D614809324 +:105E3000D7149093D814A093D914B093DA1480E0B7 +:105E400090E4ACE1B6EC8093DB149093DC14A09367 +:105E5000DD14B093DE148093DF149093E014A093CC +:105E6000E114B093E2148093E3149093E414A093AC +:105E7000E514B093E61442DA11FF0FC0CE0101968B +:105E80007C018CE0F70111928A95E9F700E0B701F7 +:105E9000802FF2DE0F5F0830D1F712FF0AC060E0FA +:105EA00080E09BE00E94185D60E081E59BE00E943D +:105EB000185D13FF05C060E08EEA9BE00E94185D4C +:105EC0002C960FB6F894DEBF0FBECDBFDF91CF91F9 +:105ED0001F910F91FF90EF9008951F920F920FB6B0 +:105EE0000F9211240BB60F922F933F934F935F9312 +:105EF0006F937F938F939F93AF93BF93EF93FF9392 +:105F00008091360123E030E03093641020936310D9 +:105F10008F33A9F050F4883109F1813211F59FB720 +:105F2000F8948091B514886015C0803471F08E3774 +:105F3000C1F49FB7F8948091B51482600BC09FB7ED +:105F4000F8948091B514816005C09FB7F894809152 +:105F5000B51480628093B5149FBF14C00E94905600 +:105F600011C0E091E00F91E09E0F903809F490E0AD +:105F70002091DF0F921731F0F0E0E15AF04F80836B +:105F80009093E00FFF91EF91BF91AF919F918F910F +:105F90007F916F915F914F913F912F910F900BBE29 +:105FA0000F900FBE0F901F9018951F920F920FB673 +:105FB0000F9211240BB60F922F933F934F935F9341 +:105FC0006F937F938F939F93AF93BF93EF93FF93C1 +:105FD0008091D60022E030E030936410209363106B +:105FE0008F33A9F050F4883109F1813211F59FB750 +:105FF000F8948091B514886015C0803471F08E37A4 +:10600000C1F49FB7F8948091B51482600BC09FB71C +:10601000F8948091B514816005C09FB7F894809181 +:10602000B51480628093B5149FBF14C00E9490562F +:1060300011C0E091E00F91E09E0F903809F490E0DC +:106040002091DF0F921731F0F0E0E15AF04F80839A +:106050009093E00FFF91EF91BF91AF919F918F913E +:106060007F916F915F914F913F912F910F900BBE58 +:106070000F900FBE0F901F9018951F920F920FB6A2 +:106080000F9211240BB60F922F933F934F935F9370 +:106090006F937F938F939F93AF93BF93EF93FF93F0 +:1060A0008091CE0021E030E03093641020936310A3 +:1060B0008F33A9F050F4883109F1813211F59FB77F +:1060C000F8948091B514886015C0803471F08E37D3 +:1060D000C1F49FB7F8948091B51482600BC09FB74C +:1060E000F8948091B514816005C09FB7F8948091B1 +:1060F000B51480628093B5149FBF14C00E9490565F +:1061000011C0E091E00F91E09E0F903809F490E00B +:106110002091DF0F921731F0F0E0E15AF04F8083C9 +:106120009093E00FFF91EF91BF91AF919F918F916D +:106130007F916F915F914F913F912F910F900BBE87 +:106140000F900FBE0F901F9018951F920F920FB6D1 +:106150000F9211240BB60F922F933F934F935F939F +:106160006F937F938F939F93AF93BF93EF93FF931F +:106170008091C60010926410109263108F33A9F0C2 +:1061800050F4883109F1813211F59FB7F89480916C +:10619000B514886015C0803471F08E37C1F49FB794 +:1061A000F8948091B51482600BC09FB7F8948091E9 +:1061B000B514816005C09FB7F8948091B5148062D2 +:1061C0008093B5149FBF14C00E94905611C0E091F7 +:1061D000E00F91E09E0F903809F490E02091DF0FDE +:1061E000921731F0F0E0E15AF04F80839093E00F86 +:1061F000FF91EF91BF91AF919F918F917F916F919F +:106200005F914F913F912F910F900BBE0F900FBE5A +:106210000F901F9018951F920F920FB60F92112496 +:106220000BB60F928F939F93EF93FF938091621021 +:10623000E82FF0E0EE51F04F9081909336018F5FA0 +:10624000803809F480E0809362109091E10F891307 +:1062500005C0809131018F7D80933101FF91EF91D5 +:106260009F918F910F900BBE0F900FBE0F901F90BC +:1062700018951F920F920FB60F9211240BB60F9222 +:106280008F939F93EF93FF9380916210E82FF0E03C +:10629000EE51F04F90819093D6008F5F803809F4D3 +:1062A00080E0809362109091E10F891305C0809186 +:1062B000D1008F7D8093D100FF91EF919F918F91BD +:1062C0000F900BBE0F900FBE0F901F9018951F924E +:1062D0000F920FB60F9211240BB60F928F939F93CC +:1062E000EF93FF9380916210E82FF0E0EE51F04FB2 +:1062F00090819093CE008F5F803809F480E0809386 +:1063000062109091E10F891305C08091C9008F7DC3 +:106310008093C900FF91EF919F918F910F900BBED9 +:106320000F900FBE0F901F9018951F920F920FB6EF +:106330000F9211240BB60F928F939F93EF93FF93BD +:1063400080916210E82FF0E0EE51F04F9081909331 +:10635000C6008F5F803809F480E0809362109091CE +:10636000E10F891305C08091C1008F7D8093C1002A +:10637000FF91EF919F918F910F900BBE0F900FBEE9 +:106380000F901F901895E091E10F91E09E0F9038CB +:1063900031F490E004C02091B51424FD2FC0209169 +:1063A00062102917C1F3F0E0EE51F04F8083909313 +:1063B000E10F80916310909164108130910569F034 +:1063C00030F08230910579F0039799F0089580912B +:1063D000C10080628093C10008958091C9008062ED +:1063E0008093C90008958091D10080628093D1008C +:1063F0000895809131018062809331010895CF9397 +:10640000C82F83EB98E006D2C830B1F190F4C430C5 +:1064100051F148F4C23001F118F5C13009F040C023 +:106420008BE998E01BC0C63009F118F58CE598E0BF +:1064300015C0C43169F140F4CA3021F100F1CB300C +:1064400079F580E794E02AC0C63129F1F0F0C23333 +:1064500039F58AE794E022C089E898E0DBD125C0CD +:1064600087E798E0FBCF8DE698E0F8CF8DE498E0E1 +:10647000F5CF8CE298E0F2CF83E298E0EFCF88E1AD +:1064800098E0ECCF85E098E0E9CF8FEE97E0E6CF9B +:1064900085E794E003C08BED97E0E0CF09D205C01B +:1064A00089EC97E0B7D18C2FA7D186EC97E0CF91FC +:1064B000B1C11F93CF93DF93CDB7DEB72C970FB643 +:1064C000F894DEBF0FBECDBF80E090E00E94755D06 +:1064D000893009F052C04DE450E061E078E087EB8C +:1064E00094E10E947D5D892B09F447C020E030E0F3 +:1064F00048EC55E46091B7147091B8148091B914C8 +:106500009091BA140E942C70811137C020E030E0C5 +:1065100048EC55E46091BB147091BC148091BD149B +:106520009091BE140E942C70811127C020E030E0B1 +:1065300048EC55E46091BF147091C0148091C1146F +:106540009091C2140E942C70811117C010E0BE01FE +:106550006F5F7F4F812F99DB811102C087E04FDF92 +:106560001F5F1830A1F72C960FB6F894DEBF0FBE50 +:10657000CDBFDF91CF911F9108958FEFA6DBE6CFBE +:106580008F929F92AF92BF92CF92DF92EF92FF9243 +:106590000F931F93CF93DF93CDB7DEB72A970FB634 +:1065A000F894DEBF0FBECDBF6B017C01042F20E04D +:1065B00030E0A9010E942C7087FF06C08DE2E3DE67 +:1065C000F7FAF094F7F8F094102F123060F020E012 +:1065D00030E048EC52E4C701B6010E9485726B01BD +:1065E0007C011250F2CF00FF0AC020E030E040E210 +:1065F00051E4C701B6010E9485726B017C0120E065 +:1066000030E040E05FE3C701B6010E94536F0E9493 +:106610009B70E1E0F0E0EC0FFD1FE00FF11D2EE2BA +:10662000208310E03AE0832E912CA12CB12C61152F +:10663000710581059105A9F0101301C01F5FEE24BB +:10664000E394F12CEC0EFD1EE10EF11CA50194016A +:106650000E947673605DF7016083B901CA011F5F14 +:10666000E6CF80E3101748F4E1E0F0E0EC0FFD1F07 +:10667000E10FF11D80831F5FF5CF10130BC081E088 +:10668000810FE1E0F0E0EC0FFD1FE80FF11D1E5F50 +:1066900080E38083112339F0FE01E10FF11D808139 +:1066A00072DE1150F7CF2A960FB6F894DEBF0FBEF8 +:1066B000CDBFDF91CF911F910F91FF90EF90DF90B1 +:1066C000CF90BF90AF909F908F900895CF92DF9220 +:1066D000EF92FF921F93CF93DF93CDB7DEB7362FA4 +:1066E000142FCDB6DEB64DB75EB7411B51090FB6BC +:1066F000F8945EBF0FBE4DBF4F5F5F4F7A01242FEE +:10670000FA019E2F921B911728F4632F0E94567353 +:106710009193F7CF112349F0F701E10FF11D319764 +:106720008081805D30DE1150F5CF0FB6F894DEBE6B +:106730000FBECDBEDF91CF911F91FF90EF90DF9004 +:10674000CF90089580910815811108C09FB7F894E3 +:106750008091B51482608093B5149FBF08951F93F4 +:10676000CF93DF93CDB7DEB7C058D1090FB6F894F9 +:10677000DEBF0FBECDBFAE0149575F4FFA01619139 +:106780007191AF01CE0101960E941A7410E0E1E010 +:10679000F0E0EC0FFD1FE10FF11D8081882319F05F +:1067A000F2DD1F5FF4CFC058DF4F0FB6F894DEBFA5 +:1067B0000FBECDBFDF91CF911F91089543E0E0CE92 +:1067C0002091F41420FF08C02BE832E441E25DE39D +:1067D0000E94857241E001C040E0D2CE2091F414C5 +:1067E00020FF08C02BE832E441E25DE30E9485729D +:1067F00044E001C043E0C4CE8A3020F0843620F06B +:1068000043E003C041E001C042E06AE05FCF48E0FE +:1068100062E05CCFCF93DF93FC018491EF0121967E +:10682000882319F0B0DDFE01F8CFDF91CF910895F4 +:106830008F929F92AF92BF92EF92FF920F931F930E +:10684000CF938AED99E0E6DF86E1E82E85E1F82E28 +:1068500007EB14E1C0E0F701619171918191919191 +:106860007F01F80181909190A190B1908F010E94D9 +:10687000CE70A50194010E943370B0DFC23019F0D0 +:1068800088ED99E0C7DFCF5FC33029F786ED99E047 +:10689000C1DF80912215B0DF82ED99E0CF911F9189 +:1068A0000F91FF90EF90BF90AF909F908F90B2CFDD +:1068B000CF93DF93EC018991882311F064DDFBCF46 +:1068C000DF91CF910895AAE0B5E1E6E6F0E14D91C0 +:1068D0005D916D917D91419351936193719380E1AD +:1068E000E237F807A1F708958CE1E6E6F0E1DF0171 +:1068F0001D928A95E9F71092A5131092A61381E0D4 +:10690000809365101092C21008952F923F924F927B +:106910005F926F927F928F929F92AF92BF92CF922F +:10692000DF92EF92FF920F931F93CF93DF93C0916B +:10693000A613C11101C0C2E1C150D091C210DC1731 +:1069400009F41DC1EC2EF12C29E2C29F8001112413 +:106950000D531F4EF801A588B688C788D08C61A159 +:1069600072A183A194A19B01AC010E94536FF80115 +:1069700025A136A147A150A50E9485724B018C012B +:106980009B01AC01B501C6010E942C7087FD02C0BD +:106990005401680189E28E9DF0018F9DF00D112454 +:1069A000ED53FF4EC501D601818B928BA38BB48B27 +:1069B000C11101C0C2E1C150DC1761F029E22E9D76 +:1069C000C0012F9D900D11249C012D533F4E790144 +:1069D000D9E233C08091A513D81360C00E943F490B +:1069E0005DC0AC2EB12CDA9DC001DB9D900D112451 +:1069F000FC01ED53FF4E6F01C11101C0C2E1C15056 +:106A00008091A5138C1302C00E943F49DA9D80013A +:106A1000DB9D100D11240D531F4EF80185889688BB +:106A2000A788B08CA50194016189728983899489B2 +:106A30000E942C70811106C076018091C210C8138B +:106A4000D0CF2CC0F80161A172A183A194A19B01B8 +:106A5000AC010E94536FF80125A136A147A150A5B2 +:106A60000E948572F70121893289438954890E94E5 +:106A7000536F2B013C019B01AC01C501B4010E9485 +:106A80004A72F80118162CF4418A528A638A748A71 +:106A9000D3CF818A928AA38AB48ACECFD091C210F2 +:106AA000F9E2DF9F800111240D531F4EC1E0CD0F8D +:106AB000C23109F4C0E02090A61389E2382EC21535 +:106AC00009F45BC0CC2ED12C3C9CC0013D9C900DA8 +:106AD00011249C012D533F4E7901F80141885288C1 +:106AE00063887488F90181889288A388B488A50195 +:106AF0009401C301B2010E942C7087FF24C0F801E9 +:106B000061A172A183A194A19B01AC010E94536F6A +:106B1000F80125A136A147A150A50E948572A301C5 +:106B200092010E94536F2B013C019B01AC01C501F6 +:106B3000B4010E944A72181634F4F701418A528A4D +:106B4000638A748ADC2F3C9CF0013D9CF00D11247B +:106B5000ED53FF4E258936894789508D61897289A9 +:106B6000838994890E942C70811101C0DC2FCF5F32 +:106B7000C23109F4C0E08701A2CFD093C210DF91E7 +:106B8000CF911F910F91FF90EF90DF90CF90BF902A +:106B9000AF909F908F907F906F905F904F903F90BD +:106BA0002F9008952F923F924F925F926F927F9213 +:106BB0008F929F92AF92BF92CF92DF92EF92FF920D +:106BC0000F931F93CF93DF93CDB7DEB7E5970FB643 +:106BD000F894DEBF0FBECDBF4B8F5C8F6D8F072F3C +:106BE0002DAB2091A6132EA3422F50E05BA34AA306 +:106BF00039E2239FF0011124ED53FF4E15861686CE +:106C00001786108A15A216A217A210A6108249E9AB +:106C100056E766E97EE741A352A363A374A31C0170 +:106C200047EB54E158A74FA3CE0101969AAB89AB2D +:106C300026E630E13EA72DA74EA139E2439FC001D1 +:106C400011249C012C533F4E3AA729A7AE01435F64 +:106C50005F4F5DA34CA359A348A386E690E198AB90 +:106C60008FA727EB34E13F8F2E8F10E03F01AF015C +:106C7000435F5F4F5CAB4BAB2F0155E2450E511CA0 +:106C8000F10161917191819191911F01EE8DFF8DC3 +:106C900081909190A190B190FF8FEE8FA50194010A +:106CA0000E9485720E945572E9A9FAA961937193B5 +:106CB00081939193FAABE9ABEFA5F8A9C190D1907C +:106CC000E190F190F8ABEFA76C197D098E099F094F +:106CD0009B01AC0197FF07C022273327A901261B80 +:106CE000370B480B590BE9A5FAA521933193419332 +:106CF0005193FAA7E9A7EBA9FCA9C080D180E28053 +:106D0000F380C216D306E406F50610F469017A0191 +:106D1000EBA9FCA9C082D182E282F3820E94CE70EC +:106D2000A50194010E9433704B015C01E8A1F9A117 +:106D30006193719381939193F9A3E8A320E030E0EC +:106D4000A9010E942C7087FF0DC0112321F0113082 +:106D500021F084E003C081E001C082E0F301908172 +:106D6000892B8083A5019401C501B4010E9485721D +:106D7000F20120813181428153810E94536FF201DF +:106D800060837183828393831F5F133009F078CF10 +:106D90000E94F2724B015C01F20160837183828375 +:106DA0009383CD28CE28CF2809F422C220E030E0FA +:106DB000A9016B8D7C8D8D8D902F0E942C7087FD8D +:106DC00021C0FDA9FF2361F0A50194016B8D7C8D8D +:106DD0008D8D902F0E9485726B8F7C8F8D8F092FE8 +:106DE00020E030E040E85FE36B8D7C8D8D8D902F4F +:106DF0000E942C7087FF0DC01B8E1C8E20E82D8FEB +:106E00000FE307C039E93B8F46E74C8F56E95D8FAA +:106E10000EE7A501940160E070E080E89FE30E9426 +:106E2000337069A77AA78BA79CA7CE0149969A8F42 +:106E3000898FC12CD12C760129E2EAA1FBA12E9FDA +:106E4000C0012F9F900D11249C012C513F4E39A35E +:106E500028A3ECA1FDA180809180A280B38020E0D6 +:106E600030E0A901C501B4010E942C70882309F407 +:106E700072C0A501940169A57AA58BA59CA50E9465 +:106E800085722B013C01ECA1FDA16083718382839B +:106E900093839B01AC0160E070E080E89FE30E9477 +:106EA00033704B015C01E894B7F8EFA1F8A5248595 +:106EB000358546855785C501B4010E9485721B0141 +:106EC0008E8F192F2B8D3C8D4D8D502F0E944A7225 +:106ED00018162CF02B8E3C8EFE8DFD8F012FE8A115 +:106EE000F9A1F081FE8FE8A1F9A111812280338000 +:106EF000EFA1F8A5208D318D428D538DC501B401D0 +:106F00000E9485725B014C019B01AC016E8D712F5B +:106F1000C1010E942C7087FD03C0AE8E1B2D140191 +:106F20008E8D912FD101E8A1F9A180839183A28355 +:106F3000B383EDA5FEA52485358546855785C30118 +:106F4000B2010E9485729B01AC01C701B6010E948B +:106F5000526F6B017C012CA13DA12C5F3F4F3DA3E3 +:106F60002CA34DA55EA54C5F5F4F5EA74DA78FA1DB +:106F700098A5049698A78FA3E98DFA8DE217F307D9 +:106F800009F067CF8091A513FEA1F8130FC089E225 +:106F90002AA13BA1829FF001839FF00D1124ED53A4 +:106FA000FF4E118A128A138A148A14C02FEE3FEF03 +:106FB0004FE75FE3C701B6010E944A7218167CF4DE +:106FC00089E24AA15BA1849FF001859FF00D112405 +:106FD000ED53FF4E118E128E138E148E6AC02FEE5B +:106FE0003FEF4FE75FEBC701B6010E944A721816E8 +:106FF00044F08FEEC82EDD24DA948FE7E82E8FEB75 +:10700000F82EA701960160E070E080E89FE30E94FF +:10701000526F20E030E040E05FE30E9485720E9402 +:10702000F2726B017C0189E22AA13BA1829FF001EF +:10703000839FF00D1124ED53FF4E2091EC143091FD +:10704000ED144091EE145091EF1461A172A183A14F +:1070500094A10E948572A70196010E9485724B013E +:107060005C01A701960160E070E080E89FE30E9468 +:10707000526F9B01AC01C501B4010E9433706B01DA +:107080007C0120E030E0A9010E942C7087FF03C042 +:10709000C12CD12C760189E24AA15BA1849FF00129 +:1070A000859FF00D1124ED53FF4EC18ED28EE38EDD +:1070B000F48E2B8D3C8D4D8D502F6B8D7C8D8D8D59 +:1070C000902F0E9485727B018C0189E22AA13BA14D +:1070D000829FF001839FF00D1124ED53FF4EC701F5 +:1070E000D801858F968FA78FB0A3A18CB28CC38C4B +:1070F000D48C60907E1070907F1080908010909063 +:1071000081109301A401B701C8010E942C7087FD72 +:1071100005C0B62DA72DF82DE92D04C0BE2DAF2D2D +:10712000F02FE12F9501A6016B2F7A2F8F2F9E2F25 +:107130000E944A7218166CF09301A401B701C801AD +:107140000E942C7087FD03C05301640102C05701E7 +:10715000680189E24AA15BA1849FF001859FF00D3F +:107160001124ED53FF4EC501D601858B968BA78B5D +:10717000B08F8CE0FE013D96A2E7B0E101900D9248 +:107180008A95E1F7C701D80180937E1090937F1014 +:10719000A0938010B09381108CE0FE013196A6E69A +:1071A000B0E101900D928A95E1F78091651080938E +:1071B000A6138F5F823109F480E080936510E59615 +:1071C0000FB6F894DEBF0FBECDBFDF91CF911F91F8 +:1071D0000F91FF90EF90DF90CF90BF90AF909F9076 +:1071E0008F907F906F905F904F903F902F908DCBBE +:1071F000E5960FB6F894DEBF0FBECDBFDF91CF91FD +:107200001F910F91FF90EF90DF90CF90BF90AF90C4 +:107210009F908F907F906F905F904F903F902F90B6 +:1072200008956115710581059105C1F16A307105F7 +:107230008105910548F425E02A95F1F70000615099 +:10724000710981099109EDCF6436710581059105B8 +:1072500048F4E5E3EA95F1F700006A507109810905 +:107260009109DFCF683EF3E07F078105910558F46F +:10727000EFE8F1E03197F1F700C0000064567109C2 +:1072800081099109CECFEFE9FFE03197F1F700C016 +:107290000000685E734081099109C3CF089500978B +:1072A00041F0EFE9FFE03197F1F700C000000197EE +:1072B000F6CF0895AF92BF92CF92DF92EF92FF92F6 +:1072C0000F931F93CF93DF93CDB7DEB768970FB6B9 +:1072D000F894DEBF0FBECDBF10910515112309F440 +:1072E00051C081E08093071511FF06C083E099E04B +:1072F00091DA88EF98E01FC012FF06C083E099E0A2 +:1073000089DA8DEE98E017C013FF06C083E099E09C +:1073100081DA8AED98E00FC014FF06C083E099E09F +:1073200079DA8FEC98E007C015FF0CC083E099E094 +:1073300071DA83EC98E06EDA80EC98E06BDA84EF37 +:1073400091E0ADDF10FD08C08FB7F894909105155E +:10735000109205158FBF16C080ED99E05BDA8EEBB9 +:1073600099E058DA8DE599E055DA9FB7F894809165 +:10737000B5148F7E8093B5149FBF8091B51484FFA0 +:10738000FCCFE2CF1091B514112309F4ADC114FF65 +:1073900004C081E080930615B8C110FFDDC08CE009 +:1073A000EAE0F5E1DE011D9601900D928A95E1F784 +:1073B000809107158430E9F040F48130E9F080F0E5 +:1073C000823001F588E399E01CC0803179F018F42F +:1073D000883049F017C0803291F0803421F012C01B +:1073E00087E599E00EC082E599E00BC08CE499E056 +:1073F00008C086E499E005C08FE399E002C082E30B +:1074000099E008DA8091EB14837039F0BE01635F74 +:107410007F4FCE0101960E94D4488091EB1480FDED +:1074200005C08091EB1481FF60C017C08BE299E02A +:10743000F1D9CE0101967C0100E0F70161917191D3 +:10744000819191917F01CAD9023019F089E299E0C6 +:10745000E1D90F5F033089F7E4CF82E299E0DAD90E +:1074600080E8C82E85E1D82ECE0101967C0100E08F +:107470005701F60161917191819191916F01208580 +:107480003185428553850E94536F9B01AC01F70102 +:1074900060817181828193810E94526FF7016083C4 +:1074A000718382839383023079F42091981530910F +:1074B000991540919A1550919B150E94526FF701B2 +:1074C0006083718382839383F4E0EF0EF11CF501F6 +:1074D000608171818281938181D9023019F080E2CB +:1074E00099E098D90F5F033019F68091EB1482FF71 +:1074F0000CC08AE199E08ED98091A6139091A513D2 +:10750000891708F48E5E891B77D98091EB1483FF6D +:107510000CC085E199E07ED99091DF0F8091E00F5A +:10752000891708F48058891B67D98091EB1484FF70 +:1075300008C08FE099E06ED90E94095B43E062E0E9 +:10754000C5D88BE099E066D99FB7F8948091B514BF +:107550008E7F8093B5149FBF812F887609F447C032 +:1075600080910715882351F0982F9C77C1F18830BE +:1075700029F40E943F4981E0809308158091071506 +:10758000811103C092E09093081516FF0AC088305D +:1075900019F480E480930715809108158860809322 +:1075A000081513FF07C08091071585FD03C080E112 +:1075B0008093071515FF13C080ED99E02BD98CE758 +:1075C00099E028D98DE599E025D98091081581FDAC +:1075D000146084608093081580E2809307159FB73C +:1075E000F8948091B51487798093B5149FBF11FFEB +:1075F00057C0812F887609F04BC0809107158823EA +:1076000039F0807509F444C08091081581FF40C0AD +:107610008091081582FF1EC080916615882369F04D +:1076200040916715509168156091691570916A15C0 +:107630000E94D72C80EA9FE032DE80916515882376 +:1076400049F0823011F45C9A02C00E94BF5D88EE5E +:1076500093E025DE8091A5139091A6139817A1F0D1 +:10766000F9E28F9FC00111248D539F4E892B61F049 +:107670008091081583FD08C088E0809307150E945B +:1076800061490E94A42C02C010920715109208159F +:107690009FB7F8948091B5148D7F8093B5149FBFE8 +:1076A00012FF22C080910715807391F08091091517 +:1076B00081110EC08091081582FF04C00E94D02C59 +:1076C0000E94BF5D8091081582608093081504C0F8 +:1076D00010920815109207159FB7F8948091B51471 +:1076E0008B7F8093B5149FBF809107158C7711F025 +:1076F0000E94614980910715803239F48091081504 +:1077000081FF03C080E18093071568960FB6F89457 +:10771000DEBF0FBECDBFDF91CF911F910F91FF90C4 +:10772000EF90DF90CF90BF90AF90089520918A1096 +:1077300030918B1021153105B9F080919A109091FC +:107740009B108217930734F4019690939B108093BB +:107750009A100AC010929B1010929A1010928B10DF +:1077600010928A101092920D2091170D3091180DE1 +:1077700021153105A1F080919810909199108217F0 +:10778000930734F40196909399108093981007C052 +:10779000109299101092981081E08093930D80912F +:1077A000920D81111BC08091190D811117C080911C +:1077B00073008E7F809373001092160D10928B10C1 +:1077C00010928A101092180D1092170D10929B10A3 +:1077D00010929A101092991010929810089580911A +:1077E0009710811107C081E08093971080910B0161 +:1077F000806205C01092971080910B018F7D80935D +:107800000B0180919510909196109C012F5F3F4F36 +:107810003093961020939510209104023091050228 +:107820002817390760F410929610109295108091E5 +:1078300070008E7F8093700081E08093980D089592 +:1078400020915F0D3091600D2430310559F426E60A +:1078500036E646E65FE30E94337020E030E040E821 +:1078600052E40DC02530310539F52CEE31E548E301 +:107870005EE30E94337020E030E040E851E40E9473 +:1078800085720E949B706093821070938310809326 +:107890008410909385108AE69CE39093AF148093B4 +:1078A000AE141092A00085E08093A1008DEF9FEFB1 +:1078B0009093B1148093B0148091B0149091B1144E +:1078C0009093A5008093A4008091720081608093C2 +:1078D000720008958091821090918310A09184107D +:1078E000B0918510181619061A061B06F4F420919B +:1078F0009410222389F0109294100197A109B109E4 +:107900008093821090938310A0938410B09385107D +:1079100080910201806406C081E080939410809180 +:1079200002018F7B8093020108950E94815510927D +:10793000821010928310109284101092851081E0B2 +:107940008093970D0895CF93DF93EB018431D1F0AD +:1079500028F4882361F08C30A8F437C08233E9F032 +:1079600018F4873190F10EC0833311F10BC0888178 +:10797000882329F06FE774E0CE010E94B97361E8B3 +:1079800074E020C08881882329F06FE774E0CE017D +:107990000E94B97364E874E015C08881882329F0D7 +:1079A0006FE774E0CE010E94B97368E874E00AC022 +:1079B0008881882329F06FE774E0CE010E94B973B3 +:1079C0006CE874E0CE010E94B9738091270D882382 +:1079D00079F067E27DE0CE010E94B97382E3E7E2CD +:1079E000FDE0DF011D928A95E9F7DF91CF910895BF +:1079F0006AE773E0CE01DF91CF910C94B9738F9257 +:107A00009F92AF92BF92CF92DF92EF92FF920F932D +:107A10001F93CF93DF9306E015E18EE1F8011192F9 +:107A20008A95E9F70E9463340E94125D80E090E03D +:107A30000E940147CFE5DDE06E877F87888B998BB9 +:107A400081E090E00E9401476A8B7B8B8C8B9D8B41 +:107A500082E090E00E9401476E8B7F8B888F998F28 +:107A6000F801C480D580E680F780CA8EDB8EEC8E6C +:107A7000FD8EC084D184E284F384CE8EDF8EE8A2B2 +:107A8000F9A204851585268537850AA31BA32CA397 +:107A90003DA320E030E044EB52E40E94526F7B01B2 +:107AA0008C012A893B894C895D896E857F8588890F +:107AB0009989EDE88E2EEDE09E2EF9E8AF2EFDE0DF +:107AC000BF2EA5E8CA2EADE0DA2E10D7DF91CF91F8 +:107AD0001F910F91FF90EF90DF90CF90BF90AF90EC +:107AE0009F908F900895E1E0F1E080818062808333 +:107AF000808180648083E2E0F1E080818F7D8083FB +:107B000080818F7B808308953F9A479A08959C9A3D +:107B10009D9AA498A59A08958091040187788093EE +:107B20000401809103018877803451F440E050E0F3 +:107B300060E87FE384E00E943A2D60E974E02AC0A7 +:107B400080910301887791F440E050E060E87FE3A2 +:107B500084E00E943A2D67E974E08CE890E10E948D +:107B6000C47340E050E060EE70E41BC080910301FC +:107B7000887740E050E060E87FE3803231F484E0D1 +:107B80000E943A2D6EE974E005C084E00E943A2D0F +:107B900065EA74E08CE890E10E94C47340E050E034 +:107BA000BA0183E00E943A2D0C9459320F931F932F +:107BB000CF93DF9360915F0D84E893E00E94185D9E +:107BC0006091600D85E893E00E94185DC1E6DDE0FC +:107BD00088E993E069918C010F5F1F4F0E94185D47 +:107BE000C8010C391340B1F7C5E6DDE08EE893E03B +:107BF00069918C010F5F1F4F0E94185DC801023907 +:107C00001340B1F7C9E6DDE082E89CE069918C01A0 +:107C10000F5F1F4F0E94185DC80106381C40B1F766 +:107C2000DF91CF911F910F910895E7E5F4E186E987 +:107C30009BE3918380831092200185E08093210152 +:107C400081EF9FEF938382838281938190932501BB +:107C500080932401E3E7F0E08081816080830895D0 +:107C6000CF92DF92EF92FF920F931F93CF93DF9308 +:107C700069017A011092980DEAE0F1E0208120621A +:107C80002083EBE0F1E020812F7D2083660F771FBA +:107C9000709305026093040200E514E18FEE9BE30C +:107CA000F80191838083C0E7D0E088818E7F88834C +:107CB000E0EBF0E080818C7F8083E1EBF0E080817D +:107CC000877F8083A6EBB0E08C918F7D8C93888139 +:107CD0008D7F888380818460808380818C7F808396 +:107CE00020E034E244EF59E4C701B6010E9433704A +:107CF00020E034E244E75BE40E94857220E030E05B +:107D000040E85CE30E9485720E949B7020E031E0B5 +:107D1000C901861B970BF80193838283828193812B +:107D20008093B200888181608883DF91CF911F9119 +:107D30000F91FF90EF90DF90CF900895CF93C1E027 +:107D4000C093970D80915F0D9091600D04970297FD +:107D500000F51092970D10928610109287101092D5 +:107D6000881010928910809107018F7D8093070100 +:107D700080910801806280930801809102018062F5 +:107D80008093020160E070E084EB93E459DDC093DE +:107D9000960DCF9108951092821010928310109238 +:107DA0008410109285100E9481551092960D0C94AB +:107DB00081558091F41482FF08C08A98809108014F +:107DC0008E7F809308015F9807C08A9A809108018E +:107DD0008160809308015F9ADEDF1092910D089513 +:107DE0008F929F92AF92BF92CF92DF92EF92FF92CB +:107DF0006B017C0120E030E044EB53E40E944A72C6 +:107E000018160CF488C020E030E0A901C701B601C3 +:107E10000E942C7087FD7FC080915F0D9091600D56 +:107E200004970297B8F52091861030918710409101 +:107E3000881050918910C701B6010E94526F4B0102 +:107E40005C0120E030E0A9010E942C70882309F435 +:107E500062C0C0928610D0928710E0928810F09293 +:107E6000891020E030E0A901C501B4010E944A72E6 +:107E7000181624F4809102018F7D03C080910201C5 +:107E8000806280930201C501B4019F77D9DC109212 +:107E9000970D41C020E030E044E353E4C701B60150 +:107EA0000E944A7218161CF4C12CD12C7601A7012D +:107EB000960160E070E084E393E40E94526F20E05A +:107EC00030E044E353E40E9433709B01AC010E9414 +:107ED000536F20E030E040E05FE30E94536F609317 +:107EE000000270930102809302029093030220E04B +:107EF00030E040EA51E40E94337020E030EC4FE77C +:107F000054E40E9485720E94A070CB010E943154FB +:107F100081E08093970DFF90EF90DF90CF90BF901E +:107F2000AF909F908F90089580915F0D9091600D1C +:107F30000497029780F4809101018062809301018F +:107F4000809101018064809301018091020180622F +:107F500080930201089580E18093A1001092A00017 +:107F600082E08093B41480E29EE49093B3148093F3 +:107F7000B2149093A7008093A60082E18093A100A1 +:107F800020E030E040EA51E460910002709101028B +:107F900080910202909103020E94337020E030EC45 +:107FA0004FE754E40E9485720E94A070CB010C94AC +:107FB0003154CF93DF93D82FC8E05E98559AD7FFFE +:107FC00002C05D9A01C05D9865E070E080E090E0DD +:107FD00028D95E9A65E070E080E090E022D95E9852 +:107FE000DD0F65E070E080E090E01BD9C15029F71B +:107FF00062E070E080E090E014D9559A5D9A62E00A +:1080000070E080E090E0DF91CF910BC95E98559AC7 +:108010005D9865E070E080E090E003D95E9A65E0ED +:1080200070E080E090E0FDD8559A5D9A65E070E0E0 +:1080300080E090E0F6C8CF93559A5D9A62E070E0D8 +:1080400080E090E0EED85E9A62E070E080E090E040 +:10805000E8D855988BEF99B1C92FC07295FF05C02C +:108060008150C9F7D3DFC1E006C05E9862E070E0DE +:1080700080E090E0D6D88C2FCF910895559A5D9AE4 +:108080005E9A65E070E080E090E0CBD8559A5D980C +:1080900065E070E080E090E0C4D85E9862E070E057 +:1080A00080E090E0BEC8CF93DF93D82FC8E08091E6 +:1080B00002018F7780930201809101018460809397 +:1080C000010180910201D7FF02C0846001C08B7F53 +:1080D0008093020165E070E080E090E0A2D880919A +:1080E000020180688093020165E070E080E090E02A +:1080F00098D8809102018F7780930201DD0F65E0AF +:1081000070E080E090E08DD8C15089F662E070E0C8 +:1081100080E090E086D88091010184608093010125 +:108120008091020184608093020162E070E080E04F +:1081300090E0DF91CF9175C80F931F93CF93DF939A +:10814000C2E0D1E088818F77888301E011E0F801F7 +:1081500080818460808388818B7F888365E070E084 +:1081600080E090E05ED888818068888365E070E078 +:1081700080E090E056D8F801808184608083888117 +:108180008460888365E070E080E090E0DF91CF91CB +:108190001F910F9146C8CF93809101018460809315 +:1081A00001018091020184608093020162E070E02D +:1081B00080E090E036D880910201806880930201CF +:1081C00062E070E080E090E02CD8809101018B7F2C +:1081D000809301018BEF90910001C92FC47092FF31 +:1081E00005C08150C1F7A8DFC1E00AC0809102013B +:1081F0008F778093020162E070E080E090E011D818 +:108200008C2FCF9108950F931F93CF93DF9301E0AD +:1082100011E0F801808184608083C2E0D1E0888130 +:108220008460888388818068888365E070E080E06E +:1082300090E00E941139F8018081846080838881F8 +:108240008B7F888365E070E080E090E00E941139C8 +:1082500088818F77888362E070E080E090E0DF9132 +:10826000CF911F910F910C941139CF93DF93D82F99 +:10827000C8E04398399AD7FF02C0419A01C041989B +:1082800065E070E080E090E00E941139439A65E07B +:1082900070E080E090E00E9411394398DD0F65E0C6 +:1082A00070E080E090E00E941139C15011F762E067 +:1082B00070E080E090E00E941139399A419A62E0C2 +:1082C00070E080E090E0DF91CF910C9411394398F9 +:1082D000399A419865E070E080E090E00E941139A1 +:1082E000439A65E070E080E090E00E941139399A8D +:1082F000419A65E070E080E090E00C941139CF93F2 +:10830000399A419A62E070E080E090E00E94113971 +:10831000439A62E070E080E090E00E941139399861 +:108320008BEF96B1C92FC27091FF05C08150C9F77C +:10833000CEDFC1E007C0439862E070E080E090E0EB +:108340000E9411398C2FCF910895399A419A439AFE +:1083500065E070E080E090E00E941139399A419820 +:1083600065E070E080E090E00E941139439862E09F +:1083700070E080E090E00C9411394F925F926F9220 +:108380007F92AF92BF92CF92DF92EF92FF920F93C4 +:108390001F93CF93DF935C01EB018A01FC014080C6 +:1083A00051806280738020E030E0A901C301B201F6 +:1083B0000E942C7020E030E0A901811111C0688179 +:1083C00079818A819B810E944A721816E4F02AED15 +:1083D000C22E2FE0D22E29ECE22E2FEBF22E22C05D +:1083E000C301B2010E942C7087FD16C0A301920147 +:1083F000688179818A819B810E9433700E94F16F2C +:108400006B017C010FC09AEDC92E9FE0D92E99EC2B +:10841000E92E9FE3F92E06C0C12CD12C80ECE82E6A +:108420008FE7F82EC701B6010E9430702091610DD0 +:108430003091620D4091630D5091640D0E948572E0 +:108440009B01AC01C301B2010E94526FF501608330 +:10845000718382839383C701B6010E94E8722091E1 +:10846000610D3091620D4091630D5091640D0E9439 +:1084700085729B01AC01688179818A819B810E9410 +:10848000526F688379838A839B832091650D309135 +:10849000660D4091670D5091680DF8016081718102 +:1084A000828193810E94536FF8016083718382837C +:1084B0009383DF91CF911F910F91FF90EF90DF9009 +:1084C000CF90BF90AF907F906F905F904F90089546 +:1084D0004F925F926F927F92AF92BF92CF92DF9254 +:1084E000EF92FF920F931F93CF93DF935C01EB0109 +:1084F0008A01FC01408051806280738020E030E07E +:10850000A901C301B2010E942C7020E030E0A90152 +:10851000811111C0688179818A819B810E944A7290 +:108520001816E4F02AEDC22E2FE0D22E29ECE22E0E +:108530002FEBF22E22C0C301B2010E942C7087FDE6 +:1085400016C0A3019201688179818A819B810E9472 +:1085500033700E94F16F6B017C010FC09AEDC92E40 +:108560009FE0D92E99ECE92E9FE3F92E06C0C12C8D +:10857000D12C80ECE82E8FE7F82EC701B6010E94BF +:1085800030702091610D3091620D4091630D5091DA +:10859000640D0E948572A30192010E94536FF50140 +:1085A0006083718382839383C701B6010E94E8725E +:1085B0002091610D3091620D4091630D5091640DD9 +:1085C0000E9485729B01AC01688179818A819B81BF +:1085D0000E94536F688379838A839B832091650D02 +:1085E0003091660D4091670D5091680DF8016081E2 +:1085F0007181828193810E94526FF801608371833F +:1086000082839383DF91CF911F910F91FF90EF9021 +:10861000DF90CF90BF90AF907F906F905F904F9022 +:1086200008952F923F924F925F926F927F928F9216 +:108630009F92AF92BF92CF92DF92EF92FF920F93F1 +:108640001F93CF93DF93CDB7DEB762970FB6F89441 +:10865000DEBF0FBECDBF6D837E838F839887298752 +:108660003A874B875C87E982FA820B831C83160169 +:10867000BE86AD8684019B01AC010E9485726B01B0 +:108680007C0129853A854B855C85CA01B9010E9428 +:1086900085729B01AC01C701B6010E94536F0E9415 +:1086A000F2722B013C0120E030E04DE353E469819C +:1086B0007A818B819C810E94526F69837A838B833C +:1086C0009C83A3019201C301B2010E9485726B01D8 +:1086D0007C0129813A814B815C81CA01B9010E94E8 +:1086E00085729B01AC01C701B6010E94536F6B01FB +:1086F0007C0120E030E0A9010E94536F4B015C0136 +:108700009B01AC01C301B2010E9485722B013C01A7 +:1087100020E034E244E758E4C701B6010E948572C4 +:108720006F87788B898B9A8BA5019401C501B40161 +:108730000E9485729B01AC016F85788989899A892D +:108740000E94526F0E94F2729B01AC0169817A8192 +:108750008B819C810E9485724B015C01A70196016F +:10876000C701B6010E94536F20E030E04AE753E4AE +:108770000E9485726B017C01A5019401C301B201C5 +:108780000E94526FA70196010E9433700E94446FAD +:1087900021EE3EE245E652E40E948572F1016083DB +:1087A000718382839383A5019401C301B2010E9466 +:1087B000536FA70196010E9433700E94446F21EE0F +:1087C0003EE245E652E40E9485726B017C01ED8534 +:1087D000FE85608371838283938321EE3EE245E6CA +:1087E00052E4F10160817181828193810E94337032 +:1087F0000E94E87220E030E04AE753E40E9485726C +:108800009B01AC0169817A818B819C810E944A72B3 +:10881000181654F4F7FAF094F7F8F094ED85FE8505 +:10882000C082D182E282F38220E030E0A9016D8132 +:108830007E818F8198850E942C7020E030E0A90114 +:10884000811112C069857A858B859C850E944A7248 +:1088500018162CF480E090E0A4EBB2E411C080E0A4 +:1088600090E0A4EBB2EC0CC06D817E818F81988585 +:108870000E942C7087FF0AC080E090E0A0ECBFE768 +:10888000F80180839183A283B38317C02D813E8139 +:108890004F81588569857A858B859C850E943370C8 +:1088A0000E94F16F21EE3EE245E652E40E9485729D +:1088B000F801608371838283938362960FB6F89484 +:1088C000DEBF0FBECDBFDF91CF911F910F91FF9003 +:1088D000EF90DF90CF90BF90AF909F908F907F9060 +:1088E0006F905F904F903F902F9008952F923F92FE +:1088F0004F925F926F927F928F929F92AF92BF92B0 +:10890000CF92DF92EF92FF920F931F93CF93DF935B +:10891000CDB7DEB72E970FB6F894DEBF0FBECDBF32 +:1089200029833A834B835C83ED82FE820F83188711 +:10893000860115019E868D8621EE3EE245E652E4D3 +:108940000E9433702B013C0121EE3EE245E652E4E9 +:1089500069817A818B819C810E9433704B015C011B +:1089600021EE3EE245E652E46D817E818F8198855D +:108970000E9433706B017C01C301B2010E94307010 +:1089800069837A838B839C83C501B4010E94307014 +:108990006D837E838F839887C301B2010E94E87242 +:1089A0002B013C01C501B4010E94E87269877A87F6 +:1089B0008B879C8720E030E04AE753E469817A8125 +:1089C0008B819C810E9485724B015C0120E030E02C +:1089D0004AE753E46D817E818F8198850E9485727C +:1089E0009B01AC01C501B4010E94536F20E030E04F +:1089F000A9010E94536F4B015C01C701B6010E949F +:108A000030709B01AC01C501B4010E948572F80170 +:108A10006083718382839383C701B6010E94E872E9 +:108A20009B01AC01C501B4010E948572F101608314 +:108A300071838283938320E030E04AE753E4C301EB +:108A4000B2010E9485726B017C0120E030E04AE7B0 +:108A500053E469857A858B859C850E9485729B018C +:108A6000AC01C701B6010E94526F20E030E04DE337 +:108A700053E40E94536FED85FE856083718382838A +:108A800093832E960FB6F894DEBF0FBECDBFDF9155 +:108A9000CF911F910F91FF90EF90DF90CF90BF90FB +:108AA000AF909F908F907F906F905F904F903F908E +:108AB0002F9008952F923F924F925F926F927F92E4 +:108AC0008F929F92AF92BF92CF92DF92EF92FF92DE +:108AD0000F931F93CF93DF93CDB7DEB728970FB6D1 +:108AE000F894DEBF0FBECDBF2B013C0129833A8332 +:108AF0004B835C83ED82FE820F83188786018FE5AE +:108B0000282E8DE0382E20E030E044EB52E4F101D5 +:108B100066897789808D918D0E94526F6B017C01EF +:108B200024EE38E34EE553E46D817E818F81988594 +:108B30000E9433709B01AC01C701B6010E94536FC4 +:108B40006D837E838F83988724EE38E34EE553E46C +:108B500069817A818B819C810E943370F101228925 +:108B60003389448955890E94536F69837A838B8343 +:108B70009C8324EE38E34EE553E4C301B2010E9426 +:108B80003370F10126853785408951890E94536FE2 +:108B90006801ED80FE800F81188529813A814B8123 +:108BA0005C81A4DE28960FB6F894DEBF0FBECDBF61 +:108BB000DF91CF911F910F91FF90EF90DF90CF90B9 +:108BC000BF90AF909F908F907F906F905F904F90ED +:108BD0003F902F9008954F925F926F927F928F9265 +:108BE0009F92AF92BF92CF92DF92EF92FF920F933C +:108BF0001F932B013C0149015A01670178019B0138 +:108C0000AC010E943A73811170C0A5019401C501A5 +:108C1000B4010E943A73811168C0A7019601C7018F +:108C2000B6010E943A73811160C02AE939E947E030 +:108C300053E4C301B2010E944A7218160CF455C0E5 +:108C400020E030E0A901C301B2010E942C7087FD31 +:108C50004CC02DEC3CEC4FEE52E4C501B4010E9437 +:108C60004A7218160CF441C020E030E0A901C50199 +:108C7000B4010E942C7087FD38C0A301920160E00E +:108C800070E084E393E40E94526FA50194010E9476 +:108C9000526F4B015C0120E030E047E153E40E9459 +:108CA0004A72181614F120E030E040E251E4C501A8 +:108CB000B4010E942C7087FD18C020E030E040EB2A +:108CC00052E4C701B6010E944A72181674F020E0FF +:108CD00030E040EB52ECC701B6010E942C70881FB7 +:108CE0008827881F91E0892701C080E01F910F919C +:108CF000FF90EF90DF90CF90BF90AF909F908F90BC +:108D00007F906F905F904F900895EF92FF920F9336 +:108D10001F93CF93DF9382E393E00E94755D8B3BBB +:108D200019F080E293E002C084E393E02FE5E22EA5 +:108D30002DE0F22EC9E5DDE08C0109551D40C8018A +:108D40008C0F9D1F0E94755D8993EC16FD06B9F787 +:108D5000DF91CF911F910F91FF90EF900895AF9207 +:108D6000BF92CF92DF92EF92FF920F931F93CF9318 +:108D7000DF93A82E6EE00E94B952C82F6FE08A2DB3 +:108D80000E94B952D0E0DC2FCC27C82B7E016E01A7 +:108D900004E010E06EE08A2D0E94B952B82E6FE018 +:108DA0008A2D0E94B9522B2D30E0322F2227A901A3 +:108DB000482BCA01C816D90608F46C018E159F0508 +:108DC00008F47C01C80FD91F0150110919F7CE0111 +:108DD0008C199D098E199F0963E070E00E946273EF +:108DE000613050E1750708F48B01C801DF91CF9124 +:108DF0001F910F91FF90EF90DF90CF90BF90AF90B9 +:108E000008954F925F926F927F928F929F92AF924E +:108E1000BF92CF92DF92EF92FF920F931F93CF9367 +:108E2000DF938C019CDFEC010130110551F070F0F3 +:108E30000230110509F086C1E5E9FEE080E090E02E +:108E40001BC1EBE9FDE080E090E08EC0E5E1FEE0D3 +:108E500080E090E0A190B1907C012FEFE21AF20A3D +:108E6000008111810A151B0510F40150104F0C17D9 +:108E70001D0718F0CA15DB0530F4C7012FE3E21611 +:108E8000F10441F701C07C01B7016F5F7F4F072EEE +:108E9000000C880B990B0E94CE7026E636E646EE53 +:108EA0005FE30E9485729B01AC0166E676E686EE82 +:108EB00092E40E94526F2B013C01B8016C1B7D0BA8 +:108EC00080E090E00E94CC7020E030E040E859E380 +:108ED0000E94857220E030E044EB53E40E948572EA +:108EE0009B01AC01C301B2010E94536F2B013C01F5 +:108EF000B701FF0C880B990B0E94CE7026E636E670 +:108F000046EE5FE30E9485729B01AC0166E676E661 +:108F100086EE92E40E94526F6B017C01CA19DB0954 +:108F2000BE0180E090E00E94CC7020E030E040E89C +:108F300059E30E94857220E030E044EB53E40E9444 +:108F400085729B01AC01C701B6010E94526F9B0163 +:108F5000AC01C301B2017DC00C171D0798F4C70115 +:108F60002CE3E216F10491F0019111917C012FEFB5 +:108F7000E21AF20AA080B1800A151B0568F70150B9 +:108F8000104FEACFCA15DB0550F37C01B7016F5FC4 +:108F90007F4F072E000C880B990B0E94CE7026E69F +:108FA00036E646EE5FE30E94857226E636E646EE3A +:108FB0005FE30E94526F2B013C01BE016A197B09DD +:108FC00080E090E00E94CC7020E030E040E859E37F +:108FD0000E94857220E030E044EB53E40E948572E9 +:108FE0009B01AC01C301B2010E94526F4B015C01B5 +:108FF000B8016C1B7D0B80E090E00E94CC7020E0FB +:1090000030E040E859E30E94857220E030E044EB14 +:1090100053E40E9485722B013C01B701FF0C880BC1 +:10902000990B0E94CE7026E636E646EE5FE30E947C +:1090300085729B01AC01C301B2010E94536F26E609 +:1090400036E646EE5FE30E94526F9B01AC01C5011C +:10905000B4010E94536F20E030E040E05FE30E94E3 +:1090600085724B015C018DC00C171D0798F4C70178 +:1090700024E6E216F10491F0019111917C012FEFA9 +:10908000E21AF20AA080B1800A151B0568F70150A8 +:10909000104FEACFAC16BD0650F77C01B7016F5FE9 +:1090A0007F4F072E000C880B990B0E94CE7026E68E +:1090B00036E646EE5FE30E9485722B013C01BE015D +:1090C0006A197B0980E090E00E94CC7020E030E0DB +:1090D00040E859E30E94857220E030E044EB53E41D +:1090E0000E9485729B01AC01C301B2010E94526FC4 +:1090F0004B015C01B8016C1B7D0B80E090E00E948D +:10910000CC7020E030E040E859E30E94857220E016 +:1091100030E044EB53E40E9485722B013C01B7011F +:10912000FF0C880B990B0E94CE7026E636E646EEC1 +:109130005FE30E9485729B01AC01C301B2010E94F2 +:10914000536F83CF0130110559F098F002301105AB +:10915000C1F4812C912C94EBA92E92E4B92E11C06C +:1091600029E0822E26EF922E21EBA22E22E4B22EAF +:1091700008C085E2882E89E0982E83E0A82E82E43C +:10918000B82EC501B401DF91CF911F910F91FF90CF +:10919000EF90DF90CF90BF90AF909F908F907F9097 +:1091A0006F905F904F9008958F929F92AF92BF9271 +:1091B000CF92DF92EF92FF920F931F93CF93DF93A3 +:1091C000EB0127EBE22E24E1F22E8C016B018CE007 +:1091D000C80ED11C6991799189919991F70181907B +:1091E0009190A190B1907F010E94CE70A501940151 +:1091F0000E943370F80161937193819391938F0171 +:10920000CC15DD0539F7DF91CF911F910F91FF90BC +:10921000EF90DF90CF90BF90AF909F908F90089588 +:109220001F920F920FB60F9211240BB60F922F932D +:109230003F934F935F936F937F938F939F93AF93DE +:10924000BF93EF93FF9389B18095982F907184FF1E +:1092500003C091110E949056FF91EF91BF91AF9181 +:109260009F918F917F916F915F914F913F912F913E +:109270000F900BBE0F900FBE0F901F901895CF93BD +:10928000DF93C0912314D09124142097B9F081E08A +:109290008093261460913C1470913D1480913E148B +:1092A00090913F149B01AC010E948572698B7A8B6F +:1092B0008B8B9C8B1092241410922314DF91CF91EE +:1092C00008952F923F924F925F926F927F928F926A +:1092D0009F92AF92BF92CF92DF92EF92FF920F9345 +:1092E0001F93CF93DF93CDB7DEB7CD54D1090FB61F +:1092F000F894DEBF0FBECDBF80910715807723960F +:109300008FAF2397882389F020E030E0A901609196 +:109310003C1470913D1480913E1490913F140E9432 +:109320002C70882311F40C943F5220913C142F8B05 +:1093300030913D14388F40913E14498F50913F1425 +:109340005A8F80914C148B8390914D149D83A091E2 +:109350004E14AE83B0914F14BC8300913814109119 +:109360003914E0913A14E987F0913B14FD8720917C +:109370002B1430912C1440912D1450912E142DA3A8 +:109380003EA34FA358A7309127143DAF4091281416 +:109390004EAF509129145FAF80912A1421968FAF60 +:1093A0002197209133143091341440913514509109 +:1093B00036142DAB3EAB4FAB58AF3091CC13229649 +:1093C0003FAF2297409122144BA75091A6132496A9 +:1093D0005FAF24978091A5138B8F9091C210259633 +:1093E0009FAF2597A0912314B0912414BA8BA98B19 +:1093F00020912F1430913014409131145091321437 +:1094000029AF3AAF4BAF5CAF309144143B8B4091E6 +:1094100045144C8B509146145D8B809147148E8B74 +:10942000909140149C8FA0914114AD8FB091421443 +:10943000BE8FE0914314EF8F309048142090491470 +:10944000F0914A14F98320914B142A838091A71339 +:109450005BA5851709F4F4C649895A89452B09F09B +:1094600033C224965FAD24978B8D581709F478C7C3 +:10947000A82EB12CA9E2AA9DC001AB9D900D11248C +:10948000FC01ED53FF4EFA8BE98B80912614882363 +:1094900019F010922614BCC0809125148F5F85307E +:1094A00019F08093251402C010922514E091251420 +:1094B00021E12E9FF0011124E353FC4E89E28A9DA5 +:1094C000A0018B9D500D11244D535F4E7A01DA019E +:1094D0008C91808311964D915D916D917C91149743 +:1094E000DB01CA0123E0880F991FAA1FBB1F2A9521 +:1094F000D1F781839283A383B483D70115964D91CD +:109500005D916D917C911897DB01CA0133E0880F62 +:10951000991FAA1FBB1F3A95D1F785839683A7830E +:10952000B087D70119964D915D916D917C911C97F3 +:10953000DB01CA0143E0880F991FAA1FBB1F4A9590 +:10954000D1F781879287A387B487D7011D966D9144 +:109550007D918D919C9150978B019C0153E0000F60 +:10956000111F221F331F5A95D1F7058716872787AA +:10957000308B0E94CC706DAF7EAF8FAF21969FAFC6 +:109580002197F70125A136A147A150A50E9433706C +:109590006DA37EA38FA398A79B01AC0160E070E050 +:1095A00080EA9FE30E94337069AF7AAF8BAF9CAFC4 +:1095B0002396FFAD2397FF23D1F02B893C894D895A +:1095C0005E896B897C898D899E890E948572D7010D +:1095D00051966D937D938D939C935497BB89BF8BCC +:1095E000EC89E88FFD89F98F2E892A8F0DC0D7016C +:1095F00051966D917D918D919C9154970E94F2723C +:109600006F8B788F898F9A8F1DAA1EAA1FAA18AEFA +:1096100029E22A9DF0012B9DF00D1124ED53FF4E00 +:10962000FE87ED87C1A0D2A0E3A0F4A0A701960118 +:1096300060E070E080E09FE30E94337069877A8782 +:109640008B879C8723963FAD23973323F1F142E02C +:1096500040933714AD85BE8595964D905D906D9085 +:109660007C90989751968D909D90AD90BC9054971A +:10967000A50194010E9485729B01AC01C301B20156 +:109680000E94526F8B0189879D8720E030E0A901FD +:109690000E942C7087FF1BC1A7019601C701B6016C +:1096A0000E94536FA30192010E9485729B01AC013D +:1096B000C501B4010E94526F0E94F2726B8B7C8BC9 +:1096C0008D8B9E8B3F82288615C110923714ED85B5 +:1096D000FE85F5A1FF83AD85BE859696BC91B887C2 +:1096E000ED85FE8507A110A5EB8DEF5FE23109F452 +:1096F000E0E02496FFAD2497EF1789F029E22E9F32 +:10970000F0011124ED53FF4E618972898389948998 +:109710000E94F2726B8B7C8B8D8B9E8B04C01B8A9C +:109720001C8A1D8A1E8A2B893C894D895E896B891A +:109730007C898D899E890E9485722B013C0189E27A +:109740008A9DA0018B9D500D11244D535F4E5AA34D +:1097500049A3DA0151962D913D914D915C91549719 +:109760002D873E874F87588BA30192016D857E859B +:109770008F8598890E94526F29853A854B855C8533 +:109780000E9485722F813885A8010E94536F20E0C6 +:1097900030E040E05FE30E948572362E272E8983F9 +:1097A0009A8320E030E0A9010E944A7218160CF05A +:1097B00095C0232D322D49815A816F817885C8014A +:1097C0000E944A7218160CF071C0E9A1FAA1858CAA +:1097D000968CA78CB0A0A3019201C501B4010E9490 +:1097E000526F29853A854B855C850E9485726B8313 +:1097F0007D838E839C839B01AC01632D722D8981B7 +:109800009A810E944A72181694F5C501B4010E940B +:10981000F2726C8F7D8F8E8F9F8FA50194016D8565 +:109820007E858F8598890E942C70811106C0F1E099 +:10983000F093371409831A835DC02D853E854F85CB +:109840005889C501B4010E94526F29853A854B851C +:109850005C850E9485729B01AC016F817885C8018F +:109860000E94526F6F83788789839A8343C0A701D0 +:109870009601C701B6010E94536F232D322D4981F5 +:109880005A810E948572A30192010E94536F0E9427 +:10989000F2726C8F7D8F8E8F9F8F3F8228863B82E6 +:1098A0002D8229812E833A813C8324C042E040935B +:1098B000371409831A835F895C8F888D8D8F998D0A +:1098C0009E8FAA8DAF8F16C03F82288617C03F8219 +:1098D00028861B8A1C8A1D8A1E8A10C0BB89BC8FE1 +:1098E000EC89ED8FFD89FE8F2E892F8F1F821886C0 +:1098F00019821A8200E010E019861D8622965FAD5B +:109900002297452F50E05AA749A786E0849FF0018F +:10991000859FF00D1124E855FC4E8091251482831B +:10992000A989BA899596BC91B8ABE989FA89F6A15B +:10993000F9ABA989BA899796BC912696BFAF2697AD +:10994000E989FA89F0A52796FFAF279729AD3AADA7 +:109950004BAD5CAD68A979A98B2F9F2F0E94526FE8 +:109960006CA77DA78EA79FA720E030E0A9010E94E9 +:109970002C7087FF04C01CA61DA61EA61FA6209142 +:10998000371428A32B813D814E815C816F817885BE +:1099900089819A810E942C70811105C032E028963D +:1099A0003FAF289704C041E028964FAF289728A8DA +:1099B00059A92E965FAF2E9726968FAD26972D9696 +:1099C0008FAF2D9727963FAC27978EE3C82E83EC59 +:1099D000D82E8EE2E82E89E3F82E412C512C32014C +:1099E000C9A2DAA2EBA2FCA238A1332321F03130C4 +:1099F00009F485C0C5C0A989BA8991962D913D9178 +:109A00004D915C919497C701B6010E9485724B01FC +:109A10005C0120E030E040E05FE30E9485722F8926 +:109A2000388D498D5A8D0E94536FA70196010E946F +:109A300085729B01AC01622D2E967FAD2E972D96DF +:109A40008FAD2D97932D0E94526F262E2E967FAFAD +:109A50002E972D968FAF2D97392E2F8138854981DE +:109A60005A810E942C7087FF3DC02F813885498123 +:109A70005A8168A979A926968FAD269727969FAD1A +:109A800027970E94526F9B01AC010E94536F6B019C +:109A90007C012C8D3D8D4E8D5F8D6F89788D898DEC +:109AA0009A8D0E94536F9B01AC01C701B6010E94C1 +:109AB00033706B017C012896BFAD2897B8A3EC8D5D +:109AC000EF8BFD8DF88F2E8D298F3F8D3A8F2F8054 +:109AD00048852E964FAF2E9759812D965FAF2D97C3 +:109AE0003A80EBC0A50194016F89788D898D9A8D9C +:109AF0000E94536F6F8B788F898F9A8FDEC02C8D69 +:109B00003D8D4E8D5F8DC701B6010E9485729B0110 +:109B1000AC01622D2E967FAD2E972D968FAD2D9791 +:109B2000932D0E94526F4B015C012B813D814E8130 +:109B30005C810E942C7087FFB8C02B813D814E81D3 +:109B40005C81622D2E967FAD2E972D968FAD2D9731 +:109B5000932D0E94526F2C8D3D8D4E8D5F8D0E94F6 +:109B600033706B017C012B808D812E968FAF2E97E9 +:109B70009E812D969FAF2D973C80A2E0A8A39DC00B +:109B8000E989FA8921A132A143A154A1C701B601F3 +:109B90000E9485724B015C012F89388D498D5A8D49 +:109BA0000E942C7087FF52C020E030E040E05FE36D +:109BB000C501B4010E9485729B01AC016F89788D4B +:109BC000898D9A8D0E94526FA70196010E9485721D +:109BD0009B01AC01622D2E967FAD2E972D968FADF9 +:109BE0002D97932D0E94526F29966FAF29972A9631 +:109BF0007FAF2A972B968FAF2B972C969FAF2C97E2 +:109C0000980149855D850E944A721816FCF4A501E9 +:109C100094016F89788D898D9A8D0E94526F6F8B18 +:109C2000788F898F9A8F29962FAC29972A96FFAD26 +:109C30002A972E96FFAF2E972B962FAD2B972D960A +:109C40002FAF2D972C963FAC2C9737C098014985A4 +:109C50005D85622D2E967FAD2E972D968FAD2D971B +:109C6000932D0E94526F9B01AC010E94536F6B01B8 +:109C70007C012B893C894D895E896F89788D898D1E +:109C80009A8D0E94536F9B01AC01C701B6010E94DF +:109C900033706B017C01202E2E961FAF2E973985D5 +:109CA0002D963FAF2D973D8408C0282C2E969FAE51 +:109CB0002E972D96AFAE2D973B2CA7019601C30191 +:109CC000B2010E94536F2B013C0129A13AA14BA183 +:109CD0005CA10E942C7087FF07C0A301920169A1BB +:109CE0007AA18BA19CA120C02CA53DA54EA55FA566 +:109CF000622D2E967FAD2E972D968FAD2D97932D9D +:109D00000E944A72181644F52EE333EC4EE259E3F2 +:109D100069A17AA18BA19CA10E94536F69A37AA328 +:109D20008BA39CA3A30192010E94526F6B017C0143 +:109D3000980149855D85622D2E967FAD2E972D96D3 +:109D40008FAD2D97932D0E944A7218160CF44CCEAD +:109D500048A14093371403C058A1509337142DA144 +:109D60003EA14FA158A5622D2E967FAD2E972D9620 +:109D70008FAD2D97932D0E94857268A379A38CA730 +:109D800098AB0E9419706B017C016DAD7EAD8FADFB +:109D900021969FAD21970E9419704B015C01A7018C +:109DA00096010E94526F0E94A07069AB7AAB8BAB98 +:109DB0009CABA6E089A59AA5A89FF001A99FF00DEC +:109DC0001124E855FC4E29A93AA931832083232B7D +:109DD00009F087C023965FAD2397552309F481C00E +:109DE000C801A985BD858093381490933914A09338 +:109DF0003A14B0933B148B899C89AD89BE898093BA +:109E0000441490934514A0934614B09347148C8D3A +:109E10009D8DAE8DBF8D8093401490934114A0937F +:109E20004214B09343148B819D81AE81BC81809399 +:109E30004C1490934D14A0934E14B0934F148F81F3 +:109E40009885A981BA818093481490934914A0936E +:109E50004A14B0934B1422968FAD22978093CC1363 +:109E6000A989BA89B0932414A093231429AD3AADDB +:109E70004BAD5CAD20932F143093301440933114CC +:109E8000509332143B8D3093A5138DA19EA1AFA1A9 +:109E9000B8A580932B1490932C14A0932D14B093F9 +:109EA0002E149BA59093221410923C1410923D14F2 +:109EB00010923E1410923F141092331410923414E6 +:109EC0001092351410923614C0922714D092281490 +:109ED000E0922914F0922A142DA13EA14FA158A579 +:109EE00065C12DA93EA94FA958ADC301B2010E9479 +:109EF000536F2B013C0128A139A14CA558A9C501DC +:109F0000B4010E94526F9B01AC01C301B2010E94D7 +:109F100033704B015C0128A139A14CA558A9C70198 +:109F2000B6010E94526FA50194010E9485726DAB2B +:109F30007EAB8FAB98AF20EC31EE44E65EE4C5011A +:109F4000B4010E9485720E9419700E94A070603D49 +:109F5000E7E07E078105910560F446E029A53AA572 +:109F6000429FF001439FF00D1124E855FC4E1582ED +:109F700053C0603A5FE075078105910560F426E003 +:109F8000A9A5BAA52A9FF0012B9FF00D1124E85531 +:109F9000FC4E31E011C060344FE17407810591053A +:109FA00068F426E0A9A5BAA52A9FF0012B9FF00D21 +:109FB0001124E855FC4E32E035830CC0A6E049A5DB +:109FC0005AA5A49FF001A59FF00D1124E855FC4E61 +:109FD000B3E0B58346E029A53AA5429FF001439F2F +:109FE000F00D1124E855FC4E2581022E04C09695F3 +:109FF0008795779567950A94D2F7A9A9BAA902C05F +:10A00000AA0FBB1F2A95E2F7B183A08361157105E2 +:10A01000B1E08B07910568F446E029A53AA5429F77 +:10A02000F001439FF00D1124E855FC4E74836383C7 +:10A0300004C08FEF9FEF94838383BBA4B39496E017 +:10A04000B91201C0B12C980149855D85622D2E960B +:10A050007FAD2E972D968FAD2D97932D0E944A722E +:10A060001816CCF4822D2E969FAD2E972D96AFAD5F +:10A070002D97B32DE989FA8985A396A3A7A3B0A745 +:10A08000F8A1FDAF29A12EAF3CA53FAF48A921966D +:10A090004FAF2197CDC020E030E0A901622D2E9670 +:10A0A0007FAD2E972D968FAD2D97932D0E944A72DE +:10A0B00018160CF0A6C0C801A985BD858093381478 +:10A0C00090933914A0933A14B0933B148B899C89D4 +:10A0D000AD89BE898093441490934514A09346148F +:10A0E000B09347148C8D9D8DAE8DBF8D80934014A1 +:10A0F00090934114A0934214B09343148B819D819B +:10A10000AE81BC8180934C1490934D14A0934E1457 +:10A11000B0934F148F819885A981BA818093481498 +:10A1200090934914A0934A14B0934B145BA5509399 +:10A13000CC1389899A89909324148093231429AD90 +:10A140003AAD4BAD5CAD20932F1430933014409357 +:10A150003114509332143B8D3093A5138DA19EA1E1 +:10A16000AFA1B8A580932B1490932C14A0932D1419 +:10A17000B0932E14B092221410923C1410923D14FD +:10A1800010923E1410923F14109233141092341413 +:10A190001092351410923614C0922714D0922814BD +:10A1A000E0922914F0922A149C01AD01C701B60176 +:10A1B0000E943370A989BA8995966D937D938D938A +:10A1C0009C9398975CD8BB8DB093C210C35BDF4F54 +:10A1D0000FB6F894DEBF0FBECDBFDF91CF911F91B8 +:10A1E0000F91FF90EF90DF90CF90BF90AF909F9036 +:10A1F0008F907F906F905F904F903F902F900C9436 +:10A2000085342496EFAD2497FB8DEF1779F08F2FCF +:10A210008F5F823109F480E02B8D25963FAD259725 +:10A22000231303C025968FAF25978B8F1A8A198A1F +:10A230003F8028844BA522964FAF2297BBA606C924 +:10A24000C801A985BD858093381490933914A093D3 +:10A250003A14B0933B148B899C89AD89BE89809355 +:10A26000441490934514A0934614B09347148F89D7 +:10A27000988DA98DBA8D80933C1490933D14A09332 +:10A280003E14B0933F148C8D9D8DAE8DBF8D809309 +:10A29000401490934114A0934214B09343148B81C3 +:10A2A0009D81AE81BC8180934C1490934D14A093FA +:10A2B0004E14B0934F14832D922DA981BA818093AF +:10A2C000481490934914A0934A14B0934B142296C7 +:10A2D0008FAD22978093CC13A989BA89B0932414A7 +:10A2E000A093231429AD3AAD4BAD5CAD20932F1450 +:10A2F0003093301440933114509332143B8D30938B +:10A30000A5138DAD9EADAFAD2196BFAD21978093C6 +:10A31000271490932814A0932914B0932A148DA184 +:10A320009EA1AFA1B8A580932B1490932C14A09359 +:10A330002D14B0932E142DA93EA94FA958AD2093EA +:10A3400033143093341440933514509336143BA592 +:10A350003093221425964FAD25974093C2108FC09D +:10A36000C801A985BD858093381490933914A093B2 +:10A370003A14B0933B148B899C89AD89BE89809334 +:10A38000441490934514A0934614B09347148F89B6 +:10A39000988DA98DBA8D80933C1490933D14A09311 +:10A3A0003E14B0933F148C8D9D8DAE8DBF8D8093E8 +:10A3B000401490934114A0934214B09343148B81A2 +:10A3C0009D81AE81BC8180934C1490934D14A093D9 +:10A3D0004E14B0934F14832D922DA981BA8180938E +:10A3E000481490934914A0934A14B0934B142296A6 +:10A3F0005FAD22975093CC13109224141092231423 +:10A4000089AD9AADABADBCAD80932F149093301451 +:10A41000A0933114B093321424969FAD2497909357 +:10A42000A5138DAD9EADAFAD2196BFAD21978093A5 +:10A43000271490932814A0932914B0932A142DA1C3 +:10A440003EA14FA158A520932B1430932C14409378 +:10A450002D1450932E148DA99EA9AFA9B8AD809349 +:10A46000331490933414A0933514B09336149BA5F1 +:10A47000909322142596AFAD2597A093C210C35B8D +:10A48000DF4F0FB6F894DEBF0FBECDBFDF91CF9187 +:10A490001F910F91FF90EF90DF90CF90BF90AF9002 +:10A4A0009F908F907F906F905F904F903F902F90F4 +:10A4B0000895CF93DF930E940A2A8BE2E5E2F4E14C +:10A4C000DF011D928A95E9F783E2EFE9F0E1DF0110 +:10A4D0001D928A95E9F71092241410922314109279 +:10A4E000A7131092CC1381E08093221410929E1037 +:10A4F0000E948B2981B390919D109170C92FB0E07B +:10A50000DB2F96E0CC0FDD1F9A95E1F78F7BC82BF0 +:10A51000C1BBEBE0F1E0908180919D108270880FCB +:10A52000880F977F892B808381B390919D1092FB38 +:10A53000992790F98E7F892B81BB80919C1080FD9B +:10A540008F9A80FF8F98808190919C1092708D7F60 +:10A55000892B808321B390919C109470892F90E077 +:10A5600095958795922F9D7F892B81BBDF91CF9108 +:10A570000895CF93DF93C62F813009F48EC038F150 +:10A58000823009F069C10E943E408CE60E94D93FAA +:10A590000E941B408C2F0E94D93F0E941B400E94AA +:10A5A0003E408DE60E94D93F0E941B4062E070E071 +:10A5B00080E090E00E941139559A5D9A62E070E067 +:10A5C00080E090E00E941139D8E0C0E002C10E9412 +:10A5D000A5418CE60E9435410E947F418C2F0E944C +:10A5E00035410E947F410E94A5418DE60E94354180 +:10A5F0000E947F4162E070E080E090E00E941139AB +:10A60000399A419A62E070E080E090E00E9411394E +:10A61000D8E0C0E0439865E070E080E090E00E9400 +:10A620001139439ACC0F65E070E080E090E00E9421 +:10A63000113939983199C16065E070E080E090E0AF +:10A640000E941139D15031F74398399A419A62E00A +:10A6500070E080E090E00E941139439A65E070E07C +:10A6600080E090E00E941139439862E070E080E061 +:10A6700090E00E941139399A419A62E070E080E0DE +:10A6800090E00E941139439862E070E080E090E031 +:10A690000E9411390E946741E0C00E9403418CE68C +:10A6A0000E9453400E94CB408C2F0E9453400E9436 +:10A6B000CB400E9403418DE60E9453400E94CB4054 +:10A6C00062E070E080E090E00E9411398091010129 +:10A6D0008460809301018091020184608093020173 +:10A6E00062E070E080E090E00E941139D8E0C0E0C4 +:10A6F000809102018F778093020165E070E080E035 +:10A7000090E00E94113980910201806880930201DB +:10A71000CC0F65E070E080E090E00E9411398091FC +:10A7200001018B7F809301018091000182FDC16056 +:10A7300065E070E080E090E00E941139D150C1F6F0 +:10A74000809102018F7780930201809101018460E2 +:10A75000809301018091020184608093020162E094 +:10A7600070E080E090E00E941139809102018068E1 +:10A770008093020165E070E080E090E00E94113972 +:10A78000809102018F778093020162E070E080E0A7 +:10A7900090E00E9411398091010184608093010151 +:10A7A0008091020184608093020162E070E080E0A9 +:10A7B00090E00E941139809102018F77809302010D +:10A7C00062E070E080E090E00E9411390E949C40BD +:10A7D00044C05E9865E070E080E090E00E9411392E +:10A7E0005E9ACC0F65E070E080E090E00E94113945 +:10A7F00055984D99C16065E070E080E090E00E945E +:10A800001139D15031F75E98559A5D9A62E070E047 +:10A8100080E090E00E9411395E9A65E070E080E08F +:10A8200090E00E9411395E9862E070E080E090E074 +:10A830000E941139559A5D9A62E070E080E090E0E4 +:10A840000E9411395E9862E070E080E090E00E9422 +:10A8500011390E94064001C0C0E08C2FDF91CF91DA +:10A860000895EEEAF4E124813581DC010E94A073B1 +:10A87000A1E0B1E02C9128602C93A0EAB0E02C91EB +:10A8800020682C93DC01CB012AE0B695A79597951B +:10A8900087952A95D1F79093A9008093A800868187 +:10A8A00080618093A1000895CF93DF9321E5829F7B +:10A8B000C0011124EC01D55F40E550E0BE018EE5FA +:10A8C00094E10E947D5D892B59F410925E1440E55D +:10A8D00050E06EE574E1CE010E943A5D80E001C077 +:10A8E00081E0DF91CF91089590E0FC013197E23152 +:10A8F000F10508F04EC08827E654FF4F8F4F0C94A7 +:10A900009873809180008F7703C0809180008F7D45 +:10A9100080938000089580918000877FF9CF84B56F +:10A920008F7702C084B58F7D84BD08958091B0007B +:10A930008F7703C08091B0008F7D8093B000089521 +:10A94000809190008F7707C0809190008F7D03C029 +:10A9500080919000877F8093900008958091A0005F +:10A960008F7707C08091A0008F7D03C08091A000E9 +:10A97000877F8093A0000895809120018F7707C082 +:10A98000809120018F7D03C080912001877F80937B +:10A99000200108951F93CF93DF93282F30E0F90112 +:10A9A000EA57F54F8491F901E05CF54FD491F90134 +:10A9B000E650F64FC491CC23B9F0162F811194DFE5 +:10A9C000EC2FF0E0EE0FFF1FE052F64FA591B4918F +:10A9D0009FB7F894111104C08C91D095D82302C070 +:10A9E000EC91DE2BDC939FBFDF91CF911F910895F7 +:10A9F000863308F0865390917B00282F2870977F2C +:10AA0000922B90937B008770806480937C00809170 +:10AA10007A00806480937A0080917A0086FDFCCF72 +:10AA2000809178002091790090E0922B08951F92F8 +:10AA30000F920FB60F9211240BB60F922F933F93E4 +:10AA40004F935F936F937F938F939F93AF93BF9336 +:10AA5000EF93FF938091591490915A14909325018C +:10AA600080932401E0915714F0915814309709F025 +:10AA70001995FF91EF91BF91AF919F918F917F9128 +:10AA80006F915F914F913F912F910F900BBE0F905F +:10AA90000FBE0F901F9018951F920F920FB60F9236 +:10AAA00011240BB60F922F933F934F935F936F93A5 +:10AAB0007F938F939F93AF93BF93EF93FF93809177 +:10AAC000B0149091B1149093A5008093A400E091EC +:10AAD000AE14F091AF14309709F01995FF91EF91F2 +:10AAE000BF91AF919F918F917F916F915F914F91A6 +:10AAF0003F912F910F900BBE0F900FBE0F901F90A4 +:10AB00001895E2E7F0E080818E7F808308951F92A0 +:10AB10000F920FB60F9211248F939F93809108028A +:10AB20009091090290939500809394009F918F914A +:10AB30000F900FBE0F901F9018951F920F920FB697 +:10AB40000F9211240BB60F922F933F934F935F9365 +:10AB50006F937F938F939F93AF93BF93EF93FF93E5 +:10AB600080915214909153148093B200E09150144C +:10AB7000F0915114309709F01995FF91EF91BF9121 +:10AB8000AF919F918F917F916F915F914F913F9185 +:10AB90002F910F900BBE0F900FBE0F901F90189526 +:10ABA0004F925F926F927F92AF92BF92CF92DF925D +:10ABB000EF92FF920F931F93CF93DF936C01FB01F2 +:10ABC0005A01309729F08081D601A80FB11D01C02C +:10ABD000DC018C91ED018D3229F4229611968C9135 +:10ABE00001E008C08B3211F0219603C02296119625 +:10ABF0008C9100E0512C612C10E020E030E0A901A4 +:10AC00007E0160ED762E780E89E08715D8F063948A +:10AC1000A8E0A61598F051101150A5E0B0E00E94F0 +:10AC2000AF73DC01CB01880F991FAA1FBB1F9C01CA +:10AC3000AD01270D311D411D511D0BC0511009C023 +:10AC40001F5F07C0BEEF7B1208C0511006C055241D +:10AC500053942196D7018C91D3CF662009F450C02C +:10AC60007F01CA01B9010E94CC702B013C0120E098 +:10AC700030E0A9010E942C70882349F11F3F64F441 +:10AC80002AE037ED43E25CE3C301B2010E94857222 +:10AC90002B013C011E5FF2CF1F3F59F42DEC3CEC21 +:10ACA0004CEC5DE3C301B2010E9485722B013C01B3 +:10ACB0000EC0112361F020E030E040E251E4C30116 +:10ACC000B2010E9485722B013C011150F2CF00238A +:10ACD00051F077FA709477F87094F50140825182C0 +:10ACE0006282738206C0D5014D925D926D927C9214 +:10ACF0001397CC19DD09C150F701C08381E001C071 +:10AD000080E0DF91CF911F910F91FF90EF90DF9046 +:10AD1000CF90BF90AF907F906F905F904F900895CD +:10AD20008091B51484FD25C09FB7F8948091B51427 +:10AD300080618093B5149FBF0E94D02C20D7809152 +:10AD40000715982F9C7021F490910815913089F483 +:10AD50009FB7843029F4F89480910515806204C06F +:10AD6000F894809105158860809305159FBF0C9419 +:10AD70000A2A08952F923F924F925F926F927F928C +:10AD80008F929F92AF92BF92CF92DF92EF92FF92FB +:10AD90000F931F93CF93DF93CDB7DEB7C756D1097B +:10ADA0000FB6F894DEBF0FBECDBF66968FAF669725 +:10ADB0001B016B962CAF3DAF4EAF5FAF6B97A89664 +:10ADC0000FAFA8978091F41485FF51C03B0107EBAA +:10ADD00014E17B012CE0E20EF11CDD24D394D301BD +:10ADE0008D909D90AD90BD903D0120E030E0A90197 +:10ADF000C501B4010E944A72181654F0F80124A14A +:10AE000035A146A157A1C501B4010E942C7087FD50 +:10AE1000D092091580910915882319F180910715A1 +:10AE2000883061F07DDF9FB7F894809105158560CB +:10AE3000809305159FBF0E945A3919C09FB7F89497 +:10AE40008091B51488608093B5149FBF0E945A39D1 +:10AE50008091061581110BC0809107158111F6CFE5 +:10AE6000E1CF0C5F1F4FE614F70409F0B8CF8091D3 +:10AE70000715823009F47CC3F10180819181A281A0 +:10AE8000B38165968CAF9DAFAEAFBFAF6597848140 +:10AE90009581A681B78161968CAF9DAFAEAFBFAFF4 +:10AEA000619780859185A285B3852D968CAF9DAFE6 +:10AEB000AEAFBFAF2D97AE01475B5F4FBE01635B87 +:10AEC0007F4FCE018F5A9F4F0E94BD412D96ECAC13 +:10AED000FDAC0EAD1FAD2D9761962CAD3DAD4EADC9 +:10AEE0005FAD619765966CAD7DAD8EAD9FAD65979D +:10AEF000DE0191964D01FE017D965F0118976D016F +:10AF00000E941143E9A0FAA00BA11CA12D8D3E8D3A +:10AF10004F8D58A1698D7A8D8B8D9C8D0E94EB454C +:10AF2000882309F421C36091810D7091820D809175 +:10AF3000830D9091840D0E94CE702B013C01609195 +:10AF40007D0D70917E0D80917F0D9091800D0E94FE +:10AF5000CE706F966CAF7DAF8EAF9FAF6F976091E5 +:10AF6000790D70917A0D80917B0D90917C0D0E94EE +:10AF7000CE70FE01BD964F019E01275D3F4F5901E6 +:10AF8000DE0195966D01830172016F962CAD3DAD8A +:10AF90004EAD5FAD6F970E945A45A401B501C60141 +:10AFA0000E9468420E9459326696BFAD6697BB23E5 +:10AFB00019F0B13041F0DDC0E1E0F0E06796FFAF9D +:10AFC000EEAF6797DAC020E030E048EC52E46B96D1 +:10AFD0006CAD7DAD8EAD9FAD6B970E944A72181619 +:10AFE00054F480E090E0A8ECB2E46B968CAF9DAF97 +:10AFF000AEAFBFAF6B972DA13EA14FA158A5D10118 +:10B000006D917D918D919C910E94526F2B013C011D +:10B0100029A53AA54BA55CA5F101648175818681BE +:10B0200097810E94526F4B015C012DA53EA54FA553 +:10B0300058A9D10118966D917D918D919C911B9786 +:10B040000E94526F6B017C01A3019201C301B20106 +:10B050000E9485722B013C01A5019401C501B40138 +:10B060000E9485729B01AC01C301B2010E94536F23 +:10B070004B015C01A7019601C701B6010E948572D0 +:10B080009B01AC01C501B4010E94536F0E94F27292 +:10B0900020E030E040EF51E40E9485726B962CADC9 +:10B0A0003DAD4EAD5FAD6B970E9433700E94A070B6 +:10B0B00067967FAF6EAF67976A30710530F42AE00C +:10B0C00030E067963FAF2EAF679720E030E040E971 +:10B0D00050E46B966CAD7DAD8EAD9FAD6B970E94CD +:10B0E000857220E030E048EC52E40E94337020E0AA +:10B0F00030E040E05FE30E94536F20E030E040E743 +:10B1000052E40E94857220E030E040E752E40E9461 +:10B1100085726B017C016093CF147093D01480937F +:10B12000D1149093D2146093D3147093D414809359 +:10B13000D5149093D61420E030E442E955E40E94FF +:10B140004A7287FF09C0C092D714D092D814E092F7 +:10B15000D914F092DA1411C080E090E4A2E9B5E4C9 +:10B160008093D7149093D814A093D914B093DA1481 +:10B1700004C067961FAE1EAE67976796AEADBFADB3 +:10B180006797BD0180E090E00E94CC706B017C016C +:10B190002DA13EA14FA158A5F1016081718182814D +:10B1A00093810E94526FA70196010E9433706F969F +:10B1B0006CAF7DAF8EAF9FAF6F9729A53AA54BA51A +:10B1C0005CA5D10114966D917D918D919C911797FD +:10B1D0000E94526FA70196010E943370A3966CAF34 +:10B1E0007DAF8EAF9FAFA3972DA53EA54FA558A9C4 +:10B1F000F10160857185828593850E94526FA70158 +:10B2000096010E943370A7966CAF7DAF8EAF9FAF53 +:10B21000A79722242394312C67962EAD3FAD6797D4 +:10B220002215330508F49EC1B101032C000C880BD4 +:10B23000990B0E94CE706B017C019B01AC016F9653 +:10B240006CAD7DAD8EAD9FAD6F970E9485729B01F9 +:10B25000AC016DA17EA18FA198A50E94536F6D874F +:10B260007E878F87988BA7019601A3966CAD7DADE5 +:10B270008EAD9FADA3970E9485729B01AC0169A51D +:10B280007AA58BA59CA50E94536F698B7A8B8B8BBB +:10B290009C8BA7019601A7966CAD7DAD8EAD9FAD41 +:10B2A000A7970E9485729B01AC016DA57EA58FA515 +:10B2B00098A90E94536F6D8B7E8B8F8B988FAE01F8 +:10B2C0004B5E5F4FBE016F5E7F4FCE010D960E94B9 +:10B2D000BD41ED88FE880F89188D29893A894B89EF +:10B2E0005C896D857E858F859889DE01DD964D01AF +:10B2F000FE01EF5BFF4F5F0118966D010E94114345 +:10B300002196ECACFDAC0EAD1FAD219725962CAD72 +:10B310003DAD4EAD5FAD259729966CAD7DAD8EAD43 +:10B320009FAD29970E94EB45882309F417C16D85CD +:10B330007E858F8598896093850D7093860D8093A7 +:10B34000870D9093880D29893A894B895C892093D0 +:10B35000890D30938A0D40938B0D50938C0DED88A1 +:10B36000FE880F89188DE0928D0DF0928E0D00935E +:10B370008F0D1093900DFE01F1964F01DE01D596D1 +:10B380005D0138966F010E941143C9A8DAA8EBA8A5 +:10B39000FCA88DA89EA8AFA8B8AC20916D0D3091E7 +:10B3A0006E0D40916F0D5091700D69AD7AAD8BAD02 +:10B3B0009CAD0E94526F24EE38E34EE553E40E94A8 +:10B3C00085720E949B70072E000C880B990B0E94BF +:10B3D000CE7069837A838B839C832091710D309129 +:10B3E000720D4091730D5091740DC501B4010E940E +:10B3F000526F24EE38E34EE553E40E9485720E94BA +:10B400009B70072E000C880B990B0E94CE706D83E9 +:10B410007E838F8398872091750D3091760D4091B2 +:10B42000770D5091780DC701B6010E94526F20E050 +:10B4300030E044EB52E40E94536F24EE38E34EE5D3 +:10B4400053E40E9485720E949B70072E000C880BAB +:10B45000990B0E94CE7069877A878B879C870E94A0 +:10B460005A3980910615811181C09091A513809160 +:10B470006510981303C00E94A233F1CF89809A808F +:10B48000AB80BC80C501B4010E949B706093790DB4 +:10B4900070937A0D80937B0D90937C0DCD80DE8030 +:10B4A000EF80F884C701B6010E949B7060937D0D08 +:10B4B00070937E0D80937F0D9093800D49845A8404 +:10B4C0006B847C84C301B2010E949B706093810DE8 +:10B4D0007093820D8093830D9093840D2091B71407 +:10B4E0003091B8144091B9145091BA14C501B40107 +:10B4F0000E94337069837A838B839C832091BB1471 +:10B500003091BC144091BD145091BE14C701B601D6 +:10B510000E9433706D837E838F8398872091BF1440 +:10B520003091C0144091C1145091C214C301B201B2 +:10B530000E94337069877A878B879C87A8962FAD86 +:10B54000A8976B964CAD5DAD6EAD7FAD6B97CE01A0 +:10B5500001960E94D23531E03093950DFFEF2F1AFE +:10B560003F0A5ACE80E004C083E302C082E000C0FC +:10B57000C959DF4F0FB6F894DEBF0FBECDBFDF91C4 +:10B58000CF911F910F91FF90EF90DF90CF90BF90E0 +:10B59000AF909F908F907F906F905F904F903F9073 +:10B5A0002F9008951F920F920FB60F9211240BB691 +:10B5B0000F922F933F934F935F936F937F938F934C +:10B5C0009F93AF93BF93EF93FF93809107158130C3 +:10B5D00069F080910515811109C0A2DB9FB7F8942D +:10B5E000809105158360809305159FBFFF91EF91B2 +:10B5F000BF91AF919F918F917F916F915F914F918B +:10B600003F912F910F900BBE0F900FBE0F901F9088 +:10B61000189589B180719091F41496FD02C090E163 +:10B620008927882319F011F087E0089580E00895B4 +:10B630002F923F924F925F926F927F928F929F9242 +:10B64000AF92BF92CF92DF92EF92FF920F931F9330 +:10B65000CF93DF93CDB7DEB768970FB6F894DEBF10 +:10B660000FBECDBF909106159111A6C1782E27EB84 +:10B6700034E1398B288B5901CE010D964C0100E045 +:10B6800010E0C12CD12C7601A72DB0E0BD8BAC8B86 +:10B69000802F002321F0013021F094E003C091E0DD +:10B6A00001C092E0F40191934F012C893D8902C0C1 +:10B6B000359527958A95E2F720FF1BC020E030E002 +:10B6C00040EC5FEBD50194966D917D918D919C91AD +:10B6D00097970E948572362E472E582E692EA70105 +:10B6E00096010E942C7087FD04C0C32CD42CE52C3D +:10B6F000F62C0F5F1F4FB4E0AB0EB11C03301105E9 +:10B7000039F68090FA149090FB14A090FC14B0903D +:10B71000FD1484E0682E01E06AE075E1CE01019637 +:10B720000E94D4488091F514E82FF0E0FF8BEE8B57 +:10B73000FE01319626E035E13B8B2A8B1901CE01C3 +:10B740000D962C0180E090E0188E10E0B701A60164 +:10B7500070582C893D89082E02C0359527950A948A +:10B76000E2F720FF25C0A88DAF5FA88FD101149606 +:10B770001D921D921D921C9217972E893F89082EAB +:10B7800002C0359527950A94E2F720FF03C00023F5 +:10B7900019F007C0002329F0C082D182E282F3822F +:10B7A00004C04083518362837383D2012C91122B96 +:10B7B0000196BFEF4B1A5B0A349624E0220E311C2F +:10B7C0008330910531F6388D632F70E080E090E092 +:10B7D0000E94CC700E94F2729B01AC01C501B401C1 +:10B7E0000E9485726B017C01109323150E946334C3 +:10B7F00020E0B701A601CE0101960E94D2350E9439 +:10B8000061490E94A42C0023E1F003DFFE013D9674 +:10B8100020E030E090E06191462F412359F0AC01E7 +:10B82000022E02C0559547950A94E2F740FF02C0E8 +:10B83000609516232F5F3F4F2330310561F710933A +:10B8400023150E9461498091B5148473B1F08091F1 +:10B85000B514807321F064DA0E945A39ADC0011129 +:10B86000A6C0D7DE8721B9F79FB7F8948091B514A9 +:10B870008B7F8093B5149FBF04C0812F877009F020 +:10B88000C2CF0E9459520E9474348091FE1490914C +:10B89000FF140E944F3981E00827C9F020E030E012 +:10B8A00040EA50E4609100157091011580910215F5 +:10B8B000909103150E9485726B017C018090F614B3 +:10B8C0009090F714A090F814B090F91410C0C090A4 +:10B8D0000015D0900115E0900215F09003158090AE +:10B8E000FA149090FB14A090FC14B090FD146A948C +:10B8F000611012CFE090F514F12C8090001590901B +:10B900000115A0900215B09003152401350177FAB6 +:10B91000709477F8709400E010E08C899D89002E77 +:10B9200002C0959587950A94E2F780FF2CC0C70165 +:10B93000002E02C0959587950A94E2F7A889B989E7 +:10B9400080FF11C094962D913D914D915C919797F8 +:10B95000C501B4010E94536FE889F98920813181C2 +:10B960004281538106C02D913D914D915C91C3015F +:10B97000B2010E9485720E945572EA89FB89648334 +:10B980007583868397830F5F1F4F2A893B892C5FBE +:10B990003F4F3B8B2A8B888999890496998B888B9A +:10B9A0000330110509F0B9CF0E94633405C08091BE +:10B9B000B51482FF59CF4FCF68960FB6F894DEBF0B +:10B9C0000FBECDBFDF91CF911F910F91FF90EF90F0 +:10B9D000DF90CF90BF90AF909F908F907F906F90AF +:10B9E0005F904F903F902F900895EBE6F0E08081BC +:10B9F0008F7E8083E8E6F0E080818E7F80830895EB +:10BA000054985C9A8091F41483FF0BC080916B0072 +:10BA1000806180936B0080916800816080936800F2 +:10BA20000895E3CF6AE075E184E795E10C94D4488A +:10BA3000F894F999FECF92BD81BD81E08FBB80B5AE +:10BA40008627482F082E000C550B262F30E0242384 +:10BA50003523232B39F06F3F19F060BD84E006C019 +:10BA600084E104C0882321F060BD84E28FBBF99A91 +:10BA7000789408959F92AF92BF92CF92DF92EF9207 +:10BA8000FF920F931F93CF93DF935C018A017B0199 +:10BA9000E40EF51EEB01912C6C01C61AD70ACE01FB +:10BAA0008C0D9D1DCE15DF0581F0911008C0292D4C +:10BAB000990C330B232F221F2227221F01C021E0C4 +:10BAC0006991922E960EB4DFEACF692DC501800FE1 +:10BAD000911FDF91CF911F910F91FF90EF90DF9019 +:10BAE000CF90BF90AF909F90A3CFF999FECF92BD1A +:10BAF00081BD81E08FBB80B508959F92AF92BF92C8 +:10BB0000CF92DF92EF92FF920F931F93CF93DF9329 +:10BB10005B018A017C01E40EF51EEC01912C6B01A6 +:10BB2000C81AD90AC6018C0F9D1FCE15DF0581F0FA +:10BB3000DCDF911008C0292D990C330B232F221F15 +:10BB40002227221F01C021E0982E920E8993EACF6E +:10BB5000C501800F911FC9DF21E030E0981611F078 +:10BB600020E030E0C901DF91CF911F910F91FF904C +:10BB7000EF90DF90CF90BF90AF909F9008955C982A +:10BB80000895CF93DF93CDB7DEB7CC56D1090FB66A +:10BB9000F894DEBF0FBECDBF8091C000826080935D +:10BBA000C0001092C50080E18093C4009091C10054 +:10BBB00090619093C1009091C10098609093C100F2 +:10BBC0009091C10090689093C1009091C8009260DC +:10BBD0009093C8001092CD008093CC009091C90042 +:10BBE00090619093C9009091C90098609093C900AA +:10BBF0009091C90090689093C9009091D000926094 +:10BC00009093D0001092D5008093D4009091D100F1 +:10BC100090619093D1009091D10098609093D10061 +:10BC20009091D10090689093D100909130019260F2 +:10BC3000909330011092350180933401809131014D +:10BC4000806180933101809131018860809331015E +:10BC5000809131018068809331010E945932869A27 +:10BC6000879A829A80910A01886080930A01809164 +:10BC70000A01826080930A018091070181608093AC +:10BC80000701809A819A579A809107018061809379 +:10BC90000701809107018860809307018091070167 +:10BCA000846080930701809108018F7E8093080152 +:10BCB00080910801886080930801809108018B7F42 +:10BCC000809308018091F41482FF08C08A9A8091C1 +:10BCD00008018160809308015F9A07C08A9880916B +:10BCE00008018E7F809308015F98809181008F7E8C +:10BCF0008093810080918100886080938100809191 +:10BD000080008C7F80938000809180008F70809372 +:10BD1000800080916E00887F80936E0014BC15BCFB +:10BD200080916E00816080936E0054985C9A80913F +:10BD30006D00806180936D008091680084608093C5 +:10BD400068008AE090E00E944F390E948C3D399A49 +:10BD50003B9A419A439A809101018460809301014A +:10BD600080910101806880930101809102018460CB +:10BD70008093020180910201806880930201559AAC +:10BD8000569A5D9A5E9A0E94854605E91EE081E01A +:10BD900090E07C012FEFE21AF20AA7DED8018D9322 +:10BDA0008D01C7018B3C9105A1F755E1C52E5EE0E1 +:10BDB000D52E87010F5F1F4FC70197DEF6018193D4 +:10BDC0006F0178010B34F1E01F0799F74BE9E42E7E +:10BDD0004DE0F42E68012FEFC21AD20AC80185DEA9 +:10BDE000D7018D937D018601B5ECCB16B1E0DB0662 +:10BDF00089F720E030E04AE754E464E071E080E055 +:10BE000090E00E94303E84E893E06FDE80935F0D07 +:10BE100085E893E06ADE8093600D01E61DE088E925 +:10BE200093E07C01EFEFEE1AFE0A5FDED8018D93FE +:10BE30008D01C701BCE9EB16B3E0FB0691F705E6FF +:10BE40001DE08EE893E07C01EFEFEE1AFE0A4DDE76 +:10BE5000D8018D938D01C701B2E9EB16B3E0FB0663 +:10BE600091F709E61DE082E89CE07C01EFEFEE1A15 +:10BE7000FE0A3BDED8018D938D01C701B6E8EB16B3 +:10BE8000BCE0FB0691F7C090690DD0906A0DE09080 +:10BE90006B0DF0906C0D20E030E044EB53E4C701F3 +:10BEA000B6010E944A72181644F0A7019601C70114 +:10BEB000B6010E943A73882341F01092690D1092E6 +:10BEC0006A0D10926B0D10926C0D0AE11DE08AEE66 +:10BED00093E07C01EFEFEE1AFE0A07DED8018D93A6 +:10BEE0008D01C701B6EFEB16B3E0FB0691F7609149 +:10BEF000690D70916A0D80916B0D90916C0DFE0132 +:10BF000031967F018F0124E045E00E94D76CFF92BB +:10BF1000EF928BE093E09F938F930E94AF330E9448 +:10BF2000873D0E94843D0E94733D0E94943F0E9481 +:10BF3000FF3C80917A00876880937A009B98A39A4F +:10BF40008FE08093910D0E949E3E8AEB92E09F933A +:10BF50008F938DE193E09F938F930E94AF3389EC91 +:10BF600092E09F938F9380E393E09F938F930E943F +:10BF7000AF3380ED92E09F938F9380E493E09F93A3 +:10BF80008F930E94AF338091600D8F9380915F0DEE +:10BF90008F938FE493E09F938F930E94AF3380E65B +:10BFA00093E00E9458348EE1E6E0F5E1DF011D9256 +:10BFB0008A95E9F781E08093061578949091F414BE +:10BFC0000FB6F894DEBF0FBECDBF94FD809307156A +:10BFD0009E01235C3F4F6F963FAF2EAF6F971E01C0 +:10BFE00035E1230E311CCE018996A1969FAF8EAF0D +:10BFF000A197DE011196A396BFAFAEAFA397809134 +:10C00000E00F8093DF0F8FE3EDE5F5E1DF011D9297 +:10C010008A95E9F760E875E180E00E94452E81117C +:10C0200003C087E00E94FF310C9A549A549A0E94F0 +:10C03000D02C549AA4DDE4DC54985C9A0E947434A9 +:10C040000E9459520E946334EDDC10920615109242 +:10C05000B5141092051510920815109209158091CB +:10C060000715813099F480ED99E00E940A348AEA3C +:10C0700099E00E940A348DE599E00E940A34A49662 +:10C080001FAEA497A5961FAEA5973DC010920715A9 +:10C09000F6CF8091060185FD20C00E948155109247 +:10C0A000960D809102018F7D809302018091690D30 +:10C0B00090916A0DA0916B0DB0916C0DB05880936A +:10C0C000861090938710A0938810B093891060E039 +:10C0D00070E084EB92E40E94F03E80918210909197 +:10C0E0008310A0918410B0918510892B8A2B8B2B03 +:10C0F00051F41092960DE4E6F3E0FF93EF930E9463 +:10C10000AF330F900F908091960D8823E1F0C1CF4F +:10C11000E92FF0E0E15AF04F80819F5F903809F4F9 +:10C1200090E09093DF0F8F3F09F477C58A3091F04C +:10C130008D3081F0A596BFADA597BB2309F439C515 +:10C14000893209F42FC59091DF0F8091E00F981389 +:10C15000DFCF63C50EE514E1A4963FADA497E32FAE +:10C16000F0E0E25AFB4E10820E945A398091061587 +:10C17000811111C58AE0D1011D928A95E9F780915C +:10C180005E14843209F076C481E08DAF80915F1433 +:10C19000833481F034F4882351F0843209F06FC283 +:10C1A00009C0873439F0883509F069C203C088E6D0 +:10C1B00096E054C39091601491114EC4833409F4F5 +:10C1C0002DC21CF4843241F04DC4873409F46AC195 +:10C1D000883509F440C246C480910715887109F07A +:10C1E0003DC484E696E00E940A348091E7140E94E0 +:10C1F000FC338BE496E00E940A348091EA140E949A +:10C20000FC338DE296E00E940A348091E8140E948B +:10C21000FC3384E196E00E940A348091E8140E9485 +:10C2200007348DE096E00E940A348091E9140E9460 +:10C23000FC3385EF95E00E940A348091E9140E9456 +:10C2400007348EEE95E00E940A348091F41482FB4C +:10C25000882780F90E94FC338DEC95E00E940A3417 +:10C260008091F41486FB882780F90E94FC338DEAC4 +:10C2700095E00E940A348091F414881F8827881F53 +:10C280000E94FC338DE895E00E940A348091EB1403 +:10C290000E94FC3387E795E00E940A348091EB14FA +:10C2A0000E9407348FE695E00E940A346091EC14F6 +:10C2B0007091ED148091EE149091EF140E94DE3392 +:10C2C0008FE495E00E940A346091F0147091F114AB +:10C2D0008091F2149091F3140E94DE3384E395E090 +:10C2E0000E940A348091F41481700E94FC3387E12B +:10C2F00095E00E940A348091F41485FB882780F928 +:10C300000E94FC338CEF94E00E940A348091F41474 +:10C3100083FB882780F90E94FC3381EE94E00E9421 +:10C320000A348091F414829581700E94FC3385EC6C +:10C3300094E00E940A348091F5140E94FC338BEA49 +:10C3400094E00E940A348091F5140E94073483EA35 +:10C3500094E00E940A346091F6147091F714809171 +:10C36000F8149091F9140E94DE3386E894E00E945C +:10C370000A346091FA147091FB148091FC1490912E +:10C38000FD140E94DE3389E694E00E940A34809115 +:10C39000FE140E94FC338AE494E00E940A34609107 +:10C3A00000157091011580910215909103150E945E +:10C3B000DE3381E394E00E940A3410E034E6D32EA9 +:10C3C00027EBE22E24E1F22E00E08FE294E00E94BF +:10C3D0000A34802F8D0D0E94FC338DE294E00E9480 +:10C3E0000A34123091F01330E1F0113031F0F701DE +:10C3F00060817181828193811CC0D7011C966D91EF +:10C400007D918D919C911F9714C020E030E041E612 +:10C4100055E4F701608D718D828D938D0E9433708C +:10C4200008C0F70184A195A1A6A1B7A1BC01CD01C7 +:10C4300090580E94DE338AE294E00E940A34013070 +:10C4400029F0023031F088E294E005C086E294E001 +:10C4500002C084E294E00E940A34123051F013309A +:10C4600059F0113019F08AE194E008C088E094E0B6 +:10C4700005C087EF93E002C087EE93E00E940A3484 +:10C4800083EE93E00E940A340F5FF4E0EF0EF11C9C +:10C49000033009F09ACF2AE0D20E1F5F3CE8D31296 +:10C4A0008FCFE0C281EE93E00E940A3480915D1547 +:10C4B000823091F038F4882361F08130A9F48BED5B +:10C4C00093E00CC0833069F0883071F481ED93E023 +:10C4D00005C08EED93E002C088ED93E00E940A341F +:10C4E0000CC085ED93E0FACF8CEC93E00E940A3407 +:10C4F00080915D1582500E94FC3389EC93E00E948C +:10C500000A34809163158A5C0E94FC338091611526 +:10C51000813049F028F0823051F48AEB93E005C075 +:10C5200084EC93E002C08FEB93E00E940A34809188 +:10C530005F15811103C085EB93E002C080EB93E0AF +:10C540000E940A3480916015811103C08BEA93E048 +:10C5500002C086EA93E00E940A3480915E15813021 +:10C5600019F481EA93E002C08CE993E00E940A3456 +:10C5700080916415813049F028F0823051F480E9CF +:10C5800093E005C088E993E002C084E993E00E944B +:10C590000A3480916615813031F040F0823051F4D8 +:10C5A00088E893E005C08CE893E002C084E893E05B +:10C5B0000E940A3480916515882329F0823039F46D +:10C5C0008CE793E002C080E893E00E940A3489E798 +:10C5D00093E00E940A3480916F150E94FC3386E735 +:10C5E00093E00E940A3460916B1570916C158091F4 +:10C5F0006D1590916E150E94E03383E793E00E94E1 +:10C600000A34609167157091681580916915909151 +:10C610006A150E94E0338FE693E020C180910715F0 +:10C62000823049F40E94905680ED99E00E940A34CD +:10C6300087E899E00BC0811111C282E08093071551 +:10C6400080ED99E00E940A3480E999E00E940A3462 +:10C650008DE599E003C180910715813009F002C290 +:10C6600080ED99E00E940A3488E999E00E940A343A +:10C670008DE599E00E940A3410920715F3C190915C +:10C680000715923008F0EAC1893409F4C5C034F4C2 +:10C69000833259F0883409F480C064C18E3409F4BF +:10C6A00036C1823509F4F9C05DC182E08DAF809159 +:10C6B00060148111D1C110E0BE016F5F7F4F812FE7 +:10C6C0000E94452E811104C087E00E94FF31CAC13B +:10C6D0008CE693E00E940A34163029F0173041F4BA +:10C6E00086E693E002C089E693E00E940A3404C023 +:10C6F00086E3810F0E94FC3384E693E00E940A34B3 +:10C70000CE0101967C0100E0D7016D917D918D9164 +:10C710009D917D010E94EE33023019F082E693E094 +:10C7200002C08EE593E00E940A340F5F033061F788 +:10C730001F5F183009F688E593E00E940A349CE8F0 +:10C74000E92E95E1F92E10E0F70161917191819147 +:10C7500091917F010E94EE33123019F086E593E04B +:10C7600002C082E593E00E940A341F5F133061F734 +:10C770008CE493E00E940A346091981570919915A9 +:10C7800080919A1590919B150E94EE3388E493E076 +:10C790000E940A340E94183465C18091F41484FF09 +:10C7A00059C184E08093071520D984E00E94185B6A +:10C7B00083E00E94185B0E945A398091061581110E +:10C7C00002C030D91DD98091061581114BC110923C +:10C7D00007150E940A2A10E0812F0E9454548111EB +:10C7E00002C087E013C080915E14882389F08EE533 +:10C7F00094E10E9458348EE594E10E9488058111ED +:10C8000005C08BEB98E00E940A3402C00E94FF3101 +:10C810001F5F123009F726C182E08DAF809160144E +:10C8200081111FC040E550E06EEA7BE08EE594E1A7 +:10C8300064D9892B49F410925E1440E550E06EE50E +:10C8400074E18EEA9BE016D988E393E00E940A34F3 +:10C850008EE594E10E94583484E393E00E940A3408 +:10C8600001C193E09DAF8D3309F0F6C083E0282F1E +:10C8700030E0F901E25AFB4E9081D901A55ABB4E36 +:10C880009C938F5F90819111F2CF8DAF40E550E086 +:10C890006EE574E18EEA9BE0ABC082E08DAF8091E3 +:10C8A0006014833509F0D8C083E08DAF80916114A6 +:10C8B000843509F0D1C084E08DAF809162148D334E +:10C8C00009F0CAC0809164148111C6C085E08DAFA3 +:10C8D00080916314843239F08A3239F0833209F05E +:10C8E000BBC082E003C081E001C08FEF0E94652ED3 +:10C8F00080ED99E00E940A3481E699E00E940A34B2 +:10C900008DE599E00E940A340E949056ABC082E007 +:10C910008DAF80916014811121C010E0812F0E94A1 +:10C920005454811104C087E00E94FF3113C081E399 +:10C9300093E00E940A34812F0E94FC338FE293E03F +:10C940000E940A348EE594E10E9458348CE293E010 +:10C950000E940A341F5F123009F784C091117EC013 +:10C9600011E001C010E0AE01475D5F4FBE01635CA6 +:10C970007F4F8EE594E10E94D055811102C082E084 +:10C9800076C0EDAD81E08E0F8DAFF0E0E25AFB4E48 +:10C9900090819D3309F060C0112361F1482F50E070 +:10C9A000282F30E0D901A25ABB4E9C91241B350B95 +:10C9B000F901E25AFB4E90838F5F9C919111F0CF69 +:10C9C0008DAF8EE594E10E948805811149C069A56B +:10C9D0007AA58BA59CA50E9433730E94A070F1E5F7 +:10C9E0006F9FC001112440E550E06EE574E1955F52 +:10C9F00041D838C0AE014F5F5F4FBE01635C7F4FCF +:10CA00008EE594E10E94D055882309F4B8CFEDADAE +:10CA1000F0E0E25AFB4E808181111EC089A49AA4E5 +:10CA2000ABA4BCA420E030E04FE753E4C501B4015F +:10CA30000E944A72181684F0C980DA80EB80FC806C +:10CA4000C501B4010E94A070862FB701A6010E9403 +:10CA50003A2D06C085E00BC083E009C088E007C01E +:10CA6000811105C08BEB98E00E940A3494C00E94AB +:10CA7000FF3191C08332D1F43F922F928CE793E043 +:10CA80009F938F931F930F930E94F973F10101906D +:10CA90000020E9F7BF0162197309625A7B4E0F90BB +:10CAA0000F900F900F900F900F900BC0873439F0BC +:10CAB0008D3429F0803519F0833509F06CC06EE5AE +:10CAC00074E1DB018C91803511F0833509F58EEA34 +:10CAD0009CE00E94C4738D89882391F03F922F922D +:10CAE00084E893E09F938F9382EE9CE09F938F93D3 +:10CAF0000E94CB730F900F900F900F900F900F909C +:10CB000082E3EEE5F4E1DF011D928A95E9F743C087 +:10CB10008091AE04843148F088E893E09F938F932E +:10CB20000E94AF330F900F9036C00091AC04B6E670 +:10CB3000B09F80011124C8018B549B4F0E94C47385 +:10CB40008D89882391F03F922F9284E893E09F9300 +:10CB50008F9307511B4F1F930F930E94CB730F901E +:10CB60000F900F900F900F900F9082E3EEE5F4E19D +:10CB7000DF011D928A95E9F78091AC04833120F49E +:10CB80008F5F8093AC0402C01092AC048091AE041D +:10CB90008F5F8093AE04A4961FAEA497A5961FAE98 +:10CBA000A5973BC0B13009F0CECAA5961FAEA59798 +:10CBB000CACA813208F4C7CA8F3209F4C4CA88329B +:10CBC00011F18B3329F1A496EFADA497EF3438F02F +:10CBD0008BE00E94FF31A4961FAEA497B4CAA4961E +:10CBE000FFADA4972F2F30E04F2F4F5F9FE9980F95 +:10CBF000F901E25AFB4E9A3108F480528083A496E0 +:10CC00004FAFA497A0CA21E0A5962FAFA5979BCAC6 +:10CC100032E0A5963FAFA59796CA8091AE0C8823C7 +:10CC200099F08EEA9CE00E9488058093E00C62EE09 +:10CC30007CE00E94A33C81E08093E10C82E3AEEAB9 +:10CC4000BCE01D928A95E9F78091920D81113FC059 +:10CC50008091AE048823D9F18091970D8823B9F192 +:10CC60008091980D882399F10091AD04B6E6B09FAC +:10CC7000800111240B541B4FC8010E948805F80144 +:10CC800082ABF090AD04F6E6FF9D80011124B8015F +:10CC900067517B4F0B541B4FD801D2968C910E9449 +:10CCA000A33C81E0F80183AB82E3D8011D928A9511 +:10CCB000E9F7B2E1BF1520F0F394F092AD0402C0A1 +:10CCC0001092AD048091AE0481508093AE040E9416 +:10CCD000A2330E945A3980910615811190C9809122 +:10CCE000E10C882369F082EE9CE00E94583482E3D4 +:10CCF000E2EEFCE0DF011D928A95E9F71092E10C6B +:10CD000080910715882309F4E6C08091930D88234C +:10CD100009F41AC11092930D6D961CAE1DAE1EAE95 +:10CD20001FAE6D9769961CAE1DAE1EAE1FAE699705 +:10CD300065961CAE1DAE1EAE1FAE659784E16F9664 +:10CD4000EEADFFAD6F97282F11922A95E9F7A196C6 +:10CD5000AEADBFADA197E82F1D92EA95E9F7D101DD +:10CD6000E82F1D92EA95E9F7A396AEADBFADA39764 +:10CD70001D928A95E9F780E090E00E940147A9960C +:10CD80006CAF7DAF8EAF9FAFA99781E090E00E941E +:10CD90000147AD966CAF7DAF8EAF9FAFAD9782E090 +:10CDA00090E00E9401476B017C0120E030E040E010 +:10CDB0005FE3609100027091010280910202909104 +:10CDC00003020E94526F20E030E040E05FE30E94E7 +:10CDD000857220E030E044E353E40E9485729B01B9 +:10CDE000AC0160E070E084E393E40E94526F2B0199 +:10CDF0003C0120E030E044EB52E4C701B6010E9460 +:10CE0000526FFE01EF5AFF4F4F019E012B5A3F4FC9 +:10CE10005901DE01A75ABF4F6D017B018C01AD9610 +:10CE20002CAD3DAD4EAD5FADAD97A9966CAD7DAD72 +:10CE30008EAD9FADA9970E947644A401B501C601AD +:10CE40000E9468426D966CAD7DAD8EAD9FAD6D97C5 +:10CE50008E01035C1F4F24E045E0A9D569966CADB7 +:10CE60007DAD8EAD9FAD69970451110924E045E079 +:10CE70009ED565966CAD7DAD8EAD9FAD65978101FC +:10CE800024E045E094D58E010F5F1F4F24E045E07C +:10CE9000C301B2018CD51F930F933F922F92A1969D +:10CEA000FFADA197FF93A0962FADA0972F936F96FC +:10CEB0003FAD6F973F936E968FAD6E978F938AE9D4 +:10CEC00093E09F938F930E94AF330FB6F894DEBF29 +:10CED0000FBECDBF39C08091970D882309F415CFBF +:10CEE0008091980D882309F410CF04E110E082E3CB +:10CEF000B82EA090AD0CB6E6BA9DC0011124FC017D +:10CF0000EB54FB4F7F0123A9222309F4FECE9C01A1 +:10CF100027513B4F6901C9010E945834D601EB2DBE +:10CF20001D92EA95E9F7D701D3961C92B2E1BA15A2 +:10CF300028F081E08A0D8093AD0C02C01092AD0CF8 +:10CF400001501109B1F6E1CE82B301E083FB8827DD +:10CF500080F980279091B4048917D9F08AE090E095 +:10CF60000E944F3912B313FB112710F9102780913B +:10CF7000B404181771F01F921F938EEA93E09F93E9 +:10CF80008F930E94AF331093B4040F900F900F90C3 +:10CF90000F908091B0049091B104A091B204B0912F +:10CFA000B3048F3F9105A105B10509F060F4019626 +:10CFB000A11DB11D8093B0049093B104A093B2045D +:10CFC000B093B30424C01092B0041092B104109234 +:10CFD000B2041092B3048BE30E94F85411E085363A +:10CFE000910508F410E08091AF04811781F01F9241 +:10CFF0001F9389EB93E09F938F930E94AF3310931D +:10D00000AF041093990D0F900F900F900F90809197 +:10D010000715811112C08091940D882371F08091C1 +:10D02000950D882351F081EC93E09F938F930E949C +:10D03000AF331092950D0F900F9080919A0D882329 +:10D0400009F461C880910715811128C18091910D63 +:10D050008F3009F023C18091990D882309F41EC1F6 +:10D060008091140D9091150D9C012F5F3F4F3093CF +:10D07000150D2093140D45970CF445C821961CAE50 +:10D080001DAE1EAE1FAE219719A61AA61BA61CA682 +:10D090001D8A1E8A1F8A188EE0908D0DF0908E0DCD +:10D0A00000918F0D1091900D2091890D30918A0D76 +:10D0B00040918B0D50918C0D6091850D7091860D76 +:10D0C0008091870D9091880D4101FE01B9965F0115 +:10D0D000DE01DD966D010E94114380E090E00E9428 +:10D0E00001474B015C0181E090E00E9401476B0128 +:10D0F0007C0182E090E00E9401472B013C01A501E8 +:10D10000940121966CAD7DAD8EAD9FAD2197CAD6B1 +:10D110009F7720E030E040E05FE30E944A721816FB +:10D120003CF1A701960169A57AA58BA59CA5BAD665 +:10D130009F7720E030E040E05FE30E944A721816DB +:10D14000BCF0A30192016D897E898F89988DAAD642 +:10D1500020E030E044EB52E4A6D69F7720E030E0B8 +:10D1600040E05FE30E944A72181614F00C9483604A +:10D170008EE1E6E0F5E1DF011D928A95E9F70E9474 +:10D1800063340E94125D80926D0D90926E0DA0929C +:10D190006F0DB092700DC092710DD092720DE09231 +:10D1A000730DF092740D4092750D5092760D609251 +:10D1B000770D7092780D80910A1590910B15A091C2 +:10D1C0000C15B0910D158093790D90937A0DA09365 +:10D1D0007B0DB0937C0D80910E1590910F15A09151 +:10D1E0001015B091111580937D0D90937E0DA09335 +:10D1F0007F0DB093800D8091121590911315A09121 +:10D200001415B09115158093810D9093820DA09304 +:10D21000830DB093840D8CE0A396EEADFFADA39784 +:10D2200011928A95E9F78091850D9091860DA091D4 +:10D23000870DB091880D89839A83AB83BC838091DD +:10D24000890D90918A0DA0918B0DB0918C0D8D83DD +:10D250009E83AF83B88780918D0D90918E0DA091A4 +:10D260008F0DB091900D89879A87AB87BC87AE01EF +:10D27000475F5F4FBE016B5F7F4FCE0101960E94FB +:10D28000684200E020E030E048E452E4BE016F5F15 +:10D290007F4F80E00E94BA560C9483601092150D67 +:10D2A0001092140D0C948360CF930E94A233C9E2B4 +:10D2B0000E945A3980910615811111C08091A513E1 +:10D2C0009091A613981739F0C89FC00111248D536F +:10D2D0009F4E892B69F780910715883049F3CF91CC +:10D2E0000895CF93209151153091521540915315C7 +:10D2F0005091541560917415709175158091761543 +:10D3000090917715A9D6811126C02091551530919D +:10D310005615409157155091581560917815709198 +:10D32000791580917A1590917B1596D6811113C04D +:10D33000C1E02091591530915A1540915B155091DB +:10D340005C1560917C1570917D1580917E15909192 +:10D350007F1582D68111C0E08C2FCF910895CF9296 +:10D36000DF92EF92FF920F93CF93DF9330910715E7 +:10D37000323009F482C0C02FD22F042F6B017C0100 +:10D3800093DF10922215109204158091F41487FDFA +:10D3900003C080E180930415DD2331F090910415E2 +:10D3A00080E189278093041589B1807190910415DB +:10D3B000891751F09FB7F89480910515806180938B +:10D3C00005159FBF0E945A3980910615811155C0DD +:10D3D000A701960161E575E181E00E94BA5681E0FE +:10D3E0008093B6149FB7F8948091B51482608093AF +:10D3F000B5149FBF0E945A398091061581113DC016 +:10D40000809107158111F6CF8091B6148130A9F46F +:10D41000CC2351F08CE0EAE0F5E1A6E1B5E1019022 +:10D420000D928A95E1F70CC09FB7F894809105158D +:10D430008061809305159FBF03C081E08093221512 +:10D440001092B6140E945A3980910615811115C0A8 +:10D450000E9459520E9474340E9463346AE075E15C +:10D4600081E595E10E94D448DF91CF910F91FF9023 +:10D47000EF90DF90CF900C941834DF91CF910F9103 +:10D48000FF90EF90DF90CF9008952F923F924F92B0 +:10D490005F926F927F928F929F92AF92BF92CF9244 +:10D4A000DF92EF92FF920F931F93CF93DF93CDB74D +:10D4B000DEB7E1970FB6F894DEBF0FBECDBF6D8328 +:10D4C0007E838F8398872F87388B498B5A8B0D8B60 +:10D4D000AD868B8A24E0E29E80011124C8018C581D +:10D4E0009A4E9F8B8E8BD801AD5CBA4EB98FA88FA8 +:10D4F0008D909D90AD90BC90FC0120813181428146 +:10D500005381C501B401CFD46A8F7B8F8C8F9D8FDF +:10D51000F4E0CF9E1001112491012C583A4E3F8F18 +:10D520002E8FC1018D5C9A4E99A388A3DC01CD900A +:10D53000DD90ED90FC90F901208131814281538191 +:10D54000C701B601B0D46AA37BA38CA39DA3240119 +:10D55000350177FA709477F87094D701C601B05806 +:10D5600089839A83AB83BC83F801EF5AFA4E2A8DE4 +:10D570003B8D4C8D5D8D608171818281938192D4D0 +:10D580004B015C01F101EF5AFA4E2AA13BA14CA1DB +:10D590005DA1608171818281938184D46B017C0162 +:10D5A000A5019401C301B201B0D769877A878B873F +:10D5B0009C87A701960169817A818B819C81A5D77F +:10D5C0009B01AC0169857A858B859C856CD46987C4 +:10D5D0007A878B879C87A7019601C301B20195D7F3 +:10D5E0006B017C01A501940169817A818B819C8109 +:10D5F0008CD79B01AC01C701B60154D429853A856B +:10D600004B855C85C3D46B017C019B89992389F090 +:10D610002DEB37E346E055EBC701B6013BD787FD5D +:10D620001AC02BED3FE049EC50E4C701B6013AD4F3 +:10D6300010C02DEB37E346E055E3C701B6010CD52A +:10D6400018164CF02BED3FE049EC50E4C701B60151 +:10D650002AD46B017C018090F0149090F114A0907A +:10D66000F214B090F3142D813E814F815885CA0188 +:10D67000B90119D4A501940115D4A501940145D788 +:10D68000B1D74B015C0120E030E040E05FE3C7012F +:10D69000B6013BD72D813E814F81588536D79F7784 +:10D6A000A5019401E0D4B5D54BD57C8B6B8BDB0108 +:10D6B000AB2B09F459C14B01A12CB12CBD89BB2363 +:10D6C00071F0C501B40168D59B01AC016F85788903 +:10D6D00089899A891AD76F87788B898B9A8BC5012C +:10D6E000B4015AD54B015C019B01AC01C701B601E5 +:10D6F000BAD46D837E838F839887FD85E4E0FE9F97 +:10D70000C00111249C012C583A4E3E872D87FC0104 +:10D71000EF5AFA4ED9012D913D914D915C91608166 +:10D72000718182819381BED3A50194019CD46EA79F +:10D730007FA788AB99AB2D813E814F815885CA0167 +:10D74000B901E3D69B01AC0160E070E080E090E4B9 +:10D75000A9D36B017C012BEA3AEA4AE25EE36D81D0 +:10D760007E818F819885D1D64B015C0120E030E02D +:10D7700040E850E4C701B60196D39B01AC01C50156 +:10D78000B401C3D669877A878B879C8720E030E015 +:10D7900040E05FE3C701B601B8D66EA37FA388A7B8 +:10D7A00099A710E022242394312CEB89FC89E215FF +:10D7B000F30509F4D9C01C3008F03AC029813A8138 +:10D7C0004B815C816EA17FA188A599A59ED66B0136 +:10D7D0007C01A301920169857A858B859C8595D60C +:10D7E000A701960160D37B01082FD92EA3019201D6 +:10D7F0006EA17FA188A599A588D64B015C012981DE +:10D800003A814B815C8169857A858B859C857DD643 +:10D810009B01AC01C501B40145D32B013C011F5F45 +:10D82000C701A02FBD2D89839A83AB83BC835BC0C6 +:10D83000B10180E090E0B0D42D813E814F815885C8 +:10D8400064D66B017C010CD469837A838B839C83BF +:10D85000C701B601BDD64B015C01E88DF98DC080D2 +:10D86000D180E280F380F7FAF094F7F8F094A8A161 +:10D87000B9A18D919D910D90BC91A02D8AA79BA7D8 +:10D88000ACA7BDA7A701960169817A818B819C8194 +:10D890003CD62B013C012AA53BA54CA55DA5C501A5 +:10D8A000B40133D69B01AC01C301B201FCD22B0100 +:10D8B0003C01A7019601C501B40127D66B017C018B +:10D8C0002AA53BA54CA55DA569817A818B819C81A8 +:10D8D0001CD69B01AC01C701B601E4D269837A83EF +:10D8E0008B839C8310E0A30192016A8D7B8D8C8DCC +:10D8F0009D8DD9D2EE89FF89608371838283938362 +:10D9000029813A814B815C816AA17BA18CA19DA177 +:10D91000CAD2AE8DBF8D6D937D938D939C931397DB +:10D920002EA53FA548A959A9ED85FE856081718185 +:10D9300082819381B8D2AD85BE856D937D938D93A1 +:10D940009C9313970D892F85388949895A8964E7F3 +:10D9500075E181E00E94BA568091061581110EC0D2 +:10D96000BFEF2B1A3B0A21CF0D892F8538894989B2 +:10D970005A8961E575E181E00E94BA56E1960FB6D9 +:10D98000F894DEBF0FBECDBFDF91CF911F910F91F5 +:10D99000FF90EF90DF90CF90BF90AF909F908F90CF +:10D9A0007F906F905F904F903F902F900895EF92EF +:10D9B0000F931F93CF93DF93E80147FD02C034E03C +:10D9C00001C034E1042E000C550B57FF03C05195E4 +:10D9D00041955109E32E022F242FAE0107D0CE012D +:10D9E000DF91CF911F910F91EF9008958F929F92A9 +:10D9F000AF92BF92CF92DF92EF92FF920F931F935D +:10DA0000CF93DF93CDB7DEB729970FB6F894DEBF7B +:10DA10000FBECDBF6A01122FB02E2BE3201720F0CE +:10DA2000FF24F394F00E02C02CE3F22E0F2D27E01A +:10DA3000AE014F5F5F4F50D1BC014981842F897087 +:10DA4000813031F0E1FC06C0E0FE06C090E205C086 +:10DA50009DE203C09BE201C090E05E2D507143FF48 +:10DA60003CC0911102C083E001C084E0811718F42A +:10DA7000212F281B01C020E051110BC0F601822F7D +:10DA800030E2882319F031938150FBCFC20ED11CB4 +:10DA900020E0992329F0D6019C93F60131966F017D +:10DAA000C6010396E2FE0AC03EE4D6013C9341E47F +:10DAB00011964C93119712963C9306C03EE6F601E0 +:10DAC000308341E641833283FC01322F40E233232D +:10DAD00009F442C041933150FACF42FF44C0911142 +:10DAE00002C083E001C084E0811718F4212F281BB5 +:10DAF00001C020E051110BC0F601822F30E28823D3 +:10DB000019F031938150FBCFC20ED11C20E0992334 +:10DB100029F0D6019C93F60131966F01C601039658 +:10DB2000E2FE0BC039E4D6013C933EE411963C93EF +:10DB3000119736E412963C9307C039E6F60130831C +:10DB40003EE6318336E63283FC01322F40E2332356 +:10DB500019F041933150FBCFFC01E20FF11D10820F +:10DB60008EEF9FEFA6C021E030E0911102C020E0CF +:10DB700030E0161617061CF4FB01319602C0E1E0F6 +:10DB8000F0E02E0F3F1FBB2021F0EB2DF0E031968F +:10DB900002C0E0E0F0E02E0F3F1FE12FF0E02E1773 +:10DBA0003F071CF4121B212F01C020E08E2D88712D +:10DBB00059F4F601822F30E2882319F03193815015 +:10DBC000FBCFC20ED11C20E0992329F0D6019C93F3 +:10DBD000F60131966F0151110BC0F601822F90E3CF +:10DBE000882319F091938150FBCFC20ED11C20E005 +:10DBF0000F2D060F9A81342F307144FF03C09133EB +:10DC000009F40150101624F4093018F008E001C09E +:10DC100001E0AB0177FF02C040E050E0FB01E41BF4 +:10DC2000F50BA1E0B0E0AC0FBD1FEA0FFB1F8EE2C9 +:10DC3000A82E4B01801A91080B2D10E0119501952B +:10DC400011094F3FBFEF5B0721F4D601AC9211964B +:10DC50006D01641775072CF08416950614F4818104 +:10DC600001C080E3415051093196D60111967D01E2 +:10DC70004017510724F0D6018C936701E2CF641757 +:10DC8000750739F4963320F4953319F4311101C036 +:10DC900081E3F6018083F701822F90E2882319F057 +:10DCA00091938150FBCFF701E20FF11D108280E0CC +:10DCB00090E029960FB6F894DEBF0FBECDBFDF917E +:10DCC000CF911F910F91FF90EF90DF90CF90BF9079 +:10DCD000AF909F908F900895283008F027E0332769 +:10DCE000DA01990F311D87FD91600096610571057C +:10DCF00039F432602E5F3D9330E32A95E1F70895C1 +:10DD00009F3F30F080387105610509F03C5F3C5F52 +:10DD10003D93913008F08068911DDF93CF931F935E +:10DD20000F93FF92EF92192F987F9695E92F969572 +:10DD30009695E90FFF27EA59FD4F99273327EE24DF +:10DD4000FF24A701E70105900894079428F4360FF3 +:10DD5000E71EF81E491F511D660F771F881F991F68 +:10DD60000694A1F70590079428F4E70EF81E491FC2 +:10DD7000561FC11D770F881F991F661F0694A1F7B4 +:10DD80000590079428F4F80E491F561FC71FD11D90 +:10DD9000880F991F661F771F0694A1F705900794B7 +:10DDA00020F4490F561FC71FD81F990F661F771FF2 +:10DDB000881F0694A9F784911095177041F0D695A5 +:10DDC000C79557954795F794E7941A95C1F7ECE0F6 +:10DDD000F2E06894159015913591659195910590B3 +:10DDE0007FE27395E118F10A430B560BC90BD0097A +:10DDF000C0F7E10CF11E431F561FC91FD01D7EF452 +:10DE0000703311F48A95E6CFE894015030F0080F92 +:10DE10000AF40027021708F4202F2395022F7A33E3 +:10DE200028F079E37D932A95E9F710C07D932A9530 +:10DE300089F6069497956795379517951794E11885 +:10DE4000F10A430B560BC90BD00998F023957E912C +:10DE500073957A3308F070E37C932013B8F77E91C2 +:10DE600070617D9330F0839571E37D9370E32A9523 +:10DE7000E1F71124EF90FF900F911F91CF91DF9167 +:10DE8000992787FD909508959F939F77D5D10F90FF +:10DE900000203AF49058A2EA2AED3FE049E450E429 +:10DEA00013D096C25058BB27AA270ED091C25AD27F +:10DEB00030F05FD220F031F49F3F11F41EF42AC2FB +:10DEC0000EF4E095E7FBF7C1E92FA4D280F3BA176F +:10DED000620773078407950718F071F49EF5D3C2A3 +:10DEE0000EF4E0950B2EBA2FA02D0B01B901900175 +:10DEF0000C01CA01A0011124FF27591B99F0593FB9 +:10DF000050F4503E68F11A16F040A22F232F342F00 +:10DF10004427585FF3CF469537952795A795F0404E +:10DF20005395C9F77EF41F16BA0B620B730B840B63 +:10DF3000BAF09150A1F0FF0FBB1F661F771F881F1B +:10DF4000C2F70EC0BA0F621F731F841F48F4879573 +:10DF500077956795B795F7959E3F08F0B3CF939562 +:10DF6000880F08F09927EE0F979587950895FAD1B5 +:10DF700058F080E891E009F49EEFFBD128F040E8EA +:10DF800051E059F45EEF09C0C5C17DC2E92FE078C8 +:10DF900041D268F3092E052AC1F32617370748072F +:10DFA000590738F00E2E07F8E02569F0E025E06407 +:10DFB0000AC0EF6307F8009407FADB01B9019D017D +:10DFC000DC01CA01AD01EF935DD002D20AD05F91AE +:10DFD000552331F02BED3FE049E450FD49EC63CF90 +:10DFE0000895DF93DD27B92FBF7740E85FE316166A +:10DFF000170648075B0710F4D92F50D29F938F93D1 +:10E000007F936F932DD3E8E9F1E087D1E1D12F9190 +:10E010003F914F915F9185D2DD2349F09058A2EA5C +:10E020002AED3FE049EC5FE3D0785D274DDFDF91DB +:10E03000CFC112D280F09F3740F491110EF424C268 +:10E0400060E070E080E89FE3089526F01B16611DF4 +:10E05000711D811D36C150C10AD108F481E00895B7 +:10E0600090D1E395C6C10CD0B3C183D140F07AD131 +:10E0700030F021F45F3F19F01EC1511105C24AC1B1 +:10E08000C9D198F39923C9F35523B1F3951B550BC7 +:10E09000BB27AA2762177307840738F09F5F5F4F7B +:10E0A000220F331F441FAA1FA9F333D00E2E3AF0BC +:10E0B000E0E830D091505040E695001CCAF729D0D6 +:10E0C000FE2F27D0660F771F881FBB1F2617370725 +:10E0D0004807AB07B0E809F0BB0B802DBF01FF2755 +:10E0E00093585F4F2AF09E3F510568F0E4C0CCC1C1 +:10E0F0005F3FECF3983EDCF3869577956795B7958F +:10E10000F7959F5FC9F7880F911D9695879597F9A9 +:10E110000895E1E0660F771F881FBB1F6217730722 +:10E120008407BA0720F0621B730B840BBA0BEE1F37 +:10E1300088F7E095089504D06894B111A5C10895B9 +:10E1400071D188F09F5790F0B92F9927B751A0F05F +:10E15000D1F0660F771F881F991F1AF0BA95C9F77B +:10E1600012C0B13081F08FD1B1E008958CC1672F1A +:10E17000782F8827B85F39F0B93FCCF3869577952B +:10E180006795B395D9F73EF4909580957095619514 +:10E190007F4F8F4F9F4F0895E89409C097FB3EF43F +:10E1A00090958095709561957F4F8F4F9F4F9923E4 +:10E1B000A9F0F92F96E9BB279395F6958795779562 +:10E1C0006795B795F111F8CFFAF4BB0F11F460FF22 +:10E1D0001BC06F5F7F4F8F4F9F4F16C0882311F07A +:10E1E00096E911C0772321F09EE8872F762F05C08E +:10E1F000662371F096E8862F70E060E02AF09A9529 +:10E20000660F771F881FDAF7880F9695879597F91D +:10E21000089522D180F09F3740F491110EF034C15F +:10E2200060E070E080E89FEB089526F41B16611D06 +:10E23000711D811D46C060C0DF93CF931F930F9364 +:10E240008B01EC01E5ECF1E068D0C2D09801AE01A1 +:10E250008B01EC0160E070E080E89FE323DEC2D137 +:10E260009801AE010F911F91CF91DF915AC1990F83 +:10E270000008550FAA0BE0E8FEEF16161706E80790 +:10E28000F907C0F012161306E407F50798F0621BB1 +:10E29000730B840B950B39F40A2661F0232B242B86 +:10E2A000252B21F408950A2609F4A140A6958FEFA5 +:10E2B000811D811D089597F99F6780E870E060E0F7 +:10E2C0000895882371F4772321F09850872B762FB7 +:10E2D00007C0662311F499270DC09051862B70E07A +:10E2E00060E02AF09A95660F771F881FDAF7880F8B +:10E2F0009695879597F908959F3F31F0915020F4B6 +:10E30000879577956795B795880F911D9695879511 +:10E3100097F908959FEF80EC0895DF93CF931F93B3 +:10E320000F93FF92EF92DF927B018C01689405C0FE +:10E33000DA2EEF01F6D0FE01E894A59125913591F2 +:10E3400045915591AEF3EF01BFDDFE019701A801A4 +:10E35000DA9479F7DF90EF90FF900F911F91CF91B2 +:10E36000DF91089500240A94161617061806090668 +:10E37000089500240A94121613061406050608953B +:10E38000C9CF50D0E8F3E894E0E0BB279F57F0F006 +:10E390002AED3FE049EC06C0EE0FBB0F661F771F6A +:10E3A000881F28F0B23A62077307840728F0B25A30 +:10E3B000620B730B840BE3959A9572F7803830F4F7 +:10E3C0009A95BB0F661F771F881FD2F7904896CF8C +:10E3D000092E0394000C11F4882352F0BB0F40F473 +:10E3E000BF2B11F460FF04C06F5F7F4F8F4F9F4FB3 +:10E3F0000895EF93E0FF06C0A2EA2AED3FE049EC62 +:10E400005FEB62DDE5DF0F90039401FC9058EDEEC9 +:10E41000F1E03BC157FD9058440F551F59F05F3F45 +:10E4200071F04795880F97FB991F61F09F3F79F036 +:10E4300087950895121613061406551FF2CF4695B8 +:10E44000F1DF08C0161617061806991FF1CF86953A +:10E450007105610508940895E5DFA0F0BEE7B917DE +:10E4600088F4BB279F3860F41616B11D672F782FEC +:10E470008827985FF7CF869577956795B11D939517 +:10E480009639C8F30895E894BB2766277727CB0110 +:10E4900097F90895ECDE08F48FEF08959B01AC0125 +:10E4A00060E070E080E89FE3DECDBCDF58F19E576E +:10E4B00058F19851A0F0E9F0983020F5092E9927ED +:10E4C000660F771F881F991F0A94D1F712C0062E76 +:10E4D000672F782F8827985F11F4000C07C0993FA9 +:10E4E000B4F38695779567959395D9F7611D711D5E +:10E4F000811D3EF490958095709561957F4F8F4F6B +:10E500009F4F08956894C0CFBECF0BD061CF2ADF54 +:10E5100028F02FDF18F0952309F0CDCEFBCE112483 +:10E52000B3CF78DFA0F3959FD1F3950F50E0551F3F +:10E53000629FF001729FBB27F00DB11D639FAA2758 +:10E54000F00DB11DAA1F649F6627B00DA11D661FA7 +:10E55000829F2227B00DA11D621F739FB00DA11DC8 +:10E56000621F839FA00D611D221F749F3327A00D82 +:10E57000611D231F849F600D211D822F762F6A2F1E +:10E5800011249F5750408AF0E1F088234AF0EE0FA3 +:10E59000FF1FBB1F661F771F881F91505040A9F7B0 +:10E5A0009E3F510570F087CE6FCF5F3FECF3983EF2 +:10E5B000DCF3869577956795B795F795E7959F5F17 +:10E5C000C1F7FE2B880F911D9695879597F90895B1 +:10E5D0009F93D7DE0F9007FCEE5F0BCF11F40EF484 +:10E5E00099CE8ACE1FDFD0F39923D9F3CEF39F576C +:10E5F000550B87FF43D00024A0E640EA90018058E5 +:10E600005695979528F4805C660F771F881F20F039 +:10E6100026173707480730F4621B730B840B202939 +:10E6200031294A2BA69517940794202531254A278E +:10E6300058F7660F771F881F20F0261737074807FF +:10E6400030F4620B730B840B200D311D411DA0951E +:10E6500081F7B901842F9158880F96958795089571 +:10E660009B01AC0152CFF8DE20F09F3708F40CCFAD +:10E6700028CE42CEFCDD880B990B08959150504076 +:10E68000660F771F881FD2F708959F938F937F930C +:10E690006F93FF93EF939B01AC0137DFEF91FF91F5 +:10E6A0003CDE2F913F914F915F912FCF991B79E0E5 +:10E6B00004C0991F961708F0961B881F7A95C9F712 +:10E6C00080950895AA1BBB1B51E107C0AA1FBB1F61 +:10E6D000A617B70710F0A61BB70B881F991F5A95EE +:10E6E000A9F780959095BC01CD010895A1E21A2E5D +:10E6F000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FE6 +:10E70000A217B307E407F50720F0A21BB30BE40B35 +:10E71000F50B661F771F881F991F1A9469F760957C +:10E720007095809590959B01AC01BD01CF01089536 +:10E73000EE0FFF1F881F8BBF0790F691E02D1994F5 +:10E74000A29FB001B39FC001A39F700D811D112432 +:10E75000911DB29F700D811D1124911D0895F0DF50 +:10E76000A59F900DB49F900DA49F800D911D112425 +:10E770000895FB01DC010D900020E9F7119701904D +:10E780000D920020E1F70895FB01DC0101900D924C +:10E790000020E1F708950F931F93CF93DF93CDB738 +:10E7A000DEB72E970FB6F894DEBF0FBECDBF0E8931 +:10E7B0001F8986E08C831A8309838FEF9FE79E83EE +:10E7C0008D83AE01465E5F4F688D798DCE010196D7 +:10E7D00059D0EF81F885E00FF11F10822E960FB609 +:10E7E000F894DEBF0FBECDBFDF91CF911F910F9187 +:10E7F0000895CF93DF93CDB7DEB72E970FB6F89479 +:10E80000DEBF0FBECDBF85E08C838C899D899A8346 +:10E810008983AE01485E5F4F6E897F89CE01019684 +:10E82000E0D32E960FB6F894DEBF0FBECDBFDF91BA +:10E83000CF9108950F931F93CF93DF93CDB7DEB79A +:10E840002E970FB6F894DEBF0FBECDBF8C0186E0C9 +:10E850008C831A8309838FEF9FE79E838D83CE017C +:10E86000019610D0EF81F885E00FF11F10822E96EF +:10E870000FB6F894DEBF0FBECDBFDF91CF911F91D1 +:10E880000F9108952F923F924F925F926F927F92D5 +:10E890008F929F92AF92BF92CF92DF92EF92FF92B0 +:10E8A0000F931F93CF93DF93CDB7DEB72B970FB6A0 +:10E8B000F894DEBF0FBECDBF6C017B018A01FC0165 +:10E8C00017821682838181FFBFC1CE0101963C0170 +:10E8D000F6019381F70193FD859193FF81917F016B +:10E8E000882309F4ADC1853239F493FD859193FFF6 +:10E8F00081917F01853221F4B60190E0F0D4E8CF18 +:10E90000912C212C312CFFE1F315D8F08B3279F0CA +:10E9100038F4803279F08332A1F4232D20611DC0B8 +:10E920008D3261F0803369F4232D216016C0832D70 +:10E930008260382EE32DE4603E2E2AC0F32DF8606D +:10E940001DC037FC2DC020ED280F2A3040F08E323C +:10E95000B9F436FC75C1232D2064322E19C036FE61 +:10E9600006C08AE0989E200D1124922E11C0EAE084 +:10E970002E9E200D1124222EF32DF0623F2E08C072 +:10E980008C3621F4832D8068382E02C0883641F4FD +:10E99000F70193FD859193FF81917F018111B3CFA1 +:10E9A000982F9F7D9554933028F40C5F1F4F9FE361 +:10E9B00099830DC0833631F0833771F0833509F0C8 +:10E9C00055C020C0F801808189830E5F1F4F8824C5 +:10E9D0008394912C530112C02801F2E04F0E511C78 +:10E9E000F801A080B18036FE03C0692D70E002C03E +:10E9F0006FEF7FEFC5012AD44C018201F32DFF7721 +:10EA00003F2E15C0280122E0420E511CF801A080C3 +:10EA1000B18036FE03C0692D70E002C06FEF7FEF5A +:10EA2000C50109D44C01F32DF0683F2E820133FC5F +:10EA300019C0822D90E088169906A0F4B60180E2F4 +:10EA400090E04DD42A94F5CFF50137FC859137FE3F +:10EA500081915F01B60190E042D421102A9421E017 +:10EA6000821A91088114910479F7E1C0843611F07B +:10EA7000893639F5F80137FE07C0608171818281DE +:10EA800093810C5F1F4F08C060817181072E000CBD +:10EA9000880B990B0E5F1F4FF32DFF763F2E97FFCC +:10EAA00009C090958095709561957F4F8F4F9F4FCE +:10EAB000F0683F2E2AE030E0A30166D4882E861845 +:10EAC00044C0853731F4232D2F7EB22E2AE030E06A +:10EAD00025C0932D997FB92E8F36C1F018F4883553 +:10EAE00079F0AEC0803719F0883721F0A9C0E92F3E +:10EAF000E061BE2EB4FE0DC0FB2DF460BF2E09C038 +:10EB000034FE0AC0292F2660B22E06C028E030E06D +:10EB100005C020E130E002C020E132E0F801B7FE9C +:10EB200007C060817181828193810C5F1F4F06C095 +:10EB30006081718180E090E00E5F1F4FA30124D4BB +:10EB4000882E8618FB2DFF773F2E36FE0DC0232D15 +:10EB50002E7FA22E891458F434FE0BC032FC09C05B +:10EB6000832D8E7EA82E05C0B82CA32C03C0B82CF4 +:10EB700001C0B92CA4FE0FC0FE01E80DF11D80817B +:10EB8000803321F49A2D997EA92E09C0A2FE06C0D9 +:10EB9000B394B39404C08A2D867809F0B394A3FC8F +:10EBA00010C0A0FE06C0B21480F4280C922C9B1852 +:10EBB0000DC0B21458F4B60180E290E090D3B39443 +:10EBC000F8CFB21418F42B1802C0982C212CA4FEF4 +:10EBD0000FC0B60180E390E082D3A2FE16C0A1FC74 +:10EBE00003C088E790E002C088E590E0B6010CC061 +:10EBF0008A2D867851F0A1FE02C08BE201C080E22E +:10EC0000A7FC8DE2B60190E06AD3891430F4B60116 +:10EC100080E390E064D39A94F8CF8A94F301E80DEE +:10EC2000F11D8081B60190E05AD38110F6CF2220E9 +:10EC300009F44ECEB60180E290E051D32A94F7CF8A +:10EC4000F6018681978102C08FEF9FEF2B960FB65A +:10EC5000F894DEBF0FBECDBFDF91CF911F910F9112 +:10EC6000FF90EF90DF90CF90BF90AF909F908F90EC +:10EC70007F906F905F904F903F902F90089520FD70 +:10EC800009C0FC0123FD05C022FF02C0738362831B +:10EC900051834083089544FD17C046FD17C0AB0162 +:10ECA000BC01DA01FB01AA0FBB1FEE1FFF1F10946E +:10ECB000D1F74A0F5B1F6E1F7F1FCB01BA01660F92 +:10ECC000771F881F991F09C033E001C034E0660F29 +:10ECD000771F881F991F3150D1F7620F711D811D59 +:10ECE000911D08950F931F93CF93DF938C01C8015B +:10ECF000B8D2EC0197FD06C08BD2892BC1F7B801C1 +:10ED0000CE0129D3CE01DF91CF911F910F910895AC +:10ED10008F929F92AF92BF92EF92FF920F931F93A9 +:10ED2000CF93DF938C01D62F7A01B22E9AD29C0119 +:10ED300033272B32310531F02D32310559F48B2D2B +:10ED40008068B82ED15011F480E061C0C80189D22A +:10ED500097FDFACFCB2DCD7F2B2D2073F9F4803387 +:10ED6000E9F4AA24AA94AD0E09F43EC0C80179D2F0 +:10ED700097FD3AC09C012F7D33272835310541F49A +:10ED8000C264D25089F1C8016CD297FF07C02CC071 +:10ED9000B6FE02C0C26001C0C261DA2D812C912C86 +:10EDA000540120ED280F283078F0C4FF03C0B801CB +:10EDB000D2D217C02A3040F0C6FFF9CF2F7D3FEEE8 +:10EDC000320F3630A0F727504C2FC501B40163DF56 +:10EDD0004B015C01C260D15051F0C80142D297FF93 +:10EDE000E0CFC1FD04C0B0CF812C912C5401C7FFEE +:10EDF00008C0B094A09490948094811C911CA11C94 +:10EE0000B11C2C2FB501A401C70139DF81E0DF91CE +:10EE1000CF911F910F91FF90EF90BF90AF909F9077 +:10EE20008F9008955F926F927F928F929F92AF9290 +:10EE3000BF92CF92DF92EF92FF920F931F93CF93E7 +:10EE4000DF93CDB7DEB7A0970FB6F894DEBF0FBE45 +:10EE5000CDBF5C01962E7A01F9018E010F5F1F4F25 +:10EE6000680180E2D8011D928A95E9F7D5011396D1 +:10EE70008C9080E090E0612C712C30E061E070E0DB +:10EE800083FC259183FE21918F01522E211103C015 +:10EE900080E090E090C02E3511F4009751F1432F9F +:10EEA00050E0481759073CF42D3559F12D3219F42B +:10EEB000772009F103C0772009F468C0452D4695F5 +:10EEC00046954695D601A40FB11D452D47708B017F +:10EED00002C0000F111F4A95E2F7A8015C91452B73 +:10EEE0004C93651459F0561410F45394E7CF5A9488 +:10EEF000E5CF31E004C07724739401C0712C0196F2 +:10EF0000BFCF772019F08E8180628E83311103C0CC +:10EF10008824839417C0F6019E012F5D3F4F8081A6 +:10EF2000809581932E173F07D1F7F2CFE114F104BA +:10EF300029F0D7018C93F70131967F019A94812CA7 +:10EF40009920E9F0C5018DD197FD17C0FC01FF277D +:10EF500023E0F595E7952A95E1F7EC0DFD1D20815D +:10EF600030E0AC014770552702C0359527954A958A +:10EF7000E2F720FDDBCFB501EED1811089CFE1149E +:10EF8000F10411F0D7011C92C80115C0422F46951B +:10EF900046954695D601A40FB11D422F47708B01AF +:10EFA00002C0000F111F4A95E2F7A8015C91452BA2 +:10EFB0004C93622EA4CFA0960FB6F894DEBF0FBE7E +:10EFC000CDBFDF91CF911F910F91FF90EF90DF9018 +:10EFD000CF90BF90AF909F908F907F906F905F90F9 +:10EFE00008955F926F927F928F929F92AF92BF929D +:10EFF000CF92DF92EF92FF920F931F93CF93DF9305 +:10F000006C01EB015A01FC0117821682512CF601AA +:10F01000E380FE01E3FC8591E3FE8191182FEF016F +:10F02000882309F4E0C090E0F3D0892B19F0C601E1 +:10F0300059DEEDCF153241F4FE01E3FC1591E3FEFC +:10F040001191EF01153271F4C6010BD197FDC9C0C2 +:10F05000412F50E09C01332724173507C1F2B60138 +:10F060007AD1C1C01A3239F4E3FC1591E3FE119153 +:10F07000EF0101E001C000E0F12C20ED210F2A306A +:10F0800078F402606F2D70E080E090E040E203DEF3 +:10F09000F62EFE01E3FC1591E3FE1191EF01EDCF99 +:10F0A00001FF03C0F11003C09EC0FF24FA9418367C +:10F0B00019F01C3651F010C0FE01E3FC1591E3FE7F +:10F0C0001191EF01183641F408600460FE01E3FC81 +:10F0D0001591E3FE1191EF01112309F484C0612F12 +:10F0E00070E086E093E09CD0892B09F47CC000FDA1 +:10F0F00007C0F50180809180C50102965C0102C0C5 +:10F10000812C912C1E3649F4F6014681578160E02E +:10F1100070E0202FC401B3DD7ACF1336A1F401FDD6 +:10F1200002C0FF24F394C6019CD097FD5AC08114FD +:10F13000910429F0F4018083C40101964C01FA94F2 +:10F14000F110F1CF4AC01B3551F49E01A4016F2D7F +:10F15000C60168DEEC01892B09F03FC039C0C60149 +:10F16000C1DD97FD3EC01F3649F128F4143621F168 +:10F17000193639F125C0133771F01537E9F020C081 +:10F180008114910429F0F4016082C40101964C01BC +:10F19000FA94FF2059F0C60164D03C0197FD06C0E7 +:10F1A00037D0892B69F3B601C301D5D081149104FE +:10F1B000A1F0F401108211C0006203C0006101C01F +:10F1C0000064202FA4016F2DC601A2DD811105C0AE +:10F1D000F6018381807329F406C000FD18CF539493 +:10F1E00016CF552019F0852D90E002C08FEF9FEFCC +:10F1F000DF91CF911F910F91FF90EF90DF90CF9013 +:10F20000BF90AF909F908F907F906F905F90089588 +:10F21000911118C1803219F089508550D0F70895A6 +:10F22000FC010590061621F00020D9F7C0010895D1 +:10F230003197CF010895FC01059061507040011095 +:10F24000D8F7809590958E0F9F1F0895FC0161500F +:10F25000704001900110D8F7809590958E0F9F1FF8 +:10F260000895CF93DF93EC012B8120FF33C026FF5D +:10F270000AC02F7B2B838E819F8101969F838E8373 +:10F280008A8190E029C022FF0FC0E881F981808146 +:10F29000082E000C990B009719F420622B831AC0DA +:10F2A0003196F983E8830EC0EA85FB85199597FFAF +:10F2B00009C02B81019611F080E201C080E1822B10 +:10F2C0008B8308C02E813F812F5F3F4F3F832E836A +:10F2D000992702C08FEF9FEFDF91CF9108950F9391 +:10F2E0001F93CF93DF93FB01238121FD03C08FEF99 +:10F2F0009FEF2CC022FF16C04681578124813581A3 +:10F300004217530744F4A081B1819D012F5F3F4F05 +:10F31000318320838C93268137812F5F3F4F378342 +:10F32000268314C08B01EC01FB010084F185E02DE4 +:10F330001995892BE1F6D80116968D919C91179716 +:10F34000019617969C938E931697CE01DF91CF91DD +:10F350001F910F910895FB01238120FF12C026FD0C +:10F3600010C08F3F3FEF930761F082832F7D2064B1 +:10F3700023832681378121503109378326839927BA +:10F3800008958FEF9FEF0895FA01AA27283051F1D1 +:10F39000203181F1E8946F936E7F6E5F7F4F8F4FC6 +:10F3A0009F4FAF4FB1E03ED0B4E03CD0670F781F25 +:10F3B000891F9A1FA11D680F791F8A1F911DA11D0A +:10F3C0006A0F711D811D911DA11D20D009F4689443 +:10F3D0003F912AE0269F11243019305D3193DEF6EB +:10F3E000CF010895462F4770405D4193B3E00FD0A1 +:10F3F000C9F7F6CF462F4F70405D4A3318F0495D8C +:10F4000031FD4052419302D0A9F7EACFB4E0A6956E +:10F410009795879577956795BA95C9F70097610590 +:10F42000710508959B01AC010A2E069457954795E6 +:10F4300037952795BA95C9F7620F731F841F951FDB +:0EF44000A01D0895992788270895F894FFCFFE +:10F44E00AE47C13F08020000000000000073736366 +:10F45E00616E662025640D0A0053255B302D392D13 +:10F46E002B2E5D52255B302D392D2B2E5D48255BC5 +:10F47E00302D392D2B2E5D46255B302D392D2B2E23 +:10F48E005D004E256456255B302D392D2B2E5D46A5 +:10F49E00255B302D392D2B2E5D0058255B302D39F7 +:10F4AE002D2B2E5D59255B302D392D2B2E5D5A259A +:10F4BE005B302D392D2B2E5D46255B302D392D2BB6 +:10F4CE002E5D0042255B302D392D2B2E5D4C255B9C +:10F4DE00302D392D2B2E5D52255B302D392D2B2EB7 +:10F4EE005D46255B302D392D2B2E5D002042257378 +:10F4FE00204C2573205225730A007541726D3350CE +:10F50E006C7573002025730A0056342E352E30008C +:10F51E0056342E302E3400205625730A00205825DE +:10F52E007320592573205A25730A00205325732002 +:10F53E00522573204825730A004E2564002042256B +:10F54E0064204C2564205225640A00616E676C6548 +:10F55E00206F66667365743A25730D0A00646576CE +:10F56E00696365206E616D65203A2025730D0A0072 +:10F57E00736F667420766572203A2025730D0A002B +:10F58E0061706920766572203A2025730D0A007726 +:10F59E006F726B206D6F6465203A2025640D0A0032 +:10F5AE0040310A0065666665637420636865636B47 +:10F5BE002074696D656F7574210D0A0023255B300B +:10F5CE002D395D0024257300453233206275666641 +:10F5DE0065722066756C6C0D0A00403320582573D9 +:10F5EE0020592573205A2573205225730A00403660 +:10F5FE00204E30205625640A004035205625640AD8 +:10F60E000040392056300A0041255B302D392D2B14 +:10F61E002E5D00562573002056310A0056554225A0 +:10F62E005B302D392E5D0046255B302D392E5D5415 +:10F63E0025640058255B302D392D2B2E5D59255B09 +:10F64E00302D392D2B2E5D5A255B302D392D2B2E3D +:10F65E005D0042255B302D392D2B2E5D4C255B3008 +:10F66E002D392D2B2E5D52255B302D392D2B2E5DF8 +:10F67E000058255B302D392D2B2E5D59255B302DF5 +:10F68E00392D2B2E5D5A255B302D392D2B2E5D50AD +:10F69E002564004E25645625640053255B302D39B4 +:10F6AE002D2B2E5D0056255B302D392D2B2E5D001A +:10F6BE004532330A004532300A004532310A002005 +:10F6CE00006F6B004532300045323100453232005A +:10F6DE0056332E332E310056332E332E3000563302 +:0CF6EE002E332E320056302E302E30000D +:00000001FF diff --git a/src/protocol.c b/src/protocol.c index 4802dad..6f98ed8 100755 --- a/src/protocol.c +++ b/src/protocol.c @@ -162,7 +162,7 @@ void protocol_main_loop() // If there are no more characters in the serial read buffer to be processed and executed, // this indicates that g-code streaming has either filled the planner buffer or has // completed. In either case, auto-cycle start, if enabled, any queued moves. - //uarm_swift_tick_run(); + uarm_swift_tick_run(); protocol_auto_cycle_start(); protocol_execute_realtime(); // Runtime command check point. if (sys.abort) { return; } // Bail to main() program loop to reset system. From 998789240eada6800d130a67b9c39858a9f3723e Mon Sep 17 00:00:00 2001 From: HuttonGe Date: Wed, 27 May 2020 15:21:01 +0800 Subject: [PATCH 65/74] Update 2020-5-27 --- hex/uArmPro_V4.6.0_release_20200527.hex | 4033 +++++++++++++++++++++++ 1 file changed, 4033 insertions(+) create mode 100644 hex/uArmPro_V4.6.0_release_20200527.hex diff --git a/hex/uArmPro_V4.6.0_release_20200527.hex b/hex/uArmPro_V4.6.0_release_20200527.hex new file mode 100644 index 0000000..51f65b0 --- /dev/null +++ b/hex/uArmPro_V4.6.0_release_20200527.hex @@ -0,0 +1,4033 @@ +:1000000065C5000084C5000082C5000080C50000F1 +:100010007EC500007CC500007AC5000078C50000E0 +:1000200076C500000C94DF5C72C500000C94215072 +:100030006EC500006CC500006AC500000C94AC5C85 +:1000400066C500000C94CF3662C5000060C5000094 +:100050005EC500005CC500005AC500000C945A360D +:1000600056C500000C94A8310C94983250C500007D +:100070004EC500004CC500004AC5000048C5000040 +:1000800046C5000044C5000042C500000C94965CC3 +:100090000C9440310C946A323AC5000038C5000017 +:1000A00036C5000034C500000C945E3930C5000030 +:1000B0002EC500000C945B5C2AC5000028C500001A +:1000C00026C5000024C500000C94265C0C94D83092 +:1000D0000C943C321CC500000C9470300C940E3211 +:1000E00016C500006E14D41ED41E7C149114A614E0 +:1000F000BB14D41EC414D41ED714D41EE614F0149A +:100100005015D41ED41ED41E071521153B15A31D52 +:10011000B31DE21DB31DE61DFD1DEC1DF61D211EC8 +:10012000281E331E3E1E5D1E5F1E621E641E1D269F +:1001300035264D2665267D269E26B6269E3CA43C69 +:10014000A73CAA3CAE3CB63CBE3C2B3D2B3D2B3DD8 +:10015000C63CC93CD23CDB3C2B3D2B3D2B3D2B3DD3 +:100160002B3D2B3DE33CED3CF93C033D063D0F3D73 +:10017000183D1E3D9E5BA15B905B945B9A5BD85BD8 +:10018000A55BA95BAF5BB35BB75BBD5BC15BC55BED +:10019000D85BCB5BCF5BD35B084AD73B3BCE016ED2 +:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE +:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD +:1001C000000000803F072C7AA5BA6CC590DA3B93FB +:1001D00065FC8BBC53F810FD3C5692834DBD879D4A +:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 +:1001F000CDB2D44EB93836A9020C50B991868808D0 +:100200003CA6AAAA2ABE000000803F0000407A1047 +:10021000F35A00A0724E18090010A5D4E80000E8B7 +:100220007648170000E40B54020000CA9A3B000015 +:1002300000E1F505000080969800000040420F00A4 +:100240000000A08601000000102700000000E80365 +:10025000000000006400000000000A000000000030 +:100260000100000000002C76D888DC674F0823DFEF +:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 +:10028000997696E8E6C28426EB898C9B62ED407CE9 +:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 +:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA +:1002B000FEF520E6B500D0ED902E030094357705CD +:1002C0000080841E080000204E0A000000C80C3385 +:1002D0003333330F986E12831141EF8D2114893B14 +:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 +:1002F000901DA4BBE424203284725E228100C9F1E7 +:1003000024ECA1E53D276364696E6F7073757858BE +:100310005B00000020002300260029002C002F0095 +:100320003200000100000301060109010D0A003D31 +:1003300000244E005D0D0A005B302E396A2E3230EB +:100340003136303732363A005D0D0A005B544C4F7F +:100350003A005D0D0A002C005B4739323A005D0D12 +:100360000A002C003A003330003238005B47005D51 +:100370000D0A00205300204600205400204D380074 +:10038000204D3900204D3500204D3400204D3300E4 +:10039000204D3200204D3100204D300020473934AF +:1003A00000204739330020473931002047393000D9 +:1003B00020473230002047323100204731390020B9 +:1003C0004731380020473137002047004733382E67 +:1003D000004738300047330047320047310047308C +:1003E000005B00290D0A00206D617820747261762F +:1003F000656C2C206D6D0020616363656C2C206D35 +:100400006D2F7365635E3200206D617820726174B8 +:10041000652C206D6D2F6D696E002C2073746570D6 +:100420002F6D6D007A00790078002028003D0024AF +:10043000002028686F6D696E672070756C6C2D6F79 +:1004400066662C206D6D290D0A002028686F6D6985 +:100450006E67206465626F756E63652C206D7365D1 +:1004600063290D0A2432373D002028686F6D696EBC +:1004700067207365656B2C206D6D2F6D696E290D7E +:100480000A2432363D002028686F6D696E67206649 +:100490006565642C206D6D2F6D696E290D0A2432FF +:1004A000353D00290D0A2432343D002028686F6D47 +:1004B000696E672064697220696E76657274206D5A +:1004C00061736B3A002028686F6D696E67206379ED +:1004D000636C652C20626F6F6C290D0A2432333DEA +:1004E00000202868617264206C696D6974732C2027 +:1004F000626F6F6C290D0A2432323D002028736F21 +:100500006674206C696D6974732C20626F6F6C293E +:100510000D0A2432313D0020287265706F727420FC +:10052000696E636865732C20626F6F6C290D0A24F5 +:1005300032303D00202861726320746F6C657261F7 +:100540006E63652C206D6D290D0A2431333D00202A +:10055000286A756E6374696F6E206465766961746C +:10056000696F6E2C206D6D290D0A2431323D0029F2 +:100570000D0A2431313D0020287374617475732095 +:100580007265706F7274206D61736B3A0020287011 +:10059000726F62652070696E20696E766572742C68 +:1005A00020626F6F6C290D0A2431303D0020286CC9 +:1005B000696D69742070696E7320696E76657274F6 +:1005C0002C20626F6F6C290D0A24363D00202873A1 +:1005D00074657020656E61626C6520696E76657207 +:1005E000742C20626F6F6C290D0A24353D00290D93 +:1005F0000A24343D00202864697220706F727420D0 +:10060000696E76657274206D61736B3A00290D0A0C +:1006100024333D0020287374657020706F7274203D +:10062000696E76657274206D61736B3A0020287371 +:100630007465702069646C652064656C61792C2038 +:100640006D736563290D0A24323D0020287374659B +:10065000702070756C73652C2075736563290D0AA5 +:1006600024313D0024303D0024242028766965771C +:10067000204772626C2073657474696E6773290D0C +:100680000A2423202876696577202320706172610F +:100690006D6574657273290D0A2447202876696593 +:1006A0007720706172736572207374617465290DAF +:1006B0000A2449202876696577206275696C642070 +:1006C000696E666F290D0A244E20287669657720A9 +:1006D0007374617274757020626C6F636B73290D33 +:1006E0000A24783D76616C756520287361766520F3 +:1006F0004772626C2073657474696E67290D0A24F1 +:100700004E783D6C696E6520287361766520737440 +:10071000617274757020626C6F636B290D0A2443DB +:100720002028636865636B2067636F6465206D6F65 +:100730006465290D0A245820286B696C6C20616C53 +:1007400061726D206C6F636B290D0A24482028723A +:10075000756E20686F6D696E67206379636C6529BB +:100760000D0A7E20286379636C652073746172744E +:10077000290D0A2120286665656420686F6C64294C +:100780000D0A3F202863757272656E742073746160 +:10079000747573290D0A6374726C2D782028726544 +:1007A000736574204772626C290D0A0000002100F5 +:1007B000240027002A002D00300033000101000032 +:1007C000040107010A010D0A00486F6D696E672078 +:1007D0006661696C0050726F6265206661696C00C9 +:1007E00041626F727420647572696E672063796309 +:1007F0006C6500536F6674206C696D6974004861A4 +:100800007264206C696D697400414C41524D3A200C +:10081000003E0D0A002C4C696D3A002C52583A00EB +:100820002C4275663A002C002C57506F733A002CFE +:10083000002C4D506F733A003C446F6F72003C4384 +:100840006865636B003C416C61726D003C486F6D84 +:1008500065003C486F6C64003C52756E003C496416 +:100860006C65005D0D0A00526573746F72696E6786 +:100870002064656661756C74730050676D20456E09 +:100880006400436865636B20446F6F720044697352 +:1008900061626C656400456E61626C656400436111 +:1008A0007574696F6E3A20556E6C6F636B6564008A +:1008B000272448277C2724582720746F20756E6CC6 +:1008C0006F636B00526573657420746F20636F6E85 +:1008D00074696E7565005B005D0D0A003A002C00BE +:1008E0005B5052423A000D0A00496E76616C6964B1 +:1008F0002067636F64652049443A00556E646566FD +:10090000696E656420666565642072617465004D7A +:100910006F64616C2067726F75702076696F6C61AF +:1009200074696F6E00486F6D696E67206E6F74201A +:10093000656E61626C656400416C61726D206C6F04 +:10094000636B004E6F742069646C650045455052BE +:100950004F4D2072656164206661696C2E2055736D +:10096000696E672064656661756C74730056616CAE +:100970007565203C2033207573656300536574747E +:10098000696E672064697361626C65640056616CAE +:100990007565203C203000496E76616C6964207377 +:1009A000746174656D656E7400426164206E756D6E +:1009B00062657220666F726D617400457870656360 +:1009C00074656420636F6D6D616E64206C65747412 +:1009D0006572006572726F723A20006F6B0D0A00CB +:1009E00000002200250028002B002E0031003400DA +:1009F00002010000050108010B01050505050705B9 +:100A000008080808020202020A0A0808040404048A +:100A100001010101010101010303030303030303B6 +:100A2000040707070C0C0C0C0C0C0C0C0202020245 +:100A300006060606060606060B0B0B0B0B0B0B0B2E +:100A400001021020200808102040102040800201E0 +:100A500002010804020101020408102040808040C5 +:100A600020100804020180040201804020100804C4 +:100A70000201080402010102040810204080010262 +:100A800004081020408000000A0B02090C0D0E081B +:100A90000703040100000000000000000000000047 +:100AA0000000000000000000000000000000000046 +:100AB0000000121110000000000000000000000003 +:100AC00000000000000000000000000011241FBE14 +:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D +:100AE000B2E0EEE4F9EF00E00BBF02C007900D9218 +:100AF000AC3AB107D9F725E1ACEAB4E001C01D92E8 +:100B0000A03CB207E1F70E94CF5F0C94A57C78CAA5 +:100B10002F923F924F925F926F927F928F929F920D +:100B2000AF92BF92CF92DF92EF92FF920F931F93FB +:100B3000CF93DF93CDB7DEB7C85CD1090FB6F89479 +:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B +:100B5000D04089E3E8E4F5E1DF011D928A95E9F7E9 +:100B60008AE0E1E8F5E1A9E4B5E101900D928A950A +:100B7000E1F7FE01E756FF4F1082CD54DF4F198297 +:100B80001882C35BD040C155DF4F19821882CF5AFB +:100B9000D040C154DF4F1882CF5BD040C655DF4FE5 +:100BA0001882CA5AD040C255DF4F1882CE5AD04060 +:100BB000E859F109C456DF4FF983E883CC59D04096 +:100BC0009E01235A3F4FC256DF4F39832883CE59A7 +:100BD000D040CE018F5A9F4FC056DF4F99838883F4 +:100BE000C05AD040DE01A959BF4FCE55DF4FB9835F +:100BF000A883C25AD040E059FF4FCC55DF4FF9834C +:100C0000E883C45AD0409C01285F3F4FCD53DF4F4B +:100C100039832883C35CD040C756DF4F8881C959C8 +:100C2000D040C754DF4FE881F981C95BD040E80F5D +:100C3000F11D1081112311F40C94B3159FEB910F4A +:100C40009A3110F00C94C61E8F5FC756DF4F888311 +:100C5000C959D040AE014B565F4FBE0167567F4F1A +:100C6000C754DF4F88819981C95BD0400E941D45E0 +:100C7000882311F40C94C81ECB56DF4FC880D9804E +:100C8000EA80FB80C559D040C701B6010E94887533 +:100C90000E94F572CB54DF4F688379838A839B83EC +:100CA000C55BD040CB54DF4F48805980C55BD040F6 +:100CB000B20180E090E00E9421739B01AC01C7016A +:100CC000B6010E94A77120E030E048EC52E40E9497 +:100CD000DA744B015C0120E030E0A9010E949F74AE +:100CE00020E030E040E05FE387FD05C0C501B401CE +:100CF0000E94A87104C0C501B4010E94A7710E949E +:100D0000F0721B011D3411F40C942F0F24F41734CE +:100D100061F00C945B14103511F40C94C50F13356D +:100D200011F40C94E7130C945B14C756DF4F8881C1 +:100D3000C959D040C754DF4FA881B981C95BD040A1 +:100D4000A80FB11DCD01BAE94B16B8E05B0609F456 +:100D500016C160F4F4ED4F16F7E05F06D1F029E913 +:100D6000421628E0520609F440C0FAC53DE9431690 +:100D700038E0530609F451C3AEE94A16A8E05A0612 +:100D800009F436C5BCE94B16B8E05B0609F0E8C5C6 +:100D900049C21A821982E1E0F0E0EC0FFD1FFF93D7 +:100DA000EF932EE434E03F932F939F938F930E9411 +:100DB00079760F900F900F900F900F900F9018165C +:100DC00019060CF03BC589819A8190936B0F809333 +:100DD0006A0F11E01093950D8091170D811148C590 +:100DE0000E94FB2B1093170D43C58E010B5E1F4F06 +:100DF0001F930F939E01275D3F4F3F932F937E01DB +:100E0000FDE3EF0EF11CFF92EF92CF55DF4F2881EB +:100E1000C15AD0402F93C056DF4F3881C05AD040BE +:100E20003F9329E132E03F932F939F938F930E944A +:100E300079760FB6F894DEBF0FBECDBF04970CF4E1 +:100E4000FDC4EF961CAE1DAE1EAE1FAEEF97E5962D +:100E50001CAE1DAE1EAE1FAEE597AB961CAE1DAE12 +:100E60001EAE1FAEAB97A1961CAE1DAE1EAE1FAE42 +:100E7000A1978CE0C456DF4FE881F981CC59D0406E +:100E800011928A95E9F7AE0145585F4F60E070E036 +:100E9000CE018F5A9F4F0E941D45882309F4E8C454 +:100EA000AE014F585F4F60E070E0C7010E941D45E2 +:100EB000882309F4DDC4AE0149595F4F60E070E05A +:100EC000CE0189960E941D45882309F4D1C4AE0144 +:100ED000435A5F4F60E070E0C8010E941D458823BF +:100EE00009F4C6C420E030E044EB52E4E5966CAD72 +:100EF0007DAD8EAD9FADE5970E94A77121EE3EE2DC +:100F000045E652E40E9488726B017C01E5966CAF65 +:100F10007DAF8EAF9FAFE5970E948572EF968CAC48 +:100F20009DACAEACBFACEF97A50194010E94DA7402 +:100F300069837A838B839C83C701B6010E943D75C8 +:100F40009B01AC01C501B4010E94DA746D837E83FC +:100F50008F839887AB968CAD9DADAEADBFADAB9793 +:100F600089879A87AB87BC87A1962CAD3DAD4EADE6 +:100F70005FADA19700E0BE016F5F7F4F37C46596FC +:100F80001CAE1DAE1EAE1FAE659721961CAE1DAEEB +:100F90001EAE1FAE219721E030E02C0F3D1F3F9386 +:100FA0002F938E010B5E1F4F1F930F93C156DF4F80 +:100FB0003881CF59D0403F93C256DF4FA881CE59D8 +:100FC000D040AF9322E432E03F932F939F938F93CF +:100FD0000E9479760FB6F894DEBF0FBECDBF03979F +:100FE0000CF42CC4AE014F5A5F4F60E070E0C801B2 +:100FF0000E941D45882309F43BC4AE01435C5F4F4A +:1010000060E070E0CE0101960E941D45882309F43E +:101010002FC43E01F9E26F0E711C8CE0D3011D92CA +:101020008A95E9F760917C0D70917D0D80917E0D20 +:1010300090917F0D0E94237320E030E040EA52E45B +:101040000E9488722091700D3091710D4091720D47 +:101050005091730D0E94A871CA55DF4F6883798340 +:101060008A839B83C65AD0406091800D7091810D18 +:101070008091820D9091830D0E94237320E030E0D7 +:1010800040EA52E40E9488722091740D3091750DEF +:101090004091760D5091770D0E94A871C554DF4F95 +:1010A000688379838A839B83CB5BD0406091840D76 +:1010B0007091850D8091860D9091870D0E9423730C +:1010C00020E030E040EA52E40E9488726B017C012B +:1010D00020E030E044EB52E46091780D7091790D9E +:1010E00080917A0D90917B0D0E94A7719B01AC01BC +:1010F000C701B6010E94A8717B018C016F968EAD6D +:101100009FAD6F978130910509F450C00CF03FC03E +:10111000892B09F0A0C320E030E044EB52E465964F +:101120006CAD7DAD8EAD9FAD65970E94A771659644 +:101130006CAF7DAF8EAF9FAF6597FE01F1964F010B +:101140009E01235D3F4F5901DE0199966D017B01A0 +:101150008C01C554DF4F288139814A815B81CB5B8B +:10116000D040CA55DF4F688179818A819B81C65AF8 +:10117000D0400E94784CA401B501C6010E94194AD2 +:1011800021962CAD3DAD4EAD5FAD2197E2C38230CF +:10119000910519F1039709F05EC365966CAD7DADBD +:1011A0008EAD9FAD65970E94D62C62C365966CADDF +:1011B0007DAD8EAD9FAD6597FE01F1964F019E010D +:1011C000235D3F4F59016301C554DF4F28813981A9 +:1011D0004A815B81CB5BD04015C065962CAD3DAD9F +:1011E0004EAD5FAD6597CE01C1964C01DE019D9677 +:1011F0005D016301CA55DF4F688179818A819B81D6 +:10120000C65AD0400E94784CA401B501C3010E9487 +:10121000194A21962CAD3DAD4EAD5FAD219700E052 +:10122000B30199C38E010B5E1F4F1F930F937E0175 +:10123000B9E2EB0EF11CFF92EF926E01EDE3CE0EE0 +:10124000D11CDF92CF92CF55DF4FF881C15AD040E9 +:10125000FF93C056DF4F2881C05AD0402F932AE514 +:1012600032E03F932F939F938F930E9479760FB62E +:10127000F894DEBF0FBECDBF04970CF4DFC2EF962B +:101280001CAE1DAE1EAE1FAEEF97E5961CAE1DAE9A +:101290001EAE1FAEE597AB961CAE1DAE1EAE1FAECA +:1012A000AB97A1961CAE1DAE1EAE1FAEA197AE01B0 +:1012B00045585F4F60E070E0CE018F5A9F4F0E940B +:1012C0001D45882309F4D4C2AE014F585F4F60E03A +:1012D00070E0C6010E941D45882309F4C9C2AE0111 +:1012E00049595F4F60E070E0C7010E941D458823A7 +:1012F00009F4BEC2AE01435A5F4F60E070E0C8011E +:101300000E941D45882309F4B3C26091840D709139 +:10131000850D8091860D9091870D0E942373CA558B +:10132000DF4F688379838A839B83C65AD04060915C +:10133000800D7091810D8091820D9091830D0E949E +:101340002373C554DF4F688379838A839B83CB5B88 +:10135000D04060917C0D70917D0D80917E0D9091BB +:101360007F0D0E942373FE0139964F019E012B5F72 +:101370003F4F5901DE0111966D01CA55DF4FE880DC +:10138000F9800A811B81C65AD040C554DF4F28819D +:1013900039814A815B81CB5BD0400E945D4DA401C5 +:1013A000B501C6010E94194AEF962CAD3DAD4EAD78 +:1013B0005FADEF9769817A818B819C810E94A871D2 +:1013C00069837A838B839C83E5962CAD3DAD4EADCE +:1013D0005FADE5976D817E818F8198850E94A871B0 +:1013E0006D837E838F839887AB962CAD3DAD4EADDC +:1013F0005FADAB9769857A858B859C850E94A871C6 +:1014000069877A878B879C87A1962CAD3DAD4EADC1 +:101410005FADA19700E0B601E9C1C156DF4FB881C9 +:10142000CF59D040BF93C256DF4FE881CE59D0404C +:10143000EF93CD55DF4FF881C35AD040FF93CE557F +:10144000DF4F2881C25AD0402F93CB55DF4F3881D0 +:10145000C55AD0403F93CC55DF4FA881C45AD040E5 +:10146000AF938E0105581F4F1F930F9329E132E070 +:101470003F932F939F938F930E9479760FB6F894A2 +:10148000DEBF0FBECDBF04970CF4D8C1CF56DF4FDF +:10149000188219821A821B82C159D040C357DF4F6C +:1014A000188219821A821B82CD58D040C757DF4F4D +:1014B000188219821A821B82C958D040CB57DF4F3D +:1014C000188219821A821B82C558D0408CE0C056FF +:1014D000DF4FA881B981C05AD0401D928A95E9F7A3 +:1014E000AE014F565F4F60E070E0C8010E941D459D +:1014F000882309F4BDC1AE0143575F4F60E070E03F +:10150000CE018F589F4F0E941D45882309F4B0C11A +:10151000AE0147575F4F60E070E0CE0189599F4FA1 +:101520000E941D45882309F4A3C1AE014B575F4FAC +:1015300060E070E0CE01835A9F4F0E941D458823D2 +:1015400009F496C16091840D7091850D8091860D8E +:101550009091870D0E942373CA55DF4F688379836A +:101560008A839B83C65AD04020E030E044EB52E4AB +:101570006091780D7091790D80917A0D90917B0D2D +:101580000E94A7716B017C0120E030E040EA52E448 +:10159000CA55DF4F688179818A819B81C65AD040C4 +:1015A0000E9488729B01AC01C701B6010E94A8711C +:1015B000C554DF4F688379838A839B83CB5BD0409C +:1015C0006091800D7091810D8091820D9091830DBD +:1015D0000E942373CB53DF4F688379838A839B8375 +:1015E000C55CD04060917C0D70917D0D80917E0D29 +:1015F00090917F0D0E942373CD53DF4F8880998097 +:10160000C35CD040F1E56F2E712C6C0E7D1EB4E0F2 +:101610006B0E711C5301FE01EF5AFF4F6F01CA554B +:10162000DF4FE880F9800A811B81C65AD040CB5336 +:10163000DF4F288139814A815B81C55CD0400E949F +:101640005D4DCD53DF4F48815981C35CD040B3011C +:10165000C6010E94194A65966CAD7DAD8EAD9FADF9 +:1016600065976996CCACDDACEEACFFAC69979B019D +:10167000AC010E94DA744B015C01A7019601C7011D +:10168000B6010E94DA749B01AC01C501B4010E944D +:10169000A8710E944775CF56DF4F288139814A8152 +:1016A0005B81C159D0400E94A8716B017C01CF566B +:1016B000DF4F688379838A839B83C159D040C357A6 +:1016C000DF4F288139814A815B81CD58D040C55494 +:1016D000DF4F688179818A819B81CB5BD0400E94FA +:1016E000A87121EE3EE245E652E40E948872CA5596 +:1016F000DF4F688379838A839B83C65AD0400E94D8 +:1017000085729B01AC01C701B6010E94DA744B01DE +:101710005C0165966CAF7DAF8EAF9FAF6597CA5584 +:10172000DF4F688179818A819B81C65AD0400E94AF +:101730003D759B01AC01C701B6010E94DA74699640 +:101740006CAF7DAF8EAF9FAF6997C757DF4F2881D2 +:1017500039814A815B81C958D0406D966CAD7DADB1 +:101760008EAD9FAD6D970E94A8716D966CAF7DAFE9 +:101770008EAF9FAF6D978E01035C1F4F24E045E055 +:10178000C501B4010E942C6F69966CAD7DAD8EAD24 +:101790009FAD69970451110924E045E00E942C6F28 +:1017A0006D966CAD7DAD8EAD9FAD6D9704511109F9 +:1017B00024E045E00E942C6FCF56DF4F688179818D +:1017C0008A819B81C159D0400451110924E045E030 +:1017D0000E942C6FCB57DF4F288139814A815B8172 +:1017E000C558D04000E0BE016F5A7F4F81E0B4C0C1 +:1017F00021E030E02C0F3D1F3F932F938E010B5EB5 +:101800001F4F1F930F937E0139E2E30EF11CFF92ED +:10181000EF926E01ADE3CA0ED11CDF92CF9223E8A6 +:1018200032E03F932F939F938F930E9479760FB668 +:10183000F894DEBF0FBECDBF049784F41F9281E001 +:101840008F938DE092E09F938F930E94723F0F9051 +:101850000F900F900F9082E390E084C0AE01455846 +:101860005F4F60E070E0C6010E941D45811103C01A +:1018700080E090E077C0AE014F585F4F60E070E0CD +:10188000C7010E941D45882399F3AE0149595F4F56 +:1018900060E070E0C8010E941D45882349F3AE0155 +:1018A000435A5F4F60E070E0CE0101960E941D45F3 +:1018B0008823F1F220E030E044EB52E4EF966CAD87 +:1018C0007DAD8EAD9FADEF970E94A7717B018C011E +:1018D000EF966CAF7DAF8EAF9FAFEF978CE0C056A9 +:1018E000DF4FA881B981C05AD0401D928A95E9F78F +:1018F000AB962CAD3DAD4EAD5FADAB97E5966CAD07 +:101900007DAD8EAD9FADE597CD53DF4F888099803B +:10191000C35CD040E1E56E2E712C6C0E7D1EB4E0F0 +:101920006B0E711C5301FE01EF5AFF4F6F010E94B5 +:10193000784CCD53DF4F48815981C35CD040B3010F +:10194000C6010E94194AA1962CAD3DAD4EAD5FADCA +:10195000A19700E0B60180E00E94084690E002C036 +:1019600081E090E09C01215031092230310510F0D6 +:101970000C942F1FF8E24F16510409F414C280F59D +:1019800034E14316510498F481E14816510408F0FB +:1019900061C194E04916510409F474C008F4E3C02D +:1019A000BAE04B16510409F45EC00C94D41EECE16D +:1019B0004E16510409F457C038F426E1421651047A +:1019C00008F4A2C10C94D41E3EE14316510409F45C +:1019D0004AC086E24816510409F4C5C00C94D41ECE +:1019E0009DE34916510409F4D3C110F5B5E34B1634 +:1019F000510409F447C060F4FBE24F16510409F4A6 +:101A000095C121E34216510409F490C10C94D41EEF +:101A10003CE34316510410F00C94D41ECB54DF4F1A +:101A20008881C55BD040865380934F15A9E0AAC139 +:101A30008CE54816510460F49AE54916510408F003 +:101A40001FC1A0E54A16510409F49BC00C94D41E92 +:101A5000BCE54B16510439F0EFE54E16510408F47D +:101A60003CC10C94D41E2114310411F00C94E81ED6 +:101A7000C255DF4FF881CE5AD040FF2309F445C04C +:101A80000C94CA1E2CE14216510491F148F484E0F2 +:101A90004816510479F09AE049165104E1F08AC1E0 +:101AA000AEE14A165104D9F1B5E34B16510409F4DD +:101AB00056C080C181E054C0BFE14B16510408F00C +:101AC00042C0EAE04E16510441F4E1E0C255DF4F56 +:101AD000E883CE5AD04082E043C0FCE14F16510467 +:101AE00009F078C1F1E0C255DF4FF883CE5AD040FB +:101AF0002114310441F02AE02216310411F00C9433 +:101B0000D41E84E010C083E00EC0AEE14A1651043A +:101B100099F631E0C255DF4F3883CE5AD0402114B8 +:101B2000310449F485E080934815CA55DF4F188287 +:101B3000C65AD0405AC18AE02816310411F00C94DC +:101B4000D41E86E0F0CF25E34216510411F00C9428 +:101B5000141F91E0C255DF4F9883CE5AD04087E0E2 +:101B60008093481527C1C255DF4FE881CE5AD04037 +:101B7000E1110C94CA1EF2E0C255DF4FF883CE5A31 +:101B8000D04022E04216510419F158F44114510496 +:101B9000D9F04A94452809F013C181E08093491592 +:101BA0000FC196E249165104C1F0A0E54A1651044E +:101BB00009F44BC0B3E04B16510409F001C183E0B6 +:101BC0008093491531E09AC010924915E1E0ECC0CC +:101BD00082E08093491521E088C08EE12816310407 +:101BE00001F180F4A4E12A16310411F00C94D41E02 +:101BF00084E080934915F1E0CA55DF4FF883C65A57 +:101C0000D040F3C0B8E22B163104A9F0E2E32E165F +:101C1000310411F00C94D41E87E08093491581E0C3 +:101C200039C085E08093491521E0CA55DF4F2883EC +:101C3000C65AD040DAC086E08093491531E0CA55D3 +:101C4000DF4F3883C65AD040D0C088E08093491512 +:101C500091E062C0A2E14A16510441F0B3E14B1693 +:101C6000510449F010924D15E2E09EC081E080934E +:101C70004D15F2E0A6C082E080934D1522E035C0FC +:101C800021143104B9F43AE54316510449F4109291 +:101C90004C1583E0CA55DF4F8883C65AD040A5C093 +:101CA00081E080934C1593E0CA55DF4F9883C65A64 +:101CB000D0409BC0AAE02A16310411F00C94D41E27 +:101CC000BAE54B16510411F40C94D41EE4E0CA5545 +:101CD000DF4FE883C65AD04088C0FDE54F16510457 +:101CE00051F481E080934A1525E0CA55DF4F2883DF +:101CF000C65AD0406BC010924A1535E0CA55DF4F26 +:101D00003883C65AD04062C084E14816510451F469 +:101D100081E080934B1596E0CA55DF4F9883C65AF1 +:101D2000D04054C010924B15A6E02CC0C255DF4FD6 +:101D3000B881CE5AD040B1110C94CA1EE1E34E16C0 +:101D4000510451F410924E15F8E0CA55DF4FF88354 +:101D5000C65AD04023E044C03AE02316310411F0C3 +:101D60000C94D41E81E080934E1588E0CA55DF4F55 +:101D70008883C65AD04093E0C255DF4F9883CE5A2D +:101D8000D04033C0CA55DF4FA883C65AD0401EC0CA +:101D9000232811F00C94D41EBAE0CA55DF4FB88343 +:101DA000C65AD04022C0E7E0CA55DF4FE883C65A82 +:101DB000D0400CC0CA55DF4F1882C65AD04006C06A +:101DC000F1E0CA55DF4FF883C65AD040232869F0A6 +:101DD0000C94FB1ECA55DF4F1882C65AD04021E032 +:101DE000C255DF4F2883CE5AD040C155DF4FE8811E +:101DF000F981CF5AD040CF01A0E0B0E0CA55DF4F03 +:101E00000880C65AD04004C0B695A7959795879587 +:101E10000A94D2F780FF03C085E10C942F1F81E064 +:101E200090E0A0E0B0E0CA55DF4F0880C65AD0402D +:101E300004C0880F991FAA1FBB1F0A94D2F7C1556F +:101E4000DF4F28813981CF5AD040282B392BC155FB +:101E5000DF4F39832883CF5AD0400C940C06672B70 +:101E600011F00C94FB1EC756DF4F8881C959D04032 +:101E7000C754DF4F68817981C95BD040680F711DFD +:101E8000AE0147565F4FCB54DF4F88819981C55BC8 +:101E9000D0400E94491F9C01215031092230310558 +:101EA00010F00C942F1F36E04316510428F483E001 +:101EB0004816510490F026C098E04916510410F4D9 +:101EC0000C94D41EAAE04A16510408F440C0BEE1A6 +:101ED0004B16510411F00C94D41EE2E04E1651043E +:101EE00061F0FEE14F16510441F0452809F046C06B +:101EF00081E0809350152BE032C082E08093501532 +:101F00003BE036C084E04816510471F095E0491674 +:101F10005104A1F081E080935215ACE0CA55DF4F27 +:101F2000A883C65AD04022C482E080935215BCE0F8 +:101F3000CA55DF4FB883C65AD04018C41092521504 +:101F4000ECE0CA55DF4FE883C65AD0400FC4F9E031 +:101F50004F16510451F082E0809351152DE0CA557F +:101F6000DF4F2883C65AD04001C4109251153DE07E +:101F7000CA55DF4F3883C65AD040F8C38BE0CA55E4 +:101F8000DF4F8883C65AD040F1C3672B11F00C9401 +:101F9000FB1EC756DF4F8881C959D040C754DF4F59 +:101FA000E881F981C95BD040E80FF11D27EB4216AB +:101FB00028E0520609F4E7C208F05EC18CE9481631 +:101FC00088E0580609F499C108F076C0A9E94A16D4 +:101FD000A8E05A0609F48BC108F05FC0E8E94E1684 +:101FE000E8E05E0609F0B8C384E16E0199E2C90E2B +:101FF000D11CD601E82F1D92EA95E9F77E01F5E1A3 +:10200000EF0EF11CD701E82F1D92EA95E9F7C456AF +:10201000DF4FA881B981CC59D0401D928A95E9F74C +:1020200080E090E00E94044FCB54DF4F68837983B7 +:102030008A839B83C55BD04081E090E00E94044F7F +:102040002B013C0182E090E00E94044F4B015C01B7 +:10205000860124E045E0CB54DF4F688179818A8195 +:102060009B81C55BD0400E942C6F870124E045E036 +:10207000C301B2010E942C6F0451110924E045E014 +:10208000C501B4010E942C6FFF92EF92DF92CF92B4 +:102090001F930F938CEA92E03DC3FAE94F16F8E0E4 +:1020A0005F0609F427C12BE9421628E0520609F021 +:1020B00053C388EC92E023C13EE9431638E053064F +:1020C00009F427C108F420C19CEA491698E0590692 +:1020D00009F4B5C1ADEA4A16A8E05A0609F03CC3B6 +:1020E000A1961CAE1DAE1EAE1FAEA19765961CAE8E +:1020F0001DAE1EAE1FAE659721961CAE1DAE1EAE68 +:102100001FAE219784E1DE019996C656DF4FB98351 +:10211000A883CA59D040E82F1D92EA95E9F71E011D +:10212000F5E12F0E311CD101E82F1D92EA95E9F758 +:10213000C456DF4FA881B981CC59D0401D928A95F1 +:10214000E9F780E090E00E94044FCB54DF4F6883B2 +:1021500079838A839B83C55BD04081E090E00E94B5 +:10216000044FC554DF4F688379838A839B83CB5B9D +:10217000D04082E090E00E94044F20E030E044EB49 +:1021800052E40E94A7712B013C01FE01FD964F0114 +:102190009E012F5A3F4F5901CE01835A9F4F6C0128 +:1021A00083017201C554DF4F288139814A815B81E7 +:1021B000CB5BD040CB54DF4F688179818A819B8192 +:1021C000C55BD0400E94784CA401B501C6010E94B5 +:1021D000194AA1966CAD7DAD8EAD9FADA197659668 +:1021E000CCACDDACEEACFFAC65979B01AC010E94C2 +:1021F000DA744B015C01A7019601C701B6010E9488 +:10220000DA749B01AC01C501B4010E94A8710E945F +:1022100047758E01075D1F4F24E045E00E942C6F3B +:1022200020E030E044EB52E4C301B2010E94A87107 +:10223000810124E045E00E942C6F21966CAD7DADBC +:102240008EAD9FAD21970451110924E045E00E9415 +:102250002C6F1F930F933F922F92C556DF4FB8817B +:10226000CB59D040BF93C656DF4FE881CA59D04002 +:10227000EF938AEE92E04EC2B0EC4B16B8E05B06EC +:1022800009F4ADC1D0F439EB431638E0530609F434 +:1022900091C108F484C19AEB491698E0590609F4F3 +:1022A00091C1ABEB4A16A8E05A0609F055C28091DD +:1022B000020185FB882780F990C1B2EC4B16B8E08B +:1022C0005B0609F4FDC108F4CCC133EC431638E0D9 +:1022D000530609F407C280E6481689E0580609F05B +:1022E0003BC28091630D8F938091620D21C28AEB76 +:1022F00092E005C08CE69FE002C08FEC92E09F93D5 +:102300008F9383EC92E017C28BE19DE09F938F93B4 +:1023100093C080818E3409F0C8C18181805384309C +:1023200008F0C3C194E16E013DE3C30ED11CD60198 +:10233000E92F1D92EA95E9F77E01F9E2EF0EF11C13 +:10234000D701E92F1D92EA95E9F75E01F5E1AF0E9D +:10235000B11CD501E92F1D92EA95E9F7C456DF4F6C +:10236000A881B981CC59D0401D929A95E9F7823065 +:10237000E1F0833031F1813061F082E090E00E9441 +:10238000044F850124E045E00E942C6FBF92AF927C +:1023900053C080E090E00E94044F860124E045E0B5 +:1023A0000E942C6FDF92CF9247C081E090E00E94A4 +:1023B000044F870124E045E00E942C6FFF92EF92CA +:1023C0003BC08091620D9091630D0497029748F491 +:1023D0006091660F7091670F8091680F9091690FFF +:1023E00022C020E030E040E05FE3609100027091A5 +:1023F000010280910202909103020E94A77120E0E5 +:1024000030E040E05FE30E94DA7420E030E044E333 +:1024100053E40E94DA749B01AC0160E070E084E355 +:1024200093E40E94A7718E010F5F1F4F24E045E0E7 +:102430000E942C6F1F930F9386ED92E07CC1A196B2 +:102440001CAE1DAE1EAE1FAEA19765961CAE1DAE96 +:102450001EAE1FAE659721961CAE1DAE1EAE1FAE02 +:10246000219784E19E01275D3F4FC656DF4F398398 +:102470002883CA59D040D901E82F1D92EA95E9F77F +:102480001E01F5E12F0E311CD101E82F1D92EA95B6 +:10249000E9F7C456DF4FA881B981CC59D0401D92CD +:1024A0008A95E9F780E090E00E94044F2B013C01FF +:1024B00081E090E00E94044FCB54DF4F6883798322 +:1024C0008A839B83C55BD04082E090E00E94044FEA +:1024D00020E030E044EB52E40E94A771FE01FD963B +:1024E0004F019E012F5A3F4F5901DE01A35ABF4FA2 +:1024F0006D017B018C01CB54DF4F288139814A81EA +:102500005B81C55BD040C301B2010E94784CA4013D +:10251000B501C6010E94194AA1966CAD7DAD8EAD84 +:102520009FADA1978E01075D1F4F24E045E00E94FB +:102530002C6F65966CAD7DAD8EAD9FAD65978101BD +:1025400024E045E00E942C6F21966CAD7DAD8EADF0 +:102550009FAD21970451110924E045E00E942C6FA2 +:102560001F930F933F922F92C556DF4FF881CB599F +:10257000D040FF93C656DF4F2881CA59D0402F93D1 +:102580008CED92E0C7C0A49B11C08FE30E94075C52 +:102590008A30910558F08734910550F005C047996D +:1025A00005C00898009B04C081E017C080E015C0FA +:1025B00082E013C082B386958695869591E089273F +:1025C00081700BC08BE30E94075C21E0853691058A +:1025D00008F420E01F922F93ACC01F92A9C081E0A5 +:1025E00090E08C0F9D1F9F938F9388EF92E09F93B5 +:1025F0008F93FF93EF930E9479760F900F900F9037 +:102600000F900F900F90181619060CF041C02981F9 +:102610003A812634310508F048C0F901EA57F54FF0 +:102620008491F901E05CF54F1491F901E650F64F01 +:102630000491002391F081110E94835BE02FF0E070 +:10264000EE0FFF1FEE5EFC4FA591B491EC911E239F +:1026500081E090E021F480E002C080E090E09F9370 +:1026600067C0A1E0B0E0AC0FBD1FBF93AF9388EF90 +:1026700092E09F938F93FF93EF930E9479760F9050 +:102680000F900F900F900F900F901816190684F06E +:102690001F9281E08F938DE092E09F938F930E9431 +:1026A000723F0F900F900F900F9082E390E056C012 +:1026B00089819A8180319105C0F70E94075CCFCF54 +:1026C0008091610D8F938091600D8F9380915F0D4C +:1026D0008F9380915E0D8F9380915D0D8F9380918C +:1026E0005C0D15C080E090E00E94B24E182F092FBB +:1026F00081E090E00E94B24EF82EE92E82E090E058 +:102700000E94B24EEF92FF920F931F939F938F936D +:102710008CEF92E09F938F9388E29DE09F938F933D +:102720000E944B760FB6F894DEBF0FBECDBF11C02E +:102730008F9382EB93E09F938F9388E29DE09F932A +:102740008F930E944B760F900F900F900F900F90E9 +:102750000F9080E090E002C081E090E09C01215069 +:1027600031092230310510F00C942F1FC155DF4F75 +:10277000E881F981CF5AD040CF01A0E0B0E0CA553E +:10278000DF4F0880C65AD04004C0B695A7959795EC +:1027900087950A94D2F780FD3FCB81E090E0A0E0DE +:1027A000B0E0CA55DF4F0880C65AD04004C0880F39 +:1027B000991FAA1FBB1F0A94D2F7E82BF92BC1550A +:1027C000DF4FF983E883CF5AD0400C940C06672B77 +:1027D00011F00C94FB1EF8EE4F16F3E05F0641F08B +:1027E0002CE4421624E0520649F50E94DD4523C040 +:1027F000C756DF4F8881C959D040C754DF4FE881A1 +:10280000F981C95BD040E80FF11D80818635C9F49C +:10281000818180538230A8F49FB7813029F0F894E9 +:102820008091D914886004C0F8948091D914826092 +:102830008093D9149FBF80E090E005C081E090E0D4 +:1028400002C082E390E09C01215031092230310521 +:1028500010F00C942F1FC155DF4FE881F981CF5A3A +:10286000D040CF01A0E0B0E0CA55DF4F0880C65A83 +:10287000D04004C0B695A795979587950A94D2F74E +:1028800080FDCACA81E090E0A0E0B0E0CA55DF4F09 +:102890000880C65AD04004C0880F991FAA1FBB1FCA +:1028A0000A94D2F7E82BF92BC155DF4FF983E8835F +:1028B000CF5AD04095C0812F110F990BAA0BBB0B9B +:1028C000FC01E654F109E531F10510F00C94D41E39 +:1028D0008827EE58FF4F8F4F0C941876C0925315EF +:1028E000D0925415E0925515F0925615CA55DF4F07 +:1028F0001882C65AD040DAC0C0925715D0925815E7 +:10290000E0925915F0925A15C154DF4FF881CF5B10 +:10291000D040F160C154DF4FF883CF5BD04021E05D +:102920004FC0C0925B15D0925C15E0925D15F0929D +:102930005E15C154DF4F3881CF5BD0403260C15447 +:10294000DF4F3883CF5BD04082E05BC0C0925F1521 +:10295000D0926015E0926115F0926215C154DF4F7C +:102960009881CF5BD0409460C154DF4F9883CF5B98 +:10297000D040A3E060C0CB54DF4FB881C55BD040EE +:10298000B0936315E4E071C0C701B6010E94F07214 +:102990006093641570936515809366159093671521 +:1029A000F5E0CA55DF4FF883C65AD0407FC0C092C9 +:1029B0006815D0926915E0926A15F0926B1526E0C1 +:1029C000CA55DF4F2883C65AD04070C0C0926C15DC +:1029D000D0926D15E0926E15F0926F1537E061C0E0 +:1029E000CB56DF4F88819981AA81BB81C559D040E0 +:1029F0008093701590937115A0937215B093731511 +:102A000088E0CA55DF4F8883C65AD0404FC0C09275 +:102A10007515D0927615E0927715F0927815C65517 +:102A2000DF4F9881CA5AD0409160C655DF4F9883D6 +:102A3000CA5AD040AAE0CA55DF4FA883C65AD04030 +:102A400035C0C0927915D0927A15E0927B15F0923C +:102A50007C15C655DF4FB881CA5AD040B260C65502 +:102A6000DF4FB883CA5AD040EBE0CA55DF4FE88346 +:102A7000C65AD0401BC0C0927D15D0927E15E09200 +:102A80007F15F0928015C655DF4FF881CA5AD040A5 +:102A9000F460C655DF4FF883CA5AD0402CE090CF7F +:102AA00039E0CA55DF4F3883C65AD040CA55DF4F88 +:102AB0008881C65AD040082FCD54DF4FE881F98174 +:102AC000C35BD040CF01A0E0B0E0CA55DF4F088023 +:102AD000C65AD04004C0B695A795979587950A9495 +:102AE000D2F780FF02C00C94CC1E81E693E0A0E0F8 +:102AF000B0E0CA55DF4F0880C65AD04004C0B69532 +:102B0000A795979587950A94D2F780FF11C020E08A +:102B100030E0A901CB56DF4F688179818A819B81A2 +:102B2000C559D0400E94817287FF02C00C94CE1E0E +:102B300081E090E0A0E0B0E004C0880F991FAA1FD8 +:102B4000BB1F0A95D2F7CD54DF4F28813981C35B73 +:102B5000D040282B392BCD54DF4F39832883C35BDA +:102B6000D0400C940C06C655DF4F3881CA5AD0406D +:102B7000332369F0C255DF4F8881CE5AD04081118E +:102B800006C092E0C255DF4F9883CE5AD040CD5454 +:102B9000DF4FA881C35BD040A5FF0FC080916415B3 +:102BA00090916515A0916615B0916715803896498A +:102BB000A849B10514F00C94D01E80914A158130BB +:102BC00091F4C255DF4FF881CE5AD040F23009F06F +:102BD00040C0CD54DF4F2881C35BD04020FD02C0F0 +:102BE0000C94DA1E36C080918215811132C0CD540A +:102BF000DF4F3881C35BD04030FF1BC080914B1545 +:102C0000813039F523E333E34BEC51E46091531504 +:102C10007091541580915515909156150E94DA7453 +:102C200060935315709354158093551590935615D2 +:102C300010C080918F1590919015A0919115B09131 +:102C400092158093531590935415A0935515B093F6 +:102C50005615CD54DF4F88819981C35BD04090FDDC +:102C600010C080918B1590918C15A0918D15B0910D +:102C70008E158093701590937115A0937215B09373 +:102C80007315809148158130B9F4CD54DF4F988188 +:102C9000C35BD04096FD03C08CE10C942F1FCD5434 +:102CA000DF4FA881B981C35BD040AF7BCD54DF4FEC +:102CB000B983A883C35BD04080914D158823A1F0D0 +:102CC000813021F1CB54DF4F1882C55BD040F2E058 +:102CD000C754DF4FF883C95BD04021E0CA55DF4FAE +:102CE0002883C65AD04023C0B2E0CB54DF4FB8830C +:102CF000C55BD040E1E0C754DF4FE883C95BD040FB +:102D0000CA55DF4F1882C65AD04011C031E0CB54AB +:102D1000DF4F3883C55BD040C754DF4F1882C95B93 +:102D2000D04082E0CA55DF4F8883C65AD040809198 +:102D30004B15813049F0C255DF4F9881CE5AD040B3 +:102D4000933009F043C036C0B8E4EB2EB5E1FB2E5A +:102D500000E010E0C655DF4FA881CA5AD0408A2E45 +:102D6000912CA12CB12CD501C401002E04C0B69524 +:102D7000A795979587950A94D2F780FF12C023E311 +:102D800033E34BEC51E4F70165A576A587A590A93F +:102D90000E94DA74D7019D966D937D938D939C93D9 +:102DA000D0970F5F1F4FB4E0EB0EF11C03301105FD +:102DB000D1F6C1CF80914E15813041F4C655DF4F19 +:102DC000E881CA5AD040E43009F0ECC78CE0E4EA6C +:102DD000F5E1DE01119601900D928A95E1F7C1555A +:102DE000DF4F28813981CF5AD04031FD08C0109182 +:102DF00048151230C1F0183009F4EAC058C180916A +:102E00004F15873018F08DE10C942F1F9091871586 +:102E1000891769F3BE016F5F7F4F0E94373D88239A +:102E200009F4D4C7E4CFC655DF4F3881CA5AD04021 +:102E3000311103C08AE10C942F1FCD54DF4F8881DC +:102E40009981C35BD04080759927892B09F424CFE1 +:102E5000609168157091691580916A1590916B1554 +:102E60000E9488750E94F572673068F6809163153C +:102E7000843151F0823009F097C7CD54DF4F8881FB +:102E8000C35BD04087FD90C7CD54DF4FA881B98187 +:102E9000C35BD040AF7ACD54DF4FB983A883C35B07 +:102EA000D040662321F022242A94260E02C02090CE +:102EB0004F15BE016B5E7F4F822D0E94373D8823E8 +:102EC00009F484C7309063158090BC159090BD15AF +:102ED000A090BE15B090BF15A8E4CA2EA5E1DA2EC9 +:102EE0008E010B5E1F4FE1E8F5E1C155DF4FF9831D +:102EF000E883CF5AD040E12CF12CC655DF4FF88142 +:102F0000CA5AD0404F2E512C612C712CD301C201D2 +:102F10000E2C04C0B695A795979587950A94D2F77D +:102F200080FF3BC024E132122EC0C155DF4FA88183 +:102F3000B981CF5AD0409F962D913D914D915C9192 +:102F4000D29757966D917D918D919C915A970E9441 +:102F5000A771F60125A536A547A550A90E94A7711E +:102F6000D8016D937D938D939C931397B2E0EB12F0 +:102F700014C0A50194010E94A771F80160837183B8 +:102F8000828393830AC0F60185A596A5A7A5B0A95B +:102F9000F80180839183A283B383FFEFEF1AFF0AC6 +:102FA00024E0C20ED11C0C5F1F4FC155DF4F88813A +:102FB0009981CF5AD0400496C155DF4F99838883B9 +:102FC000CF5AD04093E0E916F10409F09FCF4CC1ED +:102FD000C655DF4FA881CA5AD040AA2309F42ACF88 +:102FE0008090BC159090BD15A090BE15B090BF15F7 +:102FF000F1E8CF2EF5E1DF2EFE0131961F0108E446 +:1030000015E1E12CF12C4A2E512C612C712CD301AD +:10301000C2010E2C04C0B695A795979587950A9482 +:10302000D2F780FF29C0D1012D913D914D915C9146 +:10303000F6016789708D818D928D0E94A771D801EC +:103040009D962D913D914D915C91D0970E94A771D5 +:10305000F80165A776A787A790ABF2E0EF1216C03C +:10306000A50194010E94A771D8019D966D937D934F +:103070008D939C93D0970AC0F60187A590A9A1A92A +:10308000B2A9F80185A796A7A7A7B0ABFFEFEF1AE3 +:10309000FF0A24E0C20ED11C34E0230E311C0C5F69 +:1030A0001F4F83E0E816F10409F0B1CFDCC0C25530 +:1030B000DF4F9881CE5AD040933009F49DC0C65559 +:1030C000DF4FA881CA5AD040AA2309F4C2C0009198 +:1030D0004C154090BC155090BD156090BE15709079 +:1030E000BF1571E8A72E75E1B72EE8E4EE2EE5E1F5 +:1030F000FE2EFE0131964F01C12CD12C8A2F90E07B +:10310000A0E0B0E0C155DF4F88839983AA83BB83D9 +:10311000CF5AD040C155DF4F88819981AA81BB81A8 +:10312000CF5AD0400C2C04C0B695A795979587959B +:103130000A94D2F780FD0BC0F5018789908DA18D8F +:10314000B28DF70185A796A7A7A7B0AB43C01730EC +:1031500009F440C001112BC0D5019F962D913D91DE +:103160004D915C91D297F40160817181828193814C +:103170000E94A871D7019D962D913D914D915C9132 +:10318000D0970E94A871F70165A776A787A790AB93 +:10319000F2E0CF121FC0A30192010E94A871D701D3 +:1031A0009D966D937D938D939C93D09713C0F5015D +:1031B0002789308D418D528DD7019D966D917D91DE +:1031C0008D919C91D0970E94A871F70165A776A771 +:1031D00087A790ABFFEFCF1ADF0A24E0A20EB11C45 +:1031E00034E0E30EF11C84E0880E911C93E0C916D4 +:1031F000D10409F08FCF29C61530A9F0173071F12D +:10320000133089F5C655DF4FA881CA5AD040A111A5 +:1032100005C0C255DF4F1882CE5AD040BE016B5E4A +:103220007F4F86E010C0C655DF4FB881CA5AD040E4 +:10323000B11105C0C255DF4F1882CE5AD040BE0131 +:103240006B5E7F4F87E00E94373D882309F4BEC53F +:103250000AC0153079F3173009F0F3C5809149158C +:10326000823008F0A3C5212C30904915E8E03E12C9 +:1032700011C0C655DF4FF881CA5AD040FF2309F468 +:1032800005C3C255DF4F2881CE5AD040213009F006 +:103290008FC511C3C255DF4F3881CE5AD04032306E +:1032A00009F0F4C2311009C0C655DF4F8881CA5AEF +:1032B000D040882309F4F1C2FEC220E030E0A90129 +:1032C0006091531570915415809155159091561534 +:1032D0000E948172882309F46DC593E0931538F03C +:1032E000A2E03A1690F4B1E03B1631F0E4C2E7E018 +:1032F000E31508F0BEC2DFC2C655DF4FF881CA5AD7 +:10330000D040FF2309F4C9C2D6C2C655DF4F288179 +:10331000CA5AD040222309F48DCDCA55DF4F988177 +:10332000C65AD040892F90E0C155DF4F99838883DA +:10333000CF5AD040C754DF4FB881C95BD040AB2FC4 +:10334000B0E0CD53DF4FB983A883C35CD04081E0A8 +:1033500090E0A0E0B0E06C017D01CA55DF4F08802D +:10336000C65AD04004C0CC0CDD1CEE1CFF1C0A94D5 +:10337000D2F7C754DF4F0880C95BD04004C0880F24 +:10338000991FAA1FBB1F0A94D2F7C82AD92AEA2A72 +:10339000FB2A822F90E0A0E0B0E08C219D21AE219D +:1033A000BF21892B8A2B8B2B09F406C5C155DF4F12 +:1033B00088819981CF5AD040880F991F880F991F13 +:1033C000FC01E85BFA4EDC01AF57BA4E57962D91DF +:1033D0003D914D915C915A9765A576A587A590A9D9 +:1033E0000E94A7714B015C01CD53DF4F8881998109 +:1033F000C35CD040880F991F880F991FFC01E85BC0 +:10340000FA4EDC01AF57BA4E57962D913D914D9132 +:103410005C915A9765A576A587A590A90E94A7718A +:10342000C655DF4F688379838A839B83CA5AD0400D +:10343000CD54DF4F08811981C35BD040007811273C +:10344000CD54DF4FE881C35BD040E7FF15C1CD54B9 +:10345000DF4F28813981C35BD0402F77CD54DF4FB8 +:1034600039832883C35BD0400E94C66B882311F048 +:1034700081E2F5C480914B158130B1F423E333E34D +:103480004BEC51E460916C1570916D1580916E1547 +:1034900090916F150E94DA7460936C1570936D159E +:1034A00080936E1590936F1540906C1550906D152C +:1034B00060906E1570906F15A5019401C501B4015F +:1034C0000E94DA74C154DF4F688379838A839B83B7 +:1034D000CF5BD040C655DF4F288139814A815B815F +:1034E000CA5AD040CA01B9010E94DA74C554DF4FEC +:1034F000688379838A839B83CB5BD04020E030E074 +:1035000040E850E4C301B2010E94DA74A3019201C1 +:103510000E94DA74C154DF4F288139814A815B816E +:10352000CF5BD0400E94A771C554DF4F28813981FD +:103530004A815B81CB5BD0400E94A7716B017C010B +:1035400020E030E0A9010E94817287FD37C4C701E5 +:10355000B6010E9447756B017C01C554DF4F28817D +:1035600039814A815B81CB5BD040C154DF4F688198 +:1035700079818A819B81CF5BD0400E94A8710E9493 +:1035800047759B01AC01C701B60190580E94887233 +:103590006B017C0133E0331204C0F7FAF094F7F8C2 +:1035A000F09420E030E0A901C301B2010E948172D1 +:1035B00087FF0FC0F7FAF094F7F8F094D301C20137 +:1035C000B05880936C1590936D15A0936E15B093C1 +:1035D0006F15C155DF4F08811981CF5AD040000FB8 +:1035E000111F000F111F045B1A4EC655DF4F2881B3 +:1035F00039814A815B81CA5AD040C701B6010E9415 +:10360000DA749B01AC01C501B4010E94A77120E0EE +:1036100030E040E05FE30E94DA74D8011B966D93BE +:103620007D938D939C931E97CD53DF4F0881198115 +:10363000C35CD040000F111F000F111F045B1A4E16 +:10364000A5019401C701B6010E94DA74C655DF4F87 +:10365000288139814A815B81CA5AD0400E94A87171 +:1036600020E030E040E05FE30E94DA74F801638715 +:103670007487858796871FC1C154DF4FF881CF5B60 +:10368000D0404F2E512C612C712CC420D520E62027 +:10369000F720CD28CE28CF2809F492C3CD54DF4F90 +:1036A00028813981C35BD040217FCD54DF4F3983DE +:1036B0002883C35BD04080914B15813009F491C0C1 +:1036C000C155DF4FE881F981CF5AD040EE0FFF1F7F +:1036D000EE0FFF1FE45BFA4EC384D484E584F684C6 +:1036E000A7019601C501B4010E94A7712B013C01FD +:1036F000CD53DF4FE881F981C35CD040EE0FFF1F4F +:10370000EE0FFF1FE45BFA4E83859485A585B68591 +:10371000C155DF4F88839983AA83BB83CF5AD0409A +:103720009C01AD01C655DF4F688179818A819B81FB +:10373000CA5AD0400E94A7714B015C01A3019201BB +:10374000C301B2010E94DA742B013C01A50194016E +:10375000C501B4010E94DA749B01AC01C301B2013E +:103760000E94A8710E9447754B015C01A701960158 +:10377000C701B6010E94DA746B017C01C155DF4FAD +:10378000288139814A815B81CF5AD040CA01B90171 +:103790000E94DA749B01AC01C701B6010E94A871B6 +:1037A0000E9447756B017C0160936C1570936D15D9 +:1037B00080936E1590936F159B01AC01C501B40108 +:1037C0000E94A7714B015C01E894B7F82AE037ED3D +:1037D00043EA5BE3C501B4010E949F74181664F1CB +:1037E0006AC088E4E82E85E1F82ED301C201002EDC +:1037F00004C0B695A795979587950A94D2F780FF50 +:1038000012C023E333E34BEC51E4D7011F966D91D3 +:103810007D918D919C9152970E94DA74F701678790 +:10382000708B818B928B0F5F1F4FF4E0EF0EF11CBA +:1038300003301105D1F644CF20E030E040E05FE3F3 +:10384000C501B4010E949F7418160CF411CE2FE626 +:1038500032E143E85AE3C701B6010E94DA749B01E2 +:10386000AC01C501B4010E949F7418160CF400CE7F +:1038700022C0C655DF4F2881CA5AD040222309F4FE +:10388000D9CA0E94C66B8111F3CD15C0C255DF4F56 +:103890003881CE5AD04031110EC0CD54DF4F8881CF +:1038A0009981C35BD0408E7D9C7FC255DF4F1882CB +:1038B000CE5AD04008C0CD54DF4F88819981C35B78 +:1038C000D0408E7D907E892B09F07CC2809164155A +:1038D00090916515A0916615B09167158093941528 +:1038E00090939515A0939615B093971580914A15CE +:1038F000809382158091531590915415A091551580 +:10390000B091561580938F1590939015A0939115B3 +:10391000B0939215C0907015D0907115E09072150B +:10392000F0907315A701960160918B1570918C151D +:1039300080918D1590918E150E9481728823F9F0E7 +:1039400010918A15112359F080912B15823039F08E +:103950000E94A96BB701A601812F0E94D23B8091E2 +:10396000701590917115A0917215B0917315809397 +:103970008B1590938C15A0938D15B0938E15809117 +:103980007415809393151091521580918A158117A3 +:10399000B9F080912B15823079F0C0908B15D090C2 +:1039A0008C15E0908D15F0908E150E94A96BB701D3 +:1039B000A601812F0E94D23B8091521580938A15D7 +:1039C0001091511580918915811781F080912B15E7 +:1039D000823041F00E94A96B123011F45C9A02C04F +:1039E0000E94CD5F80915115809389158091481573 +:1039F000813089F080914D158093851580914B150C +:103A000080938315C255DF4F8881CE5AD0408330D2 +:103A100009F074C054C080912B15823059F3809006 +:103A2000681590906915A0906A15B0906B1520E00C +:103A300030E040EA51E4C501B4010E94DA740E940A +:103A40005E730E94F5726B017C010E94A96B20E0FD +:103A500030E04AE754E4C501B4010E94DA744B0136 +:103A60005C0182E38C9DB0018D9D700D112480E07E +:103A700090E00E9421739B01AC01C501B4010E943A +:103A8000A7710E945E730E94F572CB010E941245DD +:103A900086010115110509F4ADCF0E94B53301501F +:103AA000110980912A158111A5CF9FEFA0E7B2E0FF +:103AB0009150A040B040E1F700C00000EACF8091F3 +:103AC0004E1580938615813089F480917D159091F3 +:103AD0007E15A0917F15B09180158093BC159093B1 +:103AE000BD15A093BE15B093BF1508C01092BC15AC +:103AF0001092BD151092BE151092BF1580914F15F2 +:103B000090918715981759F0809387158CE0FE01E6 +:103B10003196A4EAB5E101900D928A95E1F7809182 +:103B20004C1580938415E09148158E2F90E0FC0190 +:103B30003297E830F10508F060C08827E957FF4F59 +:103B40008F4F0C941876BE016B5E7F4F822D0E94C2 +:103B5000673080918715281250C08CE0FE01759661 +:103B6000A4EAB5E13EC0C255DF4FE881CE5AD0404D +:103B7000EE2371F020918F153091901540919115A1 +:103B80005091921500E065E775E181E00E940846DA +:103B900020918F153091901540919115509192156B +:103BA00000E0BE016B5E7F4F81E00E940846182F47 +:103BB0008CE0FE017596A8E9B5E101900D928A9519 +:103BC000E1F71CC068E975E186E003C068E975E1CA +:103BD00087E00E94673011C08CE0E5E7F5E1A0EBDB +:103BE000B5E101900D928A95E1F707C08CE0E0EB1A +:103BF000F5E1DF011D928A95E9F710E08091491502 +:103C000080938115883009F470C0C255DF4FB881A8 +:103C1000CE5AD040B23009F068C090E088309105AB +:103C200008F05AC0FC0140908F155090901560909C +:103C30009115709092158827E157FF4F8F4F0C9484 +:103C4000187600E0A301920165E775E180E007C006 +:103C500000918215A301920165E775E181E00E9460 +:103C60000846182F39C060916C1570916D158091C0 +:103C70006E1590916F158824839409C060916C151E +:103C800070916D1580916E1590916F15812CCB54AC +:103C9000DF4FA880C55BD040C754DF4FC880C95BE9 +:103CA000D040CA55DF4FE880C65AD04000918215F7 +:103CB000A30192010E949A6C0FC000E001C001E0D4 +:103CC00020E004C000E001C001E021E04091821545 +:103CD000C301B2010E94046C8CE0E5E7F5E1A8E9BC +:103CE000B5E101900D928A95E1F78091501580938E +:103CF0008815882309F468C00E94A96B90918815E3 +:103D000080912B15913069F48230E9F19FB7F894D6 +:103D10008091D91488608093D9149FBF0E94B533D5 +:103D200032C091E090938115109285151092841500 +:103D3000109282151092871510928A15109289158B +:103D40008230A9F0BE016F5F7F4F80E00E94373D57 +:103D50008823E1F18CE0FE013196A4EAB5E10190FF +:103D60000D928A95E1F70E94CB3B0E94CD5F86EDD4 +:103D700098E00E940B408AE798E00E940B4083E69F +:103D800098E00E940B40109288151EC081E067C029 +:103D900082E065C088E163C089E161C084E05FC002 +:103DA0008BE15DC085E25BC084E159C08EE157C004 +:103DB0008FE155C086E153C080E251C082E24FC01E +:103DC00083E24DC084E24BC0812F49C087E047C0E9 +:103DD000EEE14E16510411F40C948F0D70F42AE0AC +:103DE0004216510411F40C946B0D3CE1431651043E +:103DF00011F40C94780D87E132C085E34816510424 +:103E000011F40C94AF0D9CE549165104A1F721144F +:103E1000310439F0BAE02B16310431F689E00C9404 +:103E2000930D88E00C94930D3CE54316510411F07A +:103E30000C94EA0EA1E0C255DF4FA883CE5AD040C1 +:103E4000E6CF133009F00FCAE4C9153009F4F7C9F9 +:103E5000173009F403CA133009F005CADFC9C85383 +:103E6000DF4F0FB6F894DEBF0FBECDBFDF91CF910D +:103E70001F910F91FF90EF90DF90CF90BF90AF9088 +:103E80009F908F907F906F905F904F903F902F907A +:103E900008952F923F924F925F926F927F928F92EE +:103EA0009F92AF92BF92CF92DF92EF92FF920F93C9 +:103EB0001F93CF93DF93CDB7DEB7C459D1090FB6A7 +:103EC000F894DEBF0FBECDBFFB01873A28E0920712 +:103ED00009F480C208F046C08B34A8E09A0709F4C0 +:103EE00045C1F0F4833E27E0920709F4FFC060F477 +:103EF0008231910509F4FAC08C3C910509F493C014 +:103F0000419709F075C078C08934A8E09A0709F490 +:103F100012C108F018C18834984009F4C2C068C0C2 +:103F20008D3938E0930709F4E6C178F48A39B8E0AE +:103F30009B0709F488C18B3928E0920709F4BEC1B8 +:103F40008939984009F054C024C1823AA8E09A0700 +:103F500009F404C208F44CC0863A984010F40C945A +:103F60005F2946C0803C28E0920709F4AAC508F5FD +:103F7000873BA8E09A0709F453C570F48D3A28E00E +:103F8000920709F43AC38E3A38E0930709F443C420 +:103F90008C3A984069F524C2893BB8E09B0709F444 +:103FA0006EC508F45CC58A3B984011F40C945F29F7 +:103FB0001FC08A36A9E09A0709F44FC770F480360B +:103FC00029E0920709F40CC6813639E0930709F419 +:103FD000EDC6813C984061F49FC58C36B9E09B07E3 +:103FE00009F4B6C708F485C7843C994009F4F7C7BB +:103FF00081E090E00C9461298091181582FF08C03F +:104000008A9A809108018160809308015F9A07C0B5 +:104010008A98809108018E7F809308015F980E94A2 +:104020007A2D8FE00CC18E010F5F1F4F1F930F93EE +:1040300087EC93E09F938F93FF936F930E94797621 +:104040000F900F900F900F900F900F901816190669 +:104050000CF09DC71D8A1E8A1F8A188EAE014B5E0A +:104060005F4F60E070E0C8010E941D458823D1F1D8 +:104070004D895E896F89788D88E70E94353C4D892E +:104080005E896F89788D89E70E94353C4D895E890C +:104090006F89788D8AE70E94353C0E94623E0C94BD +:1040A0005F298E010F5F1F4F1F930F9382ED93E0E7 +:1040B0009F938F93FF936F930E9479760F900F9049 +:1040C0000F900F900F900F90181619060CF05FC705 +:1040D000AE014B5E5F4F60E070E0C8010E941D457D +:1040E000811108C082E390E00C9461290E94BF2CEA +:1040F0000C945F2920E030E04AE754E46D897E8922 +:104100008F89988D0E94DA740E94F0721616170635 +:1041100094F47093190D6093180D11E010931A0D1B +:104120008091170D81110C945F290E94FB2B109335 +:10413000170D0C945F2910921A0D1092190D109200 +:10414000180D0C945F298081863561F6818180533A +:10415000823040F61092980D813021F01092970D28 +:104160000C945F298093970D0C945F29808186358C +:1041700009F0B8CF81818053823008F0B3CF81300D +:1041800021F010929D0D0C945F2980939D0D0C944D +:104190005F2980818E3409F0A5CF918190539430AE +:1041A00008F0A0CF923079F1933009F443C0209108 +:1041B00018158091940D913099F022FF08C08A9AC9 +:1041C000909108019160909308015F9A07C08A98C6 +:1041D000909108019E7F909308015F9884602FC0A2 +:1041E00022FF08C08A9A909108019160909308017B +:1041F0005F9A07C08A98909108019E7F909308016A +:104200005F9881601CC08091181582FF08C08A9A4F +:10421000809108018160809308015F9A07C08A98A5 +:10422000809108018E7F809308015F988091940DA2 +:10423000826005C00E947A2D8091940D88608093E1 +:10424000940D0C945E2980818E3409F04BCF9181BE +:104250009053943008F046CF9230B1F0933029F16A +:10426000209118158091940D913039F022FF02C0F1 +:104270005F9801C05F9A8B7F1DC022FF02C08A98A1 +:1042800001C08A9A8E7F16C08091181582FF04C0E3 +:10429000809108018E7F03C0809108018160809326 +:1042A00008018091940D8D7F05C00E94B12C8091F2 +:1042B000940D877F8093940D0C945F2980818E34B8 +:1042C00009F010CF81818053843008F00BCF90919A +:1042D000940D823051F0833059F0813019F090FF05 +:1042E00098C394C391FD92C394C392FD8FC391C3AD +:1042F00093FF8FC38BC38E010F5F1F4F1F930F93CD +:104300008BED93E09F938F93FF936F930E94797649 +:104310000F900F900F900F900F900F901816190696 +:104320000CF035C68CE0F801ABE1BDE001900D92D8 +:104330008A95E1F70BE11DE08AEE93E0D8016D91DB +:104340008D017C01BFEFEB1AFB0A0E94265FC701BB +:10435000E6EFEE16E3E0FE0689F7B1C71AA619A646 +:104360001D8A1E8A1F8A188E8E010F5F1F4F8AE0DA +:10437000D8011D928A95E9F7CE0189969F938F9374 +:104380001F930F9386EE93E09F938F93FF936F930A +:104390000E9479760FB6F894DEBF0FBECDBF0297AC +:1043A0000CF4F5C5AE014B5E5F4F60E070E0C801F4 +:1043B0000E941D45882309F495CE2D893E894F8999 +:1043C000588D69A57AA5072E000C880B990B0E94C1 +:1043D000162C75C78FEF0E94583D0E94722B6FC735 +:1043E0002E0125E6420E511C84E1D201282F1D9298 +:1043F0002A95E9F73E0131E5630E711CD301282FA0 +:104400001D922A95E9F78E01035C1F4FD8011D927A +:104410008A95E9F7C357DF4F188219821A821B82E7 +:10442000CD58D040C757DF4F188219821A821B829D +:10443000C958D040CB57DF4F188219821A821B828D +:10444000C558D0401F930F937F926F925F924F9207 +:1044500082EF93E09F938F93FF936F930E947976FF +:104460000FB6F894DEBF0FBECDBF03970CF48FC517 +:10447000AE0143575F4F60E070E0C2010E941D45EE +:10448000882309F42FCEAE0147575F4F60E070E0FC +:10449000C3010E941D45882309F424CEAE014B5769 +:1044A0005F4F60E070E0C8010E941D45882309F459 +:1044B00019CECF57DF4F188219821A821B82C1583A +:1044C000D040C358DF4F188219821A821B82CD5701 +:1044D000D040ED961CAE1DAE1EAE1FAEED9784E132 +:1044E0003E01F9E26F0E711CD301E82F1D92EA958F +:1044F000E9F72E01F5E14F0E511CD201E82F1D9274 +:10450000EA95E9F79E012F5F3F4F1901D9011D92EE +:104510008A95E9F7AE014B575F4FBE0167577F4F52 +:10452000CE0183579F4F0E94BC2FCB57DF4FE880AF +:10453000F9800A811B81C558D040C757DF4F2881B9 +:1045400039814A815B81C958D040C357DF4F6881A8 +:1045500079818A819B81CD58D040FE01EF57FF4F72 +:104560004F01DE01A758BF4F5D0134976F010E94D4 +:10457000C24A20E030E044EB52E4CF57DF4F68817D +:1045800079818A819B81C158D0400E94A871CF5700 +:10459000DF4F688379838A839B83C158D040C35897 +:1045A000DF4F688179818A819B81CD57D04082011C +:1045B00024E045E00E942C6FED966CAD7DAD8EAD94 +:1045C0009FADED97810124E045E00E942C6FCF570D +:1045D000DF4F688179818A819B81C158D0408301F6 +:1045E00024E045E00E942C6F3F922F925F924F9201 +:1045F0007F926F928CEA92E000C12E0135E6430E65 +:10460000511C84E1D201282F1D922A95E9F73E0121 +:1046100031E5630E711CD301282F1D922A95E9F70D +:104620008E01035C1F4FD8011D928A95E9F7C3578D +:10463000DF4F188219821A821B82CD58D040C7578B +:10464000DF4F188219821A821B82C958D040CB577B +:10465000DF4F188219821A821B82C558D0401F93DF +:104660000F937F926F925F924F9281E194E09F93BC +:104670008F93FF936F930E9479760FB6F894DEBF05 +:104680000FBECDBF03970CF482C4AE0143575F4FFA +:1046900060E070E0C2010E941D45882309F422CD2C +:1046A000AE0147575F4F60E070E0C3010E941D45B7 +:1046B000882309F417CDAE014B575F4F60E070E0DF +:1046C000C8010E941D45882309F40CCDCF57DF4F48 +:1046D000188219821A821B82C158D040C358DF4FFA +:1046E000188219821A821B82CD57D040ED961CAEDB +:1046F0001DAE1EAE1FAEED9784E13E01F9E26F0ED6 +:10470000711CD301E82F1D92EA95E9F72E01F5E11E +:104710004F0E511CD201E82F1D92EA95E9F79E0138 +:104720002F5F3F4F1901D9011D928A95E9F720E0CB +:1047300030E044EB52E4C357DF4F688179818A81CE +:104740009B81CD58D0400E94A7717B018C01C3573B +:10475000DF4F688379838A839B83CD58D040CB57C2 +:10476000DF4F288139814A815B81C558D040C757C6 +:10477000DF4F688179818A819B81C958D040FE01D1 +:10478000E758FF4F4F01DE01A358BF4F5D01389638 +:104790006F010E94784CA401B501C6010E94194A1C +:1047A000CF57DF4F688179818A819B81C158D04082 +:1047B000830124E045E00E942C6FC358DF4F6881DD +:1047C00079818A819B81CD57D040820124E045E0E8 +:1047D0000E942C6FED966CAD7DAD8EAD9FADED97CB +:1047E000810124E045E00E942C6F3F922F925F925E +:1047F0004F927F926F928CED92E09F938F9388E21D +:104800009DE09F938F930E944B760FB6F894DEBF86 +:104810000FBECDBF54C5CF57DF4F188219821A8201 +:104820001B82C158D040C358DF4F188219821A82A8 +:104830001B82CD57D040ED961CAE1DAE1EAE1FAEF6 +:10484000ED9784E12E0139E2430E511CD201282F4D +:104850001D922A95E9F73E0135E1630E711CD301E3 +:10486000282F1D922A95E9F7DE0111967D011D92F0 +:104870008A95E9F78E010B571F4F8FEF90E0D80113 +:104880008D939C931F930F93FF92EF927F926F9261 +:104890005F924F9280E394E09F938F93FF936F9387 +:1048A0000E9479760FB6F894DEBF0FBECDBF049795 +:1048B0000CF46DC3AE014F575F4F60E070E0C20172 +:1048C0000E941D45882309F40DCCAE0143585F4F6B +:1048D00060E070E0C3010E941D45882309F402CC0A +:1048E000AE0147585F4F60E070E0C7010E941D4570 +:1048F000882309F4F7CBD8018D919C91009709F496 +:1049000043C0019709F0EECBCF57DF4F4880598065 +:104910006A807B80C158D04020E030E044EB52E414 +:10492000C358DF4F688179818A819B81CD57D04000 +:104930000E94A77121EE3EE245E652E40E94887291 +:104940006B017C010E9485729B01AC01C301B20125 +:104950000E94DA74CF57DF4F688379838A839B8301 +:10496000C158D040C701B6010E943D759B01AC0102 +:10497000C301B2010E94DA74C358DF4F68837983A0 +:104980008A839B83CD57D040AE0147585F4FBE010D +:1049900063587F4FCE018F579F4F0E94BC2FED96DB +:1049A000ECACFDAC0EAD1FADED97C358DF4F2881C9 +:1049B00039814A815B81CD57D040CF57DF4F688125 +:1049C00079818A819B81C158D040FE01FD964F01BB +:1049D000DE01AF5ABF4F5D01B8966F010E94C24A17 +:1049E0002196ECACFDAC0EAD1FAD219765962CADBC +:1049F0003DAD4EAD5FAD6597A9966CAD7DAD8EAD0D +:104A00009FADA9970E94EE4D882319F066ED73E0E3 +:104A100002C062EC73E088E29DE00E9444764FC4DD +:104A20008081863509F05ECB81818053823008F029 +:104A300059CB813049F080915A0D90915B0D0197CF +:104A400009F03DC4BBD53BC49C9A9D9AA49AA598F5 +:104A500081E090E090935B0D80935A0D30C480818B +:104A6000863509F03FCB81818053823008F03ACB04 +:104A7000813011F034D623C43F9A479820C48081F6 +:104A8000863509F02FCB81818053823008F02ACB04 +:104A9000813011F013D613C480910101806280939C +:104AA00001018091010180648093010180910201E4 +:104AB00080628093020180910201806480930201F0 +:104AC000FEC3CE0101969F938F9344969F938F933D +:104AD00082E594E09F938F93FF936F930E94797682 +:104AE0000FB6F894DEBF0FBECDBF02970CF44FC2D5 +:104AF0008D899E898634910508F0F4CA29813A810E +:104B00002230310508F0EECA232B11F061E001C01C +:104B100060E00E94D95BD3C3CE0101969F938F932F +:104B200044969F938F9382E594E09F938F93FF9396 +:104B30006F930E9479760FB6F894DEBF0FBECDBF9B +:104B400002970CF424C28D899E898634910508F061 +:104B5000C9CA29813A812230310508F0C3CAFC0153 +:104B6000E05CF54F8650964F232BD1F02491FC0149 +:104B70008491882309F4A3C390E0880F991FFC0156 +:104B8000E455F84FA591B491FC01E052F64F8591A0 +:104B900094918FB7F894EC91E22BEC938FBF8FC375 +:104BA0002491FC018491882309F489C390E0880F43 +:104BB000991FFC01E455F84F45915491FC01E052D6 +:104BC000F64FA591B4919FB7F894FA018081209592 +:104BD000822380838C91E22FE823EC939FBF6FC3E5 +:104BE0008081833509F07ECA8181E0EDE80FE830ED +:104BF00008F078CA8E2F90E0FC013197E730F1057C +:104C000030F48827E956FF4F8F4F0C941876A9D6B9 +:104C10001092630D1092620D8AE999E1A5E9B2E460 +:104C20008093680D9093690DA0936A0DB0936B0DFE +:104C30008AE999E9A2E6B2E4B0C093D681E090E0B7 +:104C40009093630D8093620D86EF98E2ACE4B2E43A +:104C50008093680D9093690DA0936A0DB0936B0DCE +:104C60008DEC9CECA0E8B2E498C07BD682E090E0AA +:104C70009093630D8093620D89E29CEDA4E9B2E408 +:104C80008093680D9093690DA0936A0DB0936B0D9E +:104C900080E090E0A2E6B2E480C063D683E090E0DA +:104CA0009093630D8093620D80E090E0ACE2B2E4FB +:104CB0008093680D9093690DA0936A0DB0936B0D6E +:104CC00080E090E0ABE8B2E468C04BD684E090E0CE +:104CD0009093630D8093620D80E090E0ACE1B2E4CC +:104CE0008093680D9093690DA0936A0DB0936B0D3E +:104CF00080E090E0A9E9B2E417C033D685E090E007 +:104D00009093630D8093620D8DEC9CECA2E9B2E46C +:104D10008093680D9093690DA0936A0DB0936B0D0D +:104D200080E090E0A8E9B2E48093640D9093650D73 +:104D3000A093660DB093670DE7D5D9C012D686E073 +:104D400090E09093630D8093620D86E696E6AAE963 +:104D5000B2E48093680D9093690DA0936A0DB093AF +:104D60006B0D80E090E0AAE5B2E417C0FAD587E0C9 +:104D700090E09093630D8093620D85E89BEEABEC21 +:104D8000B1E48093680D9093690DA0936A0DB09380 +:104D90006B0D80E090E0A2E3B2E48093640D909309 +:104DA000650DA093660DB093670DA1C080E090E003 +:104DB0000E94B24E90935F0D80935E0D81E090E073 +:104DC0000E94B24E9093610D8093600D82E090E05E +:104DD0000E94B24E90935D0D80935C0D0CE51DE03A +:104DE00084E393E0D8016D918D017C01BFEFEB1A54 +:104DF000FB0A0E94265FC701EAE3EE16E3E0FE0627 +:104E000089F76BEB82E393E00E94265F0E94884E55 +:104E100080E090E00E94044F6093700D7093710DDC +:104E20008093720D9093730D81E090E00E94044F87 +:104E30006093740D7093750D8093760D9093770D3C +:104E400082E090E00E94044F6093780D7093790D9A +:104E500080937A0D90937B0D32C2609136157091DC +:104E6000371580913815909139150E9423732B01C5 +:104E70003C016091321570913315809134159091F9 +:104E800035150E942373CF56DF4F688379838A8359 +:104E90009B83C159D04060912E1570912F15809140 +:104EA0003015909131150E9423739E012F5F3F4F63 +:104EB0004901DE0155965D01FE01B9966F0183013E +:104EC0007201CF56DF4F288139814A815B81C159F8 +:104ED000D0400E945D4D89819A81AB81BC818093D5 +:104EE000680D9093690DA0936A0DB0936B0D44D437 +:104EF000E6C11D8A1E8A1F8A188E8E010F5F1F4F02 +:104F000084E1D8011D928A95E9F71F930F9389E5F3 +:104F100094E09F938F93FF936F930E9479760F9005 +:104F20000F900F900F900F900F90181619067CF5A8 +:104F3000AE014B5E5F4F60E070E0C8010E941D450E +:104F4000882309F4CFC88D899E89AF89B88D25CF74 +:104F50001D8A1E8A1F8A188E8E010F5F1F4F84E1E3 +:104F6000D8011D928A95E9F71F930F9384E694E088 +:104F70009F938F93FF936F930E9479760F900F907A +:104F80000F900F900F900F901816190674F01F9243 +:104F900081E08F938DE092E09F938F930E94723F08 +:104FA0000F900F900F900F909DC8AE014B5E5F4F1A +:104FB00060E070E0C8010E941D45882309F492C892 +:104FC0008D899E89AF89B88D80936C0D90936D0DFE +:104FD000A0936E0DB0936F0DCFD396D470C1899806 +:104FE00068E9662E6EE0762E830182E090E00E94F2 +:104FF000B24EF801819391938F0150E9E52EFF2481 +:10500000F394889A6AE070E080E090E00E94D444D3 +:1050100088986CE271E080E090E00E94D444F1E076 +:10502000EF1AF10871F788EE93E00E9412452FE025 +:1050300000361207D1F682E090E00E94B24E9093C3 +:10504000610F8093600F899A00E21EE4889A6AE0FB +:1050500070E080E090E00E94D44488986CE271E0B7 +:1050600080E090E00E94D4440150110979F78F98B4 +:105070004EE0E42EF12C00E911E08E9A6AE070E037 +:1050800080E090E00E94D4448E986CE271E080E071 +:1050900090E00E94D4440150110979F731E0E31AFD +:1050A000F10849F788EE93E00E9412458F9A38E1A3 +:1050B000232E3EE0332E210100E010E080E090E05E +:1050C0000E94B24ED2018D939D932D0120E9E22ED4 +:1050D000FF24F3948E9A6AE070E080E090E00E94F2 +:1050E000D4448E9864EF71E080E090E00E94D44454 +:1050F000B1E0EB1AF10871F70E301105A9F088EE56 +:1051000093E00E9412450F5F1F4F0F331105B1F658 +:1051100080E090E00E94B24E9093970E8093960E9E +:105120008F9800E51DE223C080910B018D7F809355 +:105130000B01E12C92E3F92E80910B0188608093A2 +:105140000B016AE070E080E090E00E94D44480911E +:105150000B01877F80930B016CE271E080E090E0AF +:105160000E94D444E1E0EE1AF10831F7C8CF8E9ADC +:105170006AE070E080E090E00E94D4448E986CE297 +:1051800071E080E090E00E94D4440150110979F769 +:1051900088EE93E00E94124580910B01826080931B +:1051A0000B0100E913E380910B01886080930B01F0 +:1051B0006AE070E080E090E00E94D44480910B01AE +:1051C000877F80930B016CE271E080E090E00E94A9 +:1051D000D4440150110939F788EE93E00E9412453A +:1051E00080910B018D7F80930B010EE91DE028015A +:1051F00081E090E00E94B24ED2018D939D932D01EB +:1052000080E9E82EFF24F39480910B01886080935D +:105210000B016AE070E080E090E00E94D44480914D +:105220000B01877F80930B016CE271E080E090E0DE +:105230000E94D444B1E0EB1AF10831F788EE93E014 +:105240000E941245E6E14E16EEE05E0689F681E028 +:1052500090E00E94B24E9093170E8093160E81E05C +:1052600090E0D3016D913D012C01BFEF4B1A5B0A19 +:105270000E94265FC2018B3C910599F7F101619173 +:105280001F013201FFEF6F1A7F0AC2010E94265FE1 +:1052900023012BE4621621E0720681F7D8016D919B +:1052A0008D017301BFEFEB1AFB0AC3010E94265F59 +:1052B0003701E5ECEE16E1E0FE0681F78AD180E0E9 +:1052C00090E0CC56DF4F0FB6F894DEBF0FBECDBFD7 +:1052D000DF91CF911F910F91FF90EF90DF90CF90D2 +:1052E000BF90AF909F908F907F906F905F904F9006 +:1052F0003F902F90089520916A0F30916B0F2115E8 +:105300003105B9F080917A0F90917B0F8217930746 +:1053100034F4019690937B0F80937A0F0AC0109219 +:105320007B0F10927A0F10926B0F10926A0F1092EF +:10533000950D2091180D3091190D21153105A1F011 +:105340008091780F9091790F8217930734F401962A +:105350009093790F8093780F07C01092790F109275 +:10536000780F81E08093960D8091950D81111BC07F +:1053700080911A0D811117C0809173008E7F8093E8 +:1053800073001092170D10926B0F10926A0F10920B +:10539000190D1092180D10927B0F10927A0F109227 +:1053A000790F1092780F08958091770F811107C0BF +:1053B00081E08093770F80910B01806205C010928D +:1053C000770F80910B018F7D80930B018091750F7A +:1053D0009091760F9C012F5F3F4F3093760F209373 +:1053E000750F20910402309105022817390760F4E7 +:1053F0001092760F1092750F809170008E7F8093BF +:10540000700081E080939B0D08952091620D309192 +:10541000630D2430310529F426E636E646E65FE3DF +:1054200007C02530310539F526E636E646EE5FE35E +:105430000E94887220E030E040E852E40E94DA7472 +:105440000E94F0726093620F7093630F8093640FF9 +:105450009093650F89E49AE29093D3148093D214C9 +:105460001092A00085E08093A1008DEF9FEF9093B4 +:10547000D5148093D4148091D4149091D514909322 +:10548000A5008093A40080917200816080937200D7 +:1054900008958091620F9091630FA091640FB09175 +:1054A000650F181619061A061B06F4F42091740FDE +:1054B000222389F01092740F0197A109B1098093FA +:1054C000620F9093630FA093640FB093650F809168 +:1054D0000201806406C081E08093740F8091020114 +:1054E0008F7B8093020108950E94905C1092620F5E +:1054F0001092630F1092640F1092650F81E08093F9 +:105500009A0D0895CF93DF93EB018431D1F028F405 +:10551000882361F08C30A8F437C08233E9F018F4A6 +:10552000873190F10EC0833311F10BC0888188233D +:1055300029F06FE674E0CE010E94397661E774E0ED +:1055400020C08881882329F06FE674E0CE010E9494 +:10555000397664E774E015C08881882329F06FE606 +:1055600074E0CE010E94397668E774E00AC0888151 +:10557000882329F06FE674E0CE010E9439766CE74B +:1055800074E0CE010E9439768091280D882379F04D +:1055900068E27DE0CE010E94397682E3E8E2FDE038 +:1055A000DF011D928A95E9F7DF91CF91089569E7B0 +:1055B00073E0CE01DF91CF910C9439769C9A9D9A3D +:1055C000A498A59A82E090E090935B0D80935A0D89 +:1055D00008958F929F92AF92BF92CF92DF92EF92F7 +:1055E000FF920F931F93CF93DF930AE215E18EE1B1 +:1055F000F80111928A95E9F70E9426400E94205FE7 +:1056000080E090E00E94044FC2E6DDE06E877F8775 +:10561000888B998B81E090E00E94044F6A8B7B8B92 +:105620008C8B9D8B82E090E00E94044F6E8B7F8B71 +:10563000888F998FF801C480D580E680F780CA8E64 +:10564000DB8EEC8EFD8EC084D184E284F384CE8E1A +:10565000DF8EE8A2F9A204851585268537850AA381 +:105660001BA32CA33DA320E030E044EB52E40E94B6 +:10567000A7717B018C012A893B894C895D896E85E4 +:105680007F8588899989E0E98E2EEDE09E2EFCE8E1 +:10569000AF2EFDE0BF2EA8E8CA2EADE0DA2E0E94A4 +:1056A000784CDF91CF911F910F91FF90EF90DF9099 +:1056B000CF90BF90AF909F908F900895E1E0F1E080 +:1056C000808180628083808180648083E2E0F1E079 +:1056D00080818F7D808380818F7B808308953F9A36 +:1056E000479A0895809104018778809304018091FE +:1056F00003018877803451F440E050E060E87FE3B4 +:1057000084E00E94353C60E874E02AC08091030187 +:10571000887791F440E050E060E87FE384E00E9405 +:10572000353C67E874E08CE69FE00E94447640E0F8 +:1057300050E060EE70E41BC080910301887740E088 +:1057400050E060E87FE3803231F484E00E94353C31 +:105750006EE874E005C084E00E94353C65E974E0C1 +:105760008CE69FE00E94447640E050E0BA0183E07E +:105770000E94353C0C94623E0F931F93CF93DF93AE +:105780006091620D84E893E00E94265F6091630D52 +:1057900085E893E00E94265FC4E6DDE088E993E0B7 +:1057A00069918C010F5F1F4F0E94265FC8010C3961 +:1057B0001340B1F7C8E6DDE08EE893E069918C0113 +:1057C0000F5F1F4F0E94265FC80102391340B1F7D7 +:1057D000CCE6DDE082E89CE069918C010F5F1F4F11 +:1057E0000E94265FC80106381C40B1F7DF91CF91B7 +:1057F0001F910F910895EBE7F4E18BE799E2918314 +:1058000080831092200185E08093210181EF9FEF3A +:1058100093838283828193819093250180932401D5 +:10582000E3E7F0E08081816080830895CF92DF928A +:10583000EF92FF920F931F93CF93DF9369017A0149 +:1058400010929B0DEAE0F1E0208120622083EBE0E2 +:10585000F1E020812F7D2083660F771F7093050272 +:105860006093040204E714E184ED99E2F801918366 +:105870008083C0E7D0E088818E7F8883E0EBF0E012 +:1058800080818C7F8083E1EBF0E08081877F808363 +:10589000A6EBB0E08C918F7D8C9388818D7F88837F +:1058A00080818460808380818C7F808320E034E2EB +:1058B00044EF59E4C701B6010E94887220E034E247 +:1058C00044E75BE40E94DA7420E030E040E85CE307 +:1058D0000E94DA740E94F07220E031E0C901861B58 +:1058E000970BF80193838283828193818093B20026 +:1058F000888181608883DF91CF911F910F91FF9004 +:10590000EF90DF90CF900895CF93C1E0C0939A0DB0 +:105910008091620D9091630D0497029700F51092AB +:105920009A0D1092660F1092670F1092680F1092E6 +:10593000690F809107018F7D809307018091080195 +:10594000806280930801809102018062809302014D +:1059500060E070E084EB93E458DDC093990DCF9143 +:1059600008951092620F1092630F1092640F1092BC +:10597000650F0E94905C1092990D0C94905C809140 +:10598000181582FF08C08A98809108018E7F809345 +:1059900008015F9807C08A9A80910801816080930E +:1059A00008015F9ADEDF1092940D08958F929F9206 +:1059B000AF92BF92CF92DF92EF92FF926B017C0188 +:1059C00020E030E044EB53E40E949F7418160CF47E +:1059D00088C020E030E0A901C701B6010E948172B1 +:1059E00087FD7FC08091620D9091630D04970297AF +:1059F000B8F52091660F3091670F4091680F509174 +:105A0000690FC701B6010E94A7714B015C0120E03C +:105A100030E0A9010E948172882309F462C0C0921B +:105A2000660FD092670FE092680FF092690F20E046 +:105A300030E0A901C501B4010E949F74181624F436 +:105A4000809102018F7D03C080910201806280936A +:105A50000201C501B4019F77D8DC10929A0D41C0B4 +:105A600020E030E044E353E4C701B6010E949F7494 +:105A700018161CF4C12CD12C7601A701960160E008 +:105A800070E084E393E40E94A77120E030E044E3F7 +:105A900053E40E9488729B01AC010E94A87120E02F +:105AA00030E040E05FE30E94A871609300027093D1 +:105AB0000102809302029093030220E030E040EA6A +:105AC00051E40E94887220E030EC4FE754E40E94D9 +:105AD000DA740E94F572CB010E94425B81E08093F0 +:105AE0009A0DFF90EF90DF90CF90BF90AF909F9076 +:105AF0008F9008958091620D9091630D04970297A5 +:105B000080F4809101018062809301018091010104 +:105B10008064809301018091020180628093020180 +:105B2000089580E18093A1001092A00082E080930C +:105B3000D81480E29EE49093D7148093D614909367 +:105B4000A7008093A60082E18093A10020E030E0CE +:105B500040EA51E4609100027091010280910202DA +:105B6000909103020E94887220E030EC4FE754E4E9 +:105B70000E94DA740E94F572CB010C94425BCF93C1 +:105B8000DF93D82FC8E05E98559AD7FF02C05D9A80 +:105B900001C05D9865E070E080E090E00E94D44430 +:105BA0005E9A65E070E080E090E00E94D4445E98E8 +:105BB000DD0F65E070E080E090E00E94D444C150C9 +:105BC00011F762E070E080E090E00E94D444559AC2 +:105BD0005D9A62E070E080E090E0DF91CF910C94FC +:105BE000D4445E98559A5D9865E070E080E090E05E +:105BF0000E94D4445E9A65E070E080E090E00E94EC +:105C0000D444559A5D9A65E070E080E090E00C9491 +:105C1000D444CF93559A5D9A62E070E080E090E0C2 +:105C20000E94D4445E9A62E070E080E090E00E94BE +:105C3000D44455988BEF99B1C92FC07295FF05C018 +:105C40008150C9F7CEDFC1E007C05E9862E070E026 +:105C500080E090E00E94D4448C2FCF910895559A13 +:105C60005D9A5E9A65E070E080E090E00E94D44426 +:105C7000559A5D9865E070E080E090E00E94D44421 +:105C80005E9862E070E080E090E00C94D444CF93A2 +:105C9000DF93D82FC8E0809102018F7780930201B3 +:105CA0008091010184608093010180910201D7FFFE +:105CB00002C0846001C08B7F8093020165E070E0C8 +:105CC00080E090E00E94D44480910201806880933B +:105CD000020165E070E080E090E00E94D444809191 +:105CE00002018F7780930201DD0F65E070E080E0B4 +:105CF00090E00E94D444C15071F662E070E080E010 +:105D000090E00E94D444809101018460809301015D +:105D10008091020184608093020162E070E080E083 +:105D200090E0DF91CF910C94D4440F931F93CF93C5 +:105D3000DF93C2E0D1E088818F77888301E011E0B2 +:105D4000F80180818460808388818B7F888365E00F +:105D500070E080E090E00E94D4448881806888836D +:105D600065E070E080E090E00E94D444F80180811A +:105D70008460808388818460888365E070E080E04F +:105D800090E0DF91CF911F910F910C94D444CF9369 +:105D900080910101846080930101809102018460FF +:105DA0008093020162E070E080E090E00E94D444C1 +:105DB0008091020180688093020162E070E080E0DF +:105DC00090E00E94D444809101018B7F8093010177 +:105DD0008BEF90910001C92FC47092FF05C08150D4 +:105DE000C1F7A3DFC1E00BC0809102018F778093E0 +:105DF000020162E070E080E090E00E94D4448C2FC9 +:105E0000CF9108950F931F93CF93DF9301E011E09B +:105E1000F801808184608083C2E0D1E08881846061 +:105E2000888388818068888365E070E080E090E006 +:105E30000E94D444F80180818460808388818B7FB4 +:105E4000888365E070E080E090E00E94D44488811F +:105E50008F77888362E070E080E090E0DF91CF91FF +:105E60001F910F910C94D444CF93DF93D82FC8E0A7 +:105E70004398399AD7FF02C0419A01C0419865E022 +:105E800070E080E090E00E94D444439A65E070E0C6 +:105E900080E090E00E94D4444398DD0F65E070E01C +:105EA00080E090E00E94D444C15011F762E070E0BD +:105EB00080E090E00E94D444399A419A62E070E018 +:105EC00080E090E0DF91CF910C94D4444398399ACC +:105ED000419865E070E080E090E00E94D444439AED +:105EE00065E070E080E090E00E94D444399A419AE5 +:105EF00065E070E080E090E00C94D444CF93399A50 +:105F0000419A62E070E080E090E00E94D444439ABD +:105F100062E070E080E090E00E94D44439988BEF1A +:105F200096B1C92FC27091FF05C08150C9F7CEDF6D +:105F3000C1E007C0439862E070E080E090E00E941A +:105F4000D4448C2FCF910895399A419A439A65E0B1 +:105F500070E080E090E00E94D444399A419865E076 +:105F600070E080E090E00E94D444439862E070E0EA +:105F700080E090E00C94D4444F925F926F927F92B5 +:105F8000AF92BF92CF92DF92EF92FF920F931F9347 +:105F9000CF93DF935C01EB018A01FC0140805180CB +:105FA0006280738020E030E0A901C301B2010E9449 +:105FB000817220E030E0A901811111C068817981EE +:105FC0008A819B810E949F741816E4F02AEDC22EEC +:105FD0002FE0D22E29ECE22E2FEBF22E22C0C301AD +:105FE000B2010E94817287FD16C0A30192016881EF +:105FF00079818A819B810E9488720E9446726B011E +:106000007C010FC09AEDC92E9FE0D92E99ECE92EA4 +:106010009FE3F92E06C0C12CD12C80ECE82E8FE72F +:10602000F82EC701B6010E9485722091640D30914F +:10603000650D4091660D5091670D0E94DA749B01C9 +:10604000AC01C301B2010E94A771F50160837183A5 +:1060500082839383C701B6010E943D752091640D30 +:106060003091650D4091660D5091670D0E94DA7474 +:106070009B01AC01688179818A819B810E94A77113 +:10608000688379838A839B832091680D3091690DA1 +:1060900040916A0D50916B0DF80160817181828190 +:1060A00093810E94A871F801608371838283938336 +:1060B000DF91CF911F910F91FF90EF90DF90CF90E4 +:1060C000BF90AF907F906F905F904F9008952DE0BC +:1060D000829FC00111244CE050E0965F0C94485F11 +:1060E0001F920F920FB60F9211240BB60F922F939F +:1060F0003F934F935F936F937F938F939F93AF9350 +:10610000BF93EF93FF938091360123E030E030930B +:106110008110209380108F33A9F050F4883109F159 +:10612000813211F59FB7F8948091D914886015C019 +:10613000803471F08E37C1F49FB7F8948091D914F0 +:1061400082600BC09FB7F8948091D914816005C01C +:106150009FB7F8948091D91480628093D9149FBF1F +:1061600014C00E94DD4511C0E091FD0F91E09E0F2B +:10617000903809F490E02091FC0F921731F0F0E094 +:10618000E458F04F80839093FD0FFF91EF91BF9102 +:10619000AF919F918F917F916F915F914F913F91BF +:1061A0002F910F900BBE0F900FBE0F901F90189560 +:1061B0001F920F920FB60F9211240BB60F922F93CE +:1061C0003F934F935F936F937F938F939F93AF937F +:1061D000BF93EF93FF938091D60022E030E030939D +:1061E0008110209380108F33A9F050F4883109F189 +:1061F000813211F59FB7F8948091D914886015C049 +:10620000803471F08E37C1F49FB7F8948091D9141F +:1062100082600BC09FB7F8948091D914816005C04B +:106220009FB7F8948091D91480628093D9149FBF4E +:1062300014C00E94DD4511C0E091FD0F91E09E0F5A +:10624000903809F490E02091FC0F921731F0F0E0C3 +:10625000E458F04F80839093FD0FFF91EF91BF9131 +:10626000AF919F918F917F916F915F914F913F91EE +:106270002F910F900BBE0F900FBE0F901F9018958F +:106280001F920F920FB60F9211240BB60F922F93FD +:106290003F934F935F936F937F938F939F93AF93AE +:1062A000BF93EF93FF938091CE0021E030E03093D5 +:1062B0008110209380108F33A9F050F4883109F1B8 +:1062C000813211F59FB7F8948091D914886015C078 +:1062D000803471F08E37C1F49FB7F8948091D9144F +:1062E00082600BC09FB7F8948091D914816005C07B +:1062F0009FB7F8948091D91480628093D9149FBF7E +:1063000014C00E94DD4511C0E091FD0F91E09E0F89 +:10631000903809F490E02091FC0F921731F0F0E0F2 +:10632000E458F04F80839093FD0FFF91EF91BF9160 +:10633000AF919F918F917F916F915F914F913F911D +:106340002F910F900BBE0F900FBE0F901F901895BE +:106350001F920F920FB60F9211240BB60F922F932C +:106360003F934F935F936F937F938F939F93AF93DD +:10637000BF93EF93FF938091C6001092811010920B +:1063800080108F33A9F050F4883109F1813211F572 +:106390009FB7F8948091D914886015C0803471F04B +:1063A0008E37C1F49FB7F8948091D91482600BC0E6 +:1063B0009FB7F8948091D914816005C09FB7F89475 +:1063C0008091D91480628093D9149FBF14C00E9419 +:1063D000DD4511C0E091FD0F91E09E0F903809F46A +:1063E00090E02091FC0F921731F0F0E0E458F04F6C +:1063F00080839093FD0FFF91EF91BF91AF919F919B +:106400008F917F916F915F914F913F912F910F905D +:106410000BBE0F900FBE0F901F9018951F920F92FA +:106420000FB60F9211240BB60F928F939F93EF9399 +:10643000FF9380917F10E82FF0E0E150F04F9081C2 +:10644000909336018F5F803809F480E080937F104D +:106450009091FE0F891305C0809131018F7D80934B +:106460003101FF91EF919F918F910F900BBE0F9093 +:106470000FBE0F901F9018951F920F920FB60F929C +:1064800011240BB60F928F939F93EF93FF938091FC +:106490007F10E82FF0E0E150F04F90819093D6000C +:1064A0008F5F803809F480E080937F109091FE0F19 +:1064B000891305C08091D1008F7D8093D100FF9119 +:1064C000EF919F918F910F900BBE0F900FBE0F9089 +:1064D0001F9018951F920F920FB60F9211240BB6B2 +:1064E0000F928F939F93EF93FF9380917F10E82FEC +:1064F000F0E0E150F04F90819093CE008F5F8038B4 +:1065000009F480E080937F109091FE0F891305C0FD +:106510008091C9008F7D8093C900FF91EF919F9179 +:106520008F910F900BBE0F900FBE0F901F9018957C +:106530001F920F920FB60F9211240BB60F928F93EA +:106540009F93EF93FF9380917F10E82FF0E0E1504D +:10655000F04F90819093C6008F5F803809F480E0FF +:1065600080937F109091FE0F891305C08091C10028 +:106570008F7D8093C100FF91EF919F918F910F903C +:106580000BBE0F900FBE0F901F901895E091FE0F5D +:1065900091E09E0F903831F490E004C02091D9141E +:1065A00024FD2FC020917F102917C1F3F0E0E150A6 +:1065B000F04F80839093FE0F809180109091811016 +:1065C0008130910569F030F08230910579F00397C0 +:1065D00099F008958091C10080628093C100089570 +:1065E0008091C90080628093C90008958091D10094 +:1065F00080628093D1000895809131018062809300 +:1066000031010895CF93C82F83ED99E00E940B408C +:10661000C830B9F190F4C43059F148F4C23001F1F6 +:1066200020F5C13009F042C08BEB99E01BC0C630A9 +:1066300011F120F58CE799E015C0C43171F140F4F7 +:10664000CA3029F108F1CB3089F58CE994E02BC0F0 +:10665000C63131F1F8F0C23349F586EA94E023C03F +:1066600089EA99E00E940B4028C087E999E0FACFB7 +:106670008DE899E0F7CF8DE699E0F4CF8CE499E0CE +:10668000F1CF83E499E0EECF88E399E0EBCF85E2A8 +:1066900099E0E8CF8FE099E0E5CF81EA94E003C08C +:1066A0008BEF98E0DFCF0E941A4007C089EE98E098 +:1066B0000E940B408C2F0E94FD3F86EE98E0CF9108 +:1066C0000C940B408F929F92AF92BF92EF92FF92E9 +:1066D0000F931F93CF9380EE98E00E940B408AE3C4 +:1066E000E82E85E1F82E0BED14E1C0E0F701619191 +:1066F0007191819191917F01F80181909190A19088 +:10670000B1908F010E942373A50194010E948872A9 +:106710000E94B23FC23021F08EED98E00E940B4003 +:10672000CF5FC33019F78CED98E00E940B40809149 +:1067300046150E94FD3F88ED98E0CF911F910F9183 +:10674000FF90EF90BF90AF909F908F900C940B4074 +:1067500080912C15811108C09FB7F8948091D914AD +:1067600082608093D9149FBF0895AF92BF92CF9259 +:10677000DF92EF92FF920F931F93CF93DF93CDB7EA +:10678000DEB768970FB6F894DEBF0FBECDBF10918D +:106790002915112309F45CC081E080932B1511FFAA +:1067A00007C089E098E00E940B408EEF97E023C07D +:1067B00012FF07C089E098E00E940B4083EF97E04A +:1067C0001AC013FF07C089E098E00E940B4080EEDA +:1067D00097E011C014FF07C089E098E00E940B40C9 +:1067E00085ED97E008C015FF10C089E098E00E9491 +:1067F0000B4089EC97E00E940B4086EC97E00E94EA +:106800000B4084EF91E00E94124510FD08C08FB745 +:10681000F89490912915109229158FBF19C086ED13 +:1068200098E00E940B4084EC98E00E940B4083E6C5 +:1068300098E00E940B409FB7F8948091D9148F7E06 +:106840008093D9149FBF8091D91484FFFCCFDFCFF0 +:106850001091D914112309F4BDC114FF04C081E0C3 +:1068600080932A15C8C110FFEBC08CE0EEE2F5E181 +:10687000DE011D9601900D928A95E1F780912B150E +:106880008430E9F040F48130E9F080F0823009F59D +:106890008EE398E01CC0803179F018F4883049F01C +:1068A00018C0803291F0803421F013C08DE598E05B +:1068B0000EC088E598E00BC082E598E008C08CE443 +:1068C00098E005C085E498E002C088E398E00E9463 +:1068D0000B4080910F15837039F0BE01635F7F4FCD +:1068E000CE0101960E94E54F80910F1580FD05C0F5 +:1068F00080910F1581FF66C01AC081E398E00E9465 +:106900000B40CE0101967C0100E0F701619171918D +:10691000819191917F010E94B23F023021F08FE27C +:1069200098E00E940B400F5F033079F7E1CF88E2D7 +:1069300098E00E940B4084EAC82E85E1D82ECE0153 +:1069400001967C0100E05701F601619171918191FE +:1069500091916F0120853185428553850E94A871F0 +:106960009B01AC01F70160817181828193810E945A +:10697000A771F7016083718382839383023079F476 +:106980002091BC153091BD154091BE155091BF1599 +:106990000E94A771F7016083718382839383F4E07F +:1069A000EF0EF11CF50160817181828193810E945B +:1069B000B23F023021F086E298E00E940B400F5F68 +:1069C000033009F680910F1582FF0EC080E298E037 +:1069D0000E940B408091CA139091C913891708F443 +:1069E0008E5E891B0E94FD3F80910F1583FF0EC0B4 +:1069F0008BE198E00E940B409091FC0F8091FD0F7D +:106A0000891708F48058891B0E94FD3F80910F155B +:106A100084FF0AC085E198E00E940B400E94175D48 +:106A200043E062E00E94C03F81E198E00E940B4099 +:106A30009FB7F8948091D9148E7F8093D9149FBF0B +:106A4000812F887609F44AC080912B15882351F054 +:106A5000982F9C77D9F1883029F40E94505081E01A +:106A600080932C1580912B15811103C092E0909397 +:106A70002C1516FF0AC0883019F480E480932B157A +:106A800080912C15886080932C1513FF07C080918E +:106A90002B1585FD03C080E180932B1515FF16C0D3 +:106AA00086ED98E00E940B4082E898E00E940B403F +:106AB00083E698E00E940B4080912C1581FD1460C4 +:106AC000846080932C1580E280932B159FB7F894F7 +:106AD0008091D91487798093D9149FBF11FF57C033 +:106AE000812F887609F04BC080912B15882339F0CF +:106AF000807509F444C080912C1581FF40C08091BD +:106B00002C1582FF1FC080918A15882369F040915F +:106B10008B1550918C1560918D1570918E1542D604 +:106B200080EA9FE00E94124580918915882351F0E8 +:106B3000823011F45C9A02C00E94CD5F88EE93E02F +:106B40000E9412458091C9139091CA13981799F029 +:106B5000F9E28F9FC001112489519F4E892B59F072 +:106B600080912C1583FD07C088E080932B150E942F +:106B7000725078D302C010922B1510922C159FB72B +:106B8000F8948091D9148D7F8093D9149FBF12FF00 +:106B900021C080912B15807389F080912D15811172 +:106BA0000DC080912C1582FF03C0F5D50E94CD5FEA +:106BB00080912C15826080932C1504C010922C15A6 +:106BC00010922B159FB7F8948091D9148B7F8093E6 +:106BD000D9149FBF80912B158C7711F00E947250B1 +:106BE00080912B15803239F480912C1581FF03C0E0 +:106BF00080E180932B1568960FB6F894DEBF0FBE28 +:106C0000CDBFDF91CF911F910F91FF90EF90DF905B +:106C1000CF90BF90AF90089569E080E090E00E942F +:106C2000265F4DE450E06BED74E181E098E00C9458 +:106C3000485FCF92DF92EF92FF920F931F93909154 +:106C40000C15092F10E020E030E080910D15482F41 +:106C500050E060E070E09170817068017901F69415 +:106C6000E794D794C794C0FC92606A017B01F694C4 +:106C7000E794D794C794C0FC8260E2E036952795EC +:106C800017950795EA95D1F700FD946022E0769577 +:106C90006795579547952A95D1F740FD8460909365 +:106CA000C1108093C0101F910F91FF90EF90DF9063 +:106CB000CF9008951F920F920FB60F9211240BB62A +:106CC0000F922F933F938F939F93EF93FF9321B353 +:106CD0003091C110832F817090E036E0880F991FAA +:106CE0003A95E1F7922F9F7B892B81BBEBE0F1E096 +:106CF00090818091C1108270880F880F977F892BB7 +:106D0000808381B39091C11092FB992790F98E7F77 +:106D1000892B81BB15BCFF91EF919F918F913F9182 +:106D20002F910F900BBE0F900FBE0F901F901895D4 +:106D300080916F008D7F80936F0080918100887FAC +:106D40008160809381001092C21080910E158F3F58 +:106D500021F490912915992349F090912B159430A5 +:106D600029F090E00E94124581E001C080E09091FE +:106D7000181592FF02C091E08927882341F08A9A72 +:106D8000809108018160809308015F9A08958A9834 +:106D9000809108018E7F809308015F9808951F926B +:106DA0000F920FB60F9211240BB60F922F933F93B1 +:106DB0004F935F936F937F938F939F93AF93BF9303 +:106DC000EF93FF938091C210811139C28091D2104C +:106DD00080FD8F9A80FF8F9890910B01482F427011 +:106DE0009D7F942B90930B0141B3847090E0959517 +:106DF0008795942F9D7F892B81BB91B38091D11072 +:106E0000282F217030E066E0220F331F6A95E1F7EA +:106E10009F7B292B21BB90910B01282F2270220FE1 +:106E2000220F977F922B90930B0121B382FB99271E +:106E300090F9822F8E7F892B81BB8091D01086BDE7 +:106E400082E085BD81E08093C21078948091E41047 +:106E50009091E510892B09F0ACC08091CB139091F3 +:106E6000F013981709F49BC0E091CB132E2F30E05C +:106E700086E0E89FF0011124E453FC4EF093E51006 +:106E8000E093E4108381948190938900809388003B +:106E9000808191819093E0108093DF10E281809156 +:106EA000E1108E1761F1E093E11081E1E89FF001BC +:106EB0001124EF50FC4EF093E310E093E21085852F +:106EC0009685A785B089B695A79597958795809360 +:106ED000CB109093CC10A093CD10B093CE10809394 +:106EE000C7109093C810A093C910B093CA10809394 +:106EF000C3109093C410A093C510B093C610E09136 +:106F0000E210F091E31090818091C0108927809366 +:106F1000D21086E0829FD001839FB00D1124A4532C +:106F2000BC4E15962C9181819281A381B481022E51 +:106F300004C0B695A795979587950A94D2F7809344 +:106F4000D3109093D410A093D510B093D610858110 +:106F50009681A781B085022E04C0B695A795979516 +:106F600087950A94D2F78093D7109093D810A09366 +:106F7000D910B093DA1081859285A385B48504C0B9 +:106F8000B695A795979587952A95D2F78093DB10AC +:106F90009093DC10A093DD10B093DE100AC0C8DE21 +:106FA0009FB7F8948091D91484608093D9149FBFBF +:106FB00046C18091DA148130B1F489B18071909129 +:106FC0002815891781F01092DA148CE0EEE2F5E1D1 +:106FD000AAE3B5E101900D928A95E1F78091D91469 +:106FE00080648093D9141092D1104091C3105091B5 +:106FF000C4106091C5107091C6108091D31090910B +:10700000D410A091D510B091D610840F951FA61F53 +:10701000B71F8093C3109093C410A093C510B09372 +:10702000C610E091E210F091E31045855685678522 +:107030007089481759076A077B0768F521E0209394 +:10704000D1104585568567857089841B950BA60BE5 +:10705000B70B8093C3109093C410A093C510B09346 +:10706000C610208180912E1590912F15A09130157A +:10707000B091311520FF04C00197A109B10903C0E7 +:107080000196A11DB11D80932E1590932F15A093ED +:107090003015B09331154091C7105091C8106091D0 +:1070A000C9107091CA108091D7109091D810A091FA +:1070B000D910B091DA10840F951FA61FB71F8093C7 +:1070C000C7109093C810A093C910B093CA104585FB +:1070D000568567857089481759076A077B0778F5D1 +:1070E0002091D11022602093D11045855685678567 +:1070F0007089841B950BA60BB70B8093C7109093D8 +:10710000C810A093C910B093CA1020818091321585 +:1071100090913315A0913415B091351521FF04C01D +:107120000197A109B10903C00196A11DB11D80936A +:10713000321590933315A0933415B09335154091C3 +:10714000CB105091CC106091CD107091CE108091E9 +:10715000DB109091DC10A091DD10B091DE10840F57 +:10716000951FA61FB71F8093CB109093CC10A093B0 +:10717000CD10B093CE104585568567857089481728 +:1071800059076A077B0778F52091D1102460209376 +:10719000D1104585568567857089841B950BA60B94 +:1071A000B70B8093CB109093CC10A093CD10B093DD +:1071B000CE1020818091361590913715A091381509 +:1071C000B091391522FF04C00197A109B10903C08C +:1071D0000196A11DB11D8093361590933715A0938C +:1071E0003815B093391580912B15843039F490916E +:1071F000D1108091471589238093D1108091DF10A1 +:107200009091E01001979093E0108093DF10892B0C +:1072100069F41092E5101092E4108091CB138F5F07 +:107220008093CB13863011F41092CB139091D11030 +:107230008091C11089278093D1101092C210FF91C4 +:10724000EF91BF91AF919F918F917F916F915F91DE +:107250004F913F912F910F900BBE0F900FBE0F904B +:107260001F9018958091181582FF08C08A9A809106 +:1072700008018160809308015F9A07C08A98809115 +:1072800008018E7F809308015F9880912B158C7088 +:10729000A1F08091C0108093D2108091C110809392 +:1072A000D11080910B15880F845081958093D01058 +:1072B00080916F00826080936F0008951F920F92FB +:1072C0000FB60F9211240BB60F92CF92DF92EF926E +:1072D000FF920F931F932F933F934F935F936F935F +:1072E0007F938F939F93AF93BF93EF93FF9380917F +:1072F000841090918510009721F0019709F435C111 +:1073000031C28091861090918710A0918810B09121 +:107310008910AC01BD0141505109610971094093C7 +:107320008610509387106093881070938910892B72 +:107330008A2B8B2B59F0809102018064809302018B +:10734000809102018F7B809302010FC0E0919F101A +:10735000F091A010309709F01995809172008D7FFF +:107360008093720081E080939E10809182109091B2 +:1073700083108130910509F4B4C020F0029709F41C +:10738000D3C0E4C1C0908610D0908710E0908810E0 +:10739000F090891060918A1070918B1080918C1000 +:1073A00090918D1022E030E040E050E00E94FC75AA +:1073B000C216D306E406F5060CF4AFC080919A100D +:1073C00090919B10A0919C10B0919D100196A11DD1 +:1073D000B11D80939A1090939B10A0939C10B09332 +:1073E0009D10C0909210D0909310E0909410F09067 +:1073F00095108091921090919310A0919410B0915B +:10740000951000919A1010919B1020919C10309132 +:107410009D10BC01CD01660F771F881F991F52E098 +:10742000000F111F221F331F5A95D1F7A901980190 +:107430002F5F3F4F4F4F5F4F0E94FC75C21AD30A18 +:10744000E40AF50AC0929210D0929310E092941040 +:10745000F092951040919210509193106091941079 +:10746000709195108091961090919710A09198101E +:10747000B0919910481759076A077B070CF066C14D +:107480008091861090918710A0918810B0918910FA +:1074900040918A1050918B1060918C1070918D10DA +:1074A000880F991FAA1FBB1F841B950BA60BB70B38 +:1074B00080938E1090938F10A0939010B0939110A2 +:1074C0008091961090919710A0919810B09199107A +:1074D0008093921090939310A0939410B093951072 +:1074E000C6C080918E1090918F10A0919010B09195 +:1074F0009110AC01BD0141505109610971094093DE +:107500008E1050938F1060939010709391101816F6 +:1075100019061A061B060CF419C182E090E090933C +:1075200083108093821012C18091861090918710F1 +:10753000A0918810B0918910892B8A2B8B2B09F48C +:1075400005C180919A1090919B10A0919C10B091D0 +:107550009D100197A109B10980939A1090939B10F7 +:10756000A0939C10B0939D10A0C0809102018064F4 +:1075700080930201809102018F7B809302018091B0 +:10758000821090918310009721F0029709F472C045 +:10759000DDC04091921050919310609194107091C1 +:1075A00095108091961090919710A0919810B0919D +:1075B000991084179507A607B7070CF04DC0809166 +:1075C0009A1090919B10A0919C10B0919D100196E3 +:1075D000A11DB11D80939A1090939B10A0939C10B5 +:1075E000B0939D10C0909210D0909310E0909410A2 +:1075F000F09095108091921090919310A09194101A +:10760000B091951000919A1010919B1020919C10B0 +:1076100030919D10BC01CD01660F771F881F991F07 +:10762000F2E0000F111F221F331FFA95D1F7A901B5 +:1076300098012F5F3F4F4F4F5F4F0E94FC75C21A5A +:10764000D30AE40AF50AC0929210D0929310E09205 +:107650009410F09295107AC0E091A110F091A210D0 +:10766000309729F019951092A2101092A11081E084 +:1076700090E055CF80919A1090919B10A0919C1012 +:10768000B0919D10AC01BD014150510961097109D2 +:1076900040939A1050939B1060939C1070939D1090 +:1076A000892B8A2B8B2B09F441C060919210709129 +:1076B0009310809194109091951000919A101091D0 +:1076C0009B1020919C1030919D10C0909A10D090EA +:1076D0009B10E0909C10F0909D1042E0000F111F55 +:1076E000221F331F4A95D1F7A90198012F5F3F4F01 +:1076F0004F4F5F4F0E94AB759701860152E0000F1C +:10770000111F221F331F5A95D1F7A901980121504B +:107710003109410951090E94FC7520939210309360 +:107720009310409394105093951010C08091720064 +:107730008D7F80937200E091A110F091A21030979C +:1077400029F019951092A2101092A1108091921018 +:1077500090919310A0919410B09195109093A900DE +:107760008093A800FF91EF91BF91AF919F918F916E +:107770007F916F915F914F913F912F911F910F9149 +:10778000FF90EF90DF90CF900F900BBE0F900FBE49 +:107790000F901F901895E0EAF0E080818F7D808344 +:1077A0005C980895CF92DF92EF92FF926A017B017D +:1077B000811105C0FF90EF90DF90CF90ECCF81302A +:1077C00011F45C9801C05C9A83E28093A0008091E0 +:1077D000A100807E8A618093A1008FEF9FEF90933C +:1077E000A9008093A80020E030E0A901C701B601FC +:1077F0000E9481721816F4F620E030E0A901C7015A +:10780000B6010E94817287FD11C020E030E04AE796 +:1078100054E4C701B6010E949F74181654F4C12C99 +:10782000D12C8AE7E82E84E4F82E03C0C12CD12C99 +:1078300076012CEE31E143E852E4C701B6010E9423 +:10784000DA7420E030E040E05FE30E94A8710E941B +:107850005E730E94F5727093AB006093AA005C9A0D +:10786000FF90EF90DF90CF900895CF92DF92EF924C +:10787000FF92CF93DF93C82F6A017B0120E030E0B5 +:10788000A901C701B6010E94817287FDE2C0C4361A +:1078900008F441C08CE98C0F20E0833098F590E02B +:1078A000880F991F880F991F223079F0FC0123302F +:1078B00011F1213019F0E552FB4E02C0E951FB4EA7 +:1078C000C082D182E282F382C1C0EC01CD50DB4E96 +:1078D00020E030E040E752E4C701B6010E94DA74CC +:1078E00020E030E040E752E40E94DA746883798354 +:1078F0008A839B83ABC0E150FB4EF7FAF094F7F814 +:10790000F094DECF2F5F8A3008F4A5C0243009F44C +:10791000A2C08A50C2CFC701B6010E9488750E94DA +:10792000F5728C2F90E08C31910508F094C0FC0129 +:107930008827E256FF4F8F4F0C941876633008F477 +:107940008CC060930B1582C060930E157FC060934E +:107950000C1502C060930D156CD978C08091181574 +:10796000662311F084604CC08B7F4AC0809118154B +:10797000662311F0806444C08F7B42C0809118154B +:10798000662311F080683CC08F773AC060930F1572 +:107990005DC0C0921015D0921115E0921215F092B0 +:1079A000131554C0C0921415D0921515E0921615F7 +:1079B000F09217154BC080911815662311F0816065 +:1079C0001FC08E7F1DC080911815662321F084FF93 +:1079D00046C0806215C08F7D13C080911815662344 +:1079E00011F0886001C0877F809318150E940E5F98 +:1079F0002DC080911815662311F0806101C08F7C25 +:107A00008093181523C06093191520C0C0921A15D1 +:107A1000D0921B15E0921C15F0921D1517C0C09254 +:107A20001E15D0921F15E0922015F09221150EC060 +:107A300070E0709323156093221508C0C09224153E +:107A4000D0922515E0922615F0922715E5D880E012 +:107A500007C084E005C083E003C086E001C08AE07F +:107A6000DF91CF91FF90EF90DF90CF9008951F931B +:107A7000CF93DF93182FEB018DE0189FB0011124F5 +:107A8000765F4CE050E0CE010E948B5F892B59F469 +:107A90008CE0FE0111928A95E9F7BE01812F0E94C8 +:107AA000673080E001C081E0DF91CF911F910895A0 +:107AB000EF92FF920F931F93CF93DF93CDB7DEB773 +:107AC0002C970FB6F894DEBF0FBECDBF182F80FFE6 +:107AD000C7C08AE080930B158FEF80930E1510922C +:107AE0000C1587E080930D1583E080930F158AE0D5 +:107AF00097EDA3E2BCE38093101590931115A0932A +:107B00001215B09313158FE692E1A3E0BBE38093C7 +:107B1000141590931515A0931615B0931715109280 +:107B2000191580E090E0A8ECB1E480931A159093C9 +:107B30001B15A0931C15B0931D1580E090E0AAEFD3 +:107B4000B3E480931E1590931F15A0932015B09356 +:107B500021158AEF90E0909323158093221580E001 +:107B600090E0A0E8BFE38093241590932515A0939F +:107B70002615B093271584E08093181580E090E0D7 +:107B8000A8ECB5E48093DB149093DC14A093DD148F +:107B9000B093DE148093DF149093E014A093E1146B +:107BA000B093E2148093E3149093E414A093E5144B +:107BB000B093E61480E090E5A3ECB7E48093E7147B +:107BC0009093E814A093E914B093EA148093EB1413 +:107BD0009093EC14A093ED14B093EE148093EF14F3 +:107BE0009093F014A093F114B093F21480E090EA13 +:107BF000ACE0B7E48093F3149093F414A093F514DD +:107C0000B093F6148093F7149093F814A093F9149A +:107C1000B093FA148093FB149093FC14A093FD147A +:107C2000B093FE1480E090E4ACE1B6EC8093FF14D6 +:107C300090930015A0930115B0930215809303153E +:107C400090930415A0930515B0930615809307151E +:107C500090930815A0930915B0930A150E940C364D +:107C600011FF10C0CE0101967C018CE0F70111924A +:107C70008A95E9F700E0B701802F0E9467300F5F17 +:107C80000830C9F712FF0AC060E080E09BE00E9464 +:107C9000265F60E081E59BE00E94265F13FF05C040 +:107CA00060E08EEA9BE00E94265F2C960FB6F89467 +:107CB000DEBF0FBECDBFDF91CF911F910F91FF901F +:107CC000EF9008951F93CF93DF93CDB7DEB72C9736 +:107CD0000FB6F894DEBF0FBECDBF80E090E00E94EB +:107CE000835F893009F053C04DE450E061E078E0F3 +:107CF0008BED94E10E948B5F892B09F448C020E052 +:107D000030E048EC55E46091DB147091DC14809114 +:107D1000DD149091DE140E948172811138C020E040 +:107D200030E048EC55E46091DF147091E0148091EC +:107D3000E1149091E2140E948172811128C020E028 +:107D400030E048EC55E46091E3147091E4148091C4 +:107D5000E5149091E6140E948172811118C010E020 +:107D6000BE016F5F7F4F812F82DE811103C087E0EC +:107D70000E9402331F5F183099F72C960FB6F894C3 +:107D8000DEBF0FBECDBFDF91CF911F9108958FEF62 +:107D90008FDEE5CF8F929F92AF92BF92CF92DF920C +:107DA000EF92FF920F931F93CF93DF93CDB7DEB780 +:107DB0002A970FB6F894DEBF0FBECDBF6B017C01D2 +:107DC000042F20E030E0A9010E94817287FF07C0E4 +:107DD0008DE20E94C632F7FAF094F7F8F094102F73 +:107DE000123060F020E030E048EC52E4C701B60108 +:107DF0000E94DA746B017C011250F2CF00FF0AC0BE +:107E000020E030E040E251E4C701B6010E94DA749C +:107E10006B017C0120E030E040E05FE3C701B60188 +:107E20000E94A8710E94F072E1E0F0E0EC0FFD1FEB +:107E3000E00FF11D2EE2208310E03AE0832E912C1A +:107E4000A12CB12C6115710581059105A9F01013C4 +:107E500001C01F5FEE24E394F12CEC0EFD1EE10E39 +:107E6000F11CA50194010E94DA75605DF701608341 +:107E7000B901CA011F5FE6CF80E3101748F4E1E0C3 +:107E8000F0E0EC0FFD1FE10FF11D80831F5FF5CFC8 +:107E900010130BC081E0810FE1E0F0E0EC0FFD1F5B +:107EA000E80FF11D1E5F80E38083112341F0FE0186 +:107EB000E10FF11D80810E94C6321150F6CF2A9643 +:107EC0000FB6F894DEBF0FBECDBFDF91CF911F91EB +:107ED0000F91FF90EF90DF90CF90BF90AF909F9069 +:107EE0008F9008951F93CF93DF93CDB7DEB7C0581F +:107EF000D1090FB6F894DEBF0FBECDBFAE01495712 +:107F00005F4FFA0161917191AF01CE0101960E941C +:107F10009A7610E0E1E0F0E0EC0FFD1FE10FF11DBB +:107F20008081882321F00E94C6321F5FF3CFC058A2 +:107F3000DF4F0FB6F894DEBF0FBECDBFDF91CF91FC +:107F40001F91089543E026CF2091181520FF08C007 +:107F50002BE832E441E25DE30E94DA7441E001C0C3 +:107F600040E018CF2091181520FF08C02BE832E41C +:107F700041E25DE30E94DA7444E001C043E00ACFCD +:107F8000CF92DF92EF92FF921F93CF93DF93CDB703 +:107F9000DEB7362F142FCDB6DEB64DB75EB7411B18 +:107FA00051090FB6F8945EBF0FBE4DBF4F5F5F4FD4 +:107FB0007A01242FFA019E2F921B911728F4632F28 +:107FC0000E94BA759193F7CF112351F0F701E10F99 +:107FD000F11D31978081805D0E94C6321150F4CF2F +:107FE0000FB6F894DEBE0FBECDBEDF91CF911F91CC +:107FF000FF90EF90DF90CF9008958A3020F0843684 +:1080000020F043E003C041E001C042E06AE0B8CFA5 +:1080100048E062E0B5CFCF93DF93FC018491EF019C +:108020002196882321F00E94C632FE01F7CFDF910E +:10803000CF910895CF93DF93EC018991882319F0B4 +:108040000E94C632FACFDF91CF910895AEE2B5E13A +:10805000E4EAF0E14D915D916D917D9141935193F1 +:108060006193719380E1E03BF807A1F708958CE1FB +:10807000E4EAF0E1DF011D928A95E9F71092C91355 +:108080001092CA1381E08093A3101092E610089515 +:108090002F923F924F925F926F927F928F929F9218 +:1080A000AF92BF92CF92DF92EF92FF920F931F9306 +:1080B000CF93DF93C091CA13C11101C0C2E1C15077 +:1080C000D091E610DC1709F41DC1EC2EF12C29E249 +:1080D000C29F8001112409511F4EF801A588B6885E +:1080E000C788D08C61A172A183A194A19B01AC012E +:1080F0000E94A871F80125A136A147A150A50E94B0 +:10810000DA744B018C019B01AC01B501C6010E94E0 +:10811000817287FD02C05401680189E28E9DF001E1 +:108120008F9DF00D1124E951FF4EC501D601818BC1 +:10813000928BA38BB48BC11101C0C2E1C150DC177B +:1081400061F029E22E9DC0012F9D900D11249C010C +:1081500029513F4E7901D9E233C08091C913D81318 +:1081600060C00E9450505DC0AC2EB12CDA9DC001A1 +:10817000DB9D900D1124FC01E951FF4E6F01C111EF +:1081800001C0C2E1C1508091C9138C1302C00E948A +:108190005050DA9D8001DB9D100D112409511F4EB6 +:1081A000F80185889688A788B08CA501940161891B +:1081B0007289838994890E948172811106C0760137 +:1081C0008091E610C813D0CF2CC0F80161A172A134 +:1081D00083A194A19B01AC010E94A871F80125A183 +:1081E00036A147A150A50E94DA74F701218932898E +:1081F000438954890E94A8712B013C019B01AC0169 +:10820000C501B4010E949F74F80118162CF4418A2C +:10821000528A638A748AD3CF818A928AA38AB48A63 +:10822000CECFD091E610F9E2DF9F800111240951F1 +:108230001F4EC1E0CD0FC23109F4C0E02090CA1337 +:1082400089E2382EC21509F45BC0CC2ED12C3C9C9F +:10825000C0013D9C900D11249C0129513F4E790194 +:10826000F8014188528863887488F901818892886E +:10827000A388B488A5019401C301B2010E94817250 +:1082800087FF24C0F80161A172A183A194A19B0181 +:10829000AC010E94A871F80125A136A147A150A503 +:1082A0000E94DA74A30192010E94A8712B013C0183 +:1082B0009B01AC01C501B4010E949F74181634F4EF +:1082C000F701418A528A638A748ADC2F3C9CF00150 +:1082D0003D9CF00D1124E951FF4E258936894789CF +:1082E000508D61897289838994890E94817281117C +:1082F00001C0DC2FCF5FC23109F4C0E08701A2CFFB +:10830000D093E610DF91CF911F910F91FF90EF90E6 +:10831000DF90CF90BF90AF909F908F907F906F90A5 +:108320005F904F903F902F9008952F923F924F92E1 +:108330005F926F927F928F929F92AF92BF92CF92F5 +:10834000DF92EF92FF920F931F93CF93DF93CDB7FE +:10835000DEB7E5970FB6F894DEBF0FBECDBF4B8FEB +:108360005C8F6D8F072F2DAB2091CA132EA3422F48 +:1083700050E05BA34AA339E2239FF0011124E951A5 +:10838000FF4E158616861786108A15A216A217A20A +:1083900010A6108249E956E766E97EE741A352A399 +:1083A00063A374A31C014BED54E158A74FA3CE0166 +:1083B00001969AAB89AB24EA30E13EA72DA74EA1E6 +:1083C00039E2439FC00111249C0128513F4E3AA736 +:1083D00029A7AE01435F5F4F5DA34CA359A348A3F8 +:1083E00084EA90E198AB8FA72BED34E13F8F2E8F7D +:1083F00010E03F01AF01435F5F4F5CAB4BAB2F0120 +:1084000055E2450E511CF10161917191819191915B +:108410001F01EE8DFF8D81909190A190B190FF8F03 +:10842000EE8FA50194010E94DA740E94AA74E9A952 +:10843000FAA96193719381939193FAABE9ABEFA59C +:10844000F8A9C190D190E190F190F8ABEFA76C1929 +:108450007D098E099F099B01AC0197FF07C0222768 +:108460003327A901261B370B480B590BE9A5FAA5A1 +:108470002193319341935193FAA7E9A7EBA9FCA962 +:10848000C080D180E280F380C216D306E406F506F0 +:1084900010F469017A01EBA9FCA9C082D182E282C1 +:1084A000F3820E942373A50194010E9488724B01FC +:1084B0005C01E8A1F9A16193719381939193F9A370 +:1084C000E8A320E030E0A9010E94817287FF0DC07F +:1084D000112321F0113021F084E003C081E001C0BC +:1084E00082E0F3019081892B8083A5019401C5016D +:1084F000B4010E94DA74F2012081318142815381FA +:108500000E94A871F20160837183828393831F5F4D +:10851000133009F078CF0E9447754B015C01F201DE +:108520006083718382839383CD28CE28CF2809F47A +:1085300022C220E030E0A9016B8D7C8D8D8D902FC3 +:108540000E94817287FD21C0FDA9FF2361F0A50172 +:1085500094016B8D7C8D8D8D902F0E94DA746B8FC2 +:108560007C8F8D8F092F20E030E040E85FE36B8D3A +:108570007C8D8D8D902F0E94817287FF0DC01B8E88 +:108580001C8E20E82D8F0FE307C039E93B8F46E7AB +:108590004C8F56E95D8F0EE7A501940160E070E015 +:1085A00080E89FE30E94887269A77AA78BA79CA79F +:1085B000CE0149969A8F898FC12CD12C760129E260 +:1085C000EAA1FBA12E9FC0012F9F900D11249C01B9 +:1085D000285F3E4E39A328A3ECA1FDA180809180A5 +:1085E000A280B38020E030E0A901C501B4010E945F +:1085F0008172882309F472C0A501940169A57AA546 +:108600008BA59CA50E94DA742B013C01ECA1FDA175 +:1086100060837183828393839B01AC0160E070E08F +:1086200080E89FE30E9488724B015C01E894B7F8F0 +:10863000EFA1F8A52485358546855785C501B40188 +:108640000E94DA741B018E8F192F2B8D3C8D4D8D5E +:10865000502F0E949F7418162CF02B8E3C8EFE8D8E +:10866000FD8F012FE8A1F9A1F081FE8FE8A1F9A10A +:10867000118122803380EFA1F8A5208D318D428DAC +:10868000538DC501B4010E94DA745B014C019B015A +:10869000AC016E8D712FC1010E94817287FD03C0F4 +:1086A000AE8E1B2D14018E8D912FD101E8A1F9A161 +:1086B00080839183A283B383EDA5FEA524853585B0 +:1086C00046855785C301B2010E94DA749B01AC0153 +:1086D000C701B6010E94A7716B017C012CA13DA1CD +:1086E0002C5F3F4F3DA32CA34DA55EA54C5F5F4F74 +:1086F0005EA74DA78FA198A5049698A78FA3E98D93 +:10870000FA8DE217F30709F067CF8091C913FEA134 +:10871000F8130FC089E22AA13BA1829FF001839F39 +:10872000F00D1124E951FF4E118A128A138A148A1E +:1087300014C02FEE3FEF4FE75FE3C701B6010E9481 +:108740009F7418167CF489E24AA15BA1849FF00112 +:10875000859FF00D1124E951FF4E118E128E138E5C +:10876000148E6AC02FEE3FEF4FE75FEBC701B601F3 +:108770000E949F74181644F08FEEC82EDD24DA9400 +:108780008FE7E82E8FEBF82EA701960160E070E0EE +:1087900080E89FE30E94A77120E030E040E05FE3C3 +:1087A0000E94DA740E9447756B017C0189E22AA15C +:1087B0003BA1829FF001839FF00D1124E951FF4EF0 +:1087C00020911015309111154091121550911315EB +:1087D00061A172A183A194A10E94DA74A7019601FC +:1087E0000E94DA744B015C01A701960160E070E021 +:1087F00080E89FE30E94A7719B01AC01C501B40111 +:108800000E9488726B017C0120E030E0A9010E9487 +:10881000817287FF03C0C12CD12C760189E24AA165 +:108820005BA1849FF001859FF00D1124E951FF4E5B +:10883000C18ED28EE38EF48E2B8D3C8D4D8D502FBC +:108840006B8D7C8D8D8D902F0E94DA747B018C0155 +:1088500089E22AA13BA1829FF001839FF00D1124A0 +:10886000E951FF4EC701D801858F968FA78FB0A31E +:10887000A18CB28CC38CD48C6090BC107090BD1055 +:108880008090BE109090BF109301A401B701C80161 +:108890000E94817287FD05C0B62DA72DF82DE92D08 +:1088A00004C0BE2DAF2DF02FE12F9501A6016B2F37 +:1088B0007A2F8F2F9E2F0E949F7418166CF09301B1 +:1088C000A401B701C8010E94817287FD03C0530152 +:1088D000640102C05701680189E24AA15BA1849F3B +:1088E000F001859FF00D1124E951FF4EC501D6011D +:1088F000858B968BA78BB08F8CE0FE013D96A0EB0D +:10890000B0E101900D928A95E1F7C701D8018093FB +:10891000BC109093BD10A093BE10B093BF108CE01C +:10892000FE013196A4EAB0E101900D928A95E1F73B +:108930008091A3108093CA138F5F823109F480E085 +:108940008093A310E5960FB6F894DEBF0FBECDBF9F +:10895000DF91CF911F910F91FF90EF90DF90CF901B +:10896000BF90AF909F908F907F906F905F904F904F +:108970003F902F908DCBE5960FB6F894DEBF0FBEDB +:10898000CDBFDF91CF911F910F91FF90EF90DF90BE +:10899000CF90BF90AF909F908F907F906F905F909F +:1089A0004F903F902F9008956115710581059105B5 +:1089B000C1F16A3071058105910548F425E02A95D9 +:1089C000F1F700006150710981099109EDCF64361A +:1089D00071058105910548F4E5E3EA95F1F700009A +:1089E0006A50710981099109DFCF683EF3E07F0782 +:1089F0008105910558F4EFE8F1E03197F1F700C0F7 +:108A000000006456710981099109CECFEFE9FFE0BA +:108A10003197F1F700C00000685E73408109910949 +:108A2000C3CF0895009741F0EFE9FFE03197F1F7E8 +:108A300000C000000197F6CF08954F925F926F92A9 +:108A40007F92AF92BF92CF92DF92EF92FF920F93FD +:108A50001F93CF93DF936C01FB015A01309729F0EC +:108A60008081D601A80FB11D01C0DC018C91ED0100 +:108A70008D3229F4229611968C9101E008C08B3238 +:108A800011F0219603C0229611968C9100E0512C92 +:108A9000612C10E020E030E0A9017E0160ED762E2F +:108AA000780E89E08715D8F06394A8E0A61598F0B1 +:108AB00051101150A5E0B0E00E942F76DC01CB01EF +:108AC000880F991FAA1FBB1F9C01AD01270D311DE7 +:108AD000411D511D0BC0511009C01F5F07C0BEEFE3 +:108AE0007B1208C0511006C0552453942196D7011B +:108AF0008C91D3CF662009F450C07F01CA01B9011F +:108B00000E9421732B013C0120E030E0A9010E946A +:108B10008172882349F11F3F64F42AE037ED43E274 +:108B20005CE3C301B2010E94DA742B013C011E5FB9 +:108B3000F2CF1F3F59F42DEC3CEC4CEC5DE3C3014C +:108B4000B2010E94DA742B013C010EC0112361F0C6 +:108B500020E030E040E251E4C301B2010E94DA7447 +:108B60002B013C011150F2CF002351F077FA7094A1 +:108B700077F87094F501408251826282738206C058 +:108B8000D5014D925D926D927C921397CC19DD09BF +:108B9000C150F701C08381E001C080E0DF91CF9137 +:108BA0001F910F91FF90EF90DF90CF90BF90AF900B +:108BB0007F906F905F904F9008958091D91484FDBD +:108BC00026C09FB7F8948091D91480618093D914FE +:108BD0009FBF0E94CB3B0E94CD5F80912B15982FA9 +:108BE0009C7021F490912C15913089F49FB78430BA +:108BF00029F4F89480912915806204C0F89480913A +:108C000029158860809329159FBF0C949836089584 +:108C10002F923F924F925F926F927F928F929F928C +:108C2000AF92BF92CF92DF92EF92FF920F931F937A +:108C3000CF93DF93CDB7DEB7C756D1090FB6F894FF +:108C4000DEBF0FBECDBF66968FAF66971B016B96DA +:108C50002CAF3DAF4EAF5FAF6B97A8960FAFA89705 +:108C60008091181585FF51C03B010BED14E17B018C +:108C70002CE0E20EF11CDD24D394D3018D909D9065 +:108C8000AD90BD903D0120E030E0A901C501B401E7 +:108C90000E949F74181654F0F80124A135A146A132 +:108CA00057A1C501B4010E94817287FDD0922D1594 +:108CB00080912D15882319F180912B15883061F052 +:108CC0007CDF9FB7F89480912915856080932915E2 +:108CD0009FBF0E94B53319C09FB7F8948091D914F3 +:108CE00088608093D9149FBF0E94B53380912A1564 +:108CF00081110BC080912B158111F6CFE1CF0C5F54 +:108D00001F4FE614F70409F0B8CF80912B1582307D +:108D100009F475C3F10180819181A281B3816596C7 +:108D20008CAF9DAFAEAFBFAF659784819581A681B3 +:108D3000B78161968CAF9DAFAEAFBFAF61978085B5 +:108D40009185A285B3852D968CAF9DAFAEAFBFAF99 +:108D50002D97AE01475B5F4FBE01635B7F4FCE0136 +:108D60008F5A9F4F0E94BC2F2D96ECACFDAC0EADE0 +:108D70001FAD2D9761962CAD3DAD4EAD5FAD6197AA +:108D800065966CAD7DAD8EAD9FAD6597DE0191961C +:108D90004D01FE017D965F0118976D01F3D3E9A0A7 +:108DA000FAA00BA11CA12D8D3E8D4F8D58A1698D70 +:108DB0007A8D8B8D9C8D12D7882309F41CC360910A +:108DC000840D7091850D8091860D9091870D0E9484 +:108DD00023732B013C016091800D7091810D809176 +:108DE000820D9091830D0E9423736F966CAF7DAFBF +:108DF0008EAF9FAF6F9760917C0D70917D0D8091CC +:108E00007E0D90917F0D0E942373FE01BD964F0150 +:108E10009E01275D3F4F5901DE0195966D0183014B +:108E200072016F962CAD3DAD4EAD5FAD6F9745D6DF +:108E3000A401B501C601FDD20E94623E6696BFAD97 +:108E40006697BB2319F0B13041F0DDC0E1E0F0E0FE +:108E50006796FFAFEEAF6797DAC020E030E048ECEE +:108E600052E46B966CAD7DAD8EAD9FAD6B970E945D +:108E70009F74181654F480E090E0A8ECB2E46B966E +:108E80008CAF9DAFAEAFBFAF6B972DA13EA14FA1F1 +:108E900058A5D1016D917D918D919C910E94A771F2 +:108EA0002B013C0129A53AA54BA55CA5F1016481E4 +:108EB0007581868197810E94A7714B015C012DA568 +:108EC0003EA54FA558A9D10118966D917D918D9120 +:108ED0009C911B970E94A7716B017C01A3019201D9 +:108EE000C301B2010E94DA742B013C01A501940177 +:108EF000C501B4010E94DA749B01AC01C301B20147 +:108F00000E94A8714B015C01A7019601C701B6013F +:108F10000E94DA749B01AC01C501B4010E94A871E2 +:108F20000E94477520E030E040EF51E40E94DA747F +:108F30006B962CAD3DAD4EAD5FAD6B970E948872C8 +:108F40000E94F57267967FAF6EAF67976A307105C2 +:108F500030F42AE030E067963FAF2EAF679720E00D +:108F600030E040E950E46B966CAD7DAD8EAD9FADC9 +:108F70006B970E94DA7420E030E048EC52E40E94E3 +:108F8000887220E030E040E05FE30E94A87120E0BA +:108F900030E040E752E40E94DA7420E030E040E73D +:108FA00052E40E94DA746B017C016093F3147093B5 +:108FB000F4148093F5149093F6146093F71470935F +:108FC000F8148093F9149093FA1420E030E442E905 +:108FD00055E40E949F7487FF09C0C092FB14D09291 +:108FE000FC14E092FD14F092FE1411C080E090E4B5 +:108FF000A2E9B5E48093FB149093FC14A093FD14B4 +:10900000B093FE1404C067961FAE1EAE67976796B6 +:10901000AEADBFAD6797BD0180E090E00E942173C7 +:109020006B017C012DA13EA14FA158A5F1016081EA +:109030007181828193810E94A771A70196010E948C +:1090400088726F966CAF7DAF8EAF9FAF6F9729A57B +:109050003AA54BA55CA5D10114966D917D918D919A +:109060009C9117970E94A771A70196010E94887290 +:10907000A3966CAF7DAF8EAF9FAFA3972DA53EA5F6 +:109080004FA558A9F10160857185828593850E945D +:10909000A771A70196010E948872A7966CAF7DAF59 +:1090A0008EAF9FAFA79722242394312C67962EADC5 +:1090B0003FAD67972215330508F49BC1B101032C1E +:1090C000000C880B990B0E9423736B017C019B01A0 +:1090D000AC016F966CAD7DAD8EAD9FAD6F970E946C +:1090E000DA749B01AC016DA17EA18FA198A50E94AD +:1090F000A8716D877E878F87988BA7019601A396AD +:109100006CAD7DAD8EAD9FADA3970E94DA749B01CF +:10911000AC0169A57AA58BA59CA50E94A871698B55 +:109120007A8B8B8B9C8BA7019601A7966CAD7DAD3E +:109130008EAD9FADA7970E94DA749B01AC016DA51F +:109140007EA58FA598A90E94A8716D8B7E8B8F8BB1 +:10915000988FAE014B5E5F4FBE016F5E7F4FCE01B9 +:109160000D960E94BC2FED88FE880F89188D2989E5 +:109170003A894B895C896D857E858F859889DE016A +:10918000DD964D01FE01EF5BFF4F5F0118966D010B +:10919000F9D12196ECACFDAC0EAD1FAD2197259613 +:1091A0002CAD3DAD4EAD5FAD259729966CAD7DAD37 +:1091B0008EAD9FAD299712D5882309F416C16D8510 +:1091C0007E858F8598896093880D7093890D809333 +:1091D0008A0D90938B0D29893A894B895C8920935C +:1091E0008C0D30938D0D40938E0D50938F0DED8827 +:1091F000FE880F89188DE092900DF092910D0093EA +:10920000920D1093930DFE01F1964F01DE01D5965C +:109210005D0138966F01B6D1C9A8DAA8EBA8FCA801 +:109220008DA89EA8AFA8B8AC2091700D3091710D9B +:109230004091720D5091730D69AD7AAD8BAD9CADBF +:109240000E94A77120E030E040EA52E40E94DA7404 +:109250000E94F072072E000C880B990B0E9423735A +:1092600069837A838B839C832091740D3091750D73 +:109270004091760D5091770DC501B4010E94A77100 +:1092800020E030E040EA52E40E94DA740E94F0727A +:10929000072E000C880B990B0E9423736D837E832D +:1092A0008F8398872091780D3091790D40917A0DB8 +:1092B00050917B0DC701B6010E94A77120E030E0FC +:1092C00044EB52E40E94A87120E030E040EA52E40E +:1092D0000E94DA740E94F072072E000C880B990B22 +:1092E0000E94237369877A878B879C870E94B53396 +:1092F00080912A15811181C09091C9138091A3108A +:10930000981303C00E94A833F1CF89809A80AB8064 +:10931000BC80C501B4010E94F07260937C0D709313 +:109320007D0D80937E0D90937F0DCD80DE80EF804C +:10933000F884C701B6010E94F0726093800D7093AB +:10934000810D8093820D9093830D49845A846B84A0 +:109350007C84C301B2010E94F0726093840D70930B +:10936000850D8093860D9093870D2091DB143091AD +:10937000DC144091DD145091DE14C501B4010E944B +:10938000887269837A838B839C832091DF14309168 +:10939000E0144091E1145091E214C701B6010E941B +:1093A00088726D837E838F8398872091E314309138 +:1093B000E4144091E5145091E614C301B2010E94F7 +:1093C000887269877A878B879C87A8962FADA89724 +:1093D0006B964CAD5DAD6EAD7FAD6B97CE010196DA +:1093E0000E94954131E03093980DFFEF2F1A3F0A0C +:1093F0005DCE80E004C083E302C082E000C0C959B2 +:10940000DF4F0FB6F894DEBF0FBECDBFDF91CF9117 +:109410001F910F91FF90EF90DF90CF90BF90AF9092 +:109420009F908F907F906F905F904F903F902F9084 +:1094300008954F925F926F927F92AF92BF92CF92B8 +:10944000DF92EF92FF920F931F93CF93DF935C0114 +:10945000EB018A01FC01408051806280738020E032 +:1094600030E0A901C301B2010E94817220E030E026 +:10947000A901811111C0688179818A819B810E9433 +:109480009F741816E4F02AEDC22E2FE0D22E29EC9C +:10949000E22E2FEBF22E22C0C301B2010E94817294 +:1094A00087FD16C0A3019201688179818A819B8121 +:1094B0000E9488720E9446726B017C010FC09AED77 +:1094C000C92E9FE0D92E99ECE92E9FE3F92E06C014 +:1094D000C12CD12C80ECE82E8FE7F82EC701B60105 +:1094E0000E9485722091640D3091650D4091660D4A +:1094F0005091670D0E94DA74A30192010E94A87135 +:10950000F5016083718382839383C701B6010E9452 +:109510003D752091640D3091650D4091660D50911F +:10952000670D0E94DA749B01AC01688179818A81A0 +:109530009B810E94A871688379838A839B83209191 +:10954000680D3091690D40916A0D50916B0DF801D5 +:1095500060817181828193810E94A771F80160838B +:10956000718382839383DF91CF911F910F91FF903D +:10957000EF90DF90CF90BF90AF907F906F905F9013 +:109580004F9008952F923F924F925F926F927F92E9 +:109590008F929F92AF92BF92CF92DF92EF92FF9203 +:1095A0000F931F93CF93DF93CDB7DEB766970FB6B8 +:1095B000F894DEBF0FBECDBF69837A838B839C8313 +:1095C0002D833E834F835887270138011601BA8ABD +:1095D000A98A84019B01AC010E94DA746B017C01B1 +:1095E0002D813E814F815885CA01B9010E94DA74EC +:1095F0009B01AC01C701B6010E94A8710E9447758A +:1096000023E333E343E551E40E94A77169877A8736 +:109610008B879C872DEC3CEC46ED52E4C301B201F4 +:109620000E94A7712B013C0129853A854B855C85F9 +:10963000CA01B9010E94DA746B017C01A301920195 +:10964000C301B2010E94DA749B01AC01C701B601EB +:109650000E94A8716B017C0124ED35E64DE955E4CB +:109660000E94A7714B015C0126EC3FEA4DE957E4EB +:10967000C701B6010E94DA746D877E878F87988B49 +:10968000A5019401C501B4010E94DA749B01AC01EB +:109690006D857E858F8598890E94A7710E94477588 +:1096A0006B8B7C8B8D8B9E8BA7019601C701B601BE +:1096B0000E94A8716D877E878F87988BA501940182 +:1096C00069857A858B859C850E94DA744B015C01E3 +:1096D0002B893C894D895E89C301B2010E94DA74ED +:1096E0009B01AC01C501B4010E94A7714B015C0153 +:1096F0002CEE31E14EE053E46D857E858F859889AF +:109700000E94DA749B01AC01C501B4010E94887209 +:109710000E94997121EE3EE245E652E40E94DA741D +:10972000F101608371838283938324ED35E64DE9F3 +:1097300055E4C701B6010E94A8714B015C012BE3FF +:1097400039E045EC57E4C701B6010E94DA746B01B9 +:109750007C01A5019401C501B4010E94DA749B014A +:10976000AC01C701B6010E94A7710E9447756B0149 +:109770007C01A501940169857A858B859C850E9471 +:10978000DA744B015C01A7019601C301B2010E948A +:10979000DA749B01AC01C501B4010E94A8716B0190 +:1097A0007C012CE53FEC4EE153E46D857E858F8591 +:1097B00098890E94DA749B01AC01C701B6010E942E +:1097C00088720E94997121EE3EE245E652E40E94C1 +:1097D000DA746B017C01E989FA8960837183828381 +:1097E000938321EE3EE245E652E4F101608171810E +:1097F000828193810E9488720E943D752CEE31E136 +:109800004EE053E40E94DA749B01AC01C301B20143 +:109810000E949F74181654F4F7FAF094F7F8F09435 +:10982000E989FA89C082D182E282F38220E030E0C5 +:10983000A90169817A818B819C810E94817220E0DB +:1098400030E0A901811112C06D817E818F819885E0 +:109850000E949F7418162CF480E090E0A4EBB2E410 +:1098600011C080E090E0A4EBB2EC0CC069817A8179 +:109870008B819C810E94817287FF0AC080E090E00A +:10988000A0ECBFE7F80180839183A283B38317C064 +:1098900029813A814B815C816D817E818F819885A0 +:1098A0000E9488720E94467221EE3EE245E652E432 +:1098B0000E94DA74F80160837183828393836696D1 +:1098C0000FB6F894DEBF0FBECDBFDF91CF911F91D1 +:1098D0000F91FF90EF90DF90CF90BF90AF909F904F +:1098E0008F907F906F905F904F903F902F90089552 +:1098F0002F923F924F925F926F927F928F929F92A0 +:10990000AF92BF92CF92DF92EF92FF920F931F938D +:10991000CF93DF93CDB7DEB72E970FB6F894DEBFA7 +:109920000FBECDBF29833A834B835C83ED82FE82D9 +:109930000F831887860115019E868D8621EE3EE2F3 +:1099400045E652E40E9488722B013C0121EE3EE282 +:1099500045E652E469817A818B819C810E948872FC +:109960004B015C0121EE3EE245E652E46D817E81D1 +:109970008F8198850E9488726B017C01C301B201BE +:109980000E94857269837A838B839C83C501B401AD +:109990000E9485726D837E838F839887C301B20195 +:1099A0000E943D752B013C01C501B4010E943D752B +:1099B00069877A878B879C872CEE31E14EE053E4F0 +:1099C00069817A818B819C810E94DA744B015C01F0 +:1099D0002CE53FEC4EE153E46D817E818F819885CB +:1099E0000E94DA749B01AC01C501B4010E94A87108 +:1099F00023E333E343E551E40E94A8714B015C018A +:109A0000C701B6010E9485729B01AC01C501B4017A +:109A10000E94DA74F8016083718382839383C701A3 +:109A2000B6010E943D759B01AC01C501B4010E94C5 +:109A3000DA74F10160837183828393832CEE31E1C8 +:109A40004EE053E4C301B2010E94DA746B017C0161 +:109A50002CE53FEC4EE153E469857A858B859C8546 +:109A60000E94DA749B01AC01C701B6010E94A77184 +:109A70002DEC3CEC46ED52E40E94A871ED85FE858C +:109A800060837183828393832E960FB6F894DEBF32 +:109A90000FBECDBFDF91CF911F910F91FF90EF903F +:109AA000DF90CF90BF90AF909F908F907F906F90FE +:109AB0005F904F903F902F9008952F923F924F923A +:109AC0005F926F927F928F929F92AF92BF92CF924E +:109AD000DF92EF92FF920F931F93CF93DF93CDB757 +:109AE000DEB728970FB6F894DEBF0FBECDBF2B01AF +:109AF0003C0129833A834B835C83ED82FE820F8392 +:109B00001887860182E6282E8DE0382E20E030E08E +:109B100044EB52E4F10166897789808D918D0E9432 +:109B2000A7716B017C0120E030E040EA52E46D81D6 +:109B30007E818F8198850E9488729B01AC01C7014C +:109B4000B6010E94A8716D837E838F83988720E081 +:109B500030E040EA52E469817A818B819C810E94E5 +:109B60008872F10122893389448955890E94A8713C +:109B700069837A838B839C8320E030E040EA52E45F +:109B8000C301B2010E948872F101268537854089A0 +:109B900051890E94A8716801ED80FE800F811885AF +:109BA00029813A814B815C81A3DE28960FB6F89417 +:109BB000DEBF0FBECDBFDF91CF911F910F91FF9000 +:109BC000EF90DF90CF90BF90AF909F908F907F905D +:109BD0006F905F904F903F902F9008954F925F92BB +:109BE0006F927F928F929F92AF92BF92CF92DF92AD +:109BF000EF92FF920F931F932B013C0149015A01F1 +:109C0000670178019B01AC010E948F75811170C0C2 +:109C1000A5019401C501B4010E948F75811168C02E +:109C2000A7019601C701B6010E948F75811160C01E +:109C30002AE939E947E053E4C301B2010E949F7465 +:109C400018160CF455C020E030E0A901C301B201A0 +:109C50000E94817287FD4CC02DEC3CEC4FEE52E42B +:109C6000C501B4010E949F7418160CF441C020E095 +:109C700030E0A901C501B4010E94817287FD38C09E +:109C8000A301920160E070E084E393E40E94A77175 +:109C9000A50194010E94A7714B015C0120E030E016 +:109CA00047E153E40E949F74181614F120E030E05D +:109CB00040E251E4C501B4010E94817287FD18C0E1 +:109CC00020E030E044EB52E4C701B6010E949F74EB +:109CD000181674F020E030E044EB52ECC701B601F6 +:109CE0000E948172881F8827881F91E0892701C000 +:109CF00080E01F910F91FF90EF90DF90CF90BF9089 +:109D0000AF909F908F907F906F905F904F9008954D +:109D1000EF92FF920F931F93CF93DF9382E393E031 +:109D20000E94835F8B3B19F080E293E002C084E3E2 +:109D300093E022E6E22E2DE0F22ECCE5DDE08C0170 +:109D40000C551D40C8018C0F9D1F0E94835F899395 +:109D5000EC16FD06B9F7DF91CF911F910F91FF909F +:109D6000EF900895AF92BF92CF92DF92EF92FF9261 +:109D70000F931F93CF93DF93A82E6EE00E94CA59D2 +:109D8000C82F6FE08A2D0E94CA59D0E0DC2FCC2763 +:109D9000C82B7E016E0104E010E06EE08A2D0E9467 +:109DA000CA59B82E6FE08A2D0E94CA592B2D30E077 +:109DB000322F2227A901482BCA01C816D90608F458 +:109DC0006C018E159F0508F47C01C80FD91F015046 +:109DD000110919F7CE018C199D098E199F0963E0AD +:109DE00070E00E94C675613050E1750708F48B0180 +:109DF000C801DF91CF911F910F91FF90EF90DF90FD +:109E0000CF90BF90AF900895CF92DF92EF92FF92E4 +:109E10000F931F93CF93DF93EC01A4DF9C01C1301C +:109E2000D10591F128F0C230D10509F459C084C0A0 +:109E300060915E0D70915F0DCB01A0E0B0E08901F3 +:109E400020E030E06C017D01C01AD10AE20AF30A79 +:109E500041E0C41648E0D406E104F10424F0905136 +:109E6000A109B1090AC0C11448EFD4064FEFE406B6 +:109E7000F4061CF4905FAF4FBF4FBC01CD01601BD7 +:109E8000710B820B930B65C06091600D7091610D39 +:109E9000CB01A0E0B0E0890120E030E06C017D0161 +:109EA000C01AD10AE20AF30A41E0C41648E0D40617 +:109EB000E104F10424F09051A109B1090AC0C114D0 +:109EC00048EFD4064FEFE406F4061CF4905FAF4F62 +:109ED000BF4FBC01CD01601B710B820B930B45C0C2 +:109EE00060915C0D70915D0DCB01A0E0B0E0890147 +:109EF00020E030E06C017D01C01AD10AE20AF30AC9 +:109F000041E0C41648E0D406E104F10424F0905185 +:109F1000A109B1090AC0C11448EFD4064FEFE40605 +:109F2000F4061CF4905FAF4FBF4FBC01CD01601B26 +:109F3000710B820B930B22C0C130D10599F030F028 +:109F4000229719F560E070E0CB0118C060E070E086 +:109F5000CB0145E2C42E49E0D42E43E0E42E42E496 +:109F6000F42E16C060E070E0CB0139E0C32E36EF6E +:109F7000D32E31EBE32E32E4F32E0AC0C12CD12CC8 +:109F800024EBE22E22E4F22E03C060E070E0CB016D +:109F90000E94237320E030E044EB53E40E94DA7423 +:109FA00020E030E040E859E30E94DA749B01AC0104 +:109FB000C701B6010E94A771DF91CF911F910F9148 +:109FC000FF90EF90DF90CF9008958F929F92AF9285 +:109FD000BF92CF92DF92EF92FF920F931F93CF9396 +:109FE000DF93EB012BEDE22E24E1F22E8C016B01CD +:109FF0008CE0C80ED11C6991799189919991F701F2 +:10A0000081909190A190B1907F010E942373A5014E +:10A0100094010E948872F8016193719381939193E6 +:10A020008F01CC15DD0539F7DF91CF911F910F918D +:10A03000FF90EF90DF90CF90BF90AF909F908F9068 +:10A0400008951F920F920FB60F9211240BB60F9224 +:10A050002F933F934F935F936F937F938F939F9330 +:10A06000AF93BF93EF93FF9389B18095982F907131 +:10A0700084FF03C091110E94DD45FF91EF91BF91D4 +:10A08000AF919F918F917F916F915F914F913F9190 +:10A090002F910F900BBE0F900FBE0F901F90189531 +:10A0A000CF93DF93C0914714D09148142097B9F013 +:10A0B00081E080934A1460916014709161148091E2 +:10A0C0006214909163149B01AC010E94DA74698B55 +:10A0D0007A8B8B8B9C8B1092481410924714DF91D3 +:10A0E000CF9108952F923F924F925F926F927F92FD +:10A0F0008F929F92AF92BF92CF92DF92EF92FF9298 +:10A100000F931F93CF93DF93CDB7DEB7CD54D10913 +:10A110000FB6F894DEBF0FBECDBF80912B158077B0 +:10A1200023968FAF2397882389F020E030E0A901A0 +:10A130006091601470916114809162149091631425 +:10A140000E948172882311F40C945059209160145C +:10A150002F8B30916114388F40916214498F509148 +:10A1600063145A8F809170148B83909171149D8326 +:10A17000A0917214AE83B0917314BC8300915C14EF +:10A1800010915D14E0915E14E987F0915F14FD87F2 +:10A1900020914F1430915014409151145091521409 +:10A1A0002DA33EA34FA358A730914B143DAF409130 +:10A1B0004C144EAF50914D145FAF80914E142196C8 +:10A1C0008FAF219720915714309158144091591412 +:10A1D00050915A142DAB3EAB4FAB58AF3091F013AA +:10A1E00022963FAF2297409146144BA75091CA1335 +:10A1F00024965FAF24978091C9138B8F9091E610BE +:10A2000025969FAF2597A0914714B0914814BA8B1B +:10A21000A98B2091531430915414409155145091AE +:10A22000561429AF3AAF4BAF5CAF309168143B8BFB +:10A23000409169144C8B50916A145D8B80916B1422 +:10A240008E8B909164149C8FA0916514AD8FB0910A +:10A250006614BE8FE0916714EF8F30906C142090DD +:10A260006D14F0916E14F98320916F142A838091FC +:10A27000CB135BA5851709F4F4C649895A89452B88 +:10A2800009F033C224965FAD24978B8D581709F4DB +:10A2900078C7A82EB12CA9E2AA9DC001AB9D900D54 +:10A2A0001124FC01E951FF4EFA8BE98B80914A148D +:10A2B000882319F010924A14BCC0809149148F5F12 +:10A2C000853019F08093491402C010924914E0912E +:10A2D000491421E12E9FF0011124EF50FC4E89E238 +:10A2E0008A9DA0018B9D500D112449515F4E7A012A +:10A2F000DA018C91808311964D915D916D917C91E5 +:10A300001497DB01CA0123E0880F991FAA1FBB1F06 +:10A310002A95D1F781839283A383B483D7011596BD +:10A320004D915D916D917C911897DB01CA0133E0ED +:10A33000880F991FAA1FBB1F3A95D1F78583968373 +:10A34000A783B087D70119964D915D916D917C914E +:10A350001C97DB01CA0143E0880F991FAA1FBB1F8E +:10A360004A95D1F781879287A387B487D7011D9635 +:10A370006D917D918D919C9150978B019C0153E043 +:10A38000000F111F221F331F5A95D1F7058716871B +:10A390002787308B0E9421736DAF7EAF8FAF2196E0 +:10A3A0009FAF2197F70125A136A147A150A50E9493 +:10A3B00088726DA37EA38FA398A79B01AC0160E078 +:10A3C00070E080EA9FE30E94887269AF7AAF8BAF3A +:10A3D0009CAF2396FFAD2397FF23D1F02B893C89B7 +:10A3E0004D895E896B897C898D899E890E94DA748A +:10A3F000D70151966D937D938D939C935497BB8910 +:10A40000BF8BEC89E88FFD89F98F2E892A8F0DC0CB +:10A41000D70151966D917D918D919C9154970E9499 +:10A4200047756F8B788F898F9A8F1DAA1EAA1FAAD6 +:10A4300018AE29E22A9DF0012B9DF00D1124E9515F +:10A44000FF4EFE87ED87C1A0D2A0E3A0F4A0A70134 +:10A45000960160E070E080E09FE30E948872698767 +:10A460007A878B879C8723963FAD23973323F1F11F +:10A4700042E040935B14AD85BE8595964D905D900E +:10A480006D907C90989751968D909D90AD90BC90DA +:10A490005497A50194010E94DA749B01AC01C30199 +:10A4A000B2010E94A7718B0189879D8720E030E06F +:10A4B000A9010E94817287FF1BC1A7019601C701F4 +:10A4C000B6010E94A871A30192010E94DA749B0157 +:10A4D000AC01C501B4010E94A7710E9447756B8B46 +:10A4E0007C8B8D8B9E8B3F82288615C110925B14CE +:10A4F000ED85FE85F5A1FF83AD85BE859696BC9161 +:10A50000B887ED85FE8507A110A5EB8DEF5FE231E1 +:10A5100009F4E0E02496FFAD2497EF1789F029E2D3 +:10A520002E9FF0011124E951FF4E618972898389C0 +:10A5300094890E9447756B8B7C8B8D8B9E8B04C09E +:10A540001B8A1C8A1D8A1E8A2B893C894D895E893B +:10A550006B897C898D899E890E94DA742B013C016C +:10A5600089E28A9DA0018B9D500D112449515F4EB7 +:10A570005AA349A3DA0151962D913D914D915C91D9 +:10A5800054972D873E874F87588BA30192016D8585 +:10A590007E858F8598890E94A77129853A854B858C +:10A5A0005C850E94DA742F813885A8010E94A87109 +:10A5B00020E030E040E05FE30E94DA74362E272E80 +:10A5C00089839A8320E030E0A9010E949F741816C5 +:10A5D0000CF095C0232D322D49815A816F817885E9 +:10A5E000C8010E949F7418160CF071C0E9A1FAA16D +:10A5F000858C968CA78CB0A0A3019201C501B401F3 +:10A600000E94A77129853A854B855C850E94DA7482 +:10A610006B837D838E839C839B01AC01632D722DA4 +:10A6200089819A810E949F74181694F5C501B4011E +:10A630000E9447756C8F7D8F8E8F9F8FA50194012F +:10A640006D857E858F8598890E948172811106C0F3 +:10A65000F1E0F0935B1409831A835DC02D853E857C +:10A660004F855889C501B4010E94A77129853A8593 +:10A670004B855C850E94DA749B01AC016F81788503 +:10A68000C8010E94A7716F83788789839A8343C02A +:10A69000A7019601C701B6010E94A871232D322D92 +:10A6A00049815A810E94DA74A30192010E94A87123 +:10A6B0000E9447756C8F7D8F8E8F9F8F3F8228867B +:10A6C0003B822D8229812E833A813C8324C042E043 +:10A6D00040935B1409831A835F895C8F888D8D8F0B +:10A6E000998D9E8FAA8DAF8F16C03F82288617C086 +:10A6F0003F8228861B8A1C8A1D8A1E8A10C0BB893D +:10A70000BC8FEC89ED8FFD89FE8F2E892F8F1F82E4 +:10A71000188619821A8200E010E019861D8622969A +:10A720005FAD2297452F50E05AA749A786E0849F46 +:10A73000F001859FF00D1124E453FC4E80914914E3 +:10A740008283A989BA899596BC91B8ABE989FA89BF +:10A75000F6A1F9ABA989BA899796BC912696BFAFA5 +:10A760002697E989FA89F0A52796FFAF279729ADA3 +:10A770003AAD4BAD5CAD68A979A98B2F9F2F0E9494 +:10A78000A7716CA77DA78EA79FA720E030E0A90145 +:10A790000E94817287FF04C01CA61DA61EA61FA6CC +:10A7A00020915B1428A32B813D814E815C816F81B8 +:10A7B000788589819A810E948172811105C032E079 +:10A7C00028963FAF289704C041E028964FAF2897BE +:10A7D00028A859A92E965FAF2E9726968FAD26975B +:10A7E0002D968FAF2D9727963FAC27978EE3C82ED7 +:10A7F00083ECD82E8EE2E82E89E3F82E412C512CE2 +:10A800003201C9A2DAA2EBA2FCA238A1332321F0C3 +:10A81000313009F485C0C5C0A989BA8991962D91B6 +:10A820003D914D915C919497C701B6010E94DA74F5 +:10A830004B015C0120E030E040E05FE30E94DA740D +:10A840002F89388D498D5A8D0E94A871A7019601D4 +:10A850000E94DA749B01AC01622D2E967FAD2E977B +:10A860002D968FAD2D97932D0E94A771262E2E9693 +:10A870007FAF2E972D968FAF2D97392E2F8138854C +:10A8800049815A810E94817287FF3DC02F8138859E +:10A8900049815A8168A979A926968FAD269727966E +:10A8A0009FAD27970E94A7719B01AC010E94A871E0 +:10A8B0006B017C012C8D3D8D4E8D5F8D6F89788D68 +:10A8C000898D9A8D0E94A8719B01AC01C701B601C8 +:10A8D0000E9488726B017C012896BFAD2897B8A3AF +:10A8E000EC8DEF8BFD8DF88F2E8D298F3F8D3A8F5C +:10A8F0002F8048852E964FAF2E9759812D965FAFAA +:10A900002D973A80EBC0A50194016F89788D898DD0 +:10A910009A8D0E94A8716F8B788F898F9A8FDEC075 +:10A920002C8D3D8D4E8D5F8DC701B6010E94DA746E +:10A930009B01AC01622D2E967FAD2E972D968FAD8B +:10A940002D97932D0E94A7714B015C012B813D81B6 +:10A950004E815C810E94817287FFB8C02B813D814E +:10A960004E815C81622D2E967FAD2E972D968FADF8 +:10A970002D97932D0E94A7712C8D3D8D4E8D5F8D4F +:10A980000E9488726B017C012B808D812E968FAF87 +:10A990002E979E812D969FAF2D973C80A2E0A8A375 +:10A9A0009DC0E989FA8921A132A143A154A1C7011F +:10A9B000B6010E94DA744B015C012F89388D498DF4 +:10A9C0005A8D0E94817287FF52C020E030E040E043 +:10A9D0005FE3C501B4010E94DA749B01AC016F8989 +:10A9E000788D898D9A8D0E94A771A70196010E948A +:10A9F000DA749B01AC01622D2E967FAD2E972D96B9 +:10AA00008FAD2D97932D0E94A77129966FAF29972F +:10AA10002A967FAF2A972B968FAF2B972C969FAFB6 +:10AA20002C97980149855D850E949F741816FCF447 +:10AA3000A50194016F89788D898D9A8D0E94A771E7 +:10AA40006F8B788F898F9A8F29962FAC29972A96AA +:10AA5000FFAD2A972E96FFAF2E972B962FAD2B97F3 +:10AA60002D962FAF2D972C963FAC2C9737C0980181 +:10AA700049855D85622D2E967FAD2E972D968FADE3 +:10AA80002D97932D0E94A7719B01AC010E94A87184 +:10AA90006B017C012B893C894D895E896F89788D9A +:10AAA000898D9A8D0E94A8719B01AC01C701B601E6 +:10AAB0000E9488726B017C01202E2E961FAF2E976C +:10AAC00039852D963FAF2D973D8408C0282C2E96B2 +:10AAD0009FAE2E972D96AFAE2D973B2CA7019601DA +:10AAE000C301B2010E94A8712B013C0129A13AA126 +:10AAF0004BA15CA10E94817287FF07C0A301920154 +:10AB000069A17AA18BA19CA120C02CA53DA54EA531 +:10AB10005FA5622D2E967FAD2E972D968FAD2D972A +:10AB2000932D0E949F74181644F52EE333EC4EE2E9 +:10AB300059E369A17AA18BA19CA10E94A87169A384 +:10AB40007AA38BA39CA3A30192010E94A7716B011E +:10AB50007C01980149855D85622D2E967FAD2E97EB +:10AB60002D968FAD2D97932D0E949F7418160CF47F +:10AB70004CCE48A140935B1403C058A150935B1482 +:10AB80002DA13EA14FA158A5622D2E967FAD2E97E7 +:10AB90002D968FAD2D97932D0E94DA7468A379A31B +:10ABA0008CA798AB0E946E726B017C016DAD7EAD7F +:10ABB0008FAD21969FAD21970E946E724B015C0173 +:10ABC000A70196010E94A7710E94F57269AB7AAB4A +:10ABD0008BAB9CABA6E089A59AA5A89FF001A99F85 +:10ABE000F00D1124E453FC4E29A93AA931832083A6 +:10ABF000232B09F087C023965FAD2397552309F4D3 +:10AC000081C0C801A985BD8580935C1490935D14B3 +:10AC1000A0935E14B0935F148B899C89AD89BE8923 +:10AC20008093681490936914A0936A14B0936B1482 +:10AC30008C8D9D8DAE8DBF8D809364149093651423 +:10AC4000A0936614B09367148B819D81AE81BC8103 +:10AC50008093701490937114A0937214B093731432 +:10AC60008F819885A981BA8180936C1490936D141B +:10AC7000A0936E14B0936F1422968FAD2297809399 +:10AC8000F013A989BA89B0934814A093471429AD49 +:10AC90003AAD4BAD5CAD20935314309354144093B4 +:10ACA0005514509356143B8D3093C9138DA19EA11A +:10ACB000AFA1B8A580934F1490935014A093511452 +:10ACC000B09352149BA59093461410926014109266 +:10ACD000611410926214109263141092571410921F +:10ACE00058141092591410925A14C0924B14D092C6 +:10ACF0004C14E0924D14F0924E142DA13EA14FA1A0 +:10AD000058A565C12DA93EA94FA958ADC301B201EF +:10AD10000E94A8712B013C0128A139A14CA558A97A +:10AD2000C501B4010E94A7719B01AC01C301B2012E +:10AD30000E9488724B015C0128A139A14CA558A939 +:10AD4000C701B6010E94A771A50194010E94DA749F +:10AD50006DAB7EAB8FAB98AF20EC31EE44E65EE49A +:10AD6000C501B4010E94DA740E946E720E94F572ED +:10AD7000603DE7E07E078105910560F446E029A586 +:10AD80003AA5429FF001439FF00D1124E453FC4E7D +:10AD9000158253C0603A5FE075078105910560F444 +:10ADA00026E0A9A5BAA52A9FF0012B9FF00D11243A +:10ADB000E453FC4E31E011C060344FE1740781056B +:10ADC000910568F426E0A9A5BAA52A9FF0012B9F5A +:10ADD000F00D1124E453FC4E32E035830CC0A6E0A4 +:10ADE00049A55AA5A49FF001A59FF00D1124E45395 +:10ADF000FC4EB3E0B58346E029A53AA5429FF00199 +:10AE0000439FF00D1124E453FC4E2581022E04C013 +:10AE100096958795779567950A94D2F7A9A9BAA9C7 +:10AE200002C0AA0FBB1F2A95E2F7B183A083611568 +:10AE30007105B1E08B07910568F446E029A53AA5B4 +:10AE4000429FF001439FF00D1124E453FC4E7483A4 +:10AE5000638304C08FEF9FEF94838383BBA4B39479 +:10AE600096E0B91201C0B12C980149855D85622D2B +:10AE70002E967FAD2E972D968FAD2D97932D0E94F8 +:10AE80009F741816CCF4822D2E969FAD2E972D967A +:10AE9000AFAD2D97B32DE989FA8985A396A3A7A312 +:10AEA000B0A7F8A1FDAF29A12EAF3CA53FAF48A99F +:10AEB00021964FAF2197CDC020E030E0A901622D4F +:10AEC0002E967FAD2E972D968FAD2D97932D0E94A8 +:10AED0009F7418160CF0A6C0C801A985BD85809383 +:10AEE0005C1490935D14A0935E14B0935F148B89EF +:10AEF0009C89AD89BE898093681490936914A0934E +:10AF00006A14B0936B148C8D9D8DAE8DBF8D809324 +:10AF1000641490936514A0936614B09367148B81A6 +:10AF20009D81AE81BC818093701490937114A09325 +:10AF30007214B09373148F819885A981BA8180931C +:10AF40006C1490936D14A0936E14B0936F145BA562 +:10AF50005093F01389899A899093481480934714E9 +:10AF600029AD3AAD4BAD5CAD2093531430935414DE +:10AF700040935514509356143B8D3093C9138DA1B3 +:10AF80009EA1AFA1B8A580934F1490935014A093A5 +:10AF90005114B0935214B09246141092601410924F +:10AFA000611410926214109263141092571410924C +:10AFB00058141092591410925A14C0924B14D092F3 +:10AFC0004C14E0924D14F0924E149C01AD01C70157 +:10AFD000B6010E948872A989BA8995966D937D936E +:10AFE0008D939C9398975CD8BB8DB093E610C35B10 +:10AFF000DF4F0FB6F894DEBF0FBECDBFDF91CF910C +:10B000001F910F91FF90EF90DF90CF90BF90AF9086 +:10B010009F908F907F906F905F904F903F902F9078 +:10B020000C9448402496EFAD2497FB8DEF1779F0F0 +:10B030008F2F8F5F823109F480E02B8D25963FADF5 +:10B040002597231303C025968FAF25978B8F1A8AD8 +:10B05000198A3F8028844BA522964FAF2297BBA622 +:10B0600006C9C801A985BD8580935C1490935D14C1 +:10B07000A0935E14B0935F148B899C89AD89BE89BF +:10B080008093681490936914A0936A14B0936B141E +:10B090008F89988DA98DBA8D8093601490936114D7 +:10B0A000A0936214B09363148C8D9D8DAE8DBF8D73 +:10B0B0008093641490936514A0936614B0936714FE +:10B0C0008B819D81AE81BC818093701490937114AB +:10B0D000A0937214B0937314832D922DA981BA8119 +:10B0E00080936C1490936D14A0936E14B0936F14AE +:10B0F00022968FAD22978093F013A989BA89B093D5 +:10B100004814A093471429AD3AAD4BAD5CAD2093E4 +:10B1100053143093541440935514509356143B8D4C +:10B120003093C9138DAD9EADAFAD2196BFAD2197C4 +:10B1300080934B1490934C14A0934D14B0934E14E1 +:10B140008DA19EA1AFA1B8A580934F1490935014E8 +:10B15000A0935114B09352142DA93EA94FA958ADF4 +:10B1600020935714309358144093591450935A1401 +:10B170003BA53093461425964FAD25974093E61096 +:10B180008FC0C801A985BD8580935C1490935D1420 +:10B19000A0935E14B0935F148B899C89AD89BE899E +:10B1A0008093681490936914A0936A14B0936B14FD +:10B1B0008F89988DA98DBA8D8093601490936114B6 +:10B1C000A0936214B09363148C8D9D8DAE8DBF8D52 +:10B1D0008093641490936514A0936614B0936714DD +:10B1E0008B819D81AE81BC8180937014909371148A +:10B1F000A0937214B0937314832D922DA981BA81F8 +:10B2000080936C1490936D14A0936E14B0936F148C +:10B2100022965FAD22975093F0131092481410922B +:10B22000471489AD9AADABADBCAD809353149093E8 +:10B230005414A0935514B093561424969FAD24979C +:10B240009093C9138DAD9EADAFAD2196BFAD219743 +:10B2500080934B1490934C14A0934D14B0934E14C0 +:10B260002DA13EA14FA158A520934F143093501407 +:10B2700040935114509352148DA99EA9AFA9B8AD13 +:10B280008093571490935814A0935914B0935A1460 +:10B290009BA5909346142596AFAD2597A093E610F5 +:10B2A000C35BDF4F0FB6F894DEBF0FBECDBFDF919B +:10B2B000CF911F910F91FF90EF90DF90CF90BF90B3 +:10B2C000AF909F908F907F906F905F904F903F9046 +:10B2D0002F900895CF93DF930E9498368BE2E9E494 +:10B2E000F4E1DF011D928A95E9F783E2E3ECF0E1F6 +:10B2F000DF011D928A95E9F71092481410924714C5 +:10B300001092CB131092F01381E0809346141092A8 +:10B31000C2100E94193681B39091C1109170C92F4B +:10B32000B0E0DB2F96E0CC0FDD1F9A95E1F78F7B25 +:10B33000C82BC1BBEBE0F1E090818091C11082701D +:10B34000880F880F977F892B808381B39091C110DC +:10B3500092FB992790F98E7F892B81BB8091C01039 +:10B3600080FD8F9A80FF8F9880819091C01092709D +:10B370008D7F892B808321B39091C0109470892F89 +:10B3800090E095958795922F9D7F892B81BBDF91CA +:10B39000CF910895CF93DF93C62F813009F48EC0EB +:10B3A00038F1823009F069C10E942F2E8CE60E948C +:10B3B000BF2D0E94092E8C2F0E94BF2D0E94092EA6 +:10B3C0000E942F2E8DE60E94BF2D0E94092E62E062 +:10B3D00070E080E090E00E94D444559A5D9A62E06B +:10B3E00070E080E090E00E94D444D8E0C0E002C168 +:10B3F0000E94A42F8CE60E94342F0E947E2F8C2F57 +:10B400000E94342F0E947E2F0E94A42F8DE60E945E +:10B41000342F0E947E2F62E070E080E090E00E9476 +:10B42000D444399A419A62E070E080E090E00E9452 +:10B43000D444D8E0C0E0439865E070E080E090E05C +:10B440000E94D444439ACC0F65E070E080E090E025 +:10B450000E94D44439983199C16065E070E080E081 +:10B4600090E00E94D444D15031F74398399A419AE0 +:10B4700062E070E080E090E00E94D444439A65E08E +:10B4800070E080E090E00E94D444439862E070E075 +:10B4900080E090E00E94D444399A419A62E070E0E2 +:10B4A00080E090E00E94D444439862E070E080E045 +:10B4B00090E00E94D4440E94662FE0C00E94022FB8 +:10B4C0008CE60E94472E0E94C72E8C2F0E94472E8A +:10B4D0000E94C72E0E94022F8DE60E94472E0E94D6 +:10B4E000C72E62E070E080E090E00E94D44480913A +:10B4F0000101846080930101809102018460809346 +:10B50000020162E070E080E090E00E94D444D8E064 +:10B51000C0E0809102018F778093020165E070E0C6 +:10B5200080E090E00E94D444809102018068809382 +:10B530000201CC0F65E070E080E090E00E94D4440E +:10B54000809101018B7F809301018091000182FD38 +:10B55000C16065E070E080E090E00E94D444D1508A +:10B56000C1F6809102018F778093020180910101E1 +:10B5700084608093010180910201846080930201C4 +:10B5800062E070E080E090E00E94D444809102018B +:10B5900080688093020165E070E080E090E00E94A6 +:10B5A000D444809102018F778093020162E070E0C1 +:10B5B00080E090E00E94D4448091010184608093F7 +:10B5C00001018091020184608093020162E070E0D9 +:10B5D00080E090E00E94D444809102018F778093B4 +:10B5E000020162E070E080E090E00E94D4440E949A +:10B5F000952E44C05E9865E070E080E090E00E9487 +:10B60000D4445E9ACC0F65E070E080E090E00E9448 +:10B61000D44455984D99C16065E070E080E090E0B9 +:10B620000E94D444D15031F75E98559A5D9A62E0F9 +:10B6300070E080E090E00E94D4445E9A65E070E0A3 +:10B6400080E090E00E94D4445E9862E070E080E088 +:10B6500090E00E94D444559A5D9A62E070E080E0E8 +:10B6600090E00E94D4445E9862E070E080E090E058 +:10B670000E94D4440E94F12D01C0C0E08C2FDF91C4 +:10B68000CF910895E2EDF4E124813581DC010E943F +:10B690002076A1E0B1E02C9128602C93A0EAB0E0E4 +:10B6A0002C9120682C93DC01CB012AE0B695A7955C +:10B6B000979587952A95D1F79093A9008093A80034 +:10B6C000868180618093A1000895CF93DF9321E567 +:10B6D000829FC0011124EC01D55F40E550E0BE011E +:10B6E00082E894E118D4892B51F41092821440E539 +:10B6F00050E062E874E1CE01CBD380E001C081E08C +:10B70000DF91CF91089590E0FC013197E231F1058E +:10B7100008F04EC08827E654FF4F8F4F0C941876E0 +:10B72000809180008F7703C0809180008F7D80930F +:10B730008000089580918000877FF9CF84B58F774E +:10B7400002C084B58F7D84BD08958091B0008F774D +:10B7500003C08091B0008F7D8093B00008958091E8 +:10B7600090008F7707C0809190008F7D03C08091FB +:10B770009000877F8093900008958091A0008F773C +:10B7800007C08091A0008F7D03C08091A000877FBB +:10B790008093A0000895809120018F7707C0809149 +:10B7A00020018F7D03C080912001877F809320013D +:10B7B00008951F93CF93DF93282F30E0F901EA57C4 +:10B7C000F54F8491F901E05CF54FD491F901E65011 +:10B7D000F64FC491CC23B9F0162F811194DFEC2FD2 +:10B7E000F0E0EE0FFF1FE052F64FA591B4919FB726 +:10B7F000F894111104C08C91D095D82302C0EC911B +:10B80000DE2BDC939FBFDF91CF911F91089586338C +:10B8100008F0865390917B00282F2870977F922BF9 +:10B8200090937B008770806480937C0080917A0085 +:10B83000806480937A0080917A0086FDFCCF8091AD +:10B8400078002091790090E0922B08951F920F923A +:10B850000FB60F9211240BB60F922F933F934F9375 +:10B860005F936F937F938F939F93AF93BF93EF9368 +:10B87000FF9380917D1490917E1490932501809385 +:10B880002401E0917B14F0917C14309709F0199514 +:10B89000FF91EF91BF91AF919F918F917F916F91A8 +:10B8A0005F914F913F912F910F900BBE0F900FBE64 +:10B8B0000F901F9018951F920F920FB60F921124A0 +:10B8C0000BB60F922F933F934F935F936F937F939A +:10B8D0008F939F93AF93BF93EF93FF938091D41473 +:10B8E0009091D5149093A5008093A400E091D21478 +:10B8F000F091D314309709F01995FF91EF91BF9112 +:10B90000AF919F918F917F916F915F914F913F91F7 +:10B910002F910F900BBE0F900FBE0F901F90189598 +:10B92000E2E7F0E080818E7F808308951F920F927E +:10B930000FB60F9211248F939F93809108029091DC +:10B94000090290939500809394009F918F910F909E +:10B950000FBE0F901F9018951F920F920FB60F9267 +:10B9600011240BB60F922F933F934F935F936F93D6 +:10B970007F938F939F93AF93BF93EF93FF938091A8 +:10B980007614909177148093B200E0917414F09142 +:10B990007514309709F01995FF91EF91BF91AF9110 +:10B9A0009F918F917F916F915F914F913F912F91D7 +:10B9B0000F900BBE0F900FBE0F901F9018951F9207 +:10B9C0000F920FB60F9211240BB60F922F933F9345 +:10B9D0004F935F936F937F938F939F93AF93BF9397 +:10B9E000EF93FF9380912B15813071F08091291591 +:10B9F00081110AC00E94DD459FB7F89480912915F6 +:10BA00008360809329159FBFFF91EF91BF91AF9104 +:10BA10009F918F917F916F915F914F913F912F9166 +:10BA20000F900BBE0F900FBE0F901F90189589B10D +:10BA300080719091181596FD02C090E189278823A6 +:10BA400019F011F087E0089580E008952F923F9259 +:10BA50004F925F926F927F928F929F92AF92BF921E +:10BA6000CF92DF92EF92FF920F931F93CF93DF93CA +:10BA7000CDB7DEB768970FB6F894DEBF0FBECDBF67 +:10BA800090912A159111A6C1782E2BED34E1398BB6 +:10BA9000288B5901CE010D964C0100E010E0C12C1D +:10BAA000D12C7601A72DB0E0BD8BAC8B802F00236D +:10BAB00021F0013021F094E003C091E001C092E058 +:10BAC000F40191934F012C893D8902C0359527954A +:10BAD0008A95E2F720FF1BC020E030E040EC5FEBEE +:10BAE000D50194966D917D918D919C9197970E942F +:10BAF000DA74362E472E582E692EA70196010E9421 +:10BB0000817287FD04C0C32CD42CE52CF62C0F5F6A +:10BB10001F4FB4E0AB0EB11C0330110539F6809015 +:10BB20001E1590901F15A0902015B090211584E04F +:10BB3000682E01E06EE275E1CE0101960E94E54FAC +:10BB400080911915E82FF0E0FF8BEE8BFE01319606 +:10BB50002AE235E13B8B2A8B1901CE010D962C018F +:10BB600080E090E0188E10E0B701A60170582C8993 +:10BB70003D89082E02C0359527950A94E2F720FFEB +:10BB800025C0A88DAF5FA88FD10114961D921D927C +:10BB90001D921C9217972E893F89082E02C0359559 +:10BBA00027950A94E2F720FF03C0002319F007C08D +:10BBB000002329F0C082D182E282F38204C0408354 +:10BBC000518362837383D2012C91122B0196BFEFB4 +:10BBD0004B1A5B0A349624E0220E311C8330910507 +:10BBE00031F6388D632F70E080E090E00E94217381 +:10BBF0000E9447759B01AC01C501B4010E94DA7433 +:10BC00006B017C01109347150E94264020E0B7018C +:10BC1000A601CE0101960E9495410E9472500E9499 +:10BC200032390023E1F003DFFE013D9620E030E0F1 +:10BC300090E06191462F412359F0AC01022E02C0E1 +:10BC4000559547950A94E2F740FF02C06095162388 +:10BC50002F5F3F4F2330310561F7109347150E9446 +:10BC600072508091D9148473B9F08091D914807383 +:10BC700029F00E94DD450E94B533ACC00111A5C07A +:10BC8000D6DE8721B1F79FB7F8948091D9148B7FC6 +:10BC90008093D9149FBF04C0812F877009F0C1CF52 +:10BCA00019DB0E94374080912215909123150E9444 +:10BCB000124581E00827C9F020E030E040EA50E476 +:10BCC0006091241570912515809126159091271566 +:10BCD0000E94DA746B017C0180901A1590901B15FC +:10BCE000A0901C15B0901D1510C0C0902415D090C8 +:10BCF0002515E0902615F090271580901E15909040 +:10BD00001F15A0902015B09021156A94611012CFD4 +:10BD1000E0901915F12C8090241590902515A09095 +:10BD20002615B09027152401350177FA709477F81D +:10BD3000709400E010E08C899D89002E02C09595DA +:10BD400087950A94E2F780FF2CC0C701002E02C03D +:10BD5000959587950A94E2F7A889B98980FF11C063 +:10BD600094962D913D914D915C919797C501B401A9 +:10BD70000E94A871E889F98920813181428153812B +:10BD800006C02D913D914D915C91C301B2010E947D +:10BD9000DA740E94AA74EA89FB89648375838683B6 +:10BDA00097830F5F1F4F2A893B892C5F3F4F3B8B47 +:10BDB0002A8B888999890496998B888B0330110581 +:10BDC00009F0B9CF0E94264005C08091D91482FFA6 +:10BDD0005ACF4FCF68960FB6F894DEBF0FBECDBFD7 +:10BDE000DF91CF911F910F91FF90EF90DF90CF9057 +:10BDF000BF90AF909F908F907F906F905F904F908B +:10BE00003F902F900895EBE6F0E080818F7E808355 +:10BE1000E8E6F0E080818E7F8083089554985C9AF4 +:10BE20008091181583FF0BC080916B008061809317 +:10BE30006B00809168008160809368000895E3CF73 +:10BE40006EE275E188E995E10C94E54FF894F99973 +:10BE5000FECF92BD81BD81E08FBB80B58627482F84 +:10BE6000082E000C550B262F30E024233523232BDE +:10BE700039F06F3F19F060BD84E006C084E104C072 +:10BE8000882321F060BD84E28FBBF99A78940895ED +:10BE90009F92AF92BF92CF92DF92EF92FF920F9359 +:10BEA0001F93CF93DF935C018A017B01E40EF51EA3 +:10BEB000EB01912C6C01C61AD70ACE018C0D9D1D89 +:10BEC000CE15DF0581F0911008C0292D990C330B98 +:10BED000232F221F2227221F01C021E06991922EC9 +:10BEE000960EB4DFEACF692DC501800F911FDF9157 +:10BEF000CF911F910F91FF90EF90DF90CF90BF9067 +:10BF0000AF909F90A3CFF999FECF92BD81BD81E004 +:10BF10008FBB80B508959F92AF92BF92CF92DF9270 +:10BF2000EF92FF920F931F93CF93DF935B018A01F0 +:10BF30007C01E40EF51EEC01912C6B01C81AD90AA4 +:10BF4000C6018C0F9D1FCE15DF0581F0DCDF91103F +:10BF500008C0292D990C330B232F221F2227221FC3 +:10BF600001C021E0982E920E8993EACFC501800F7F +:10BF7000911FC9DF21E030E0981611F020E030E099 +:10BF8000C901DF91CF911F910F91FF90EF90DF904A +:10BF9000CF90BF90AF909F9008955C980895CF93F5 +:10BFA000DF93CDB7DEB7CC56D1090FB6F894DEBF1C +:10BFB0000FBECDBF8091C00082608093C000109200 +:10BFC000C50080E18093C4009091C100906190937E +:10BFD000C1009091C10098609093C1009091C10000 +:10BFE00090689093C1009091C80092609093C800AF +:10BFF0001092CD008093CC009091C90090619093F5 +:10C00000C9009091C90098609093C9009091C900AF +:10C0100090689093C9009091D00092609093D00066 +:10C020001092D5008093D4009091D10090619093AC +:10C03000D1009091D10098609093D1009091D1005F +:10C0400090689093D100909130019260909330016C +:10C050001092350180933401809131018061809389 +:10C0600031018091310188608093310180913101EB +:10C070008068809331010E94623E869A879A829AF4 +:10C0800080910A01886080930A0180910A01826090 +:10C0900080930A0180910701816080930701809A53 +:10C0A000819A579A8091070180618093070180915E +:10C0B0000701886080930701809107018460809365 +:10C0C0000701809108018061809308018091080137 +:10C0D000877F809308018091080184608093080124 +:10C0E0008091181582FF08C08A9A809108018160AA +:10C0F000809308015F9A07C08A98809108018E7F1B +:10C10000809308015F98809181008F7E80938100E9 +:10C1100080918100886080938100809180008C7F75 +:10C1200080938000809180008F7080938000809148 +:10C130006E00887F80936E0014BC15BC80916E00E9 +:10C14000816080936E0054985C9A80916D0080614C +:10C1500080936D00809168008460809368008AE01D +:10C1600090E00E9412450E94722B399A3B9A419AA4 +:10C17000439A8091010184608093010180910101C3 +:10C1800080688093010180910201846080930201A4 +:10C1900080910201806880930201559A569A5D9AB7 +:10C1A0005E9A0E94884E08E91EE081E090E07C01E2 +:10C1B0002FEFE21AF20AA7DED8018D938D01C70195 +:10C1C0008B3C9105A1F758E1C52E5EE0D52E870185 +:10C1D0000F5F1F4FC70197DEF60181936F01780152 +:10C1E0000B34F1E01F0799F74EE9E42E4DE0F42EF1 +:10C1F00068012FEFC21AD20AC80185DED7018D93DC +:10C200007D018601B5ECCB16B1E0DB0689F720E0B5 +:10C2100030E04AE754E464E071E080E090E00E949E +:10C22000162C84E893E06FDE8093620D85E893E03E +:10C230006ADE8093630D04E61DE088E993E07C01EB +:10C24000EFEFEE1AFE0A5FDED8018D938D01C70174 +:10C25000BCE9EB16B3E0FB0691F708E61DE08EE8BB +:10C2600093E07C01EFEFEE1AFE0A4DDED8018D93CC +:10C270008D01C701B2E9EB16B3E0FB0691F70CE6BE +:10C280001DE082E89CE07C01EFEFEE1AFE0A3BDE47 +:10C29000D8018D938D01C701B6E8EB16BCE0FB0613 +:10C2A00091F7C0906C0DD0906D0DE0906E0DF090F8 +:10C2B0006F0D20E030E044EB53E4C701B6010E946B +:10C2C0009F74181644F0A7019601C701B6010E9499 +:10C2D0008F75882341F010926C0D10926D0D1092A5 +:10C2E0006E0D10926F0D0BE11DE08AEE93E07C0164 +:10C2F000EFEFEE1AFE0A07DED8018D938D01C7011C +:10C30000B6EFEB16B3E0FB0691F760916C0D709100 +:10C310006D0D80916E0D90916F0DFE0131967F0134 +:10C320008F0124E045E00E942C6FFF92EF928AE09B +:10C3300093E09F938F930E94723F0F900F900F9006 +:10C340000F9080915A0D90915B0D019711F40E940E +:10C35000DE2A0E946F2B0E945E2B0E947A2D0E9483 +:10C36000E92A80917A00876880937A009B98A39A43 +:10C370008FE08093940D0E94842C8AEB92E09F932F +:10C380008F938CE193E09F938F930E94723F88EC90 +:10C3900092E09F938F938FE293E09F938F930E94FD +:10C3A000723F8FEC92E09F938F938FE393E09F9384 +:10C3B0008F930E94723F8091630D8F938091620DE5 +:10C3C0008F938EE493E09F938F930E94723F8FE54B +:10C3D00093E00E941A408EE1EAE2F5E1DF011D924E +:10C3E0008A95E9F781E080932A1578949091181541 +:10C3F0000FB6F894DEBF0FBECDBF94FD80932B1512 +:10C400009E01235C3F4F6F963FAF2EAF6F971E018B +:10C4100035E1230E311CCE018996A1969FAF8EAFD8 +:10C42000A197DE011196A396BFAFAEAFA3978091FF +:10C43000FD0F8093FC0F8FE3E1E8F5E1DF011D9232 +:10C440008A95E9F764EA75E180E00E94373D811141 +:10C4500003C087E00E9402330C9A549A549A0E94B7 +:10C46000CB3B549A9ADDDADC54985C9A0E943740B0 +:10C470000E946A590E942640E3DC10922A1510920D +:10C48000D9141092291510922C1510922D15809107 +:10C490002B15813099F486ED98E00E940B4080EBDB +:10C4A00098E00E940B4083E698E00E940B40A4961F +:10C4B0001FAEA497A5961FAEA5973CC010922B1552 +:10C4C000F6CF8091060185FD1FC02ADA1092990DE2 +:10C4D000809102018F7D8093020180916C0D90917B +:10C4E0006D0DA0916E0DB0916F0DB0588093660FD9 +:10C4F0009093670FA093680FB093690F60E070E0AE +:10C5000084EB92E40E94D62C8091620F9091630F8D +:10C51000A091640FB091650F892B8A2B8B2B51F45E +:10C520001092990DE3E6F3E0FF93EF930E94723FC0 +:10C530000F900F908091990D8823E1F0C2CFE92FE1 +:10C54000F0E0E458F04F80819F5F903809F490E06C +:10C550009093FC0F8F3F09F477C58A3091F08D30AE +:10C5600081F0A596BFADA597BB2309F439C58932E3 +:10C5700009F42FC59091FC0F8091FD0F9813DFCF28 +:10C5800063C502E814E1A4963FADA497E32FF0E061 +:10C59000EE57FB4E10820E94B53380912A1581110F +:10C5A00011C58AE0D1011D928A95E9F78091821424 +:10C5B000843209F076C481E08DAF80918314833496 +:10C5C00081F034F4882351F0843209F06FC209C03D +:10C5D000873439F0883509F069C203C088E696E0EF +:10C5E00054C39091841491114EC4833409F42DC224 +:10C5F0001CF4843241F04DC4873409F46AC1883593 +:10C6000009F440C246C480912B15887109F03DC4DD +:10C6100084E696E00E940B4080910B150E94FD3F3E +:10C620008BE496E00E940B4080910E150E94FD3F26 +:10C630008DE296E00E940B4080910C150E94FD3F18 +:10C6400084E196E00E940B4080910C150E94084006 +:10C650008DE096E00E940B4080910D150E94FD3FF9 +:10C6600085EF95E00E940B4080910D150E940840D7 +:10C670008EEE95E00E940B408091181582FB882772 +:10C6800080F90E94FD3F8DEC95E00E940B40809167 +:10C69000181586FB882780F90E94FD3F8DEA95E0FA +:10C6A0000E940B4080911815881F8827881F0E94C0 +:10C6B000FD3F8DE895E00E940B4080910F150E9490 +:10C6C000FD3F87E795E00E940B4080910F150E9487 +:10C6D00008408FE695E00E940B4060911015709124 +:10C6E000111580911215909113150E94A23F8FE4AD +:10C6F00095E00E940B406091141570911515809182 +:10C700001615909117150E94A23F84E395E00E94B0 +:10C710000B408091181581700E94FD3F87E195E0E4 +:10C720000E940B408091181585FB882780F90E9494 +:10C73000FD3F8CEF94E00E940B408091181583FB25 +:10C74000882780F90E94FD3F81EE94E00E940B4013 +:10C7500080911815829581700E94FD3F85EC94E0D0 +:10C760000E940B40809119150E94FD3F8BEA94E0D6 +:10C770000E940B40809119150E94084083EA94E0C2 +:10C780000E940B4060911A1570911B1580911C1529 +:10C7900090911D150E94A23F86E894E00E940B40F4 +:10C7A00060911E1570911F15809120159091211593 +:10C7B0000E94A23F89E694E00E940B4080912215DE +:10C7C0000E94FD3F8AE494E00E940B406091241592 +:10C7D0007091251580912615909127150E94A23FF2 +:10C7E00081E394E00E940B4010E034E6D32E2BED61 +:10C7F000E22E24E1F22E00E08FE294E00E940B4052 +:10C80000802F8D0D0E94FD3F8DE294E00E940B4031 +:10C81000123091F01330E1F0113031F0F701608106 +:10C820007181828193811CC0D7011C966D917D918D +:10C830008D919C911F9714C020E030E041E655E4B3 +:10C84000F701608D718D828D938D0E94887208C072 +:10C85000F70184A195A1A6A1B7A1BC01CD01905873 +:10C860000E94A23F8AE294E00E940B40013029F02E +:10C87000023031F088E294E005C086E294E002C024 +:10C8800084E294E00E940B40123051F0133059F0D2 +:10C89000113019F08AE194E008C088E094E005C006 +:10C8A00087EF93E002C087EE93E00E940B4083EE97 +:10C8B00093E00E940B400F5FF4E0EF0EF11C033099 +:10C8C00009F09ACF2AE0D20E1F5F3CE8D3128FCF37 +:10C8D000E0C281EE93E00E940B408091811582308E +:10C8E00091F038F4882361F08130A9F48BED93E066 +:10C8F0000CC0833069F0883071F481ED93E005C09D +:10C900008EED93E002C088ED93E00E940B400CC0D6 +:10C9100085ED93E0FACF8CEC93E00E940B40809180 +:10C92000811582500E94FD3F89EC93E00E940B40EC +:10C93000809187158A5C0E94FD3F8091851581302A +:10C9400049F028F0823051F48AEB93E005C084EC82 +:10C9500093E002C08FEB93E00E940B40809183151F +:10C96000811103C085EB93E002C080EB93E00E944D +:10C970000B4080918415811103C08BEA93E002C0C3 +:10C9800086EA93E00E940B4080918215813019F471 +:10C9900081EA93E002C08CE993E00E940B40809111 +:10C9A0008815813049F028F0823051F480E993E015 +:10C9B00005C088E993E002C084E993E00E940B403F +:10C9C00080918A15813031F040F0823051F488E84E +:10C9D00093E005C08CE893E002C084E893E00E94F5 +:10C9E0000B4080918915882329F0823039F48CE737 +:10C9F00093E002C080E893E00E940B4089E793E057 +:10CA00000E940B40809193150E94FD3F86E793E0C2 +:10CA10000E940B4060918F15709190158091911537 +:10CA2000909192150E94A43F83E793E00E940B40EF +:10CA300060918B1570918C1580918D1590918E154C +:10CA40000E94A43F8FE693E020C180912B15823095 +:10CA500049F40E94DD4586ED98E00E940B408DE888 +:10CA600098E00BC0811111C282E080932B1586EDF6 +:10CA700098E00E940B4086E998E00E940B4083E614 +:10CA800098E003C180912B15813009F002C286ED38 +:10CA900098E00E940B408EE998E00E940B4083E6EC +:10CAA00098E00E940B4010922B15F3C190912B152A +:10CAB000923008F0EAC1893409F4C5C034F48332F5 +:10CAC00059F0883409F480C064C18E3409F436C149 +:10CAD000823509F4F9C05DC182E08DAF8091841484 +:10CAE0008111D1C110E0BE016F5F7F4F812F0E9485 +:10CAF000373D811104C087E00E940233CAC18CE631 +:10CB000093E00E940B40163029F0173041F486E67E +:10CB100093E002C089E693E00E940B4004C086E3E4 +:10CB2000810F0E94FD3F84E693E00E940B40CE01FE +:10CB300001967C0100E0D7016D917D918D919D91D1 +:10CB40007D010E94B23F023019F082E693E002C0FC +:10CB50008EE593E00E940B400F5F033061F71F5F8B +:10CB6000183009F688E593E00E940B4090EBE92E1F +:10CB700095E1F92E10E0F701619171918191919108 +:10CB80007F010E94B23F123019F086E593E002C0A7 +:10CB900082E593E00E940B401F5F133061F78CE445 +:10CBA00093E00E940B406091BC157091BD1580917F +:10CBB000BE159091BF150E94B23F88E493E00E9499 +:10CBC0000B400E94623365C18091181584FF59C1E2 +:10CBD00084E080932B1517D984E00E94265D83E0C2 +:10CBE0000E94265D0E94B53380912A15811102C0F2 +:10CBF00027D914D980912A1581114BC110922B1578 +:10CC00000E94983610E0812F0E94655B811102C05E +:10CC100087E013C080918214882389F082E894E130 +:10CC20000E941A4082E894E10E948805811105C0A3 +:10CC30008BED99E00E940B4002C00E9402331F5FFF +:10CC4000123009F726C182E08DAF809184148111E2 +:10CC50001FC040E550E06EEA7BE082E894E15BD9DA +:10CC6000892B49F41092821440E550E062E874E1A7 +:10CC70008EEA9BE00DD988E393E00E940B4082E8A6 +:10CC800094E10E941A4084E393E00E940B4001C1AA +:10CC900093E09DAF8D3309F0F6C083E0282F30E09C +:10CCA000F901EE57FB4E9081D901A158BB4E9C93E0 +:10CCB0008F5F90819111F2CF8DAF40E550E062E837 +:10CCC00074E18EEA9BE0ABC082E08DAF809184146A +:10CCD000833509F0D8C083E08DAF80918514843509 +:10CCE00009F0D1C084E08DAF809186148D3309F0B6 +:10CCF000CAC0809188148111C6C085E08DAF809133 +:10CD00008714843239F08A3239F0833209F0BBC09B +:10CD100082E003C081E001C08FEF0E94583D86EDA4 +:10CD200098E00E940B4087E698E00E940B4083E663 +:10CD300098E00E940B400E94DD45ABC082E08DAFC1 +:10CD400080918414811121C010E0812F0E94655BC5 +:10CD5000811104C087E00E94023313C081E393E095 +:10CD60000E940B40812F0E94FD3F8FE293E00E94C2 +:10CD70000B4082E894E10E941A408CE293E00E940A +:10CD80000B401F5F123009F784C091117EC011E083 +:10CD900001C010E0AE01475D5F4FBE01635C7F4F95 +:10CDA00082E894E10E941D45811102C082E076C0B4 +:10CDB000EDAD81E08E0F8DAFF0E0EE57FB4E908130 +:10CDC0009D3309F060C0112361F1482F50E0282FF6 +:10CDD00030E0D901AE57BB4E9C91241B350BF901B5 +:10CDE000EE57FB4E90838F5F9C919111F0CF8DAFEA +:10CDF00082E894E10E948805811149C069A57AA55D +:10CE00008BA59CA50E9488750E94F572F1E56F9F25 +:10CE1000C001112440E550E062E874E1955F38D824 +:10CE200038C0AE014F5F5F4FBE01635C7F4F82E849 +:10CE300094E10E941D45882309F4B8CFEDADF0E0E0 +:10CE4000EE57FB4E808181111EC089A49AA4ABA429 +:10CE5000BCA420E030E04FE753E4C501B4010E94D8 +:10CE60009F74181684F0C980DA80EB80FC80C501BD +:10CE7000B4010E94F572862FB701A6010E94353CCD +:10CE800006C085E00BC083E009C088E007C08111BF +:10CE900005C08BED99E00E940B4094C00E940233C4 +:10CEA00091C08332D1F43F922F928BE793E09F930E +:10CEB0008F931F930F930E947976F10101900020C8 +:10CEC000E9F7BF01621973096E577B4E0F900F90FF +:10CED0000F900F900F900F900BC0873439F08D3466 +:10CEE00029F0803519F0833509F06CC062E874E1EF +:10CEF000DB018C91803511F0833509F58FEA9CE0D8 +:10CF00000E9444768D89882391F03F922F9283E886 +:10CF100093E09F938F9383EE9CE09F938F930E9467 +:10CF20004B760F900F900F900F900F900F9082E321 +:10CF3000E2E8F4E1DF011D928A95E9F743C08091B0 +:10CF4000AE04843148F087E893E09F938F930E946A +:10CF5000723F0F900F9036C00091AC04B6E6B09FC0 +:10CF600080011124C8018A549B4F0E9444768D8908 +:10CF7000882391F03F922F9283E893E09F938F93C1 +:10CF800006511B4F1F930F930E944B760F900F90EB +:10CF90000F900F900F900F9082E3E2E8F4E1DF0131 +:10CFA0001D928A95E9F78091AC04833120F48F5F5C +:10CFB0008093AC0402C01092AC048091AE048F5FE9 +:10CFC0008093AE04A4961FAEA497A5961FAEA59716 +:10CFD0003BC0B13009F0CECAA5961FAEA597CACA0C +:10CFE000813208F4C7CA8F3209F4C4CA883211F1F9 +:10CFF0008B3329F1A496EFADA497EF3438F08BE092 +:10D000000E940233A4961FAEA497B4CAA496FFADA3 +:10D01000A4972F2F30E04F2F4F5F9FE9980FF90112 +:10D02000EE57FB4E9A3108F480528083A4964FAF9E +:10D03000A497A0CA21E0A5962FAFA5979BCA32E07E +:10D04000A5963FAFA59796CA8091AF0C882399F01B +:10D050008FEA9CE00E9488058093E10C63EE7CE0FF +:10D060000E94822A81E08093E20C82E3AFEABCE076 +:10D070001D928A95E9F78091950D81113FC08091AD +:10D08000AE048823D9F180919A0D8823B9F180915B +:10D090009B0D882399F10091AD04B6E6B09F800105 +:10D0A00011240A541B4FC8010E948805F80182AB65 +:10D0B000F090AD04F6E6FF9D80011124B8016651A1 +:10D0C0007B4F0A541B4FD801D2968C910E94822A22 +:10D0D00081E0F80183AB82E3D8011D928A95E9F7DC +:10D0E000B2E1BF1520F0F394F092AD0402C01092AB +:10D0F000AD048091AE0481508093AE0480915A0DAE +:10D1000090915B0D8130910571F068F0823091054E +:10D1100069F0039789F5A59882E390E00E94124593 +:10D1200082E090E025C01092AF0426C08091AF0449 +:10D130008F5F8093AF04A59A80910301887739F0BF +:10D140001092AF049C9A9D9AA498A59A0AC082E373 +:10D1500090E00E9412458091AF048A3038F010921E +:10D16000AF0410925B0D10925A0D06C083E090E060 +:10D1700090935B0D80935A0D0E94A8330E94B533A3 +:10D1800080912A15811153C98091E20C882369F09E +:10D1900083EE9CE00E941A4082E3E3EEFCE0DF01B4 +:10D1A0001D928A95E9F71092E20C80912B15882345 +:10D1B00009F4E6C08091960D882309F41AC11092F3 +:10D1C000960D6D961CAE1DAE1EAE1FAE6D97699688 +:10D1D0001CAE1DAE1EAE1FAE699765961CAE1DAE91 +:10D1E0001EAE1FAE659784E16F96EEADFFAD6F97F3 +:10D1F000282F11922A95E9F7A196AEADBFADA19760 +:10D20000E82F1D92EA95E9F7D101E82F1D92EA95E2 +:10D21000E9F7A396AEADBFADA3971D928A95E9F746 +:10D2200080E090E00E94044FA9966CAF7DAF8EAF76 +:10D230009FAFA99781E090E00E94044FAD966CAF3C +:10D240007DAF8EAF9FAFAD9782E090E00E94044F1C +:10D250006B017C0120E030E040E05FE36091000280 +:10D260007091010280910202909103020E94A771C5 +:10D2700020E030E040E05FE30E94DA7420E030E03C +:10D2800044E353E40E94DA749B01AC0160E070E077 +:10D2900084E393E40E94A7712B013C0120E030E07D +:10D2A00044EB52E4C701B6010E94A771FE01EF5A98 +:10D2B000FF4F4F019E012B5A3F4F5901DE01A75AE4 +:10D2C000BF4F6D017B018C01AD962CAD3DAD4EADD8 +:10D2D0005FADAD97A9966CAD7DAD8EAD9FADA997B5 +:10D2E0000E94784CA401B501C6010E94194A6D96AE +:10D2F0006CAD7DAD8EAD9FAD6D978E01035C1F4F04 +:10D3000024E045E0A9D569966CAD7DAD8EAD9FADAD +:10D3100069970451110924E045E09ED565966CADEE +:10D320007DAD8EAD9FAD6597810124E045E094D53C +:10D330008E010F5F1F4F24E045E0C301B2018CD581 +:10D340001F930F933F922F92A196FFADA197FF934A +:10D35000A0962FADA0972F936F963FAD6F973F93F9 +:10D360006E968FAD6E978F9389E993E09F938F931D +:10D370000E94723F0FB6F894DEBF0FBECDBF39C01A +:10D3800080919A0D882309F415CF80919B0D8823F5 +:10D3900009F410CF04E110E082E3B82EA090AE0CA7 +:10D3A000B6E6BA9DC0011124FC01EA54FB4F7F018F +:10D3B00023A9222309F4FECE9C0126513B4F69018B +:10D3C000C9010E941A40D601EB2D1D92EA95E9F79A +:10D3D000D701D3961C92B2E1BA1528F081E08A0DEC +:10D3E0008093AE0C02C01092AE0C01501109B1F640 +:10D3F000E1CE82B301E083FB882780F980279091FA +:10D40000B5048917D9F08AE090E00E94124512B362 +:10D4100013FB112710F910278091B504181771F02C +:10D420001F921F938DEA93E09F938F930E94723F08 +:10D430001093B5040F900F900F900F908091B1044E +:10D440009091B204A091B304B091B4048F3F9105C0 +:10D45000A105B10509F060F40196A11DB11D8093ED +:10D46000B1049093B204A093B304B093B40424C065 +:10D470001092B1041092B2041092B3041092B4044A +:10D480008BE30E94075C11E08536910508F410E0FB +:10D490008091B004811781F01F921F9388EB93E075 +:10D4A0009F938F930E94723F1093B00410939C0D32 +:10D4B0000F900F900F900F9080912B15811112C03B +:10D4C0008091970D882371F08091980D882351F0F9 +:10D4D00080EC93E09F938F930E94723F1092980D7F +:10D4E0000F900F9080919D0D882309F423C880919F +:10D4F0002B15811128C18091940D8F3009F023C123 +:10D5000080919C0D882309F41EC18091150D909186 +:10D51000160D9C012F5F3F4F3093160D2093150D74 +:10D5200045970CF407C821961CAE1DAE1EAE1FAE6B +:10D53000219719A61AA61BA61CA61D8A1E8A1F8A39 +:10D54000188EE090900DF090910D0091920D109139 +:10D55000930D20918C0D30918D0D40918E0D509139 +:10D560008F0D6091880D7091890D80918A0D909139 +:10D570008B0D4101FE01B9965F01DE01DD966D0163 +:10D580000E94C24A80E090E00E94044F4B015C017F +:10D5900081E090E00E94044F6B017C0182E090E00A +:10D5A0000E94044F2B013C01A501940121966CAD12 +:10D5B0007DAD8EAD9FAD2197CAD69F7720E030E03C +:10D5C00040E05FE30E949F7418163CF1A7019601AA +:10D5D00069A57AA58BA59CA5BAD69F7720E030E0F7 +:10D5E00040E05FE30E949F741816BCF0A301920113 +:10D5F0006D897E898F89988DAAD620E030E044EB32 +:10D6000052E4A6D69F7720E030E040E05FE30E943E +:10D610009F74181614F00C949A628EE1EAE2F5E118 +:10D62000DF011D928A95E9F70E9426400E94205F43 +:10D630008092700D9092710DA092720DB092730D48 +:10D64000C092740DD092750DE092760DF092770D28 +:10D650004092780D5092790D60927A0D70927B0D08 +:10D6600080912E1590912F15A0913015B091311504 +:10D6700080937C0D90937D0DA0937E0DB0937F0DD4 +:10D680008091321590913315A0913415B0913515D4 +:10D690008093800D9093810DA093820DB093830DA4 +:10D6A0008091361590913715A0913815B0913915A4 +:10D6B0008093840D9093850DA093860DB093870D74 +:10D6C0008CE0A396EEADFFADA39711928A95E9F792 +:10D6D0008091880D9091890DA0918A0DB0918B0D4C +:10D6E00089839A83AB83BC8380918C0D90918D0D3F +:10D6F000A0918E0DB0918F0D8D839E83AF83B887DF +:10D700008091900D9091910DA091920DB091930DFB +:10D7100089879A87AB87BC87AE01475F5F4FBE01A1 +:10D720006B5F7F4FCE0101960E94194A00E020E016 +:10D7300030E048E452E4BE016F5F7F4F80E00E941A +:10D7400008460C949A621092160D1092150D0C94C6 +:10D750009A62CF930E94A833C9E20E94B5338091A8 +:10D760002A15811111C08091C9139091CA1398177D +:10D7700039F0C89FC001112489519F4E892B69F748 +:10D7800080912B15883049F3CF910895CF93209144 +:10D7900075153091761540917715509178156091F7 +:10D7A00098157091991580919A1590919B15A9D60D +:10D7B000811126C02091791530917A1540917B1501 +:10D7C00050917C1560919C1570919D1580919E15CE +:10D7D00090919F1596D6811113C0C1E020917D15BF +:10D7E00030917E1540917F15509180156091A01564 +:10D7F0007091A1158091A2159091A31582D68111E7 +:10D80000C0E08C2FCF910895CF92DF92EF92FF92DC +:10D810000F93CF93DF9330912B15323009F482C0F0 +:10D82000C02FD22F042F6B017C0193DF109246157D +:10D83000109228158091181587FD03C080E1809310 +:10D840002815DD2331F09091281580E189278093F8 +:10D85000281589B1807190912815891751F09FB7CB +:10D86000F894809129158061809329159FBF0E94AB +:10D87000B53380912A15811155C0A701960165E73E +:10D8800075E181E00E94084681E08093DA149FB739 +:10D89000F8948091D91482608093D9149FBF0E941C +:10D8A000B53380912A1581113DC080912B158111CE +:10D8B000F6CF8091DA148130A9F4CC2351F08CE0BA +:10D8C000EEE2F5E1AAE3B5E101900D928A95E1F768 +:10D8D0000CC09FB7F8948091291580618093291519 +:10D8E0009FBF03C081E0809346151092DA140E9416 +:10D8F000B53380912A15811115C00E946A590E9482 +:10D9000037400E9426406EE275E185E795E10E946E +:10D91000E54FDF91CF910F91FF90EF90DF90CF9087 +:10D920000C946233DF91CF910F91FF90EF90DF90D5 +:10D93000CF9008952F923F924F925F926F927F9275 +:10D940008F929F92AF92BF92CF92DF92EF92FF920F +:10D950000F931F93CF93DF93CDB7DEB7E1970FB649 +:10D96000F894DEBF0FBECDBF6D837E838F83988713 +:10D970002F87388B498B5A8B0D8BAD868B8A24E091 +:10D98000E29E80011124C80188569A4E9F8B8E8B8F +:10D99000D801A95ABA4EB98FA88F8D909D90AD909D +:10D9A000BC90FC012081318142815381C501B401C9 +:10D9B000CFD46A8F7B8F8C8F9D8FF4E0CF9E100128 +:10D9C0001124910128563A4E3F8F2E8FC101895A5A +:10D9D0009A4E99A388A3DC01CD90DD90ED90FC9048 +:10D9E000F9012081318142815381C701B601B0D450 +:10D9F0006AA37BA38CA39DA32401350177FA7094BD +:10DA000077F87094D701C601B05889839A83AB83A5 +:10DA1000BC83F801EB58FA4E2A8D3B8D4C8D5D8D01 +:10DA2000608171818281938192D44B015C01F1010B +:10DA3000EB58FA4E2AA13BA14CA15DA160817181F6 +:10DA40008281938184D46B017C01A5019401C3017F +:10DA5000B201B0D769877A878B879C87A701960127 +:10DA600069817A818B819C81A5D79B01AC016985F5 +:10DA70007A858B859C856CD469877A878B879C8710 +:10DA8000A7019601C301B20195D76B017C01A501E5 +:10DA9000940169817A818B819C818CD79B01AC0137 +:10DAA000C701B60154D429853A854B855C85C3D41A +:10DAB0006B017C019B89992389F02DEB37E346E0CC +:10DAC00055EBC701B6013BD787FD1AC02BED3FE0F0 +:10DAD00049EC50E4C701B6013AD410C02DEB37E34E +:10DAE00046E055E3C701B6010CD518164CF02BEDF6 +:10DAF0003FE049EC50E4C701B6012AD46B017C0138 +:10DB00008090141590901515A0901615B0901715CB +:10DB10002D813E814F815885CA01B90119D4A501D3 +:10DB2000940115D4A501940145D7B1D74B015C01EF +:10DB300020E030E040E05FE3C701B6013BD72D8134 +:10DB40003E814F81588536D79F77A5019401E0D457 +:10DB5000B5D54BD57C8B6B8BDB01AB2B09F459C155 +:10DB60004B01A12CB12CBD89BB2371F0C501B401BF +:10DB700068D59B01AC016F85788989899A891AD704 +:10DB80006F87788B898B9A8BC501B4015AD54B016D +:10DB90005C019B01AC01C701B601BAD46D837E83E1 +:10DBA0008F839887FD85E4E0FE9FC00111249C01CE +:10DBB00028563A4E3E872D87FC01EB58FA4ED90184 +:10DBC0002D913D914D915C91608171818281938114 +:10DBD000BED3A50194019CD46EA77FA788AB99AB57 +:10DBE0002D813E814F815885CA01B901E3D69B0141 +:10DBF000AC0160E070E080E090E4A9D36B017C01AF +:10DC00002BEA3AEA4AE25EE36D817E818F81988554 +:10DC1000D1D64B015C0120E030E040E850E4C70180 +:10DC2000B60196D39B01AC01C501B401C3D6698787 +:10DC30007A878B879C8720E030E040E05FE3C70174 +:10DC4000B601B8D66EA37FA388A799A710E02224B7 +:10DC50002394312CEB89FC89E215F30509F4D9C032 +:10DC60001C3008F03AC029813A814B815C816EA159 +:10DC70007FA188A599A59ED66B017C01A301920185 +:10DC800069857A858B859C8595D6A701960160D399 +:10DC90007B01082FD92EA30192016EA17FA188A537 +:10DCA00099A588D64B015C0129813A814B815C8121 +:10DCB00069857A858B859C857DD69B01AC01C501E4 +:10DCC000B40145D32B013C011F5FC701A02FBD2D1F +:10DCD00089839A83AB83BC835BC0B10180E090E011 +:10DCE000B0D42D813E814F81588564D66B017C0173 +:10DCF0000CD469837A838B839C83C701B601BDD61C +:10DD00004B015C01E88DF98DC080D180E280F38009 +:10DD1000F7FAF094F7F8F094A8A1B9A18D919D912C +:10DD20000D90BC91A02D8AA79BA7ACA7BDA7A7016A +:10DD3000960169817A818B819C813CD62B013C01C3 +:10DD40002AA53BA54CA55DA5C501B40133D69B0111 +:10DD5000AC01C301B201FCD22B013C01A701960129 +:10DD6000C501B40127D66B017C012AA53BA54CA5B2 +:10DD70005DA569817A818B819C811CD69B01AC0158 +:10DD8000C701B601E4D269837A838B839C8310E058 +:10DD9000A30192016A8D7B8D8C8D9D8DD9D2EE89E8 +:10DDA000FF89608371838283938329813A814B81C8 +:10DDB0005C816AA17BA18CA19DA1CAD2AE8DBF8DD1 +:10DDC0006D937D938D939C9313972EA53FA548A9A2 +:10DDD00059A9ED85FE856081718182819381B8D2D8 +:10DDE000AD85BE856D937D938D939C9313970D891F +:10DDF0002F85388949895A8968E975E181E00E944F +:10DE0000084680912A1581110EC0BFEF2B1A3B0ADC +:10DE100021CF0D892F85388949895A8965E775E1B0 +:10DE200081E00E940846E1960FB6F894DEBF0FBE6F +:10DE3000CDBFDF91CF911F910F91FF90EF90DF90B9 +:10DE4000CF90BF90AF909F908F907F906F905F909A +:10DE50004F903F902F900895EF920F931F93CF9381 +:10DE6000DF93E80147FD02C034E001C034E1042E35 +:10DE7000000C550B57FF03C0519541955109E32EF6 +:10DE8000022F242FAE0107D0CE01DF91CF911F9139 +:10DE90000F91EF9008958F929F92AF92BF92CF9281 +:10DEA000DF92EF92FF920F931F93CF93DF93CDB743 +:10DEB000DEB729970FB6F894DEBF0FBECDBF6A015B +:10DEC000122FB02E2BE3201720F0FF24F394F00E36 +:10DED00002C02CE3F22E0F2D27E0AE014F5F5F4F03 +:10DEE00050D1BC014981842F8970813031F0E1FC2F +:10DEF00006C0E0FE06C090E205C09DE203C09BE2C2 +:10DF000001C090E05E2D507143FF3CC0911102C0F2 +:10DF100083E001C084E0811718F4212F281B01C081 +:10DF200020E051110BC0F601822F30E2882319F056 +:10DF300031938150FBCFC20ED11C20E0992329F0F0 +:10DF4000D6019C93F60131966F01C6010396E2FE5D +:10DF50000AC03EE4D6013C9341E411964C931197DC +:10DF600012963C9306C03EE6F601308341E64183BB +:10DF70003283FC01322F40E2332309F442C0419343 +:10DF80003150FACF42FF44C0911102C083E001C07A +:10DF900084E0811718F4212F281B01C020E05111C3 +:10DFA0000BC0F601822F30E2882319F031938150A3 +:10DFB000FBCFC20ED11C20E0992329F0D6019C93FF +:10DFC000F60131966F01C6010396E2FE0BC039E4FB +:10DFD000D6013C933EE411963C93119736E4129699 +:10DFE0003C9307C039E6F60130833EE6318336E6DE +:10DFF0003283FC01322F40E2332319F04193315038 +:10E00000FBCFFC01E20FF11D10828EEF9FEFA6C047 +:10E0100021E030E0911102C020E030E01616170632 +:10E020001CF4FB01319602C0E1E0F0E02E0F3F1F2F +:10E03000BB2021F0EB2DF0E0319602C0E0E0F0E0F3 +:10E040002E0F3F1FE12FF0E02E173F071CF4121B8D +:10E05000212F01C020E08E2D887159F4F601822F06 +:10E0600030E2882319F031938150FBCFC20ED11CCE +:10E0700020E0992329F0D6019C93F60131966F0197 +:10E0800051110BC0F601822F90E3882319F0919370 +:10E090008150FBCFC20ED11C20E00F2D060F9A81BC +:10E0A000342F307144FF03C0913309F4015010162E +:10E0B00024F4093018F008E001C001E0AB0177FF5B +:10E0C00002C040E050E0FB01E41BF50BA1E0B0E032 +:10E0D000AC0FBD1FEA0FFB1F8EE2A82E4B01801A6A +:10E0E00091080B2D10E01195019511094F3FBFEFDD +:10E0F0005B0721F4D601AC9211966D016417750788 +:10E100002CF08416950614F4818101C080E34150FF +:10E1100051093196D60111967D014017510724F01F +:10E12000D6018C936701E2CF6417750739F49633F3 +:10E1300020F4953319F4311101C081E3F601808395 +:10E14000F701822F90E2882319F091938150FBCF41 +:10E15000F701E20FF11D108280E090E029960FB6E2 +:10E16000F894DEBF0FBECDBFDF91CF911F910F910D +:10E17000FF90EF90DF90CF90BF90AF909F908F90E7 +:10E180000895283008F027E03327DA01990F311D70 +:10E1900087FD916000966105710539F432602E5F4C +:10E1A0003D9330E32A95E1F708959F3F30F08038A2 +:10E1B0007105610509F03C5F3C5F3D93913008F0CB +:10E1C0008068911DDF93CF931F930F93FF92EF927F +:10E1D000192F987F9695E92F96959695E90FFF2729 +:10E1E000EA59FD4F99273327EE24FF24A701E701C1 +:10E1F00005900894079428F4360FE71EF81E491F6F +:10E20000511D660F771F881F991F0694A1F705906F +:10E21000079428F4E70EF81E491F561FC11D770FFB +:10E22000881F991F661F0694A1F70590079428F48C +:10E23000F80E491F561FC71FD11D880F991F661F53 +:10E24000771F0694A1F70590079420F4490F561FF5 +:10E25000C71FD81F990F661F771F881F0694A9F73D +:10E2600084911095177041F0D695C79557954795AD +:10E27000F794E7941A95C1F7ECE0F2E068941590F2 +:10E28000159135916591959105907FE27395E1180F +:10E29000F10A430B560BC90BD009C0F7E10CF11E74 +:10E2A000431F561FC91FD01D7EF4703311F48A9589 +:10E2B000E6CFE894015030F0080F0AF40027021767 +:10E2C00008F4202F2395022F7A3328F079E37D93E9 +:10E2D0002A95E9F710C07D932A9589F606949795BB +:10E2E0006795379517951794E118F10A430B560B6C +:10E2F000C90BD00998F023957E9173957A3308F075 +:10E3000070E37C932013B8F77E9170617D9330F0B9 +:10E31000839571E37D9370E32A95E1F71124EF90E3 +:10E32000FF900F911F91CF91DF91992787FD9095D5 +:10E3300008959F939F77D5D10F9000203AF490587D +:10E34000A2EA2AED3FE049E450E413D096C25058C7 +:10E35000BB27AA270ED091C25AD230F05FD220F04C +:10E3600031F49F3F11F41EF42AC20EF4E095E7FB4E +:10E37000F7C1E92FA4D280F3BA17620773078407A5 +:10E38000950718F071F49EF5D3C20EF4E0950B2EAC +:10E39000BA2FA02D0B01B90190010C01CA01A001F7 +:10E3A0001124FF27591B99F0593F50F4503E68F152 +:10E3B0001A16F040A22F232F342F4427585FF3CF93 +:10E3C000469537952795A795F0405395C9F77EF464 +:10E3D0001F16BA0B620B730B840BBAF09150A1F0AD +:10E3E000FF0FBB1F661F771F881FC2F70EC0BA0F33 +:10E3F000621F731F841F48F4879577956795B795BB +:10E40000F7959E3F08F0B3CF9395880F08F09927B2 +:10E41000EE0F979587950895FAD158F080E891E02E +:10E4200009F49EEFFBD128F040E851E059F45EEF8B +:10E4300009C0C5C17DC2E92FE07841D268F3092E39 +:10E44000052AC1F3261737074807590738F00E2E5B +:10E4500007F8E02569F0E025E0640AC0EF6307F8FB +:10E46000009407FADB01B9019D01DC01CA01AD018D +:10E47000EF935DD002D20AD05F91552331F02BED9E +:10E480003FE049E450FD49EC63CF0895DF93DD2779 +:10E49000B92FBF7740E85FE31616170648075B07FA +:10E4A00010F4D92F50D29F938F937F936F932DD3D6 +:10E4B000E8E9F1E087D1E1D12F913F914F915F9150 +:10E4C00085D2DD2349F09058A2EA2AED3FE049ECDD +:10E4D0005FE3D0785D274DDFDF91CFC112D280F0AE +:10E4E0009F3740F491110EF424C260E070E080E8A0 +:10E4F0009FE3089526F01B16611D711D811D36C115 +:10E5000050C10AD108F481E0089590D1E395C6C1C5 +:10E510000CD0B3C183D140F07AD130F021F45F3F09 +:10E5200019F01EC1511105C24AC1C9D198F39923EE +:10E53000C9F35523B1F3951B550BBB27AA276217C7 +:10E540007307840738F09F5F5F4F220F331F441F0C +:10E55000AA1FA9F333D00E2E3AF0E0E830D0915044 +:10E560005040E695001CCAF729D0FE2F27D0660F31 +:10E57000771F881FBB1F261737074807AB07B0E870 +:10E5800009F0BB0B802DBF01FF2793585F4F2AF086 +:10E590009E3F510568F0E4C0CCC15F3FECF3983E6C +:10E5A000DCF3869577956795B795F7959F5FC9F7E3 +:10E5B000880F911D9695879597F90895E1E0660F6C +:10E5C000771F881FBB1F621773078407BA0720F0E5 +:10E5D000621B730B840BBA0BEE1F88F7E09508954E +:10E5E00004D06894B111A5C1089571D188F09F57E6 +:10E5F00090F0B92F9927B751A0F0D1F0660F771F8F +:10E60000881F991F1AF0BA95C9F712C0B13081F06E +:10E610008FD1B1E008958CC1672F782F8827B85F1C +:10E6200039F0B93FCCF3869577956795B395D9F7CF +:10E630003EF490958095709561957F4F8F4F9F4FD9 +:10E640000895E89409C097FB3EF4909580957095E5 +:10E6500061957F4F8F4F9F4F9923A9F0F92F96E92E +:10E66000BB279395F695879577956795B795F111A3 +:10E67000F8CFFAF4BB0F11F460FF1BC06F5F7F4F40 +:10E680008F4F9F4F16C0882311F096E911C0772352 +:10E6900021F09EE8872F762F05C0662371F096E85B +:10E6A000862F70E060E02AF09A95660F771F881F2A +:10E6B000DAF7880F9695879597F9089522D180F01B +:10E6C0009F3740F491110EF034C160E070E080E8B3 +:10E6D0009FEB089526F41B16611D711D811D46C018 +:10E6E00060C0DF93CF931F930F938B01EC01E5EC98 +:10E6F000F1E068D0C2D09801AE018B01EC0160E07E +:10E7000070E080E89FE323DEC2D19801AE010F9153 +:10E710001F91CF91DF915AC1990F0008550FAA0B95 +:10E72000E0E8FEEF16161706E807F907C0F0121624 +:10E730001306E407F50798F0621B730B840B950B27 +:10E7400039F40A2661F0232B242B252B21F408957C +:10E750000A2609F4A140A6958FEF811D811D089519 +:10E7600097F99F6780E870E060E00895882371F46E +:10E77000772321F09850872B762F07C0662311F45A +:10E7800099270DC09051862B70E060E02AF09A9591 +:10E79000660F771F881FDAF7880F9695879597F988 +:10E7A00008959F3F31F0915020F4879577956795B4 +:10E7B000B795880F911D9695879597F908959FEFC6 +:10E7C00080EC0895DF93CF931F930F93FF92EF9206 +:10E7D000DF927B018C01689405C0DA2EEF01F6D040 +:10E7E000FE01E894A5912591359145915591AEF39F +:10E7F000EF01BFDDFE019701A801DA9479F7DF9000 +:10E80000EF90FF900F911F91CF91DF910895002419 +:10E810000A941616170618060906089500240A9485 +:10E8200012161306140605060895C9CF50D0E8F352 +:10E83000E894E0E0BB279F57F0F02AED3FE049EC79 +:10E8400006C0EE0FBB0F661F771F881F28F0B23A75 +:10E8500062077307840728F0B25A620B730B840BAC +:10E86000E3959A9572F7803830F49A95BB0F661F3E +:10E87000771F881FD2F7904896CF092E0394000C7B +:10E8800011F4882352F0BB0F40F4BF2B11F460FF4A +:10E8900004C06F5F7F4F8F4F9F4F0895EF93E0FF4E +:10E8A00006C0A2EA2AED3FE049EC5FEB62DDE5DF5E +:10E8B0000F90039401FC9058EDEEF1E03BC157FD41 +:10E8C0009058440F551F59F05F3F71F04795880FDE +:10E8D00097FB991F61F09F3F79F087950895121675 +:10E8E00013061406551FF2CF4695F1DF08C0161621 +:10E8F00017061806991FF1CF8695710561050894D2 +:10E900000895E5DFA0F0BEE7B91788F4BB279F386C +:10E9100060F41616B11D672F782F8827985FF7CF00 +:10E92000869577956795B11D93959639C8F30895A7 +:10E93000E894BB2766277727CB0197F90895ECDE8B +:10E9400008F48FEF08959B01AC0160E070E080E86F +:10E950009FE3DECDBCDF58F19E5758F19851A0F0EF +:10E96000E9F0983020F5092E9927660F771F881F48 +:10E97000991F0A94D1F712C0062E672F782F882787 +:10E98000985F11F4000C07C0993FB4F38695779512 +:10E9900067959395D9F7611D711D811D3EF4909582 +:10E9A0008095709561957F4F8F4F9F4F0895689424 +:10E9B000C0CFBECF0BD061CF2ADF28F02FDF18F0F9 +:10E9C000952309F0CDCEFBCE1124B3CF78DFA0F391 +:10E9D000959FD1F3950F50E0551F629FF001729FF4 +:10E9E000BB27F00DB11D639FAA27F00DB11DAA1F13 +:10E9F000649F6627B00DA11D661F829F2227B00D60 +:10EA0000A11D621F739FB00DA11D621F839FA00DEA +:10EA1000611D221F749F3327A00D611D231F849F3A +:10EA2000600D211D822F762F6A2F11249F57504091 +:10EA30008AF0E1F088234AF0EE0FFF1FBB1F661F2C +:10EA4000771F881F91505040A9F79E3F510570F0E5 +:10EA500087CE6FCF5F3FECF3983EDCF386957795DA +:10EA60006795B795F795E7959F5FC1F7FE2B880FE0 +:10EA7000911D9695879597F908959F93D7DE0F90EE +:10EA800007FCEE5F0BCF11F40EF499CE8ACE1FDF98 +:10EA9000D0F39923D9F3CEF39F57550B87FF43D07B +:10EAA0000024A0E640EA900180585695979528F4F6 +:10EAB000805C660F771F881F20F0261737074807EE +:10EAC00030F4621B730B840B202931294A2BA69545 +:10EAD00017940794202531254A2758F7660F771F8A +:10EAE000881F20F026173707480730F4620B730B96 +:10EAF000840B200D311D411DA09581F7B901842F94 +:10EB00009158880F9695879508959B01AC0152CF37 +:10EB1000F8DE20F09F3708F40CCF28CE42CEFCDD83 +:10EB2000880B990B089591505040660F771F881FEE +:10EB3000D2F708959F938F937F936F93FF93EF93F3 +:10EB40009B01AC0137DFEF91FF913CDE2F913F91AC +:10EB50004F915F912FCFDB018F939F9380D0BF9117 +:10EB6000AF91A29F800D911DA39F900DB29F900D1C +:10EB700011240895991B79E004C0991F961708F095 +:10EB8000961B881F7A95C9F780950895AA1BBB1B11 +:10EB900051E107C0AA1FBB1FA617B70710F0A61B9D +:10EBA000B70B881F991F5A95A9F780959095BC01BE +:10EBB000CD010895A1E21A2EAA1BBB1BFD010DC0B9 +:10EBC000AA1FBB1FEE1FFF1FA217B307E407F5071D +:10EBD00020F0A21BB30BE40BF50B661F771F881FF9 +:10EBE000991F1A9469F760957095809590959B018F +:10EBF000AC01BD01CF010895052E97FB16F40094DA +:10EC00000FD057FD05D0D6DF07FC02D046F408C070 +:10EC100050954095309521953F4F4F4F5F4F089548 +:10EC200090958095709561957F4F8F4F9F4F089578 +:10EC3000EE0FFF1F881F8BBF0790F691E02D1994F0 +:10EC4000A29FB001B39FC001A39F700D811D11242D +:10EC5000911DB29F700D811D1124911D0895F0DF4B +:10EC6000A59F900DB49F900DA49F800D911D112420 +:10EC70000895FB01DC010D900020E9F71197019048 +:10EC80000D920020E1F70895FB01DC0101900D9247 +:10EC90000020E1F708950F931F93CF93DF93CDB733 +:10ECA000DEB72E970FB6F894DEBF0FBECDBF0E892C +:10ECB0001F8986E08C831A8309838FEF9FE79E83E9 +:10ECC0008D83AE01465E5F4F688D798DCE010196D2 +:10ECD00059D0EF81F885E00FF11F10822E960FB604 +:10ECE000F894DEBF0FBECDBFDF91CF911F910F9182 +:10ECF0000895CF93DF93CDB7DEB72E970FB6F89474 +:10ED0000DEBF0FBECDBF85E08C838C899D899A8341 +:10ED10008983AE01485E5F4F6E897F89CE0101967F +:10ED2000E0D32E960FB6F894DEBF0FBECDBFDF91B5 +:10ED3000CF9108950F931F93CF93DF93CDB7DEB795 +:10ED40002E970FB6F894DEBF0FBECDBF8C0186E0C4 +:10ED50008C831A8309838FEF9FE79E838D83CE0177 +:10ED6000019610D0EF81F885E00FF11F10822E96EA +:10ED70000FB6F894DEBF0FBECDBFDF91CF911F91CC +:10ED80000F9108952F923F924F925F926F927F92D0 +:10ED90008F929F92AF92BF92CF92DF92EF92FF92AB +:10EDA0000F931F93CF93DF93CDB7DEB72B970FB69B +:10EDB000F894DEBF0FBECDBF6C017B018A01FC0160 +:10EDC00017821682838181FFBFC1CE0101963C016B +:10EDD000F6019381F70193FD859193FF81917F0166 +:10EDE000882309F4ADC1853239F493FD859193FFF1 +:10EDF00081917F01853221F4B60190E0F0D4E8CF13 +:10EE0000912C212C312CFFE1F315D8F08B3279F0C5 +:10EE100038F4803279F08332A1F4232D20611DC0B3 +:10EE20008D3261F0803369F4232D216016C0832D6B +:10EE30008260382EE32DE4603E2E2AC0F32DF86068 +:10EE40001DC037FC2DC020ED280F2A3040F08E3237 +:10EE5000B9F436FC75C1232D2064322E19C036FE5C +:10EE600006C08AE0989E200D1124922E11C0EAE07F +:10EE70002E9E200D1124222EF32DF0623F2E08C06D +:10EE80008C3621F4832D8068382E02C0883641F4F8 +:10EE9000F70193FD859193FF81917F018111B3CF9C +:10EEA000982F9F7D9554933028F40C5F1F4F9FE35C +:10EEB00099830DC0833631F0833771F0833509F0C3 +:10EEC00055C020C0F801808189830E5F1F4F8824C0 +:10EED0008394912C530112C02801F2E04F0E511C73 +:10EEE000F801A080B18036FE03C0692D70E002C039 +:10EEF0006FEF7FEFC5012AD44C018201F32DFF771C +:10EF00003F2E15C0280122E0420E511CF801A080BE +:10EF1000B18036FE03C0692D70E002C06FEF7FEF55 +:10EF2000C50109D44C01F32DF0683F2E820133FC5A +:10EF300019C0822D90E088169906A0F4B60180E2EF +:10EF400090E04DD42A94F5CFF50137FC859137FE3A +:10EF500081915F01B60190E042D421102A9421E012 +:10EF6000821A91088114910479F7E1C0843611F076 +:10EF7000893639F5F80137FE07C0608171818281D9 +:10EF800093810C5F1F4F08C060817181072E000CB8 +:10EF9000880B990B0E5F1F4FF32DFF763F2E97FFC7 +:10EFA00009C090958095709561957F4F8F4F9F4FC9 +:10EFB000F0683F2E2AE030E0A30166D4882E861840 +:10EFC00044C0853731F4232D2F7EB22E2AE030E065 +:10EFD00025C0932D997FB92E8F36C1F018F488354E +:10EFE00079F0AEC0803719F0883721F0A9C0E92F39 +:10EFF000E061BE2EB4FE0DC0FB2DF460BF2E09C033 +:10F0000034FE0AC0292F2660B22E06C028E030E068 +:10F0100005C020E130E002C020E132E0F801B7FE97 +:10F0200007C060817181828193810C5F1F4F06C090 +:10F030006081718180E090E00E5F1F4FA30124D4B6 +:10F04000882E8618FB2DFF773F2E36FE0DC0232D10 +:10F050002E7FA22E891458F434FE0BC032FC09C056 +:10F06000832D8E7EA82E05C0B82CA32C03C0B82CEF +:10F0700001C0B92CA4FE0FC0FE01E80DF11D808176 +:10F08000803321F49A2D997EA92E09C0A2FE06C0D4 +:10F09000B394B39404C08A2D867809F0B394A3FC8A +:10F0A00010C0A0FE06C0B21480F4280C922C9B184D +:10F0B0000DC0B21458F4B60180E290E090D3B3943E +:10F0C000F8CFB21418F42B1802C0982C212CA4FEEF +:10F0D0000FC0B60180E390E082D3A2FE16C0A1FC6F +:10F0E00003C088E790E002C088E590E0B6010CC05C +:10F0F0008A2D867851F0A1FE02C08BE201C080E229 +:10F10000A7FC8DE2B60190E06AD3891430F4B60111 +:10F1100080E390E064D39A94F8CF8A94F301E80DE9 +:10F12000F11D8081B60190E05AD38110F6CF2220E4 +:10F1300009F44ECEB60180E290E051D32A94F7CF85 +:10F14000F6018681978102C08FEF9FEF2B960FB655 +:10F15000F894DEBF0FBECDBFDF91CF911F910F910D +:10F16000FF90EF90DF90CF90BF90AF909F908F90E7 +:10F170007F906F905F904F903F902F90089520FD6B +:10F1800009C0FC0123FD05C022FF02C07383628316 +:10F1900051834083089544FD17C046FD17C0AB015D +:10F1A000BC01DA01FB01AA0FBB1FEE1FFF1F109469 +:10F1B000D1F74A0F5B1F6E1F7F1FCB01BA01660F8D +:10F1C000771F881F991F09C033E001C034E0660F24 +:10F1D000771F881F991F3150D1F7620F711D811D54 +:10F1E000911D08950F931F93CF93DF938C01C80156 +:10F1F000B8D2EC0197FD06C08BD2892BC1F7B801BC +:10F20000CE0129D3CE01DF91CF911F910F910895A7 +:10F210008F929F92AF92BF92EF92FF920F931F93A4 +:10F22000CF93DF938C01D62F7A01B22E9AD29C0114 +:10F2300033272B32310531F02D32310559F48B2D26 +:10F240008068B82ED15011F480E061C0C80189D225 +:10F2500097FDFACFCB2DCD7F2B2D2073F9F4803382 +:10F26000E9F4AA24AA94AD0E09F43EC0C80179D2EB +:10F2700097FD3AC09C012F7D33272835310541F495 +:10F28000C264D25089F1C8016CD297FF07C02CC06C +:10F29000B6FE02C0C26001C0C261DA2D812C912C81 +:10F2A000540120ED280F283078F0C4FF03C0B801C6 +:10F2B000D2D217C02A3040F0C6FFF9CF2F7D3FEEE3 +:10F2C000320F3630A0F727504C2FC501B40163DF51 +:10F2D0004B015C01C260D15051F0C80142D297FF8E +:10F2E000E0CFC1FD04C0B0CF812C912C5401C7FFE9 +:10F2F00008C0B094A09490948094811C911CA11C8F +:10F30000B11C2C2FB501A401C70139DF81E0DF91C9 +:10F31000CF911F910F91FF90EF90BF90AF909F9072 +:10F320008F9008955F926F927F928F929F92AF928B +:10F33000BF92CF92DF92EF92FF920F931F93CF93E2 +:10F34000DF93CDB7DEB7A0970FB6F894DEBF0FBE40 +:10F35000CDBF5C01962E7A01F9018E010F5F1F4F20 +:10F36000680180E2D8011D928A95E9F7D5011396CC +:10F370008C9080E090E0612C712C30E061E070E0D6 +:10F3800083FC259183FE21918F01522E211103C010 +:10F3900080E090E090C02E3511F4009751F1432F9A +:10F3A00050E0481759073CF42D3559F12D3219F426 +:10F3B000772009F103C0772009F468C0452D4695F0 +:10F3C00046954695D601A40FB11D452D47708B017A +:10F3D00002C0000F111F4A95E2F7A8015C91452B6E +:10F3E0004C93651459F0561410F45394E7CF5A9483 +:10F3F000E5CF31E004C07724739401C0712C0196ED +:10F40000BFCF772019F08E8180628E83311103C0C7 +:10F410008824839417C0F6019E012F5D3F4F8081A1 +:10F42000809581932E173F07D1F7F2CFE114F104B5 +:10F4300029F0D7018C93F70131967F019A94812CA2 +:10F440009920E9F0C5018DD197FD17C0FC01FF2778 +:10F4500023E0F595E7952A95E1F7EC0DFD1D208158 +:10F4600030E0AC014770552702C0359527954A9585 +:10F47000E2F720FDDBCFB501EED1811089CFE11499 +:10F48000F10411F0D7011C92C80115C0422F469516 +:10F4900046954695D601A40FB11D422F47708B01AA +:10F4A00002C0000F111F4A95E2F7A8015C91452B9D +:10F4B0004C93622EA4CFA0960FB6F894DEBF0FBE79 +:10F4C000CDBFDF91CF911F910F91FF90EF90DF9013 +:10F4D000CF90BF90AF909F908F907F906F905F90F4 +:10F4E00008955F926F927F928F929F92AF92BF9298 +:10F4F000CF92DF92EF92FF920F931F93CF93DF9300 +:10F500006C01EB015A01FC0117821682512CF601A5 +:10F51000E380FE01E3FC8591E3FE8191182FEF016A +:10F52000882309F4E0C090E0F3D0892B19F0C601DC +:10F5300059DEEDCF153241F4FE01E3FC1591E3FEF7 +:10F540001191EF01153271F4C6010BD197FDC9C0BD +:10F55000412F50E09C01332724173507C1F2B60133 +:10F560007AD1C1C01A3239F4E3FC1591E3FE11914E +:10F57000EF0101E001C000E0F12C20ED210F2A3065 +:10F5800078F402606F2D70E080E090E040E203DEEE +:10F59000F62EFE01E3FC1591E3FE1191EF01EDCF94 +:10F5A00001FF03C0F11003C09EC0FF24FA94183677 +:10F5B00019F01C3651F010C0FE01E3FC1591E3FE7A +:10F5C0001191EF01183641F408600460FE01E3FC7C +:10F5D0001591E3FE1191EF01112309F484C0612F0D +:10F5E00070E086E093E09CD0892B09F47CC000FD9C +:10F5F00007C0F50180809180C50102965C0102C0C0 +:10F60000812C912C1E3649F4F6014681578160E029 +:10F6100070E0202FC401B3DD7ACF1336A1F401FDD1 +:10F6200002C0FF24F394C6019CD097FD5AC08114F8 +:10F63000910429F0F4018083C40101964C01FA94ED +:10F64000F110F1CF4AC01B3551F49E01A4016F2D7A +:10F65000C60168DEEC01892B09F03FC039C0C60144 +:10F66000C1DD97FD3EC01F3649F128F4143621F163 +:10F67000193639F125C0133771F01537E9F020C07C +:10F680008114910429F0F4016082C40101964C01B7 +:10F69000FA94FF2059F0C60164D03C0197FD06C0E2 +:10F6A00037D0892B69F3B601C301D5D081149104F9 +:10F6B000A1F0F401108211C0006203C0006101C01A +:10F6C0000064202FA4016F2DC601A2DD811105C0A9 +:10F6D000F6018381807329F406C000FD18CF53948E +:10F6E00016CF552019F0852D90E002C08FEF9FEFC7 +:10F6F000DF91CF911F910F91FF90EF90DF90CF900E +:10F70000BF90AF909F908F907F906F905F90089583 +:10F71000911118C1803219F089508550D0F70895A1 +:10F72000FC010590061621F00020D9F7C0010895CC +:10F730003197CF010895FC01059061507040011090 +:10F74000D8F7809590958E0F9F1F0895FC0161500A +:10F75000704001900110D8F7809590958E0F9F1FF3 +:10F760000895CF93DF93EC012B8120FF33C026FF58 +:10F770000AC02F7B2B838E819F8101969F838E836E +:10F780008A8190E029C022FF0FC0E881F981808141 +:10F79000082E000C990B009719F420622B831AC0D5 +:10F7A0003196F983E8830EC0EA85FB85199597FFAA +:10F7B00009C02B81019611F080E201C080E1822B0B +:10F7C0008B8308C02E813F812F5F3F4F3F832E8365 +:10F7D000992702C08FEF9FEFDF91CF9108950F938C +:10F7E0001F93CF93DF93FB01238121FD03C08FEF94 +:10F7F0009FEF2CC022FF16C046815781248135819E +:10F800004217530744F4A081B1819D012F5F3F4F00 +:10F81000318320838C93268137812F5F3F4F37833D +:10F82000268314C08B01EC01FB010084F185E02DDF +:10F830001995892BE1F6D80116968D919C91179711 +:10F84000019617969C938E931697CE01DF91CF91D8 +:10F850001F910F910895FB01238120FF12C026FD07 +:10F8600010C08F3F3FEF930761F082832F7D2064AC +:10F8700023832681378121503109378326839927B5 +:10F8800008958FEF9FEF0895FA01AA27283051F1CC +:10F89000203181F1E8946F936E7F6E5F7F4F8F4FC1 +:10F8A0009F4FAF4FB1E03ED0B4E03CD0670F781F20 +:10F8B000891F9A1FA11D680F791F8A1F911DA11D05 +:10F8C0006A0F711D811D911DA11D20D009F468943E +:10F8D0003F912AE0269F11243019305D3193DEF6E6 +:10F8E000CF010895462F4770405D4193B3E00FD09C +:10F8F000C9F7F6CF462F4F70405D4A3318F0495D87 +:10F9000031FD4052419302D0A9F7EACFB4E0A69569 +:10F910009795879577956795BA95C9F7009761058B +:10F92000710508959B01AC010A2E069457954795E1 +:10F9300037952795BA95C9F7620F731F841F951FD6 +:0EF94000A01D0895992788270895F894FFCFF9 +:10F94E00AE47C13F08020000000000000073736361 +:10F95E00616E662025640D0A0053255B302D392D0E +:10F96E002B2E5D52255B302D392D2B2E5D48255BC0 +:10F97E00302D392D2B2E5D46255B302D392D2B2E1E +:10F98E005D004E256456255B302D392D2B2E5D46A0 +:10F99E00255B302D392D2B2E5D0058255B302D39F2 +:10F9AE002D2B2E5D59255B302D392D2B2E5D5A2595 +:10F9BE005B302D392D2B2E5D46255B302D392D2BB1 +:10F9CE002E5D0042255B302D392D2B2E5D4C255B97 +:10F9DE00302D392D2B2E5D52255B302D392D2B2EB2 +:10F9EE005D46255B302D392D2B2E5D002042257373 +:10F9FE00204C2573205225730A0053776966745084 +:10FA0E00726F002025730A0056342E362E300056A3 +:10FA1E00342E302E3400205625730A0020582573BC +:10FA2E0020592573205A25730A002053257320521E +:10FA3E002573204825730A004E2564002042256454 +:10FA4E00204C2564205225640A00616E676C652087 +:10FA5E006F66667365743A25730D0A006465766980 +:10FA6E006365206E616D65203A2025730D0A007363 +:10FA7E006F667420766572203A2025730D0A006138 +:10FA8E00706920766572203A2025730D0A00776F13 +:10FA9E00726B206D6F6465203A2025640D0A00405C +:10FAAE00310A0065666665637420636865636B2062 +:10FABE0074696D656F7574210D0A0023255B302DF9 +:10FACE00395D002425730045323320627566666504 +:10FADE00722066756C6C0D0A004033205825732019 +:10FAEE00592573205A2573205225730A004036205B +:10FAFE004E30205625640A004035205625640A00F3 +:10FB0E0040392056300A0041255B302D392D2B2EE1 +:10FB1E005D00562573002056310A00565542255B6E +:10FB2E00302D392E5D0046255B302D392E5D542546 +:10FB3E00640058255B302D392D2B2E5D59255B30F9 +:10FB4E002D392D2B2E5D5A255B302D392D2B2E5D0B +:10FB5E000042255B302D392D2B2E5D4C255B302D33 +:10FB6E00392D2B2E5D52255B302D392D2B2E5D0020 +:10FB7E0058255B302D392D2B2E5D59255B302D39B7 +:10FB8E002D2B2E5D5A255B302D392D2B2E5D5025BC +:10FB9E0064004E25645625640053255B302D392DA7 +:10FBAE002B2E5D0056255B302D392D2B2E5D002022 +:10FBBE00006F6B0045323000453231004532320065 +:10FBCE0056332E332E310056332E332E300056330D +:10FBDE002E332E320056302E302E30004532330A60 +:0CFBEE00004532300A004532310A0000A8 +:00000001FF From 3b79d9bb1fec2f4fc587b455c0cddb68534d436e Mon Sep 17 00:00:00 2001 From: HuttonGe Date: Wed, 27 May 2020 15:34:47 +0800 Subject: [PATCH 66/74] Update 2020-5-27 --- README.md | 6 +- hex/uArmPro_V4.5.1_release_20200320.hex | 4033 ----------------------- src/uarm_peripheral.c | 15 +- 3 files changed, 11 insertions(+), 4043 deletions(-) delete mode 100644 hex/uArmPro_V4.5.1_release_20200320.hex diff --git a/README.md b/README.md index 22f4ed3..6aec299 100755 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -# Swift Pro Firmware V4.5.1 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.6.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- -## Update Summary for v4.5.1 +## Update Summary for v4.6.0 -* Compatible with version 3.0 air pump control +* Fixed air pump control delay problem ## Caution diff --git a/hex/uArmPro_V4.5.1_release_20200320.hex b/hex/uArmPro_V4.5.1_release_20200320.hex deleted file mode 100644 index 47c10c4..0000000 --- a/hex/uArmPro_V4.5.1_release_20200320.hex +++ /dev/null @@ -1,4033 +0,0 @@ -:1000000065C5000084C5000082C5000080C50000F1 -:100010007EC500007CC500007AC5000078C50000E0 -:1000200076C500000C94DF5C72C500000C94215072 -:100030006EC500006CC500006AC500000C94AC5C85 -:1000400066C500000C94CF3662C5000060C5000094 -:100050005EC500005CC500005AC500000C945A360D -:1000600056C500000C94A8310C94983250C500007D -:100070004EC500004CC500004AC5000048C5000040 -:1000800046C5000044C5000042C500000C94965CC3 -:100090000C9440310C946A323AC5000038C5000017 -:1000A00036C5000034C500000C945E3930C5000030 -:1000B0002EC500000C945B5C2AC5000028C500001A -:1000C00026C5000024C500000C94265C0C94D83092 -:1000D0000C943C321CC500000C9470300C940E3211 -:1000E00016C500006E14D41ED41E7C149114A614E0 -:1000F000BB14D41EC414D41ED714D41EE614F0149A -:100100005015D41ED41ED41E071521153B15A31D52 -:10011000B31DE21DB31DE61DFD1DEC1DF61D211EC8 -:10012000281E331E3E1E5D1E5F1E621E641E1D269F -:1001300035264D2665267D269E26B6269E3CA43C69 -:10014000A73CAA3CAE3CB63CBE3C2B3D2B3D2B3DD8 -:10015000C63CC93CD23CDB3C2B3D2B3D2B3D2B3DD3 -:100160002B3D2B3DE33CED3CF93C033D063D0F3D73 -:10017000183D1E3D9E5BA15B905B945B9A5BD85BD8 -:10018000A55BA95BAF5BB35BB75BBD5BC15BC55BED -:10019000D85BCB5BCF5BD35B084AD73B3BCE016ED2 -:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE -:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD -:1001C000000000803F072C7AA5BA6CC590DA3B93FB -:1001D00065FC8BBC53F810FD3C5692834DBD879D4A -:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 -:1001F000CDB2D44EB93836A9020C50B991868808D0 -:100200003CA6AAAA2ABE000000803F0000407A1047 -:10021000F35A00A0724E18090010A5D4E80000E8B7 -:100220007648170000E40B54020000CA9A3B000015 -:1002300000E1F505000080969800000040420F00A4 -:100240000000A08601000000102700000000E80365 -:10025000000000006400000000000A000000000030 -:100260000100000000002C76D888DC674F0823DFEF -:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 -:10028000997696E8E6C28426EB898C9B62ED407CE9 -:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 -:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA -:1002B000FEF520E6B500D0ED902E030094357705CD -:1002C0000080841E080000204E0A000000C80C3385 -:1002D0003333330F986E12831141EF8D2114893B14 -:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 -:1002F000901DA4BBE424203284725E228100C9F1E7 -:1003000024ECA1E53D276364696E6F7073757858BE -:100310005B00000020002300260029002C002F0095 -:100320003200000100000301060109010D0A003D31 -:1003300000244E005D0D0A005B302E396A2E3230EB -:100340003136303732363A005D0D0A005B544C4F7F -:100350003A005D0D0A002C005B4739323A005D0D12 -:100360000A002C003A003330003238005B47005D51 -:100370000D0A00205300204600205400204D380074 -:10038000204D3900204D3500204D3400204D3300E4 -:10039000204D3200204D3100204D300020473934AF -:1003A00000204739330020473931002047393000D9 -:1003B00020473230002047323100204731390020B9 -:1003C0004731380020473137002047004733382E67 -:1003D000004738300047330047320047310047308C -:1003E000005B00290D0A00206D617820747261762F -:1003F000656C2C206D6D0020616363656C2C206D35 -:100400006D2F7365635E3200206D617820726174B8 -:10041000652C206D6D2F6D696E002C2073746570D6 -:100420002F6D6D007A00790078002028003D0024AF -:10043000002028686F6D696E672070756C6C2D6F79 -:1004400066662C206D6D290D0A002028686F6D6985 -:100450006E67206465626F756E63652C206D7365D1 -:1004600063290D0A2432373D002028686F6D696EBC -:1004700067207365656B2C206D6D2F6D696E290D7E -:100480000A2432363D002028686F6D696E67206649 -:100490006565642C206D6D2F6D696E290D0A2432FF -:1004A000353D00290D0A2432343D002028686F6D47 -:1004B000696E672064697220696E76657274206D5A -:1004C00061736B3A002028686F6D696E67206379ED -:1004D000636C652C20626F6F6C290D0A2432333DEA -:1004E00000202868617264206C696D6974732C2027 -:1004F000626F6F6C290D0A2432323D002028736F21 -:100500006674206C696D6974732C20626F6F6C293E -:100510000D0A2432313D0020287265706F727420FC -:10052000696E636865732C20626F6F6C290D0A24F5 -:1005300032303D00202861726320746F6C657261F7 -:100540006E63652C206D6D290D0A2431333D00202A -:10055000286A756E6374696F6E206465766961746C -:10056000696F6E2C206D6D290D0A2431323D0029F2 -:100570000D0A2431313D0020287374617475732095 -:100580007265706F7274206D61736B3A0020287011 -:10059000726F62652070696E20696E766572742C68 -:1005A00020626F6F6C290D0A2431303D0020286CC9 -:1005B000696D69742070696E7320696E76657274F6 -:1005C0002C20626F6F6C290D0A24363D00202873A1 -:1005D00074657020656E61626C6520696E76657207 -:1005E000742C20626F6F6C290D0A24353D00290D93 -:1005F0000A24343D00202864697220706F727420D0 -:10060000696E76657274206D61736B3A00290D0A0C -:1006100024333D0020287374657020706F7274203D -:10062000696E76657274206D61736B3A0020287371 -:100630007465702069646C652064656C61792C2038 -:100640006D736563290D0A24323D0020287374659B -:10065000702070756C73652C2075736563290D0AA5 -:1006600024313D0024303D0024242028766965771C -:10067000204772626C2073657474696E6773290D0C -:100680000A2423202876696577202320706172610F -:100690006D6574657273290D0A2447202876696593 -:1006A0007720706172736572207374617465290DAF -:1006B0000A2449202876696577206275696C642070 -:1006C000696E666F290D0A244E20287669657720A9 -:1006D0007374617274757020626C6F636B73290D33 -:1006E0000A24783D76616C756520287361766520F3 -:1006F0004772626C2073657474696E67290D0A24F1 -:100700004E783D6C696E6520287361766520737440 -:10071000617274757020626C6F636B290D0A2443DB -:100720002028636865636B2067636F6465206D6F65 -:100730006465290D0A245820286B696C6C20616C53 -:1007400061726D206C6F636B290D0A24482028723A -:10075000756E20686F6D696E67206379636C6529BB -:100760000D0A7E20286379636C652073746172744E -:10077000290D0A2120286665656420686F6C64294C -:100780000D0A3F202863757272656E742073746160 -:10079000747573290D0A6374726C2D782028726544 -:1007A000736574204772626C290D0A0000002100F5 -:1007B000240027002A002D00300033000101000032 -:1007C000040107010A010D0A00486F6D696E672078 -:1007D0006661696C0050726F6265206661696C00C9 -:1007E00041626F727420647572696E672063796309 -:1007F0006C6500536F6674206C696D6974004861A4 -:100800007264206C696D697400414C41524D3A200C -:10081000003E0D0A002C4C696D3A002C52583A00EB -:100820002C4275663A002C002C57506F733A002CFE -:10083000002C4D506F733A003C446F6F72003C4384 -:100840006865636B003C416C61726D003C486F6D84 -:1008500065003C486F6C64003C52756E003C496416 -:100860006C65005D0D0A00526573746F72696E6786 -:100870002064656661756C74730050676D20456E09 -:100880006400436865636B20446F6F720044697352 -:1008900061626C656400456E61626C656400436111 -:1008A0007574696F6E3A20556E6C6F636B6564008A -:1008B000272448277C2724582720746F20756E6CC6 -:1008C0006F636B00526573657420746F20636F6E85 -:1008D00074696E7565005B005D0D0A003A002C00BE -:1008E0005B5052423A000D0A00496E76616C6964B1 -:1008F0002067636F64652049443A00556E646566FD -:10090000696E656420666565642072617465004D7A -:100910006F64616C2067726F75702076696F6C61AF -:1009200074696F6E00486F6D696E67206E6F74201A -:10093000656E61626C656400416C61726D206C6F04 -:10094000636B004E6F742069646C650045455052BE -:100950004F4D2072656164206661696C2E2055736D -:10096000696E672064656661756C74730056616CAE -:100970007565203C2033207573656300536574747E -:10098000696E672064697361626C65640056616CAE -:100990007565203C203000496E76616C6964207377 -:1009A000746174656D656E7400426164206E756D6E -:1009B00062657220666F726D617400457870656360 -:1009C00074656420636F6D6D616E64206C65747412 -:1009D0006572006572726F723A20006F6B0D0A00CB -:1009E00000002200250028002B002E0031003400DA -:1009F00002010000050108010B01050505050705B9 -:100A000008080808020202020A0A0808040404048A -:100A100001010101010101010303030303030303B6 -:100A2000040707070C0C0C0C0C0C0C0C0202020245 -:100A300006060606060606060B0B0B0B0B0B0B0B2E -:100A400001021020200808102040102040800201E0 -:100A500002010804020101020408102040808040C5 -:100A600020100804020180040201804020100804C4 -:100A70000201080402010102040810204080010262 -:100A800004081020408000000A0B02090C0D0E081B -:100A90000703040100000000000000000000000047 -:100AA0000000000000000000000000000000000046 -:100AB0000000121110000000000000000000000003 -:100AC00000000000000000000000000011241FBE14 -:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D -:100AE000B2E0E0E5F9EF00E00BBF02C007900D9225 -:100AF000AC3AB107D9F725E1ACEAB4E001C01D92E8 -:100B0000A03CB207E1F70E94CF5F0C94A67C78CAA4 -:100B10002F923F924F925F926F927F928F929F920D -:100B2000AF92BF92CF92DF92EF92FF920F931F93FB -:100B3000CF93DF93CDB7DEB7C85CD1090FB6F89479 -:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B -:100B5000D04089E3E8E4F5E1DF011D928A95E9F7E9 -:100B60008AE0E1E8F5E1A9E4B5E101900D928A950A -:100B7000E1F7FE01E756FF4F1082CD54DF4F198297 -:100B80001882C35BD040C155DF4F19821882CF5AFB -:100B9000D040C154DF4F1882CF5BD040C655DF4FE5 -:100BA0001882CA5AD040C255DF4F1882CE5AD04060 -:100BB000E859F109C456DF4FF983E883CC59D04096 -:100BC0009E01235A3F4FC256DF4F39832883CE59A7 -:100BD000D040CE018F5A9F4FC056DF4F99838883F4 -:100BE000C05AD040DE01A959BF4FCE55DF4FB9835F -:100BF000A883C25AD040E059FF4FCC55DF4FF9834C -:100C0000E883C45AD0409C01285F3F4FCD53DF4F4B -:100C100039832883C35CD040C756DF4F8881C959C8 -:100C2000D040C754DF4FE881F981C95BD040E80F5D -:100C3000F11D1081112311F40C94B3159FEB910F4A -:100C40009A3110F00C94C61E8F5FC756DF4F888311 -:100C5000C959D040AE014B565F4FBE0167567F4F1A -:100C6000C754DF4F88819981C95BD0400E941D45E0 -:100C7000882311F40C94C81ECB56DF4FC880D9804E -:100C8000EA80FB80C559D040C701B6010E94897532 -:100C90000E94F672CB54DF4F688379838A839B83EB -:100CA000C55BD040CB54DF4F48805980C55BD040F6 -:100CB000B20180E090E00E9422739B01AC01C70169 -:100CC000B6010E94A87120E030E048EC52E40E9496 -:100CD000DB744B015C0120E030E0A9010E94A074AC -:100CE00020E030E040E05FE387FD05C0C501B401CE -:100CF0000E94A97104C0C501B4010E94A8710E949C -:100D0000F1721B011D3411F40C942F0F24F41734CD -:100D100061F00C945B14103511F40C94C50F13356D -:100D200011F40C94E7130C945B14C756DF4F8881C1 -:100D3000C959D040C754DF4FA881B981C95BD040A1 -:100D4000A80FB11DCD01BAE94B16B8E05B0609F456 -:100D500016C160F4F4ED4F16F7E05F06D1F029E913 -:100D6000421628E0520609F440C0FAC53DE9431690 -:100D700038E0530609F451C3AEE94A16A8E05A0612 -:100D800009F436C5BCE94B16B8E05B0609F0E8C5C6 -:100D900049C21A821982E1E0F0E0EC0FFD1FFF93D7 -:100DA000EF932EE434E03F932F939F938F930E9411 -:100DB0007A760F900F900F900F900F900F9018165B -:100DC00019060CF03BC589819A8190936B0F809333 -:100DD0006A0F11E01093950D8091170D811148C590 -:100DE0000E94FB2B1093170D43C58E010B5E1F4F06 -:100DF0001F930F939E01275D3F4F3F932F937E01DB -:100E0000FDE3EF0EF11CFF92EF92CF55DF4F2881EB -:100E1000C15AD0402F93C056DF4F3881C05AD040BE -:100E20003F9329E132E03F932F939F938F930E944A -:100E30007A760FB6F894DEBF0FBECDBF04970CF4E0 -:100E4000FDC4EF961CAE1DAE1EAE1FAEEF97E5962D -:100E50001CAE1DAE1EAE1FAEE597AB961CAE1DAE12 -:100E60001EAE1FAEAB97A1961CAE1DAE1EAE1FAE42 -:100E7000A1978CE0C456DF4FE881F981CC59D0406E -:100E800011928A95E9F7AE0145585F4F60E070E036 -:100E9000CE018F5A9F4F0E941D45882309F4E8C454 -:100EA000AE014F585F4F60E070E0C7010E941D45E2 -:100EB000882309F4DDC4AE0149595F4F60E070E05A -:100EC000CE0189960E941D45882309F4D1C4AE0144 -:100ED000435A5F4F60E070E0C8010E941D458823BF -:100EE00009F4C6C420E030E044EB52E4E5966CAD72 -:100EF0007DAD8EAD9FADE5970E94A87121EE3EE2DB -:100F000045E652E40E9489726B017C01E5966CAF64 -:100F10007DAF8EAF9FAFE5970E948672EF968CAC47 -:100F20009DACAEACBFACEF97A50194010E94DB7401 -:100F300069837A838B839C83C701B6010E943E75C7 -:100F40009B01AC01C501B4010E94DB746D837E83FB -:100F50008F839887AB968CAD9DADAEADBFADAB9793 -:100F600089879A87AB87BC87A1962CAD3DAD4EADE6 -:100F70005FADA19700E0BE016F5F7F4F37C46596FC -:100F80001CAE1DAE1EAE1FAE659721961CAE1DAEEB -:100F90001EAE1FAE219721E030E02C0F3D1F3F9386 -:100FA0002F938E010B5E1F4F1F930F93C156DF4F80 -:100FB0003881CF59D0403F93C256DF4FA881CE59D8 -:100FC000D040AF9322E432E03F932F939F938F93CF -:100FD0000E947A760FB6F894DEBF0FBECDBF03979E -:100FE0000CF42CC4AE014F5A5F4F60E070E0C801B2 -:100FF0000E941D45882309F43BC4AE01435C5F4F4A -:1010000060E070E0CE0101960E941D45882309F43E -:101010002FC43E01F9E26F0E711C8CE0D3011D92CA -:101020008A95E9F760917C0D70917D0D80917E0D20 -:1010300090917F0D0E94247320E030E040EA52E45A -:101040000E9489722091700D3091710D4091720D46 -:101050005091730D0E94A971CA55DF4F688379833F -:101060008A839B83C65AD0406091800D7091810D18 -:101070008091820D9091830D0E94247320E030E0D6 -:1010800040EA52E40E9489722091740D3091750DEE -:101090004091760D5091770D0E94A971C554DF4F94 -:1010A000688379838A839B83CB5BD0406091840D76 -:1010B0007091850D8091860D9091870D0E9424730B -:1010C00020E030E040EA52E40E9489726B017C012A -:1010D00020E030E044EB52E46091780D7091790D9E -:1010E00080917A0D90917B0D0E94A8719B01AC01BB -:1010F000C701B6010E94A9717B018C016F968EAD6C -:101100009FAD6F978130910509F450C00CF03FC03E -:10111000892B09F0A0C320E030E044EB52E465964F -:101120006CAD7DAD8EAD9FAD65970E94A871659643 -:101130006CAF7DAF8EAF9FAF6597FE01F1964F010B -:101140009E01235D3F4F5901DE0199966D017B01A0 -:101150008C01C554DF4F288139814A815B81CB5B8B -:10116000D040CA55DF4F688179818A819B81C65AF8 -:10117000D0400E94784CA401B501C6010E94194AD2 -:1011800021962CAD3DAD4EAD5FAD2197E2C38230CF -:10119000910519F1039709F05EC365966CAD7DADBD -:1011A0008EAD9FAD65970E94D62C62C365966CADDF -:1011B0007DAD8EAD9FAD6597FE01F1964F019E010D -:1011C000235D3F4F59016301C554DF4F28813981A9 -:1011D0004A815B81CB5BD04015C065962CAD3DAD9F -:1011E0004EAD5FAD6597CE01C1964C01DE019D9677 -:1011F0005D016301CA55DF4F688179818A819B81D6 -:10120000C65AD0400E94784CA401B501C3010E9487 -:10121000194A21962CAD3DAD4EAD5FAD219700E052 -:10122000B30199C38E010B5E1F4F1F930F937E0175 -:10123000B9E2EB0EF11CFF92EF926E01EDE3CE0EE0 -:10124000D11CDF92CF92CF55DF4FF881C15AD040E9 -:10125000FF93C056DF4F2881C05AD0402F932AE514 -:1012600032E03F932F939F938F930E947A760FB62D -:10127000F894DEBF0FBECDBF04970CF4DFC2EF962B -:101280001CAE1DAE1EAE1FAEEF97E5961CAE1DAE9A -:101290001EAE1FAEE597AB961CAE1DAE1EAE1FAECA -:1012A000AB97A1961CAE1DAE1EAE1FAEA197AE01B0 -:1012B00045585F4F60E070E0CE018F5A9F4F0E940B -:1012C0001D45882309F4D4C2AE014F585F4F60E03A -:1012D00070E0C6010E941D45882309F4C9C2AE0111 -:1012E00049595F4F60E070E0C7010E941D458823A7 -:1012F00009F4BEC2AE01435A5F4F60E070E0C8011E -:101300000E941D45882309F4B3C26091840D709139 -:10131000850D8091860D9091870D0E942473CA558A -:10132000DF4F688379838A839B83C65AD04060915C -:10133000800D7091810D8091820D9091830D0E949E -:101340002473C554DF4F688379838A839B83CB5B87 -:10135000D04060917C0D70917D0D80917E0D9091BB -:101360007F0D0E942473FE0139964F019E012B5F71 -:101370003F4F5901DE0111966D01CA55DF4FE880DC -:10138000F9800A811B81C65AD040C554DF4F28819D -:1013900039814A815B81CB5BD0400E945D4DA401C5 -:1013A000B501C6010E94194AEF962CAD3DAD4EAD78 -:1013B0005FADEF9769817A818B819C810E94A971D1 -:1013C00069837A838B839C83E5962CAD3DAD4EADCE -:1013D0005FADE5976D817E818F8198850E94A971AF -:1013E0006D837E838F839887AB962CAD3DAD4EADDC -:1013F0005FADAB9769857A858B859C850E94A971C5 -:1014000069877A878B879C87A1962CAD3DAD4EADC1 -:101410005FADA19700E0B601E9C1C156DF4FB881C9 -:10142000CF59D040BF93C256DF4FE881CE59D0404C -:10143000EF93CD55DF4FF881C35AD040FF93CE557F -:10144000DF4F2881C25AD0402F93CB55DF4F3881D0 -:10145000C55AD0403F93CC55DF4FA881C45AD040E5 -:10146000AF938E0105581F4F1F930F9329E132E070 -:101470003F932F939F938F930E947A760FB6F894A1 -:10148000DEBF0FBECDBF04970CF4D8C1CF56DF4FDF -:10149000188219821A821B82C159D040C357DF4F6C -:1014A000188219821A821B82CD58D040C757DF4F4D -:1014B000188219821A821B82C958D040CB57DF4F3D -:1014C000188219821A821B82C558D0408CE0C056FF -:1014D000DF4FA881B981C05AD0401D928A95E9F7A3 -:1014E000AE014F565F4F60E070E0C8010E941D459D -:1014F000882309F4BDC1AE0143575F4F60E070E03F -:10150000CE018F589F4F0E941D45882309F4B0C11A -:10151000AE0147575F4F60E070E0CE0189599F4FA1 -:101520000E941D45882309F4A3C1AE014B575F4FAC -:1015300060E070E0CE01835A9F4F0E941D458823D2 -:1015400009F496C16091840D7091850D8091860D8E -:101550009091870D0E942473CA55DF4F6883798369 -:101560008A839B83C65AD04020E030E044EB52E4AB -:101570006091780D7091790D80917A0D90917B0D2D -:101580000E94A8716B017C0120E030E040EA52E447 -:10159000CA55DF4F688179818A819B81C65AD040C4 -:1015A0000E9489729B01AC01C701B6010E94A9711A -:1015B000C554DF4F688379838A839B83CB5BD0409C -:1015C0006091800D7091810D8091820D9091830DBD -:1015D0000E942473CB53DF4F688379838A839B8374 -:1015E000C55CD04060917C0D70917D0D80917E0D29 -:1015F00090917F0D0E942473CD53DF4F8880998096 -:10160000C35CD040F1E56F2E712C6C0E7D1EB4E0F2 -:101610006B0E711C5301FE01EF5AFF4F6F01CA554B -:10162000DF4FE880F9800A811B81C65AD040CB5336 -:10163000DF4F288139814A815B81C55CD0400E949F -:101640005D4DCD53DF4F48815981C35CD040B3011C -:10165000C6010E94194A65966CAD7DAD8EAD9FADF9 -:1016600065976996CCACDDACEEACFFAC69979B019D -:10167000AC010E94DB744B015C01A7019601C7011C -:10168000B6010E94DB749B01AC01C501B4010E944C -:10169000A9710E944875CF56DF4F288139814A8150 -:1016A0005B81C159D0400E94A9716B017C01CF566A -:1016B000DF4F688379838A839B83C159D040C357A6 -:1016C000DF4F288139814A815B81CD58D040C55494 -:1016D000DF4F688179818A819B81CB5BD0400E94FA -:1016E000A97121EE3EE245E652E40E948972CA5594 -:1016F000DF4F688379838A839B83C65AD0400E94D8 -:1017000086729B01AC01C701B6010E94DB744B01DC -:101710005C0165966CAF7DAF8EAF9FAF6597CA5584 -:10172000DF4F688179818A819B81C65AD0400E94AF -:101730003E759B01AC01C701B6010E94DB7469963E -:101740006CAF7DAF8EAF9FAF6997C757DF4F2881D2 -:1017500039814A815B81C958D0406D966CAD7DADB1 -:101760008EAD9FAD6D970E94A9716D966CAF7DAFE8 -:101770008EAF9FAF6D978E01035C1F4F24E045E055 -:10178000C501B4010E942D6F69966CAD7DAD8EAD23 -:101790009FAD69970451110924E045E00E942D6F27 -:1017A0006D966CAD7DAD8EAD9FAD6D9704511109F9 -:1017B00024E045E00E942D6FCF56DF4F688179818C -:1017C0008A819B81C159D0400451110924E045E030 -:1017D0000E942D6FCB57DF4F288139814A815B8171 -:1017E000C558D04000E0BE016F5A7F4F81E0B4C0C1 -:1017F00021E030E02C0F3D1F3F932F938E010B5EB5 -:101800001F4F1F930F937E0139E2E30EF11CFF92ED -:10181000EF926E01ADE3CA0ED11CDF92CF9223E8A6 -:1018200032E03F932F939F938F930E947A760FB667 -:10183000F894DEBF0FBECDBF049784F41F9281E001 -:101840008F938DE092E09F938F930E94723F0F9051 -:101850000F900F900F9082E390E084C0AE01455846 -:101860005F4F60E070E0C6010E941D45811103C01A -:1018700080E090E077C0AE014F585F4F60E070E0CD -:10188000C7010E941D45882399F3AE0149595F4F56 -:1018900060E070E0C8010E941D45882349F3AE0155 -:1018A000435A5F4F60E070E0CE0101960E941D45F3 -:1018B0008823F1F220E030E044EB52E4EF966CAD87 -:1018C0007DAD8EAD9FADEF970E94A8717B018C011D -:1018D000EF966CAF7DAF8EAF9FAFEF978CE0C056A9 -:1018E000DF4FA881B981C05AD0401D928A95E9F78F -:1018F000AB962CAD3DAD4EAD5FADAB97E5966CAD07 -:101900007DAD8EAD9FADE597CD53DF4F888099803B -:10191000C35CD040E1E56E2E712C6C0E7D1EB4E0F0 -:101920006B0E711C5301FE01EF5AFF4F6F010E94B5 -:10193000784CCD53DF4F48815981C35CD040B3010F -:10194000C6010E94194AA1962CAD3DAD4EAD5FADCA -:10195000A19700E0B60180E00E94084690E002C036 -:1019600081E090E09C01215031092230310510F0D6 -:101970000C942F1FF8E24F16510409F414C280F59D -:1019800034E14316510498F481E14816510408F0FB -:1019900061C194E04916510409F474C008F4E3C02D -:1019A000BAE04B16510409F45EC00C94D41EECE16D -:1019B0004E16510409F457C038F426E1421651047A -:1019C00008F4A2C10C94D41E3EE14316510409F45C -:1019D0004AC086E24816510409F4C5C00C94D41ECE -:1019E0009DE34916510409F4D3C110F5B5E34B1634 -:1019F000510409F447C060F4FBE24F16510409F4A6 -:101A000095C121E34216510409F490C10C94D41EEF -:101A10003CE34316510410F00C94D41ECB54DF4F1A -:101A20008881C55BD040865380934F15A9E0AAC139 -:101A30008CE54816510460F49AE54916510408F003 -:101A40001FC1A0E54A16510409F49BC00C94D41E92 -:101A5000BCE54B16510439F0EFE54E16510408F47D -:101A60003CC10C94D41E2114310411F00C94E81ED6 -:101A7000C255DF4FF881CE5AD040FF2309F445C04C -:101A80000C94CA1E2CE14216510491F148F484E0F2 -:101A90004816510479F09AE049165104E1F08AC1E0 -:101AA000AEE14A165104D9F1B5E34B16510409F4DD -:101AB00056C080C181E054C0BFE14B16510408F00C -:101AC00042C0EAE04E16510441F4E1E0C255DF4F56 -:101AD000E883CE5AD04082E043C0FCE14F16510467 -:101AE00009F078C1F1E0C255DF4FF883CE5AD040FB -:101AF0002114310441F02AE02216310411F00C9433 -:101B0000D41E84E010C083E00EC0AEE14A1651043A -:101B100099F631E0C255DF4F3883CE5AD0402114B8 -:101B2000310449F485E080934815CA55DF4F188287 -:101B3000C65AD0405AC18AE02816310411F00C94DC -:101B4000D41E86E0F0CF25E34216510411F00C9428 -:101B5000141F91E0C255DF4F9883CE5AD04087E0E2 -:101B60008093481527C1C255DF4FE881CE5AD04037 -:101B7000E1110C94CA1EF2E0C255DF4FF883CE5A31 -:101B8000D04022E04216510419F158F44114510496 -:101B9000D9F04A94452809F013C181E08093491592 -:101BA0000FC196E249165104C1F0A0E54A1651044E -:101BB00009F44BC0B3E04B16510409F001C183E0B6 -:101BC0008093491531E09AC010924915E1E0ECC0CC -:101BD00082E08093491521E088C08EE12816310407 -:101BE00001F180F4A4E12A16310411F00C94D41E02 -:101BF00084E080934915F1E0CA55DF4FF883C65A57 -:101C0000D040F3C0B8E22B163104A9F0E2E32E165F -:101C1000310411F00C94D41E87E08093491581E0C3 -:101C200039C085E08093491521E0CA55DF4F2883EC -:101C3000C65AD040DAC086E08093491531E0CA55D3 -:101C4000DF4F3883C65AD040D0C088E08093491512 -:101C500091E062C0A2E14A16510441F0B3E14B1693 -:101C6000510449F010924D15E2E09EC081E080934E -:101C70004D15F2E0A6C082E080934D1522E035C0FC -:101C800021143104B9F43AE54316510449F4109291 -:101C90004C1583E0CA55DF4F8883C65AD040A5C093 -:101CA00081E080934C1593E0CA55DF4F9883C65A64 -:101CB000D0409BC0AAE02A16310411F00C94D41E27 -:101CC000BAE54B16510411F40C94D41EE4E0CA5545 -:101CD000DF4FE883C65AD04088C0FDE54F16510457 -:101CE00051F481E080934A1525E0CA55DF4F2883DF -:101CF000C65AD0406BC010924A1535E0CA55DF4F26 -:101D00003883C65AD04062C084E14816510451F469 -:101D100081E080934B1596E0CA55DF4F9883C65AF1 -:101D2000D04054C010924B15A6E02CC0C255DF4FD6 -:101D3000B881CE5AD040B1110C94CA1EE1E34E16C0 -:101D4000510451F410924E15F8E0CA55DF4FF88354 -:101D5000C65AD04023E044C03AE02316310411F0C3 -:101D60000C94D41E81E080934E1588E0CA55DF4F55 -:101D70008883C65AD04093E0C255DF4F9883CE5A2D -:101D8000D04033C0CA55DF4FA883C65AD0401EC0CA -:101D9000232811F00C94D41EBAE0CA55DF4FB88343 -:101DA000C65AD04022C0E7E0CA55DF4FE883C65A82 -:101DB000D0400CC0CA55DF4F1882C65AD04006C06A -:101DC000F1E0CA55DF4FF883C65AD040232869F0A6 -:101DD0000C94FB1ECA55DF4F1882C65AD04021E032 -:101DE000C255DF4F2883CE5AD040C155DF4FE8811E -:101DF000F981CF5AD040CF01A0E0B0E0CA55DF4F03 -:101E00000880C65AD04004C0B695A7959795879587 -:101E10000A94D2F780FF03C085E10C942F1F81E064 -:101E200090E0A0E0B0E0CA55DF4F0880C65AD0402D -:101E300004C0880F991FAA1FBB1F0A94D2F7C1556F -:101E4000DF4F28813981CF5AD040282B392BC155FB -:101E5000DF4F39832883CF5AD0400C940C06672B70 -:101E600011F00C94FB1EC756DF4F8881C959D04032 -:101E7000C754DF4F68817981C95BD040680F711DFD -:101E8000AE0147565F4FCB54DF4F88819981C55BC8 -:101E9000D0400E94491F9C01215031092230310558 -:101EA00010F00C942F1F36E04316510428F483E001 -:101EB0004816510490F026C098E04916510410F4D9 -:101EC0000C94D41EAAE04A16510408F440C0BEE1A6 -:101ED0004B16510411F00C94D41EE2E04E1651043E -:101EE00061F0FEE14F16510441F0452809F046C06B -:101EF00081E0809350152BE032C082E08093501532 -:101F00003BE036C084E04816510471F095E0491674 -:101F10005104A1F081E080935215ACE0CA55DF4F27 -:101F2000A883C65AD04022C482E080935215BCE0F8 -:101F3000CA55DF4FB883C65AD04018C41092521504 -:101F4000ECE0CA55DF4FE883C65AD0400FC4F9E031 -:101F50004F16510451F082E0809351152DE0CA557F -:101F6000DF4F2883C65AD04001C4109251153DE07E -:101F7000CA55DF4F3883C65AD040F8C38BE0CA55E4 -:101F8000DF4F8883C65AD040F1C3672B11F00C9401 -:101F9000FB1EC756DF4F8881C959D040C754DF4F59 -:101FA000E881F981C95BD040E80FF11D27EB4216AB -:101FB00028E0520609F4E7C208F05EC18CE9481631 -:101FC00088E0580609F499C108F076C0A9E94A16D4 -:101FD000A8E05A0609F48BC108F05FC0E8E94E1684 -:101FE000E8E05E0609F0B8C384E16E0199E2C90E2B -:101FF000D11CD601E82F1D92EA95E9F77E01F5E1A3 -:10200000EF0EF11CD701E82F1D92EA95E9F7C456AF -:10201000DF4FA881B981CC59D0401D928A95E9F74C -:1020200080E090E00E94044FCB54DF4F68837983B7 -:102030008A839B83C55BD04081E090E00E94044F7F -:102040002B013C0182E090E00E94044F4B015C01B7 -:10205000860124E045E0CB54DF4F688179818A8195 -:102060009B81C55BD0400E942D6F870124E045E035 -:10207000C301B2010E942D6F0451110924E045E013 -:10208000C501B4010E942D6FFF92EF92DF92CF92B3 -:102090001F930F938CEA92E03DC3FAE94F16F8E0E4 -:1020A0005F0609F427C12BE9421628E0520609F021 -:1020B00053C388EC92E023C13EE9431638E053064F -:1020C00009F427C108F420C19CEA491698E0590692 -:1020D00009F4B5C1ADEA4A16A8E05A0609F03CC3B6 -:1020E000A1961CAE1DAE1EAE1FAEA19765961CAE8E -:1020F0001DAE1EAE1FAE659721961CAE1DAE1EAE68 -:102100001FAE219784E1DE019996C656DF4FB98351 -:10211000A883CA59D040E82F1D92EA95E9F71E011D -:10212000F5E12F0E311CD101E82F1D92EA95E9F758 -:10213000C456DF4FA881B981CC59D0401D928A95F1 -:10214000E9F780E090E00E94044FCB54DF4F6883B2 -:1021500079838A839B83C55BD04081E090E00E94B5 -:10216000044FC554DF4F688379838A839B83CB5B9D -:10217000D04082E090E00E94044F20E030E044EB49 -:1021800052E40E94A8712B013C01FE01FD964F0113 -:102190009E012F5A3F4F5901CE01835A9F4F6C0128 -:1021A00083017201C554DF4F288139814A815B81E7 -:1021B000CB5BD040CB54DF4F688179818A819B8192 -:1021C000C55BD0400E94784CA401B501C6010E94B5 -:1021D000194AA1966CAD7DAD8EAD9FADA197659668 -:1021E000CCACDDACEEACFFAC65979B01AC010E94C2 -:1021F000DB744B015C01A7019601C701B6010E9487 -:10220000DB749B01AC01C501B4010E94A9710E945D -:1022100048758E01075D1F4F24E045E00E942D6F39 -:1022200020E030E044EB52E4C301B2010E94A97106 -:10223000810124E045E00E942D6F21966CAD7DADBB -:102240008EAD9FAD21970451110924E045E00E9415 -:102250002D6F1F930F933F922F92C556DF4FB8817A -:10226000CB59D040BF93C656DF4FE881CA59D04002 -:10227000EF938AEE92E04EC2B0EC4B16B8E05B06EC -:1022800009F4ADC1D0F439EB431638E0530609F434 -:1022900091C108F484C19AEB491698E0590609F4F3 -:1022A00091C1ABEB4A16A8E05A0609F055C28091DD -:1022B000020185FB882780F990C1B2EC4B16B8E08B -:1022C0005B0609F4FDC108F4CCC133EC431638E0D9 -:1022D000530609F407C280E6481689E0580609F05B -:1022E0003BC28091630D8F938091620D21C28AEB76 -:1022F00092E005C08CE69FE002C08FEC92E09F93D5 -:102300008F9383EC92E017C28BE19DE09F938F93B4 -:1023100093C080818E3409F0C8C18181805384309C -:1023200008F0C3C194E16E013DE3C30ED11CD60198 -:10233000E92F1D92EA95E9F77E01F9E2EF0EF11C13 -:10234000D701E92F1D92EA95E9F75E01F5E1AF0E9D -:10235000B11CD501E92F1D92EA95E9F7C456DF4F6C -:10236000A881B981CC59D0401D929A95E9F7823065 -:10237000E1F0833031F1813061F082E090E00E9441 -:10238000044F850124E045E00E942D6FBF92AF927B -:1023900053C080E090E00E94044F860124E045E0B5 -:1023A0000E942D6FDF92CF9247C081E090E00E94A3 -:1023B000044F870124E045E00E942D6FFF92EF92C9 -:1023C0003BC08091620D9091630D0497029748F491 -:1023D0006091660F7091670F8091680F9091690FFF -:1023E00022C020E030E040E05FE3609100027091A5 -:1023F000010280910202909103020E94A87120E0E4 -:1024000030E040E05FE30E94DB7420E030E044E332 -:1024100053E40E94DB749B01AC0160E070E084E354 -:1024200093E40E94A8718E010F5F1F4F24E045E0E6 -:102430000E942D6F1F930F9386ED92E07CC1A196B1 -:102440001CAE1DAE1EAE1FAEA19765961CAE1DAE96 -:102450001EAE1FAE659721961CAE1DAE1EAE1FAE02 -:10246000219784E19E01275D3F4FC656DF4F398398 -:102470002883CA59D040D901E82F1D92EA95E9F77F -:102480001E01F5E12F0E311CD101E82F1D92EA95B6 -:10249000E9F7C456DF4FA881B981CC59D0401D92CD -:1024A0008A95E9F780E090E00E94044F2B013C01FF -:1024B00081E090E00E94044FCB54DF4F6883798322 -:1024C0008A839B83C55BD04082E090E00E94044FEA -:1024D00020E030E044EB52E40E94A871FE01FD963A -:1024E0004F019E012F5A3F4F5901DE01A35ABF4FA2 -:1024F0006D017B018C01CB54DF4F288139814A81EA -:102500005B81C55BD040C301B2010E94784CA4013D -:10251000B501C6010E94194AA1966CAD7DAD8EAD84 -:102520009FADA1978E01075D1F4F24E045E00E94FB -:102530002D6F65966CAD7DAD8EAD9FAD65978101BC -:1025400024E045E00E942D6F21966CAD7DAD8EADEF -:102550009FAD21970451110924E045E00E942D6FA1 -:102560001F930F933F922F92C556DF4FF881CB599F -:10257000D040FF93C656DF4F2881CA59D0402F93D1 -:102580008CED92E0C7C0A49B11C08FE30E94075C52 -:102590008A30910558F08734910550F005C047996D -:1025A00005C00898009B04C081E017C080E015C0FA -:1025B00082E013C082B386958695869591E089273F -:1025C00081700BC08BE30E94075C21E0853691058A -:1025D00008F420E01F922F93ACC01F92A9C081E0A5 -:1025E00090E08C0F9D1F9F938F9388EF92E09F93B5 -:1025F0008F93FF93EF930E947A760F900F900F9036 -:102600000F900F900F90181619060CF041C02981F9 -:102610003A812634310508F048C0F901EA57F54FF0 -:102620008491F901E05CF54F1491F901E650F64F01 -:102630000491002391F081110E94835BE02FF0E070 -:10264000EE0FFF1FEE5EFC4FA591B491EC911E239F -:1026500081E090E021F480E002C080E090E09F9370 -:1026600067C0A1E0B0E0AC0FBD1FBF93AF9388EF90 -:1026700092E09F938F93FF93EF930E947A760F904F -:102680000F900F900F900F900F901816190684F06E -:102690001F9281E08F938DE092E09F938F930E9431 -:1026A000723F0F900F900F900F9082E390E056C012 -:1026B00089819A8180319105C0F70E94075CCFCF54 -:1026C0008091610D8F938091600D8F9380915F0D4C -:1026D0008F9380915E0D8F9380915D0D8F9380918C -:1026E0005C0D15C080E090E00E94B24E182F092FBB -:1026F00081E090E00E94B24EF82EE92E82E090E058 -:102700000E94B24EEF92FF920F931F939F938F936D -:102710008CEF92E09F938F9388E29DE09F938F933D -:102720000E944C760FB6F894DEBF0FBECDBF11C02D -:102730008F9382EB93E09F938F9388E29DE09F932A -:102740008F930E944C760F900F900F900F900F90E8 -:102750000F9080E090E002C081E090E09C01215069 -:1027600031092230310510F00C942F1FC155DF4F75 -:10277000E881F981CF5AD040CF01A0E0B0E0CA553E -:10278000DF4F0880C65AD04004C0B695A7959795EC -:1027900087950A94D2F780FD3FCB81E090E0A0E0DE -:1027A000B0E0CA55DF4F0880C65AD04004C0880F39 -:1027B000991FAA1FBB1F0A94D2F7E82BF92BC1550A -:1027C000DF4FF983E883CF5AD0400C940C06672B77 -:1027D00011F00C94FB1EF8EE4F16F3E05F0641F08B -:1027E0002CE4421624E0520649F50E94DD4523C040 -:1027F000C756DF4F8881C959D040C754DF4FE881A1 -:10280000F981C95BD040E80FF11D80818635C9F49C -:10281000818180538230A8F49FB7813029F0F894E9 -:102820008091D914886004C0F8948091D914826092 -:102830008093D9149FBF80E090E005C081E090E0D4 -:1028400002C082E390E09C01215031092230310521 -:1028500010F00C942F1FC155DF4FE881F981CF5A3A -:10286000D040CF01A0E0B0E0CA55DF4F0880C65A83 -:10287000D04004C0B695A795979587950A94D2F74E -:1028800080FDCACA81E090E0A0E0B0E0CA55DF4F09 -:102890000880C65AD04004C0880F991FAA1FBB1FCA -:1028A0000A94D2F7E82BF92BC155DF4FF983E8835F -:1028B000CF5AD04095C0812F110F990BAA0BBB0B9B -:1028C000FC01E654F109E531F10510F00C94D41E39 -:1028D0008827EE58FF4F8F4F0C941976C0925315EE -:1028E000D0925415E0925515F0925615CA55DF4F07 -:1028F0001882C65AD040DAC0C0925715D0925815E7 -:10290000E0925915F0925A15C154DF4FF881CF5B10 -:10291000D040F160C154DF4FF883CF5BD04021E05D -:102920004FC0C0925B15D0925C15E0925D15F0929D -:102930005E15C154DF4F3881CF5BD0403260C15447 -:10294000DF4F3883CF5BD04082E05BC0C0925F1521 -:10295000D0926015E0926115F0926215C154DF4F7C -:102960009881CF5BD0409460C154DF4F9883CF5B98 -:10297000D040A3E060C0CB54DF4FB881C55BD040EE -:10298000B0936315E4E071C0C701B6010E94F17213 -:102990006093641570936515809366159093671521 -:1029A000F5E0CA55DF4FF883C65AD0407FC0C092C9 -:1029B0006815D0926915E0926A15F0926B1526E0C1 -:1029C000CA55DF4F2883C65AD04070C0C0926C15DC -:1029D000D0926D15E0926E15F0926F1537E061C0E0 -:1029E000CB56DF4F88819981AA81BB81C559D040E0 -:1029F0008093701590937115A0937215B093731511 -:102A000088E0CA55DF4F8883C65AD0404FC0C09275 -:102A10007515D0927615E0927715F0927815C65517 -:102A2000DF4F9881CA5AD0409160C655DF4F9883D6 -:102A3000CA5AD040AAE0CA55DF4FA883C65AD04030 -:102A400035C0C0927915D0927A15E0927B15F0923C -:102A50007C15C655DF4FB881CA5AD040B260C65502 -:102A6000DF4FB883CA5AD040EBE0CA55DF4FE88346 -:102A7000C65AD0401BC0C0927D15D0927E15E09200 -:102A80007F15F0928015C655DF4FF881CA5AD040A5 -:102A9000F460C655DF4FF883CA5AD0402CE090CF7F -:102AA00039E0CA55DF4F3883C65AD040CA55DF4F88 -:102AB0008881C65AD040082FCD54DF4FE881F98174 -:102AC000C35BD040CF01A0E0B0E0CA55DF4F088023 -:102AD000C65AD04004C0B695A795979587950A9495 -:102AE000D2F780FF02C00C94CC1E81E693E0A0E0F8 -:102AF000B0E0CA55DF4F0880C65AD04004C0B69532 -:102B0000A795979587950A94D2F780FF11C020E08A -:102B100030E0A901CB56DF4F688179818A819B81A2 -:102B2000C559D0400E94827287FF02C00C94CE1E0D -:102B300081E090E0A0E0B0E004C0880F991FAA1FD8 -:102B4000BB1F0A95D2F7CD54DF4F28813981C35B73 -:102B5000D040282B392BCD54DF4F39832883C35BDA -:102B6000D0400C940C06C655DF4F3881CA5AD0406D -:102B7000332369F0C255DF4F8881CE5AD04081118E -:102B800006C092E0C255DF4F9883CE5AD040CD5454 -:102B9000DF4FA881C35BD040A5FF0FC080916415B3 -:102BA00090916515A0916615B0916715803896498A -:102BB000A849B10514F00C94D01E80914A158130BB -:102BC00091F4C255DF4FF881CE5AD040F23009F06F -:102BD00040C0CD54DF4F2881C35BD04020FD02C0F0 -:102BE0000C94DA1E36C080918215811132C0CD540A -:102BF000DF4F3881C35BD04030FF1BC080914B1545 -:102C0000813039F523E333E34BEC51E46091531504 -:102C10007091541580915515909156150E94DB7452 -:102C200060935315709354158093551590935615D2 -:102C300010C080918F1590919015A0919115B09131 -:102C400092158093531590935415A0935515B093F6 -:102C50005615CD54DF4F88819981C35BD04090FDDC -:102C600010C080918B1590918C15A0918D15B0910D -:102C70008E158093701590937115A0937215B09373 -:102C80007315809148158130B9F4CD54DF4F988188 -:102C9000C35BD04096FD03C08CE10C942F1FCD5434 -:102CA000DF4FA881B981C35BD040AF7BCD54DF4FEC -:102CB000B983A883C35BD04080914D158823A1F0D0 -:102CC000813021F1CB54DF4F1882C55BD040F2E058 -:102CD000C754DF4FF883C95BD04021E0CA55DF4FAE -:102CE0002883C65AD04023C0B2E0CB54DF4FB8830C -:102CF000C55BD040E1E0C754DF4FE883C95BD040FB -:102D0000CA55DF4F1882C65AD04011C031E0CB54AB -:102D1000DF4F3883C55BD040C754DF4F1882C95B93 -:102D2000D04082E0CA55DF4F8883C65AD040809198 -:102D30004B15813049F0C255DF4F9881CE5AD040B3 -:102D4000933009F043C036C0B8E4EB2EB5E1FB2E5A -:102D500000E010E0C655DF4FA881CA5AD0408A2E45 -:102D6000912CA12CB12CD501C401002E04C0B69524 -:102D7000A795979587950A94D2F780FF12C023E311 -:102D800033E34BEC51E4F70165A576A587A590A93F -:102D90000E94DB74D7019D966D937D938D939C93D8 -:102DA000D0970F5F1F4FB4E0EB0EF11C03301105FD -:102DB000D1F6C1CF80914E15813041F4C655DF4F19 -:102DC000E881CA5AD040E43009F0ECC78CE0E4EA6C -:102DD000F5E1DE01119601900D928A95E1F7C1555A -:102DE000DF4F28813981CF5AD04031FD08C0109182 -:102DF00048151230C1F0183009F4EAC058C180916A -:102E00004F15873018F08DE10C942F1F9091871586 -:102E1000891769F3BE016F5F7F4F0E94373D88239A -:102E200009F4D4C7E4CFC655DF4F3881CA5AD04021 -:102E3000311103C08AE10C942F1FCD54DF4F8881DC -:102E40009981C35BD04080759927892B09F424CFE1 -:102E5000609168157091691580916A1590916B1554 -:102E60000E9489750E94F672673068F6809163153A -:102E7000843151F0823009F097C7CD54DF4F8881FB -:102E8000C35BD04087FD90C7CD54DF4FA881B98187 -:102E9000C35BD040AF7ACD54DF4FB983A883C35B07 -:102EA000D040662321F022242A94260E02C02090CE -:102EB0004F15BE016B5E7F4F822D0E94373D8823E8 -:102EC00009F484C7309063158090BC159090BD15AF -:102ED000A090BE15B090BF15A8E4CA2EA5E1DA2EC9 -:102EE0008E010B5E1F4FE1E8F5E1C155DF4FF9831D -:102EF000E883CF5AD040E12CF12CC655DF4FF88142 -:102F0000CA5AD0404F2E512C612C712CD301C201D2 -:102F10000E2C04C0B695A795979587950A94D2F77D -:102F200080FF3BC024E132122EC0C155DF4FA88183 -:102F3000B981CF5AD0409F962D913D914D915C9192 -:102F4000D29757966D917D918D919C915A970E9441 -:102F5000A871F60125A536A547A550A90E94A8711C -:102F6000D8016D937D938D939C931397B2E0EB12F0 -:102F700014C0A50194010E94A871F80160837183B7 -:102F8000828393830AC0F60185A596A5A7A5B0A95B -:102F9000F80180839183A283B383FFEFEF1AFF0AC6 -:102FA00024E0C20ED11C0C5F1F4FC155DF4F88813A -:102FB0009981CF5AD0400496C155DF4F99838883B9 -:102FC000CF5AD04093E0E916F10409F09FCF4CC1ED -:102FD000C655DF4FA881CA5AD040AA2309F42ACF88 -:102FE0008090BC159090BD15A090BE15B090BF15F7 -:102FF000F1E8CF2EF5E1DF2EFE0131961F0108E446 -:1030000015E1E12CF12C4A2E512C612C712CD301AD -:10301000C2010E2C04C0B695A795979587950A9482 -:10302000D2F780FF29C0D1012D913D914D915C9146 -:10303000F6016789708D818D928D0E94A871D801EB -:103040009D962D913D914D915C91D0970E94A871D4 -:10305000F80165A776A787A790ABF2E0EF1216C03C -:10306000A50194010E94A871D8019D966D937D934E -:103070008D939C93D0970AC0F60187A590A9A1A92A -:10308000B2A9F80185A796A7A7A7B0ABFFEFEF1AE3 -:10309000FF0A24E0C20ED11C34E0230E311C0C5F69 -:1030A0001F4F83E0E816F10409F0B1CFDCC0C25530 -:1030B000DF4F9881CE5AD040933009F49DC0C65559 -:1030C000DF4FA881CA5AD040AA2309F4C2C0009198 -:1030D0004C154090BC155090BD156090BE15709079 -:1030E000BF1571E8A72E75E1B72EE8E4EE2EE5E1F5 -:1030F000FE2EFE0131964F01C12CD12C8A2F90E07B -:10310000A0E0B0E0C155DF4F88839983AA83BB83D9 -:10311000CF5AD040C155DF4F88819981AA81BB81A8 -:10312000CF5AD0400C2C04C0B695A795979587959B -:103130000A94D2F780FD0BC0F5018789908DA18D8F -:10314000B28DF70185A796A7A7A7B0AB43C01730EC -:1031500009F440C001112BC0D5019F962D913D91DE -:103160004D915C91D297F40160817181828193814C -:103170000E94A971D7019D962D913D914D915C9131 -:10318000D0970E94A971F70165A776A787A790AB92 -:10319000F2E0CF121FC0A30192010E94A971D701D2 -:1031A0009D966D937D938D939C93D09713C0F5015D -:1031B0002789308D418D528DD7019D966D917D91DE -:1031C0008D919C91D0970E94A971F70165A776A770 -:1031D00087A790ABFFEFCF1ADF0A24E0A20EB11C45 -:1031E00034E0E30EF11C84E0880E911C93E0C916D4 -:1031F000D10409F08FCF29C61530A9F0173071F12D -:10320000133089F5C655DF4FA881CA5AD040A111A5 -:1032100005C0C255DF4F1882CE5AD040BE016B5E4A -:103220007F4F86E010C0C655DF4FB881CA5AD040E4 -:10323000B11105C0C255DF4F1882CE5AD040BE0131 -:103240006B5E7F4F87E00E94373D882309F4BEC53F -:103250000AC0153079F3173009F0F3C5809149158C -:10326000823008F0A3C5212C30904915E8E03E12C9 -:1032700011C0C655DF4FF881CA5AD040FF2309F468 -:1032800005C3C255DF4F2881CE5AD040213009F006 -:103290008FC511C3C255DF4F3881CE5AD04032306E -:1032A00009F0F4C2311009C0C655DF4F8881CA5AEF -:1032B000D040882309F4F1C2FEC220E030E0A90129 -:1032C0006091531570915415809155159091561534 -:1032D0000E948272882309F46DC593E0931538F03B -:1032E000A2E03A1690F4B1E03B1631F0E4C2E7E018 -:1032F000E31508F0BEC2DFC2C655DF4FF881CA5AD7 -:10330000D040FF2309F4C9C2D6C2C655DF4F288179 -:10331000CA5AD040222309F48DCDCA55DF4F988177 -:10332000C65AD040892F90E0C155DF4F99838883DA -:10333000CF5AD040C754DF4FB881C95BD040AB2FC4 -:10334000B0E0CD53DF4FB983A883C35CD04081E0A8 -:1033500090E0A0E0B0E06C017D01CA55DF4F08802D -:10336000C65AD04004C0CC0CDD1CEE1CFF1C0A94D5 -:10337000D2F7C754DF4F0880C95BD04004C0880F24 -:10338000991FAA1FBB1F0A94D2F7C82AD92AEA2A72 -:10339000FB2A822F90E0A0E0B0E08C219D21AE219D -:1033A000BF21892B8A2B8B2B09F406C5C155DF4F12 -:1033B00088819981CF5AD040880F991F880F991F13 -:1033C000FC01E85BFA4EDC01AF57BA4E57962D91DF -:1033D0003D914D915C915A9765A576A587A590A9D9 -:1033E0000E94A8714B015C01CD53DF4F8881998108 -:1033F000C35CD040880F991F880F991FFC01E85BC0 -:10340000FA4EDC01AF57BA4E57962D913D914D9132 -:103410005C915A9765A576A587A590A90E94A87189 -:10342000C655DF4F688379838A839B83CA5AD0400D -:10343000CD54DF4F08811981C35BD040007811273C -:10344000CD54DF4FE881C35BD040E7FF15C1CD54B9 -:10345000DF4F28813981C35BD0402F77CD54DF4FB8 -:1034600039832883C35BD0400E94C76B882311F047 -:1034700081E2F5C480914B158130B1F423E333E34D -:103480004BEC51E460916C1570916D1580916E1547 -:1034900090916F150E94DB7460936C1570936D159D -:1034A00080936E1590936F1540906C1550906D152C -:1034B00060906E1570906F15A5019401C501B4015F -:1034C0000E94DB74C154DF4F688379838A839B83B6 -:1034D000CF5BD040C655DF4F288139814A815B815F -:1034E000CA5AD040CA01B9010E94DB74C554DF4FEB -:1034F000688379838A839B83CB5BD04020E030E074 -:1035000040E850E4C301B2010E94DB74A3019201C0 -:103510000E94DB74C154DF4F288139814A815B816D -:10352000CF5BD0400E94A871C554DF4F28813981FC -:103530004A815B81CB5BD0400E94A8716B017C010A -:1035400020E030E0A9010E94827287FD37C4C701E4 -:10355000B6010E9448756B017C01C554DF4F28817C -:1035600039814A815B81CB5BD040C154DF4F688198 -:1035700079818A819B81CF5BD0400E94A9710E9492 -:1035800048759B01AC01C701B60190580E94897231 -:103590006B017C0133E0331204C0F7FAF094F7F8C2 -:1035A000F09420E030E0A901C301B2010E948272D0 -:1035B00087FF0FC0F7FAF094F7F8F094D301C20137 -:1035C000B05880936C1590936D15A0936E15B093C1 -:1035D0006F15C155DF4F08811981CF5AD040000FB8 -:1035E000111F000F111F045B1A4EC655DF4F2881B3 -:1035F00039814A815B81CA5AD040C701B6010E9415 -:10360000DB749B01AC01C501B4010E94A87120E0EC -:1036100030E040E05FE30E94DB74D8011B966D93BD -:103620007D938D939C931E97CD53DF4F0881198115 -:10363000C35CD040000F111F000F111F045B1A4E16 -:10364000A5019401C701B6010E94DB74C655DF4F86 -:10365000288139814A815B81CA5AD0400E94A97170 -:1036600020E030E040E05FE30E94DB74F801638714 -:103670007487858796871FC1C154DF4FF881CF5B60 -:10368000D0404F2E512C612C712CC420D520E62027 -:10369000F720CD28CE28CF2809F492C3CD54DF4F90 -:1036A00028813981C35BD040217FCD54DF4F3983DE -:1036B0002883C35BD04080914B15813009F491C0C1 -:1036C000C155DF4FE881F981CF5AD040EE0FFF1F7F -:1036D000EE0FFF1FE45BFA4EC384D484E584F684C6 -:1036E000A7019601C501B4010E94A8712B013C01FC -:1036F000CD53DF4FE881F981C35CD040EE0FFF1F4F -:10370000EE0FFF1FE45BFA4E83859485A585B68591 -:10371000C155DF4F88839983AA83BB83CF5AD0409A -:103720009C01AD01C655DF4F688179818A819B81FB -:10373000CA5AD0400E94A8714B015C01A3019201BA -:10374000C301B2010E94DB742B013C01A50194016D -:10375000C501B4010E94DB749B01AC01C301B2013D -:103760000E94A9710E9448754B015C01A701960156 -:10377000C701B6010E94DB746B017C01C155DF4FAC -:10378000288139814A815B81CF5AD040CA01B90171 -:103790000E94DB749B01AC01C701B6010E94A971B4 -:1037A0000E9448756B017C0160936C1570936D15D8 -:1037B00080936E1590936F159B01AC01C501B40108 -:1037C0000E94A8714B015C01E894B7F82AE037ED3C -:1037D00043EA5BE3C501B4010E94A074181664F1CA -:1037E0006AC088E4E82E85E1F82ED301C201002EDC -:1037F00004C0B695A795979587950A94D2F780FF50 -:1038000012C023E333E34BEC51E4D7011F966D91D3 -:103810007D918D919C9152970E94DB74F70167878F -:10382000708B818B928B0F5F1F4FF4E0EF0EF11CBA -:1038300003301105D1F644CF20E030E040E05FE3F3 -:10384000C501B4010E94A07418160CF411CE2FE625 -:1038500032E143E85AE3C701B6010E94DB749B01E1 -:10386000AC01C501B4010E94A07418160CF400CE7E -:1038700022C0C655DF4F2881CA5AD040222309F4FE -:10388000D9CA0E94C76B8111F3CD15C0C255DF4F55 -:103890003881CE5AD04031110EC0CD54DF4F8881CF -:1038A0009981C35BD0408E7D9C7FC255DF4F1882CB -:1038B000CE5AD04008C0CD54DF4F88819981C35B78 -:1038C000D0408E7D907E892B09F07CC2809164155A -:1038D00090916515A0916615B09167158093941528 -:1038E00090939515A0939615B093971580914A15CE -:1038F000809382158091531590915415A091551580 -:10390000B091561580938F1590939015A0939115B3 -:10391000B0939215C0907015D0907115E09072150B -:10392000F0907315A701960160918B1570918C151D -:1039300080918D1590918E150E9482728823F9F0E6 -:1039400010918A15112359F080912B15823039F08E -:103950000E94AA6BB701A601812F0E94D23B8091E1 -:10396000701590917115A0917215B0917315809397 -:103970008B1590938C15A0938D15B0938E15809117 -:103980007415809393151091521580918A158117A3 -:10399000B9F080912B15823079F0C0908B15D090C2 -:1039A0008C15E0908D15F0908E150E94AA6BB701D2 -:1039B000A601812F0E94D23B8091521580938A15D7 -:1039C0001091511580918915811781F080912B15E7 -:1039D000823041F00E94AA6B123011F45C9A02C04E -:1039E0000E94CD5F80915115809389158091481573 -:1039F000813089F080914D158093851580914B150C -:103A000080938315C255DF4F8881CE5AD0408330D2 -:103A100009F074C054C080912B15823059F3809006 -:103A2000681590906915A0906A15B0906B1520E00C -:103A300030E040EA51E4C501B4010E94DB740E9409 -:103A40005F730E94F6726B017C010E94AA6B20E0FA -:103A500030E04AE754E4C501B4010E94DB744B0135 -:103A60005C0182E38C9DB0018D9D700D112480E07E -:103A700090E00E9422739B01AC01C501B4010E9439 -:103A8000A8710E945F730E94F672CB010E941245DA -:103A900086010115110509F4ADCF0E94B53301501F -:103AA000110980912A158111A5CF9FEFA0E7B2E0FF -:103AB0009150A040B040E1F700C00000EACF8091F3 -:103AC0004E1580938615813089F480917D159091F3 -:103AD0007E15A0917F15B09180158093BC159093B1 -:103AE000BD15A093BE15B093BF1508C01092BC15AC -:103AF0001092BD151092BE151092BF1580914F15F2 -:103B000090918715981759F0809387158CE0FE01E6 -:103B10003196A4EAB5E101900D928A95E1F7809182 -:103B20004C1580938415E09148158E2F90E0FC0190 -:103B30003297E830F10508F060C08827E957FF4F59 -:103B40008F4F0C941976BE016B5E7F4F822D0E94C1 -:103B5000673080918715281250C08CE0FE01759661 -:103B6000A4EAB5E13EC0C255DF4FE881CE5AD0404D -:103B7000EE2371F020918F153091901540919115A1 -:103B80005091921500E065E775E181E00E940846DA -:103B900020918F153091901540919115509192156B -:103BA00000E0BE016B5E7F4F81E00E940846182F47 -:103BB0008CE0FE017596A8E9B5E101900D928A9519 -:103BC000E1F71CC068E975E186E003C068E975E1CA -:103BD00087E00E94673011C08CE0E5E7F5E1A0EBDB -:103BE000B5E101900D928A95E1F707C08CE0E0EB1A -:103BF000F5E1DF011D928A95E9F710E08091491502 -:103C000080938115883009F470C0C255DF4FB881A8 -:103C1000CE5AD040B23009F068C090E088309105AB -:103C200008F05AC0FC0140908F155090901560909C -:103C30009115709092158827E157FF4F8F4F0C9484 -:103C4000197600E0A301920165E775E180E007C005 -:103C500000918215A301920165E775E181E00E9460 -:103C60000846182F39C060916C1570916D158091C0 -:103C70006E1590916F158824839409C060916C151E -:103C800070916D1580916E1590916F15812CCB54AC -:103C9000DF4FA880C55BD040C754DF4FC880C95BE9 -:103CA000D040CA55DF4FE880C65AD04000918215F7 -:103CB000A30192010E949B6C0FC000E001C001E0D3 -:103CC00020E004C000E001C001E021E04091821545 -:103CD000C301B2010E94056C8CE0E5E7F5E1A8E9BB -:103CE000B5E101900D928A95E1F78091501580938E -:103CF0008815882309F468C00E94AA6B90918815E2 -:103D000080912B15913069F48230E9F19FB7F894D6 -:103D10008091D91488608093D9149FBF0E94B533D5 -:103D200032C091E090938115109285151092841500 -:103D3000109282151092871510928A15109289158B -:103D40008230A9F0BE016F5F7F4F80E00E94373D57 -:103D50008823E1F18CE0FE013196A4EAB5E10190FF -:103D60000D928A95E1F70E94CB3B0E94CD5F86EDD4 -:103D700098E00E940B408AE798E00E940B4083E69F -:103D800098E00E940B40109288151EC081E067C029 -:103D900082E065C088E163C089E161C084E05FC002 -:103DA0008BE15DC085E25BC084E159C08EE157C004 -:103DB0008FE155C086E153C080E251C082E24FC01E -:103DC00083E24DC084E24BC0812F49C087E047C0E9 -:103DD000EEE14E16510411F40C948F0D70F42AE0AC -:103DE0004216510411F40C946B0D3CE1431651043E -:103DF00011F40C94780D87E132C085E34816510424 -:103E000011F40C94AF0D9CE549165104A1F721144F -:103E1000310439F0BAE02B16310431F689E00C9404 -:103E2000930D88E00C94930D3CE54316510411F07A -:103E30000C94EA0EA1E0C255DF4FA883CE5AD040C1 -:103E4000E6CF133009F00FCAE4C9153009F4F7C9F9 -:103E5000173009F403CA133009F005CADFC9C85383 -:103E6000DF4F0FB6F894DEBF0FBECDBFDF91CF910D -:103E70001F910F91FF90EF90DF90CF90BF90AF9088 -:103E80009F908F907F906F905F904F903F902F907A -:103E900008952F923F924F925F926F927F928F92EE -:103EA0009F92AF92BF92CF92DF92EF92FF920F93C9 -:103EB0001F93CF93DF93CDB7DEB7C459D1090FB6A7 -:103EC000F894DEBF0FBECDBFFB01873A28E0920712 -:103ED00009F480C208F046C08B34A8E09A0709F4C0 -:103EE00045C1F0F4833E27E0920709F4FFC060F477 -:103EF0008231910509F4FAC08C3C910509F493C014 -:103F0000419709F075C078C08934A8E09A0709F490 -:103F100012C108F018C18834984009F4C2C068C0C2 -:103F20008D3938E0930709F4E6C178F48A39B8E0AE -:103F30009B0709F488C18B3928E0920709F4BEC1B8 -:103F40008939984009F054C024C1823AA8E09A0700 -:103F500009F404C208F44CC0863A984010F40C945A -:103F60005F2946C0803C28E0920709F4AAC508F5FD -:103F7000873BA8E09A0709F453C570F48D3A28E00E -:103F8000920709F43AC38E3A38E0930709F443C420 -:103F90008C3A984069F524C2893BB8E09B0709F444 -:103FA0006EC508F45CC58A3B984011F40C945F29F7 -:103FB0001FC08A36A9E09A0709F44FC770F480360B -:103FC00029E0920709F40CC6813639E0930709F419 -:103FD000EDC6813C984061F49FC58C36B9E09B07E3 -:103FE00009F4B6C708F485C7843C994009F4F7C7BB -:103FF00081E090E00C9461298091181582FF08C03F -:104000008A9A809108018160809308015F9A07C0B5 -:104010008A98809108018E7F809308015F980E94A2 -:104020007A2D8FE00CC18E010F5F1F4F1F930F93EE -:1040300087EC93E09F938F93FF936F930E947A7620 -:104040000F900F900F900F900F900F901816190669 -:104050000CF09DC71D8A1E8A1F8A188EAE014B5E0A -:104060005F4F60E070E0C8010E941D458823D1F1D8 -:104070004D895E896F89788D88E70E94353C4D892E -:104080005E896F89788D89E70E94353C4D895E890C -:104090006F89788D8AE70E94353C0E94623E0C94BD -:1040A0005F298E010F5F1F4F1F930F9382ED93E0E7 -:1040B0009F938F93FF936F930E947A760F900F9048 -:1040C0000F900F900F900F90181619060CF05FC705 -:1040D000AE014B5E5F4F60E070E0C8010E941D457D -:1040E000811108C082E390E00C9461290E94BF2CEA -:1040F0000C945F2920E030E04AE754E46D897E8922 -:104100008F89988D0E94DB740E94F1721616170633 -:1041100094F47093190D6093180D11E010931A0D1B -:104120008091170D81110C945F290E94FB2B109335 -:10413000170D0C945F2910921A0D1092190D109200 -:10414000180D0C945F298081863561F6818180533A -:10415000823040F61092980D813021F01092970D28 -:104160000C945F298093970D0C945F29808186358C -:1041700009F0B8CF81818053823008F0B3CF81300D -:1041800021F010929D0D0C945F2980939D0D0C944D -:104190005F2980818E3409F0A5CF918190539430AE -:1041A00008F0A0CF923079F1933009F443C0209108 -:1041B00018158091940D913099F022FF08C08A9AC9 -:1041C000909108019160909308015F9A07C08A98C6 -:1041D000909108019E7F909308015F9884602FC0A2 -:1041E00022FF08C08A9A909108019160909308017B -:1041F0005F9A07C08A98909108019E7F909308016A -:104200005F9881601CC08091181582FF08C08A9A4F -:10421000809108018160809308015F9A07C08A98A5 -:10422000809108018E7F809308015F988091940DA2 -:10423000826005C00E947A2D8091940D88608093E1 -:10424000940D0C945E2980818E3409F04BCF9181BE -:104250009053943008F046CF9230B1F0933029F16A -:10426000209118158091940D913039F022FF02C0F1 -:104270005F9801C05F9A8B7F1DC022FF02C08A98A1 -:1042800001C08A9A8E7F16C08091181582FF04C0E3 -:10429000809108018E7F03C0809108018160809326 -:1042A00008018091940D8D7F05C00E94B12C8091F2 -:1042B000940D877F8093940D0C945F2980818E34B8 -:1042C00009F010CF81818053843008F00BCF90919A -:1042D000940D823051F0833059F0813019F090FF05 -:1042E00098C394C391FD92C394C392FD8FC391C3AD -:1042F00093FF8FC38BC38E010F5F1F4F1F930F93CD -:104300008BED93E09F938F93FF936F930E947A7648 -:104310000F900F900F900F900F900F901816190696 -:104320000CF035C68CE0F801ABE1BDE001900D92D8 -:104330008A95E1F70BE11DE08AEE93E0D8016D91DB -:104340008D017C01BFEFEB1AFB0A0E94265FC701BB -:10435000E6EFEE16E3E0FE0689F7B1C71AA619A646 -:104360001D8A1E8A1F8A188E8E010F5F1F4F8AE0DA -:10437000D8011D928A95E9F7CE0189969F938F9374 -:104380001F930F9386EE93E09F938F93FF936F930A -:104390000E947A760FB6F894DEBF0FBECDBF0297AB -:1043A0000CF4F5C5AE014B5E5F4F60E070E0C801F4 -:1043B0000E941D45882309F495CE2D893E894F8999 -:1043C000588D69A57AA5072E000C880B990B0E94C1 -:1043D000162C75C78FEF0E94583D0E94722B6FC735 -:1043E0002E0125E6420E511C84E1D201282F1D9298 -:1043F0002A95E9F73E0131E5630E711CD301282FA0 -:104400001D922A95E9F78E01035C1F4FD8011D927A -:104410008A95E9F7C357DF4F188219821A821B82E7 -:10442000CD58D040C757DF4F188219821A821B829D -:10443000C958D040CB57DF4F188219821A821B828D -:10444000C558D0401F930F937F926F925F924F9207 -:1044500082EF93E09F938F93FF936F930E947A76FE -:104460000FB6F894DEBF0FBECDBF03970CF48FC517 -:10447000AE0143575F4F60E070E0C2010E941D45EE -:10448000882309F42FCEAE0147575F4F60E070E0FC -:10449000C3010E941D45882309F424CEAE014B5769 -:1044A0005F4F60E070E0C8010E941D45882309F459 -:1044B00019CECF57DF4F188219821A821B82C1583A -:1044C000D040C358DF4F188219821A821B82CD5701 -:1044D000D040ED961CAE1DAE1EAE1FAEED9784E132 -:1044E0003E01F9E26F0E711CD301E82F1D92EA958F -:1044F000E9F72E01F5E14F0E511CD201E82F1D9274 -:10450000EA95E9F79E012F5F3F4F1901D9011D92EE -:104510008A95E9F7AE014B575F4FBE0167577F4F52 -:10452000CE0183579F4F0E94BC2FCB57DF4FE880AF -:10453000F9800A811B81C558D040C757DF4F2881B9 -:1045400039814A815B81C958D040C357DF4F6881A8 -:1045500079818A819B81CD58D040FE01EF57FF4F72 -:104560004F01DE01A758BF4F5D0134976F010E94D4 -:10457000C24A20E030E044EB52E4CF57DF4F68817D -:1045800079818A819B81C158D0400E94A971CF57FF -:10459000DF4F688379838A839B83C158D040C35897 -:1045A000DF4F688179818A819B81CD57D04082011C -:1045B00024E045E00E942D6FED966CAD7DAD8EAD93 -:1045C0009FADED97810124E045E00E942D6FCF570C -:1045D000DF4F688179818A819B81C158D0408301F6 -:1045E00024E045E00E942D6F3F922F925F924F9200 -:1045F0007F926F928CEA92E000C12E0135E6430E65 -:10460000511C84E1D201282F1D922A95E9F73E0121 -:1046100031E5630E711CD301282F1D922A95E9F70D -:104620008E01035C1F4FD8011D928A95E9F7C3578D -:10463000DF4F188219821A821B82CD58D040C7578B -:10464000DF4F188219821A821B82C958D040CB577B -:10465000DF4F188219821A821B82C558D0401F93DF -:104660000F937F926F925F924F9281E194E09F93BC -:104670008F93FF936F930E947A760FB6F894DEBF04 -:104680000FBECDBF03970CF482C4AE0143575F4FFA -:1046900060E070E0C2010E941D45882309F422CD2C -:1046A000AE0147575F4F60E070E0C3010E941D45B7 -:1046B000882309F417CDAE014B575F4F60E070E0DF -:1046C000C8010E941D45882309F40CCDCF57DF4F48 -:1046D000188219821A821B82C158D040C358DF4FFA -:1046E000188219821A821B82CD57D040ED961CAEDB -:1046F0001DAE1EAE1FAEED9784E13E01F9E26F0ED6 -:10470000711CD301E82F1D92EA95E9F72E01F5E11E -:104710004F0E511CD201E82F1D92EA95E9F79E0138 -:104720002F5F3F4F1901D9011D928A95E9F720E0CB -:1047300030E044EB52E4C357DF4F688179818A81CE -:104740009B81CD58D0400E94A8717B018C01C3573A -:10475000DF4F688379838A839B83CD58D040CB57C2 -:10476000DF4F288139814A815B81C558D040C757C6 -:10477000DF4F688179818A819B81C958D040FE01D1 -:10478000E758FF4F4F01DE01A358BF4F5D01389638 -:104790006F010E94784CA401B501C6010E94194A1C -:1047A000CF57DF4F688179818A819B81C158D04082 -:1047B000830124E045E00E942D6FC358DF4F6881DC -:1047C00079818A819B81CD57D040820124E045E0E8 -:1047D0000E942D6FED966CAD7DAD8EAD9FADED97CA -:1047E000810124E045E00E942D6F3F922F925F925D -:1047F0004F927F926F928CED92E09F938F9388E21D -:104800009DE09F938F930E944C760FB6F894DEBF85 -:104810000FBECDBF54C5CF57DF4F188219821A8201 -:104820001B82C158D040C358DF4F188219821A82A8 -:104830001B82CD57D040ED961CAE1DAE1EAE1FAEF6 -:10484000ED9784E12E0139E2430E511CD201282F4D -:104850001D922A95E9F73E0135E1630E711CD301E3 -:10486000282F1D922A95E9F7DE0111967D011D92F0 -:104870008A95E9F78E010B571F4F8FEF90E0D80113 -:104880008D939C931F930F93FF92EF927F926F9261 -:104890005F924F9280E394E09F938F93FF936F9387 -:1048A0000E947A760FB6F894DEBF0FBECDBF049794 -:1048B0000CF46DC3AE014F575F4F60E070E0C20172 -:1048C0000E941D45882309F40DCCAE0143585F4F6B -:1048D00060E070E0C3010E941D45882309F402CC0A -:1048E000AE0147585F4F60E070E0C7010E941D4570 -:1048F000882309F4F7CBD8018D919C91009709F496 -:1049000043C0019709F0EECBCF57DF4F4880598065 -:104910006A807B80C158D04020E030E044EB52E414 -:10492000C358DF4F688179818A819B81CD57D04000 -:104930000E94A87121EE3EE245E652E40E9489728F -:104940006B017C010E9486729B01AC01C301B20124 -:104950000E94DB74CF57DF4F688379838A839B8300 -:10496000C158D040C701B6010E943E759B01AC0101 -:10497000C301B2010E94DB74C358DF4F688379839F -:104980008A839B83CD57D040AE0147585F4FBE010D -:1049900063587F4FCE018F579F4F0E94BC2FED96DB -:1049A000ECACFDAC0EAD1FADED97C358DF4F2881C9 -:1049B00039814A815B81CD57D040CF57DF4F688125 -:1049C00079818A819B81C158D040FE01FD964F01BB -:1049D000DE01AF5ABF4F5D01B8966F010E94C24A17 -:1049E0002196ECACFDAC0EAD1FAD219765962CADBC -:1049F0003DAD4EAD5FAD6597A9966CAD7DAD8EAD0D -:104A00009FADA9970E94EE4D882319F066ED73E0E3 -:104A100002C062EC73E088E29DE00E9445764FC4DC -:104A20008081863509F05ECB81818053823008F029 -:104A300059CB813049F080915A0D90915B0D0197CF -:104A400009F03DC4BBD53BC49C9A9D9AA49AA598F5 -:104A500081E090E090935B0D80935A0D30C480818B -:104A6000863509F03FCB81818053823008F03ACB04 -:104A7000813011F034D623C43F9A479820C48081F6 -:104A8000863509F02FCB81818053823008F02ACB04 -:104A9000813011F013D613C480910101806280939C -:104AA00001018091010180648093010180910201E4 -:104AB00080628093020180910201806480930201F0 -:104AC000FEC3CE0101969F938F9344969F938F933D -:104AD00082E594E09F938F93FF936F930E947A7681 -:104AE0000FB6F894DEBF0FBECDBF02970CF44FC2D5 -:104AF0008D899E898634910508F0F4CA29813A810E -:104B00002230310508F0EECA232B11F061E001C01C -:104B100060E00E94D95BD3C3CE0101969F938F932F -:104B200044969F938F9382E594E09F938F93FF9396 -:104B30006F930E947A760FB6F894DEBF0FBECDBF9A -:104B400002970CF424C28D899E898634910508F061 -:104B5000C9CA29813A812230310508F0C3CAFC0153 -:104B6000E05CF54F8650964F232BD1F02491FC0149 -:104B70008491882309F4A3C390E0880F991FFC0156 -:104B8000E455F84FA591B491FC01E052F64F8591A0 -:104B900094918FB7F894EC91E22BEC938FBF8FC375 -:104BA0002491FC018491882309F489C390E0880F43 -:104BB000991FFC01E455F84F45915491FC01E052D6 -:104BC000F64FA591B4919FB7F894FA018081209592 -:104BD000822380838C91E22FE823EC939FBF6FC3E5 -:104BE0008081833509F07ECA8181E0EDE80FE830ED -:104BF00008F078CA8E2F90E0FC013197E730F1057C -:104C000030F48827E956FF4F8F4F0C941976A9D6B8 -:104C10001092630D1092620D8AE999E1A5E9B2E460 -:104C20008093680D9093690DA0936A0DB0936B0DFE -:104C30008AE999E9A2E6B2E4B0C093D681E090E0B7 -:104C40009093630D8093620D86EF98E2ACE4B2E43A -:104C50008093680D9093690DA0936A0DB0936B0DCE -:104C60008DEC9CECA0E8B2E498C07BD682E090E0AA -:104C70009093630D8093620D89E29CEDA4E9B2E408 -:104C80008093680D9093690DA0936A0DB0936B0D9E -:104C900080E090E0A2E6B2E480C063D683E090E0DA -:104CA0009093630D8093620D80E090E0ACE2B2E4FB -:104CB0008093680D9093690DA0936A0DB0936B0D6E -:104CC00080E090E0ABE8B2E468C04BD684E090E0CE -:104CD0009093630D8093620D80E090E0ACE1B2E4CC -:104CE0008093680D9093690DA0936A0DB0936B0D3E -:104CF00080E090E0A9E9B2E417C033D685E090E007 -:104D00009093630D8093620D8DEC9CECA2E9B2E46C -:104D10008093680D9093690DA0936A0DB0936B0D0D -:104D200080E090E0A8E9B2E48093640D9093650D73 -:104D3000A093660DB093670DE7D5D9C012D686E073 -:104D400090E09093630D8093620D86E696E6AAE963 -:104D5000B2E48093680D9093690DA0936A0DB093AF -:104D60006B0D80E090E0AAE5B2E417C0FAD587E0C9 -:104D700090E09093630D8093620D85E89BEEABEC21 -:104D8000B1E48093680D9093690DA0936A0DB09380 -:104D90006B0D80E090E0A2E3B2E48093640D909309 -:104DA000650DA093660DB093670DA1C080E090E003 -:104DB0000E94B24E90935F0D80935E0D81E090E073 -:104DC0000E94B24E9093610D8093600D82E090E05E -:104DD0000E94B24E90935D0D80935C0D0CE51DE03A -:104DE00084E393E0D8016D918D017C01BFEFEB1A54 -:104DF000FB0A0E94265FC701EAE3EE16E3E0FE0627 -:104E000089F76BEB82E393E00E94265F0E94884E55 -:104E100080E090E00E94044F6093700D7093710DDC -:104E20008093720D9093730D81E090E00E94044F87 -:104E30006093740D7093750D8093760D9093770D3C -:104E400082E090E00E94044F6093780D7093790D9A -:104E500080937A0D90937B0D32C2609136157091DC -:104E6000371580913815909139150E9424732B01C4 -:104E70003C016091321570913315809134159091F9 -:104E800035150E942473CF56DF4F688379838A8358 -:104E90009B83C159D04060912E1570912F15809140 -:104EA0003015909131150E9424739E012F5F3F4F62 -:104EB0004901DE0155965D01FE01B9966F0183013E -:104EC0007201CF56DF4F288139814A815B81C159F8 -:104ED000D0400E945D4D89819A81AB81BC818093D5 -:104EE000680D9093690DA0936A0DB0936B0D44D437 -:104EF000E6C11D8A1E8A1F8A188E8E010F5F1F4F02 -:104F000084E1D8011D928A95E9F71F930F9389E5F3 -:104F100094E09F938F93FF936F930E947A760F9004 -:104F20000F900F900F900F900F90181619067CF5A8 -:104F3000AE014B5E5F4F60E070E0C8010E941D450E -:104F4000882309F4CFC88D899E89AF89B88D25CF74 -:104F50001D8A1E8A1F8A188E8E010F5F1F4F84E1E3 -:104F6000D8011D928A95E9F71F930F9384E694E088 -:104F70009F938F93FF936F930E947A760F900F9079 -:104F80000F900F900F900F901816190674F01F9243 -:104F900081E08F938DE092E09F938F930E94723F08 -:104FA0000F900F900F900F909DC8AE014B5E5F4F1A -:104FB00060E070E0C8010E941D45882309F492C892 -:104FC0008D899E89AF89B88D80936C0D90936D0DFE -:104FD000A0936E0DB0936F0DCFD396D470C1899806 -:104FE00068E9662E6EE0762E830182E090E00E94F2 -:104FF000B24EF801819391938F0150E9E52EFF2481 -:10500000F394889A6AE070E080E090E00E94D444D3 -:1050100088986CE271E080E090E00E94D444F1E076 -:10502000EF1AF10871F788EE93E00E9412452FE025 -:1050300000361207D1F682E090E00E94B24E9093C3 -:10504000610F8093600F899A00E21EE4889A6AE0FB -:1050500070E080E090E00E94D44488986CE271E0B7 -:1050600080E090E00E94D4440150110979F78F98B4 -:105070004EE0E42EF12C00E911E08E9A6AE070E037 -:1050800080E090E00E94D4448E986CE271E080E071 -:1050900090E00E94D4440150110979F731E0E31AFD -:1050A000F10849F788EE93E00E9412458F9A38E1A3 -:1050B000232E3EE0332E210100E010E080E090E05E -:1050C0000E94B24ED2018D939D932D0120E9E22ED4 -:1050D000FF24F3948E9A6AE070E080E090E00E94F2 -:1050E000D4448E9864EF71E080E090E00E94D44454 -:1050F000B1E0EB1AF10871F70E301105A9F088EE56 -:1051000093E00E9412450F5F1F4F0F331105B1F658 -:1051100080E090E00E94B24E9093970E8093960E9E -:105120008F9800E51DE223C080910B018D7F809355 -:105130000B01E12C92E3F92E80910B0188608093A2 -:105140000B016AE070E080E090E00E94D44480911E -:105150000B01877F80930B016CE271E080E090E0AF -:105160000E94D444E1E0EE1AF10831F7C8CF8E9ADC -:105170006AE070E080E090E00E94D4448E986CE297 -:1051800071E080E090E00E94D4440150110979F769 -:1051900088EE93E00E94124580910B01826080931B -:1051A0000B0100E913E380910B01886080930B01F0 -:1051B0006AE070E080E090E00E94D44480910B01AE -:1051C000877F80930B016CE271E080E090E00E94A9 -:1051D000D4440150110939F788EE93E00E9412453A -:1051E00080910B018D7F80930B010EE91DE028015A -:1051F00081E090E00E94B24ED2018D939D932D01EB -:1052000080E9E82EFF24F39480910B01886080935D -:105210000B016AE070E080E090E00E94D44480914D -:105220000B01877F80930B016CE271E080E090E0DE -:105230000E94D444B1E0EB1AF10831F788EE93E014 -:105240000E941245E6E14E16EEE05E0689F681E028 -:1052500090E00E94B24E9093170E8093160E81E05C -:1052600090E0D3016D913D012C01BFEF4B1A5B0A19 -:105270000E94265FC2018B3C910599F7F101619173 -:105280001F013201FFEF6F1A7F0AC2010E94265FE1 -:1052900023012BE4621621E0720681F7D8016D919B -:1052A0008D017301BFEFEB1AFB0AC3010E94265F59 -:1052B0003701E5ECEE16E1E0FE0681F78AD180E0E9 -:1052C00090E0CC56DF4F0FB6F894DEBF0FBECDBFD7 -:1052D000DF91CF911F910F91FF90EF90DF90CF90D2 -:1052E000BF90AF909F908F907F906F905F904F9006 -:1052F0003F902F90089520916A0F30916B0F2115E8 -:105300003105B9F080917A0F90917B0F8217930746 -:1053100034F4019690937B0F80937A0F0AC0109219 -:105320007B0F10927A0F10926B0F10926A0F1092EF -:10533000950D2091180D3091190D21153105A1F011 -:105340008091780F9091790F8217930734F401962A -:105350009093790F8093780F07C01092790F109275 -:10536000780F81E08093960D8091950D81111BC07F -:1053700080911A0D811117C0809173008E7F8093E8 -:1053800073001092170D10926B0F10926A0F10920B -:10539000190D1092180D10927B0F10927A0F109227 -:1053A000790F1092780F08958091770F811107C0BF -:1053B00081E08093770F80910B01806205C010928D -:1053C000770F80910B018F7D80930B018091750F7A -:1053D0009091760F9C012F5F3F4F3093760F209373 -:1053E000750F20910402309105022817390760F4E7 -:1053F0001092760F1092750F809170008E7F8093BF -:10540000700081E080939B0D08952091620D309192 -:10541000630D2430310529F426E636E646E65FE3DF -:1054200007C02530310539F526E636E646EE5FE35E -:105430000E94897220E030E040E852E40E94DB7470 -:105440000E94F1726093620F7093630F8093640FF8 -:105450009093650F89E49AE29093D3148093D214C9 -:105460001092A00085E08093A1008DEF9FEF9093B4 -:10547000D5148093D4148091D4149091D514909322 -:10548000A5008093A40080917200816080937200D7 -:1054900008958091620F9091630FA091640FB09175 -:1054A000650F181619061A061B06F4F42091740FDE -:1054B000222389F01092740F0197A109B1098093FA -:1054C000620F9093630FA093640FB093650F809168 -:1054D0000201806406C081E08093740F8091020114 -:1054E0008F7B8093020108950E94905C1092620F5E -:1054F0001092630F1092640F1092650F81E08093F9 -:105500009A0D0895CF93DF93EB018431D1F028F405 -:10551000882361F08C30A8F437C08233E9F018F4A6 -:10552000873190F10EC0833311F10BC0888188233D -:1055300029F06FE674E0CE010E943A7661E774E0EC -:1055400020C08881882329F06FE674E0CE010E9494 -:105550003A7664E774E015C08881882329F06FE605 -:1055600074E0CE010E943A7668E774E00AC0888150 -:10557000882329F06FE674E0CE010E943A766CE74A -:1055800074E0CE010E943A768091280D882379F04C -:1055900068E27DE0CE010E943A7682E3E8E2FDE037 -:1055A000DF011D928A95E9F7DF91CF91089569E7B0 -:1055B00073E0CE01DF91CF910C943A769C9A9D9A3C -:1055C000A498A59A82E090E090935B0D80935A0D89 -:1055D00008958F929F92AF92BF92CF92DF92EF92F7 -:1055E000FF920F931F93CF93DF930AE215E18EE1B1 -:1055F000F80111928A95E9F70E9426400E94205FE7 -:1056000080E090E00E94044FC2E6DDE06E877F8775 -:10561000888B998B81E090E00E94044F6A8B7B8B92 -:105620008C8B9D8B82E090E00E94044F6E8B7F8B71 -:10563000888F998FF801C480D580E680F780CA8E64 -:10564000DB8EEC8EFD8EC084D184E284F384CE8E1A -:10565000DF8EE8A2F9A204851585268537850AA381 -:105660001BA32CA33DA320E030E044EB52E40E94B6 -:10567000A8717B018C012A893B894C895D896E85E3 -:105680007F8588899989E0E98E2EEDE09E2EFCE8E1 -:10569000AF2EFDE0BF2EA8E8CA2EADE0DA2E0E94A4 -:1056A000784CDF91CF911F910F91FF90EF90DF9099 -:1056B000CF90BF90AF909F908F900895E1E0F1E080 -:1056C000808180628083808180648083E2E0F1E079 -:1056D00080818F7D808380818F7B808308953F9A36 -:1056E000479A0895809104018778809304018091FE -:1056F00003018877803451F440E050E060E87FE3B4 -:1057000084E00E94353C60E874E02AC08091030187 -:10571000887791F440E050E060E87FE384E00E9405 -:10572000353C67E874E08CE69FE00E94457640E0F7 -:1057300050E060EE70E41BC080910301887740E088 -:1057400050E060E87FE3803231F484E00E94353C31 -:105750006EE874E005C084E00E94353C65E974E0C1 -:105760008CE69FE00E94457640E050E0BA0183E07D -:105770000E94353C0C94623E0F931F93CF93DF93AE -:105780006091620D84E893E00E94265F6091630D52 -:1057900085E893E00E94265FC4E6DDE088E993E0B7 -:1057A00069918C010F5F1F4F0E94265FC8010C3961 -:1057B0001340B1F7C8E6DDE08EE893E069918C0113 -:1057C0000F5F1F4F0E94265FC80102391340B1F7D7 -:1057D000CCE6DDE082E89CE069918C010F5F1F4F11 -:1057E0000E94265FC80106381C40B1F7DF91CF91B7 -:1057F0001F910F910895EBE7F4E18BE799E2918314 -:1058000080831092200185E08093210181EF9FEF3A -:1058100093838283828193819093250180932401D5 -:10582000E3E7F0E08081816080830895CF92DF928A -:10583000EF92FF920F931F93CF93DF9369017A0149 -:1058400010929B0DEAE0F1E0208120622083EBE0E2 -:10585000F1E020812F7D2083660F771F7093050272 -:105860006093040204E714E184ED99E2F801918366 -:105870008083C0E7D0E088818E7F8883E0EBF0E012 -:1058800080818C7F8083E1EBF0E08081877F808363 -:10589000A6EBB0E08C918F7D8C9388818D7F88837F -:1058A00080818460808380818C7F808320E034E2EB -:1058B00044EF59E4C701B6010E94897220E034E246 -:1058C00044E75BE40E94DB7420E030E040E85CE306 -:1058D0000E94DB740E94F17220E031E0C901861B56 -:1058E000970BF80193838283828193818093B20026 -:1058F000888181608883DF91CF911F910F91FF9004 -:10590000EF90DF90CF900895CF93C1E0C0939A0DB0 -:105910008091620D9091630D0497029700F51092AB -:105920009A0D1092660F1092670F1092680F1092E6 -:10593000690F809107018F7D809307018091080195 -:10594000806280930801809102018062809302014D -:1059500060E070E084EB93E458DDC093990DCF9143 -:1059600008951092620F1092630F1092640F1092BC -:10597000650F0E94905C1092990D0C94905C809140 -:10598000181582FF08C08A98809108018E7F809345 -:1059900008015F9807C08A9A80910801816080930E -:1059A00008015F9ADEDF1092940D08958F929F9206 -:1059B000AF92BF92CF92DF92EF92FF926B017C0188 -:1059C00020E030E044EB53E40E94A07418160CF47D -:1059D00088C020E030E0A901C701B6010E948272B0 -:1059E00087FD7FC08091620D9091630D04970297AF -:1059F000B8F52091660F3091670F4091680F509174 -:105A0000690FC701B6010E94A8714B015C0120E03B -:105A100030E0A9010E948272882309F462C0C0921A -:105A2000660FD092670FE092680FF092690F20E046 -:105A300030E0A901C501B4010E94A074181624F435 -:105A4000809102018F7D03C080910201806280936A -:105A50000201C501B4019F77D8DC10929A0D41C0B4 -:105A600020E030E044E353E4C701B6010E94A07493 -:105A700018161CF4C12CD12C7601A701960160E008 -:105A800070E084E393E40E94A87120E030E044E3F6 -:105A900053E40E9489729B01AC010E94A97120E02D -:105AA00030E040E05FE30E94A971609300027093D0 -:105AB0000102809302029093030220E030E040EA6A -:105AC00051E40E94897220E030EC4FE754E40E94D8 -:105AD000DB740E94F672CB010E94425B81E08093EE -:105AE0009A0DFF90EF90DF90CF90BF90AF909F9076 -:105AF0008F9008958091620D9091630D04970297A5 -:105B000080F4809101018062809301018091010104 -:105B10008064809301018091020180628093020180 -:105B2000089580E18093A1001092A00082E080930C -:105B3000D81480E29EE49093D7148093D614909367 -:105B4000A7008093A60082E18093A10020E030E0CE -:105B500040EA51E4609100027091010280910202DA -:105B6000909103020E94897220E030EC4FE754E4E8 -:105B70000E94DB740E94F672CB010C94425BCF93BF -:105B8000DF93D82FC8E05E98559AD7FF02C05D9A80 -:105B900001C05D9865E070E080E090E00E94D44430 -:105BA0005E9A65E070E080E090E00E94D4445E98E8 -:105BB000DD0F65E070E080E090E00E94D444C150C9 -:105BC00011F762E070E080E090E00E94D444559AC2 -:105BD0005D9A62E070E080E090E0DF91CF910C94FC -:105BE000D4445E98559A5D9865E070E080E090E05E -:105BF0000E94D4445E9A65E070E080E090E00E94EC -:105C0000D444559A5D9A65E070E080E090E00C9491 -:105C1000D444CF93559A5D9A62E070E080E090E0C2 -:105C20000E94D4445E9A62E070E080E090E00E94BE -:105C3000D44455988BEF99B1C92FC07295FF05C018 -:105C40008150C9F7CEDFC1E007C05E9862E070E026 -:105C500080E090E00E94D4448C2FCF910895559A13 -:105C60005D9A5E9A65E070E080E090E00E94D44426 -:105C7000559A5D9865E070E080E090E00E94D44421 -:105C80005E9862E070E080E090E00C94D444CF93A2 -:105C9000DF93D82FC8E0809102018F7780930201B3 -:105CA0008091010184608093010180910201D7FFFE -:105CB00002C0846001C08B7F8093020165E070E0C8 -:105CC00080E090E00E94D44480910201806880933B -:105CD000020165E070E080E090E00E94D444809191 -:105CE00002018F7780930201DD0F65E070E080E0B4 -:105CF00090E00E94D444C15071F662E070E080E010 -:105D000090E00E94D444809101018460809301015D -:105D10008091020184608093020162E070E080E083 -:105D200090E0DF91CF910C94D4440F931F93CF93C5 -:105D3000DF93C2E0D1E088818F77888301E011E0B2 -:105D4000F80180818460808388818B7F888365E00F -:105D500070E080E090E00E94D4448881806888836D -:105D600065E070E080E090E00E94D444F80180811A -:105D70008460808388818460888365E070E080E04F -:105D800090E0DF91CF911F910F910C94D444CF9369 -:105D900080910101846080930101809102018460FF -:105DA0008093020162E070E080E090E00E94D444C1 -:105DB0008091020180688093020162E070E080E0DF -:105DC00090E00E94D444809101018B7F8093010177 -:105DD0008BEF90910001C92FC47092FF05C08150D4 -:105DE000C1F7A3DFC1E00BC0809102018F778093E0 -:105DF000020162E070E080E090E00E94D4448C2FC9 -:105E0000CF9108950F931F93CF93DF9301E011E09B -:105E1000F801808184608083C2E0D1E08881846061 -:105E2000888388818068888365E070E080E090E006 -:105E30000E94D444F80180818460808388818B7FB4 -:105E4000888365E070E080E090E00E94D44488811F -:105E50008F77888362E070E080E090E0DF91CF91FF -:105E60001F910F910C94D444CF93DF93D82FC8E0A7 -:105E70004398399AD7FF02C0419A01C0419865E022 -:105E800070E080E090E00E94D444439A65E070E0C6 -:105E900080E090E00E94D4444398DD0F65E070E01C -:105EA00080E090E00E94D444C15011F762E070E0BD -:105EB00080E090E00E94D444399A419A62E070E018 -:105EC00080E090E0DF91CF910C94D4444398399ACC -:105ED000419865E070E080E090E00E94D444439AED -:105EE00065E070E080E090E00E94D444399A419AE5 -:105EF00065E070E080E090E00C94D444CF93399A50 -:105F0000419A62E070E080E090E00E94D444439ABD -:105F100062E070E080E090E00E94D44439988BEF1A -:105F200096B1C92FC27091FF05C08150C9F7CEDF6D -:105F3000C1E007C0439862E070E080E090E00E941A -:105F4000D4448C2FCF910895399A419A439A65E0B1 -:105F500070E080E090E00E94D444399A419865E076 -:105F600070E080E090E00E94D444439862E070E0EA -:105F700080E090E00C94D4444F925F926F927F92B5 -:105F8000AF92BF92CF92DF92EF92FF920F931F9347 -:105F9000CF93DF935C01EB018A01FC0140805180CB -:105FA0006280738020E030E0A901C301B2010E9449 -:105FB000827220E030E0A901811111C068817981ED -:105FC0008A819B810E94A0741816E4F02AEDC22EEB -:105FD0002FE0D22E29ECE22E2FEBF22E22C0C301AD -:105FE000B2010E94827287FD16C0A30192016881EE -:105FF00079818A819B810E9489720E9447726B011C -:106000007C010FC09AEDC92E9FE0D92E99ECE92EA4 -:106010009FE3F92E06C0C12CD12C80ECE82E8FE72F -:10602000F82EC701B6010E9486722091640D30914E -:10603000650D4091660D5091670D0E94DB749B01C8 -:10604000AC01C301B2010E94A871F50160837183A4 -:1060500082839383C701B6010E943E752091640D2F -:106060003091650D4091660D5091670D0E94DB7473 -:106070009B01AC01688179818A819B810E94A87112 -:10608000688379838A839B832091680D3091690DA1 -:1060900040916A0D50916B0DF80160817181828190 -:1060A00093810E94A971F801608371838283938335 -:1060B000DF91CF911F910F91FF90EF90DF90CF90E4 -:1060C000BF90AF907F906F905F904F9008952DE0BC -:1060D000829FC00111244CE050E0965F0C94485F11 -:1060E0001F920F920FB60F9211240BB60F922F939F -:1060F0003F934F935F936F937F938F939F93AF9350 -:10610000BF93EF93FF938091360123E030E030930B -:106110008110209380108F33A9F050F4883109F159 -:10612000813211F59FB7F8948091D914886015C019 -:10613000803471F08E37C1F49FB7F8948091D914F0 -:1061400082600BC09FB7F8948091D914816005C01C -:106150009FB7F8948091D91480628093D9149FBF1F -:1061600014C00E94DD4511C0E091FD0F91E09E0F2B -:10617000903809F490E02091FC0F921731F0F0E094 -:10618000E458F04F80839093FD0FFF91EF91BF9102 -:10619000AF919F918F917F916F915F914F913F91BF -:1061A0002F910F900BBE0F900FBE0F901F90189560 -:1061B0001F920F920FB60F9211240BB60F922F93CE -:1061C0003F934F935F936F937F938F939F93AF937F -:1061D000BF93EF93FF938091D60022E030E030939D -:1061E0008110209380108F33A9F050F4883109F189 -:1061F000813211F59FB7F8948091D914886015C049 -:10620000803471F08E37C1F49FB7F8948091D9141F -:1062100082600BC09FB7F8948091D914816005C04B -:106220009FB7F8948091D91480628093D9149FBF4E -:1062300014C00E94DD4511C0E091FD0F91E09E0F5A -:10624000903809F490E02091FC0F921731F0F0E0C3 -:10625000E458F04F80839093FD0FFF91EF91BF9131 -:10626000AF919F918F917F916F915F914F913F91EE -:106270002F910F900BBE0F900FBE0F901F9018958F -:106280001F920F920FB60F9211240BB60F922F93FD -:106290003F934F935F936F937F938F939F93AF93AE -:1062A000BF93EF93FF938091CE0021E030E03093D5 -:1062B0008110209380108F33A9F050F4883109F1B8 -:1062C000813211F59FB7F8948091D914886015C078 -:1062D000803471F08E37C1F49FB7F8948091D9144F -:1062E00082600BC09FB7F8948091D914816005C07B -:1062F0009FB7F8948091D91480628093D9149FBF7E -:1063000014C00E94DD4511C0E091FD0F91E09E0F89 -:10631000903809F490E02091FC0F921731F0F0E0F2 -:10632000E458F04F80839093FD0FFF91EF91BF9160 -:10633000AF919F918F917F916F915F914F913F911D -:106340002F910F900BBE0F900FBE0F901F901895BE -:106350001F920F920FB60F9211240BB60F922F932C -:106360003F934F935F936F937F938F939F93AF93DD -:10637000BF93EF93FF938091C6001092811010920B -:1063800080108F33A9F050F4883109F1813211F572 -:106390009FB7F8948091D914886015C0803471F04B -:1063A0008E37C1F49FB7F8948091D91482600BC0E6 -:1063B0009FB7F8948091D914816005C09FB7F89475 -:1063C0008091D91480628093D9149FBF14C00E9419 -:1063D000DD4511C0E091FD0F91E09E0F903809F46A -:1063E00090E02091FC0F921731F0F0E0E458F04F6C -:1063F00080839093FD0FFF91EF91BF91AF919F919B -:106400008F917F916F915F914F913F912F910F905D -:106410000BBE0F900FBE0F901F9018951F920F92FA -:106420000FB60F9211240BB60F928F939F93EF9399 -:10643000FF9380917F10E82FF0E0E150F04F9081C2 -:10644000909336018F5F803809F480E080937F104D -:106450009091FE0F891305C0809131018F7D80934B -:106460003101FF91EF919F918F910F900BBE0F9093 -:106470000FBE0F901F9018951F920F920FB60F929C -:1064800011240BB60F928F939F93EF93FF938091FC -:106490007F10E82FF0E0E150F04F90819093D6000C -:1064A0008F5F803809F480E080937F109091FE0F19 -:1064B000891305C08091D1008F7D8093D100FF9119 -:1064C000EF919F918F910F900BBE0F900FBE0F9089 -:1064D0001F9018951F920F920FB60F9211240BB6B2 -:1064E0000F928F939F93EF93FF9380917F10E82FEC -:1064F000F0E0E150F04F90819093CE008F5F8038B4 -:1065000009F480E080937F109091FE0F891305C0FD -:106510008091C9008F7D8093C900FF91EF919F9179 -:106520008F910F900BBE0F900FBE0F901F9018957C -:106530001F920F920FB60F9211240BB60F928F93EA -:106540009F93EF93FF9380917F10E82FF0E0E1504D -:10655000F04F90819093C6008F5F803809F480E0FF -:1065600080937F109091FE0F891305C08091C10028 -:106570008F7D8093C100FF91EF919F918F910F903C -:106580000BBE0F900FBE0F901F901895E091FE0F5D -:1065900091E09E0F903831F490E004C02091D9141E -:1065A00024FD2FC020917F102917C1F3F0E0E150A6 -:1065B000F04F80839093FE0F809180109091811016 -:1065C0008130910569F030F08230910579F00397C0 -:1065D00099F008958091C10080628093C100089570 -:1065E0008091C90080628093C90008958091D10094 -:1065F00080628093D1000895809131018062809300 -:1066000031010895CF93C82F83ED99E00E940B408C -:10661000C830B9F190F4C43059F148F4C23001F1F6 -:1066200020F5C13009F042C08BEB99E01BC0C630A9 -:1066300011F120F58CE799E015C0C43171F140F4F7 -:10664000CA3029F108F1CB3089F58CE994E02BC0F0 -:10665000C63131F1F8F0C23349F586EA94E023C03F -:1066600089EA99E00E940B4028C087E999E0FACFB7 -:106670008DE899E0F7CF8DE699E0F4CF8CE499E0CE -:10668000F1CF83E499E0EECF88E399E0EBCF85E2A8 -:1066900099E0E8CF8FE099E0E5CF81EA94E003C08C -:1066A0008BEF98E0DFCF0E941A4007C089EE98E098 -:1066B0000E940B408C2F0E94FD3F86EE98E0CF9108 -:1066C0000C940B408F929F92AF92BF92EF92FF92E9 -:1066D0000F931F93CF9380EE98E00E940B408AE3C4 -:1066E000E82E85E1F82E0BED14E1C0E0F701619191 -:1066F0007191819191917F01F80181909190A19088 -:10670000B1908F010E942473A50194010E948972A7 -:106710000E94B23FC23021F08EED98E00E940B4003 -:10672000CF5FC33019F78CED98E00E940B40809149 -:1067300046150E94FD3F88ED98E0CF911F910F9183 -:10674000FF90EF90BF90AF909F908F900C940B4074 -:1067500080912C15811108C09FB7F8948091D914AD -:1067600082608093D9149FBF0895AF92BF92CF9259 -:10677000DF92EF92FF920F931F93CF93DF93CDB7EA -:10678000DEB768970FB6F894DEBF0FBECDBF10918D -:106790002915112309F45CC081E080932B1511FFAA -:1067A00007C089E098E00E940B408EEF97E023C07D -:1067B00012FF07C089E098E00E940B4083EF97E04A -:1067C0001AC013FF07C089E098E00E940B4080EEDA -:1067D00097E011C014FF07C089E098E00E940B40C9 -:1067E00085ED97E008C015FF10C089E098E00E9491 -:1067F0000B4089EC97E00E940B4086EC97E00E94EA -:106800000B4084EF91E00E94124510FD08C08FB745 -:10681000F89490912915109229158FBF19C086ED13 -:1068200098E00E940B4084EC98E00E940B4083E6C5 -:1068300098E00E940B409FB7F8948091D9148F7E06 -:106840008093D9149FBF8091D91484FFFCCFDFCFF0 -:106850001091D914112309F4BDC114FF04C081E0C3 -:1068600080932A15C8C110FFEBC08CE0EEE2F5E181 -:10687000DE011D9601900D928A95E1F780912B150E -:106880008430E9F040F48130E9F080F0823009F59D -:106890008EE398E01CC0803179F018F4883049F01C -:1068A00018C0803291F0803421F013C08DE598E05B -:1068B0000EC088E598E00BC082E598E008C08CE443 -:1068C00098E005C085E498E002C088E398E00E9463 -:1068D0000B4080910F15837039F0BE01635F7F4FCD -:1068E000CE0101960E94E54F80910F1580FD05C0F5 -:1068F00080910F1581FF66C01AC081E398E00E9465 -:106900000B40CE0101967C0100E0F701619171918D -:10691000819191917F010E94B23F023021F08FE27C -:1069200098E00E940B400F5F033079F7E1CF88E2D7 -:1069300098E00E940B4084EAC82E85E1D82ECE0153 -:1069400001967C0100E05701F601619171918191FE -:1069500091916F0120853185428553850E94A971EF -:106960009B01AC01F70160817181828193810E945A -:10697000A871F7016083718382839383023079F475 -:106980002091BC153091BD154091BE155091BF1599 -:106990000E94A871F7016083718382839383F4E07E -:1069A000EF0EF11CF50160817181828193810E945B -:1069B000B23F023021F086E298E00E940B400F5F68 -:1069C000033009F680910F1582FF0EC080E298E037 -:1069D0000E940B408091CA139091C913891708F443 -:1069E0008E5E891B0E94FD3F80910F1583FF0EC0B4 -:1069F0008BE198E00E940B409091FC0F8091FD0F7D -:106A0000891708F48058891B0E94FD3F80910F155B -:106A100084FF0AC085E198E00E940B400E94175D48 -:106A200043E062E00E94C03F81E198E00E940B4099 -:106A30009FB7F8948091D9148E7F8093D9149FBF0B -:106A4000812F887609F44AC080912B15882351F054 -:106A5000982F9C77D9F1883029F40E94505081E01A -:106A600080932C1580912B15811103C092E0909397 -:106A70002C1516FF0AC0883019F480E480932B157A -:106A800080912C15886080932C1513FF07C080918E -:106A90002B1585FD03C080E180932B1515FF16C0D3 -:106AA00086ED98E00E940B4082E898E00E940B403F -:106AB00083E698E00E940B4080912C1581FD1460C4 -:106AC000846080932C1580E280932B159FB7F894F7 -:106AD0008091D91487798093D9149FBF11FF57C033 -:106AE000812F887609F04BC080912B15882339F0CF -:106AF000807509F444C080912C1581FF40C08091BD -:106B00002C1582FF1FC080918A15882369F040915F -:106B10008B1550918C1560918D1570918E1542D604 -:106B200080EA9FE00E94124580918915882351F0E8 -:106B3000823011F45C9A02C00E94CD5F88EE93E02F -:106B40000E9412458091C9139091CA13981799F029 -:106B5000F9E28F9FC001112489519F4E892B59F072 -:106B600080912C1583FD07C088E080932B150E942F -:106B7000725078D302C010922B1510922C159FB72B -:106B8000F8948091D9148D7F8093D9149FBF12FF00 -:106B900021C080912B15807389F080912D15811172 -:106BA0000DC080912C1582FF03C0F5D50E94CD5FEA -:106BB00080912C15826080932C1504C010922C15A6 -:106BC00010922B159FB7F8948091D9148B7F8093E6 -:106BD000D9149FBF80912B158C7711F00E947250B1 -:106BE00080912B15803239F480912C1581FF03C0E0 -:106BF00080E180932B1568960FB6F894DEBF0FBE28 -:106C0000CDBFDF91CF911F910F91FF90EF90DF905B -:106C1000CF90BF90AF90089569E080E090E00E942F -:106C2000265F4DE450E06BED74E181E098E00C9458 -:106C3000485FCF92DF92EF92FF920F931F93909154 -:106C40000C15092F10E020E030E080910D15482F41 -:106C500050E060E070E09170817068017901F69415 -:106C6000E794D794C794C0FC92606A017B01F694C4 -:106C7000E794D794C794C0FC8260E2E036952795EC -:106C800017950795EA95D1F700FD946022E0769577 -:106C90006795579547952A95D1F740FD8460909365 -:106CA000C1108093C0101F910F91FF90EF90DF9063 -:106CB000CF9008951F920F920FB60F9211240BB62A -:106CC0000F922F933F938F939F93EF93FF9321B353 -:106CD0003091C110832F817090E036E0880F991FAA -:106CE0003A95E1F7922F9F7B892B81BBEBE0F1E096 -:106CF00090818091C1108270880F880F977F892BB7 -:106D0000808381B39091C11092FB992790F98E7F77 -:106D1000892B81BB15BCFF91EF919F918F913F9182 -:106D20002F910F900BBE0F900FBE0F901F901895D4 -:106D300080916F008D7F80936F0080918100887FAC -:106D40008160809381001092C21080910E158F3F58 -:106D500021F490912915992349F090912B159430A5 -:106D600029F090E00E94124581E001C080E09091FE -:106D7000181592FF02C091E08927882341F08A9A72 -:106D8000809108018160809308015F9A08958A9834 -:106D9000809108018E7F809308015F9808951F926B -:106DA0000F920FB60F9211240BB60F922F933F93B1 -:106DB0004F935F936F937F938F939F93AF93BF9303 -:106DC000EF93FF938091C210811139C28091D2104C -:106DD00080FD8F9A80FF8F9890910B01482F427011 -:106DE0009D7F942B90930B0141B3847090E0959517 -:106DF0008795942F9D7F892B81BB91B38091D11072 -:106E0000282F217030E066E0220F331F6A95E1F7EA -:106E10009F7B292B21BB90910B01282F2270220FE1 -:106E2000220F977F922B90930B0121B382FB99271E -:106E300090F9822F8E7F892B81BB8091D01086BDE7 -:106E400082E085BD81E08093C21078948091E41047 -:106E50009091E510892B09F0ACC08091CB139091F3 -:106E6000F013981709F49BC0E091CB132E2F30E05C -:106E700086E0E89FF0011124E453FC4EF093E51006 -:106E8000E093E4108381948190938900809388003B -:106E9000808191819093E0108093DF10E281809156 -:106EA000E1108E1761F1E093E11081E1E89FF001BC -:106EB0001124EF50FC4EF093E310E093E21085852F -:106EC0009685A785B089B695A79597958795809360 -:106ED000CB109093CC10A093CD10B093CE10809394 -:106EE000C7109093C810A093C910B093CA10809394 -:106EF000C3109093C410A093C510B093C610E09136 -:106F0000E210F091E31090818091C0108927809366 -:106F1000D21086E0829FD001839FB00D1124A4532C -:106F2000BC4E15962C9181819281A381B481022E51 -:106F300004C0B695A795979587950A94D2F7809344 -:106F4000D3109093D410A093D510B093D610858110 -:106F50009681A781B085022E04C0B695A795979516 -:106F600087950A94D2F78093D7109093D810A09366 -:106F7000D910B093DA1081859285A385B48504C0B9 -:106F8000B695A795979587952A95D2F78093DB10AC -:106F90009093DC10A093DD10B093DE100AC0C8DE21 -:106FA0009FB7F8948091D91484608093D9149FBFBF -:106FB00046C18091DA148130B1F489B18071909129 -:106FC0002815891781F01092DA148CE0EEE2F5E1D1 -:106FD000AAE3B5E101900D928A95E1F78091D91469 -:106FE00080648093D9141092D1104091C3105091B5 -:106FF000C4106091C5107091C6108091D31090910B -:10700000D410A091D510B091D610840F951FA61F53 -:10701000B71F8093C3109093C410A093C510B09372 -:10702000C610E091E210F091E31045855685678522 -:107030007089481759076A077B0768F521E0209394 -:10704000D1104585568567857089841B950BA60BE5 -:10705000B70B8093C3109093C410A093C510B09346 -:10706000C610208180912E1590912F15A09130157A -:10707000B091311520FF04C00197A109B10903C0E7 -:107080000196A11DB11D80932E1590932F15A093ED -:107090003015B09331154091C7105091C8106091D0 -:1070A000C9107091CA108091D7109091D810A091FA -:1070B000D910B091DA10840F951FA61FB71F8093C7 -:1070C000C7109093C810A093C910B093CA104585FB -:1070D000568567857089481759076A077B0778F5D1 -:1070E0002091D11022602093D11045855685678567 -:1070F0007089841B950BA60BB70B8093C7109093D8 -:10710000C810A093C910B093CA1020818091321585 -:1071100090913315A0913415B091351521FF04C01D -:107120000197A109B10903C00196A11DB11D80936A -:10713000321590933315A0933415B09335154091C3 -:10714000CB105091CC106091CD107091CE108091E9 -:10715000DB109091DC10A091DD10B091DE10840F57 -:10716000951FA61FB71F8093CB109093CC10A093B0 -:10717000CD10B093CE104585568567857089481728 -:1071800059076A077B0778F52091D1102460209376 -:10719000D1104585568567857089841B950BA60B94 -:1071A000B70B8093CB109093CC10A093CD10B093DD -:1071B000CE1020818091361590913715A091381509 -:1071C000B091391522FF04C00197A109B10903C08C -:1071D0000196A11DB11D8093361590933715A0938C -:1071E0003815B093391580912B15843039F490916E -:1071F000D1108091471589238093D1108091DF10A1 -:107200009091E01001979093E0108093DF10892B0C -:1072100069F41092E5101092E4108091CB138F5F07 -:107220008093CB13863011F41092CB139091D11030 -:107230008091C11089278093D1101092C210FF91C4 -:10724000EF91BF91AF919F918F917F916F915F91DE -:107250004F913F912F910F900BBE0F900FBE0F904B -:107260001F9018958091181582FF08C08A9A809106 -:1072700008018160809308015F9A07C08A98809115 -:1072800008018E7F809308015F9880912B158C7088 -:10729000A1F08091C0108093D2108091C110809392 -:1072A000D11080910B15880F845081958093D01058 -:1072B00080916F00826080936F0008951F920F92FB -:1072C0000FB60F9211240BB60F92CF92DF92EF926E -:1072D000FF920F931F932F933F934F935F936F935F -:1072E0007F938F939F93AF93BF93EF93FF9380917F -:1072F000841090918510009721F0019709F435C111 -:1073000031C28091861090918710A0918810B09121 -:107310008910AC01BD0141505109610971094093C7 -:107320008610509387106093881070938910892B72 -:107330008A2B8B2B59F0809102018064809302018B -:10734000809102018F7B809302010FC0E0919F101A -:10735000F091A010309709F01995809172008D7FFF -:107360008093720081E080939E10809182109091B2 -:1073700083108130910509F4B4C020F0029709F41C -:10738000D3C0E4C1C0908610D0908710E0908810E0 -:10739000F090891060918A1070918B1080918C1000 -:1073A00090918D1022E030E040E050E00E94FD75A9 -:1073B000C216D306E406F5060CF4AFC080919A100D -:1073C00090919B10A0919C10B0919D100196A11DD1 -:1073D000B11D80939A1090939B10A0939C10B09332 -:1073E0009D10C0909210D0909310E0909410F09067 -:1073F00095108091921090919310A0919410B0915B -:10740000951000919A1010919B1020919C10309132 -:107410009D10BC01CD01660F771F881F991F52E098 -:10742000000F111F221F331F5A95D1F7A901980190 -:107430002F5F3F4F4F4F5F4F0E94FD75C21AD30A17 -:10744000E40AF50AC0929210D0929310E092941040 -:10745000F092951040919210509193106091941079 -:10746000709195108091961090919710A09198101E -:10747000B0919910481759076A077B070CF066C14D -:107480008091861090918710A0918810B0918910FA -:1074900040918A1050918B1060918C1070918D10DA -:1074A000880F991FAA1FBB1F841B950BA60BB70B38 -:1074B00080938E1090938F10A0939010B0939110A2 -:1074C0008091961090919710A0919810B09199107A -:1074D0008093921090939310A0939410B093951072 -:1074E000C6C080918E1090918F10A0919010B09195 -:1074F0009110AC01BD0141505109610971094093DE -:107500008E1050938F1060939010709391101816F6 -:1075100019061A061B060CF419C182E090E090933C -:1075200083108093821012C18091861090918710F1 -:10753000A0918810B0918910892B8A2B8B2B09F48C -:1075400005C180919A1090919B10A0919C10B091D0 -:107550009D100197A109B10980939A1090939B10F7 -:10756000A0939C10B0939D10A0C0809102018064F4 -:1075700080930201809102018F7B809302018091B0 -:10758000821090918310009721F0029709F472C045 -:10759000DDC04091921050919310609194107091C1 -:1075A00095108091961090919710A0919810B0919D -:1075B000991084179507A607B7070CF04DC0809166 -:1075C0009A1090919B10A0919C10B0919D100196E3 -:1075D000A11DB11D80939A1090939B10A0939C10B5 -:1075E000B0939D10C0909210D0909310E0909410A2 -:1075F000F09095108091921090919310A09194101A -:10760000B091951000919A1010919B1020919C10B0 -:1076100030919D10BC01CD01660F771F881F991F07 -:10762000F2E0000F111F221F331FFA95D1F7A901B5 -:1076300098012F5F3F4F4F4F5F4F0E94FD75C21A59 -:10764000D30AE40AF50AC0929210D0929310E09205 -:107650009410F09295107AC0E091A110F091A210D0 -:10766000309729F019951092A2101092A11081E084 -:1076700090E055CF80919A1090919B10A0919C1012 -:10768000B0919D10AC01BD014150510961097109D2 -:1076900040939A1050939B1060939C1070939D1090 -:1076A000892B8A2B8B2B09F441C060919210709129 -:1076B0009310809194109091951000919A101091D0 -:1076C0009B1020919C1030919D10C0909A10D090EA -:1076D0009B10E0909C10F0909D1042E0000F111F55 -:1076E000221F331F4A95D1F7A90198012F5F3F4F01 -:1076F0004F4F5F4F0E94AC759701860152E0000F1B -:10770000111F221F331F5A95D1F7A901980121504B -:107710003109410951090E94FD752093921030935F -:107720009310409394105093951010C08091720064 -:107730008D7F80937200E091A110F091A21030979C -:1077400029F019951092A2101092A1108091921018 -:1077500090919310A0919410B09195109093A900DE -:107760008093A800FF91EF91BF91AF919F918F916E -:107770007F916F915F914F913F912F911F910F9149 -:10778000FF90EF90DF90CF900F900BBE0F900FBE49 -:107790000F901F901895E0EAF0E080818F7D808344 -:1077A0005C980895CF92DF92EF92FF926A017B017D -:1077B000811105C0FF90EF90DF90CF90ECCF81302A -:1077C00011F45C9801C05C9A83E28093A0008091E0 -:1077D000A100807E8A618093A1008FEF9FEF90933C -:1077E000A9008093A80020E030E0A901C701B601FC -:1077F0000E9482721816F4F620E030E0A901C70159 -:10780000B6010E94827287FD11C020E030E04AE795 -:1078100054E4C701B6010E94A074181654F4C12C98 -:10782000D12C8AE7E82E84E4F82E03C0C12CD12C99 -:1078300076012CEE31E143E852E4C701B6010E9423 -:10784000DB7420E030E040E05FE30E94A9710E9419 -:107850005F730E94F6727093AB006093AA005C9A0B -:10786000FF90EF90DF90CF900895CF92DF92EF924C -:10787000FF92CF93DF93C82F6A017B0120E030E0B5 -:10788000A901C701B6010E94827287FDE2C0C43619 -:1078900008F441C08CE98C0F20E0833098F590E02B -:1078A000880F991F880F991F223079F0FC0123302F -:1078B00011F1213019F0E552FB4E02C0E951FB4EA7 -:1078C000C082D182E282F382C1C0EC01CD50DB4E96 -:1078D00020E030E040E752E4C701B6010E94DB74CB -:1078E00020E030E040E752E40E94DB746883798353 -:1078F0008A839B83ABC0E150FB4EF7FAF094F7F814 -:10790000F094DECF2F5F8A3008F4A5C0243009F44C -:10791000A2C08A50C2CFC701B6010E9489750E94D9 -:10792000F6728C2F90E08C31910508F094C0FC0128 -:107930008827E256FF4F8F4F0C941976633008F476 -:107940008CC060930B1582C060930E157FC060934E -:107950000C1502C060930D156CD978C08091181574 -:10796000662311F084604CC08B7F4AC0809118154B -:10797000662311F0806444C08F7B42C0809118154B -:10798000662311F080683CC08F773AC060930F1572 -:107990005DC0C0921015D0921115E0921215F092B0 -:1079A000131554C0C0921415D0921515E0921615F7 -:1079B000F09217154BC080911815662311F0816065 -:1079C0001FC08E7F1DC080911815662321F084FF93 -:1079D00046C0806215C08F7D13C080911815662344 -:1079E00011F0886001C0877F809318150E940E5F98 -:1079F0002DC080911815662311F0806101C08F7C25 -:107A00008093181523C06093191520C0C0921A15D1 -:107A1000D0921B15E0921C15F0921D1517C0C09254 -:107A20001E15D0921F15E0922015F09221150EC060 -:107A300070E0709323156093221508C0C09224153E -:107A4000D0922515E0922615F0922715E5D880E012 -:107A500007C084E005C083E003C086E001C08AE07F -:107A6000DF91CF91FF90EF90DF90CF9008951F931B -:107A7000CF93DF93182FEB018DE0189FB0011124F5 -:107A8000765F4CE050E0CE010E948B5F892B59F469 -:107A90008CE0FE0111928A95E9F7BE01812F0E94C8 -:107AA000673080E001C081E0DF91CF911F910895A0 -:107AB000EF92FF920F931F93CF93DF93CDB7DEB773 -:107AC0002C970FB6F894DEBF0FBECDBF182F80FFE6 -:107AD000C7C08AE080930B158FEF80930E1510922C -:107AE0000C1587E080930D1583E080930F158AE0D5 -:107AF00097EDA3E2BCE38093101590931115A0932A -:107B00001215B09313158FE692E1A3E0BBE38093C7 -:107B1000141590931515A0931615B0931715109280 -:107B2000191580E090E0A8ECB1E480931A159093C9 -:107B30001B15A0931C15B0931D1580E090E0AAEFD3 -:107B4000B3E480931E1590931F15A0932015B09356 -:107B500021158AEF90E0909323158093221580E001 -:107B600090E0A0E8BFE38093241590932515A0939F -:107B70002615B093271584E08093181580E090E0D7 -:107B8000A8ECB5E48093DB149093DC14A093DD148F -:107B9000B093DE148093DF149093E014A093E1146B -:107BA000B093E2148093E3149093E414A093E5144B -:107BB000B093E61480E090E5A3ECB7E48093E7147B -:107BC0009093E814A093E914B093EA148093EB1413 -:107BD0009093EC14A093ED14B093EE148093EF14F3 -:107BE0009093F014A093F114B093F21480E090EA13 -:107BF000ACE0B7E48093F3149093F414A093F514DD -:107C0000B093F6148093F7149093F814A093F9149A -:107C1000B093FA148093FB149093FC14A093FD147A -:107C2000B093FE1480E090E4ACE1B6EC8093FF14D6 -:107C300090930015A0930115B0930215809303153E -:107C400090930415A0930515B0930615809307151E -:107C500090930815A0930915B0930A150E940C364D -:107C600011FF10C0CE0101967C018CE0F70111924A -:107C70008A95E9F700E0B701802F0E9467300F5F17 -:107C80000830C9F712FF0AC060E080E09BE00E9464 -:107C9000265F60E081E59BE00E94265F13FF05C040 -:107CA00060E08EEA9BE00E94265F2C960FB6F89467 -:107CB000DEBF0FBECDBFDF91CF911F910F91FF901F -:107CC000EF9008951F93CF93DF93CDB7DEB72C9736 -:107CD0000FB6F894DEBF0FBECDBF80E090E00E94EB -:107CE000835F893009F053C04DE450E061E078E0F3 -:107CF0008BED94E10E948B5F892B09F448C020E052 -:107D000030E048EC55E46091DB147091DC14809114 -:107D1000DD149091DE140E948272811138C020E03F -:107D200030E048EC55E46091DF147091E0148091EC -:107D3000E1149091E2140E948272811128C020E027 -:107D400030E048EC55E46091E3147091E4148091C4 -:107D5000E5149091E6140E948272811118C010E01F -:107D6000BE016F5F7F4F812F82DE811103C087E0EC -:107D70000E9402331F5F183099F72C960FB6F894C3 -:107D8000DEBF0FBECDBFDF91CF911F9108958FEF62 -:107D90008FDEE5CF8F929F92AF92BF92CF92DF920C -:107DA000EF92FF920F931F93CF93DF93CDB7DEB780 -:107DB0002A970FB6F894DEBF0FBECDBF6B017C01D2 -:107DC000042F20E030E0A9010E94827287FF07C0E3 -:107DD0008DE20E94C632F7FAF094F7F8F094102F73 -:107DE000123060F020E030E048EC52E4C701B60108 -:107DF0000E94DB746B017C011250F2CF00FF0AC0BD -:107E000020E030E040E251E4C701B6010E94DB749B -:107E10006B017C0120E030E040E05FE3C701B60188 -:107E20000E94A9710E94F172E1E0F0E0EC0FFD1FE9 -:107E3000E00FF11D2EE2208310E03AE0832E912C1A -:107E4000A12CB12C6115710581059105A9F01013C4 -:107E500001C01F5FEE24E394F12CEC0EFD1EE10E39 -:107E6000F11CA50194010E94DB75605DF701608340 -:107E7000B901CA011F5FE6CF80E3101748F4E1E0C3 -:107E8000F0E0EC0FFD1FE10FF11D80831F5FF5CFC8 -:107E900010130BC081E0810FE1E0F0E0EC0FFD1F5B -:107EA000E80FF11D1E5F80E38083112341F0FE0186 -:107EB000E10FF11D80810E94C6321150F6CF2A9643 -:107EC0000FB6F894DEBF0FBECDBFDF91CF911F91EB -:107ED0000F91FF90EF90DF90CF90BF90AF909F9069 -:107EE0008F9008951F93CF93DF93CDB7DEB7C0581F -:107EF000D1090FB6F894DEBF0FBECDBFAE01495712 -:107F00005F4FFA0161917191AF01CE0101960E941C -:107F10009B7610E0E1E0F0E0EC0FFD1FE10FF11DBA -:107F20008081882321F00E94C6321F5FF3CFC058A2 -:107F3000DF4F0FB6F894DEBF0FBECDBFDF91CF91FC -:107F40001F91089543E026CF2091181520FF08C007 -:107F50002BE832E441E25DE30E94DB7441E001C0C2 -:107F600040E018CF2091181520FF08C02BE832E41C -:107F700041E25DE30E94DB7444E001C043E00ACFCC -:107F8000CF92DF92EF92FF921F93CF93DF93CDB703 -:107F9000DEB7362F142FCDB6DEB64DB75EB7411B18 -:107FA00051090FB6F8945EBF0FBE4DBF4F5F5F4FD4 -:107FB0007A01242FFA019E2F921B911728F4632F28 -:107FC0000E94BB759193F7CF112351F0F701E10F98 -:107FD000F11D31978081805D0E94C6321150F4CF2F -:107FE0000FB6F894DEBE0FBECDBEDF91CF911F91CC -:107FF000FF90EF90DF90CF9008958A3020F0843684 -:1080000020F043E003C041E001C042E06AE0B8CFA5 -:1080100048E062E0B5CFCF93DF93FC018491EF019C -:108020002196882321F00E94C632FE01F7CFDF910E -:10803000CF910895CF93DF93EC018991882319F0B4 -:108040000E94C632FACFDF91CF910895AEE2B5E13A -:10805000E4EAF0E14D915D916D917D9141935193F1 -:108060006193719380E1E03BF807A1F708958CE1FB -:10807000E4EAF0E1DF011D928A95E9F71092C91355 -:108080001092CA1381E08093A3101092E610089515 -:108090002F923F924F925F926F927F928F929F9218 -:1080A000AF92BF92CF92DF92EF92FF920F931F9306 -:1080B000CF93DF93C091CA13C11101C0C2E1C15077 -:1080C000D091E610DC1709F41DC1EC2EF12C29E249 -:1080D000C29F8001112409511F4EF801A588B6885E -:1080E000C788D08C61A172A183A194A19B01AC012E -:1080F0000E94A971F80125A136A147A150A50E94AF -:10810000DB744B018C019B01AC01B501C6010E94DF -:10811000827287FD02C05401680189E28E9DF001E0 -:108120008F9DF00D1124E951FF4EC501D601818BC1 -:10813000928BA38BB48BC11101C0C2E1C150DC177B -:1081400061F029E22E9DC0012F9D900D11249C010C -:1081500029513F4E7901D9E233C08091C913D81318 -:1081600060C00E9450505DC0AC2EB12CDA9DC001A1 -:10817000DB9D900D1124FC01E951FF4E6F01C111EF -:1081800001C0C2E1C1508091C9138C1302C00E948A -:108190005050DA9D8001DB9D100D112409511F4EB6 -:1081A000F80185889688A788B08CA501940161891B -:1081B0007289838994890E948272811106C0760136 -:1081C0008091E610C813D0CF2CC0F80161A172A134 -:1081D00083A194A19B01AC010E94A971F80125A182 -:1081E00036A147A150A50E94DB74F701218932898D -:1081F000438954890E94A9712B013C019B01AC0168 -:10820000C501B4010E94A074F80118162CF4418A2B -:10821000528A638A748AD3CF818A928AA38AB48A63 -:10822000CECFD091E610F9E2DF9F800111240951F1 -:108230001F4EC1E0CD0FC23109F4C0E02090CA1337 -:1082400089E2382EC21509F45BC0CC2ED12C3C9C9F -:10825000C0013D9C900D11249C0129513F4E790194 -:10826000F8014188528863887488F901818892886E -:10827000A388B488A5019401C301B2010E9482724F -:1082800087FF24C0F80161A172A183A194A19B0181 -:10829000AC010E94A971F80125A136A147A150A502 -:1082A0000E94DB74A30192010E94A9712B013C0181 -:1082B0009B01AC01C501B4010E94A074181634F4EE -:1082C000F701418A528A638A748ADC2F3C9CF00150 -:1082D0003D9CF00D1124E951FF4E258936894789CF -:1082E000508D61897289838994890E94827281117B -:1082F00001C0DC2FCF5FC23109F4C0E08701A2CFFB -:10830000D093E610DF91CF911F910F91FF90EF90E6 -:10831000DF90CF90BF90AF909F908F907F906F90A5 -:108320005F904F903F902F9008952F923F924F92E1 -:108330005F926F927F928F929F92AF92BF92CF92F5 -:10834000DF92EF92FF920F931F93CF93DF93CDB7FE -:10835000DEB7E5970FB6F894DEBF0FBECDBF4B8FEB -:108360005C8F6D8F072F2DAB2091CA132EA3422F48 -:1083700050E05BA34AA339E2239FF0011124E951A5 -:10838000FF4E158616861786108A15A216A217A20A -:1083900010A6108249E956E766E97EE741A352A399 -:1083A00063A374A31C014BED54E158A74FA3CE0166 -:1083B00001969AAB89AB24EA30E13EA72DA74EA1E6 -:1083C00039E2439FC00111249C0128513F4E3AA736 -:1083D00029A7AE01435F5F4F5DA34CA359A348A3F8 -:1083E00084EA90E198AB8FA72BED34E13F8F2E8F7D -:1083F00010E03F01AF01435F5F4F5CAB4BAB2F0120 -:1084000055E2450E511CF10161917191819191915B -:108410001F01EE8DFF8D81909190A190B190FF8F03 -:10842000EE8FA50194010E94DB740E94AB74E9A950 -:10843000FAA96193719381939193FAABE9ABEFA59C -:10844000F8A9C190D190E190F190F8ABEFA76C1929 -:108450007D098E099F099B01AC0197FF07C0222768 -:108460003327A901261B370B480B590BE9A5FAA5A1 -:108470002193319341935193FAA7E9A7EBA9FCA962 -:10848000C080D180E280F380C216D306E406F506F0 -:1084900010F469017A01EBA9FCA9C082D182E282C1 -:1084A000F3820E942473A50194010E9489724B01FA -:1084B0005C01E8A1F9A16193719381939193F9A370 -:1084C000E8A320E030E0A9010E94827287FF0DC07E -:1084D000112321F0113021F084E003C081E001C0BC -:1084E00082E0F3019081892B8083A5019401C5016D -:1084F000B4010E94DB74F2012081318142815381F9 -:108500000E94A971F20160837183828393831F5F4C -:10851000133009F078CF0E9448754B015C01F201DD -:108520006083718382839383CD28CE28CF2809F47A -:1085300022C220E030E0A9016B8D7C8D8D8D902FC3 -:108540000E94827287FD21C0FDA9FF2361F0A50171 -:1085500094016B8D7C8D8D8D902F0E94DB746B8FC1 -:108560007C8F8D8F092F20E030E040E85FE36B8D3A -:108570007C8D8D8D902F0E94827287FF0DC01B8E87 -:108580001C8E20E82D8F0FE307C039E93B8F46E7AB -:108590004C8F56E95D8F0EE7A501940160E070E015 -:1085A00080E89FE30E94897269A77AA78BA79CA79E -:1085B000CE0149969A8F898FC12CD12C760129E260 -:1085C000EAA1FBA12E9FC0012F9F900D11249C01B9 -:1085D000285F3E4E39A328A3ECA1FDA180809180A5 -:1085E000A280B38020E030E0A901C501B4010E945F -:1085F0008272882309F472C0A501940169A57AA545 -:108600008BA59CA50E94DB742B013C01ECA1FDA174 -:1086100060837183828393839B01AC0160E070E08F -:1086200080E89FE30E9489724B015C01E894B7F8EF -:10863000EFA1F8A52485358546855785C501B40188 -:108640000E94DB741B018E8F192F2B8D3C8D4D8D5D -:10865000502F0E94A07418162CF02B8E3C8EFE8D8D -:10866000FD8F012FE8A1F9A1F081FE8FE8A1F9A10A -:10867000118122803380EFA1F8A5208D318D428DAC -:10868000538DC501B4010E94DB745B014C019B0159 -:10869000AC016E8D712FC1010E94827287FD03C0F3 -:1086A000AE8E1B2D14018E8D912FD101E8A1F9A161 -:1086B00080839183A283B383EDA5FEA524853585B0 -:1086C00046855785C301B2010E94DB749B01AC0152 -:1086D000C701B6010E94A8716B017C012CA13DA1CC -:1086E0002C5F3F4F3DA32CA34DA55EA54C5F5F4F74 -:1086F0005EA74DA78FA198A5049698A78FA3E98D93 -:10870000FA8DE217F30709F067CF8091C913FEA134 -:10871000F8130FC089E22AA13BA1829FF001839F39 -:10872000F00D1124E951FF4E118A128A138A148A1E -:1087300014C02FEE3FEF4FE75FE3C701B6010E9481 -:10874000A07418167CF489E24AA15BA1849FF00111 -:10875000859FF00D1124E951FF4E118E128E138E5C -:10876000148E6AC02FEE3FEF4FE75FEBC701B601F3 -:108770000E94A074181644F08FEEC82EDD24DA94FF -:108780008FE7E82E8FEBF82EA701960160E070E0EE -:1087900080E89FE30E94A87120E030E040E05FE3C2 -:1087A0000E94DB740E9448756B017C0189E22AA15A -:1087B0003BA1829FF001839FF00D1124E951FF4EF0 -:1087C00020911015309111154091121550911315EB -:1087D00061A172A183A194A10E94DB74A7019601FB -:1087E0000E94DB744B015C01A701960160E070E020 -:1087F00080E89FE30E94A8719B01AC01C501B40110 -:108800000E9489726B017C0120E030E0A9010E9486 -:10881000827287FF03C0C12CD12C760189E24AA164 -:108820005BA1849FF001859FF00D1124E951FF4E5B -:10883000C18ED28EE38EF48E2B8D3C8D4D8D502FBC -:108840006B8D7C8D8D8D902F0E94DB747B018C0154 -:1088500089E22AA13BA1829FF001839FF00D1124A0 -:10886000E951FF4EC701D801858F968FA78FB0A31E -:10887000A18CB28CC38CD48C6090BC107090BD1055 -:108880008090BE109090BF109301A401B701C80161 -:108890000E94827287FD05C0B62DA72DF82DE92D07 -:1088A00004C0BE2DAF2DF02FE12F9501A6016B2F37 -:1088B0007A2F8F2F9E2F0E94A07418166CF09301B0 -:1088C000A401B701C8010E94827287FD03C0530151 -:1088D000640102C05701680189E24AA15BA1849F3B -:1088E000F001859FF00D1124E951FF4EC501D6011D -:1088F000858B968BA78BB08F8CE0FE013D96A0EB0D -:10890000B0E101900D928A95E1F7C701D8018093FB -:10891000BC109093BD10A093BE10B093BF108CE01C -:10892000FE013196A4EAB0E101900D928A95E1F73B -:108930008091A3108093CA138F5F823109F480E085 -:108940008093A310E5960FB6F894DEBF0FBECDBF9F -:10895000DF91CF911F910F91FF90EF90DF90CF901B -:10896000BF90AF909F908F907F906F905F904F904F -:108970003F902F908DCBE5960FB6F894DEBF0FBEDB -:10898000CDBFDF91CF911F910F91FF90EF90DF90BE -:10899000CF90BF90AF909F908F907F906F905F909F -:1089A0004F903F902F9008956115710581059105B5 -:1089B000C1F16A3071058105910548F425E02A95D9 -:1089C000F1F700006150710981099109EDCF64361A -:1089D00071058105910548F4E5E3EA95F1F700009A -:1089E0006A50710981099109DFCF683EF3E07F0782 -:1089F0008105910558F4EFE8F1E03197F1F700C0F7 -:108A000000006456710981099109CECFEFE9FFE0BA -:108A10003197F1F700C00000685E73408109910949 -:108A2000C3CF0895009741F0EFE9FFE03197F1F7E8 -:108A300000C000000197F6CF08954F925F926F92A9 -:108A40007F92AF92BF92CF92DF92EF92FF920F93FD -:108A50001F93CF93DF936C01FB015A01309729F0EC -:108A60008081D601A80FB11D01C0DC018C91ED0100 -:108A70008D3229F4229611968C9101E008C08B3238 -:108A800011F0219603C0229611968C9100E0512C92 -:108A9000612C10E020E030E0A9017E0160ED762E2F -:108AA000780E89E08715D8F06394A8E0A61598F0B1 -:108AB00051101150A5E0B0E00E943076DC01CB01EE -:108AC000880F991FAA1FBB1F9C01AD01270D311DE7 -:108AD000411D511D0BC0511009C01F5F07C0BEEFE3 -:108AE0007B1208C0511006C0552453942196D7011B -:108AF0008C91D3CF662009F450C07F01CA01B9011F -:108B00000E9422732B013C0120E030E0A9010E9469 -:108B10008272882349F11F3F64F42AE037ED43E273 -:108B20005CE3C301B2010E94DB742B013C011E5FB8 -:108B3000F2CF1F3F59F42DEC3CEC4CEC5DE3C3014C -:108B4000B2010E94DB742B013C010EC0112361F0C5 -:108B500020E030E040E251E4C301B2010E94DB7446 -:108B60002B013C011150F2CF002351F077FA7094A1 -:108B700077F87094F501408251826282738206C058 -:108B8000D5014D925D926D927C921397CC19DD09BF -:108B9000C150F701C08381E001C080E0DF91CF9137 -:108BA0001F910F91FF90EF90DF90CF90BF90AF900B -:108BB0007F906F905F904F9008958091D91484FDBD -:108BC00026C09FB7F8948091D91480618093D914FE -:108BD0009FBF0E94CB3B0E94CD5F80912B15982FA9 -:108BE0009C7021F490912C15913089F49FB78430BA -:108BF00029F4F89480912915806204C0F89480913A -:108C000029158860809329159FBF0C949836089584 -:108C10002F923F924F925F926F927F928F929F928C -:108C2000AF92BF92CF92DF92EF92FF920F931F937A -:108C3000CF93DF93CDB7DEB7C756D1090FB6F894FF -:108C4000DEBF0FBECDBF66968FAF66971B016B96DA -:108C50002CAF3DAF4EAF5FAF6B97A8960FAFA89705 -:108C60008091181585FF51C03B010BED14E17B018C -:108C70002CE0E20EF11CDD24D394D3018D909D9065 -:108C8000AD90BD903D0120E030E0A901C501B401E7 -:108C90000E94A074181654F0F80124A135A146A131 -:108CA00057A1C501B4010E94827287FDD0922D1593 -:108CB00080912D15882319F180912B15883061F052 -:108CC0007CDF9FB7F89480912915856080932915E2 -:108CD0009FBF0E94B53319C09FB7F8948091D914F3 -:108CE00088608093D9149FBF0E94B53380912A1564 -:108CF00081110BC080912B158111F6CFE1CF0C5F54 -:108D00001F4FE614F70409F0B8CF80912B1582307D -:108D100009F475C3F10180819181A281B3816596C7 -:108D20008CAF9DAFAEAFBFAF659784819581A681B3 -:108D3000B78161968CAF9DAFAEAFBFAF61978085B5 -:108D40009185A285B3852D968CAF9DAFAEAFBFAF99 -:108D50002D97AE01475B5F4FBE01635B7F4FCE0136 -:108D60008F5A9F4F0E94BC2F2D96ECACFDAC0EADE0 -:108D70001FAD2D9761962CAD3DAD4EAD5FAD6197AA -:108D800065966CAD7DAD8EAD9FAD6597DE0191961C -:108D90004D01FE017D965F0118976D01F3D3E9A0A7 -:108DA000FAA00BA11CA12D8D3E8D4F8D58A1698D70 -:108DB0007A8D8B8D9C8D12D7882309F41CC360910A -:108DC000840D7091850D8091860D9091870D0E9484 -:108DD00024732B013C016091800D7091810D809175 -:108DE000820D9091830D0E9424736F966CAF7DAFBE -:108DF0008EAF9FAF6F9760917C0D70917D0D8091CC -:108E00007E0D90917F0D0E942473FE01BD964F014F -:108E10009E01275D3F4F5901DE0195966D0183014B -:108E200072016F962CAD3DAD4EAD5FAD6F9745D6DF -:108E3000A401B501C601FDD20E94623E6696BFAD97 -:108E40006697BB2319F0B13041F0DDC0E1E0F0E0FE -:108E50006796FFAFEEAF6797DAC020E030E048ECEE -:108E600052E46B966CAD7DAD8EAD9FAD6B970E945D -:108E7000A074181654F480E090E0A8ECB2E46B966D -:108E80008CAF9DAFAEAFBFAF6B972DA13EA14FA1F1 -:108E900058A5D1016D917D918D919C910E94A871F1 -:108EA0002B013C0129A53AA54BA55CA5F1016481E4 -:108EB0007581868197810E94A8714B015C012DA567 -:108EC0003EA54FA558A9D10118966D917D918D9120 -:108ED0009C911B970E94A8716B017C01A3019201D8 -:108EE000C301B2010E94DB742B013C01A501940176 -:108EF000C501B4010E94DB749B01AC01C301B20146 -:108F00000E94A9714B015C01A7019601C701B6013E -:108F10000E94DB749B01AC01C501B4010E94A971E0 -:108F20000E94487520E030E040EF51E40E94DB747D -:108F30006B962CAD3DAD4EAD5FAD6B970E948972C7 -:108F40000E94F67267967FAF6EAF67976A307105C1 -:108F500030F42AE030E067963FAF2EAF679720E00D -:108F600030E040E950E46B966CAD7DAD8EAD9FADC9 -:108F70006B970E94DB7420E030E048EC52E40E94E2 -:108F8000897220E030E040E05FE30E94A97120E0B8 -:108F900030E040E752E40E94DB7420E030E040E73C -:108FA00052E40E94DB746B017C016093F3147093B4 -:108FB000F4148093F5149093F6146093F71470935F -:108FC000F8148093F9149093FA1420E030E442E905 -:108FD00055E40E94A07487FF09C0C092FB14D09290 -:108FE000FC14E092FD14F092FE1411C080E090E4B5 -:108FF000A2E9B5E48093FB149093FC14A093FD14B4 -:10900000B093FE1404C067961FAE1EAE67976796B6 -:10901000AEADBFAD6797BD0180E090E00E942273C6 -:109020006B017C012DA13EA14FA158A5F1016081EA -:109030007181828193810E94A871A70196010E948B -:1090400089726F966CAF7DAF8EAF9FAF6F9729A57A -:109050003AA54BA55CA5D10114966D917D918D919A -:109060009C9117970E94A871A70196010E9489728E -:10907000A3966CAF7DAF8EAF9FAFA3972DA53EA5F6 -:109080004FA558A9F10160857185828593850E945D -:10909000A871A70196010E948972A7966CAF7DAF57 -:1090A0008EAF9FAFA79722242394312C67962EADC5 -:1090B0003FAD67972215330508F49BC1B101032C1E -:1090C000000C880B990B0E9424736B017C019B019F -:1090D000AC016F966CAD7DAD8EAD9FAD6F970E946C -:1090E000DB749B01AC016DA17EA18FA198A50E94AC -:1090F000A9716D877E878F87988BA7019601A396AC -:109100006CAD7DAD8EAD9FADA3970E94DB749B01CE -:10911000AC0169A57AA58BA59CA50E94A971698B54 -:109120007A8B8B8B9C8BA7019601A7966CAD7DAD3E -:109130008EAD9FADA7970E94DB749B01AC016DA51E -:109140007EA58FA598A90E94A9716D8B7E8B8F8BB0 -:10915000988FAE014B5E5F4FBE016F5E7F4FCE01B9 -:109160000D960E94BC2FED88FE880F89188D2989E5 -:109170003A894B895C896D857E858F859889DE016A -:10918000DD964D01FE01EF5BFF4F5F0118966D010B -:10919000F9D12196ECACFDAC0EAD1FAD2197259613 -:1091A0002CAD3DAD4EAD5FAD259729966CAD7DAD37 -:1091B0008EAD9FAD299712D5882309F416C16D8510 -:1091C0007E858F8598896093880D7093890D809333 -:1091D0008A0D90938B0D29893A894B895C8920935C -:1091E0008C0D30938D0D40938E0D50938F0DED8827 -:1091F000FE880F89188DE092900DF092910D0093EA -:10920000920D1093930DFE01F1964F01DE01D5965C -:109210005D0138966F01B6D1C9A8DAA8EBA8FCA801 -:109220008DA89EA8AFA8B8AC2091700D3091710D9B -:109230004091720D5091730D69AD7AAD8BAD9CADBF -:109240000E94A87120E030E040EA52E40E94DB7402 -:109250000E94F172072E000C880B990B0E94247358 -:1092600069837A838B839C832091740D3091750D73 -:109270004091760D5091770DC501B4010E94A871FF -:1092800020E030E040EA52E40E94DB740E94F17278 -:10929000072E000C880B990B0E9424736D837E832C -:1092A0008F8398872091780D3091790D40917A0DB8 -:1092B00050917B0DC701B6010E94A87120E030E0FB -:1092C00044EB52E40E94A97120E030E040EA52E40D -:1092D0000E94DB740E94F172072E000C880B990B20 -:1092E0000E94247369877A878B879C870E94B53395 -:1092F00080912A15811181C09091C9138091A3108A -:10930000981303C00E94A833F1CF89809A80AB8064 -:10931000BC80C501B4010E94F17260937C0D709312 -:109320007D0D80937E0D90937F0DCD80DE80EF804C -:10933000F884C701B6010E94F1726093800D7093AA -:10934000810D8093820D9093830D49845A846B84A0 -:109350007C84C301B2010E94F1726093840D70930A -:10936000850D8093860D9093870D2091DB143091AD -:10937000DC144091DD145091DE14C501B4010E944B -:10938000897269837A838B839C832091DF14309167 -:10939000E0144091E1145091E214C701B6010E941B -:1093A00089726D837E838F8398872091E314309137 -:1093B000E4144091E5145091E614C301B2010E94F7 -:1093C000897269877A878B879C87A8962FADA89723 -:1093D0006B964CAD5DAD6EAD7FAD6B97CE010196DA -:1093E0000E94954131E03093980DFFEF2F1A3F0A0C -:1093F0005DCE80E004C083E302C082E000C0C959B2 -:10940000DF4F0FB6F894DEBF0FBECDBFDF91CF9117 -:109410001F910F91FF90EF90DF90CF90BF90AF9092 -:109420009F908F907F906F905F904F903F902F9084 -:1094300008954F925F926F927F92AF92BF92CF92B8 -:10944000DF92EF92FF920F931F93CF93DF935C0114 -:10945000EB018A01FC01408051806280738020E032 -:1094600030E0A901C301B2010E94827220E030E025 -:10947000A901811111C0688179818A819B810E9433 -:10948000A0741816E4F02AEDC22E2FE0D22E29EC9B -:10949000E22E2FEBF22E22C0C301B2010E94827293 -:1094A00087FD16C0A3019201688179818A819B8121 -:1094B0000E9489720E9447726B017C010FC09AED75 -:1094C000C92E9FE0D92E99ECE92E9FE3F92E06C014 -:1094D000C12CD12C80ECE82E8FE7F82EC701B60105 -:1094E0000E9486722091640D3091650D4091660D49 -:1094F0005091670D0E94DB74A30192010E94A97133 -:10950000F5016083718382839383C701B6010E9452 -:109510003E752091640D3091650D4091660D50911E -:10952000670D0E94DB749B01AC01688179818A819F -:109530009B810E94A971688379838A839B83209190 -:10954000680D3091690D40916A0D50916B0DF801D5 -:1095500060817181828193810E94A871F80160838A -:10956000718382839383DF91CF911F910F91FF903D -:10957000EF90DF90CF90BF90AF907F906F905F9013 -:109580004F9008952F923F924F925F926F927F92E9 -:109590008F929F92AF92BF92CF92DF92EF92FF9203 -:1095A0000F931F93CF93DF93CDB7DEB766970FB6B8 -:1095B000F894DEBF0FBECDBF69837A838B839C8313 -:1095C0002D833E834F835887270138011601BA8ABD -:1095D000A98A84019B01AC010E94DB746B017C01B0 -:1095E0002D813E814F815885CA01B9010E94DB74EB -:1095F0009B01AC01C701B6010E94A9710E94487588 -:1096000023E333E343E551E40E94A87169877A8735 -:109610008B879C872DEC3CEC46ED52E4C301B201F4 -:109620000E94A8712B013C0129853A854B855C85F8 -:10963000CA01B9010E94DB746B017C01A301920194 -:10964000C301B2010E94DB749B01AC01C701B601EA -:109650000E94A9716B017C0124ED35E64DE955E4CA -:109660000E94A8714B015C0126EC3FEA4DE957E4EA -:10967000C701B6010E94DB746D877E878F87988B48 -:10968000A5019401C501B4010E94DB749B01AC01EA -:109690006D857E858F8598890E94A8710E94487586 -:1096A0006B8B7C8B8D8B9E8BA7019601C701B601BE -:1096B0000E94A9716D877E878F87988BA501940181 -:1096C00069857A858B859C850E94DB744B015C01E2 -:1096D0002B893C894D895E89C301B2010E94DB74EC -:1096E0009B01AC01C501B4010E94A8714B015C0152 -:1096F0002CEE31E14EE053E46D857E858F859889AF -:109700000E94DB749B01AC01C501B4010E94897207 -:109710000E949A7121EE3EE245E652E40E94DB741B -:10972000F101608371838283938324ED35E64DE9F3 -:1097300055E4C701B6010E94A9714B015C012BE3FE -:1097400039E045EC57E4C701B6010E94DB746B01B8 -:109750007C01A5019401C501B4010E94DB749B0149 -:10976000AC01C701B6010E94A8710E9448756B0147 -:109770007C01A501940169857A858B859C850E9471 -:10978000DB744B015C01A7019601C301B2010E9489 -:10979000DB749B01AC01C501B4010E94A9716B018E -:1097A0007C012CE53FEC4EE153E46D857E858F8591 -:1097B00098890E94DB749B01AC01C701B6010E942D -:1097C00089720E949A7121EE3EE245E652E40E94BF -:1097D000DB746B017C01E989FA8960837183828380 -:1097E000938321EE3EE245E652E4F101608171810E -:1097F000828193810E9489720E943E752CEE31E134 -:109800004EE053E40E94DB749B01AC01C301B20142 -:109810000E94A074181654F4F7FAF094F7F8F09434 -:10982000E989FA89C082D182E282F38220E030E0C5 -:10983000A90169817A818B819C810E94827220E0DA -:1098400030E0A901811112C06D817E818F819885E0 -:109850000E94A07418162CF480E090E0A4EBB2E40F -:1098600011C080E090E0A4EBB2EC0CC069817A8179 -:109870008B819C810E94827287FF0AC080E090E009 -:10988000A0ECBFE7F80180839183A283B38317C064 -:1098900029813A814B815C816D817E818F819885A0 -:1098A0000E9489720E94477221EE3EE245E652E430 -:1098B0000E94DB74F80160837183828393836696D0 -:1098C0000FB6F894DEBF0FBECDBFDF91CF911F91D1 -:1098D0000F91FF90EF90DF90CF90BF90AF909F904F -:1098E0008F907F906F905F904F903F902F90089552 -:1098F0002F923F924F925F926F927F928F929F92A0 -:10990000AF92BF92CF92DF92EF92FF920F931F938D -:10991000CF93DF93CDB7DEB72E970FB6F894DEBFA7 -:109920000FBECDBF29833A834B835C83ED82FE82D9 -:109930000F831887860115019E868D8621EE3EE2F3 -:1099400045E652E40E9489722B013C0121EE3EE281 -:1099500045E652E469817A818B819C810E948972FB -:109960004B015C0121EE3EE245E652E46D817E81D1 -:109970008F8198850E9489726B017C01C301B201BD -:109980000E94867269837A838B839C83C501B401AC -:109990000E9486726D837E838F839887C301B20194 -:1099A0000E943E752B013C01C501B4010E943E7529 -:1099B00069877A878B879C872CEE31E14EE053E4F0 -:1099C00069817A818B819C810E94DB744B015C01EF -:1099D0002CE53FEC4EE153E46D817E818F819885CB -:1099E0000E94DB749B01AC01C501B4010E94A97106 -:1099F00023E333E343E551E40E94A9714B015C0189 -:109A0000C701B6010E9486729B01AC01C501B40179 -:109A10000E94DB74F8016083718382839383C701A2 -:109A2000B6010E943E759B01AC01C501B4010E94C4 -:109A3000DB74F10160837183828393832CEE31E1C7 -:109A40004EE053E4C301B2010E94DB746B017C0160 -:109A50002CE53FEC4EE153E469857A858B859C8546 -:109A60000E94DB749B01AC01C701B6010E94A87182 -:109A70002DEC3CEC46ED52E40E94A971ED85FE858B -:109A800060837183828393832E960FB6F894DEBF32 -:109A90000FBECDBFDF91CF911F910F91FF90EF903F -:109AA000DF90CF90BF90AF909F908F907F906F90FE -:109AB0005F904F903F902F9008952F923F924F923A -:109AC0005F926F927F928F929F92AF92BF92CF924E -:109AD000DF92EF92FF920F931F93CF93DF93CDB757 -:109AE000DEB728970FB6F894DEBF0FBECDBF2B01AF -:109AF0003C0129833A834B835C83ED82FE820F8392 -:109B00001887860182E6282E8DE0382E20E030E08E -:109B100044EB52E4F10166897789808D918D0E9432 -:109B2000A8716B017C0120E030E040EA52E46D81D5 -:109B30007E818F8198850E9489729B01AC01C7014B -:109B4000B6010E94A9716D837E838F83988720E080 -:109B500030E040EA52E469817A818B819C810E94E5 -:109B60008972F10122893389448955890E94A9713A -:109B700069837A838B839C8320E030E040EA52E45F -:109B8000C301B2010E948972F1012685378540899F -:109B900051890E94A9716801ED80FE800F811885AE -:109BA00029813A814B815C81A3DE28960FB6F89417 -:109BB000DEBF0FBECDBFDF91CF911F910F91FF9000 -:109BC000EF90DF90CF90BF90AF909F908F907F905D -:109BD0006F905F904F903F902F9008954F925F92BB -:109BE0006F927F928F929F92AF92BF92CF92DF92AD -:109BF000EF92FF920F931F932B013C0149015A01F1 -:109C0000670178019B01AC010E949075811170C0C1 -:109C1000A5019401C501B4010E949075811168C02D -:109C2000A7019601C701B6010E949075811160C01D -:109C30002AE939E947E053E4C301B2010E94A07464 -:109C400018160CF455C020E030E0A901C301B201A0 -:109C50000E94827287FD4CC02DEC3CEC4FEE52E42A -:109C6000C501B4010E94A07418160CF441C020E094 -:109C700030E0A901C501B4010E94827287FD38C09D -:109C8000A301920160E070E084E393E40E94A87174 -:109C9000A50194010E94A8714B015C0120E030E015 -:109CA00047E153E40E94A074181614F120E030E05C -:109CB00040E251E4C501B4010E94827287FD18C0E0 -:109CC00020E030E044EB52E4C701B6010E94A074EA -:109CD000181674F020E030E044EB52ECC701B601F6 -:109CE0000E948272881F8827881F91E0892701C0FF -:109CF00080E01F910F91FF90EF90DF90CF90BF9089 -:109D0000AF909F908F907F906F905F904F9008954D -:109D1000EF92FF920F931F93CF93DF9382E393E031 -:109D20000E94835F8B3B19F080E293E002C084E3E2 -:109D300093E022E6E22E2DE0F22ECCE5DDE08C0170 -:109D40000C551D40C8018C0F9D1F0E94835F899395 -:109D5000EC16FD06B9F7DF91CF911F910F91FF909F -:109D6000EF900895AF92BF92CF92DF92EF92FF9261 -:109D70000F931F93CF93DF93A82E6EE00E94CA59D2 -:109D8000C82F6FE08A2D0E94CA59D0E0DC2FCC2763 -:109D9000C82B7E016E0104E010E06EE08A2D0E9467 -:109DA000CA59B82E6FE08A2D0E94CA592B2D30E077 -:109DB000322F2227A901482BCA01C816D90608F458 -:109DC0006C018E159F0508F47C01C80FD91F015046 -:109DD000110919F7CE018C199D098E199F0963E0AD -:109DE00070E00E94C775613050E1750708F48B017F -:109DF000C801DF91CF911F910F91FF90EF90DF90FD -:109E0000CF90BF90AF900895CF92DF92EF92FF92E4 -:109E10000F931F93CF93DF93EC01A4DF9C01C1301C -:109E2000D10591F128F0C230D10509F459C084C0A0 -:109E300060915E0D70915F0DCB01A0E0B0E08901F3 -:109E400020E030E06C017D01C01AD10AE20AF30A79 -:109E500041E0C41648E0D406E104F10424F0905136 -:109E6000A109B1090AC0C11448EFD4064FEFE406B6 -:109E7000F4061CF4905FAF4FBF4FBC01CD01601BD7 -:109E8000710B820B930B65C06091600D7091610D39 -:109E9000CB01A0E0B0E0890120E030E06C017D0161 -:109EA000C01AD10AE20AF30A41E0C41648E0D40617 -:109EB000E104F10424F09051A109B1090AC0C114D0 -:109EC00048EFD4064FEFE406F4061CF4905FAF4F62 -:109ED000BF4FBC01CD01601B710B820B930B45C0C2 -:109EE00060915C0D70915D0DCB01A0E0B0E0890147 -:109EF00020E030E06C017D01C01AD10AE20AF30AC9 -:109F000041E0C41648E0D406E104F10424F0905185 -:109F1000A109B1090AC0C11448EFD4064FEFE40605 -:109F2000F4061CF4905FAF4FBF4FBC01CD01601B26 -:109F3000710B820B930B22C0C130D10599F030F028 -:109F4000229719F560E070E0CB0118C060E070E086 -:109F5000CB0145E2C42E49E0D42E43E0E42E42E496 -:109F6000F42E16C060E070E0CB0139E0C32E36EF6E -:109F7000D32E31EBE32E32E4F32E0AC0C12CD12CC8 -:109F800024EBE22E22E4F22E03C060E070E0CB016D -:109F90000E94247320E030E044EB53E40E94DB7421 -:109FA00020E030E040E859E30E94DB749B01AC0103 -:109FB000C701B6010E94A871DF91CF911F910F9147 -:109FC000FF90EF90DF90CF9008958F929F92AF9285 -:109FD000BF92CF92DF92EF92FF920F931F93CF9396 -:109FE000DF93EB012BEDE22E24E1F22E8C016B01CD -:109FF0008CE0C80ED11C6991799189919991F701F2 -:10A0000081909190A190B1907F010E942473A5014D -:10A0100094010E948972F8016193719381939193E5 -:10A020008F01CC15DD0539F7DF91CF911F910F918D -:10A03000FF90EF90DF90CF90BF90AF909F908F9068 -:10A0400008951F920F920FB60F9211240BB60F9224 -:10A050002F933F934F935F936F937F938F939F9330 -:10A06000AF93BF93EF93FF9389B18095982F907131 -:10A0700084FF03C091110E94DD45FF91EF91BF91D4 -:10A08000AF919F918F917F916F915F914F913F9190 -:10A090002F910F900BBE0F900FBE0F901F90189531 -:10A0A000CF93DF93C0914714D09148142097B9F013 -:10A0B00081E080934A1460916014709161148091E2 -:10A0C0006214909163149B01AC010E94DB74698B54 -:10A0D0007A8B8B8B9C8B1092481410924714DF91D3 -:10A0E000CF9108952F923F924F925F926F927F92FD -:10A0F0008F929F92AF92BF92CF92DF92EF92FF9298 -:10A100000F931F93CF93DF93CDB7DEB7CD54D10913 -:10A110000FB6F894DEBF0FBECDBF80912B158077B0 -:10A1200023968FAF2397882389F020E030E0A901A0 -:10A130006091601470916114809162149091631425 -:10A140000E948272882311F40C945059209160145B -:10A150002F8B30916114388F40916214498F509148 -:10A1600063145A8F809170148B83909171149D8326 -:10A17000A0917214AE83B0917314BC8300915C14EF -:10A1800010915D14E0915E14E987F0915F14FD87F2 -:10A1900020914F1430915014409151145091521409 -:10A1A0002DA33EA34FA358A730914B143DAF409130 -:10A1B0004C144EAF50914D145FAF80914E142196C8 -:10A1C0008FAF219720915714309158144091591412 -:10A1D00050915A142DAB3EAB4FAB58AF3091F013AA -:10A1E00022963FAF2297409146144BA75091CA1335 -:10A1F00024965FAF24978091C9138B8F9091E610BE -:10A2000025969FAF2597A0914714B0914814BA8B1B -:10A21000A98B2091531430915414409155145091AE -:10A22000561429AF3AAF4BAF5CAF309168143B8BFB -:10A23000409169144C8B50916A145D8B80916B1422 -:10A240008E8B909164149C8FA0916514AD8FB0910A -:10A250006614BE8FE0916714EF8F30906C142090DD -:10A260006D14F0916E14F98320916F142A838091FC -:10A27000CB135BA5851709F4F4C649895A89452B88 -:10A2800009F033C224965FAD24978B8D581709F4DB -:10A2900078C7A82EB12CA9E2AA9DC001AB9D900D54 -:10A2A0001124FC01E951FF4EFA8BE98B80914A148D -:10A2B000882319F010924A14BCC0809149148F5F12 -:10A2C000853019F08093491402C010924914E0912E -:10A2D000491421E12E9FF0011124EF50FC4E89E238 -:10A2E0008A9DA0018B9D500D112449515F4E7A012A -:10A2F000DA018C91808311964D915D916D917C91E5 -:10A300001497DB01CA0123E0880F991FAA1FBB1F06 -:10A310002A95D1F781839283A383B483D7011596BD -:10A320004D915D916D917C911897DB01CA0133E0ED -:10A33000880F991FAA1FBB1F3A95D1F78583968373 -:10A34000A783B087D70119964D915D916D917C914E -:10A350001C97DB01CA0143E0880F991FAA1FBB1F8E -:10A360004A95D1F781879287A387B487D7011D9635 -:10A370006D917D918D919C9150978B019C0153E043 -:10A38000000F111F221F331F5A95D1F7058716871B -:10A390002787308B0E9422736DAF7EAF8FAF2196DF -:10A3A0009FAF2197F70125A136A147A150A50E9493 -:10A3B00089726DA37EA38FA398A79B01AC0160E077 -:10A3C00070E080EA9FE30E94897269AF7AAF8BAF39 -:10A3D0009CAF2396FFAD2397FF23D1F02B893C89B7 -:10A3E0004D895E896B897C898D899E890E94DB7489 -:10A3F000D70151966D937D938D939C935497BB8910 -:10A40000BF8BEC89E88FFD89F98F2E892A8F0DC0CB -:10A41000D70151966D917D918D919C9154970E9499 -:10A4200048756F8B788F898F9A8F1DAA1EAA1FAAD5 -:10A4300018AE29E22A9DF0012B9DF00D1124E9515F -:10A44000FF4EFE87ED87C1A0D2A0E3A0F4A0A70134 -:10A45000960160E070E080E09FE30E948972698766 -:10A460007A878B879C8723963FAD23973323F1F11F -:10A4700042E040935B14AD85BE8595964D905D900E -:10A480006D907C90989751968D909D90AD90BC90DA -:10A490005497A50194010E94DB749B01AC01C30198 -:10A4A000B2010E94A8718B0189879D8720E030E06E -:10A4B000A9010E94827287FF1BC1A7019601C701F3 -:10A4C000B6010E94A971A30192010E94DB749B0155 -:10A4D000AC01C501B4010E94A8710E9448756B8B44 -:10A4E0007C8B8D8B9E8B3F82288615C110925B14CE -:10A4F000ED85FE85F5A1FF83AD85BE859696BC9161 -:10A50000B887ED85FE8507A110A5EB8DEF5FE231E1 -:10A5100009F4E0E02496FFAD2497EF1789F029E2D3 -:10A520002E9FF0011124E951FF4E618972898389C0 -:10A5300094890E9448756B8B7C8B8D8B9E8B04C09D -:10A540001B8A1C8A1D8A1E8A2B893C894D895E893B -:10A550006B897C898D899E890E94DB742B013C016B -:10A5600089E28A9DA0018B9D500D112449515F4EB7 -:10A570005AA349A3DA0151962D913D914D915C91D9 -:10A5800054972D873E874F87588BA30192016D8585 -:10A590007E858F8598890E94A87129853A854B858B -:10A5A0005C850E94DB742F813885A8010E94A97107 -:10A5B00020E030E040E05FE30E94DB74362E272E7F -:10A5C00089839A8320E030E0A9010E94A0741816C4 -:10A5D0000CF095C0232D322D49815A816F817885E9 -:10A5E000C8010E94A07418160CF071C0E9A1FAA16C -:10A5F000858C968CA78CB0A0A3019201C501B401F3 -:10A600000E94A87129853A854B855C850E94DB7480 -:10A610006B837D838E839C839B01AC01632D722DA4 -:10A6200089819A810E94A074181694F5C501B4011D -:10A630000E9448756C8F7D8F8E8F9F8FA50194012E -:10A640006D857E858F8598890E948272811106C0F2 -:10A65000F1E0F0935B1409831A835DC02D853E857C -:10A660004F855889C501B4010E94A87129853A8592 -:10A670004B855C850E94DB749B01AC016F81788502 -:10A68000C8010E94A8716F83788789839A8343C029 -:10A69000A7019601C701B6010E94A971232D322D91 -:10A6A00049815A810E94DB74A30192010E94A97121 -:10A6B0000E9448756C8F7D8F8E8F9F8F3F8228867A -:10A6C0003B822D8229812E833A813C8324C042E043 -:10A6D00040935B1409831A835F895C8F888D8D8F0B -:10A6E000998D9E8FAA8DAF8F16C03F82288617C086 -:10A6F0003F8228861B8A1C8A1D8A1E8A10C0BB893D -:10A70000BC8FEC89ED8FFD89FE8F2E892F8F1F82E4 -:10A71000188619821A8200E010E019861D8622969A -:10A720005FAD2297452F50E05AA749A786E0849F46 -:10A73000F001859FF00D1124E453FC4E80914914E3 -:10A740008283A989BA899596BC91B8ABE989FA89BF -:10A75000F6A1F9ABA989BA899796BC912696BFAFA5 -:10A760002697E989FA89F0A52796FFAF279729ADA3 -:10A770003AAD4BAD5CAD68A979A98B2F9F2F0E9494 -:10A78000A8716CA77DA78EA79FA720E030E0A90144 -:10A790000E94827287FF04C01CA61DA61EA61FA6CB -:10A7A00020915B1428A32B813D814E815C816F81B8 -:10A7B000788589819A810E948272811105C032E078 -:10A7C00028963FAF289704C041E028964FAF2897BE -:10A7D00028A859A92E965FAF2E9726968FAD26975B -:10A7E0002D968FAF2D9727963FAC27978EE3C82ED7 -:10A7F00083ECD82E8EE2E82E89E3F82E412C512CE2 -:10A800003201C9A2DAA2EBA2FCA238A1332321F0C3 -:10A81000313009F485C0C5C0A989BA8991962D91B6 -:10A820003D914D915C919497C701B6010E94DB74F4 -:10A830004B015C0120E030E040E05FE30E94DB740C -:10A840002F89388D498D5A8D0E94A971A7019601D3 -:10A850000E94DB749B01AC01622D2E967FAD2E977A -:10A860002D968FAD2D97932D0E94A871262E2E9692 -:10A870007FAF2E972D968FAF2D97392E2F8138854C -:10A8800049815A810E94827287FF3DC02F8138859D -:10A8900049815A8168A979A926968FAD269727966E -:10A8A0009FAD27970E94A8719B01AC010E94A971DE -:10A8B0006B017C012C8D3D8D4E8D5F8D6F89788D68 -:10A8C000898D9A8D0E94A9719B01AC01C701B601C7 -:10A8D0000E9489726B017C012896BFAD2897B8A3AE -:10A8E000EC8DEF8BFD8DF88F2E8D298F3F8D3A8F5C -:10A8F0002F8048852E964FAF2E9759812D965FAFAA -:10A900002D973A80EBC0A50194016F89788D898DD0 -:10A910009A8D0E94A9716F8B788F898F9A8FDEC074 -:10A920002C8D3D8D4E8D5F8DC701B6010E94DB746D -:10A930009B01AC01622D2E967FAD2E972D968FAD8B -:10A940002D97932D0E94A8714B015C012B813D81B5 -:10A950004E815C810E94827287FFB8C02B813D814D -:10A960004E815C81622D2E967FAD2E972D968FADF8 -:10A970002D97932D0E94A8712C8D3D8D4E8D5F8D4E -:10A980000E9489726B017C012B808D812E968FAF86 -:10A990002E979E812D969FAF2D973C80A2E0A8A375 -:10A9A0009DC0E989FA8921A132A143A154A1C7011F -:10A9B000B6010E94DB744B015C012F89388D498DF3 -:10A9C0005A8D0E94827287FF52C020E030E040E042 -:10A9D0005FE3C501B4010E94DB749B01AC016F8988 -:10A9E000788D898D9A8D0E94A871A70196010E9489 -:10A9F000DB749B01AC01622D2E967FAD2E972D96B8 -:10AA00008FAD2D97932D0E94A87129966FAF29972E -:10AA10002A967FAF2A972B968FAF2B972C969FAFB6 -:10AA20002C97980149855D850E94A0741816FCF446 -:10AA3000A50194016F89788D898D9A8D0E94A871E6 -:10AA40006F8B788F898F9A8F29962FAC29972A96AA -:10AA5000FFAD2A972E96FFAF2E972B962FAD2B97F3 -:10AA60002D962FAF2D972C963FAC2C9737C0980181 -:10AA700049855D85622D2E967FAD2E972D968FADE3 -:10AA80002D97932D0E94A8719B01AC010E94A97182 -:10AA90006B017C012B893C894D895E896F89788D9A -:10AAA000898D9A8D0E94A9719B01AC01C701B601E5 -:10AAB0000E9489726B017C01202E2E961FAF2E976B -:10AAC00039852D963FAF2D973D8408C0282C2E96B2 -:10AAD0009FAE2E972D96AFAE2D973B2CA7019601DA -:10AAE000C301B2010E94A9712B013C0129A13AA125 -:10AAF0004BA15CA10E94827287FF07C0A301920153 -:10AB000069A17AA18BA19CA120C02CA53DA54EA531 -:10AB10005FA5622D2E967FAD2E972D968FAD2D972A -:10AB2000932D0E94A074181644F52EE333EC4EE2E8 -:10AB300059E369A17AA18BA19CA10E94A97169A383 -:10AB40007AA38BA39CA3A30192010E94A8716B011D -:10AB50007C01980149855D85622D2E967FAD2E97EB -:10AB60002D968FAD2D97932D0E94A07418160CF47E -:10AB70004CCE48A140935B1403C058A150935B1482 -:10AB80002DA13EA14FA158A5622D2E967FAD2E97E7 -:10AB90002D968FAD2D97932D0E94DB7468A379A31A -:10ABA0008CA798AB0E946F726B017C016DAD7EAD7E -:10ABB0008FAD21969FAD21970E946F724B015C0172 -:10ABC000A70196010E94A8710E94F67269AB7AAB48 -:10ABD0008BAB9CABA6E089A59AA5A89FF001A99F85 -:10ABE000F00D1124E453FC4E29A93AA931832083A6 -:10ABF000232B09F087C023965FAD2397552309F4D3 -:10AC000081C0C801A985BD8580935C1490935D14B3 -:10AC1000A0935E14B0935F148B899C89AD89BE8923 -:10AC20008093681490936914A0936A14B0936B1482 -:10AC30008C8D9D8DAE8DBF8D809364149093651423 -:10AC4000A0936614B09367148B819D81AE81BC8103 -:10AC50008093701490937114A0937214B093731432 -:10AC60008F819885A981BA8180936C1490936D141B -:10AC7000A0936E14B0936F1422968FAD2297809399 -:10AC8000F013A989BA89B0934814A093471429AD49 -:10AC90003AAD4BAD5CAD20935314309354144093B4 -:10ACA0005514509356143B8D3093C9138DA19EA11A -:10ACB000AFA1B8A580934F1490935014A093511452 -:10ACC000B09352149BA59093461410926014109266 -:10ACD000611410926214109263141092571410921F -:10ACE00058141092591410925A14C0924B14D092C6 -:10ACF0004C14E0924D14F0924E142DA13EA14FA1A0 -:10AD000058A565C12DA93EA94FA958ADC301B201EF -:10AD10000E94A9712B013C0128A139A14CA558A979 -:10AD2000C501B4010E94A8719B01AC01C301B2012D -:10AD30000E9489724B015C0128A139A14CA558A938 -:10AD4000C701B6010E94A871A50194010E94DB749D -:10AD50006DAB7EAB8FAB98AF20EC31EE44E65EE49A -:10AD6000C501B4010E94DB740E946F720E94F672EA -:10AD7000603DE7E07E078105910560F446E029A586 -:10AD80003AA5429FF001439FF00D1124E453FC4E7D -:10AD9000158253C0603A5FE075078105910560F444 -:10ADA00026E0A9A5BAA52A9FF0012B9FF00D11243A -:10ADB000E453FC4E31E011C060344FE1740781056B -:10ADC000910568F426E0A9A5BAA52A9FF0012B9F5A -:10ADD000F00D1124E453FC4E32E035830CC0A6E0A4 -:10ADE00049A55AA5A49FF001A59FF00D1124E45395 -:10ADF000FC4EB3E0B58346E029A53AA5429FF00199 -:10AE0000439FF00D1124E453FC4E2581022E04C013 -:10AE100096958795779567950A94D2F7A9A9BAA9C7 -:10AE200002C0AA0FBB1F2A95E2F7B183A083611568 -:10AE30007105B1E08B07910568F446E029A53AA5B4 -:10AE4000429FF001439FF00D1124E453FC4E7483A4 -:10AE5000638304C08FEF9FEF94838383BBA4B39479 -:10AE600096E0B91201C0B12C980149855D85622D2B -:10AE70002E967FAD2E972D968FAD2D97932D0E94F8 -:10AE8000A0741816CCF4822D2E969FAD2E972D9679 -:10AE9000AFAD2D97B32DE989FA8985A396A3A7A312 -:10AEA000B0A7F8A1FDAF29A12EAF3CA53FAF48A99F -:10AEB00021964FAF2197CDC020E030E0A901622D4F -:10AEC0002E967FAD2E972D968FAD2D97932D0E94A8 -:10AED000A07418160CF0A6C0C801A985BD85809382 -:10AEE0005C1490935D14A0935E14B0935F148B89EF -:10AEF0009C89AD89BE898093681490936914A0934E -:10AF00006A14B0936B148C8D9D8DAE8DBF8D809324 -:10AF1000641490936514A0936614B09367148B81A6 -:10AF20009D81AE81BC818093701490937114A09325 -:10AF30007214B09373148F819885A981BA8180931C -:10AF40006C1490936D14A0936E14B0936F145BA562 -:10AF50005093F01389899A899093481480934714E9 -:10AF600029AD3AAD4BAD5CAD2093531430935414DE -:10AF700040935514509356143B8D3093C9138DA1B3 -:10AF80009EA1AFA1B8A580934F1490935014A093A5 -:10AF90005114B0935214B09246141092601410924F -:10AFA000611410926214109263141092571410924C -:10AFB00058141092591410925A14C0924B14D092F3 -:10AFC0004C14E0924D14F0924E149C01AD01C70157 -:10AFD000B6010E948972A989BA8995966D937D936D -:10AFE0008D939C9398975CD8BB8DB093E610C35B10 -:10AFF000DF4F0FB6F894DEBF0FBECDBFDF91CF910C -:10B000001F910F91FF90EF90DF90CF90BF90AF9086 -:10B010009F908F907F906F905F904F903F902F9078 -:10B020000C9448402496EFAD2497FB8DEF1779F0F0 -:10B030008F2F8F5F823109F480E02B8D25963FADF5 -:10B040002597231303C025968FAF25978B8F1A8AD8 -:10B05000198A3F8028844BA522964FAF2297BBA622 -:10B0600006C9C801A985BD8580935C1490935D14C1 -:10B07000A0935E14B0935F148B899C89AD89BE89BF -:10B080008093681490936914A0936A14B0936B141E -:10B090008F89988DA98DBA8D8093601490936114D7 -:10B0A000A0936214B09363148C8D9D8DAE8DBF8D73 -:10B0B0008093641490936514A0936614B0936714FE -:10B0C0008B819D81AE81BC818093701490937114AB -:10B0D000A0937214B0937314832D922DA981BA8119 -:10B0E00080936C1490936D14A0936E14B0936F14AE -:10B0F00022968FAD22978093F013A989BA89B093D5 -:10B100004814A093471429AD3AAD4BAD5CAD2093E4 -:10B1100053143093541440935514509356143B8D4C -:10B120003093C9138DAD9EADAFAD2196BFAD2197C4 -:10B1300080934B1490934C14A0934D14B0934E14E1 -:10B140008DA19EA1AFA1B8A580934F1490935014E8 -:10B15000A0935114B09352142DA93EA94FA958ADF4 -:10B1600020935714309358144093591450935A1401 -:10B170003BA53093461425964FAD25974093E61096 -:10B180008FC0C801A985BD8580935C1490935D1420 -:10B19000A0935E14B0935F148B899C89AD89BE899E -:10B1A0008093681490936914A0936A14B0936B14FD -:10B1B0008F89988DA98DBA8D8093601490936114B6 -:10B1C000A0936214B09363148C8D9D8DAE8DBF8D52 -:10B1D0008093641490936514A0936614B0936714DD -:10B1E0008B819D81AE81BC8180937014909371148A -:10B1F000A0937214B0937314832D922DA981BA81F8 -:10B2000080936C1490936D14A0936E14B0936F148C -:10B2100022965FAD22975093F0131092481410922B -:10B22000471489AD9AADABADBCAD809353149093E8 -:10B230005414A0935514B093561424969FAD24979C -:10B240009093C9138DAD9EADAFAD2196BFAD219743 -:10B2500080934B1490934C14A0934D14B0934E14C0 -:10B260002DA13EA14FA158A520934F143093501407 -:10B2700040935114509352148DA99EA9AFA9B8AD13 -:10B280008093571490935814A0935914B0935A1460 -:10B290009BA5909346142596AFAD2597A093E610F5 -:10B2A000C35BDF4F0FB6F894DEBF0FBECDBFDF919B -:10B2B000CF911F910F91FF90EF90DF90CF90BF90B3 -:10B2C000AF909F908F907F906F905F904F903F9046 -:10B2D0002F900895CF93DF930E9498368BE2E9E494 -:10B2E000F4E1DF011D928A95E9F783E2E3ECF0E1F6 -:10B2F000DF011D928A95E9F71092481410924714C5 -:10B300001092CB131092F01381E0809346141092A8 -:10B31000C2100E94193681B39091C1109170C92F4B -:10B32000B0E0DB2F96E0CC0FDD1F9A95E1F78F7B25 -:10B33000C82BC1BBEBE0F1E090818091C11082701D -:10B34000880F880F977F892B808381B39091C110DC -:10B3500092FB992790F98E7F892B81BB8091C01039 -:10B3600080FD8F9A80FF8F9880819091C01092709D -:10B370008D7F892B808321B39091C0109470892F89 -:10B3800090E095958795922F9D7F892B81BBDF91CA -:10B39000CF910895CF93DF93C62F813009F48EC0EB -:10B3A00038F1823009F069C10E942F2E8CE60E948C -:10B3B000BF2D0E94092E8C2F0E94BF2D0E94092EA6 -:10B3C0000E942F2E8DE60E94BF2D0E94092E62E062 -:10B3D00070E080E090E00E94D444559A5D9A62E06B -:10B3E00070E080E090E00E94D444D8E0C0E002C168 -:10B3F0000E94A42F8CE60E94342F0E947E2F8C2F57 -:10B400000E94342F0E947E2F0E94A42F8DE60E945E -:10B41000342F0E947E2F62E070E080E090E00E9476 -:10B42000D444399A419A62E070E080E090E00E9452 -:10B43000D444D8E0C0E0439865E070E080E090E05C -:10B440000E94D444439ACC0F65E070E080E090E025 -:10B450000E94D44439983199C16065E070E080E081 -:10B4600090E00E94D444D15031F74398399A419AE0 -:10B4700062E070E080E090E00E94D444439A65E08E -:10B4800070E080E090E00E94D444439862E070E075 -:10B4900080E090E00E94D444399A419A62E070E0E2 -:10B4A00080E090E00E94D444439862E070E080E045 -:10B4B00090E00E94D4440E94662FE0C00E94022FB8 -:10B4C0008CE60E94472E0E94C72E8C2F0E94472E8A -:10B4D0000E94C72E0E94022F8DE60E94472E0E94D6 -:10B4E000C72E62E070E080E090E00E94D44480913A -:10B4F0000101846080930101809102018460809346 -:10B50000020162E070E080E090E00E94D444D8E064 -:10B51000C0E0809102018F778093020165E070E0C6 -:10B5200080E090E00E94D444809102018068809382 -:10B530000201CC0F65E070E080E090E00E94D4440E -:10B54000809101018B7F809301018091000182FD38 -:10B55000C16065E070E080E090E00E94D444D1508A -:10B56000C1F6809102018F778093020180910101E1 -:10B5700084608093010180910201846080930201C4 -:10B5800062E070E080E090E00E94D444809102018B -:10B5900080688093020165E070E080E090E00E94A6 -:10B5A000D444809102018F778093020162E070E0C1 -:10B5B00080E090E00E94D4448091010184608093F7 -:10B5C00001018091020184608093020162E070E0D9 -:10B5D00080E090E00E94D444809102018F778093B4 -:10B5E000020162E070E080E090E00E94D4440E949A -:10B5F000952E44C05E9865E070E080E090E00E9487 -:10B60000D4445E9ACC0F65E070E080E090E00E9448 -:10B61000D44455984D99C16065E070E080E090E0B9 -:10B620000E94D444D15031F75E98559A5D9A62E0F9 -:10B6300070E080E090E00E94D4445E9A65E070E0A3 -:10B6400080E090E00E94D4445E9862E070E080E088 -:10B6500090E00E94D444559A5D9A62E070E080E0E8 -:10B6600090E00E94D4445E9862E070E080E090E058 -:10B670000E94D4440E94F12D01C0C0E08C2FDF91C4 -:10B68000CF910895E2EDF4E124813581DC010E943F -:10B690002176A1E0B1E02C9128602C93A0EAB0E0E3 -:10B6A0002C9120682C93DC01CB012AE0B695A7955C -:10B6B000979587952A95D1F79093A9008093A80034 -:10B6C000868180618093A1000895CF93DF9321E567 -:10B6D000829FC0011124EC01D55F40E550E0BE011E -:10B6E00082E894E118D4892B51F41092821440E539 -:10B6F00050E062E874E1CE01CBD380E001C081E08C -:10B70000DF91CF91089590E0FC013197E231F1058E -:10B7100008F04EC08827E654FF4F8F4F0C941976DF -:10B72000809180008F7703C0809180008F7D80930F -:10B730008000089580918000877FF9CF84B58F774E -:10B7400002C084B58F7D84BD08958091B0008F774D -:10B7500003C08091B0008F7D8093B00008958091E8 -:10B7600090008F7707C0809190008F7D03C08091FB -:10B770009000877F8093900008958091A0008F773C -:10B7800007C08091A0008F7D03C08091A000877FBB -:10B790008093A0000895809120018F7707C0809149 -:10B7A00020018F7D03C080912001877F809320013D -:10B7B00008951F93CF93DF93282F30E0F901EA57C4 -:10B7C000F54F8491F901E05CF54FD491F901E65011 -:10B7D000F64FC491CC23B9F0162F811194DFEC2FD2 -:10B7E000F0E0EE0FFF1FE052F64FA591B4919FB726 -:10B7F000F894111104C08C91D095D82302C0EC911B -:10B80000DE2BDC939FBFDF91CF911F91089586338C -:10B8100008F0865390917B00282F2870977F922BF9 -:10B8200090937B008770806480937C0080917A0085 -:10B83000806480937A0080917A0086FDFCCF8091AD -:10B8400078002091790090E0922B08951F920F923A -:10B850000FB60F9211240BB60F922F933F934F9375 -:10B860005F936F937F938F939F93AF93BF93EF9368 -:10B87000FF9380917D1490917E1490932501809385 -:10B880002401E0917B14F0917C14309709F0199514 -:10B89000FF91EF91BF91AF919F918F917F916F91A8 -:10B8A0005F914F913F912F910F900BBE0F900FBE64 -:10B8B0000F901F9018951F920F920FB60F921124A0 -:10B8C0000BB60F922F933F934F935F936F937F939A -:10B8D0008F939F93AF93BF93EF93FF938091D41473 -:10B8E0009091D5149093A5008093A400E091D21478 -:10B8F000F091D314309709F01995FF91EF91BF9112 -:10B90000AF919F918F917F916F915F914F913F91F7 -:10B910002F910F900BBE0F900FBE0F901F90189598 -:10B92000E2E7F0E080818E7F808308951F920F927E -:10B930000FB60F9211248F939F93809108029091DC -:10B94000090290939500809394009F918F910F909E -:10B950000FBE0F901F9018951F920F920FB60F9267 -:10B9600011240BB60F922F933F934F935F936F93D6 -:10B970007F938F939F93AF93BF93EF93FF938091A8 -:10B980007614909177148093B200E0917414F09142 -:10B990007514309709F01995FF91EF91BF91AF9110 -:10B9A0009F918F917F916F915F914F913F912F91D7 -:10B9B0000F900BBE0F900FBE0F901F9018951F9207 -:10B9C0000F920FB60F9211240BB60F922F933F9345 -:10B9D0004F935F936F937F938F939F93AF93BF9397 -:10B9E000EF93FF9380912B15813071F08091291591 -:10B9F00081110AC00E94DD459FB7F89480912915F6 -:10BA00008360809329159FBFFF91EF91BF91AF9104 -:10BA10009F918F917F916F915F914F913F912F9166 -:10BA20000F900BBE0F900FBE0F901F90189589B10D -:10BA300080719091181596FD02C090E189278823A6 -:10BA400019F011F087E0089580E008952F923F9259 -:10BA50004F925F926F927F928F929F92AF92BF921E -:10BA6000CF92DF92EF92FF920F931F93CF93DF93CA -:10BA7000CDB7DEB768970FB6F894DEBF0FBECDBF67 -:10BA800090912A159111A6C1782E2BED34E1398BB6 -:10BA9000288B5901CE010D964C0100E010E0C12C1D -:10BAA000D12C7601A72DB0E0BD8BAC8B802F00236D -:10BAB00021F0013021F094E003C091E001C092E058 -:10BAC000F40191934F012C893D8902C0359527954A -:10BAD0008A95E2F720FF1BC020E030E040EC5FEBEE -:10BAE000D50194966D917D918D919C9197970E942F -:10BAF000DB74362E472E582E692EA70196010E9420 -:10BB0000827287FD04C0C32CD42CE52CF62C0F5F69 -:10BB10001F4FB4E0AB0EB11C0330110539F6809015 -:10BB20001E1590901F15A0902015B090211584E04F -:10BB3000682E01E06EE275E1CE0101960E94E54FAC -:10BB400080911915E82FF0E0FF8BEE8BFE01319606 -:10BB50002AE235E13B8B2A8B1901CE010D962C018F -:10BB600080E090E0188E10E0B701A60170582C8993 -:10BB70003D89082E02C0359527950A94E2F720FFEB -:10BB800025C0A88DAF5FA88FD10114961D921D927C -:10BB90001D921C9217972E893F89082E02C0359559 -:10BBA00027950A94E2F720FF03C0002319F007C08D -:10BBB000002329F0C082D182E282F38204C0408354 -:10BBC000518362837383D2012C91122B0196BFEFB4 -:10BBD0004B1A5B0A349624E0220E311C8330910507 -:10BBE00031F6388D632F70E080E090E00E94227380 -:10BBF0000E9448759B01AC01C501B4010E94DB7431 -:10BC00006B017C01109347150E94264020E0B7018C -:10BC1000A601CE0101960E9495410E9472500E9499 -:10BC200032390023E1F003DFFE013D9620E030E0F1 -:10BC300090E06191462F412359F0AC01022E02C0E1 -:10BC4000559547950A94E2F740FF02C06095162388 -:10BC50002F5F3F4F2330310561F7109347150E9446 -:10BC600072508091D9148473B9F08091D914807383 -:10BC700029F00E94DD450E94B533ACC00111A5C07A -:10BC8000D6DE8721B1F79FB7F8948091D9148B7FC6 -:10BC90008093D9149FBF04C0812F877009F0C1CF52 -:10BCA00019DB0E94374080912215909123150E9444 -:10BCB000124581E00827C9F020E030E040EA50E476 -:10BCC0006091241570912515809126159091271566 -:10BCD0000E94DB746B017C0180901A1590901B15FB -:10BCE000A0901C15B0901D1510C0C0902415D090C8 -:10BCF0002515E0902615F090271580901E15909040 -:10BD00001F15A0902015B09021156A94611012CFD4 -:10BD1000E0901915F12C8090241590902515A09095 -:10BD20002615B09027152401350177FA709477F81D -:10BD3000709400E010E08C899D89002E02C09595DA -:10BD400087950A94E2F780FF2CC0C701002E02C03D -:10BD5000959587950A94E2F7A889B98980FF11C063 -:10BD600094962D913D914D915C919797C501B401A9 -:10BD70000E94A971E889F98920813181428153812A -:10BD800006C02D913D914D915C91C301B2010E947D -:10BD9000DB740E94AB74EA89FB89648375838683B4 -:10BDA00097830F5F1F4F2A893B892C5F3F4F3B8B47 -:10BDB0002A8B888999890496998B888B0330110581 -:10BDC00009F0B9CF0E94264005C08091D91482FFA6 -:10BDD0005ACF4FCF68960FB6F894DEBF0FBECDBFD7 -:10BDE000DF91CF911F910F91FF90EF90DF90CF9057 -:10BDF000BF90AF909F908F907F906F905F904F908B -:10BE00003F902F900895EBE6F0E080818F7E808355 -:10BE1000E8E6F0E080818E7F8083089554985C9AF4 -:10BE20008091181583FF0BC080916B008061809317 -:10BE30006B00809168008160809368000895E3CF73 -:10BE40006EE275E188E995E10C94E54FF894F99973 -:10BE5000FECF92BD81BD81E08FBB80B58627482F84 -:10BE6000082E000C550B262F30E024233523232BDE -:10BE700039F06F3F19F060BD84E006C084E104C072 -:10BE8000882321F060BD84E28FBBF99A78940895ED -:10BE90009F92AF92BF92CF92DF92EF92FF920F9359 -:10BEA0001F93CF93DF935C018A017B01E40EF51EA3 -:10BEB000EB01912C6C01C61AD70ACE018C0D9D1D89 -:10BEC000CE15DF0581F0911008C0292D990C330B98 -:10BED000232F221F2227221F01C021E06991922EC9 -:10BEE000960EB4DFEACF692DC501800F911FDF9157 -:10BEF000CF911F910F91FF90EF90DF90CF90BF9067 -:10BF0000AF909F90A3CFF999FECF92BD81BD81E004 -:10BF10008FBB80B508959F92AF92BF92CF92DF9270 -:10BF2000EF92FF920F931F93CF93DF935B018A01F0 -:10BF30007C01E40EF51EEC01912C6B01C81AD90AA4 -:10BF4000C6018C0F9D1FCE15DF0581F0DCDF91103F -:10BF500008C0292D990C330B232F221F2227221FC3 -:10BF600001C021E0982E920E8993EACFC501800F7F -:10BF7000911FC9DF21E030E0981611F020E030E099 -:10BF8000C901DF91CF911F910F91FF90EF90DF904A -:10BF9000CF90BF90AF909F9008955C980895CF93F5 -:10BFA000DF93CDB7DEB7CC56D1090FB6F894DEBF1C -:10BFB0000FBECDBF8091C00082608093C000109200 -:10BFC000C50080E18093C4009091C100906190937E -:10BFD000C1009091C10098609093C1009091C10000 -:10BFE00090689093C1009091C80092609093C800AF -:10BFF0001092CD008093CC009091C90090619093F5 -:10C00000C9009091C90098609093C9009091C900AF -:10C0100090689093C9009091D00092609093D00066 -:10C020001092D5008093D4009091D10090619093AC -:10C03000D1009091D10098609093D1009091D1005F -:10C0400090689093D100909130019260909330016C -:10C050001092350180933401809131018061809389 -:10C0600031018091310188608093310180913101EB -:10C070008068809331010E94623E869A879A829AF4 -:10C0800080910A01886080930A0180910A01826090 -:10C0900080930A0180910701816080930701809A53 -:10C0A000819A579A8091070180618093070180915E -:10C0B0000701886080930701809107018460809365 -:10C0C0000701809108018061809308018091080137 -:10C0D000877F809308018091080184608093080124 -:10C0E0008091181582FF08C08A9A809108018160AA -:10C0F000809308015F9A07C08A98809108018E7F1B -:10C10000809308015F98809181008F7E80938100E9 -:10C1100080918100886080938100809180008C7F75 -:10C1200080938000809180008F7080938000809148 -:10C130006E00887F80936E0014BC15BC80916E00E9 -:10C14000816080936E0054985C9A80916D0080614C -:10C1500080936D00809168008460809368008AE01D -:10C1600090E00E9412450E94722B399A3B9A419AA4 -:10C17000439A8091010184608093010180910101C3 -:10C1800080688093010180910201846080930201A4 -:10C1900080910201806880930201559A569A5D9AB7 -:10C1A0005E9A0E94884E08E91EE081E090E07C01E2 -:10C1B0002FEFE21AF20AA7DED8018D938D01C70195 -:10C1C0008B3C9105A1F758E1C52E5EE0D52E870185 -:10C1D0000F5F1F4FC70197DEF60181936F01780152 -:10C1E0000B34F1E01F0799F74EE9E42E4DE0F42EF1 -:10C1F00068012FEFC21AD20AC80185DED7018D93DC -:10C200007D018601B5ECCB16B1E0DB0689F720E0B5 -:10C2100030E04AE754E464E071E080E090E00E949E -:10C22000162C84E893E06FDE8093620D85E893E03E -:10C230006ADE8093630D04E61DE088E993E07C01EB -:10C24000EFEFEE1AFE0A5FDED8018D938D01C70174 -:10C25000BCE9EB16B3E0FB0691F708E61DE08EE8BB -:10C2600093E07C01EFEFEE1AFE0A4DDED8018D93CC -:10C270008D01C701B2E9EB16B3E0FB0691F70CE6BE -:10C280001DE082E89CE07C01EFEFEE1AFE0A3BDE47 -:10C29000D8018D938D01C701B6E8EB16BCE0FB0613 -:10C2A00091F7C0906C0DD0906D0DE0906E0DF090F8 -:10C2B0006F0D20E030E044EB53E4C701B6010E946B -:10C2C000A074181644F0A7019601C701B6010E9498 -:10C2D0009075882341F010926C0D10926D0D1092A4 -:10C2E0006E0D10926F0D0BE11DE08AEE93E07C0164 -:10C2F000EFEFEE1AFE0A07DED8018D938D01C7011C -:10C30000B6EFEB16B3E0FB0691F760916C0D709100 -:10C310006D0D80916E0D90916F0DFE0131967F0134 -:10C320008F0124E045E00E942D6FFF92EF928AE09A -:10C3300093E09F938F930E94723F0F900F900F9006 -:10C340000F9080915A0D90915B0D019711F40E940E -:10C35000DE2A0E946F2B0E945E2B0E947A2D0E9483 -:10C36000E92A80917A00876880937A009B98A39A43 -:10C370008FE08093940D0E94842C8AEB92E09F932F -:10C380008F938CE193E09F938F930E94723F88EC90 -:10C3900092E09F938F938FE293E09F938F930E94FD -:10C3A000723F8FEC92E09F938F938FE393E09F9384 -:10C3B0008F930E94723F8091630D8F938091620DE5 -:10C3C0008F938EE493E09F938F930E94723F8FE54B -:10C3D00093E00E941A408EE1EAE2F5E1DF011D924E -:10C3E0008A95E9F781E080932A1578949091181541 -:10C3F0000FB6F894DEBF0FBECDBF94FD80932B1512 -:10C400009E01235C3F4F6F963FAF2EAF6F971E018B -:10C4100035E1230E311CCE018996A1969FAF8EAFD8 -:10C42000A197DE011196A396BFAFAEAFA3978091FF -:10C43000FD0F8093FC0F8FE3E1E8F5E1DF011D9232 -:10C440008A95E9F764EA75E180E00E94373D811141 -:10C4500003C087E00E9402330C9A549A549A0E94B7 -:10C46000CB3B549A9ADDDADC54985C9A0E943740B0 -:10C470000E946A590E942640E3DC10922A1510920D -:10C48000D9141092291510922C1510922D15809107 -:10C490002B15813099F486ED98E00E940B4080EBDB -:10C4A00098E00E940B4083E698E00E940B40A4961F -:10C4B0001FAEA497A5961FAEA5973CC010922B1552 -:10C4C000F6CF8091060185FD1FC02ADA1092990DE2 -:10C4D000809102018F7D8093020180916C0D90917B -:10C4E0006D0DA0916E0DB0916F0DB0588093660FD9 -:10C4F0009093670FA093680FB093690F60E070E0AE -:10C5000084EB92E40E94D62C8091620F9091630F8D -:10C51000A091640FB091650F892B8A2B8B2B51F45E -:10C520001092990DE3E6F3E0FF93EF930E94723FC0 -:10C530000F900F908091990D8823E1F0C2CFE92FE1 -:10C54000F0E0E458F04F80819F5F903809F490E06C -:10C550009093FC0F8F3F09F477C58A3091F08D30AE -:10C5600081F0A596BFADA597BB2309F439C58932E3 -:10C5700009F42FC59091FC0F8091FD0F9813DFCF28 -:10C5800063C502E814E1A4963FADA497E32FF0E061 -:10C59000EE57FB4E10820E94B53380912A1581110F -:10C5A00011C58AE0D1011D928A95E9F78091821424 -:10C5B000843209F076C481E08DAF80918314833496 -:10C5C00081F034F4882351F0843209F06FC209C03D -:10C5D000873439F0883509F069C203C088E696E0EF -:10C5E00054C39091841491114EC4833409F42DC224 -:10C5F0001CF4843241F04DC4873409F46AC1883593 -:10C6000009F440C246C480912B15887109F03DC4DD -:10C6100084E696E00E940B4080910B150E94FD3F3E -:10C620008BE496E00E940B4080910E150E94FD3F26 -:10C630008DE296E00E940B4080910C150E94FD3F18 -:10C6400084E196E00E940B4080910C150E94084006 -:10C650008DE096E00E940B4080910D150E94FD3FF9 -:10C6600085EF95E00E940B4080910D150E940840D7 -:10C670008EEE95E00E940B408091181582FB882772 -:10C6800080F90E94FD3F8DEC95E00E940B40809167 -:10C69000181586FB882780F90E94FD3F8DEA95E0FA -:10C6A0000E940B4080911815881F8827881F0E94C0 -:10C6B000FD3F8DE895E00E940B4080910F150E9490 -:10C6C000FD3F87E795E00E940B4080910F150E9487 -:10C6D00008408FE695E00E940B4060911015709124 -:10C6E000111580911215909113150E94A23F8FE4AD -:10C6F00095E00E940B406091141570911515809182 -:10C700001615909117150E94A23F84E395E00E94B0 -:10C710000B408091181581700E94FD3F87E195E0E4 -:10C720000E940B408091181585FB882780F90E9494 -:10C73000FD3F8CEF94E00E940B408091181583FB25 -:10C74000882780F90E94FD3F81EE94E00E940B4013 -:10C7500080911815829581700E94FD3F85EC94E0D0 -:10C760000E940B40809119150E94FD3F8BEA94E0D6 -:10C770000E940B40809119150E94084083EA94E0C2 -:10C780000E940B4060911A1570911B1580911C1529 -:10C7900090911D150E94A23F86E894E00E940B40F4 -:10C7A00060911E1570911F15809120159091211593 -:10C7B0000E94A23F89E694E00E940B4080912215DE -:10C7C0000E94FD3F8AE494E00E940B406091241592 -:10C7D0007091251580912615909127150E94A23FF2 -:10C7E00081E394E00E940B4010E034E6D32E2BED61 -:10C7F000E22E24E1F22E00E08FE294E00E940B4052 -:10C80000802F8D0D0E94FD3F8DE294E00E940B4031 -:10C81000123091F01330E1F0113031F0F701608106 -:10C820007181828193811CC0D7011C966D917D918D -:10C830008D919C911F9714C020E030E041E655E4B3 -:10C84000F701608D718D828D938D0E94897208C071 -:10C85000F70184A195A1A6A1B7A1BC01CD01905873 -:10C860000E94A23F8AE294E00E940B40013029F02E -:10C87000023031F088E294E005C086E294E002C024 -:10C8800084E294E00E940B40123051F0133059F0D2 -:10C89000113019F08AE194E008C088E094E005C006 -:10C8A00087EF93E002C087EE93E00E940B4083EE97 -:10C8B00093E00E940B400F5FF4E0EF0EF11C033099 -:10C8C00009F09ACF2AE0D20E1F5F3CE8D3128FCF37 -:10C8D000E0C281EE93E00E940B408091811582308E -:10C8E00091F038F4882361F08130A9F48BED93E066 -:10C8F0000CC0833069F0883071F481ED93E005C09D -:10C900008EED93E002C088ED93E00E940B400CC0D6 -:10C9100085ED93E0FACF8CEC93E00E940B40809180 -:10C92000811582500E94FD3F89EC93E00E940B40EC -:10C93000809187158A5C0E94FD3F8091851581302A -:10C9400049F028F0823051F48AEB93E005C084EC82 -:10C9500093E002C08FEB93E00E940B40809183151F -:10C96000811103C085EB93E002C080EB93E00E944D -:10C970000B4080918415811103C08BEA93E002C0C3 -:10C9800086EA93E00E940B4080918215813019F471 -:10C9900081EA93E002C08CE993E00E940B40809111 -:10C9A0008815813049F028F0823051F480E993E015 -:10C9B00005C088E993E002C084E993E00E940B403F -:10C9C00080918A15813031F040F0823051F488E84E -:10C9D00093E005C08CE893E002C084E893E00E94F5 -:10C9E0000B4080918915882329F0823039F48CE737 -:10C9F00093E002C080E893E00E940B4089E793E057 -:10CA00000E940B40809193150E94FD3F86E793E0C2 -:10CA10000E940B4060918F15709190158091911537 -:10CA2000909192150E94A43F83E793E00E940B40EF -:10CA300060918B1570918C1580918D1590918E154C -:10CA40000E94A43F8FE693E020C180912B15823095 -:10CA500049F40E94DD4586ED98E00E940B408DE888 -:10CA600098E00BC0811111C282E080932B1586EDF6 -:10CA700098E00E940B4086E998E00E940B4083E614 -:10CA800098E003C180912B15813009F002C286ED38 -:10CA900098E00E940B408EE998E00E940B4083E6EC -:10CAA00098E00E940B4010922B15F3C190912B152A -:10CAB000923008F0EAC1893409F4C5C034F48332F5 -:10CAC00059F0883409F480C064C18E3409F436C149 -:10CAD000823509F4F9C05DC182E08DAF8091841484 -:10CAE0008111D1C110E0BE016F5F7F4F812F0E9485 -:10CAF000373D811104C087E00E940233CAC18CE631 -:10CB000093E00E940B40163029F0173041F486E67E -:10CB100093E002C089E693E00E940B4004C086E3E4 -:10CB2000810F0E94FD3F84E693E00E940B40CE01FE -:10CB300001967C0100E0D7016D917D918D919D91D1 -:10CB40007D010E94B23F023019F082E693E002C0FC -:10CB50008EE593E00E940B400F5F033061F71F5F8B -:10CB6000183009F688E593E00E940B4090EBE92E1F -:10CB700095E1F92E10E0F701619171918191919108 -:10CB80007F010E94B23F123019F086E593E002C0A7 -:10CB900082E593E00E940B401F5F133061F78CE445 -:10CBA00093E00E940B406091BC157091BD1580917F -:10CBB000BE159091BF150E94B23F88E493E00E9499 -:10CBC0000B400E94623365C18091181584FF59C1E2 -:10CBD00084E080932B1517D984E00E94265D83E0C2 -:10CBE0000E94265D0E94B53380912A15811102C0F2 -:10CBF00027D914D980912A1581114BC110922B1578 -:10CC00000E94983610E0812F0E94655B811102C05E -:10CC100087E013C080918214882389F082E894E130 -:10CC20000E941A4082E894E10E948805811105C0A3 -:10CC30008BED99E00E940B4002C00E9402331F5FFF -:10CC4000123009F726C182E08DAF809184148111E2 -:10CC50001FC040E550E06EEA7BE082E894E15BD9DA -:10CC6000892B49F41092821440E550E062E874E1A7 -:10CC70008EEA9BE00DD988E393E00E940B4082E8A6 -:10CC800094E10E941A4084E393E00E940B4001C1AA -:10CC900093E09DAF8D3309F0F6C083E0282F30E09C -:10CCA000F901EE57FB4E9081D901A158BB4E9C93E0 -:10CCB0008F5F90819111F2CF8DAF40E550E062E837 -:10CCC00074E18EEA9BE0ABC082E08DAF809184146A -:10CCD000833509F0D8C083E08DAF80918514843509 -:10CCE00009F0D1C084E08DAF809186148D3309F0B6 -:10CCF000CAC0809188148111C6C085E08DAF809133 -:10CD00008714843239F08A3239F0833209F0BBC09B -:10CD100082E003C081E001C08FEF0E94583D86EDA4 -:10CD200098E00E940B4087E698E00E940B4083E663 -:10CD300098E00E940B400E94DD45ABC082E08DAFC1 -:10CD400080918414811121C010E0812F0E94655BC5 -:10CD5000811104C087E00E94023313C081E393E095 -:10CD60000E940B40812F0E94FD3F8FE293E00E94C2 -:10CD70000B4082E894E10E941A408CE293E00E940A -:10CD80000B401F5F123009F784C091117EC011E083 -:10CD900001C010E0AE01475D5F4FBE01635C7F4F95 -:10CDA00082E894E10E941D45811102C082E076C0B4 -:10CDB000EDAD81E08E0F8DAFF0E0EE57FB4E908130 -:10CDC0009D3309F060C0112361F1482F50E0282FF6 -:10CDD00030E0D901AE57BB4E9C91241B350BF901B5 -:10CDE000EE57FB4E90838F5F9C919111F0CF8DAFEA -:10CDF00082E894E10E948805811149C069A57AA55D -:10CE00008BA59CA50E9489750E94F672F1E56F9F23 -:10CE1000C001112440E550E062E874E1955F38D824 -:10CE200038C0AE014F5F5F4FBE01635C7F4F82E849 -:10CE300094E10E941D45882309F4B8CFEDADF0E0E0 -:10CE4000EE57FB4E808181111EC089A49AA4ABA429 -:10CE5000BCA420E030E04FE753E4C501B4010E94D8 -:10CE6000A074181684F0C980DA80EB80FC80C501BC -:10CE7000B4010E94F672862FB701A6010E94353CCC -:10CE800006C085E00BC083E009C088E007C08111BF -:10CE900005C08BED99E00E940B4094C00E940233C4 -:10CEA00091C08332D1F43F922F928BE793E09F930E -:10CEB0008F931F930F930E947A76F10101900020C7 -:10CEC000E9F7BF01621973096E577B4E0F900F90FF -:10CED0000F900F900F900F900BC0873439F08D3466 -:10CEE00029F0803519F0833509F06CC062E874E1EF -:10CEF000DB018C91803511F0833509F58FEA9CE0D8 -:10CF00000E9445768D89882391F03F922F9283E885 -:10CF100093E09F938F9383EE9CE09F938F930E9467 -:10CF20004C760F900F900F900F900F900F9082E320 -:10CF3000E2E8F4E1DF011D928A95E9F743C08091B0 -:10CF4000AE04843148F087E893E09F938F930E946A -:10CF5000723F0F900F9036C00091AC04B6E6B09FC0 -:10CF600080011124C8018A549B4F0E9445768D8907 -:10CF7000882391F03F922F9283E893E09F938F93C1 -:10CF800006511B4F1F930F930E944C760F900F90EA -:10CF90000F900F900F900F9082E3E2E8F4E1DF0131 -:10CFA0001D928A95E9F78091AC04833120F48F5F5C -:10CFB0008093AC0402C01092AC048091AE048F5FE9 -:10CFC0008093AE04A4961FAEA497A5961FAEA59716 -:10CFD0003BC0B13009F0CECAA5961FAEA597CACA0C -:10CFE000813208F4C7CA8F3209F4C4CA883211F1F9 -:10CFF0008B3329F1A496EFADA497EF3438F08BE092 -:10D000000E940233A4961FAEA497B4CAA496FFADA3 -:10D01000A4972F2F30E04F2F4F5F9FE9980FF90112 -:10D02000EE57FB4E9A3108F480528083A4964FAF9E -:10D03000A497A0CA21E0A5962FAFA5979BCA32E07E -:10D04000A5963FAFA59796CA8091AF0C882399F01B -:10D050008FEA9CE00E9488058093E10C63EE7CE0FF -:10D060000E94822A81E08093E20C82E3AFEABCE076 -:10D070001D928A95E9F78091950D81113FC08091AD -:10D08000AE048823D9F180919A0D8823B9F180915B -:10D090009B0D882399F10091AD04B6E6B09F800105 -:10D0A00011240A541B4FC8010E948805F80182AB65 -:10D0B000F090AD04F6E6FF9D80011124B8016651A1 -:10D0C0007B4F0A541B4FD801D2968C910E94822A22 -:10D0D00081E0F80183AB82E3D8011D928A95E9F7DC -:10D0E000B2E1BF1520F0F394F092AD0402C01092AB -:10D0F000AD048091AE0481508093AE0480915A0DAE -:10D1000090915B0D8130910571F068F0823091054E -:10D1100069F0039791F5A59882E390E00E9412458B -:10D1200082E090E026C01092AF0427C08091AF0447 -:10D130008F5F8093AF04A59A80910301887741F0B7 -:10D140008091AF048436C8F01092AF04A5980AC04D -:10D1500082E390E00E9412458091AF048A3038F05B -:10D160001092AF0410925B0D10925A0D06C083E02E -:10D1700090E090935B0D80935A0D0E94A8330E941B -:10D18000B53380912A15811152C98091E20C882310 -:10D1900069F083EE9CE00E941A4082E3E3EEFCE03B -:10D1A000DF011D928A95E9F71092E20C80912B1510 -:10D1B000882309F4E6C08091960D882309F41AC1EA -:10D1C0001092960D6D961CAE1DAE1EAE1FAE6D97E5 -:10D1D00069961CAE1DAE1EAE1FAE699765961CAE5D -:10D1E0001DAE1EAE1FAE659784E16F96EEADFFAD2E -:10D1F0006F97282F11922A95E9F7A196AEADBFAD92 -:10D20000A197E82F1D92EA95E9F7D101E82F1D9229 -:10D21000EA95E9F7A396AEADBFADA3971D928A95A7 -:10D22000E9F780E090E00E94044FA9966CAF7DAFD3 -:10D230008EAF9FAFA99781E090E00E94044FAD961A -:10D240006CAF7DAF8EAF9FAFAD9782E090E00E9454 -:10D25000044F6B017C0120E030E040E05FE360912F -:10D2600000027091010280910202909103020E94DB -:10D27000A87120E030E040E05FE30E94DB7420E032 -:10D2800030E044E353E40E94DB749B01AC0160E0B6 -:10D2900070E084E393E40E94A8712B013C0120E03C -:10D2A00030E044EB52E4C701B6010E94A871FE01D0 -:10D2B000EF5AFF4F4F019E012B5A3F4F5901DE019C -:10D2C000A75ABF4F6D017B018C01AD962CAD3DADD2 -:10D2D0004EAD5FADAD97A9966CAD7DAD8EAD9FADFA -:10D2E000A9970E94784CA401B501C6010E94194A71 -:10D2F0006D966CAD7DAD8EAD9FAD6D978E01035C6F -:10D300001F4F24E045E0A9D569966CAD7DAD8EAD8B -:10D310009FAD69970451110924E045E09ED56596BB -:10D320006CAD7DAD8EAD9FAD6597810124E045E08C -:10D3300094D58E010F5F1F4F24E045E0C301B20179 -:10D340008CD51F930F933F922F92A196FFADA1977B -:10D35000FF93A0962FADA0972F936F963FAD6F9739 -:10D360003F936E968FAD6E978F9389E993E09F936D -:10D370008F930E94723F0FB6F894DEBF0FBECDBFF1 -:10D3800039C080919A0D882309F415CF80919B0DA7 -:10D39000882309F410CF04E110E082E3B82EA090B6 -:10D3A000AE0CB6E6BA9DC0011124FC01EA54FB4F55 -:10D3B0007F0123A9222309F4FECE9C0126513B4F75 -:10D3C0006901C9010E941A40D601EB2D1D92EA9510 -:10D3D000E9F7D701D3961C92B2E1BA1528F081E0A3 -:10D3E0008A0D8093AE0C02C01092AE0C0150110950 -:10D3F000B1F6E1CE82B301E083FB882780F9802774 -:10D400009091B5048917D9F08AE090E00E94124506 -:10D4100012B313FB112710F910278091B5041817C8 -:10D4200071F01F921F938DEA93E09F938F930E9458 -:10D43000723F1093B5040F900F900F900F90809152 -:10D44000B1049091B204A091B304B091B4048F3FA1 -:10D450009105A105B10509F060F40196A11DB11D6A -:10D460008093B1049093B204A093B304B093B40436 -:10D4700024C01092B1041092B2041092B30410921E -:10D48000B4048BE30E94075C11E08536910508F433 -:10D4900010E08091B004811781F01F921F9388EBF8 -:10D4A00093E09F938F930E94723F1093B004109368 -:10D4B0009C0D0F900F900F900F9080912B15811164 -:10D4C00012C08091970D882371F08091980D882368 -:10D4D00051F080EC93E09F938F930E94723F1092E3 -:10D4E000980D0F900F9080919D0D882309F422C80C -:10D4F00080912B15811128C18091940D8F3009F0F6 -:10D5000023C180919C0D882309F41EC18091150DC3 -:10D510009091160D9C012F5F3F4F3093160D209375 -:10D52000150D45970CF406C821961CAE1DAE1EAE17 -:10D530001FAE219719A61AA61BA61CA61D8A1E8A15 -:10D540001F8A188EE090900DF090910D0091920D31 -:10D550001091930D20918C0D30918D0D40918E0D79 -:10D5600050918F0D6091880D7091890D80918A0D79 -:10D5700090918B0D4101FE01B9965F01DE01DD96B0 -:10D580006D010E94C24A80E090E00E94044F4B016E -:10D590005C0181E090E00E94044F6B017C0182E01D -:10D5A00090E00E94044F2B013C01A50194012196BB -:10D5B0006CAD7DAD8EAD9FAD2197CAD69F7720E033 -:10D5C00030E040E05FE30E94A07418163CF1A70130 -:10D5D000960169A57AA58BA59CA5BAD69F7720E070 -:10D5E00030E040E05FE30E94A0741816BCF0A30195 -:10D5F00092016D897E898F89988DAAD620E030E0CE -:10D6000044EB52E4A6D69F7720E030E040E05FE3B1 -:10D610000E94A074181614F00C949A628EE1EAE24B -:10D62000F5E1DF011D928A95E9F70E9426400E94EC -:10D63000205F8092700D9092710DA092720DB09249 -:10D64000730DC092740DD092750DE092760DF0922C -:10D65000770D4092780D5092790D60927A0D70920C -:10D660007B0D80912E1590912F15A0913015B091C2 -:10D67000311580937C0D90937D0DA0937E0DB0931A -:10D680007F0D8091321590913315A0913415B09192 -:10D6900035158093800D9093810DA093820DB093EA -:10D6A000830D8091361590913715A0913815B09162 -:10D6B00039158093840D9093850DA093860DB093BA -:10D6C000870D8CE0A396EEADFFADA39711928A95DE -:10D6D000E9F78091880D9091890DA0918A0DB09104 -:10D6E0008B0D89839A83AB83BC8380918C0D909141 -:10D6F0008D0DA0918E0DB0918F0D8D839E83AF8384 -:10D70000B8878091900D9091910DA091920DB0915C -:10D71000930D89879A87AB87BC87AE01475F5F4FC0 -:10D72000BE016B5F7F4FCE0101960E94194A00E057 -:10D7300020E030E048E452E4BE016F5F7F4F80E0BC -:10D740000E9408460C949A621092160D1092150DC4 -:10D750000C949A62CF930E94A833C9E20E94B53319 -:10D7600080912A15811111C08091C9139091CA131B -:10D77000981739F0C89FC001112489519F4E892BF9 -:10D7800069F780912B15883049F3CF910895CF9395 -:10D790002091751530917615409177155091781537 -:10D7A000609198157091991580919A1590919B159B -:10D7B000A9D6811126C02091791530917A15409112 -:10D7C0007B1550917C1560919C1570919D158091F1 -:10D7D0009E1590919F1596D6811113C0C1E020919E -:10D7E0007D1530917E1540917F1550918015609187 -:10D7F000A0157091A1158091A2159091A31582D6C4 -:10D800008111C0E08C2FCF910895CF92DF92EF92DB -:10D81000FF920F93CF93DF9330912B15323009F4A1 -:10D8200082C0C02FD22F042F6B017C0193DF109296 -:10D830004615109228158091181587FD03C080E1C8 -:10D8400080932815DD2331F09091281580E18927F8 -:10D850008093281589B1807190912815891751F00E -:10D860009FB7F894809129158061809329159FBFF7 -:10D870000E94B53380912A15811155C0A7019601E8 -:10D8800065E775E181E00E94084681E08093DA1443 -:10D890009FB7F8948091D91482608093D9149FBF68 -:10D8A0000E94B53380912A1581113DC080912B15BE -:10D8B0008111F6CF8091DA148130A9F4CC2351F094 -:10D8C0008CE0EEE2F5E1AAE3B5E101900D928A95D4 -:10D8D000E1F70CC09FB7F89480912915806180937F -:10D8E00029159FBF03C081E0809346151092DA147A -:10D8F0000E94B53380912A15811115C00E946A5982 -:10D900000E9437400E9426406EE275E185E795E16E -:10D910000E94E54FDF91CF910F91FF90EF90DF9044 -:10D92000CF900C946233DF91CF910F91FF90EF90E5 -:10D93000DF90CF9008952F923F924F925F926F9217 -:10D940007F928F929F92AF92BF92CF92DF92EF928F -:10D95000FF920F931F93CF93DF93CDB7DEB7E1977D -:10D960000FB6F894DEBF0FBECDBF6D837E838F836D -:10D9700098872F87388B498B5A8B0D8BAD868B8A76 -:10D9800024E0E29E80011124C80188569A4E9F8BA4 -:10D990008E8BD801A95ABA4EB98FA88F8D909D90C1 -:10D9A000AD90BC90FC012081318142815381C50141 -:10D9B000B401CFD46A8F7B8F8C8F9D8FF4E0CF9E84 -:10D9C00010011124910128563A4E3F8F2E8FC1012C -:10D9D000895A9A4E99A388A3DC01CD90DD90ED90F1 -:10D9E000FC90F9012081318142815381C701B60148 -:10D9F000B0D46AA37BA38CA39DA32401350177FA3D -:10DA0000709477F87094D701C601B05889839A83CF -:10DA1000AB83BC83F801EB58FA4E2A8D3B8D4C8DBD -:10DA20005D8D608171818281938192D44B015C0113 -:10DA3000F101EB58FA4E2AA13BA14CA15DA16081F6 -:10DA400071818281938184D46B017C01A501940151 -:10DA5000C301B201B0D769877A878B879C87A701FA -:10DA6000960169817A818B819C81A5D79B01AC014C -:10DA700069857A858B859C856CD469877A878B8745 -:10DA80009C87A7019601C301B20195D76B017C0168 -:10DA9000A501940169817A818B819C818CD79B013E -:10DAA000AC01C701B60154D429853A854B855C8504 -:10DAB000C3D46B017C019B89992389F02DEB37E35B -:10DAC00046E055EBC701B6013BD787FD1AC02BEDE9 -:10DAD0003FE049EC50E4C701B6013AD410C02DEB49 -:10DAE00037E346E055E3C701B6010CD518164CF0F4 -:10DAF0002BED3FE049EC50E4C701B6012AD46B019D -:10DB00007C018090141590901515A0901615B0907A -:10DB100017152D813E814F815885CA01B90119D44D -:10DB2000A501940115D4A501940145D7B1D74B01A6 -:10DB30005C0120E030E040E05FE3C701B6013BD785 -:10DB40002D813E814F81588536D79F77A50194015D -:10DB5000E0D4B5D54BD57C8B6B8BDB01AB2B09F4BB -:10DB600059C14B01A12CB12CBD89BB2371F0C5015A -:10DB7000B40168D59B01AC016F85788989899A8940 -:10DB80001AD76F87788B898B9A8BC501B4015AD5C8 -:10DB90004B015C019B01AC01C701B601BAD46D8396 -:10DBA0007E838F839887FD85E4E0FE9FC00111246A -:10DBB0009C0128563A4E3E872D87FC01EB58FA4EC1 -:10DBC000D9012D913D914D915C916081718182814E -:10DBD0009381BED3A50194019CD46EA77FA788AB87 -:10DBE00099AB2D813E814F815885CA01B901E3D699 -:10DBF0009B01AC0160E070E080E090E4A9D36B0190 -:10DC00007C012BEA3AEA4AE25EE36D817E818F81F4 -:10DC10009885D1D64B015C0120E030E040E850E42B -:10DC2000C701B60196D39B01AC01C501B401C3D6AF -:10DC300069877A878B879C8720E030E040E05FE34C -:10DC4000C701B601B8D66EA37FA388A799A710E035 -:10DC500022242394312CEB89FC89E215F30509F485 -:10DC6000D9C01C3008F03AC029813A814B815C81CF -:10DC70006EA17FA188A599A59ED66B017C01A30109 -:10DC8000920169857A858B859C8595D6A701960139 -:10DC900060D37B01082FD92EA30192016EA17FA131 -:10DCA00088A599A588D64B015C0129813A814B81D1 -:10DCB0005C8169857A858B859C857DD69B01AC01CD -:10DCC000C501B40145D32B013C011F5FC701A02F43 -:10DCD000BD2D89839A83AB83BC835BC0B10180E097 -:10DCE00090E0B0D42D813E814F81588564D66B0180 -:10DCF0007C010CD469837A838B839C83C701B60132 -:10DD0000BDD64B015C01E88DF98DC080D180E280E9 -:10DD1000F380F7FAF094F7F8F094A8A1B9A18D91E7 -:10DD20009D910D90BC91A02D8AA79BA7ACA7BDA7E4 -:10DD3000A701960169817A818B819C813CD62B0158 -:10DD40003C012AA53BA54CA55DA5C501B40133D670 -:10DD50009B01AC01C301B201FCD22B013C01A70124 -:10DD60009601C501B40127D66B017C012AA53BA50C -:10DD70004CA55DA569817A818B819C811CD69B0114 -:10DD8000AC01C701B601E4D269837A838B839C839B -:10DD900010E0A30192016A8D7B8D8C8D9D8DD9D26F -:10DDA000EE89FF89608371838283938329813A811D -:10DDB0004B815C816AA17BA18CA19DA1CAD2AE8D51 -:10DDC000BF8D6D937D938D939C9313972EA53FA547 -:10DDD00048A959A9ED85FE85608171818281938171 -:10DDE000B8D2AD85BE856D937D938D939C9313972B -:10DDF0000D892F85388949895A8968E975E181E05B -:10DE00000E94084680912A1581110EC0BFEF2B1A7F -:10DE10003B0A21CF0D892F85388949895A8965E7C1 -:10DE200075E181E00E940846E1960FB6F894DEBFE6 -:10DE30000FBECDBFDF91CF911F910F91FF90EF905B -:10DE4000DF90CF90BF90AF909F908F907F906F901A -:10DE50005F904F903F902F900895EF920F931F93F4 -:10DE6000CF93DF93E80147FD02C034E001C034E105 -:10DE7000042E000C550B57FF03C0519541955109D5 -:10DE8000E32E022F242FAE0107D0CE01DF91CF91D8 -:10DE90001F910F91EF9008958F929F92AF92BF9232 -:10DEA000CF92DF92EF92FF920F931F93CF93DF9366 -:10DEB000CDB7DEB729970FB6F894DEBF0FBECDBF42 -:10DEC0006A01122FB02E2BE3201720F0FF24F394C9 -:10DED000F00E02C02CE3F22E0F2D27E0AE014F5FB3 -:10DEE0005F4F50D1BC014981842F8970813031F05E -:10DEF000E1FC06C0E0FE06C090E205C09DE203C062 -:10DF00009BE201C090E05E2D507143FF3CC0911137 -:10DF100002C083E001C084E0811718F4212F281B80 -:10DF200001C020E051110BC0F601822F30E288239E -:10DF300019F031938150FBCFC20ED11C20E0992300 -:10DF400029F0D6019C93F60131966F01C601039624 -:10DF5000E2FE0AC03EE4D6013C9341E411964C93A4 -:10DF6000119712963C9306C03EE6F601308341E6D7 -:10DF700041833283FC01322F40E2332309F442C053 -:10DF800041933150FACF42FF44C0911102C083E067 -:10DF900001C084E0811718F4212F281B01C020E064 -:10DFA00051110BC0F601822F30E2882319F0319312 -:10DFB0008150FBCFC20ED11C20E0992329F0D6015D -:10DFC0009C93F60131966F01C6010396E2FE0BC0E9 -:10DFD00039E4D6013C933EE411963C93119736E424 -:10DFE00012963C9307C039E6F60130833EE6318352 -:10DFF00036E63283FC01322F40E2332319F041939D -:10E000003150FBCFFC01E20FF11D10828EEF9FEF2C -:10E01000A6C021E030E0911102C020E030E01616E9 -:10E0200017061CF4FB01319602C0E1E0F0E02E0F70 -:10E030003F1FBB2021F0EB2DF0E0319602C0E0E065 -:10E04000F0E02E0F3F1FE12FF0E02E173F071CF4EA -:10E05000121B212F01C020E08E2D887159F4F6018A -:10E06000822F30E2882319F031938150FBCFC20E0A -:10E07000D11C20E0992329F0D6019C93F60131961A -:10E080006F0151110BC0F601822F90E3882319F024 -:10E0900091938150FBCFC20ED11C20E00F2D060FB3 -:10E0A0009A81342F307144FF03C0913309F4015039 -:10E0B000101624F4093018F008E001C001E0AB01AB -:10E0C00077FF02C040E050E0FB01E41BF50BA1E04C -:10E0D000B0E0AC0FBD1FEA0FFB1F8EE2A82E4B0174 -:10E0E000801A91080B2D10E01195019511094F3FF1 -:10E0F000BFEF5B0721F4D601AC9211966D01641756 -:10E1000075072CF08416950614F4818101C080E314 -:10E11000415051093196D60111967D0140175107A2 -:10E1200024F0D6018C936701E2CF6417750739F4A8 -:10E13000963320F4953319F4311101C081E3F601CF -:10E140008083F701822F90E2882319F09193815008 -:10E15000FBCFF701E20FF11D108280E090E02996DD -:10E160000FB6F894DEBF0FBECDBFDF91CF911F91E8 -:10E170000F91FF90EF90DF90CF90BF90AF909F9066 -:10E180008F900895283008F027E03327DA01990F9F -:10E19000311D87FD916000966105710539F432608B -:10E1A0002E5F3D9330E32A95E1F708959F3F30F0CD -:10E1B00080387105610509F03C5F3C5F3D9391300B -:10E1C00008F08068911DDF93CF931F930F93FF9208 -:10E1D000EF92192F987F9695E92F96959695E90FCE -:10E1E000FF27EA59FD4F99273327EE24FF24A70183 -:10E1F000E70105900894079428F4360FE71EF81EEF -:10E20000491F511D660F771F881F991F0694A1F79C -:10E210000590079428F4E70EF81E491F561FC11DEC -:10E22000770F881F991F661F0694A1F70590079422 -:10E2300028F4F80E491F561FC71FD11D880F991FBC -:10E24000661F771F0694A1F70590079420F4490FE5 -:10E25000561FC71FD81F990F661F771F881F069468 -:10E26000A9F784911095177041F0D695C7955795E9 -:10E270004795F794E7941A95C1F7ECE0F2E06894BB -:10E280001590159135916591959105907FE2739563 -:10E29000E118F10A430B560BC90BD009C0F7E10C8A -:10E2A000F11E431F561FC91FD01D7EF4703311F499 -:10E2B0008A95E6CFE894015030F0080F0AF4002761 -:10E2C000021708F4202F2395022F7A3328F079E3E0 -:10E2D0007D932A95E9F710C07D932A9589F60694D7 -:10E2E00097956795379517951794E118F10A430BA1 -:10E2F000560BC90BD00998F023957E9173957A330C -:10E3000008F070E37C932013B8F77E9170617D93E1 -:10E3100030F0839571E37D9370E32A95E1F7112442 -:10E32000EF90FF900F911F91CF91DF91992787FD7B -:10E33000909508959F939F77D5D10F9000203AF440 -:10E340009058A2EA2AED3FE049E450E413D096C287 -:10E350005058BB27AA270ED091C25AD230F05FD2B4 -:10E3600020F031F49F3F11F41EF42AC20EF4E09520 -:10E37000E7FBF7C1E92FA4D280F3BA17620773074E -:10E380008407950718F071F49EF5D3C20EF4E0955A -:10E390000B2EBA2FA02D0B01B90190010C01CA015F -:10E3A000A0011124FF27591B99F0593F50F4503E0A -:10E3B00068F11A16F040A22F232F342F4427585FFC -:10E3C000F3CF469537952795A795F0405395C9F714 -:10E3D0007EF41F16BA0B620B730B840BBAF09150CC -:10E3E000A1F0FF0FBB1F661F771F881FC2F70EC06B -:10E3F000BA0F621F731F841F48F48795779567953E -:10E40000B795F7959E3F08F0B3CF9395880F08F026 -:10E410009927EE0F979587950895FAD158F080E8DF -:10E4200091E009F49EEFFBD128F040E851E059F467 -:10E430005EEF09C0C5C17DC2E92FE07841D268F323 -:10E44000092E052AC1F3261737074807590738F060 -:10E450000E2E07F8E02569F0E025E0640AC0EF63BE -:10E4600007F8009407FADB01B9019D01DC01CA013C -:10E47000AD01EF935DD002D20AD05F91552331F008 -:10E480002BED3FE049E450FD49EC63CF0895DF9365 -:10E49000DD27B92FBF7740E85FE316161706480758 -:10E4A0005B0710F4D92F50D29F938F937F936F9374 -:10E4B0002DD3E8E9F1E087D1E1D12F913F914F9140 -:10E4C0005F9185D2DD2349F09058A2EA2AED3FE022 -:10E4D00049EC5FE3D0785D274DDFDF91CFC112D2E9 -:10E4E00080F09F3740F491110EF424C260E070E098 -:10E4F00080E89FE3089526F01B16611D711D811DA4 -:10E5000036C150C10AD108F481E0089590D1E39555 -:10E51000C6C10CD0B3C183D140F07AD130F021F420 -:10E520005F3F19F01EC1511105C24AC1C9D198F30C -:10E530009923C9F35523B1F3951B550BBB27AA2784 -:10E5400062177307840738F09F5F5F4F220F331FF6 -:10E55000441FAA1FA9F333D00E2E3AF0E0E830D0C2 -:10E5600091505040E695001CCAF729D0FE2F27D0C5 -:10E57000660F771F881FBB1F261737074807AB0793 -:10E58000B0E809F0BB0B802DBF01FF2793585F4F08 -:10E590002AF09E3F510568F0E4C0CCC15F3FECF328 -:10E5A000983EDCF3869577956795B795F7959F5FCD -:10E5B000C9F7880F911D9695879597F90895E1E021 -:10E5C000660F771F881FBB1F621773078407BA0780 -:10E5D00020F0621B730B840BBA0BEE1F88F7E095DB -:10E5E000089504D06894B111A5C1089571D188F03F -:10E5F0009F5790F0B92F9927B751A0F0D1F0660F2F -:10E60000771F881F991F1AF0BA95C9F712C0B13049 -:10E6100081F08FD1B1E008958CC1672F782F8827C2 -:10E62000B85F39F0B93FCCF3869577956795B39588 -:10E63000D9F73EF490958095709561957F4F8F4FF7 -:10E640009F4F0895E89409C097FB3EF490958095FC -:10E65000709561957F4F8F4F9F4F9923A9F0F92FA8 -:10E6600096E9BB279395F695879577956795B79526 -:10E67000F111F8CFFAF4BB0F11F460FF1BC06F5F0C -:10E680007F4F8F4F9F4F16C0882311F096E911C01E -:10E69000772321F09EE8872F762F05C0662371F03F -:10E6A00096E8862F70E060E02AF09A95660F771F53 -:10E6B000881FDAF7880F9695879597F9089522D1E4 -:10E6C00080F09F3740F491110EF034C160E070E0AB -:10E6D00080E89FEB089526F41B16611D711D811DB6 -:10E6E00046C060C0DF93CF931F930F938B01EC0163 -:10E6F000E5ECF1E068D0C2D09801AE018B01EC01ED -:10E7000060E070E080E89FE323DEC2D19801AE01B3 -:10E710000F911F91CF91DF915AC1990F0008550FAA -:10E72000AA0BE0E8FEEF16161706E807F907C0F097 -:10E7300012161306E407F50798F0621B730B840B9F -:10E74000950B39F40A2661F0232B242B252B21F479 -:10E7500008950A2609F4A140A6958FEF811D811D19 -:10E76000089597F99F6780E870E060E00895882336 -:10E7700071F4772321F09850872B762F07C06623FA -:10E7800011F499270DC09051862B70E060E02AF0BB -:10E790009A95660F771F881FDAF7880F96958795E9 -:10E7A00097F908959F3F31F0915020F48795779520 -:10E7B0006795B795880F911D9695879597F9089558 -:10E7C0009FEF80EC0895DF93CF931F930F93FF92F9 -:10E7D000EF92DF927B018C01689405C0DA2EEF0185 -:10E7E000F6D0FE01E894A59125913591459155917A -:10E7F000AEF3EF01BFDDFE019701A801DA9479F7CE -:10E80000DF90EF90FF900F911F91CF91DF910895CE -:10E8100000240A94161617061806090608950024FF -:10E820000A9412161306140605060895C9CF50D08F -:10E83000E8F3E894E0E0BB279F57F0F02AED3FE0D3 -:10E8400049EC06C0EE0FBB0F661F771F881F28F02C -:10E85000B23A62077307840728F0B25A620B730B4F -:10E86000840BE3959A9572F7803830F49A95BB0F34 -:10E87000661F771F881FD2F7904896CF092E039402 -:10E88000000C11F4882352F0BB0F40F4BF2B11F49D -:10E8900060FF04C06F5F7F4F8F4F9F4F0895EF93CE -:10E8A000E0FF06C0A2EA2AED3FE049EC5FEB62DD43 -:10E8B000E5DF0F90039401FC9058EDEEF1E03BC1D1 -:10E8C00057FD9058440F551F59F05F3F71F0479521 -:10E8D000880F97FB991F61F09F3F79F08795089506 -:10E8E000121613061406551FF2CF4695F1DF08C025 -:10E8F000161617061806991FF1CF86957105610542 -:10E9000008940895E5DFA0F0BEE7B91788F4BB27A7 -:10E910009F3860F41616B11D672F782F8827985FEF -:10E92000F7CF869577956795B11D93959639C8F37E -:10E930000895E894BB2766277727CB0197F90895B8 -:10E94000ECDE08F48FEF08959B01AC0160E070E00D -:10E9500080E89FE3DECDBCDF58F19E5758F1985117 -:10E96000A0F0E9F0983020F5092E9927660F771F5F -:10E97000881F991F0A94D1F712C0062E672F782F8F -:10E980008827985F11F4000C07C0993FB4F386956F -:10E99000779567959395D9F7611D711D811D3EF49B -:10E9A00090958095709561957F4F8F4F9F4F0895FB -:10E9B0006894C0CFBECF0BD061CF2ADF28F02FDF05 -:10E9C00018F0952309F0CDCEFBCE1124B3CF78DF1C -:10E9D000A0F3959FD1F3950F50E0551F629FF00172 -:10E9E000729FBB27F00DB11D639FAA27F00DB11DCB -:10E9F000AA1F649F6627B00DA11D661F829F222754 -:10EA0000B00DA11D621F739FB00DA11D621F839FDA -:10EA1000A00D611D221F749F3327A00D611D231FB0 -:10EA2000849F600D211D822F762F6A2F11249F57FE -:10EA300050408AF0E1F088234AF0EE0FFF1FBB1F21 -:10EA4000661F771F881F91505040A9F79E3F5105C0 -:10EA500070F087CE6FCF5F3FECF3983EDCF3869586 -:10EA600077956795B795F795E7959F5FC1F7FE2B6B -:10EA7000880F911D9695879597F908959F93D7DEF6 -:10EA80000F9007FCEE5F0BCF11F40EF499CE8ACEF7 -:10EA90001FDFD0F39923D9F3CEF39F57550B87FF90 -:10EAA00043D00024A0E640EA9001805856959795FF -:10EAB00028F4805C660F771F881F20F02617370721 -:10EAC000480730F4621B730B840B202931294A2B31 -:10EAD000A69517940794202531254A2758F7660FE5 -:10EAE000771F881F20F026173707480730F4620B7E -:10EAF000730B840B200D311D411DA09581F7B901C9 -:10EB0000842F9158880F9695879508959B01AC01A5 -:10EB100052CFF8DE20F09F3708F40CCF28CE42CE3B -:10EB2000FCDD880B990B089591505040660F771FBC -:10EB3000881FD2F708959F938F937F936F93FF93CE -:10EB4000EF939B01AC0137DFEF91FF913CDE2F91FA -:10EB50003F914F915F912FCFDB018F939F9380D097 -:10EB6000BF91AF91A29F800D911DA39F900DB29F69 -:10EB7000900D11240895991B79E004C0991F9617F0 -:10EB800008F0961B881F7A95C9F780950895AA1BEF -:10EB9000BB1B51E107C0AA1FBB1FA617B70710F088 -:10EBA000A61BB70B881F991F5A95A9F780959095BA -:10EBB000BC01CD010895A1E21A2EAA1BBB1BFD01C9 -:10EBC0000DC0AA1FBB1FEE1FFF1FA217B307E4074C -:10EBD000F50720F0A21BB30BE40BF50B661F771FA4 -:10EBE000881F991F1A9469F7609570958095909584 -:10EBF0009B01AC01BD01CF010895052E97FB16F4D2 -:10EC000000940FD057FD05D0D6DF07FC02D046F4A4 -:10EC100008C050954095309521953F4F4F4F5F4F1D -:10EC2000089590958095709561957F4F8F4F9F4F78 -:10EC30000895EE0FFF1F881F8BBF0790F691E02D00 -:10EC40001994A29FB001B39FC001A39F700D811DB5 -:10EC50001124911DB29F700D811D1124911D0895E5 -:10EC6000F0DFA59F900DB49F900DA49F800D911D86 -:10EC700011240895FB01DC010D900020E9F71197A4 -:10EC800001900D920020E1F70895FB01DC01019055 -:10EC90000D920020E1F708950F931F93CF93DF9318 -:10ECA000CDB7DEB72E970FB6F894DEBF0FBECDBF3F -:10ECB0000E891F8986E08C831A8309838FEF9FE773 -:10ECC0009E838D83AE01465E5F4F688D798DCE0148 -:10ECD000019659D0EF81F885E00FF11F10822E9632 -:10ECE0000FB6F894DEBF0FBECDBFDF91CF911F915D -:10ECF0000F910895CF93DF93CDB7DEB72E970FB660 -:10ED0000F894DEBF0FBECDBF85E08C838C899D89D2 -:10ED10009A838983AE01485E5F4F6E897F89CE01F9 -:10ED20000196E0D32E960FB6F894DEBF0FBECDBF8E -:10ED3000DF91CF9108950F931F93CF93DF93CDB7BA -:10ED4000DEB72E970FB6F894DEBF0FBECDBF8C0195 -:10ED500086E08C831A8309838FEF9FE79E838D83E0 -:10ED6000CE01019610D0EF81F885E00FF11F1082DF -:10ED70002E960FB6F894DEBF0FBECDBFDF91CF91B8 -:10ED80001F910F9108952F923F924F925F926F9231 -:10ED90007F928F929F92AF92BF92CF92DF92EF922B -:10EDA000FF920F931F93CF93DF93CDB7DEB72B97CF -:10EDB0000FB6F894DEBF0FBECDBF6C017B018A0198 -:10EDC000FC0117821682838181FFBFC1CE010196AB -:10EDD0003C01F6019381F70193FD859193FF8191A9 -:10EDE0007F01882309F4ADC1853239F493FD859103 -:10EDF00093FF81917F01853221F4B60190E0F0D438 -:10EE0000E8CF912C212C312CFFE1F315D8F08B3277 -:10EE100079F038F4803279F08332A1F4232D206127 -:10EE20001DC08D3261F0803369F4232D216016C03E -:10EE3000832D8260382EE32DE4603E2E2AC0F32D10 -:10EE4000F8601DC037FC2DC020ED280F2A3040F09F -:10EE50008E32B9F436FC75C1232D2064322E19C0D0 -:10EE600036FE06C08AE0989E200D1124922E11C015 -:10EE7000EAE02E9E200D1124222EF32DF0623F2E6B -:10EE800008C08C3621F4832D8068382E02C0883665 -:10EE900041F4F70193FD859193FF81917F018111E9 -:10EEA000B3CF982F9F7D9554933028F40C5F1F4F5C -:10EEB0009FE399830DC0833631F0833771F083353A -:10EEC00009F055C020C0F801808189830E5F1F4F73 -:10EED00088248394912C530112C02801F2E04F0E34 -:10EEE000511CF801A080B18036FE03C0692D70E08E -:10EEF00002C06FEF7FEFC5012AD44C018201F32DD0 -:10EF0000FF773F2E15C0280122E0420E511CF80168 -:10EF1000A080B18036FE03C0692D70E002C06FEFA3 -:10EF20007FEFC50109D44C01F32DF0683F2E82011B -:10EF300033FC19C0822D90E088169906A0F4B60122 -:10EF400080E290E04DD42A94F5CFF50137FC85910D -:10EF500037FE81915F01B60190E042D421102A94DE -:10EF600021E0821A91088114910479F7E1C0843676 -:10EF700011F0893639F5F80137FE07C060817181DB -:10EF8000828193810C5F1F4F08C060817181072EC1 -:10EF9000000C880B990B0E5F1F4FF32DFF763F2E51 -:10EFA00097FF09C090958095709561957F4F8F4F21 -:10EFB0009F4FF0683F2E2AE030E0A30166D4882EF0 -:10EFC000861844C0853731F4232D2F7EB22E2AE0D7 -:10EFD00030E025C0932D997FB92E8F36C1F018F4FB -:10EFE000883579F0AEC0803719F0883721F0A9C094 -:10EFF000E92FE061BE2EB4FE0DC0FB2DF460BF2EE4 -:10F0000009C034FE0AC0292F2660B22E06C028E0AF -:10F0100030E005C020E130E002C020E132E0F8013C -:10F02000B7FE07C060817181828193810C5F1F4FA1 -:10F0300006C06081718180E090E00E5F1F4FA301E8 -:10F0400024D4882E8618FB2DFF773F2E36FE0DC068 -:10F05000232D2E7FA22E891458F434FE0BC032FCCF -:10F0600009C0832D8E7EA82E05C0B82CA32C03C00A -:10F07000B82C01C0B92CA4FE0FC0FE01E80DF11D93 -:10F080008081803321F49A2D997EA92E09C0A2FE99 -:10F0900006C0B394B39404C08A2D867809F0B39463 -:10F0A000A3FC10C0A0FE06C0B21480F4280C922C61 -:10F0B0009B180DC0B21458F4B60180E290E090D3D2 -:10F0C000B394F8CFB21418F42B1802C0982C212C4A -:10F0D000A4FE0FC0B60180E390E082D3A2FE16C06A -:10F0E000A1FC03C088E790E002C088E590E0B6018B -:10F0F0000CC08A2D867851F0A1FE02C08BE201C0BF -:10F1000080E2A7FC8DE2B60190E06AD3891430F466 -:10F11000B60180E390E064D39A94F8CF8A94F30127 -:10F12000E80DF11D8081B60190E05AD38110F6CF31 -:10F13000222009F44ECEB60180E290E051D32A9409 -:10F14000F7CFF6018681978102C08FEF9FEF2B9654 -:10F150000FB6F894DEBF0FBECDBFDF91CF911F91E8 -:10F160000F91FF90EF90DF90CF90BF90AF909F9066 -:10F170008F907F906F905F904F903F902F90089569 -:10F1800020FD09C0FC0123FD05C022FF02C07383DE -:10F19000628351834083089544FD17C046FD17C024 -:10F1A000AB01BC01DA01FB01AA0FBB1FEE1FFF1F61 -:10F1B0001094D1F74A0F5B1F6E1F7F1FCB01BA015E -:10F1C000660F771F881F991F09C033E001C034E024 -:10F1D000660F771F881F991F3150D1F7620F711D7D -:10F1E000811D911D08950F931F93CF93DF938C0181 -:10F1F000C801B8D2EC0197FD06C08BD2892BC1F7AC -:10F20000B801CE0129D3CE01DF91CF911F910F918B -:10F2100008958F929F92AF92BF92EF92FF920F93B9 -:10F220001F93CF93DF938C01D62F7A01B22E9AD2FF -:10F230009C0133272B32310531F02D32310559F441 -:10F240008B2D8068B82ED15011F480E061C0C801C8 -:10F2500089D297FDFACFCB2DCD7F2B2D2073F9F4DA -:10F260008033E9F4AA24AA94AD0E09F43EC0C80183 -:10F2700079D297FD3AC09C012F7D3327283531057F -:10F2800041F4C264D25089F1C8016CD297FF07C023 -:10F290002CC0B6FE02C0C26001C0C261DA2D812C52 -:10F2A000912C540120ED280F283078F0C4FF03C0C2 -:10F2B000B801D2D217C02A3040F0C6FFF9CF2F7D57 -:10F2C0003FEE320F3630A0F727504C2FC501B40166 -:10F2D00063DF4B015C01C260D15051F0C80142D2E2 -:10F2E00097FFE0CFC1FD04C0B0CF812C912C540119 -:10F2F000C7FF08C0B094A09490948094811C911C86 -:10F30000A11CB11C2C2FB501A401C70139DF81E07C -:10F31000DF91CF911F910F91FF90EF90BF90AF9031 -:10F320009F908F9008955F926F927F928F929F929D -:10F33000AF92BF92CF92DF92EF92FF920F931F9303 -:10F34000CF93DF93CDB7DEB7A0970FB6F894DEBFAB -:10F350000FBECDBF5C01962E7A01F9018E010F5FC1 -:10F360001F4F680180E2D8011D928A95E9F7D50107 -:10F3700013968C9080E090E0612C712C30E061E07D -:10F3800070E083FC259183FE21918F01522E211183 -:10F3900003C080E090E090C02E3511F4009751F149 -:10F3A000432F50E0481759073CF42D3559F12D32C1 -:10F3B00019F4772009F103C0772009F468C0452DBE -:10F3C000469546954695D601A40FB11D452D47702B -:10F3D0008B0102C0000F111F4A95E2F7A8015C9152 -:10F3E000452B4C93651459F0561410F45394E7CF01 -:10F3F0005A94E5CF31E004C07724739401C0712C96 -:10F400000196BFCF772019F08E8180628E833111F3 -:10F4100003C08824839417C0F6019E012F5D3F4FDF -:10F420008081809581932E173F07D1F7F2CFE114A9 -:10F43000F10429F0D7018C93F70131967F019A945A -:10F44000812C9920E9F0C5018DD197FD17C0FC01F1 -:10F45000FF2723E0F595E7952A95E1F7EC0DFD1DD3 -:10F46000208130E0AC014770552702C035952795C3 -:10F470004A95E2F720FDDBCFB501EED1811089CFAF -:10F48000E114F10411F0D7011C92C80115C0422FFC -:10F49000469546954695D601A40FB11D422F47705B -:10F4A0008B0102C0000F111F4A95E2F7A8015C9181 -:10F4B000452B4C93622EA4CFA0960FB6F894DEBFD6 -:10F4C0000FBECDBFDF91CF911F910F91FF90EF90B5 -:10F4D000DF90CF90BF90AF909F908F907F906F9074 -:10F4E0005F9008955F926F927F928F929F92AF92FA -:10F4F000BF92CF92DF92EF92FF920F931F93CF9321 -:10F50000DF936C01EB015A01FC0117821682512C2A -:10F51000F601E380FE01E3FC8591E3FE8191182F63 -:10F52000EF01882309F4E0C090E0F3D0892B19F0B3 -:10F53000C60159DEEDCF153241F4FE01E3FC159111 -:10F54000E3FE1191EF01153271F4C6010BD197FD65 -:10F55000C9C0412F50E09C01332724173507C1F261 -:10F56000B6017AD1C1C01A3239F4E3FC1591E3FE39 -:10F570001191EF0101E001C000E0F12C20ED210F1D -:10F580002A3078F402606F2D70E080E090E040E275 -:10F5900003DEF62EFE01E3FC1591E3FE1191EF016F -:10F5A000EDCF01FF03C0F11003C09EC0FF24FA9409 -:10F5B000183619F01C3651F010C0FE01E3FC15910D -:10F5C000E3FE1191EF01183641F408600460FE017A -:10F5D000E3FC1591E3FE1191EF01112309F484C0BE -:10F5E000612F70E086E093E09CD0892B09F47CC009 -:10F5F00000FD07C0F50180809180C50102965C0185 -:10F6000002C0812C912C1E3649F4F60146815781A7 -:10F6100060E070E0202FC401B3DD7ACF1336A1F48F -:10F6200001FD02C0FF24F394C6019CD097FD5AC08F -:10F630008114910429F0F4018083C40101964C01E6 -:10F64000FA94F110F1CF4AC01B3551F49E01A40188 -:10F650006F2DC60168DEEC01892B09F03FC039C06F -:10F66000C601C1DD97FD3EC01F3649F128F41436AE -:10F6700021F1193639F125C0133771F01537E9F04A -:10F6800020C08114910429F0F4016082C401019624 -:10F690004C01FA94FF2059F0C60164D03C0197FD5B -:10F6A00006C037D0892B69F3B601C301D5D08114C8 -:10F6B0009104A1F0F401108211C0006203C0006146 -:10F6C00001C00064202FA4016F2DC601A2DD8111AD -:10F6D00005C0F6018381807329F406C000FD18CFB0 -:10F6E000539416CF552019F0852D90E002C08FEF6E -:10F6F0009FEFDF91CF911F910F91FF90EF90DF90DF -:10F70000CF90BF90AF909F908F907F906F905F90C1 -:10F710000895911118C1803219F089508550D0F7A1 -:10F720000895FC010590061621F00020D9F7C001CC -:10F7300008953197CF010895FC0105906150704004 -:10F740000110D8F7809590958E0F9F1F0895FC01AA -:10F750006150704001900110D8F7809590958E0F00 -:10F760009F1F0895CF93DF93EC012B8120FF33C0BF -:10F7700026FF0AC02F7B2B838E819F8101969F835A -:10F780008E838A8190E029C022FF0FC0E881F98131 -:10F790008081082E000C990B009719F420622B83AE -:10F7A0001AC03196F983E8830EC0EA85FB85199566 -:10F7B00097FF09C02B81019611F080E201C080E122 -:10F7C000822B8B8308C02E813F812F5F3F4F3F8369 -:10F7D0002E83992702C08FEF9FEFDF91CF9108957D -:10F7E0000F931F93CF93DF93FB01238121FD03C070 -:10F7F0008FEF9FEF2CC022FF16C0468157812481D6 -:10F8000035814217530744F4A081B1819D012F5FD8 -:10F810003F4F318320838C93268137812F5F3F4F69 -:10F820003783268314C08B01EC01FB010084F18532 -:10F83000E02D1995892BE1F6D80116968D919C91B2 -:10F840001797019617969C938E931697CE01DF918A -:10F85000CF911F910F910895FB01238120FF12C0CA -:10F8600026FD10C08F3F3FEF930761F082832F7D0D -:10F8700020642383268137812150310937832683F1 -:10F88000992708958FEF9FEF0895FA01AA2728304E -:10F8900051F1203181F1E8946F936E7F6E5F7F4F5D -:10F8A0008F4F9F4FAF4FB1E03ED0B4E03CD0670FD9 -:10F8B000781F891F9A1FA11D680F791F8A1F911D2C -:10F8C000A11D6A0F711D811D911DA11D20D009F47C -:10F8D00068943F912AE0269F11243019305D3193BE -:10F8E000DEF6CF010895462F4770405D4193B3E0A7 -:10F8F0000FD0C9F7F6CF462F4F70405D4A3318F04E -:10F90000495D31FD4052419302D0A9F7EACFB4E0FE -:10F91000A6959795879577956795BA95C9F70097B6 -:10F920006105710508959B01AC010A2E0694579557 -:10F93000479537952795BA95C9F7620F731F841FAE -:10F94000951FA01D0895992788270895F894FFCF43 -:10F95000AE47C13F0802000000000000007373635F -:10F96000616E662025640D0A0053255B302D392D0C -:10F970002B2E5D52255B302D392D2B2E5D48255BBE -:10F98000302D392D2B2E5D46255B302D392D2B2E1C -:10F990005D004E256456255B302D392D2B2E5D469E -:10F9A000255B302D392D2B2E5D0058255B302D39F0 -:10F9B0002D2B2E5D59255B302D392D2B2E5D5A2593 -:10F9C0005B302D392D2B2E5D46255B302D392D2BAF -:10F9D0002E5D0042255B302D392D2B2E5D4C255B95 -:10F9E000302D392D2B2E5D52255B302D392D2B2EB0 -:10F9F0005D46255B302D392D2B2E5D002042257371 -:10FA0000204C2573205225730A0053776966745081 -:10FA1000726F002025730A0056342E352E310056A1 -:10FA2000342E302E3400205625730A0020582573BA -:10FA300020592573205A25730A002053257320521C -:10FA40002573204825730A004E2564002042256452 -:10FA5000204C2564205225640A00616E676C652085 -:10FA60006F66667365743A25730D0A00646576697E -:10FA70006365206E616D65203A2025730D0A007361 -:10FA80006F667420766572203A2025730D0A006136 -:10FA9000706920766572203A2025730D0A00776F11 -:10FAA000726B206D6F6465203A2025640D0A00405A -:10FAB000310A0065666665637420636865636B2060 -:10FAC00074696D656F7574210D0A0023255B302DF7 -:10FAD000395D002425730045323320627566666502 -:10FAE000722066756C6C0D0A004033205825732017 -:10FAF000592573205A2573205225730A0040362059 -:10FB00004E30205625640A004035205625640A00F0 -:10FB100040392056300A0041255B302D392D2B2EDF -:10FB20005D00562573002056310A00565542255B6C -:10FB3000302D392E5D0046255B302D392E5D542544 -:10FB4000640058255B302D392D2B2E5D59255B30F7 -:10FB50002D392D2B2E5D5A255B302D392D2B2E5D09 -:10FB60000042255B302D392D2B2E5D4C255B302D31 -:10FB7000392D2B2E5D52255B302D392D2B2E5D001E -:10FB800058255B302D392D2B2E5D59255B302D39B5 -:10FB90002D2B2E5D5A255B302D392D2B2E5D5025BA -:10FBA00064004E25645625640053255B302D392DA5 -:10FBB0002B2E5D0056255B302D392D2B2E5D002020 -:10FBC000006F6B0045323000453231004532320063 -:10FBD00056332E332E310056332E332E300056330B -:10FBE0002E332E320056302E302E30004532330A5E -:0CFBF000004532300A004532310A0000A6 -:00000001FF diff --git a/src/uarm_peripheral.c b/src/uarm_peripheral.c index 90cc090..4b6e538 100755 --- a/src/uarm_peripheral.c +++ b/src/uarm_peripheral.c @@ -565,13 +565,14 @@ void pump_tick(void) if ( (PINJ & HARD_MASK) >0x00) { - if (valve_on_times >= VALVE_ON_TIMES_MAX*10) - { - valve_on_times = 0; - PORTG &= (~0x20); - pump_state = PUMP_STATE_OFF; - - } + valve_on_times = 0; + DDRG |= 0x10; // PG4 PUMP_D5_N + DDRG |= 0x20; // PG5 PUMP_D5 + + PORTG &= (~0x10); + PORTG |= 0x20; + pump_state = PUMP_STATE_OFF; + } else { From efa70e1afd1c09b59eb33e7f27dd94b79143fb2d Mon Sep 17 00:00:00 2001 From: HuttonGe Date: Wed, 27 May 2020 15:36:09 +0800 Subject: [PATCH 67/74] Update 2020-5-27 --- src/uarm_swift.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uarm_swift.h b/src/uarm_swift.h index 39952c7..1f54b6f 100755 --- a/src/uarm_swift.h +++ b/src/uarm_swift.h @@ -13,7 +13,7 @@ #endif #define HARDWARE_VERSION hardware_version -#define SOFTWARE_VERSION "V4.5.1" +#define SOFTWARE_VERSION "V4.6.0" #define API_VERSION "V4.0.4" #define BLE_UUID bt_mac_addr From 50c36f0d23d33d3cfb7641082a51a9c95f39a039 Mon Sep 17 00:00:00 2001 From: TopGun Date: Fri, 3 Jul 2020 17:26:16 +0800 Subject: [PATCH 68/74] Fix doc nanme --- doc/uArm Swift Pro Protocol V4.0.4_en.pdf | Bin 244122 -> 243528 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/uArm Swift Pro Protocol V4.0.4_en.pdf b/doc/uArm Swift Pro Protocol V4.0.4_en.pdf index 38a3d10d2af37a152c56f36c4f863d68b38e6521..b4f4fe33d147a8f144873f2ec89eeaf7d58a57f1 100755 GIT binary patch delta 133632 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 f5&jMc~n3A}-Ao?|NRafd5^*dWqcUW!} z%_iWse0Xg-`_JLCJtDsV{KRHID$miiDOI5%-z!JXC1xpxp@&9kxbvH#d85Qf+^De>*;7Lpn%lPN-Bqp(qf%Ig%ye1{g57 zIqtzGJ3PT#hKks}lB5g<7;YuNx;-6Gcsga$aB_xy{2N76kRjW1s3ELE9{%8rn2GX8 z>Z?7Ro@SLCNNDeYPDfcrGs8KdMD^D&Yiq^om@%J96i%bb(2=bh@Qc$dT?j9#;(aMU zrQ-K@XYoi>NhALKctJY!H*0udlfM}GFDgO}e`Ez>Z;v_K>@}{}Ezwn}7{?bde?6(>BU(Db?{lEGY_+$G?{j^xhCy(!x-rs}O3!1W z*7Hk77`&Di)k4;sp`;3_CWW->xHKLO;@(S`dz43ZLeyChkXcc(4ujhyF~t#1)cDU_ zBx+hp2A+$MoWOHYXvQL(m|rFY#uHd&%OSBn%`MQ zM20$iL93yuoJ*w);-AIv0P3g4z@_3D_&IH1qK$+^zEua17zrv7^ReO8x}IfS2B^r9vn3Kb2Hhu zK)#4V5;(g8E2u%>dc|arR;ZhlH<)dbTcDJ4&)(f_g+(h2{uu|e31)mbBJ{b*(FAG}fG&D+}Lwl-9ehmX$m#8i~8F z-u7p)J;!Q-N;_QH8!0^(e&uPhO)AX+YQ^%|)sdB0NxTzgLwPT8S6<)+xZ9t*mmv}( z;|^XcnaZ&XKFT-Fg=T#a-dHvG-xSh)L$MLwA;%&{DX+JuPnDymj$S;A4A~c1-`5US zkuwEb$YY^_rQ+eQOFj#A#TM~Y%4XJ7seZ&{PAAJ(drmJA(DEDgJouRpz?YQ%ui1*V zUtbpT+mt)F*q8LNS&P)2(Prz&>f)YSO?D#q0n4D@OO}Y=)JJYI;OpRO6%=SWbf=8N zt11-i3x~9(jEfyCi9~jIktj~upqudaV0FR31EOI@H@qH5gmv9+BhWB(J%)X`{UEt* zR6aRA>M^KP!RmJ9w-9STa4F+clNqm6xUxG+v-lh1Qij@^Ex86+gjJu}NzKO)>XTxM z?e|fda?1s1I9HtlNq@soMQXD2z8)+q!7W#WN|2i&)DLxRg-7r?Lqo0z5?o#eBTLm( zWAga#xsd|(Mlkx0$Lx{cTR)(>d#IY%Qdtv!35cp5RIg2Q`Lv(|fZXx3s>TJ7t?Uu$ z$RyN9%;=X=-0>x)Uz|Ls;02LG>eN`!>cUW^Vi?II3k+E<28rjrMszHXYu42uC{}1+ zCh9-rZpb#~!U*1Bd1W!tp`3BUzDh8TU zO-?671tC;mE~i)>d_(i;dRT5^hQ&jYFXdd97ZKzQqB8S12#xJ;)O^%e?dVIv zxRk{kw@qQ?cMM?#XJf@ABs>j&Z_hU_Z7!XT9bI~UmIQSN`4eo}Pm+Dl7!GQuv0B2g z_&bmmqoM1ze4k+4EZBMVr|jG1)g~Wq@|N+%j#Ci(Pp`j#*WcqA)251=#@xSBHkjt? zvyREexRs@9+z28wYXSsGTReJyn|tGFsrKZH`UBL#JKgic2ak4a868Y!0Q9ggR5i5p0zl$Mg;5 zYz&3y854K_&stI3rYUdq?#-I1F}*{CAnuKiB%Xf6T0o4AJk!EwW-rxjOikSLMP~Me)t-I`3+H_9w=;_Z<{Z;9Q zb#I}QGK}FaXcl8fge7ZhJ9j=0^7MJ!496d-L_xy^-b3a*L$yil@T4c{$v0U%c;_r#TbYtZw=xX|0)_QdaJ?h#8ry{Q zv`m3P33XI&H6ANhZ{w5;S+OrzGfq0tU0gH)7blol)yDr>vIZeG3z>ugee8Vb4(-=Rf<#S2lrJR@gpk9vW^yqCBSZ5C{k)#CEcd(Cj=5})6I3*r z4r&J7MJBW(!A@j0D*UT)25(WBtzsXmmdI2_0r(l+dFTBlDoMH^88*BVzoIjcai1~yv zx5mL-wI^r3-@P<@#9(OZVZKda@eFlZgIM0Utk~n>rvxuEqA(SxrsJic9!ybj z%_Z32L&dS;F(qi*6%qWpc-upO-}%7`$fWSJ7brIE8in;l)2%Hdh+^E43;PRa>&rR4 zUA&(!p50?x!!LYMY`Qh_wU^`DX;Kw`<8z-JQwsj1K$;*12WZdR^~H&kU_#2gDeao; zVAxoi`>XKF`I|`KX|K#w^C6oS!>3cdpH_-u*=a0+_y~@|<`FKA#F2`pz+>S2$n5m1 zQ^|Cz0I4cjrIPax=>`9x%6SBf6}*cUqS;9QXl7{2d)%g;WEIJ@z-NQMm$|Hku97>( zUu@wD{MT^L9VkNoe9)z(Nqy;aWd6oIHR_1{h+1KUd^(u{bp_tT74qGosCZ3#G#`=0gO)J${=I2H(#5VSnN5<=HN7ic- zPfPxdsw;d@w^Vus0Rf$(7qMqFR_`+VFd+Gu?=I~%3hF)3O;&NemHM8l%_gDgml}3P zR*I_uqI0UdL1;D)-WX4e?u2OYU$l7J=|BH~h)`Ud|Lcj0h|VU-ac^oQc&`UhM@J zt6788fU8CE8|XCDG#jmzVPhD7UO=lM;Qq`!!`)h@;QP0m=|cRVyjl?gMIrjg^Fq85&|VfjglO?*mMT0DAV&8<@o7`&%nFU{jWdz_xoGG$(F_a{ZY&} zOk zK4z!_an>#5(A|(}x9{{affCeazgdmTz11}C1pWQ9&Xx^qOiUl}?oih)NB;d`e5ca* z_U-VkR|I%A5IGRTzFY;wx)ov9))m)i$V^ugSr*X9_WOPr^hKu}1(}YgVzN{nzD=`b z%SmoUrIH_8Wu<=H!f+Y){9RzKS~_9-LJN7$)uh*rQszx}1L zdxDRS{#JjBcSqFWfbi(ThMFtM8ftz_Z~puy<|e-E_uKVxNCt`S7_o&vg3#HnD*mMQ*=qo5HQP_r?`zc=Q+nj-Y7UNBPXuE`hlR9RD(dX zT&Ws~a#C34{*_ru;qVQ!{d^4u4T=K0Vc9mzaObSqr*+^KvsQKk^OYe?QuU|_U)@)I zY!5|o!RYgx^Fkv~>97;Bax!5!L9N%eG`q~t^eXnwqd7Of@WX2e+bi))}vC$&S(5cy*j8m z-QF1vA8fzT0FX?*blTb7L8Pa4snP1j3CltD;Irbn5*-v^FhxXB^mLy##_c@M#9?!s zs!#s`OtOr+=6d;aCjJv-8;LW_t`~9YJYfqiwB2Yf@@70-@LC5aO6kpGbv$TpdlggC zi;Zcax_()Z)BjC1+&A7;!H0~~TH8nuF`E?ny|6N?i?O-)7hCLHH%Fu^LSvz#46WSS zT>RTbd)Yd0a%PNKp*2-P{dJ(AN%5)KwdK9>rF}i*tPSSxEuUn!`Sl*9hhZvq=*I>r z>0!pNOCM97ic7s<%_OxfF4fR+5=dypy}ian)P5Aedo9V4k0FL5FpAO#zNHM2%wTig zcB^l&w|;02dE0)XXM!k;(}hqaDo2(h`ixHR$WOozI70vPG}GLrD0+Bnfn|37fHIRR zs0n^Ra8kLp0+^|Sk$&So^yyT-M7K{zwj(P+ELXl1qs;*r z5N3e!0Hydumd~qJ-3x!o3wxv)0)Lv$uJNpW&n=Riy4RLP642+q0`eaCm{$2n!d@g2fPR;+k+F%w)6eOui*u_? ztIXGr6@Mr8r+@AX&hF`=tk!1woLyHGo~s1~mN-w^kL)=Yy!+Pxy6jJHzxh^gkrJVj z1$w`nbm^k`q?+KJA23zal{>#Cr~@13=X!cMC&yY{-BcJ3T`Pag@|74m z94ceg>}rAp6=#}@EF6jg!Qp9@JuXvDL#7LB+{ft8x?4D_N>HUN_Z7ul$clL-KSu(; zs*7vSpuQR^mwW#z-_4xD0pSi76Btk&=ssCWvZ1wBwB-e*{BojH8cagB8 zXE6-g0;{3b%#g}jE#qJ68p0$5cOKTeW|_guYaFDZ->9g9W|;YLkR=Sr&iw_RZ8vfv zWQ${8_{;N8FaO{_&rW~-xG3bH-yo2eytt+7lw~=2KW$<<@Qzgdl#A-br3n;?1~`(o z9v!D>!m3Q&WE4cHzZEclMm3+xY!jcxC4QCh#s-jhzIRuitCUtw2fTi60wIaMFRd9Y z3w>T{Y1H<-=3Qv^e4o}`Bdd>3i7sY61`NfGctU;Dwp!=nL__>KcepKS1J2b=En=G? zc+>4-(@EE$g#|{W@ycZj%79rRpZCWaJM$y`&J|q!Z7;%KePZ~>e@d=&<3=-|2Y+XtA6r9 zGdj9{XV4hjH}HQ@t3<1SYZ7nn zUKulp>J%crC+?N0#?iY>r0_#{9?un?N9;w{8v?C zgaS1&>=v4t0-IKOItXB}*rSwRnlIxr?JV53kPPuzG50gExLb;n83WPZ7-N?W zmZhi{sC);Wtm8!-_4rWF!`j7;?kY0%_<_rr*}d^2`tT8&M~j87>cxfc)R&dW8CkcX zGUDpgjMMhrTT^7I$KkHn#%&oeQ(sD?Y`Ax*iMwY9EDkhHbQ%E7)5^l3QW^f>Z!k5O z3{?R-G6V9y}wP!*~|; zCaq@m?_kh!@txQxN`j`DwD3c4%^*L*DW@_-cm?Gm?-c-?r4;M=)S&vVrK zL#fnb5)KeoU*DF%A1dYsOipw(dy&YR?2r82YILyZZPgk=`*{u$Em0ycN`gr)IcKQS zeq37Q>H)O;Y^uw$g}NU-oa4{dVd#FjDD{!*UuDGPPC~_B#Wk2zcT6Y7(_x2giOej_D5Sjq*fPJd7j%_G+8sqakQQ=g5awezg&tikjcWpiAuSueS z%7fP7&OwU|C8u)j8=g5y7$4X7BrqdpgfVm1Q>+D1FK7 z;0bm4TTV+*?lUdyb^*h@Ut~8W$toOZ0YSpe>-o&jO7LA{rX&7i?~(waIE`mcc@E&& zJ*dHOk$zHrK=O>}X;=e6|0%8%@{U0DvS+cYJ7Lx}PbMFf1Ih5=8~datt2|uE#n%&@ zMC=CyuFMtWI|TcI^5{0xrbK~nF2Qk!SSuKO_PFFHSbmIEM)Pzz)m2oToYrRUO0Pu| zg;UNeNmuv}=<7Uh7?g_pzA_xwV~K)E^77 zRA_zACQqBoVVTRt)PvEN+PRVGCybOBpz{saiIk3b>Y<#-ErDdLdLdl**`h=<+fhN`4J1#c;YxD9sJ>;jaj)+AZdxSUMC6EY7XLl2|&bnl3;gBl3i9 zk*x&xXC%KJ+wE;R_wOFkrUIWNHD7DLR#O+h4`DK(b~vvQAWR@yNi$RAf~qTr!#G!bv(QeOT5V2Ih^`2HhMz-= zebz)I&8>6o*nBr}U(d&tpU;W+e;%i($Z!cHMRoYviJz|(<}E=xEvW)FP~19<61q$M zS)p6&2tS3veiWZoY2af7KUzK-ThtA-2s>P=MAbK-$-CxGMk5gZ)>WQci=-B?0AR5> zpH(%%ebA zSWMpf zE~xeaHS_2}q2(raAY~)rQukZrmg_k5CG%Qgn+Cz$^k?(XCI z&=WM^(aws&=vEPBh?%#85*6(l1zj%6x`*wKn|GWWIq5nMub-oI`9Qydtb(GHh;x#R z@qFX-bgi<+$u4}d;~S+6h1K^PTHXrIbyBX|)x2sEB2fT#nxj*m%Qz;bNug#xb~r^h zN*R83@EYK^hVuHHxA{O%99C8ZZg+QNobGgs6n)IxCXPIx;S~5$CP)SnIN7BnpAsCb zSUt&PL0J7qwas7qICKp7b>aVMe0OB8e+KWUz%et_QAThIKEw7tnA-k4@P;U%d_|_BRa-4CAGkVJ8 zBDoJz;+HDP7}Fi_jlRq3M+jqx+jkgFk?jv)2(9KHR_?p52KkdlnN!m7g$?XuOUc}n z;9I3`_7I1gD@U;pLl=AeN%!)mkmab!ARi8=_PlicT!${pp{ki^KJd@i1nv+60NZ)P z?R;|pZrcz|W$}q%b56*`a_Z

      C;E2~mkMkGcd$bI7E=Pv(GQ<8`PsW9_8(ZymC@vBv11s<%A?K(zaBCE0# zh_O9o*sj&r+*xvV9zxz&b@0F#J^25e&3C1emr2VHYV`OVQElzu$;m#z7}?0M&cSEN zlWlN*p^%Z@;Y?enF$3!4^;bWqy>0H^teSCRBx=v>pBgeoK?Dy(29dwX$J2bpKV+Ap zm7AT-sD1ciZsHV7WM#Rqg~Bs6Q3b)Z&wFZ04*=oXSM@sGp>TqkRxATO13>tNT%?RG zyyXvu!Q?J^?|QK>&04wd!qAil$r7QbpNH%@EfId$;}9`KKyPQTr#og<-U-t~rRsSF z-J^3RDZV+oqQ8id#pNqH<@E6TIkbb>@7LBM-dqWb5{hve4z(6*I834L+h5@(U3V$a z|9r3*GZ^)0YR2{x z4s>Un6G->X11zg|7ynX#7`{1CNGJUIZqBxFAj<^$Z@qOStC&igWqDLZ6ee})yR4l^ z0XLZnQA{!Vzzm|P_1AQgOZxW}>Iu3uH1iW}EngF!cdmr}ameC9A@;Uqs9JT?@2|l# z29_LzZSx6T!nMyHmTMODNHK#s$p5w>0K&G<%Qga2uSns;uxl}HBF6tiV2G#C)CC*E znCVD?en}3dm1i-kF^-;=Ns;w%p*g0747CZjez{VFLkk2&E6?@GeFDC)IM zH^+%QUpha^{PooIA&tns%&X?tC_0zesi{{wku_Org?p8!R1M<);_EGd;%b_PQ7kwt zP6+MRzg3GNUqxV!sZp6C7E|Nm~)y;Y}rdU|@Sd#3ly zo|zsh%^#rvK1~P|;OJ_9ITgEDgnqRFLQB>YniG}W<{f44k8Xv2;5?suz$v-QaI+4w zS{HNUE}NRaHqdg62fGF@(a|H>A`<*b5wwY*EdGnuSZbvvf)zerWOfCa{UvgrMdE{( z2rS@(?jVz2b1OgQQ=*u`KL9}%F0)@+jAxU&l4%BGqjQ3Xbt1pO5b?7on>5X3`n$+A+sGi4L5qJS!`bYoJl|lWz@UUPf(xVgg!?fwRNCpG&otNu*Xn+) z@3VG7s$U@{x%Ll85MaW;*qMqsi~4IgT*WMZfkyN=><&a}5;=En&T}l2Q>Tixk3b~B zp?fEqAbTlIJIxX@AZ0R8|+ zProd@nFWM!5d=OwE9^68eOSIy=FNK(hLY4N&L5r^*AP9RF0)xo*+NaBPaIbs?P1A9 zafLr*O7?U%J~g3CJ*JgZy%2yuXTPG$#8aMh09pmSLq^I(aQ$?jZ?=!FmeKJUd0aQ3 z2hOM1$9N=LP>E2~N;Xs8J-Ox`ykG(X2z};v?SvSji3g;LIA%9wT-Jmsl^f(Eq@?++ zBB8(Z+?PSVofH&27`uO7;iU~*9O3SB4?ZKelW}cExy)97UYzKB=lN#!yO>0jtQn6Q z9S?Mu!38!w{vK${jj!fC)?t{9%i&9Ql6E{4^@MSYQ3FSPe`uq}m!cgsfn)o-20~kv z2W`JC>36-)iN=j_ecH)*0mLQvBnthZSK?*7!UMQ3CjQ4xfA_5G5<$&t{mn!%86pa& zo$|c}NIpHgwusee<(@I=`fXmdEqAI=tf!6HyE-UNa_6Z> z3FA<&FV}Br5&!u6OPox^Dgcw3^iyiniPEVNvvDb0$L^3LiH|dvd!r@zd!g&G)QGm^ znL*Eulu_Cn+G8CCr;m6KcNgs*UC%1nXNSkXM8~!q1xUOEacu+KQtPiG^Bn}j`%~$yp;iYZ^ z+=i51gKWJZibqkO)7u#0Ap=AaHI1|Uf$Z>$3l6$2&}G&GC2bIe;zv7D74BSUky+qK zG%+b-&ZF+}@bUmyzH=t_Ge-o+BBHP)q_^Sw`M~~PvsolRE#VxlxqeWj68x5+fHo0 zrv{F3$<$P4NMAK`2Pu`E+8qUj-r@~yjJ1vHC;%eKB2FW~CE1*hmp)o|{u&}k&-Hom zQZdsTEG3R`@&jvxgp*`6!YpoK?ZXcV+ygQMR;Z8YpEebzk7*N(FpCKh@36rdV?U$8 zxcm(PoB37vPWa&Z$CR6l`iNd_b6i!XKm5goRui*CyG{(nXAoUDC=Co_vtI9YRvy`m9VYc-au-c1P=@wv|z2gP5L*1NS^dU<~K1TK!>#LLeZiSnG&jtb4JXH>KF zsSU}1R&c0VR^?=|KS!5IvC=V(;E`uB))(U$HU#|r^a``hU$>|DK;2vQSM7F1adn-U zVfHQDae-NvM1hrnl7VitX~$>F#GS^R=L%Rrb7dP|yr@|7cw4$Fb3!=jYyFt%`jI2e zbGBfPK6e^EA7%swq7-5<1)Ml0Ob%ker+Wzxe))krtoW^96TUSj3wlxM%oH5bNp*PDGtY7W!vI&v;v+VeC2$4j8qL45$WAO(E(~#$UaCIWfzSq?2JxT0tUSk7* zsnwWm5O&G8psusB)UXfTnEQ-f<+S=eCwNFRciy+0@+_odMT%e{^k|V_5R~#eMrioL zYTn7Grc=MiJ-o`M0JqR%yvj`9fJW_rAi~{7m7u)egA~j>f9Mu9n6~+giz>8+UDebL zYYVNTT^ch&hLlt%I_1}cdqmcz7K4+38AMH|uI92}cU`2Drq5YIxbLn|X9)^N0^M(T ze)Sg=9qTRm-ikSGorw6n_1A@rZj3JNUIUJ`F7%@U-i!pKo9H)~{9x!kcgg!t+f3BcM8Y4_q zm61gt-KS~URgiVYo?JS|zjPxP4aYzf4~!+pLHx!_R=Vla};#Kb(UWEG@$3YWh&?3*{{(CnF??fk=Lo}_9 zJmlZaF8cHE(fx3!5~a{kO?p4fK=nD9I3?z1ZOlbwrSNZtUm)le5*mc!&F9&Rv25ZX zgD2VfuF}t+MJ6@af;69Gv5sZ3HBsH}t(QCLGX%>Si=EC}s!ApYVe=6d0dC0K%mtje zc(f3Ce`c()lE+6La?6xhG{ph<0$x6`g0qMg%;S@9>{`vvEh1<)t4nRZFPVdG7Bgg0 z04eNXZq|itVlj!2kpMY$#;KJ->JNDqyw2=8O&b1*1&LtQkUg1qil%3wgqDSW)=_yT zd&#@#yDx**Fbro5@8jST0BSJzqt?qbc~_COpuca2^j8v&^g##{!(|ZQ5?=8eqJ7k!k5WZCLn*Pn(=~=+Ld|_#A4(ox zbyHklgy!(Rbi4!{^oS8F&mRNUVw+1$$V%(5rmCcB;#JPqTUi<(x5%iZums4zX2kX= z${Nv9Rbs~j^S?S8Nqx{CXqi1-!s)7SYlWXN&W?|6>`%({(0*v8?;fv*k*=<^KH3q< zm87bO{1y7XRr%T}5^azIl;>G6zAv`kB*_eoY_ z2eRWijyalE4YPn0wI91U;^GmmlwDC|GJDa=D+hR~u3q(lW}SjvZqhooTW#}ncJ;p6 zPa5Liwrpp!np5Z%_|bY*t4oL=6143+$UHp84th!*1DmPNPU$&ruf$gth*Qv zkx~wW72L#W1jxT-#11MBn9!P3O)-AUXiCx`O;0b0{~)sD09R}>3F1;zRGY|uod_$Q zKt-8H7(Y2%<|%Z^w0U!w$TGhWpC)yx-(wE+)Kv^8l*C~*W#5?{pTS>rUnlN?g9Vm) zjfA{kH+zrg{EL16P6Aq572TiwaJN8KaHi)~;=&!f#1FMjraW8Vo zMcR&k%xTKgM{tFgZ_72FXP~pV+0iKw9S!-CawW-j`H{CR8n1*xP2_ke?cnttW5d1* zuGnE3#20O#ma>HeQ4~5Mx($;3qFIY=+F6}#-(nq~!kyjQNU?51GuCIIy)E*qmW~tm z%e&HdpG2_Qei|qE-^VdOQ#Go-*+=NkqO30xC1n#E5*T}_wJwf6@41hv)~Jztue58m z@T5IzBwE`tnWY$G?LBNU%N9(leRmt0X1R4?&OyNU97zO7M~hJQXT@!d4V;;8-a7X@ z2O*3RWUY@5NbM{fOe{PB3HzWqVQ6Pv>X@ZkJKr~Xt^wEA^g%m@~=kh z!+VGk%j7K>%(>@94ex#m2&-{b$+FW%+Gw-mGDcA)J3q?X^S7HV>s1@A$#B_ou5RXv;58DQV2oh-&Nm1EK7~WjI^-$ z8D3I`dP^@eWT_jcc$jpA-T(*4@Nd-CMs5Oq43z}sJ!UOfX=idakcj8C?y+DSr2()jC3gQ4u#%VJ^PjJ_T-;o*Uv1&I zI3V{1JE{`_e5`E$?=QED(L^#%8RoFhaIkL<yjo?W;Ym9<5$ZV-wvuC z+g(OM7=?uQJuuApKHqhBjQv>wmreo1Hn49nMicJ}b~6q~@buPS^3Adam>ic7I6ikA zhmb4>Axx?{zND=`T_^1-2U`$W$bIQ&WRml@@zELrE+y<+QW zx^cAOi`l`?dHBAu)=RO@PEjws@g%2Nn7%Z*GOM|S!0RZ|g2Y)8u6(jN}w(eNf zqcu1oX5_!V?1CaD|7(XE(Ms-7X;mWWtLkA!WIVgP)P2`n3$~!q`#f@zND!M?7pG)) zL(YXIRMkbs*kn{&#rHQUXL8aYqK!BiB?8V%p;%8jasACN`+;Clf_rAv%QAbpZ9;dg#&)?`>SYBTz)?ylbU$1Bq|3DXl?8%Y951^q(cL! zxc{n{d|z6Ygtk2;&7{!T=&vGlh|;BQrcnCM43a8SPV$X2Uz1?p5ftL{s_8pU&AX(& zW2W6hA>>kO^!a^*i?DoA;e`3Is@e4SF6o2Yp47(SQZJfEVrv>{2UjS4&|k-XFzIIM ziQMj%mH|>*?0m005FAExeHP#MFh5wm)Gzqi>AUq3{GhL(=QLQivNI0*VFNn;n=(5c z8oOMkU?$^k=2LplDpnealn0$odhRd_LnNz3VzQiuW-ONcdOWHqbqqER8-k`n^3FVf1ojXah@$ZHYv?hOPO_0$ywWaBh2SixS%@TXB_x z)#0a>~?2A&Eja+toqQe;ArJ+*3q)m9c5j2|wLGs7s3-ph?75NAZm3I|y zH}#$e8h5woV@3kV-ja(eIN_G!dRV$yl$ta~%p&R}EEp_}8~3EV_dm+TpAZY4+J?>- zl%-u5Z!{j)1k7Cd&7>ONh19Z<)mhVW_85gCo|{gYvC$G>95W^B+?HMl5-_q8Rv_{q z1YP*&`C}SEeNT-D-@WgkIc!0g?@-+G38pr81L2AJE^HKOm|ZvUAlX6L!IPSr!K&qd zD@Nq_F`()aW)QIuLynLqiXGsJ6xZ3sDjX`yInYz}1T_9NHPVD-MzkbDZonWeJC|Yn z{dYmdY3DkcfZzX#aIrfLooosS%g&ETM6 zHo`Yx_I?FS8v^ArCu_%jg8DvaxQ6g#wyp#x7!53rb)cGV`9lMbyn8HxWRCMs;&8+i zzV#JlbKsCD+L(wx1@l`*WYk`u)Tymmo56*m6D%d`*l)DRAxS14jGjQkSVGpLHFzon zB(Xp#67AncnX(|P%(qo0P*OBdNH7nrOa8Or5bZ<>q3N1ax*gI^>cbl|BndlU^Mzl; zhvy1+p<%Ui5D5jHz6}sasV4ImJ>T8U#)S_f2Lf$wS9j47gM~m5Fs0x9dOi*)nyj!- zVyD!@z`Tdes~$k?y*R8KXrT5-Le^=Lq*V_fyZZngfHMdn5Bv-d=w9S26K$_>G7&|m zup?8jf$sj4wMAbqZL^Ni$o0+u?v0(CUu-d~q=GwiKSoX9mwmZ|Uqf zXu!*nk`^BWF@cd{k~OC@u=!pOKA2#mhe~|2lAR&X(8EE5sxe9Xq&109aFWMR$)AIv z;Qib_Wn^)O$~{$37`s;mHCWVNwIY1BXAqflQQk=E(TUNSZb$2e@h$8Qvs6h@tP)fK*elo^XI%ZswU{H7G)1AXs&7g+|}gEK$4 z-+;aooUsO?t?@uTB+V@Zg_D0>kRTANdWZB^Y|_f{j4a~)t{xd}Ob&?ZDM9K(%vZ)> zsdx!N5_MtN&sl+WxKFow~{58W5R3h<+!`g_Hb?-gVI$E@l)ZNE1L7AuE1289eS0=N+OUrTiCb`y<_N z6nwe4-taIoH2fTNK^n#*Q<$Ehpxw?GVQTf>xNI2Yb)pJ&tZgZeEkap^PbAn6{#FpT z(TV<{L5ws%%neo8&FI3>4FTz@>Fi4L^ZuL3ilpN;HUc*&QbZ)@(C9G(_wOb+6*}=- zj9>Yy-$FM82TLG5iW(uuuV4?-CCl?BbXV}on=2>I^c+>t!FMZk2qX4l2vnc6Dv*DJ z1Lqd{_Xl!z>U13#4`biJQG6((SfKNcIKU9Cl-3uShF-$%LUI~>ivw0Ie zROI4I;gTU9o&5=xvM}~1Wc9pPu4Uv;VKjrmGp%~N#1S&oy2L?apnMC3`TfH%tKZw@ z?~TEfqAYnG#>%N3Kr@_Xo>8WT!|g6(R!pS#~P-TUK{DV#Y;_=mqgm@q+v25#1g5eqi*_^QJ32^sOi z$CXc@LPdXfOIwrSx4k15mk}ZfZ;gyX`)1re&pn0QUqe^NbkYy+zXmFp-z7L$lxaaf z*HAo#`GFsdi1}@WBT1BU9YOT%$E2@cVJ%__ZrR(kCqVfCAZ8Un5` zeWhED+iNYJ>7Hcl3`1y-nB^Md?`T*ys1b<>PYO-A4Mja|k}X4MN$w8~xgcEI#AD1< z>Sy9ZUw85-)9Iq8J97IqylTD#jw5m;?GQn0A)Md@13{}##}nVqKANxkUhMAW(Z*yx zU0OZt?(KQFd)}{`J)BRFzQAUA`=FDH-i|>y@on;AftQE&r!*w$@!<1AXIQgB!4VYE>Fkj$g<5L#5|R1jE+ z-28UxFe@Y&bm<7uWaKxO+9}yh$JI{>#nJ+$o{ddnFr^X*$l zBe&J?3hMfk{_l)FnD=Hbc+C*YF(oEU^0pPYm+KKn(-QxX5*qO+Dz{)$;+Q-*jWg0* znu^@Q9gJukktMxaUYlRGQC!S3(rRnhGfzB7YB4aj!p=XI-nWAQxi}X!bQSu|uR#6n z)YPirqs#O&^^yK(FOq%>7qC|MOu0$|-W3<6r4ugGzO{5}!5l@NSw5`?+PrV62Oc%o zhNT}aQ@y=(YPWjTqhIa%x2>yU+$_fOa>~|(W-8#N@y#ghh^~c`0?ssT=P%a6zp9Az zlDJmnLAm^kNzyFzBq3IMX;?3Y-azV=#pxG;`8}`2IJh$mx?rnRc0 z-IrVQ5O$wB;-WNfQ{E$FIw|%g-11$k*2MvU6ffiVpl|n_czNE; z+~_L!b%O@q+^Bx|+r)klh^H4JG?|Qcu{TUZ6ShPkq@z!a6RI&DnNDN6u>s~D(tg<1 zwNw%uHV7>f-w^BQu`$(`7`OFy^R+AKmvI-Mz1^7_6Paq$SeY+#*EQL!KGMZiQShGI ziV(wOeh)IijX?fQ5>(ZneaJ@VjruMS9!)GLG+Qh#OpB91Yw)yG)wwdgiomY!$*9qU zW4gtPIZ=jNVnp_*1hc|UwllEpI@&UtQr;5OW7j0zs;WNHd;Vnhs0sVCpT(l17_zQZ zG;ppaC>FSt%kEK2sXJ?JwPIF_9*^WX7&7`{md{hXZ8Y(jBe5)XFc%VaS06FCd$!7m z+q!Sd{9)YQV}iYJC$`K~*!(1tEF{I6%ehkIJuNv#P>! zf)5-#uYqNz9yl@;a(O%n&Im=mSqS@y?vipvL(xExdwH0QTx(bv4Nt#1*&*i7Bip8uZyT1C{Vgks|(h?8zu+g+;BtJMVm8LJd zStBjEQDdd3I>Rd=Xy8i^=9NKKmj&Cn7%$AbujB+1& z)~$?{t!6Scz3AxE_U2E>xyR(^YpPG0hN!W`C+@^2mVW#Hc)paCHeWoHG(Qw+q$ksSnZ_V2FLaOD-v1FS7d9pYx=wFqi_T;k08Hs$@GioTNE1wM*H~Pec9$k*LU2hhyuFu1c&yPKp z&iAbt*^BtmxNQ)!X#4&Wr@#Dq&ud-FbE8V4Gw;jhI=|ojTRfxwTD*>OHpKvfov80CAambM1ix^d3_m(%G}~75-zR z(msY}NN(5n5Ytk3^M9Wm)xs9B-$%7Ap!@zJq@mt9wTqV8y9(mHUlf|hGm$QT4$Haw z8G5VJO9)OjMuncOoSTLG1O>0N4#G=60!Izy(alem^}vMhA?eG7-;Ecr|2>*SUBS>*-Qqo&mP*OuHyC=4mJPb<+Jmf9yUjl+DWbCH8rGo#upXZ{z#QmKuyS z7d`8+er#T96uo$kbq<)GVNDKJRz z<6BIYRwvu#xTV#)r5Vqx<5}(9`3+uY6nrVp@u^wele5*PbF^=(eMNu^>3wWogG#~S`oj;Xm zcmOx-(;}S7nHtA9Ym{w8xb@XM0VWrpq2>Mr-AbAW8WTb*nB z0;LD@WQ+42{^xq0(&lH}cbfI|Cd);!uEpZBrO28}^X8@ZW=w_Vx{QE1BoIQ#1XEZa z@g2nN>EJZdIsH<0n+@)eb2|Uznfhny0Bnxm3{Jvd1Q&yk*ZE#ZCvWi6z(Zit+uvdM zx;O6lK+{`hqL;bqCEa1yacAu;6l(ZSnzCk>CJsMS*;fiD!!uNd3@x_yyzI}g?m{}J zt75m<*vyK<(i(Nf_4G6PH*7%d!dFQoD?BzQ1aUX&B zqJ```x9swVV{N7b0)!ke@h!tg6z7U`djCw@P^&e z;6sQN*z5d91M(IA-2L^|Vt;Pan4Mdah|fG4qo3>iLENQ*<42CiZyVRwYVP+4VB6F+ zoB^sdY9=#PJwQ39&i`jf)5i%p--)J2PMkdNZaHKy9zHq>4!6oh%MWEVE*4^~FKOm; z&5L&RBDOJOJV}ek`xUK6*9cF{Ar_U+9M4A{aFqhK`sXh^{mUbl>r7fcbEu`hHMe$! z=B84`nUKfS0tI_Ec>28N2a$P%d$s%UHV3HZt*P^w#^tv?MxZ9y-Ijn`%ViNYA4#$1 zwvONfcDjY5A;;wRzmniL>ehosogrGT6V=nVpU*yw@8T9z(}L}8rj#fJ$m4LQ6Jt__GAc!DfO3T^KSE=|E%)Jw%=1-zWn<1{G?6mxTM zW(HH!VE(RKT&}sfyx`EGL}^d;Tiz>ex`-@+qF_yiw50h|bDww`G%badNY0OdRNX)Y z!S2dXfK87A#J>`~3GYVJ=rEr1zfSuKQ0ruWmS={2<~ zIcDeCxzrK-@C5ALSloZRE#wxMT`rQk7YteREwpBF&zXUXQpErPXic~o)EeLCbl8Wr zLPsIUTSa7{Xks_B52pJ>-giJs{)be|XFMS}O{?B1Z#CmjdPR&+a$0wN1sXo_czAyr zN6t&xRPeS;ZF>teIO{&0y>CpkXN=C#veHBqa;(E1nYq$Anzpr87+G{b&nE__rp2j@ z;BoQ5l1uE>^=}y7N2D7$UhbD^awg$p;gs$q2r}sZYMn+EWU=8+g?Nt@)YU?JBw(=d zUP?cXUR1XKyLQJaUg^<5pg%^T;DJZXvtilKh{ueA{wriMH)Qg&m8FK>{PSnIDEc{) zK_)d>4c<6yE8OK!w&_4A=a02*bQBE8oEvE;`vVj^wOa;N9yU2dIyFQ(mxvZQ?@m}0 zWowyR1|FIUvUj-ya&mja@)-E zEnCI#c1maCdp&C~0xwG(C#w6T+CLMBeB*{JaNgxieEw8~+w#j^*FZ>!SkILOR9?^G z*~x~slHKPv?io|jDLFltWSbwNy>A_tgqQBUUojI_ntF`)-R3?4+#a87 zk*e+>(|5U_=-PRffa&isbQXQPYxVe6+n1*1jH9t|lcRy^%*apDD5}bnMRaJjq8oTC zd!I|+%2~JP&R?n7yu;)5D0Fb>CbJ?soO7yhbqjrjL3rQ>bHT5Ttr<*y$;&SYg}6@o zQfejJmJ)!E5HQZUwA^!nWw!JvD22Q3Hi-;@h@X_e4iildUjiH3XM?4sSi()$S`Ey<>g?Z&AilO95lI zu(c|8g!L5C!6{B}hzo@plC>j7t&7nSPZa;b5+0L}C&i4F(om4B`48+SSN|FpajoPZ zS_FxyF=>8myN;3vyjlXUGEiVn*QI8{`&_CaYxzE-5Fj@Cv2B!7#@E*F9ewiA!_VEB z13Sc3v5eSPx@vt+oGJeD!TgsRUvmM&kf1e5>fBG9SxcecDDS1p&SuuhthhdEX{$TW ziiv5_l_=X)YguEM|G?4mq%AFs_ai==w$0Q2A@l>Wh?GH&+jxZbrj#xP|1)wa<)_kl zDbM#m3KIZ6;!L3%}eSGh^%0~sC)tIkHD2gGeol~E6s1|n!yqMzNA+QnrlFNVeoI%_V8u!!s zSibaqEm9&oQe`=zGfSPo!4YGJNRH-de{ay=EMaW9&VNV9a{K1a)Hf&Ib?oYriS0u9 z;0_R+Y-#seIpVell2KeTX2JZvx`ORksp>w?(mc-BC7lTU6Q^5%CeU;I99-9Qv?EaR zxq|R|Yt71gQAor=?tJge^yadE8S;L&>5&|@v!-GsrOh$fZ79fy5&R{vP(|RbyLL6u zI6c;vG(U`TZoOeTonc1wx#CVc(B0cc3rO9$>Z$*I!muHE*}}3wU~aF@d8sYs#fw@h zI+-z8zkIcQ_0+a%bHk!IN1Qk{x3~;Gmlxh{nH@RTKN=Ku>tr_L*f1r0qOSTJD}SR}$Jx2+%!l ztGc^`S^Rw32*;*S*bc9KwnlK4k8dsWY3m`Y&gSO3y}V<6H$ih+o7^;UoDge_i=*wrG7*V zlXADW5d!S%+qC1uVtQ*K$6?FQa=bWV=VwdK;M-Kfv^bKV<HOTK3~&Tj?o`wqN#0Fdd+4;a=uw*nl2NOE<7YjA-2QI-pPDwfWO~OXPSm> zdbdu%&&of%fsHVh!cs2$M0R%OU)Z8e%2Gg2YzF4(y*dF`UZYx38_5h6cKv%#$2=UH z3wmq-^v1&$tX}u;8XrUQqU@601l-o2$a-HwvP&>sa)>z%-bj^w-@ofti^xLk6*}JR zCzl2_+Ryjp{KoxQXh;}F52%wpEmhc$Z}C*y5!LBTbVOcO@UV<{jsHU9uN5n(J16dI zvuB=Hs^${x`;~H+#IusY0TxdsOx+n?k2K5A8e8DHzB?*E9!Zs=F0N;LTR@#;##9s| zbyZm?toEz+B8-X}v z(62|F2~atCS)?tUoL$H`xi}#o%?SZ+c3!^!{nflTeaxO{FfQZ-{!wIlLilZoM~Y?& z7c1&pYr^KY!=i7|{&stSYNk1`6yji{m=0h3s^?EoCaoui2##V<1Z35uP2F1~ioEn8 zS0OVDK@Rg;4~?HSF)8<9UP?_w8!*0mz#JxR9nCJ6x9#r}0up~7A=cR35Z+W>UJdZ@ z9PUJ!ue;e)_f{o609Vwrt)vr>3zOr#pAl=>^D0M?zEeJgQ(F;9>Cc5jx96_2fj&Rm@eQq8doKDFf zsrOcJmek!}nrIu1f!w0A;~lvH*dCYnKf=kR*y|oVx@;rxuYQQR%PX^0lySzoSRT#V zcUANwNoae#pTlPv%{p!JaXvd=-+CB20NcM@Kf9cr1IO1J#m%ew87sPv*E7rgL&f$= zKS{o?-n)S?K_UY4I@li!ie!+qm|pVZIWC53{Mc9B;P z9lFPWon4u*PbcBZRpZz8_NEqX;iZg~c9G@y8XvpKbiJn~1=3NOJEeB24J82-VXpe4 zZz*QVygQy}pby)HjikgcB7x%Lh}?mStcY$1)r{g`78b3b__~0hkz41JzpR9rnZOa@B5zOi=O<8o-u9Iy!spXb7=U17qqn=b(u0H zYjgW^&Y|J!a~C}lD~crQk1tN6{8@94e;)Ub{_LyUucnuKrtgrpy+Lk|JM~q%wWIZk z!EUSGE56}i@v?DP`CPPF3B(AL##}vnG z=TY7q9qnC?K>pk8<>65;C}&<}*=fONVYc646Mk+^FYp6AzL4ClmKQ{}3qINIDL#dz z9NcdoyPRE}ZQRV2llt-DyzHd4>$Rkt&-J!vGVlCyiH>3Gd2#c-y1u_WAK7B--T<|? zW)d*RfU|-2R>1q=X$$ojc-R;@(tq}GzDPn)B?0bEw_Tb9XguA|X10nK(`4FThSKgX zCQjPDy**toy7M5%+q@p`FD(`?{I<=SGZq{HgR`B>y*IJPO*XZnEtqO`L-wCz5`pP;mrpSSg8m7ju( z6Ri^&5{JHnzsr9|nLegiqp!Fx*`U()#dE$c6_!^o`Z_jy+Hksd?uoxvy;z`sOD4r? zw*!=17xxc7B=m!;v-UU7gx&Kze9oSI>1EDt*Ux%4P*g`Yiu=`LidTRukEG;66_FT; zOf?-1h>KmRJbEv02HKL83X3i$q`8aT#G{aLkPNU!Gj3;uLXS+-aR)ZD`#oz8Kj7nB1^*5MEy?MST>Lw zD@C4!r%7~9t&A6@qizy6KoKVo=I-+(DPwl>jAMu>OrDJ@A#6+^xRRWW14<|%ZjUVE ztidG=n(9?$o9vXUmIM6XTxkvzb{XxzHZ*NhFO)B-IjSe%>$kIK_EYJ1G|oHwI-I@N zc_?jPU;m=x69HDLWCpuxmUJ5t;~i8ubQ`<|8ezTsjI)N7=wMfk|D-@j_Y6y+8UQ4i z)vtU;c7G526Y?<4YCB@m&uXvf!SnpCH+sW@%z#Xb{DSm=RQ`2GjYQkiYAYwfT#ZE2 z(`YLoVMmojy|mt_71yq}5qn2E{lUSmyAfrFCf(aXf2rt7t+d)IL-hc1x5vzV(UOja z{>)WrQ`^4;*D@`02z6Hds?@x8wCDiPb6qZ;Rj-XMa#bnKvm#bKDAbavWgUH}jxIXT zypk%t&s8fexAOfrw^z~Zm)gvt1C81;D`W4I)z^Y*+lsDKb;pWaA=U2l|I0l0+JL#* z{ep~r?Vnc5st2#N{wMR5N@;vnAErUb7|j zX1-hp#f^SkbLIbFj$sG)GbR7vMgLIM8b+>K{v{M^>X*JY`n8DvP*jieGRE$$X4N6Y z19j&o2(}?CXx}5W(quKOT3wdvI#W_m2RQB=KQ-EM9TaJ*k9b*?X^-4n&MG-CzheJH zU5j5+OVBcL)5rL&XEm!w|7oCE285_-KEiJ;03zjus)H)29^qdsDIRgPaVB0YskYtP z>)p`p=RUBjKK>WX)sEaRmbCu^J__RTWw|yqj@kmV8`}qa+g|l|UQL<>X|7GUndRyI z{L3X%BTY*sL#0Mh9xYc5nlWkr0M~}KlGFKlkL(NH1BVM&7w6?g57bS*SOl?_6dwu~ zzXN+`-Ni?uSN?;=?fW`c5^6|yA?1vCEtT}Yf`99OZA7zezr;B&0BPW8lk040b(>M| zZReHF*eK}zGQ~cgQoTo0?<7;Aow5r!_hEgGDca7_1)Qf%w7kBHCsY5nsdt|vt_xs!T3)sN1cePofMp-jk;{Kizo44zRRc=0g-6pM5s)tpHO8Gd4>9eRUoMV zq?kZE%*z1W-8;?ymFGB@!)H7Ubbl&F+7^z6pSEViq1Lw$SoZo; z`VV*|m1Zs9FZ>IDe^K3r-BIJG!#DOLcRFEi2PW=M3#CcRUJDFn={E=bHQGGQuGJ7= z-*pq}y>nEW)mqtlW4(MhJ96w*qb>3f`m}R1(+QiIbTDeydN?}-0U3@fS+3R1=tmG9 z{+frM7Gcr`AJ;zy(pFHPQR{}etv>cN8GWPyI%U7H>;A5JKUDx{Uve6SE00CR3d`M> zp;Jk#{y2ymgyqKydmXLbXrxxg`VBV?s}F-gdMn}!l4~-wCo7Zs(r?^mr`~cMHb(XI z-?+tCUTmX=qmIXI`#?Wz?y0WpNbtW9s z$eBz36bY~i{zjW|R?`!=8pM}*%v&V?E(zX~f73FmfG6{(2YYi(=M;hxrC`P>ocG?> zg7=vvEJvsLewLB6FY-{yD;}vEgK)qUi4uRZw5L-ST*zJuExm$tvYY2*m#CIQH$lbJ z=xHWvU@Il$d};n1NjTH;bkWZ+EMhDBf#gn!vd6k z-C+f4xh4=*EOZvP@DgpNlC+RRzko6tNSCD{P!NB+pN`c}CM0;@kq%nA>i{xAk9Qrh zAfmgDc#z;70TreZ@4KEXP~=@l3aI3^0}L9zC8%IiMI#kvU5BL=u2?tkaG)nG^D!7g zXnRB*h!m{cH5WD8{Aw)%%TB3;`q0OcVNqIuIl|)P4R2 z(U3y?yQY(+#OJP_;6bD~I-1ucvadN0>=*(8!;c-cAe)DddQjv;MjQi&@Zc_{2sB2yK1_hhzTAh*{$t2^=JCZJJ>7{)_d3jk&64g?ejFMxvyo;Qi|e-2oWE*bxOa9rX6sX0R|5U zZGge;m_MM*B*R8pM0X4rydXRSP*5;17-aqgu_^S(xQG>^9k6Di;t{kKWCk!CWFW0l z*%}IEC^1n)7)cD)KqxG@?_?ct(6or6Vxq_}Di{@kPq=FgP@4v4$1rxpoI`2QU;j;q9jFhh~x%{(2|IB;{KR0(HQ>0{#0;u z%dh17@ejg>GcjpK;c#Mr(ghoNIYXZEpaRQnvFGRDOrhej&D0YOXuREVl!^7@fP#0 z6BR}l<5M6M_OO4{#M@vpQ8*3*UZ5xl53a!gzVR~tCi+nn@j?tNSZF6dqrA>7M+8NF z->o$w{t4+_r}ST`{T(i)LL`3-jNm(yBzcJsF{#-I(87qfVo(?`ff$VV8PMIo3_pcH z%#PLDY;rObh{En+nBiQ=JCH9HzFCqn$V&LXh3Uf(4fSUqh73oPaaPz+fU-Ec#2;hA z*_Ej(kO!{A5FT|$>yICN$;t7w#!hHHX)juj}Q^#GHmE zQrLJ04s;S?homTtkwa(j2e?lZ*;vqthz*iZG%)O#*h7qYrgnAR^EVj+gQ;0dxli* zI1SAN582zVyEqvCS5^$n305+G_}5~9|5G3*IwB{Qf?oX_!H@VfKoN7oK z6yf3jG=~C$R2{)nQ2YV?(}@3RjS2j4%GP=|W`H!@JLNhWe`&M7!3(9aN5~81v1lj@ zIk8Mg3*Vqp({;y#Os(%PQ2N zZYog$xT8;`zFG_1Ey0%rP`CBxt`=t{Xh`AwVR8nJfME< zV)_MtS;rsapNfewAeB9nlZE*c!8jof{2ydK)POM1HoOgC;*^Y^1a31K+WDur+IOV? z>ED0m%75i022lWpjRYB504LlehO7jq_;B&8T!(`T;v_^bbO{w`o!pQFKvse*iXaxj z6owCCeZGG{2>DMhE5cqofcS@;pH}i9_%A7pcX%06fY5YR7Aqk#DL?W8uQ&3q6v&(u zCcl3*TvW*aTVXK}JB&<8CJC{vs^ov@{~4_i{PREJ%LR+S_E(ZJ1km~&^BL(?^8XIr ze~|yEz(pzi8tGrDVCR~O|CizNBce3Lt6p;5#aXdBW#K3>eX(H@!$*-O_{j^uX43?w zB3k`3lX9JnR$$rFQ;`@kmvI79Er#0EsgSuQ5=+Y${vX=jDN2(jXcwKfZQHhO+qP}K z)3$AQPusR_PIph+wz2#B*FG0#-<*rH_F8ojl@*m)nH3coSyk~o?~$UdVf2~+{@{xs zv2I0_d21qXI#3BDTro$~c?TkFdUHW@Xj)UTcr+n(P(>s`u^kj4IZ!qvK8(UsVMo+{ zrT?w_Bd{rzMINmhxi+oOTT4{3T7}mtB3@z#wuWCTA?}F%#sJd)u?)` zcgP=?8Xax?Q71eZ3iw40{3pBy?(w4rVF>cS=9_FGt(igG$Nmx9VFTwuY7%p^{yfvO zq1MU3{|ysgR&@fbr78FY>i91iP+Fuq(FePq-u{WO{EN6G%82~q0sb>zR@?Acxc|HX zk{tH4f!*ovT}V*Y|LsM>k6{0|Z)Md7{M_OH$C(nXjrdNPRG?C?g$iN=TR|2R#gD*Z z4yT|L6LB+%(uAH2BQ}ZrkKJtiSk`}nC_<=Z2O_BmiO+o_mq6!jBc8zfEdln87Y1d( z6HGrHt1_}GQd`IldZ12t&CkB*c1S*IpcEuI5oEAs1)?5mAs|LL9});3RPVmFFY060SbTsg+*i()chWJ!}#jCc^2asgq2J;2#nwMjyG_) zx%mXA5kd^lM}mduAL$?QjRQ*c>n~^Ed;}}&*;&HKeiIH7E)Xg({QI9+CS0KMpGf;2 zsAAxFrVJzh|JMDV(x1WtkAnX>_hdo8gNfD<^R?A4LXp=1o_|R4h&!}u2!ZJAW&c+#-w>JvR0ikpce^XMy5147GR84 z+iRd%AYex3R=!&xryqgkKOF!I>;Lg3#4K^rK8O)f?AbRY?UEQc$V*jNl9vqK?@tqf z;8Z*@nh93J&Na^(tDG{aU|74yRd{{Qsu*2p$eM%o9vp2kfoPdw?o1>I*MJowx>+&K zOGA?XU42Sw%#nEx2Byutf;ukBJ6_a%q556C`yvtmpYC1FEg#&87$MIqXfwOyBNS;! z7?(y$5`vH2+x}372e`iZQqkjw!2I!duE6jpbwFEYIaa6w-c-Y3zP1xEjr)zXr0#Bt zCSgaXx1sK6E}(fL(hBMDkGWa$57u5mDYc+8Unx20C4XG?-RoprPolKy=Yy{yt|c zccDnfZ?nbzely&8EVs?)5GNsAQQhBLzSr$i1vjtL0G97VFW;l@uHJ)#Y@et5+~=<2 zZZKgeqKF%kcrukTi$mY~(i2!BSD*uSRyt@pF9rP(q_-x5+&l;E_5rN7^I((U9xci6 zr&lkTBL?rHkGzOrev{ww>eCK-Y}Zp~vtYsk3&?xgjrn9tRX(>29>NWm2f%tLUF= z-K7TNhiN+#XebY7sI2Yg0x`Ox4dOw_XRBbu{y5}22sM(blPfNVuE93f_dp(# z03ZVi|8Hz#-(cFpsozU3f?s@wwGIAfT>nQi9~Ajyrt=EGd=O~?(`_&jJjqS8EX z`2QPM^Z#8Z;Q!|^-1P>f{=xa_=70Tax-H8Exm)aeCDfIHzr8fQk4qI0H5bC%e3n&6 zT)y?hiwY?zMjvp8Y$Qq+9t&pNzw-yYoqc0gv=0$~R31?OuV_C5X6)xhhj*u`^b~T8*&TG zo7%}G<%-WG;uXC*xHzCM$&LF6EMa4BkXwV>#VYw?H;dgCem^t?eP+UfH!}hdMJP5W zSc1X_a#4SGy1XhJ7+lf?5`G&9LLmeof*_3%5aEkw$1}$ZnNk)@#Pc$T>WWQ_n<|T( zjR`jdR}sg_wYyEUvZ2NFCdny@utHa7n}#dckX?#S@HZv@& zS&a9SahvIXvwz*m#`)Y&XR!meT=zqt9?w^5+KnD7&NtNcTa8~EN@UOtI{!RoR$|bn z3)GghmoqIfddysCv7845V7WE3Eml^R%4hJFHx&BrshNq0Ch2oTyOW;C6eps8-WU~& z`V?(bZG;W*AhbN3DQ`? z=&8#8z^0yq%q%ztDMNCxrST3=Na#^Ul@aSo$q_0ag_QZvYEaE$;8Wuzb#a*-5M zCYzX=ZgWn|z)vPJ>S;3@Si`bg%w`qBPFbYkbqL2A~qu7VEMLs}=~+M8VjCS<~P z4%SPY#DaYije|98Cc}6bPS}HwurI&5S)^M$2YHvvH`K8P&cQvD#*Pfa3o4+k+lKO~ zIdG;;Gi!jL@F7e=buUd?q<+ME{|s)TDG5w0;N|G2PUf{Uz$XL9@#)geqT-Ad!5&cH zCPUUE0}Skd?wabm+{qMx4t_N}pR4&-8ys^uio+LAH*gaj|DtS)O{525Q&Jp%wsmjrHnBe89VvDF`P-v~PIm0_hC6h8&lFHnRVIEf>Jx3--D z6D$}w!e%5Uy$DGBQX3$R18a$5wv%o}GE^%E*HAzXxmEO#fAWY%{T!l_P+>RKkZgG7 zDZZ(yU?|HRN+Z#Ut>tfBPHOrv zmcqa_E{37xD6G+nHSdZ(VG&elg|HS<$RKWF?7GGKpC9&MY^e{xf|yPlxu6+&nE4Qi zVjTgR&=Qog^LpSZ1wIO*msA!=zG~eXt;8~j zxSB=cPm8GFcF|Lzi>1z4gQ;~cuAGj)r@$L2Ju}a+`#gE%W|+$wmWk#}$%CDrP=jNQ z(cJ9Sk=AJp6igFZOdr_#ur;MeI0Vg?oQ6;m$=l>a1$b&vY@9U%fWlQouYpk*8*+x-Q5ppy8Rb@ zlFV!#!@CaPLnYYAk6d$CbF9y$F?I)b=9AlHWU<3*MEMKF<~bGb5KtZyDis?$i)`8m zUaCACxRHicQ!2asS`wld6YRfolPa`@9T>x2Xc&(y!c# z9mW1|{4%H^Ht~cqh*Id;T_!x${Rj=kdgyE)SrrZ3KH_C0#*eSc6<7Etq#8 zAG?oRkEnEqMnf*relvG#a9HFY@q^-! zV#cQl;^A%Z9eBje0O3)<38CjV-~22%s7YyLkPN=C+}bH?MgiqTQ{TCuX%g|4XGZZs zKV8k!kWD?BZQvkQ(|e zUQie87Pg?~-kXVW3v4z|cxO!Xr39FaKS1z0KlMXnXf%)Xr_uq_0^F@(F(YN(nqW`L zAv9qxi;Ok)El|L$DkVx}1eUW5k$E$@U^a+Tgd*&HhjkZDE|pj4Co~;mreU!;X2P%> z;~p30Ep4s4t)cP4JG_B=5_nDOHsJ4UO(q5tujVj!u+b`Tpb-Ev(HYwVhHt~qcf-c${8Thv+7vi=Tqai*F zXHsbF6QHdtppCp5^Au$xagDwj9UI9JtxsNqkA|iZGl5(?8y9KU?(bxF1%KPI`KOK8 zqqU9KAr{a^%Ro&(eIF&`tK{S)uiC}_p58{;sb`Cag;qPB$)KNuhK6C@90k)b5_vBn zI_yPq6h%kUFm$x5RBxrJYKz+<0;|U)YI{SEa_sF9<6w`b|Lr zIV~c^ShWfh6KxU#ABExvzg7bdmpIkz0$qlsa4$I8%y|4acfF^eDy~4j-U9+A9eNB7 zO)L#AWh`A4qD0&Tngkjx%DoF26T>PUd?&HmgT4}l{w^0eJl-BgnCT1>3m;YC=&5AZ zp*sL`xZl`&oz`k5e_e=|RM$#r-YP0`udjTsZ|P6E&}EAj2;pEtj(Ju_rUQyaX=8Fu zNtM;UEy6N|g_iZSR;jkk94f0fTr+j8q75W;e=%1?GnBqx^+;t+$)J>-u_A$Lkn?HR zy7t!OvUQMd{PVk-tH3{b>#h{OOiElcyJf%>R3_t?rgz#m68<~8^I z=O$VFi}AbTzqf6uy$*znU0Zd>4g8r_WzuSI^eH1&qb;g$^eywGRVl*tnv;qfez5~c zQ{qp`{Dkna`9NOTB?0h9moUzWA6Wc(iQP9`Qn^77l?SN2&!V&O7?LPn2_KQXf=@!@ z+v8ZyAg|fDg)sRmP7R5?V*U#Jnrkq z2Z&zSBYeP*f5&=B5fbR{IHz_P7;EFCaN1)ohkT-!)F2F)8fe-O%dC30wzt zzA4>svJdh^pxNJkeJlUD+NtO!X_Odf7;}Ebng%&@ZV0C(TNUbVHZ9%u`8Tj0GCjSZ zX7`bd=4(^Q%5P*As7*(w1xRWexlXgMW6-CK7z{f;T9J7qrI}>rp0s$%*yZ?gkpgwv zz8||d;LZA%a;$9gw)YX(wK?_Wl`GphZQodGx#V6+)7y78?pm)|UB7;TvDkyFPArt0 zoOj%?&T5?k(NT}K#{B*$U%(w=+_;=FD&qaRY2b)*V1<(@f^$l60FaQrk|`|JJ8UX_ z4v56FyKnQ(bY;~L(K}7f(rma-xY)wiR(Z=3&6Vk>*YXdh?>4g{&SQTl=yX{G-H+1t zO10k8d~LESWOJ$HR3lN)sy`{^YHEC*qrR%^irDH~o@_k%6wyjV=Qmefg?bAY`co>^ zYUZWqL3XFYDbkwI3NZcJtdZXhL6uPUB2HVgD^_VMMmrRlR42b(4)j->R#a(?&}T9E zH#9`C+R2=BT(z%iUO~OxPazuZ`}-Jv_N*Eb^yH<3`>j>$<|vB{@Q15-25gp9konV` zBu$IAx`CNR2AgboCDlB2UwSDB0VT8l0<$75`;fHffO>37WFEf*$jE_KV?2+ttubBiPw$N2%t{#t%wbM8P zeSo^};#-4R_GwW9^>u#N$3|=Hgigy?U-R@X$FiMFt){*rZ+6Wd3cf>|#W>6Gs{D*v zcRa1*3QZb84bQ~1-hS~}i=o@~By0Qm%*OLqmG45~&Dn@v(7lGfM>Vy>dVA{;J8WfX z>sns@!n3)9hjpk~aZ8tl&jK+44ht9KI3Oc|uj+Z0172p4-j4OIYg&W{hHBf#Y=6(< z^yh(Heh&nd~%$UuET2X4es$GMoceO&l@=exX=`JwN4i^iUxZ|OzF;aU@Znmg5vc10g*u|rv)fTlx5V3%VqTvv?5adkTJ z-==umb7r1g zJm~7}#D$9#K$Vw_)AJJi1^$Ku`zaUsT!s-YKKq8U_u1bqE|)Dn(V8x&TRLmLOaA$T z>35aG)46@xlZ2ljkaV2KDdsUx`f~C1M&pJ5E+AHUxN)l7R^m3)l6Mk}1klqKsysC^ z=6+(GeseZ$p%#PFJCZUd(DM#)IBr-`SrL0yzuXjFp7X|&^kr%~lA7=zfFa=~Vp!3% zvI%2px>7|`o3zN_wJGWhhE>CYBup_SARZUSa|sUakPn(+)n}Lr0IA&X4Vb%956iSr}=9JQ=&Hr$U*7nhT~J|IBXE+wvIWfOpFsHf_fqJEHH) zNd;U14r>7%3-)M}P&S^ily}^5D{K;}E2Oh0YglmOg;5NRsDC_XXwm0Q6q-_2-ZJpa6rd`a1>=f&i`*@t=S64CO^6Wy&^KAdmJH>H?Tr zGazon*-nwnUr?gq!~V?Q6mA$_{m_EjHEVh@(eWE7{U!Y*%L2WBjAeh$sbXlPbw@;& zJf-9@rn0t*r)camzdxk3iND*6@Q(r-ogmlrf4PWhEYHhW2c$JuZ@3+Qj7)D}FnAI@ znw)b;81VJ{WYay*eOMUypZ#$g-dmQzpamG84y@RGnP2(8Dd?R)hX-;ExYD8=@Cp6Z zAfei-ECUyk@d^G#8!n@W6O)~Z8H{f6QMI$TJA^b+$#_vdtnmx@hzf zU~1jEo+-V601b4s2gCA27RW0!HE{w0e#1^K-*U*F4yu6smBl&jg!i)Gnk*MmiYOKd z($2rz-!BXPZ$ASx#PxM5q9`w7RApo;qt4yr{qFYu4zPtkQ}!&bd@OMDK+*IQDqO9b za2p&BzjDgdHk^7>P1N^pf%e=NfUs3XAD^}%QKm+6t*_387(;<_veyAEknlZ z6yX{R0s4oMUhgxgRY>D}lJQk0yoXQ(!YszpA z9xLGDVyx(sX->Ahk2o#^a(dB5RvQ3xM9X+sr+mUr97Nn|dqM@6xJprqnoThHNVa4bv}Q4uVTF}x;O)M$2{5FegE_S>iYoaYSKJP)uZrPnc@2=v<~`s zcSEp9|Dl)9K;XWo%^v*$X%k?A8vX*+w^%)2X2(&&F^WB8WMD&Z2sC8Y%Dg##JNjcA z2~enCls9Ha(ug%&W!xCkQlYhtbdTjBB}mIFd}ZCIk{<2lwmeP@^MU`@`?8w5+QPmV z;|g9~Qc1wYXmx1)T6u4A`0Su%K(aj{uMGOsDF0W1rEvv#Yz{I@V^a$G^`#hD$Wffq z$jU_55u>UZMqWO)gfJuuDgu&7>n(mE4baQ!()+RJ(k(E@ae~{Ct|QXRrBHqt)_N!s z_gnD_$g5BOu6A$?s@Ro4R{~h++=!-=Qt2GkOu2GbJWe4Xh)NMzX3^gVf_vCqex5od zD&s_R$3Wm4Tftjl5#!L7zE`?=H+<7uG8dcR5i+`hq^P4=JNK^;W|GFpMJN;31mGc! zqylDtK=U)y7(~hsWd2?LK6ML$)9(72aU}0xeX!n7T`Q$C-@BH6+FVA;IC4DbFt3h5 ztd_#Mvs&WM=7x1EO7m`_U#o7p@QV%pq1n|lm~IVYewzr zQ)`Ge#T<0KjyQ z#S^ur54?azgop9ovjm4;=A`{?b+bGH?x(zhb3H9XBZ>zSNW!MV^0uqP2M-B8F@*{W=wNrO8wf7*Fcvsm+c z>s=JXc--XkoVhk^-pKX#7vP-6q4#-@#=+U{I^a@mh&M=|!6BJ|Phpx#N=4?P7;2R= zl_n(mOp!|42-pHPHj^5OwGgK&D^vo&Rl_#$ZuoTN$s{|1ou|)}h;Kzfs1!SJCd}x0I+m4RU>g5TMw%Huk2AZ$JO8 zc7`z3o+mFoKUB-LnY_4o6f7ASSekUE4JjN7(sg0gfTTRaaxKQdP|g0kKW&WmsJ+~M zG7rFFIo-t+LU-@Z&!_$s_5o{GNOl9|_k9He@VOp5Ht^1}Nis-lh3$4Pxb>G9y;tu* zm+m(n=a}p?%OuT<1td}?#4VC)LUaOcDIHjne9;%lo0(VEF-o~31x*y=(x*^!%@3Gn z;HH^5_hwO2kjou*Tv8~&xy|!O@cXW=#3|Tz+&^6Dxi)@;eC*UOK2)-(&R%QQYs>eR zUt%ywbt5?Ld*`XzdB)`A0oPr^53gn}rN}SM1PMc3Fe6ES07gI;clzDK2I1`k`1S|X zT!CXV<=cs0Wv05kTy?t?Xa+(mC7jBAxxCs*+NO|n_32$ek{1!K)7i892pKpJPEIvu z+XSY*WM`n7U`#XOKA@}M*217j{2}{?Y~n+9 zjo8TL5>Ex;6yAFquHp%P?;24~-{i-%Umj6uYoR&dv3^$~s(o)v+E|ayYy$8~40lc&|N60p|5S9A3-%oe{_%@j#j(LXhgt zy@@6r>TW}$Vbl8KcNzjnm@7J$&0WZ%IqtfL#1=w;(_5mx@o~|K4}`cQ($FF>9<|oi z9w(}h$2Q^YHSpgDRU)M)R9Q;EGcZtx^y=G4WDGjZrwj3L+Pto<{WdVR?srD7uQGTm zy`A?u0U&wdxIV_4c&pRstdDTd|NIT^o8AHL*Mr#2jhC7A{->p83j7E(f6==oG~up2 z+|%{#JPNsjG#bAx67qv4ErSj6po4U#%yX6*`JwbbTAiTa=7Q8!y44{d^zpBy6C{D| zDeP2h=g8+IB6rUEPWU}_JLkP7zsr6h378|ML5%cgRJAcpBs-^LB)!~GBhyvI^Z z0ciC*9F-<>u&$3e7L#3)i>&Sv4%XLaM&TcDxA_b8?q=cL-LKL- zJ_K2;u|s9?gbDaG>Kx@3Mjj~o9Gx%t0>9x+t;j&e4(MapVi>FCN!5*pdR&{i`?JBR z6M9?O=;-=wLH-_5wGKS*u-r;>?-trJyg@S!mUe}rt)ZB>r}rIYRim=59p27G04m^Q z$eUv}eGVr&bp&2Q6Fs)xRA+43^~DHQ8S=BPzCMfJuv~B&%RyWNio{<*UN3%mZ$CZi zus5pYpu{*bRAw5^48McUShJB1R%)oHWwJQN1%*H6qkv6ZzG3OwI^z1}RFB`3e&TTg z8FF+@IlrJPNN13*!FwvGPG$b90Q?C=(;vtc*!tIfz6wJfI!%f5OkXST{mbBcCsfY^ z(}P@AAJIGh@)Pzi9qPS8KNPljCJ*h6H&0>GN&ormT^4Sp>{stP8;WN|%Maj^pZE+D zfeJIOY3>t~jI=1JnQWshkqIsqwG(nVD~!^-9QAm*czLmq%PITnv>dBq0YKTg%jP<0 zv*x&c_Wk?g`kgoLSxXS3d+5f!N|NL3U#^KJjgE5MXNnJ@v%##`BL0;SyB2A8g zlQWuRfm%=>D&Llu4k#PX2t3$;F#)$pJ%H?2Zyz@6FBKS+%xF@_Dcc4xrv)~aX2sD@ z&~ag5x0A7>`#pEr3?Q+G2moT<_IO;Y)iQ4{b&f0(om}_FxkPe<_vQLhO2!EjKQ&U9 z<4RZi`P)2+AEgW*4F{#J8XG5M%F74?uiMF7y>tFG?oP_z;MR0iGJ4?6TqH(Mu1F<1 zVj}t<1VUN!U;E;a903qKG{kF<$o=w$^T0*F^aH4+Aj2GL{a--qHUPwNdDnUIw`XV> zqV-ccTH0sg%-ho&o%P>HkC1@Ke%zpw9U70f)gA3wu=gQTLKy$ZC9>RZEHxt3GgG5{ zLukZbU{Q0CYelX5z&i+4H+nEI0@8u}E;>2}N_W^e?+28Y+rQepAuzMJEaM{515|h? zhGt8|M=1wnxuuZ`R{#O(!8eUm^X!=L{P;8jL74klQoO!%5&gf%ViMh6W0>shEP|gi#Z(($#7dOya90IEQ07XU_^2z2Zpeth0G=~A5@(bRS!*vYcJqZBB&svnZ4C%*h{%FAvg22-yD^4 zz5h5IeqTQV3nuSKuzjlH%3j0@PSVfA26_FuOUbMZ+j zDHLEVQr-aAVv7KlG(?oObR{}9<>2vR=w%?QazpT8p`qpqXbcFUp~$u49TYA~3Mb!T zysJD~dGRDvl$@`~uXLgQ#Gn{e*|CQaJ<|&%EVz5p1SLcOoVJD%mhljFX_8oRuw@}DHBtp;6U$I! zJSL#s1IR{mkNEZ`XO0N%0_ygUnGvvYN=GrP)0+?jS=H>{)9mL%nTi;bXn;91Reo`6 zYw@>#&568O*R|V=i<2{1T@MrmB5HaLtqAC|yQ`BE6qFJX*FZ$%mk|+i4vGaj%0Lpb z3{b0|$$f!dct(d|9Cd{Fdzfe$5{%P8%^@I6dOYP54$Ma8UQ&8{n{4P1n;xdiJ1qIv zfnb0HB7`$ze@*s~X}o-Zy;UC)GQPW`Mona9U0=)QW}uny`Y&Ql@mVyR(mL*U?=&2+ z%WW5Z4LWC{aSQ@9ycfxjS}at=X=_zw;9;F45Sdq*7|NIt;n@9YY#f=)4@(>eYzIIV z*-4;TU_~O^ZL5uG^0b3bE)Df0W|8ZO-z{cKyzO6=FBSi9eI|B2^}}CVk3fxPEksbo zzrURGfG@#{-+F)&Tj$aD*>*p}z)Oe#BqOEvG*gJgN|xb>6Mbfdfs(|SyM~bcX*4G| zY7}2t`5&!*AHb~TaRPnU*FyU*o!$Vc{dvzGQvd}g5P9OzJbgYF|C(E!;Cn-OY&By< zzi~rfrU^7{sI)9L@tXK=eb8ARp&OM&=0OWsTw+jdFljNXrm_|lS+?m-a_Ol1ApRV+ z3_>fPo~Ub{TUY~;D(xl98BRFp?(gpc- zZ5O7>UvfR)Cn$opJOBv6zejJ$8F2dT@5ll*e)~HM4Cf*%a7nNgiYqZ7+}o3~`e~C_ zXV6RK$s0)ZB6uxr(g`a_YYz1%b|CrNl(TmooiK_9CDtROntb6Tq@4j~LyA z2^bauVag!(^n>-5x>g2eEQ2S(vv5iNbhGQltnW;RHj)0kNipU!o93B<_-klsdrt z3HhOb7|uYNeL-%-kYFYypI3(T0!^z6wAZ z`*hRb8gBu~Kqo}dO-L_g*iVkrw1u^riuhv5E`mO|L%>TEUx4KJODc~2y0T5&>Ua5JVM&GsR^ zK=nZIdw&ZT-9Vn3&LYU_&wA6_8_b8Wdl9=I z0_hw}Vgksk{>K`H6Bq}FzlObUgP$L~fr`eV`%rvfzpv-r&;>Y^KhAzJW^x+0fJiL! z`73ZHEP$`>v*UrDeLy@iYo7ySeHpmD7d`eFWepv(r`Gi;3X=fK;M;+Ubbo8npChsV zjuT}>r=K@qEszr^^y}9I5t8C%x}#JCe8q`V*YWiVXr>r0i^BQCh?7Z<2I#WhPLmho zWlk5k-_Q*9qkT__-(qFLDn|%3^EU|#Lo`QkAp8V+1y;uPX*?9GaW~K+U&Ol#xxun8 zmciFBtc-60t~VMuzLEjE3H?D<(p7}j2>hk;{t5N&O7lu@w(mpfj($%|>G_NRKX!fS z9ubp|J`Y(;jXXZObq3|U%RLMz>C$&6l87gzLWCQobuj-Duzyr$CcGtdtVaJ_%N`gC zDRWfERQ3W2O_3v=)6*GaDk#LssT7f>;zs6*3Q&_RgoLR=a?^QA1qwx-YMmpAnF9>T z6_se2ZU}{yP@EW-kz$mJS=_gNGP>T7Q|heneXL%)-Lh&bAJ)Q;);}aG}SjQc(`mP1MuDMhB)AmaOT=v}4DN%hdo;ro@;awH6Iy zNfzraO^k3t@>~o2tlXrOp?t%O0hc>mCS4gJ-6a9HsIeJ9qgxBHMFHh7;KiJ0zj=d< zQ$xT(jd)eTa8567j=TifU8s9Eu6FQ#U# zn>s?7R*N|LrvCn_U*^yL3Sv=c*7!-ZX&lvBs;!T{nVSw#l#|`IKF~Z4*-+X}cP_WB zsVwh2>Uz(sfYR259_1*lek&f=`pb*hsvWWBGUv}inNv58c||?|iNCCq*Xz|X5m#Ky zQB7W&H$Yc?;T%TdT0qLg_imHp3D3$}i#E!~arlep@=*eRyzPvuj&Z||Cs`H#h6+0G zmHg8eCag*h3`6*Uy2B>PquPgbzGzz8XMFIbzDD+!vCnFLv%8p5>bATQRf2`hjMi2s zbH?3~Rnieiy96!ZEp&y9&8gMB$!V05kF|?zq?}8PILPb)1_2EmyTDjluteGzRV(sg z(h-a%L}tT$l`|7!o`G-_`4E~E3PoADY|NyAYT>N38-WkE2n(;pZ}P3;ks5odVwj2H z0~jrm<|vR0L!Qo6vK3+1xo8vz3v4JDM;vxK$w*K&SjiQjNvUs*iid)RiP0CshMg(kh<0BO; zt(oB5(_4>SQ?O^(x{q#%-pz)>K1$_5NFc;j!X65M?tZL;qu0B@TqNZuJvkY`@rK3W z=YmO=2eb0;-QK;|7-GL`rTfz1+Oj0<)imOz^_2g9%ePC?*-W^-$AjkCF;;K-b|~#q z#oK*#oFFzQ`|R8LD~7iu*rJCBGY&izw%son!v=AZ!AtS+Ac}u?7+c&r2C7T*ZhMcW ziAfI7U#NklMSwZ<1Pd1nTD|8VZ5Qpt8O+kyN6Uq40&7U^XfDuz`RtJ3P?!6GaQ3}` zlXKVZ;MJMfGVyoEP}Hq2w>YVJU+sAL0Ds(iD@}V1bM?=6u0^E}?J`Rb&o8s=9-{>D zmgeW(_RSN;@=Jw?HelFb@6+)rt}&Q|R{mMQn*jcHl^OxZrH`)K)Wy1ZnJ)_9?DFDr z_)*>3OiQ^Y_A4%Wbd$4~9gwPGmOPlUWA+78*W8O~#Zl3A$}bD3A}mkv?m1SeGtwzs zC_^7^%f(uy_j9PUD3x8tYV+c2QVwoEvAd~ks(-EdL{b?w@b;XUt)qBQoByz+SP^wO_Na)3LKOu{AT(ad1Gj zGo8@iv2e07=;2?2AY3D1ZQY8t4)GEj>lAsgo${$-lRxA5cK*OqQ*);}2KH(H#sVP$ ze~QYgW%x4tt%Yfr8VvD(vkTPCRHuQp3xxO85JW`rqR_EpOx(6Zi;9;Y&v*bRTb4aa zP#j{jD7Cs9J+TAp-Bxj=ikF37>{8^dIetw(a-yhAgETw3?3%EOnjwf+ugKS__KwhM zT*{5mn}O#?%h>EB_SrVi9d7xoyyi}t!K2T*_n)j!91dUGI>nw=SVy0el3OnoT2Zf@ zY;faXM{9wJ(Kt}hwLkCr=T-zr121a6LoRYDA0GY)Im(m1D1FG8`Gd%3^Q6c!=t20> z&Hg;e9ZlR$|B@N?w~(yD4o>S~8RlNbgHCOJ9yQhWYpBy_G`q&7*w1F@NNp?y zDex_F$d|X)?axh>sMM{BLAL7Rd@bLxh@S%5B{Cd9ulmvbQM80n zUZiYo6vpZaD<>Nm+qi2F)8`))(IZDA^+8tUndz36E9e$n5>dHHu=t;V&1=hD{k z_lnZRx3jQPN{=Tnp5-RM23vToOJ4VC!a*6AhwSIaWi7&*cr2cwk?d0Fd$tJ}F}97P9tWht0Fls6)&*1P9;eWqjF_2W4pZ9;#p7pb%H<`KBS z1s;Bw`}A5-en|LgSgTL(&e9bTWDCal*PsIXP_pA^q=18=AC$uc;#NgQd$o)JA|8nh z_{tbo(D-M8qUV}s0M;4Q=207g{UQl9^ozVt%P= zCGKqg#SM`IGOb>R@uO)?Q}Jh9+ttoHJ3!6>$;ARSTAwUB~II|{b1Rw4ozhl zi`#(gG!Lut#V3C`nuKg>x~Yw%mED{^2@mRasA?fn#?e@l*(E#$J;s}Lm6~kE3={y} zcl+a+otQtMxJbG%WxMx4qkv;cw+p;S8E2+3L*%L()v_2Ah2V)(H5%4myzO3zBTcqT zJ6jm&DJ@oNE*L^25H>Q6P}91mkE6_fM7dG9co_a3{qM}egw?X4->P5#%~bBavw>0{ ze{b(UUay}Zu0d=OI%=|Xbmpp{5jKdCLrBqaq|_JyAMzBEv`F!JzOlD^hB-%aH4*W9 zhmDw!(}=Jm1`;y$JBN;mAKpi(@_Wx6^F*82LT}Lb4)wmQ)@EXlU|Z7FLyQKlUFKLU zyiVF7TdU`^&8Tr{3l8aP)K5~wqE5@+OCiZt$5%dOcB}kF7)nmSm%6~_v)W_D(qb}0 z4)zRiNL!YQkjt!Kk!tVvH?{ddf1+JuqtjB{W~{dLBvvKr>iy%>OgOjT1jAeA!Ri&O zlRcElxFHTh3k?*9wIizgHcvo`-Gk3Z8Ah-F<(zG%$qW~#8}sOpW1bzv2D9q;7|S0= zU{iqp*?r_qEymm%22c+0@g`fe_iD6=wx$5AxKa~Ye(|ct64ALIC%9gfK~bR3*03{L zzju&-X1-TF>CJBpBIw9Dd}V6_B>Be;jz712@l>?C0>9C44k6LDAdbjBRX8pyb$WYr zydIwYAll4FEm-N*(iU__vUlo@PIV=GP8XM#(Q5kBp4Z@tNh?Y(Qv1BuP+qwWc za*wH>Hr=ab-q|&$90H8;88zkStTP^0Sz6c60+Sodto#-9YEd#t7rLd|d9yrahiW?Q zL*$K?83uBuNH&1af^vf5!nakdFpb;1PJ^v{e>10l^d+$6f{8Igui0{=1{E#%)t1nI zq;3k?71&*Qy1ENF3z|9{C9($wtFZu8oNOffAi@bD_w1HS7(EI$%Ab$bcT+SxJUM{( zKyWcLW(|G#?hooaIjI@A*qPs&`(3XHx})fPFXl}?i3P2;YiKJBpO|sE!MA_DL<$6L z@9~IH;{p6&#WkNgy7f$Unyigj8NqWtVYR_vi%Wyt?tCw?5nI*u(uLl+2NQY(U zMi?ddi~^duvqfsUEgfOfE*Dqkk>ud!qz(qG^j*HKF8$~6As)HMKI%*lI1>c;OFW6B zy8eLC>{2o4rPZjkW*i?&X)Hi<3UvFws$6H={veppgSLhEt4gGQ`^OmLPn@|Q)66%H zrukX}Ujx6Kf;w9^ya51ljBXBr`ZcXGxd&Myny)GMtY^R8^XU{tr<{^*4yq%L^4rmD z4E~doy6uLy-MfmzQxgLDs?EB5J{R*$VU2|O?6jr4&mrvi()of6xkWnCn!?x9zMV3%#Q_xf^f(!oO&Ll1$y*OJ3puG3o;wZ@=^e&$^PCoffi-z;Qs(glu5s&}|4#z+4; zef8z5t8jLIS?gLir#^8ZX7=YbyUN$6)$m@b3s?ChkN>5kmCFj1k<~SW7FPD1bq*lV zAw_B3FE8-*@pgTkfQJ~niR09vp*h{_YB-ZB10%SMgB@c7#|hBbEBZuUXK~($PCK#1 zj`ey`GWxdB&l)<{u+250Bu5FQ4?wI})!1Us^O)k5Hy4l9D-L zt|abW+!{&JH>SonYO+MGr!nkE5@*(>f~1N?m#2zzgo_T}B5D>5r2PxXQbtHk2>t2I zceMq-;lDsN7<9n-O~DWb%Pku_`M~A?lFKBvcKZAOYVEDVqUzfAVF3kc zrMo1gnHge`Qt1{!=`QI`fvq6j4N^)PfDA3&jYvuKky~W3oEmxGe<=lZEM>LLe7h( zSO#!iw)MxtIBi8g5Y>PGFz+%Q&&rP}yZk*r{zSk@-F#067-ke)PSbA zqvBTc>cj7{RfZ*LXlk#-?<_8?yML})T+OwWt~H-3up3UUjU0jxXcZ1StXNcNc%-{3 z6@E;@Es?*wqaKfLe3XD6jxMmUR_IV}q+^m=ui=_qwmf5;T(*u^!Wo`u$(sLRwSU<= zS1g_SwKg9M3}A$Q_(@jLm>@S1xooNYQ_<)%msxs&>)Ec+AY1F*)ZKOYN? z>6wflZ-@-iW6w`j-0Tvq`;`hvzlA#4x^Uf0Iz18ge9$JLCA`KDKAc?gI4onTA77a( zA}7^D^e86Db+Lpl%S|vNbYa8&#i`a$4S_tNJdM#-Sq6Yxa-Jk}P$OAixRYLQY;`uR z_W1!L(|d2HuBWVPDIe0eE!^z9MS(iHpiao-J@`}z|L>8AB7!q{0f=q*%KkF`T-X$iBbWD1csbRTaFJvEn&b!(E zF}i68yK;w|*T@hmZSwOuDP3zMRqUOB@cj73Az)Hw=GwOewSzO4I1g6z!<_578a z+p{O@Mkk)iT(8sT6G?Mia|)~-%qhiv`>SySpOL7g9Uv)4I@*3>P@?;BJ|{}{gwM=F z3MoMEAN1s$PZs<}!;vCe43RvzWM3RcuYVTf0 zcpt>1)NJk^e)+z*>x(xOFzHxT)JxBkrPdR(hg}QLbIKYQ-}d_X^=$&$&+o6-g<1So zgmPMHlp;)T#QsRH(Mvh)e*Z1dA4h^S&%987O&>VmT9I$hJpGztN5y}X9YSeZa5Ics zhZy{7<+hs5_l{@ZMeIH{MI@vX`LkIHf5l1WMX)F!!OGH4u5ToNsazQ zRq)A{g#tC)5)T%e`P3rd=VZyvGfCtrNgBz9P8TN8&|a=sZuFi}+QlVD_U_!Zt>y)3b7a^m><(5DBb{(O z3*rr5S@mS$bkY8>!8<;pR9NJ4e)+$*p zEG%-g_OKfffMq?LueF#mVV0m@>8ZP@<0Jc|<}A(OP%vZ11Ze<1DD*$ab%1Bd^Yi@o zA@Xb9xH{V3Tn;~Ph+xuRmqA65;uq#X489*du@cvXVlhr(CceycMSiJDkiJJTh;y2Q1F{BWlCSGBL=PSe$<@v#xp9idEt}nL_!y|lX5zw%Hy?FNzXdz;RJlx_%@ww zc}?kj+$}~F*xVqk;*X5HeD;M% z*o$}w+^cG)1g;z6K{&VBMBzwE)?fm+-FzdLcl`6>M!CIf>`Qs5Jt|2AfE#j$aC02R z45ew=CG)0_443~i=?sz&_e*dzazzfOyFU;%F zdQnkJrw2p)+s&apfx~poZ;~`Nbr_rAM#3!HD;>(i+aq<~_Iu7nEU%sK1^x`D9G}qo z#{0?EQm4!jXx$E|8m9pEiYdLmaqm5S@|1)1ATBvv?fx;4xi+imV-G#LM~*x)8Y%$=Aen4ZyK04W8Z_5n9Nj7l6*khsDK3 zd`XMN=MCg5cI^;3S6v?NzW4Sw4$YZdXEL79t31u;?C5j)kQ$FwdfkFLvPR2a;a!)N z^dyCvV`lIEz7@F#2^|#D-D5^j9-+A~G|V0)ik_fOZ2t%m`sB?EWzD;9>7QmN@!PXA zp4s?kv$g;T3dMB68`Q3K%M_5C9TPezpGohqxhb^oW>WMELpTDo{rK@?dVWdGCzmxM z7@g8S7EXlW7~qh>Sm;@Tp^sV{$PgTN!lpT1<``2Y#X!7VEp1tJq=jrG_Ij#Mlw=}4Kx>U8=lccVAbIL0Ymu5_-$gOVAIiO;Kqp1qF3Qy1B1 z8o9C2kz&v0>V-~}lFgWe6CLQ)5$V!t_98}`ShmPPgPa(OMEtmgvs;NeNSHY%vw5SWePN!}iSZr}72YF4 zaj4d(*J0Fy`-37gaW}_R^A0CQ(Z)w9ro+x3c>~pL1K0V#8kXi|)zyk9>$(v=A;4Pa zA*ycS8BTiiCR=`_X2W2r#YHl_pz(fftj8yNmqtqFlGIokf%2A7Mr_ljb=f?MtTvaz zwlYhST?rNGl&Y7XN4v7#G53|GcRQwwS2YfQy^SYO*%Dwc4d-xL>8SPEO=T-@L6=rhJ7bQK=Dqi$%Srq_wsrfa_#emjvbU;RIW&S`Me1mTr`rBSovAhg>p~ zaGjT2ZVUQA(ljf1c~#3sHPOdxvSnXFCH?AWWiwk+kIeif+;Gz~r`$y3e~n=-J@r2% z0%9Hap#!4;)L3X+D>8-}|nKRj%b3r&XCjrDb3A zs>D=}4=o>Dnf%k+<+>l2U)Nf4^__Y9{c2dc2#w&BigKg~ zZ*mB{tW+vLz}2kKdl!ec5vTs_*>ileidjHEj3!9lUaMSt+*d2^L+UtJrc*(7Vb5x$ zB!tb$#hG%#taNsF0Gl4a`lHeFdd_#eGAd6jpMU-tW>=UrTnin?CBy75k3lEi$Y5K< zp(*^NZ#pAb+~>hws|qq$t+c~NrAH~`~$x!E7$snZ1#WNVa@qm+bKw zAuk`8)3QkX6}_LaOSRg{OU_Ogs6FdFo}DdFZtKjJeO6UM7h`HpP}0HXkb0OY;SqN? zlwkd?3KdgG<|`(-n<~DM1T8?Y%I$zWvbvs4A)NZwP04^M6Ze=IeV$Xo0H9|x6u=Sd z+Y}7QFg~ot5$oQB;fVEax{>*W%wPu4nroCM7{|V4JY<-{YyfN1C zYIDJ2(aX+7v3Qex^#V3S-NHoS6FcTL;~X=ry$#olEVvyaJF#SZ^m$l02GIJM9Yf)M zjh$2wSSXMr_`rNVC@}QC@6>-+)4QspKoqt(u!wse_OSCrUu=%)qAw(*_B=x{`g=mk zN^5LW#+FE8_sT_oX6p}^g4Cg7HkM$y$HfO6Gd$6$sm}AonpMsNbhY6kQ|A~;+ZS-B zhyy0;>FL2w32{)Sa`nY|ci>E{qi477{5p$>1J(1+U+=kJZ#h&Slc~^RoW4J-p|E`yhDH!9578IhgEK9k)Arq7`ruZtUwUaI8QstE=f$qg~bE-41^;tLN{d}Z1DVn$cR_U>qXIx@kmi1zHF-pT7yQ#dVC*DCV9>lwvHH8S7^nSWbvLy}w$NoXktc$2Yzi+q4{uQq8}b=N zlJh0c+o>xTSu)_he3Q(8Ddcv_v@l8%QOjkWl4;EJDaf4v2T5O{46!a>Su|g>XGHS zY5E004UUebnQg96tTLe3r|6cqqXgv^WTzJzGwf9;$6o5RWntas+~?dSKHm1;@y_IK zU)(i4q7tp<9!~rPJ9ei%)DpIlKnOfE)-H$%ptsRc|LC6G=AdW&q$^vB31Mn%9~LEM zBVE`;-S)gd@iyMvlaT=041Q~zh*-hWlc*gIDT27R2=NT7#B9JLL_xnuYN3qXG_KN0 zPpA$nvEWH+p_TD>oA&;J(Wa&s#qe8?Lr|&r@}1mM$? z9A_D}%a`3wU@@c(XjxGb6Z-7(lv%44>yEmkQxcCBRa%Z&HIPY1NB`)d^y9-T#xa>~ z)`}>@`ABI68DYpL$wz%k!@l(?`p$Nom!^-jk9^(TdRFDG`Y3?mLc>SJM^BVRj0I5l zdFmtOqjer}8YfII#+4D>{xf!4F3t=A9k@m?e37V6VQ^rhm2PTCm|ta>u}1Xmp3>=XXB`pKGGZ>4D5-=;XB_ zFZ*xwHSx#UJQS(j#PK3u9LJw<5V6q_9d!??38pAFngqlIPsyDdy?G#eqeBz$YMkmB z{&n3R{1+xObsa)q(Q%(OyFQcqmB!}(ZT2GX`V7@*82;DPWYj|;ce3LbqU~Epy^(e@ z*K?~1S1XH!wppV60x~Fl*o5h88oQgQeg&dc79TXLleq{;t$d^{RJ^+UITw57=N|b3 z`#=i7lce!|s$rrK7`T~klY~WaZ&OP2l__DhM?I>3gIk#TH22%vQ`f#oaP@rMUUb*5 z_qAgTKaBW>vkUlm-m;rlX|_GJj=wf`o_)OuyMYoX7`3u*tajb$@SUi-)+}Ov3~Srk z1AqI%;mB}(hW#T>^%V9LJ8xD1ELuP2`6jL(5UBQUKUBCc`OH^y>~8kV$NoB1sW6C(Yomx0m(s2cOp& zZOiz4V7&+<)XFmC)5iins`}k@1FuiL`U>Q&yV@o73;MHCqm!7^+j)6dpMAC6A0L`G z(g8PvYog_+J>Ko7vfr`YHH9r#eExbnF+6Tc@%+rTdFwsJHeD?F$wb@Sbn zgBAZ+ycE_T+dyR_PE2%soWkpv{#{rc58ceCY&9u<2qQD)8hS9Sc( zj$Ji1f=Gu=cGiba$JL}()N=2L^LQVLbyTtp-!+Z3J7d2Xnx1+^qJNKxH_rL{;aay3 z(7e^HDgNWT{Lwd_F6wA(Ut%$34MUpAjZboX1Rou2pT^vH4bN-z$p0SofQmJOu^q9` zXvH=fV~$}IM;4R3ST9l_HJu4Sa8WvYGb7AZ+DqQeX<{foHA#9LW!NPZ(3vLBpS97W zsq-*=+x@FuCwe-^o{APjbjroeH2qm<6|mqW-_@v^u!Qh9WSaLcJd%?349LrWSd@MX z9XKk;xP4f$DD;YuMQOEuV+C;f`Q?+yF0X7#DuXG$V};)F(xTnTv2r?v&;joP+B(iU zq%lITBI5>j;UVg>gKu*jmchc~e6-yuw9#IvW#8y3gKRD`X-MQazj+>3kp<)W_4l8h#Gnq_6(5Dax0&yh;VFbiy#1$itGYx^} zX*R~wrQYfk)i82FV%*+dTw+1;wzyYKU+l2dzm^>}#SaeqXWyDkVfh|gt^j<}zLC;? zPjkO9sFG!kR;8|IEt#W4Y1UQNtvByN)cEDT!eDyxIBYzF=cCApV6_;%v01f2!uc<+ zQ*5UBd8UKMyOhfB^LR5JtHzt&1U6VX_v{OZ^gDBL)(sT)yTqC1O-+xoOKWQ4PVcOx zj!SIWz1yvgo81ss^DTH!>nRN6a2xx1(F9YzFYlvch)n#PsH6FE2oV$Gs5JB{mmsS0 ze&E@=n(P`fOi!`9?qa1gEMBmM2^|1SjcJTMoZqgAp!!=-wSBQCf$@gfjKYkLyLeDT zBB>LX!V-A=#Mkm8@W;mH%XtzEqK?hqysBv_gx#&`x0AJO8|yZ{mq~2`3c9a7-Bv_W zNc7V=qU-M~8>aSs4c?i5`AfOCG*|teL>3C0Y#RZ__g#2$`<%lZG$G+@Ng*n}&|Ya) zyY6mH76y&T7ET(_Nq)nr%4V4xJZ8E`h`=NLVm4B?VWy?_wecNXv7hNt54*P$N%ZP^ zu>GI-8!dLRyZA146}Ntb0*eJ-7Sq-4G}MQY^uF}EyKipB=v%-hB!C!5HPm{Y0)8v- zb?K|5etzXW#`H(Adc24p?|F;rM6C|e9WtyM=PpM$hSc50=;+S5x7h)KfX8fb>8a$p z$6G>^_VAfU9){w1ed;1^ed`#s@2n51I~-MB8>d?m31dIq8{u5D)B<99%-v$^tKM5I zD?72J+^_cDFcUCf{&}dnwXdj3FxK0R&7wN_siuKzlwDbxTfItdCv+=Fr_JLlb1{oI z&si9!xuMxYCRGY`206CVs{7!%l8pNXt6Yhw*SHf&|B(`A{G@T4j_cflC_1|1&9M6& zZ|&@*BIK{x58{$22LA$Vs`uqnkL24X-*Y&=e0t0rlNX;dR^5H!PQM@dMDze7|7$nxJ<1b2&!C$im8JKuQ_hW|Xw>%@v@(xqFK3)7qHVacjP%}$VX2#Wu7vCt1 zyQPziE|hZk*`2P7&r&Q6bO&w}HomPz53*wKFDzO*JIdV?%j{=`)Cqn`WVFm%)05Jk zJ!Fk5PctZuAGZ){{>7WUR-Q+eM#HjUaQ?wriVDD^JVDJ$vj(`HEY`r2C*k)pI_tZB zt&n*~59GpA6djH^9lYd+&do+K{ff{Ye#JN|BGpbSN@Nrlux{S(Lns}5@-y_>_X~5s zb;miCc8+#2qs21;h`YFV%2{Yb9(SKr4KZatimiLMf-s=Swh_TF1hGNG35*&HRTCpJ zR>oc4Xf|ixE(ads@8cq#3W!##cnTOL%QE{V4-F&Z%puwJsDko zz_s?>-xaU*)Kc7sdnaeZdu^;~mi{4Uxey}IQJjMU<_)Ortqutjk8xBNRfHZw534O8KXOG7qRgV=aP(DZ;ijroi10|N}e1i6$n5n1C2ZrrjxM3&UWGV*z`gv zf^Y4Fn#BM;`MFi)B{yx7XSRktD&x!C-tMVbRHX|QDSj(YJW}t08k2d57ZFWrn3OM+ znzui>7s`igOOm(p=-}2sGY6$x@zFyLV4uMad&enBR;Rm)-fZkzXmu58|83r^@#J}i z9XD=mQph{xix7$0s?B$6Ot!iBt%OB95H9s=_uv7%cES1@)aX^knd>L z1@A7J^CKgcO*}h7QX{&yTbq6ImYP-L4+A6Mg+9=B}$tNupAm5=W9S*S@l{kNjQ(qiq|CA1v6n z(KXBQfRgx?khL}|k6USHmeqxk-6+e!%iTOF+@4za#b-5%^Y~{LpL|>c{C|8?SB_=)mJX>Eo*B(b~)-Dgj63TQckAc**T1t{OCE`7WC9{L;X~sfAiq&IX z0a4OfrNm5`-nNR1y(M4PCCBm7MIix3Dxq3C4z}%)?v%k!=1b2)mTxV#LOm(Bhsr|C zlmx0fPfE3|?=_443J5n_IGHN$AGQi!d-JyPL_*h%kFu)lXo&E$zV-#f!oeF?G%34R zGzq|-c3D}(Ldk1=wDGi@FZZWj4^e&+OW>qW@)=C>E+W(%L91n1FH zK-tv!$(Z-;T8CU?qT1oyIU=C2hl;P|3${z`J-(?=-WLHs%%5Nw-zFOnwZJVAnQZ5H zbGB7+!qV$|SZ#abdQuC;vxX5x_vhtMJnspTEnb_}bV|gN$Vtzi9QT7=v@TG~jRX)v z7B{*I%n#B&WDz^S$|uG&zg=Un8hm=EO905?y2pR*0l)OMvI66n0)+$1pZqhhH=X^r zT{<))ZREJk^WNUmhebRV>&qWnmmVJA{}~FwH`gkQ=_M<(<}24yxxgx@KzI3Ma{TVh z`5awJpncW)D@TDLB=hzAFZW8{1()4*6A{&ZWJ{e=A8?efHPPestifkE@mk4?FFN^0 zz=y8>!^wAhU->fk`3#fyKLoTI+$b@-=i_o{{h<5(`TXcan{5amyg1#XDngR`O>3Cv zM2ps--h1{Z?KN*zav<-dJ^4oF5u;_${P6*bJR7rBTcfkV#~%PbibCUP?PjfI%OS*5 zN^SOW?d$?m_8sH>d;x?44$pgvg{>-$0D!k>^+`dbS>C<&*KqlvqhI4~69m1MTWI@1 zADG7L^|Y5h&OOZ1Yc_hgrbU`^bjC~C?#)7Irr^W( zU+;2|+TLH4T)LI+wJVaAuFiKC(oskLCd+;ATZzQ$E$2%9TWg=A&PPZ-e*!*Ak>b9; z=S-QC^04_#vKynif^>L|dX@bH`Q*#q^)x>sn|8BzCC?c!&&pikvap(;y>;H=z z?=5O1qvS)r2a-H|aLxyOf)bp(55)yI9|{OU!6x7WJPw*OxxEATT> z>lsMHEDIv%>m+_Dnd!hCQr>;uV%f)Wq-#07XC zBBTC0sObM%BJuV|R5}0#{qH;0e3LGvHl{~KGfsowzkjEfkq^Afi4}u7Fu*Az5Y(Xj zU`dMS5he=S4U`;ll}8j0P?ku7?b2KdHclN1A&X-l_s4c>r_2i=`$-T#u?(N_>5cd8 zVdUMBfxKf;4hgi-qsQ(>9Ypvz$&NbtFA@V3fW6hI_ioL>;<=h+7&ytUq&0jdRqyS0 zqL$hl1I5jB>^rasaWwmDt;_qOdX;G$-?R(4*U+1Lq?>;d_&L58sN*&s^?ZuTaq1lI z)NvL%7e$X>xq|V7dV9L`kV%w!`|GqOe)?QCZCElbw!s6AS4Ze!nr1x`WZw;D8hdGd z3;=gtIC)!RB^mylF{(mPCl7?VF*}JO))-46_&v{^+{V%*yg_619^Ygh*g{i2_;`~>AhNk%u zPY@I%jT9P$R)#kDk$uLxUMTu4o`(edKtsUjO-f@z>j=dyQ?DB-hVov-+6LOz{sjo! z^5$=wF4mFMMKISErBU2!19dO7YGdWqm$eAe{Z`RY+LM|4R4@D-Zq)^gqlcA%$34KS zQ1j+)QbmaCx@TqNG;eZJg&Ny4Ml|)qFU96%Mz#S}taAfYjiA z_G7NPz!H1@x=3t$yf3XDaN5Kjbi!$8+7B^(Laa7n zr&RR~WtDi}=Fm?G1ZJ5h!=Bp<`1noDlAPkzw-;360u5`GXl}EShlJ}*#_qQcW<@6> zF*a|~G&LW>&V8k~)K76E=V%X4fGDZ%U)t`3%CoG(;pUqh>CIwW!g>w$n|3upiJQ=K zKlM#Ez2+5nw2W!vnsB#Gt{=@Ohu1Dz0}p9Mw=KGGSzWM-KJ7%)d;f~`>?4KxY#YP!XyGkz4OOQOa)lLvcp9R`|#`cg=a z0%&%*Z4^9X8h5#oc~#e8pOroj)Js4vi|lfD%CQdCo3J_{>+SOI^_snvrwfra@l77e z0haVB5@&OOPKoW9(QGhvoOlj8A6;3bVd}(m{_VX?*~;o7Q#!%g$h^`{+t~zU4Sj;& ztu-ai@|6RAobAtS;uBkPRW62jYbH<;%TofJJ@8$ z5J*CuyA$T;0HI-Syq+#iuP@1(< zB@sFq+V=Q)Kxh}*Q8jL18ya%>N+QVk+q5(YG8!LiP-L`1HAuP*J@Q`=BM3wT;}KZE z(^g9jYAXXp>sMt6Jkdy(ts7pqR}8(aU*IA*>wFbAnXE&&jpeNadbgffzqBbLE^qrX zimBi1I!Yrny)t_HxiR-@ur7kqwOybH<4cqy}F!kD7!FOkJ2eZ#$;?IU#X3 zYKw_u!F zxE=2Jgr;n+7vx0~H?#{uwX3{S~{ z#ye#3D|YTg%5$uzXpwW6!oliW!s(4A?syk1^6n@XP4!z0Qqi8|7mbwe)SqxIO0j^j z$W4+TZ9?v(8#CTsFD_=qPy2Mc<+Db;e3jFPT1|M!70_cFJBWKFZ_e0`q{_MiZWJc`y@MV=D$U@8u6;8nfx<<=T-cu#D3fi=TyiNcx8yhfV`% z5)QN9dsT`=&>&N7OqT|Sxe1vXV)E)V82QP_j`B~F=z~KNVqhbxW!YSpoyZ2mvc@(N z-3^zwi){qJ2tDhpV1dD2HQrWatx`5HMcDHb22s4~)};ZvH87M-_e8!SrsMag>uBKx zOU5?xa$VI6muHO~LFO@l?c0GL@@wx*6n_JkA@XhIOauHrQAu{*6IOMCWP@A~ADKxK z0COo4U@|!lmpEg}Skh;Ejq^K`gUR-{Gx`!(Ie@Im>(}Q@Ar?9z0#uwBC&B$qtn$HX z$B72a8Dpfsk;ML_fS>7Pk$yu!j>RtW-SUyXe9CP#Rm z5qW-i-z5wI1i{nxE{z)>jrj8Y`HGlFS{D&``wfW**1Dj*B2oS;((}U9Ho``do|6}G z^{mw>mbNjabtpB0y1X6l@Sba<(kS^ebW~yD zAhk6Z9+Kd-Tfp(8XP!~{89P8D+A-m`0hXBw_>H_-oYV+J=WBz6nMED6FRt5oIuYGG z{F;6btaqKfNu&f0MSWg4*>inqKB~M%I?JFFCU4K`^OANB>pyh2_z&IT)wf*H9mOTx z>CcdyqSv>skqs{$R1#Or)E^4bG^ZWjIe%4cFR%_Ek$5nNA{-RB$#Wi7KYja@7--IN zM^T=kb*ECEmKBc7+rmk2bvk5`df-8R2}Hf7yYd%}?C!*$W;knJ3T&bL0HqG;25#p) zvD9Mpu%-k0^T5bWh-hP;EuCNIw7nzc8)I4BOW?5TfhJeULI;|Z#9Yv6KmmX_y5y6) zNI1VHhGtkq?EodzEgfPcKX(*JbP6q&iRWCKmQ z%N%{#VP+RheP~iEoL=tp)smn(y32pr5k@F@I_2-hWAbtHB`yhzcJGoaP!3Ma{N%q+ z6x*?i9S}QlZ9@l-r2^$Yq*aOJColytxgc#@j(e~@$+8-=rrafUHvUG(nLGm+3CW-X zAi-Zzr=UEDDhbG2#S4N=H5=Z~IdNl-Nbp^e9808yB5)h*CW*-KE>6gk{#Q?ixkf~HQQOYeYEGh&NJl)2$m(oI5R z0)>!H9?smxxFjr9W80orOFSZG4Pi;tFk_OQkTD+8g@)85{2e12>!3a(3yv2z5VuI$ z7&M4N4IMaMGHsD__!A>g6M)8I4ZQ9-Yz<=e87B?$j|QCi0mBINk(MeA%9ZJz(Q7Mn zp&IxY2H0N2l!nIEzTAeYUgY|XW}{RShE~?W1)F@-aNTr>N@Fa;LY{XDm-|inS?ks_OV<%q)`CX6n!0(}|?ChuO9$9uoQl>dy%ra@sbo z9g5ht+8m;t2MO7;&;TuHmDp}`G?Sqx_F|$9bB7o-ZSQnIK0IVU50Ks>JC9i0;!SUe zb;r7Bfw`0PfrxuWy2*V?$vw+g6Lv98Toa;_t=CTJPP;KT&9e$&QpQj2YL=71<_UGg7D7=%40Jo9pMF~1p;uc*%MZ;Oqr)0z$acKrWdg_cuT0#v$lWFd6&~lvAQf)5nP-C74r%VR zc>$a=fh&z%GN>1Wjf`IZKr&xU{6FZ-$^1=#1(yPo$^5s#4Cyq#mjH?Zq`*8keW_eb zP;?1Sg4S33ml##!O!434Zd4FejoEz$0`wA&mx}Z_F(mi>Wt%zSmxu*&!rwnTPNYD_ z1ywIDOGRU$6<1iGN&^T=N<~}DH4uhg^P`)?TG?9UH{vza*(F$4gL>lC*1S+(t@L;9r{b z$(1G@X+cWT=^YIWD`RCZ%#>;DLxz#&gr02+}Lg(y- zm0E)@C8-z2RGS5vqPh7j&SV(2z39~iAMG?%YUqwVCRdw(hhz5p?}vH5&5WMUIzG6Fbp z5I7GKo8g)ad~VO3-k9Zn4S$wiI81Dg+xj1kS&gBRO7wuFYIgtIzb^63~2a^*l?ej2?t;nx#Zp7bP4HgB(i@4 z?h;|=NJw8YrL4(u;t&%MV&Rb0#`*&kDXVl+^7%tKI!k8d#9)mp@p?w7Wb1c=lf@Bi zVTUhOF2YZpPIWqglSDOVpc5AOU!v54=SFS|Qj{8NDFh1g2q8r&`K2gTEV@b3rjvx+ ziRlTv+=+RpftAsiseuE88e?(7u2d-%s7ep{m0CODH`J%CQv)`pol{@Jwt&OS zjTgbX$SWLz7la@VN#_W3Lb~mVeS+8naa4JxNm%TfE(ws*fx3;^ibpTJus&msw2~xC zbIo(|ML*gZNquAQA+b;Ri36prf1Xe(Fo}M8+ie!VlG<(BcG6#LMszat`6e{IP4!P8 z-n{}M%O<0grYBzCwB{)`_p}E{hg)_RDOp-I{sLRHHNNUw6jJk^;3kYNauY_sCh%Yj zMYQd56DCdqak&WtZWkbt;@3?6>;({!V|h6dkyCEqbtRJvGWD3*Mb>dVi6S@PKY80R z|1JqlN@cPI(e%0$Sr44f3s8k+0+2NkvcpJO`dg&_1`82Cp8|MA*}}=G1frxA(kt6u z>>_go7yu-ttLwLHt{D(pRcgG%ieMY1kju-stGxd%@`{^WA#$LS2sG$~bwu1C{0Qq_ zapNj47yHRD3}#)Gz7D(8rn}si?Y;tw{ZnbM(iw*AV$~}EY~!-yE^>2^Yru|M55dzw zw2!Y65VT4_X1XUrku>>~2^_RcIH&?;bSXf%#Ua_Mi8*&kKLkv;nuP02Chuy4sH3`khh^r^u1D*SLyCmS#S(j5_4S4T1v(~3GN+6KG zzM-VTmb@F@ohD%7zZ8&P`6ViTpVG0XTRbAor^CSt=d;NnrC9rC=Vk3$**= z6LiQedE&&bMpP_32tO_s&(({UH*vNR)ewLQ2+&=+=xqPVgz@ph|MCe4^8Dq4^MYIF z$k)H>!Ug&N^zrft{8f$@28AHY0spSd%ggt7WnTE-K7L-ozk&!r{|+L^|5sf;2+zNL zV0`e!2Z8TTq{#{oP`sb)ZcwxNIKiY%v@&m9xdkuxa1ulo? zUn2vBLiqly3>6goJ%s-%2jhW4{wxO*5QP2N85kUla@iT+fBtv8d@%T*1$p@dc>esv z;IH#|{v3WjC=B*@IT-)nK0YYlzefQ%{-8_n?*`$#e|Cls3O>2}-<6SdVLXt(eUQH< z93Kq&cYEMN*%MV-Q9*guh)P&t(u(T4p7^>HjTqqla}*&w;GLj9`UrvY!vy~rZO{jY z{{a*TQ~=8NM;}2S|DV8v@bdBSUDo{~4g~9&p4CwoF za3K7={Qu=c{!_q*rbGXn4xsPv2Ehkp{yASE0(^W|^XqbYIXfC!SerWHVhIa#t6F%P z(!n4Qe(uM1cFuI*xFGMn*_zqWAs3V1_u>9;+=vs^rTcvk&d|}>-O Date: Fri, 10 Jul 2020 10:38:55 +0800 Subject: [PATCH 69/74] Update 2020-07-10 --- README.md | 8 +- doc/uArm Swift Pro Protocol V4.0.4_cn.pdf | Bin 364950 -> 0 bytes doc/uArm Swift Pro Protocol V4.0.4_en.pdf | Bin 243528 -> 0 bytes doc/uArm Swift Pro Protocol V4.0.5_cn .pdf | Bin 0 -> 726903 bytes doc/uArm Swift Pro Protocol V4.0.5_en .pdf | Bin 0 -> 661672 bytes hex/uArmPro_V4.6.0_release_20200527.hex | 4033 ------------------- hex/uArmPro_V4.7.0_release_20200710.hex | 4128 ++++++++++++++++++++ src/gcode.c | 14 +- src/motion_control.c | 12 +- src/report.c | 10 +- src/report.h | 1 + src/uarm_angle.c | 111 +- src/uarm_angle.h | 1 + src/uarm_common.h | 36 +- src/uarm_coord_convert.c | 13 +- src/uarm_iic.c | 195 + src/uarm_iic.h | 3 + src/uarm_peripheral.c | 179 +- src/uarm_peripheral.h | 2 + src/uarm_protocol.c | 161 +- src/uarm_protocol.h | 1 + src/uarm_swift.c | 1 + src/uarm_swift.h | 5 +- 23 files changed, 4807 insertions(+), 4107 deletions(-) delete mode 100755 doc/uArm Swift Pro Protocol V4.0.4_cn.pdf delete mode 100755 doc/uArm Swift Pro Protocol V4.0.4_en.pdf create mode 100644 doc/uArm Swift Pro Protocol V4.0.5_cn .pdf create mode 100644 doc/uArm Swift Pro Protocol V4.0.5_en .pdf delete mode 100644 hex/uArmPro_V4.6.0_release_20200527.hex create mode 100644 hex/uArmPro_V4.7.0_release_20200710.hex diff --git a/README.md b/README.md index 6aec299..fd4398e 100755 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ # Swift Pro Firmware V4.6.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- -## Update Summary for v4.6.0 - -* Fixed air pump control delay problem +## Update Summary for v4.7.0 +* Add M2211 cmd to read external EEPROM +* Add M2212 cmd to write external EEPROM +* Add P2244 cmd to get the communication status of AS5600 +* Fix read bug of work mode ## Caution #### The current firmware is not perfect and will be updated periodically diff --git a/doc/uArm Swift Pro Protocol V4.0.4_cn.pdf b/doc/uArm Swift Pro Protocol V4.0.4_cn.pdf deleted file mode 100755 index 84becf913c9db6e272ee61989c6e267367da803b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364950 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

      n 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 SFeSh4#eexPum0^1Fa8fX;!6eq literal 0 HcmV?d00001 diff --git a/hex/uArmPro_V4.6.0_release_20200527.hex b/hex/uArmPro_V4.6.0_release_20200527.hex deleted file mode 100644 index 51f65b0..0000000 --- a/hex/uArmPro_V4.6.0_release_20200527.hex +++ /dev/null @@ -1,4033 +0,0 @@ -:1000000065C5000084C5000082C5000080C50000F1 -:100010007EC500007CC500007AC5000078C50000E0 -:1000200076C500000C94DF5C72C500000C94215072 -:100030006EC500006CC500006AC500000C94AC5C85 -:1000400066C500000C94CF3662C5000060C5000094 -:100050005EC500005CC500005AC500000C945A360D -:1000600056C500000C94A8310C94983250C500007D -:100070004EC500004CC500004AC5000048C5000040 -:1000800046C5000044C5000042C500000C94965CC3 -:100090000C9440310C946A323AC5000038C5000017 -:1000A00036C5000034C500000C945E3930C5000030 -:1000B0002EC500000C945B5C2AC5000028C500001A -:1000C00026C5000024C500000C94265C0C94D83092 -:1000D0000C943C321CC500000C9470300C940E3211 -:1000E00016C500006E14D41ED41E7C149114A614E0 -:1000F000BB14D41EC414D41ED714D41EE614F0149A -:100100005015D41ED41ED41E071521153B15A31D52 -:10011000B31DE21DB31DE61DFD1DEC1DF61D211EC8 -:10012000281E331E3E1E5D1E5F1E621E641E1D269F -:1001300035264D2665267D269E26B6269E3CA43C69 -:10014000A73CAA3CAE3CB63CBE3C2B3D2B3D2B3DD8 -:10015000C63CC93CD23CDB3C2B3D2B3D2B3D2B3DD3 -:100160002B3D2B3DE33CED3CF93C033D063D0F3D73 -:10017000183D1E3D9E5BA15B905B945B9A5BD85BD8 -:10018000A55BA95BAF5BB35BB75BBD5BC15BC55BED -:10019000D85BCB5BCF5BD35B084AD73B3BCE016ED2 -:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE -:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD -:1001C000000000803F072C7AA5BA6CC590DA3B93FB -:1001D00065FC8BBC53F810FD3C5692834DBD879D4A -:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 -:1001F000CDB2D44EB93836A9020C50B991868808D0 -:100200003CA6AAAA2ABE000000803F0000407A1047 -:10021000F35A00A0724E18090010A5D4E80000E8B7 -:100220007648170000E40B54020000CA9A3B000015 -:1002300000E1F505000080969800000040420F00A4 -:100240000000A08601000000102700000000E80365 -:10025000000000006400000000000A000000000030 -:100260000100000000002C76D888DC674F0823DFEF -:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 -:10028000997696E8E6C28426EB898C9B62ED407CE9 -:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 -:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA -:1002B000FEF520E6B500D0ED902E030094357705CD -:1002C0000080841E080000204E0A000000C80C3385 -:1002D0003333330F986E12831141EF8D2114893B14 -:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 -:1002F000901DA4BBE424203284725E228100C9F1E7 -:1003000024ECA1E53D276364696E6F7073757858BE -:100310005B00000020002300260029002C002F0095 -:100320003200000100000301060109010D0A003D31 -:1003300000244E005D0D0A005B302E396A2E3230EB -:100340003136303732363A005D0D0A005B544C4F7F -:100350003A005D0D0A002C005B4739323A005D0D12 -:100360000A002C003A003330003238005B47005D51 -:100370000D0A00205300204600205400204D380074 -:10038000204D3900204D3500204D3400204D3300E4 -:10039000204D3200204D3100204D300020473934AF -:1003A00000204739330020473931002047393000D9 -:1003B00020473230002047323100204731390020B9 -:1003C0004731380020473137002047004733382E67 -:1003D000004738300047330047320047310047308C -:1003E000005B00290D0A00206D617820747261762F -:1003F000656C2C206D6D0020616363656C2C206D35 -:100400006D2F7365635E3200206D617820726174B8 -:10041000652C206D6D2F6D696E002C2073746570D6 -:100420002F6D6D007A00790078002028003D0024AF -:10043000002028686F6D696E672070756C6C2D6F79 -:1004400066662C206D6D290D0A002028686F6D6985 -:100450006E67206465626F756E63652C206D7365D1 -:1004600063290D0A2432373D002028686F6D696EBC -:1004700067207365656B2C206D6D2F6D696E290D7E -:100480000A2432363D002028686F6D696E67206649 -:100490006565642C206D6D2F6D696E290D0A2432FF -:1004A000353D00290D0A2432343D002028686F6D47 -:1004B000696E672064697220696E76657274206D5A -:1004C00061736B3A002028686F6D696E67206379ED -:1004D000636C652C20626F6F6C290D0A2432333DEA -:1004E00000202868617264206C696D6974732C2027 -:1004F000626F6F6C290D0A2432323D002028736F21 -:100500006674206C696D6974732C20626F6F6C293E -:100510000D0A2432313D0020287265706F727420FC -:10052000696E636865732C20626F6F6C290D0A24F5 -:1005300032303D00202861726320746F6C657261F7 -:100540006E63652C206D6D290D0A2431333D00202A -:10055000286A756E6374696F6E206465766961746C -:10056000696F6E2C206D6D290D0A2431323D0029F2 -:100570000D0A2431313D0020287374617475732095 -:100580007265706F7274206D61736B3A0020287011 -:10059000726F62652070696E20696E766572742C68 -:1005A00020626F6F6C290D0A2431303D0020286CC9 -:1005B000696D69742070696E7320696E76657274F6 -:1005C0002C20626F6F6C290D0A24363D00202873A1 -:1005D00074657020656E61626C6520696E76657207 -:1005E000742C20626F6F6C290D0A24353D00290D93 -:1005F0000A24343D00202864697220706F727420D0 -:10060000696E76657274206D61736B3A00290D0A0C -:1006100024333D0020287374657020706F7274203D -:10062000696E76657274206D61736B3A0020287371 -:100630007465702069646C652064656C61792C2038 -:100640006D736563290D0A24323D0020287374659B -:10065000702070756C73652C2075736563290D0AA5 -:1006600024313D0024303D0024242028766965771C -:10067000204772626C2073657474696E6773290D0C -:100680000A2423202876696577202320706172610F -:100690006D6574657273290D0A2447202876696593 -:1006A0007720706172736572207374617465290DAF -:1006B0000A2449202876696577206275696C642070 -:1006C000696E666F290D0A244E20287669657720A9 -:1006D0007374617274757020626C6F636B73290D33 -:1006E0000A24783D76616C756520287361766520F3 -:1006F0004772626C2073657474696E67290D0A24F1 -:100700004E783D6C696E6520287361766520737440 -:10071000617274757020626C6F636B290D0A2443DB -:100720002028636865636B2067636F6465206D6F65 -:100730006465290D0A245820286B696C6C20616C53 -:1007400061726D206C6F636B290D0A24482028723A -:10075000756E20686F6D696E67206379636C6529BB -:100760000D0A7E20286379636C652073746172744E -:10077000290D0A2120286665656420686F6C64294C -:100780000D0A3F202863757272656E742073746160 -:10079000747573290D0A6374726C2D782028726544 -:1007A000736574204772626C290D0A0000002100F5 -:1007B000240027002A002D00300033000101000032 -:1007C000040107010A010D0A00486F6D696E672078 -:1007D0006661696C0050726F6265206661696C00C9 -:1007E00041626F727420647572696E672063796309 -:1007F0006C6500536F6674206C696D6974004861A4 -:100800007264206C696D697400414C41524D3A200C -:10081000003E0D0A002C4C696D3A002C52583A00EB -:100820002C4275663A002C002C57506F733A002CFE -:10083000002C4D506F733A003C446F6F72003C4384 -:100840006865636B003C416C61726D003C486F6D84 -:1008500065003C486F6C64003C52756E003C496416 -:100860006C65005D0D0A00526573746F72696E6786 -:100870002064656661756C74730050676D20456E09 -:100880006400436865636B20446F6F720044697352 -:1008900061626C656400456E61626C656400436111 -:1008A0007574696F6E3A20556E6C6F636B6564008A -:1008B000272448277C2724582720746F20756E6CC6 -:1008C0006F636B00526573657420746F20636F6E85 -:1008D00074696E7565005B005D0D0A003A002C00BE -:1008E0005B5052423A000D0A00496E76616C6964B1 -:1008F0002067636F64652049443A00556E646566FD -:10090000696E656420666565642072617465004D7A -:100910006F64616C2067726F75702076696F6C61AF -:1009200074696F6E00486F6D696E67206E6F74201A -:10093000656E61626C656400416C61726D206C6F04 -:10094000636B004E6F742069646C650045455052BE -:100950004F4D2072656164206661696C2E2055736D -:10096000696E672064656661756C74730056616CAE -:100970007565203C2033207573656300536574747E -:10098000696E672064697361626C65640056616CAE -:100990007565203C203000496E76616C6964207377 -:1009A000746174656D656E7400426164206E756D6E -:1009B00062657220666F726D617400457870656360 -:1009C00074656420636F6D6D616E64206C65747412 -:1009D0006572006572726F723A20006F6B0D0A00CB -:1009E00000002200250028002B002E0031003400DA -:1009F00002010000050108010B01050505050705B9 -:100A000008080808020202020A0A0808040404048A -:100A100001010101010101010303030303030303B6 -:100A2000040707070C0C0C0C0C0C0C0C0202020245 -:100A300006060606060606060B0B0B0B0B0B0B0B2E -:100A400001021020200808102040102040800201E0 -:100A500002010804020101020408102040808040C5 -:100A600020100804020180040201804020100804C4 -:100A70000201080402010102040810204080010262 -:100A800004081020408000000A0B02090C0D0E081B -:100A90000703040100000000000000000000000047 -:100AA0000000000000000000000000000000000046 -:100AB0000000121110000000000000000000000003 -:100AC00000000000000000000000000011241FBE14 -:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D -:100AE000B2E0EEE4F9EF00E00BBF02C007900D9218 -:100AF000AC3AB107D9F725E1ACEAB4E001C01D92E8 -:100B0000A03CB207E1F70E94CF5F0C94A57C78CAA5 -:100B10002F923F924F925F926F927F928F929F920D -:100B2000AF92BF92CF92DF92EF92FF920F931F93FB -:100B3000CF93DF93CDB7DEB7C85CD1090FB6F89479 -:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B -:100B5000D04089E3E8E4F5E1DF011D928A95E9F7E9 -:100B60008AE0E1E8F5E1A9E4B5E101900D928A950A -:100B7000E1F7FE01E756FF4F1082CD54DF4F198297 -:100B80001882C35BD040C155DF4F19821882CF5AFB -:100B9000D040C154DF4F1882CF5BD040C655DF4FE5 -:100BA0001882CA5AD040C255DF4F1882CE5AD04060 -:100BB000E859F109C456DF4FF983E883CC59D04096 -:100BC0009E01235A3F4FC256DF4F39832883CE59A7 -:100BD000D040CE018F5A9F4FC056DF4F99838883F4 -:100BE000C05AD040DE01A959BF4FCE55DF4FB9835F -:100BF000A883C25AD040E059FF4FCC55DF4FF9834C -:100C0000E883C45AD0409C01285F3F4FCD53DF4F4B -:100C100039832883C35CD040C756DF4F8881C959C8 -:100C2000D040C754DF4FE881F981C95BD040E80F5D -:100C3000F11D1081112311F40C94B3159FEB910F4A -:100C40009A3110F00C94C61E8F5FC756DF4F888311 -:100C5000C959D040AE014B565F4FBE0167567F4F1A -:100C6000C754DF4F88819981C95BD0400E941D45E0 -:100C7000882311F40C94C81ECB56DF4FC880D9804E -:100C8000EA80FB80C559D040C701B6010E94887533 -:100C90000E94F572CB54DF4F688379838A839B83EC -:100CA000C55BD040CB54DF4F48805980C55BD040F6 -:100CB000B20180E090E00E9421739B01AC01C7016A -:100CC000B6010E94A77120E030E048EC52E40E9497 -:100CD000DA744B015C0120E030E0A9010E949F74AE -:100CE00020E030E040E05FE387FD05C0C501B401CE -:100CF0000E94A87104C0C501B4010E94A7710E949E -:100D0000F0721B011D3411F40C942F0F24F41734CE -:100D100061F00C945B14103511F40C94C50F13356D -:100D200011F40C94E7130C945B14C756DF4F8881C1 -:100D3000C959D040C754DF4FA881B981C95BD040A1 -:100D4000A80FB11DCD01BAE94B16B8E05B0609F456 -:100D500016C160F4F4ED4F16F7E05F06D1F029E913 -:100D6000421628E0520609F440C0FAC53DE9431690 -:100D700038E0530609F451C3AEE94A16A8E05A0612 -:100D800009F436C5BCE94B16B8E05B0609F0E8C5C6 -:100D900049C21A821982E1E0F0E0EC0FFD1FFF93D7 -:100DA000EF932EE434E03F932F939F938F930E9411 -:100DB00079760F900F900F900F900F900F9018165C -:100DC00019060CF03BC589819A8190936B0F809333 -:100DD0006A0F11E01093950D8091170D811148C590 -:100DE0000E94FB2B1093170D43C58E010B5E1F4F06 -:100DF0001F930F939E01275D3F4F3F932F937E01DB -:100E0000FDE3EF0EF11CFF92EF92CF55DF4F2881EB -:100E1000C15AD0402F93C056DF4F3881C05AD040BE -:100E20003F9329E132E03F932F939F938F930E944A -:100E300079760FB6F894DEBF0FBECDBF04970CF4E1 -:100E4000FDC4EF961CAE1DAE1EAE1FAEEF97E5962D -:100E50001CAE1DAE1EAE1FAEE597AB961CAE1DAE12 -:100E60001EAE1FAEAB97A1961CAE1DAE1EAE1FAE42 -:100E7000A1978CE0C456DF4FE881F981CC59D0406E -:100E800011928A95E9F7AE0145585F4F60E070E036 -:100E9000CE018F5A9F4F0E941D45882309F4E8C454 -:100EA000AE014F585F4F60E070E0C7010E941D45E2 -:100EB000882309F4DDC4AE0149595F4F60E070E05A -:100EC000CE0189960E941D45882309F4D1C4AE0144 -:100ED000435A5F4F60E070E0C8010E941D458823BF -:100EE00009F4C6C420E030E044EB52E4E5966CAD72 -:100EF0007DAD8EAD9FADE5970E94A77121EE3EE2DC -:100F000045E652E40E9488726B017C01E5966CAF65 -:100F10007DAF8EAF9FAFE5970E948572EF968CAC48 -:100F20009DACAEACBFACEF97A50194010E94DA7402 -:100F300069837A838B839C83C701B6010E943D75C8 -:100F40009B01AC01C501B4010E94DA746D837E83FC -:100F50008F839887AB968CAD9DADAEADBFADAB9793 -:100F600089879A87AB87BC87A1962CAD3DAD4EADE6 -:100F70005FADA19700E0BE016F5F7F4F37C46596FC -:100F80001CAE1DAE1EAE1FAE659721961CAE1DAEEB -:100F90001EAE1FAE219721E030E02C0F3D1F3F9386 -:100FA0002F938E010B5E1F4F1F930F93C156DF4F80 -:100FB0003881CF59D0403F93C256DF4FA881CE59D8 -:100FC000D040AF9322E432E03F932F939F938F93CF -:100FD0000E9479760FB6F894DEBF0FBECDBF03979F -:100FE0000CF42CC4AE014F5A5F4F60E070E0C801B2 -:100FF0000E941D45882309F43BC4AE01435C5F4F4A -:1010000060E070E0CE0101960E941D45882309F43E -:101010002FC43E01F9E26F0E711C8CE0D3011D92CA -:101020008A95E9F760917C0D70917D0D80917E0D20 -:1010300090917F0D0E94237320E030E040EA52E45B -:101040000E9488722091700D3091710D4091720D47 -:101050005091730D0E94A871CA55DF4F6883798340 -:101060008A839B83C65AD0406091800D7091810D18 -:101070008091820D9091830D0E94237320E030E0D7 -:1010800040EA52E40E9488722091740D3091750DEF -:101090004091760D5091770D0E94A871C554DF4F95 -:1010A000688379838A839B83CB5BD0406091840D76 -:1010B0007091850D8091860D9091870D0E9423730C -:1010C00020E030E040EA52E40E9488726B017C012B -:1010D00020E030E044EB52E46091780D7091790D9E -:1010E00080917A0D90917B0D0E94A7719B01AC01BC -:1010F000C701B6010E94A8717B018C016F968EAD6D -:101100009FAD6F978130910509F450C00CF03FC03E -:10111000892B09F0A0C320E030E044EB52E465964F -:101120006CAD7DAD8EAD9FAD65970E94A771659644 -:101130006CAF7DAF8EAF9FAF6597FE01F1964F010B -:101140009E01235D3F4F5901DE0199966D017B01A0 -:101150008C01C554DF4F288139814A815B81CB5B8B -:10116000D040CA55DF4F688179818A819B81C65AF8 -:10117000D0400E94784CA401B501C6010E94194AD2 -:1011800021962CAD3DAD4EAD5FAD2197E2C38230CF -:10119000910519F1039709F05EC365966CAD7DADBD -:1011A0008EAD9FAD65970E94D62C62C365966CADDF -:1011B0007DAD8EAD9FAD6597FE01F1964F019E010D -:1011C000235D3F4F59016301C554DF4F28813981A9 -:1011D0004A815B81CB5BD04015C065962CAD3DAD9F -:1011E0004EAD5FAD6597CE01C1964C01DE019D9677 -:1011F0005D016301CA55DF4F688179818A819B81D6 -:10120000C65AD0400E94784CA401B501C3010E9487 -:10121000194A21962CAD3DAD4EAD5FAD219700E052 -:10122000B30199C38E010B5E1F4F1F930F937E0175 -:10123000B9E2EB0EF11CFF92EF926E01EDE3CE0EE0 -:10124000D11CDF92CF92CF55DF4FF881C15AD040E9 -:10125000FF93C056DF4F2881C05AD0402F932AE514 -:1012600032E03F932F939F938F930E9479760FB62E -:10127000F894DEBF0FBECDBF04970CF4DFC2EF962B -:101280001CAE1DAE1EAE1FAEEF97E5961CAE1DAE9A -:101290001EAE1FAEE597AB961CAE1DAE1EAE1FAECA -:1012A000AB97A1961CAE1DAE1EAE1FAEA197AE01B0 -:1012B00045585F4F60E070E0CE018F5A9F4F0E940B -:1012C0001D45882309F4D4C2AE014F585F4F60E03A -:1012D00070E0C6010E941D45882309F4C9C2AE0111 -:1012E00049595F4F60E070E0C7010E941D458823A7 -:1012F00009F4BEC2AE01435A5F4F60E070E0C8011E -:101300000E941D45882309F4B3C26091840D709139 -:10131000850D8091860D9091870D0E942373CA558B -:10132000DF4F688379838A839B83C65AD04060915C -:10133000800D7091810D8091820D9091830D0E949E -:101340002373C554DF4F688379838A839B83CB5B88 -:10135000D04060917C0D70917D0D80917E0D9091BB -:101360007F0D0E942373FE0139964F019E012B5F72 -:101370003F4F5901DE0111966D01CA55DF4FE880DC -:10138000F9800A811B81C65AD040C554DF4F28819D -:1013900039814A815B81CB5BD0400E945D4DA401C5 -:1013A000B501C6010E94194AEF962CAD3DAD4EAD78 -:1013B0005FADEF9769817A818B819C810E94A871D2 -:1013C00069837A838B839C83E5962CAD3DAD4EADCE -:1013D0005FADE5976D817E818F8198850E94A871B0 -:1013E0006D837E838F839887AB962CAD3DAD4EADDC -:1013F0005FADAB9769857A858B859C850E94A871C6 -:1014000069877A878B879C87A1962CAD3DAD4EADC1 -:101410005FADA19700E0B601E9C1C156DF4FB881C9 -:10142000CF59D040BF93C256DF4FE881CE59D0404C -:10143000EF93CD55DF4FF881C35AD040FF93CE557F -:10144000DF4F2881C25AD0402F93CB55DF4F3881D0 -:10145000C55AD0403F93CC55DF4FA881C45AD040E5 -:10146000AF938E0105581F4F1F930F9329E132E070 -:101470003F932F939F938F930E9479760FB6F894A2 -:10148000DEBF0FBECDBF04970CF4D8C1CF56DF4FDF -:10149000188219821A821B82C159D040C357DF4F6C -:1014A000188219821A821B82CD58D040C757DF4F4D -:1014B000188219821A821B82C958D040CB57DF4F3D -:1014C000188219821A821B82C558D0408CE0C056FF -:1014D000DF4FA881B981C05AD0401D928A95E9F7A3 -:1014E000AE014F565F4F60E070E0C8010E941D459D -:1014F000882309F4BDC1AE0143575F4F60E070E03F -:10150000CE018F589F4F0E941D45882309F4B0C11A -:10151000AE0147575F4F60E070E0CE0189599F4FA1 -:101520000E941D45882309F4A3C1AE014B575F4FAC -:1015300060E070E0CE01835A9F4F0E941D458823D2 -:1015400009F496C16091840D7091850D8091860D8E -:101550009091870D0E942373CA55DF4F688379836A -:101560008A839B83C65AD04020E030E044EB52E4AB -:101570006091780D7091790D80917A0D90917B0D2D -:101580000E94A7716B017C0120E030E040EA52E448 -:10159000CA55DF4F688179818A819B81C65AD040C4 -:1015A0000E9488729B01AC01C701B6010E94A8711C -:1015B000C554DF4F688379838A839B83CB5BD0409C -:1015C0006091800D7091810D8091820D9091830DBD -:1015D0000E942373CB53DF4F688379838A839B8375 -:1015E000C55CD04060917C0D70917D0D80917E0D29 -:1015F00090917F0D0E942373CD53DF4F8880998097 -:10160000C35CD040F1E56F2E712C6C0E7D1EB4E0F2 -:101610006B0E711C5301FE01EF5AFF4F6F01CA554B -:10162000DF4FE880F9800A811B81C65AD040CB5336 -:10163000DF4F288139814A815B81C55CD0400E949F -:101640005D4DCD53DF4F48815981C35CD040B3011C -:10165000C6010E94194A65966CAD7DAD8EAD9FADF9 -:1016600065976996CCACDDACEEACFFAC69979B019D -:10167000AC010E94DA744B015C01A7019601C7011D -:10168000B6010E94DA749B01AC01C501B4010E944D -:10169000A8710E944775CF56DF4F288139814A8152 -:1016A0005B81C159D0400E94A8716B017C01CF566B -:1016B000DF4F688379838A839B83C159D040C357A6 -:1016C000DF4F288139814A815B81CD58D040C55494 -:1016D000DF4F688179818A819B81CB5BD0400E94FA -:1016E000A87121EE3EE245E652E40E948872CA5596 -:1016F000DF4F688379838A839B83C65AD0400E94D8 -:1017000085729B01AC01C701B6010E94DA744B01DE -:101710005C0165966CAF7DAF8EAF9FAF6597CA5584 -:10172000DF4F688179818A819B81C65AD0400E94AF -:101730003D759B01AC01C701B6010E94DA74699640 -:101740006CAF7DAF8EAF9FAF6997C757DF4F2881D2 -:1017500039814A815B81C958D0406D966CAD7DADB1 -:101760008EAD9FAD6D970E94A8716D966CAF7DAFE9 -:101770008EAF9FAF6D978E01035C1F4F24E045E055 -:10178000C501B4010E942C6F69966CAD7DAD8EAD24 -:101790009FAD69970451110924E045E00E942C6F28 -:1017A0006D966CAD7DAD8EAD9FAD6D9704511109F9 -:1017B00024E045E00E942C6FCF56DF4F688179818D -:1017C0008A819B81C159D0400451110924E045E030 -:1017D0000E942C6FCB57DF4F288139814A815B8172 -:1017E000C558D04000E0BE016F5A7F4F81E0B4C0C1 -:1017F00021E030E02C0F3D1F3F932F938E010B5EB5 -:101800001F4F1F930F937E0139E2E30EF11CFF92ED -:10181000EF926E01ADE3CA0ED11CDF92CF9223E8A6 -:1018200032E03F932F939F938F930E9479760FB668 -:10183000F894DEBF0FBECDBF049784F41F9281E001 -:101840008F938DE092E09F938F930E94723F0F9051 -:101850000F900F900F9082E390E084C0AE01455846 -:101860005F4F60E070E0C6010E941D45811103C01A -:1018700080E090E077C0AE014F585F4F60E070E0CD -:10188000C7010E941D45882399F3AE0149595F4F56 -:1018900060E070E0C8010E941D45882349F3AE0155 -:1018A000435A5F4F60E070E0CE0101960E941D45F3 -:1018B0008823F1F220E030E044EB52E4EF966CAD87 -:1018C0007DAD8EAD9FADEF970E94A7717B018C011E -:1018D000EF966CAF7DAF8EAF9FAFEF978CE0C056A9 -:1018E000DF4FA881B981C05AD0401D928A95E9F78F -:1018F000AB962CAD3DAD4EAD5FADAB97E5966CAD07 -:101900007DAD8EAD9FADE597CD53DF4F888099803B -:10191000C35CD040E1E56E2E712C6C0E7D1EB4E0F0 -:101920006B0E711C5301FE01EF5AFF4F6F010E94B5 -:10193000784CCD53DF4F48815981C35CD040B3010F -:10194000C6010E94194AA1962CAD3DAD4EAD5FADCA -:10195000A19700E0B60180E00E94084690E002C036 -:1019600081E090E09C01215031092230310510F0D6 -:101970000C942F1FF8E24F16510409F414C280F59D -:1019800034E14316510498F481E14816510408F0FB -:1019900061C194E04916510409F474C008F4E3C02D -:1019A000BAE04B16510409F45EC00C94D41EECE16D -:1019B0004E16510409F457C038F426E1421651047A -:1019C00008F4A2C10C94D41E3EE14316510409F45C -:1019D0004AC086E24816510409F4C5C00C94D41ECE -:1019E0009DE34916510409F4D3C110F5B5E34B1634 -:1019F000510409F447C060F4FBE24F16510409F4A6 -:101A000095C121E34216510409F490C10C94D41EEF -:101A10003CE34316510410F00C94D41ECB54DF4F1A -:101A20008881C55BD040865380934F15A9E0AAC139 -:101A30008CE54816510460F49AE54916510408F003 -:101A40001FC1A0E54A16510409F49BC00C94D41E92 -:101A5000BCE54B16510439F0EFE54E16510408F47D -:101A60003CC10C94D41E2114310411F00C94E81ED6 -:101A7000C255DF4FF881CE5AD040FF2309F445C04C -:101A80000C94CA1E2CE14216510491F148F484E0F2 -:101A90004816510479F09AE049165104E1F08AC1E0 -:101AA000AEE14A165104D9F1B5E34B16510409F4DD -:101AB00056C080C181E054C0BFE14B16510408F00C -:101AC00042C0EAE04E16510441F4E1E0C255DF4F56 -:101AD000E883CE5AD04082E043C0FCE14F16510467 -:101AE00009F078C1F1E0C255DF4FF883CE5AD040FB -:101AF0002114310441F02AE02216310411F00C9433 -:101B0000D41E84E010C083E00EC0AEE14A1651043A -:101B100099F631E0C255DF4F3883CE5AD0402114B8 -:101B2000310449F485E080934815CA55DF4F188287 -:101B3000C65AD0405AC18AE02816310411F00C94DC -:101B4000D41E86E0F0CF25E34216510411F00C9428 -:101B5000141F91E0C255DF4F9883CE5AD04087E0E2 -:101B60008093481527C1C255DF4FE881CE5AD04037 -:101B7000E1110C94CA1EF2E0C255DF4FF883CE5A31 -:101B8000D04022E04216510419F158F44114510496 -:101B9000D9F04A94452809F013C181E08093491592 -:101BA0000FC196E249165104C1F0A0E54A1651044E -:101BB00009F44BC0B3E04B16510409F001C183E0B6 -:101BC0008093491531E09AC010924915E1E0ECC0CC -:101BD00082E08093491521E088C08EE12816310407 -:101BE00001F180F4A4E12A16310411F00C94D41E02 -:101BF00084E080934915F1E0CA55DF4FF883C65A57 -:101C0000D040F3C0B8E22B163104A9F0E2E32E165F -:101C1000310411F00C94D41E87E08093491581E0C3 -:101C200039C085E08093491521E0CA55DF4F2883EC -:101C3000C65AD040DAC086E08093491531E0CA55D3 -:101C4000DF4F3883C65AD040D0C088E08093491512 -:101C500091E062C0A2E14A16510441F0B3E14B1693 -:101C6000510449F010924D15E2E09EC081E080934E -:101C70004D15F2E0A6C082E080934D1522E035C0FC -:101C800021143104B9F43AE54316510449F4109291 -:101C90004C1583E0CA55DF4F8883C65AD040A5C093 -:101CA00081E080934C1593E0CA55DF4F9883C65A64 -:101CB000D0409BC0AAE02A16310411F00C94D41E27 -:101CC000BAE54B16510411F40C94D41EE4E0CA5545 -:101CD000DF4FE883C65AD04088C0FDE54F16510457 -:101CE00051F481E080934A1525E0CA55DF4F2883DF -:101CF000C65AD0406BC010924A1535E0CA55DF4F26 -:101D00003883C65AD04062C084E14816510451F469 -:101D100081E080934B1596E0CA55DF4F9883C65AF1 -:101D2000D04054C010924B15A6E02CC0C255DF4FD6 -:101D3000B881CE5AD040B1110C94CA1EE1E34E16C0 -:101D4000510451F410924E15F8E0CA55DF4FF88354 -:101D5000C65AD04023E044C03AE02316310411F0C3 -:101D60000C94D41E81E080934E1588E0CA55DF4F55 -:101D70008883C65AD04093E0C255DF4F9883CE5A2D -:101D8000D04033C0CA55DF4FA883C65AD0401EC0CA -:101D9000232811F00C94D41EBAE0CA55DF4FB88343 -:101DA000C65AD04022C0E7E0CA55DF4FE883C65A82 -:101DB000D0400CC0CA55DF4F1882C65AD04006C06A -:101DC000F1E0CA55DF4FF883C65AD040232869F0A6 -:101DD0000C94FB1ECA55DF4F1882C65AD04021E032 -:101DE000C255DF4F2883CE5AD040C155DF4FE8811E -:101DF000F981CF5AD040CF01A0E0B0E0CA55DF4F03 -:101E00000880C65AD04004C0B695A7959795879587 -:101E10000A94D2F780FF03C085E10C942F1F81E064 -:101E200090E0A0E0B0E0CA55DF4F0880C65AD0402D -:101E300004C0880F991FAA1FBB1F0A94D2F7C1556F -:101E4000DF4F28813981CF5AD040282B392BC155FB -:101E5000DF4F39832883CF5AD0400C940C06672B70 -:101E600011F00C94FB1EC756DF4F8881C959D04032 -:101E7000C754DF4F68817981C95BD040680F711DFD -:101E8000AE0147565F4FCB54DF4F88819981C55BC8 -:101E9000D0400E94491F9C01215031092230310558 -:101EA00010F00C942F1F36E04316510428F483E001 -:101EB0004816510490F026C098E04916510410F4D9 -:101EC0000C94D41EAAE04A16510408F440C0BEE1A6 -:101ED0004B16510411F00C94D41EE2E04E1651043E -:101EE00061F0FEE14F16510441F0452809F046C06B -:101EF00081E0809350152BE032C082E08093501532 -:101F00003BE036C084E04816510471F095E0491674 -:101F10005104A1F081E080935215ACE0CA55DF4F27 -:101F2000A883C65AD04022C482E080935215BCE0F8 -:101F3000CA55DF4FB883C65AD04018C41092521504 -:101F4000ECE0CA55DF4FE883C65AD0400FC4F9E031 -:101F50004F16510451F082E0809351152DE0CA557F -:101F6000DF4F2883C65AD04001C4109251153DE07E -:101F7000CA55DF4F3883C65AD040F8C38BE0CA55E4 -:101F8000DF4F8883C65AD040F1C3672B11F00C9401 -:101F9000FB1EC756DF4F8881C959D040C754DF4F59 -:101FA000E881F981C95BD040E80FF11D27EB4216AB -:101FB00028E0520609F4E7C208F05EC18CE9481631 -:101FC00088E0580609F499C108F076C0A9E94A16D4 -:101FD000A8E05A0609F48BC108F05FC0E8E94E1684 -:101FE000E8E05E0609F0B8C384E16E0199E2C90E2B -:101FF000D11CD601E82F1D92EA95E9F77E01F5E1A3 -:10200000EF0EF11CD701E82F1D92EA95E9F7C456AF -:10201000DF4FA881B981CC59D0401D928A95E9F74C -:1020200080E090E00E94044FCB54DF4F68837983B7 -:102030008A839B83C55BD04081E090E00E94044F7F -:102040002B013C0182E090E00E94044F4B015C01B7 -:10205000860124E045E0CB54DF4F688179818A8195 -:102060009B81C55BD0400E942C6F870124E045E036 -:10207000C301B2010E942C6F0451110924E045E014 -:10208000C501B4010E942C6FFF92EF92DF92CF92B4 -:102090001F930F938CEA92E03DC3FAE94F16F8E0E4 -:1020A0005F0609F427C12BE9421628E0520609F021 -:1020B00053C388EC92E023C13EE9431638E053064F -:1020C00009F427C108F420C19CEA491698E0590692 -:1020D00009F4B5C1ADEA4A16A8E05A0609F03CC3B6 -:1020E000A1961CAE1DAE1EAE1FAEA19765961CAE8E -:1020F0001DAE1EAE1FAE659721961CAE1DAE1EAE68 -:102100001FAE219784E1DE019996C656DF4FB98351 -:10211000A883CA59D040E82F1D92EA95E9F71E011D -:10212000F5E12F0E311CD101E82F1D92EA95E9F758 -:10213000C456DF4FA881B981CC59D0401D928A95F1 -:10214000E9F780E090E00E94044FCB54DF4F6883B2 -:1021500079838A839B83C55BD04081E090E00E94B5 -:10216000044FC554DF4F688379838A839B83CB5B9D -:10217000D04082E090E00E94044F20E030E044EB49 -:1021800052E40E94A7712B013C01FE01FD964F0114 -:102190009E012F5A3F4F5901CE01835A9F4F6C0128 -:1021A00083017201C554DF4F288139814A815B81E7 -:1021B000CB5BD040CB54DF4F688179818A819B8192 -:1021C000C55BD0400E94784CA401B501C6010E94B5 -:1021D000194AA1966CAD7DAD8EAD9FADA197659668 -:1021E000CCACDDACEEACFFAC65979B01AC010E94C2 -:1021F000DA744B015C01A7019601C701B6010E9488 -:10220000DA749B01AC01C501B4010E94A8710E945F -:1022100047758E01075D1F4F24E045E00E942C6F3B -:1022200020E030E044EB52E4C301B2010E94A87107 -:10223000810124E045E00E942C6F21966CAD7DADBC -:102240008EAD9FAD21970451110924E045E00E9415 -:102250002C6F1F930F933F922F92C556DF4FB8817B -:10226000CB59D040BF93C656DF4FE881CA59D04002 -:10227000EF938AEE92E04EC2B0EC4B16B8E05B06EC -:1022800009F4ADC1D0F439EB431638E0530609F434 -:1022900091C108F484C19AEB491698E0590609F4F3 -:1022A00091C1ABEB4A16A8E05A0609F055C28091DD -:1022B000020185FB882780F990C1B2EC4B16B8E08B -:1022C0005B0609F4FDC108F4CCC133EC431638E0D9 -:1022D000530609F407C280E6481689E0580609F05B -:1022E0003BC28091630D8F938091620D21C28AEB76 -:1022F00092E005C08CE69FE002C08FEC92E09F93D5 -:102300008F9383EC92E017C28BE19DE09F938F93B4 -:1023100093C080818E3409F0C8C18181805384309C -:1023200008F0C3C194E16E013DE3C30ED11CD60198 -:10233000E92F1D92EA95E9F77E01F9E2EF0EF11C13 -:10234000D701E92F1D92EA95E9F75E01F5E1AF0E9D -:10235000B11CD501E92F1D92EA95E9F7C456DF4F6C -:10236000A881B981CC59D0401D929A95E9F7823065 -:10237000E1F0833031F1813061F082E090E00E9441 -:10238000044F850124E045E00E942C6FBF92AF927C -:1023900053C080E090E00E94044F860124E045E0B5 -:1023A0000E942C6FDF92CF9247C081E090E00E94A4 -:1023B000044F870124E045E00E942C6FFF92EF92CA -:1023C0003BC08091620D9091630D0497029748F491 -:1023D0006091660F7091670F8091680F9091690FFF -:1023E00022C020E030E040E05FE3609100027091A5 -:1023F000010280910202909103020E94A77120E0E5 -:1024000030E040E05FE30E94DA7420E030E044E333 -:1024100053E40E94DA749B01AC0160E070E084E355 -:1024200093E40E94A7718E010F5F1F4F24E045E0E7 -:102430000E942C6F1F930F9386ED92E07CC1A196B2 -:102440001CAE1DAE1EAE1FAEA19765961CAE1DAE96 -:102450001EAE1FAE659721961CAE1DAE1EAE1FAE02 -:10246000219784E19E01275D3F4FC656DF4F398398 -:102470002883CA59D040D901E82F1D92EA95E9F77F -:102480001E01F5E12F0E311CD101E82F1D92EA95B6 -:10249000E9F7C456DF4FA881B981CC59D0401D92CD -:1024A0008A95E9F780E090E00E94044F2B013C01FF -:1024B00081E090E00E94044FCB54DF4F6883798322 -:1024C0008A839B83C55BD04082E090E00E94044FEA -:1024D00020E030E044EB52E40E94A771FE01FD963B -:1024E0004F019E012F5A3F4F5901DE01A35ABF4FA2 -:1024F0006D017B018C01CB54DF4F288139814A81EA -:102500005B81C55BD040C301B2010E94784CA4013D -:10251000B501C6010E94194AA1966CAD7DAD8EAD84 -:102520009FADA1978E01075D1F4F24E045E00E94FB -:102530002C6F65966CAD7DAD8EAD9FAD65978101BD -:1025400024E045E00E942C6F21966CAD7DAD8EADF0 -:102550009FAD21970451110924E045E00E942C6FA2 -:102560001F930F933F922F92C556DF4FF881CB599F -:10257000D040FF93C656DF4F2881CA59D0402F93D1 -:102580008CED92E0C7C0A49B11C08FE30E94075C52 -:102590008A30910558F08734910550F005C047996D -:1025A00005C00898009B04C081E017C080E015C0FA -:1025B00082E013C082B386958695869591E089273F -:1025C00081700BC08BE30E94075C21E0853691058A -:1025D00008F420E01F922F93ACC01F92A9C081E0A5 -:1025E00090E08C0F9D1F9F938F9388EF92E09F93B5 -:1025F0008F93FF93EF930E9479760F900F900F9037 -:102600000F900F900F90181619060CF041C02981F9 -:102610003A812634310508F048C0F901EA57F54FF0 -:102620008491F901E05CF54F1491F901E650F64F01 -:102630000491002391F081110E94835BE02FF0E070 -:10264000EE0FFF1FEE5EFC4FA591B491EC911E239F -:1026500081E090E021F480E002C080E090E09F9370 -:1026600067C0A1E0B0E0AC0FBD1FBF93AF9388EF90 -:1026700092E09F938F93FF93EF930E9479760F9050 -:102680000F900F900F900F900F901816190684F06E -:102690001F9281E08F938DE092E09F938F930E9431 -:1026A000723F0F900F900F900F9082E390E056C012 -:1026B00089819A8180319105C0F70E94075CCFCF54 -:1026C0008091610D8F938091600D8F9380915F0D4C -:1026D0008F9380915E0D8F9380915D0D8F9380918C -:1026E0005C0D15C080E090E00E94B24E182F092FBB -:1026F00081E090E00E94B24EF82EE92E82E090E058 -:102700000E94B24EEF92FF920F931F939F938F936D -:102710008CEF92E09F938F9388E29DE09F938F933D -:102720000E944B760FB6F894DEBF0FBECDBF11C02E -:102730008F9382EB93E09F938F9388E29DE09F932A -:102740008F930E944B760F900F900F900F900F90E9 -:102750000F9080E090E002C081E090E09C01215069 -:1027600031092230310510F00C942F1FC155DF4F75 -:10277000E881F981CF5AD040CF01A0E0B0E0CA553E -:10278000DF4F0880C65AD04004C0B695A7959795EC -:1027900087950A94D2F780FD3FCB81E090E0A0E0DE -:1027A000B0E0CA55DF4F0880C65AD04004C0880F39 -:1027B000991FAA1FBB1F0A94D2F7E82BF92BC1550A -:1027C000DF4FF983E883CF5AD0400C940C06672B77 -:1027D00011F00C94FB1EF8EE4F16F3E05F0641F08B -:1027E0002CE4421624E0520649F50E94DD4523C040 -:1027F000C756DF4F8881C959D040C754DF4FE881A1 -:10280000F981C95BD040E80FF11D80818635C9F49C -:10281000818180538230A8F49FB7813029F0F894E9 -:102820008091D914886004C0F8948091D914826092 -:102830008093D9149FBF80E090E005C081E090E0D4 -:1028400002C082E390E09C01215031092230310521 -:1028500010F00C942F1FC155DF4FE881F981CF5A3A -:10286000D040CF01A0E0B0E0CA55DF4F0880C65A83 -:10287000D04004C0B695A795979587950A94D2F74E -:1028800080FDCACA81E090E0A0E0B0E0CA55DF4F09 -:102890000880C65AD04004C0880F991FAA1FBB1FCA -:1028A0000A94D2F7E82BF92BC155DF4FF983E8835F -:1028B000CF5AD04095C0812F110F990BAA0BBB0B9B -:1028C000FC01E654F109E531F10510F00C94D41E39 -:1028D0008827EE58FF4F8F4F0C941876C0925315EF -:1028E000D0925415E0925515F0925615CA55DF4F07 -:1028F0001882C65AD040DAC0C0925715D0925815E7 -:10290000E0925915F0925A15C154DF4FF881CF5B10 -:10291000D040F160C154DF4FF883CF5BD04021E05D -:102920004FC0C0925B15D0925C15E0925D15F0929D -:102930005E15C154DF4F3881CF5BD0403260C15447 -:10294000DF4F3883CF5BD04082E05BC0C0925F1521 -:10295000D0926015E0926115F0926215C154DF4F7C -:102960009881CF5BD0409460C154DF4F9883CF5B98 -:10297000D040A3E060C0CB54DF4FB881C55BD040EE -:10298000B0936315E4E071C0C701B6010E94F07214 -:102990006093641570936515809366159093671521 -:1029A000F5E0CA55DF4FF883C65AD0407FC0C092C9 -:1029B0006815D0926915E0926A15F0926B1526E0C1 -:1029C000CA55DF4F2883C65AD04070C0C0926C15DC -:1029D000D0926D15E0926E15F0926F1537E061C0E0 -:1029E000CB56DF4F88819981AA81BB81C559D040E0 -:1029F0008093701590937115A0937215B093731511 -:102A000088E0CA55DF4F8883C65AD0404FC0C09275 -:102A10007515D0927615E0927715F0927815C65517 -:102A2000DF4F9881CA5AD0409160C655DF4F9883D6 -:102A3000CA5AD040AAE0CA55DF4FA883C65AD04030 -:102A400035C0C0927915D0927A15E0927B15F0923C -:102A50007C15C655DF4FB881CA5AD040B260C65502 -:102A6000DF4FB883CA5AD040EBE0CA55DF4FE88346 -:102A7000C65AD0401BC0C0927D15D0927E15E09200 -:102A80007F15F0928015C655DF4FF881CA5AD040A5 -:102A9000F460C655DF4FF883CA5AD0402CE090CF7F -:102AA00039E0CA55DF4F3883C65AD040CA55DF4F88 -:102AB0008881C65AD040082FCD54DF4FE881F98174 -:102AC000C35BD040CF01A0E0B0E0CA55DF4F088023 -:102AD000C65AD04004C0B695A795979587950A9495 -:102AE000D2F780FF02C00C94CC1E81E693E0A0E0F8 -:102AF000B0E0CA55DF4F0880C65AD04004C0B69532 -:102B0000A795979587950A94D2F780FF11C020E08A -:102B100030E0A901CB56DF4F688179818A819B81A2 -:102B2000C559D0400E94817287FF02C00C94CE1E0E -:102B300081E090E0A0E0B0E004C0880F991FAA1FD8 -:102B4000BB1F0A95D2F7CD54DF4F28813981C35B73 -:102B5000D040282B392BCD54DF4F39832883C35BDA -:102B6000D0400C940C06C655DF4F3881CA5AD0406D -:102B7000332369F0C255DF4F8881CE5AD04081118E -:102B800006C092E0C255DF4F9883CE5AD040CD5454 -:102B9000DF4FA881C35BD040A5FF0FC080916415B3 -:102BA00090916515A0916615B0916715803896498A -:102BB000A849B10514F00C94D01E80914A158130BB -:102BC00091F4C255DF4FF881CE5AD040F23009F06F -:102BD00040C0CD54DF4F2881C35BD04020FD02C0F0 -:102BE0000C94DA1E36C080918215811132C0CD540A -:102BF000DF4F3881C35BD04030FF1BC080914B1545 -:102C0000813039F523E333E34BEC51E46091531504 -:102C10007091541580915515909156150E94DA7453 -:102C200060935315709354158093551590935615D2 -:102C300010C080918F1590919015A0919115B09131 -:102C400092158093531590935415A0935515B093F6 -:102C50005615CD54DF4F88819981C35BD04090FDDC -:102C600010C080918B1590918C15A0918D15B0910D -:102C70008E158093701590937115A0937215B09373 -:102C80007315809148158130B9F4CD54DF4F988188 -:102C9000C35BD04096FD03C08CE10C942F1FCD5434 -:102CA000DF4FA881B981C35BD040AF7BCD54DF4FEC -:102CB000B983A883C35BD04080914D158823A1F0D0 -:102CC000813021F1CB54DF4F1882C55BD040F2E058 -:102CD000C754DF4FF883C95BD04021E0CA55DF4FAE -:102CE0002883C65AD04023C0B2E0CB54DF4FB8830C -:102CF000C55BD040E1E0C754DF4FE883C95BD040FB -:102D0000CA55DF4F1882C65AD04011C031E0CB54AB -:102D1000DF4F3883C55BD040C754DF4F1882C95B93 -:102D2000D04082E0CA55DF4F8883C65AD040809198 -:102D30004B15813049F0C255DF4F9881CE5AD040B3 -:102D4000933009F043C036C0B8E4EB2EB5E1FB2E5A -:102D500000E010E0C655DF4FA881CA5AD0408A2E45 -:102D6000912CA12CB12CD501C401002E04C0B69524 -:102D7000A795979587950A94D2F780FF12C023E311 -:102D800033E34BEC51E4F70165A576A587A590A93F -:102D90000E94DA74D7019D966D937D938D939C93D9 -:102DA000D0970F5F1F4FB4E0EB0EF11C03301105FD -:102DB000D1F6C1CF80914E15813041F4C655DF4F19 -:102DC000E881CA5AD040E43009F0ECC78CE0E4EA6C -:102DD000F5E1DE01119601900D928A95E1F7C1555A -:102DE000DF4F28813981CF5AD04031FD08C0109182 -:102DF00048151230C1F0183009F4EAC058C180916A -:102E00004F15873018F08DE10C942F1F9091871586 -:102E1000891769F3BE016F5F7F4F0E94373D88239A -:102E200009F4D4C7E4CFC655DF4F3881CA5AD04021 -:102E3000311103C08AE10C942F1FCD54DF4F8881DC -:102E40009981C35BD04080759927892B09F424CFE1 -:102E5000609168157091691580916A1590916B1554 -:102E60000E9488750E94F572673068F6809163153C -:102E7000843151F0823009F097C7CD54DF4F8881FB -:102E8000C35BD04087FD90C7CD54DF4FA881B98187 -:102E9000C35BD040AF7ACD54DF4FB983A883C35B07 -:102EA000D040662321F022242A94260E02C02090CE -:102EB0004F15BE016B5E7F4F822D0E94373D8823E8 -:102EC00009F484C7309063158090BC159090BD15AF -:102ED000A090BE15B090BF15A8E4CA2EA5E1DA2EC9 -:102EE0008E010B5E1F4FE1E8F5E1C155DF4FF9831D -:102EF000E883CF5AD040E12CF12CC655DF4FF88142 -:102F0000CA5AD0404F2E512C612C712CD301C201D2 -:102F10000E2C04C0B695A795979587950A94D2F77D -:102F200080FF3BC024E132122EC0C155DF4FA88183 -:102F3000B981CF5AD0409F962D913D914D915C9192 -:102F4000D29757966D917D918D919C915A970E9441 -:102F5000A771F60125A536A547A550A90E94A7711E -:102F6000D8016D937D938D939C931397B2E0EB12F0 -:102F700014C0A50194010E94A771F80160837183B8 -:102F8000828393830AC0F60185A596A5A7A5B0A95B -:102F9000F80180839183A283B383FFEFEF1AFF0AC6 -:102FA00024E0C20ED11C0C5F1F4FC155DF4F88813A -:102FB0009981CF5AD0400496C155DF4F99838883B9 -:102FC000CF5AD04093E0E916F10409F09FCF4CC1ED -:102FD000C655DF4FA881CA5AD040AA2309F42ACF88 -:102FE0008090BC159090BD15A090BE15B090BF15F7 -:102FF000F1E8CF2EF5E1DF2EFE0131961F0108E446 -:1030000015E1E12CF12C4A2E512C612C712CD301AD -:10301000C2010E2C04C0B695A795979587950A9482 -:10302000D2F780FF29C0D1012D913D914D915C9146 -:10303000F6016789708D818D928D0E94A771D801EC -:103040009D962D913D914D915C91D0970E94A771D5 -:10305000F80165A776A787A790ABF2E0EF1216C03C -:10306000A50194010E94A771D8019D966D937D934F -:103070008D939C93D0970AC0F60187A590A9A1A92A -:10308000B2A9F80185A796A7A7A7B0ABFFEFEF1AE3 -:10309000FF0A24E0C20ED11C34E0230E311C0C5F69 -:1030A0001F4F83E0E816F10409F0B1CFDCC0C25530 -:1030B000DF4F9881CE5AD040933009F49DC0C65559 -:1030C000DF4FA881CA5AD040AA2309F4C2C0009198 -:1030D0004C154090BC155090BD156090BE15709079 -:1030E000BF1571E8A72E75E1B72EE8E4EE2EE5E1F5 -:1030F000FE2EFE0131964F01C12CD12C8A2F90E07B -:10310000A0E0B0E0C155DF4F88839983AA83BB83D9 -:10311000CF5AD040C155DF4F88819981AA81BB81A8 -:10312000CF5AD0400C2C04C0B695A795979587959B -:103130000A94D2F780FD0BC0F5018789908DA18D8F -:10314000B28DF70185A796A7A7A7B0AB43C01730EC -:1031500009F440C001112BC0D5019F962D913D91DE -:103160004D915C91D297F40160817181828193814C -:103170000E94A871D7019D962D913D914D915C9132 -:10318000D0970E94A871F70165A776A787A790AB93 -:10319000F2E0CF121FC0A30192010E94A871D701D3 -:1031A0009D966D937D938D939C93D09713C0F5015D -:1031B0002789308D418D528DD7019D966D917D91DE -:1031C0008D919C91D0970E94A871F70165A776A771 -:1031D00087A790ABFFEFCF1ADF0A24E0A20EB11C45 -:1031E00034E0E30EF11C84E0880E911C93E0C916D4 -:1031F000D10409F08FCF29C61530A9F0173071F12D -:10320000133089F5C655DF4FA881CA5AD040A111A5 -:1032100005C0C255DF4F1882CE5AD040BE016B5E4A -:103220007F4F86E010C0C655DF4FB881CA5AD040E4 -:10323000B11105C0C255DF4F1882CE5AD040BE0131 -:103240006B5E7F4F87E00E94373D882309F4BEC53F -:103250000AC0153079F3173009F0F3C5809149158C -:10326000823008F0A3C5212C30904915E8E03E12C9 -:1032700011C0C655DF4FF881CA5AD040FF2309F468 -:1032800005C3C255DF4F2881CE5AD040213009F006 -:103290008FC511C3C255DF4F3881CE5AD04032306E -:1032A00009F0F4C2311009C0C655DF4F8881CA5AEF -:1032B000D040882309F4F1C2FEC220E030E0A90129 -:1032C0006091531570915415809155159091561534 -:1032D0000E948172882309F46DC593E0931538F03C -:1032E000A2E03A1690F4B1E03B1631F0E4C2E7E018 -:1032F000E31508F0BEC2DFC2C655DF4FF881CA5AD7 -:10330000D040FF2309F4C9C2D6C2C655DF4F288179 -:10331000CA5AD040222309F48DCDCA55DF4F988177 -:10332000C65AD040892F90E0C155DF4F99838883DA -:10333000CF5AD040C754DF4FB881C95BD040AB2FC4 -:10334000B0E0CD53DF4FB983A883C35CD04081E0A8 -:1033500090E0A0E0B0E06C017D01CA55DF4F08802D -:10336000C65AD04004C0CC0CDD1CEE1CFF1C0A94D5 -:10337000D2F7C754DF4F0880C95BD04004C0880F24 -:10338000991FAA1FBB1F0A94D2F7C82AD92AEA2A72 -:10339000FB2A822F90E0A0E0B0E08C219D21AE219D -:1033A000BF21892B8A2B8B2B09F406C5C155DF4F12 -:1033B00088819981CF5AD040880F991F880F991F13 -:1033C000FC01E85BFA4EDC01AF57BA4E57962D91DF -:1033D0003D914D915C915A9765A576A587A590A9D9 -:1033E0000E94A7714B015C01CD53DF4F8881998109 -:1033F000C35CD040880F991F880F991FFC01E85BC0 -:10340000FA4EDC01AF57BA4E57962D913D914D9132 -:103410005C915A9765A576A587A590A90E94A7718A -:10342000C655DF4F688379838A839B83CA5AD0400D -:10343000CD54DF4F08811981C35BD040007811273C -:10344000CD54DF4FE881C35BD040E7FF15C1CD54B9 -:10345000DF4F28813981C35BD0402F77CD54DF4FB8 -:1034600039832883C35BD0400E94C66B882311F048 -:1034700081E2F5C480914B158130B1F423E333E34D -:103480004BEC51E460916C1570916D1580916E1547 -:1034900090916F150E94DA7460936C1570936D159E -:1034A00080936E1590936F1540906C1550906D152C -:1034B00060906E1570906F15A5019401C501B4015F -:1034C0000E94DA74C154DF4F688379838A839B83B7 -:1034D000CF5BD040C655DF4F288139814A815B815F -:1034E000CA5AD040CA01B9010E94DA74C554DF4FEC -:1034F000688379838A839B83CB5BD04020E030E074 -:1035000040E850E4C301B2010E94DA74A3019201C1 -:103510000E94DA74C154DF4F288139814A815B816E -:10352000CF5BD0400E94A771C554DF4F28813981FD -:103530004A815B81CB5BD0400E94A7716B017C010B -:1035400020E030E0A9010E94817287FD37C4C701E5 -:10355000B6010E9447756B017C01C554DF4F28817D -:1035600039814A815B81CB5BD040C154DF4F688198 -:1035700079818A819B81CF5BD0400E94A8710E9493 -:1035800047759B01AC01C701B60190580E94887233 -:103590006B017C0133E0331204C0F7FAF094F7F8C2 -:1035A000F09420E030E0A901C301B2010E948172D1 -:1035B00087FF0FC0F7FAF094F7F8F094D301C20137 -:1035C000B05880936C1590936D15A0936E15B093C1 -:1035D0006F15C155DF4F08811981CF5AD040000FB8 -:1035E000111F000F111F045B1A4EC655DF4F2881B3 -:1035F00039814A815B81CA5AD040C701B6010E9415 -:10360000DA749B01AC01C501B4010E94A77120E0EE -:1036100030E040E05FE30E94DA74D8011B966D93BE -:103620007D938D939C931E97CD53DF4F0881198115 -:10363000C35CD040000F111F000F111F045B1A4E16 -:10364000A5019401C701B6010E94DA74C655DF4F87 -:10365000288139814A815B81CA5AD0400E94A87171 -:1036600020E030E040E05FE30E94DA74F801638715 -:103670007487858796871FC1C154DF4FF881CF5B60 -:10368000D0404F2E512C612C712CC420D520E62027 -:10369000F720CD28CE28CF2809F492C3CD54DF4F90 -:1036A00028813981C35BD040217FCD54DF4F3983DE -:1036B0002883C35BD04080914B15813009F491C0C1 -:1036C000C155DF4FE881F981CF5AD040EE0FFF1F7F -:1036D000EE0FFF1FE45BFA4EC384D484E584F684C6 -:1036E000A7019601C501B4010E94A7712B013C01FD -:1036F000CD53DF4FE881F981C35CD040EE0FFF1F4F -:10370000EE0FFF1FE45BFA4E83859485A585B68591 -:10371000C155DF4F88839983AA83BB83CF5AD0409A -:103720009C01AD01C655DF4F688179818A819B81FB -:10373000CA5AD0400E94A7714B015C01A3019201BB -:10374000C301B2010E94DA742B013C01A50194016E -:10375000C501B4010E94DA749B01AC01C301B2013E -:103760000E94A8710E9447754B015C01A701960158 -:10377000C701B6010E94DA746B017C01C155DF4FAD -:10378000288139814A815B81CF5AD040CA01B90171 -:103790000E94DA749B01AC01C701B6010E94A871B6 -:1037A0000E9447756B017C0160936C1570936D15D9 -:1037B00080936E1590936F159B01AC01C501B40108 -:1037C0000E94A7714B015C01E894B7F82AE037ED3D -:1037D00043EA5BE3C501B4010E949F74181664F1CB -:1037E0006AC088E4E82E85E1F82ED301C201002EDC -:1037F00004C0B695A795979587950A94D2F780FF50 -:1038000012C023E333E34BEC51E4D7011F966D91D3 -:103810007D918D919C9152970E94DA74F701678790 -:10382000708B818B928B0F5F1F4FF4E0EF0EF11CBA -:1038300003301105D1F644CF20E030E040E05FE3F3 -:10384000C501B4010E949F7418160CF411CE2FE626 -:1038500032E143E85AE3C701B6010E94DA749B01E2 -:10386000AC01C501B4010E949F7418160CF400CE7F -:1038700022C0C655DF4F2881CA5AD040222309F4FE -:10388000D9CA0E94C66B8111F3CD15C0C255DF4F56 -:103890003881CE5AD04031110EC0CD54DF4F8881CF -:1038A0009981C35BD0408E7D9C7FC255DF4F1882CB -:1038B000CE5AD04008C0CD54DF4F88819981C35B78 -:1038C000D0408E7D907E892B09F07CC2809164155A -:1038D00090916515A0916615B09167158093941528 -:1038E00090939515A0939615B093971580914A15CE -:1038F000809382158091531590915415A091551580 -:10390000B091561580938F1590939015A0939115B3 -:10391000B0939215C0907015D0907115E09072150B -:10392000F0907315A701960160918B1570918C151D -:1039300080918D1590918E150E9481728823F9F0E7 -:1039400010918A15112359F080912B15823039F08E -:103950000E94A96BB701A601812F0E94D23B8091E2 -:10396000701590917115A0917215B0917315809397 -:103970008B1590938C15A0938D15B0938E15809117 -:103980007415809393151091521580918A158117A3 -:10399000B9F080912B15823079F0C0908B15D090C2 -:1039A0008C15E0908D15F0908E150E94A96BB701D3 -:1039B000A601812F0E94D23B8091521580938A15D7 -:1039C0001091511580918915811781F080912B15E7 -:1039D000823041F00E94A96B123011F45C9A02C04F -:1039E0000E94CD5F80915115809389158091481573 -:1039F000813089F080914D158093851580914B150C -:103A000080938315C255DF4F8881CE5AD0408330D2 -:103A100009F074C054C080912B15823059F3809006 -:103A2000681590906915A0906A15B0906B1520E00C -:103A300030E040EA51E4C501B4010E94DA740E940A -:103A40005E730E94F5726B017C010E94A96B20E0FD -:103A500030E04AE754E4C501B4010E94DA744B0136 -:103A60005C0182E38C9DB0018D9D700D112480E07E -:103A700090E00E9421739B01AC01C501B4010E943A -:103A8000A7710E945E730E94F572CB010E941245DD -:103A900086010115110509F4ADCF0E94B53301501F -:103AA000110980912A158111A5CF9FEFA0E7B2E0FF -:103AB0009150A040B040E1F700C00000EACF8091F3 -:103AC0004E1580938615813089F480917D159091F3 -:103AD0007E15A0917F15B09180158093BC159093B1 -:103AE000BD15A093BE15B093BF1508C01092BC15AC -:103AF0001092BD151092BE151092BF1580914F15F2 -:103B000090918715981759F0809387158CE0FE01E6 -:103B10003196A4EAB5E101900D928A95E1F7809182 -:103B20004C1580938415E09148158E2F90E0FC0190 -:103B30003297E830F10508F060C08827E957FF4F59 -:103B40008F4F0C941876BE016B5E7F4F822D0E94C2 -:103B5000673080918715281250C08CE0FE01759661 -:103B6000A4EAB5E13EC0C255DF4FE881CE5AD0404D -:103B7000EE2371F020918F153091901540919115A1 -:103B80005091921500E065E775E181E00E940846DA -:103B900020918F153091901540919115509192156B -:103BA00000E0BE016B5E7F4F81E00E940846182F47 -:103BB0008CE0FE017596A8E9B5E101900D928A9519 -:103BC000E1F71CC068E975E186E003C068E975E1CA -:103BD00087E00E94673011C08CE0E5E7F5E1A0EBDB -:103BE000B5E101900D928A95E1F707C08CE0E0EB1A -:103BF000F5E1DF011D928A95E9F710E08091491502 -:103C000080938115883009F470C0C255DF4FB881A8 -:103C1000CE5AD040B23009F068C090E088309105AB -:103C200008F05AC0FC0140908F155090901560909C -:103C30009115709092158827E157FF4F8F4F0C9484 -:103C4000187600E0A301920165E775E180E007C006 -:103C500000918215A301920165E775E181E00E9460 -:103C60000846182F39C060916C1570916D158091C0 -:103C70006E1590916F158824839409C060916C151E -:103C800070916D1580916E1590916F15812CCB54AC -:103C9000DF4FA880C55BD040C754DF4FC880C95BE9 -:103CA000D040CA55DF4FE880C65AD04000918215F7 -:103CB000A30192010E949A6C0FC000E001C001E0D4 -:103CC00020E004C000E001C001E021E04091821545 -:103CD000C301B2010E94046C8CE0E5E7F5E1A8E9BC -:103CE000B5E101900D928A95E1F78091501580938E -:103CF0008815882309F468C00E94A96B90918815E3 -:103D000080912B15913069F48230E9F19FB7F894D6 -:103D10008091D91488608093D9149FBF0E94B533D5 -:103D200032C091E090938115109285151092841500 -:103D3000109282151092871510928A15109289158B -:103D40008230A9F0BE016F5F7F4F80E00E94373D57 -:103D50008823E1F18CE0FE013196A4EAB5E10190FF -:103D60000D928A95E1F70E94CB3B0E94CD5F86EDD4 -:103D700098E00E940B408AE798E00E940B4083E69F -:103D800098E00E940B40109288151EC081E067C029 -:103D900082E065C088E163C089E161C084E05FC002 -:103DA0008BE15DC085E25BC084E159C08EE157C004 -:103DB0008FE155C086E153C080E251C082E24FC01E -:103DC00083E24DC084E24BC0812F49C087E047C0E9 -:103DD000EEE14E16510411F40C948F0D70F42AE0AC -:103DE0004216510411F40C946B0D3CE1431651043E -:103DF00011F40C94780D87E132C085E34816510424 -:103E000011F40C94AF0D9CE549165104A1F721144F -:103E1000310439F0BAE02B16310431F689E00C9404 -:103E2000930D88E00C94930D3CE54316510411F07A -:103E30000C94EA0EA1E0C255DF4FA883CE5AD040C1 -:103E4000E6CF133009F00FCAE4C9153009F4F7C9F9 -:103E5000173009F403CA133009F005CADFC9C85383 -:103E6000DF4F0FB6F894DEBF0FBECDBFDF91CF910D -:103E70001F910F91FF90EF90DF90CF90BF90AF9088 -:103E80009F908F907F906F905F904F903F902F907A -:103E900008952F923F924F925F926F927F928F92EE -:103EA0009F92AF92BF92CF92DF92EF92FF920F93C9 -:103EB0001F93CF93DF93CDB7DEB7C459D1090FB6A7 -:103EC000F894DEBF0FBECDBFFB01873A28E0920712 -:103ED00009F480C208F046C08B34A8E09A0709F4C0 -:103EE00045C1F0F4833E27E0920709F4FFC060F477 -:103EF0008231910509F4FAC08C3C910509F493C014 -:103F0000419709F075C078C08934A8E09A0709F490 -:103F100012C108F018C18834984009F4C2C068C0C2 -:103F20008D3938E0930709F4E6C178F48A39B8E0AE -:103F30009B0709F488C18B3928E0920709F4BEC1B8 -:103F40008939984009F054C024C1823AA8E09A0700 -:103F500009F404C208F44CC0863A984010F40C945A -:103F60005F2946C0803C28E0920709F4AAC508F5FD -:103F7000873BA8E09A0709F453C570F48D3A28E00E -:103F8000920709F43AC38E3A38E0930709F443C420 -:103F90008C3A984069F524C2893BB8E09B0709F444 -:103FA0006EC508F45CC58A3B984011F40C945F29F7 -:103FB0001FC08A36A9E09A0709F44FC770F480360B -:103FC00029E0920709F40CC6813639E0930709F419 -:103FD000EDC6813C984061F49FC58C36B9E09B07E3 -:103FE00009F4B6C708F485C7843C994009F4F7C7BB -:103FF00081E090E00C9461298091181582FF08C03F -:104000008A9A809108018160809308015F9A07C0B5 -:104010008A98809108018E7F809308015F980E94A2 -:104020007A2D8FE00CC18E010F5F1F4F1F930F93EE -:1040300087EC93E09F938F93FF936F930E94797621 -:104040000F900F900F900F900F900F901816190669 -:104050000CF09DC71D8A1E8A1F8A188EAE014B5E0A -:104060005F4F60E070E0C8010E941D458823D1F1D8 -:104070004D895E896F89788D88E70E94353C4D892E -:104080005E896F89788D89E70E94353C4D895E890C -:104090006F89788D8AE70E94353C0E94623E0C94BD -:1040A0005F298E010F5F1F4F1F930F9382ED93E0E7 -:1040B0009F938F93FF936F930E9479760F900F9049 -:1040C0000F900F900F900F90181619060CF05FC705 -:1040D000AE014B5E5F4F60E070E0C8010E941D457D -:1040E000811108C082E390E00C9461290E94BF2CEA -:1040F0000C945F2920E030E04AE754E46D897E8922 -:104100008F89988D0E94DA740E94F0721616170635 -:1041100094F47093190D6093180D11E010931A0D1B -:104120008091170D81110C945F290E94FB2B109335 -:10413000170D0C945F2910921A0D1092190D109200 -:10414000180D0C945F298081863561F6818180533A -:10415000823040F61092980D813021F01092970D28 -:104160000C945F298093970D0C945F29808186358C -:1041700009F0B8CF81818053823008F0B3CF81300D -:1041800021F010929D0D0C945F2980939D0D0C944D -:104190005F2980818E3409F0A5CF918190539430AE -:1041A00008F0A0CF923079F1933009F443C0209108 -:1041B00018158091940D913099F022FF08C08A9AC9 -:1041C000909108019160909308015F9A07C08A98C6 -:1041D000909108019E7F909308015F9884602FC0A2 -:1041E00022FF08C08A9A909108019160909308017B -:1041F0005F9A07C08A98909108019E7F909308016A -:104200005F9881601CC08091181582FF08C08A9A4F -:10421000809108018160809308015F9A07C08A98A5 -:10422000809108018E7F809308015F988091940DA2 -:10423000826005C00E947A2D8091940D88608093E1 -:10424000940D0C945E2980818E3409F04BCF9181BE -:104250009053943008F046CF9230B1F0933029F16A -:10426000209118158091940D913039F022FF02C0F1 -:104270005F9801C05F9A8B7F1DC022FF02C08A98A1 -:1042800001C08A9A8E7F16C08091181582FF04C0E3 -:10429000809108018E7F03C0809108018160809326 -:1042A00008018091940D8D7F05C00E94B12C8091F2 -:1042B000940D877F8093940D0C945F2980818E34B8 -:1042C00009F010CF81818053843008F00BCF90919A -:1042D000940D823051F0833059F0813019F090FF05 -:1042E00098C394C391FD92C394C392FD8FC391C3AD -:1042F00093FF8FC38BC38E010F5F1F4F1F930F93CD -:104300008BED93E09F938F93FF936F930E94797649 -:104310000F900F900F900F900F900F901816190696 -:104320000CF035C68CE0F801ABE1BDE001900D92D8 -:104330008A95E1F70BE11DE08AEE93E0D8016D91DB -:104340008D017C01BFEFEB1AFB0A0E94265FC701BB -:10435000E6EFEE16E3E0FE0689F7B1C71AA619A646 -:104360001D8A1E8A1F8A188E8E010F5F1F4F8AE0DA -:10437000D8011D928A95E9F7CE0189969F938F9374 -:104380001F930F9386EE93E09F938F93FF936F930A -:104390000E9479760FB6F894DEBF0FBECDBF0297AC -:1043A0000CF4F5C5AE014B5E5F4F60E070E0C801F4 -:1043B0000E941D45882309F495CE2D893E894F8999 -:1043C000588D69A57AA5072E000C880B990B0E94C1 -:1043D000162C75C78FEF0E94583D0E94722B6FC735 -:1043E0002E0125E6420E511C84E1D201282F1D9298 -:1043F0002A95E9F73E0131E5630E711CD301282FA0 -:104400001D922A95E9F78E01035C1F4FD8011D927A -:104410008A95E9F7C357DF4F188219821A821B82E7 -:10442000CD58D040C757DF4F188219821A821B829D -:10443000C958D040CB57DF4F188219821A821B828D -:10444000C558D0401F930F937F926F925F924F9207 -:1044500082EF93E09F938F93FF936F930E947976FF -:104460000FB6F894DEBF0FBECDBF03970CF48FC517 -:10447000AE0143575F4F60E070E0C2010E941D45EE -:10448000882309F42FCEAE0147575F4F60E070E0FC -:10449000C3010E941D45882309F424CEAE014B5769 -:1044A0005F4F60E070E0C8010E941D45882309F459 -:1044B00019CECF57DF4F188219821A821B82C1583A -:1044C000D040C358DF4F188219821A821B82CD5701 -:1044D000D040ED961CAE1DAE1EAE1FAEED9784E132 -:1044E0003E01F9E26F0E711CD301E82F1D92EA958F -:1044F000E9F72E01F5E14F0E511CD201E82F1D9274 -:10450000EA95E9F79E012F5F3F4F1901D9011D92EE -:104510008A95E9F7AE014B575F4FBE0167577F4F52 -:10452000CE0183579F4F0E94BC2FCB57DF4FE880AF -:10453000F9800A811B81C558D040C757DF4F2881B9 -:1045400039814A815B81C958D040C357DF4F6881A8 -:1045500079818A819B81CD58D040FE01EF57FF4F72 -:104560004F01DE01A758BF4F5D0134976F010E94D4 -:10457000C24A20E030E044EB52E4CF57DF4F68817D -:1045800079818A819B81C158D0400E94A871CF5700 -:10459000DF4F688379838A839B83C158D040C35897 -:1045A000DF4F688179818A819B81CD57D04082011C -:1045B00024E045E00E942C6FED966CAD7DAD8EAD94 -:1045C0009FADED97810124E045E00E942C6FCF570D -:1045D000DF4F688179818A819B81C158D0408301F6 -:1045E00024E045E00E942C6F3F922F925F924F9201 -:1045F0007F926F928CEA92E000C12E0135E6430E65 -:10460000511C84E1D201282F1D922A95E9F73E0121 -:1046100031E5630E711CD301282F1D922A95E9F70D -:104620008E01035C1F4FD8011D928A95E9F7C3578D -:10463000DF4F188219821A821B82CD58D040C7578B -:10464000DF4F188219821A821B82C958D040CB577B -:10465000DF4F188219821A821B82C558D0401F93DF -:104660000F937F926F925F924F9281E194E09F93BC -:104670008F93FF936F930E9479760FB6F894DEBF05 -:104680000FBECDBF03970CF482C4AE0143575F4FFA -:1046900060E070E0C2010E941D45882309F422CD2C -:1046A000AE0147575F4F60E070E0C3010E941D45B7 -:1046B000882309F417CDAE014B575F4F60E070E0DF -:1046C000C8010E941D45882309F40CCDCF57DF4F48 -:1046D000188219821A821B82C158D040C358DF4FFA -:1046E000188219821A821B82CD57D040ED961CAEDB -:1046F0001DAE1EAE1FAEED9784E13E01F9E26F0ED6 -:10470000711CD301E82F1D92EA95E9F72E01F5E11E -:104710004F0E511CD201E82F1D92EA95E9F79E0138 -:104720002F5F3F4F1901D9011D928A95E9F720E0CB -:1047300030E044EB52E4C357DF4F688179818A81CE -:104740009B81CD58D0400E94A7717B018C01C3573B -:10475000DF4F688379838A839B83CD58D040CB57C2 -:10476000DF4F288139814A815B81C558D040C757C6 -:10477000DF4F688179818A819B81C958D040FE01D1 -:10478000E758FF4F4F01DE01A358BF4F5D01389638 -:104790006F010E94784CA401B501C6010E94194A1C -:1047A000CF57DF4F688179818A819B81C158D04082 -:1047B000830124E045E00E942C6FC358DF4F6881DD -:1047C00079818A819B81CD57D040820124E045E0E8 -:1047D0000E942C6FED966CAD7DAD8EAD9FADED97CB -:1047E000810124E045E00E942C6F3F922F925F925E -:1047F0004F927F926F928CED92E09F938F9388E21D -:104800009DE09F938F930E944B760FB6F894DEBF86 -:104810000FBECDBF54C5CF57DF4F188219821A8201 -:104820001B82C158D040C358DF4F188219821A82A8 -:104830001B82CD57D040ED961CAE1DAE1EAE1FAEF6 -:10484000ED9784E12E0139E2430E511CD201282F4D -:104850001D922A95E9F73E0135E1630E711CD301E3 -:10486000282F1D922A95E9F7DE0111967D011D92F0 -:104870008A95E9F78E010B571F4F8FEF90E0D80113 -:104880008D939C931F930F93FF92EF927F926F9261 -:104890005F924F9280E394E09F938F93FF936F9387 -:1048A0000E9479760FB6F894DEBF0FBECDBF049795 -:1048B0000CF46DC3AE014F575F4F60E070E0C20172 -:1048C0000E941D45882309F40DCCAE0143585F4F6B -:1048D00060E070E0C3010E941D45882309F402CC0A -:1048E000AE0147585F4F60E070E0C7010E941D4570 -:1048F000882309F4F7CBD8018D919C91009709F496 -:1049000043C0019709F0EECBCF57DF4F4880598065 -:104910006A807B80C158D04020E030E044EB52E414 -:10492000C358DF4F688179818A819B81CD57D04000 -:104930000E94A77121EE3EE245E652E40E94887291 -:104940006B017C010E9485729B01AC01C301B20125 -:104950000E94DA74CF57DF4F688379838A839B8301 -:10496000C158D040C701B6010E943D759B01AC0102 -:10497000C301B2010E94DA74C358DF4F68837983A0 -:104980008A839B83CD57D040AE0147585F4FBE010D -:1049900063587F4FCE018F579F4F0E94BC2FED96DB -:1049A000ECACFDAC0EAD1FADED97C358DF4F2881C9 -:1049B00039814A815B81CD57D040CF57DF4F688125 -:1049C00079818A819B81C158D040FE01FD964F01BB -:1049D000DE01AF5ABF4F5D01B8966F010E94C24A17 -:1049E0002196ECACFDAC0EAD1FAD219765962CADBC -:1049F0003DAD4EAD5FAD6597A9966CAD7DAD8EAD0D -:104A00009FADA9970E94EE4D882319F066ED73E0E3 -:104A100002C062EC73E088E29DE00E9444764FC4DD -:104A20008081863509F05ECB81818053823008F029 -:104A300059CB813049F080915A0D90915B0D0197CF -:104A400009F03DC4BBD53BC49C9A9D9AA49AA598F5 -:104A500081E090E090935B0D80935A0D30C480818B -:104A6000863509F03FCB81818053823008F03ACB04 -:104A7000813011F034D623C43F9A479820C48081F6 -:104A8000863509F02FCB81818053823008F02ACB04 -:104A9000813011F013D613C480910101806280939C -:104AA00001018091010180648093010180910201E4 -:104AB00080628093020180910201806480930201F0 -:104AC000FEC3CE0101969F938F9344969F938F933D -:104AD00082E594E09F938F93FF936F930E94797682 -:104AE0000FB6F894DEBF0FBECDBF02970CF44FC2D5 -:104AF0008D899E898634910508F0F4CA29813A810E -:104B00002230310508F0EECA232B11F061E001C01C -:104B100060E00E94D95BD3C3CE0101969F938F932F -:104B200044969F938F9382E594E09F938F93FF9396 -:104B30006F930E9479760FB6F894DEBF0FBECDBF9B -:104B400002970CF424C28D899E898634910508F061 -:104B5000C9CA29813A812230310508F0C3CAFC0153 -:104B6000E05CF54F8650964F232BD1F02491FC0149 -:104B70008491882309F4A3C390E0880F991FFC0156 -:104B8000E455F84FA591B491FC01E052F64F8591A0 -:104B900094918FB7F894EC91E22BEC938FBF8FC375 -:104BA0002491FC018491882309F489C390E0880F43 -:104BB000991FFC01E455F84F45915491FC01E052D6 -:104BC000F64FA591B4919FB7F894FA018081209592 -:104BD000822380838C91E22FE823EC939FBF6FC3E5 -:104BE0008081833509F07ECA8181E0EDE80FE830ED -:104BF00008F078CA8E2F90E0FC013197E730F1057C -:104C000030F48827E956FF4F8F4F0C941876A9D6B9 -:104C10001092630D1092620D8AE999E1A5E9B2E460 -:104C20008093680D9093690DA0936A0DB0936B0DFE -:104C30008AE999E9A2E6B2E4B0C093D681E090E0B7 -:104C40009093630D8093620D86EF98E2ACE4B2E43A -:104C50008093680D9093690DA0936A0DB0936B0DCE -:104C60008DEC9CECA0E8B2E498C07BD682E090E0AA -:104C70009093630D8093620D89E29CEDA4E9B2E408 -:104C80008093680D9093690DA0936A0DB0936B0D9E -:104C900080E090E0A2E6B2E480C063D683E090E0DA -:104CA0009093630D8093620D80E090E0ACE2B2E4FB -:104CB0008093680D9093690DA0936A0DB0936B0D6E -:104CC00080E090E0ABE8B2E468C04BD684E090E0CE -:104CD0009093630D8093620D80E090E0ACE1B2E4CC -:104CE0008093680D9093690DA0936A0DB0936B0D3E -:104CF00080E090E0A9E9B2E417C033D685E090E007 -:104D00009093630D8093620D8DEC9CECA2E9B2E46C -:104D10008093680D9093690DA0936A0DB0936B0D0D -:104D200080E090E0A8E9B2E48093640D9093650D73 -:104D3000A093660DB093670DE7D5D9C012D686E073 -:104D400090E09093630D8093620D86E696E6AAE963 -:104D5000B2E48093680D9093690DA0936A0DB093AF -:104D60006B0D80E090E0AAE5B2E417C0FAD587E0C9 -:104D700090E09093630D8093620D85E89BEEABEC21 -:104D8000B1E48093680D9093690DA0936A0DB09380 -:104D90006B0D80E090E0A2E3B2E48093640D909309 -:104DA000650DA093660DB093670DA1C080E090E003 -:104DB0000E94B24E90935F0D80935E0D81E090E073 -:104DC0000E94B24E9093610D8093600D82E090E05E -:104DD0000E94B24E90935D0D80935C0D0CE51DE03A -:104DE00084E393E0D8016D918D017C01BFEFEB1A54 -:104DF000FB0A0E94265FC701EAE3EE16E3E0FE0627 -:104E000089F76BEB82E393E00E94265F0E94884E55 -:104E100080E090E00E94044F6093700D7093710DDC -:104E20008093720D9093730D81E090E00E94044F87 -:104E30006093740D7093750D8093760D9093770D3C -:104E400082E090E00E94044F6093780D7093790D9A -:104E500080937A0D90937B0D32C2609136157091DC -:104E6000371580913815909139150E9423732B01C5 -:104E70003C016091321570913315809134159091F9 -:104E800035150E942373CF56DF4F688379838A8359 -:104E90009B83C159D04060912E1570912F15809140 -:104EA0003015909131150E9423739E012F5F3F4F63 -:104EB0004901DE0155965D01FE01B9966F0183013E -:104EC0007201CF56DF4F288139814A815B81C159F8 -:104ED000D0400E945D4D89819A81AB81BC818093D5 -:104EE000680D9093690DA0936A0DB0936B0D44D437 -:104EF000E6C11D8A1E8A1F8A188E8E010F5F1F4F02 -:104F000084E1D8011D928A95E9F71F930F9389E5F3 -:104F100094E09F938F93FF936F930E9479760F9005 -:104F20000F900F900F900F900F90181619067CF5A8 -:104F3000AE014B5E5F4F60E070E0C8010E941D450E -:104F4000882309F4CFC88D899E89AF89B88D25CF74 -:104F50001D8A1E8A1F8A188E8E010F5F1F4F84E1E3 -:104F6000D8011D928A95E9F71F930F9384E694E088 -:104F70009F938F93FF936F930E9479760F900F907A -:104F80000F900F900F900F901816190674F01F9243 -:104F900081E08F938DE092E09F938F930E94723F08 -:104FA0000F900F900F900F909DC8AE014B5E5F4F1A -:104FB00060E070E0C8010E941D45882309F492C892 -:104FC0008D899E89AF89B88D80936C0D90936D0DFE -:104FD000A0936E0DB0936F0DCFD396D470C1899806 -:104FE00068E9662E6EE0762E830182E090E00E94F2 -:104FF000B24EF801819391938F0150E9E52EFF2481 -:10500000F394889A6AE070E080E090E00E94D444D3 -:1050100088986CE271E080E090E00E94D444F1E076 -:10502000EF1AF10871F788EE93E00E9412452FE025 -:1050300000361207D1F682E090E00E94B24E9093C3 -:10504000610F8093600F899A00E21EE4889A6AE0FB -:1050500070E080E090E00E94D44488986CE271E0B7 -:1050600080E090E00E94D4440150110979F78F98B4 -:105070004EE0E42EF12C00E911E08E9A6AE070E037 -:1050800080E090E00E94D4448E986CE271E080E071 -:1050900090E00E94D4440150110979F731E0E31AFD -:1050A000F10849F788EE93E00E9412458F9A38E1A3 -:1050B000232E3EE0332E210100E010E080E090E05E -:1050C0000E94B24ED2018D939D932D0120E9E22ED4 -:1050D000FF24F3948E9A6AE070E080E090E00E94F2 -:1050E000D4448E9864EF71E080E090E00E94D44454 -:1050F000B1E0EB1AF10871F70E301105A9F088EE56 -:1051000093E00E9412450F5F1F4F0F331105B1F658 -:1051100080E090E00E94B24E9093970E8093960E9E -:105120008F9800E51DE223C080910B018D7F809355 -:105130000B01E12C92E3F92E80910B0188608093A2 -:105140000B016AE070E080E090E00E94D44480911E -:105150000B01877F80930B016CE271E080E090E0AF -:105160000E94D444E1E0EE1AF10831F7C8CF8E9ADC -:105170006AE070E080E090E00E94D4448E986CE297 -:1051800071E080E090E00E94D4440150110979F769 -:1051900088EE93E00E94124580910B01826080931B -:1051A0000B0100E913E380910B01886080930B01F0 -:1051B0006AE070E080E090E00E94D44480910B01AE -:1051C000877F80930B016CE271E080E090E00E94A9 -:1051D000D4440150110939F788EE93E00E9412453A -:1051E00080910B018D7F80930B010EE91DE028015A -:1051F00081E090E00E94B24ED2018D939D932D01EB -:1052000080E9E82EFF24F39480910B01886080935D -:105210000B016AE070E080E090E00E94D44480914D -:105220000B01877F80930B016CE271E080E090E0DE -:105230000E94D444B1E0EB1AF10831F788EE93E014 -:105240000E941245E6E14E16EEE05E0689F681E028 -:1052500090E00E94B24E9093170E8093160E81E05C -:1052600090E0D3016D913D012C01BFEF4B1A5B0A19 -:105270000E94265FC2018B3C910599F7F101619173 -:105280001F013201FFEF6F1A7F0AC2010E94265FE1 -:1052900023012BE4621621E0720681F7D8016D919B -:1052A0008D017301BFEFEB1AFB0AC3010E94265F59 -:1052B0003701E5ECEE16E1E0FE0681F78AD180E0E9 -:1052C00090E0CC56DF4F0FB6F894DEBF0FBECDBFD7 -:1052D000DF91CF911F910F91FF90EF90DF90CF90D2 -:1052E000BF90AF909F908F907F906F905F904F9006 -:1052F0003F902F90089520916A0F30916B0F2115E8 -:105300003105B9F080917A0F90917B0F8217930746 -:1053100034F4019690937B0F80937A0F0AC0109219 -:105320007B0F10927A0F10926B0F10926A0F1092EF -:10533000950D2091180D3091190D21153105A1F011 -:105340008091780F9091790F8217930734F401962A -:105350009093790F8093780F07C01092790F109275 -:10536000780F81E08093960D8091950D81111BC07F -:1053700080911A0D811117C0809173008E7F8093E8 -:1053800073001092170D10926B0F10926A0F10920B -:10539000190D1092180D10927B0F10927A0F109227 -:1053A000790F1092780F08958091770F811107C0BF -:1053B00081E08093770F80910B01806205C010928D -:1053C000770F80910B018F7D80930B018091750F7A -:1053D0009091760F9C012F5F3F4F3093760F209373 -:1053E000750F20910402309105022817390760F4E7 -:1053F0001092760F1092750F809170008E7F8093BF -:10540000700081E080939B0D08952091620D309192 -:10541000630D2430310529F426E636E646E65FE3DF -:1054200007C02530310539F526E636E646EE5FE35E -:105430000E94887220E030E040E852E40E94DA7472 -:105440000E94F0726093620F7093630F8093640FF9 -:105450009093650F89E49AE29093D3148093D214C9 -:105460001092A00085E08093A1008DEF9FEF9093B4 -:10547000D5148093D4148091D4149091D514909322 -:10548000A5008093A40080917200816080937200D7 -:1054900008958091620F9091630FA091640FB09175 -:1054A000650F181619061A061B06F4F42091740FDE -:1054B000222389F01092740F0197A109B1098093FA -:1054C000620F9093630FA093640FB093650F809168 -:1054D0000201806406C081E08093740F8091020114 -:1054E0008F7B8093020108950E94905C1092620F5E -:1054F0001092630F1092640F1092650F81E08093F9 -:105500009A0D0895CF93DF93EB018431D1F028F405 -:10551000882361F08C30A8F437C08233E9F018F4A6 -:10552000873190F10EC0833311F10BC0888188233D -:1055300029F06FE674E0CE010E94397661E774E0ED -:1055400020C08881882329F06FE674E0CE010E9494 -:10555000397664E774E015C08881882329F06FE606 -:1055600074E0CE010E94397668E774E00AC0888151 -:10557000882329F06FE674E0CE010E9439766CE74B -:1055800074E0CE010E9439768091280D882379F04D -:1055900068E27DE0CE010E94397682E3E8E2FDE038 -:1055A000DF011D928A95E9F7DF91CF91089569E7B0 -:1055B00073E0CE01DF91CF910C9439769C9A9D9A3D -:1055C000A498A59A82E090E090935B0D80935A0D89 -:1055D00008958F929F92AF92BF92CF92DF92EF92F7 -:1055E000FF920F931F93CF93DF930AE215E18EE1B1 -:1055F000F80111928A95E9F70E9426400E94205FE7 -:1056000080E090E00E94044FC2E6DDE06E877F8775 -:10561000888B998B81E090E00E94044F6A8B7B8B92 -:105620008C8B9D8B82E090E00E94044F6E8B7F8B71 -:10563000888F998FF801C480D580E680F780CA8E64 -:10564000DB8EEC8EFD8EC084D184E284F384CE8E1A -:10565000DF8EE8A2F9A204851585268537850AA381 -:105660001BA32CA33DA320E030E044EB52E40E94B6 -:10567000A7717B018C012A893B894C895D896E85E4 -:105680007F8588899989E0E98E2EEDE09E2EFCE8E1 -:10569000AF2EFDE0BF2EA8E8CA2EADE0DA2E0E94A4 -:1056A000784CDF91CF911F910F91FF90EF90DF9099 -:1056B000CF90BF90AF909F908F900895E1E0F1E080 -:1056C000808180628083808180648083E2E0F1E079 -:1056D00080818F7D808380818F7B808308953F9A36 -:1056E000479A0895809104018778809304018091FE -:1056F00003018877803451F440E050E060E87FE3B4 -:1057000084E00E94353C60E874E02AC08091030187 -:10571000887791F440E050E060E87FE384E00E9405 -:10572000353C67E874E08CE69FE00E94447640E0F8 -:1057300050E060EE70E41BC080910301887740E088 -:1057400050E060E87FE3803231F484E00E94353C31 -:105750006EE874E005C084E00E94353C65E974E0C1 -:105760008CE69FE00E94447640E050E0BA0183E07E -:105770000E94353C0C94623E0F931F93CF93DF93AE -:105780006091620D84E893E00E94265F6091630D52 -:1057900085E893E00E94265FC4E6DDE088E993E0B7 -:1057A00069918C010F5F1F4F0E94265FC8010C3961 -:1057B0001340B1F7C8E6DDE08EE893E069918C0113 -:1057C0000F5F1F4F0E94265FC80102391340B1F7D7 -:1057D000CCE6DDE082E89CE069918C010F5F1F4F11 -:1057E0000E94265FC80106381C40B1F7DF91CF91B7 -:1057F0001F910F910895EBE7F4E18BE799E2918314 -:1058000080831092200185E08093210181EF9FEF3A -:1058100093838283828193819093250180932401D5 -:10582000E3E7F0E08081816080830895CF92DF928A -:10583000EF92FF920F931F93CF93DF9369017A0149 -:1058400010929B0DEAE0F1E0208120622083EBE0E2 -:10585000F1E020812F7D2083660F771F7093050272 -:105860006093040204E714E184ED99E2F801918366 -:105870008083C0E7D0E088818E7F8883E0EBF0E012 -:1058800080818C7F8083E1EBF0E08081877F808363 -:10589000A6EBB0E08C918F7D8C9388818D7F88837F -:1058A00080818460808380818C7F808320E034E2EB -:1058B00044EF59E4C701B6010E94887220E034E247 -:1058C00044E75BE40E94DA7420E030E040E85CE307 -:1058D0000E94DA740E94F07220E031E0C901861B58 -:1058E000970BF80193838283828193818093B20026 -:1058F000888181608883DF91CF911F910F91FF9004 -:10590000EF90DF90CF900895CF93C1E0C0939A0DB0 -:105910008091620D9091630D0497029700F51092AB -:105920009A0D1092660F1092670F1092680F1092E6 -:10593000690F809107018F7D809307018091080195 -:10594000806280930801809102018062809302014D -:1059500060E070E084EB93E458DDC093990DCF9143 -:1059600008951092620F1092630F1092640F1092BC -:10597000650F0E94905C1092990D0C94905C809140 -:10598000181582FF08C08A98809108018E7F809345 -:1059900008015F9807C08A9A80910801816080930E -:1059A00008015F9ADEDF1092940D08958F929F9206 -:1059B000AF92BF92CF92DF92EF92FF926B017C0188 -:1059C00020E030E044EB53E40E949F7418160CF47E -:1059D00088C020E030E0A901C701B6010E948172B1 -:1059E00087FD7FC08091620D9091630D04970297AF -:1059F000B8F52091660F3091670F4091680F509174 -:105A0000690FC701B6010E94A7714B015C0120E03C -:105A100030E0A9010E948172882309F462C0C0921B -:105A2000660FD092670FE092680FF092690F20E046 -:105A300030E0A901C501B4010E949F74181624F436 -:105A4000809102018F7D03C080910201806280936A -:105A50000201C501B4019F77D8DC10929A0D41C0B4 -:105A600020E030E044E353E4C701B6010E949F7494 -:105A700018161CF4C12CD12C7601A701960160E008 -:105A800070E084E393E40E94A77120E030E044E3F7 -:105A900053E40E9488729B01AC010E94A87120E02F -:105AA00030E040E05FE30E94A871609300027093D1 -:105AB0000102809302029093030220E030E040EA6A -:105AC00051E40E94887220E030EC4FE754E40E94D9 -:105AD000DA740E94F572CB010E94425B81E08093F0 -:105AE0009A0DFF90EF90DF90CF90BF90AF909F9076 -:105AF0008F9008958091620D9091630D04970297A5 -:105B000080F4809101018062809301018091010104 -:105B10008064809301018091020180628093020180 -:105B2000089580E18093A1001092A00082E080930C -:105B3000D81480E29EE49093D7148093D614909367 -:105B4000A7008093A60082E18093A10020E030E0CE -:105B500040EA51E4609100027091010280910202DA -:105B6000909103020E94887220E030EC4FE754E4E9 -:105B70000E94DA740E94F572CB010C94425BCF93C1 -:105B8000DF93D82FC8E05E98559AD7FF02C05D9A80 -:105B900001C05D9865E070E080E090E00E94D44430 -:105BA0005E9A65E070E080E090E00E94D4445E98E8 -:105BB000DD0F65E070E080E090E00E94D444C150C9 -:105BC00011F762E070E080E090E00E94D444559AC2 -:105BD0005D9A62E070E080E090E0DF91CF910C94FC -:105BE000D4445E98559A5D9865E070E080E090E05E -:105BF0000E94D4445E9A65E070E080E090E00E94EC -:105C0000D444559A5D9A65E070E080E090E00C9491 -:105C1000D444CF93559A5D9A62E070E080E090E0C2 -:105C20000E94D4445E9A62E070E080E090E00E94BE -:105C3000D44455988BEF99B1C92FC07295FF05C018 -:105C40008150C9F7CEDFC1E007C05E9862E070E026 -:105C500080E090E00E94D4448C2FCF910895559A13 -:105C60005D9A5E9A65E070E080E090E00E94D44426 -:105C7000559A5D9865E070E080E090E00E94D44421 -:105C80005E9862E070E080E090E00C94D444CF93A2 -:105C9000DF93D82FC8E0809102018F7780930201B3 -:105CA0008091010184608093010180910201D7FFFE -:105CB00002C0846001C08B7F8093020165E070E0C8 -:105CC00080E090E00E94D44480910201806880933B -:105CD000020165E070E080E090E00E94D444809191 -:105CE00002018F7780930201DD0F65E070E080E0B4 -:105CF00090E00E94D444C15071F662E070E080E010 -:105D000090E00E94D444809101018460809301015D -:105D10008091020184608093020162E070E080E083 -:105D200090E0DF91CF910C94D4440F931F93CF93C5 -:105D3000DF93C2E0D1E088818F77888301E011E0B2 -:105D4000F80180818460808388818B7F888365E00F -:105D500070E080E090E00E94D4448881806888836D -:105D600065E070E080E090E00E94D444F80180811A -:105D70008460808388818460888365E070E080E04F -:105D800090E0DF91CF911F910F910C94D444CF9369 -:105D900080910101846080930101809102018460FF -:105DA0008093020162E070E080E090E00E94D444C1 -:105DB0008091020180688093020162E070E080E0DF -:105DC00090E00E94D444809101018B7F8093010177 -:105DD0008BEF90910001C92FC47092FF05C08150D4 -:105DE000C1F7A3DFC1E00BC0809102018F778093E0 -:105DF000020162E070E080E090E00E94D4448C2FC9 -:105E0000CF9108950F931F93CF93DF9301E011E09B -:105E1000F801808184608083C2E0D1E08881846061 -:105E2000888388818068888365E070E080E090E006 -:105E30000E94D444F80180818460808388818B7FB4 -:105E4000888365E070E080E090E00E94D44488811F -:105E50008F77888362E070E080E090E0DF91CF91FF -:105E60001F910F910C94D444CF93DF93D82FC8E0A7 -:105E70004398399AD7FF02C0419A01C0419865E022 -:105E800070E080E090E00E94D444439A65E070E0C6 -:105E900080E090E00E94D4444398DD0F65E070E01C -:105EA00080E090E00E94D444C15011F762E070E0BD -:105EB00080E090E00E94D444399A419A62E070E018 -:105EC00080E090E0DF91CF910C94D4444398399ACC -:105ED000419865E070E080E090E00E94D444439AED -:105EE00065E070E080E090E00E94D444399A419AE5 -:105EF00065E070E080E090E00C94D444CF93399A50 -:105F0000419A62E070E080E090E00E94D444439ABD -:105F100062E070E080E090E00E94D44439988BEF1A -:105F200096B1C92FC27091FF05C08150C9F7CEDF6D -:105F3000C1E007C0439862E070E080E090E00E941A -:105F4000D4448C2FCF910895399A419A439A65E0B1 -:105F500070E080E090E00E94D444399A419865E076 -:105F600070E080E090E00E94D444439862E070E0EA -:105F700080E090E00C94D4444F925F926F927F92B5 -:105F8000AF92BF92CF92DF92EF92FF920F931F9347 -:105F9000CF93DF935C01EB018A01FC0140805180CB -:105FA0006280738020E030E0A901C301B2010E9449 -:105FB000817220E030E0A901811111C068817981EE -:105FC0008A819B810E949F741816E4F02AEDC22EEC -:105FD0002FE0D22E29ECE22E2FEBF22E22C0C301AD -:105FE000B2010E94817287FD16C0A30192016881EF -:105FF00079818A819B810E9488720E9446726B011E -:106000007C010FC09AEDC92E9FE0D92E99ECE92EA4 -:106010009FE3F92E06C0C12CD12C80ECE82E8FE72F -:10602000F82EC701B6010E9485722091640D30914F -:10603000650D4091660D5091670D0E94DA749B01C9 -:10604000AC01C301B2010E94A771F50160837183A5 -:1060500082839383C701B6010E943D752091640D30 -:106060003091650D4091660D5091670D0E94DA7474 -:106070009B01AC01688179818A819B810E94A77113 -:10608000688379838A839B832091680D3091690DA1 -:1060900040916A0D50916B0DF80160817181828190 -:1060A00093810E94A871F801608371838283938336 -:1060B000DF91CF911F910F91FF90EF90DF90CF90E4 -:1060C000BF90AF907F906F905F904F9008952DE0BC -:1060D000829FC00111244CE050E0965F0C94485F11 -:1060E0001F920F920FB60F9211240BB60F922F939F -:1060F0003F934F935F936F937F938F939F93AF9350 -:10610000BF93EF93FF938091360123E030E030930B -:106110008110209380108F33A9F050F4883109F159 -:10612000813211F59FB7F8948091D914886015C019 -:10613000803471F08E37C1F49FB7F8948091D914F0 -:1061400082600BC09FB7F8948091D914816005C01C -:106150009FB7F8948091D91480628093D9149FBF1F -:1061600014C00E94DD4511C0E091FD0F91E09E0F2B -:10617000903809F490E02091FC0F921731F0F0E094 -:10618000E458F04F80839093FD0FFF91EF91BF9102 -:10619000AF919F918F917F916F915F914F913F91BF -:1061A0002F910F900BBE0F900FBE0F901F90189560 -:1061B0001F920F920FB60F9211240BB60F922F93CE -:1061C0003F934F935F936F937F938F939F93AF937F -:1061D000BF93EF93FF938091D60022E030E030939D -:1061E0008110209380108F33A9F050F4883109F189 -:1061F000813211F59FB7F8948091D914886015C049 -:10620000803471F08E37C1F49FB7F8948091D9141F -:1062100082600BC09FB7F8948091D914816005C04B -:106220009FB7F8948091D91480628093D9149FBF4E -:1062300014C00E94DD4511C0E091FD0F91E09E0F5A -:10624000903809F490E02091FC0F921731F0F0E0C3 -:10625000E458F04F80839093FD0FFF91EF91BF9131 -:10626000AF919F918F917F916F915F914F913F91EE -:106270002F910F900BBE0F900FBE0F901F9018958F -:106280001F920F920FB60F9211240BB60F922F93FD -:106290003F934F935F936F937F938F939F93AF93AE -:1062A000BF93EF93FF938091CE0021E030E03093D5 -:1062B0008110209380108F33A9F050F4883109F1B8 -:1062C000813211F59FB7F8948091D914886015C078 -:1062D000803471F08E37C1F49FB7F8948091D9144F -:1062E00082600BC09FB7F8948091D914816005C07B -:1062F0009FB7F8948091D91480628093D9149FBF7E -:1063000014C00E94DD4511C0E091FD0F91E09E0F89 -:10631000903809F490E02091FC0F921731F0F0E0F2 -:10632000E458F04F80839093FD0FFF91EF91BF9160 -:10633000AF919F918F917F916F915F914F913F911D -:106340002F910F900BBE0F900FBE0F901F901895BE -:106350001F920F920FB60F9211240BB60F922F932C -:106360003F934F935F936F937F938F939F93AF93DD -:10637000BF93EF93FF938091C6001092811010920B -:1063800080108F33A9F050F4883109F1813211F572 -:106390009FB7F8948091D914886015C0803471F04B -:1063A0008E37C1F49FB7F8948091D91482600BC0E6 -:1063B0009FB7F8948091D914816005C09FB7F89475 -:1063C0008091D91480628093D9149FBF14C00E9419 -:1063D000DD4511C0E091FD0F91E09E0F903809F46A -:1063E00090E02091FC0F921731F0F0E0E458F04F6C -:1063F00080839093FD0FFF91EF91BF91AF919F919B -:106400008F917F916F915F914F913F912F910F905D -:106410000BBE0F900FBE0F901F9018951F920F92FA -:106420000FB60F9211240BB60F928F939F93EF9399 -:10643000FF9380917F10E82FF0E0E150F04F9081C2 -:10644000909336018F5F803809F480E080937F104D -:106450009091FE0F891305C0809131018F7D80934B -:106460003101FF91EF919F918F910F900BBE0F9093 -:106470000FBE0F901F9018951F920F920FB60F929C -:1064800011240BB60F928F939F93EF93FF938091FC -:106490007F10E82FF0E0E150F04F90819093D6000C -:1064A0008F5F803809F480E080937F109091FE0F19 -:1064B000891305C08091D1008F7D8093D100FF9119 -:1064C000EF919F918F910F900BBE0F900FBE0F9089 -:1064D0001F9018951F920F920FB60F9211240BB6B2 -:1064E0000F928F939F93EF93FF9380917F10E82FEC -:1064F000F0E0E150F04F90819093CE008F5F8038B4 -:1065000009F480E080937F109091FE0F891305C0FD -:106510008091C9008F7D8093C900FF91EF919F9179 -:106520008F910F900BBE0F900FBE0F901F9018957C -:106530001F920F920FB60F9211240BB60F928F93EA -:106540009F93EF93FF9380917F10E82FF0E0E1504D -:10655000F04F90819093C6008F5F803809F480E0FF -:1065600080937F109091FE0F891305C08091C10028 -:106570008F7D8093C100FF91EF919F918F910F903C -:106580000BBE0F900FBE0F901F901895E091FE0F5D -:1065900091E09E0F903831F490E004C02091D9141E -:1065A00024FD2FC020917F102917C1F3F0E0E150A6 -:1065B000F04F80839093FE0F809180109091811016 -:1065C0008130910569F030F08230910579F00397C0 -:1065D00099F008958091C10080628093C100089570 -:1065E0008091C90080628093C90008958091D10094 -:1065F00080628093D1000895809131018062809300 -:1066000031010895CF93C82F83ED99E00E940B408C -:10661000C830B9F190F4C43059F148F4C23001F1F6 -:1066200020F5C13009F042C08BEB99E01BC0C630A9 -:1066300011F120F58CE799E015C0C43171F140F4F7 -:10664000CA3029F108F1CB3089F58CE994E02BC0F0 -:10665000C63131F1F8F0C23349F586EA94E023C03F -:1066600089EA99E00E940B4028C087E999E0FACFB7 -:106670008DE899E0F7CF8DE699E0F4CF8CE499E0CE -:10668000F1CF83E499E0EECF88E399E0EBCF85E2A8 -:1066900099E0E8CF8FE099E0E5CF81EA94E003C08C -:1066A0008BEF98E0DFCF0E941A4007C089EE98E098 -:1066B0000E940B408C2F0E94FD3F86EE98E0CF9108 -:1066C0000C940B408F929F92AF92BF92EF92FF92E9 -:1066D0000F931F93CF9380EE98E00E940B408AE3C4 -:1066E000E82E85E1F82E0BED14E1C0E0F701619191 -:1066F0007191819191917F01F80181909190A19088 -:10670000B1908F010E942373A50194010E948872A9 -:106710000E94B23FC23021F08EED98E00E940B4003 -:10672000CF5FC33019F78CED98E00E940B40809149 -:1067300046150E94FD3F88ED98E0CF911F910F9183 -:10674000FF90EF90BF90AF909F908F900C940B4074 -:1067500080912C15811108C09FB7F8948091D914AD -:1067600082608093D9149FBF0895AF92BF92CF9259 -:10677000DF92EF92FF920F931F93CF93DF93CDB7EA -:10678000DEB768970FB6F894DEBF0FBECDBF10918D -:106790002915112309F45CC081E080932B1511FFAA -:1067A00007C089E098E00E940B408EEF97E023C07D -:1067B00012FF07C089E098E00E940B4083EF97E04A -:1067C0001AC013FF07C089E098E00E940B4080EEDA -:1067D00097E011C014FF07C089E098E00E940B40C9 -:1067E00085ED97E008C015FF10C089E098E00E9491 -:1067F0000B4089EC97E00E940B4086EC97E00E94EA -:106800000B4084EF91E00E94124510FD08C08FB745 -:10681000F89490912915109229158FBF19C086ED13 -:1068200098E00E940B4084EC98E00E940B4083E6C5 -:1068300098E00E940B409FB7F8948091D9148F7E06 -:106840008093D9149FBF8091D91484FFFCCFDFCFF0 -:106850001091D914112309F4BDC114FF04C081E0C3 -:1068600080932A15C8C110FFEBC08CE0EEE2F5E181 -:10687000DE011D9601900D928A95E1F780912B150E -:106880008430E9F040F48130E9F080F0823009F59D -:106890008EE398E01CC0803179F018F4883049F01C -:1068A00018C0803291F0803421F013C08DE598E05B -:1068B0000EC088E598E00BC082E598E008C08CE443 -:1068C00098E005C085E498E002C088E398E00E9463 -:1068D0000B4080910F15837039F0BE01635F7F4FCD -:1068E000CE0101960E94E54F80910F1580FD05C0F5 -:1068F00080910F1581FF66C01AC081E398E00E9465 -:106900000B40CE0101967C0100E0F701619171918D -:10691000819191917F010E94B23F023021F08FE27C -:1069200098E00E940B400F5F033079F7E1CF88E2D7 -:1069300098E00E940B4084EAC82E85E1D82ECE0153 -:1069400001967C0100E05701F601619171918191FE -:1069500091916F0120853185428553850E94A871F0 -:106960009B01AC01F70160817181828193810E945A -:10697000A771F7016083718382839383023079F476 -:106980002091BC153091BD154091BE155091BF1599 -:106990000E94A771F7016083718382839383F4E07F -:1069A000EF0EF11CF50160817181828193810E945B -:1069B000B23F023021F086E298E00E940B400F5F68 -:1069C000033009F680910F1582FF0EC080E298E037 -:1069D0000E940B408091CA139091C913891708F443 -:1069E0008E5E891B0E94FD3F80910F1583FF0EC0B4 -:1069F0008BE198E00E940B409091FC0F8091FD0F7D -:106A0000891708F48058891B0E94FD3F80910F155B -:106A100084FF0AC085E198E00E940B400E94175D48 -:106A200043E062E00E94C03F81E198E00E940B4099 -:106A30009FB7F8948091D9148E7F8093D9149FBF0B -:106A4000812F887609F44AC080912B15882351F054 -:106A5000982F9C77D9F1883029F40E94505081E01A -:106A600080932C1580912B15811103C092E0909397 -:106A70002C1516FF0AC0883019F480E480932B157A -:106A800080912C15886080932C1513FF07C080918E -:106A90002B1585FD03C080E180932B1515FF16C0D3 -:106AA00086ED98E00E940B4082E898E00E940B403F -:106AB00083E698E00E940B4080912C1581FD1460C4 -:106AC000846080932C1580E280932B159FB7F894F7 -:106AD0008091D91487798093D9149FBF11FF57C033 -:106AE000812F887609F04BC080912B15882339F0CF -:106AF000807509F444C080912C1581FF40C08091BD -:106B00002C1582FF1FC080918A15882369F040915F -:106B10008B1550918C1560918D1570918E1542D604 -:106B200080EA9FE00E94124580918915882351F0E8 -:106B3000823011F45C9A02C00E94CD5F88EE93E02F -:106B40000E9412458091C9139091CA13981799F029 -:106B5000F9E28F9FC001112489519F4E892B59F072 -:106B600080912C1583FD07C088E080932B150E942F -:106B7000725078D302C010922B1510922C159FB72B -:106B8000F8948091D9148D7F8093D9149FBF12FF00 -:106B900021C080912B15807389F080912D15811172 -:106BA0000DC080912C1582FF03C0F5D50E94CD5FEA -:106BB00080912C15826080932C1504C010922C15A6 -:106BC00010922B159FB7F8948091D9148B7F8093E6 -:106BD000D9149FBF80912B158C7711F00E947250B1 -:106BE00080912B15803239F480912C1581FF03C0E0 -:106BF00080E180932B1568960FB6F894DEBF0FBE28 -:106C0000CDBFDF91CF911F910F91FF90EF90DF905B -:106C1000CF90BF90AF90089569E080E090E00E942F -:106C2000265F4DE450E06BED74E181E098E00C9458 -:106C3000485FCF92DF92EF92FF920F931F93909154 -:106C40000C15092F10E020E030E080910D15482F41 -:106C500050E060E070E09170817068017901F69415 -:106C6000E794D794C794C0FC92606A017B01F694C4 -:106C7000E794D794C794C0FC8260E2E036952795EC -:106C800017950795EA95D1F700FD946022E0769577 -:106C90006795579547952A95D1F740FD8460909365 -:106CA000C1108093C0101F910F91FF90EF90DF9063 -:106CB000CF9008951F920F920FB60F9211240BB62A -:106CC0000F922F933F938F939F93EF93FF9321B353 -:106CD0003091C110832F817090E036E0880F991FAA -:106CE0003A95E1F7922F9F7B892B81BBEBE0F1E096 -:106CF00090818091C1108270880F880F977F892BB7 -:106D0000808381B39091C11092FB992790F98E7F77 -:106D1000892B81BB15BCFF91EF919F918F913F9182 -:106D20002F910F900BBE0F900FBE0F901F901895D4 -:106D300080916F008D7F80936F0080918100887FAC -:106D40008160809381001092C21080910E158F3F58 -:106D500021F490912915992349F090912B159430A5 -:106D600029F090E00E94124581E001C080E09091FE -:106D7000181592FF02C091E08927882341F08A9A72 -:106D8000809108018160809308015F9A08958A9834 -:106D9000809108018E7F809308015F9808951F926B -:106DA0000F920FB60F9211240BB60F922F933F93B1 -:106DB0004F935F936F937F938F939F93AF93BF9303 -:106DC000EF93FF938091C210811139C28091D2104C -:106DD00080FD8F9A80FF8F9890910B01482F427011 -:106DE0009D7F942B90930B0141B3847090E0959517 -:106DF0008795942F9D7F892B81BB91B38091D11072 -:106E0000282F217030E066E0220F331F6A95E1F7EA -:106E10009F7B292B21BB90910B01282F2270220FE1 -:106E2000220F977F922B90930B0121B382FB99271E -:106E300090F9822F8E7F892B81BB8091D01086BDE7 -:106E400082E085BD81E08093C21078948091E41047 -:106E50009091E510892B09F0ACC08091CB139091F3 -:106E6000F013981709F49BC0E091CB132E2F30E05C -:106E700086E0E89FF0011124E453FC4EF093E51006 -:106E8000E093E4108381948190938900809388003B -:106E9000808191819093E0108093DF10E281809156 -:106EA000E1108E1761F1E093E11081E1E89FF001BC -:106EB0001124EF50FC4EF093E310E093E21085852F -:106EC0009685A785B089B695A79597958795809360 -:106ED000CB109093CC10A093CD10B093CE10809394 -:106EE000C7109093C810A093C910B093CA10809394 -:106EF000C3109093C410A093C510B093C610E09136 -:106F0000E210F091E31090818091C0108927809366 -:106F1000D21086E0829FD001839FB00D1124A4532C -:106F2000BC4E15962C9181819281A381B481022E51 -:106F300004C0B695A795979587950A94D2F7809344 -:106F4000D3109093D410A093D510B093D610858110 -:106F50009681A781B085022E04C0B695A795979516 -:106F600087950A94D2F78093D7109093D810A09366 -:106F7000D910B093DA1081859285A385B48504C0B9 -:106F8000B695A795979587952A95D2F78093DB10AC -:106F90009093DC10A093DD10B093DE100AC0C8DE21 -:106FA0009FB7F8948091D91484608093D9149FBFBF -:106FB00046C18091DA148130B1F489B18071909129 -:106FC0002815891781F01092DA148CE0EEE2F5E1D1 -:106FD000AAE3B5E101900D928A95E1F78091D91469 -:106FE00080648093D9141092D1104091C3105091B5 -:106FF000C4106091C5107091C6108091D31090910B -:10700000D410A091D510B091D610840F951FA61F53 -:10701000B71F8093C3109093C410A093C510B09372 -:10702000C610E091E210F091E31045855685678522 -:107030007089481759076A077B0768F521E0209394 -:10704000D1104585568567857089841B950BA60BE5 -:10705000B70B8093C3109093C410A093C510B09346 -:10706000C610208180912E1590912F15A09130157A -:10707000B091311520FF04C00197A109B10903C0E7 -:107080000196A11DB11D80932E1590932F15A093ED -:107090003015B09331154091C7105091C8106091D0 -:1070A000C9107091CA108091D7109091D810A091FA -:1070B000D910B091DA10840F951FA61FB71F8093C7 -:1070C000C7109093C810A093C910B093CA104585FB -:1070D000568567857089481759076A077B0778F5D1 -:1070E0002091D11022602093D11045855685678567 -:1070F0007089841B950BA60BB70B8093C7109093D8 -:10710000C810A093C910B093CA1020818091321585 -:1071100090913315A0913415B091351521FF04C01D -:107120000197A109B10903C00196A11DB11D80936A -:10713000321590933315A0933415B09335154091C3 -:10714000CB105091CC106091CD107091CE108091E9 -:10715000DB109091DC10A091DD10B091DE10840F57 -:10716000951FA61FB71F8093CB109093CC10A093B0 -:10717000CD10B093CE104585568567857089481728 -:1071800059076A077B0778F52091D1102460209376 -:10719000D1104585568567857089841B950BA60B94 -:1071A000B70B8093CB109093CC10A093CD10B093DD -:1071B000CE1020818091361590913715A091381509 -:1071C000B091391522FF04C00197A109B10903C08C -:1071D0000196A11DB11D8093361590933715A0938C -:1071E0003815B093391580912B15843039F490916E -:1071F000D1108091471589238093D1108091DF10A1 -:107200009091E01001979093E0108093DF10892B0C -:1072100069F41092E5101092E4108091CB138F5F07 -:107220008093CB13863011F41092CB139091D11030 -:107230008091C11089278093D1101092C210FF91C4 -:10724000EF91BF91AF919F918F917F916F915F91DE -:107250004F913F912F910F900BBE0F900FBE0F904B -:107260001F9018958091181582FF08C08A9A809106 -:1072700008018160809308015F9A07C08A98809115 -:1072800008018E7F809308015F9880912B158C7088 -:10729000A1F08091C0108093D2108091C110809392 -:1072A000D11080910B15880F845081958093D01058 -:1072B00080916F00826080936F0008951F920F92FB -:1072C0000FB60F9211240BB60F92CF92DF92EF926E -:1072D000FF920F931F932F933F934F935F936F935F -:1072E0007F938F939F93AF93BF93EF93FF9380917F -:1072F000841090918510009721F0019709F435C111 -:1073000031C28091861090918710A0918810B09121 -:107310008910AC01BD0141505109610971094093C7 -:107320008610509387106093881070938910892B72 -:107330008A2B8B2B59F0809102018064809302018B -:10734000809102018F7B809302010FC0E0919F101A -:10735000F091A010309709F01995809172008D7FFF -:107360008093720081E080939E10809182109091B2 -:1073700083108130910509F4B4C020F0029709F41C -:10738000D3C0E4C1C0908610D0908710E0908810E0 -:10739000F090891060918A1070918B1080918C1000 -:1073A00090918D1022E030E040E050E00E94FC75AA -:1073B000C216D306E406F5060CF4AFC080919A100D -:1073C00090919B10A0919C10B0919D100196A11DD1 -:1073D000B11D80939A1090939B10A0939C10B09332 -:1073E0009D10C0909210D0909310E0909410F09067 -:1073F00095108091921090919310A0919410B0915B -:10740000951000919A1010919B1020919C10309132 -:107410009D10BC01CD01660F771F881F991F52E098 -:10742000000F111F221F331F5A95D1F7A901980190 -:107430002F5F3F4F4F4F5F4F0E94FC75C21AD30A18 -:10744000E40AF50AC0929210D0929310E092941040 -:10745000F092951040919210509193106091941079 -:10746000709195108091961090919710A09198101E -:10747000B0919910481759076A077B070CF066C14D -:107480008091861090918710A0918810B0918910FA -:1074900040918A1050918B1060918C1070918D10DA -:1074A000880F991FAA1FBB1F841B950BA60BB70B38 -:1074B00080938E1090938F10A0939010B0939110A2 -:1074C0008091961090919710A0919810B09199107A -:1074D0008093921090939310A0939410B093951072 -:1074E000C6C080918E1090918F10A0919010B09195 -:1074F0009110AC01BD0141505109610971094093DE -:107500008E1050938F1060939010709391101816F6 -:1075100019061A061B060CF419C182E090E090933C -:1075200083108093821012C18091861090918710F1 -:10753000A0918810B0918910892B8A2B8B2B09F48C -:1075400005C180919A1090919B10A0919C10B091D0 -:107550009D100197A109B10980939A1090939B10F7 -:10756000A0939C10B0939D10A0C0809102018064F4 -:1075700080930201809102018F7B809302018091B0 -:10758000821090918310009721F0029709F472C045 -:10759000DDC04091921050919310609194107091C1 -:1075A00095108091961090919710A0919810B0919D -:1075B000991084179507A607B7070CF04DC0809166 -:1075C0009A1090919B10A0919C10B0919D100196E3 -:1075D000A11DB11D80939A1090939B10A0939C10B5 -:1075E000B0939D10C0909210D0909310E0909410A2 -:1075F000F09095108091921090919310A09194101A -:10760000B091951000919A1010919B1020919C10B0 -:1076100030919D10BC01CD01660F771F881F991F07 -:10762000F2E0000F111F221F331FFA95D1F7A901B5 -:1076300098012F5F3F4F4F4F5F4F0E94FC75C21A5A -:10764000D30AE40AF50AC0929210D0929310E09205 -:107650009410F09295107AC0E091A110F091A210D0 -:10766000309729F019951092A2101092A11081E084 -:1076700090E055CF80919A1090919B10A0919C1012 -:10768000B0919D10AC01BD014150510961097109D2 -:1076900040939A1050939B1060939C1070939D1090 -:1076A000892B8A2B8B2B09F441C060919210709129 -:1076B0009310809194109091951000919A101091D0 -:1076C0009B1020919C1030919D10C0909A10D090EA -:1076D0009B10E0909C10F0909D1042E0000F111F55 -:1076E000221F331F4A95D1F7A90198012F5F3F4F01 -:1076F0004F4F5F4F0E94AB759701860152E0000F1C -:10770000111F221F331F5A95D1F7A901980121504B -:107710003109410951090E94FC7520939210309360 -:107720009310409394105093951010C08091720064 -:107730008D7F80937200E091A110F091A21030979C -:1077400029F019951092A2101092A1108091921018 -:1077500090919310A0919410B09195109093A900DE -:107760008093A800FF91EF91BF91AF919F918F916E -:107770007F916F915F914F913F912F911F910F9149 -:10778000FF90EF90DF90CF900F900BBE0F900FBE49 -:107790000F901F901895E0EAF0E080818F7D808344 -:1077A0005C980895CF92DF92EF92FF926A017B017D -:1077B000811105C0FF90EF90DF90CF90ECCF81302A -:1077C00011F45C9801C05C9A83E28093A0008091E0 -:1077D000A100807E8A618093A1008FEF9FEF90933C -:1077E000A9008093A80020E030E0A901C701B601FC -:1077F0000E9481721816F4F620E030E0A901C7015A -:10780000B6010E94817287FD11C020E030E04AE796 -:1078100054E4C701B6010E949F74181654F4C12C99 -:10782000D12C8AE7E82E84E4F82E03C0C12CD12C99 -:1078300076012CEE31E143E852E4C701B6010E9423 -:10784000DA7420E030E040E05FE30E94A8710E941B -:107850005E730E94F5727093AB006093AA005C9A0D -:10786000FF90EF90DF90CF900895CF92DF92EF924C -:10787000FF92CF93DF93C82F6A017B0120E030E0B5 -:10788000A901C701B6010E94817287FDE2C0C4361A -:1078900008F441C08CE98C0F20E0833098F590E02B -:1078A000880F991F880F991F223079F0FC0123302F -:1078B00011F1213019F0E552FB4E02C0E951FB4EA7 -:1078C000C082D182E282F382C1C0EC01CD50DB4E96 -:1078D00020E030E040E752E4C701B6010E94DA74CC -:1078E00020E030E040E752E40E94DA746883798354 -:1078F0008A839B83ABC0E150FB4EF7FAF094F7F814 -:10790000F094DECF2F5F8A3008F4A5C0243009F44C -:10791000A2C08A50C2CFC701B6010E9488750E94DA -:10792000F5728C2F90E08C31910508F094C0FC0129 -:107930008827E256FF4F8F4F0C941876633008F477 -:107940008CC060930B1582C060930E157FC060934E -:107950000C1502C060930D156CD978C08091181574 -:10796000662311F084604CC08B7F4AC0809118154B -:10797000662311F0806444C08F7B42C0809118154B -:10798000662311F080683CC08F773AC060930F1572 -:107990005DC0C0921015D0921115E0921215F092B0 -:1079A000131554C0C0921415D0921515E0921615F7 -:1079B000F09217154BC080911815662311F0816065 -:1079C0001FC08E7F1DC080911815662321F084FF93 -:1079D00046C0806215C08F7D13C080911815662344 -:1079E00011F0886001C0877F809318150E940E5F98 -:1079F0002DC080911815662311F0806101C08F7C25 -:107A00008093181523C06093191520C0C0921A15D1 -:107A1000D0921B15E0921C15F0921D1517C0C09254 -:107A20001E15D0921F15E0922015F09221150EC060 -:107A300070E0709323156093221508C0C09224153E -:107A4000D0922515E0922615F0922715E5D880E012 -:107A500007C084E005C083E003C086E001C08AE07F -:107A6000DF91CF91FF90EF90DF90CF9008951F931B -:107A7000CF93DF93182FEB018DE0189FB0011124F5 -:107A8000765F4CE050E0CE010E948B5F892B59F469 -:107A90008CE0FE0111928A95E9F7BE01812F0E94C8 -:107AA000673080E001C081E0DF91CF911F910895A0 -:107AB000EF92FF920F931F93CF93DF93CDB7DEB773 -:107AC0002C970FB6F894DEBF0FBECDBF182F80FFE6 -:107AD000C7C08AE080930B158FEF80930E1510922C -:107AE0000C1587E080930D1583E080930F158AE0D5 -:107AF00097EDA3E2BCE38093101590931115A0932A -:107B00001215B09313158FE692E1A3E0BBE38093C7 -:107B1000141590931515A0931615B0931715109280 -:107B2000191580E090E0A8ECB1E480931A159093C9 -:107B30001B15A0931C15B0931D1580E090E0AAEFD3 -:107B4000B3E480931E1590931F15A0932015B09356 -:107B500021158AEF90E0909323158093221580E001 -:107B600090E0A0E8BFE38093241590932515A0939F -:107B70002615B093271584E08093181580E090E0D7 -:107B8000A8ECB5E48093DB149093DC14A093DD148F -:107B9000B093DE148093DF149093E014A093E1146B -:107BA000B093E2148093E3149093E414A093E5144B -:107BB000B093E61480E090E5A3ECB7E48093E7147B -:107BC0009093E814A093E914B093EA148093EB1413 -:107BD0009093EC14A093ED14B093EE148093EF14F3 -:107BE0009093F014A093F114B093F21480E090EA13 -:107BF000ACE0B7E48093F3149093F414A093F514DD -:107C0000B093F6148093F7149093F814A093F9149A -:107C1000B093FA148093FB149093FC14A093FD147A -:107C2000B093FE1480E090E4ACE1B6EC8093FF14D6 -:107C300090930015A0930115B0930215809303153E -:107C400090930415A0930515B0930615809307151E -:107C500090930815A0930915B0930A150E940C364D -:107C600011FF10C0CE0101967C018CE0F70111924A -:107C70008A95E9F700E0B701802F0E9467300F5F17 -:107C80000830C9F712FF0AC060E080E09BE00E9464 -:107C9000265F60E081E59BE00E94265F13FF05C040 -:107CA00060E08EEA9BE00E94265F2C960FB6F89467 -:107CB000DEBF0FBECDBFDF91CF911F910F91FF901F -:107CC000EF9008951F93CF93DF93CDB7DEB72C9736 -:107CD0000FB6F894DEBF0FBECDBF80E090E00E94EB -:107CE000835F893009F053C04DE450E061E078E0F3 -:107CF0008BED94E10E948B5F892B09F448C020E052 -:107D000030E048EC55E46091DB147091DC14809114 -:107D1000DD149091DE140E948172811138C020E040 -:107D200030E048EC55E46091DF147091E0148091EC -:107D3000E1149091E2140E948172811128C020E028 -:107D400030E048EC55E46091E3147091E4148091C4 -:107D5000E5149091E6140E948172811118C010E020 -:107D6000BE016F5F7F4F812F82DE811103C087E0EC -:107D70000E9402331F5F183099F72C960FB6F894C3 -:107D8000DEBF0FBECDBFDF91CF911F9108958FEF62 -:107D90008FDEE5CF8F929F92AF92BF92CF92DF920C -:107DA000EF92FF920F931F93CF93DF93CDB7DEB780 -:107DB0002A970FB6F894DEBF0FBECDBF6B017C01D2 -:107DC000042F20E030E0A9010E94817287FF07C0E4 -:107DD0008DE20E94C632F7FAF094F7F8F094102F73 -:107DE000123060F020E030E048EC52E4C701B60108 -:107DF0000E94DA746B017C011250F2CF00FF0AC0BE -:107E000020E030E040E251E4C701B6010E94DA749C -:107E10006B017C0120E030E040E05FE3C701B60188 -:107E20000E94A8710E94F072E1E0F0E0EC0FFD1FEB -:107E3000E00FF11D2EE2208310E03AE0832E912C1A -:107E4000A12CB12C6115710581059105A9F01013C4 -:107E500001C01F5FEE24E394F12CEC0EFD1EE10E39 -:107E6000F11CA50194010E94DA75605DF701608341 -:107E7000B901CA011F5FE6CF80E3101748F4E1E0C3 -:107E8000F0E0EC0FFD1FE10FF11D80831F5FF5CFC8 -:107E900010130BC081E0810FE1E0F0E0EC0FFD1F5B -:107EA000E80FF11D1E5F80E38083112341F0FE0186 -:107EB000E10FF11D80810E94C6321150F6CF2A9643 -:107EC0000FB6F894DEBF0FBECDBFDF91CF911F91EB -:107ED0000F91FF90EF90DF90CF90BF90AF909F9069 -:107EE0008F9008951F93CF93DF93CDB7DEB7C0581F -:107EF000D1090FB6F894DEBF0FBECDBFAE01495712 -:107F00005F4FFA0161917191AF01CE0101960E941C -:107F10009A7610E0E1E0F0E0EC0FFD1FE10FF11DBB -:107F20008081882321F00E94C6321F5FF3CFC058A2 -:107F3000DF4F0FB6F894DEBF0FBECDBFDF91CF91FC -:107F40001F91089543E026CF2091181520FF08C007 -:107F50002BE832E441E25DE30E94DA7441E001C0C3 -:107F600040E018CF2091181520FF08C02BE832E41C -:107F700041E25DE30E94DA7444E001C043E00ACFCD -:107F8000CF92DF92EF92FF921F93CF93DF93CDB703 -:107F9000DEB7362F142FCDB6DEB64DB75EB7411B18 -:107FA00051090FB6F8945EBF0FBE4DBF4F5F5F4FD4 -:107FB0007A01242FFA019E2F921B911728F4632F28 -:107FC0000E94BA759193F7CF112351F0F701E10F99 -:107FD000F11D31978081805D0E94C6321150F4CF2F -:107FE0000FB6F894DEBE0FBECDBEDF91CF911F91CC -:107FF000FF90EF90DF90CF9008958A3020F0843684 -:1080000020F043E003C041E001C042E06AE0B8CFA5 -:1080100048E062E0B5CFCF93DF93FC018491EF019C -:108020002196882321F00E94C632FE01F7CFDF910E -:10803000CF910895CF93DF93EC018991882319F0B4 -:108040000E94C632FACFDF91CF910895AEE2B5E13A -:10805000E4EAF0E14D915D916D917D9141935193F1 -:108060006193719380E1E03BF807A1F708958CE1FB -:10807000E4EAF0E1DF011D928A95E9F71092C91355 -:108080001092CA1381E08093A3101092E610089515 -:108090002F923F924F925F926F927F928F929F9218 -:1080A000AF92BF92CF92DF92EF92FF920F931F9306 -:1080B000CF93DF93C091CA13C11101C0C2E1C15077 -:1080C000D091E610DC1709F41DC1EC2EF12C29E249 -:1080D000C29F8001112409511F4EF801A588B6885E -:1080E000C788D08C61A172A183A194A19B01AC012E -:1080F0000E94A871F80125A136A147A150A50E94B0 -:10810000DA744B018C019B01AC01B501C6010E94E0 -:10811000817287FD02C05401680189E28E9DF001E1 -:108120008F9DF00D1124E951FF4EC501D601818BC1 -:10813000928BA38BB48BC11101C0C2E1C150DC177B -:1081400061F029E22E9DC0012F9D900D11249C010C -:1081500029513F4E7901D9E233C08091C913D81318 -:1081600060C00E9450505DC0AC2EB12CDA9DC001A1 -:10817000DB9D900D1124FC01E951FF4E6F01C111EF -:1081800001C0C2E1C1508091C9138C1302C00E948A -:108190005050DA9D8001DB9D100D112409511F4EB6 -:1081A000F80185889688A788B08CA501940161891B -:1081B0007289838994890E948172811106C0760137 -:1081C0008091E610C813D0CF2CC0F80161A172A134 -:1081D00083A194A19B01AC010E94A871F80125A183 -:1081E00036A147A150A50E94DA74F701218932898E -:1081F000438954890E94A8712B013C019B01AC0169 -:10820000C501B4010E949F74F80118162CF4418A2C -:10821000528A638A748AD3CF818A928AA38AB48A63 -:10822000CECFD091E610F9E2DF9F800111240951F1 -:108230001F4EC1E0CD0FC23109F4C0E02090CA1337 -:1082400089E2382EC21509F45BC0CC2ED12C3C9C9F -:10825000C0013D9C900D11249C0129513F4E790194 -:10826000F8014188528863887488F901818892886E -:10827000A388B488A5019401C301B2010E94817250 -:1082800087FF24C0F80161A172A183A194A19B0181 -:10829000AC010E94A871F80125A136A147A150A503 -:1082A0000E94DA74A30192010E94A8712B013C0183 -:1082B0009B01AC01C501B4010E949F74181634F4EF -:1082C000F701418A528A638A748ADC2F3C9CF00150 -:1082D0003D9CF00D1124E951FF4E258936894789CF -:1082E000508D61897289838994890E94817281117C -:1082F00001C0DC2FCF5FC23109F4C0E08701A2CFFB -:10830000D093E610DF91CF911F910F91FF90EF90E6 -:10831000DF90CF90BF90AF909F908F907F906F90A5 -:108320005F904F903F902F9008952F923F924F92E1 -:108330005F926F927F928F929F92AF92BF92CF92F5 -:10834000DF92EF92FF920F931F93CF93DF93CDB7FE -:10835000DEB7E5970FB6F894DEBF0FBECDBF4B8FEB -:108360005C8F6D8F072F2DAB2091CA132EA3422F48 -:1083700050E05BA34AA339E2239FF0011124E951A5 -:10838000FF4E158616861786108A15A216A217A20A -:1083900010A6108249E956E766E97EE741A352A399 -:1083A00063A374A31C014BED54E158A74FA3CE0166 -:1083B00001969AAB89AB24EA30E13EA72DA74EA1E6 -:1083C00039E2439FC00111249C0128513F4E3AA736 -:1083D00029A7AE01435F5F4F5DA34CA359A348A3F8 -:1083E00084EA90E198AB8FA72BED34E13F8F2E8F7D -:1083F00010E03F01AF01435F5F4F5CAB4BAB2F0120 -:1084000055E2450E511CF10161917191819191915B -:108410001F01EE8DFF8D81909190A190B190FF8F03 -:10842000EE8FA50194010E94DA740E94AA74E9A952 -:10843000FAA96193719381939193FAABE9ABEFA59C -:10844000F8A9C190D190E190F190F8ABEFA76C1929 -:108450007D098E099F099B01AC0197FF07C0222768 -:108460003327A901261B370B480B590BE9A5FAA5A1 -:108470002193319341935193FAA7E9A7EBA9FCA962 -:10848000C080D180E280F380C216D306E406F506F0 -:1084900010F469017A01EBA9FCA9C082D182E282C1 -:1084A000F3820E942373A50194010E9488724B01FC -:1084B0005C01E8A1F9A16193719381939193F9A370 -:1084C000E8A320E030E0A9010E94817287FF0DC07F -:1084D000112321F0113021F084E003C081E001C0BC -:1084E00082E0F3019081892B8083A5019401C5016D -:1084F000B4010E94DA74F2012081318142815381FA -:108500000E94A871F20160837183828393831F5F4D -:10851000133009F078CF0E9447754B015C01F201DE -:108520006083718382839383CD28CE28CF2809F47A -:1085300022C220E030E0A9016B8D7C8D8D8D902FC3 -:108540000E94817287FD21C0FDA9FF2361F0A50172 -:1085500094016B8D7C8D8D8D902F0E94DA746B8FC2 -:108560007C8F8D8F092F20E030E040E85FE36B8D3A -:108570007C8D8D8D902F0E94817287FF0DC01B8E88 -:108580001C8E20E82D8F0FE307C039E93B8F46E7AB -:108590004C8F56E95D8F0EE7A501940160E070E015 -:1085A00080E89FE30E94887269A77AA78BA79CA79F -:1085B000CE0149969A8F898FC12CD12C760129E260 -:1085C000EAA1FBA12E9FC0012F9F900D11249C01B9 -:1085D000285F3E4E39A328A3ECA1FDA180809180A5 -:1085E000A280B38020E030E0A901C501B4010E945F -:1085F0008172882309F472C0A501940169A57AA546 -:108600008BA59CA50E94DA742B013C01ECA1FDA175 -:1086100060837183828393839B01AC0160E070E08F -:1086200080E89FE30E9488724B015C01E894B7F8F0 -:10863000EFA1F8A52485358546855785C501B40188 -:108640000E94DA741B018E8F192F2B8D3C8D4D8D5E -:10865000502F0E949F7418162CF02B8E3C8EFE8D8E -:10866000FD8F012FE8A1F9A1F081FE8FE8A1F9A10A -:10867000118122803380EFA1F8A5208D318D428DAC -:10868000538DC501B4010E94DA745B014C019B015A -:10869000AC016E8D712FC1010E94817287FD03C0F4 -:1086A000AE8E1B2D14018E8D912FD101E8A1F9A161 -:1086B00080839183A283B383EDA5FEA524853585B0 -:1086C00046855785C301B2010E94DA749B01AC0153 -:1086D000C701B6010E94A7716B017C012CA13DA1CD -:1086E0002C5F3F4F3DA32CA34DA55EA54C5F5F4F74 -:1086F0005EA74DA78FA198A5049698A78FA3E98D93 -:10870000FA8DE217F30709F067CF8091C913FEA134 -:10871000F8130FC089E22AA13BA1829FF001839F39 -:10872000F00D1124E951FF4E118A128A138A148A1E -:1087300014C02FEE3FEF4FE75FE3C701B6010E9481 -:108740009F7418167CF489E24AA15BA1849FF00112 -:10875000859FF00D1124E951FF4E118E128E138E5C -:10876000148E6AC02FEE3FEF4FE75FEBC701B601F3 -:108770000E949F74181644F08FEEC82EDD24DA9400 -:108780008FE7E82E8FEBF82EA701960160E070E0EE -:1087900080E89FE30E94A77120E030E040E05FE3C3 -:1087A0000E94DA740E9447756B017C0189E22AA15C -:1087B0003BA1829FF001839FF00D1124E951FF4EF0 -:1087C00020911015309111154091121550911315EB -:1087D00061A172A183A194A10E94DA74A7019601FC -:1087E0000E94DA744B015C01A701960160E070E021 -:1087F00080E89FE30E94A7719B01AC01C501B40111 -:108800000E9488726B017C0120E030E0A9010E9487 -:10881000817287FF03C0C12CD12C760189E24AA165 -:108820005BA1849FF001859FF00D1124E951FF4E5B -:10883000C18ED28EE38EF48E2B8D3C8D4D8D502FBC -:108840006B8D7C8D8D8D902F0E94DA747B018C0155 -:1088500089E22AA13BA1829FF001839FF00D1124A0 -:10886000E951FF4EC701D801858F968FA78FB0A31E -:10887000A18CB28CC38CD48C6090BC107090BD1055 -:108880008090BE109090BF109301A401B701C80161 -:108890000E94817287FD05C0B62DA72DF82DE92D08 -:1088A00004C0BE2DAF2DF02FE12F9501A6016B2F37 -:1088B0007A2F8F2F9E2F0E949F7418166CF09301B1 -:1088C000A401B701C8010E94817287FD03C0530152 -:1088D000640102C05701680189E24AA15BA1849F3B -:1088E000F001859FF00D1124E951FF4EC501D6011D -:1088F000858B968BA78BB08F8CE0FE013D96A0EB0D -:10890000B0E101900D928A95E1F7C701D8018093FB -:10891000BC109093BD10A093BE10B093BF108CE01C -:10892000FE013196A4EAB0E101900D928A95E1F73B -:108930008091A3108093CA138F5F823109F480E085 -:108940008093A310E5960FB6F894DEBF0FBECDBF9F -:10895000DF91CF911F910F91FF90EF90DF90CF901B -:10896000BF90AF909F908F907F906F905F904F904F -:108970003F902F908DCBE5960FB6F894DEBF0FBEDB -:10898000CDBFDF91CF911F910F91FF90EF90DF90BE -:10899000CF90BF90AF909F908F907F906F905F909F -:1089A0004F903F902F9008956115710581059105B5 -:1089B000C1F16A3071058105910548F425E02A95D9 -:1089C000F1F700006150710981099109EDCF64361A -:1089D00071058105910548F4E5E3EA95F1F700009A -:1089E0006A50710981099109DFCF683EF3E07F0782 -:1089F0008105910558F4EFE8F1E03197F1F700C0F7 -:108A000000006456710981099109CECFEFE9FFE0BA -:108A10003197F1F700C00000685E73408109910949 -:108A2000C3CF0895009741F0EFE9FFE03197F1F7E8 -:108A300000C000000197F6CF08954F925F926F92A9 -:108A40007F92AF92BF92CF92DF92EF92FF920F93FD -:108A50001F93CF93DF936C01FB015A01309729F0EC -:108A60008081D601A80FB11D01C0DC018C91ED0100 -:108A70008D3229F4229611968C9101E008C08B3238 -:108A800011F0219603C0229611968C9100E0512C92 -:108A9000612C10E020E030E0A9017E0160ED762E2F -:108AA000780E89E08715D8F06394A8E0A61598F0B1 -:108AB00051101150A5E0B0E00E942F76DC01CB01EF -:108AC000880F991FAA1FBB1F9C01AD01270D311DE7 -:108AD000411D511D0BC0511009C01F5F07C0BEEFE3 -:108AE0007B1208C0511006C0552453942196D7011B -:108AF0008C91D3CF662009F450C07F01CA01B9011F -:108B00000E9421732B013C0120E030E0A9010E946A -:108B10008172882349F11F3F64F42AE037ED43E274 -:108B20005CE3C301B2010E94DA742B013C011E5FB9 -:108B3000F2CF1F3F59F42DEC3CEC4CEC5DE3C3014C -:108B4000B2010E94DA742B013C010EC0112361F0C6 -:108B500020E030E040E251E4C301B2010E94DA7447 -:108B60002B013C011150F2CF002351F077FA7094A1 -:108B700077F87094F501408251826282738206C058 -:108B8000D5014D925D926D927C921397CC19DD09BF -:108B9000C150F701C08381E001C080E0DF91CF9137 -:108BA0001F910F91FF90EF90DF90CF90BF90AF900B -:108BB0007F906F905F904F9008958091D91484FDBD -:108BC00026C09FB7F8948091D91480618093D914FE -:108BD0009FBF0E94CB3B0E94CD5F80912B15982FA9 -:108BE0009C7021F490912C15913089F49FB78430BA -:108BF00029F4F89480912915806204C0F89480913A -:108C000029158860809329159FBF0C949836089584 -:108C10002F923F924F925F926F927F928F929F928C -:108C2000AF92BF92CF92DF92EF92FF920F931F937A -:108C3000CF93DF93CDB7DEB7C756D1090FB6F894FF -:108C4000DEBF0FBECDBF66968FAF66971B016B96DA -:108C50002CAF3DAF4EAF5FAF6B97A8960FAFA89705 -:108C60008091181585FF51C03B010BED14E17B018C -:108C70002CE0E20EF11CDD24D394D3018D909D9065 -:108C8000AD90BD903D0120E030E0A901C501B401E7 -:108C90000E949F74181654F0F80124A135A146A132 -:108CA00057A1C501B4010E94817287FDD0922D1594 -:108CB00080912D15882319F180912B15883061F052 -:108CC0007CDF9FB7F89480912915856080932915E2 -:108CD0009FBF0E94B53319C09FB7F8948091D914F3 -:108CE00088608093D9149FBF0E94B53380912A1564 -:108CF00081110BC080912B158111F6CFE1CF0C5F54 -:108D00001F4FE614F70409F0B8CF80912B1582307D -:108D100009F475C3F10180819181A281B3816596C7 -:108D20008CAF9DAFAEAFBFAF659784819581A681B3 -:108D3000B78161968CAF9DAFAEAFBFAF61978085B5 -:108D40009185A285B3852D968CAF9DAFAEAFBFAF99 -:108D50002D97AE01475B5F4FBE01635B7F4FCE0136 -:108D60008F5A9F4F0E94BC2F2D96ECACFDAC0EADE0 -:108D70001FAD2D9761962CAD3DAD4EAD5FAD6197AA -:108D800065966CAD7DAD8EAD9FAD6597DE0191961C -:108D90004D01FE017D965F0118976D01F3D3E9A0A7 -:108DA000FAA00BA11CA12D8D3E8D4F8D58A1698D70 -:108DB0007A8D8B8D9C8D12D7882309F41CC360910A -:108DC000840D7091850D8091860D9091870D0E9484 -:108DD00023732B013C016091800D7091810D809176 -:108DE000820D9091830D0E9423736F966CAF7DAFBF -:108DF0008EAF9FAF6F9760917C0D70917D0D8091CC -:108E00007E0D90917F0D0E942373FE01BD964F0150 -:108E10009E01275D3F4F5901DE0195966D0183014B -:108E200072016F962CAD3DAD4EAD5FAD6F9745D6DF -:108E3000A401B501C601FDD20E94623E6696BFAD97 -:108E40006697BB2319F0B13041F0DDC0E1E0F0E0FE -:108E50006796FFAFEEAF6797DAC020E030E048ECEE -:108E600052E46B966CAD7DAD8EAD9FAD6B970E945D -:108E70009F74181654F480E090E0A8ECB2E46B966E -:108E80008CAF9DAFAEAFBFAF6B972DA13EA14FA1F1 -:108E900058A5D1016D917D918D919C910E94A771F2 -:108EA0002B013C0129A53AA54BA55CA5F1016481E4 -:108EB0007581868197810E94A7714B015C012DA568 -:108EC0003EA54FA558A9D10118966D917D918D9120 -:108ED0009C911B970E94A7716B017C01A3019201D9 -:108EE000C301B2010E94DA742B013C01A501940177 -:108EF000C501B4010E94DA749B01AC01C301B20147 -:108F00000E94A8714B015C01A7019601C701B6013F -:108F10000E94DA749B01AC01C501B4010E94A871E2 -:108F20000E94477520E030E040EF51E40E94DA747F -:108F30006B962CAD3DAD4EAD5FAD6B970E948872C8 -:108F40000E94F57267967FAF6EAF67976A307105C2 -:108F500030F42AE030E067963FAF2EAF679720E00D -:108F600030E040E950E46B966CAD7DAD8EAD9FADC9 -:108F70006B970E94DA7420E030E048EC52E40E94E3 -:108F8000887220E030E040E05FE30E94A87120E0BA -:108F900030E040E752E40E94DA7420E030E040E73D -:108FA00052E40E94DA746B017C016093F3147093B5 -:108FB000F4148093F5149093F6146093F71470935F -:108FC000F8148093F9149093FA1420E030E442E905 -:108FD00055E40E949F7487FF09C0C092FB14D09291 -:108FE000FC14E092FD14F092FE1411C080E090E4B5 -:108FF000A2E9B5E48093FB149093FC14A093FD14B4 -:10900000B093FE1404C067961FAE1EAE67976796B6 -:10901000AEADBFAD6797BD0180E090E00E942173C7 -:109020006B017C012DA13EA14FA158A5F1016081EA -:109030007181828193810E94A771A70196010E948C -:1090400088726F966CAF7DAF8EAF9FAF6F9729A57B -:109050003AA54BA55CA5D10114966D917D918D919A -:109060009C9117970E94A771A70196010E94887290 -:10907000A3966CAF7DAF8EAF9FAFA3972DA53EA5F6 -:109080004FA558A9F10160857185828593850E945D -:10909000A771A70196010E948872A7966CAF7DAF59 -:1090A0008EAF9FAFA79722242394312C67962EADC5 -:1090B0003FAD67972215330508F49BC1B101032C1E -:1090C000000C880B990B0E9423736B017C019B01A0 -:1090D000AC016F966CAD7DAD8EAD9FAD6F970E946C -:1090E000DA749B01AC016DA17EA18FA198A50E94AD -:1090F000A8716D877E878F87988BA7019601A396AD -:109100006CAD7DAD8EAD9FADA3970E94DA749B01CF -:10911000AC0169A57AA58BA59CA50E94A871698B55 -:109120007A8B8B8B9C8BA7019601A7966CAD7DAD3E -:109130008EAD9FADA7970E94DA749B01AC016DA51F -:109140007EA58FA598A90E94A8716D8B7E8B8F8BB1 -:10915000988FAE014B5E5F4FBE016F5E7F4FCE01B9 -:109160000D960E94BC2FED88FE880F89188D2989E5 -:109170003A894B895C896D857E858F859889DE016A -:10918000DD964D01FE01EF5BFF4F5F0118966D010B -:10919000F9D12196ECACFDAC0EAD1FAD2197259613 -:1091A0002CAD3DAD4EAD5FAD259729966CAD7DAD37 -:1091B0008EAD9FAD299712D5882309F416C16D8510 -:1091C0007E858F8598896093880D7093890D809333 -:1091D0008A0D90938B0D29893A894B895C8920935C -:1091E0008C0D30938D0D40938E0D50938F0DED8827 -:1091F000FE880F89188DE092900DF092910D0093EA -:10920000920D1093930DFE01F1964F01DE01D5965C -:109210005D0138966F01B6D1C9A8DAA8EBA8FCA801 -:109220008DA89EA8AFA8B8AC2091700D3091710D9B -:109230004091720D5091730D69AD7AAD8BAD9CADBF -:109240000E94A77120E030E040EA52E40E94DA7404 -:109250000E94F072072E000C880B990B0E9423735A -:1092600069837A838B839C832091740D3091750D73 -:109270004091760D5091770DC501B4010E94A77100 -:1092800020E030E040EA52E40E94DA740E94F0727A -:10929000072E000C880B990B0E9423736D837E832D -:1092A0008F8398872091780D3091790D40917A0DB8 -:1092B00050917B0DC701B6010E94A77120E030E0FC -:1092C00044EB52E40E94A87120E030E040EA52E40E -:1092D0000E94DA740E94F072072E000C880B990B22 -:1092E0000E94237369877A878B879C870E94B53396 -:1092F00080912A15811181C09091C9138091A3108A -:10930000981303C00E94A833F1CF89809A80AB8064 -:10931000BC80C501B4010E94F07260937C0D709313 -:109320007D0D80937E0D90937F0DCD80DE80EF804C -:10933000F884C701B6010E94F0726093800D7093AB -:10934000810D8093820D9093830D49845A846B84A0 -:109350007C84C301B2010E94F0726093840D70930B -:10936000850D8093860D9093870D2091DB143091AD -:10937000DC144091DD145091DE14C501B4010E944B -:10938000887269837A838B839C832091DF14309168 -:10939000E0144091E1145091E214C701B6010E941B -:1093A00088726D837E838F8398872091E314309138 -:1093B000E4144091E5145091E614C301B2010E94F7 -:1093C000887269877A878B879C87A8962FADA89724 -:1093D0006B964CAD5DAD6EAD7FAD6B97CE010196DA -:1093E0000E94954131E03093980DFFEF2F1A3F0A0C -:1093F0005DCE80E004C083E302C082E000C0C959B2 -:10940000DF4F0FB6F894DEBF0FBECDBFDF91CF9117 -:109410001F910F91FF90EF90DF90CF90BF90AF9092 -:109420009F908F907F906F905F904F903F902F9084 -:1094300008954F925F926F927F92AF92BF92CF92B8 -:10944000DF92EF92FF920F931F93CF93DF935C0114 -:10945000EB018A01FC01408051806280738020E032 -:1094600030E0A901C301B2010E94817220E030E026 -:10947000A901811111C0688179818A819B810E9433 -:109480009F741816E4F02AEDC22E2FE0D22E29EC9C -:10949000E22E2FEBF22E22C0C301B2010E94817294 -:1094A00087FD16C0A3019201688179818A819B8121 -:1094B0000E9488720E9446726B017C010FC09AED77 -:1094C000C92E9FE0D92E99ECE92E9FE3F92E06C014 -:1094D000C12CD12C80ECE82E8FE7F82EC701B60105 -:1094E0000E9485722091640D3091650D4091660D4A -:1094F0005091670D0E94DA74A30192010E94A87135 -:10950000F5016083718382839383C701B6010E9452 -:109510003D752091640D3091650D4091660D50911F -:10952000670D0E94DA749B01AC01688179818A81A0 -:109530009B810E94A871688379838A839B83209191 -:10954000680D3091690D40916A0D50916B0DF801D5 -:1095500060817181828193810E94A771F80160838B -:10956000718382839383DF91CF911F910F91FF903D -:10957000EF90DF90CF90BF90AF907F906F905F9013 -:109580004F9008952F923F924F925F926F927F92E9 -:109590008F929F92AF92BF92CF92DF92EF92FF9203 -:1095A0000F931F93CF93DF93CDB7DEB766970FB6B8 -:1095B000F894DEBF0FBECDBF69837A838B839C8313 -:1095C0002D833E834F835887270138011601BA8ABD -:1095D000A98A84019B01AC010E94DA746B017C01B1 -:1095E0002D813E814F815885CA01B9010E94DA74EC -:1095F0009B01AC01C701B6010E94A8710E9447758A -:1096000023E333E343E551E40E94A77169877A8736 -:109610008B879C872DEC3CEC46ED52E4C301B201F4 -:109620000E94A7712B013C0129853A854B855C85F9 -:10963000CA01B9010E94DA746B017C01A301920195 -:10964000C301B2010E94DA749B01AC01C701B601EB -:109650000E94A8716B017C0124ED35E64DE955E4CB -:109660000E94A7714B015C0126EC3FEA4DE957E4EB -:10967000C701B6010E94DA746D877E878F87988B49 -:10968000A5019401C501B4010E94DA749B01AC01EB -:109690006D857E858F8598890E94A7710E94477588 -:1096A0006B8B7C8B8D8B9E8BA7019601C701B601BE -:1096B0000E94A8716D877E878F87988BA501940182 -:1096C00069857A858B859C850E94DA744B015C01E3 -:1096D0002B893C894D895E89C301B2010E94DA74ED -:1096E0009B01AC01C501B4010E94A7714B015C0153 -:1096F0002CEE31E14EE053E46D857E858F859889AF -:109700000E94DA749B01AC01C501B4010E94887209 -:109710000E94997121EE3EE245E652E40E94DA741D -:10972000F101608371838283938324ED35E64DE9F3 -:1097300055E4C701B6010E94A8714B015C012BE3FF -:1097400039E045EC57E4C701B6010E94DA746B01B9 -:109750007C01A5019401C501B4010E94DA749B014A -:10976000AC01C701B6010E94A7710E9447756B0149 -:109770007C01A501940169857A858B859C850E9471 -:10978000DA744B015C01A7019601C301B2010E948A -:10979000DA749B01AC01C501B4010E94A8716B0190 -:1097A0007C012CE53FEC4EE153E46D857E858F8591 -:1097B00098890E94DA749B01AC01C701B6010E942E -:1097C00088720E94997121EE3EE245E652E40E94C1 -:1097D000DA746B017C01E989FA8960837183828381 -:1097E000938321EE3EE245E652E4F101608171810E -:1097F000828193810E9488720E943D752CEE31E136 -:109800004EE053E40E94DA749B01AC01C301B20143 -:109810000E949F74181654F4F7FAF094F7F8F09435 -:10982000E989FA89C082D182E282F38220E030E0C5 -:10983000A90169817A818B819C810E94817220E0DB -:1098400030E0A901811112C06D817E818F819885E0 -:109850000E949F7418162CF480E090E0A4EBB2E410 -:1098600011C080E090E0A4EBB2EC0CC069817A8179 -:109870008B819C810E94817287FF0AC080E090E00A -:10988000A0ECBFE7F80180839183A283B38317C064 -:1098900029813A814B815C816D817E818F819885A0 -:1098A0000E9488720E94467221EE3EE245E652E432 -:1098B0000E94DA74F80160837183828393836696D1 -:1098C0000FB6F894DEBF0FBECDBFDF91CF911F91D1 -:1098D0000F91FF90EF90DF90CF90BF90AF909F904F -:1098E0008F907F906F905F904F903F902F90089552 -:1098F0002F923F924F925F926F927F928F929F92A0 -:10990000AF92BF92CF92DF92EF92FF920F931F938D -:10991000CF93DF93CDB7DEB72E970FB6F894DEBFA7 -:109920000FBECDBF29833A834B835C83ED82FE82D9 -:109930000F831887860115019E868D8621EE3EE2F3 -:1099400045E652E40E9488722B013C0121EE3EE282 -:1099500045E652E469817A818B819C810E948872FC -:109960004B015C0121EE3EE245E652E46D817E81D1 -:109970008F8198850E9488726B017C01C301B201BE -:109980000E94857269837A838B839C83C501B401AD -:109990000E9485726D837E838F839887C301B20195 -:1099A0000E943D752B013C01C501B4010E943D752B -:1099B00069877A878B879C872CEE31E14EE053E4F0 -:1099C00069817A818B819C810E94DA744B015C01F0 -:1099D0002CE53FEC4EE153E46D817E818F819885CB -:1099E0000E94DA749B01AC01C501B4010E94A87108 -:1099F00023E333E343E551E40E94A8714B015C018A -:109A0000C701B6010E9485729B01AC01C501B4017A -:109A10000E94DA74F8016083718382839383C701A3 -:109A2000B6010E943D759B01AC01C501B4010E94C5 -:109A3000DA74F10160837183828393832CEE31E1C8 -:109A40004EE053E4C301B2010E94DA746B017C0161 -:109A50002CE53FEC4EE153E469857A858B859C8546 -:109A60000E94DA749B01AC01C701B6010E94A77184 -:109A70002DEC3CEC46ED52E40E94A871ED85FE858C -:109A800060837183828393832E960FB6F894DEBF32 -:109A90000FBECDBFDF91CF911F910F91FF90EF903F -:109AA000DF90CF90BF90AF909F908F907F906F90FE -:109AB0005F904F903F902F9008952F923F924F923A -:109AC0005F926F927F928F929F92AF92BF92CF924E -:109AD000DF92EF92FF920F931F93CF93DF93CDB757 -:109AE000DEB728970FB6F894DEBF0FBECDBF2B01AF -:109AF0003C0129833A834B835C83ED82FE820F8392 -:109B00001887860182E6282E8DE0382E20E030E08E -:109B100044EB52E4F10166897789808D918D0E9432 -:109B2000A7716B017C0120E030E040EA52E46D81D6 -:109B30007E818F8198850E9488729B01AC01C7014C -:109B4000B6010E94A8716D837E838F83988720E081 -:109B500030E040EA52E469817A818B819C810E94E5 -:109B60008872F10122893389448955890E94A8713C -:109B700069837A838B839C8320E030E040EA52E45F -:109B8000C301B2010E948872F101268537854089A0 -:109B900051890E94A8716801ED80FE800F811885AF -:109BA00029813A814B815C81A3DE28960FB6F89417 -:109BB000DEBF0FBECDBFDF91CF911F910F91FF9000 -:109BC000EF90DF90CF90BF90AF909F908F907F905D -:109BD0006F905F904F903F902F9008954F925F92BB -:109BE0006F927F928F929F92AF92BF92CF92DF92AD -:109BF000EF92FF920F931F932B013C0149015A01F1 -:109C0000670178019B01AC010E948F75811170C0C2 -:109C1000A5019401C501B4010E948F75811168C02E -:109C2000A7019601C701B6010E948F75811160C01E -:109C30002AE939E947E053E4C301B2010E949F7465 -:109C400018160CF455C020E030E0A901C301B201A0 -:109C50000E94817287FD4CC02DEC3CEC4FEE52E42B -:109C6000C501B4010E949F7418160CF441C020E095 -:109C700030E0A901C501B4010E94817287FD38C09E -:109C8000A301920160E070E084E393E40E94A77175 -:109C9000A50194010E94A7714B015C0120E030E016 -:109CA00047E153E40E949F74181614F120E030E05D -:109CB00040E251E4C501B4010E94817287FD18C0E1 -:109CC00020E030E044EB52E4C701B6010E949F74EB -:109CD000181674F020E030E044EB52ECC701B601F6 -:109CE0000E948172881F8827881F91E0892701C000 -:109CF00080E01F910F91FF90EF90DF90CF90BF9089 -:109D0000AF909F908F907F906F905F904F9008954D -:109D1000EF92FF920F931F93CF93DF9382E393E031 -:109D20000E94835F8B3B19F080E293E002C084E3E2 -:109D300093E022E6E22E2DE0F22ECCE5DDE08C0170 -:109D40000C551D40C8018C0F9D1F0E94835F899395 -:109D5000EC16FD06B9F7DF91CF911F910F91FF909F -:109D6000EF900895AF92BF92CF92DF92EF92FF9261 -:109D70000F931F93CF93DF93A82E6EE00E94CA59D2 -:109D8000C82F6FE08A2D0E94CA59D0E0DC2FCC2763 -:109D9000C82B7E016E0104E010E06EE08A2D0E9467 -:109DA000CA59B82E6FE08A2D0E94CA592B2D30E077 -:109DB000322F2227A901482BCA01C816D90608F458 -:109DC0006C018E159F0508F47C01C80FD91F015046 -:109DD000110919F7CE018C199D098E199F0963E0AD -:109DE00070E00E94C675613050E1750708F48B0180 -:109DF000C801DF91CF911F910F91FF90EF90DF90FD -:109E0000CF90BF90AF900895CF92DF92EF92FF92E4 -:109E10000F931F93CF93DF93EC01A4DF9C01C1301C -:109E2000D10591F128F0C230D10509F459C084C0A0 -:109E300060915E0D70915F0DCB01A0E0B0E08901F3 -:109E400020E030E06C017D01C01AD10AE20AF30A79 -:109E500041E0C41648E0D406E104F10424F0905136 -:109E6000A109B1090AC0C11448EFD4064FEFE406B6 -:109E7000F4061CF4905FAF4FBF4FBC01CD01601BD7 -:109E8000710B820B930B65C06091600D7091610D39 -:109E9000CB01A0E0B0E0890120E030E06C017D0161 -:109EA000C01AD10AE20AF30A41E0C41648E0D40617 -:109EB000E104F10424F09051A109B1090AC0C114D0 -:109EC00048EFD4064FEFE406F4061CF4905FAF4F62 -:109ED000BF4FBC01CD01601B710B820B930B45C0C2 -:109EE00060915C0D70915D0DCB01A0E0B0E0890147 -:109EF00020E030E06C017D01C01AD10AE20AF30AC9 -:109F000041E0C41648E0D406E104F10424F0905185 -:109F1000A109B1090AC0C11448EFD4064FEFE40605 -:109F2000F4061CF4905FAF4FBF4FBC01CD01601B26 -:109F3000710B820B930B22C0C130D10599F030F028 -:109F4000229719F560E070E0CB0118C060E070E086 -:109F5000CB0145E2C42E49E0D42E43E0E42E42E496 -:109F6000F42E16C060E070E0CB0139E0C32E36EF6E -:109F7000D32E31EBE32E32E4F32E0AC0C12CD12CC8 -:109F800024EBE22E22E4F22E03C060E070E0CB016D -:109F90000E94237320E030E044EB53E40E94DA7423 -:109FA00020E030E040E859E30E94DA749B01AC0104 -:109FB000C701B6010E94A771DF91CF911F910F9148 -:109FC000FF90EF90DF90CF9008958F929F92AF9285 -:109FD000BF92CF92DF92EF92FF920F931F93CF9396 -:109FE000DF93EB012BEDE22E24E1F22E8C016B01CD -:109FF0008CE0C80ED11C6991799189919991F701F2 -:10A0000081909190A190B1907F010E942373A5014E -:10A0100094010E948872F8016193719381939193E6 -:10A020008F01CC15DD0539F7DF91CF911F910F918D -:10A03000FF90EF90DF90CF90BF90AF909F908F9068 -:10A0400008951F920F920FB60F9211240BB60F9224 -:10A050002F933F934F935F936F937F938F939F9330 -:10A06000AF93BF93EF93FF9389B18095982F907131 -:10A0700084FF03C091110E94DD45FF91EF91BF91D4 -:10A08000AF919F918F917F916F915F914F913F9190 -:10A090002F910F900BBE0F900FBE0F901F90189531 -:10A0A000CF93DF93C0914714D09148142097B9F013 -:10A0B00081E080934A1460916014709161148091E2 -:10A0C0006214909163149B01AC010E94DA74698B55 -:10A0D0007A8B8B8B9C8B1092481410924714DF91D3 -:10A0E000CF9108952F923F924F925F926F927F92FD -:10A0F0008F929F92AF92BF92CF92DF92EF92FF9298 -:10A100000F931F93CF93DF93CDB7DEB7CD54D10913 -:10A110000FB6F894DEBF0FBECDBF80912B158077B0 -:10A1200023968FAF2397882389F020E030E0A901A0 -:10A130006091601470916114809162149091631425 -:10A140000E948172882311F40C945059209160145C -:10A150002F8B30916114388F40916214498F509148 -:10A1600063145A8F809170148B83909171149D8326 -:10A17000A0917214AE83B0917314BC8300915C14EF -:10A1800010915D14E0915E14E987F0915F14FD87F2 -:10A1900020914F1430915014409151145091521409 -:10A1A0002DA33EA34FA358A730914B143DAF409130 -:10A1B0004C144EAF50914D145FAF80914E142196C8 -:10A1C0008FAF219720915714309158144091591412 -:10A1D00050915A142DAB3EAB4FAB58AF3091F013AA -:10A1E00022963FAF2297409146144BA75091CA1335 -:10A1F00024965FAF24978091C9138B8F9091E610BE -:10A2000025969FAF2597A0914714B0914814BA8B1B -:10A21000A98B2091531430915414409155145091AE -:10A22000561429AF3AAF4BAF5CAF309168143B8BFB -:10A23000409169144C8B50916A145D8B80916B1422 -:10A240008E8B909164149C8FA0916514AD8FB0910A -:10A250006614BE8FE0916714EF8F30906C142090DD -:10A260006D14F0916E14F98320916F142A838091FC -:10A27000CB135BA5851709F4F4C649895A89452B88 -:10A2800009F033C224965FAD24978B8D581709F4DB -:10A2900078C7A82EB12CA9E2AA9DC001AB9D900D54 -:10A2A0001124FC01E951FF4EFA8BE98B80914A148D -:10A2B000882319F010924A14BCC0809149148F5F12 -:10A2C000853019F08093491402C010924914E0912E -:10A2D000491421E12E9FF0011124EF50FC4E89E238 -:10A2E0008A9DA0018B9D500D112449515F4E7A012A -:10A2F000DA018C91808311964D915D916D917C91E5 -:10A300001497DB01CA0123E0880F991FAA1FBB1F06 -:10A310002A95D1F781839283A383B483D7011596BD -:10A320004D915D916D917C911897DB01CA0133E0ED -:10A33000880F991FAA1FBB1F3A95D1F78583968373 -:10A34000A783B087D70119964D915D916D917C914E -:10A350001C97DB01CA0143E0880F991FAA1FBB1F8E -:10A360004A95D1F781879287A387B487D7011D9635 -:10A370006D917D918D919C9150978B019C0153E043 -:10A38000000F111F221F331F5A95D1F7058716871B -:10A390002787308B0E9421736DAF7EAF8FAF2196E0 -:10A3A0009FAF2197F70125A136A147A150A50E9493 -:10A3B00088726DA37EA38FA398A79B01AC0160E078 -:10A3C00070E080EA9FE30E94887269AF7AAF8BAF3A -:10A3D0009CAF2396FFAD2397FF23D1F02B893C89B7 -:10A3E0004D895E896B897C898D899E890E94DA748A -:10A3F000D70151966D937D938D939C935497BB8910 -:10A40000BF8BEC89E88FFD89F98F2E892A8F0DC0CB -:10A41000D70151966D917D918D919C9154970E9499 -:10A4200047756F8B788F898F9A8F1DAA1EAA1FAAD6 -:10A4300018AE29E22A9DF0012B9DF00D1124E9515F -:10A44000FF4EFE87ED87C1A0D2A0E3A0F4A0A70134 -:10A45000960160E070E080E09FE30E948872698767 -:10A460007A878B879C8723963FAD23973323F1F11F -:10A4700042E040935B14AD85BE8595964D905D900E -:10A480006D907C90989751968D909D90AD90BC90DA -:10A490005497A50194010E94DA749B01AC01C30199 -:10A4A000B2010E94A7718B0189879D8720E030E06F -:10A4B000A9010E94817287FF1BC1A7019601C701F4 -:10A4C000B6010E94A871A30192010E94DA749B0157 -:10A4D000AC01C501B4010E94A7710E9447756B8B46 -:10A4E0007C8B8D8B9E8B3F82288615C110925B14CE -:10A4F000ED85FE85F5A1FF83AD85BE859696BC9161 -:10A50000B887ED85FE8507A110A5EB8DEF5FE231E1 -:10A5100009F4E0E02496FFAD2497EF1789F029E2D3 -:10A520002E9FF0011124E951FF4E618972898389C0 -:10A5300094890E9447756B8B7C8B8D8B9E8B04C09E -:10A540001B8A1C8A1D8A1E8A2B893C894D895E893B -:10A550006B897C898D899E890E94DA742B013C016C -:10A5600089E28A9DA0018B9D500D112449515F4EB7 -:10A570005AA349A3DA0151962D913D914D915C91D9 -:10A5800054972D873E874F87588BA30192016D8585 -:10A590007E858F8598890E94A77129853A854B858C -:10A5A0005C850E94DA742F813885A8010E94A87109 -:10A5B00020E030E040E05FE30E94DA74362E272E80 -:10A5C00089839A8320E030E0A9010E949F741816C5 -:10A5D0000CF095C0232D322D49815A816F817885E9 -:10A5E000C8010E949F7418160CF071C0E9A1FAA16D -:10A5F000858C968CA78CB0A0A3019201C501B401F3 -:10A600000E94A77129853A854B855C850E94DA7482 -:10A610006B837D838E839C839B01AC01632D722DA4 -:10A6200089819A810E949F74181694F5C501B4011E -:10A630000E9447756C8F7D8F8E8F9F8FA50194012F -:10A640006D857E858F8598890E948172811106C0F3 -:10A65000F1E0F0935B1409831A835DC02D853E857C -:10A660004F855889C501B4010E94A77129853A8593 -:10A670004B855C850E94DA749B01AC016F81788503 -:10A68000C8010E94A7716F83788789839A8343C02A -:10A69000A7019601C701B6010E94A871232D322D92 -:10A6A00049815A810E94DA74A30192010E94A87123 -:10A6B0000E9447756C8F7D8F8E8F9F8F3F8228867B -:10A6C0003B822D8229812E833A813C8324C042E043 -:10A6D00040935B1409831A835F895C8F888D8D8F0B -:10A6E000998D9E8FAA8DAF8F16C03F82288617C086 -:10A6F0003F8228861B8A1C8A1D8A1E8A10C0BB893D -:10A70000BC8FEC89ED8FFD89FE8F2E892F8F1F82E4 -:10A71000188619821A8200E010E019861D8622969A -:10A720005FAD2297452F50E05AA749A786E0849F46 -:10A73000F001859FF00D1124E453FC4E80914914E3 -:10A740008283A989BA899596BC91B8ABE989FA89BF -:10A75000F6A1F9ABA989BA899796BC912696BFAFA5 -:10A760002697E989FA89F0A52796FFAF279729ADA3 -:10A770003AAD4BAD5CAD68A979A98B2F9F2F0E9494 -:10A78000A7716CA77DA78EA79FA720E030E0A90145 -:10A790000E94817287FF04C01CA61DA61EA61FA6CC -:10A7A00020915B1428A32B813D814E815C816F81B8 -:10A7B000788589819A810E948172811105C032E079 -:10A7C00028963FAF289704C041E028964FAF2897BE -:10A7D00028A859A92E965FAF2E9726968FAD26975B -:10A7E0002D968FAF2D9727963FAC27978EE3C82ED7 -:10A7F00083ECD82E8EE2E82E89E3F82E412C512CE2 -:10A800003201C9A2DAA2EBA2FCA238A1332321F0C3 -:10A81000313009F485C0C5C0A989BA8991962D91B6 -:10A820003D914D915C919497C701B6010E94DA74F5 -:10A830004B015C0120E030E040E05FE30E94DA740D -:10A840002F89388D498D5A8D0E94A871A7019601D4 -:10A850000E94DA749B01AC01622D2E967FAD2E977B -:10A860002D968FAD2D97932D0E94A771262E2E9693 -:10A870007FAF2E972D968FAF2D97392E2F8138854C -:10A8800049815A810E94817287FF3DC02F8138859E -:10A8900049815A8168A979A926968FAD269727966E -:10A8A0009FAD27970E94A7719B01AC010E94A871E0 -:10A8B0006B017C012C8D3D8D4E8D5F8D6F89788D68 -:10A8C000898D9A8D0E94A8719B01AC01C701B601C8 -:10A8D0000E9488726B017C012896BFAD2897B8A3AF -:10A8E000EC8DEF8BFD8DF88F2E8D298F3F8D3A8F5C -:10A8F0002F8048852E964FAF2E9759812D965FAFAA -:10A900002D973A80EBC0A50194016F89788D898DD0 -:10A910009A8D0E94A8716F8B788F898F9A8FDEC075 -:10A920002C8D3D8D4E8D5F8DC701B6010E94DA746E -:10A930009B01AC01622D2E967FAD2E972D968FAD8B -:10A940002D97932D0E94A7714B015C012B813D81B6 -:10A950004E815C810E94817287FFB8C02B813D814E -:10A960004E815C81622D2E967FAD2E972D968FADF8 -:10A970002D97932D0E94A7712C8D3D8D4E8D5F8D4F -:10A980000E9488726B017C012B808D812E968FAF87 -:10A990002E979E812D969FAF2D973C80A2E0A8A375 -:10A9A0009DC0E989FA8921A132A143A154A1C7011F -:10A9B000B6010E94DA744B015C012F89388D498DF4 -:10A9C0005A8D0E94817287FF52C020E030E040E043 -:10A9D0005FE3C501B4010E94DA749B01AC016F8989 -:10A9E000788D898D9A8D0E94A771A70196010E948A -:10A9F000DA749B01AC01622D2E967FAD2E972D96B9 -:10AA00008FAD2D97932D0E94A77129966FAF29972F -:10AA10002A967FAF2A972B968FAF2B972C969FAFB6 -:10AA20002C97980149855D850E949F741816FCF447 -:10AA3000A50194016F89788D898D9A8D0E94A771E7 -:10AA40006F8B788F898F9A8F29962FAC29972A96AA -:10AA5000FFAD2A972E96FFAF2E972B962FAD2B97F3 -:10AA60002D962FAF2D972C963FAC2C9737C0980181 -:10AA700049855D85622D2E967FAD2E972D968FADE3 -:10AA80002D97932D0E94A7719B01AC010E94A87184 -:10AA90006B017C012B893C894D895E896F89788D9A -:10AAA000898D9A8D0E94A8719B01AC01C701B601E6 -:10AAB0000E9488726B017C01202E2E961FAF2E976C -:10AAC00039852D963FAF2D973D8408C0282C2E96B2 -:10AAD0009FAE2E972D96AFAE2D973B2CA7019601DA -:10AAE000C301B2010E94A8712B013C0129A13AA126 -:10AAF0004BA15CA10E94817287FF07C0A301920154 -:10AB000069A17AA18BA19CA120C02CA53DA54EA531 -:10AB10005FA5622D2E967FAD2E972D968FAD2D972A -:10AB2000932D0E949F74181644F52EE333EC4EE2E9 -:10AB300059E369A17AA18BA19CA10E94A87169A384 -:10AB40007AA38BA39CA3A30192010E94A7716B011E -:10AB50007C01980149855D85622D2E967FAD2E97EB -:10AB60002D968FAD2D97932D0E949F7418160CF47F -:10AB70004CCE48A140935B1403C058A150935B1482 -:10AB80002DA13EA14FA158A5622D2E967FAD2E97E7 -:10AB90002D968FAD2D97932D0E94DA7468A379A31B -:10ABA0008CA798AB0E946E726B017C016DAD7EAD7F -:10ABB0008FAD21969FAD21970E946E724B015C0173 -:10ABC000A70196010E94A7710E94F57269AB7AAB4A -:10ABD0008BAB9CABA6E089A59AA5A89FF001A99F85 -:10ABE000F00D1124E453FC4E29A93AA931832083A6 -:10ABF000232B09F087C023965FAD2397552309F4D3 -:10AC000081C0C801A985BD8580935C1490935D14B3 -:10AC1000A0935E14B0935F148B899C89AD89BE8923 -:10AC20008093681490936914A0936A14B0936B1482 -:10AC30008C8D9D8DAE8DBF8D809364149093651423 -:10AC4000A0936614B09367148B819D81AE81BC8103 -:10AC50008093701490937114A0937214B093731432 -:10AC60008F819885A981BA8180936C1490936D141B -:10AC7000A0936E14B0936F1422968FAD2297809399 -:10AC8000F013A989BA89B0934814A093471429AD49 -:10AC90003AAD4BAD5CAD20935314309354144093B4 -:10ACA0005514509356143B8D3093C9138DA19EA11A -:10ACB000AFA1B8A580934F1490935014A093511452 -:10ACC000B09352149BA59093461410926014109266 -:10ACD000611410926214109263141092571410921F -:10ACE00058141092591410925A14C0924B14D092C6 -:10ACF0004C14E0924D14F0924E142DA13EA14FA1A0 -:10AD000058A565C12DA93EA94FA958ADC301B201EF -:10AD10000E94A8712B013C0128A139A14CA558A97A -:10AD2000C501B4010E94A7719B01AC01C301B2012E -:10AD30000E9488724B015C0128A139A14CA558A939 -:10AD4000C701B6010E94A771A50194010E94DA749F -:10AD50006DAB7EAB8FAB98AF20EC31EE44E65EE49A -:10AD6000C501B4010E94DA740E946E720E94F572ED -:10AD7000603DE7E07E078105910560F446E029A586 -:10AD80003AA5429FF001439FF00D1124E453FC4E7D -:10AD9000158253C0603A5FE075078105910560F444 -:10ADA00026E0A9A5BAA52A9FF0012B9FF00D11243A -:10ADB000E453FC4E31E011C060344FE1740781056B -:10ADC000910568F426E0A9A5BAA52A9FF0012B9F5A -:10ADD000F00D1124E453FC4E32E035830CC0A6E0A4 -:10ADE00049A55AA5A49FF001A59FF00D1124E45395 -:10ADF000FC4EB3E0B58346E029A53AA5429FF00199 -:10AE0000439FF00D1124E453FC4E2581022E04C013 -:10AE100096958795779567950A94D2F7A9A9BAA9C7 -:10AE200002C0AA0FBB1F2A95E2F7B183A083611568 -:10AE30007105B1E08B07910568F446E029A53AA5B4 -:10AE4000429FF001439FF00D1124E453FC4E7483A4 -:10AE5000638304C08FEF9FEF94838383BBA4B39479 -:10AE600096E0B91201C0B12C980149855D85622D2B -:10AE70002E967FAD2E972D968FAD2D97932D0E94F8 -:10AE80009F741816CCF4822D2E969FAD2E972D967A -:10AE9000AFAD2D97B32DE989FA8985A396A3A7A312 -:10AEA000B0A7F8A1FDAF29A12EAF3CA53FAF48A99F -:10AEB00021964FAF2197CDC020E030E0A901622D4F -:10AEC0002E967FAD2E972D968FAD2D97932D0E94A8 -:10AED0009F7418160CF0A6C0C801A985BD85809383 -:10AEE0005C1490935D14A0935E14B0935F148B89EF -:10AEF0009C89AD89BE898093681490936914A0934E -:10AF00006A14B0936B148C8D9D8DAE8DBF8D809324 -:10AF1000641490936514A0936614B09367148B81A6 -:10AF20009D81AE81BC818093701490937114A09325 -:10AF30007214B09373148F819885A981BA8180931C -:10AF40006C1490936D14A0936E14B0936F145BA562 -:10AF50005093F01389899A899093481480934714E9 -:10AF600029AD3AAD4BAD5CAD2093531430935414DE -:10AF700040935514509356143B8D3093C9138DA1B3 -:10AF80009EA1AFA1B8A580934F1490935014A093A5 -:10AF90005114B0935214B09246141092601410924F -:10AFA000611410926214109263141092571410924C -:10AFB00058141092591410925A14C0924B14D092F3 -:10AFC0004C14E0924D14F0924E149C01AD01C70157 -:10AFD000B6010E948872A989BA8995966D937D936E -:10AFE0008D939C9398975CD8BB8DB093E610C35B10 -:10AFF000DF4F0FB6F894DEBF0FBECDBFDF91CF910C -:10B000001F910F91FF90EF90DF90CF90BF90AF9086 -:10B010009F908F907F906F905F904F903F902F9078 -:10B020000C9448402496EFAD2497FB8DEF1779F0F0 -:10B030008F2F8F5F823109F480E02B8D25963FADF5 -:10B040002597231303C025968FAF25978B8F1A8AD8 -:10B05000198A3F8028844BA522964FAF2297BBA622 -:10B0600006C9C801A985BD8580935C1490935D14C1 -:10B07000A0935E14B0935F148B899C89AD89BE89BF -:10B080008093681490936914A0936A14B0936B141E -:10B090008F89988DA98DBA8D8093601490936114D7 -:10B0A000A0936214B09363148C8D9D8DAE8DBF8D73 -:10B0B0008093641490936514A0936614B0936714FE -:10B0C0008B819D81AE81BC818093701490937114AB -:10B0D000A0937214B0937314832D922DA981BA8119 -:10B0E00080936C1490936D14A0936E14B0936F14AE -:10B0F00022968FAD22978093F013A989BA89B093D5 -:10B100004814A093471429AD3AAD4BAD5CAD2093E4 -:10B1100053143093541440935514509356143B8D4C -:10B120003093C9138DAD9EADAFAD2196BFAD2197C4 -:10B1300080934B1490934C14A0934D14B0934E14E1 -:10B140008DA19EA1AFA1B8A580934F1490935014E8 -:10B15000A0935114B09352142DA93EA94FA958ADF4 -:10B1600020935714309358144093591450935A1401 -:10B170003BA53093461425964FAD25974093E61096 -:10B180008FC0C801A985BD8580935C1490935D1420 -:10B19000A0935E14B0935F148B899C89AD89BE899E -:10B1A0008093681490936914A0936A14B0936B14FD -:10B1B0008F89988DA98DBA8D8093601490936114B6 -:10B1C000A0936214B09363148C8D9D8DAE8DBF8D52 -:10B1D0008093641490936514A0936614B0936714DD -:10B1E0008B819D81AE81BC8180937014909371148A -:10B1F000A0937214B0937314832D922DA981BA81F8 -:10B2000080936C1490936D14A0936E14B0936F148C -:10B2100022965FAD22975093F0131092481410922B -:10B22000471489AD9AADABADBCAD809353149093E8 -:10B230005414A0935514B093561424969FAD24979C -:10B240009093C9138DAD9EADAFAD2196BFAD219743 -:10B2500080934B1490934C14A0934D14B0934E14C0 -:10B260002DA13EA14FA158A520934F143093501407 -:10B2700040935114509352148DA99EA9AFA9B8AD13 -:10B280008093571490935814A0935914B0935A1460 -:10B290009BA5909346142596AFAD2597A093E610F5 -:10B2A000C35BDF4F0FB6F894DEBF0FBECDBFDF919B -:10B2B000CF911F910F91FF90EF90DF90CF90BF90B3 -:10B2C000AF909F908F907F906F905F904F903F9046 -:10B2D0002F900895CF93DF930E9498368BE2E9E494 -:10B2E000F4E1DF011D928A95E9F783E2E3ECF0E1F6 -:10B2F000DF011D928A95E9F71092481410924714C5 -:10B300001092CB131092F01381E0809346141092A8 -:10B31000C2100E94193681B39091C1109170C92F4B -:10B32000B0E0DB2F96E0CC0FDD1F9A95E1F78F7B25 -:10B33000C82BC1BBEBE0F1E090818091C11082701D -:10B34000880F880F977F892B808381B39091C110DC -:10B3500092FB992790F98E7F892B81BB8091C01039 -:10B3600080FD8F9A80FF8F9880819091C01092709D -:10B370008D7F892B808321B39091C0109470892F89 -:10B3800090E095958795922F9D7F892B81BBDF91CA -:10B39000CF910895CF93DF93C62F813009F48EC0EB -:10B3A00038F1823009F069C10E942F2E8CE60E948C -:10B3B000BF2D0E94092E8C2F0E94BF2D0E94092EA6 -:10B3C0000E942F2E8DE60E94BF2D0E94092E62E062 -:10B3D00070E080E090E00E94D444559A5D9A62E06B -:10B3E00070E080E090E00E94D444D8E0C0E002C168 -:10B3F0000E94A42F8CE60E94342F0E947E2F8C2F57 -:10B400000E94342F0E947E2F0E94A42F8DE60E945E -:10B41000342F0E947E2F62E070E080E090E00E9476 -:10B42000D444399A419A62E070E080E090E00E9452 -:10B43000D444D8E0C0E0439865E070E080E090E05C -:10B440000E94D444439ACC0F65E070E080E090E025 -:10B450000E94D44439983199C16065E070E080E081 -:10B4600090E00E94D444D15031F74398399A419AE0 -:10B4700062E070E080E090E00E94D444439A65E08E -:10B4800070E080E090E00E94D444439862E070E075 -:10B4900080E090E00E94D444399A419A62E070E0E2 -:10B4A00080E090E00E94D444439862E070E080E045 -:10B4B00090E00E94D4440E94662FE0C00E94022FB8 -:10B4C0008CE60E94472E0E94C72E8C2F0E94472E8A -:10B4D0000E94C72E0E94022F8DE60E94472E0E94D6 -:10B4E000C72E62E070E080E090E00E94D44480913A -:10B4F0000101846080930101809102018460809346 -:10B50000020162E070E080E090E00E94D444D8E064 -:10B51000C0E0809102018F778093020165E070E0C6 -:10B5200080E090E00E94D444809102018068809382 -:10B530000201CC0F65E070E080E090E00E94D4440E -:10B54000809101018B7F809301018091000182FD38 -:10B55000C16065E070E080E090E00E94D444D1508A -:10B56000C1F6809102018F778093020180910101E1 -:10B5700084608093010180910201846080930201C4 -:10B5800062E070E080E090E00E94D444809102018B -:10B5900080688093020165E070E080E090E00E94A6 -:10B5A000D444809102018F778093020162E070E0C1 -:10B5B00080E090E00E94D4448091010184608093F7 -:10B5C00001018091020184608093020162E070E0D9 -:10B5D00080E090E00E94D444809102018F778093B4 -:10B5E000020162E070E080E090E00E94D4440E949A -:10B5F000952E44C05E9865E070E080E090E00E9487 -:10B60000D4445E9ACC0F65E070E080E090E00E9448 -:10B61000D44455984D99C16065E070E080E090E0B9 -:10B620000E94D444D15031F75E98559A5D9A62E0F9 -:10B6300070E080E090E00E94D4445E9A65E070E0A3 -:10B6400080E090E00E94D4445E9862E070E080E088 -:10B6500090E00E94D444559A5D9A62E070E080E0E8 -:10B6600090E00E94D4445E9862E070E080E090E058 -:10B670000E94D4440E94F12D01C0C0E08C2FDF91C4 -:10B68000CF910895E2EDF4E124813581DC010E943F -:10B690002076A1E0B1E02C9128602C93A0EAB0E0E4 -:10B6A0002C9120682C93DC01CB012AE0B695A7955C -:10B6B000979587952A95D1F79093A9008093A80034 -:10B6C000868180618093A1000895CF93DF9321E567 -:10B6D000829FC0011124EC01D55F40E550E0BE011E -:10B6E00082E894E118D4892B51F41092821440E539 -:10B6F00050E062E874E1CE01CBD380E001C081E08C -:10B70000DF91CF91089590E0FC013197E231F1058E -:10B7100008F04EC08827E654FF4F8F4F0C941876E0 -:10B72000809180008F7703C0809180008F7D80930F -:10B730008000089580918000877FF9CF84B58F774E -:10B7400002C084B58F7D84BD08958091B0008F774D -:10B7500003C08091B0008F7D8093B00008958091E8 -:10B7600090008F7707C0809190008F7D03C08091FB -:10B770009000877F8093900008958091A0008F773C -:10B7800007C08091A0008F7D03C08091A000877FBB -:10B790008093A0000895809120018F7707C0809149 -:10B7A00020018F7D03C080912001877F809320013D -:10B7B00008951F93CF93DF93282F30E0F901EA57C4 -:10B7C000F54F8491F901E05CF54FD491F901E65011 -:10B7D000F64FC491CC23B9F0162F811194DFEC2FD2 -:10B7E000F0E0EE0FFF1FE052F64FA591B4919FB726 -:10B7F000F894111104C08C91D095D82302C0EC911B -:10B80000DE2BDC939FBFDF91CF911F91089586338C -:10B8100008F0865390917B00282F2870977F922BF9 -:10B8200090937B008770806480937C0080917A0085 -:10B83000806480937A0080917A0086FDFCCF8091AD -:10B8400078002091790090E0922B08951F920F923A -:10B850000FB60F9211240BB60F922F933F934F9375 -:10B860005F936F937F938F939F93AF93BF93EF9368 -:10B87000FF9380917D1490917E1490932501809385 -:10B880002401E0917B14F0917C14309709F0199514 -:10B89000FF91EF91BF91AF919F918F917F916F91A8 -:10B8A0005F914F913F912F910F900BBE0F900FBE64 -:10B8B0000F901F9018951F920F920FB60F921124A0 -:10B8C0000BB60F922F933F934F935F936F937F939A -:10B8D0008F939F93AF93BF93EF93FF938091D41473 -:10B8E0009091D5149093A5008093A400E091D21478 -:10B8F000F091D314309709F01995FF91EF91BF9112 -:10B90000AF919F918F917F916F915F914F913F91F7 -:10B910002F910F900BBE0F900FBE0F901F90189598 -:10B92000E2E7F0E080818E7F808308951F920F927E -:10B930000FB60F9211248F939F93809108029091DC -:10B94000090290939500809394009F918F910F909E -:10B950000FBE0F901F9018951F920F920FB60F9267 -:10B9600011240BB60F922F933F934F935F936F93D6 -:10B970007F938F939F93AF93BF93EF93FF938091A8 -:10B980007614909177148093B200E0917414F09142 -:10B990007514309709F01995FF91EF91BF91AF9110 -:10B9A0009F918F917F916F915F914F913F912F91D7 -:10B9B0000F900BBE0F900FBE0F901F9018951F9207 -:10B9C0000F920FB60F9211240BB60F922F933F9345 -:10B9D0004F935F936F937F938F939F93AF93BF9397 -:10B9E000EF93FF9380912B15813071F08091291591 -:10B9F00081110AC00E94DD459FB7F89480912915F6 -:10BA00008360809329159FBFFF91EF91BF91AF9104 -:10BA10009F918F917F916F915F914F913F912F9166 -:10BA20000F900BBE0F900FBE0F901F90189589B10D -:10BA300080719091181596FD02C090E189278823A6 -:10BA400019F011F087E0089580E008952F923F9259 -:10BA50004F925F926F927F928F929F92AF92BF921E -:10BA6000CF92DF92EF92FF920F931F93CF93DF93CA -:10BA7000CDB7DEB768970FB6F894DEBF0FBECDBF67 -:10BA800090912A159111A6C1782E2BED34E1398BB6 -:10BA9000288B5901CE010D964C0100E010E0C12C1D -:10BAA000D12C7601A72DB0E0BD8BAC8B802F00236D -:10BAB00021F0013021F094E003C091E001C092E058 -:10BAC000F40191934F012C893D8902C0359527954A -:10BAD0008A95E2F720FF1BC020E030E040EC5FEBEE -:10BAE000D50194966D917D918D919C9197970E942F -:10BAF000DA74362E472E582E692EA70196010E9421 -:10BB0000817287FD04C0C32CD42CE52CF62C0F5F6A -:10BB10001F4FB4E0AB0EB11C0330110539F6809015 -:10BB20001E1590901F15A0902015B090211584E04F -:10BB3000682E01E06EE275E1CE0101960E94E54FAC -:10BB400080911915E82FF0E0FF8BEE8BFE01319606 -:10BB50002AE235E13B8B2A8B1901CE010D962C018F -:10BB600080E090E0188E10E0B701A60170582C8993 -:10BB70003D89082E02C0359527950A94E2F720FFEB -:10BB800025C0A88DAF5FA88FD10114961D921D927C -:10BB90001D921C9217972E893F89082E02C0359559 -:10BBA00027950A94E2F720FF03C0002319F007C08D -:10BBB000002329F0C082D182E282F38204C0408354 -:10BBC000518362837383D2012C91122B0196BFEFB4 -:10BBD0004B1A5B0A349624E0220E311C8330910507 -:10BBE00031F6388D632F70E080E090E00E94217381 -:10BBF0000E9447759B01AC01C501B4010E94DA7433 -:10BC00006B017C01109347150E94264020E0B7018C -:10BC1000A601CE0101960E9495410E9472500E9499 -:10BC200032390023E1F003DFFE013D9620E030E0F1 -:10BC300090E06191462F412359F0AC01022E02C0E1 -:10BC4000559547950A94E2F740FF02C06095162388 -:10BC50002F5F3F4F2330310561F7109347150E9446 -:10BC600072508091D9148473B9F08091D914807383 -:10BC700029F00E94DD450E94B533ACC00111A5C07A -:10BC8000D6DE8721B1F79FB7F8948091D9148B7FC6 -:10BC90008093D9149FBF04C0812F877009F0C1CF52 -:10BCA00019DB0E94374080912215909123150E9444 -:10BCB000124581E00827C9F020E030E040EA50E476 -:10BCC0006091241570912515809126159091271566 -:10BCD0000E94DA746B017C0180901A1590901B15FC -:10BCE000A0901C15B0901D1510C0C0902415D090C8 -:10BCF0002515E0902615F090271580901E15909040 -:10BD00001F15A0902015B09021156A94611012CFD4 -:10BD1000E0901915F12C8090241590902515A09095 -:10BD20002615B09027152401350177FA709477F81D -:10BD3000709400E010E08C899D89002E02C09595DA -:10BD400087950A94E2F780FF2CC0C701002E02C03D -:10BD5000959587950A94E2F7A889B98980FF11C063 -:10BD600094962D913D914D915C919797C501B401A9 -:10BD70000E94A871E889F98920813181428153812B -:10BD800006C02D913D914D915C91C301B2010E947D -:10BD9000DA740E94AA74EA89FB89648375838683B6 -:10BDA00097830F5F1F4F2A893B892C5F3F4F3B8B47 -:10BDB0002A8B888999890496998B888B0330110581 -:10BDC00009F0B9CF0E94264005C08091D91482FFA6 -:10BDD0005ACF4FCF68960FB6F894DEBF0FBECDBFD7 -:10BDE000DF91CF911F910F91FF90EF90DF90CF9057 -:10BDF000BF90AF909F908F907F906F905F904F908B -:10BE00003F902F900895EBE6F0E080818F7E808355 -:10BE1000E8E6F0E080818E7F8083089554985C9AF4 -:10BE20008091181583FF0BC080916B008061809317 -:10BE30006B00809168008160809368000895E3CF73 -:10BE40006EE275E188E995E10C94E54FF894F99973 -:10BE5000FECF92BD81BD81E08FBB80B58627482F84 -:10BE6000082E000C550B262F30E024233523232BDE -:10BE700039F06F3F19F060BD84E006C084E104C072 -:10BE8000882321F060BD84E28FBBF99A78940895ED -:10BE90009F92AF92BF92CF92DF92EF92FF920F9359 -:10BEA0001F93CF93DF935C018A017B01E40EF51EA3 -:10BEB000EB01912C6C01C61AD70ACE018C0D9D1D89 -:10BEC000CE15DF0581F0911008C0292D990C330B98 -:10BED000232F221F2227221F01C021E06991922EC9 -:10BEE000960EB4DFEACF692DC501800F911FDF9157 -:10BEF000CF911F910F91FF90EF90DF90CF90BF9067 -:10BF0000AF909F90A3CFF999FECF92BD81BD81E004 -:10BF10008FBB80B508959F92AF92BF92CF92DF9270 -:10BF2000EF92FF920F931F93CF93DF935B018A01F0 -:10BF30007C01E40EF51EEC01912C6B01C81AD90AA4 -:10BF4000C6018C0F9D1FCE15DF0581F0DCDF91103F -:10BF500008C0292D990C330B232F221F2227221FC3 -:10BF600001C021E0982E920E8993EACFC501800F7F -:10BF7000911FC9DF21E030E0981611F020E030E099 -:10BF8000C901DF91CF911F910F91FF90EF90DF904A -:10BF9000CF90BF90AF909F9008955C980895CF93F5 -:10BFA000DF93CDB7DEB7CC56D1090FB6F894DEBF1C -:10BFB0000FBECDBF8091C00082608093C000109200 -:10BFC000C50080E18093C4009091C100906190937E -:10BFD000C1009091C10098609093C1009091C10000 -:10BFE00090689093C1009091C80092609093C800AF -:10BFF0001092CD008093CC009091C90090619093F5 -:10C00000C9009091C90098609093C9009091C900AF -:10C0100090689093C9009091D00092609093D00066 -:10C020001092D5008093D4009091D10090619093AC -:10C03000D1009091D10098609093D1009091D1005F -:10C0400090689093D100909130019260909330016C -:10C050001092350180933401809131018061809389 -:10C0600031018091310188608093310180913101EB -:10C070008068809331010E94623E869A879A829AF4 -:10C0800080910A01886080930A0180910A01826090 -:10C0900080930A0180910701816080930701809A53 -:10C0A000819A579A8091070180618093070180915E -:10C0B0000701886080930701809107018460809365 -:10C0C0000701809108018061809308018091080137 -:10C0D000877F809308018091080184608093080124 -:10C0E0008091181582FF08C08A9A809108018160AA -:10C0F000809308015F9A07C08A98809108018E7F1B -:10C10000809308015F98809181008F7E80938100E9 -:10C1100080918100886080938100809180008C7F75 -:10C1200080938000809180008F7080938000809148 -:10C130006E00887F80936E0014BC15BC80916E00E9 -:10C14000816080936E0054985C9A80916D0080614C -:10C1500080936D00809168008460809368008AE01D -:10C1600090E00E9412450E94722B399A3B9A419AA4 -:10C17000439A8091010184608093010180910101C3 -:10C1800080688093010180910201846080930201A4 -:10C1900080910201806880930201559A569A5D9AB7 -:10C1A0005E9A0E94884E08E91EE081E090E07C01E2 -:10C1B0002FEFE21AF20AA7DED8018D938D01C70195 -:10C1C0008B3C9105A1F758E1C52E5EE0D52E870185 -:10C1D0000F5F1F4FC70197DEF60181936F01780152 -:10C1E0000B34F1E01F0799F74EE9E42E4DE0F42EF1 -:10C1F00068012FEFC21AD20AC80185DED7018D93DC -:10C200007D018601B5ECCB16B1E0DB0689F720E0B5 -:10C2100030E04AE754E464E071E080E090E00E949E -:10C22000162C84E893E06FDE8093620D85E893E03E -:10C230006ADE8093630D04E61DE088E993E07C01EB -:10C24000EFEFEE1AFE0A5FDED8018D938D01C70174 -:10C25000BCE9EB16B3E0FB0691F708E61DE08EE8BB -:10C2600093E07C01EFEFEE1AFE0A4DDED8018D93CC -:10C270008D01C701B2E9EB16B3E0FB0691F70CE6BE -:10C280001DE082E89CE07C01EFEFEE1AFE0A3BDE47 -:10C29000D8018D938D01C701B6E8EB16BCE0FB0613 -:10C2A00091F7C0906C0DD0906D0DE0906E0DF090F8 -:10C2B0006F0D20E030E044EB53E4C701B6010E946B -:10C2C0009F74181644F0A7019601C701B6010E9499 -:10C2D0008F75882341F010926C0D10926D0D1092A5 -:10C2E0006E0D10926F0D0BE11DE08AEE93E07C0164 -:10C2F000EFEFEE1AFE0A07DED8018D938D01C7011C -:10C30000B6EFEB16B3E0FB0691F760916C0D709100 -:10C310006D0D80916E0D90916F0DFE0131967F0134 -:10C320008F0124E045E00E942C6FFF92EF928AE09B -:10C3300093E09F938F930E94723F0F900F900F9006 -:10C340000F9080915A0D90915B0D019711F40E940E -:10C35000DE2A0E946F2B0E945E2B0E947A2D0E9483 -:10C36000E92A80917A00876880937A009B98A39A43 -:10C370008FE08093940D0E94842C8AEB92E09F932F -:10C380008F938CE193E09F938F930E94723F88EC90 -:10C3900092E09F938F938FE293E09F938F930E94FD -:10C3A000723F8FEC92E09F938F938FE393E09F9384 -:10C3B0008F930E94723F8091630D8F938091620DE5 -:10C3C0008F938EE493E09F938F930E94723F8FE54B -:10C3D00093E00E941A408EE1EAE2F5E1DF011D924E -:10C3E0008A95E9F781E080932A1578949091181541 -:10C3F0000FB6F894DEBF0FBECDBF94FD80932B1512 -:10C400009E01235C3F4F6F963FAF2EAF6F971E018B -:10C4100035E1230E311CCE018996A1969FAF8EAFD8 -:10C42000A197DE011196A396BFAFAEAFA3978091FF -:10C43000FD0F8093FC0F8FE3E1E8F5E1DF011D9232 -:10C440008A95E9F764EA75E180E00E94373D811141 -:10C4500003C087E00E9402330C9A549A549A0E94B7 -:10C46000CB3B549A9ADDDADC54985C9A0E943740B0 -:10C470000E946A590E942640E3DC10922A1510920D -:10C48000D9141092291510922C1510922D15809107 -:10C490002B15813099F486ED98E00E940B4080EBDB -:10C4A00098E00E940B4083E698E00E940B40A4961F -:10C4B0001FAEA497A5961FAEA5973CC010922B1552 -:10C4C000F6CF8091060185FD1FC02ADA1092990DE2 -:10C4D000809102018F7D8093020180916C0D90917B -:10C4E0006D0DA0916E0DB0916F0DB0588093660FD9 -:10C4F0009093670FA093680FB093690F60E070E0AE -:10C5000084EB92E40E94D62C8091620F9091630F8D -:10C51000A091640FB091650F892B8A2B8B2B51F45E -:10C520001092990DE3E6F3E0FF93EF930E94723FC0 -:10C530000F900F908091990D8823E1F0C2CFE92FE1 -:10C54000F0E0E458F04F80819F5F903809F490E06C -:10C550009093FC0F8F3F09F477C58A3091F08D30AE -:10C5600081F0A596BFADA597BB2309F439C58932E3 -:10C5700009F42FC59091FC0F8091FD0F9813DFCF28 -:10C5800063C502E814E1A4963FADA497E32FF0E061 -:10C59000EE57FB4E10820E94B53380912A1581110F -:10C5A00011C58AE0D1011D928A95E9F78091821424 -:10C5B000843209F076C481E08DAF80918314833496 -:10C5C00081F034F4882351F0843209F06FC209C03D -:10C5D000873439F0883509F069C203C088E696E0EF -:10C5E00054C39091841491114EC4833409F42DC224 -:10C5F0001CF4843241F04DC4873409F46AC1883593 -:10C6000009F440C246C480912B15887109F03DC4DD -:10C6100084E696E00E940B4080910B150E94FD3F3E -:10C620008BE496E00E940B4080910E150E94FD3F26 -:10C630008DE296E00E940B4080910C150E94FD3F18 -:10C6400084E196E00E940B4080910C150E94084006 -:10C650008DE096E00E940B4080910D150E94FD3FF9 -:10C6600085EF95E00E940B4080910D150E940840D7 -:10C670008EEE95E00E940B408091181582FB882772 -:10C6800080F90E94FD3F8DEC95E00E940B40809167 -:10C69000181586FB882780F90E94FD3F8DEA95E0FA -:10C6A0000E940B4080911815881F8827881F0E94C0 -:10C6B000FD3F8DE895E00E940B4080910F150E9490 -:10C6C000FD3F87E795E00E940B4080910F150E9487 -:10C6D00008408FE695E00E940B4060911015709124 -:10C6E000111580911215909113150E94A23F8FE4AD -:10C6F00095E00E940B406091141570911515809182 -:10C700001615909117150E94A23F84E395E00E94B0 -:10C710000B408091181581700E94FD3F87E195E0E4 -:10C720000E940B408091181585FB882780F90E9494 -:10C73000FD3F8CEF94E00E940B408091181583FB25 -:10C74000882780F90E94FD3F81EE94E00E940B4013 -:10C7500080911815829581700E94FD3F85EC94E0D0 -:10C760000E940B40809119150E94FD3F8BEA94E0D6 -:10C770000E940B40809119150E94084083EA94E0C2 -:10C780000E940B4060911A1570911B1580911C1529 -:10C7900090911D150E94A23F86E894E00E940B40F4 -:10C7A00060911E1570911F15809120159091211593 -:10C7B0000E94A23F89E694E00E940B4080912215DE -:10C7C0000E94FD3F8AE494E00E940B406091241592 -:10C7D0007091251580912615909127150E94A23FF2 -:10C7E00081E394E00E940B4010E034E6D32E2BED61 -:10C7F000E22E24E1F22E00E08FE294E00E940B4052 -:10C80000802F8D0D0E94FD3F8DE294E00E940B4031 -:10C81000123091F01330E1F0113031F0F701608106 -:10C820007181828193811CC0D7011C966D917D918D -:10C830008D919C911F9714C020E030E041E655E4B3 -:10C84000F701608D718D828D938D0E94887208C072 -:10C85000F70184A195A1A6A1B7A1BC01CD01905873 -:10C860000E94A23F8AE294E00E940B40013029F02E -:10C87000023031F088E294E005C086E294E002C024 -:10C8800084E294E00E940B40123051F0133059F0D2 -:10C89000113019F08AE194E008C088E094E005C006 -:10C8A00087EF93E002C087EE93E00E940B4083EE97 -:10C8B00093E00E940B400F5FF4E0EF0EF11C033099 -:10C8C00009F09ACF2AE0D20E1F5F3CE8D3128FCF37 -:10C8D000E0C281EE93E00E940B408091811582308E -:10C8E00091F038F4882361F08130A9F48BED93E066 -:10C8F0000CC0833069F0883071F481ED93E005C09D -:10C900008EED93E002C088ED93E00E940B400CC0D6 -:10C9100085ED93E0FACF8CEC93E00E940B40809180 -:10C92000811582500E94FD3F89EC93E00E940B40EC -:10C93000809187158A5C0E94FD3F8091851581302A -:10C9400049F028F0823051F48AEB93E005C084EC82 -:10C9500093E002C08FEB93E00E940B40809183151F -:10C96000811103C085EB93E002C080EB93E00E944D -:10C970000B4080918415811103C08BEA93E002C0C3 -:10C9800086EA93E00E940B4080918215813019F471 -:10C9900081EA93E002C08CE993E00E940B40809111 -:10C9A0008815813049F028F0823051F480E993E015 -:10C9B00005C088E993E002C084E993E00E940B403F -:10C9C00080918A15813031F040F0823051F488E84E -:10C9D00093E005C08CE893E002C084E893E00E94F5 -:10C9E0000B4080918915882329F0823039F48CE737 -:10C9F00093E002C080E893E00E940B4089E793E057 -:10CA00000E940B40809193150E94FD3F86E793E0C2 -:10CA10000E940B4060918F15709190158091911537 -:10CA2000909192150E94A43F83E793E00E940B40EF -:10CA300060918B1570918C1580918D1590918E154C -:10CA40000E94A43F8FE693E020C180912B15823095 -:10CA500049F40E94DD4586ED98E00E940B408DE888 -:10CA600098E00BC0811111C282E080932B1586EDF6 -:10CA700098E00E940B4086E998E00E940B4083E614 -:10CA800098E003C180912B15813009F002C286ED38 -:10CA900098E00E940B408EE998E00E940B4083E6EC -:10CAA00098E00E940B4010922B15F3C190912B152A -:10CAB000923008F0EAC1893409F4C5C034F48332F5 -:10CAC00059F0883409F480C064C18E3409F436C149 -:10CAD000823509F4F9C05DC182E08DAF8091841484 -:10CAE0008111D1C110E0BE016F5F7F4F812F0E9485 -:10CAF000373D811104C087E00E940233CAC18CE631 -:10CB000093E00E940B40163029F0173041F486E67E -:10CB100093E002C089E693E00E940B4004C086E3E4 -:10CB2000810F0E94FD3F84E693E00E940B40CE01FE -:10CB300001967C0100E0D7016D917D918D919D91D1 -:10CB40007D010E94B23F023019F082E693E002C0FC -:10CB50008EE593E00E940B400F5F033061F71F5F8B -:10CB6000183009F688E593E00E940B4090EBE92E1F -:10CB700095E1F92E10E0F701619171918191919108 -:10CB80007F010E94B23F123019F086E593E002C0A7 -:10CB900082E593E00E940B401F5F133061F78CE445 -:10CBA00093E00E940B406091BC157091BD1580917F -:10CBB000BE159091BF150E94B23F88E493E00E9499 -:10CBC0000B400E94623365C18091181584FF59C1E2 -:10CBD00084E080932B1517D984E00E94265D83E0C2 -:10CBE0000E94265D0E94B53380912A15811102C0F2 -:10CBF00027D914D980912A1581114BC110922B1578 -:10CC00000E94983610E0812F0E94655B811102C05E -:10CC100087E013C080918214882389F082E894E130 -:10CC20000E941A4082E894E10E948805811105C0A3 -:10CC30008BED99E00E940B4002C00E9402331F5FFF -:10CC4000123009F726C182E08DAF809184148111E2 -:10CC50001FC040E550E06EEA7BE082E894E15BD9DA -:10CC6000892B49F41092821440E550E062E874E1A7 -:10CC70008EEA9BE00DD988E393E00E940B4082E8A6 -:10CC800094E10E941A4084E393E00E940B4001C1AA -:10CC900093E09DAF8D3309F0F6C083E0282F30E09C -:10CCA000F901EE57FB4E9081D901A158BB4E9C93E0 -:10CCB0008F5F90819111F2CF8DAF40E550E062E837 -:10CCC00074E18EEA9BE0ABC082E08DAF809184146A -:10CCD000833509F0D8C083E08DAF80918514843509 -:10CCE00009F0D1C084E08DAF809186148D3309F0B6 -:10CCF000CAC0809188148111C6C085E08DAF809133 -:10CD00008714843239F08A3239F0833209F0BBC09B -:10CD100082E003C081E001C08FEF0E94583D86EDA4 -:10CD200098E00E940B4087E698E00E940B4083E663 -:10CD300098E00E940B400E94DD45ABC082E08DAFC1 -:10CD400080918414811121C010E0812F0E94655BC5 -:10CD5000811104C087E00E94023313C081E393E095 -:10CD60000E940B40812F0E94FD3F8FE293E00E94C2 -:10CD70000B4082E894E10E941A408CE293E00E940A -:10CD80000B401F5F123009F784C091117EC011E083 -:10CD900001C010E0AE01475D5F4FBE01635C7F4F95 -:10CDA00082E894E10E941D45811102C082E076C0B4 -:10CDB000EDAD81E08E0F8DAFF0E0EE57FB4E908130 -:10CDC0009D3309F060C0112361F1482F50E0282FF6 -:10CDD00030E0D901AE57BB4E9C91241B350BF901B5 -:10CDE000EE57FB4E90838F5F9C919111F0CF8DAFEA -:10CDF00082E894E10E948805811149C069A57AA55D -:10CE00008BA59CA50E9488750E94F572F1E56F9F25 -:10CE1000C001112440E550E062E874E1955F38D824 -:10CE200038C0AE014F5F5F4FBE01635C7F4F82E849 -:10CE300094E10E941D45882309F4B8CFEDADF0E0E0 -:10CE4000EE57FB4E808181111EC089A49AA4ABA429 -:10CE5000BCA420E030E04FE753E4C501B4010E94D8 -:10CE60009F74181684F0C980DA80EB80FC80C501BD -:10CE7000B4010E94F572862FB701A6010E94353CCD -:10CE800006C085E00BC083E009C088E007C08111BF -:10CE900005C08BED99E00E940B4094C00E940233C4 -:10CEA00091C08332D1F43F922F928BE793E09F930E -:10CEB0008F931F930F930E947976F10101900020C8 -:10CEC000E9F7BF01621973096E577B4E0F900F90FF -:10CED0000F900F900F900F900BC0873439F08D3466 -:10CEE00029F0803519F0833509F06CC062E874E1EF -:10CEF000DB018C91803511F0833509F58FEA9CE0D8 -:10CF00000E9444768D89882391F03F922F9283E886 -:10CF100093E09F938F9383EE9CE09F938F930E9467 -:10CF20004B760F900F900F900F900F900F9082E321 -:10CF3000E2E8F4E1DF011D928A95E9F743C08091B0 -:10CF4000AE04843148F087E893E09F938F930E946A -:10CF5000723F0F900F9036C00091AC04B6E6B09FC0 -:10CF600080011124C8018A549B4F0E9444768D8908 -:10CF7000882391F03F922F9283E893E09F938F93C1 -:10CF800006511B4F1F930F930E944B760F900F90EB -:10CF90000F900F900F900F9082E3E2E8F4E1DF0131 -:10CFA0001D928A95E9F78091AC04833120F48F5F5C -:10CFB0008093AC0402C01092AC048091AE048F5FE9 -:10CFC0008093AE04A4961FAEA497A5961FAEA59716 -:10CFD0003BC0B13009F0CECAA5961FAEA597CACA0C -:10CFE000813208F4C7CA8F3209F4C4CA883211F1F9 -:10CFF0008B3329F1A496EFADA497EF3438F08BE092 -:10D000000E940233A4961FAEA497B4CAA496FFADA3 -:10D01000A4972F2F30E04F2F4F5F9FE9980FF90112 -:10D02000EE57FB4E9A3108F480528083A4964FAF9E -:10D03000A497A0CA21E0A5962FAFA5979BCA32E07E -:10D04000A5963FAFA59796CA8091AF0C882399F01B -:10D050008FEA9CE00E9488058093E10C63EE7CE0FF -:10D060000E94822A81E08093E20C82E3AFEABCE076 -:10D070001D928A95E9F78091950D81113FC08091AD -:10D08000AE048823D9F180919A0D8823B9F180915B -:10D090009B0D882399F10091AD04B6E6B09F800105 -:10D0A00011240A541B4FC8010E948805F80182AB65 -:10D0B000F090AD04F6E6FF9D80011124B8016651A1 -:10D0C0007B4F0A541B4FD801D2968C910E94822A22 -:10D0D00081E0F80183AB82E3D8011D928A95E9F7DC -:10D0E000B2E1BF1520F0F394F092AD0402C01092AB -:10D0F000AD048091AE0481508093AE0480915A0DAE -:10D1000090915B0D8130910571F068F0823091054E -:10D1100069F0039789F5A59882E390E00E94124593 -:10D1200082E090E025C01092AF0426C08091AF0449 -:10D130008F5F8093AF04A59A80910301887739F0BF -:10D140001092AF049C9A9D9AA498A59A0AC082E373 -:10D1500090E00E9412458091AF048A3038F010921E -:10D16000AF0410925B0D10925A0D06C083E090E060 -:10D1700090935B0D80935A0D0E94A8330E94B533A3 -:10D1800080912A15811153C98091E20C882369F09E -:10D1900083EE9CE00E941A4082E3E3EEFCE0DF01B4 -:10D1A0001D928A95E9F71092E20C80912B15882345 -:10D1B00009F4E6C08091960D882309F41AC11092F3 -:10D1C000960D6D961CAE1DAE1EAE1FAE6D97699688 -:10D1D0001CAE1DAE1EAE1FAE699765961CAE1DAE91 -:10D1E0001EAE1FAE659784E16F96EEADFFAD6F97F3 -:10D1F000282F11922A95E9F7A196AEADBFADA19760 -:10D20000E82F1D92EA95E9F7D101E82F1D92EA95E2 -:10D21000E9F7A396AEADBFADA3971D928A95E9F746 -:10D2200080E090E00E94044FA9966CAF7DAF8EAF76 -:10D230009FAFA99781E090E00E94044FAD966CAF3C -:10D240007DAF8EAF9FAFAD9782E090E00E94044F1C -:10D250006B017C0120E030E040E05FE36091000280 -:10D260007091010280910202909103020E94A771C5 -:10D2700020E030E040E05FE30E94DA7420E030E03C -:10D2800044E353E40E94DA749B01AC0160E070E077 -:10D2900084E393E40E94A7712B013C0120E030E07D -:10D2A00044EB52E4C701B6010E94A771FE01EF5A98 -:10D2B000FF4F4F019E012B5A3F4F5901DE01A75AE4 -:10D2C000BF4F6D017B018C01AD962CAD3DAD4EADD8 -:10D2D0005FADAD97A9966CAD7DAD8EAD9FADA997B5 -:10D2E0000E94784CA401B501C6010E94194A6D96AE -:10D2F0006CAD7DAD8EAD9FAD6D978E01035C1F4F04 -:10D3000024E045E0A9D569966CAD7DAD8EAD9FADAD -:10D3100069970451110924E045E09ED565966CADEE -:10D320007DAD8EAD9FAD6597810124E045E094D53C -:10D330008E010F5F1F4F24E045E0C301B2018CD581 -:10D340001F930F933F922F92A196FFADA197FF934A -:10D35000A0962FADA0972F936F963FAD6F973F93F9 -:10D360006E968FAD6E978F9389E993E09F938F931D -:10D370000E94723F0FB6F894DEBF0FBECDBF39C01A -:10D3800080919A0D882309F415CF80919B0D8823F5 -:10D3900009F410CF04E110E082E3B82EA090AE0CA7 -:10D3A000B6E6BA9DC0011124FC01EA54FB4F7F018F -:10D3B00023A9222309F4FECE9C0126513B4F69018B -:10D3C000C9010E941A40D601EB2D1D92EA95E9F79A -:10D3D000D701D3961C92B2E1BA1528F081E08A0DEC -:10D3E0008093AE0C02C01092AE0C01501109B1F640 -:10D3F000E1CE82B301E083FB882780F980279091FA -:10D40000B5048917D9F08AE090E00E94124512B362 -:10D4100013FB112710F910278091B504181771F02C -:10D420001F921F938DEA93E09F938F930E94723F08 -:10D430001093B5040F900F900F900F908091B1044E -:10D440009091B204A091B304B091B4048F3F9105C0 -:10D45000A105B10509F060F40196A11DB11D8093ED -:10D46000B1049093B204A093B304B093B40424C065 -:10D470001092B1041092B2041092B3041092B4044A -:10D480008BE30E94075C11E08536910508F410E0FB -:10D490008091B004811781F01F921F9388EB93E075 -:10D4A0009F938F930E94723F1093B00410939C0D32 -:10D4B0000F900F900F900F9080912B15811112C03B -:10D4C0008091970D882371F08091980D882351F0F9 -:10D4D00080EC93E09F938F930E94723F1092980D7F -:10D4E0000F900F9080919D0D882309F423C880919F -:10D4F0002B15811128C18091940D8F3009F023C123 -:10D5000080919C0D882309F41EC18091150D909186 -:10D51000160D9C012F5F3F4F3093160D2093150D74 -:10D5200045970CF407C821961CAE1DAE1EAE1FAE6B -:10D53000219719A61AA61BA61CA61D8A1E8A1F8A39 -:10D54000188EE090900DF090910D0091920D109139 -:10D55000930D20918C0D30918D0D40918E0D509139 -:10D560008F0D6091880D7091890D80918A0D909139 -:10D570008B0D4101FE01B9965F01DE01DD966D0163 -:10D580000E94C24A80E090E00E94044F4B015C017F -:10D5900081E090E00E94044F6B017C0182E090E00A -:10D5A0000E94044F2B013C01A501940121966CAD12 -:10D5B0007DAD8EAD9FAD2197CAD69F7720E030E03C -:10D5C00040E05FE30E949F7418163CF1A7019601AA -:10D5D00069A57AA58BA59CA5BAD69F7720E030E0F7 -:10D5E00040E05FE30E949F741816BCF0A301920113 -:10D5F0006D897E898F89988DAAD620E030E044EB32 -:10D6000052E4A6D69F7720E030E040E05FE30E943E -:10D610009F74181614F00C949A628EE1EAE2F5E118 -:10D62000DF011D928A95E9F70E9426400E94205F43 -:10D630008092700D9092710DA092720DB092730D48 -:10D64000C092740DD092750DE092760DF092770D28 -:10D650004092780D5092790D60927A0D70927B0D08 -:10D6600080912E1590912F15A0913015B091311504 -:10D6700080937C0D90937D0DA0937E0DB0937F0DD4 -:10D680008091321590913315A0913415B0913515D4 -:10D690008093800D9093810DA093820DB093830DA4 -:10D6A0008091361590913715A0913815B0913915A4 -:10D6B0008093840D9093850DA093860DB093870D74 -:10D6C0008CE0A396EEADFFADA39711928A95E9F792 -:10D6D0008091880D9091890DA0918A0DB0918B0D4C -:10D6E00089839A83AB83BC8380918C0D90918D0D3F -:10D6F000A0918E0DB0918F0D8D839E83AF83B887DF -:10D700008091900D9091910DA091920DB091930DFB -:10D7100089879A87AB87BC87AE01475F5F4FBE01A1 -:10D720006B5F7F4FCE0101960E94194A00E020E016 -:10D7300030E048E452E4BE016F5F7F4F80E00E941A -:10D7400008460C949A621092160D1092150D0C94C6 -:10D750009A62CF930E94A833C9E20E94B5338091A8 -:10D760002A15811111C08091C9139091CA1398177D -:10D7700039F0C89FC001112489519F4E892B69F748 -:10D7800080912B15883049F3CF910895CF93209144 -:10D7900075153091761540917715509178156091F7 -:10D7A00098157091991580919A1590919B15A9D60D -:10D7B000811126C02091791530917A1540917B1501 -:10D7C00050917C1560919C1570919D1580919E15CE -:10D7D00090919F1596D6811113C0C1E020917D15BF -:10D7E00030917E1540917F15509180156091A01564 -:10D7F0007091A1158091A2159091A31582D68111E7 -:10D80000C0E08C2FCF910895CF92DF92EF92FF92DC -:10D810000F93CF93DF9330912B15323009F482C0F0 -:10D82000C02FD22F042F6B017C0193DF109246157D -:10D83000109228158091181587FD03C080E1809310 -:10D840002815DD2331F09091281580E189278093F8 -:10D85000281589B1807190912815891751F09FB7CB -:10D86000F894809129158061809329159FBF0E94AB -:10D87000B53380912A15811155C0A701960165E73E -:10D8800075E181E00E94084681E08093DA149FB739 -:10D89000F8948091D91482608093D9149FBF0E941C -:10D8A000B53380912A1581113DC080912B158111CE -:10D8B000F6CF8091DA148130A9F4CC2351F08CE0BA -:10D8C000EEE2F5E1AAE3B5E101900D928A95E1F768 -:10D8D0000CC09FB7F8948091291580618093291519 -:10D8E0009FBF03C081E0809346151092DA140E9416 -:10D8F000B53380912A15811115C00E946A590E9482 -:10D9000037400E9426406EE275E185E795E10E946E -:10D91000E54FDF91CF910F91FF90EF90DF90CF9087 -:10D920000C946233DF91CF910F91FF90EF90DF90D5 -:10D93000CF9008952F923F924F925F926F927F9275 -:10D940008F929F92AF92BF92CF92DF92EF92FF920F -:10D950000F931F93CF93DF93CDB7DEB7E1970FB649 -:10D96000F894DEBF0FBECDBF6D837E838F83988713 -:10D970002F87388B498B5A8B0D8BAD868B8A24E091 -:10D98000E29E80011124C80188569A4E9F8B8E8B8F -:10D99000D801A95ABA4EB98FA88F8D909D90AD909D -:10D9A000BC90FC012081318142815381C501B401C9 -:10D9B000CFD46A8F7B8F8C8F9D8FF4E0CF9E100128 -:10D9C0001124910128563A4E3F8F2E8FC101895A5A -:10D9D0009A4E99A388A3DC01CD90DD90ED90FC9048 -:10D9E000F9012081318142815381C701B601B0D450 -:10D9F0006AA37BA38CA39DA32401350177FA7094BD -:10DA000077F87094D701C601B05889839A83AB83A5 -:10DA1000BC83F801EB58FA4E2A8D3B8D4C8D5D8D01 -:10DA2000608171818281938192D44B015C01F1010B -:10DA3000EB58FA4E2AA13BA14CA15DA160817181F6 -:10DA40008281938184D46B017C01A5019401C3017F -:10DA5000B201B0D769877A878B879C87A701960127 -:10DA600069817A818B819C81A5D79B01AC016985F5 -:10DA70007A858B859C856CD469877A878B879C8710 -:10DA8000A7019601C301B20195D76B017C01A501E5 -:10DA9000940169817A818B819C818CD79B01AC0137 -:10DAA000C701B60154D429853A854B855C85C3D41A -:10DAB0006B017C019B89992389F02DEB37E346E0CC -:10DAC00055EBC701B6013BD787FD1AC02BED3FE0F0 -:10DAD00049EC50E4C701B6013AD410C02DEB37E34E -:10DAE00046E055E3C701B6010CD518164CF02BEDF6 -:10DAF0003FE049EC50E4C701B6012AD46B017C0138 -:10DB00008090141590901515A0901615B0901715CB -:10DB10002D813E814F815885CA01B90119D4A501D3 -:10DB2000940115D4A501940145D7B1D74B015C01EF -:10DB300020E030E040E05FE3C701B6013BD72D8134 -:10DB40003E814F81588536D79F77A5019401E0D457 -:10DB5000B5D54BD57C8B6B8BDB01AB2B09F459C155 -:10DB60004B01A12CB12CBD89BB2371F0C501B401BF -:10DB700068D59B01AC016F85788989899A891AD704 -:10DB80006F87788B898B9A8BC501B4015AD54B016D -:10DB90005C019B01AC01C701B601BAD46D837E83E1 -:10DBA0008F839887FD85E4E0FE9FC00111249C01CE -:10DBB00028563A4E3E872D87FC01EB58FA4ED90184 -:10DBC0002D913D914D915C91608171818281938114 -:10DBD000BED3A50194019CD46EA77FA788AB99AB57 -:10DBE0002D813E814F815885CA01B901E3D69B0141 -:10DBF000AC0160E070E080E090E4A9D36B017C01AF -:10DC00002BEA3AEA4AE25EE36D817E818F81988554 -:10DC1000D1D64B015C0120E030E040E850E4C70180 -:10DC2000B60196D39B01AC01C501B401C3D6698787 -:10DC30007A878B879C8720E030E040E05FE3C70174 -:10DC4000B601B8D66EA37FA388A799A710E02224B7 -:10DC50002394312CEB89FC89E215F30509F4D9C032 -:10DC60001C3008F03AC029813A814B815C816EA159 -:10DC70007FA188A599A59ED66B017C01A301920185 -:10DC800069857A858B859C8595D6A701960160D399 -:10DC90007B01082FD92EA30192016EA17FA188A537 -:10DCA00099A588D64B015C0129813A814B815C8121 -:10DCB00069857A858B859C857DD69B01AC01C501E4 -:10DCC000B40145D32B013C011F5FC701A02FBD2D1F -:10DCD00089839A83AB83BC835BC0B10180E090E011 -:10DCE000B0D42D813E814F81588564D66B017C0173 -:10DCF0000CD469837A838B839C83C701B601BDD61C -:10DD00004B015C01E88DF98DC080D180E280F38009 -:10DD1000F7FAF094F7F8F094A8A1B9A18D919D912C -:10DD20000D90BC91A02D8AA79BA7ACA7BDA7A7016A -:10DD3000960169817A818B819C813CD62B013C01C3 -:10DD40002AA53BA54CA55DA5C501B40133D69B0111 -:10DD5000AC01C301B201FCD22B013C01A701960129 -:10DD6000C501B40127D66B017C012AA53BA54CA5B2 -:10DD70005DA569817A818B819C811CD69B01AC0158 -:10DD8000C701B601E4D269837A838B839C8310E058 -:10DD9000A30192016A8D7B8D8C8D9D8DD9D2EE89E8 -:10DDA000FF89608371838283938329813A814B81C8 -:10DDB0005C816AA17BA18CA19DA1CAD2AE8DBF8DD1 -:10DDC0006D937D938D939C9313972EA53FA548A9A2 -:10DDD00059A9ED85FE856081718182819381B8D2D8 -:10DDE000AD85BE856D937D938D939C9313970D891F -:10DDF0002F85388949895A8968E975E181E00E944F -:10DE0000084680912A1581110EC0BFEF2B1A3B0ADC -:10DE100021CF0D892F85388949895A8965E775E1B0 -:10DE200081E00E940846E1960FB6F894DEBF0FBE6F -:10DE3000CDBFDF91CF911F910F91FF90EF90DF90B9 -:10DE4000CF90BF90AF909F908F907F906F905F909A -:10DE50004F903F902F900895EF920F931F93CF9381 -:10DE6000DF93E80147FD02C034E001C034E1042E35 -:10DE7000000C550B57FF03C0519541955109E32EF6 -:10DE8000022F242FAE0107D0CE01DF91CF911F9139 -:10DE90000F91EF9008958F929F92AF92BF92CF9281 -:10DEA000DF92EF92FF920F931F93CF93DF93CDB743 -:10DEB000DEB729970FB6F894DEBF0FBECDBF6A015B -:10DEC000122FB02E2BE3201720F0FF24F394F00E36 -:10DED00002C02CE3F22E0F2D27E0AE014F5F5F4F03 -:10DEE00050D1BC014981842F8970813031F0E1FC2F -:10DEF00006C0E0FE06C090E205C09DE203C09BE2C2 -:10DF000001C090E05E2D507143FF3CC0911102C0F2 -:10DF100083E001C084E0811718F4212F281B01C081 -:10DF200020E051110BC0F601822F30E2882319F056 -:10DF300031938150FBCFC20ED11C20E0992329F0F0 -:10DF4000D6019C93F60131966F01C6010396E2FE5D -:10DF50000AC03EE4D6013C9341E411964C931197DC -:10DF600012963C9306C03EE6F601308341E64183BB -:10DF70003283FC01322F40E2332309F442C0419343 -:10DF80003150FACF42FF44C0911102C083E001C07A -:10DF900084E0811718F4212F281B01C020E05111C3 -:10DFA0000BC0F601822F30E2882319F031938150A3 -:10DFB000FBCFC20ED11C20E0992329F0D6019C93FF -:10DFC000F60131966F01C6010396E2FE0BC039E4FB -:10DFD000D6013C933EE411963C93119736E4129699 -:10DFE0003C9307C039E6F60130833EE6318336E6DE -:10DFF0003283FC01322F40E2332319F04193315038 -:10E00000FBCFFC01E20FF11D10828EEF9FEFA6C047 -:10E0100021E030E0911102C020E030E01616170632 -:10E020001CF4FB01319602C0E1E0F0E02E0F3F1F2F -:10E03000BB2021F0EB2DF0E0319602C0E0E0F0E0F3 -:10E040002E0F3F1FE12FF0E02E173F071CF4121B8D -:10E05000212F01C020E08E2D887159F4F601822F06 -:10E0600030E2882319F031938150FBCFC20ED11CCE -:10E0700020E0992329F0D6019C93F60131966F0197 -:10E0800051110BC0F601822F90E3882319F0919370 -:10E090008150FBCFC20ED11C20E00F2D060F9A81BC -:10E0A000342F307144FF03C0913309F4015010162E -:10E0B00024F4093018F008E001C001E0AB0177FF5B -:10E0C00002C040E050E0FB01E41BF50BA1E0B0E032 -:10E0D000AC0FBD1FEA0FFB1F8EE2A82E4B01801A6A -:10E0E00091080B2D10E01195019511094F3FBFEFDD -:10E0F0005B0721F4D601AC9211966D016417750788 -:10E100002CF08416950614F4818101C080E34150FF -:10E1100051093196D60111967D014017510724F01F -:10E12000D6018C936701E2CF6417750739F49633F3 -:10E1300020F4953319F4311101C081E3F601808395 -:10E14000F701822F90E2882319F091938150FBCF41 -:10E15000F701E20FF11D108280E090E029960FB6E2 -:10E16000F894DEBF0FBECDBFDF91CF911F910F910D -:10E17000FF90EF90DF90CF90BF90AF909F908F90E7 -:10E180000895283008F027E03327DA01990F311D70 -:10E1900087FD916000966105710539F432602E5F4C -:10E1A0003D9330E32A95E1F708959F3F30F08038A2 -:10E1B0007105610509F03C5F3C5F3D93913008F0CB -:10E1C0008068911DDF93CF931F930F93FF92EF927F -:10E1D000192F987F9695E92F96959695E90FFF2729 -:10E1E000EA59FD4F99273327EE24FF24A701E701C1 -:10E1F00005900894079428F4360FE71EF81E491F6F -:10E20000511D660F771F881F991F0694A1F705906F -:10E21000079428F4E70EF81E491F561FC11D770FFB -:10E22000881F991F661F0694A1F70590079428F48C -:10E23000F80E491F561FC71FD11D880F991F661F53 -:10E24000771F0694A1F70590079420F4490F561FF5 -:10E25000C71FD81F990F661F771F881F0694A9F73D -:10E2600084911095177041F0D695C79557954795AD -:10E27000F794E7941A95C1F7ECE0F2E068941590F2 -:10E28000159135916591959105907FE27395E1180F -:10E29000F10A430B560BC90BD009C0F7E10CF11E74 -:10E2A000431F561FC91FD01D7EF4703311F48A9589 -:10E2B000E6CFE894015030F0080F0AF40027021767 -:10E2C00008F4202F2395022F7A3328F079E37D93E9 -:10E2D0002A95E9F710C07D932A9589F606949795BB -:10E2E0006795379517951794E118F10A430B560B6C -:10E2F000C90BD00998F023957E9173957A3308F075 -:10E3000070E37C932013B8F77E9170617D9330F0B9 -:10E31000839571E37D9370E32A95E1F71124EF90E3 -:10E32000FF900F911F91CF91DF91992787FD9095D5 -:10E3300008959F939F77D5D10F9000203AF490587D -:10E34000A2EA2AED3FE049E450E413D096C25058C7 -:10E35000BB27AA270ED091C25AD230F05FD220F04C -:10E3600031F49F3F11F41EF42AC20EF4E095E7FB4E -:10E37000F7C1E92FA4D280F3BA17620773078407A5 -:10E38000950718F071F49EF5D3C20EF4E0950B2EAC -:10E39000BA2FA02D0B01B90190010C01CA01A001F7 -:10E3A0001124FF27591B99F0593F50F4503E68F152 -:10E3B0001A16F040A22F232F342F4427585FF3CF93 -:10E3C000469537952795A795F0405395C9F77EF464 -:10E3D0001F16BA0B620B730B840BBAF09150A1F0AD -:10E3E000FF0FBB1F661F771F881FC2F70EC0BA0F33 -:10E3F000621F731F841F48F4879577956795B795BB -:10E40000F7959E3F08F0B3CF9395880F08F09927B2 -:10E41000EE0F979587950895FAD158F080E891E02E -:10E4200009F49EEFFBD128F040E851E059F45EEF8B -:10E4300009C0C5C17DC2E92FE07841D268F3092E39 -:10E44000052AC1F3261737074807590738F00E2E5B -:10E4500007F8E02569F0E025E0640AC0EF6307F8FB -:10E46000009407FADB01B9019D01DC01CA01AD018D -:10E47000EF935DD002D20AD05F91552331F02BED9E -:10E480003FE049E450FD49EC63CF0895DF93DD2779 -:10E49000B92FBF7740E85FE31616170648075B07FA -:10E4A00010F4D92F50D29F938F937F936F932DD3D6 -:10E4B000E8E9F1E087D1E1D12F913F914F915F9150 -:10E4C00085D2DD2349F09058A2EA2AED3FE049ECDD -:10E4D0005FE3D0785D274DDFDF91CFC112D280F0AE -:10E4E0009F3740F491110EF424C260E070E080E8A0 -:10E4F0009FE3089526F01B16611D711D811D36C115 -:10E5000050C10AD108F481E0089590D1E395C6C1C5 -:10E510000CD0B3C183D140F07AD130F021F45F3F09 -:10E5200019F01EC1511105C24AC1C9D198F39923EE -:10E53000C9F35523B1F3951B550BBB27AA276217C7 -:10E540007307840738F09F5F5F4F220F331F441F0C -:10E55000AA1FA9F333D00E2E3AF0E0E830D0915044 -:10E560005040E695001CCAF729D0FE2F27D0660F31 -:10E57000771F881FBB1F261737074807AB07B0E870 -:10E5800009F0BB0B802DBF01FF2793585F4F2AF086 -:10E590009E3F510568F0E4C0CCC15F3FECF3983E6C -:10E5A000DCF3869577956795B795F7959F5FC9F7E3 -:10E5B000880F911D9695879597F90895E1E0660F6C -:10E5C000771F881FBB1F621773078407BA0720F0E5 -:10E5D000621B730B840BBA0BEE1F88F7E09508954E -:10E5E00004D06894B111A5C1089571D188F09F57E6 -:10E5F00090F0B92F9927B751A0F0D1F0660F771F8F -:10E60000881F991F1AF0BA95C9F712C0B13081F06E -:10E610008FD1B1E008958CC1672F782F8827B85F1C -:10E6200039F0B93FCCF3869577956795B395D9F7CF -:10E630003EF490958095709561957F4F8F4F9F4FD9 -:10E640000895E89409C097FB3EF4909580957095E5 -:10E6500061957F4F8F4F9F4F9923A9F0F92F96E92E -:10E66000BB279395F695879577956795B795F111A3 -:10E67000F8CFFAF4BB0F11F460FF1BC06F5F7F4F40 -:10E680008F4F9F4F16C0882311F096E911C0772352 -:10E6900021F09EE8872F762F05C0662371F096E85B -:10E6A000862F70E060E02AF09A95660F771F881F2A -:10E6B000DAF7880F9695879597F9089522D180F01B -:10E6C0009F3740F491110EF034C160E070E080E8B3 -:10E6D0009FEB089526F41B16611D711D811D46C018 -:10E6E00060C0DF93CF931F930F938B01EC01E5EC98 -:10E6F000F1E068D0C2D09801AE018B01EC0160E07E -:10E7000070E080E89FE323DEC2D19801AE010F9153 -:10E710001F91CF91DF915AC1990F0008550FAA0B95 -:10E72000E0E8FEEF16161706E807F907C0F0121624 -:10E730001306E407F50798F0621B730B840B950B27 -:10E7400039F40A2661F0232B242B252B21F408957C -:10E750000A2609F4A140A6958FEF811D811D089519 -:10E7600097F99F6780E870E060E00895882371F46E -:10E77000772321F09850872B762F07C0662311F45A -:10E7800099270DC09051862B70E060E02AF09A9591 -:10E79000660F771F881FDAF7880F9695879597F988 -:10E7A00008959F3F31F0915020F4879577956795B4 -:10E7B000B795880F911D9695879597F908959FEFC6 -:10E7C00080EC0895DF93CF931F930F93FF92EF9206 -:10E7D000DF927B018C01689405C0DA2EEF01F6D040 -:10E7E000FE01E894A5912591359145915591AEF39F -:10E7F000EF01BFDDFE019701A801DA9479F7DF9000 -:10E80000EF90FF900F911F91CF91DF910895002419 -:10E810000A941616170618060906089500240A9485 -:10E8200012161306140605060895C9CF50D0E8F352 -:10E83000E894E0E0BB279F57F0F02AED3FE049EC79 -:10E8400006C0EE0FBB0F661F771F881F28F0B23A75 -:10E8500062077307840728F0B25A620B730B840BAC -:10E86000E3959A9572F7803830F49A95BB0F661F3E -:10E87000771F881FD2F7904896CF092E0394000C7B -:10E8800011F4882352F0BB0F40F4BF2B11F460FF4A -:10E8900004C06F5F7F4F8F4F9F4F0895EF93E0FF4E -:10E8A00006C0A2EA2AED3FE049EC5FEB62DDE5DF5E -:10E8B0000F90039401FC9058EDEEF1E03BC157FD41 -:10E8C0009058440F551F59F05F3F71F04795880FDE -:10E8D00097FB991F61F09F3F79F087950895121675 -:10E8E00013061406551FF2CF4695F1DF08C0161621 -:10E8F00017061806991FF1CF8695710561050894D2 -:10E900000895E5DFA0F0BEE7B91788F4BB279F386C -:10E9100060F41616B11D672F782F8827985FF7CF00 -:10E92000869577956795B11D93959639C8F30895A7 -:10E93000E894BB2766277727CB0197F90895ECDE8B -:10E9400008F48FEF08959B01AC0160E070E080E86F -:10E950009FE3DECDBCDF58F19E5758F19851A0F0EF -:10E96000E9F0983020F5092E9927660F771F881F48 -:10E97000991F0A94D1F712C0062E672F782F882787 -:10E98000985F11F4000C07C0993FB4F38695779512 -:10E9900067959395D9F7611D711D811D3EF4909582 -:10E9A0008095709561957F4F8F4F9F4F0895689424 -:10E9B000C0CFBECF0BD061CF2ADF28F02FDF18F0F9 -:10E9C000952309F0CDCEFBCE1124B3CF78DFA0F391 -:10E9D000959FD1F3950F50E0551F629FF001729FF4 -:10E9E000BB27F00DB11D639FAA27F00DB11DAA1F13 -:10E9F000649F6627B00DA11D661F829F2227B00D60 -:10EA0000A11D621F739FB00DA11D621F839FA00DEA -:10EA1000611D221F749F3327A00D611D231F849F3A -:10EA2000600D211D822F762F6A2F11249F57504091 -:10EA30008AF0E1F088234AF0EE0FFF1FBB1F661F2C -:10EA4000771F881F91505040A9F79E3F510570F0E5 -:10EA500087CE6FCF5F3FECF3983EDCF386957795DA -:10EA60006795B795F795E7959F5FC1F7FE2B880FE0 -:10EA7000911D9695879597F908959F93D7DE0F90EE -:10EA800007FCEE5F0BCF11F40EF499CE8ACE1FDF98 -:10EA9000D0F39923D9F3CEF39F57550B87FF43D07B -:10EAA0000024A0E640EA900180585695979528F4F6 -:10EAB000805C660F771F881F20F0261737074807EE -:10EAC00030F4621B730B840B202931294A2BA69545 -:10EAD00017940794202531254A2758F7660F771F8A -:10EAE000881F20F026173707480730F4620B730B96 -:10EAF000840B200D311D411DA09581F7B901842F94 -:10EB00009158880F9695879508959B01AC0152CF37 -:10EB1000F8DE20F09F3708F40CCF28CE42CEFCDD83 -:10EB2000880B990B089591505040660F771F881FEE -:10EB3000D2F708959F938F937F936F93FF93EF93F3 -:10EB40009B01AC0137DFEF91FF913CDE2F913F91AC -:10EB50004F915F912FCFDB018F939F9380D0BF9117 -:10EB6000AF91A29F800D911DA39F900DB29F900D1C -:10EB700011240895991B79E004C0991F961708F095 -:10EB8000961B881F7A95C9F780950895AA1BBB1B11 -:10EB900051E107C0AA1FBB1FA617B70710F0A61B9D -:10EBA000B70B881F991F5A95A9F780959095BC01BE -:10EBB000CD010895A1E21A2EAA1BBB1BFD010DC0B9 -:10EBC000AA1FBB1FEE1FFF1FA217B307E407F5071D -:10EBD00020F0A21BB30BE40BF50B661F771F881FF9 -:10EBE000991F1A9469F760957095809590959B018F -:10EBF000AC01BD01CF010895052E97FB16F40094DA -:10EC00000FD057FD05D0D6DF07FC02D046F408C070 -:10EC100050954095309521953F4F4F4F5F4F089548 -:10EC200090958095709561957F4F8F4F9F4F089578 -:10EC3000EE0FFF1F881F8BBF0790F691E02D1994F0 -:10EC4000A29FB001B39FC001A39F700D811D11242D -:10EC5000911DB29F700D811D1124911D0895F0DF4B -:10EC6000A59F900DB49F900DA49F800D911D112420 -:10EC70000895FB01DC010D900020E9F71197019048 -:10EC80000D920020E1F70895FB01DC0101900D9247 -:10EC90000020E1F708950F931F93CF93DF93CDB733 -:10ECA000DEB72E970FB6F894DEBF0FBECDBF0E892C -:10ECB0001F8986E08C831A8309838FEF9FE79E83E9 -:10ECC0008D83AE01465E5F4F688D798DCE010196D2 -:10ECD00059D0EF81F885E00FF11F10822E960FB604 -:10ECE000F894DEBF0FBECDBFDF91CF911F910F9182 -:10ECF0000895CF93DF93CDB7DEB72E970FB6F89474 -:10ED0000DEBF0FBECDBF85E08C838C899D899A8341 -:10ED10008983AE01485E5F4F6E897F89CE0101967F -:10ED2000E0D32E960FB6F894DEBF0FBECDBFDF91B5 -:10ED3000CF9108950F931F93CF93DF93CDB7DEB795 -:10ED40002E970FB6F894DEBF0FBECDBF8C0186E0C4 -:10ED50008C831A8309838FEF9FE79E838D83CE0177 -:10ED6000019610D0EF81F885E00FF11F10822E96EA -:10ED70000FB6F894DEBF0FBECDBFDF91CF911F91CC -:10ED80000F9108952F923F924F925F926F927F92D0 -:10ED90008F929F92AF92BF92CF92DF92EF92FF92AB -:10EDA0000F931F93CF93DF93CDB7DEB72B970FB69B -:10EDB000F894DEBF0FBECDBF6C017B018A01FC0160 -:10EDC00017821682838181FFBFC1CE0101963C016B -:10EDD000F6019381F70193FD859193FF81917F0166 -:10EDE000882309F4ADC1853239F493FD859193FFF1 -:10EDF00081917F01853221F4B60190E0F0D4E8CF13 -:10EE0000912C212C312CFFE1F315D8F08B3279F0C5 -:10EE100038F4803279F08332A1F4232D20611DC0B3 -:10EE20008D3261F0803369F4232D216016C0832D6B -:10EE30008260382EE32DE4603E2E2AC0F32DF86068 -:10EE40001DC037FC2DC020ED280F2A3040F08E3237 -:10EE5000B9F436FC75C1232D2064322E19C036FE5C -:10EE600006C08AE0989E200D1124922E11C0EAE07F -:10EE70002E9E200D1124222EF32DF0623F2E08C06D -:10EE80008C3621F4832D8068382E02C0883641F4F8 -:10EE9000F70193FD859193FF81917F018111B3CF9C -:10EEA000982F9F7D9554933028F40C5F1F4F9FE35C -:10EEB00099830DC0833631F0833771F0833509F0C3 -:10EEC00055C020C0F801808189830E5F1F4F8824C0 -:10EED0008394912C530112C02801F2E04F0E511C73 -:10EEE000F801A080B18036FE03C0692D70E002C039 -:10EEF0006FEF7FEFC5012AD44C018201F32DFF771C -:10EF00003F2E15C0280122E0420E511CF801A080BE -:10EF1000B18036FE03C0692D70E002C06FEF7FEF55 -:10EF2000C50109D44C01F32DF0683F2E820133FC5A -:10EF300019C0822D90E088169906A0F4B60180E2EF -:10EF400090E04DD42A94F5CFF50137FC859137FE3A -:10EF500081915F01B60190E042D421102A9421E012 -:10EF6000821A91088114910479F7E1C0843611F076 -:10EF7000893639F5F80137FE07C0608171818281D9 -:10EF800093810C5F1F4F08C060817181072E000CB8 -:10EF9000880B990B0E5F1F4FF32DFF763F2E97FFC7 -:10EFA00009C090958095709561957F4F8F4F9F4FC9 -:10EFB000F0683F2E2AE030E0A30166D4882E861840 -:10EFC00044C0853731F4232D2F7EB22E2AE030E065 -:10EFD00025C0932D997FB92E8F36C1F018F488354E -:10EFE00079F0AEC0803719F0883721F0A9C0E92F39 -:10EFF000E061BE2EB4FE0DC0FB2DF460BF2E09C033 -:10F0000034FE0AC0292F2660B22E06C028E030E068 -:10F0100005C020E130E002C020E132E0F801B7FE97 -:10F0200007C060817181828193810C5F1F4F06C090 -:10F030006081718180E090E00E5F1F4FA30124D4B6 -:10F04000882E8618FB2DFF773F2E36FE0DC0232D10 -:10F050002E7FA22E891458F434FE0BC032FC09C056 -:10F06000832D8E7EA82E05C0B82CA32C03C0B82CEF -:10F0700001C0B92CA4FE0FC0FE01E80DF11D808176 -:10F08000803321F49A2D997EA92E09C0A2FE06C0D4 -:10F09000B394B39404C08A2D867809F0B394A3FC8A -:10F0A00010C0A0FE06C0B21480F4280C922C9B184D -:10F0B0000DC0B21458F4B60180E290E090D3B3943E -:10F0C000F8CFB21418F42B1802C0982C212CA4FEEF -:10F0D0000FC0B60180E390E082D3A2FE16C0A1FC6F -:10F0E00003C088E790E002C088E590E0B6010CC05C -:10F0F0008A2D867851F0A1FE02C08BE201C080E229 -:10F10000A7FC8DE2B60190E06AD3891430F4B60111 -:10F1100080E390E064D39A94F8CF8A94F301E80DE9 -:10F12000F11D8081B60190E05AD38110F6CF2220E4 -:10F1300009F44ECEB60180E290E051D32A94F7CF85 -:10F14000F6018681978102C08FEF9FEF2B960FB655 -:10F15000F894DEBF0FBECDBFDF91CF911F910F910D -:10F16000FF90EF90DF90CF90BF90AF909F908F90E7 -:10F170007F906F905F904F903F902F90089520FD6B -:10F1800009C0FC0123FD05C022FF02C07383628316 -:10F1900051834083089544FD17C046FD17C0AB015D -:10F1A000BC01DA01FB01AA0FBB1FEE1FFF1F109469 -:10F1B000D1F74A0F5B1F6E1F7F1FCB01BA01660F8D -:10F1C000771F881F991F09C033E001C034E0660F24 -:10F1D000771F881F991F3150D1F7620F711D811D54 -:10F1E000911D08950F931F93CF93DF938C01C80156 -:10F1F000B8D2EC0197FD06C08BD2892BC1F7B801BC -:10F20000CE0129D3CE01DF91CF911F910F910895A7 -:10F210008F929F92AF92BF92EF92FF920F931F93A4 -:10F22000CF93DF938C01D62F7A01B22E9AD29C0114 -:10F2300033272B32310531F02D32310559F48B2D26 -:10F240008068B82ED15011F480E061C0C80189D225 -:10F2500097FDFACFCB2DCD7F2B2D2073F9F4803382 -:10F26000E9F4AA24AA94AD0E09F43EC0C80179D2EB -:10F2700097FD3AC09C012F7D33272835310541F495 -:10F28000C264D25089F1C8016CD297FF07C02CC06C -:10F29000B6FE02C0C26001C0C261DA2D812C912C81 -:10F2A000540120ED280F283078F0C4FF03C0B801C6 -:10F2B000D2D217C02A3040F0C6FFF9CF2F7D3FEEE3 -:10F2C000320F3630A0F727504C2FC501B40163DF51 -:10F2D0004B015C01C260D15051F0C80142D297FF8E -:10F2E000E0CFC1FD04C0B0CF812C912C5401C7FFE9 -:10F2F00008C0B094A09490948094811C911CA11C8F -:10F30000B11C2C2FB501A401C70139DF81E0DF91C9 -:10F31000CF911F910F91FF90EF90BF90AF909F9072 -:10F320008F9008955F926F927F928F929F92AF928B -:10F33000BF92CF92DF92EF92FF920F931F93CF93E2 -:10F34000DF93CDB7DEB7A0970FB6F894DEBF0FBE40 -:10F35000CDBF5C01962E7A01F9018E010F5F1F4F20 -:10F36000680180E2D8011D928A95E9F7D5011396CC -:10F370008C9080E090E0612C712C30E061E070E0D6 -:10F3800083FC259183FE21918F01522E211103C010 -:10F3900080E090E090C02E3511F4009751F1432F9A -:10F3A00050E0481759073CF42D3559F12D3219F426 -:10F3B000772009F103C0772009F468C0452D4695F0 -:10F3C00046954695D601A40FB11D452D47708B017A -:10F3D00002C0000F111F4A95E2F7A8015C91452B6E -:10F3E0004C93651459F0561410F45394E7CF5A9483 -:10F3F000E5CF31E004C07724739401C0712C0196ED -:10F40000BFCF772019F08E8180628E83311103C0C7 -:10F410008824839417C0F6019E012F5D3F4F8081A1 -:10F42000809581932E173F07D1F7F2CFE114F104B5 -:10F4300029F0D7018C93F70131967F019A94812CA2 -:10F440009920E9F0C5018DD197FD17C0FC01FF2778 -:10F4500023E0F595E7952A95E1F7EC0DFD1D208158 -:10F4600030E0AC014770552702C0359527954A9585 -:10F47000E2F720FDDBCFB501EED1811089CFE11499 -:10F48000F10411F0D7011C92C80115C0422F469516 -:10F4900046954695D601A40FB11D422F47708B01AA -:10F4A00002C0000F111F4A95E2F7A8015C91452B9D -:10F4B0004C93622EA4CFA0960FB6F894DEBF0FBE79 -:10F4C000CDBFDF91CF911F910F91FF90EF90DF9013 -:10F4D000CF90BF90AF909F908F907F906F905F90F4 -:10F4E00008955F926F927F928F929F92AF92BF9298 -:10F4F000CF92DF92EF92FF920F931F93CF93DF9300 -:10F500006C01EB015A01FC0117821682512CF601A5 -:10F51000E380FE01E3FC8591E3FE8191182FEF016A -:10F52000882309F4E0C090E0F3D0892B19F0C601DC -:10F5300059DEEDCF153241F4FE01E3FC1591E3FEF7 -:10F540001191EF01153271F4C6010BD197FDC9C0BD -:10F55000412F50E09C01332724173507C1F2B60133 -:10F560007AD1C1C01A3239F4E3FC1591E3FE11914E -:10F57000EF0101E001C000E0F12C20ED210F2A3065 -:10F5800078F402606F2D70E080E090E040E203DEEE -:10F59000F62EFE01E3FC1591E3FE1191EF01EDCF94 -:10F5A00001FF03C0F11003C09EC0FF24FA94183677 -:10F5B00019F01C3651F010C0FE01E3FC1591E3FE7A -:10F5C0001191EF01183641F408600460FE01E3FC7C -:10F5D0001591E3FE1191EF01112309F484C0612F0D -:10F5E00070E086E093E09CD0892B09F47CC000FD9C -:10F5F00007C0F50180809180C50102965C0102C0C0 -:10F60000812C912C1E3649F4F6014681578160E029 -:10F6100070E0202FC401B3DD7ACF1336A1F401FDD1 -:10F6200002C0FF24F394C6019CD097FD5AC08114F8 -:10F63000910429F0F4018083C40101964C01FA94ED -:10F64000F110F1CF4AC01B3551F49E01A4016F2D7A -:10F65000C60168DEEC01892B09F03FC039C0C60144 -:10F66000C1DD97FD3EC01F3649F128F4143621F163 -:10F67000193639F125C0133771F01537E9F020C07C -:10F680008114910429F0F4016082C40101964C01B7 -:10F69000FA94FF2059F0C60164D03C0197FD06C0E2 -:10F6A00037D0892B69F3B601C301D5D081149104F9 -:10F6B000A1F0F401108211C0006203C0006101C01A -:10F6C0000064202FA4016F2DC601A2DD811105C0A9 -:10F6D000F6018381807329F406C000FD18CF53948E -:10F6E00016CF552019F0852D90E002C08FEF9FEFC7 -:10F6F000DF91CF911F910F91FF90EF90DF90CF900E -:10F70000BF90AF909F908F907F906F905F90089583 -:10F71000911118C1803219F089508550D0F70895A1 -:10F72000FC010590061621F00020D9F7C0010895CC -:10F730003197CF010895FC01059061507040011090 -:10F74000D8F7809590958E0F9F1F0895FC0161500A -:10F75000704001900110D8F7809590958E0F9F1FF3 -:10F760000895CF93DF93EC012B8120FF33C026FF58 -:10F770000AC02F7B2B838E819F8101969F838E836E -:10F780008A8190E029C022FF0FC0E881F981808141 -:10F79000082E000C990B009719F420622B831AC0D5 -:10F7A0003196F983E8830EC0EA85FB85199597FFAA -:10F7B00009C02B81019611F080E201C080E1822B0B -:10F7C0008B8308C02E813F812F5F3F4F3F832E8365 -:10F7D000992702C08FEF9FEFDF91CF9108950F938C -:10F7E0001F93CF93DF93FB01238121FD03C08FEF94 -:10F7F0009FEF2CC022FF16C046815781248135819E -:10F800004217530744F4A081B1819D012F5F3F4F00 -:10F81000318320838C93268137812F5F3F4F37833D -:10F82000268314C08B01EC01FB010084F185E02DDF -:10F830001995892BE1F6D80116968D919C91179711 -:10F84000019617969C938E931697CE01DF91CF91D8 -:10F850001F910F910895FB01238120FF12C026FD07 -:10F8600010C08F3F3FEF930761F082832F7D2064AC -:10F8700023832681378121503109378326839927B5 -:10F8800008958FEF9FEF0895FA01AA27283051F1CC -:10F89000203181F1E8946F936E7F6E5F7F4F8F4FC1 -:10F8A0009F4FAF4FB1E03ED0B4E03CD0670F781F20 -:10F8B000891F9A1FA11D680F791F8A1F911DA11D05 -:10F8C0006A0F711D811D911DA11D20D009F468943E -:10F8D0003F912AE0269F11243019305D3193DEF6E6 -:10F8E000CF010895462F4770405D4193B3E00FD09C -:10F8F000C9F7F6CF462F4F70405D4A3318F0495D87 -:10F9000031FD4052419302D0A9F7EACFB4E0A69569 -:10F910009795879577956795BA95C9F7009761058B -:10F92000710508959B01AC010A2E069457954795E1 -:10F9300037952795BA95C9F7620F731F841F951FD6 -:0EF94000A01D0895992788270895F894FFCFF9 -:10F94E00AE47C13F08020000000000000073736361 -:10F95E00616E662025640D0A0053255B302D392D0E -:10F96E002B2E5D52255B302D392D2B2E5D48255BC0 -:10F97E00302D392D2B2E5D46255B302D392D2B2E1E -:10F98E005D004E256456255B302D392D2B2E5D46A0 -:10F99E00255B302D392D2B2E5D0058255B302D39F2 -:10F9AE002D2B2E5D59255B302D392D2B2E5D5A2595 -:10F9BE005B302D392D2B2E5D46255B302D392D2BB1 -:10F9CE002E5D0042255B302D392D2B2E5D4C255B97 -:10F9DE00302D392D2B2E5D52255B302D392D2B2EB2 -:10F9EE005D46255B302D392D2B2E5D002042257373 -:10F9FE00204C2573205225730A0053776966745084 -:10FA0E00726F002025730A0056342E362E300056A3 -:10FA1E00342E302E3400205625730A0020582573BC -:10FA2E0020592573205A25730A002053257320521E -:10FA3E002573204825730A004E2564002042256454 -:10FA4E00204C2564205225640A00616E676C652087 -:10FA5E006F66667365743A25730D0A006465766980 -:10FA6E006365206E616D65203A2025730D0A007363 -:10FA7E006F667420766572203A2025730D0A006138 -:10FA8E00706920766572203A2025730D0A00776F13 -:10FA9E00726B206D6F6465203A2025640D0A00405C -:10FAAE00310A0065666665637420636865636B2062 -:10FABE0074696D656F7574210D0A0023255B302DF9 -:10FACE00395D002425730045323320627566666504 -:10FADE00722066756C6C0D0A004033205825732019 -:10FAEE00592573205A2573205225730A004036205B -:10FAFE004E30205625640A004035205625640A00F3 -:10FB0E0040392056300A0041255B302D392D2B2EE1 -:10FB1E005D00562573002056310A00565542255B6E -:10FB2E00302D392E5D0046255B302D392E5D542546 -:10FB3E00640058255B302D392D2B2E5D59255B30F9 -:10FB4E002D392D2B2E5D5A255B302D392D2B2E5D0B -:10FB5E000042255B302D392D2B2E5D4C255B302D33 -:10FB6E00392D2B2E5D52255B302D392D2B2E5D0020 -:10FB7E0058255B302D392D2B2E5D59255B302D39B7 -:10FB8E002D2B2E5D5A255B302D392D2B2E5D5025BC -:10FB9E0064004E25645625640053255B302D392DA7 -:10FBAE002B2E5D0056255B302D392D2B2E5D002022 -:10FBBE00006F6B0045323000453231004532320065 -:10FBCE0056332E332E310056332E332E300056330D -:10FBDE002E332E320056302E302E30004532330A60 -:0CFBEE00004532300A004532310A0000A8 -:00000001FF diff --git a/hex/uArmPro_V4.7.0_release_20200710.hex b/hex/uArmPro_V4.7.0_release_20200710.hex new file mode 100644 index 0000000..a79a325 --- /dev/null +++ b/hex/uArmPro_V4.7.0_release_20200710.hex @@ -0,0 +1,4128 @@ +:100000006CC500008BC5000089C5000087C50000D5 +:1000100085C5000083C5000081C500007FC50000C4 +:100020007DC500000C94B15F79C500000C94585553 +:1000300075C5000073C5000071C500000C94654DC6 +:100040006DC500000C941E4569C5000067C5000021 +:1000500065C5000063C5000061C500000C944B44F9 +:100060005DC500000C94FC580C94EB5957C500007A +:1000700055C5000053C5000051C500004FC5000024 +:100080004DC500004BC5000049C500000C944F4D04 +:100090000C9495580C94BD5941C500003FC5000013 +:1000A0003DC500003BC500000C94AD4737C50000BE +:1000B00035C500000C94144D31C500002FC500005B +:1000C0002DC500002BC500000C94DF4C0C942E585D +:1000D0000C948F5923C500000C94C7570C94615998 +:1000E0001DC50000CE13D113E713EA13ED13F0136F +:1000F000F313C214021F021FD014E514FA140F15D3 +:10010000021F1815021F2B15021F3A154415A415BE +:10011000021F021F021F5B1575158F15D11DE11DF2 +:10012000101EE11D141E2B1E1A1E241E4F1E561ECD +:10013000611E6C1E8B1E8D1E901E921E3D27552724 +:100140006D2785279D27BE27D627574C5A4C494CEB +:100150004D4C534C914C5E4C624C684C6C4C704C0A +:10016000764C7A4C7E4C914C844C884C8C4CFC5593 +:100170000256055608560D5615561D568A568A566D +:100180008A562556285631563A568A568A568A56DF +:100190008A568A568A5642564C5658566256655664 +:1001A0006E5677567D56084AD73B3BCE016E84BCCF +:1001B000BFFDC12F3D6C74319ABD56833DDA3D00C1 +:1001C000C77F11BED9E4BB4C3E916BAAAABE00000A +:1001D00000803F072C7AA5BA6CC590DA3B9365FC8A +:1001E0008BBC53F810FD3C5692834DBD879D3AB6AB +:1001F0003DCBC9BF5BBE73DA0FC93F05A84CCDB27A +:10020000D44EB93836A9020C50B9918688083CA65C +:10021000AAAA2ABE000000803F0000407A10F35ACC +:1002200000A0724E18090010A5D4E80000E8764836 +:10023000170000E40B54020000CA9A3B000000E1E2 +:10024000F505000080969800000040420F00000075 +:10025000A08601000000102700000000E803000055 +:1002600000006400000000000A000000000001001F +:10027000000000002C76D888DC674F0823DFC1DF40 +:10028000AE59E1B1B796E5E3E453C63AE651997643 +:1002900096E8E6C28426EB898C9B62ED407C6FFC7D +:1002A000EFBC9C9F40F2BAA56FA5F490055A2AF7BF +:1002B0005C936B6CF9676DC11BFCE0E40D47FEF5C8 +:1002C00020E6B500D0ED902E030094357705008030 +:1002D000841E080000204E0A000000C80C3333338F +:1002E000330F986E12831141EF8D2114893BE6552F +:1002F00016CFFEE6DB18D1844B381BF77C1D901D12 +:10030000A4BBE424203284725E228100C9F124EC73 +:10031000A1E53D276364696E6F70737578585B0063 +:10032000000020002300260029002C002F003200AE +:10033000000100000301060109010D0A003D00242F +:100340004E005D0D0A005B302E396A2E3230313698 +:10035000303732363A005D0D0A005B544C4F3A009C +:100360005D0D0A002C005B4739323A005D0D0A0032 +:100370002C003A003330003238005B47005D0D0A34 +:1003800000205300204600205400204D3800204D0E +:100390003900204D3500204D3400204D3300204DD4 +:1003A0003200204D3100204D3000204739340020EC +:1003B0004739330020473931002047393000204782 +:1003C0003230002047323100204731390020473198 +:1003D000380020473137002047004733382E004788 +:1003E0003830004733004732004731004730005B68 +:1003F00000290D0A00206D61782074726176656CA9 +:100400002C206D6D0020616363656C2C206D6D2F59 +:100410007365635E3200206D617820726174652CB3 +:10042000206D6D2F6D696E002C20737465702F6DBB +:100430006D007A00790078002028003D002400201B +:1004400028686F6D696E672070756C6C2D6F6666BD +:100450002C206D6D290D0A002028686F6D696E676C +:10046000206465626F756E63652C206D736563290A +:100470000D0A2432373D002028686F6D696E6720B1 +:100480007365656B2C206D6D2F6D696E290D0A24C7 +:1004900032363D002028686F6D696E67206665659D +:1004A000642C206D6D2F6D696E290D0A2432353D47 +:1004B00000290D0A2432343D002028686F6D696ED2 +:1004C000672064697220696E76657274206D61734D +:1004D0006B3A002028686F6D696E67206379636CE2 +:1004E000652C20626F6F6C290D0A2432333D002089 +:1004F0002868617264206C696D6974732C20626F66 +:100500006F6C290D0A2432323D002028736F667407 +:10051000206C696D6974732C20626F6F6C290D0AF1 +:100520002432313D0020287265706F727420696E2C +:10053000636865732C20626F6F6C290D0A2432305A +:100540003D00202861726320746F6C6572616E6378 +:10055000652C206D6D290D0A2431333D0020286A59 +:10056000756E6374696F6E20646576696174696F16 +:100570006E2C206D6D290D0A2431323D00290D0AA3 +:100580002431313D002028737461747573207265C5 +:10059000706F7274206D61736B3A00202870726FF7 +:1005A00062652070696E20696E766572742C2062B7 +:1005B0006F6F6C290D0A2431303D0020286C696D65 +:1005C00069742070696E7320696E766572742C2070 +:1005D000626F6F6C290D0A24363D00202873746504 +:1005E0007020656E61626C6520696E766572742C30 +:1005F00020626F6F6C290D0A24353D00290D0A24F5 +:10060000343D00202864697220706F727420696E16 +:1006100076657274206D61736B3A00290D0A24337C +:100620003D0020287374657020706F727420696EAD +:1006300076657274206D61736B3A0020287374655F +:10064000702069646C652064656C61792C206D7321 +:100650006563290D0A24323D0020287374657020DB +:1006600070756C73652C2075736563290D0A2431D0 +:100670003D0024303D0024242028766965772047FA +:1006800072626C2073657474696E6773290D0A2435 +:1006900023202876696577202320706172616D655B +:1006A00074657273290D0A244720287669657720BE +:1006B000706172736572207374617465290D0A2408 +:1006C00049202876696577206275696C6420696EB7 +:1006D000666F290D0A244E20287669657720737489 +:1006E000617274757020626C6F636B73290D0A24DC +:1006F000783D76616C756520287361766520477258 +:10070000626C2073657474696E67290D0A244E78D3 +:100710003D6C696E65202873617665207374617223 +:1007200074757020626C6F636B290D0A2443202856 +:10073000636865636B2067636F6465206D6F6465D4 +:10074000290D0A245820286B696C6C20616C617239 +:100750006D206C6F636B290D0A2448202872756E1A +:1007600020686F6D696E67206379636C65290D0A77 +:100770007E20286379636C65207374617274290D1F +:100780000A2120286665656420686F6C64290D0A5B +:100790003F202863757272656E742073746174757E +:1007A00073290D0A6374726C2D7820287265736545 +:1007B00074204772626C290D0A0000002100240099 +:1007C00027002A002D003000330001010000040141 +:1007D00007010A010D0A00486F6D696E67206661A6 +:1007E000696C0050726F6265206661696C004162DD +:1007F0006F727420647572696E67206379636C65CB +:1008000000536F6674206C696D697400486172648E +:10081000206C696D697400414C41524D3A20003E94 +:100820000D0A002C4C696D3A002C52583A002C42AB +:1008300075663A002C002C57506F733A002C002C30 +:100840004D506F733A003C446F6F72003C436865D3 +:10085000636B003C416C61726D003C486F6D6500DC +:100860003C486F6C64003C52756E003C49646C659A +:10087000005D0D0A00526573746F72696E672064C3 +:10088000656661756C74730050676D20456E640019 +:10089000436865636B20446F6F72004469736162E3 +:1008A0006C656400456E61626C65640043617574DB +:1008B000696F6E3A20556E6C6F636B656400272418 +:1008C00048277C2724582720746F20756E6C6F632F +:1008D0006B00526573657420746F20636F6E74696A +:1008E0006E7565005B0000002200250028002B00CB +:1008F0002E003100340002010000050108010B0147 +:1009000005050505070508080808020202020A0A8B +:1009100008080404040401010101010101010303A9 +:10092000030303030303040707070C0C0C0C0C0C54 +:100930000C0C0202020206060606060606060B0B51 +:100940000B0B0B0B0B0B0102102020080810204092 +:100950001020408002010201080402010102040883 +:100960001020408080402010080402018004020111 +:10097000804020100804020108040201010204085A +:1009800010204080010204081020408000000A0B63 +:1009900002090C0D0E08070304010000000000000E +:1009A0000000000000000000000000000000000047 +:1009B0000000000000000000121110000000000004 +:1009C0000000000000000000000000000000000027 +:1009D00000005D0D0A003A002C005B5052423A00C4 +:1009E0000D0A00496E76616C69642067636F646507 +:1009F0002049443A00556E646566696E65642066F8 +:100A00006565642072617465004D6F64616C206778 +:100A1000726F75702076696F6C6174696F6E0048D3 +:100A20006F6D696E67206E6F7420656E61626C65B4 +:100A30006400416C61726D206C6F636B004E6F746B +:100A40002069646C6500454550524F4D20726561C8 +:100A500064206661696C2E205573696E6720646539 +:100A60006661756C74730056616C7565203C20334B +:100A700020757365630053657474696E67206469DB +:100A80007361626C65640056616C7565203C203052 +:100A900000496E76616C69642073746174656D657C +:100AA0006E7400426164206E756D62657220666FBF +:100AB000726D617400457870656374656420636F5E +:100AC0006D6D616E64206C65747465720065727220 +:100AD0006F723A20006F6B0D0A0011241FBECFEF1A +:100AE000D1E2DEBFCDBF00E00CBF14E0A0E0B2E079 +:100AF000E8EEFEEF00E00BBF02C007900D92AA3DAA +:100B0000B107D9F725E1AAEDB4E001C01D92AE3ED0 +:100B1000B207E1F70E94A0620C94727F71CA2F9213 +:100B20003F924F925F926F927F928F929F92AF927D +:100B3000BF92CF92DF92EF92FF920F931F93CF93CA +:100B4000DF93CDB7DEB7CE5CD1090FB6F894DEBF28 +:100B50000FBECDBFC754DF4F99838883C95BD04098 +:100B600089E3E0E7F4E1DF011D928A95E9F78AE085 +:100B7000E9EAF4E1A1E7B4E101900D928A95E1F789 +:100B8000FE01E756FF4F1082CD54DF4F19821882C5 +:100B9000C35BD040C155DF4F19821882CF5AD04075 +:100BA000C554DF4F1882CB5BD040C655DF4F18824B +:100BB000CA5AD040C255DF4F1882CE5AD040E859A9 +:100BC000F1093F019E01235A3F4FC456DF4F39833D +:100BD0002883CC59D0402E0131E5430E511CCE0163 +:100BE00089599F4FC256DF4F99838883CE59D04091 +:100BF000DE01AF58BF4FC056DF4FB983A883C05A3C +:100C0000D040E85AFF4FCD53DF4FF983E883C35CF0 +:100C1000D040C756DF4F8881C959D040C754DF4FF5 +:100C2000E881F981C95BD040E80FF11D10811123E3 +:100C300011F40C9407169FEB910F9A3110F00C945D +:100C4000F41E8F5FC756DF4F8883C959D040AE016D +:100C50004B565F4FBE0167567F4FC754DF4F8881A9 +:100C60009981C95BD0400E94303A882311F40C94DA +:100C7000F61ECB56DF4FC880D980EA80FB80C5596D +:100C8000D040C701B6010E9455780E94C275CB546E +:100C9000DF4F688379838A839B83C55BD040CB54C5 +:100CA000DF4F28803980C55BD040B10180E090E003 +:100CB0000E94EE759B01AC01C701B6010E947474DD +:100CC00020E030E048EC52E40E94A7774B015C0141 +:100CD00020E030E0A9010E946C7720E030E040E0A5 +:100CE0005FE387FD05C0C501B4010E94757404C0AF +:100CF000C501B4010E9474740E94BD75CA55DF4FCE +:100D000079836883C65AD0401D3411F40C94070FC0 +:100D100024F4173461F00C94AF14103511F40C94D2 +:100D2000A30F133511F40C9435140C94AF14C7565B +:100D3000DF4F8881C959D040C754DF4F288139819E +:100D4000C95BD040280F311DC9013AE9231638E0AC +:100D5000330609F4F6C058F4B4ED2B16B7E03B06A1 +:100D6000C9F0E9E92E16E8E03E06E1F1A0C5FDE98B +:100D70002F16F8E03F0609F406C32EE9221628E0F4 +:100D8000320609F4E4C43CE9231638E0330609F0DE +:100D90008EC50DC21A8219827F926F922EE634E0C0 +:100DA0003F932F939F938F930E9446790F900F90BC +:100DB0000F900F900F900F90181619060CF0E9C4C1 +:100DC00089819A819093990F8093980F11E01093E5 +:100DD000C30D8091450D8111F6C40E94382E1093E9 +:100DE000450DF1C48E010B5E1F4F1F930F939E01A3 +:100DF000275D3F4F3F932F937E01ADE3EA0EF11C39 +:100E0000FF92EF925F924F922DE132E03F932F934A +:100E10009F938F930E9446790FB6F894DEBF0FBE62 +:100E2000CDBF04970CF4B5C4EF961CAE1DAE1EAE3C +:100E30001FAEEF97E5961CAE1DAE1EAE1FAEE5973A +:100E4000AB961CAE1DAE1EAE1FAEAB97A1961CAEF0 +:100E50001DAE1EAE1FAEA1978CE0D3011D928A95E8 +:100E6000E9F7AE0145585F4F60E070E0C2010E94B3 +:100E7000303A882309F4A7C4AE014F585F4F60E0B1 +:100E800070E0C7010E94303A882309F49CC4AE0187 +:100E900049595F4F60E070E0CE0189960E94303A78 +:100EA000882309F490C4AE01435A5F4F60E070E0BC +:100EB000C8010E94303A882309F485C420E030E05C +:100EC00044EB52E4E5966CAD7DAD8EAD9FADE597FC +:100ED0000E94747421EE3EE245E652E40E9455758C +:100EE0006B017C01E5966CAF7DAF8EAF9FAFE59750 +:100EF0000E945275EF968CAC9DACAEACBFACEF9738 +:100F0000A50194010E94A77769837A838B839C83D0 +:100F1000C701B6010E940A789B01AC01C501B4016A +:100F20000E94A7776D837E838F839887AB968CAD65 +:100F30009DADAEADBFADAB9789879A87AB87BC87B8 +:100F400019C2F201108211821282138221961CAE04 +:100F50001DAE1EAE1FAE21977F926F928E010B5E6B +:100F60001F4F1F930F93C356DF4FF881CD59D040C9 +:100F7000FF93C456DF4F2881CC59D0402F9326E4ED +:100F800032E03F932F939F938F930E9446790FB641 +:100F9000F894DEBF0FBECDBF03970CF4FAC3A201D5 +:100FA00060E070E0C8010E94303A882309F40BC465 +:100FB000AE01435C5F4F60E070E0C3010E94303AD5 +:100FC000882309F400C4FE01B996C656DF4FF983A1 +:100FD000E883CA59D0408CE011928A95E9F7609174 +:100FE000AA0D7091AB0D8091AC0D9091AD0D0E944A +:100FF000F07520E030E040EA52E40E9455752091FF +:101000009E0D30919F0D4091A00D5091A10D0E9419 +:101010007574CE55DF4F688379838A839B83C25A68 +:10102000D0406091AE0D7091AF0D8091B00D909158 +:10103000B10D0E94F07520E030E040EA52E40E94D9 +:1010400055752091A20D3091A30D4091A40D5091A2 +:10105000A50D0E947574C154DF4F688379838A831C +:101060009B83CF5BD0406091B20D7091B30D8091A6 +:10107000B40D9091B50D0E94F07520E030E040EA8B +:1010800052E40E9455756B017C0120E030E044EB96 +:1010900052E46091A60D7091A70D8091A80D9091DA +:1010A000A90D0E9474749B01AC01C701B6010E9496 +:1010B00075747B018C016F968EAD9FAD6F978130FB +:1010C0009105B9F144F5892B09F070C320E030E0B7 +:1010D00044EB52E4D2016D917D918D919C910E94DF +:1010E0007474F20160837183828393839E012F5C09 +:1010F0003F4F4901DE019D965D01FE01B9966F01EA +:101100007B018C01C154DF4F288139814A815B8189 +:10111000CF5BD04034C08230910519F1039709F0BC +:1011200045C3D2016D917D918D919C910E94132FA9 +:101130004AC3D2016D917D918D919C91FE01F196F2 +:101140004F019E01235D3F4F5901DE0199966D01CC +:10115000C154DF4F288139814A815B81CF5BD04008 +:1011600016C0F2012081318142815381CE01C196A6 +:101170004C01DE019D965D01FE01B9966F01CE55D1 +:10118000DF4F688179818A819B81C25AD0400E9459 +:10119000AF51A401B501C6010E94504F21962CAD5C +:1011A0003DAD4EAD5FAD219700E0B6017BC38E0132 +:1011B0000B5E1F4F1F930F937E01B9E2EB0EF11CE4 +:1011C000FF92EF926E01EDE3CE0ED11CDF92CF9233 +:1011D0005F924F922EE532E03F932F939F938F9330 +:1011E0000E9446790FB6F894DEBF0FBECDBF0497BC +:1011F0000CF4CFC2EF961CAE1DAE1EAE1FAEEF9725 +:10120000E5961CAE1DAE1EAE1FAEE597AB961CAEAE +:101210001DAE1EAE1FAEAB97A1961CAE1DAE1EAE90 +:101220001FAEA197AE0145585F4F60E070E0C2016C +:101230000E94303A882309F4C6C2AE014F585F4F6E +:1012400060E070E0C6010E94303A882309F4BBC216 +:10125000AE0149595F4F60E070E0C7010E94303A2B +:10126000882309F4B0C2AE01435A5F4F60E070E0DA +:10127000C8010E94303A882309F4A5C26091B20DDA +:101280007091B30D8091B40D9091B50D0E94F075E1 +:10129000CE55DF4F688379838A839B83C25AD040BF +:1012A0006091AE0D7091AF0D8091B00D9091B10D28 +:1012B0000E94F075C154DF4F688379838A839B83D2 +:1012C000CF5BD0406091AA0D7091AB0D8091AC0DB9 +:1012D0009091AD0D0E94F075DE0119964D01FE0151 +:1012E00035965F016301CE55DF4FE880F9800A81B2 +:1012F0001B81C25AD040C154DF4F288139814A81B5 +:101300005B81CF5BD0400E949452A401B501C30120 +:101310000E94504FEF962CAD3DAD4EAD5FADEF97B7 +:1013200069817A818B819C810E94757469837A833B +:101330008B839C83E5962CAD3DAD4EAD5FADE597BF +:101340006D817E818F8198850E9475746D837E8307 +:101350008F839887AB962CAD3DAD4EAD5FADAB970F +:1013600069857A858B859C850E94757469877A87E3 +:101370008B879C87A1962CAD3DAD4EAD5FADA197FF +:1013800000E0B301E2C1C356DF4FF881CD59D04030 +:10139000FF93C456DF4F2881CC59D0402F93C156BC +:1013A000DF4F3881CF59D0403F93C256DF4FA881DD +:1013B000CE59D040AF93CF55DF4FB881C15AD040FE +:1013C000BF93C056DF4FE881C05AD040EF938E01E3 +:1013D00005581F4F1F930F932DE132E03F932F933A +:1013E0009F938F930E9446790FB6F894DEBF0FBE8D +:1013F000CDBF04970CF4CDC1CF56DF4F18821982B0 +:101400001A821B82C159D040C357DF4F18821982FC +:101410001A821B82CD58D040C757DF4F18821982DD +:101420001A821B82C958D040CB57DF4F18821982CD +:101430001A821B82C558D0408CE0D2011D928A9539 +:10144000E9F7AE014F565F4F60E070E0C8010E94BF +:10145000303A882309F4B7C1AE0143575F4F60E0CB +:1014600070E0CE018F589F4F0E94303A882309F4D4 +:10147000AAC1AE0147575F4F60E070E0CE018959C5 +:101480009F4F0E94303A882309F49DC1AE014B570B +:101490005F4F60E070E0CE01835A9F4F0E94303A68 +:1014A000882309F490C16091B20D7091B30D8091C1 +:1014B000B40D9091B50D0E94F075C154DF4F688353 +:1014C00079838A839B83CF5BD04020E030E044EB7C +:1014D00052E46091A60D7091A70D8091A80D909196 +:1014E000A90D0E9474746B017C0120E030E040EA99 +:1014F00052E4C154DF4F688179818A819B81CF5B3F +:10150000D0400E9455759B01AC01C701B6010E94F5 +:101510007574C953DF4F688379838A839B83C75C63 +:10152000D0406091AE0D7091AF0D8091B00D909153 +:10153000B10D0E94F075C553DF4F688379838A83AC +:101540009B83CB5CD0406091AA0D7091AB0D8091D4 +:10155000AC0D9091AD0D0E94F075CD53DF4F88809A +:101560009980C35CD040F2013496CE55DF4FF983A9 +:10157000E883C25AD0405F016201C154DF4FE88066 +:10158000F9800A811B81CF5BD040C553DF4F288192 +:1015900039814A815B81CB5CD0400E949452CD530B +:1015A000DF4F48815981C35CD040CE55DF4F688101 +:1015B0007981C25AD040C2010E94504FD2016D9130 +:1015C0007D918D919C9113971496CD90DD90ED9027 +:1015D000FC9017979B01AC010E94A7774B015C011F +:1015E000A7019601C701B6010E94A7779B01AC0134 +:1015F000C501B4010E9475740E941478CF56DF4F64 +:10160000288139814A815B81C159D0400E9475741B +:101610006B017C01CF56DF4F688379838A839B837C +:10162000C159D040C357DF4F288139814A815B813E +:10163000CD58D040C953DF4F688179818A819B8121 +:10164000C75CD0400E94757421EE3EE245E652E44C +:101650000E945575CE55DF4F688379838A839B83BB +:10166000C25AD0400E9452759B01AC01C701B6011D +:101670000E94A7774B015C01F20160837183828332 +:101680009383CE55DF4F688179818A819B81C25ACD +:10169000D0400E940A789B01AC01C701B6010E94AC +:1016A000A777D20114966D937D938D939C93179792 +:1016B000C757DF4F288139814A815B81C958D040A3 +:1016C00018966D917D918D919C911B970E947574D8 +:1016D000F20160877187828793878E01035C1F4FB9 +:1016E00024E045E0C501B4010E94F971D2011496CD +:1016F0006D917D918D919C9117970451110924E072 +:1017000045E00E94F971F2016085718582859385BB +:101710000451110924E045E00E94F971CF56DF4FD2 +:10172000688179818A819B81C159D040830124E0FD +:1017300045E00E94F971CB57DF4F288139814A81FA +:101740005B81C558D04000E0B20181E0ACC07F921F +:101750006F928E010B5E1F4F1F930F937E01F9E274 +:10176000EF0EF11CFF92EF926E012DE3C20ED11C21 +:10177000DF92CF9227E832E03F932F939F938F938E +:101780000E9446790FB6F894DEBF0FBECDBF049716 +:1017900084F41F9281E08F9381E192E09F938F9375 +:1017A0000E948B320F900F900F900F9082E390E089 +:1017B00080C0AE0145585F4F60E070E0C6010E94F6 +:1017C000303A811103C080E090E073C0AE014F5801 +:1017D0005F4F60E070E0C7010E94303A882399F3C0 +:1017E000AE0149595F4F60E070E0C8010E94303A95 +:1017F000882349F3AE01435A5F4F60E070E0C301B4 +:101800000E94303A8823F9F220E030E044EB52E4C1 +:10181000EF966CAD7DAD8EAD9FADEF970E94747469 +:101820007B018C01EF966CAF7DAF8EAF9FAFEF97D2 +:101830008CE0F20111928A95E9F7AB962CAD3DADA3 +:101840004EAD5FADAB97E5966CAD7DAD8EAD9FAD0A +:10185000E597CD53DF4F88809980C35CD040D2019B +:101860001496CE55DF4FB983A883C25AD0405D018C +:1018700062010E94AF51CD53DF4F48815981C35C53 +:10188000D040CE55DF4F68817981C25AD040C20125 +:101890000E94504FA1962CAD3DAD4EAD5FADA197CE +:1018A00000E0B20180E00E949B5B90E002C081E01A +:1018B00090E09C01215031092230310510F00C9448 +:1018C000601FB8E22B16310409F445C280F5F4E13B +:1018D0002F16310498F421E12216310408F07AC160 +:1018E00034E02316310409F479C008F4F6C09AE014 +:1018F0002916310409F45EC00C94021FACE12A16CB +:10190000310409F457C038F4E6E12E16310408F426 +:10191000BFC10C94021FFEE12F16310409F44AC026 +:1019200026E22216310409F4D8C00C94021F3DE3CC +:101930002316310409F4FEC110F595E3291631048C +:1019400009F44CC060F4BBE22B16310409F4B7C1B2 +:10195000E1E32E16310409F4B2C10C94021FFCE33A +:101960002F16310410F00C94021FCB54DF4F8881E6 +:10197000C55BD040865380937714F9E0D5C12CE540 +:101980002216310460F43AE52316310408F03DC113 +:1019900080E52816310409F4AEC00C94021F9CE5C2 +:1019A0002916310439F0AFE52A16310408F463C171 +:1019B0000C94021FCA55DF4FE881F981C65AD04006 +:1019C000EF2B11F00C94161FC255DF4FF881CE5A41 +:1019D000D040FF2309F452C00C94F81E2CE12216CB +:1019E0003104D1F148F484E02816310481F09AE002 +:1019F00029163104E9F01FC0AEE12A16310409F4BA +:101A000047C0B5E32B16310409F465C014C081E06A +:101A100010C0FFE12F16310408F051C02AE0221651 +:101A2000310479F4E1E0C255DF4FE883CE5AD0406B +:101A300082E080937014CE55DF4F1882C25AD04096 +:101A400097C13CE12316310409F09CC1F1E0C25575 +:101A5000DF4FF883CE5AD040CA55DF4F28813981F5 +:101A6000C65AD0402115310539F02A30310511F020 +:101A70000C94021F84E015C083E013C0EEE12E1623 +:101A8000310439F631E0C255DF4F3883CE5AD040A9 +:101A9000CA55DF4F88819981C65AD040009749F4D2 +:101AA00085E080937014CE55DF4F1882C25AD04023 +:101AB00074C10A9711F00C94021F86E0F2CF85E3FF +:101AC0002816310411F00C942B1F91E0C255DF4F02 +:101AD0009883CE5AD04087E0ACCFC255DF4FF88113 +:101AE000CE5AD040F1110C94F81E22E0C255DF4FBF +:101AF0002883CE5AD04032E02316310421F160F41D +:101B000021143104E1F02A94232809F02BC181E04B +:101B10008093711421E073C0A6E22A163104E9F023 +:101B2000B0E52B16310409F451C0E3E02E16310460 +:101B300009F018C183E08093711481E00DC1109207 +:101B40007114F1E0F1C082E08093711431E0CE5560 +:101B5000DF4F3883C25AD0400BC1CA55DF4FA8812E +:101B6000B981C65AD040AE31B10531F170F4549705 +:101B700011F00C94021F84E080937114F1E0CE55B3 +:101B8000DF4FF883C25AD04008C1CA55DF4FE88101 +:101B9000F981C65AD040E832F10599F0F29711F078 +:101BA0000C94021F87E08093711481E0CE55DF4FC3 +:101BB0008883C25AD040F1C085E08093711421E03F +:101BC00054C086E08093711431E0BFC088E08093F8 +:101BD0007114C8C0A2E12A16310441F0B3E12B16FA +:101BE000310449F010927514E2E063C081E0809303 +:101BF0007514F2E099C082E08093751422E0CE550E +:101C0000DF4F2883C25AD040B3C0CA55DF4F888106 +:101C10009981C65AD040892BB9F49AE52916310426 +:101C200049F410927414A3E0CE55DF4FA883C25A32 +:101C3000D040B3C081E080937414B3E0CE55DF4F41 +:101C4000B883C25AD040A9C0CA55DF4FE881F98194 +:101C5000C65AD0403A9711F00C94021FFAE52F169D +:101C6000310411F40C94021F24E0CE55DF4F288379 +:101C7000C25AD04092C03DE52316310429F481E0D8 +:101C80008093721485E068C01092721495E06BC066 +:101C9000A4E12A16310451F481E080937314B6E074 +:101CA000CE55DF4FB883C25AD04062C01092731431 +:101CB000E6E0CE55DF4FE883C25AD04059C0C25546 +:101CC000DF4FF881CE5AD040F1110C94F81E21E379 +:101CD0002216310479F41092761438E0CE55DF4F95 +:101CE0003883C25AD04083E0C255DF4F8883CE5A32 +:101CF000D04053C0CA55DF4FA881B981C65AD040E1 +:101D00001A9711F00C94021F81E080937614B8E0CA +:101D1000CE55DF4FB883C25AD040E3E0C255DF4F03 +:101D2000E883CE5AD04039C0CE55DF4FF883C25A2F +:101D3000D0401EC0CA55DF4F28813981C65AD040D5 +:101D4000232B11F00C94021F3AE0CE55DF4F38835D +:101D5000C25AD04022C087E0CE55DF4F8883C25A96 +:101D6000D04006C091E0CE55DF4F9883C25AD04094 +:101D7000CA55DF4FA881B981C65AD040AB2B69F054 +:101D80000C94291FCE55DF4F1882C25AD040B1E0C3 +:101D9000C255DF4FB883CE5AD040C155DF4FE881DE +:101DA000F981CF5AD040CF01A0E0B0E0CE55DF4F4F +:101DB0000880C25AD04004C0B695A79597958795DC +:101DC0000A94D2F780FF03C085E10C94601F81E084 +:101DD00090E0A0E0B0E0CE55DF4F0880C25AD0407E +:101DE00004C0880F991FAA1FBB1F0A94D2F7C155C0 +:101DF000DF4F28813981CF5AD040282B392BC1554C +:101E0000DF4F39832883CF5AD0400C940906CA5536 +:101E1000DF4F88819981C65AD040892B11F00C94EC +:101E2000291FC756DF4F8881C959D040C754DF4F9B +:101E300068817981C95BD040680F711DAE0147563A +:101E40005F4FCB54DF4F88819981C55BD0400E94A2 +:101E50007A1F9C01215031092230310510F00C9479 +:101E6000601F96E02916310428F4A3E02A163104F5 +:101E700090F026C0B8E02B16310410F40C94021F29 +:101E8000EAE02E16310408F440C0FEE12F163104BA +:101E900011F00C94021F22E02216310461F03EE1A1 +:101EA0002316310441F0232809F046C081E08093D5 +:101EB00078148BE032C082E0809378149BE036C0C7 +:101EC000A4E02A16310471F0B5E02B163104A1F01C +:101ED00081E080937A14ECE0CE55DF4FE883C25A5C +:101EE000D04092C482E080937A14FCE0CE55DF4F5C +:101EF000F883C25AD04088C410927A142CE0CE5590 +:101F0000DF4F2883C25AD0407FC439E02316310402 +:101F100051F082E0809379148DE0CE55DF4F8883B5 +:101F2000C25AD04071C4109279149DE0CE55DF4F53 +:101F30009883C25AD04068C4ABE0CE55DF4FA88327 +:101F4000C25AD04061C4CA55DF4F28813981C65A70 +:101F5000D040232B11F00C94291FC756DF4F8881E6 +:101F6000C959D040C754DF4FE881F981C95BD040DF +:101F7000E80FF11D37EB231638E0330609F416C3DA +:101F800008F066C19CE9291698E0390609F4D2C127 +:101F900008F07CC0B9E92B16B8E03B0609F4B0C1E3 +:101FA00008F065C0F8E92F16F8E03F0609F022C4F2 +:101FB00084E16E01E9E2CE0ED11CD601E82F1D921C +:101FC000EA95E9F77E01F5E1EF0EF11CD701E82F64 +:101FD0001D92EA95E9F7D3011D928A95E9F780E011 +:101FE00090E00E943B54CA55DF4F688379838A830F +:101FF0009B83C65AD04081E090E00E943B54CB5472 +:10200000DF4F688379838A839B83C55BD04082E0FE +:1020100090E00E943B544B015C01860124E045E0C6 +:10202000CA55DF4F688179818A819B81C65AD04029 +:102030000E94F971870124E045E0CB54DF4F6881AD +:1020400079818A819B81C55BD0400E94F9718301AF +:1020500024E045E0C501B4010E94F971FF92EF92BE +:10206000DF92CF927F926F9280EB92E04CC32AE98D +:10207000221628E0320609F45AC13BE9231638E05B +:10208000330609F0B7C38CEC92E03CC18EE9281608 +:1020900088E0380609F456C108F44FC1ACEA2A16A4 +:1020A000A8E03A0609F4DDC1BDEA2B16B8E03B060C +:1020B00009F0A0C3A1961CAE1DAE1EAE1FAEA19727 +:1020C000D2011D921D921D921C92139721961CAE57 +:1020D0001DAE1EAE1FAE219784E1FE01B996C65615 +:1020E000DF4FF983E883CA59D040282F11922A95EF +:1020F000E9F71E0135E1230E311CD101E82F1D92B5 +:10210000EA95E9F7D3011D928A95E9F780E090E01E +:102110000E943B54CB54DF4F688379838A839B832F +:10212000C55BD04081E090E00E943B54C154DF4F3A +:10213000688379838A839B83CF5BD04082E090E081 +:102140000E943B5420E030E044EB52E40E9474745F +:10215000CA55DF4F688379838A839B83C65AD040F0 +:10216000FE01FD964F0152019E01235A3F4F690126 +:102170007B018C01C154DF4F288139814A815B8109 +:10218000CF5BD040CB54DF4F688179818A819B81BE +:10219000C55BD0400E94AF51A401B201C6010E94AC +:1021A000504FA1966CAD7DAD8EAD9FADA197D20184 +:1021B000CD90DD90ED90FC909B01AC010E94A77743 +:1021C0004B015C01A7019601C701B6010E94A777E8 +:1021D0009B01AC01C501B4010E9475740E94147882 +:1021E0008E01075D1F4F24E045E00E94F97120E059 +:1021F00030E044EB52E4CA55DF4F688179818A812F +:102200009B81C65AD0400E947574810124E045E04C +:102210000E94F97121966CAD7DAD8EAD9FAD219779 +:10222000830124E045E00E94F9717F926F923F9212 +:102230002F92C556DF4FB881CB59D040BF93C656B9 +:10224000DF4FE881CA59D040EF938EEE92E05BC237 +:1022500020EC221628E0320609F4D4C1D0F489EB30 +:10226000281688E0380609F4B8C108F4ABC1AAEB17 +:102270002A16A8E03A0609F4B8C1BBEB2B16B8E061 +:102280003B0609F0B7C28091020185FB882780F9DF +:10229000B7C123EC221628E0320609F41CC2F0F480 +:1022A00081EC281688E0380609F4EAC192EC291678 +:1022B00098E0390609F09EC280918F0D8F9380912E +:1022C0008E0D8F9380918D0D8F9380918C0D8F93B8 +:1022D00080918B0D8F9380918A0D12C2A4EC2A16E7 +:1022E000A8E03A0609F41DC2B0E62B16B9E03B0699 +:1022F00009F080C28091910D8F938091900D76C2EC +:102300008EEB92E09F938F9387EC92E09F938F9355 +:1023100086E59DE09F938F930E9418790F900F9010 +:102320000F900F900F900F9080E090E065C28AE9C7 +:102330009FE0E8CF83ED92E0E5CF89E49DE09F93B5 +:102340008F938CC080818E3409F0BAC18181805313 +:10235000843008F0B5C194E16E01FDE3CF0ED11CCD +:10236000D601E92F1D92EA95E9F77E01F9E2EF0E19 +:10237000F11CD701E92F1D92EA95E9F75E01F5E11D +:10238000AF0EB11CD501E92F1D92EA95E9F7D301F3 +:102390001D929A95E9F78230E1F0833031F1813076 +:1023A00061F082E090E00E943B54850124E045E02A +:1023B0000E94F971BF92AF9251C080E090E00E94FC +:1023C0003B54860124E045E00E94F971DF92CF92F0 +:1023D00045C081E090E00E943B54870124E045E045 +:1023E0000E94F971FF92EF9239C08091900D909107 +:1023F000910D0497029748F46091940F7091950F96 +:102400008091960F9091970F22C020E030E040E03D +:102410005FE360910002709101028091020290914D +:1024200003020E94747420E030E040E05FE30E9409 +:10243000A77720E030E044E353E40E94A7779B01B4 +:10244000AC0160E070E084E393E40E947474830163 +:1024500024E045E00E94F9717F926F928AED92E04C +:1024600055CFA1961CAE1DAE1EAE1FAEA197F201B8 +:10247000108211821282138221961CAE1DAE1EAEF6 +:102480001FAE219784E19E01275D3F4FC656DF4F67 +:1024900039832883CA59D040D901E82F1D92EA9583 +:1024A000E9F71E01F5E12F0E311CD101E82F1D9235 +:1024B000EA95E9F7D3011D928A95E9F780E090E06B +:1024C0000E943B54CA55DF4F688379838A839B837C +:1024D000C65AD04081E090E00E943B54CB54DF4F7D +:1024E000688379838A839B83C55BD04082E090E0D8 +:1024F0000E943B5420E030E044EB52E40E947474AC +:10250000FE01FD964F0152019E01235A3F4F690182 +:102510007B018C01CB54DF4F288139814A815B815B +:10252000C55BD040CA55DF4F688179818A819B8124 +:10253000C65AD0400E94AF51A401B201C6010E9408 +:10254000504FA1966CAD7DAD8EAD9FADA1978E0124 +:10255000075D1F4F24E045E00E94F971D2016D91A3 +:102560007D918D919C91810124E045E00E94F9715B +:1025700021966CAD7DAD8EAD9FAD2197830124E09A +:1025800045E00E94F9717F926F923F922F92C5565B +:10259000DF4FB881CB59D040BF93C656DF4FE8819B +:1025A000CA59D040EF9380EE92E0ADC0A49B11C019 +:1025B0008FE30E94C04C8A30910558F08734910512 +:1025C00050F005C0479905C00898009B04C081E001 +:1025D00017C080E015C082E013C082B3869586954F +:1025E000869591E0892781700BC08BE30E94C04CD7 +:1025F00021E08536910508F420E01F922F93F7C063 +:102600001F92F4C07F926F928CEF92E09F938F9312 +:10261000FF93EF930E9446790F900F900F900F90C9 +:102620000F900F90181619060CF03DC029813A81C1 +:102630002634310508F044C0F901E457F64F84917F +:10264000F901EA5BF64F1491F901E050F74F04915C +:10265000002391F081110E943C4CE02FF0E0EE0F3E +:10266000FF1FE05EFC4FA591B491EC911E2381E029 +:1026700090E021F480E002C080E090E09F93B6C03B +:102680007F926F928CEF92E09F938F93FF93EF93E3 +:102690000E9446790F900F900F900F900F900F901F +:1026A0001816190684F01F9281E08F9381E192E061 +:1026B0009F938F930E948B320F900F900F900F90EB +:1026C00082E390E099C089819A8180319105C0F7B9 +:1026D0000E94C04CD3CF80E090E00E94E953182FB5 +:1026E000092F81E090E00E94E953F82EE92E82E064 +:1026F00090E00E94E953EF92FF920F931F939F93F4 +:102700008F9380E093E09F938F9386E59DE09F9366 +:102710008F930E9418790FB6F894DEBF0FBECDBF1D +:1027200003CE6BE080E00E94844A182F6BE081E0CA +:102730000E94844A1871E1E0F0E0183111F0E0E005 +:10274000F0E09F01220F331F220F331F8871E1E059 +:10275000F0E0883111F0E0E0F0E0EE0FFF1F122F03 +:102760001E2B6BE082E00E94844A8871E1E0883190 +:1027700009F0E0E0E12B8E2FEE0F990BAA0BBB0BBB +:10278000FC013197E730F10530F48827EE58FF4F10 +:102790008F4F0C94E5781F921F9229C01F9281E001 +:1027A00002C01F9282E08F9386EB93E09F938F93FA +:1027B00086E59DE09F938F930E9418790F900F906C +:1027C0000F900F900F900F9084E390E015C01F9230 +:1027D00083E0E9CF1F9284E0E6CF1F9285E0E3CF4C +:1027E0001F9286E0E0CF1F9287E0DDCF8F9386EBCC +:1027F00093E08CCD81E090E09C01215031092230A2 +:10280000310510F00C94601FC155DF4FE881F9814C +:10281000CF5AD040CF01A0E0B0E0CE55DF4F0880C6 +:10282000C25AD04004C0B695A795979587950A944B +:10283000D2F780FDC9CA81E090E0A0E0B0E0CE55BB +:10284000DF4F0880C25AD04004C0880F991FAA1FCA +:10285000BB1F0A94D2F7E82BF92BC155DF4FF98340 +:10286000E883CF5AD0400C940906CA55DF4F28811F +:102870003981C65AD040232B11F00C94291F38EE11 +:10288000231633E0330641F08CE4281684E0380642 +:1028900049F50E94715B23C0C756DF4F8881C95933 +:1028A000D040C754DF4FE881F981C95BD040E80FC1 +:1028B000F11D80818635C9F4818180538230A8F46E +:1028C0009FB7813029F0F89480910114886004C08A +:1028D000F894809101148260809301149FBF80E07E +:1028E00090E005C081E090E002C082E390E09C01AE +:1028F000215031092230310510F00C94601FC15570 +:10290000DF4FE881F981CF5AD040CF01A0E0B0E09D +:10291000CE55DF4F0880C25AD04004C0B695A79567 +:10292000979587950A94D2F780FD4ECA81E090E092 +:10293000A0E0B0E0CE55DF4F0880C25AD04004C0BE +:10294000880F991FAA1FBB1F0A94D2F7E82BF92BF7 +:10295000C155DF4FF983E883CF5AD04095C0812F0E +:10296000110F990BAA0BBB0BFC01E654F109E531E1 +:10297000F10510F00C94021F8827E758FF4F8F4F86 +:102980000C94E578C0927B14D0927C14E0927D1474 +:10299000F0927E14CE55DF4F1882C25AD040DAC072 +:1029A000C0927F14D0928014E0928114F09282142D +:1029B000C554DF4FF881CB5BD040F160C554DF4F89 +:1029C000F883CB5BD04021E04FC0C0928314D092FB +:1029D0008414E0928514F0928614C554DF4F388138 +:1029E000CB5BD0403260C554DF4F3883CB5BD040E7 +:1029F00082E05BC0C0928714D0928814E092891460 +:102A0000F0928A14C554DF4F9881CB5BD04094601C +:102A1000C554DF4F9883CB5BD040A3E060C0CB545C +:102A2000DF4FB881C55BD040B0938B14E4E071C038 +:102A3000C701B6010E94BD7560938C1470938D140C +:102A400080938E1490938F14F5E0CE55DF4FF8836A +:102A5000C25AD0407FC0C0929014D0929114E0929C +:102A60009214F092931426E0CE55DF4F2883C25A79 +:102A7000D04070C0C0929414D0929514E0929614F5 +:102A8000F092971437E061C0CB56DF4F888199816F +:102A9000AA81BB81C559D040809398149093991412 +:102AA000A0939A14B0939B1488E0CE55DF4F88838F +:102AB000C25AD0404FC0C0929D14D0929E14E09252 +:102AC0009F14F092A014C655DF4F9881CA5AD04087 +:102AD0009160C655DF4F9883CA5AD040AAE0CE55C0 +:102AE000DF4FA883C25AD04035C0C092A114D09203 +:102AF000A214E092A314F092A414C655DF4FB8813B +:102B0000CA5AD040B260C655DF4FB883CA5AD040C7 +:102B1000EBE0CE55DF4FE883C25AD0401BC0C092D5 +:102B2000A514D092A614E092A714F092A814C6554A +:102B3000DF4FF881CA5AD040F460C655DF4FF883A2 +:102B4000CA5AD0402CE090CF39E0CE55DF4F3883C1 +:102B5000C25AD040CE55DF4F8881C25AD040082F8C +:102B6000CD54DF4FE881F981C35BD040CF01A0E0B5 +:102B7000B0E0CE55DF4F0880C25AD04004C0B695B1 +:102B8000A795979587950A94D2F780FF02C00C9479 +:102B9000FA1E81E693E0A0E0B0E0CE55DF4F08805A +:102BA000C25AD04004C0B695A795979587950A94C8 +:102BB000D2F780FF11C020E030E0A901CB56DF4FF3 +:102BC000688179818A819B81C559D0400E944E7568 +:102BD00087FF02C00C94FC1E81E090E0A0E0B0E012 +:102BE00004C0880F991FAA1FBB1F0A95D2F7CD54A6 +:102BF000DF4F28813981C35BD040282B392BCD543E +:102C0000DF4F39832883C35BD0400C940906C65537 +:102C1000DF4F3881CA5AD040332369F0C255DF4FA5 +:102C20008881CE5AD040811106C092E0C255DF4F54 +:102C30009883CE5AD040CD54DF4FA881C35BD0409B +:102C4000A5FF0FC080918C1490918D14A0918E14CB +:102C5000B0918F1480389649A849B10514F00C94AE +:102C6000FE1E80917214813091F4C255DF4FF881BD +:102C7000CE5AD040F23009F040C0CD54DF4F288109 +:102C8000C35BD04020FD02C00C94081F36C0809169 +:102C9000AA14811132C0CD54DF4F3881C35BD040BC +:102CA00030FF1BC080917314813039F523E333E387 +:102CB0004BEC51E460917B1470917C1480917D14F5 +:102CC00090917E140E94A77760937B1470937C147C +:102CD00080937D1490937E1410C08091B7149091CE +:102CE000B814A091B914B091BA1480937B14909346 +:102CF0007C14A0937D14B0937E14CD54DF4F888153 +:102D00009981C35BD04090FD10C08091B314909125 +:102D1000B414A091B514B091B61480939814909304 +:102D20009914A0939A14B0939B14809170148130DD +:102D3000B9F4CD54DF4F9881C35BD04096FD03C0FA +:102D40008CE10C94601FCD54DF4FA881B981C35B27 +:102D5000D040AF7BCD54DF4FB983A883C35BD04055 +:102D6000809175148823A1F0813021F1C754DF4F81 +:102D70001882C95BD040F2E0CA55DF4FF883C65ACB +:102D8000D04021E0CE55DF4F2883C25AD04023C027 +:102D9000B2E0C754DF4FB883C95BD040E1E0CA5509 +:102DA000DF4FE883C65AD040CE55DF4F1882C25A53 +:102DB000D04011C031E0C754DF4F3883C95BD040E9 +:102DC000CA55DF4F1882C65AD04082E0CE55DF4F39 +:102DD0008883C25AD04080917314813049F0C25523 +:102DE000DF4F9881CE5AD040933009F043C036C0AF +:102DF000B0E7EB2EB4E1FB2E00E010E0C655DF4F4C +:102E0000A881CA5AD0408A2E912CA12CB12CD50170 +:102E1000C401002E04C0B695A795979587950A948E +:102E2000D2F780FF12C023E333E34BEC51E4F70108 +:102E300065A576A587A590A90E94A777D7019D963D +:102E40006D937D938D939C93D0970F5F1F4FB4E04C +:102E5000EB0EF11C03301105D1F6C1CF8091761431 +:102E6000813041F4C655DF4FE881CA5AD040E43082 +:102E700009F0C6C78CE0ECECF4E1DE01119601909C +:102E80000D928A95E1F7C155DF4F28813981CF5ADC +:102E9000D04031FD08C0109170141230C1F01830CC +:102EA00009F4E9C057C180917714873018F08DE19B +:102EB0000C94601F9091AF14891769F3BE016F5F86 +:102EC0007F4F0E949F56882309F4AEC7E4CFC655B2 +:102ED000DF4F3881CA5AD040311102C08AE1F0C7B1 +:102EE000CD54DF4F88819981C35BD040807599278D +:102EF000892B09F425CF60919014709191148091E1 +:102F00009214909193140E9455780E94C275673074 +:102F100070F680918B14843151F0823009F072C7C1 +:102F2000CD54DF4F8881C35BD04087FD6BC7CD5444 +:102F3000DF4FA881B981C35BD040AF7ACD54DF4F5A +:102F4000B983A883C35BD040662321F022242A944E +:102F5000260E02C020907714BE016B5E7F4F822D3B +:102F60000E949F56882309F45FC730908B1480908D +:102F7000E4149090E514A090E614B090E714A0E754 +:102F8000CA2EA4E1DA2E8E010B5E1F4FE9EAF4E1AE +:102F9000C155DF4FF983E883CF5AD040E12CF12CA3 +:102FA000C655DF4FF881CA5AD0404F2E512C612CA4 +:102FB000712CD301C2010E2C04C0B695A79597952C +:102FC00087950A94D2F780FF3BC024E132122EC0CD +:102FD000C155DF4FA881B981CF5AD0409F962D911E +:102FE0003D914D915C91D29757966D917D918D91C8 +:102FF0009C915A970E947474F60125A536A547A5A1 +:1030000050A90E947474D8016D937D938D939C9305 +:103010001397B2E0EB1214C0A50194010E947474DE +:10302000F80160837183828393830AC0F60185A5CA +:1030300096A5A7A5B0A9F80180839183A283B38345 +:10304000FFEFEF1AFF0A24E0C20ED11C0C5F1F4FE6 +:10305000C155DF4F88819981CF5AD0400496C15520 +:10306000DF4F99838883CF5AD04093E0E916F1046B +:1030700009F09FCF22C1C655DF4FA881CA5AD04060 +:10308000AA2309F42BCF8090E4149090E514A0902B +:10309000E614B090E714F9EACF2EF4E1DF2EFE013A +:1030A00031961F0100E714E1E12CF12C4A2E512C3E +:1030B000612C712CD301C2010E2C04C0B695A795CA +:1030C000979587950A94D2F780FF29C0D1012D9159 +:1030D0003D914D915C91F6016789708D818D928D46 +:1030E0000E947474D8019D962D913D914D915C91F3 +:1030F000D0970E947474F80165A776A787A790AB54 +:10310000F2E0EF1216C0A50194010E947474D80178 +:103110009D966D937D938D939C93D0970AC0F601F5 +:1031200087A590A9A1A9B2A9F80185A796A7A7A7E5 +:10313000B0ABFFEFEF1AFF0A24E0C20ED11C34E05F +:10314000230E311C0C5F1F4F83E0E816F10409F0D9 +:10315000B1CFB2C0C255DF4F9881CE5AD040933024 +:1031600009F473C0C655DF4FA881CA5AD040AA23BC +:1031700009F49CC6009174144090E4145090E51436 +:103180006090E6147090E71479EA272E74E1372EE8 +:10319000E0E7EE2EE4E1FE2EC12CD12C8A2E912CFC +:1031A000A12CB12CD501C4010C2C04C0B695A79557 +:1031B000979587950A94D2F780FD0BC0F101878916 +:1031C000908DA18DB28DF70185A796A7A7A7B0AB6B +:1031D0002DC0173059F1011114C0F2E0CF1226C0F2 +:1031E000A3019201D7019D966D917D918D919C9146 +:1031F000D0970E947574F70165A776A787A790AB53 +:1032000015C0D10157962D913D914D915C915A97E2 +:10321000F70165A576A587A590A90E947574D701C9 +:103220009D966D937D938D939C93D097BFEFCB1A12 +:10323000DB0AE4E02E0E311CF4E0EF0EF11C23E07B +:10324000C216D10409F0AECF2DC01530A9F0173049 +:1032500071F1133089F5C655DF4F3881CA5AD04015 +:10326000311105C0C255DF4F1882CE5AD040BE0181 +:103270006B5E7F4F86E010C0C655DF4F8881CA5A0B +:10328000D040811105C0C255DF4F1882CE5AD040C0 +:10329000BE016B5E7F4F87E00E949F56882309F432 +:1032A000C3C50AC01530A1F3173009F0FBC58091E2 +:1032B0007114823008F0A8C5212C3090711498E068 +:1032C000391211C0C655DF4FA881CA5AD040AA236F +:1032D00009F40AC3C255DF4FB881CE5AD040B1308D +:1032E00009F094C516C3C255DF4FE881CE5AD040CD +:1032F000E23009F0F9C2311009C0C655DF4FF8813C +:10330000CA5AD040FF2309F4F6C203C320E030E0DC +:10331000A90160917B1470917C1480917D1490912F +:103320007E140E944E75882309F472C523E023158C +:1033300038F032E0331690F481E0381631F0E9C20B +:1033400097E0931508F0C3C2E4C2C655DF4FA881C9 +:10335000CA5AD040AA2309F4CEC2DBC2C655DF4FF9 +:10336000B881CA5AD040BB2309F4B8CDCE55DF4F3F +:10337000F881C25AD040EF2FF0E0C155DF4FF983FA +:10338000E883CF5AD040CA55DF4F3881C65AD04063 +:10339000232F30E0CB54DF4F39832883C55BD040E7 +:1033A00081E090E0A0E0B0E06C017D01CE55DF4F00 +:1033B0000880C25AD04004C0CC0CDD1CEE1CFF1C9F +:1033C0000A94D2F7CA55DF4F0880C65AD04004C0CD +:1033D000880F991FAA1FBB1F0A94D2F7C82AD92A9F +:1033E000EA2AFB2AC655DF4FE881CA5AD0408E2F01 +:1033F00090E0A0E0B0E08C219D21AE21BF21892B7F +:103400008A2B8B2B09F406C5C155DF4F8881998122 +:10341000CF5AD040880F991F880F991FFC01E0599F +:10342000FB4EDC01A755BB4E57962D913D914D911A +:103430005C915A9765A576A587A590A90E9474749A +:103440004B015C01CB54DF4F88819981C55BD04033 +:10345000880F991F880F991FFC01E059FB4EDC0172 +:10346000A755BB4E57962D913D914D915C915A9722 +:1034700065A576A587A590A90E947474C655DF4FEF +:10348000688379838A839B83CA5AD040CD54DF4FA7 +:1034900008811981C35BD04000781127CD54DF4FDC +:1034A000F881C35BD040F7FF15C1CD54DF4F2881B1 +:1034B0003981C35BD0402F77CD54DF4F39832883C8 +:1034C000C35BD0400E94936E882311F081E2F8C460 +:1034D000809173148130B1F423E333E34BEC51E476 +:1034E0006091941470919514809196149091971412 +:1034F0000E94A77760939414709395148093961408 +:103500009093971440909414509095146090961452 +:1035100070909714A5019401C501B4010E94A7778A +:10352000C554DF4F688379838A839B83CB5BD0400C +:10353000C655DF4F288139814A815B81CA5AD04004 +:10354000CA01B9010E94A777CD53DF4F6883798301 +:103550008A839B83C35CD04020E030E040E850E4A5 +:10356000C301B2010E94A777A30192010E94A7772D +:10357000C554DF4F288139814A815B81CB5BD040C4 +:103580000E947474CD53DF4F288139814A815B8159 +:10359000C35CD0400E9474746B017C0120E030E079 +:1035A000A9010E944E7587FD37C4C701B6010E946C +:1035B00014786B017C01CD53DF4F288139814A811A +:1035C0005B81C35CD040C554DF4F688179818A81BB +:1035D0009B81CB5BD0400E9475740E9414789B0144 +:1035E000AC01C701B60190580E9455756B017C0172 +:1035F00033E0331204C0F7FAF094F7F8F09420E0C7 +:1036000030E0A901C301B2010E944E7587FF0FC0CF +:10361000F7FAF094F7F8F094D301C201B058809310 +:10362000941490939514A0939614B0939714C15545 +:10363000DF4F08811981CF5AD040000F111F000FB2 +:10364000111F0C581B4EC655DF4F288139814A8106 +:103650005B81CA5AD040C701B6010E94A7779B017F +:10366000AC01C501B4010E94747420E030E040E078 +:103670005FE30E94A777D8011B966D937D938D938E +:103680009C931E97CB54DF4F08811981C55BD040B6 +:10369000000F111F000F111F0C581B4EA5019401A4 +:1036A000C701B6010E94A777C655DF4F288139812F +:1036B0004A815B81CA5AD0400E94757420E030E094 +:1036C00040E05FE30E94A777F801638774878587EE +:1036D00096871FC1C554DF4FF881CB5BD0404F2E7A +:1036E000512C612C712CC420D520E620F720CD2848 +:1036F000CE28CF2809F492C3CD54DF4F28813981D9 +:10370000C35BD040217FCD54DF4F39832883C35B17 +:10371000D04080917314813009F491C0C155DF4FBE +:10372000E881F981CF5AD040EE0FFF1FEE0FFF1F47 +:10373000EC58FB4EC384D484E584F684A70196013B +:10374000C501B4010E9474742B013C01CB54DF4FBE +:10375000E881F981C55BD040EE0FFF1FEE0FFF1F20 +:10376000EC58FB4E83859485A585B685C155DF4F02 +:1037700088839983AA83BB83CF5AD0409C01AD0133 +:10378000C655DF4F688179818A819B81CA5AD040B2 +:103790000E9474744B015C01A3019201C301B20148 +:1037A0000E94A7772B013C01A5019401C501B4013A +:1037B0000E94A7779B01AC01C301B2010E947574FE +:1037C0000E9414784B015C01A7019601C701B60164 +:1037D0000E94A7776B017C01C155DF4F2881398199 +:1037E0004A815B81CF5AD040CA01B9010E94A777B4 +:1037F0009B01AC01C701B6010E9475740E94147848 +:103800006B017C01609394147093951480939614CB +:10381000909397149B01AC01C501B4010E9474748C +:103820004B015C01E894B7F82AE037ED43EA5BE32B +:10383000C501B4010E946C77181664F16AC080E774 +:10384000E82E84E1F82ED301C201002E04C0B69503 +:10385000A795979587950A94D2F780FF12C023E326 +:1038600033E34BEC51E4D7011F966D917D918D911F +:103870009C9152970E94A777F7016787708B818B85 +:10388000928B0F5F1F4FF4E0EF0EF11C0330110518 +:10389000D1F644CF20E030E040E05FE3C501B40161 +:1038A0000E946C7718160CF411CE2FE632E143E833 +:1038B0005AE3C701B6010E94A7779B01AC01C5017D +:1038C000B4010E946C7718160CF400CE22C0C655C5 +:1038D000DF4F2881CA5AD040222309F4FFCA0E9430 +:1038E000936E8111F3CD15C0C255DF4F3881CE5A8A +:1038F000D04031110EC0CD54DF4F88819981C35B18 +:10390000D0408E7D9C7FC255DF4F1882CE5AD0406A +:1039100008C0CD54DF4F88819981C35BD0408E7D34 +:10392000907E892B09F07CC280918C1490918D142B +:10393000A0918E14B0918F148093BC149093BD14F9 +:10394000A093BE14B093BF14809172148093AA14F4 +:1039500080917B1490917C14A0917D14B0917E1481 +:103960008093B7149093B814A093B914B093BA1479 +:10397000C0909814D0909914E0909A14F0909B14F1 +:10398000A70196016091B3147091B4148091B5149D +:103990009091B6140E944E758823F9F01091B214DC +:1039A000112359F080915314823039F00E94766EC1 +:1039B000B701A601812F0E94214A8091981490910D +:1039C0009914A0919A14B0919B148093B31490937E +:1039D000B414A093B514B093B61480919C14809342 +:1039E000BB1410917A148091B2148117B9F08091B0 +:1039F0005314823079F0C090B314D090B414E09096 +:103A0000B514F090B6140E94766EB701A601812F0E +:103A10000E94214A80917A148093B21410917914F3 +:103A20008091B114811781F080915314823041F05C +:103A30000E94766E123011F45C9A02C00E949E625F +:103A4000809179148093B11480917014813089F041 +:103A5000809175148093AD14809173148093AB148E +:103A6000C255DF4F8881CE5AD040833009F074C0F0 +:103A700054C080915314823059F3809090149090E8 +:103A80009114A0909214B090931420E030E040EA9A +:103A900051E4C501B4010E94A7770E942B760E94D1 +:103AA000C2756B017C010E94766E20E030E04AE72F +:103AB00054E4C501B4010E94A7774B015C0182E385 +:103AC0008C9DB0018D9D700D112480E090E00E94CE +:103AD000EE759B01AC01C501B4010E9474740E9493 +:103AE0002B760E94C275CB010E94EC37860101152E +:103AF000110509F4ADCF0E94F737015011098091EB +:103B000052148111A5CF9FEFA0E7B2E09150A040E1 +:103B1000B040E1F700C00000EACF809176148093B6 +:103B2000AE14813089F48091A5149091A614A091CF +:103B3000A714B091A8148093E4149093E514A09373 +:103B4000E614B093E71408C01092E4141092E51440 +:103B50001092E6141092E714809177149091AF14AC +:103B6000981759F08093AF148CE0FE013196ACECBD +:103B7000B4E101900D928A95E1F7809174148093DD +:103B8000AC14E09170148E2F90E0FC013297E83075 +:103B9000F10508F060C08827E257FF4F8F4F0C9463 +:103BA000E578BE016B5E7F4F822D0E949656809114 +:103BB000AF14281250C08CE0FE017596ACECB4E155 +:103BC0003EC0C255DF4FE881CE5AD040EE2371F09F +:103BD0002091B7143091B8144091B9145091BA148F +:103BE00000E06DE974E181E00E949B5B2091B714D5 +:103BF0003091B8144091B9145091BA1400E0BE014C +:103C00006B5E7F4F81E00E949B5B182F8CE0FE0172 +:103C10007596A0ECB4E101900D928A95E1F71CC075 +:103C200060EC74E186E003C060EC74E187E00E9420 +:103C3000965611C08CE0EDE9F4E1A8EDB4E10190F5 +:103C40000D928A95E1F707C08CE0E8EDF4E1DF0121 +:103C50001D928A95E9F710E0809171148093A91460 +:103C6000883009F470C0C255DF4FB881CE5AD040B9 +:103C7000B23009F068C090E08830910508F05AC071 +:103C8000FC014090B7145090B8146090B914709033 +:103C9000BA148827EA56FF4F8F4F0C94E57800E05E +:103CA000A30192016DE974E180E007C00091AA14BC +:103CB000A30192016DE974E181E00E949B5B182FE2 +:103CC00039C06091941470919514809196149091DC +:103CD00097148824839409C060919414709195146A +:103CE0008091961490919714812CC754DF4FA8802F +:103CF000C95BD040CA55DF4FC880C65AD040CE55A8 +:103D0000DF4FE880C25AD0400091AA14A30192016B +:103D10000E94676F0FC000E001C001E020E004C016 +:103D200000E001C001E021E04091AA14C301B2010A +:103D30000E94D16E8CE0EDE9F4E1A0ECB4E10190D9 +:103D40000D928A95E1F7809178148093B0148823BE +:103D500009F468C00E94766E9091B014809153145B +:103D6000913069F48230E9F19FB7F89480910114A1 +:103D70008860809301149FBF0E94F73732C091E0A2 +:103D80009093A9141092AD141092AC141092AA142E +:103D90001092AF141092B2141092B1148230A9F0A4 +:103DA000BE016F5F7F4F80E00E949F568823E1F144 +:103DB0008CE0FE013196ACECB4E101900D928A9555 +:103DC000E1F70E941A4A0E949E6284EE98E00E94E7 +:103DD000E73288E898E00E94E73281E798E00E94A5 +:103DE000E7321092B0141EC081E06AC082E068C061 +:103DF00088E166C089E164C084E062C08BE160C094 +:103E000085E25EC084E15CC08EE15AC08FE158C09B +:103E100086E156C080E254C082E252C083E250C0C4 +:103E200084E24EC0812F4CC087E04AC0AEE12A1622 +:103E3000310411F40C94480D50F5EAE02E163104CB +:103E400011F40C94180DFCE12F16310411F40C94AC +:103E50002C0D87E135C09CE52916310411F00C9436 +:103E6000C20EA1E0C255DF4FA883CE5AD040CA553A +:103E7000DF4FE881F981C65AD040309729F03A9750 +:103E800009F689E00C94510D88E00C94510D25E35E +:103E90002216310411F40C946B0D3CE52316310409 +:103EA00031F3D7CF133009F007CAE1C9153009F44F +:103EB000EAC9173009F4FBC9133009F0FDC9D2C9AA +:103EC000C253DF4F0FB6F894DEBF0FBECDBFDF91F8 +:103ED000CF911F910F91FF90EF90DF90CF90BF9007 +:103EE000AF909F908F907F906F905F904F903F909A +:103EF0002F9008952F923F924F925F926F927F92F0 +:103F00008F929F92AF92BF92CF92DF92EF92FF92E9 +:103F10000F931F93CF93DF93CDB7DEB7C459D10969 +:103F20000FB6F894DEBF0FBECDBF853A28E09207EA +:103F300011F40C94822AFB01863A38E0930708F0CA +:103F400045C08B34A8E09A0709F451C1F0F4833ED0 +:103F500027E0920709F40BC160F48231910509F45E +:103F600006C18C3C910509F49DC0419709F07FC0C2 +:103F700082C08934A8E09A0709F41EC108F024C160 +:103F80008834984009F4CDC072C08D3938E0930769 +:103F900009F4F9C178F48A39B8E09B0709F494C1AF +:103FA0008B3928E0920709F4CAC18939984009F091 +:103FB0005EC030C1833AA8E09A0709F455C208F000 +:103FC000CDC2823A984009F412C251C08A3B38E00F +:103FD000930711F40C94822AF0F48E3AB8E09B0710 +:103FE00009F43FC560F48C3A38E0930709F41EC326 +:103FF00008F029C4873A984009F412C338C0883BB6 +:1040000028E0920709F44BC608F059C6873B984050 +:1040100009F426C62CC08136B9E09B0709F4DEC737 +:1040200070F4813C38E0930709F496C68036A9E025 +:104030009A0709F4F5C6803C9840C9F462C68B36ED +:1040400029E0920711F40C94902830F48A369940B4 +:1040500011F40C9445280BC08C36B9E09B0711F481 +:104060000C94C928843C994011F40C94122981E0E5 +:1040700090E00C94842A8091401482FF08C08A9AB0 +:10408000809108018160809308015F9A07C08A9837 +:10409000809108018E7F809308015F980E94B72F5E +:1040A0008FE00EC18E010F5F1F4F1F930F938BEC9C +:1040B00093E09F938F93FF936F930E9446790F90A5 +:1040C0000F900F900F900F900F901816190614F084 +:1040D0000C94E8281D8A1E8A1F8A188EAE014B5E3A +:1040E0005F4F60E070E0C8010E94303A8823D9F148 +:1040F0004D895E896F89788D88E70E9493554D8937 +:104100005E896F89788D89E70E9493554D895E8914 +:104110006F89788D8AE70E9493550E94B95A0C9452 +:10412000822A8E010F5F1F4F1F930F9386ED93E03E +:104130009F938F93FF936F930E9446790F900F90F8 +:104140000F900F900F900F901816190614F00C9402 +:10415000E828AE014B5E5F4F60E070E0C8010E944E +:10416000303A811108C082E390E00C94842A0E94C6 +:10417000FC2E0C94822A20E030E04AE754E46D895A +:104180007E898F89988D0E94A7770E94BD7516162B +:10419000170694F47093470D6093460D11E0109349 +:1041A000480D8091450D81110C94822A0E94382E71 +:1041B0001093450D0C94822A1092480D1092470DD1 +:1041C0001092460D0C94822A8081863561F6818199 +:1041D0008053823040F61092C60D813021F010924B +:1041E000C50D0C94822A8093C50D0C94822A80817F +:1041F000863509F0B8CF81818053823008F0B3CF83 +:10420000813021F01092CB0D0C94822A8093CB0D3B +:104210000C94822A80818E3409F0A5CF918190532D +:10422000943008F0A0CF923079F1933009F443C074 +:10423000209140148091C20D913099F022FF08C066 +:104240008A9A909108019160909308015F9A07C043 +:104250008A98909108019E7F909308015F988460EE +:104260002FC022FF08C08A9A909108019160909314 +:1042700008015F9A07C08A98909108019E7F9093E9 +:1042800008015F9881601CC08091401482FF08C0C3 +:104290008A9A809108018160809308015F9A07C023 +:1042A0008A98809108018E7F809308015F988091A1 +:1042B000C20D826005C00E94B72F8091C20D886038 +:1042C0008093C20D0C94812A80818E3409F04BCFEB +:1042D00091819053943008F046CF9230B1F09330F2 +:1042E00041F1209140148091C20D913039F022FFAC +:1042F00002C05F9801C05F9A8B7F17C022FF02C087 +:104300008A9801C08A9A8E7F10C08091401482FFE3 +:1043100004C0809108018E7F03C0809108018160F4 +:10432000809308018091C20D8D7F8093C20D0C9403 +:10433000822A0E94EE2E8091C20D877FF6CF808167 +:104340008E3409F010CF81818053843008F00BCF78 +:104350009091C20D823089F0833091F0813019F054 +:1043600090FF03C07AC491FD78C466EC73E086E5E3 +:104370009DE00E9411790C94822A92FD6EC4F5CFC3 +:1043800093FFF3CF6AC48E010F5F1F4F1F930F93EC +:104390008FED93E09F938F93FF936F930E944679E5 +:1043A0000F900F900F900F900F900F901816190606 +:1043B0000CF00EC78CE0F801A9E4BDE001900D926D +:1043C0008A95E1F709E41DE08AEE93E0D8016D914A +:1043D0008D017C01BFEFEB1AFB0A0E94F761C70158 +:1043E000E6EFEE16E3E0FE0689F70C94822A1AA6A1 +:1043F00019A61D8A1E8A1F8A188E8E010F5F1F4FF5 +:104400008AE0D8011D928A95E9F7CE0189969F939B +:104410008F931F930F938AEE93E09F938F93FF9355 +:104420006F930E9446790FB6F894DEBF0FBECDBFE2 +:1044300002970CF4CDC6AE014B5E5F4F60E070E0BA +:10444000C8010E94303A882309F48DCE2D893E8917 +:104450004F89588D69A57AA5072E000C880B990BFA +:104460000E94532E0C94822A9E012F5F3F4F3901E8 +:1044700084E1D9011D928A95E9F7CE0189969F932F +:104480008F9344979F938F9388969F938F9386EFF4 +:1044900093E09F938F93FF936F930E9446790FB69B +:1044A000F894DEBF0FBECDBF03970CF491C68DAD5F +:1044B000813009F058CE6D897E89653FFFEF7F0717 +:1044C00008F051CE89A58230C9F0843059F181308D +:1044D00009F049CE41E00E94E72C6B017C01830189 +:1044E00020E045E00E94F971C701B6010E94BD7548 +:1044F000862F062E000C990B9F9310C042E081E09E +:104500000E94E72C6B017C01830120E045E00E94C2 +:10451000F971C701B6010E94BD757F936F9386EB59 +:1045200093E00DC044E081E00E94E72C830124E089 +:1045300045E00E94F9717F926F928AED92E09F931D +:104540008F9386E59DE09F938F930E9418790F903B +:104550000F900F900F900F900F90D4C78E010F5FA8 +:104560001F4F1F930F93CE01CD969F938F93449728 +:104570009F938F933E0121E5620E711C7F926F9293 +:1045800080E094E09F938F93FF936F930E9446790E +:104590000FB6F894DEBF0FBECDBF04970CF418C65B +:1045A000F3018081813009F0DECD89A59AA5853F90 +:1045B0009F4F08F0D8CDAE014B5E5F4F60E070E0DA +:1045C000C8010E94303A882309F4CDCD8DAD8230E8 +:1045D00069F08430A9F0813009F0C5CD0D891E89BC +:1045E0002F89388D69A57AA541E011C00D891E89F2 +:1045F0002F89388D69A57AA542E0F301808109C031 +:104600000D891E892F89388D69A57AA544E0D301CB +:104610008C910E94852D83E090E00E94EC3772C758 +:104620008FEF0E94BF560E949D2C6CC72E01B5E6ED +:104630004B0E511C84E1D201282F1D922A95E9F7D7 +:104640003E0131E5630E711CD301282F1D922A957E +:10465000E9F78E01035C1F4FD8011D928A95E9F797 +:10466000C357DF4F188219821A821B82CD58D0405F +:10467000C757DF4F188219821A821B82C958D0404F +:10468000CB57DF4F188219821A821B82C558D0403F +:104690001F930F937F926F925F924F9282E194E00B +:1046A0009F938F93FF936F930E9446790FB6F89470 +:1046B000DEBF0FBECDBF03970CF48AC5AE014357D2 +:1046C0005F4F60E070E0C2010E94303A882309F435 +:1046D0004ACDAE0147575F4F60E070E0C3010E94D2 +:1046E000303A882309F43FCDAE014B575F4F60E06D +:1046F00070E0C8010E94303A882309F434CDCF57C6 +:10470000DF4F188219821A821B82C158D040C358C9 +:10471000DF4F188219821A821B82CD57D040ED9646 +:104720001CAE1DAE1EAE1FAEED9784E13E01F9E258 +:104730006F0E711CD301E82F1D92EA95E9F72E0147 +:10474000F5E14F0E511CD201E82F1D92EA95E9F7D1 +:104750009E012F5F3F4F1901D9011D928A95E9F7FC +:10476000AE014B575F4FBE0167577F4FCE01835756 +:104770009F4F0E94A54ECB57DF4FE880F9800A81FA +:104780001B81C558D040C757DF4F288139814A81E6 +:104790005B81C958D040C357DF4F688179818A81D6 +:1047A0009B81CD58D040FE01EF57FF4F4F01DE01F6 +:1047B000A758BF4F5D0134976F010E94F94F20E069 +:1047C00030E044EB52E4CF57DF4F688179818A8132 +:1047D0009B81C158D0400E947574CF57DF4F6883CA +:1047E00079838A839B83C158D040C358DF4F688147 +:1047F00079818A819B81CD57D040820124E045E0B8 +:104800000E94F971ED966CAD7DAD8EAD9FADED97CB +:10481000810124E045E00E94F971CF57DF4F6881A4 +:1048200079818A819B81C158D040830124E045E091 +:104830000E94F9713F922F925F924F927F926F92F6 +:1048400080EB92E000C12E0135E6430E511C84E15D +:10485000D201282F1D922A95E9F73E0131E5630E1A +:10486000711CD301282F1D922A95E9F78E01035C54 +:104870001F4FD8011D928A95E9F7C357DF4F188261 +:1048800019821A821B82CD58D040C757DF4F188239 +:1048900019821A821B82C958D040CB57DF4F188229 +:1048A00019821A821B82C558D0401F930F937F92A2 +:1048B0006F925F924F9281E394E09F938F93FF9367 +:1048C0006F930E9446790FB6F894DEBF0FBECDBF3E +:1048D00003970CF47DC4AE0143575F4F60E070E076 +:1048E000C2010E94303A882309F43DCCAE014757FB +:1048F0005F4F60E070E0C3010E94303A882309F402 +:1049000032CCAE014B575F4F60E070E0C8010E94AF +:10491000303A882309F427CCCF57DF4F1882198209 +:104920001A821B82C158D040C358DF4F18821982A7 +:104930001A821B82CD57D040ED961CAE1DAE1EAE26 +:104940001FAEED9784E13E01F9E26F0E711CD301B9 +:10495000E82F1D92EA95E9F72E01F5E14F0E511C63 +:10496000D201E82F1D92EA95E9F79E012F5F3F4F94 +:104970001901D9011D928A95E9F720E030E044EB56 +:1049800052E4C357DF4F688179818A819B81CD587A +:10499000D0400E9474747B018C01C357DF4F688341 +:1049A00079838A839B83CD58D040CB57DF4F2881B2 +:1049B00039814A815B81C558D040C757DF4F688134 +:1049C00079818A819B81C958D040FE01E758FF4F09 +:1049D0004F01DE01A358BF4F5D0138966F010E9461 +:1049E000AF51A401B501C6010E94504FCF57DF4F10 +:1049F000688179818A819B81C158D040830124E0FC +:104A000045E00E94F971C358DF4F688179818A813E +:104A10009B81CD57D040820124E045E00E94F9718E +:104A2000ED966CAD7DAD8EAD9FADED97810124E02F +:104A300045E00E94F9713F922F925F924F927F92D0 +:104A40006F9280EE92E09F938F9386E59DE09F9317 +:104A50008F930E9418790FB6F894DEBF0FBECDBFBA +:104A600051C5CF57DF4F188219821A821B82C15855 +:104A7000D040C358DF4F188219821A821B82CD574B +:104A8000D040ED961CAE1DAE1EAE1FAEED9784E17C +:104A90002E0139E2430E511CD201282F1D922A9576 +:104AA000E9F73E0135E1630E711CD301282F1D92F9 +:104AB0002A95E9F7DE0111967D011D928A95E9F7A5 +:104AC0008E010B571F4F8FEF90E0D8018D939C9371 +:104AD0001F930F93FF92EF927F926F925F924F928C +:104AE00080E594E09F938F93FF936F930E944679A4 +:104AF0000FB6F894DEBF0FBECDBF04970CF468C3A9 +:104B0000AE014F575F4F60E070E0C2010E94303A43 +:104B1000882309F428CBAE0143585F4F60E070E072 +:104B2000C3010E94303A882309F41DCBAE014758D7 +:104B30005F4F60E070E0C7010E94303A882309F4BB +:104B400012CBD8018D919C91009709F443C0019735 +:104B500009F009CBCF57DF4F488059806A807B80AE +:104B6000C158D04020E030E044EB52E4C358DF4F5E +:104B7000688179818A819B81CD57D0400E9474746D +:104B800021EE3EE245E652E40E9455756B017C0140 +:104B90000E9452759B01AC01C301B2010E94A7772C +:104BA000CF57DF4F688379838A839B83C158D04076 +:104BB000C701B6010E940A789B01AC01C301B20192 +:104BC0000E94A777C358DF4F688379838A839B83CA +:104BD000CD57D040AE0147585F4FBE0163587F4F5D +:104BE000CE018F579F4F0E94A54EED96ECACFDACC9 +:104BF0000EAD1FADED97C358DF4F288139814A8133 +:104C00005B81CD57D040CF57DF4F688179818A8152 +:104C10009B81C158D040FE01FD964F01DE01AF5A85 +:104C2000BF4F5D01B8966F010E94F94F2196ECAC21 +:104C3000FDAC0EAD1FAD219765962CAD3DAD4EADD3 +:104C40005FAD6597A9966CAD7DAD8EAD9FADA99713 +:104C50000E942553882309F488CB6AED73E087CB43 +:104C60008081863509F07FCA81818053823008F0C7 +:104C70007ACA813049F08091880D9091890D019711 +:104C800009F040C4C7D53EC49C9A9D9AA49AA598A1 +:104C900081E090E09093890D8093880D33C48081EA +:104CA000863509F060CA81818053823008F05BCA82 +:104CB000813011F03FD626C43F9A479823C48081A3 +:104CC000863509F050CA81818053823008F04BCA82 +:104CD000813011F01ED616C480910101806280934C +:104CE00001018091010180648093010180910201A2 +:104CF00080628093020180910201806480930201AE +:104D000001C4CE0101969F938F9344969F938F93F6 +:104D100082E794E09F938F93FF936F930E9446796D +:104D20000FB6F894DEBF0FBECDBF02970CF450C291 +:104D30008D899E898634910508F015CA29813A81AA +:104D40002230310508F00FCA232B11F061E001C0B9 +:104D500060E00E94924CD6C3CE0101969F938F9340 +:104D600044969F938F9382E794E09F938F93FF9352 +:104D70006F930E9446790FB6F894DEBF0FBECDBF89 +:104D800002970CF425C28D899E898634910508F01E +:104D9000EAC929813A812230310508F0E4C9FC01D1 +:104DA000EA5BF64F8050974F232BD1F02491FC0102 +:104DB0008491882309F4A6C390E0880F991FFC0111 +:104DC000E654F84FA591B491FC01EA51F74F859153 +:104DD00094918FB7F894EC91E22BEC938FBF92C330 +:104DE0002491FC018491882309F48CC390E0880FFE +:104DF000991FFC01E654F84F45915491FC01EA518A +:104E0000F74FA591B4919FB7F894FA01808120954E +:104E1000822380838C91E22FE823EC939FBF72C39F +:104E20008081833509F09FC98181E0EDE80FE8308A +:104E300008F099C98E2F90E0FC013197E730F10519 +:104E400030F48827E256FF4F8F4F0C94E578C6D791 +:104E50001092910D1092900D8AE999E1A5E9B2E4C2 +:104E60008093960D9093970DA093980DB093990D04 +:104E70008AE999E9A2E6B2E482C1B0D781E090E084 +:104E80009093910D8093900D86EF98E2ACE4B2E49C +:104E90008093960D9093970DA093980DB093990DD4 +:104EA0008DEC9CECA0E8B2E46AC198D782E090E077 +:104EB0009093910D8093900D89E29CEDA4E9B2E46A +:104EC0008093960D9093970DA093980DB093990DA4 +:104ED00080E090E0A2E6B2E452C180D783E090E0A7 +:104EE0009093910D8093900D80E090E0ACE2B2E45D +:104EF0008093960D9093970DA093980DB093990D74 +:104F000080E090E0ABE8B2E43AC168D784E090E09A +:104F10009093910D8093900D80E090E0ACE1B2E42D +:104F20008093960D9093970DA093980DB093990D43 +:104F300080E090E0A9E9B2E417C050D785E090E0A6 +:104F40009093910D8093900D8DEC9CECA2E9B2E4CE +:104F50008093960D9093970DA093980DB093990D13 +:104F600080E090E0A8E9B2E48093920D9093930DD5 +:104F7000A093940DB093950D04D709C12FD786E067 +:104F800090E09093910D8093900D86E696E6AAE9C5 +:104F9000B2E48093960D9093970DA093980DB093E3 +:104FA000990D80E090E0AAE5B2E4E9C017D787E068 +:104FB00090E09093910D8093900D85E89BEEABEC83 +:104FC000B1E48093960D9093970DA093980DB093B4 +:104FD000990D80E090E0A2E3B2E4D1C080E090E0DF +:104FE0000E94E95390938D0D80938C0D81E090E0A9 +:104FF0000E94E95390938F0D80938E0D82E090E094 +:105000000E94E95390938B0D80938A0D0AE81DE06E +:1050100084E393E0D8016D918D017C01BFEFEB1A21 +:10502000FB0A0E94F761C701EAE3EE16E3E0FE0621 +:1050300089F76BEB82E393E00E94F7610E94BF5314 +:1050400080E090E00E943B5460939E0D70939F0D12 +:105050008093A00D9093A10D81E090E00E943B54BD +:105060006093A20D7093A30D8093A40D9093A50D52 +:1050700082E090E00E943B546093A60D7093A70DD0 +:105080008093A80D9093A90D3DC260915E1470911C +:105090005F1480916014909161140E94F0752B014F +:1050A0003C0160915A1470915B1480915C14909152 +:1050B0005D140E94F075CF56DF4F688379838A8331 +:1050C0009B83C159D04060915614709157148091C0 +:1050D0005814909159140E94F0759E012F5F3F4F14 +:1050E0004901DE0155965D01FE01B9966F0183010C +:1050F0007201CF56DF4F288139814A815B81C159C6 +:10510000D0400E94945289819A81AB81BC81809366 +:10511000960D9093970DA093980DB093990D37C06D +:105120001D8A1E8A1F8A188E8E010F5F1F4F84E111 +:10513000D8011D928A95E9F71F930F9389E794E0B0 +:105140009F938F93FF936F930E9446790F900F90D8 +:105150000F900F900F900F9018161906CCF5AE0116 +:105160004B5E5F4F60E070E0C8010E94303A8823D8 +:1051700011F40C94B3208D899E89AF89B88D8093EA +:10518000920D9093930DA093940DB093950D37D5F8 +:10519000B9C11D8A1E8A1F8A188E8E010F5F1F4F8C +:1051A00084E1D8011D928A95E9F71F930F9384E853 +:1051B00094E09F938F93FF936F930E9446790F9093 +:1051C0000F900F900F900F900F90181619067CF00B +:1051D0001F9281E08F9381E192E09F938F930E94D1 +:1051E0008B320F900F900F900F900C94B320AE0164 +:1051F0004B5E5F4F60E070E0C8010E94303A882348 +:1052000011F40C94B3208D899E89AF89B88D809359 +:105210009A0D90939B0DA0939C0DB0939D0DEFD490 +:10522000B0D570C1899866EC662E6EE0762E83014B +:1052300082E090E00E94E953F801819391938F01FD +:1052400050E9E52EFF24F394889A6AE070E080E04C +:1052500090E00E94AE3788986CE271E080E090E0C8 +:105260000E94AE37F1E0EF1AF10871F788EE93E093 +:105270000E94EC372FE00E381207D1F682E090E062 +:105280000E94E95390938F0F80938E0F899A00E2CA +:105290001EE4889A6AE070E080E090E00E94AE37F9 +:1052A00088986CE271E080E090E00E94AE37015097 +:1052B000110979F78F984EE0E42EF12C00E911E006 +:1052C0008E9A6AE070E080E090E00E94AE378E989F +:1052D0006CE271E080E090E00E94AE37015011096D +:1052E00079F731E0E31AF10849F788EE93E00E947C +:1052F000EC378F9A36E4232E3EE0332E210100E076 +:1053000010E080E090E00E94E953D2018D939D93DC +:105310002D0120E9E22EFF24F3948E9A6AE070E0DA +:1053200080E090E00E94AE378E9864EF71E080E0FC +:1053300090E00E94AE37B1E0EB1AF10871F70E3041 +:105340001105A9F088EE93E00E94EC370F5F1F4F24 +:105350000F331105B1F680E090E00E94E95390937D +:10536000C50E8093C40E8F9800E51DE223C0809186 +:105370000B018D7F80930B01E12C92E3F92E80913C +:105380000B01886080930B016AE070E080E090E0A0 +:105390000E94AE3780910B01877F80930B016CE2F6 +:1053A00071E080E090E00E94AE37E1E0EE1AF10893 +:1053B00031F7C8CF8E9A6AE070E080E090E00E94FA +:1053C000AE378E986CE271E080E090E00E94AE37DC +:1053D0000150110979F788EE93E00E94EC37809133 +:1053E0000B01826080930B0100E913E380910B01B4 +:1053F000886080930B016AE070E080E090E00E949A +:10540000AE3780910B01877F80930B016CE271E0D6 +:1054100080E090E00E94AE370150110939F788EE24 +:1054200093E00E94EC3780910B018D7F80930B01FC +:105430000CEC1DE0280181E090E00E94E953D201CC +:105440008D939D932D0180E9E82EFF24F3948091A4 +:105450000B01886080930B016AE070E080E090E0CF +:105460000E94AE3780910B01877F80930B016CE225 +:1054700071E080E090E00E94AE37B1E0EB1AF108F5 +:1054800031F788EE93E00E94EC37E4E44E16EEE04C +:105490005E0689F681E090E00E94E9539093450E04 +:1054A0008093440E81E090E0D3016D913D012C0189 +:1054B000BFEF4B1A5B0A0E94F761C2018B3C91055A +:1054C00099F7F10161911F013201FFEF6F1A7F0A15 +:1054D000C2010E94F76123012BE4621621E07206EB +:1054E00081F7D8016D918D017301BFEFEB1AFB0AB3 +:1054F000C3010E94F7613701E5ECEE16E1E0FE061C +:1055000081F793D180E090E0CC56DF4F0FB6F8944E +:10551000DEBF0FBECDBFDF91CF911F910F91FF90E6 +:10552000EF90DF90CF90BF90AF909F908F907F9043 +:105530006F905F904F903F902F9008952091980F1B +:105540003091990F21153105B9F08091A80F9091F4 +:10555000A90F8217930734F401969093A90F8093B3 +:10556000A80F0AC01092A90F1092A80F1092990FBD +:105570001092980F1092C30D2091460D3091470D57 +:1055800021153105A1F08091A60F9091A70F8217E8 +:10559000930734F401969093A70F8093A60F07C04A +:1055A0001092A70F1092A60F81E08093C40D8091F6 +:1055B000C30D81111BC08091480D811117C08091CE +:1055C00073008E7F809373001092450D1092990F97 +:1055D0001092980F1092470D1092460D1092A90F3D +:1055E0001092A80F1092A70F1092A60F0895809105 +:1055F000A50F811107C081E08093A50F80910B0159 +:10560000806205C01092A50F80910B018F7D809361 +:105610000B018091A30F9091A40F9C012F5F3F4F2E +:105620003093A40F2093A30F209104023091050220 +:105630002817390760F41092A40F1092A30F8091DD +:1056400070008E7F8093700081E08093C90D089573 +:105650002091900D3091910D2430310529F426E6EA +:1056600036E646E65FE307C02530310539F526E624 +:1056700036E646EE5FE30E94557520E030E040E8F4 +:1056800052E40E94A7770E94BD756093900F7093BB +:10569000910F8093920F9093930F8CE69BE29093DF +:1056A000FB138093FA131092A00085E08093A10071 +:1056B0008DEF9FEF9093FD138093FC138091FC136B +:1056C0009091FD139093A5008093A40080917200A7 +:1056D00081608093720008958091900F9091910F56 +:1056E000A091920FB091930F181619061A061B0677 +:1056F000F4F42091A20F222389F01092A20F0197B7 +:10570000A109B1098093900F9093910FA093920FEC +:10571000B093930F80910201806406C081E0809372 +:10572000A20F809102018F7B8093020108950E9455 +:10573000494D1092900F1092910F1092920F10926B +:10574000930F81E08093C80D0895CF93DF93EB0111 +:10575000873140F4853108F043C08C30B0F481309B +:1057600048F03EC09881833329F1843369F1823354 +:1057700061F416C08881882329F06FE874E0CE01B7 +:105780000E94067961E974E028C08881882329F0A5 +:105790006FE874E0CE010E94067964E974E01DC0F0 +:1057A000992329F06FE874E0CE010E94067968E938 +:1057B00074E013C0992329F06FE874E0CE010E94D1 +:1057C00006796CE974E009C0992329F06FE874E068 +:1057D000CE010E94067960EA74E0CE010E9406794B +:1057E0008091560D882379F066E57DE0CE010E9418 +:1057F000067982E3E6E5FDE0DF011D928A95E9F78F +:10580000DF91CF9108956DE773E0CE01DF91CF91E5 +:105810000C9406799C9A9D9AA498A59A82E090E0AF +:105820009093890D8093880D08958F929F92AF92E7 +:10583000BF92CF92DF92EF92FF920F931F93CF937D +:10584000DF9302E514E18EE1F80111928A95E9F700 +:10585000D9D60E94F16180E090E00E943B54C0E9FB +:10586000DDE06E877F87888B998B81E090E00E94D6 +:105870003B546A8B7B8B8C8B9D8B82E090E00E94EB +:105880003B546E8B7F8B888F998FF801C480D580B5 +:10589000E680F780CA8EDB8EEC8EFD8EC084D184CC +:1058A000E284F384CE8EDF8EE8A2F9A2048515850A +:1058B000268537850AA31BA32CA33DA320E030E057 +:1058C00044EB52E40E9474747B018C012A893B8969 +:1058D0004C895D896E857F8588899989EEEB8E2E4E +:1058E000EDE09E2EFAEBAF2EFDE0BF2EA6EBCA2E0A +:1058F000ADE0DA2E0E94AF51DF91CF911F910F9151 +:10590000FF90EF90DF90CF90BF90AF909F908F90DF +:105910000895E1E0F1E0808180628083808180648D +:105920008083E2E0F1E080818F7D808380818F7BC6 +:10593000808308953F9A479A08958091040187785B +:1059400080930401809103018877803451F440E012 +:1059500050E060E87FE384E00E94935564EA74E0DD +:105960002AC080910301887791F440E050E060E81C +:105970007FE384E00E9493556BEA74E08AE99FE03C +:105980000E94117940E050E060EE70E41BC080910D +:105990000301887740E050E060E87FE3803231F433 +:1059A00084E00E94935562EB74E005C084E00E949D +:1059B000935569EB74E08AE99FE00E94117940E019 +:1059C00050E0BA0183E00E9493550C94B95A9F921B +:1059D000AF92BF92CF92DF92EF92FF920F931F93FD +:1059E000CF93DF9300D01F92CDB7DEB7813021F087 +:1059F000823019F452EA01C050EA8150823008F036 +:105A00006FC0EFEFE40FE43028F4F0E0EA5FFD4F01 +:105A1000E08001C0E12C942E8B01362F3F77F12CD2 +:105A2000632F70E081E890E08E199F09A52EB12CBC +:105A300068177907ECF080E8C82EC31AD12C9601BC +:105A4000A801B501CE0101960E94014E85E090E0CB +:105A50000E94EC3797012C193D09A8014C0D5D1DE2 +:105A6000B50181E090E08C0F9D1F8C0D9D1D05C040 +:105A70009701A801B501CE0101960E94014E82E076 +:105A80009816C9F084E0981631F181E0981228C088 +:105A90001981612F70E080E090E00E94EE756B014B +:105AA0007C01103201F580EC94E09F938F9333D505 +:105AB0000F900F9018C0698170E0762F66278A8159 +:105AC000680F711D072E000C880B990B0E94F07552 +:105AD0006B017C0108C0C980DA80EB80FC8003C0C8 +:105AE000C12CD12C7601C701B6010F900F900F90F9 +:105AF0000F90DF91CF911F910F91FF90EF90DF906A +:105B0000CF90BF90AF909F900895AF92BF92CF92E9 +:105B1000DF92EF92FF920F931F93CF93DF9300D00A +:105B20001F92CDB7DEB77B01813029F0823029F496 +:105B300052EAD52E02C090EAD92E8150823008F068 +:105B40004FC0C901B801423051F0443079F04130C2 +:105B5000A1F40E94C275698301E010E010C00E94A8 +:105B6000BD7579836A8302E010E009C009831A8356 +:105B70002B833C8304E010E002C000E010E02E2DF7 +:105B80002F77422F50E081E890E0801B910BAD2CE5 +:105B9000B12C48175907ECF080E8C82EC21AD12C56 +:105BA0009601A701B501CE0101960E94654E85E0E0 +:105BB00090E00E94EC3798012C193D09A7014C0D8B +:105BC0005D1DB50181E090E08C0F9D1F8C0D9D1D2A +:105BD00005C09801A701B501CE0101960E94654E4E +:105BE0000F900F900F900F90DF91CF911F910F9119 +:105BF000FF90EF90DF90CF90BF90AF9008950F93FC +:105C00001F93CF93DF936091900D84E893E00E94FF +:105C1000F761C2E9DDE088E993E069918C010F5FEB +:105C20001F4F0E94F761C8010C391340B1F7C6E954 +:105C3000DDE08EE893E069918C010F5F1F4F0E94B9 +:105C4000F761C80102391340B1F7CAE9DDE082E823 +:105C50009CE069918C010F5F1F4F0E94F761C801A2 +:105C600006381C40B1F7DF91CF911F910F91089535 +:105C7000E3EAF3E18EE99AE29183808310922001B6 +:105C800085E08093210181EF9FEF9383828382815E +:105C900093819093250180932401E3E7F0E08081D4 +:105CA000816080830895CF92DF92EF92FF920F93ED +:105CB0001F93CF93DF9369017A011092C90DEAE037 +:105CC000F1E0208120622083EBE0F1E020812F7D54 +:105CD0002083660F771F70930502609304020CE91E +:105CE00013E187EF9AE2F80191838083C0E7D0E067 +:105CF00088818E7F8883E0EBF0E080818C7F8083D9 +:105D0000E1EBF0E08081877F8083A6EBB0E08C91AF +:105D10008F7D8C9388818D7F888380818460808350 +:105D200080818C7F808320E034E244EF59E4C70116 +:105D3000B6010E94557520E034E244E75BE40E941E +:105D4000A77720E030E040E85CE30E94A7770E945C +:105D5000BD7520E031E0C901861B970BF8019383E4 +:105D60008283828193818093B2008881816088835D +:105D7000DF91CF911F910F91FF90EF90DF90CF9027 +:105D80000895CF93C1E0C093C80D8091900D90917C +:105D9000910D0497029700F51092C80D1092940F80 +:105DA0001092950F1092960F1092970F8091070105 +:105DB0008F7D8093070180910801806280930801A4 +:105DC0008091020180628093020160E070E084EBC8 +:105DD00093E43EDCC093C70DCF9108951092900FCD +:105DE0001092910F1092920F1092930F0E94494DB2 +:105DF0001092C70D0C94494D8091401482FF08C049 +:105E00008A98809108018E7F809308015F9807C06F +:105E10008A9A809108018160809308015F9ADEDF91 +:105E20001092C20D08958F929F92AF92BF92CF921F +:105E3000DF92EF92FF926B017C0120E030E044EBB7 +:105E400053E40E946C7718160CF488C020E030E010 +:105E5000A901C701B6010E944E7587FD7FC08091E0 +:105E6000900D9091910D04970297B8F52091940FA1 +:105E70003091950F4091960F5091970FC701B60141 +:105E80000E9474744B015C0120E030E0A9010E9483 +:105E90004E75882309F462C0C092940FD092950F7A +:105EA000E092960FF092970F20E030E0A901C50133 +:105EB000B4010E946C77181624F4809102018F7D42 +:105EC00003C080910201806280930201C501B40188 +:105ED0009F77BEDB1092C80D41C020E030E044E364 +:105EE00053E4C701B6010E946C7718161CF4C12C4C +:105EF000D12C7601A701960160E070E084E393E481 +:105F00000E94747420E030E044E353E40E9455752D +:105F10009B01AC010E94757420E030E040E05FE33B +:105F20000E947574609300027093010280930202D4 +:105F30009093030220E030E040EA51E40E9455755E +:105F400020E030EC4FE754E40E94A7770E94C2752E +:105F5000CB010E94F94B81E08093C80DFF90EF9038 +:105F6000DF90CF90BF90AF909F908F9008958091D9 +:105F7000900D9091910D0497029780F4809101010A +:105F8000806280930101809101018064809301010E +:105F900080910201806280930201089580E18093E4 +:105FA000A1001092A00082E08093001480E29EE4A1 +:105FB0009093FF138093FE139093A7008093A60005 +:105FC00082E18093A10020E030E040EA51E460915A +:105FD00000027091010280910202909103020E94DE +:105FE000557520E030EC4FE754E40E94A7770E94FB +:105FF000C275CB010C94F94BCF93DF93D82FC8E037 +:106000005E98559AD7FF02C05D9A01C05D9865E021 +:1060100070E080E090E0A2D75E9A65E070E080E0FA +:1060200090E09CD75E98DD0F65E070E080E090E046 +:1060300095D7C15029F762E070E080E090E08ED7FC +:10604000559A5D9A62E070E080E090E0DF91CF9138 +:1060500085C75E98559A5D9865E070E080E090E0B5 +:106060007DD75E9A65E070E080E090E077D7559A42 +:106070005D9A65E070E080E090E070C7CF93559A3C +:106080005D9A62E070E080E090E068D75E9A62E03E +:1060900070E080E090E062D755988BEF99B1C92FFE +:1060A000C07295FF05C08150C9F7D3DFC1E006C0BB +:1060B0005E9862E070E080E090E050D78C2FCF9146 +:1060C0000895559A5D9A5E9A65E070E080E090E0F0 +:1060D00045D7559A5D9865E070E080E090E03ED746 +:1060E0005E9862E070E080E090E038C7CF93DF9385 +:1060F000D82FC8E0809102018F77809302018091B0 +:10610000010184608093010180910201D7FF02C0E8 +:10611000846001C08B7F8093020165E070E080E0C5 +:1061200090E01CD78091020180688093020165E0B5 +:1061300070E080E090E012D7809102018F77809329 +:106140000201DD0F65E070E080E090E007D7C1500C +:1061500089F662E070E080E090E000D78091010174 +:106160008460809301018091020184608093020128 +:1061700062E070E080E090E0DF91CF91EFC60F9396 +:106180001F93CF93DF93C2E0D1E088818F7788831C +:1061900001E011E0F80180818460808388818B7F39 +:1061A000888365E070E080E090E0D8D688818068E0 +:1061B000888365E070E080E090E0D0D6F8018081CF +:1061C0008460808388818460888365E070E080E0FB +:1061D00090E0DF91CF911F910F91C0C6CF93809136 +:1061E00001018460809301018091020184608093A9 +:1061F000020162E070E080E090E0B0D680910201A0 +:1062000080688093020162E070E080E090E0A6D6B2 +:10621000809101018B7F809301018BEF90910001B0 +:10622000C92FC47092FF05C08150C1F7A8DFC1E03B +:106230000AC0809102018F778093020162E070E0D2 +:1062400080E090E08BD68C2FCF9108950F931F9311 +:10625000CF93DF9301E011E0F801808184608083B7 +:10626000C2E0D1E0888184608883888180688883E7 +:1062700065E070E080E090E071D6F8018081846094 +:10628000808388818B7F888365E070E080E090E088 +:1062900065D688818F77888362E070E080E090E047 +:1062A000DF91CF911F910F9159C6CF93DF93D82FD4 +:1062B000C8E04398399AD7FF02C0419A01C041987B +:1062C00065E070E080E090E049D6439A65E070E0D8 +:1062D00080E090E043D64398DD0F65E070E080E019 +:1062E00090E03CD6C15029F762E070E080E090E099 +:1062F00035D6399A419A62E070E080E090E0DF9113 +:10630000CF912CC6CF93399A419A62E070E080E039 +:1063100090E024D6439A62E070E080E090E01ED6E0 +:1063200039988BEF96B1C92FC27091FF06C081508A +:10633000C9F70E94D14DC1E006C0439862E070E009 +:1063400080E090E00BD68C2FCF9108958F929F9292 +:10635000AF92BF92CF92DF92EF92FF920F931F9373 +:10636000CF93DF93CDB7DEB72A970FB6F894DEBF91 +:106370000FBECDBF6B017C01042F20E030E0A901EE +:106380000E944E7587FF07C08DE20E94195AF7FAE6 +:10639000F094F7F8F094102F123060F020E030E025 +:1063A00048EC52E4C701B6010E94A7776B017C015B +:1063B0001250F2CF00FF0AC020E030E040E251E48A +:1063C000C701B6010E94A7776B017C0120E030E095 +:1063D00040E05FE3C701B6010E9475740E94BD757D +:1063E000E1E0F0E0EC0FFD1FE00FF11D2EE2208355 +:1063F00010E03AE0832E912CA12CB12C611571058F +:1064000081059105A9F0101301C01F5FEE24E394EC +:10641000F12CEC0EFD1EE10EF11CA50194010E9471 +:10642000A778605DF7016083B901CA011F5FE6CFFD +:1064300080E3101748F4E1E0F0E0EC0FFD1FE10FFE +:10644000F11D80831F5FF5CF10130BC081E0810F1A +:10645000E1E0F0E0EC0FFD1FE80FF11D1E5F80E3AF +:106460008083112341F0FE01E10FF11D80810E9424 +:10647000195A1150F6CF2A960FB6F894DEBF0FBE08 +:10648000CDBFDF91CF911F910F91FF90EF90DF90E3 +:10649000CF90BF90AF909F908F900895CF92DF9252 +:1064A000EF92FF921F93CF93DF93CDB7DEB7362FD6 +:1064B000142FCDB6DEB64DB75EB7411B51090FB6EE +:1064C000F8945EBF0FBE4DBF4F5F5F4F7A01242F20 +:1064D000FA019E2F921B911728F4632F0E94877850 +:1064E0009193F7CF112351F0F701E10FF11D31978F +:1064F0008081805D0E94195A1150F4CF0FB6F89434 +:10650000DEBE0FBECDBEDF91CF911F91FF90EF9009 +:10651000DF90CF9008951F93CF93DF93CDB7DEB771 +:10652000C058D1090FB6F894DEBF0FBECDBFAE0183 +:1065300049575F4FFA0161917191AF01CE01019608 +:106540000E94677910E0E1E0F0E0EC0FFD1FE10F41 +:10655000F11D8081882321F00E94195A1F5FF3CF1B +:10656000C058DF4F0FB6F894DEBF0FBECDBFDF912E +:10657000CF911F91089543E0E9CE2091401420FF70 +:1065800008C02BE832E441E25DE30E94A77741E0D6 +:1065900001C040E0DBCE2091401420FF08C02BE872 +:1065A00032E441E25DE30E94A77744E001C043E0AA +:1065B000CDCE8A3020F0843620F043E003C041E0A5 +:1065C00001C042E06AE06ACF48E062E067CFCF9363 +:1065D000DF93FC018491EF012196882321F00E9432 +:1065E000195AFE01F7CFDF91CF910895CF93DF9332 +:1065F000EC018991882319F00E94195AFACFDF9192 +:10660000CF910895A6E5B4E1EBEAFFE04D915D91ED +:106610006D917D9141935193619371938FE0E73B2D +:10662000F807A1F708958CE1EBEAFFE0DF011D9286 +:106630008A95E9F71092AA121092AB1281E080932A +:10664000AA0F1092C70F08952F923F924F925F9218 +:106650006F927F928F929F92AF92BF92CF92DF9272 +:10666000EF92FF920F931F93CF93DF93C091AB12E2 +:10667000C11101C0C2E1C150D091C70FDC1709F4AC +:106680001BC1EC2EF12C29E2C29F8001112408537A +:10669000104FF801A588B688C788D08C61A172A177 +:1066A00083A194A19B01AC010E947574F80125A1FE +:1066B00036A147A150A50E94A7774B018C019B01F1 +:1066C000AC01B501C6010E944E7587FD02C05401A0 +:1066D000680189E28E9DF0018F9DF00D1124E85331 +:1066E000F04FC501D601818B928BA38BB48BC11166 +:1066F00001C0C2E1C150DC1761F029E22E9DC0014A +:106700002F9D900D11249C012853304F7901D9E21F +:1067100031C08091AA12D8135EC062D75CC0AC2E83 +:10672000B12CDA9DC001DB9D900D1124FC01E853D2 +:10673000F04F6F01C11101C0C2E1C1508091AA1296 +:106740008C1301C04DD7DA9D8001DB9D100D112403 +:106750000853104FF80185889688A788B08CA5014A +:10676000940161897289838994890E944E7581118F +:1067700006C076018091C70FC813D1CF2CC0F80195 +:1067800061A172A183A194A19B01AC010E947574C7 +:10679000F80125A136A147A150A50E94A777F701CE +:1067A00021893289438954890E9475742B013C01E7 +:1067B0009B01AC01C501B4010E946C77F801181669 +:1067C0002CF4418A528A638A748AD3CF818A928A4E +:1067D000A38AB48ACECFD091C70FF9E2DF9F8001A0 +:1067E00011240853104FC1E0CD0FC23109F4C0E0AD +:1067F0002090AB1289E2382EC21509F45BC0CC2E72 +:10680000D12C3C9CC0013D9C900D11249C0128532F +:10681000304F7901F8014188528863887488F90102 +:1068200081889288A388B488A5019401C301B2012C +:106830000E944E7587FF24C0F80161A172A183A157 +:1068400094A19B01AC010E947574F80125A136A1A9 +:1068500047A150A50E94A777A30192010E947574D9 +:106860002B013C019B01AC01C501B4010E946C7776 +:10687000181634F4F701418A528A638A748ADC2F2D +:106880003C9CF0013D9CF00D1124E853F04F25890C +:1068900036894789508D61897289838994890E94DC +:1068A0004E75811101C0DC2FCF5FC23109F4C0E009 +:1068B0008701A2CFD093C70FDF91CF911F910F9186 +:1068C000FF90EF90DF90CF90BF90AF909F908F9010 +:1068D0007F906F905F904F903F902F9008952F92F0 +:1068E0003F924F925F926F927F928F929F92AF9260 +:1068F000BF92CF92DF92EF92FF920F931F93CF93AD +:10690000DF93CDB7DEB7E5970FB6F894DEBF0FBEC5 +:10691000CDBF4B8F5C8F6D8F072F2DAB2091AB12AE +:106920002EA3422F50E05BA34AA339E2239FF0013C +:106930001124E853F04F158616861786108A15A283 +:1069400016A217A210A6108249E956E766E97EE76B +:1069500041A352A363A374A31C0143E054E158A7CD +:106960004FA3CE0101969AAB89AB2BEA3FE03EA73D +:106970002DA74EA139E2439FC00111249C0127534A +:10698000304F3AA729A7AE01435F5F4F5DA34CA3E9 +:1069900059A348A38BEA9FE098AB8FA723E034E18B +:1069A0003F8F2E8F10E03F01AF01435F5F4F5CAB25 +:1069B0004BAB2F0155E2450E511CF10161917191D4 +:1069C000819191911F01EE8DFF8D81909190A19009 +:1069D000B190FF8FEE8FA50194010E94A7770E94CE +:1069E0007777E9A9FAA96193719381939193FAABAF +:1069F000E9ABEFA5F8A9C190D190E190F190F8AB87 +:106A0000EFA76C197D098E099F099B01AC0197FFC7 +:106A100007C022273327A901261B370B480B590B28 +:106A2000E9A5FAA52193319341935193FAA7E9A7D8 +:106A3000EBA9FCA9C080D180E280F380C216D30606 +:106A4000E406F50610F469017A01EBA9FCA9C082FD +:106A5000D182E282F3820E94F075A50194010E9426 +:106A600055754B015C01E8A1F9A161937193819384 +:106A70009193F9A3E8A320E030E0A9010E944E75AC +:106A800087FF0DC0112321F0113021F084E003C0F5 +:106A900081E001C082E0F3019081892B8083A50110 +:106AA0009401C501B4010E94A777F20120813181D0 +:106AB000428153810E947574F201608371838283E5 +:106AC00093831F5F133009F078CF0E9414784B0135 +:106AD0005C01F2016083718382839383CD28CE2889 +:106AE000CF2809F422C220E030E0A9016B8D7C8D13 +:106AF0008D8D902F0E944E7587FD21C0FDA9FF232B +:106B000061F0A50194016B8D7C8D8D8D902F0E947D +:106B1000A7776B8F7C8F8D8F092F20E030E040E8C6 +:106B20005FE36B8D7C8D8D8D902F0E944E7587FF5E +:106B30000DC01B8E1C8E20E82D8F0FE307C039E996 +:106B40003B8F46E74C8F56E95D8F0EE7A501940118 +:106B500060E070E080E89FE30E94557569A77AA71E +:106B60008BA79CA7CE0149969A8F898FC12CD12CD7 +:106B7000760129E2EAA1FBA12E9FC0012F9F900D73 +:106B800011249C012751304F39A328A3ECA1FDA16A +:106B900080809180A280B38020E030E0A901C5010F +:106BA000B4010E944E75882309F472C0A5019401B6 +:106BB00069A57AA58BA59CA50E94A7772B013C010E +:106BC000ECA1FDA160837183828393839B01AC015F +:106BD00060E070E080E89FE30E9455754B015C0126 +:106BE000E894B7F8EFA1F8A5248535854685578543 +:106BF000C501B4010E94A7771B018E8F192F2B8D21 +:106C00003C8D4D8D502F0E946C7718162CF02B8EDA +:106C10003C8EFE8DFD8F012FE8A1F9A1F081FE8F42 +:106C2000E8A1F9A1118122803380EFA1F8A5208D80 +:106C3000318D428D538DC501B4010E94A7775B0150 +:106C40004C019B01AC016E8D712FC1010E944E75EC +:106C500087FD03C0AE8E1B2D14018E8D912FD101A7 +:106C6000E8A1F9A180839183A283B383EDA5FEA55A +:106C70002485358546855785C301B2010E94A777D3 +:106C80009B01AC01C701B6010E9474746B017C01C9 +:106C90002CA13DA12C5F3F4F3DA32CA34DA55EA58C +:106CA0004C5F5F4F5EA74DA78FA198A5049698A74C +:106CB0008FA3E98DFA8DE217F30709F067CF809172 +:106CC000AA12FEA1F8130FC089E22AA13BA1829F5C +:106CD000F001839FF00D1124E853F04F118A128ABE +:106CE000138A148A14C02FEE3FEF4FE75FE3C7010A +:106CF000B6010E946C7718167CF489E24AA15BA168 +:106D0000849FF001859FF00D1124E853F04F118E00 +:106D1000128E138E148E6AC02FEE3FEF4FE75FEB9B +:106D2000C701B6010E946C77181644F08FEEC82E8A +:106D3000DD24DA948FE7E82E8FEBF82EA701960179 +:106D400060E070E080E89FE30E94747420E030E02F +:106D500040E05FE30E94A7770E9414786B017C01FA +:106D600089E22AA13BA1829FF001839FF00D1124AB +:106D7000E853F04F209138143091391440913A146F +:106D800050913B1461A172A183A194A10E94A777A5 +:106D9000A70196010E94A7774B015C01A70196010C +:106DA00060E070E080E89FE30E9474749B01AC0196 +:106DB000C501B4010E9455756B017C0120E030E0F3 +:106DC000A9010E944E7587FF03C0C12CD12C76010A +:106DD00089E24AA15BA1849FF001859FF00D1124F7 +:106DE000E853F04FC18ED28EE38EF48E2B8D3C8D06 +:106DF0004D8D502F6B8D7C8D8D8D902F0E94A777A0 +:106E00007B018C0189E22AA13BA1829FF001839F33 +:106E1000F00D1124E853F04FC701D801858F968FEC +:106E2000A78FB0A3A18CB28CC38CD48C6090C30FFD +:106E30007090C40F8090C50F9090C60F9301A4016D +:106E4000B701C8010E944E7587FD05C0B62DA72D5C +:106E5000F82DE92D04C0BE2DAF2DF02FE12F9501A7 +:106E6000A6016B2F7A2F8F2F9E2F0E946C771816FA +:106E70006CF09301A401B701C8010E944E7587FD13 +:106E800003C05301640102C05701680189E24AA1AD +:106E90005BA1849FF001859FF00D1124E853F04F12 +:106EA000C501D601858B968BA78BB08F8CE0FE0138 +:106EB0003D96A7EBBFE001900D928A95E1F7C701DF +:106EC000D8018093C30F9093C40FA093C50FB093C4 +:106ED000C60F8CE0FE013196ABEABFE001900D9247 +:106EE0008A95E1F78091AA0F8093AB128F5F823170 +:106EF00009F480E08093AA0FE5960FB6F894DEBF00 +:106F00000FBECDBFDF91CF911F910F91FF90EF90FA +:106F1000DF90CF90BF90AF909F908F907F906F90B9 +:106F20005F904F903F902F908FCBE5960FB6F894DF +:106F3000DEBF0FBECDBFDF91CF911F910F91FF90AC +:106F4000EF90DF90CF90BF90AF909F908F907F9009 +:106F50006F905F904F903F902F900895611571054D +:106F600081059105C1F16A3071058105910548F4EB +:106F700025E02A95F1F70000615071098109910916 +:106F8000EDCF643671058105910548F4E5E3EA9596 +:106F9000F1F700006A50710981099109DFCF683E5D +:106FA000F3E07F078105910558F4EFE8F1E03197B0 +:106FB000F1F700C000006456710981099109CECF34 +:106FC000EFE9FFE03197F1F700C00000685E734021 +:106FD00081099109C3CF0895009741F0EFE9FFE0DF +:106FE0003197F1F700C000000197F6CF0895AF92F6 +:106FF000BF92CF92DF92EF92FF920F931F93CF93A6 +:10700000DF93CDB7DEB768970FB6F894DEBF0FBE3B +:10701000CDBF10915114112309F451C081E0809328 +:10702000531411FF06C087E198E0D1DA8CE098E0B4 +:107030001FC012FF06C087E198E0C9DA81E098E03E +:1070400017C013FF06C087E198E0C1DA8EEE97E023 +:107050000FC014FF06C087E198E0B9DA83EE97E02D +:1070600007C015FF0CC087E198E0B1DA87ED97E023 +:10707000AEDA84ED97E0ABDA84EF91E0ADDF10FD9E +:1070800008C08FB7F89490915114109251148FBF8B +:1070900016C084EE98E09BDA82ED98E098DA81E7FA +:1070A00098E095DA9FB7F894809101148F7E8093D1 +:1070B00001149FBF8091011484FFFCCFE2CF109197 +:1070C0000114112309F4ABC114FF04C081E08093C3 +:1070D0005214B5C110FFDDC08CE0E6E5F4E1DE013D +:1070E0001D9601900D928A95E1F78091531484309A +:1070F000E9F040F48130E9F080F0823001F58CE471 +:1071000098E01CC0803179F018F4883049F017C03D +:10711000803291F0803421F012C08BE698E00EC0EE +:1071200086E698E00BC080E698E008C08AE598E023 +:1071300005C083E598E002C086E498E048DA8091D3 +:107140003714837039F0BE01635F7F4FCE01019623 +:107150000E941C558091371480FD05C08091371422 +:1071600081FF60C017C08FE398E031DACE0101964D +:107170007C0100E0F70161917191819191917F0112 +:107180000ADA023019F08DE398E021DA0F5F03305C +:1071900089F7E4CF86E398E01ADA8CECC82E84E114 +:1071A000D82ECE0101967C0100E05701F6016191D5 +:1071B0007191819191916F0120853185428553852F +:1071C0000E9475749B01AC01F7016081718182811D +:1071D00093810E947474F701608371838283938327 +:1071E000023079F42091E4143091E5144091E614D2 +:1071F0005091E7140E947474F70160837183828355 +:107200009383F4E0EF0EF11CF501608171818281BE +:107210009381C1D9023019F084E398E0D8D90F5F87 +:10722000033019F68091371482FF0CC08EE298E08B +:10723000CED98091AB129091AA12891708F48E5E74 +:10724000891BB7D98091371483FF0CC089E298E07D +:10725000BED99091681580916915891708F48058F6 +:10726000891BA7D98091371484FF08C083E298E076 +:10727000AED90E94E85F43E062E010D98FE198E068 +:10728000A6D99FB7F894809101148E7F8093011442 +:107290009FBF812F887609F446C0809153148823BC +:1072A00049F0982F9C77B9F1883021F499D181E089 +:1072B0008093541480915314811103C092E09093F1 +:1072C000541416FF0AC0883019F480E480935314D4 +:1072D0008091541488608093541413FF07C08091E8 +:1072E000531485FD03C080E18093531415FF13C030 +:1072F00084EE98E06CD980E998E069D981E798E05C +:1073000066D98091541481FD146084608093541474 +:1073100080E2809353149FB7F89480910114877989 +:10732000809301149FBF11FF56C0812F887609F00A +:107330004AC080915314882339F0807509F443C002 +:107340008091541481FF3FC08091541482FF1EC06D +:107350008091B214882369F04091B3145091B41411 +:107360006091B5147091B6140E94214A80EA9FE0A2 +:1073700033DE8091B114882349F0823011F45C9A95 +:1073800002C00E949E6288EE93E026DE8091AA12DF +:107390009091AB12981799F0F9E28F9FC0011124D8 +:1073A0008853904F892B59F08091541483FD07C066 +:1073B00088E08093531436D10E94814702C0109216 +:1073C0005314109254149FB7F894809101148D7F38 +:1073D000809301149FBF12FF22C0809153148073C9 +:1073E00091F08091551481110EC08091541482FF48 +:1073F00004C00E941A4A0E949E62809154148260C6 +:107400008093541404C010925414109253149FB7D4 +:10741000F894809101148B7F809301149FBF809119 +:1074200053148C7709F0FED080915314803239F4D4 +:107430008091541481FF03C080E1809353146896B7 +:107440000FB6F894DEBF0FBECDBFDF91CF911F9175 +:107450000F91FF90EF90DF90CF90BF90AF90089585 +:107460004F925F926F927F92AF92BF92CF92DF92D4 +:10747000EF92FF920F931F93CF93DF936C01FB0169 +:107480005A01309729F08081D601A80FB11D01C0A3 +:10749000DC018C91ED018D3229F4229611968C91AC +:1074A00001E008C08B3211F0219603C0229611969C +:1074B0008C9100E0512C612C10E020E030E0A9011B +:1074C0007E0160ED762E780E89E08715D8F0639402 +:1074D000A8E0A61598F051101150A5E0B0E00E9468 +:1074E000FC78DC01CB01880F991FAA1FBB1F9C01F0 +:1074F000AD01270D311D411D511D0BC0511009C09B +:107500001F5F07C0BEEF7B1208C0511006C0552494 +:1075100053942196D7018C91D3CF662009F450C0A3 +:107520007F01CA01B9010E94EE752B013C0120E0E8 +:1075300030E0A9010E944E75882349F11F3F64F491 +:107540002AE037ED43E25CE3C301B2010E94A77772 +:107550002B013C011E5FF2CF1F3F59F42DEC3CEC98 +:107560004CEC5DE3C301B2010E94A7772B013C0103 +:107570000EC0112361F020E030E040E251E4C3018D +:10758000B2010E94A7772B013C011150F2CF0023DA +:1075900051F077FA709477F87094F5014082518237 +:1075A0006282738206C0D5014D925D926D927C928B +:1075B0001397CC19DD09C150F701C08381E001C0E8 +:1075C00080E0DF91CF911F910F91FF90EF90DF90BE +:1075D000CF90BF90AF907F906F905F904F90089545 +:1075E000CF93DF93C0916F13D09170132097B9F0B0 +:1075F00081E0809372136091881370918913809158 +:107600008A1390918B139B01AC010E94A777698B21 +:107610007A8B8B8B9C8B1092701310926F13DF916F +:10762000CF9108952F923F924F925F926F927F92E7 +:107630008F929F92AF92BF92CF92DF92EF92FF9282 +:107640000F931F93CF93DF93CDB7DEB7CD54D109FE +:107650000FB6F894DEBF0FBECDBF80915314807774 +:1076600023968FAF2397882389F020E030E0A9018B +:10767000609188137091891380918A1390918B1374 +:107680000E944E75882311F40C94F04320918813C6 +:107690002F8B30918913388F40918A13498F5091E5 +:1076A0008B135A8F809198138B83909199139D839C +:1076B000A0919A13AE83B0919B13BC830091841365 +:1076C00010918513E0918613E987F0918713FD8768 +:1076D00020917713309178134091791350917A1358 +:1076E0002DA33EA34FA358A7309173133DAF4091F4 +:1076F00074134EAF509175135FAF8091761321963E +:107700008FAF219720917F13309180134091811387 +:10771000509182132DAB3EAB4FAB58AF3091191344 +:1077200022963FAF22974091F4124BA75091AB1293 +:1077300024965FAF24978091AA128B8F9091C70FE8 +:1077400025969FAF2597A0916F13B0917013BA8BB8 +:10775000A98B20917B1330917C1340917D13509124 +:107760007E1329AF3AAF4BAF5CAF309190133B8B98 +:10777000409191134C8B509192135D8B8091931398 +:107780008E8B90918C139C8FA0918D13AD8FB091A7 +:107790008E13BE8FE0918F13EF8F30909413209053 +:1077A0009513F0919613F983209197132A83809172 +:1077B000F3125BA5851709F4F4C649895A89452B4C +:1077C00009F033C224965FAD24978B8D581709F4C6 +:1077D00078C7A82EB12CA9E2AA9DC001AB9D900D3F +:1077E0001124FC01E853F04FFA8BE98B809172135E +:1077F000882319F010927213BCC0809171138F5FAF +:10780000853019F08093711302C010927113E091CA +:10781000711321E12E9FF0011124E65EFC4E89E2F6 +:107820008A9DA0018B9D500D11244853504F7A0121 +:10783000DA018C91808311964D915D916D917C91CF +:107840001497DB01CA0123E0880F991FAA1FBB1FF1 +:107850002A95D1F781839283A383B483D7011596A8 +:107860004D915D916D917C911897DB01CA0133E0D8 +:10787000880F991FAA1FBB1F3A95D1F7858396835E +:10788000A783B087D70119964D915D916D917C9139 +:107890001C97DB01CA0143E0880F991FAA1FBB1F79 +:1078A0004A95D1F781879287A387B487D7011D9620 +:1078B0006D917D918D919C9150978B019C0153E02E +:1078C000000F111F221F331F5A95D1F70587168706 +:1078D0002787308B0E94EE756DAF7EAF8FAF2196FC +:1078E0009FAF2197F70125A136A147A150A50E947E +:1078F00055756DA37EA38FA398A79B01AC0160E093 +:1079000070E080EA9FE30E94557569AF7AAF8BAF54 +:107910009CAF2396FFAD2397FF23D1F02B893C89A1 +:107920004D895E896B897C898D899E890E94A777A4 +:10793000D70151966D937D938D939C935497BB89FA +:10794000BF8BEC89E88FFD89F98F2E892A8F0DC0B6 +:10795000D70151966D917D918D919C9154970E9484 +:1079600014786F8B788F898F9A8F1DAA1EAA1FAAF1 +:1079700018AE29E22A9DF0012B9DF00D1124E85349 +:10798000F04FFE87ED87C1A0D2A0E3A0F4A0A7012D +:10799000960160E070E080E09FE30E945575698782 +:1079A0007A878B879C8723963FAD23973323F1F10A +:1079B00042E040938313AD85BE8595964D905D90D2 +:1079C0006D907C90989751968D909D90AD90BC90C5 +:1079D0005497A50194010E94A7779B01AC01C301B4 +:1079E000B2010E9474748B0189879D8720E030E08A +:1079F000A9010E944E7587FF1BC1A7019601C7010F +:107A0000B6010E947574A30192010E94A7779B01A1 +:107A1000AC01C501B4010E9474740E9414786B8B90 +:107A20007C8B8D8B9E8B3F82288615C11092831391 +:107A3000ED85FE85F5A1FF83AD85BE859696BC914B +:107A4000B887ED85FE8507A110A5EB8DEF5FE231CC +:107A500009F4E0E02496FFAD2497EF1789F029E2BE +:107A60002E9FF0011124E853F04F618972898389B8 +:107A700094890E9414786B8B7C8B8D8B9E8B04C0B9 +:107A80001B8A1C8A1D8A1E8A2B893C894D895E8926 +:107A90006B897C898D899E890E94A7772B013C0187 +:107AA00089E28A9DA0018B9D500D11244853504FAF +:107AB0005AA349A3DA0151962D913D914D915C91C4 +:107AC00054972D873E874F87588BA30192016D8570 +:107AD0007E858F8598890E94747429853A854B85A7 +:107AE0005C850E94A7772F813885A8010E94757454 +:107AF00020E030E040E05FE30E94A777362E272E9B +:107B000089839A8320E030E0A9010E946C771816DF +:107B10000CF095C0232D322D49815A816F817885D3 +:107B2000C8010E946C7718160CF071C0E9A1FAA187 +:107B3000858C968CA78CB0A0A3019201C501B401DD +:107B40000E94747429853A854B855C850E94A777CD +:107B50006B837D838E839C839B01AC01632D722D8F +:107B600089819A810E946C77181694F5C501B40139 +:107B70000E9414786C8F7D8F8E8F9F8FA50194014A +:107B80006D857E858F8598890E944E75811106C00E +:107B9000F1E0F093831309831A835DC02D853E8540 +:107BA0004F855889C501B4010E94747429853A85AE +:107BB0004B855C850E94A7779B01AC016F8178851E +:107BC000C8010E9474746F83788789839A8343C045 +:107BD000A7019601C701B6010E947574232D322DAD +:107BE00049815A810E94A777A30192010E9475746E +:107BF0000E9414786C8F7D8F8E8F9F8F3F82288696 +:107C00003B822D8229812E833A813C8324C042E02D +:107C10004093831309831A835F895C8F888D8D8FCE +:107C2000998D9E8FAA8DAF8F16C03F82288617C070 +:107C30003F8228861B8A1C8A1D8A1E8A10C0BB8927 +:107C4000BC8FEC89ED8FFD89FE8F2E892F8F1F82CF +:107C5000188619821A8200E010E019861D86229685 +:107C60005FAD2297452F50E05AA749A786E0849F31 +:107C7000F001859FF00D1124EB50FD4E80917113A2 +:107C80008283A989BA899596BC91B8ABE989FA89AA +:107C9000F6A1F9ABA989BA899796BC912696BFAF90 +:107CA0002697E989FA89F0A52796FFAF279729AD8E +:107CB0003AAD4BAD5CAD68A979A98B2F9F2F0E947F +:107CC00074746CA77DA78EA79FA720E030E0A90160 +:107CD0000E944E7587FF04C01CA61DA61EA61FA6E7 +:107CE0002091831328A32B813D814E815C816F817C +:107CF000788589819A810E944E75811105C032E094 +:107D000028963FAF289704C041E028964FAF2897A8 +:107D100028A859A92E965FAF2E9726968FAD269745 +:107D20002D968FAF2D9727963FAC27978EE3C82EC1 +:107D300083ECD82E8EE2E82E89E3F82E412C512CCC +:107D40003201C9A2DAA2EBA2FCA238A1332321F0AE +:107D5000313009F485C0C5C0A989BA8991962D91A1 +:107D60003D914D915C919497C701B6010E94A77710 +:107D70004B015C0120E030E040E05FE30E94A77728 +:107D80002F89388D498D5A8D0E947574A7019601EF +:107D90000E94A7779B01AC01622D2E967FAD2E9796 +:107DA0002D968FAD2D97932D0E947474262E2E96AE +:107DB0007FAF2E972D968FAF2D97392E2F81388537 +:107DC00049815A810E944E7587FF3DC02F813885B9 +:107DD00049815A8168A979A926968FAD2697279659 +:107DE0009FAD27970E9474749B01AC010E9475742B +:107DF0006B017C012C8D3D8D4E8D5F8D6F89788D53 +:107E0000898D9A8D0E9475749B01AC01C701B601E2 +:107E10000E9455756B017C012896BFAD2897B8A3C9 +:107E2000EC8DEF8BFD8DF88F2E8D298F3F8D3A8F46 +:107E30002F8048852E964FAF2E9759812D965FAF94 +:107E40002D973A80EBC0A50194016F89788D898DBB +:107E50009A8D0E9475746F8B788F898F9A8FDEC090 +:107E60002C8D3D8D4E8D5F8DC701B6010E94A77789 +:107E70009B01AC01622D2E967FAD2E972D968FAD76 +:107E80002D97932D0E9474744B015C012B813D81D1 +:107E90004E815C810E944E7587FFB8C02B813D8169 +:107EA0004E815C81622D2E967FAD2E972D968FADE3 +:107EB0002D97932D0E9474742C8D3D8D4E8D5F8D6A +:107EC0000E9455756B017C012B808D812E968FAFA2 +:107ED0002E979E812D969FAF2D973C80A2E0A8A360 +:107EE0009DC0E989FA8921A132A143A154A1C7010A +:107EF000B6010E94A7774B015C012F89388D498D0F +:107F00005A8D0E944E7587FF52C020E030E040E05D +:107F10005FE3C501B4010E94A7779B01AC016F89A3 +:107F2000788D898D9A8D0E947474A70196010E94A4 +:107F3000A7779B01AC01622D2E967FAD2E972D96D3 +:107F40008FAD2D97932D0E94747429966FAF29974A +:107F50002A967FAF2A972B968FAF2B972C969FAFA1 +:107F60002C97980149855D850E946C771816FCF462 +:107F7000A50194016F89788D898D9A8D0E94747402 +:107F80006F8B788F898F9A8F29962FAC29972A9695 +:107F9000FFAD2A972E96FFAF2E972B962FAD2B97DE +:107FA0002D962FAF2D972C963FAC2C9737C098016C +:107FB00049855D85622D2E967FAD2E972D968FADCE +:107FC0002D97932D0E9474749B01AC010E947574CF +:107FD0006B017C012B893C894D895E896F89788D85 +:107FE000898D9A8D0E9475749B01AC01C701B60101 +:107FF0000E9455756B017C01202E2E961FAF2E9787 +:1080000039852D963FAF2D973D8408C0282C2E969C +:108010009FAE2E972D96AFAE2D973B2CA7019601C4 +:10802000C301B2010E9475742B013C0129A13AA140 +:108030004BA15CA10E944E7587FF07C0A30192016E +:1080400069A17AA18BA19CA120C02CA53DA54EA51C +:108050005FA5622D2E967FAD2E972D968FAD2D9715 +:10806000932D0E946C77181644F52EE333EC4EE204 +:1080700059E369A17AA18BA19CA10E94757469A39F +:108080007AA38BA39CA3A30192010E9474746B0139 +:108090007C01980149855D85622D2E967FAD2E97D6 +:1080A0002D968FAD2D97932D0E946C7718160CF49A +:1080B0004CCE48A14093831303C058A1509383131F +:1080C0002DA13EA14FA158A5622D2E967FAD2E97D2 +:1080D0002D968FAD2D97932D0E94A77768A379A336 +:1080E0008CA798AB0E943B756B017C016DAD7EAD9A +:1080F0008FAD21969FAD21970E943B754B015C018E +:10810000A70196010E9474740E94C27569AB7AAB94 +:108110008BAB9CABA6E089A59AA5A89FF001A99F6F +:10812000F00D1124EB50FD4E29A93AA9318320838B +:10813000232B09F087C023965FAD2397552309F4BD +:1081400081C0C801A985BD85809384139093851350 +:10815000A0938613B09387138B899C89AD89BE89C0 +:108160008093901390939113A0939213B0939313D1 +:108170008C8D9D8DAE8DBF8D80938C1390938D13C0 +:10818000A0938E13B0938F138B819D81AE81BC81A0 +:108190008093981390939913A0939A13B0939B1381 +:1081A0008F819885A981BA818093941390939513B8 +:1081B000A0939613B093971322968FAD2297809336 +:1081C0001913A989BA89B0937013A0936F1329ADBD +:1081D0003AAD4BAD5CAD20937B1330937C13409351 +:1081E0007D1350937E133B8D3093AA128DA19EA1D7 +:1081F000AFA1B8A58093771390937813A0937913C8 +:10820000B0937A139BA59093F41210928813109256 +:10821000891310928A1310928B1310927F1310926D +:1082200080131092811310928213C0927313D09214 +:108230007413E0927513F09276132DA13EA14FA115 +:1082400058A565C12DA93EA94FA958ADC301B201DA +:108250000E9475742B013C0128A139A14CA558A995 +:10826000C501B4010E9474749B01AC01C301B20149 +:108270000E9455754B015C0128A139A14CA558A954 +:10828000C701B6010E947474A50194010E94A777EA +:108290006DAB7EAB8FAB98AF20EC31EE44E65EE485 +:1082A000C501B4010E94A7770E943B750E94C27568 +:1082B000603DE7E07E078105910560F446E029A571 +:1082C0003AA5429FF001439FF00D1124EB50FD4E63 +:1082D000158253C0603A5FE075078105910560F42F +:1082E00026E0A9A5BAA52A9FF0012B9FF00D112425 +:1082F000EB50FD4E31E011C060344FE17407810551 +:10830000910568F426E0A9A5BAA52A9FF0012B9F44 +:10831000F00D1124EB50FD4E32E035830CC0A6E089 +:1083200049A55AA5A49FF001A59FF00D1124EB507B +:10833000FD4EB3E0B58346E029A53AA5429FF00182 +:10834000439FF00D1124EB50FD4E2581022E04C0F9 +:1083500096958795779567950A94D2F7A9A9BAA9B2 +:1083600002C0AA0FBB1F2A95E2F7B183A083611553 +:108370007105B1E08B07910568F446E029A53AA59F +:10838000429FF001439FF00D1124EB50FD4E74838A +:10839000638304C08FEF9FEF94838383BBA4B39464 +:1083A00096E0B91201C0B12C980149855D85622D16 +:1083B0002E967FAD2E972D968FAD2D97932D0E94E3 +:1083C0006C771816CCF4822D2E969FAD2E972D9695 +:1083D000AFAD2D97B32DE989FA8985A396A3A7A3FD +:1083E000B0A7F8A1FDAF29A12EAF3CA53FAF48A98A +:1083F00021964FAF2197CDC020E030E0A901622D3A +:108400002E967FAD2E972D968FAD2D97932D0E9492 +:108410006C7718160CF0A6C0C801A985BD8580939D +:10842000841390938513A0938613B09387138B893D +:108430009C89AD89BE898093901390939113A093EA +:108440009213B09393138C8D9D8DAE8DBF8D8093C1 +:108450008C1390938D13A0938E13B0938F138B81F5 +:108460009D81AE81BC818093981390939913A093C2 +:108470009A13B0939B138F819885A981BA818093B9 +:10848000941390939513A0939613B09397135BA5B1 +:108490005093191389899A899093701380936F135D +:1084A00029AD3AAD4BAD5CAD20937B1330937C137B +:1084B00040937D1350937E133B8D3093AA128DA170 +:1084C0009EA1AFA1B8A58093771390937813A09342 +:1084D0007913B0937A13B092F41210928813109219 +:1084E000891310928A1310928B1310927F1310929B +:1084F00080131092811310928213C0927313D09242 +:108500007413E0927513F09276139C01AD01C701CC +:10851000B6010E945575A989BA8995966D937D9388 +:108520008D939C9398975CD8BB8DB093C70FC35B1A +:10853000DF4F0FB6F894DEBF0FBECDBFDF91CF91F6 +:108540001F910F91FF90EF90DF90CF90BF90AF9071 +:108550009F908F907F906F905F904F903F902F9063 +:108560000C9424332496EFAD2497FB8DEF1779F00C +:108570008F2F8F5F823109F480E02B8D25963FADE0 +:108580002597231303C025968FAF25978B8F1A8AC3 +:10859000198A3F8028844BA522964FAF2297BBA60D +:1085A00006C9C801A985BD8580938413909385135E +:1085B000A0938613B09387138B899C89AD89BE895C +:1085C0008093901390939113A0939213B09393136D +:1085D0008F89988DA98DBA8D809388139093891374 +:1085E000A0938A13B0938B138C8D9D8DAE8DBF8D10 +:1085F00080938C1390938D13A0938E13B0938F134D +:108600008B819D81AE81BC81809398139093991347 +:10861000A0939A13B0939B13832D922DA981BA81B5 +:108620008093941390939513A0939613B0939713FC +:1086300022968FAD229780931913A989BA89B09396 +:108640007013A0936F1329AD3AAD4BAD5CAD209381 +:108650007B1330937C1340937D1350937E133B8D9B +:108660003093AA128DAD9EADAFAD2196BFAD2197CF +:108670008093731390937413A0937513B093761330 +:108680008DA19EA1AFA1B8A5809377139093781385 +:10869000A0937913B0937A132DA93EA94FA958AD91 +:1086A00020937F1330938013409381135093821350 +:1086B0003BA53093F41225964FAD25974093C70FF5 +:1086C0008FC0C801A985BD858093841390938513BD +:1086D000A0938613B09387138B899C89AD89BE893B +:1086E0008093901390939113A0939213B09393134C +:1086F0008F89988DA98DBA8D809388139093891353 +:10870000A0938A13B0938B138C8D9D8DAE8DBF8DEE +:1087100080938C1390938D13A0938E13B0938F132B +:108720008B819D81AE81BC81809398139093991326 +:10873000A0939A13B0939B13832D922DA981BA8194 +:108740008093941390939513A0939613B0939713DB +:1087500022965FAD229750931913109270131092C6 +:108760006F1389AD9AADABADBCAD80937B13909385 +:108770007C13A0937D13B0937E1324969FAD249712 +:108780009093AA128DAD9EADAFAD2196BFAD21974E +:108790008093731390937413A0937513B09376130F +:1087A0002DA13EA14FA158A52093771330937813A4 +:1087B0004093791350937A138DA99EA9AFA9B8ADB0 +:1087C00080937F1390938013A0938113B0938213AF +:1087D0009BA59093F4122596AFAD2597A093C70F54 +:1087E000C35BDF4F0FB6F894DEBF0FBECDBFDF9186 +:1087F000CF911F910F91FF90EF90DF90CF90BF909E +:10880000AF909F908F907F906F905F904F903F9030 +:108810002F900895CF92DF92EF92FF920F931F93C4 +:1088200090913414092F10E020E030E0809135144D +:10883000482F50E060E070E091708170680179012C +:10884000F694E794D794C794C0FC92606A017B01C8 +:10885000F694E794D794C794C0FC8260E2E0369522 +:10886000279517950795EA95D1F700FD946022E0CA +:1088700076956795579547952A95D1F740FD846081 +:108880009093CE128093CD121F910F91FF90EF9095 +:10889000DF90CF9008951F920F920FB60F92112480 +:1088A0000BB60F922F933F938F939F93EF93FF936A +:1088B00021B33091CE12832F817090E036E0880F83 +:1088C000991F3A95E1F7922F9F7B892B81BBEBE0B3 +:1088D000F1E090818091CE128270880F880F977F8F +:1088E000892B808381B39091CE1292FB992790F9C6 +:1088F0008E7F892B81BB15BCFF91EF919F918F914A +:108900003F912F910F900BBE0F900FBE0F901F90B5 +:10891000189580916F008D7F80936F00809181000A +:10892000887F8160809381001092CF1280913614ED +:108930008F3F21F490915114992349F09091531451 +:10894000943029F090E00E94EC3781E001C080E093 +:108950009091401492FF02C091E08927882341F052 +:108960008A9A809108018160809308015F9A089536 +:108970008A98809108018E7F809308015F980895FE +:10898000CF93DF93C6DF8BE2E1E7F3E1DF011D92D6 +:108990008A95E9F783E2E0EDF2E1DF011D928A9525 +:1089A000E9F71092701310926F131092F312109255 +:1089B000191381E08093F4121092CF122BDF81B350 +:1089C0009091CE129170C92FB0E0DB2F96E0CC0FC2 +:1089D000DD1F9A95E1F78F7BC82BC1BBEBE0F1E07F +:1089E00090818091CE128270880F880F977F892B9B +:1089F000808381B39091CE1292FB992790F98E7F5C +:108A0000892B81BB8091CD1280FD8F9A80FF8F983A +:108A100080819091CD1292708D7F892B808321B3BC +:108A20009091CD129470892F90E095958795922F13 +:108A30009D7F892B81BBDF91CF9108951F920F926B +:108A40000FB60F9211240BB60F922F933F934F93B3 +:108A50005F936F937F938F939F93AF93BF93EF93A6 +:108A6000FF938091CF12811139C28091DF1280FD76 +:108A70008F9A80FF8F9890910B01482F42709D7FB5 +:108A8000942B90930B0141B3847090E0959587955A +:108A9000942F9D7F892B81BB91B38091DE12282F6B +:108AA000217030E066E0220F331F6A95E1F79F7B6B +:108AB000292B21BB90910B01282F2270220F220F0E +:108AC000977F922B90930B0121B382FB992790F90A +:108AD000822F8E7F892B81BB8091DD1286BD82E043 +:108AE00085BD81E08093CF1278948091F1129091AE +:108AF000F212892B09F0ACC08091F31290911913F6 +:108B0000981709F49BC0E091F3122E2F30E086E015 +:108B1000E89FF0011124EB50FD4EF093F212E09328 +:108B2000F1128381948190938900809388008081E1 +:108B300091819093ED128093EC12E2818091EE127C +:108B40008E1761F1E093EE1281E1E89FF0011124AC +:108B5000E65EFC4EF093F012E093EF128585968569 +:108B6000A785B089B695A795979587958093D812D4 +:108B70009093D912A093DA12B093DB128093D4129F +:108B80009093D512A093D612B093D7128093D0129F +:108B90009093D112A093D212B093D312E091EF121E +:108BA000F091F01290818091CD1289278093DF128D +:108BB00086E0829FD001839FB00D1124AB50BD4E43 +:108BC00015962C9181819281A381B481022E04C0DB +:108BD000B695A795979587950A94D2F78093E0125A +:108BE0009093E112A093E212B093E31285819681F3 +:108BF000A781B085022E04C0B695A7959795879555 +:108C00000A94D2F78093E4129093E512A093E612AF +:108C1000B093E71281859285A385B48504C0B6958B +:108C2000A795979587952A95D2F78093E812909308 +:108C3000E912A093EA12B093EB120AC06ADE9FB762 +:108C4000F894809101148460809301149FBF46C101 +:108C5000809102148130B1F489B1807190915014E7 +:108C6000891781F0109202148CE0E6E5F4E1A2E6A7 +:108C7000B4E101900D928A95E1F78091011480642E +:108C8000809301141092DE124091D0125091D112B3 +:108C90006091D2127091D3128091E0129091E11202 +:108CA000A091E212B091E312840F951FA61FB71F87 +:108CB0008093D0129093D112A093D212B093D3127A +:108CC000E091EF12F091F012458556856785708925 +:108CD000481759076A077B0768F521E02093DE12E1 +:108CE0004585568567857089841B950BA60BB70B48 +:108CF0008093D0129093D112A093D212B093D3123A +:108D000020818091561490915714A0915814B091DD +:108D1000591420FF04C00197A109B10903C00196AD +:108D2000A11DB11D8093561490935714A09358140D +:108D3000B09359144091D4125091D5126091D6122B +:108D40007091D7128091E4129091E512A091E612F1 +:108D5000B091E712840F951FA61FB71F8093D412FE +:108D60009093D512A093D612B093D712458556850D +:108D700067857089481759076A077B0778F520913E +:108D8000DE1222602093DE12458556856785708944 +:108D9000841B950BA60BB70B8093D4129093D5121E +:108DA000A093D612B093D712208180915A1490913B +:108DB0005B14A0915C14B0915D1421FF04C0019775 +:108DC000A109B10903C00196A11DB11D80935A14D8 +:108DD00090935B14A0935C14B0935D144091D812EF +:108DE0005091D9126091DA127091DB128091E812E1 +:108DF0009091E912A091EA12B091EB12840F951FA5 +:108E0000A61FB71F8093D8129093D912A093DA129D +:108E1000B093DB12458556856785708948175907D9 +:108E20006A077B0778F52091DE1224602093DE121A +:108E30004585568567857089841B950BA60BB70BF6 +:108E40008093D8129093D912A093DA12B093DB12C8 +:108E5000208180915E1490915F14A0916014B09174 +:108E6000611422FF04C00197A109B10903C0019652 +:108E7000A11DB11D80935E1490935F14A0936014A4 +:108E8000B093611480915314843039F49091DE12C0 +:108E900080916F1489238093DE128091EC1290915F +:108EA000ED1201979093ED128093EC12892B69F4E7 +:108EB0001092F2121092F1128091F3128F5F809350 +:108EC000F312863011F41092F3129091DE12809119 +:108ED000CE1289278093DE121092CF12FF91EF916C +:108EE000BF91AF919F918F917F916F915F914F91C2 +:108EF0003F912F910F900BBE0F900FBE0F901F90C0 +:108F000018958091401482FF08C08A9A80910801C8 +:108F10008160809308015F9A07C08A988091080158 +:108F20008E7F809308015F98809153148C70A1F01C +:108F30008091CD128093DF128091CE128093DE1249 +:108F400080913314880F845081958093DD12809135 +:108F50006F00826080936F0008951F920F920FB68A +:108F60000F9211240BB60F92CF92DF92EF92FF92E5 +:108F70000F931F932F933F934F935F936F937F9321 +:108F80008F939F93AF93BF93EF93FF938091AE1214 +:108F90009091AF12009721F0019709F435C131C2C9 +:108FA0008091B0129091B112A091B212B091B3120F +:108FB000AC01BD0141505109610971094093B012E2 +:108FC0005093B1126093B2127093B312892B8A2B13 +:108FD0008B2B59F080910201806480930201809173 +:108FE00002018F7B809302010FC0E091C912F091C2 +:108FF000CA12309709F01995809172008D7F809385 +:10900000720081E08093C8128091AC129091AD12F1 +:109010008130910509F4B4C020F0029709F4D3C05F +:10902000E4C1C090B012D090B112E090B212F090B2 +:10903000B3126091B4127091B5128091B6129091F2 +:10904000B71222E030E040E050E00E94C978C2163A +:10905000D306E406F5060CF4AFC08091C4129091DB +:10906000C512A091C612B091C7120196A11DB11DE3 +:109070008093C4129093C512A093C612B093C712E6 +:10908000C090BC12D090BD12E090BE12F090BF1202 +:109090008091BC129091BD12A091BE12B091BF12EE +:1090A0000091C4121091C5122091C6123091C712BE +:1090B000BC01CD01660F771F881F991F52E0000F7A +:1090C000111F221F331F5A95D1F7A90198012F5F55 +:1090D0003F4F4F4F5F4F0E94C978C21AD30AE40A2C +:1090E000F50AC092BC12D092BD12E092BE12F0926C +:1090F000BF124091BC125091BD126091BE1270918E +:10910000BF128091C0129091C112A091C212B09171 +:10911000C312481759076A077B070CF066C1809194 +:10912000B0129091B112A091B212B091B3124091CD +:10913000B4125091B5126091B6127091B712880FA7 +:10914000991FAA1FBB1F841B950BA60BB70B8093FF +:10915000B8129093B912A093BA12B093BB12809137 +:10916000C0129091C112A091C212B091C31280930B +:10917000BC129093BD12A093BE12B093BF12C6C092 +:109180008091B8129091B912A091BA12B091BB120D +:10919000AC01BD0141505109610971094093B812F8 +:1091A0005093B9126093BA127093BB121816190635 +:1091B0001A061B060CF419C182E090E09093AD12E0 +:1091C0008093AC1212C18091B0129091B112A09113 +:1091D000B212B091B312892B8A2B8B2B09F405C1E3 +:1091E0008091C4129091C512A091C612B091C7127D +:1091F0000197A109B1098093C4129093C512A0935D +:10920000C612B093C712A0C08091020180648093FF +:109210000201809102018F7B809302018091AC1248 +:109220009091AD12009721F0029709F472C0DDC051 +:109230004091BC125091BD126091BE127091BF124C +:109240008091C0129091C112A091C212B091C3122C +:1092500084179507A607B7070CF04DC08091C4127C +:109260009091C512A091C612B091C7120196A11D8E +:10927000B11D8093C4129093C512A093C612B093EF +:10928000C712C090BC12D090BD12E090BE12F090F8 +:10929000BF128091BC129091BD12A091BE12B091EC +:1092A000BF120091C4121091C5122091C6123091C4 +:1092B000C712BC01CD01660F771F881F991FF2E00E +:1092C000000F111F221F331FFA95D1F7A901980132 +:1092D0002F5F3F4F4F4F5F4F0E94C978C21AD30A8A +:1092E000E40AF50AC092BC12D092BD12E092BE12FE +:1092F000F092BF127AC0E091CB12F091CC1230976D +:1093000029F019951092CC121092CB1281E090E0C6 +:1093100055CF8091C4129091C512A091C612B09100 +:10932000C712AC01BD014150510961097109409357 +:10933000C4125093C5126093C6127093C712892B42 +:109340008A2B8B2B09F441C06091BC127091BD1225 +:109350008091BE129091BF120091C4121091C5125B +:109360002091C6123091C712C090C412D090C5127D +:10937000E090C612F090C71242E0000F111F221FAA +:10938000331F4A95D1F7A90198012F5F3F4F4F4FE7 +:109390005F4F0E9478789701860152E0000F111FFD +:1093A000221F331F5A95D1F7A90198012150310985 +:1093B000410951090E94C9782093BC123093BD1213 +:1093C0004093BE125093BF1210C0809172008D7FE7 +:1093D00080937200E091CB12F091CC12309729F07B +:1093E00019951092CC121092CB128091BC129091D0 +:1093F000BD12A091BE12B091BF129093A9008093AC +:10940000A800FF91EF91BF91AF919F918F917F91B4 +:109410006F915F914F913F912F911F910F91FF900D +:10942000EF90DF90CF900F900BBE0F900FBE0F907C +:109430001F901895E0EAF0E080818F7D80835C9832 +:109440000895CF92DF92EF92FF926A017B01811122 +:1094500005C0FF90EF90DF90CF90ECCF813011F4FA +:109460005C9801C05C9A83E28093A0008091A10087 +:10947000807E8A618093A1008FEF9FEF9093A90077 +:109480008093A80020E030E0A901C701B6010E9446 +:109490004E751816F4F620E030E0A901C701B601B8 +:1094A0000E944E7587FD11C020E030E04AE754E489 +:1094B000C701B6010E946C77181654F4C12CD12C48 +:1094C0008AE7E82E84E4F82E03C0C12CD12C760163 +:1094D0002CEE31E143E852E4C701B6010E94A777C0 +:1094E00020E030E040E05FE30E9475740E942B763C +:1094F0000E94C2757093AB006093AA005C9AFF90C3 +:10950000EF90DF90CF900895CF93DF93C62F8130F7 +:1095100009F48BC038F1823009F066C10E946130D5 +:109520008CE60E94FC2F0E943E308C2F0E94FC2F64 +:109530000E943E300E9461308DE60E94FC2F0E9406 +:109540003E3062E070E080E090E00E94AE37559AD5 +:109550005D9A62E070E080E090E00E94AE37D8E073 +:10956000C0E0FFC036D38CE60E9455310E948231A4 +:109570008C2F0E9455310E9482312BD38DE60E94A0 +:1095800055310E94823162E070E080E090E00E94FC +:10959000AE37399A419A62E070E080E090E00E9434 +:1095A000AE37D8E0C0E0439865E070E080E090E03E +:1095B0000E94AE37439ACC0F65E070E080E090E007 +:1095C0000E94AE3739983199C16065E070E080E063 +:1095D00090E00E94AE37D15031F74398399A419AC2 +:1095E00062E070E080E090E00E94AE37439A65E070 +:1095F00070E080E090E00E94AE37439862E070E057 +:1096000080E090E00E94AE37399A419A62E070E0C3 +:1096100080E090E00E94AE37439862E070E080E026 +:1096200090E00E94AE37BDD2E0C00E9426318CE6A9 +:109630000E9476300E94EE308C2F0E9476300E947D +:10964000EE300E9426318DE60E9476300E94EE3088 +:1096500062E070E080E090E00E94AE37809101010E +:1096600084608093010180910201846080930201F3 +:1096700062E070E080E090E00E94AE37D8E0C0E0A9 +:10968000809102018F778093020165E070E080E0B5 +:1096900090E00E94AE3780910201806880930201C1 +:1096A000CC0F65E070E080E090E00E94AE378091E2 +:1096B00001018B7F809301018091000182FDC160D7 +:1096C00065E070E080E090E00E94AE37D150C1F6D6 +:1096D000809102018F778093020180910101846063 +:1096E000809301018091020184608093020162E015 +:1096F00070E080E090E00E94AE37809102018068C7 +:109700008093020165E070E080E090E00E94AE3757 +:10971000809102018F778093020162E070E080E027 +:1097200090E00E94AE378091010184608093010136 +:109730008091020184608093020162E070E080E029 +:1097400090E00E94AE37809102018F7780930201F2 +:1097500062E070E080E090E00E94AE370E94BF308F +:1097600044C05E9865E070E080E090E00E94AE3713 +:109770005E9ACC0F65E070E080E090E00E94AE372A +:1097800055984D99C16065E070E080E090E00E94DE +:10979000AE37D15031F75E98559A5D9A62E070E02D +:1097A00080E090E00E94AE375E9A65E070E080E075 +:1097B00090E00E94AE375E9862E070E080E090E05A +:1097C0000E94AE37559A5D9A62E070E080E090E0CA +:1097D0000E94AE375E9862E070E080E090E00E9408 +:1097E000AE370E94293001C0C0E08C2FDF91CF91AD +:1097F0000895EAEFF3E124813581DC010E94ED78E0 +:10980000A1E0B1E02C9128602C93A0EAB0E02C916B +:1098100020682C93DC01CB012AE0B695A79597959B +:1098200087952A95D1F79093A9008093A800868107 +:1098300080618093A1000895CF93DF9321E5829FFB +:10984000C0011124EC01D55F40E550E0BE018AEA79 +:1098500093E10E945C62892B59F41092AA1340E5AF +:1098600050E06AEA73E1CE010E94196280E001C013 +:1098700081E0DF91CF91089590E0FC013197E231D2 +:10988000F10508F04EC08827EB55FF4F8F4F0C9421 +:10989000E578809180008F7703C0809180008F7D74 +:1098A00080938000089580918000877FF9CF84B5F0 +:1098B0008F7702C084B58F7D84BD08958091B000FC +:1098C0008F7703C08091B0008F7D8093B0000895A2 +:1098D000809190008F7707C0809190008F7D03C0AA +:1098E00080919000877F8093900008958091A000E0 +:1098F0008F7707C08091A0008F7D03C08091A0006A +:10990000877F8093A0000895809120018F7707C002 +:10991000809120018F7D03C080912001877F8093FB +:10992000200108951F93CF93DF93282F30E0F90192 +:10993000E457F64F8491F901EA5BF64FD491F901AF +:10994000E050F74FC491CC23B9F0162F811194DF6A +:10995000EC2FF0E0EE0FFF1FEA51F74FA591B49105 +:109960009FB7F894111104C08C91D095D82302C0F0 +:10997000EC91DE2BDC939FBFDF91CF911F91089577 +:10998000863308F0865390917B00282F2870977FAC +:10999000922B90937B008770806480937C008091F1 +:1099A0007A00806480937A0080917A0086FDFCCFF3 +:1099B000809178002091790090E0922B08951F9279 +:1099C0000F920FB60F9211240BB60F922F933F9365 +:1099D0004F935F936F937F938F939F93AF93BF93B7 +:1099E000EF93FF938091A5139091A6139093250177 +:1099F00080932401E091A313F091A413309709F010 +:109A00001995FF91EF91BF91AF919F918F917F91A8 +:109A10006F915F914F913F912F910F900BBE0F90DF +:109A20000FBE0F901F9018951F920F920FB60F92B6 +:109A300011240BB60F922F933F934F935F936F9325 +:109A40007F938F939F93AF93BF93EF93FF938091F7 +:109A5000FC139091FD139093A5008093A400E091D6 +:109A6000FA13F091FB13309709F01995FF91EF91DC +:109A7000BF91AF919F918F917F916F915F914F9126 +:109A80003F912F910F900BBE0F900FBE0F901F9024 +:109A90001895E2E7F0E080818E7F808308951F9221 +:109AA0000F920FB60F9211248F939F9380910C0207 +:109AB00090910D0290939500809394009F918F91C7 +:109AC0000F900FBE0F901F9018951F920F920FB618 +:109AD0000F9211240BB60F922F933F934F935F93E6 +:109AE0006F937F938F939F93AF93BF93EF93FF9366 +:109AF00080919E1390919F138093B200E0919C13EC +:109B0000F0919D13309709F01995FF91EF91BF9156 +:109B1000AF919F918F917F916F915F914F913F9105 +:109B20002F910F900BBE0F900FBE0F901F901895A6 +:109B3000000000000895CF93DF93D82FC8E0D7FF2F +:109B400002C02F9A01C02F98DD0FF2DF2E9AF0DFAE +:109B50002E98C150A1F7DF91CF9108952E98E8DF9C +:109B60002F98E6DF2E9AE4DF2F9AE2CFCF93C4B18D +:109B700027982F9ADDDF2E9ADBDF1F9B05C02E98DA +:109B8000EDDFC4B981E003C02E98C4B980E0CF9165 +:109B900008952E9ACDDF2F9ACBDF2F98C9DF2E980C +:109BA000C7CF4398399A419865E070E080E090E033 +:109BB0000E94AE37439A65E070E080E090E00E943A +:109BC000AE37399A419A65E070E080E090E00C94FD +:109BD000AE37399A419A439A65E070E080E090E0B0 +:109BE0000E94AE37399A419865E070E080E090E0DD +:109BF0000E94AE37439862E070E080E090E00C9401 +:109C0000AE379F92AF92BF92CF92DF92EF92FF92C8 +:109C10000F931F93CF93DF936C01D62F142F052F33 +:109C2000C22F269A279A2E9A2F9AB3DF8D2F83DF81 +:109C30009DDF882311F011E03BC0802F7CDF96DF91 +:109C40008111F9CF812F77DF91DF8111F4CFA1DF6F +:109C500081E08D0F70DF8ADF182F8111ECCFAC2EE1 +:109C6000B12CCC2321F17501EC1AF108EC0CFD1C90 +:109C700094B0279808E0D0E02E9A5ADFDD0F1F99A4 +:109C8000D16056DF2E9854DF0150B1F794B8F70138 +:109C9000D083C15061F0D4B1279A2F9849DF2E9A12 +:109CA00047DF2E9845DFD4B92F9A42DFDACF56DF4F +:109CB000812FDF91CF911F910F91FF90EF90DF9057 +:109CC000CF90BF90AF909F900895EF92FF920F9327 +:109CD0001F93CF93DF938C01E62ED42FF52EC22F46 +:109CE000269A279A2E9A2F9A54DF8E2D24DF3EDF54 +:109CF000811120C08F2D1FDF39DF81111BC08D2FF7 +:109D00001ADF34DFD82F811115C0EC2EF12C04C0DE +:109D100085E090E00E94EC37CC2371F0F701EC1B5A +:109D2000F109E00FF11F808106DFC1501FDF88239A +:109D300079F314DFD1E001C011DF8D2FDF91CF91D6 +:109D40001F910F91FF90EF9008954F925F926F9245 +:109D50007F92AF92BF92CF92DF92EF92FF920F93DA +:109D60001F93CF93DF935C01EB018A01FC014080DC +:109D700051806280738020E030E0A901C301B2010C +:109D80000E944E7520E030E0A901811111C0688168 +:109D900079818A819B810E946C771816E4F02AED04 +:109DA000C22E2FE0D22E29ECE22E2FEBF22E22C073 +:109DB000C301B2010E944E7587FD16C0A301920136 +:109DC000688179818A819B810E9455750E941375F3 +:109DD0006B017C010FC09AEDC92E9FE0D92E99EC42 +:109DE000E92E9FE3F92E06C0C12CD12C80ECE82E81 +:109DF0008FE7F82EC701B6010E9452752091920D8F +:109E00003091930D4091940D5091950D0E94A7773C +:109E10009B01AC01C301B2010E947474F50160831F +:109E2000718382839383C701B6010E940A782091CF +:109E3000920D3091930D4091940D5091950D0E948B +:109E4000A7779B01AC01688179818A819B810E94FF +:109E50007474688379838A839B832091960D3091F3 +:109E6000970D4091980D5091990DF8016081718185 +:109E7000828193810E947574F8016083718382836B +:109E80009383DF91CF911F910F91FF90EF90DF901F +:109E9000CF90BF90AF907F906F905F904F9008955C +:109EA0004F925F926F927F92AF92BF92CF92DF926A +:109EB000EF92FF920F931F93CF93DF935C01EB011F +:109EC0008A01FC01408051806280738020E030E094 +:109ED000A901C301B2010E944E7520E030E0A90142 +:109EE000811111C0688179818A819B810E946C7780 +:109EF0001816E4F02AEDC22E2FE0D22E29ECE22E25 +:109F00002FEBF22E22C0C301B2010E944E7587FDD5 +:109F100016C0A3019201688179818A819B810E9488 +:109F200055750E9413756B017C010FC09AEDC92E07 +:109F30009FE0D92E99ECE92E9FE3F92E06C0C12CA3 +:109F4000D12C80ECE82E8FE7F82EC701B6010E94D5 +:109F500052752091920D3091930D4091940D509136 +:109F6000950D0E94A777A30192010E947574F501D7 +:109F70006083718382839383C701B6010E940A784C +:109F80002091920D3091930D4091940D5091950D2B +:109F90000E94A7779B01AC01688179818A819B81AE +:109FA0000E947574688379838A839B832091960DC0 +:109FB0003091970D4091980D5091990DF801608165 +:109FC0007181828193810E947474F801608371832E +:109FD00082839383DF91CF911F910F91FF90EF9038 +:109FE000DF90CF90BF90AF907F906F905F904F9039 +:109FF00008952F923F924F925F926F927F928F922D +:10A000009F92AF92BF92CF92DF92EF92FF920F9307 +:10A010001F93CF93DF93CDB7DEB766970FB6F89453 +:10A02000DEBF0FBECDBF69837A838B839C832D8374 +:10A030003E834F835887270138011601BA8AA98ABF +:10A0400084019B01AC010E94A7776B017C012D81EB +:10A050003E814F815885CA01B9010E94A7779B01B3 +:10A06000AC01C701B6010E9475740E94147823E305 +:10A0700033E343E551E40E94747469877A878B87E0 +:10A080009C872DEC3CEC46ED52E4C301B2010E94EA +:10A0900074742B013C0129853A854B855C85CA0186 +:10A0A000B9010E94A7776B017C01A3019201C30152 +:10A0B000B2010E94A7779B01AC01C701B6010E94C3 +:10A0C00075746B017C0124ED35E64DE955E40E9481 +:10A0D00074744B015C0126EC3FEA4DE957E4C7017B +:10A0E000B6010E94A7776D877E878F87988BA50121 +:10A0F0009401C501B4010E94A7779B01AC016D8555 +:10A100007E858F8598890E9474740E9414786B8B69 +:10A110007C8B8D8B9E8BA7019601C701B6010E9497 +:10A1200075746D877E878F87988BA50194016985EB +:10A130007A858B859C850E94A7774B015C012B89D2 +:10A140003C894D895E89C301B2010E94A7779B01BA +:10A15000AC01C501B4010E9474744B015C012CEE8A +:10A1600031E14EE053E46D857E858F8598890E94AC +:10A17000A7779B01AC01C501B4010E9455750E94EF +:10A18000667421EE3EE245E652E40E94A777F101B3 +:10A19000608371838283938324ED35E64DE955E432 +:10A1A000C701B6010E9475744B015C012BE339E0D5 +:10A1B00045EC57E4C701B6010E94A7776B017C010B +:10A1C000A5019401C501B4010E94A7779B01AC01D0 +:10A1D000C701B6010E9474740E9414786B017C015F +:10A1E000A501940169857A858B859C850E94A77756 +:10A1F0004B015C01A7019601C301B2010E94A77740 +:10A200009B01AC01C501B4010E9475746B017C0116 +:10A210002CE53FEC4EE153E46D857E858F85988972 +:10A220000E94A7779B01AC01C701B6010E9455753A +:10A230000E94667421EE3EE245E652E40E94A77752 +:10A240006B017C01E989FA8960837183828393833E +:10A2500021EE3EE245E652E4F101608171818281A6 +:10A2600093810E9455750E940A782CEE31E14EE0F0 +:10A2700053E40E94A7779B01AC01C301B2010E9485 +:10A280006C77181654F4F7FAF094F7F8F094E9891B +:10A29000FA89C082D182E282F38220E030E0A90113 +:10A2A00069817A818B819C810E944E7520E030E02B +:10A2B000A901811112C06D817E818F8198850E94D4 +:10A2C0006C7718162CF480E090E0A4EBB2E411C097 +:10A2D00080E090E0A4EBB2EC0CC069817A818B81C4 +:10A2E0009C810E944E7587FF0AC080E090E0A0EC40 +:10A2F000BFE7F80180839183A283B38317C02981CC +:10A300003A814B815C816D817E818F8198850E942D +:10A3100055750E94137521EE3EE245E652E40E9417 +:10A32000A777F801608371838283938366960FB663 +:10A33000F894DEBF0FBECDBFDF91CF911F910F917B +:10A34000FF90EF90DF90CF90BF90AF909F908F9055 +:10A350007F906F905F904F903F902F9008952F9235 +:10A360003F924F925F926F927F928F929F92AF92A5 +:10A37000BF92CF92DF92EF92FF920F931F93CF93F2 +:10A38000DF93CDB7DEB72E970FB6F894DEBF0FBEC2 +:10A39000CDBF29833A834B835C83ED82FE820F839A +:10A3A0001887860115019E868D8621EE3EE245E6E0 +:10A3B00052E40E9455752B013C0121EE3EE245E638 +:10A3C00052E469817A818B819C810E9455754B0191 +:10A3D0005C0121EE3EE245E652E46D817E818F8193 +:10A3E00098850E9455756B017C01C301B2010E94E2 +:10A3F000527569837A838B839C83C501B4010E9463 +:10A4000052756D837E838F839887C301B2010E944A +:10A410000A782B013C01C501B4010E940A786987C2 +:10A420007A878B879C872CEE31E14EE053E469817B +:10A430007A818B819C810E94A7774B015C012CE57E +:10A440003FEC4EE153E46D817E818F8198850E94BF +:10A45000A7779B01AC01C501B4010E94757423E389 +:10A4600033E343E551E40E9475744B015C01C7017D +:10A47000B6010E9452759B01AC01C501B4010E9456 +:10A48000A777F8016083718382839383C701B60144 +:10A490000E940A789B01AC01C501B4010E94A77714 +:10A4A000F10160837183828393832CEE31E14EE06E +:10A4B00053E4C301B2010E94A7776B017C012CE534 +:10A4C0003FEC4EE153E469857A858B859C850E943B +:10A4D000A7779B01AC01C701B6010E9474742DECF3 +:10A4E0003CEC46ED52E40E947574ED85FE85608378 +:10A4F0007183828393832E960FB6F894DEBF0FBECE +:10A50000CDBFDF91CF911F910F91FF90EF90DF9022 +:10A51000CF90BF90AF909F908F907F906F905F9003 +:10A520004F903F902F9008952F923F924F925F92BD +:10A530006F927F928F929F92AF92BF92CF92DF9253 +:10A54000EF92FF920F931F93CF93DF93CDB7DEB7B8 +:10A5500028970FB6F894DEBF0FBECDBF2B013C018C +:10A5600029833A834B835C83ED82FE820F831887B5 +:10A57000860180E9282E8DE0382E20E030E044EB83 +:10A5800052E4F10166897789808D918D0E947474FF +:10A590006B017C0120E030E040EA52E46D817E8175 +:10A5A0008F8198850E9455759B01AC01C701B6014A +:10A5B0000E9475746D837E838F83988720E030E0DE +:10A5C00040EA52E469817A818B819C810E945575B1 +:10A5D000F10122893389448955890E947574698300 +:10A5E0007A838B839C8320E030E040EA52E4C3010D +:10A5F000B2010E945575F101268537854089518940 +:10A600000E9475746801ED80FE800F811885298194 +:10A610003A814B815C81A3DE28960FB6F894DEBFA9 +:10A620000FBECDBFDF91CF911F910F91FF90EF90A3 +:10A63000DF90CF90BF90AF909F908F907F906F9062 +:10A640005F904F903F902F9008954F925F926F923E +:10A650007F928F929F92AF92BF92CF92DF92EF92B2 +:10A66000FF920F931F932B013C0149015A0167018F +:10A6700078019B01AC010E945C78811170C0A5013A +:10A680009401C501B4010E945C78811168C0A701E2 +:10A690009601C701B6010E945C78811160C02AE969 +:10A6A00039E947E053E4C301B2010E946C77181600 +:10A6B0000CF455C020E030E0A901C301B2010E94B2 +:10A6C0004E7587FD4CC02DEC3CEC4FEE52E4C501BD +:10A6D000B4010E946C7718160CF441C020E030E001 +:10A6E000A901C501B4010E944E7587FD38C0A301C0 +:10A6F000920160E070E084E393E40E947474A50129 +:10A7000094010E9474744B015C0120E030E047E149 +:10A7100053E40E946C77181614F120E030E040E218 +:10A7200051E4C501B4010E944E7587FD18C020E0B8 +:10A7300030E044EB52E4C701B6010E946C77181672 +:10A7400074F020E030E044EB52ECC701B6010E9407 +:10A750004E75881F8827881F91E0892701C080E0F7 +:10A760001F910F91FF90EF90DF90CF90BF90AF902F +:10A770009F908F907F906F905F904F900895EF9291 +:10A78000FF920F931F93CF93DF9382E393E00E9496 +:10A7900054628B3B19F080E293E002C084E393E0C3 +:10A7A00020E9E22E2DE0F22ECAE8DDE08C010A5805 +:10A7B0001D40C8018C0F9D1F0E9454628993EC16A6 +:10A7C000FD06B9F7DF91CF911F910F91FF90EF90A8 +:10A7D0000895AF92BF92CF92DF92EF92FF920F93C4 +:10A7E0001F93CF93DF93A82E6EE00E94844AC82F58 +:10A7F0006FE08A2D0E94844AD0E0DC2FCC27C82B42 +:10A800007E016E0104E010E06EE08A2D0E94844A11 +:10A81000B82E6FE08A2D0E94844A2B2D30E0322F13 +:10A820002227A901482BCA01C816D90608F46C01D1 +:10A830008E159F0508F47C01C80FD91F015011091E +:10A8400019F7CE018C199D098E199F0963E070E0FC +:10A850000E949378613050E1750708F48B01C801BC +:10A86000DF91CF911F910F91FF90EF90DF90CF90EC +:10A87000BF90AF900895CF92DF92EF92FF920F9327 +:10A880001F93CF93DF93EC01A4DF9C01C130D1056E +:10A8900091F128F0C230D10509F459C084C060910B +:10A8A0008C0D70918D0DCB01A0E0B0E0890120E00E +:10A8B00030E06C017D01C01AD10AE20AF30A41E0DE +:10A8C000C41648E0D406E104F10424F09051A10933 +:10A8D000B1090AC0C11448EFD4064FEFE406F406EC +:10A8E0001CF4905FAF4FBF4FBC01CD01601B710BDB +:10A8F000820B930B65C060918E0D70918F0DCB0113 +:10A90000A0E0B0E0890120E030E06C017D01C01AD8 +:10A91000D10AE20AF30A41E0C41648E0D406E10491 +:10A92000F10424F09051A109B1090AC0C11448EF03 +:10A93000D4064FEFE406F4061CF4905FAF4FBF4F10 +:10A94000BC01CD01601B710B820B930B45C0609164 +:10A950008A0D70918B0DCB01A0E0B0E0890120E061 +:10A9600030E06C017D01C01AD10AE20AF30A41E02D +:10A97000C41648E0D406E104F10424F09051A10982 +:10A98000B1090AC0C11448EFD4064FEFE406F4063B +:10A990001CF4905FAF4FBF4FBC01CD01601B710B2A +:10A9A000820B930B22C0C130D10599F030F0229771 +:10A9B00019F560E070E0CB0118C060E070E0CB01F9 +:10A9C00045E2C42E49E0D42E43E0E42E42E4F42EC6 +:10A9D00016C060E070E0CB0139E0C32E36EFD32E15 +:10A9E00031EBE32E32E4F32E0AC0C12CD12C24EB40 +:10A9F000E22E22E4F22E03C060E070E0CB010E9460 +:10AA0000F07520E030E044EB53E40E94A77720E0AB +:10AA100030E040E859E30E94A7779B01AC01C701F1 +:10AA2000B6010E947474DF91CF911F910F91FF9036 +:10AA3000EF90DF90CF9008958F929F92AF92BF9248 +:10AA4000CF92DF92EF92FF920F931F93CF93DF93FA +:10AA5000EB0123E0E22E24E1F22E8C016B018CE06D +:10AA6000C80ED11C6991799189919991F7018190D2 +:10AA70009190A190B1907F010E94F075A501940181 +:10AA80000E945575F80161937193819391938F01A1 +:10AA9000CC15DD0539F7DF91CF911F910F91FF9014 +:10AAA000EF90DF90CF90BF90AF909F908F900895E0 +:10AAB0001F920F920FB60F9211240BB60F922F9385 +:10AAC0003F934F935F936F937F938F939F93AF9336 +:10AAD000BF93EF93FF9389B18095982F907184FF76 +:10AAE00002C09111FED5FF91EF91BF91AF919F915F +:10AAF0008F917F916F915F914F913F912F910F9027 +:10AB00000BBE0F900FBE0F901F90189569E080E06C +:10AB100090E00E94F7614DE450E063E074E181E071 +:10AB200098E00C941962CF92DF92EF92FF92CF934C +:10AB3000DF93C82F6A017B0120E030E0A901C70143 +:10AB4000B6010E944E7587FDE3C0C43608F441C0CB +:10AB50008CE98C0F20E0833098F590E0880F991FE6 +:10AB6000880F991F223079F0FC01233011F1213038 +:10AB700019F0ED5FFB4E02C0E15FFB4EC082D18257 +:10AB8000E282F382C2C0EC01C55EDB4E20E030E021 +:10AB900040E752E4C701B6010E94A77720E030E009 +:10ABA00040E752E40E94A777688379838A839B8376 +:10ABB000ACC0E95DFB4EF7FAF094F7F8F094DECF05 +:10ABC0002F5F8A3008F4A6C0243009F4A3C08A504D +:10ABD000C2CFC701B6010E9455780E94C2758C2F62 +:10ABE00090E08C31910508F095C0FC018827E9546C +:10ABF000FF4F8F4F0C94E578633008F48DC060935D +:10AC0000331483C06093361480C06093341402C040 +:10AC1000609335140E940A4478C0809140146623E2 +:10AC200011F084604CC08B7F4AC080914014662331 +:10AC300011F0806444C08F7B42C080914014662331 +:10AC400011F080683CC08F773AC0609337145DC0C4 +:10AC5000C0923814D0923914E0923A14F0923B1416 +:10AC600054C0C0923C14D0923D14E0923E14F09235 +:10AC70003F144BC080914014662311F081601FC0C7 +:10AC80008E7F1DC080914014662321F084FF46C052 +:10AC9000806215C08F7D13C080914014662311F02F +:10ACA000886001C0877F809340140E94DF612DC0BF +:10ACB00080914014662311F0806101C08F7C8093E5 +:10ACC000401423C06093411420C0C0924214D0921B +:10ACD0004314E0924414F092451417C0C0924614F5 +:10ACE000D0924714E0924814F09249140EC070E0DC +:10ACF00070934B1460934A1408C0C0924C14D092C5 +:10AD00004D14E0924E14F0924F1400DF80E007C023 +:10AD100084E005C083E003C086E001C08AE0DF91E3 +:10AD2000CF91FF90EF90DF90CF9008952DE0829F1C +:10AD3000C00111244CE050E0965F0C9419621F93FF +:10AD4000CF93DF93182FEB018DE0189FB0011124F2 +:10AD5000765F4CE050E0CE010E945C62892B51F49A +:10AD60008CE0FE0111928A95E9F7BE01812FDEDFAA +:10AD700080E001C081E0DF91CF911F910895EF92B3 +:10AD8000FF920F931F93CF93DF93CDB7DEB72C972E +:10AD90000FB6F894DEBF0FBECDBF182F80FFC6C020 +:10ADA0008AE0809333148FEF80933614109234141A +:10ADB00087E08093351483E0809337148AE097ED21 +:10ADC000A3E2BCE38093381490933914A0933A140F +:10ADD000B0933B148FE692E1A3E0BBE380933C1475 +:10ADE00090933D14A0933E14B0933F1410924114DD +:10ADF00080E090E0A8ECB1E4809342149093431477 +:10AE0000A0934414B093451480E090E0AAEFB3E41B +:10AE10008093461490934714A0934814B093491418 +:10AE20008AEF90E090934B1480934A1480E090E076 +:10AE3000A0E8BFE380934C1490934D14A0934E145C +:10AE4000B0934F1484E08093401480E090E0A8EC2D +:10AE5000B5E48093031490930414A0930514B09365 +:10AE600006148093071490930814A0930914B093C8 +:10AE70000A1480930B1490930C14A0930D14B093A8 +:10AE80000E1480E090E5A3ECB7E480930F14909348 +:10AE90001014A0931114B093121480931314909370 +:10AEA0001414A0931514B093161480931714909350 +:10AEB0001814A0931914B0931A1480E090EAACE02F +:10AEC000B7E480931B1490931C14A0931D14B093AB +:10AED0001E1480931F1490932014A0932114B093F8 +:10AEE00022148093231490932414A0932514B093D8 +:10AEF000261480E090E4ACE1B6EC809327149093A4 +:10AF00002814A0932914B0932A1480932B1490939F +:10AF10002C14A0932D14B0932E1480932F1490937F +:10AF20003014A0933114B0933214F0DD11FF0FC030 +:10AF3000CE0101967C018CE0F70111928A95E9F728 +:10AF400000E0B701802FF2DE0F5F0830D1F712FF6B +:10AF50000AC060E080E09BE00E94F76160E081E56C +:10AF60009BE00E94F76113FF05C060E08EEA9BE062 +:10AF70000E94F7612C960FB6F894DEBF0FBECDBFCE +:10AF8000DF91CF911F910F91FF90EF9008951F9245 +:10AF90000F920FB60F9211240BB60F922F933F937F +:10AFA0004F935F936F937F938F939F93AF93BF93D1 +:10AFB000EF93FF938091360123E030E03093ED155D +:10AFC0002093EC158F33A9F050F4883109F18132C8 +:10AFD00009F59FB7F89480910114886015C08034FA +:10AFE00071F08E37B9F49FB7F894809101148260A4 +:10AFF0000BC09FB7F89480910114816005C09FB782 +:10B00000F894809101148062809301149FBF13C053 +:10B0100068D311C0E091691591E09E0F903809F452 +:10B0200090E020916815921731F0F0E0E851FB4E66 +:10B03000808390936915FF91EF91BF91AF919F919C +:10B040008F917F916F915F914F913F912F910F90D1 +:10B050000BBE0F900FBE0F901F9018951F920F926E +:10B060000FB60F9211240BB60F922F933F934F936D +:10B070005F936F937F938F939F93AF93BF93EF9360 +:10B08000FF938091D60022E030E03093ED152093BD +:10B09000EC158F33A9F050F4883109F1813209F5AC +:10B0A0009FB7F89480910114886015C0803471F0C6 +:10B0B0008E37B9F49FB7F8948091011482600BC069 +:10B0C0009FB7F89480910114816005C09FB7F894F0 +:10B0D000809101148062809301149FBF13C001D33B +:10B0E00011C0E091691591E09E0F903809F490E04D +:10B0F00020916815921731F0F0E0E851FB4E808303 +:10B1000090936915FF91EF91BF91AF919F918F91AE +:10B110007F916F915F914F913F912F910F900BBE57 +:10B120000F900FBE0F901F9018951F920F920FB6A1 +:10B130000F9211240BB60F922F933F934F935F936F +:10B140006F937F938F939F93AF93BF93EF93FF93EF +:10B150008091CE0021E030E03093ED152093EC1586 +:10B160008F33A9F050F4883109F1813209F59FB786 +:10B17000F89480910114886015C0803471F08E3786 +:10B18000B9F49FB7F8948091011482600BC09FB707 +:10B19000F89480910114816005C09FB7F894809164 +:10B1A00001148062809301149FBF13C09AD211C012 +:10B1B000E091691591E09E0F903809F490E020919C +:10B1C0006815921731F0F0E0E851FB4E80839093C0 +:10B1D0006915FF91EF91BF91AF919F918F917F91F1 +:10B1E0006F915F914F913F912F910F900BBE0F90F8 +:10B1F0000FBE0F901F9018951F920F920FB60F92CF +:10B2000011240BB60F922F933F934F935F936F933D +:10B210007F938F939F93AF93BF93EF93FF9380910F +:10B22000C6001092ED151092EC158F33A9F050F472 +:10B23000883109F1813209F59FB7F89480910114A2 +:10B24000886015C0803471F08E37B9F49FB7F894D8 +:10B250008091011482600BC09FB7F8948091011413 +:10B26000816005C09FB7F89480910114806280933B +:10B2700001149FBF13C035D211C0E091691591E050 +:10B280009E0F903809F490E020916815921731F0E4 +:10B29000F0E0E851FB4E808390936915FF91EF91A8 +:10B2A000BF91AF919F918F917F916F915F914F91DE +:10B2B0003F912F910F900BBE0F900FBE0F901F90DC +:10B2C00018951F920F920FB60F9211240BB60F9282 +:10B2D0008F939F93EF93FF938091EB15E82FF0E00E +:10B2E000E559FA4E9081909336018F5F803809F4CA +:10B2F00080E08093EB1590916A15891305C08091C9 +:10B3000031018F7D80933101FF91EF919F918F915A +:10B310000F900BBE0F900FBE0F901F9018951F92AD +:10B320000F920FB60F9211240BB60F928F939F932B +:10B33000EF93FF938091EB15E82FF0E0E559FA4E7B +:10B3400090819093D6008F5F803809F480E08093DD +:10B35000EB1590916A15891305C08091D1008F7DFE +:10B360008093D100FF91EF919F918F910F900BBE31 +:10B370000F900FBE0F901F9018951F920F920FB64F +:10B380000F9211240BB60F928F939F93EF93FF931D +:10B390008091EB15E82FF0E0E559FA4E90819093FB +:10B3A000CE008F5F803809F480E08093EB15909198 +:10B3B0006A15891305C08091C9008F7D8093C900EB +:10B3C000FF91EF919F918F910F900BBE0F900FBE49 +:10B3D0000F901F9018951F920F920FB60F92112485 +:10B3E0000BB60F928F939F93EF93FF938091EB1582 +:10B3F000E82FF0E0E559FA4E90819093C6008F5FF8 +:10B40000803809F480E08093EB1590916A158913D8 +:10B4100005C08091C1008F7D8093C100FF91EF91A5 +:10B420009F918F910F900BBE0F900FBE0F901F90AA +:10B430001895E0916A1591E09E0F903831F490E0F4 +:10B4400004C02091011424FD2FC02091EB15291771 +:10B45000C1F3F0E0E559FA4E808390936A1580912C +:10B46000EC159091ED158130910569F030F0823046 +:10B47000910579F0039799F008958091C100806259 +:10B480008093C10008958091C90080628093C900B3 +:10B4900008958091D10080628093D10008958091B9 +:10B4A00031018062809331010895CF93C82F8DECD4 +:10B4B0009AE00E94E732C830C9F190F4C43069F1D3 +:10B4C00048F4C23011F130F5C13009F046C085EBC7 +:10B4D0009AE01DC0C63021F130F586E79AE017C02A +:10B4E000C43181F140F4CA3039F118F1CB30A9F5FB +:10B4F00085EC94E02FC0C63141F108F1C23341F12F +:10B50000C33359F584ED94E025C083EA9AE00E94A4 +:10B51000E7322AC081E99AE0FACF87E89AE0F7CFCC +:10B5200087E69AE0F4CF86E49AE0F1CF8DE39AE0E3 +:10B53000EECF82E39AE0EBCF8FE19AE0E8CF89E0AB +:10B540009AE0E5CF8AEC94E005C085EF99E0DFCF83 +:10B550008FEC94E00E94F63207C083EE99E00E94DF +:10B56000E7328C2F0E94D93280EE99E0CF910C9473 +:10B57000E7321F93CF93DF93CDB7DEB72C970FB68B +:10B58000F894DEBF0FBECDBF80E090E08DD789304C +:10B5900009F051C04DE450E061E078E083E094E1CF +:10B5A0008BD7892B09F447C020E030E048EC55E404 +:10B5B0006091031470910414809105149091061405 +:10B5C0000E944E75811137C020E030E048EC55E410 +:10B5D00060910714709108148091091490910A14D5 +:10B5E0000E944E75811127C020E030E048EC55E400 +:10B5F00060910B1470910C1480910D1490910E14A5 +:10B600000E944E75811117C010E0BE016F5F7F4F21 +:10B61000812F95DB811102C087E047DF1F5F183063 +:10B62000A1F72C960FB6F894DEBF0FBECDBFDF9109 +:10B63000CF911F9108958FEFA2DBE6CF8F929F925B +:10B64000AF92BF92EF92FF920F931F93CF938AED29 +:10B6500099E00E94E73282E6E82E84E1F82E03E0CA +:10B6600014E1C0E0F70161917191819191917F01A5 +:10B67000F80181909190A190B1908F010E94F07596 +:10B68000A50194010E9455750E94CB32C23021F071 +:10B6900088ED99E00E94E732CF5FC33019F786ED5D +:10B6A00099E00E94E73280916E140E94D93282EDB7 +:10B6B00099E0CF911F910F91FF90EF90BF90AF90C5 +:10B6C0009F908F900C94E73280915414811108C0A0 +:10B6D0009FB7F894809101148260809301149FBFFA +:10B6E00008958091011484FD25C09FB7F89480913E +:10B6F00001148061809301149FBF0E941A4A1ED7D3 +:10B7000080915314982F9C7021F49091541491308F +:10B7100089F49FB7843029F4F894809151148062A1 +:10B7200004C0F894809151148860809351149FBF95 +:10B730000C94894408952F923F924F925F926F929A +:10B740007F928F929F92AF92BF92CF92DF92EF92B1 +:10B75000FF920F931F93CF93DF93CDB7DEB7C756FA +:10B76000D1090FB6F894DEBF0FBECDBF66968FAF7E +:10B7700066971B016B962CAF3DAF4EAF5FAF6B97DB +:10B78000A8960FAFA8978091401485FF51C03B0148 +:10B7900003E014E17B012CE0E20EF11CDD24D394E4 +:10B7A000D3018D909D90AD90BD903D0120E030E0A3 +:10B7B000A901C501B4010E946C77181654F0F80174 +:10B7C00024A135A146A157A1C501B4010E944E751F +:10B7D00087FDD092551480915514882319F18091DA +:10B7E0005314883061F07DDF9FB7F8948091511435 +:10B7F0008560809351149FBF0E94F73719C09FB78F +:10B80000F894809101148860809301149FBF0E9476 +:10B81000F7378091521481110BC08091531481111C +:10B82000F6CFE1CF0C5F1F4FE614F70409F0B8CF55 +:10B8300080915314823009F47AC3F101808191819F +:10B84000A281B38165968CAF9DAFAEAFBFAF659758 +:10B8500084819581A681B78161968CAF9DAFAEAF93 +:10B86000BFAF619780859185A285B3852D968CAFFA +:10B870009DAFAEAFBFAF2D97AE01475B5F4FBE012F +:10B88000635B7F4FCE018F5A9F4F0E94A54E2D962E +:10B89000ECACFDAC0EAD1FAD2D9761962CAD3DAD62 +:10B8A0004EAD5FAD619765966CAD7DAD8EAD9FADD4 +:10B8B0006597DE0191964D01FE017D965F01189717 +:10B8C0006D010E94F94FE9A0FAA00BA11CA12D8DDA +:10B8D0003E8D4F8D58A1698D7A8D8B8D9C8D0E94E8 +:10B8E0002553882309F41FC36091B20D7091B30DE5 +:10B8F0008091B40D9091B50D0E94F0752B013C0123 +:10B900006091AE0D7091AF0D8091B00D9091B10D21 +:10B910000E94F0756F966CAF7DAF8EAF9FAF6F9743 +:10B920006091AA0D7091AB0D8091AC0D9091AD0D11 +:10B930000E94F075FE01BD964F019E01275D3F4FAD +:10B940005901DE0195966D01830172016F962CAD50 +:10B950003DAD4EAD5FAD6F970E949452A401B5010D +:10B96000C6010E94504F05DE6696BFAD6697BB23A9 +:10B9700019F0B13041F0DDC0E1E0F0E06796FFAFD3 +:10B98000EEAF6797DAC020E030E048EC52E46B9607 +:10B990006CAD7DAD8EAD9FAD6B970E946C77181628 +:10B9A00054F480E090E0A8ECB2E46B968CAF9DAFCD +:10B9B000AEAFBFAF6B972DA13EA14FA158A5D1014E +:10B9C0006D917D918D919C910E9474742B013C012D +:10B9D00029A53AA54BA55CA5F101648175818681F5 +:10B9E00097810E9474744B015C012DA53EA54FA563 +:10B9F00058A9D10118966D917D918D919C911B97BD +:10BA00000E9474746B017C01A3019201C301B20115 +:10BA10000E94A7772B013C01A5019401C501B40147 +:10BA20000E94A7779B01AC01C301B2010E9475740B +:10BA30004B015C01A7019601C701B6010E94A777DF +:10BA40009B01AC01C501B4010E9475740E94147879 +:10BA500020E030E040EF51E40E94A7776B962CADD8 +:10BA60003DAD4EAD5FAD6B970E9455750E94C2759E +:10BA700067967FAF6EAF67976A30710530F42AE042 +:10BA800030E067963FAF2EAF679720E030E040E9A7 +:10BA900050E46B966CAD7DAD8EAD9FAD6B970E9403 +:10BAA000A77720E030E048EC52E40E94557520E092 +:10BAB00030E040E05FE30E94757420E030E040E752 +:10BAC00052E40E94A77720E030E040E752E40E9471 +:10BAD000A7776B017C0160931B1470931C148093F7 +:10BAE0001D1490931E1460931F1470932014809360 +:10BAF00021149093221420E030E442E955E40E949E +:10BB00006C7787FF09C0C0922314D0922414E0926E +:10BB10002514F092261411C080E090E4A2E9B5E467 +:10BB20008093231490932414A0932514B093261487 +:10BB300004C067961FAE1EAE67976796AEADBFADE9 +:10BB40006797BD0180E090E00E94EE756B017C017B +:10BB50002DA13EA14FA158A5F10160817181828183 +:10BB600093810E947474A70196010E9455756F9687 +:10BB70006CAF7DAF8EAF9FAF6F9729A53AA54BA550 +:10BB80005CA5D10114966D917D918D919C91179733 +:10BB90000E947474A70196010E945575A3966CAF1C +:10BBA0007DAF8EAF9FAFA3972DA53EA54FA558A9FA +:10BBB000F10160857185828593850E947474A70167 +:10BBC00096010E945575A7966CAF7DAF8EAF9FAF63 +:10BBD000A79722242394312C67962EAD3FAD67970B +:10BBE0002215330508F49DC1B101032C000C880B0C +:10BBF000990B0E94F0756B017C019B01AC016F9663 +:10BC00006CAD7DAD8EAD9FAD6F970E94A7779B0108 +:10BC1000AC016DA17EA18FA198A50E9475746D875E +:10BC20007E878F87988BA7019601A3966CAD7DAD1B +:10BC30008EAD9FADA3970E94A7779B01AC0169A52C +:10BC40007AA58BA59CA50E947574698B7A8B8B8BCA +:10BC50009C8BA7019601A7966CAD7DAD8EAD9FAD77 +:10BC6000A7970E94A7779B01AC016DA57EA58FA524 +:10BC700098A90E9475746D8B7E8B8F8B988FAE0107 +:10BC80004B5E5F4FBE016F5E7F4FCE010D960E94EF +:10BC9000A54EED88FE880F89188D29893A894B8930 +:10BCA0005C896D857E858F859889DE01DD964D01E5 +:10BCB000FE01EF5BFF4F5F0118966D010E94F94F87 +:10BCC0002196ECACFDAC0EAD1FAD219725962CADA9 +:10BCD0003DAD4EAD5FAD259729966CAD7DAD8EAD7A +:10BCE0009FAD29970E942553882309F416C16D85BD +:10BCF0007E858F8598896093B60D7093B70D80937C +:10BD0000B80D9093B90D29893A894B895C892093A4 +:10BD1000BA0D3093BB0D4093BC0D5093BD0DED8813 +:10BD2000FE880F89188DE092BE0DF092BF0D009332 +:10BD3000C00D1093C10DFE01F1964F01DE01D596A5 +:10BD40005D0138966F010E94F94FC9A8DAA8EBA8E7 +:10BD5000FCA88DA89EA8AFA8B8AC20919E0D3091EC +:10BD60009F0D4091A00D5091A10D69AD7AAD8BADA5 +:10BD70009CAD0E94747420E030E040EA52E40E94DE +:10BD8000A7770E94BD75072E000C880B990B0E94A7 +:10BD9000F07569837A838B839C832091A20D309107 +:10BDA000A30D4091A40D5091A50DC501B4010E94B1 +:10BDB000747420E030E040EA52E40E94A7770E94C9 +:10BDC000BD75072E000C880B990B0E94F0756D83D2 +:10BDD0007E838F8398872091A60D3091A70D409187 +:10BDE000A80D5091A90DC701B6010E94747420E0FE +:10BDF00030E044EB52E40E94757420E030E040EA09 +:10BE000052E40E94A7770E94BD75072E000C880B94 +:10BE1000990B0E94F07569877A878B879C870E94AF +:10BE2000F73780915214811180C09091AA128091AD +:10BE3000AA0F981302C048DCF2CF89809A80AB80A9 +:10BE4000BC80C501B4010E94BD756093AA0D7093BA +:10BE5000AB0D8093AC0D9093AD0DCD80DE80EF8067 +:10BE6000F884C701B6010E94BD756093AE0D709352 +:10BE7000AF0D8093B00D9093B10D49845A846B84BB +:10BE80007C84C301B2010E94BD756093B20D7093B2 +:10BE9000B30D8093B40D9093B50D209103143091A0 +:10BEA00004144091051450910614C501B4010E9478 +:10BEB000557569837A838B839C8320910714309115 +:10BEC00008144091091450910A14C701B6010E9448 +:10BED00055756D837E838F83988720910B143091E5 +:10BEE0000C1440910D1450910E14C301B2010E9424 +:10BEF000557569877A878B879C87A8962FADA897F9 +:10BF00006B964CAD5DAD6EAD7FAD6B97CE0101967E +:10BF10000E946F3431E03093C60DFFEF2F1A3F0AB5 +:10BF20005BCE80E004C083E302C082E000C0C95958 +:10BF3000DF4F0FB6F894DEBF0FBECDBFDF91CF91BC +:10BF40001F910F91FF90EF90DF90CF90BF90AF9037 +:10BF50009F908F907F906F905F904F903F902F9029 +:10BF600008951F920F920FB60F9211240BB60F92E5 +:10BF70002F933F934F935F936F937F938F939F93F1 +:10BF8000AF93BF93EF93FF9380915314813069F087 +:10BF900080915114811109C0A4DB9FB7F89480915E +:10BFA00051148360809351149FBFFF91EF91BF9113 +:10BFB000AF919F918F917F916F915F914F913F9141 +:10BFC0002F910F900BBE0F900FBE0F901F901895E2 +:10BFD00089B180719091401496FD02C090E189274B +:10BFE000882319F011F087E0089580E008952F92DA +:10BFF0003F924F925F926F927F928F929F92AF92F9 +:10C00000BF92CF92DF92EF92FF920F931F93CF9345 +:10C01000DF93CDB7DEB768970FB6F894DEBF0FBEDB +:10C02000CDBF909152149111A6C1782E23E034E136 +:10C03000398B288B5901CE010D964C0100E010E0A0 +:10C04000C12CD12C7601A72DB0E0BD8BAC8B802FFD +:10C05000002321F0013021F094E003C091E001C001 +:10C0600092E0F40191934F012C893D8902C03595EE +:10C0700027958A95E2F720FF1BC020E030E040ECD6 +:10C080005FEBD50194966D917D918D919C919797E1 +:10C090000E94A777362E472E582E692EA7019601AB +:10C0A0000E944E7587FD04C0C32CD42CE52CF62CC1 +:10C0B0000F5F1F4FB4E0AB0EB11C0330110539F612 +:10C0C0008090461490904714A0904814B090491462 +:10C0D00084E0682E01E066E574E1CE0101960E94DD +:10C0E0001C5580914114E82FF0E0FF8BEE8BFE0190 +:10C0F000319622E534E13B8B2A8B1901CE010D9656 +:10C100002C0180E090E0188E10E0B701A601705875 +:10C110002C893D89082E02C0359527950A94E2F7AF +:10C1200020FF25C0A88DAF5FA88FD10114961D9266 +:10C130001D921D921C9217972E893F89082E02C0CE +:10C14000359527950A94E2F720FF03C0002319F0E4 +:10C1500007C0002329F0C082D182E282F38204C0AA +:10C160004083518362837383D2012C91122B0196F9 +:10C17000BFEF4B1A5B0A349624E0220E311C833049 +:10C18000910531F6388D632F70E080E090E00E94D9 +:10C19000EE750E9414789B01AC01C501B4010E94A8 +:10C1A000A7776B017C0110936F140E94023320E08B +:10C1B000B701A601CE0101960E946F340E94123B86 +:10C1C0000E9481470023E1F003DFFE013D9620E05D +:10C1D00030E090E06191462F412359F0AC01022EEE +:10C1E00002C0559547950A94E2F740FF02C060955A +:10C1F00016232F5F3F4F2330310561F710936F14E3 +:10C200000E94123B809101148473B1F0809101145B +:10C21000807321F066DA0E94F737ADC00111A6C025 +:10C22000D7DE8721B9F79FB7F894809101148B7FEF +:10C23000809301149FBF04C0812F877009F0C2CF83 +:10C240000E94C0440E94133380914A1490914B1471 +:10C250000E94EC3781E00827C9F020E030E040EA96 +:10C2600050E460914C1470914D1480914E14909153 +:10C270004F140E94A7776B017C018090421490902C +:10C280004314A0904414B090451410C0C0904C14B6 +:10C29000D0904D14E0904E14F0904F1480904614BE +:10C2A00090904714A0904814B09049146A9461107B +:10C2B00012CFE0904114F12C80904C1490904D14CA +:10C2C000A0904E14B0904F142401350177FA709469 +:10C2D00077F8709400E010E08C899D89002E02C0F0 +:10C2E000959587950A94E2F780FF2CC0C701002E30 +:10C2F00002C0959587950A94E2F7A889B98980FFCD +:10C3000011C094962D913D914D915C919797C501E7 +:10C31000B4010E947574E889F989208131814281D4 +:10C32000538106C02D913D914D915C91C301B201A5 +:10C330000E94A7770E947777EA89FB8964837583D7 +:10C34000868397830F5F1F4F2A893B892C5F3F4F5E +:10C350003B8B2A8B888999890496998B888B03302B +:10C36000110509F0B9CF0E94023305C08091011474 +:10C3700082FF59CF4FCF68960FB6F894DEBF0FBE3D +:10C38000CDBFDF91CF911F910F91FF90EF90DF9084 +:10C39000CF90BF90AF909F908F907F906F905F9065 +:10C3A0004F903F902F900895EBE6F0E080818F7ED4 +:10C3B0008083E8E6F0E080818E7F80830895549842 +:10C3C0005C9A8091401483FF0BC080916B00806168 +:10C3D00080936B008091680081608093680008956D +:10C3E000E3CF66E574E180EC94E10C941C55F8947D +:10C3F000F999FECF92BD81BD81E08FBB80B58627C4 +:10C40000482F082E000C550B262F30E0242335230F +:10C41000232B39F06F3F19F060BD84E006C084E142 +:10C4200004C0882321F060BD84E28FBBF99A789420 +:10C4300008959F92AF92BF92CF92DF92EF92FF92B8 +:10C440000F931F93CF93DF935C018A017B01E40E6E +:10C45000F51EEB01912C6C01C61AD70ACE018C0D8A +:10C460009D1DCE15DF0581F0911008C0292D990C76 +:10C47000330B232F221F2227221F01C021E06991A5 +:10C48000922E960EB4DFEACF692DC501800F911F61 +:10C49000DF91CF911F910F91FF90EF90DF90CF90A0 +:10C4A000BF90AF909F90A3CFF999FECF92BD81BD71 +:10C4B00081E08FBB80B508959F92AF92BF92CF92DB +:10C4C000DF92EF92FF920F931F93CF93DF935B0165 +:10C4D0008A017C01E40EF51EEC01912C6B01C81A57 +:10C4E000D90AC6018C0F9D1FCE15DF0581F0DCDF58 +:10C4F000911008C0292D990C330B232F221F2227BE +:10C50000221F01C021E0982E920E8993EACFC50127 +:10C51000800F911FC9DF21E030E0981611F020E074 +:10C5200030E0C901DF91CF911F910F91FF90EF9003 +:10C53000DF90CF90BF90AF909F9008955C98089542 +:10C54000CF93DF93CDB7DEB7CC56D1090FB6F894B1 +:10C55000DEBF0FBECDBF8091C00082608093C0005F +:10C560001092C50080E18093C4009091C100906159 +:10C570009093C1009091C10098609093C1009091F8 +:10C58000C10090689093C1009091C8009260909310 +:10C59000C8001092CD008093CC009091C9009061AA +:10C5A0009093C9009091C90098609093C9009091B0 +:10C5B000C90090689093C9009091D00092609093C8 +:10C5C000D0001092D5008093D4009091D10090615A +:10C5D0009093D1009091D10098609093D100909168 +:10C5E000D10090689093D100909130019260909327 +:10C5F00030011092350180933401809131018061C6 +:10C600008093310180913101886080933101809164 +:10C6100031018068809331010E94B95A869A879AC5 +:10C62000829A80910A01886080930A0180910A01B0 +:10C63000826080930A0180910701816080930701E5 +:10C64000809A819A579A80910701806180930701AF +:10C6500080910701886080930701809107018460C1 +:10C660008093070180910801806180930801809187 +:10C670000801877F8093080180910801846080937E +:10C6800008018091401482FF08C08A9A80910801B5 +:10C690008160809308015F9A07C08A9880910801A1 +:10C6A0008E7F809308015F98809181008F7E8093B8 +:10C6B000810080918100886080938100809180005A +:10C6C0008C7F80938000809180008F7080938000A9 +:10C6D00080916E00887F80936E0014BC15BC8091A1 +:10C6E0006E00816080936E0054985C9A80916D001A +:10C6F000806180936D008091680084608093680001 +:10C700008AE090E00E94EC370E949D2C399A3B9A77 +:10C71000419A439A80910101846080930101809144 +:10C7200001018068809301018091020184608093FF +:10C73000020180910201806880930201559A569A05 +:10C740005D9A5E9A0E94BF5306EC1EE081E090E085 +:10C750007C012FEFE21AF20AA7DED8018D938D013A +:10C76000C7018B3C9105A1F756E4C52E5EE0D52E9E +:10C7700087010F5F1F4FC70197DEF60181936F019D +:10C7800078010B34F1E01F0799F74CECE42E4DE0F3 +:10C79000F42E68012FEFC21AD20AC80185DED70134 +:10C7A0008D937D018601B5ECCB16B1E0DB0689F7F0 +:10C7B00020E030E04AE754E464E071E080E090E09B +:10C7C0000E94532E84E893E06FDE8093900D02E97F +:10C7D0001DE088E993E07C01EFEFEE1AFE0A64DECB +:10C7E000D8018D938D01C701BCE9EB16B3E0FB06C0 +:10C7F00091F706E91DE08EE893E07C01EFEFEE1A79 +:10C80000FE0A52DED8018D938D01C701B2E9EB1605 +:10C81000B3E0FB0691F70AE91DE082E89CE07C01A9 +:10C82000EFEFEE1AFE0A40DED8018D938D01C701AD +:10C83000B6E8EB16BCE0FB0691F7C0909A0DD090DD +:10C840009B0DE0909C0DF0909D0D20E030E044EBBE +:10C8500053E4C701B6010E946C77181644F0A70193 +:10C860009601C701B6010E945C78882341F01092BE +:10C870009A0D10929B0D10929C0D10929D0D09E443 +:10C880001DE08AEE93E07C01EFEFEE1AFE0A0CDE6B +:10C89000D8018D938D01C701B6EFEB16B3E0FB060F +:10C8A00091F760919A0D70919B0D80919C0D9091E4 +:10C8B0009D0DFE0131967F018F0124E045E00E942D +:10C8C000F971FF92EF928EE093E09F938F930E9415 +:10C8D0008B320F900F900F900F908091880D909158 +:10C8E000890D019711F40E940A2C0E949A2C0E9433 +:10C8F000892C0E94B72F0E94152C80917A0087689E +:10C9000080937A009B98A39A8FE08093C20D0E9437 +:10C91000C12E8EEB92E09F938F9380E293E09F93E2 +:10C920008F930E948B328CEC92E09F938F9383E3E2 +:10C9300093E09F938F930E948B3283ED92E09F93BD +:10C940008F9383E493E09F938F930E948B32809127 +:10C95000910D8F938091900D8F9382E593E09F933B +:10C960008F930E948B3283E693E00E94F6328EE131 +:10C97000E2E5F4E1DF011D928A95E9F781E0809319 +:10C9800052147894909140140FB6F894DEBF0FBE05 +:10C99000CDBF94FD809353149E01235C3F4F6F964F +:10C9A0003FAF2EAF6F971E0135E1230E311CCE0134 +:10C9B0008996A1969FAF8EAFA197DE011196A3969F +:10C9C000BFAFAEAFA39780916915809368158FE3D1 +:10C9D000E9EAF4E1DF011D928A95E9F76CEC74E174 +:10C9E00080E00E949F56811103C087E00E94555A43 +:10C9F0000C9A549A549A0E941A4A549A9FDDDFDC8A +:10CA000054985C9A0E9413330E94C0440E940233DF +:10CA1000E8DC1092521410920114109251141092EA +:10CA200054141092551480915314813099F484EE6B +:10CA300098E00E94E7328EEB98E00E94E73281E7AF +:10CA400098E00E94E732A4961FAEA497A5961FAE69 +:10CA5000A5973DC010925314F6CF8091060185FD35 +:10CA600020C00E94494D1092C70D809102018F7D18 +:10CA70008093020180919A0D90919B0DA0919C0D45 +:10CA8000B0919D0DB0588093940F9093950FA09303 +:10CA9000960FB093970F60E070E084EB92E40E94F1 +:10CAA000132F8091900F9091910FA091920FB091C0 +:10CAB000930F892B8A2B8B2B51F41092C70DE7E62D +:10CAC000F3E0FF93EF930E948B320F900F908091D1 +:10CAD000C70D8823E1F0C1CFE92FF0E0E851FB4E0C +:10CAE00080819F5F903809F490E0909368158F3FA4 +:10CAF00009F477C58A3091F08D3081F0A596BFADED +:10CB0000A597BB2309F439C5893209F42FC5909143 +:10CB10006815809169159813DFCF63C50AEA13E1A0 +:10CB2000A4963FADA497E32FF0E0E655FC4E1082AB +:10CB30000E94F73780915214811111C58AE0D1010A +:10CB40001D928A95E9F78091AA13843209F076C480 +:10CB500081E08DAF8091AB13833481F034F488236E +:10CB600051F0843209F06FC209C0873439F088353A +:10CB700009F069C203C086E796E054C39091AC13F4 +:10CB800091114EC4833409F42DC21CF4843241F057 +:10CB90004DC4873409F46AC1883509F440C246C4DB +:10CBA00080915314887109F03DC482E796E00E9499 +:10CBB000E732809133140E94D93289E596E00E94D1 +:10CBC000E732809136140E94D9328BE396E00E94BE +:10CBD000E732809134140E94D93282E296E00E94BA +:10CBE000E732809134140E94E4328BE196E00E9497 +:10CBF000E732809135140E94D93283E096E00E949A +:10CC0000E732809135140E94E4328CEF95E00E9467 +:10CC1000E7328091401482FB882780F90E94D93244 +:10CC20008BED95E00E94E7328091401486FB8827C7 +:10CC300080F90E94D9328BEB95E00E94E732809117 +:10CC40004014881F8827881F0E94D9328BE995E0FD +:10CC50000E94E732809137140E94D93285E895E02E +:10CC60000E94E732809137140E94E4328DE795E00C +:10CC70000E94E732609138147091391480913A140F +:10CC800090913B140E94BB328DE595E00E94E73203 +:10CC900060913C1470913D1480913E1490913F142A +:10CCA0000E94BB3282E495E00E94E73280914014FA +:10CCB00081700E94D93285E295E00E94E73280912E +:10CCC000401485FB882780F90E94D9328AE095E0DC +:10CCD0000E94E7328091401483FB882780F90E94EC +:10CCE000D9328FEE94E00E94E73280914014829511 +:10CCF00081700E94D93283ED94E00E94E7328091E6 +:10CD000041140E94D93289EB94E00E94E73280916D +:10CD100041140E94E43281EB94E00E94E73260917A +:10CD200042147091431480914414909145140E94D0 +:10CD3000BB3284E994E00E94E7326091461470911E +:10CD4000471480914814909149140E94BB3287E7A0 +:10CD500094E00E94E73280914A140E94D93288E51B +:10CD600094E00E94E73260914C1470914D148091D0 +:10CD70004E1490914F140E94BB328FE394E00E94B6 +:10CD8000E73210E034E6D32E23E0E22E24E1F22E47 +:10CD900000E08DE394E00E94E732802F8D0D0E9429 +:10CDA000D9328BE394E00E94E732123091F01330D5 +:10CDB000E1F0113031F0F70160817181828193815E +:10CDC0001CC0D7011C966D917D918D919C911F97F0 +:10CDD00014C020E030E041E655E4F701608D718D2C +:10CDE000828D938D0E94557508C0F70184A195A18D +:10CDF000A6A1B7A1BC01CD0190580E94BB3288E327 +:10CE000094E00E94E732013029F0023031F086E3ED +:10CE100094E005C084E394E002C082E394E00E94C1 +:10CE2000E732123051F0133059F0113019F088E226 +:10CE300094E008C086E194E005C085E094E002C07B +:10CE400085EF93E00E94E73281EF93E00E94E732A2 +:10CE50000F5FF4E0EF0EF11C033009F09ACF2AE0E7 +:10CE6000D20E1F5F3CE8D3128FCFE0C28FEE93E06B +:10CE70000E94E7328091A914823091F038F488231F +:10CE800061F08130A9F489EE93E00CC0833069F041 +:10CE9000883071F48FED93E005C08CEE93E002C012 +:10CEA00086EE93E00E94E7320CC083EE93E0FACF67 +:10CEB0008AED93E00E94E7328091A91482500E948B +:10CEC000D93287ED93E00E94E7328091AF148A5CFB +:10CED0000E94D9328091AD14813049F028F082301F +:10CEE00051F488EC93E005C082ED93E002C08DEC34 +:10CEF00093E00E94E7328091AB14811103C083EC70 +:10CF000093E002C08EEB93E00E94E7328091AC1474 +:10CF1000811103C089EB93E002C084EB93E00E948F +:10CF2000E7328091AA14813019F48FEA93E002C0AD +:10CF30008AEA93E00E94E7328091B014813049F090 +:10CF400028F0823051F48EE993E005C086EA93E040 +:10CF500002C082EA93E00E94E7328091B2148130ED +:10CF600031F040F0823051F486E993E005C08AE95F +:10CF700093E002C082E993E00E94E7328091B1140D +:10CF8000882329F0823039F48AE893E002C08EE8E1 +:10CF900093E00E94E73287E893E00E94E7328091B5 +:10CFA000BB140E94D93284E893E00E94E73260917A +:10CFB000B7147091B8148091B9149091BA140E946A +:10CFC000BD3281E893E00E94E7326091B314709122 +:10CFD000B4148091B5149091B6140E94BD328DE7BF +:10CFE00093E020C180915314823049F40E94715B18 +:10CFF00084EE98E00E94E7328BE998E00BC0811143 +:10D0000011C282E08093531484EE98E00E94E732CC +:10D0100084EA98E00E94E73281E798E003C18091BA +:10D020005314813009F002C284EE98E00E94E73286 +:10D030008CEA98E00E94E73281E798E00E94E732AC +:10D0400010925314F3C190915314923008F0EAC136 +:10D05000893409F4C5C034F4833259F0883409F4B2 +:10D0600080C064C18E3409F436C1823509F4F9C038 +:10D070005DC182E08DAF8091AC138111D1C110E010 +:10D08000BE016F5F7F4F812F0E949F56811104C0A8 +:10D0900087E00E94555ACAC18AE793E00E94E732AE +:10D0A000163029F0173041F484E793E002C087E797 +:10D0B00093E00E94E73204C086E3810F0E94D932D8 +:10D0C00082E793E00E94E732CE0101967C0100E006 +:10D0D000D7016D917D918D919D917D010E94CB3203 +:10D0E000023019F080E793E002C08CE693E00E94E2 +:10D0F000E7320F5F033061F71F5F183009F686E6ED +:10D1000093E00E94E73298EDE92E94E1F92E10E0C9 +:10D11000F70161917191819191917F010E94CB32D0 +:10D12000123019F084E693E002C080E693E00E949A +:10D13000E7321F5F133061F78AE593E00E94E73220 +:10D140006091E4147091E5148091E6149091E714D5 +:10D150000E94CB3286E593E00E94E7320E941E5B7C +:10D1600065C18091401484FF59C184E080935314B9 +:10D170001BD984E00E94F75F83E00E94F75F0E9462 +:10D18000F73780915214811102C02BD918D98091A0 +:10D19000521481114BC1109253140E94894410E023 +:10D1A000812F0E941C4C811102C087E013C0809126 +:10D1B000AA13882389F08AEA93E10E94F6328AEA68 +:10D1C00093E10E948F05811105C085ED9AE00E94D0 +:10D1D000E73202C00E94555A1F5F123009F726C17C +:10D1E00082E08DAF8091AC1381111FC040E550E00B +:10D1F0006EEA7BE08AEA93E15FD9892B49F41092C9 +:10D20000AA1340E550E06AEA73E18EEA9BE011D987 +:10D2100086E493E00E94E7328AEA93E10E94F632C4 +:10D2200082E493E00E94E73201C193E09DAF8D3329 +:10D2300009F0F6C083E0282F30E0F901E655FC4EF6 +:10D240009081D901A955BC4E9C938F5F908191111B +:10D25000F2CF8DAF40E550E06AEA73E18EEA9BE0E1 +:10D26000ABC082E08DAF8091AC13833509F0D8C09C +:10D2700083E08DAF8091AD13843509F0D1C084E097 +:10D280008DAF8091AE138D3309F0CAC08091B01379 +:10D290008111C6C085E08DAF8091AF13843239F023 +:10D2A0008A3239F0833209F0BBC082E003C081E0EA +:10D2B00001C08FEF0E94BF5684EE98E00E94E732D3 +:10D2C00085E798E00E94E73281E798E00E94E73224 +:10D2D0000E94715BABC082E08DAF8091AC13811175 +:10D2E00021C010E0812F0E941C4C811104C087E0F6 +:10D2F0000E94555A13C08FE393E00E94E732812FBA +:10D300000E94D9328DE393E00E94E7328AEA93E1EA +:10D310000E94F6328AE393E00E94E7321F5F1230E8 +:10D3200009F784C091117EC011E001C010E0AE0188 +:10D33000475D5F4FBE01635C7F4F8AEA93E10E94C5 +:10D34000303A811102C082E076C0EDAD81E08E0FEF +:10D350008DAFF0E0E655FC4E90819D3309F060C042 +:10D36000112361F1482F50E0282F30E0D901A65554 +:10D37000BC4E9C91241B350BF901E655FC4E908365 +:10D380008F5F9C919111F0CF8DAF8AEA93E10E945B +:10D390008F05811149C069A57AA58BA59CA50E941E +:10D3A00055780E94C275F1E56F9FC001112440E5D8 +:10D3B00050E06AEA73E1955F3CD838C0AE014F5F38 +:10D3C0005F4FBE01635C7F4F8AEA93E10E94303A6F +:10D3D000882309F4B8CFEDADF0E0E655FC4E80812E +:10D3E00081111EC089A49AA4ABA4BCA420E030E0A3 +:10D3F0004FE753E4C501B4010E946C77181684F01E +:10D40000C980DA80EB80FC80C501B4010E94C2753E +:10D41000862FB701A6010E94935506C085E00BC078 +:10D4200083E009C088E007C0811105C085ED9AE05E +:10D430000E94E73294C00E94555A91C08332D1F4C1 +:10D440003F922F928FE793E09F938F931F930F93B9 +:10D450000E944679F10101900020E9F7BF016219AD +:10D46000730966557C4E0F900F900F900F900F90A0 +:10D470000F900BC0873439F08D3429F0803519F0C6 +:10D48000833509F06CC06AEA73E1DB018C91803569 +:10D4900011F0833509F58DED9CE00E9411798D899D +:10D4A000882391F03F922F9287E893E09F938F9388 +:10D4B00081E19DE09F938F930E9418790F900F90C8 +:10D4C0000F900F900F900F9082E3EAEAF3E1DF01F3 +:10D4D0001D928A95E9F743C08091DC04843148F0BD +:10D4E0008BE893E09F938F930E948B320F900F9065 +:10D4F00036C00091DA04B6E6B09F80011124C8015D +:10D500008C519B4F0E9411798D89882391F03F9215 +:10D510002F9287E893E09F938F93085E1A4F1F9393 +:10D520000F930E9418790F900F900F900F900F900B +:10D530000F9082E3EAEAF3E1DF011D928A95E9F7B1 +:10D540008091DA04833120F48F5F8093DA0402C083 +:10D550001092DA048091DC048F5F8093DC04A4963F +:10D560001FAEA497A5961FAEA5973BC0B13009F09A +:10D57000CECAA5961FAEA597CACA813208F4C7CAFB +:10D580008F3209F4C4CA883211F18B3329F1A49681 +:10D59000EFADA497EF3438F08BE00E94555AA49673 +:10D5A0001FAEA497B4CAA496FFADA4972F2F30E066 +:10D5B0004F2F4F5F9FE9980FF901E655FC4E9A31C6 +:10D5C00008F480528083A4964FAFA497A0CA21E0AC +:10D5D000A5962FAFA5979BCA32E0A5963FAFA5971A +:10D5E00096CA8091DD0C882399F08DED9CE00E9415 +:10D5F0008F0580930F0D61E17DE00E94A52B81E0F6 +:10D600008093100D82E3ADEDBCE01D928A95E9F7A1 +:10D610008091C30D81113FC08091DC048823D9F132 +:10D620008091C80D8823B9F18091C90D882399F1A3 +:10D630000091DB04B6E6B09F800111240C511B4F12 +:10D64000C8010E948F05F80182ABF090DB04F6E67A +:10D65000FF9D80011124B801685E7A4F0C511B4F69 +:10D66000D801D2968C910E94A52B81E0F80183AB62 +:10D6700082E3D8011D928A95E9F7B2E1BF1520F047 +:10D68000F394F092DB0402C01092DB048091DC047E +:10D6900081508093DC048091880D9091890D8130B8 +:10D6A000910571F068F08230910569F0039789F572 +:10D6B000A59882E390E00E94EC3782E090E025C0DC +:10D6C0001092DD0426C08091DD048F5F8093DD041D +:10D6D000A59A80910301887739F01092DD049C9A15 +:10D6E0009D9AA498A59A0AC082E390E00E94EC3724 +:10D6F0008091DD048A3038F01092DD041092890D9B +:10D700001092880D06C083E090E09093890D80937D +:10D71000880D0E94645B0E94F7378091521481113A +:10D7200052C98091100D882369F081E19DE00E942B +:10D73000F63282E3E1E1FDE0DF011D928A95E9F72F +:10D740001092100D80915314882309F4E6C0809143 +:10D75000C40D882309F41AC11092C40D6D961CAE35 +:10D760001DAE1EAE1FAE6D9769961CAE1DAE1EAEF1 +:10D770001FAE699765961CAE1DAE1EAE1FAE6597B7 +:10D7800084E16F96EEADFFAD6F97282F11922A9529 +:10D79000E9F7A196AEADBFADA197E82F1D92EA952E +:10D7A000E9F7D101E82F1D92EA95E9F7A396AEAD0E +:10D7B000BFADA3971D928A95E9F780E090E00E94A3 +:10D7C0003B54A9966CAF7DAF8EAF9FAFA99781E018 +:10D7D00090E00E943B54AD966CAF7DAF8EAF9FAF93 +:10D7E000AD9782E090E00E943B546B017C0120E009 +:10D7F00030E040E05FE360910002709101028091AF +:10D800000202909103020E94747420E030E040E034 +:10D810005FE30E94A77720E030E044E353E40E94F6 +:10D82000A7779B01AC0160E070E084E393E40E9481 +:10D8300074742B013C0120E030E044EB52E4C7015A +:10D84000B6010E947474FE01EF5AFF4F4F019E0112 +:10D850002B5A3F4F5901DE01A75ABF4F6D017B0183 +:10D860008C01AD962CAD3DAD4EAD5FADAD97A9969B +:10D870006CAD7DAD8EAD9FADA9970E94AF51A40157 +:10D88000B501C6010E94504F6D966CAD7DAD8EAD59 +:10D890009FAD6D978E01035C1F4F24E045E0A9D535 +:10D8A00069966CAD7DAD8EAD9FAD69970451110940 +:10D8B00024E045E09ED565966CAD7DAD8EAD9FAD07 +:10D8C0006597810124E045E094D58E010F5F1F4FDD +:10D8D00024E045E0C301B2018CD51F930F933F9222 +:10D8E0002F92A196FFADA197FF93A0962FADA09781 +:10D8F0002F936F963FAD6F973F936E968FAD6E9758 +:10D900008F938DE993E09F938F930E948B320FB694 +:10D91000F894DEBF0FBECDBF39C08091C80D8823FB +:10D9200009F415CF8091C90D882309F410CF04E1C3 +:10D9300010E082E3B82EA090DC0CB6E6BA9DC001E0 +:10D940001124FC01EC51FB4F7F0123A9222309F490 +:10D95000FECE9C01285E3A4F6901C9010E94F63251 +:10D96000D601EB2D1D92EA95E9F7D701D3961C92CB +:10D97000B2E1BA1528F081E08A0D8093DC0C02C078 +:10D980001092DC0C01501109B1F6E1CE82B301E036 +:10D9900083FB882780F980279091E3048917D9F0C9 +:10D9A0008AE090E00E94EC3712B313FB112710F9C4 +:10D9B00010278091E304181771F01F921F9381EBD9 +:10D9C00093E09F938F930E948B321093E3040F9008 +:10D9D0000F900F900F908091DF049091E004A09140 +:10D9E000E104B091E2048F3F9105A105B10509F072 +:10D9F00060F40196A11DB11D8093DF049093E004B3 +:10DA0000A093E104B093E20424C01092DF041092CA +:10DA1000E0041092E1041092E2048BE30E94C04CF7 +:10DA200011E08536910508F410E08091DE041817A6 +:10DA300081F01F921F938CEB93E09F938F930E9432 +:10DA40008B321093DE041093CA0D0F900F900F903D +:10DA50000F9080915314811112C08091C50D8823BD +:10DA600071F08091C60D882351F084EC93E09F9370 +:10DA70008F930E948B321092C60D0F900F90809161 +:10DA8000CB0D882309F423C880915314811128C138 +:10DA90008091C20D8F3009F023C18091CA0D882377 +:10DAA00009F41EC18091430D9091440D9C012F5F9C +:10DAB0003F4F3093440D2093430D45970CF407C816 +:10DAC00021961CAE1DAE1EAE1FAE219719A61AA63A +:10DAD0001BA61CA61D8A1E8A1F8A188EE090BE0DEA +:10DAE000F090BF0D0091C00D1091C10D2091BA0DA5 +:10DAF0003091BB0D4091BC0D5091BD0D6091B60DA4 +:10DB00007091B70D8091B80D9091B90D4101FE0152 +:10DB1000B9965F01DE01DD966D010E94F94F80E04C +:10DB200090E00E943B544B015C0181E090E00E9438 +:10DB30003B546B017C0182E090E00E943B542B013E +:10DB40003C01A501940121966CAD7DAD8EAD9FADDC +:10DB50002197CAD69F7720E030E040E05FE30E9443 +:10DB60006C7718163CF1A701960169A57AA58BA5DB +:10DB70009CA5BAD69F7720E030E040E05FE30E94AA +:10DB80006C771816BCF0A30192016D897E898F898C +:10DB9000988DAAD620E030E044EB52E4A6D69F77D9 +:10DBA00020E030E040E05FE30E946C77181614F04C +:10DBB0000C9467658EE1E2E5F4E1DF011D928A9540 +:10DBC000E9F70E9402330E94F16180929E0D9092CB +:10DBD0009F0DA092A00DB092A10DC092A20DD09267 +:10DBE000A30DE092A40DF092A50D4092A60D5092C7 +:10DBF000A70D6092A80D7092A90D80915614909176 +:10DC00005714A0915814B09159148093AA0D909371 +:10DC1000AB0DA093AC0DB093AD0D80915A149091C3 +:10DC20005B14A0915C14B0915D148093AE0D909341 +:10DC3000AF0DA093B00DB093B10D80915E14909193 +:10DC40005F14A0916014B09161148093B20D909311 +:10DC5000B30DA093B40DB093B50D8CE0A396EEADCB +:10DC6000FFADA39711928A95E9F78091B60D909137 +:10DC7000B70DA091B80DB091B90D89839A83AB838C +:10DC8000BC838091BA0D9091BB0DA091BC0DB09159 +:10DC9000BD0D8D839E83AF83B8878091BE0D90911B +:10DCA000BF0DA091C00DB091C10D89879A87AB8738 +:10DCB000BC87AE01475F5F4FBE016B5F7F4FCE01F8 +:10DCC00001960E94504F00E020E030E048E452E42A +:10DCD000BE016F5F7F4F80E00E949B5B0C94676585 +:10DCE0001092440D1092430D0C946765CF930E94DF +:10DCF000645BC9E20E94F73780915214811111C010 +:10DD00008091AA129091AB12981739F0C89FC00168 +:10DD100011248853904F892B69F7809153148830D0 +:10DD200049F3CF910895CF9320919D1430919E1483 +:10DD300040919F145091A0146091C0147091C1142F +:10DD40008091C2149091C314A9D6811126C020914C +:10DD5000A1143091A2144091A3145091A414609185 +:10DD6000C4147091C5148091C6149091C71496D6AE +:10DD7000811113C0C1E02091A5143091A6144091E7 +:10DD8000A7145091A8146091C8147091C91480917F +:10DD9000CA149091CB1482D68111C0E08C2FCF9100 +:10DDA0000895CF92DF92EF92FF920F93CF93DF937C +:10DDB00030915314323009F482C0C02FD22F042F77 +:10DDC0006B017C0193DF10926E14109250148091BD +:10DDD000401487FD03C080E180935014DD2331F0AF +:10DDE0009091501480E189278093501489B18071FB +:10DDF00090915014891751F09FB7F8948091511465 +:10DE00008061809351149FBF0E94F7378091521414 +:10DE1000811155C0A70196016DE974E181E00E946E +:10DE20009B5B81E0809302149FB7F894809101146A +:10DE30008260809301149FBF0E94F7378091521433 +:10DE400081113DC0809153148111F6CF809102144D +:10DE50008130A9F4CC2351F08CE0E6E5F4E1A2E6B0 +:10DE6000B4E101900D928A95E1F70CC09FB7F89448 +:10DE7000809151148061809351149FBF03C081E051 +:10DE800080936E14109202140E94F73780915214FE +:10DE9000811115C00E94C0440E9413330E940233B6 +:10DEA00066E574E18DE994E10E941C55DF91CF9104 +:10DEB0000F91FF90EF90DF90CF900C941E5BDF915D +:10DEC000CF910F91FF90EF90DF90CF9008952F9218 +:10DED0003F924F925F926F927F928F929F92AF92FA +:10DEE000BF92CF92DF92EF92FF920F931F93CF9347 +:10DEF000DF93CDB7DEB7E1970FB6F894DEBF0FBE64 +:10DF0000CDBF6D837E838F8398872F87388B498B16 +:10DF10005A8B0D8BAD868B8A24E0E29E8001112402 +:10DF2000C80180549B4E9F8B8E8BD801A158BB4E4D +:10DF3000B98FA88F8D909D90AD90BC90FC012081F1 +:10DF4000318142815381C501B401CFD46A8F7B8F67 +:10DF50008C8F9D8FF4E0CF9E1001112491012054ED +:10DF60003B4E3F8F2E8FC10181589B4E99A388A3B2 +:10DF7000DC01CD90DD90ED90FC90F90120813181A4 +:10DF800042815381C701B601B0D46AA37BA38CA39D +:10DF90009DA32401350177FA709477F87094D70126 +:10DFA000C601B05889839A83AB83BC83F801E356DA +:10DFB000FB4E2A8D3B8D4C8D5D8D60817181828100 +:10DFC000938192D44B015C01F101E356FB4E2AA1EF +:10DFD0003BA14CA15DA1608171818281938184D438 +:10DFE0006B017C01A5019401C301B201B0D769871F +:10DFF0007A878B879C87A701960169817A818B81BB +:10E000009C81A5D79B01AC0169857A858B859C8510 +:10E010006CD469877A878B879C87A7019601C30197 +:10E02000B20195D76B017C01A501940169817A81C8 +:10E030008B819C818CD79B01AC01C701B60154D464 +:10E0400029853A854B855C85C3D46B017C019B890E +:10E05000992389F02DEB37E346E055EBC701B60174 +:10E060003BD787FD1AC02BED3FE049EC50E4C701D8 +:10E07000B6013AD410C02DEB37E346E055E3C701B3 +:10E08000B6010CD518164CF02BED3FE049EC50E4EE +:10E09000C701B6012AD46B017C0180903C1490909A +:10E0A0003D14A0903E14B0903F142D813E814F81CD +:10E0B0005885CA01B90119D4A501940115D4A50147 +:10E0C000940145D7B1D74B015C0120E030E040E03E +:10E0D0005FE3C701B6013BD72D813E814F81588553 +:10E0E00036D79F77A5019401E0D4B5D54BD57C8B6D +:10E0F0006B8BDB01AB2B09F459C14B01A12CB12C6B +:10E10000BD89BB2371F0C501B40168D59B01AC0189 +:10E110006F85788989899A891AD76F87788B898BD7 +:10E120009A8BC501B4015AD54B015C019B01AC012E +:10E13000C701B601BAD46D837E838F839887FD852E +:10E14000E4E0FE9FC00111249C0120543B4E3E8719 +:10E150002D87FC01E356FB4ED9012D913D914D9148 +:10E160005C916081718182819381BED3A50194010C +:10E170009CD46EA77FA788AB99AB2D813E814F8140 +:10E180005885CA01B901E3D69B01AC0160E070E09B +:10E1900080E090E4A9D36B017C012BEA3AEA4AE2E1 +:10E1A0005EE36D817E818F819885D1D64B015C01C4 +:10E1B00020E030E040E850E4C701B60196D39B016F +:10E1C000AC01C501B401C3D669877A878B879C8768 +:10E1D00020E030E040E05FE3C701B601B8D66EA3AF +:10E1E0007FA388A799A710E022242394312CEB89E0 +:10E1F000FC89E215F30509F4D9C01C3008F03AC0D7 +:10E2000029813A814B815C816EA17FA188A599A566 +:10E210009ED66B017C01A301920169857A858B856D +:10E220009C8595D6A701960160D37B01082FD92E36 +:10E23000A30192016EA17FA188A599A588D64B0163 +:10E240005C0129813A814B815C8169857A858B8566 +:10E250009C857DD69B01AC01C501B40145D32B0142 +:10E260003C011F5FC701A02FBD2D89839A83AB831B +:10E27000BC835BC0B10180E090E0B0D42D813E81D1 +:10E280004F81588564D66B017C010CD469837A83F5 +:10E290008B839C83C701B601BDD64B015C01E88D21 +:10E2A000F98DC080D180E280F380F7FAF094F7F81E +:10E2B000F094A8A1B9A18D919D910D90BC91A02D34 +:10E2C0008AA79BA7ACA7BDA7A701960169817A8100 +:10E2D0008B819C813CD62B013C012AA53BA54CA5FA +:10E2E0005DA5C501B40133D69B01AC01C301B201E8 +:10E2F000FCD22B013C01A7019601C501B40127D630 +:10E300006B017C012AA53BA54CA55DA569817A819D +:10E310008B819C811CD69B01AC01C701B601E4D264 +:10E3200069837A838B839C8310E0A30192016A8DB9 +:10E330007B8D8C8D9D8DD9D2EE89FF896083718311 +:10E340008283938329813A814B815C816AA17BA17D +:10E350008CA19DA1CAD2AE8DBF8D6D937D938D93FF +:10E360009C9313972EA53FA548A959A9ED85FE8535 +:10E370006081718182819381B8D2AD85BE856D93B4 +:10E380007D938D939C9313970D892F8538894989A7 +:10E390005A8960EC74E181E00E949B5B8091521489 +:10E3A00081110EC0BFEF2B1A3B0A21CF0D892F859B +:10E3B000388949895A896DE974E181E00E949B5B43 +:10E3C000E1960FB6F894DEBF0FBECDBFDF91CF91BF +:10E3D0001F910F91FF90EF90DF90CF90BF90AF9083 +:10E3E0009F908F907F906F905F904F903F902F9075 +:10E3F0000895EF920F931F93CF93DF93E80147FDAA +:10E4000002C034E001C034E1042E000C550B57FF6C +:10E4100003C0519541955109E32E022F242FAE01DF +:10E4200007D0CE01DF91CF911F910F91EF9008950A +:10E430008F929F92AF92BF92CF92DF92EF92FF9214 +:10E440000F931F93CF93DF93CDB7DEB729970FB606 +:10E45000F894DEBF0FBECDBF6A01122FB02E2BE3A2 +:10E46000201720F0FF24F394F00E02C02CE3F22ECC +:10E470000F2D27E0AE014F5F5F4F50D1BC014981A6 +:10E48000842F8970813031F0E1FC06C0E0FE06C0C7 +:10E4900090E205C09DE203C09BE201C090E05E2DCA +:10E4A000507143FF3CC0911102C083E001C084E081 +:10E4B000811718F4212F281B01C020E051110BC037 +:10E4C000F601822F30E2882319F031938150FBCF7F +:10E4D000C20ED11C20E0992329F0D6019C93F601AD +:10E4E00031966F01C6010396E2FE0AC03EE4D601F2 +:10E4F0003C9341E411964C93119712963C9306C0BD +:10E500003EE6F601308341E641833283FC01322F3F +:10E5100040E2332309F442C041933150FACF42FF25 +:10E5200044C0911102C083E001C084E0811718F457 +:10E53000212F281B01C020E051110BC0F601822FB2 +:10E5400030E2882319F031938150FBCFC20ED11CE9 +:10E5500020E0992329F0D6019C93F60131966F01B2 +:10E56000C6010396E2FE0BC039E4D6013C933EE4BB +:10E5700011963C93119736E412963C9307C039E606 +:10E58000F60130833EE6318336E63283FC01322FDA +:10E5900040E2332319F041933150FBCFFC01E20FED +:10E5A000F11D10828EEF9FEFA6C021E030E09111A7 +:10E5B00002C020E030E0161617061CF4FB0131966D +:10E5C00002C0E1E0F0E02E0F3F1FBB2021F0EB2D59 +:10E5D000F0E0319602C0E0E0F0E02E0F3F1FE12FA7 +:10E5E000F0E02E173F071CF4121B212F01C020E082 +:10E5F0008E2D887159F4F601822F30E2882319F0AC +:10E6000031938150FBCFC20ED11C20E0992329F019 +:10E61000D6019C93F60131966F0151110BC0F601A2 +:10E62000822F90E3882319F091938150FBCFC20E83 +:10E63000D11C20E00F2D060F9A81342F307144FF3A +:10E6400003C0913309F40150101624F4093018F076 +:10E6500008E001C001E0AB0177FF02C040E050E0FC +:10E66000FB01E41BF50BA1E0B0E0AC0FBD1FEA0F0E +:10E67000FB1F8EE2A82E4B01801A91080B2D10E093 +:10E680001195019511094F3FBFEF5B0721F4D601AA +:10E69000AC9211966D01641775072CF084169506DF +:10E6A00014F4818101C080E3415051093196D601B3 +:10E6B00011967D014017510724F0D6018C93670114 +:10E6C000E2CF6417750739F4963320F4953319F4C3 +:10E6D000311101C081E3F6018083F701822F90E2BE +:10E6E000882319F091938150FBCFF701E20FF11DC0 +:10E6F000108280E090E029960FB6F894DEBF0FBE3E +:10E70000CDBFDF91CF911F910F91FF90EF90DF90E0 +:10E71000CF90BF90AF909F908F900895283008F0D1 +:10E7200027E03327DA01990F311D87FD91600096AC +:10E730006105710539F432602E5F3D9330E32A950F +:10E74000E1F708959F3F30F080387105610509F0C9 +:10E750003C5F3C5F3D93913008F08068911DDF93F2 +:10E76000CF931F930F93FF92EF92192F987F969557 +:10E77000E92F96959695E90FFF27EC58FD4F9927BD +:10E780003327EE24FF24A701E7010590089407949E +:10E7900028F4360FE71EF81E491F511D660F771F1C +:10E7A000881F991F0694A1F70590079428F4E70E97 +:10E7B000F81E491F561FC11D770F881F991F661F1E +:10E7C0000694A1F70590079428F4F80E491F561FE8 +:10E7D000C71FD11D880F991F661F771F0694A1F7C9 +:10E7E0000590079420F4490F561FC71FD81F990F93 +:10E7F000661F771F881F0694A9F7849110951770DC +:10E8000041F0D695C79557954795F794E7941A9593 +:10E81000C1F7EAE1F2E068941590159135916591A0 +:10E82000959105907FE27395E118F10A430B560B21 +:10E83000C90BD009C0F7E10CF11E431F561FC91FB9 +:10E84000D01D7EF4703311F48A95E6CFE894015020 +:10E8500030F0080F0AF40027021708F4202F239540 +:10E86000022F7A3328F079E37D932A95E9F710C0D7 +:10E870007D932A9589F60694979567953795179510 +:10E880001794E118F10A430B560BC90BD00998F005 +:10E8900023957E9173957A3308F070E37C9320136F +:10E8A000B8F77E9170617D9330F0839571E37D932D +:10E8B00070E32A95E1F71124EF90FF900F911F91DB +:10E8C000CF91DF91992787FD909508959F939F772A +:10E8D000D5D10F9000203AF49058A2EA2AED3FE0FB +:10E8E00049E450E413D096C25058BB27AA270ED053 +:10E8F00091C25AD230F05FD220F031F49F3F11F430 +:10E900001EF42AC20EF4E095E7FBF7C1E92FA4D26A +:10E9100080F3BA17620773078407950718F071F43C +:10E920009EF5D3C20EF4E0950B2EBA2FA02D0B014D +:10E93000B90190010C01CA01A0011124FF27591B44 +:10E9400099F0593F50F4503E68F11A16F040A22F4A +:10E95000232F342F4427585FF3CF469537952795BB +:10E96000A795F0405395C9F77EF41F16BA0B620BBA +:10E97000730B840BBAF09150A1F0FF0FBB1F661F01 +:10E98000771F881FC2F70EC0BA0F621F731F841F44 +:10E9900048F4879577956795B795F7959E3F08F06A +:10E9A000B3CF9395880F08F09927EE0F9795879529 +:10E9B0000895FAD158F080E891E009F49EEFFBD178 +:10E9C00028F040E851E059F45EEF09C0C5C17DC2AE +:10E9D000E92FE07841D268F3092E052AC1F3261702 +:10E9E00037074807590738F00E2E07F8E02569F079 +:10E9F000E025E0640AC0EF6307F8009407FADB0142 +:10EA0000B9019D01DC01CA01AD01EF935DD002D2D5 +:10EA10000AD05F91552331F02BED3FE049E450FDE2 +:10EA200049EC63CF0895DF93DD27B92FBF7740E826 +:10EA30005FE31616170648075B0710F4D92F50D26C +:10EA40009F938F937F936F932DD3E6EAF1E087D165 +:10EA5000E1D12F913F914F915F9185D2DD2349F014 +:10EA60009058A2EA2AED3FE049EC5FE3D0785D27B9 +:10EA70004DDFDF91CFC112D280F09F3740F491116A +:10EA80000EF424C260E070E080E89FE3089526F071 +:10EA90001B16611D711D811D36C150C10AD108F4BC +:10EAA00081E0089590D1E395C6C10CD0B3C183D164 +:10EAB00040F07AD130F021F45F3F19F01EC15111BE +:10EAC00005C24AC1C9D198F39923C9F35523B1F3BB +:10EAD000951B550BBB27AA2762177307840738F0CD +:10EAE0009F5F5F4F220F331F441FAA1FA9F333D02C +:10EAF0000E2E3AF0E0E830D091505040E695001CE0 +:10EB0000CAF729D0FE2F27D0660F771F881FBB1F9B +:10EB1000261737074807AB07B0E809F0BB0B802D75 +:10EB2000BF01FF2793585F4F2AF09E3F510568F0C1 +:10EB3000E4C0CCC15F3FECF3983EDCF3869577955B +:10EB40006795B795F7959F5FC9F7880F911D9695C3 +:10EB5000879597F90895E1E0660F771F881FBB1F1F +:10EB6000621773078407BA0720F0621B730B840BCC +:10EB7000BA0BEE1F88F7E095089504D06894B111A0 +:10EB8000A5C1089571D188F09F5790F0B92F9927AA +:10EB9000B751A0F0D1F0660F771F881F991F1AF0A8 +:10EBA000BA95C9F712C0B13081F08FD1B1E00895A4 +:10EBB0008CC1672F782F8827B85F39F0B93FCCF325 +:10EBC000869577956795B395D9F73EF4909580959E +:10EBD000709561957F4F8F4F9F4F0895E89409C0BE +:10EBE00097FB3EF490958095709561957F4F8F4F80 +:10EBF0009F4F9923A9F0F92F96E9BB279395F69596 +:10EC0000879577956795B795F111F8CFFAF4BB0F13 +:10EC100011F460FF1BC06F5F7F4F8F4F9F4F16C077 +:10EC2000882311F096E911C0772321F09EE8872F01 +:10EC3000762F05C0662371F096E8862F70E060E0BD +:10EC40002AF09A95660F771F881FDAF7880F969536 +:10EC5000879597F9089522D180F09F3740F491115C +:10EC60000EF034C160E070E080E89FEB089526F478 +:10EC70001B16611D711D811D46C060C0DF93CF93BF +:10EC80001F930F938B01EC01E3EDF1E068D0C2D04C +:10EC90009801AE018B01EC0160E070E080E89FE339 +:10ECA00023DEC2D19801AE010F911F91CF91DF9168 +:10ECB0005AC1990F0008550FAA0BE0E8FEEF16168F +:10ECC0001706E807F907C0F012161306E407F50760 +:10ECD00098F0621B730B840B950B39F40A2661F0D4 +:10ECE000232B242B252B21F408950A2609F4A14077 +:10ECF000A6958FEF811D811D089597F99F6780E884 +:10ED000070E060E00895882371F4772321F0985033 +:10ED1000872B762F07C0662311F499270DC09051D9 +:10ED2000862B70E060E02AF09A95660F771F881FA7 +:10ED3000DAF7880F9695879597F908959F3F31F0F8 +:10ED4000915020F4879577956795B795880F911D19 +:10ED50009695879597F908959FEF80EC0895DF9336 +:10ED6000CF931F930F93FF92EF92DF927B018C0161 +:10ED7000689405C0DA2EEF01F6D0FE01E894A59163 +:10ED80002591359145915591AEF3EF01BFDDFE011F +:10ED90009701A801DA9479F7DF90EF90FF900F9137 +:10EDA0001F91CF91DF91089500240A94161617063B +:10EDB00018060906089500240A941216130614066C +:10EDC00005060895C9CF50D0E8F3E894E0E0BB27EA +:10EDD0009F57F0F02AED3FE049EC06C0EE0FBB0F65 +:10EDE000661F771F881F28F0B23A620773078407EF +:10EDF00028F0B25A620B730B840BE3959A9572F765 +:10EE0000803830F49A95BB0F661F771F881FD2F7A2 +:10EE1000904896CF092E0394000C11F4882352F0E9 +:10EE2000BB0F40F4BF2B11F460FF04C06F5F7F4F36 +:10EE30008F4F9F4F0895EF93E0FF06C0A2EA2AED9F +:10EE40003FE049EC5FEB62DDE5DF0F90039401FCEE +:10EE50009058EBEFF1E03BC157FD9058440F551F20 +:10EE600059F05F3F71F04795880F97FB991F61F04C +:10EE70009F3F79F087950895121613061406551FC3 +:10EE8000F2CF4695F1DF08C0161617061806991F2F +:10EE9000F1CF86957105610508940895E5DFA0F02E +:10EEA000BEE7B91788F4BB279F3860F41616B11D6A +:10EEB000672F782F8827985FF7CF86957795679586 +:10EEC000B11D93959639C8F30895E894BB2766273A +:10EED0007727CB0197F90895ECDE08F48FEF0895BA +:10EEE0009B01AC0160E070E080E89FE3DECDBCDF19 +:10EEF00058F19E5758F19851A0F0E9F0983020F55C +:10EF0000092E9927660F771F881F991F0A94D1F73A +:10EF100012C0062E672F782F8827985F11F4000CF7 +:10EF200007C0993FB4F38695779567959395D9F780 +:10EF3000611D711D811D3EF49095809570956195C0 +:10EF40007F4F8F4F9F4F08956894C0CFBECF0BD097 +:10EF500061CF2ADF28F02FDF18F0952309F0CDCEFE +:10EF6000FBCE1124B3CF78DFA0F3959FD1F3950F9B +:10EF700050E0551F629FF001729FBB27F00DB11D3D +:10EF8000639FAA27F00DB11DAA1F649F6627B00DCD +:10EF9000A11D661F829F2227B00DA11D621F739FB6 +:10EFA000B00DA11D621F839FA00D611D221F749FC4 +:10EFB0003327A00D611D231F849F600D211D822F0B +:10EFC000762F6A2F11249F5750408AF0E1F0882352 +:10EFD0004AF0EE0FFF1FBB1F661F771F881F91505F +:10EFE0005040A9F79E3F510570F087CE6FCF5F3F2D +:10EFF000ECF3983EDCF3869577956795B795F79592 +:10F00000E7959F5FC1F7FE2B880F911D9695879519 +:10F0100097F908959F93D7DE0F9007FCEE5F0BCF13 +:10F0200011F40EF499CE8ACE1FDFD0F39923D9F3D1 +:10F03000CEF39F57550B87FF43D00024A0E640EA4C +:10F04000900180585695979528F4805C660F771F3D +:10F05000881F20F026173707480730F4621B730B10 +:10F06000840B202931294A2BA69517940794202533 +:10F0700031254A2758F7660F771F881F20F026177B +:10F080003707480730F4620B730B840B200D311DDA +:10F09000411DA09581F7B901842F9158880F96954D +:10F0A000879508959B01AC0152CFF8DE20F09F3781 +:10F0B00008F40CCF28CE42CEFCDD880B990B0895C6 +:10F0C00091505040660F771F881FD2F708959F9385 +:10F0D0008F937F936F93FF93EF939B01AC0137DF87 +:10F0E000EF91FF913CDE2F913F914F915F912FCF98 +:10F0F000DB018F939F9380D0BF91AF91A29F800D32 +:10F10000911DA39F900DB29F900D11240895991BFE +:10F1100079E004C0991F961708F0961B881F7A950E +:10F12000C9F780950895AA1BBB1B51E107C0AA1F10 +:10F13000BB1FA617B70710F0A61BB70B881F991F98 +:10F140005A95A9F780959095BC01CD010895A1E24B +:10F150001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F51 +:10F16000FF1FA217B307E407F50720F0A21BB30B9C +:10F17000E40BF50B661F771F881F991F1A9469F718 +:10F1800060957095809590959B01AC01BD01CF0174 +:10F190000895052E97FB16F400940FD057FD05D067 +:10F1A000D6DF07FC02D046F408C050954095309554 +:10F1B00021953F4F4F4F5F4F0895909580957095E3 +:10F1C00061957F4F8F4F9F4F0895EE0FFF1F881F50 +:10F1D0008BBF0790F691E02D1994A29FB001B39FC9 +:10F1E000C001A39F700D811D1124911DB29F700D50 +:10F1F000811D1124911D0895F0DFA59F900DB49FEE +:10F20000900DA49F800D911D11240895FB01DC0138 +:10F210000D900020E9F7119701900D920020E1F781 +:10F220000895FB01DC0101900D920020E1F70895A3 +:10F230000F931F93CF93DF93CDB7DEB72E970FB603 +:10F24000F894DEBF0FBECDBF0E891F8986E08C8388 +:10F250001A8309838FEF9FE79E838D83AE01465EFD +:10F260005F4F688D798DCE01019659D0EF81F88579 +:10F27000E00FF11F10822E960FB6F894DEBF0FBE7E +:10F28000CDBFDF91CF911F910F910895CF93DF9361 +:10F29000CDB7DEB72E970FB6F894DEBF0FBECDBF49 +:10F2A00085E08C838C899D899A838983AE01485E31 +:10F2B0005F4F6E897F89CE010196E0D32E960FB6FF +:10F2C000F894DEBF0FBECDBFDF91CF9108950F93AD +:10F2D0001F93CF93DF93CDB7DEB72E970FB6F89479 +:10F2E000DEBF0FBECDBF8C0186E08C831A830983FD +:10F2F0008FEF9FE79E838D83CE01019610D0EF8123 +:10F30000F885E00FF11F10822E960FB6F894DEBF3D +:10F310000FBECDBFDF91CF911F910F9108952F9216 +:10F320003F924F925F926F927F928F929F92AF9295 +:10F33000BF92CF92DF92EF92FF920F931F93CF93E2 +:10F34000DF93CDB7DEB72B970FB6F894DEBF0FBEB5 +:10F35000CDBF6C017B018A01FC011782168283817B +:10F3600081FFBFC1CE0101963C01F6019381F701F7 +:10F3700093FD859193FF81917F01882309F4ADC1AD +:10F38000853239F493FD859193FF81917F01853218 +:10F3900021F4B60190E0F0D4E8CF912C212C312C4F +:10F3A000FFE1F315D8F08B3279F038F4803279F040 +:10F3B0008332A1F4232D20611DC08D3261F0803392 +:10F3C00069F4232D216016C0832D8260382EE32D31 +:10F3D000E4603E2E2AC0F32DF8601DC037FC2DC01E +:10F3E00020ED280F2A3040F08E32B9F436FC75C17A +:10F3F000232D2064322E19C036FE06C08AE0989E66 +:10F40000200D1124922E11C0EAE02E9E200D112411 +:10F41000222EF32DF0623F2E08C08C3621F4832D6E +:10F420008068382E02C0883641F4F70193FD85913B +:10F4300093FF81917F018111B3CF982F9F7D9554C8 +:10F44000933028F40C5F1F4F9FE399830DC08336E0 +:10F4500031F0833771F0833509F055C020C0F801D1 +:10F46000808189830E5F1F4F88248394912C5301E0 +:10F4700012C02801F2E04F0E511CF801A080B180AB +:10F4800036FE03C0692D70E002C06FEF7FEFC5014B +:10F490002AD44C018201F32DFF773F2E15C028019D +:10F4A00022E0420E511CF801A080B18036FE03C05C +:10F4B000692D70E002C06FEF7FEFC50109D44C01E8 +:10F4C000F32DF0683F2E820133FC19C0822D90E0AD +:10F4D00088169906A0F4B60180E290E04DD42A94F3 +:10F4E000F5CFF50137FC859137FE81915F01B601BB +:10F4F00090E042D421102A9421E0821A91088114CC +:10F50000910479F7E1C0843611F0893639F5F801B4 +:10F5100037FE07C060817181828193810C5F1F4F2C +:10F5200008C060817181072E000C880B990B0E5F5B +:10F530001F4FF32DFF763F2E97FF09C090958095C2 +:10F54000709561957F4F8F4F9F4FF0683F2E2AE057 +:10F5500030E0A30166D4882E861844C0853731F484 +:10F56000232D2F7EB22E2AE030E025C0932D997FE7 +:10F57000B92E8F36C1F018F4883579F0AEC08037D7 +:10F5800019F0883721F0A9C0E92FE061BE2EB4FE42 +:10F590000DC0FB2DF460BF2E09C034FE0AC0292F18 +:10F5A0002660B22E06C028E030E005C020E130E041 +:10F5B00002C020E132E0F801B7FE07C0608171812E +:10F5C000828193810C5F1F4F06C06081718180E052 +:10F5D00090E00E5F1F4FA30124D4882E8618FB2DC8 +:10F5E000FF773F2E36FE0DC0232D2E7FA22E8914CD +:10F5F00058F434FE0BC032FC09C0832D8E7EA82E39 +:10F6000005C0B82CA32C03C0B82C01C0B92CA4FE93 +:10F610000FC0FE01E80DF11D8081803321F49A2D89 +:10F62000997EA92E09C0A2FE06C0B394B39404C06B +:10F630008A2D867809F0B394A3FC10C0A0FE06C002 +:10F64000B21480F4280C922C9B180DC0B21458F4FC +:10F65000B60180E290E090D3B394F8CFB21418F4DE +:10F660002B1802C0982C212CA4FE0FC0B60180E3F9 +:10F6700090E082D3A2FE16C0A1FC03C088E790E010 +:10F6800002C088E590E0B6010CC08A2D867851F062 +:10F69000A1FE02C08BE201C080E2A7FC8DE2B601B0 +:10F6A00090E06AD3891430F4B60180E390E064D32B +:10F6B0009A94F8CF8A94F301E80DF11D8081B60188 +:10F6C00090E05AD38110F6CF222009F44ECEB60135 +:10F6D00080E290E051D32A94F7CFF601868197819A +:10F6E00002C08FEF9FEF2B960FB6F894DEBF0FBED0 +:10F6F000CDBFDF91CF911F910F91FF90EF90DF90E1 +:10F70000CF90BF90AF909F908F907F906F905F90C1 +:10F710004F903F902F90089520FD09C0FC0123FDDC +:10F7200005C022FF02C07383628351834083089522 +:10F7300044FD17C046FD17C0AB01BC01DA01FB0157 +:10F74000AA0FBB1FEE1FFF1F1094D1F74A0F5B1FBC +:10F750006E1F7F1FCB01BA01660F771F881F991F8D +:10F7600009C033E001C034E0660F771F881F991F7E +:10F770003150D1F7620F711D811D911D08950F93B6 +:10F780001F93CF93DF938C01C801B8D2EC0197FD92 +:10F7900006C08BD2892BC1F7B801CE0129D3CE0187 +:10F7A000DF91CF911F910F9108958F929F92AF9209 +:10F7B000BF92EF92FF920F931F93CF93DF938C0131 +:10F7C000D62F7A01B22E9AD29C0133272B323105E3 +:10F7D00031F02D32310559F48B2D8068B82ED1507F +:10F7E00011F480E061C0C80189D297FDFACFCB2D1A +:10F7F000CD7F2B2D2073F9F48033E9F4AA24AA9449 +:10F80000AD0E09F43EC0C80179D297FD3AC09C0103 +:10F810002F7D33272835310541F4C264D25089F158 +:10F82000C8016CD297FF07C02CC0B6FE02C0C260F0 +:10F8300001C0C261DA2D812C912C540120ED280FDA +:10F84000283078F0C4FF03C0B801D2D217C02A30E4 +:10F8500040F0C6FFF9CF2F7D3FEE320F3630A0F7D4 +:10F8600027504C2FC501B40163DF4B015C01C2601E +:10F87000D15051F0C80142D297FFE0CFC1FD04C082 +:10F88000B0CF812C912C5401C7FF08C0B094A09434 +:10F8900090948094811C911CA11CB11C2C2FB5014B +:10F8A000A401C70139DF81E0DF91CF911F910F9152 +:10F8B000FF90EF90BF90AF909F908F9008955F92D0 +:10F8C0006F927F928F929F92AF92BF92CF92DF9270 +:10F8D000EF92FF920F931F93CF93DF93CDB7DEB7D5 +:10F8E000A0970FB6F894DEBF0FBECDBF5C01962E79 +:10F8F0007A01F9018E010F5F1F4F680180E2D80184 +:10F900001D928A95E9F7D50113968C9080E090E0DE +:10F91000612C712C30E061E070E083FC259183FE66 +:10F9200021918F01522E211103C080E090E090C000 +:10F930002E3511F4009751F1432F50E04817590725 +:10F940003CF42D3559F12D3219F4772009F103C01B +:10F95000772009F468C0452D469546954695D60111 +:10F96000A40FB11D452D47708B0102C0000F111F60 +:10F970004A95E2F7A8015C91452B4C93651459F028 +:10F98000561410F45394E7CF5A94E5CF31E004C0F5 +:10F990007724739401C0712C0196BFCF772019F0A2 +:10F9A0008E8180628E83311103C08824839417C0B6 +:10F9B000F6019E012F5D3F4F8081809581932E1728 +:10F9C0003F07D1F7F2CFE114F10429F0D7018C936E +:10F9D000F70131967F019A94812C9920E9F0C501B5 +:10F9E0008DD197FD17C0FC01FF2723E0F595E79522 +:10F9F0002A95E1F7EC0DFD1D208130E0AC01477048 +:10FA0000552702C0359527954A95E2F720FDDBCFB3 +:10FA1000B501EED1811089CFE114F10411F0D701C5 +:10FA20001C92C80115C0422F469546954695D601B1 +:10FA3000A40FB11D422F47708B0102C0000F111F90 +:10FA40004A95E2F7A8015C91452B4C93622EA4CF16 +:10FA5000A0960FB6F894DEBF0FBECDBFDF91CF9159 +:10FA60001F910F91FF90EF90DF90CF90BF90AF90DC +:10FA70009F908F907F906F905F9008955F926F92AC +:10FA80007F928F929F92AF92BF92CF92DF92EF922E +:10FA9000FF920F931F93CF93DF936C01EB015A01F9 +:10FAA000FC0117821682512CF601E380FE01E3FC73 +:10FAB0008591E3FE8191182FEF01882309F4E0C0BE +:10FAC00090E0F3D0892B19F0C60159DEEDCF153245 +:10FAD00041F4FE01E3FC1591E3FE1191EF011532B3 +:10FAE00071F4C6010BD197FDC9C0412F50E09C01B4 +:10FAF000332724173507C1F2B6017AD1C1C01A32B3 +:10FB000039F4E3FC1591E3FE1191EF0101E001C02E +:10FB100000E0F12C20ED210F2A3078F402606F2DE7 +:10FB200070E080E090E040E203DEF62EFE01E3FCB0 +:10FB30001591E3FE1191EF01EDCF01FF03C0F1102C +:10FB400003C09EC0FF24FA94183619F01C3651F0F9 +:10FB500010C0FE01E3FC1591E3FE1191EF01183690 +:10FB600041F408600460FE01E3FC1591E3FE11918D +:10FB7000EF01112309F484C0612F70E084E193E068 +:10FB80009CD0892B09F47CC000FD07C0F501808062 +:10FB90009180C50102965C0102C0812C912C1E3619 +:10FBA00049F4F6014681578160E070E0202FC401DE +:10FBB000B3DD7ACF1336A1F401FD02C0FF24F39424 +:10FBC000C6019CD097FD5AC08114910429F0F4011C +:10FBD0008083C40101964C01FA94F110F1CF4AC020 +:10FBE0001B3551F49E01A4016F2DC60168DEEC01A6 +:10FBF000892B09F03FC039C0C601C1DD97FD3EC069 +:10FC00001F3649F128F4143621F1193639F125C08F +:10FC1000133771F01537E9F020C08114910429F0F1 +:10FC2000F4016082C40101964C01FA94FF2059F05E +:10FC3000C60164D03C0197FD06C037D0892B69F31B +:10FC4000B601C301D5D081149104A1F0F401108252 +:10FC500011C0006203C0006101C00064202FA40134 +:10FC60006F2DC601A2DD811105C0F601838180736D +:10FC700029F406C000FD18CF539416CF552019F073 +:10FC8000852D90E002C08FEF9FEFDF91CF911F9104 +:10FC90000F91FF90EF90DF90CF90BF90AF909F902B +:10FCA0008F907F906F905F900895911118C180326E +:10FCB00019F089508550D0F70895FC01059006167B +:10FCC00021F00020D9F7C00108953197CF010895A0 +:10FCD000FC010590615070400110D8F78095909517 +:10FCE0008E0F9F1F0895FC0161507040019001101C +:10FCF000D8F7809590958E0F9F1F0895CF93DF932F +:10FD0000EC012B8120FF33C026FF0AC02F7B2B8301 +:10FD10008E819F8101969F838E838A8190E029C086 +:10FD200022FF0FC0E881F9818081082E000C990B19 +:10FD3000009719F420622B831AC03196F983E88367 +:10FD40000EC0EA85FB85199597FF09C02B810196A6 +:10FD500011F080E201C080E1822B8B8308C02E81EC +:10FD60003F812F5F3F4F3F832E83992702C08FEF44 +:10FD70009FEFDF91CF9108950F931F93CF93DF9360 +:10FD8000FB01238121FD03C08FEF9FEF2CC022FFD9 +:10FD900016C046815781248135814217530744F4A8 +:10FDA000A081B1819D012F5F3F4F318320838C93D0 +:10FDB000268137812F5F3F4F3783268314C08B0105 +:10FDC000EC01FB010084F185E02D1995892BE1F60A +:10FDD000D80116968D919C911797019617969C9332 +:10FDE0008E931697CE01DF91CF911F910F910895B9 +:10FDF000FB01238120FF12C026FD10C08F3F3FEF83 +:10FE0000930761F082832F7D2064238326813781CD +:10FE10002150310937832683992708958FEF9FEF6B +:10FE20000895FA01AA27283051F1203181F1E89490 +:10FE30006F936E7F6E5F7F4F8F4F9F4FAF4FB1E0DD +:10FE40003ED0B4E03CD0670F781F891F9A1FA11DD8 +:10FE5000680F791F8A1F911DA11D6A0F711D811DD9 +:10FE6000911DA11D20D009F468943F912AE0269F9E +:10FE700011243019305D3193DEF6CF010895462FFD +:10FE80004770405D4193B3E00FD0C9F7F6CF462FDE +:10FE90004F70405D4A3318F0495D31FD4052419347 +:10FEA00002D0A9F7EACFB4E0A69597958795779504 +:10FEB0006795BA95C9F700976105710508959B018B +:10FEC000AC010A2E06945795479537952795BA9514 +:10FED000C9F7620F731F841F951FA01D08959927EE +:08FEE00088270895F894FFCF74 +:10FEE800AE47C13F08020102000400000000000004 +:10FEF80000737363616E662025640D0A0053255BE9 +:10FF0800302D392D2B2E5D52255B302D392D2B2E82 +:10FF18005D48255B302D392D2B2E5D46255B302D18 +:10FF2800392D2B2E5D004E256456255B302D392D3D +:10FF38002B2E5D46255B302D392D2B2E5D00582547 +:10FF48005B302D392D2B2E5D59255B302D392D2B0E +:10FF58002E5D5A255B302D392D2B2E5D46255B30C5 +:10FF68002D392D2B2E5D0042255B302D392D2B2E62 +:10FF78005D4C255B302D392D2B2E5D52255B302DA8 +:10FF8800392D2B2E5D46255B302D392D2B2E5D000E +:10FF980020422573204C2573205225730A0053777D +:10FFA80069667450726F002025730A0056342E3724 +:10FFB8002E300056342E302E3400205625730A0079 +:10FFC8002058257320592573205A25730A00205379 +:10FFD800257320522573204825730A004E25640096 +:10FFE80020422564204C2564205225640A00616E55 +:08FFF800676C65206F666673FB +:020000021000EC +:1000000065743A25730D0A00646576696365206E30 +:10001000616D65203A2025730D0A00736F667420A8 +:10002000766572203A2025730D0A0061706920768A +:100030006572203A2025730D0A00776F726B206D70 +:100040006F6465203A2025640D0A0040310A00657E +:10005000666665637420636865636B2074696D65AB +:100060006F7574210D0A0023255B302D395D002446 +:1000700025730045323320627566666572206675A9 +:100080006C6C0D0A004033205825732059257320CD +:100090005A2573205225730A004036204E302056D0 +:1000A00025640A004035205625640A004039205650 +:1000B000300A0041255B302D392D2B2E5D00562551 +:1000C00073002056310A00565542255B302D392EDB +:1000D0005D0046255B302D392E5D542564004E258C +:1000E00064412564542564004E25644125645425EB +:1000F0006456255B302D392E5D0058255B302D3937 +:100100002D2B2E5D59255B302D392D2B2E5D5A253B +:100110005B302D392D2B2E5D0042255B302D392D86 +:100120002B2E5D4C255B302D392D2B2E5D52255B02 +:10013000302D392D2B2E5D0058255B302D392D2B80 +:100140002E5D59255B302D392D2B2E5D5A255B30C8 +:100150002D392D2B2E5D502564004E2564562564C7 +:100160000053255B302D392D2B2E5D0056255B303D +:100170002D392D2B2E5D0020006F6B004532300095 +:1001800045323100453232004532360056332E3387 +:100190002E310056332E332E300056332E332E326E +:1001A0000056302E302E30007965730A0045323308 +:1001B0000A004532300A004532310A004532360A1B +:0201C00000003D +:00000001FF diff --git a/src/gcode.c b/src/gcode.c index d97b997..787afff 100755 --- a/src/gcode.c +++ b/src/gcode.c @@ -118,7 +118,6 @@ uint8_t gc_execute_line(char *line) if((letter < 'A') || (letter > 'Z')) { FAIL(STATUS_EXPECTED_COMMAND_LETTER); } // [Expected word letter] char_counter++; if (!read_float(line, &char_counter, &value)) { FAIL(STATUS_BAD_NUMBER_FORMAT); } // [Expected word value] - // Convert values to smaller uint8 significand and mantissa values for parsing this word. // NOTE: Mantissa is multiplied by 100 to catch non-integer command values. This is more // accurate than the NIST gcode requirement of x10 when used for commands, but not quite @@ -371,7 +370,8 @@ uint8_t gc_execute_line(char *line) case 'T': word_bit = WORD_T; break; // gc.values.t = int_value; case 'X': word_bit = WORD_X; gc_block.values.xyz[X_AXIS] = value; axis_words |= (1<>8); + if(eeprom_iic_read_ack()) return 1; + eeprom_iic_sendbyte(addr%256); + if(eeprom_iic_read_ack()) return 1; + + while(len != 0) + { + eeprom_iic_sendbyte(*(buf + length_of_data - len)); + len--; + if(eeprom_iic_read_ack()){ eeprom_iic_stop();return 1;} + delay_ms(5); + } + eeprom_iic_stop(); + + return 0; +} + +unsigned char eeprom_iic_readbuf(unsigned char *buf,unsigned char device_addr,unsigned int addr,unsigned char len) +{ + EEPROM_SCL_OUTPUT; + EEPROM_SDA_OUTPUT; + EEPROM_SCK_H; + EEPROM_SDA_H; + + + unsigned char length_of_data=0; + length_of_data = len; + eeprom_iic_start(); + eeprom_iic_sendbyte(device_addr); + if(eeprom_iic_read_ack()) return 1; + eeprom_iic_sendbyte(addr>>8); + if(eeprom_iic_read_ack()) return 1; + eeprom_iic_sendbyte(addr%256); + if(eeprom_iic_read_ack()) return 1; + eeprom_iic_start(); + eeprom_iic_sendbyte(device_addr+1); + if(eeprom_iic_read_ack()) return 1; + + while(len != 0) + { + *(buf + length_of_data - len) = eeprom_iic_readbyte(); + len--; + if(len != 0) { + eeprom_iic_send_ack(); + } + } + eeprom_iic_stop(); + return 0; +} static void arml_iic_start(void) diff --git a/src/uarm_iic.h b/src/uarm_iic.h index b027953..52ef587 100755 --- a/src/uarm_iic.h +++ b/src/uarm_iic.h @@ -7,5 +7,8 @@ void angle_iic_init(void); void iic_write_byte(uint8_t channel, uint8_t dev_addr, uint8_t write_addr, uint8_t write_data); uint8_t iic_read_byte(uint8_t channel, uint8_t dev_addr, uint8_t read_addr); +unsigned char eeprom_iic_writebuf(unsigned char *buf,unsigned char device_addr,unsigned int addr,unsigned char len); +unsigned char eeprom_iic_readbuf(unsigned char *buf,unsigned char device_addr,unsigned int addr,unsigned char len); + #endif diff --git a/src/uarm_peripheral.c b/src/uarm_peripheral.c index 4b6e538..da30168 100755 --- a/src/uarm_peripheral.c +++ b/src/uarm_peripheral.c @@ -318,7 +318,7 @@ void read_sys_param(void){ p = (char *)(&(uarm.param.work_mode)); - read_size = sizeof(uarm.param.work_mode); + read_size = sizeof(char); read_addr = EEPROM_MODE_ADDR; for( ; read_size > 0; read_size-- ){ *(p++) = eeprom_get_char(read_addr++); @@ -377,7 +377,7 @@ void save_sys_param(void){ char *p = NULL; p = (char *)(&(uarm.param.work_mode)); - write_size = sizeof(uarm.param.work_mode); + write_size = sizeof(char); write_addr = EEPROM_MODE_ADDR; for( ; write_size > 0; write_size-- ){ eeprom_put_char( write_addr++, *(p++) ); @@ -420,6 +420,157 @@ void write_sn_num(void){ } } +void setE2PROMData(unsigned char device, unsigned int addr, unsigned char type, float value) +{ + uint8_t deviceAddr; + + union { + float fdata; + uint8_t data[4]; + } FData; + + switch(device) + { + case 1: + deviceAddr = EXTERNAL_EEPROM_USER_ADDRESS; + break; + + case 2: + deviceAddr = EXTERNAL_EEPROM_SYS_ADDRESS; + break; + } + + if (device == 1 || device == 2) + { + int num = 0; + switch(type) + { + case DATA_TYPE_BYTE: + FData.data[0] = (unsigned char)value; + + num = 1; + break; + + case DATA_TYPE_INTEGER: + { + int i_val = 0; + i_val = (int)value; + FData.data[0] = (i_val & 0xff00) >> 8; + FData.data[1] = i_val & 0xff; + num = 2; + + } + break; + + case DATA_TYPE_FLOAT: + FData.fdata = (float)value; + num = 4; + break; + } + + unsigned char i=0; + i = (addr % 128); + // Since the eeprom's sector is 128 byte, if we want to write 5 bytes per cycle we need to care about when there's less than 5 bytes left + if (i >= (129-num)) + { + i = 128 - i; + eeprom_iic_writebuf(FData.data, deviceAddr, addr, i);// write data + delay_ms(5); + eeprom_iic_writebuf(FData.data + i, deviceAddr, addr + i, num - i);// write data + } + //if the left bytes are greater than 5, just do it + else + { + eeprom_iic_writebuf(FData.data, deviceAddr, addr, num);// write data + } + } + +} + +double getE2PROMData(unsigned char device, unsigned int addr, unsigned char type) +{ + double result = 0; + uint8_t deviceAddr; + uint8_t x_str[20]; + union { + float fdata; + uint8_t data[4]; + } FData; + + + switch(device) + { + case 1: + deviceAddr = EXTERNAL_EEPROM_USER_ADDRESS; + break; + case 2: + deviceAddr = EXTERNAL_EEPROM_SYS_ADDRESS; + break; + } + + if (device == 1 || device == 2) + { + unsigned char num = 0; + switch(type) + { + case DATA_TYPE_BYTE: + num = 1; + break; + + case DATA_TYPE_INTEGER: + num = 2; + break; + + case DATA_TYPE_FLOAT: + num = 4; + break; + } + + unsigned char i=0; + i = (addr % 128); + + if (i >= (129-num)) + { + i = 128 - i; + eeprom_iic_readbuf(FData.data, deviceAddr, addr, i); + delay_ms(5); + eeprom_iic_readbuf(FData.data + i, deviceAddr, addr + i, num - i); + } + else + { + + x_str[1]=eeprom_iic_readbuf(FData.data, deviceAddr, addr, num); + + } + + + switch(type) + { + case DATA_TYPE_BYTE: + result = FData.data[0]; + if(FData.data[0]==32) + { + uart_printf( "yes\n" ); + } + + break; + + case DATA_TYPE_INTEGER: + result = (FData.data[0] << 8) + FData.data[1]; + break; + + case DATA_TYPE_FLOAT: + result = FData.fdata; + break; + + } + + + } + return result; + +} + void read_hardware_version(void){ #define HARD_MASK ( 1<<6 | 1<<5 | 1<<4 | 1<<3 ) DDRJ &= ~HARD_MASK; @@ -565,14 +716,16 @@ void pump_tick(void) if ( (PINJ & HARD_MASK) >0x00) { - valve_on_times = 0; - DDRG |= 0x10; // PG4 PUMP_D5_N - DDRG |= 0x20; // PG5 PUMP_D5 + + valve_on_times = 0; + DDRG |= 0x10; // PG4 PUMP_D5_N + DDRG |= 0x20; // PG5 PUMP_D5 - PORTG &= (~0x10); - PORTG |= 0x20; - pump_state = PUMP_STATE_OFF; - + PORTG &= (~0x10); + PORTG |= 0x20; + pump_state = PUMP_STATE_OFF; + + } else { @@ -741,6 +894,13 @@ void update_motor_position(void){ uarm.init_arml_angle = calculate_current_angle(CHANNEL_ARML); uarm.init_armr_angle = calculate_current_angle(CHANNEL_ARMR); uarm.init_base_angle = calculate_current_angle(CHANNEL_BASE); + +// char l_str[20], r_str[20], b_str[20]; +// dtostrf( uarm.init_arml_angle, 5, 4, l_str ); +// dtostrf( uarm.init_armr_angle, 5, 4, r_str ); +// dtostrf( uarm.init_base_angle, 5, 4, b_str ); + +// DB_PRINT_STR( "init_angle: B%s L%s R%s\r\n", b_str, l_str, r_str ); uarm.target_step[X_AXIS] = sys.position[X_AXIS]; uarm.target_step[Y_AXIS] = sys.position[Y_AXIS]; @@ -756,6 +916,7 @@ void update_motor_position(void){ // dtostrf( gc_state.position[Z_AXIS], 5, 4, z_str ); // // DB_PRINT_STR( "coord: %s, %s, %s\r\n", x_str, y_str, z_str ); + } diff --git a/src/uarm_peripheral.h b/src/uarm_peripheral.h index 367dfe8..1116843 100755 --- a/src/uarm_peripheral.h +++ b/src/uarm_peripheral.h @@ -62,6 +62,8 @@ uint8_t get_power_status(void); void check_motor_positon(void); void update_motor_position(void); unsigned long millis_2(void); +void setE2PROMData(unsigned char device, unsigned int addr, unsigned char type, float value); +double getE2PROMData(unsigned char device, unsigned int addr, unsigned char type); #endif diff --git a/src/uarm_protocol.c b/src/uarm_protocol.c index cd26e9f..382aa98 100755 --- a/src/uarm_protocol.c +++ b/src/uarm_protocol.c @@ -109,7 +109,13 @@ static void add_result_to_report(uint8_t result, char *str){ // 65524) return false; + switch(type) + { + case 1: + + data = getE2PROMData(device,addr,type); + dtostrf(data, 5, 0, x_str ); +// uart_printf("data:%s\r\n",x_str); + sprintf( tail_report_str, " V%d\n",(char)data ); + + break; + + case 2: + + data = getE2PROMData(device,addr,type); + dtostrf(data, 5, 0, x_str ); +// uart_printf("data:%s\r\n",x_str); + sprintf( tail_report_str, " V%d\n",(int)data ); + break; + + case 4: + data = getE2PROMData(device,addr,type); + dtostrf(data, 5, 4, x_str ); +// uart_printf("data:%s\r\n",x_str); + sprintf( tail_report_str, " V%s\n",x_str ); + break; + + default: + return false; + break; + } + return true; + } + + + +} + +static bool uarm_cmd_m2212(char *payload){ + unsigned char device,type; + unsigned int addr; + char value[20]; + float eeprom_value; + int rtn; + if(rtn = sscanf(payload,"N%dA%dT%dV%[0-9.]",&device,&addr,&type,value)<4){ + DB_PRINT_STR("sscanf %d\r\n",rtn); + return false; + }else{ + if(device != 1) return false; + if(addr >65524) return false; + if( !read_float(value, NULL, &eeprom_value) ){ return false; } + switch(type) + { + case 1: + setE2PROMData(device,addr,type,eeprom_value); + break; + + case 2: + setE2PROMData(device,addr,type,eeprom_value); + break; + + case 4: + + setE2PROMData(device,addr,type,eeprom_value); + break; + default: + return false; + break; + } + delay_ms(3); + //uart_printf("N:%d A:%d T%d V:%s",device,addr,type,value); + return true; + } + + + +} + static void uarm_cmd_m2215(void){ /* int16_t write_size = 4096; unsigned int write_addr = 0; @@ -1062,11 +1157,21 @@ enum uarm_protocol_e uarm_execute_m_cmd(uint16_t cmd, char *line, uint8_t *char_ break; case 2211: //DB_PRINT_STR( "M2211\r\n" ); - return UARM_CMD_OK; + if(uarm_cmd_m2211(line) == true) + { + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } break; case 2212: //DB_PRINT_STR( "M2212\r\n" ); - return UARM_CMD_OK; + if(uarm_cmd_m2212(line) == true) + { + return UARM_CMD_OK; + }else{ + return UARM_CMD_ERROR; + } break; case 2213: //DB_PRINT_STR( "M2213\r\n" ); @@ -1367,6 +1472,47 @@ static void uarm_cmd_p2243(void){ get_angle_reg_value(&angle_reg_value); sprintf( tail_report_str, " B%d L%d R%d\n", angle_reg_value[2], angle_reg_value[0], angle_reg_value[1] ); } +bool uarm_cmd_p2244(void) +{ + char encoder_status=7; + encoder_status = check_encoder(CHANNEL_ARML)<<2|check_encoder(CHANNEL_ARMR)<<1|check_encoder(CHANNEL_BASE); + switch(encoder_status) + { + case 0: + sprintf( tail_report_str, " V%d\n", encoder_status); + return true; + break; + case 1: + sprintf( tail_report_str, " V%d\n", encoder_status); + return false; + break; + case 2: + sprintf( tail_report_str, " V%d\n", encoder_status); + return false; + break; + case 3: + sprintf( tail_report_str, " V%d\n", encoder_status); + return false; + break; + case 4: + sprintf( tail_report_str, " V%d\n", encoder_status); + return false; + break; + case 5: + sprintf( tail_report_str, " V%d\n", encoder_status); + return false; + break; + case 6: + sprintf( tail_report_str, " V%d\n", encoder_status); + return false; + break; + case 7: + sprintf( tail_report_str, " V%d\n", encoder_status); + return false; + break; + + } +} static void uarm_cmd_p2400(void){ sprintf( tail_report_str, " V%d\n", uarm.param.work_mode ); @@ -1456,6 +1602,13 @@ enum uarm_protocol_e uarm_execute_p_cmd(uint16_t cmd, char *line, uint8_t *char_ uarm_cmd_p2243(); return UARM_CMD_OK; break; + case 2244: + if(uarm_cmd_p2244()==true){ + return UARM_CMD_OK; + }else{ + return UARM_ENCODER_ERR0R; + } + break; case 2400: uarm_cmd_p2400(); return UARM_CMD_OK; diff --git a/src/uarm_protocol.h b/src/uarm_protocol.h index a763a47..ef41baa 100755 --- a/src/uarm_protocol.h +++ b/src/uarm_protocol.h @@ -15,6 +15,7 @@ enum uarm_protocol_e { UARM_CMD_ERROR = 50, UARM_COORD_ERROR, + UARM_ENCODER_ERR0R, }; struct protocol_private_t { diff --git a/src/uarm_swift.c b/src/uarm_swift.c index 43723c8..7e584af 100755 --- a/src/uarm_swift.c +++ b/src/uarm_swift.c @@ -32,6 +32,7 @@ void uarm_swift_init(void){ uart_printf( "work mode : %d\r\n", uarm.param.work_mode ); printString( "@1\n" ); + } diff --git a/src/uarm_swift.h b/src/uarm_swift.h index 1f54b6f..0045638 100755 --- a/src/uarm_swift.h +++ b/src/uarm_swift.h @@ -4,8 +4,9 @@ #include "uarm_common.h" + #if defined(UARM_MINI) - #define DEVICE_NAME "SwiftPro mini" + #define DEVICE_NAME "SwiftProMini" #elif defined(UARM_2500) #define DEVICE_NAME "uArm3Plus" #else @@ -13,7 +14,7 @@ #endif #define HARDWARE_VERSION hardware_version -#define SOFTWARE_VERSION "V4.6.0" +#define SOFTWARE_VERSION "V4.7.0" #define API_VERSION "V4.0.4" #define BLE_UUID bt_mac_addr From be08b9a877690907b3ce4fddfe2b99592ae14179 Mon Sep 17 00:00:00 2001 From: HuttonGe Date: Fri, 10 Jul 2020 14:24:44 +0800 Subject: [PATCH 70/74] Update 2020-07-10 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd4398e..ebbe399 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Swift Pro Firmware V4.6.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.7.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- ## Update Summary for v4.7.0 From 8a243e2a8eca2ca06658de3b64e8cdcea776f6ee Mon Sep 17 00:00:00 2001 From: TopGun Date: Mon, 10 Aug 2020 19:48:36 +0800 Subject: [PATCH 71/74] Fix angle limit error --- README.md | 9 +- doc/uArm Swift Pro Protocol V4.0.5_cn .pdf | Bin doc/uArm Swift Pro Protocol V4.0.5_en .pdf | Bin hex/uArm3Plus_V4.5.0_release_20190924.hex | 3953 ------------------- hex/uArmPro_V4.7.0_release_20200710.hex | 4128 -------------------- src/uarm_coord_convert.c | 32 +- src/uarm_swift.h | 6 +- 7 files changed, 27 insertions(+), 8101 deletions(-) mode change 100644 => 100755 doc/uArm Swift Pro Protocol V4.0.5_cn .pdf mode change 100644 => 100755 doc/uArm Swift Pro Protocol V4.0.5_en .pdf delete mode 100644 hex/uArm3Plus_V4.5.0_release_20190924.hex delete mode 100644 hex/uArmPro_V4.7.0_release_20200710.hex diff --git a/README.md b/README.md index ebbe399..0b2ba1f 100755 --- a/README.md +++ b/README.md @@ -1,12 +1,9 @@ -# Swift Pro Firmware V4.7.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.8.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- -## Update Summary for v4.7.0 +## Update Summary for v4.8.0 -* Add M2211 cmd to read external EEPROM -* Add M2212 cmd to write external EEPROM -* Add P2244 cmd to get the communication status of AS5600 -* Fix read bug of work mode +* Fix angle limit error ## Caution #### The current firmware is not perfect and will be updated periodically diff --git a/doc/uArm Swift Pro Protocol V4.0.5_cn .pdf b/doc/uArm Swift Pro Protocol V4.0.5_cn .pdf old mode 100644 new mode 100755 diff --git a/doc/uArm Swift Pro Protocol V4.0.5_en .pdf b/doc/uArm Swift Pro Protocol V4.0.5_en .pdf old mode 100644 new mode 100755 diff --git a/hex/uArm3Plus_V4.5.0_release_20190924.hex b/hex/uArm3Plus_V4.5.0_release_20190924.hex deleted file mode 100644 index 9ef0df1..0000000 --- a/hex/uArm3Plus_V4.5.0_release_20190924.hex +++ /dev/null @@ -1,3953 +0,0 @@ -:1000000065C5000084C5000082C5000080C50000F1 -:100010007EC500007CC500007AC5000078C50000E0 -:1000200076C500000C94D25A72C500000C94104999 -:100030006EC500006CC500006AC500000C949D559B -:1000400066C500000C94412A62C5000060C500002E -:100050005EC500005CC500005AC500000C94CC29A8 -:1000600056C500000C94A5300C94953150C5000085 -:100070004EC500004CC500004AC5000048C5000040 -:1000800046C5000044C5000042C500000C948755D9 -:100090000C943D300C9467313AC5000038C500001F -:1000A00036C5000034C5000032C5000030C5000070 -:1000B0002EC500000C944C552AC5000028C5000030 -:1000C00026C5000024C500000C9417550C94D52FAC -:1000D0000C9439311CC500000C946D2F0C940B311D -:1000E00016C500006E14D41ED41E7C149114A614E0 -:1000F000BB14D41EC414D41ED714D41EE614F0149A -:100100005015D41ED41ED41E071521153B15A31D52 -:10011000B31DE21DB31DE61DFD1DEC1DF61D211EC8 -:10012000281E331E3E1E5D1E5F1E621E641E1426A8 -:100130002D2646265F2678269B26B426A32DA92D9C -:10014000AC2DAF2DB32DBB2DC32D302E302E302E28 -:10015000CB2DCE2DD72DE02D302E302E302E302E23 -:10016000302E302EE82DF22DFE2D082E0B2E142EC3 -:100170001D2E232E8F549254815485548B54C95470 -:1001800096549A54A054A454A854AE54B254B6549D -:10019000C954BC54C054C454084AD73B3BCE016E2A -:1001A00084BCBFFDC12F3D6C74319ABD56833DDACE -:1001B0003D00C77F11BED9E4BB4C3E916BAAAABEDD -:1001C000000000803F072C7AA5BA6CC590DA3B93FB -:1001D00065FC8BBC53F810FD3C5692834DBD879D4A -:1001E0003AB63DCBC9BF5BBE73DA0FC93F05A84C19 -:1001F000CDB2D44EB93836A9020C50B991868808D0 -:100200003CA6AAAA2ABE000000803F0000407A1047 -:10021000F35A00A0724E18090010A5D4E80000E8B7 -:100220007648170000E40B54020000CA9A3B000015 -:1002300000E1F505000080969800000040420F00A4 -:100240000000A08601000000102700000000E80365 -:10025000000000006400000000000A000000000030 -:100260000100000000002C76D888DC674F0823DFEF -:10027000C1DFAE59E1B1B796E5E3E453C63AE651C2 -:10028000997696E8E6C28426EB898C9B62ED407CE9 -:100290006FFCEFBC9C9F40F2BAA56FA5F490055A85 -:1002A0002AF75C936B6CF9676DC11BFCE0E40D47AA -:1002B000FEF520E6B500D0ED902E030094357705CD -:1002C0000080841E080000204E0A000000C80C3385 -:1002D0003333330F986E12831141EF8D2114893B14 -:1002E000E65516CFFEE6DB18D1844B381BF77C1D94 -:1002F000901DA4BBE424203284725E228100C9F1E7 -:1003000024ECA1E53D276364696E6F7073757858BE -:100310005B00000020002300260029002C002F0095 -:100320003200000100000301060109010D0A003D31 -:1003300000244E005D0D0A005B302E396A2E3230EB -:100340003136303732363A005D0D0A005B544C4F7F -:100350003A005D0D0A002C005B4739323A005D0D12 -:100360000A002C003A003330003238005B47005D51 -:100370000D0A00205300204600205400204D380074 -:10038000204D3900204D3500204D3400204D3300E4 -:10039000204D3200204D3100204D300020473934AF -:1003A00000204739330020473931002047393000D9 -:1003B00020473230002047323100204731390020B9 -:1003C0004731380020473137002047004733382E67 -:1003D000004738300047330047320047310047308C -:1003E000005B00290D0A00206D617820747261762F -:1003F000656C2C206D6D0020616363656C2C206D35 -:100400006D2F7365635E3200206D617820726174B8 -:10041000652C206D6D2F6D696E002C2073746570D6 -:100420002F6D6D007A00790078002028003D0024AF -:10043000002028686F6D696E672070756C6C2D6F79 -:1004400066662C206D6D290D0A002028686F6D6985 -:100450006E67206465626F756E63652C206D7365D1 -:1004600063290D0A2432373D002028686F6D696EBC -:1004700067207365656B2C206D6D2F6D696E290D7E -:100480000A2432363D002028686F6D696E67206649 -:100490006565642C206D6D2F6D696E290D0A2432FF -:1004A000353D00290D0A2432343D002028686F6D47 -:1004B000696E672064697220696E76657274206D5A -:1004C00061736B3A002028686F6D696E67206379ED -:1004D000636C652C20626F6F6C290D0A2432333DEA -:1004E00000202868617264206C696D6974732C2027 -:1004F000626F6F6C290D0A2432323D002028736F21 -:100500006674206C696D6974732C20626F6F6C293E -:100510000D0A2432313D0020287265706F727420FC -:10052000696E636865732C20626F6F6C290D0A24F5 -:1005300032303D00202861726320746F6C657261F7 -:100540006E63652C206D6D290D0A2431333D00202A -:10055000286A756E6374696F6E206465766961746C -:10056000696F6E2C206D6D290D0A2431323D0029F2 -:100570000D0A2431313D0020287374617475732095 -:100580007265706F7274206D61736B3A0020287011 -:10059000726F62652070696E20696E766572742C68 -:1005A00020626F6F6C290D0A2431303D0020286CC9 -:1005B000696D69742070696E7320696E76657274F6 -:1005C0002C20626F6F6C290D0A24363D00202873A1 -:1005D00074657020656E61626C6520696E76657207 -:1005E000742C20626F6F6C290D0A24353D00290D93 -:1005F0000A24343D00202864697220706F727420D0 -:10060000696E76657274206D61736B3A00290D0A0C -:1006100024333D0020287374657020706F7274203D -:10062000696E76657274206D61736B3A0020287371 -:100630007465702069646C652064656C61792C2038 -:100640006D736563290D0A24323D0020287374659B -:10065000702070756C73652C2075736563290D0AA5 -:1006600024313D0024303D0024242028766965771C -:10067000204772626C2073657474696E6773290D0C -:100680000A2423202876696577202320706172610F -:100690006D6574657273290D0A2447202876696593 -:1006A0007720706172736572207374617465290DAF -:1006B0000A2449202876696577206275696C642070 -:1006C000696E666F290D0A244E20287669657720A9 -:1006D0007374617274757020626C6F636B73290D33 -:1006E0000A24783D76616C756520287361766520F3 -:1006F0004772626C2073657474696E67290D0A24F1 -:100700004E783D6C696E6520287361766520737440 -:10071000617274757020626C6F636B290D0A2443DB -:100720002028636865636B2067636F6465206D6F65 -:100730006465290D0A245820286B696C6C20616C53 -:1007400061726D206C6F636B290D0A24482028723A -:10075000756E20686F6D696E67206379636C6529BB -:100760000D0A7E20286379636C652073746172744E -:10077000290D0A2120286665656420686F6C64294C -:100780000D0A3F202863757272656E742073746160 -:10079000747573290D0A6374726C2D782028726544 -:1007A000736574204772626C290D0A0000002100F5 -:1007B000240027002A002D00300033000101000032 -:1007C000040107010A010D0A00496E76616C696433 -:1007D0002067636F64652049443A00556E6465661E -:1007E000696E656420666565642072617465004D9C -:1007F0006F64616C2067726F75702076696F6C61D1 -:1008000074696F6E00486F6D696E67206E6F74203B -:10081000656E61626C656400416C61726D206C6F25 -:10082000636B004E6F742069646C650045455052DF -:100830004F4D2072656164206661696C2E2055738E -:10084000696E672064656661756C74730056616CCF -:100850007565203C2033207573656300536574749F -:10086000696E672064697361626C65640056616CCF -:100870007565203C203000496E76616C6964207398 -:10088000746174656D656E7400426164206E756D8F -:1008900062657220666F726D617400457870656381 -:1008A00074656420636F6D6D616E64206C65747433 -:1008B0006572006572726F723A20006F6B0D0A00EC -:1008C0000D0A00486F6D696E67206661696C0050A3 -:1008D000726F6265206661696C0041626F7274209C -:1008E000647572696E67206379636C6500536F6627 -:1008F00074206C696D69740048617264206C696D64 -:10090000697400414C41524D3A20003E0D0A002CC2 -:100910004C696D3A002C52583A002C4275663A00E8 -:100920002C002C57506F733A002C002C4D506F73D5 -:100930003A003C446F6F72003C436865636B003C57 -:10094000416C61726D003C486F6D65003C486F6C96 -:1009500064003C52756E003C49646C65005D0D0A94 -:1009600000526573746F72696E67206465666175A5 -:100970006C74730050676D20456E64004368656356 -:100980006B20446F6F720044697361626C65640030 -:10099000456E61626C65640043617574696F6E3A9F -:1009A00020556E6C6F636B656400272448277C2795 -:1009B00024582720746F20756E6C6F636B0052652E -:1009C00073657420746F20636F6E74696E75650053 -:1009D0005B005D0D0A003A002C005B5052423A0069 -:1009E00000002200250028002B002E0031003400DA -:1009F00002010000050108010B01050505050705B9 -:100A000008080808020202020A0A0808040404048A -:100A100001010101010101010303030303030303B6 -:100A2000040707070C0C0C0C0C0C0C0C0202020245 -:100A300006060606060606060B0B0B0B0B0B0B0B2E -:100A400001021020200808102040102040800201E0 -:100A500002010804020101020408102040808040C5 -:100A600020100804020180040201804020100804C4 -:100A70000201080402010102040810204080010262 -:100A800004081020408000000A0B02090C0D0E081B -:100A90000703040100000000000000000000000047 -:100AA0000000000000000000000000000000000046 -:100AB0000000121110000000000000000000000003 -:100AC00000000000000000000000000011241FBE14 -:100AD000CFEFD1E2DEBFCDBF00E00CBF14E0A0E05D -:100AE000B2E0EEE4F4EF00E00BBF02C007900D921D -:100AF000AC3AB107D9F725E1ACEAB4E001C01D92E8 -:100B0000AC39B207E1F70E94C15D0C94257A78CA2E -:100B10002F923F924F925F926F927F928F929F920D -:100B2000AF92BF92CF92DF92EF92FF920F931F93FB -:100B3000CF93DF93CDB7DEB7C85CD1090FB6F89479 -:100B4000DEBF0FBECDBFC754DF4F99838883C95B1B -:100B5000D04089E3E4E2F5E1DF011D928A95E9F7EF -:100B60008AE0EDE5F5E1A5E2B5E101900D928A9507 -:100B7000E1F7FE01E756FF4F1082CD54DF4F198297 -:100B80001882C35BD040C155DF4F19821882CF5AFB -:100B9000D040C154DF4F1882CF5BD040C655DF4FE5 -:100BA0001882CA5AD040C255DF4F1882CE5AD04060 -:100BB000E859F109C456DF4FF983E883CC59D04096 -:100BC0009E01235A3F4FC256DF4F39832883CE59A7 -:100BD000D040CE018F5A9F4FC056DF4F99838883F4 -:100BE000C05AD040DE01A959BF4FCE55DF4FB9835F -:100BF000A883C25AD040E059FF4FCC55DF4FF9834C -:100C0000E883C45AD0409C01285F3F4FCD53DF4F4B -:100C100039832883C35CD040C756DF4F8881C959C8 -:100C2000D040C754DF4FE881F981C95BD040E80F5D -:100C3000F11D1081112311F40C94B3159FEB910F4A -:100C40009A3110F00C94C61E8F5FC756DF4F888311 -:100C5000C959D040AE014B565F4FBE0167567F4F1A -:100C6000C754DF4F88819981C95BD0400E94D0551D -:100C7000882311F40C94C81ECB56DF4FC880D9804E -:100C8000EA80FB80C559D040C701B6010E9433738A -:100C90000E94A070CB54DF4F688379838A839B8343 -:100CA000C55BD040CB54DF4F48805980C55BD040F6 -:100CB000B20180E090E00E94CC709B01AC01C701C2 -:100CC000B6010E94526F20E030E048EC52E40E94EE -:100CD00085724B015C0120E030E0A9010E944A725C -:100CE00020E030E040E05FE387FD05C0C501B401CE -:100CF0000E94536F04C0C501B4010E94526F0E944C -:100D00009B701B011D3411F40C942F0F24F4173425 -:100D100061F00C945B14103511F40C94C50F13356D -:100D200011F40C94E7130C945B14C756DF4F8881C1 -:100D3000C959D040C754DF4FA881B981C95BD040A1 -:100D4000A80FB11DCD01BAE94B16B8E05B0609F456 -:100D500016C160F4F4ED4F16F7E05F06D1F029E913 -:100D6000421628E0520609F440C0FAC53DE9431690 -:100D700038E0530609F451C3AEE94A16A8E05A0612 -:100D800009F436C5BCE94B16B8E05B0609F0E8C5C6 -:100D900049C21A821982E1E0F0E0EC0FFD1FFF93D7 -:100DA000EF932FE434E03F932F939F938F930E9410 -:100DB000F9730F900F900F900F900F900F901816DF -:100DC00019060CF03BC589819A8190938B10809312 -:100DD0008A1011E01093920D8091160D811148C573 -:100DE0000E94153E1093160D43C58E010B5E1F4FDA -:100DF0001F930F939E01275D3F4F3F932F937E01DB -:100E0000FDE3EF0EF11CFF92EF92CF55DF4F2881EB -:100E1000C15AD0402F93C056DF4F3881C05AD040BE -:100E20003F9329E132E03F932F939F938F930E944A -:100E3000F9730FB6F894DEBF0FBECDBF04970CF464 -:100E4000FDC4EF961CAE1DAE1EAE1FAEEF97E5962D -:100E50001CAE1DAE1EAE1FAEE597AB961CAE1DAE12 -:100E60001EAE1FAEAB97A1961CAE1DAE1EAE1FAE42 -:100E7000A1978CE0C456DF4FE881F981CC59D0406E -:100E800011928A95E9F7AE0145585F4F60E070E036 -:100E9000CE018F5A9F4F0E94D055882309F4E8C491 -:100EA000AE014F585F4F60E070E0C7010E94D0551F -:100EB000882309F4DDC4AE0149595F4F60E070E05A -:100EC000CE0189960E94D055882309F4D1C4AE0181 -:100ED000435A5F4F60E070E0C8010E94D0558823FC -:100EE00009F4C6C420E030E044EB52E4E5966CAD72 -:100EF0007DAD8EAD9FADE5970E94526F21EE3EE233 -:100F000045E652E40E9433706B017C01E5966CAFBC -:100F10007DAF8EAF9FAFE5970E943070EF968CAC9F -:100F20009DACAEACBFACEF97A50194010E94857259 -:100F300069837A838B839C83C701B6010E94E87220 -:100F40009B01AC01C501B4010E9485726D837E8353 -:100F50008F839887AB968CAD9DADAEADBFADAB9793 -:100F600089879A87AB87BC87A1962CAD3DAD4EADE6 -:100F70005FADA19700E0BE016F5F7F4F37C46596FC -:100F80001CAE1DAE1EAE1FAE659721961CAE1DAEEB -:100F90001EAE1FAE219721E030E02C0F3D1F3F9386 -:100FA0002F938E010B5E1F4F1F930F93C156DF4F80 -:100FB0003881CF59D0403F93C256DF4FA881CE59D8 -:100FC000D040AF9322E432E03F932F939F938F93CF -:100FD0000E94F9730FB6F894DEBF0FBECDBF039722 -:100FE0000CF42CC4AE014F5A5F4F60E070E0C801B2 -:100FF0000E94D055882309F43BC4AE01435C5F4F87 -:1010000060E070E0CE0101960E94D055882309F47B -:101010002FC43E01F9E26F0E711C8CE0D3011D92CA -:101020008A95E9F76091790D70917A0D80917B0D29 -:1010300090917C0D0E94CE7024EE38E34EE553E48F -:101040000E94337020916D0D30916E0D40916F0DA7 -:101050005091700D0E94536FCA55DF4F688379839A -:101060008A839B83C65AD04060917D0D70917E0D1E -:1010700080917F0D9091800D0E94CE7024EE38E318 -:101080004EE553E40E9433702091710D3091720D42 -:101090004091730D5091740D0E94536FC554DF4FF2 -:1010A000688379838A839B83CB5BD0406091810D79 -:1010B0007091820D8091830D9091840D0E94CE706D -:1010C00024EE38E34EE553E40E9433706B017C015B -:1010D00020E030E044EB52E46091750D7091760DA4 -:1010E0008091770D9091780D0E94526F9B01AC0119 -:1010F000C701B6010E94536F7B018C016F968EADC4 -:101100009FAD6F978130910509F450C00CF03FC03E -:10111000892B09F0A0C320E030E044EB52E465964F -:101120006CAD7DAD8EAD9FAD65970E94526F65969B -:101130006CAF7DAF8EAF9FAF6597FE01F1964F010B -:101140009E01235D3F4F5901DE0199966D017B01A0 -:101150008C01C554DF4F288139814A815B81CB5B8B -:10116000D040CA55DF4F688179818A819B81C65AF8 -:10117000D0400E947644A401B501C6010E94684295 -:1011800021962CAD3DAD4EAD5FAD2197E2C38230CF -:10119000910519F1039709F05EC365966CAD7DADBD -:1011A0008EAD9FAD65970E94F03E62C365966CADB3 -:1011B0007DAD8EAD9FAD6597FE01F1964F019E010D -:1011C000235D3F4F59016301C554DF4F28813981A9 -:1011D0004A815B81CB5BD04015C065962CAD3DAD9F -:1011E0004EAD5FAD6597CE01C1964C01DE019D9677 -:1011F0005D016301CA55DF4F688179818A819B81D6 -:10120000C65AD0400E947644A401B501C3010E9491 -:10121000684221962CAD3DAD4EAD5FAD219700E00B -:10122000B30199C38E010B5E1F4F1F930F937E0175 -:10123000B9E2EB0EF11CFF92EF926E01EDE3CE0EE0 -:10124000D11CDF92CF92CF55DF4FF881C15AD040E9 -:10125000FF93C056DF4F2881C05AD0402F932AE514 -:1012600032E03F932F939F938F930E94F9730FB6B1 -:10127000F894DEBF0FBECDBF04970CF4DFC2EF962B -:101280001CAE1DAE1EAE1FAEEF97E5961CAE1DAE9A -:101290001EAE1FAEE597AB961CAE1DAE1EAE1FAECA -:1012A000AB97A1961CAE1DAE1EAE1FAEA197AE01B0 -:1012B00045585F4F60E070E0CE018F5A9F4F0E940B -:1012C000D055882309F4D4C2AE014F585F4F60E077 -:1012D00070E0C6010E94D055882309F4C9C2AE014E -:1012E00049595F4F60E070E0C7010E94D0558823E4 -:1012F00009F4BEC2AE01435A5F4F60E070E0C8011E -:101300000E94D055882309F4B3C26091810D709179 -:10131000820D8091830D9091840D0E94CE70CA55EC -:10132000DF4F688379838A839B83C65AD04060915C -:101330007D0D70917E0D80917F0D9091800D0E94AA -:10134000CE70C554DF4F688379838A839B83CB5BE0 -:10135000D0406091790D70917A0D80917B0D9091C4 -:101360007C0D0E94CE70FE0139964F019E012B5FCD -:101370003F4F5901DE0111966D01CA55DF4FE880DC -:10138000F9800A811B81C65AD040C554DF4F28819D -:1013900039814A815B81CB5BD0400E945A45A401D0 -:1013A000B501C6010E946842EF962CAD3DAD4EAD31 -:1013B0005FADEF9769817A818B819C810E94536F29 -:1013C00069837A838B839C83E5962CAD3DAD4EADCE -:1013D0005FADE5976D817E818F8198850E94536F07 -:1013E0006D837E838F839887AB962CAD3DAD4EADDC -:1013F0005FADAB9769857A858B859C850E94536F1D -:1014000069877A878B879C87A1962CAD3DAD4EADC1 -:101410005FADA19700E0B601E9C1C156DF4FB881C9 -:10142000CF59D040BF93C256DF4FE881CE59D0404C -:10143000EF93CD55DF4FF881C35AD040FF93CE557F -:10144000DF4F2881C25AD0402F93CB55DF4F3881D0 -:10145000C55AD0403F93CC55DF4FA881C45AD040E5 -:10146000AF938E0105581F4F1F930F9329E132E070 -:101470003F932F939F938F930E94F9730FB6F89425 -:10148000DEBF0FBECDBF04970CF4D8C1CF56DF4FDF -:10149000188219821A821B82C159D040C357DF4F6C -:1014A000188219821A821B82CD58D040C757DF4F4D -:1014B000188219821A821B82C958D040CB57DF4F3D -:1014C000188219821A821B82C558D0408CE0C056FF -:1014D000DF4FA881B981C05AD0401D928A95E9F7A3 -:1014E000AE014F565F4F60E070E0C8010E94D055DA -:1014F000882309F4BDC1AE0143575F4F60E070E03F -:10150000CE018F589F4F0E94D055882309F4B0C157 -:10151000AE0147575F4F60E070E0CE0189599F4FA1 -:101520000E94D055882309F4A3C1AE014B575F4FE9 -:1015300060E070E0CE01835A9F4F0E94D05588230F -:1015400009F496C16091810D7091820D8091830D97 -:101550009091840D0E94CE70CA55DF4F68837983C5 -:101560008A839B83C65AD04020E030E044EB52E4AB -:101570006091750D7091760D8091770D9091780D39 -:101580000E94526F6B017C0124EE38E34EE553E478 -:10159000CA55DF4F688179818A819B81C65AD040C4 -:1015A0000E9433709B01AC01C701B6010E94536FCA -:1015B000C554DF4F688379838A839B83CB5BD0409C -:1015C00060917D0D70917E0D80917F0D9091800DC9 -:1015D0000E94CE70CB53DF4F688379838A839B83CD -:1015E000C55CD0406091790D70917A0D80917B0D32 -:1015F00090917C0D0E94CE70CD53DF4F88809980F2 -:10160000C35CD040F1E56F2E712C6C0E7D1EB4E0F2 -:101610006B0E711C5301FE01EF5AFF4F6F01CA554B -:10162000DF4FE880F9800A811B81C65AD040CB5336 -:10163000DF4F288139814A815B81C55CD0400E949F -:101640005A45CD53DF4F48815981C35CD040B30127 -:10165000C6010E94684265966CAD7DAD8EAD9FADB2 -:1016600065976996CCACDDACEEACFFAC69979B019D -:10167000AC010E9485724B015C01A7019601C70174 -:10168000B6010E9485729B01AC01C501B4010E94A4 -:10169000536F0E94F272CF56DF4F288139814A8101 -:1016A0005B81C159D0400E94536F6B017C01CF56C2 -:1016B000DF4F688379838A839B83C159D040C357A6 -:1016C000DF4F288139814A815B81CD58D040C55494 -:1016D000DF4F688179818A819B81CB5BD0400E94FA -:1016E000536F21EE3EE245E652E40E943370CA5544 -:1016F000DF4F688379838A839B83C65AD0400E94D8 -:1017000030709B01AC01C701B6010E9485724B018C -:101710005C0165966CAF7DAF8EAF9FAF6597CA5584 -:10172000DF4F688179818A819B81C65AD0400E94AF -:10173000E8729B01AC01C701B6010E9485726996EF -:101740006CAF7DAF8EAF9FAF6997C757DF4F2881D2 -:1017500039814A815B81C958D0406D966CAD7DADB1 -:101760008EAD9FAD6D970E94536F6D966CAF7DAF40 -:101770008EAF9FAF6D978E01035C1F4F24E045E055 -:10178000C501B4010E94D76C69966CAD7DAD8EAD7C -:101790009FAD69970451110924E045E00E94D76C80 -:1017A0006D966CAD7DAD8EAD9FAD6D9704511109F9 -:1017B00024E045E00E94D76CCF56DF4F68817981E5 -:1017C0008A819B81C159D0400451110924E045E030 -:1017D0000E94D76CCB57DF4F288139814A815B81CA -:1017E000C558D04000E0BE016F5A7F4F81E0B4C0C1 -:1017F00021E030E02C0F3D1F3F932F938E010B5EB5 -:101800001F4F1F930F937E0139E2E30EF11CFF92ED -:10181000EF926E01ADE3CA0ED11CDF92CF9223E8A6 -:1018200032E03F932F939F938F930E94F9730FB6EB -:10183000F894DEBF0FBECDBF049784F41F9281E001 -:101840008F938DE092E09F938F930E94AF330F9020 -:101850000F900F900F9082E390E084C0AE01455846 -:101860005F4F60E070E0C6010E94D055811103C057 -:1018700080E090E077C0AE014F585F4F60E070E0CD -:10188000C7010E94D055882399F3AE0149595F4F93 -:1018900060E070E0C8010E94D055882349F3AE0192 -:1018A000435A5F4F60E070E0CE0101960E94D05530 -:1018B0008823F1F220E030E044EB52E4EF966CAD87 -:1018C0007DAD8EAD9FADEF970E94526F7B018C0175 -:1018D000EF966CAF7DAF8EAF9FAFEF978CE0C056A9 -:1018E000DF4FA881B981C05AD0401D928A95E9F78F -:1018F000AB962CAD3DAD4EAD5FADAB97E5966CAD07 -:101900007DAD8EAD9FADE597CD53DF4F888099803B -:10191000C35CD040E1E56E2E712C6C0E7D1EB4E0F0 -:101920006B0E711C5301FE01EF5AFF4F6F010E94B5 -:101930007644CD53DF4F48815981C35CD040B30119 -:10194000C6010E946842A1962CAD3DAD4EAD5FAD83 -:10195000A19700E0B60180E00E94BA5690E002C074 -:1019600081E090E09C01215031092230310510F0D6 -:101970000C942F1FF8E24F16510409F414C280F59D -:1019800034E14316510498F481E14816510408F0FB -:1019900061C194E04916510409F474C008F4E3C02D -:1019A000BAE04B16510409F45EC00C94D41EECE16D -:1019B0004E16510409F457C038F426E1421651047A -:1019C00008F4A2C10C94D41E3EE14316510409F45C -:1019D0004AC086E24816510409F4C5C00C94D41ECE -:1019E0009DE34916510409F4D3C110F5B5E34B1634 -:1019F000510409F447C060F4FBE24F16510409F4A6 -:101A000095C121E34216510409F490C10C94D41EEF -:101A10003CE34316510410F00C94D41ECB54DF4F1A -:101A20008881C55BD040865380932B15A9E0AAC15D -:101A30008CE54816510460F49AE54916510408F003 -:101A40001FC1A0E54A16510409F49BC00C94D41E92 -:101A5000BCE54B16510439F0EFE54E16510408F47D -:101A60003CC10C94D41E2114310411F00C94E81ED6 -:101A7000C255DF4FF881CE5AD040FF2309F445C04C -:101A80000C94CA1E2CE14216510491F148F484E0F2 -:101A90004816510479F09AE049165104E1F08AC1E0 -:101AA000AEE14A165104D9F1B5E34B16510409F4DD -:101AB00056C080C181E054C0BFE14B16510408F00C -:101AC00042C0EAE04E16510441F4E1E0C255DF4F56 -:101AD000E883CE5AD04082E043C0FCE14F16510467 -:101AE00009F078C1F1E0C255DF4FF883CE5AD040FB -:101AF0002114310441F02AE02216310411F00C9433 -:101B0000D41E84E010C083E00EC0AEE14A1651043A -:101B100099F631E0C255DF4F3883CE5AD0402114B8 -:101B2000310449F485E080932415CA55DF4F1882AB -:101B3000C65AD0405AC18AE02816310411F00C94DC -:101B4000D41E86E0F0CF25E34216510411F00C9428 -:101B5000141F91E0C255DF4F9883CE5AD04087E0E2 -:101B60008093241527C1C255DF4FE881CE5AD0405B -:101B7000E1110C94CA1EF2E0C255DF4FF883CE5A31 -:101B8000D04022E04216510419F158F44114510496 -:101B9000D9F04A94452809F013C181E080932515B6 -:101BA0000FC196E249165104C1F0A0E54A1651044E -:101BB00009F44BC0B3E04B16510409F001C183E0B6 -:101BC0008093251531E09AC010922515E1E0ECC014 -:101BD00082E08093251521E088C08EE1281631042B -:101BE00001F180F4A4E12A16310411F00C94D41E02 -:101BF00084E080932515F1E0CA55DF4FF883C65A7B -:101C0000D040F3C0B8E22B163104A9F0E2E32E165F -:101C1000310411F00C94D41E87E08093251581E0E7 -:101C200039C085E08093251521E0CA55DF4F288310 -:101C3000C65AD040DAC086E08093251531E0CA55F7 -:101C4000DF4F3883C65AD040D0C088E08093251536 -:101C500091E062C0A2E14A16510441F0B3E14B1693 -:101C6000510449F010922915E2E09EC081E0809372 -:101C70002915F2E0A6C082E08093291522E035C044 -:101C800021143104B9F43AE54316510449F4109291 -:101C9000281583E0CA55DF4F8883C65AD040A5C0B7 -:101CA00081E08093281593E0CA55DF4F9883C65A88 -:101CB000D0409BC0AAE02A16310411F00C94D41E27 -:101CC000BAE54B16510411F40C94D41EE4E0CA5545 -:101CD000DF4FE883C65AD04088C0FDE54F16510457 -:101CE00051F481E08093261525E0CA55DF4F288303 -:101CF000C65AD0406BC01092261535E0CA55DF4F4A -:101D00003883C65AD04062C084E14816510451F469 -:101D100081E08093271596E0CA55DF4F9883C65A15 -:101D2000D04054C010922715A6E02CC0C255DF4FFA -:101D3000B881CE5AD040B1110C94CA1EE1E34E16C0 -:101D4000510451F410922A15F8E0CA55DF4FF88378 -:101D5000C65AD04023E044C03AE02316310411F0C3 -:101D60000C94D41E81E080932A1588E0CA55DF4F79 -:101D70008883C65AD04093E0C255DF4F9883CE5A2D -:101D8000D04033C0CA55DF4FA883C65AD0401EC0CA -:101D9000232811F00C94D41EBAE0CA55DF4FB88343 -:101DA000C65AD04022C0E7E0CA55DF4FE883C65A82 -:101DB000D0400CC0CA55DF4F1882C65AD04006C06A -:101DC000F1E0CA55DF4FF883C65AD040232869F0A6 -:101DD0000C94FB1ECA55DF4F1882C65AD04021E032 -:101DE000C255DF4F2883CE5AD040C155DF4FE8811E -:101DF000F981CF5AD040CF01A0E0B0E0CA55DF4F03 -:101E00000880C65AD04004C0B695A7959795879587 -:101E10000A94D2F780FF03C085E10C942F1F81E064 -:101E200090E0A0E0B0E0CA55DF4F0880C65AD0402D -:101E300004C0880F991FAA1FBB1F0A94D2F7C1556F -:101E4000DF4F28813981CF5AD040282B392BC155FB -:101E5000DF4F39832883CF5AD0400C940C06672B70 -:101E600011F00C94FB1EC756DF4F8881C959D04032 -:101E7000C754DF4F68817981C95BD040680F711DFD -:101E8000AE0147565F4FCB54DF4F88819981C55BC8 -:101E9000D0400E94491F9C01215031092230310558 -:101EA00010F00C942F1F36E04316510428F483E001 -:101EB0004816510490F026C098E04916510410F4D9 -:101EC0000C94D41EAAE04A16510408F440C0BEE1A6 -:101ED0004B16510411F00C94D41EE2E04E1651043E -:101EE00061F0FEE14F16510441F0452809F046C06B -:101EF00081E080932C152BE032C082E080932C157A -:101F00003BE036C084E04816510471F095E0491674 -:101F10005104A1F081E080932E15ACE0CA55DF4F4B -:101F2000A883C65AD04022C482E080932E15BCE01C -:101F3000CA55DF4FB883C65AD04018C410922E1528 -:101F4000ECE0CA55DF4FE883C65AD0400FC4F9E031 -:101F50004F16510451F082E080932D152DE0CA55A3 -:101F6000DF4F2883C65AD04001C410922D153DE0A2 -:101F7000CA55DF4F3883C65AD040F8C38BE0CA55E4 -:101F8000DF4F8883C65AD040F1C3672B11F00C9401 -:101F9000FB1EC756DF4F8881C959D040C754DF4F59 -:101FA000E881F981C95BD040E80FF11D27EB4216AB -:101FB00028E0520609F4E7C208F05EC18CE9481631 -:101FC00088E0580609F499C108F076C0A9E94A16D4 -:101FD000A8E05A0609F48BC108F05FC0E8E94E1684 -:101FE000E8E05E0609F0B8C384E16E0199E2C90E2B -:101FF000D11CD601E82F1D92EA95E9F77E01F5E1A3 -:10200000EF0EF11CD701E82F1D92EA95E9F7C456AF -:10201000DF4FA881B981CC59D0401D928A95E9F74C -:1020200080E090E00E940147CB54DF4F68837983C2 -:102030008A839B83C55BD04081E090E00E9401478A -:102040002B013C0182E090E00E9401474B015C01C2 -:10205000860124E045E0CB54DF4F688179818A8195 -:102060009B81C55BD0400E94D76C870124E045E08E -:10207000C301B2010E94D76C0451110924E045E06C -:10208000C501B4010E94D76CFF92EF92DF92CF920C -:102090001F930F938CEA92E03DC3FAE94F16F8E0E4 -:1020A0005F0609F427C12BE9421628E0520609F021 -:1020B00053C389EC92E023C13EE9431638E053064E -:1020C00009F427C108F420C19CEA491698E0590692 -:1020D00009F4B5C1ADEA4A16A8E05A0609F03CC3B6 -:1020E000A1961CAE1DAE1EAE1FAEA19765961CAE8E -:1020F0001DAE1EAE1FAE659721961CAE1DAE1EAE68 -:102100001FAE219784E1DE019996C656DF4FB98351 -:10211000A883CA59D040E82F1D92EA95E9F71E011D -:10212000F5E12F0E311CD101E82F1D92EA95E9F758 -:10213000C456DF4FA881B981CC59D0401D928A95F1 -:10214000E9F780E090E00E940147CB54DF4F6883BD -:1021500079838A839B83C55BD04081E090E00E94B5 -:102160000147C554DF4F688379838A839B83CB5BA8 -:10217000D04082E090E00E94014720E030E044EB54 -:1021800052E40E94526F2B013C01FE01FD964F016B -:102190009E012F5A3F4F5901CE01835A9F4F6C0128 -:1021A00083017201C554DF4F288139814A815B81E7 -:1021B000CB5BD040CB54DF4F688179818A819B8192 -:1021C000C55BD0400E947644A401B501C6010E94BF -:1021D0006842A1966CAD7DAD8EAD9FADA197659621 -:1021E000CCACDDACEEACFFAC65979B01AC010E94C2 -:1021F00085724B015C01A7019601C701B6010E94DF -:1022000085729B01AC01C501B4010E94536F0E940D -:10221000F2728E01075D1F4F24E045E00E94D76CEB -:1022200020E030E044EB52E4C301B2010E94536F5E -:10223000810124E045E00E94D76C21966CAD7DAD14 -:102240008EAD9FAD21970451110924E045E00E9415 -:10225000D76C1F930F933F922F92C556DF4FB881D3 -:10226000CB59D040BF93C656DF4FE881CA59D04002 -:10227000EF938BEE92E04EC2B0EC4B16B8E05B06EB -:1022800009F4ADC1D0F439EB431638E0530609F434 -:1022900091C108F484C19AEB491698E0590609F4F3 -:1022A00091C1ABEB4A16A8E05A0609F055C28091DD -:1022B000020185FB882780F990C1B2EC4B16B8E08B -:1022C0005B0609F4FDC108F4CCC133EC431638E0D9 -:1022D000530609F407C280E6481689E0580609F05B -:1022E0003BC28091600D8F9380915F0D21C28AEB7C -:1022F00092E005C08CE890E102C080ED92E09F93EF -:102300008F9384EC92E017C28AE19DE09F938F93B4 -:1023100093C080818E3409F0C8C18181805384309C -:1023200008F0C3C194E16E013DE3C30ED11CD60198 -:10233000E92F1D92EA95E9F77E01F9E2EF0EF11C13 -:10234000D701E92F1D92EA95E9F75E01F5E1AF0E9D -:10235000B11CD501E92F1D92EA95E9F7C456DF4F6C -:10236000A881B981CC59D0401D929A95E9F7823065 -:10237000E1F0833031F1813061F082E090E00E9441 -:102380000147850124E045E00E94D76CBF92AF92DF -:1023900053C080E090E00E940147860124E045E0C0 -:1023A0000E94D76CDF92CF9247C081E090E00E94FC -:1023B0000147870124E045E00E94D76CFF92EF922D -:1023C0003BC080915F0D9091600D0497029748F497 -:1023D000609186107091871080918810909189107B -:1023E00022C020E030E040E05FE3609100027091A5 -:1023F000010280910202909103020E94526F20E03C -:1024000030E040E05FE30E94857220E030E044E38A -:1024100053E40E9485729B01AC0160E070E084E3AC -:1024200093E40E94526F8E010F5F1F4F24E045E03E -:102430000E94D76C1F930F9387ED92E07CC1A19609 -:102440001CAE1DAE1EAE1FAEA19765961CAE1DAE96 -:102450001EAE1FAE659721961CAE1DAE1EAE1FAE02 -:10246000219784E19E01275D3F4FC656DF4F398398 -:102470002883CA59D040D901E82F1D92EA95E9F77F -:102480001E01F5E12F0E311CD101E82F1D92EA95B6 -:10249000E9F7C456DF4FA881B981CC59D0401D92CD -:1024A0008A95E9F780E090E00E9401472B013C010A -:1024B00081E090E00E940147CB54DF4F688379832D -:1024C0008A839B83C55BD04082E090E00E940147F5 -:1024D00020E030E044EB52E40E94526FFE01FD9692 -:1024E0004F019E012F5A3F4F5901DE01A35ABF4FA2 -:1024F0006D017B018C01CB54DF4F288139814A81EA -:102500005B81C55BD040C301B2010E947644A40147 -:10251000B501C6010E946842A1966CAD7DAD8EAD3D -:102520009FADA1978E01075D1F4F24E045E00E94FB -:10253000D76C65966CAD7DAD8EAD9FAD6597810115 -:1025400024E045E00E94D76C21966CAD7DAD8EAD48 -:102550009FAD21970451110924E045E00E94D76CFA -:102560001F930F933F922F92C556DF4FF881CB599F -:10257000D040FF93C656DF4F2881CA59D0402F93D1 -:102580008DED92E0C7C0A49B11C08FE30E94F85468 -:102590008A30910558F08734910550F005C047996D -:1025A00005C00898009B04C081E017C080E015C0FA -:1025B00082E013C082B386958695869591E089273F -:1025C00081700BC08BE30E94F85421E085369105A1 -:1025D00008F420E01F922F93ACC01F92A9C081E0A5 -:1025E00090E08C0F9D1F9F938F9389EF92E09F93B4 -:1025F0008F93FF93EF930E94F9730F900F900F90BA -:102600000F900F900F90181619060CF041C02981F9 -:102610003A812634310508F048C0F901EA57F54FF0 -:102620008491F901E05CF54F1491F901E650F64F01 -:102630000491002391F081110E947454E02FF0E086 -:10264000EE0FFF1FEE5EFC4FA591B491EC911E239F -:1026500081E090E021F480E002C080E090E09F9370 -:1026600067C0A1E0B0E0AC0FBD1FBF93AF9389EF8F -:1026700092E09F938F93FF93EF930E94F9730F90D3 -:102680000F900F900F900F900F901816190684F06E -:102690001F9281E08F938DE092E09F938F930E9431 -:1026A000AF330F900F900F900F9082E390E056C0E1 -:1026B00089819A8180319105C0F70E94F854CFCF6B -:1026C00080915E0D8F9380915D0D8F9380915C0D55 -:1026D0008F9380915B0D8F9380915A0D8F93809192 -:1026E000590D15C080E090E00E94AF46182F092FC9 -:1026F00081E090E00E94AF46F82EE92E82E090E063 -:102700000E94AF46EF92FF920F931F939F938F9378 -:102710008DEF92E09F938F9387E29DE09F938F933D -:102720000E94CB730FB6F894DEBF0FBECDBF11C0B1 -:102730008F9383EB93E09F938F9387E29DE09F932A -:102740008F930E94CB730F900F900F900F900F906C -:102750000F9080E090E002C081E090E09C01215069 -:1027600031092230310510F00C942F1FC155DF4F75 -:10277000E881F981CF5AD040CF01A0E0B0E0CA553E -:10278000DF4F0880C65AD04004C0B695A7959795EC -:1027900087950A94D2F780FD3FCB81E090E0A0E0DE -:1027A000B0E0CA55DF4F0880C65AD04004C0880F39 -:1027B000991FAA1FBB1F0A94D2F7E82BF92BC1550A -:1027C000DF4FF983E883CF5AD0400C940C06672B77 -:1027D00011F00C94FB1EF8EE4F16F3E05F0641F08B -:1027E0002CE4421624E0520649F50E94905623C07C -:1027F000C756DF4F8881C959D040C754DF4FE881A1 -:10280000F981C95BD040E80FF11D80818635C9F49C -:10281000818180538230A8F49FB7813029F0F894E9 -:102820008091B514886004C0F8948091B5148260DA -:102830008093B5149FBF80E090E005C081E090E0F8 -:1028400002C082E390E09C01215031092230310521 -:1028500010F00C942F1FC155DF4FE881F981CF5A3A -:10286000D040CF01A0E0B0E0CA55DF4F0880C65A83 -:10287000D04004C0B695A795979587950A94D2F74E -:1028800080FDCACA81E090E0A0E0B0E0CA55DF4F09 -:102890000880C65AD04004C0880F991FAA1FBB1FCA -:1028A0000A94D2F7E82BF92BC155DF4FF983E8835F -:1028B000CF5AD04095C0812F110F990BAA0BBB0B9B -:1028C000FC01E654F109E531F10510F00C94D41E39 -:1028D0008827EE58FF4F8F4F0C949873C0922F1596 -:1028E000D0923015E0923115F0923215CA55DF4F73 -:1028F0001882C65AD040DAC0C0923315D09234152F -:10290000E0923515F0923615C154DF4FF881CF5B58 -:10291000D040F160C154DF4FF883CF5BD04021E05D -:102920004FC0C0923715D0923815E0923915F09209 -:102930003A15C154DF4F3881CF5BD0403260C1546B -:10294000DF4F3883CF5BD04082E05BC0C0923B1545 -:10295000D0923C15E0923D15F0923E15C154DF4FE8 -:102960009881CF5BD0409460C154DF4F9883CF5B98 -:10297000D040A3E060C0CB54DF4FB881C55BD040EE -:10298000B0933F15E4E071C0C701B6010E949B708F -:1029900060934015709341158093421590934315B1 -:1029A000F5E0CA55DF4FF883C65AD0407FC0C092C9 -:1029B0004415D0924515E0924615F092471526E051 -:1029C000CA55DF4F2883C65AD04070C0C092481500 -:1029D000D0924915E0924A15F0924B1537E061C04C -:1029E000CB56DF4F88819981AA81BB81C559D040E0 -:1029F00080934C1590934D15A0934E15B0934F15A1 -:102A000088E0CA55DF4F8883C65AD0404FC0C09275 -:102A10005115D0925215E0925315F0925415C655A7 -:102A2000DF4F9881CA5AD0409160C655DF4F9883D6 -:102A3000CA5AD040AAE0CA55DF4FA883C65AD04030 -:102A400035C0C0925515D0925615E0925715F092A8 -:102A50005815C655DF4FB881CA5AD040B260C65526 -:102A6000DF4FB883CA5AD040EBE0CA55DF4FE88346 -:102A7000C65AD0401BC0C0925915D0925A15E09248 -:102A80005B15F0925C15C655DF4FF881CA5AD040ED -:102A9000F460C655DF4FF883CA5AD0402CE090CF7F -:102AA00039E0CA55DF4F3883C65AD040CA55DF4F88 -:102AB0008881C65AD040082FCD54DF4FE881F98174 -:102AC000C35BD040CF01A0E0B0E0CA55DF4F088023 -:102AD000C65AD04004C0B695A795979587950A9495 -:102AE000D2F780FF02C00C94CC1E81E693E0A0E0F8 -:102AF000B0E0CA55DF4F0880C65AD04004C0B69532 -:102B0000A795979587950A94D2F780FF11C020E08A -:102B100030E0A901CB56DF4F688179818A819B81A2 -:102B2000C559D0400E942C7087FF02C00C94CE1E65 -:102B300081E090E0A0E0B0E004C0880F991FAA1FD8 -:102B4000BB1F0A95D2F7CD54DF4F28813981C35B73 -:102B5000D040282B392BCD54DF4F39832883C35BDA -:102B6000D0400C940C06C655DF4F3881CA5AD0406D -:102B7000332369F0C255DF4F8881CE5AD04081118E -:102B800006C092E0C255DF4F9883CE5AD040CD5454 -:102B9000DF4FA881C35BD040A5FF0FC080914015D7 -:102BA00090914115A0914215B091431580389649F6 -:102BB000A849B10514F00C94D01E809126158130DF -:102BC00091F4C255DF4FF881CE5AD040F23009F06F -:102BD00040C0CD54DF4F2881C35BD04020FD02C0F0 -:102BE0000C94DA1E36C080915E15811132C0CD542E -:102BF000DF4F3881C35BD04030FF1BC08091271569 -:102C0000813039F523E333E34BEC51E460912F1528 -:102C10007091301580913115909132150E94857216 -:102C200060932F1570933015809331159093321562 -:102C300010C080916B1590916C15A0916D15B0919D -:102C40006E1580932F1590933015A0933115B09386 -:102C50003215CD54DF4F88819981C35BD04090FD00 -:102C600010C08091671590916815A0916915B09179 -:102C70006A1580934C1590934D15A0934E15B09303 -:102C80004F15809124158130B9F4CD54DF4F9881D0 -:102C9000C35BD04096FD03C08CE10C942F1FCD5434 -:102CA000DF4FA881B981C35BD040AF7BCD54DF4FEC -:102CB000B983A883C35BD040809129158823A1F0F4 -:102CC000813021F1CB54DF4F1882C55BD040F2E058 -:102CD000C754DF4FF883C95BD04021E0CA55DF4FAE -:102CE0002883C65AD04023C0B2E0CB54DF4FB8830C -:102CF000C55BD040E1E0C754DF4FE883C95BD040FB -:102D0000CA55DF4F1882C65AD04011C031E0CB54AB -:102D1000DF4F3883C55BD040C754DF4F1882C95B93 -:102D2000D04082E0CA55DF4F8883C65AD040809198 -:102D30002715813049F0C255DF4F9881CE5AD040D7 -:102D4000933009F043C036C0B4E2EB2EB5E1FB2E60 -:102D500000E010E0C655DF4FA881CA5AD0408A2E45 -:102D6000912CA12CB12CD501C401002E04C0B69524 -:102D7000A795979587950A94D2F780FF12C023E311 -:102D800033E34BEC51E4F70165A576A587A590A93F -:102D90000E948572D7019D966D937D938D939C9330 -:102DA000D0970F5F1F4FB4E0EB0EF11C03301105FD -:102DB000D1F6C1CF80912A15813041F4C655DF4F3D -:102DC000E881CA5AD040E43009F0ECC78CE0E0E872 -:102DD000F5E1DE01119601900D928A95E1F7C1555A -:102DE000DF4F28813981CF5AD04031FD08C0109182 -:102DF00024151230C1F0183009F4EAC058C180918E -:102E00002B15873018F08DE10C942F1F90916315CE -:102E1000891769F3BE016F5F7F4F0E94452E88239B -:102E200009F4D4C7E4CFC655DF4F3881CA5AD04021 -:102E3000311103C08AE10C942F1FCD54DF4F8881DC -:102E40009981C35BD04080759927892B09F424CFE1 -:102E500060914415709145158091461590914715E4 -:102E60000E9433730E94A070673068F680913F150E -:102E7000843151F0823009F097C7CD54DF4F8881FB -:102E8000C35BD04087FD90C7CD54DF4FA881B98187 -:102E9000C35BD040AF7ACD54DF4FB983A883C35B07 -:102EA000D040662321F022242A94260E02C02090CE -:102EB0002B15BE016B5E7F4F822D0E94452E88230D -:102EC00009F484C730903F1580909815909099151B -:102ED000A0909A15B0909B15A4E2CA2EA5E1DA2E17 -:102EE0008E010B5E1F4FEDE5F5E1C155DF4FF98314 -:102EF000E883CF5AD040E12CF12CC655DF4FF88142 -:102F0000CA5AD0404F2E512C612C712CD301C201D2 -:102F10000E2C04C0B695A795979587950A94D2F77D -:102F200080FF3BC024E132122EC0C155DF4FA88183 -:102F3000B981CF5AD0409F962D913D914D915C9192 -:102F4000D29757966D917D918D919C915A970E9441 -:102F5000526FF60125A536A547A550A90E94526FCC -:102F6000D8016D937D938D939C931397B2E0EB12F0 -:102F700014C0A50194010E94526FF801608371830F -:102F8000828393830AC0F60185A596A5A7A5B0A95B -:102F9000F80180839183A283B383FFEFEF1AFF0AC6 -:102FA00024E0C20ED11C0C5F1F4FC155DF4F88813A -:102FB0009981CF5AD0400496C155DF4F99838883B9 -:102FC000CF5AD04093E0E916F10409F09FCF4CC1ED -:102FD000C655DF4FA881CA5AD040AA2309F42ACF88 -:102FE0008090981590909915A0909A15B0909B1587 -:102FF000FDE5CF2EF5E1DF2EFE0131961F0104E243 -:1030000015E1E12CF12C4A2E512C612C712CD301AD -:10301000C2010E2C04C0B695A795979587950A9482 -:10302000D2F780FF29C0D1012D913D914D915C9146 -:10303000F6016789708D818D928D0E94526FD80143 -:103040009D962D913D914D915C91D0970E94526F2C -:10305000F80165A776A787A790ABF2E0EF1216C03C -:10306000A50194010E94526FD8019D966D937D93A6 -:103070008D939C93D0970AC0F60187A590A9A1A92A -:10308000B2A9F80185A796A7A7A7B0ABFFEFEF1AE3 -:10309000FF0A24E0C20ED11C34E0230E311C0C5F69 -:1030A0001F4F83E0E816F10409F0B1CFDCC0C25530 -:1030B000DF4F9881CE5AD040933009F49DC0C65559 -:1030C000DF4FA881CA5AD040AA2309F4C2C0009198 -:1030D0002815409098155090991560909A15709009 -:1030E0009B157DE5A72E75E1B72EE4E2EE2EE5E116 -:1030F000FE2EFE0131964F01C12CD12C8A2F90E07B -:10310000A0E0B0E0C155DF4F88839983AA83BB83D9 -:10311000CF5AD040C155DF4F88819981AA81BB81A8 -:10312000CF5AD0400C2C04C0B695A795979587959B -:103130000A94D2F780FD0BC0F5018789908DA18D8F -:10314000B28DF70185A796A7A7A7B0AB43C01730EC -:1031500009F440C001112BC0D5019F962D913D91DE -:103160004D915C91D297F40160817181828193814C -:103170000E94536FD7019D962D913D914D915C9189 -:10318000D0970E94536FF70165A776A787A790ABEA -:10319000F2E0CF121FC0A30192010E94536FD7012A -:1031A0009D966D937D938D939C93D09713C0F5015D -:1031B0002789308D418D528DD7019D966D917D91DE -:1031C0008D919C91D0970E94536FF70165A776A7C8 -:1031D00087A790ABFFEFCF1ADF0A24E0A20EB11C45 -:1031E00034E0E30EF11C84E0880E911C93E0C916D4 -:1031F000D10409F08FCF29C61530A9F0173071F12D -:10320000133089F5C655DF4FA881CA5AD040A111A5 -:1032100005C0C255DF4F1882CE5AD040BE016B5E4A -:103220007F4F86E010C0C655DF4FB881CA5AD040E4 -:10323000B11105C0C255DF4F1882CE5AD040BE0131 -:103240006B5E7F4F87E00E94452E882309F4BEC540 -:103250000AC0153079F3173009F0F3C580912515B0 -:10326000823008F0A3C5212C30902515E8E03E12ED -:1032700011C0C655DF4FF881CA5AD040FF2309F468 -:1032800005C3C255DF4F2881CE5AD040213009F006 -:103290008FC511C3C255DF4F3881CE5AD04032306E -:1032A00009F0F4C2311009C0C655DF4F8881CA5AEF -:1032B000D040882309F4F1C2FEC220E030E0A90129 -:1032C00060912F15709130158091311590913215C4 -:1032D0000E942C70882309F46DC593E0931538F093 -:1032E000A2E03A1690F4B1E03B1631F0E4C2E7E018 -:1032F000E31508F0BEC2DFC2C655DF4FF881CA5AD7 -:10330000D040FF2309F4C9C2D6C2C655DF4F288179 -:10331000CA5AD040222309F48DCDCA55DF4F988177 -:10332000C65AD040892F90E0C155DF4F99838883DA -:10333000CF5AD040C754DF4FB881C95BD040AB2FC4 -:10334000B0E0CD53DF4FB983A883C35CD04081E0A8 -:1033500090E0A0E0B0E06C017D01CA55DF4F08802D -:10336000C65AD04004C0CC0CDD1CEE1CFF1C0A94D5 -:10337000D2F7C754DF4F0880C95BD04004C0880F24 -:10338000991FAA1FBB1F0A94D2F7C82AD92AEA2A72 -:10339000FB2A822F90E0A0E0B0E08C219D21AE219D -:1033A000BF21892B8A2B8B2B09F406C5C155DF4F12 -:1033B00088819981CF5AD040880F991F880F991F13 -:1033C000FC01EC5DFA4EDC01A35ABA4E57962D91E2 -:1033D0003D914D915C915A9765A576A587A590A9D9 -:1033E0000E94526F4B015C01CD53DF4F8881998160 -:1033F000C35CD040880F991F880F991FFC01EC5DBA -:10340000FA4EDC01A35ABA4E57962D913D914D913B -:103410005C915A9765A576A587A590A90E94526FE1 -:10342000C655DF4F688379838A839B83CA5AD0400D -:10343000CD54DF4F08811981C35BD040007811273C -:10344000CD54DF4FE881C35BD040E7FF15C1CD54B9 -:10345000DF4F28813981C35BD0402F77CD54DF4FB8 -:1034600039832883C35BD0400E947169882311F09F -:1034700081E2F5C4809127158130B1F423E333E371 -:103480004BEC51E4609148157091491580914A15B3 -:1034900090914B150E948572609348157093491561 -:1034A00080934A1590934B154090481550904915BC -:1034B00060904A1570904B15A5019401C501B401A7 -:1034C0000E948572C154DF4F688379838A839B830E -:1034D000CF5BD040C655DF4F288139814A815B815F -:1034E000CA5AD040CA01B9010E948572C554DF4F43 -:1034F000688379838A839B83CB5BD04020E030E074 -:1035000040E850E4C301B2010E948572A301920118 -:103510000E948572C154DF4F288139814A815B81C5 -:10352000CF5BD0400E94526FC554DF4F2881398154 -:103530004A815B81CB5BD0400E94526F6B017C0162 -:1035400020E030E0A9010E942C7087FD37C4C7013C -:10355000B6010E94F2726B017C01C554DF4F2881D5 -:1035600039814A815B81CB5BD040C154DF4F688198 -:1035700079818A819B81CF5BD0400E94536F0E94EA -:10358000F2729B01AC01C701B60190580E943370E2 -:103590006B017C0133E0331204C0F7FAF094F7F8C2 -:1035A000F09420E030E0A901C301B2010E942C7028 -:1035B00087FF0FC0F7FAF094F7F8F094D301C20137 -:1035C000B0588093481590934915A0934A15B0932D -:1035D0004B15C155DF4F08811981CF5AD040000FDC -:1035E000111F000F111F085D1A4EC655DF4F2881AD -:1035F00039814A815B81CA5AD040C701B6010E9415 -:1036000085729B01AC01C501B4010E94526F20E09C -:1036100030E040E05FE30E948572D8011B966D9315 -:103620007D938D939C931E97CD53DF4F0881198115 -:10363000C35CD040000F111F000F111F085D1A4E10 -:10364000A5019401C701B6010E948572C655DF4FDE -:10365000288139814A815B81CA5AD0400E94536FC8 -:1036600020E030E040E05FE30E948572F80163876C -:103670007487858796871FC1C154DF4FF881CF5B60 -:10368000D0404F2E512C612C712CC420D520E62027 -:10369000F720CD28CE28CF2809F492C3CD54DF4F90 -:1036A00028813981C35BD040217FCD54DF4F3983DE -:1036B0002883C35BD04080912715813009F491C0E5 -:1036C000C155DF4FE881F981CF5AD040EE0FFF1F7F -:1036D000EE0FFF1FE85DFA4EC384D484E584F684C0 -:1036E000A7019601C501B4010E94526F2B013C0154 -:1036F000CD53DF4FE881F981C35CD040EE0FFF1F4F -:10370000EE0FFF1FE85DFA4E83859485A585B6858B -:10371000C155DF4F88839983AA83BB83CF5AD0409A -:103720009C01AD01C655DF4F688179818A819B81FB -:10373000CA5AD0400E94526F4B015C01A301920112 -:10374000C301B2010E9485722B013C01A5019401C5 -:10375000C501B4010E9485729B01AC01C301B20195 -:103760000E94536F0E94F2724B015C01A701960107 -:10377000C701B6010E9485726B017C01C155DF4F04 -:10378000288139814A815B81CF5AD040CA01B90171 -:103790000E9485729B01AC01C701B6010E94536F64 -:1037A0000E94F2726B017C01609348157093491579 -:1037B00080934A1590934B159B01AC01C501B40150 -:1037C0000E94526F4B015C01E894B7F82AE037ED94 -:1037D00043EA5BE3C501B4010E944A72181664F122 -:1037E0006AC084E2E82E85E1F82ED301C201002EE2 -:1037F00004C0B695A795979587950A94D2F780FF50 -:1038000012C023E333E34BEC51E4D7011F966D91D3 -:103810007D918D919C9152970E948572F7016787E7 -:10382000708B818B928B0F5F1F4FF4E0EF0EF11CBA -:1038300003301105D1F644CF20E030E040E05FE3F3 -:10384000C501B4010E944A7218160CF411CE2FE67D -:1038500032E143E85AE3C701B6010E9485729B0139 -:10386000AC01C501B4010E944A7218160CF400CED6 -:1038700022C0C655DF4F2881CA5AD040222309F4FE -:10388000D9CA0E9471698111F3CD15C0C255DF4FAD -:103890003881CE5AD04031110EC0CD54DF4F8881CF -:1038A0009981C35BD0408E7D9C7FC255DF4F1882CB -:1038B000CE5AD04008C0CD54DF4F88819981C35B78 -:1038C000D0408E7D907E892B09F07CC2809140157E -:1038D00090914115A0914215B091431580937015B8 -:1038E00090937115A0937215B0937315809126155E -:1038F00080935E1580912F1590913015A091311510 -:10390000B091321580936B1590936C15A0936D1543 -:10391000B0936E15C0904C15D0904D15E0904E159B -:10392000F0904F15A7019601609167157091681589 -:103930008091691590916A150E942C708823F9F086 -:1039400010916615112359F080910715823039F0D6 -:103950000E945469B701A601812F0E94D72C809143 -:103960004C1590914D15A0914E15B0914F15809327 -:10397000671590936815A0936915B0936A158091A7 -:10398000501580936F1510912E1580916615811733 -:10399000B9F080910715823079F0C0906715D0900A -:1039A0006815E0906915F0906A150E945469B70196 -:1039B000A601812F0E94D72C80912E158093661529 -:1039C00010912D1580916515811781F08091071553 -:1039D000823041F00E945469123011F45C9A02C0A6 -:1039E0000E94BF5D80912D158093651580912415EF -:1039F000813089F080912915809361158091271578 -:103A000080935F15C255DF4F8881CE5AD0408330F6 -:103A100009F074C054C080910715823059F380902A -:103A2000441590904515A0904615B090471520E09C -:103A300030E040EA51E4C501B4010E9485720E9461 -:103A400009710E94A0706B017C010E94546920E002 -:103A500030E04AE754E4C501B4010E9485724B018D -:103A60005C0182E38C9DB0018D9D700D112480E07E -:103A700090E00E94CC709B01AC01C501B4010E9492 -:103A8000526F0E9409710E94A070CB010E944F39B1 -:103A900086010115110509F4ADCF0E945A39015074 -:103AA0001109809106158111A5CF9FEFA0E7B2E023 -:103AB0009150A040B040E1F700C00000EACF8091F3 -:103AC0002A1580936215813089F48091591590915F -:103AD0005A15A0915B15B0915C1580939815909341 -:103AE0009915A0939A15B0939B1508C0109298153C -:103AF0001092991510929A1510929B1580912B1582 -:103B000090916315981759F0809363158CE0FE012E -:103B10003196A0E8B5E101900D928A95E1F7809188 -:103B2000281580936015E09124158E2F90E0FC01FC -:103B30003297E830F10508F060C08827E957FF4F59 -:103B40008F4F0C949873BE016B5E7F4F822D0E9445 -:103B50003C2E80916315281250C08CE0FE017596B2 -:103B6000A0E8B5E13EC0C255DF4FE881CE5AD04053 -:103B7000EE2371F020916B1530916C1540916D150D -:103B800050916E1500E061E575E181E00E94BA5642 -:103B900020916B1530916C1540916D1550916E15FB -:103BA00000E0BE016B5E7F4F81E00E94BA56182F85 -:103BB0008CE0FE017596A4E7B5E101900D928A951F -:103BC000E1F71CC064E775E186E003C064E775E1D6 -:103BD00087E00E943C2E11C08CE0E1E5F5E1ACE805 -:103BE000B5E101900D928A95E1F707C08CE0ECE811 -:103BF000F5E1DF011D928A95E9F710E08091251526 -:103C000080935D15883009F470C0C255DF4FB881CC -:103C1000CE5AD040B23009F068C090E088309105AB -:103C200008F05AC0FC0140906B1550906C156090E4 -:103C30006D1570906E158827E157FF4F8F4F0C94CC -:103C4000987300E0A301920161E575E180E007C08F -:103C500000915E15A301920161E575E181E00E948A -:103C6000BA56182F39C06091481570914915809146 -:103C70004A1590914B158824839409C0609148158A -:103C80007091491580914A1590914B15812CCB5418 -:103C9000DF4FA880C55BD040C754DF4FC880C95BE9 -:103CA000D040CA55DF4FE880C65AD04000915E151B -:103CB000A30192010E94456A0FC000E001C001E02B -:103CC00020E004C000E001C001E021E040915E1569 -:103CD000C301B2010E94AF698CE0E1E5F5E1A4E720 -:103CE000B5E101900D928A95E1F780912C158093B2 -:103CF0006415882309F468C00E9454699091641582 -:103D000080910715913069F48230E9F19FB7F894FA -:103D10008091B51488608093B5149FBF0E945A3972 -:103D200032C091E090935D1510926115109260156C -:103D300010925E151092631510926615109265151B -:103D40008230A9F0BE016F5F7F4F80E00E94452E58 -:103D50008823E1F18CE0FE013196A0E8B5E1019005 -:103D60000D928A95E1F70E94D02C0E94BF5D80EDF4 -:103D700099E00E940A3484E799E00E940A348DE5B4 -:103D800099E00E940A34109264151EC081E067C059 -:103D900082E065C088E163C089E161C084E05FC002 -:103DA0008BE15DC085E25BC084E159C08EE157C004 -:103DB0008FE155C086E153C080E251C082E24FC01E -:103DC00083E24DC084E24BC0812F49C087E047C0E9 -:103DD000EEE14E16510411F40C948F0D70F42AE0AC -:103DE0004216510411F40C946B0D3CE1431651043E -:103DF00011F40C94780D87E132C085E34816510424 -:103E000011F40C94AF0D9CE549165104A1F721144F -:103E1000310439F0BAE02B16310431F689E00C9404 -:103E2000930D88E00C94930D3CE54316510411F07A -:103E30000C94EA0EA1E0C255DF4FA883CE5AD040C1 -:103E4000E6CF133009F00FCAE4C9153009F4F7C9F9 -:103E5000173009F403CA133009F005CADFC9C85383 -:103E6000DF4F0FB6F894DEBF0FBECDBFDF91CF910D -:103E70001F910F91FF90EF90DF90CF90BF90AF9088 -:103E80009F908F907F906F905F904F903F902F907A -:103E900008952F923F924F925F926F927F928F92EE -:103EA0009F92AF92BF92CF92DF92EF92FF920F93C9 -:103EB0001F93CF93DF93CDB7DEB7C459D1090FB6A7 -:103EC000F894DEBF0FBECDBFFB01873A28E0920712 -:103ED00009F480C208F046C08B34A8E09A0709F4C0 -:103EE00045C1F0F4833E27E0920709F4FFC060F477 -:103EF0008231910509F4FAC08C3C910509F493C014 -:103F0000419709F075C078C08934A8E09A0709F490 -:103F100012C108F018C18834984009F4C2C068C0C2 -:103F20008D3938E0930709F4E6C178F48A39B8E0AE -:103F30009B0709F488C18B3928E0920709F4BEC1B8 -:103F40008939984009F054C024C1823AA8E09A0700 -:103F500009F404C208F44CC0863A984010F40C945A -:103F6000622946C0803C28E0920709F4A0C508F504 -:103F7000873BA8E09A0709F453C570F48D3A28E00E -:103F8000920709F43AC38E3A38E0930709F443C420 -:103F90008C3A984069F524C2893BB8E09B0709F444 -:103FA00063C508F450C58A3B984011F40C9462290B -:103FB0001FC08A36A9E09A0709F44EC770F480360C -:103FC00029E0920709F402C6813639E0930709F423 -:103FD000ECC6813C984061F495C58C36B9E09B07EE -:103FE00009F4B6C708F485C7843C994009F4F9C7B9 -:103FF00081E090E00C9464298091F41482FF08C061 -:104000008A9A809108018160809308015F9A07C0B5 -:104010008A98809108018E7F809308015F980E94A2 -:10402000943F8FE00CC18E010F5F1F4F1F930F93C2 -:1040300088EC93E09F938F93FF936F930E94F973A3 -:104040000F900F900F900F900F900F901816190669 -:104050000CF09DC71D8A1E8A1F8A188EAE014B5E0A -:104060005F4F60E070E0C8010E94D0558823D1F115 -:104070004D895E896F89788D88E70E943A2D4D8938 -:104080005E896F89788D89E70E943A2D4D895E8916 -:104090006F89788D8AE70E943A2D0E9459320C94DC -:1040A00062298E010F5F1F4F1F930F9383ED93E0E3 -:1040B0009F938F93FF936F930E94F9730F900F90CC -:1040C0000F900F900F900F90181619060CF05FC705 -:1040D000AE014B5E5F4F60E070E0C8010E94D055BA -:1040E000811108C082E390E00C9464290E94D93EBB -:1040F0000C94622920E030E04AE754E46D897E891F -:104100008F89988D0E9485720E949B7016161706E3 -:1041100094F47093180D6093170D11E01093190D1E -:104120008091160D81110C9462290E94153E109306 -:10413000160D0C9462291092190D1092180D109200 -:10414000170D0C9462298081863561F68181805338 -:10415000823040F61092950D813021F01092940D2E -:104160000C9462298093940D0C9462298081863589 -:1041700009F0B8CF81818053823008F0B3CF81300D -:1041800021F010929A0D0C94622980939A0D0C9450 -:10419000622980818E3409F0A5CF918190539430AB -:1041A00008F0A0CF923079F1933009F443C0209108 -:1041B000F4148091910D913099F022FF08C08A9AF1 -:1041C000909108019160909308015F9A07C08A98C6 -:1041D000909108019E7F909308015F9884602FC0A2 -:1041E00022FF08C08A9A909108019160909308017B -:1041F0005F9A07C08A98909108019E7F909308016A -:104200005F9881601CC08091F41482FF08C08A9A74 -:10421000809108018160809308015F9A07C08A98A5 -:10422000809108018E7F809308015F988091910DA5 -:10423000826005C00E94943F8091910D88608093B8 -:10424000910D0C94602980818E3409F04BCF9181BF -:104250009053943008F046CF9230B1F0933041F152 -:104260002091F4148091910D913039F022FF02C019 -:104270005F9801C05F9A8B7F17C022FF02C08A98A7 -:1042800001C08A9A8E7F10C08091F41482FF04C00E -:10429000809108018E7F03C0809108018160809326 -:1042A00008018091910D8D7F8093910D0C9462296E -:1042B0000E94CB3E8091910D877FF6CF80818E3416 -:1042C00009F010CF81818053843008F00BCF90919A -:1042D000910D823051F0833059F0813019F090FF08 -:1042E00098C394C391FD92C394C392FD8FC391C3AD -:1042F00093FF8FC38BC38E010F5F1F4F1F930F93CD -:104300008CED93E09F938F93FF936F930E94F973CB -:104310000F900F900F900F900F900F901816190696 -:104320000CF035C68CE0F801AAE1BDE001900D92D9 -:104330008A95E1F70AE11DE08AEE93E0D8016D91DC -:104340008D017C01BFEFEB1AFB0A0E94185DC701CB -:10435000E6EFEE16E3E0FE0689F7B4C71AA619A643 -:104360001D8A1E8A1F8A188E8E010F5F1F4F8AE0DA -:10437000D8011D928A95E9F7CE0189969F938F9374 -:104380001F930F9387EE93E09F938F93FF936F9309 -:104390000E94F9730FB6F894DEBF0FBECDBF02972F -:1043A0000CF4F5C5AE014B5E5F4F60E070E0C801F4 -:1043B0000E94D055882309F495CE2D893E894F89D6 -:1043C000588D69A57AA5072E000C880B990B0E94C1 -:1043D000303E78C78FEF0E94652E0E948C3D72C7D9 -:1043E0002E0125E6420E511C84E1D201282F1D9298 -:1043F0002A95E9F73E0131E5630E711CD301282FA0 -:104400001D922A95E9F78E01035C1F4FD8011D927A -:104410008A95E9F7C357DF4F188219821A821B82E7 -:10442000CD58D040C757DF4F188219821A821B829D -:10443000C958D040CB57DF4F188219821A821B828D -:10444000C558D0401F930F937F926F925F924F9207 -:1044500083EF93E09F938F93FF936F930E94F97381 -:104460000FB6F894DEBF0FBECDBF03970CF48FC517 -:10447000AE0143575F4F60E070E0C2010E94D0552B -:10448000882309F42FCEAE0147575F4F60E070E0FC -:10449000C3010E94D055882309F424CEAE014B57A6 -:1044A0005F4F60E070E0C8010E94D055882309F496 -:1044B00019CECF57DF4F188219821A821B82C1583A -:1044C000D040C358DF4F188219821A821B82CD5701 -:1044D000D040ED961CAE1DAE1EAE1FAEED9784E132 -:1044E0003E01F9E26F0E711CD301E82F1D92EA958F -:1044F000E9F72E01F5E14F0E511CD201E82F1D9274 -:10450000EA95E9F79E012F5F3F4F1901D9011D92EE -:104510008A95E9F7AE014B575F4FBE0167577F4F52 -:10452000CE0183579F4F0E94BD41CB57DF4FE8809C -:10453000F9800A811B81C558D040C757DF4F2881B9 -:1045400039814A815B81C958D040C357DF4F6881A8 -:1045500079818A819B81CD58D040FE01EF57FF4F72 -:104560004F01DE01A758BF4F5D0134976F010E94D4 -:10457000114320E030E044EB52E4CF57DF4F688135 -:1045800079818A819B81C158D0400E94536FCF5757 -:10459000DF4F688379838A839B83C158D040C35897 -:1045A000DF4F688179818A819B81CD57D04082011C -:1045B00024E045E00E94D76CED966CAD7DAD8EADEC -:1045C0009FADED97810124E045E00E94D76CCF5765 -:1045D000DF4F688179818A819B81C158D0408301F6 -:1045E00024E045E00E94D76C3F922F925F924F9259 -:1045F0007F926F928CEA92E000C12E0135E6430E65 -:10460000511C84E1D201282F1D922A95E9F73E0121 -:1046100031E5630E711CD301282F1D922A95E9F70D -:104620008E01035C1F4FD8011D928A95E9F7C3578D -:10463000DF4F188219821A821B82CD58D040C7578B -:10464000DF4F188219821A821B82C958D040CB577B -:10465000DF4F188219821A821B82C558D0401F93DF -:104660000F937F926F925F924F9282E194E09F93BB -:104670008F93FF936F930E94F9730FB6F894DEBF88 -:104680000FBECDBF03970CF482C4AE0143575F4FFA -:1046900060E070E0C2010E94D055882309F422CD69 -:1046A000AE0147575F4F60E070E0C3010E94D055F4 -:1046B000882309F417CDAE014B575F4F60E070E0DF -:1046C000C8010E94D055882309F40CCDCF57DF4F85 -:1046D000188219821A821B82C158D040C358DF4FFA -:1046E000188219821A821B82CD57D040ED961CAEDB -:1046F0001DAE1EAE1FAEED9784E13E01F9E26F0ED6 -:10470000711CD301E82F1D92EA95E9F72E01F5E11E -:104710004F0E511CD201E82F1D92EA95E9F79E0138 -:104720002F5F3F4F1901D9011D928A95E9F720E0CB -:1047300030E044EB52E4C357DF4F688179818A81CE -:104740009B81CD58D0400E94526F7B018C01C35792 -:10475000DF4F688379838A839B83CD58D040CB57C2 -:10476000DF4F288139814A815B81C558D040C757C6 -:10477000DF4F688179818A819B81C958D040FE01D1 -:10478000E758FF4F4F01DE01A358BF4F5D01389638 -:104790006F010E947644A401B501C6010E946842DF -:1047A000CF57DF4F688179818A819B81C158D04082 -:1047B000830124E045E00E94D76CC358DF4F688135 -:1047C00079818A819B81CD57D040820124E045E0E8 -:1047D0000E94D76CED966CAD7DAD8EAD9FADED9723 -:1047E000810124E045E00E94D76C3F922F925F92B6 -:1047F0004F927F926F928DED92E09F938F9387E21D -:104800009DE09F938F930E94CB730FB6F894DEBF09 -:104810000FBECDBF57C5CF57DF4F188219821A82FE -:104820001B82C158D040C358DF4F188219821A82A8 -:104830001B82CD57D040ED961CAE1DAE1EAE1FAEF6 -:10484000ED9784E12E0139E2430E511CD201282F4D -:104850001D922A95E9F73E0135E1630E711CD301E3 -:10486000282F1D922A95E9F7DE0111967D011D92F0 -:104870008A95E9F78E010B571F4F8FEF90E0D80113 -:104880008D939C931F930F93FF92EF927F926F9261 -:104890005F924F9281E394E09F938F93FF936F9386 -:1048A0000E94F9730FB6F894DEBF0FBECDBF049718 -:1048B0000CF46DC3AE014F575F4F60E070E0C20172 -:1048C0000E94D055882309F40DCCAE0143585F4FA8 -:1048D00060E070E0C3010E94D055882309F402CC47 -:1048E000AE0147585F4F60E070E0C7010E94D055AD -:1048F000882309F4F7CBD8018D919C91009709F496 -:1049000043C0019709F0EECBCF57DF4F4880598065 -:104910006A807B80C158D04020E030E044EB52E414 -:10492000C358DF4F688179818A819B81CD57D04000 -:104930000E94526F21EE3EE245E652E40E9433703F -:104940006B017C010E9430709B01AC01C301B2017C -:104950000E948572CF57DF4F688379838A839B8358 -:10496000C158D040C701B6010E94E8729B01AC015A -:10497000C301B2010E948572C358DF4F68837983F7 -:104980008A839B83CD57D040AE0147585F4FBE010D -:1049900063587F4FCE018F579F4F0E94BD41ED96C8 -:1049A000ECACFDAC0EAD1FADED97C358DF4F2881C9 -:1049B00039814A815B81CD57D040CF57DF4F688125 -:1049C00079818A819B81C158D040FE01FD964F01BB -:1049D000DE01AF5ABF4F5D01B8966F010E941143CF -:1049E0002196ECACFDAC0EAD1FAD219765962CADBC -:1049F0003DAD4EAD5FAD6597A9966CAD7DAD8EAD0D -:104A00009FADA9970E94EB45882319F067ED73E0ED -:104A100002C063EC73E087E29DE00E94C47352C45D -:104A20008081863509F05ECB81818053823008F029 -:104A300059CB813019F00E94873D44C49C9A9D9ABD -:104A4000A49AA5983FC48081863509F04BCB81811B -:104A50008053823008F046CB813019F00E94843DAB -:104A600031C43F9A47982EC48081863509F03ACBED -:104A700081818053823008F035CB813019F00E945B -:104A8000733D20C480910101806280930101809177 -:104A90000101806480930101809102018062809312 -:104AA0000201809102018064809302010BC4CE0157 -:104AB00001969F938F9344969F938F9383E594E001 -:104AC0009F938F93FF936F930E94F9730FB6F8949F -:104AD000DEBF0FBECDBF02970CF459C28D899E89EF -:104AE0008634910508F0FECA29813A8122303105C9 -:104AF00008F0F8CA232B11F061E001C060E00E94C9 -:104B0000CA54E0C3CE0101969F938F9344969F931E -:104B10008F9383E594E09F938F93FF936F930E940D -:104B2000F9730FB6F894DEBF0FBECDBF02970CF439 -:104B30002EC28D899E898634910508F0D3CA2981B9 -:104B40003A812230310508F0CDCAFC01E05CF54F16 -:104B50008650964F232BD1F02491FC018491882319 -:104B600009F4B0C390E0880F991FFC01E455F84F99 -:104B7000A591B491FC01E052F64F859194918FB7C5 -:104B8000F894EC91E22BEC938FBF9CC32491FC0131 -:104B90008491882309F496C390E0880F991FFC0143 -:104BA000E455F84F45915491FC01E052F64FA59120 -:104BB000B4919FB7F894FA01808120958223808375 -:104BC0008C91E22FE823EC939FBF7CC380818335D7 -:104BD00009F088CA8181E0EDE80FE83008F082CA68 -:104BE0008E2F90E0FC013197E730F10530F48827F3 -:104BF000E956FF4F8F4F0C9498730E94CB3E109252 -:104C0000600D10925F0D8AE999E1A5E9B2E4809305 -:104C1000650D9093660DA093670DB093680D8AE9BA -:104C200099E9A2E6B2E4B8C00E94CB3E81E090E0F0 -:104C30009093600D80935F0D86EF98E2ACE4B2E450 -:104C40008093650D9093660DA093670DB093680DEA -:104C50008DEC9CECA0E8B2E49FC00E94CB3E82E0C9 -:104C600090E09093600D80935F0D89E29CEDA4E944 -:104C7000B2E48093650D9093660DA093670DB09399 -:104C8000680D80E090E0A2E6B2E486C00E94CB3ED0 -:104C900083E090E09093600D80935F0D80E090E062 -:104CA000ACE2B2E48093650D9093660DA093670D1E -:104CB000B093680D80E090E0ABE8B2E46DC00E9474 -:104CC000CB3E84E090E09093600D80935F0D80E098 -:104CD00090E0ACE1B2E48093650D9093660DA093F3 -:104CE000670DB093680D80E090E0A9E9B2E418C0C8 -:104CF0000E94CB3E85E090E09093600D80935F0D25 -:104D000080E090E0ACEDB1E48093650D9093660D8A -:104D1000A093670DB093680D80E090E0A7E9B2E43E -:104D20008093610D9093620DA093630DB093640D19 -:104D30000E949E3EDBC00E94CB3E86E090E09093B6 -:104D4000600D80935F0D86E696E6AAE9B2E4809353 -:104D5000650D9093660DA093670DB093680D80E08C -:104D600090E0AAE5B2E418C00E94CB3E87E090E054 -:104D70009093600D80935F0D85E89BEEABECB1E402 -:104D80008093650D9093660DA093670DB093680DA9 -:104D900080E090E0A2E3B2E48093610D9093620D15 -:104DA000A093630DB093640DA1C080E090E00E94D9 -:104DB000AF4690935C0D80935B0D81E090E00E9484 -:104DC000AF4690935E0D80935D0D82E090E00E946F -:104DD000AF4690935A0D8093590D09E51DE084E389 -:104DE00093E0D8016D918D017C01BFEFEB1AFB0AB6 -:104DF0000E94185DC701EAE3EE16E3E0FE0689F7BC -:104E00006BEB82E393E00E94185D0E94854680E090 -:104E100090E00E94014760936D0D70936E0D80933A -:104E20006F0D9093700D81E090E00E9401476093B8 -:104E3000710D7093720D8093730D9093740D82E0D9 -:104E400090E00E9401476093750D7093760D8093FA -:104E5000770D9093780D36C26091121570911315ED -:104E600080911415909115150E94CE702B013C0174 -:104E700060910E1570910F1580911015909111157C -:104E80000E94CE70CF56DF4F688379838A839B83DD -:104E9000C159D04060910A1570910B1580910C1585 -:104EA00090910D150E94CE709E012F5F3F4F4901DA -:104EB000DE0155965D01FE01B9966F018301720115 -:104EC000CF56DF4F288139814A815B81C159D0405B -:104ED0000E945A4589819A81AB81BC818093650D7E -:104EE0009093660DA093670DB093680D0E94D63D18 -:104EF000E9C11D8A1E8A1F8A188E8E010F5F1F4FFF -:104F000084E1D8011D928A95E9F71F930F938AE5F2 -:104F100094E09F938F93FF936F930E94F9730F9088 -:104F20000F900F900F900F900F90181619067CF5A8 -:104F3000AE014B5E5F4F60E070E0C8010E94D0554B -:104F4000882309F4CFC88D899E89AF89B88D24CF75 -:104F50001D8A1E8A1F8A188E8E010F5F1F4F84E1E3 -:104F6000D8011D928A95E9F71F930F9385E694E087 -:104F70009F938F93FF936F930E94F9730F900F90FD -:104F80000F900F900F900F901816190674F01F9243 -:104F900081E08F938DE092E09F938F930E94AF33D7 -:104FA0000F900F900F900F909DC8AE014B5E5F4F1A -:104FB00060E070E0C8010E94D055882309F492C8CF -:104FC0008D899E89AF89B88D8093690D90936A0D04 -:104FD000A0936B0DB0936C0D0E94D63D0E949E3E37 -:104FE00071C1899865E9662E6EE0762E830182E0B4 -:104FF00090E00E94AF46F801819391938F0150E9B0 -:10500000E52EFF24F394889A6AE070E080E090E057 -:105010000E94113988986CE271E080E090E00E9473 -:105020001139F1E0EF1AF10871F788EE93E00E9470 -:105030004F392FE00D351207D1F682E090E00E9443 -:10504000AF4690935E0F80935D0F899A00E21EE455 -:10505000889A6AE070E080E090E00E9411398898B8 -:105060006CE271E080E090E00E941139015011097A -:1050700079F78F984EE0E42EF12C00E911E08E9A3A -:105080006AE070E080E090E00E9411398E986CE256 -:1050900071E080E090E00E9411390150110979F728 -:1050A00031E0E31AF10849F788EE93E00E944F39A6 -:1050B0008F9A35E1232E3EE0332E210100E010E0EF -:1050C00080E090E00E94AF46D2018D939D932D0128 -:1050D00020E9E22EFF24F3948E9A6AE070E080E0EB -:1050E00090E00E9411398E9864EF71E080E090E0CA -:1050F0000E941139B1E0EB1AF10871F70E30110579 -:10510000A9F088EE93E00E944F390F5F1F4F0F33D5 -:105110001105B1F680E090E00E94AF469093940EA6 -:105120008093930E8F9800E51DE223C080910B01C0 -:105130008D7F80930B01E12C92E3F92E80910B017E -:10514000886080930B016AE070E080E090E00E944C -:10515000113980910B01877F80930B016CE271E024 -:1051600080E090E00E941139E1E0EE1AF10831F799 -:10517000C8CF8E9A6AE070E080E090E00E9411391A -:105180008E986CE271E080E090E00E94113901504D -:10519000110979F788EE93E00E944F3980910B0155 -:1051A000826080930B0100E913E380910B0188601A -:1051B00080930B016AE070E080E090E00E9411397A -:1051C00080910B01877F80930B016CE271E080E09E -:1051D00090E00E9411390150110939F788EE93E0EF -:1051E0000E944F3980910B018D7F80930B010BE959 -:1051F0001DE0280181E090E00E94AF46D2018D932E -:105200009D932D0180E9E82EFF24F39480910B01FA -:10521000886080930B016AE070E080E090E00E947B -:10522000113980910B01877F80930B016CE271E053 -:1052300080E090E00E941139B1E0EB1AF10831F7FB -:1052400088EE93E00E944F39E3E14E16EEE05E06F1 -:1052500089F681E090E00E94AF469093140E80930F -:10526000130E81E090E0D3016D913D012C01BFEF61 -:105270004B1A5B0A0E94185DC2018B3C910599F79D -:10528000F10161911F013201FFEF6F1A7F0AC20124 -:105290000E94185D23012BE4621621E0720681F75B -:1052A000D8016D918D017301BFEFEB1AFB0AC301A9 -:1052B0000E94185D3701E5ECEE16E1E0FE0681F78D -:1052C0000E94FF3C80E090E0CC56DF4F0FB6F89490 -:1052D000DEBF0FBECDBFDF91CF911F910F91FF9029 -:1052E000EF90DF90CF90BF90AF909F908F907F9086 -:1052F0006F905F904F903F902F90089569E080E00D -:1053000090E00E94185D4DE450E067EB74E181E0AD -:1053100098E00C943A5DCF92DF92EF92FF920F9358 -:105320001F939091E814092F10E020E030E0809165 -:10533000E914482F50E060E070E0917081706801DE -:105340007901F694E794D794C794C0FC92606A01FF -:105350007B01F694E794D794C794C0FC8260E2E0A6 -:105360003695279517950795EA95D1F700FD946036 -:1053700022E076956795579547952A95D1F740FD98 -:10538000846090939D1080939C101F910F91FF90CB -:10539000EF90DF90CF9008951F920F920FB60F926B -:1053A00011240BB60F922F933F938F939F93EF93FC -:1053B000FF9321B330919D10832F817090E036E0F0 -:1053C000880F991F3A95E1F7922F9F7B892B81BB1C -:1053D000EBE0F1E0908180919D108270880F880F42 -:1053E000977F892B808381B390919D1092FB9927A1 -:1053F00090F98E7F892B81BB15BCFF91EF919F9116 -:105400008F913F912F910F900BBE0F900FBE0F9079 -:105410001F90189580916F008D7F80936F00809111 -:105420008100887F81608093810010929E1080911E -:10543000EA148F3F21F490910515992349F090913A -:105440000715943029F090E00E944F3981E001C0A7 -:1054500080E09091F41492FF02C091E089278823A4 -:1054600041F08A9A809108018160809308015F9AD7 -:1054700008958A98809108018E7F809308015F9833 -:1054800008951F920F920FB60F9211240BB60F9230 -:105490002F933F934F935F936F937F938F939F933C -:1054A000AF93BF93EF93FF9380919E10811139C208 -:1054B0008091AE1080FD8F9A80FF8F9890910B01A4 -:1054C000482F42709D7F942B90930B0141B38470C1 -:1054D00090E095958795942F9D7F892B81BB91B303 -:1054E0008091AD10282F217030E066E0220F331F2D -:1054F0006A95E1F79F7B292B21BB90910B01282F07 -:105500002270220F220F977F922B90930B0121B3D1 -:1055100082FB992790F9822F8E7F892B81BB809106 -:10552000AC1086BD82E085BD81E080939E107894AA -:105530008091C0109091C110892B09F0ACC080916E -:10554000A7139091CC13981709F49BC0E091A7136F -:105550002E2F30E086E0E89FF0011124E855FC4E44 -:10556000F093C110E093C0108381948190938900DF -:1055700080938800808191819093BC108093BB10B0 -:10558000E2818091BD108E1761F1E093BD1081E141 -:10559000E89FF0011124E353FC4EF093BF10E09319 -:1055A000BE1085859685A785B089B695A7959795F0 -:1055B00087958093A7109093A810A093A910B093FB -:1055C000AA108093A3109093A410A093A510B09359 -:1055D000A61080939F109093A010A093A110B09359 -:1055E000A210E091BE10F091BF10908180919C10AC -:1055F00089278093AE1086E0829FD001839FB00DF3 -:105600001124A855BC4E15962C9181819281A381BD -:10561000B481022E04C0B695A795979587950A94F4 -:10562000D2F78093AF109093B010A093B110B093C5 -:10563000B21085819681A781B085022E04C0B695EF -:10564000A795979587950A94D2F78093B310909376 -:10565000B410A093B510B093B61081859285A38540 -:10566000B48504C0B695A795979587952A95D2F7E6 -:105670008093B7109093B810A093B910B093BA105C -:105680000AC0C8DE9FB7F8948091B51484608093F7 -:10569000B5149FBF46C18091B6148130B1F489B171 -:1056A000807190910415891781F01092B6148CE0E6 -:1056B000EAE0F5E1A6E1B5E101900D928A95E1F706 -:1056C0008091B51480648093B5141092AD10409110 -:1056D0009F105091A0106091A1107091A210809124 -:1056E000AF109091B010A091B110B091B210840F92 -:1056F000951FA61FB71F80939F109093A010A09393 -:10570000A110B093A210E091BE10F091BF1045859A -:10571000568567857089481759076A077B0768F5BA -:1057200021E02093AD104585568567857089841BDF -:10573000950BA60BB70B80939F109093A010A0938E -:10574000A110B093A210208180910A1590910B15A1 -:10575000A0910C15B0910D1520FF04C00197A1096F -:10576000B10903C00196A11DB11D80930A15909344 -:105770000B15A0930C15B0930D154091A3105091EB -:10578000A4106091A5107091A6108091B310909113 -:10579000B410A091B510B091B610840F951FA61F3C -:1057A000B71F8093A3109093A410A093A510B0935B -:1057B000A6104585568567857089481759076A0779 -:1057C0007B0778F52091AD1022602093AD104585C0 -:1057D000568567857089841B950BA60BB70B809344 -:1057E000A3109093A410A093A510B093A6102081AD -:1057F00080910E1590910F15A0911015B091111573 -:1058000021FF04C00197A109B10903C00196A11DA0 -:10581000B11D80930E1590930F15A0931015B093A2 -:1058200011154091A7105091A8106091A910709186 -:10583000AA108091B7109091B810A091B910B091B2 -:10584000BA10840F951FA61FB71F8093A7109093BF -:10585000A810A093A910B093AA1045855685678516 -:105860007089481759076A077B0778F52091AD10B2 -:1058700024602093AD104585568567857089841B0B -:10588000950BA60BB70B8093A7109093A810A0932D -:10589000A910B093AA102081809112159091131530 -:1058A000A0911415B091151522FF04C00197A1090C -:1058B000B10903C00196A11DB11D809312159093EB -:1058C0001315A0931415B093151580910715843006 -:1058D00039F49091AD108091231589238093AD10F8 -:1058E0008091BB109091BC1001979093BC10809355 -:1058F000BB10892B69F41092C1101092C0108091D6 -:10590000A7138F5F8093A713863011F41092A7130B -:105910009091AD1080919D1089278093AD101092C9 -:105920009E10FF91EF91BF91AF919F918F917F91C9 -:105930006F915F914F913F912F910F900BBE0F9000 -:105940000FBE0F901F9018958091F41482FF08C02D -:105950008A9A809108018160809308015F9A07C04C -:105960008A98809108018E7F809308015F988091CA -:1059700007158C70A1F080919C108093AE108091DF -:105980009D108093AD108091E714880F845081950D -:105990008093AC1080916F00826080936F000895B7 -:1059A000E0EAF0E080818F7D80835C980895CF925B -:1059B000DF92EF92FF926A017B01811105C0FF9097 -:1059C000EF90DF90CF90ECCF813011F45C9801C064 -:1059D0005C9A83E28093A0008091A100807E8A611E -:1059E0008093A1008FEF9FEF9093A9008093A80070 -:1059F00020E030E0A901C701B6010E942C70181602 -:105A0000F4F620E030E0A901C701B6010E942C7035 -:105A100087FD11C020E030E04AE754E4C701B60139 -:105A20000E944A72181654F4C12CD12C8AE7E82E31 -:105A300084E4F82E03C0C12CD12C76012CEE31E188 -:105A400043E852E4C701B6010E94857220E030E0CD -:105A500040E05FE30E94536F0E9409710E94A070B2 -:105A60007093AB006093AA005C9AFF90EF90DF9078 -:105A7000CF900895CF92DF92EF92FF92CF93DF9372 -:105A8000C82F6A017B0120E030E0A901C701B601FF -:105A90000E942C7087FDE2C0C43608F441C08CE936 -:105AA0008C0F20E0833098F590E0880F991F880FC5 -:105AB000991F223079F0FC01233011F1213019F0C7 -:105AC000E954FB4E02C0ED53FB4EC082D182E2820C -:105AD000F382C1C0EC01C153DB4E20E030E040E76F -:105AE00052E4C701B6010E94857220E030E040E731 -:105AF00052E40E948572688379838A839B83ABC05A -:105B0000E552FB4EF7FAF094F7F8F094DECF2F5FF2 -:105B10008A3008F4A5C0243009F4A2C08A50C2CF4C -:105B2000C701B6010E9433730E94A0708C2F90E0D1 -:105B30008C31910508F094C0FC018827E256FF4F94 -:105B40008F4F0C949873633008F48CC06093E71403 -:105B500082C06093EA147FC06093E81402C060932F -:105B6000E914D9DB78C08091F414662311F08460C5 -:105B70004CC08B7F4AC08091F414662311F080647E -:105B800044C08F7B42C08091F414662311F080687A -:105B90003CC08F773AC06093EB145DC0C092EC14A8 -:105BA000D092ED14E092EE14F092EF1454C0C09233 -:105BB000F014D092F114E092F214F092F3144BC06E -:105BC0008091F414662311F081601FC08E7F1DC088 -:105BD0008091F414662321F084FF46C0806215C0D2 -:105BE0008F7D13C08091F414662311F0886001C08A -:105BF000877F8093F4140E94005D2DC08091F4147F -:105C0000662311F0806101C08F7C8093F41423C05F -:105C10006093F51420C0C092F614D092F714E0926D -:105C2000F814F092F91417C0C092FA14D092FB1431 -:105C3000E092FC14F092FD140EC070E07093FF141B -:105C40006093FE1408C0C0920015D0920115E09236 -:105C50000215F092031552DB80E007C084E005C016 -:105C600083E003C086E001C08AE0DF91CF91FF901E -:105C7000EF90DF90CF9008952DE0829FC001112416 -:105C80004CE050E0965F0C943A5D1F93CF93DF9306 -:105C9000182FEB018DE0189FB0011124765F4CE0C6 -:105CA00050E0CE010E947D5D892B51F48CE0FE0115 -:105CB00011928A95E9F7BE01812FDEDF80E001C0F5 -:105CC00081E0DF91CF911F910895EF92FF920F93A2 -:105CD0001F93CF93DF93CDB7DEB72C970FB6F89411 -:105CE000DEBF0FBECDBF182F80FFC6C08AE08093F5 -:105CF000E7148FEF8093EA141092E81487E0809302 -:105D0000E91483E08093EB148AE097EDA3E2BCE30F -:105D10008093EC149093ED14A093EE14B093EF14D1 -:105D20008FE692E1A3E0BBE38093F0149093F1142B -:105D3000A093F214B093F3141092F51480E090E065 -:105D4000A8ECB1E48093F6149093F714A093F814A0 -:105D5000B093F91480E090E0AAEFB3E48093FA14D2 -:105D60009093FB14A093FC14B093FD148AEF90E081 -:105D70009093FF148093FE1480E090E0A0E8BFE3CE -:105D80008093001590930115A0930215B09303150D -:105D900084E08093F41480E090E0A8ECB5E4809374 -:105DA000B7149093B814A093B914B093BA14809315 -:105DB000BB149093BC14A093BD14B093BE148093F5 -:105DC000BF149093C014A093C114B093C21480E088 -:105DD00090E5A3ECB7E48093C3149093C414A0930C -:105DE000C514B093C6148093C7149093C814A0939D -:105DF000C914B093CA148093CB149093CC14A0937D -:105E0000CD14B093CE1480E090EAACE0B7E4809378 -:105E1000CF149093D014A093D114B093D214809344 -:105E2000D3149093D414A093D514B093D614809324 -:105E3000D7149093D814A093D914B093DA1480E0B7 -:105E400090E4ACE1B6EC8093DB149093DC14A09367 -:105E5000DD14B093DE148093DF149093E014A093CC -:105E6000E114B093E2148093E3149093E414A093AC -:105E7000E514B093E61442DA11FF0FC0CE0101968B -:105E80007C018CE0F70111928A95E9F700E0B701F7 -:105E9000802FF2DE0F5F0830D1F712FF0AC060E0FA -:105EA00080E09BE00E94185D60E081E59BE00E943D -:105EB000185D13FF05C060E08EEA9BE00E94185D4C -:105EC0002C960FB6F894DEBF0FBECDBFDF91CF91F9 -:105ED0001F910F91FF90EF9008951F920F920FB6B0 -:105EE0000F9211240BB60F922F933F934F935F9312 -:105EF0006F937F938F939F93AF93BF93EF93FF9392 -:105F00008091360123E030E03093641020936310D9 -:105F10008F33A9F050F4883109F1813211F59FB720 -:105F2000F8948091B514886015C0803471F08E3774 -:105F3000C1F49FB7F8948091B51482600BC09FB7ED -:105F4000F8948091B514816005C09FB7F894809152 -:105F5000B51480628093B5149FBF14C00E94905600 -:105F600011C0E091E00F91E09E0F903809F490E0AD -:105F70002091DF0F921731F0F0E0E15AF04F80836B -:105F80009093E00FFF91EF91BF91AF919F918F910F -:105F90007F916F915F914F913F912F910F900BBE29 -:105FA0000F900FBE0F901F9018951F920F920FB673 -:105FB0000F9211240BB60F922F933F934F935F9341 -:105FC0006F937F938F939F93AF93BF93EF93FF93C1 -:105FD0008091D60022E030E030936410209363106B -:105FE0008F33A9F050F4883109F1813211F59FB750 -:105FF000F8948091B514886015C0803471F08E37A4 -:10600000C1F49FB7F8948091B51482600BC09FB71C -:10601000F8948091B514816005C09FB7F894809181 -:10602000B51480628093B5149FBF14C00E9490562F -:1060300011C0E091E00F91E09E0F903809F490E0DC -:106040002091DF0F921731F0F0E0E15AF04F80839A -:106050009093E00FFF91EF91BF91AF919F918F913E -:106060007F916F915F914F913F912F910F900BBE58 -:106070000F900FBE0F901F9018951F920F920FB6A2 -:106080000F9211240BB60F922F933F934F935F9370 -:106090006F937F938F939F93AF93BF93EF93FF93F0 -:1060A0008091CE0021E030E03093641020936310A3 -:1060B0008F33A9F050F4883109F1813211F59FB77F -:1060C000F8948091B514886015C0803471F08E37D3 -:1060D000C1F49FB7F8948091B51482600BC09FB74C -:1060E000F8948091B514816005C09FB7F8948091B1 -:1060F000B51480628093B5149FBF14C00E9490565F -:1061000011C0E091E00F91E09E0F903809F490E00B -:106110002091DF0F921731F0F0E0E15AF04F8083C9 -:106120009093E00FFF91EF91BF91AF919F918F916D -:106130007F916F915F914F913F912F910F900BBE87 -:106140000F900FBE0F901F9018951F920F920FB6D1 -:106150000F9211240BB60F922F933F934F935F939F -:106160006F937F938F939F93AF93BF93EF93FF931F -:106170008091C60010926410109263108F33A9F0C2 -:1061800050F4883109F1813211F59FB7F89480916C -:10619000B514886015C0803471F08E37C1F49FB794 -:1061A000F8948091B51482600BC09FB7F8948091E9 -:1061B000B514816005C09FB7F8948091B5148062D2 -:1061C0008093B5149FBF14C00E94905611C0E091F7 -:1061D000E00F91E09E0F903809F490E02091DF0FDE -:1061E000921731F0F0E0E15AF04F80839093E00F86 -:1061F000FF91EF91BF91AF919F918F917F916F919F -:106200005F914F913F912F910F900BBE0F900FBE5A -:106210000F901F9018951F920F920FB60F92112496 -:106220000BB60F928F939F93EF93FF938091621021 -:10623000E82FF0E0EE51F04F9081909336018F5FA0 -:10624000803809F480E0809362109091E10F891307 -:1062500005C0809131018F7D80933101FF91EF91D5 -:106260009F918F910F900BBE0F900FBE0F901F90BC -:1062700018951F920F920FB60F9211240BB60F9222 -:106280008F939F93EF93FF9380916210E82FF0E03C -:10629000EE51F04F90819093D6008F5F803809F4D3 -:1062A00080E0809362109091E10F891305C0809186 -:1062B000D1008F7D8093D100FF91EF919F918F91BD -:1062C0000F900BBE0F900FBE0F901F9018951F924E -:1062D0000F920FB60F9211240BB60F928F939F93CC -:1062E000EF93FF9380916210E82FF0E0EE51F04FB2 -:1062F00090819093CE008F5F803809F480E0809386 -:1063000062109091E10F891305C08091C9008F7DC3 -:106310008093C900FF91EF919F918F910F900BBED9 -:106320000F900FBE0F901F9018951F920F920FB6EF -:106330000F9211240BB60F928F939F93EF93FF93BD -:1063400080916210E82FF0E0EE51F04F9081909331 -:10635000C6008F5F803809F480E0809362109091CE -:10636000E10F891305C08091C1008F7D8093C1002A -:10637000FF91EF919F918F910F900BBE0F900FBEE9 -:106380000F901F901895E091E10F91E09E0F9038CB -:1063900031F490E004C02091B51424FD2FC0209169 -:1063A00062102917C1F3F0E0EE51F04F8083909313 -:1063B000E10F80916310909164108130910569F034 -:1063C00030F08230910579F0039799F0089580912B -:1063D000C10080628093C10008958091C9008062ED -:1063E0008093C90008958091D10080628093D1008C -:1063F0000895809131018062809331010895CF9397 -:10640000C82F83EB98E006D2C830B1F190F4C430C5 -:1064100051F148F4C23001F118F5C13009F040C023 -:106420008BE998E01BC0C63009F118F58CE598E0BF -:1064300015C0C43169F140F4CA3021F100F1CB300C -:1064400079F580E794E02AC0C63129F1F0F0C23333 -:1064500039F58AE794E022C089E898E0DBD125C0CD -:1064600087E798E0FBCF8DE698E0F8CF8DE498E0E1 -:10647000F5CF8CE298E0F2CF83E298E0EFCF88E1AD -:1064800098E0ECCF85E098E0E9CF8FEE97E0E6CF9B -:1064900085E794E003C08BED97E0E0CF09D205C01B -:1064A00089EC97E0B7D18C2FA7D186EC97E0CF91FC -:1064B000B1C11F93CF93DF93CDB7DEB72C970FB643 -:1064C000F894DEBF0FBECDBF80E090E00E94755D06 -:1064D000893009F052C04DE450E061E078E087EB8C -:1064E00094E10E947D5D892B09F447C020E030E0F3 -:1064F00048EC55E46091B7147091B8148091B914C8 -:106500009091BA140E942C70811137C020E030E0C5 -:1065100048EC55E46091BB147091BC148091BD149B -:106520009091BE140E942C70811127C020E030E0B1 -:1065300048EC55E46091BF147091C0148091C1146F -:106540009091C2140E942C70811117C010E0BE01FE -:106550006F5F7F4F812F99DB811102C087E04FDF92 -:106560001F5F1830A1F72C960FB6F894DEBF0FBE50 -:10657000CDBFDF91CF911F9108958FEFA6DBE6CFBE -:106580008F929F92AF92BF92CF92DF92EF92FF9243 -:106590000F931F93CF93DF93CDB7DEB72A970FB634 -:1065A000F894DEBF0FBECDBF6B017C01042F20E04D -:1065B00030E0A9010E942C7087FF06C08DE2E3DE67 -:1065C000F7FAF094F7F8F094102F123060F020E012 -:1065D00030E048EC52E4C701B6010E9485726B01BD -:1065E0007C011250F2CF00FF0AC020E030E040E210 -:1065F00051E4C701B6010E9485726B017C0120E065 -:1066000030E040E05FE3C701B6010E94536F0E9493 -:106610009B70E1E0F0E0EC0FFD1FE00FF11D2EE2BA -:10662000208310E03AE0832E912CA12CB12C61152F -:10663000710581059105A9F0101301C01F5FEE24BB -:10664000E394F12CEC0EFD1EE10EF11CA50194016A -:106650000E947673605DF7016083B901CA011F5F14 -:10666000E6CF80E3101748F4E1E0F0E0EC0FFD1F07 -:10667000E10FF11D80831F5FF5CF10130BC081E088 -:10668000810FE1E0F0E0EC0FFD1FE80FF11D1E5F50 -:1066900080E38083112339F0FE01E10FF11D808139 -:1066A00072DE1150F7CF2A960FB6F894DEBF0FBEF8 -:1066B000CDBFDF91CF911F910F91FF90EF90DF90B1 -:1066C000CF90BF90AF909F908F900895CF92DF9220 -:1066D000EF92FF921F93CF93DF93CDB7DEB7362FA4 -:1066E000142FCDB6DEB64DB75EB7411B51090FB6BC -:1066F000F8945EBF0FBE4DBF4F5F5F4F7A01242FEE -:10670000FA019E2F921B911728F4632F0E94567353 -:106710009193F7CF112349F0F701E10FF11D319764 -:106720008081805D30DE1150F5CF0FB6F894DEBE6B -:106730000FBECDBEDF91CF911F91FF90EF90DF9004 -:10674000CF90089580910815811108C09FB7F894E3 -:106750008091B51482608093B5149FBF08951F93F4 -:10676000CF93DF93CDB7DEB7C058D1090FB6F894F9 -:10677000DEBF0FBECDBFAE0149575F4FFA01619139 -:106780007191AF01CE0101960E941A7410E0E1E010 -:10679000F0E0EC0FFD1FE10FF11D8081882319F05F -:1067A000F2DD1F5FF4CFC058DF4F0FB6F894DEBFA5 -:1067B0000FBECDBFDF91CF911F91089543E0E0CE92 -:1067C0002091F41420FF08C02BE832E441E25DE39D -:1067D0000E94857241E001C040E0D2CE2091F414C5 -:1067E00020FF08C02BE832E441E25DE30E9485729D -:1067F00044E001C043E0C4CE8A3020F0843620F06B -:1068000043E003C041E001C042E06AE05FCF48E0FE -:1068100062E05CCFCF93DF93FC018491EF0121967E -:10682000882319F0B0DDFE01F8CFDF91CF910895F4 -:106830008F929F92AF92BF92EF92FF920F931F930E -:10684000CF938AED99E0E6DF86E1E82E85E1F82E28 -:1068500007EB14E1C0E0F701619171918191919191 -:106860007F01F80181909190A190B1908F010E94D9 -:10687000CE70A50194010E943370B0DFC23019F0D0 -:1068800088ED99E0C7DFCF5FC33029F786ED99E047 -:10689000C1DF80912215B0DF82ED99E0CF911F9189 -:1068A0000F91FF90EF90BF90AF909F908F90B2CFDD -:1068B000CF93DF93EC018991882311F064DDFBCF46 -:1068C000DF91CF910895AAE0B5E1E6E6F0E14D91C0 -:1068D0005D916D917D91419351936193719380E1AD -:1068E000E237F807A1F708958CE1E6E6F0E1DF0171 -:1068F0001D928A95E9F71092A5131092A61381E0D4 -:10690000809365101092C21008952F923F924F927B -:106910005F926F927F928F929F92AF92BF92CF922F -:10692000DF92EF92FF920F931F93CF93DF93C0916B -:10693000A613C11101C0C2E1C150D091C210DC1731 -:1069400009F41DC1EC2EF12C29E2C29F8001112413 -:106950000D531F4EF801A588B688C788D08C61A159 -:1069600072A183A194A19B01AC010E94536FF80115 -:1069700025A136A147A150A50E9485724B018C012B -:106980009B01AC01B501C6010E942C7087FD02C0BD -:106990005401680189E28E9DF0018F9DF00D112454 -:1069A000ED53FF4EC501D601818B928BA38BB48B27 -:1069B000C11101C0C2E1C150DC1761F029E22E9D76 -:1069C000C0012F9D900D11249C012D533F4E790144 -:1069D000D9E233C08091A513D81360C00E943F490B -:1069E0005DC0AC2EB12CDA9DC001DB9D900D112451 -:1069F000FC01ED53FF4E6F01C11101C0C2E1C15056 -:106A00008091A5138C1302C00E943F49DA9D80013A -:106A1000DB9D100D11240D531F4EF80185889688BB -:106A2000A788B08CA50194016189728983899489B2 -:106A30000E942C70811106C076018091C210C8138B -:106A4000D0CF2CC0F80161A172A183A194A19B01B8 -:106A5000AC010E94536FF80125A136A147A150A5B2 -:106A60000E948572F70121893289438954890E94E5 -:106A7000536F2B013C019B01AC01C501B4010E9485 -:106A80004A72F80118162CF4418A528A638A748A71 -:106A9000D3CF818A928AA38AB48ACECFD091C210F2 -:106AA000F9E2DF9F800111240D531F4EC1E0CD0F8D -:106AB000C23109F4C0E02090A61389E2382EC21535 -:106AC00009F45BC0CC2ED12C3C9CC0013D9C900DA8 -:106AD00011249C012D533F4E7901F80141885288C1 -:106AE00063887488F90181889288A388B488A50195 -:106AF0009401C301B2010E942C7087FF24C0F801E9 -:106B000061A172A183A194A19B01AC010E94536F6A -:106B1000F80125A136A147A150A50E948572A301C5 -:106B200092010E94536F2B013C019B01AC01C501F6 -:106B3000B4010E944A72181634F4F701418A528A4D -:106B4000638A748ADC2F3C9CF0013D9CF00D11247B -:106B5000ED53FF4E258936894789508D61897289A9 -:106B6000838994890E942C70811101C0DC2FCF5F32 -:106B7000C23109F4C0E08701A2CFD093C210DF91E7 -:106B8000CF911F910F91FF90EF90DF90CF90BF902A -:106B9000AF909F908F907F906F905F904F903F90BD -:106BA0002F9008952F923F924F925F926F927F9213 -:106BB0008F929F92AF92BF92CF92DF92EF92FF920D -:106BC0000F931F93CF93DF93CDB7DEB7E5970FB643 -:106BD000F894DEBF0FBECDBF4B8F5C8F6D8F072F3C -:106BE0002DAB2091A6132EA3422F50E05BA34AA306 -:106BF00039E2239FF0011124ED53FF4E15861686CE -:106C00001786108A15A216A217A210A6108249E9AB -:106C100056E766E97EE741A352A363A374A31C0170 -:106C200047EB54E158A74FA3CE0101969AAB89AB2D -:106C300026E630E13EA72DA74EA139E2439FC001D1 -:106C400011249C012C533F4E3AA729A7AE01435F64 -:106C50005F4F5DA34CA359A348A386E690E198AB90 -:106C60008FA727EB34E13F8F2E8F10E03F01AF015C -:106C7000435F5F4F5CAB4BAB2F0155E2450E511CA0 -:106C8000F10161917191819191911F01EE8DFF8DC3 -:106C900081909190A190B190FF8FEE8FA50194010A -:106CA0000E9485720E945572E9A9FAA961937193B5 -:106CB00081939193FAABE9ABEFA5F8A9C190D1907C -:106CC000E190F190F8ABEFA76C197D098E099F094F -:106CD0009B01AC0197FF07C022273327A901261B80 -:106CE000370B480B590BE9A5FAA521933193419332 -:106CF0005193FAA7E9A7EBA9FCA9C080D180E28053 -:106D0000F380C216D306E406F50610F469017A0191 -:106D1000EBA9FCA9C082D182E282F3820E94CE70EC -:106D2000A50194010E9433704B015C01E8A1F9A117 -:106D30006193719381939193F9A3E8A320E030E0EC -:106D4000A9010E942C7087FF0DC0112321F0113082 -:106D500021F084E003C081E001C082E0F301908172 -:106D6000892B8083A5019401C501B4010E9485721D -:106D7000F20120813181428153810E94536FF201DF -:106D800060837183828393831F5F133009F078CF10 -:106D90000E94F2724B015C01F20160837183828375 -:106DA0009383CD28CE28CF2809F422C220E030E0FA -:106DB000A9016B8D7C8D8D8D902F0E942C7087FD8D -:106DC00021C0FDA9FF2361F0A50194016B8D7C8D8D -:106DD0008D8D902F0E9485726B8F7C8F8D8F092FE8 -:106DE00020E030E040E85FE36B8D7C8D8D8D902F4F -:106DF0000E942C7087FF0DC01B8E1C8E20E82D8FEB -:106E00000FE307C039E93B8F46E74C8F56E95D8FAA -:106E10000EE7A501940160E070E080E89FE30E9426 -:106E2000337069A77AA78BA79CA7CE0149969A8F42 -:106E3000898FC12CD12C760129E2EAA1FBA12E9FDA -:106E4000C0012F9F900D11249C012C513F4E39A35E -:106E500028A3ECA1FDA180809180A280B38020E0D6 -:106E600030E0A901C501B4010E942C70882309F407 -:106E700072C0A501940169A57AA58BA59CA50E9465 -:106E800085722B013C01ECA1FDA16083718382839B -:106E900093839B01AC0160E070E080E89FE30E9477 -:106EA00033704B015C01E894B7F8EFA1F8A5248595 -:106EB000358546855785C501B4010E9485721B0141 -:106EC0008E8F192F2B8D3C8D4D8D502F0E944A7225 -:106ED00018162CF02B8E3C8EFE8DFD8F012FE8A115 -:106EE000F9A1F081FE8FE8A1F9A111812280338000 -:106EF000EFA1F8A5208D318D428D538DC501B401D0 -:106F00000E9485725B014C019B01AC016E8D712F5B -:106F1000C1010E942C7087FD03C0AE8E1B2D140191 -:106F20008E8D912FD101E8A1F9A180839183A28355 -:106F3000B383EDA5FEA52485358546855785C30118 -:106F4000B2010E9485729B01AC01C701B6010E948B -:106F5000526F6B017C012CA13DA12C5F3F4F3DA3E3 -:106F60002CA34DA55EA54C5F5F4F5EA74DA78FA1DB -:106F700098A5049698A78FA3E98DFA8DE217F307D9 -:106F800009F067CF8091A513FEA1F8130FC089E225 -:106F90002AA13BA1829FF001839FF00D1124ED53A4 -:106FA000FF4E118A128A138A148A14C02FEE3FEF03 -:106FB0004FE75FE3C701B6010E944A7218167CF4DE -:106FC00089E24AA15BA1849FF001859FF00D112405 -:106FD000ED53FF4E118E128E138E148E6AC02FEE5B -:106FE0003FEF4FE75FEBC701B6010E944A721816E8 -:106FF00044F08FEEC82EDD24DA948FE7E82E8FEB75 -:10700000F82EA701960160E070E080E89FE30E94FF -:10701000526F20E030E040E05FE30E9485720E9402 -:10702000F2726B017C0189E22AA13BA1829FF001EF -:10703000839FF00D1124ED53FF4E2091EC143091FD -:10704000ED144091EE145091EF1461A172A183A14F -:1070500094A10E948572A70196010E9485724B013E -:107060005C01A701960160E070E080E89FE30E9468 -:10707000526F9B01AC01C501B4010E9433706B01DA -:107080007C0120E030E0A9010E942C7087FF03C042 -:10709000C12CD12C760189E24AA15BA1849FF00129 -:1070A000859FF00D1124ED53FF4EC18ED28EE38EDD -:1070B000F48E2B8D3C8D4D8D502F6B8D7C8D8D8D59 -:1070C000902F0E9485727B018C0189E22AA13BA14D -:1070D000829FF001839FF00D1124ED53FF4EC701F5 -:1070E000D801858F968FA78FB0A3A18CB28CC38C4B -:1070F000D48C60907E1070907F1080908010909063 -:1071000081109301A401B701C8010E942C7087FD72 -:1071100005C0B62DA72DF82DE92D04C0BE2DAF2D2D -:10712000F02FE12F9501A6016B2F7A2F8F2F9E2F25 -:107130000E944A7218166CF09301A401B701C801AD -:107140000E942C7087FD03C05301640102C05701E7 -:10715000680189E24AA15BA1849FF001859FF00D3F -:107160001124ED53FF4EC501D601858B968BA78B5D -:10717000B08F8CE0FE013D96A2E7B0E101900D9248 -:107180008A95E1F7C701D80180937E1090937F1014 -:10719000A0938010B09381108CE0FE013196A6E69A -:1071A000B0E101900D928A95E1F78091651080938E -:1071B000A6138F5F823109F480E080936510E59615 -:1071C0000FB6F894DEBF0FBECDBFDF91CF911F91F8 -:1071D0000F91FF90EF90DF90CF90BF90AF909F9076 -:1071E0008F907F906F905F904F903F902F908DCBBE -:1071F000E5960FB6F894DEBF0FBECDBFDF91CF91FD -:107200001F910F91FF90EF90DF90CF90BF90AF90C4 -:107210009F908F907F906F905F904F903F902F90B6 -:1072200008956115710581059105C1F16A307105F7 -:107230008105910548F425E02A95F1F70000615099 -:10724000710981099109EDCF6436710581059105B8 -:1072500048F4E5E3EA95F1F700006A507109810905 -:107260009109DFCF683EF3E07F078105910558F46F -:10727000EFE8F1E03197F1F700C0000064567109C2 -:1072800081099109CECFEFE9FFE03197F1F700C016 -:107290000000685E734081099109C3CF089500978B -:1072A00041F0EFE9FFE03197F1F700C000000197EE -:1072B000F6CF0895AF92BF92CF92DF92EF92FF92F6 -:1072C0000F931F93CF93DF93CDB7DEB768970FB6B9 -:1072D000F894DEBF0FBECDBF10910515112309F440 -:1072E00051C081E08093071511FF06C083E099E04B -:1072F00091DA88EF98E01FC012FF06C083E099E0A2 -:1073000089DA8DEE98E017C013FF06C083E099E09C -:1073100081DA8AED98E00FC014FF06C083E099E09F -:1073200079DA8FEC98E007C015FF0CC083E099E094 -:1073300071DA83EC98E06EDA80EC98E06BDA84EF37 -:1073400091E0ADDF10FD08C08FB7F894909105155E -:10735000109205158FBF16C080ED99E05BDA8EEBB9 -:1073600099E058DA8DE599E055DA9FB7F894809165 -:10737000B5148F7E8093B5149FBF8091B51484FFA0 -:10738000FCCFE2CF1091B514112309F4ADC114FF65 -:1073900004C081E080930615B8C110FFDDC08CE009 -:1073A000EAE0F5E1DE011D9601900D928A95E1F784 -:1073B000809107158430E9F040F48130E9F080F0E5 -:1073C000823001F588E399E01CC0803179F018F42F -:1073D000883049F017C0803291F0803421F012C01B -:1073E00087E599E00EC082E599E00BC08CE499E056 -:1073F00008C086E499E005C08FE399E002C082E30B -:1074000099E008DA8091EB14837039F0BE01635F74 -:107410007F4FCE0101960E94D4488091EB1480FDED -:1074200005C08091EB1481FF60C017C08BE299E02A -:10743000F1D9CE0101967C0100E0F70161917191D3 -:10744000819191917F01CAD9023019F089E299E0C6 -:10745000E1D90F5F033089F7E4CF82E299E0DAD90E -:1074600080E8C82E85E1D82ECE0101967C0100E08F -:107470005701F60161917191819191916F01208580 -:107480003185428553850E94536F9B01AC01F70102 -:1074900060817181828193810E94526FF7016083C4 -:1074A000718382839383023079F42091981530910F -:1074B000991540919A1550919B150E94526FF701B2 -:1074C0006083718382839383F4E0EF0EF11CF501F6 -:1074D000608171818281938181D9023019F080E2CB -:1074E00099E098D90F5F033019F68091EB1482FF71 -:1074F0000CC08AE199E08ED98091A6139091A513D2 -:10750000891708F48E5E891B77D98091EB1483FF6D -:107510000CC085E199E07ED99091DF0F8091E00F5A -:10752000891708F48058891B67D98091EB1484FF70 -:1075300008C08FE099E06ED90E94095B43E062E0E9 -:10754000C5D88BE099E066D99FB7F8948091B514BF -:107550008E7F8093B5149FBF812F887609F447C032 -:1075600080910715882351F0982F9C77C1F18830BE -:1075700029F40E943F4981E0809308158091071506 -:10758000811103C092E09093081516FF0AC088305D -:1075900019F480E480930715809108158860809322 -:1075A000081513FF07C08091071585FD03C080E112 -:1075B0008093071515FF13C080ED99E02BD98CE758 -:1075C00099E028D98DE599E025D98091081581FDAC -:1075D000146084608093081580E2809307159FB73C -:1075E000F8948091B51487798093B5149FBF11FFEB -:1075F00057C0812F887609F04BC0809107158823EA -:1076000039F0807509F444C08091081581FF40C0AD -:107610008091081582FF1EC080916615882369F04D -:1076200040916715509168156091691570916A15C0 -:107630000E94D72C80EA9FE032DE80916515882376 -:1076400049F0823011F45C9A02C00E94BF5D88EE5E -:1076500093E025DE8091A5139091A6139817A1F0D1 -:10766000F9E28F9FC00111248D539F4E892B61F049 -:107670008091081583FD08C088E0809307150E945B -:1076800061490E94A42C02C010920715109208159F -:107690009FB7F8948091B5148D7F8093B5149FBFE8 -:1076A00012FF22C080910715807391F08091091517 -:1076B00081110EC08091081582FF04C00E94D02C59 -:1076C0000E94BF5D8091081582608093081504C0F8 -:1076D00010920815109207159FB7F8948091B51471 -:1076E0008B7F8093B5149FBF809107158C7711F025 -:1076F0000E94614980910715803239F48091081504 -:1077000081FF03C080E18093071568960FB6F89457 -:10771000DEBF0FBECDBFDF91CF911F910F91FF90C4 -:10772000EF90DF90CF90BF90AF90089520918A1096 -:1077300030918B1021153105B9F080919A109091FC -:107740009B108217930734F4019690939B108093BB -:107750009A100AC010929B1010929A1010928B10DF -:1077600010928A101092920D2091170D3091180DE1 -:1077700021153105A1F080919810909199108217F0 -:10778000930734F40196909399108093981007C052 -:10779000109299101092981081E08093930D80912F -:1077A000920D81111BC08091190D811117C080911C -:1077B00073008E7F809373001092160D10928B10C1 -:1077C00010928A101092180D1092170D10929B10A3 -:1077D00010929A101092991010929810089580911A -:1077E0009710811107C081E08093971080910B0161 -:1077F000806205C01092971080910B018F7D80935D -:107800000B0180919510909196109C012F5F3F4F36 -:107810003093961020939510209104023091050228 -:107820002817390760F410929610109295108091E5 -:1078300070008E7F8093700081E08093980D089592 -:1078400020915F0D3091600D2430310559F426E60A -:1078500036E646E65FE30E94337020E030E040E821 -:1078600052E40DC02530310539F52CEE31E548E301 -:107870005EE30E94337020E030E040E851E40E9473 -:1078800085720E949B706093821070938310809326 -:107890008410909385108AE69CE39093AF148093B4 -:1078A000AE141092A00085E08093A1008DEF9FEFB1 -:1078B0009093B1148093B0148091B0149091B1144E -:1078C0009093A5008093A4008091720081608093C2 -:1078D000720008958091821090918310A09184107D -:1078E000B0918510181619061A061B06F4F420919B -:1078F0009410222389F0109294100197A109B109E4 -:107900008093821090938310A0938410B09385107D -:1079100080910201806406C081E080939410809180 -:1079200002018F7B8093020108950E94815510927D -:10793000821010928310109284101092851081E0B2 -:107940008093970D0895CF93DF93EB018431D1F0AD -:1079500028F4882361F08C30A8F437C08233E9F032 -:1079600018F4873190F10EC0833311F10BC0888178 -:10797000882329F06FE774E0CE010E94B97361E8B3 -:1079800074E020C08881882329F06FE774E0CE017D -:107990000E94B97364E874E015C08881882329F0D7 -:1079A0006FE774E0CE010E94B97368E874E00AC022 -:1079B0008881882329F06FE774E0CE010E94B973B3 -:1079C0006CE874E0CE010E94B9738091270D882382 -:1079D00079F067E27DE0CE010E94B97382E3E7E2CD -:1079E000FDE0DF011D928A95E9F7DF91CF910895BF -:1079F0006AE773E0CE01DF91CF910C94B9738F9257 -:107A00009F92AF92BF92CF92DF92EF92FF920F932D -:107A10001F93CF93DF9306E015E18EE1F8011192F9 -:107A20008A95E9F70E9463340E94125D80E090E03D -:107A30000E940147CFE5DDE06E877F87888B998BB9 -:107A400081E090E00E9401476A8B7B8B8C8B9D8B41 -:107A500082E090E00E9401476E8B7F8B888F998F28 -:107A6000F801C480D580E680F780CA8EDB8EEC8E6C -:107A7000FD8EC084D184E284F384CE8EDF8EE8A2B2 -:107A8000F9A204851585268537850AA31BA32CA397 -:107A90003DA320E030E044EB52E40E94526F7B01B2 -:107AA0008C012A893B894C895D896E857F8588890F -:107AB0009989EDE88E2EEDE09E2EF9E8AF2EFDE0DF -:107AC000BF2EA5E8CA2EADE0DA2E10D7DF91CF91F8 -:107AD0001F910F91FF90EF90DF90CF90BF90AF90EC -:107AE0009F908F900895E1E0F1E080818062808333 -:107AF000808180648083E2E0F1E080818F7D8083FB -:107B000080818F7B808308953F9A479A08959C9A3D -:107B10009D9AA498A59A08958091040187788093EE -:107B20000401809103018877803451F440E050E0F3 -:107B300060E87FE384E00E943A2D60E974E02AC0A7 -:107B400080910301887791F440E050E060E87FE3A2 -:107B500084E00E943A2D67E974E08CE890E10E948D -:107B6000C47340E050E060EE70E41BC080910301FC -:107B7000887740E050E060E87FE3803231F484E0D1 -:107B80000E943A2D6EE974E005C084E00E943A2D0F -:107B900065EA74E08CE890E10E94C47340E050E034 -:107BA000BA0183E00E943A2D0C9459320F931F932F -:107BB000CF93DF9360915F0D84E893E00E94185D9E -:107BC0006091600D85E893E00E94185DC1E6DDE0FC -:107BD00088E993E069918C010F5F1F4F0E94185D47 -:107BE000C8010C391340B1F7C5E6DDE08EE893E03B -:107BF00069918C010F5F1F4F0E94185DC801023907 -:107C00001340B1F7C9E6DDE082E89CE069918C01A0 -:107C10000F5F1F4F0E94185DC80106381C40B1F766 -:107C2000DF91CF911F910F910895E7E5F4E186E987 -:107C30009BE3918380831092200185E08093210152 -:107C400081EF9FEF938382838281938190932501BB -:107C500080932401E3E7F0E08081816080830895D0 -:107C6000CF92DF92EF92FF920F931F93CF93DF9308 -:107C700069017A011092980DEAE0F1E0208120621A -:107C80002083EBE0F1E020812F7D2083660F771FBA -:107C9000709305026093040200E514E18FEE9BE30C -:107CA000F80191838083C0E7D0E088818E7F88834C -:107CB000E0EBF0E080818C7F8083E1EBF0E080817D -:107CC000877F8083A6EBB0E08C918F7D8C93888139 -:107CD0008D7F888380818460808380818C7F808396 -:107CE00020E034E244EF59E4C701B6010E9433704A -:107CF00020E034E244E75BE40E94857220E030E05B -:107D000040E85CE30E9485720E949B7020E031E0B5 -:107D1000C901861B970BF80193838283828193812B -:107D20008093B200888181608883DF91CF911F9119 -:107D30000F91FF90EF90DF90CF900895CF93C1E027 -:107D4000C093970D80915F0D9091600D04970297FD -:107D500000F51092970D10928610109287101092D5 -:107D6000881010928910809107018F7D8093070100 -:107D700080910801806280930801809102018062F5 -:107D80008093020160E070E084EB93E459DDC093DE -:107D9000960DCF9108951092821010928310109238 -:107DA0008410109285100E9481551092960D0C94AB -:107DB00081558091F41482FF08C08A98809108014F -:107DC0008E7F809308015F9807C08A9A809108018E -:107DD0008160809308015F9ADEDF1092910D089513 -:107DE0008F929F92AF92BF92CF92DF92EF92FF92CB -:107DF0006B017C0120E030E044EB53E40E944A72C6 -:107E000018160CF488C020E030E0A901C701B601C3 -:107E10000E942C7087FD7FC080915F0D9091600D56 -:107E200004970297B8F52091861030918710409101 -:107E3000881050918910C701B6010E94526F4B0102 -:107E40005C0120E030E0A9010E942C70882309F435 -:107E500062C0C0928610D0928710E0928810F09293 -:107E6000891020E030E0A901C501B4010E944A72E6 -:107E7000181624F4809102018F7D03C080910201C5 -:107E8000806280930201C501B4019F77D9DC109212 -:107E9000970D41C020E030E044E353E4C701B60150 -:107EA0000E944A7218161CF4C12CD12C7601A7012D -:107EB000960160E070E084E393E40E94526F20E05A -:107EC00030E044E353E40E9433709B01AC010E9414 -:107ED000536F20E030E040E05FE30E94536F609317 -:107EE000000270930102809302029093030220E04B -:107EF00030E040EA51E40E94337020E030EC4FE77C -:107F000054E40E9485720E94A070CB010E943154FB -:107F100081E08093970DFF90EF90DF90CF90BF901E -:107F2000AF909F908F90089580915F0D9091600D1C -:107F30000497029780F4809101018062809301018F -:107F4000809101018064809301018091020180622F -:107F500080930201089580E18093A1001092A00017 -:107F600082E08093B41480E29EE49093B3148093F3 -:107F7000B2149093A7008093A60082E18093A100A1 -:107F800020E030E040EA51E460910002709101028B -:107F900080910202909103020E94337020E030EC45 -:107FA0004FE754E40E9485720E94A070CB010C94AC -:107FB0003154CF93DF93D82FC8E05E98559AD7FFFE -:107FC00002C05D9A01C05D9865E070E080E090E0DD -:107FD00028D95E9A65E070E080E090E022D95E9852 -:107FE000DD0F65E070E080E090E01BD9C15029F71B -:107FF00062E070E080E090E014D9559A5D9A62E00A -:1080000070E080E090E0DF91CF910BC95E98559AC7 -:108010005D9865E070E080E090E003D95E9A65E0ED -:1080200070E080E090E0FDD8559A5D9A65E070E0E0 -:1080300080E090E0F6C8CF93559A5D9A62E070E0D8 -:1080400080E090E0EED85E9A62E070E080E090E040 -:10805000E8D855988BEF99B1C92FC07295FF05C02C -:108060008150C9F7D3DFC1E006C05E9862E070E0DE -:1080700080E090E0D6D88C2FCF910895559A5D9AE4 -:108080005E9A65E070E080E090E0CBD8559A5D980C -:1080900065E070E080E090E0C4D85E9862E070E057 -:1080A00080E090E0BEC8CF93DF93D82FC8E08091E6 -:1080B00002018F7780930201809101018460809397 -:1080C000010180910201D7FF02C0846001C08B7F53 -:1080D0008093020165E070E080E090E0A2D880919A -:1080E000020180688093020165E070E080E090E02A -:1080F00098D8809102018F7780930201DD0F65E0AF -:1081000070E080E090E08DD8C15089F662E070E0C8 -:1081100080E090E086D88091010184608093010125 -:108120008091020184608093020162E070E080E04F -:1081300090E0DF91CF9175C80F931F93CF93DF939A -:10814000C2E0D1E088818F77888301E011E0F801F7 -:1081500080818460808388818B7F888365E070E084 -:1081600080E090E05ED888818068888365E070E078 -:1081700080E090E056D8F801808184608083888117 -:108180008460888365E070E080E090E0DF91CF91CB -:108190001F910F9146C8CF93809101018460809315 -:1081A00001018091020184608093020162E070E02D -:1081B00080E090E036D880910201806880930201CF -:1081C00062E070E080E090E02CD8809101018B7F2C -:1081D000809301018BEF90910001C92FC47092FF31 -:1081E00005C08150C1F7A8DFC1E00AC0809102013B -:1081F0008F778093020162E070E080E090E011D818 -:108200008C2FCF9108950F931F93CF93DF9301E0AD -:1082100011E0F801808184608083C2E0D1E0888130 -:108220008460888388818068888365E070E080E06E -:1082300090E00E941139F8018081846080838881F8 -:108240008B7F888365E070E080E090E00E941139C8 -:1082500088818F77888362E070E080E090E0DF9132 -:10826000CF911F910F910C941139CF93DF93D82F99 -:10827000C8E04398399AD7FF02C0419A01C041989B -:1082800065E070E080E090E00E941139439A65E07B -:1082900070E080E090E00E9411394398DD0F65E0C6 -:1082A00070E080E090E00E941139C15011F762E067 -:1082B00070E080E090E00E941139399A419A62E0C2 -:1082C00070E080E090E0DF91CF910C9411394398F9 -:1082D000399A419865E070E080E090E00E941139A1 -:1082E000439A65E070E080E090E00E941139399A8D -:1082F000419A65E070E080E090E00C941139CF93F2 -:10830000399A419A62E070E080E090E00E94113971 -:10831000439A62E070E080E090E00E941139399861 -:108320008BEF96B1C92FC27091FF05C08150C9F77C -:10833000CEDFC1E007C0439862E070E080E090E0EB -:108340000E9411398C2FCF910895399A419A439AFE -:1083500065E070E080E090E00E941139399A419820 -:1083600065E070E080E090E00E941139439862E09F -:1083700070E080E090E00C9411394F925F926F9220 -:108380007F92AF92BF92CF92DF92EF92FF920F93C4 -:108390001F93CF93DF935C01EB018A01FC014080C6 -:1083A00051806280738020E030E0A901C301B201F6 -:1083B0000E942C7020E030E0A901811111C0688179 -:1083C00079818A819B810E944A721816E4F02AED15 -:1083D000C22E2FE0D22E29ECE22E2FEBF22E22C05D -:1083E000C301B2010E942C7087FD16C0A301920147 -:1083F000688179818A819B810E9433700E94F16F2C -:108400006B017C010FC09AEDC92E9FE0D92E99EC2B -:10841000E92E9FE3F92E06C0C12CD12C80ECE82E6A -:108420008FE7F82EC701B6010E9430702091610DD0 -:108430003091620D4091630D5091640D0E948572E0 -:108440009B01AC01C301B2010E94526FF501608330 -:10845000718382839383C701B6010E94E8722091E1 -:10846000610D3091620D4091630D5091640D0E9439 -:1084700085729B01AC01688179818A819B810E9410 -:10848000526F688379838A839B832091650D309135 -:10849000660D4091670D5091680DF8016081718102 -:1084A000828193810E94536FF8016083718382837C -:1084B0009383DF91CF911F910F91FF90EF90DF9009 -:1084C000CF90BF90AF907F906F905F904F90089546 -:1084D0004F925F926F927F92AF92BF92CF92DF9254 -:1084E000EF92FF920F931F93CF93DF935C01EB0109 -:1084F0008A01FC01408051806280738020E030E07E -:10850000A901C301B2010E942C7020E030E0A90152 -:10851000811111C0688179818A819B810E944A7290 -:108520001816E4F02AEDC22E2FE0D22E29ECE22E0E -:108530002FEBF22E22C0C301B2010E942C7087FDE6 -:1085400016C0A3019201688179818A819B810E9472 -:1085500033700E94F16F6B017C010FC09AEDC92E40 -:108560009FE0D92E99ECE92E9FE3F92E06C0C12C8D -:10857000D12C80ECE82E8FE7F82EC701B6010E94BF -:1085800030702091610D3091620D4091630D5091DA -:10859000640D0E948572A30192010E94536FF50140 -:1085A0006083718382839383C701B6010E94E8725E -:1085B0002091610D3091620D4091630D5091640DD9 -:1085C0000E9485729B01AC01688179818A819B81BF -:1085D0000E94536F688379838A839B832091650D02 -:1085E0003091660D4091670D5091680DF8016081E2 -:1085F0007181828193810E94526FF801608371833F -:1086000082839383DF91CF911F910F91FF90EF9021 -:10861000DF90CF90BF90AF907F906F905F904F9022 -:1086200008952F923F924F925F926F927F928F9216 -:108630009F92AF92BF92CF92DF92EF92FF920F93F1 -:108640001F93CF93DF93CDB7DEB762970FB6F89441 -:10865000DEBF0FBECDBF6D837E838F839887298752 -:108660003A874B875C87E982FA820B831C83160169 -:10867000BE86AD8684019B01AC010E9485726B01B0 -:108680007C0129853A854B855C85CA01B9010E9428 -:1086900085729B01AC01C701B6010E94536F0E9415 -:1086A000F2722B013C0120E030E04DE353E469819C -:1086B0007A818B819C810E94526F69837A838B833C -:1086C0009C83A3019201C301B2010E9485726B01D8 -:1086D0007C0129813A814B815C81CA01B9010E94E8 -:1086E00085729B01AC01C701B6010E94536F6B01FB -:1086F0007C0120E030E0A9010E94536F4B015C0136 -:108700009B01AC01C301B2010E9485722B013C01A7 -:1087100020E034E244E758E4C701B6010E948572C4 -:108720006F87788B898B9A8BA5019401C501B40161 -:108730000E9485729B01AC016F85788989899A892D -:108740000E94526F0E94F2729B01AC0169817A8192 -:108750008B819C810E9485724B015C01A70196016F -:10876000C701B6010E94536F20E030E04AE753E4AE -:108770000E9485726B017C01A5019401C301B201C5 -:108780000E94526FA70196010E9433700E94446FAD -:1087900021EE3EE245E652E40E948572F1016083DB -:1087A000718382839383A5019401C301B2010E9466 -:1087B000536FA70196010E9433700E94446F21EE0F -:1087C0003EE245E652E40E9485726B017C01ED8534 -:1087D000FE85608371838283938321EE3EE245E6CA -:1087E00052E4F10160817181828193810E94337032 -:1087F0000E94E87220E030E04AE753E40E9485726C -:108800009B01AC0169817A818B819C810E944A72B3 -:10881000181654F4F7FAF094F7F8F094ED85FE8505 -:10882000C082D182E282F38220E030E0A9016D8132 -:108830007E818F8198850E942C7020E030E0A90114 -:10884000811112C069857A858B859C850E944A7248 -:1088500018162CF480E090E0A4EBB2E411C080E0A4 -:1088600090E0A4EBB2EC0CC06D817E818F81988585 -:108870000E942C7087FF0AC080E090E0A0ECBFE768 -:10888000F80180839183A283B38317C02D813E8139 -:108890004F81588569857A858B859C850E943370C8 -:1088A0000E94F16F21EE3EE245E652E40E9485729D -:1088B000F801608371838283938362960FB6F89484 -:1088C000DEBF0FBECDBFDF91CF911F910F91FF9003 -:1088D000EF90DF90CF90BF90AF909F908F907F9060 -:1088E0006F905F904F903F902F9008952F923F92FE -:1088F0004F925F926F927F928F929F92AF92BF92B0 -:10890000CF92DF92EF92FF920F931F93CF93DF935B -:10891000CDB7DEB72E970FB6F894DEBF0FBECDBF32 -:1089200029833A834B835C83ED82FE820F83188711 -:10893000860115019E868D8621EE3EE245E652E4D3 -:108940000E9433702B013C0121EE3EE245E652E4E9 -:1089500069817A818B819C810E9433704B015C011B -:1089600021EE3EE245E652E46D817E818F8198855D -:108970000E9433706B017C01C301B2010E94307010 -:1089800069837A838B839C83C501B4010E94307014 -:108990006D837E838F839887C301B2010E94E87242 -:1089A0002B013C01C501B4010E94E87269877A87F6 -:1089B0008B879C8720E030E04AE753E469817A8125 -:1089C0008B819C810E9485724B015C0120E030E02C -:1089D0004AE753E46D817E818F8198850E9485727C -:1089E0009B01AC01C501B4010E94536F20E030E04F -:1089F000A9010E94536F4B015C01C701B6010E949F -:108A000030709B01AC01C501B4010E948572F80170 -:108A10006083718382839383C701B6010E94E872E9 -:108A20009B01AC01C501B4010E948572F101608314 -:108A300071838283938320E030E04AE753E4C301EB -:108A4000B2010E9485726B017C0120E030E04AE7B0 -:108A500053E469857A858B859C850E9485729B018C -:108A6000AC01C701B6010E94526F20E030E04DE337 -:108A700053E40E94536FED85FE856083718382838A -:108A800093832E960FB6F894DEBF0FBECDBFDF9155 -:108A9000CF911F910F91FF90EF90DF90CF90BF90FB -:108AA000AF909F908F907F906F905F904F903F908E -:108AB0002F9008952F923F924F925F926F927F92E4 -:108AC0008F929F92AF92BF92CF92DF92EF92FF92DE -:108AD0000F931F93CF93DF93CDB7DEB728970FB6D1 -:108AE000F894DEBF0FBECDBF2B013C0129833A8332 -:108AF0004B835C83ED82FE820F83188786018FE5AE -:108B0000282E8DE0382E20E030E044EB52E4F101D5 -:108B100066897789808D918D0E94526F6B017C01EF -:108B200024EE38E34EE553E46D817E818F81988594 -:108B30000E9433709B01AC01C701B6010E94536FC4 -:108B40006D837E838F83988724EE38E34EE553E46C -:108B500069817A818B819C810E943370F101228925 -:108B60003389448955890E94536F69837A838B8343 -:108B70009C8324EE38E34EE553E4C301B2010E9426 -:108B80003370F10126853785408951890E94536FE2 -:108B90006801ED80FE800F81188529813A814B8123 -:108BA0005C81A4DE28960FB6F894DEBF0FBECDBF61 -:108BB000DF91CF911F910F91FF90EF90DF90CF90B9 -:108BC000BF90AF909F908F907F906F905F904F90ED -:108BD0003F902F9008954F925F926F927F928F9265 -:108BE0009F92AF92BF92CF92DF92EF92FF920F933C -:108BF0001F932B013C0149015A01670178019B0138 -:108C0000AC010E943A73811170C0A5019401C501A5 -:108C1000B4010E943A73811168C0A7019601C7018F -:108C2000B6010E943A73811160C02AE939E947E030 -:108C300053E4C301B2010E944A7218160CF455C0E5 -:108C400020E030E0A901C301B2010E942C7087FD31 -:108C50004CC02DEC3CEC4FEE52E4C501B4010E9437 -:108C60004A7218160CF441C020E030E0A901C50199 -:108C7000B4010E942C7087FD38C0A301920160E00E -:108C800070E084E393E40E94526FA50194010E9476 -:108C9000526F4B015C0120E030E047E153E40E9459 -:108CA0004A72181614F120E030E040E251E4C501A8 -:108CB000B4010E942C7087FD18C020E030E040EB2A -:108CC00052E4C701B6010E944A72181674F020E0FF -:108CD00030E040EB52ECC701B6010E942C70881FB7 -:108CE0008827881F91E0892701C080E01F910F919C -:108CF000FF90EF90DF90CF90BF90AF909F908F90BC -:108D00007F906F905F904F900895EF92FF920F9336 -:108D10001F93CF93DF9382E393E00E94755D8B3BBB -:108D200019F080E293E002C084E393E02FE5E22EA5 -:108D30002DE0F22EC9E5DDE08C0109551D40C8018A -:108D40008C0F9D1F0E94755D8993EC16FD06B9F787 -:108D5000DF91CF911F910F91FF90EF900895AF9207 -:108D6000BF92CF92DF92EF92FF920F931F93CF9318 -:108D7000DF93A82E6EE00E94B952C82F6FE08A2DB3 -:108D80000E94B952D0E0DC2FCC27C82B7E016E01A7 -:108D900004E010E06EE08A2D0E94B952B82E6FE018 -:108DA0008A2D0E94B9522B2D30E0322F2227A901A3 -:108DB000482BCA01C816D90608F46C018E159F0508 -:108DC00008F47C01C80FD91F0150110919F7CE0111 -:108DD0008C199D098E199F0963E070E00E946273EF -:108DE000613050E1750708F48B01C801DF91CF9124 -:108DF0001F910F91FF90EF90DF90CF90BF90AF90B9 -:108E000008954F925F926F927F928F929F92AF924E -:108E1000BF92CF92DF92EF92FF920F931F93CF9367 -:108E2000DF938C019CDFEC010130110551F070F0F3 -:108E30000230110509F086C1E5E9FEE080E090E02E -:108E40001BC1EBE9FDE080E090E08EC0E5E1FEE0D3 -:108E500080E090E0A190B1907C012FEFE21AF20A3D -:108E6000008111810A151B0510F40150104F0C17D9 -:108E70001D0718F0CA15DB0530F4C7012FE3E21611 -:108E8000F10441F701C07C01B7016F5F7F4F072EEE -:108E9000000C880B990B0E94CE7026E636E646EE53 -:108EA0005FE30E9485729B01AC0166E676E686EE82 -:108EB00092E40E94526F2B013C01B8016C1B7D0BA8 -:108EC00080E090E00E94CC7020E030E040E859E380 -:108ED0000E94857220E030E044EB53E40E948572EA -:108EE0009B01AC01C301B2010E94536F2B013C01F5 -:108EF000B701FF0C880B990B0E94CE7026E636E670 -:108F000046EE5FE30E9485729B01AC0166E676E661 -:108F100086EE92E40E94526F6B017C01CA19DB0954 -:108F2000BE0180E090E00E94CC7020E030E040E89C -:108F300059E30E94857220E030E044EB53E40E9444 -:108F400085729B01AC01C701B6010E94526F9B0163 -:108F5000AC01C301B2017DC00C171D0798F4C70115 -:108F60002CE3E216F10491F0019111917C012FEFB5 -:108F7000E21AF20AA080B1800A151B0568F70150B9 -:108F8000104FEACFCA15DB0550F37C01B7016F5FC4 -:108F90007F4F072E000C880B990B0E94CE7026E69F -:108FA00036E646EE5FE30E94857226E636E646EE3A -:108FB0005FE30E94526F2B013C01BE016A197B09DD -:108FC00080E090E00E94CC7020E030E040E859E37F -:108FD0000E94857220E030E044EB53E40E948572E9 -:108FE0009B01AC01C301B2010E94526F4B015C01B5 -:108FF000B8016C1B7D0B80E090E00E94CC7020E0FB -:1090000030E040E859E30E94857220E030E044EB14 -:1090100053E40E9485722B013C01B701FF0C880BC1 -:10902000990B0E94CE7026E636E646EE5FE30E947C -:1090300085729B01AC01C301B2010E94536F26E609 -:1090400036E646EE5FE30E94526F9B01AC01C5011C -:10905000B4010E94536F20E030E040E05FE30E94E3 -:1090600085724B015C018DC00C171D0798F4C70178 -:1090700024E6E216F10491F0019111917C012FEFA9 -:10908000E21AF20AA080B1800A151B0568F70150A8 -:10909000104FEACFAC16BD0650F77C01B7016F5FE9 -:1090A0007F4F072E000C880B990B0E94CE7026E68E -:1090B00036E646EE5FE30E9485722B013C01BE015D -:1090C0006A197B0980E090E00E94CC7020E030E0DB -:1090D00040E859E30E94857220E030E044EB53E41D -:1090E0000E9485729B01AC01C301B2010E94526FC4 -:1090F0004B015C01B8016C1B7D0B80E090E00E948D -:10910000CC7020E030E040E859E30E94857220E016 -:1091100030E044EB53E40E9485722B013C01B7011F -:10912000FF0C880B990B0E94CE7026E636E646EEC1 -:109130005FE30E9485729B01AC01C301B2010E94F2 -:10914000536F83CF0130110559F098F002301105AB -:10915000C1F4812C912C94EBA92E92E4B92E11C06C -:1091600029E0822E26EF922E21EBA22E22E4B22EAF -:1091700008C085E2882E89E0982E83E0A82E82E43C -:10918000B82EC501B401DF91CF911F910F91FF90CF -:10919000EF90DF90CF90BF90AF909F908F907F9097 -:1091A0006F905F904F9008958F929F92AF92BF9271 -:1091B000CF92DF92EF92FF920F931F93CF93DF93A3 -:1091C000EB0127EBE22E24E1F22E8C016B018CE007 -:1091D000C80ED11C6991799189919991F70181907B -:1091E0009190A190B1907F010E94CE70A501940151 -:1091F0000E943370F80161937193819391938F0171 -:10920000CC15DD0539F7DF91CF911F910F91FF90BC -:10921000EF90DF90CF90BF90AF909F908F90089588 -:109220001F920F920FB60F9211240BB60F922F932D -:109230003F934F935F936F937F938F939F93AF93DE -:10924000BF93EF93FF9389B18095982F907184FF1E -:1092500003C091110E949056FF91EF91BF91AF9181 -:109260009F918F917F916F915F914F913F912F913E -:109270000F900BBE0F900FBE0F901F901895CF93BD -:10928000DF93C0912314D09124142097B9F081E08A -:109290008093261460913C1470913D1480913E148B -:1092A00090913F149B01AC010E948572698B7A8B6F -:1092B0008B8B9C8B1092241410922314DF91CF91EE -:1092C00008952F923F924F925F926F927F928F926A -:1092D0009F92AF92BF92CF92DF92EF92FF920F9345 -:1092E0001F93CF93DF93CDB7DEB7CD54D1090FB61F -:1092F000F894DEBF0FBECDBF80910715807723960F -:109300008FAF2397882389F020E030E0A901609196 -:109310003C1470913D1480913E1490913F140E9432 -:109320002C70882311F40C943F5220913C142F8B05 -:1093300030913D14388F40913E14498F50913F1425 -:109340005A8F80914C148B8390914D149D83A091E2 -:109350004E14AE83B0914F14BC8300913814109119 -:109360003914E0913A14E987F0913B14FD8720917C -:109370002B1430912C1440912D1450912E142DA3A8 -:109380003EA34FA358A7309127143DAF4091281416 -:109390004EAF509129145FAF80912A1421968FAF60 -:1093A0002197209133143091341440913514509109 -:1093B00036142DAB3EAB4FAB58AF3091CC13229649 -:1093C0003FAF2297409122144BA75091A6132496A9 -:1093D0005FAF24978091A5138B8F9091C210259633 -:1093E0009FAF2597A0912314B0912414BA8BA98B19 -:1093F00020912F1430913014409131145091321437 -:1094000029AF3AAF4BAF5CAF309144143B8B4091E6 -:1094100045144C8B509146145D8B809147148E8B74 -:10942000909140149C8FA0914114AD8FB091421443 -:10943000BE8FE0914314EF8F309048142090491470 -:10944000F0914A14F98320914B142A838091A71339 -:109450005BA5851709F4F4C649895A89452B09F09B -:1094600033C224965FAD24978B8D581709F478C7C3 -:10947000A82EB12CA9E2AA9DC001AB9D900D11248C -:10948000FC01ED53FF4EFA8BE98B80912614882363 -:1094900019F010922614BCC0809125148F5F85307E -:1094A00019F08093251402C010922514E091251420 -:1094B00021E12E9FF0011124E353FC4E89E28A9DA5 -:1094C000A0018B9D500D11244D535F4E7A01DA019E -:1094D0008C91808311964D915D916D917C91149743 -:1094E000DB01CA0123E0880F991FAA1FBB1F2A9521 -:1094F000D1F781839283A383B483D70115964D91CD -:109500005D916D917C911897DB01CA0133E0880F62 -:10951000991FAA1FBB1F3A95D1F785839683A7830E -:10952000B087D70119964D915D916D917C911C97F3 -:10953000DB01CA0143E0880F991FAA1FBB1F4A9590 -:10954000D1F781879287A387B487D7011D966D9144 -:109550007D918D919C9150978B019C0153E0000F60 -:10956000111F221F331F5A95D1F7058716872787AA -:10957000308B0E94CC706DAF7EAF8FAF21969FAFC6 -:109580002197F70125A136A147A150A50E9433706C -:109590006DA37EA38FA398A79B01AC0160E070E050 -:1095A00080EA9FE30E94337069AF7AAF8BAF9CAFC4 -:1095B0002396FFAD2397FF23D1F02B893C894D895A -:1095C0005E896B897C898D899E890E948572D7010D -:1095D00051966D937D938D939C935497BB89BF8BCC -:1095E000EC89E88FFD89F98F2E892A8F0DC0D7016C -:1095F00051966D917D918D919C9154970E94F2723C -:109600006F8B788F898F9A8F1DAA1EAA1FAA18AEFA -:1096100029E22A9DF0012B9DF00D1124ED53FF4E00 -:10962000FE87ED87C1A0D2A0E3A0F4A0A701960118 -:1096300060E070E080E09FE30E94337069877A8782 -:109640008B879C8723963FAD23973323F1F142E02C -:1096500040933714AD85BE8595964D905D906D9085 -:109660007C90989751968D909D90AD90BC9054971A -:10967000A50194010E9485729B01AC01C301B20156 -:109680000E94526F8B0189879D8720E030E0A901FD -:109690000E942C7087FF1BC1A7019601C701B6016C -:1096A0000E94536FA30192010E9485729B01AC013D -:1096B000C501B4010E94526F0E94F2726B8B7C8BC9 -:1096C0008D8B9E8B3F82288615C110923714ED85B5 -:1096D000FE85F5A1FF83AD85BE859696BC91B887C2 -:1096E000ED85FE8507A110A5EB8DEF5FE23109F452 -:1096F000E0E02496FFAD2497EF1789F029E22E9F32 -:10970000F0011124ED53FF4E618972898389948998 -:109710000E94F2726B8B7C8B8D8B9E8B04C01B8A9C -:109720001C8A1D8A1E8A2B893C894D895E896B891A -:109730007C898D899E890E9485722B013C0189E27A -:109740008A9DA0018B9D500D11244D535F4E5AA34D -:1097500049A3DA0151962D913D914D915C91549719 -:109760002D873E874F87588BA30192016D857E859B -:109770008F8598890E94526F29853A854B855C8533 -:109780000E9485722F813885A8010E94536F20E0C6 -:1097900030E040E05FE30E948572362E272E8983F9 -:1097A0009A8320E030E0A9010E944A7218160CF05A -:1097B00095C0232D322D49815A816F817885C8014A -:1097C0000E944A7218160CF071C0E9A1FAA1858CAA -:1097D000968CA78CB0A0A3019201C501B4010E9490 -:1097E000526F29853A854B855C850E9485726B8313 -:1097F0007D838E839C839B01AC01632D722D8981B7 -:109800009A810E944A72181694F5C501B4010E940B -:10981000F2726C8F7D8F8E8F9F8FA50194016D8565 -:109820007E858F8598890E942C70811106C0F1E099 -:10983000F093371409831A835DC02D853E854F85CB -:109840005889C501B4010E94526F29853A854B851C -:109850005C850E9485729B01AC016F817885C8018F -:109860000E94526F6F83788789839A8343C0A701D0 -:109870009601C701B6010E94536F232D322D4981F5 -:109880005A810E948572A30192010E94536F0E9427 -:10989000F2726C8F7D8F8E8F9F8F3F8228863B82E6 -:1098A0002D8229812E833A813C8324C042E040935B -:1098B000371409831A835F895C8F888D8D8F998D0A -:1098C0009E8FAA8DAF8F16C03F82288617C03F8219 -:1098D00028861B8A1C8A1D8A1E8A10C0BB89BC8FE1 -:1098E000EC89ED8FFD89FE8F2E892F8F1F821886C0 -:1098F00019821A8200E010E019861D8622965FAD5B -:109900002297452F50E05AA749A786E0849FF0018F -:10991000859FF00D1124E855FC4E8091251482831B -:10992000A989BA899596BC91B8ABE989FA89F6A15B -:10993000F9ABA989BA899796BC912696BFAF2697AD -:10994000E989FA89F0A52796FFAF279729AD3AADA7 -:109950004BAD5CAD68A979A98B2F9F2F0E94526FE8 -:109960006CA77DA78EA79FA720E030E0A9010E94E9 -:109970002C7087FF04C01CA61DA61EA61FA6209142 -:10998000371428A32B813D814E815C816F817885BE -:1099900089819A810E942C70811105C032E028963D -:1099A0003FAF289704C041E028964FAF289728A8DA -:1099B00059A92E965FAF2E9726968FAD26972D9696 -:1099C0008FAF2D9727963FAC27978EE3C82E83EC59 -:1099D000D82E8EE2E82E89E3F82E412C512C32014C -:1099E000C9A2DAA2EBA2FCA238A1332321F03130C4 -:1099F00009F485C0C5C0A989BA8991962D913D9178 -:109A00004D915C919497C701B6010E9485724B01FC -:109A10005C0120E030E040E05FE30E9485722F8926 -:109A2000388D498D5A8D0E94536FA70196010E946F -:109A300085729B01AC01622D2E967FAD2E972D96DF -:109A40008FAD2D97932D0E94526F262E2E967FAFAD -:109A50002E972D968FAF2D97392E2F8138854981DE -:109A60005A810E942C7087FF3DC02F813885498123 -:109A70005A8168A979A926968FAD269727969FAD1A -:109A800027970E94526F9B01AC010E94536F6B019C -:109A90007C012C8D3D8D4E8D5F8D6F89788D898DEC -:109AA0009A8D0E94536F9B01AC01C701B6010E94C1 -:109AB00033706B017C012896BFAD2897B8A3EC8D5D -:109AC000EF8BFD8DF88F2E8D298F3F8D3A8F2F8054 -:109AD00048852E964FAF2E9759812D965FAF2D97C3 -:109AE0003A80EBC0A50194016F89788D898D9A8D9C -:109AF0000E94536F6F8B788F898F9A8FDEC02C8D69 -:109B00003D8D4E8D5F8DC701B6010E9485729B0110 -:109B1000AC01622D2E967FAD2E972D968FAD2D9791 -:109B2000932D0E94526F4B015C012B813D814E8130 -:109B30005C810E942C7087FFB8C02B813D814E81D3 -:109B40005C81622D2E967FAD2E972D968FAD2D9731 -:109B5000932D0E94526F2C8D3D8D4E8D5F8D0E94F6 -:109B600033706B017C012B808D812E968FAF2E97E9 -:109B70009E812D969FAF2D973C80A2E0A8A39DC00B -:109B8000E989FA8921A132A143A154A1C701B601F3 -:109B90000E9485724B015C012F89388D498D5A8D49 -:109BA0000E942C7087FF52C020E030E040E05FE36D -:109BB000C501B4010E9485729B01AC016F89788D4B -:109BC000898D9A8D0E94526FA70196010E9485721D -:109BD0009B01AC01622D2E967FAD2E972D968FADF9 -:109BE0002D97932D0E94526F29966FAF29972A9631 -:109BF0007FAF2A972B968FAF2B972C969FAF2C97E2 -:109C0000980149855D850E944A721816FCF4A501E9 -:109C100094016F89788D898D9A8D0E94526F6F8B18 -:109C2000788F898F9A8F29962FAC29972A96FFAD26 -:109C30002A972E96FFAF2E972B962FAD2B972D960A -:109C40002FAF2D972C963FAC2C9737C098014985A4 -:109C50005D85622D2E967FAD2E972D968FAD2D971B -:109C6000932D0E94526F9B01AC010E94536F6B01B8 -:109C70007C012B893C894D895E896F89788D898D1E -:109C80009A8D0E94536F9B01AC01C701B6010E94DF -:109C900033706B017C01202E2E961FAF2E973985D5 -:109CA0002D963FAF2D973D8408C0282C2E969FAE51 -:109CB0002E972D96AFAE2D973B2CA7019601C30191 -:109CC000B2010E94536F2B013C0129A13AA14BA183 -:109CD0005CA10E942C7087FF07C0A301920169A1BB -:109CE0007AA18BA19CA120C02CA53DA54EA55FA566 -:109CF000622D2E967FAD2E972D968FAD2D97932D9D -:109D00000E944A72181644F52EE333EC4EE259E3F2 -:109D100069A17AA18BA19CA10E94536F69A37AA328 -:109D20008BA39CA3A30192010E94526F6B017C0143 -:109D3000980149855D85622D2E967FAD2E972D96D3 -:109D40008FAD2D97932D0E944A7218160CF44CCEAD -:109D500048A14093371403C058A1509337142DA144 -:109D60003EA14FA158A5622D2E967FAD2E972D9620 -:109D70008FAD2D97932D0E94857268A379A38CA730 -:109D800098AB0E9419706B017C016DAD7EAD8FADFB -:109D900021969FAD21970E9419704B015C01A7018C -:109DA00096010E94526F0E94A07069AB7AAB8BAB98 -:109DB0009CABA6E089A59AA5A89FF001A99FF00DEC -:109DC0001124E855FC4E29A93AA931832083232B7D -:109DD00009F087C023965FAD2397552309F481C00E -:109DE000C801A985BD858093381490933914A09338 -:109DF0003A14B0933B148B899C89AD89BE898093BA -:109E0000441490934514A0934614B09347148C8D3A -:109E10009D8DAE8DBF8D8093401490934114A0937F -:109E20004214B09343148B819D81AE81BC81809399 -:109E30004C1490934D14A0934E14B0934F148F81F3 -:109E40009885A981BA818093481490934914A0936E -:109E50004A14B0934B1422968FAD22978093CC1363 -:109E6000A989BA89B0932414A093231429AD3AADDB -:109E70004BAD5CAD20932F143093301440933114CC -:109E8000509332143B8D3093A5138DA19EA1AFA1A9 -:109E9000B8A580932B1490932C14A0932D14B093F9 -:109EA0002E149BA59093221410923C1410923D14F2 -:109EB00010923E1410923F141092331410923414E6 -:109EC0001092351410923614C0922714D092281490 -:109ED000E0922914F0922A142DA13EA14FA158A579 -:109EE00065C12DA93EA94FA958ADC301B2010E9479 -:109EF000536F2B013C0128A139A14CA558A9C501DC -:109F0000B4010E94526F9B01AC01C301B2010E94D7 -:109F100033704B015C0128A139A14CA558A9C70198 -:109F2000B6010E94526FA50194010E9485726DAB2B -:109F30007EAB8FAB98AF20EC31EE44E65EE4C5011A -:109F4000B4010E9485720E9419700E94A070603D49 -:109F5000E7E07E078105910560F446E029A53AA572 -:109F6000429FF001439FF00D1124E855FC4E1582ED -:109F700053C0603A5FE075078105910560F426E003 -:109F8000A9A5BAA52A9FF0012B9FF00D1124E85531 -:109F9000FC4E31E011C060344FE17407810591053A -:109FA00068F426E0A9A5BAA52A9FF0012B9FF00D21 -:109FB0001124E855FC4E32E035830CC0A6E049A5DB -:109FC0005AA5A49FF001A59FF00D1124E855FC4E61 -:109FD000B3E0B58346E029A53AA5429FF001439F2F -:109FE000F00D1124E855FC4E2581022E04C09695F3 -:109FF0008795779567950A94D2F7A9A9BAA902C05F -:10A00000AA0FBB1F2A95E2F7B183A08361157105E2 -:10A01000B1E08B07910568F446E029A53AA5429F77 -:10A02000F001439FF00D1124E855FC4E74836383C7 -:10A0300004C08FEF9FEF94838383BBA4B39496E017 -:10A04000B91201C0B12C980149855D85622D2E960B -:10A050007FAD2E972D968FAD2D97932D0E944A722E -:10A060001816CCF4822D2E969FAD2E972D96AFAD5F -:10A070002D97B32DE989FA8985A396A3A7A3B0A745 -:10A08000F8A1FDAF29A12EAF3CA53FAF48A921966D -:10A090004FAF2197CDC020E030E0A901622D2E9670 -:10A0A0007FAD2E972D968FAD2D97932D0E944A72DE -:10A0B00018160CF0A6C0C801A985BD858093381478 -:10A0C00090933914A0933A14B0933B148B899C89D4 -:10A0D000AD89BE898093441490934514A09346148F -:10A0E000B09347148C8D9D8DAE8DBF8D80934014A1 -:10A0F00090934114A0934214B09343148B819D819B -:10A10000AE81BC8180934C1490934D14A0934E1457 -:10A11000B0934F148F819885A981BA818093481498 -:10A1200090934914A0934A14B0934B145BA5509399 -:10A13000CC1389899A89909324148093231429AD90 -:10A140003AAD4BAD5CAD20932F1430933014409357 -:10A150003114509332143B8D3093A5138DA19EA1E1 -:10A16000AFA1B8A580932B1490932C14A0932D1419 -:10A17000B0932E14B092221410923C1410923D14FD -:10A1800010923E1410923F14109233141092341413 -:10A190001092351410923614C0922714D0922814BD -:10A1A000E0922914F0922A149C01AD01C701B60176 -:10A1B0000E943370A989BA8995966D937D938D938A -:10A1C0009C9398975CD8BB8DB093C210C35BDF4F54 -:10A1D0000FB6F894DEBF0FBECDBFDF91CF911F91B8 -:10A1E0000F91FF90EF90DF90CF90BF90AF909F9036 -:10A1F0008F907F906F905F904F903F902F900C9436 -:10A2000085342496EFAD2497FB8DEF1779F08F2FCF -:10A210008F5F823109F480E02B8D25963FAD259725 -:10A22000231303C025968FAF25978B8F1A8A198A1F -:10A230003F8028844BA522964FAF2297BBA606C924 -:10A24000C801A985BD858093381490933914A093D3 -:10A250003A14B0933B148B899C89AD89BE89809355 -:10A26000441490934514A0934614B09347148F89D7 -:10A27000988DA98DBA8D80933C1490933D14A09332 -:10A280003E14B0933F148C8D9D8DAE8DBF8D809309 -:10A29000401490934114A0934214B09343148B81C3 -:10A2A0009D81AE81BC8180934C1490934D14A093FA -:10A2B0004E14B0934F14832D922DA981BA818093AF -:10A2C000481490934914A0934A14B0934B142296C7 -:10A2D0008FAD22978093CC13A989BA89B0932414A7 -:10A2E000A093231429AD3AAD4BAD5CAD20932F1450 -:10A2F0003093301440933114509332143B8D30938B -:10A30000A5138DAD9EADAFAD2196BFAD21978093C6 -:10A31000271490932814A0932914B0932A148DA184 -:10A320009EA1AFA1B8A580932B1490932C14A09359 -:10A330002D14B0932E142DA93EA94FA958AD2093EA -:10A3400033143093341440933514509336143BA592 -:10A350003093221425964FAD25974093C2108FC09D -:10A36000C801A985BD858093381490933914A093B2 -:10A370003A14B0933B148B899C89AD89BE89809334 -:10A38000441490934514A0934614B09347148F89B6 -:10A39000988DA98DBA8D80933C1490933D14A09311 -:10A3A0003E14B0933F148C8D9D8DAE8DBF8D8093E8 -:10A3B000401490934114A0934214B09343148B81A2 -:10A3C0009D81AE81BC8180934C1490934D14A093D9 -:10A3D0004E14B0934F14832D922DA981BA8180938E -:10A3E000481490934914A0934A14B0934B142296A6 -:10A3F0005FAD22975093CC13109224141092231423 -:10A4000089AD9AADABADBCAD80932F149093301451 -:10A41000A0933114B093321424969FAD2497909357 -:10A42000A5138DAD9EADAFAD2196BFAD21978093A5 -:10A43000271490932814A0932914B0932A142DA1C3 -:10A440003EA14FA158A520932B1430932C14409378 -:10A450002D1450932E148DA99EA9AFA9B8AD809349 -:10A46000331490933414A0933514B09336149BA5F1 -:10A47000909322142596AFAD2597A093C210C35B8D -:10A48000DF4F0FB6F894DEBF0FBECDBFDF91CF9187 -:10A490001F910F91FF90EF90DF90CF90BF90AF9002 -:10A4A0009F908F907F906F905F904F903F902F90F4 -:10A4B0000895CF93DF930E940A2A8BE2E5E2F4E14C -:10A4C000DF011D928A95E9F783E2EFE9F0E1DF0110 -:10A4D0001D928A95E9F71092241410922314109279 -:10A4E000A7131092CC1381E08093221410929E1037 -:10A4F0000E948B2981B390919D109170C92FB0E07B -:10A50000DB2F96E0CC0FDD1F9A95E1F78F7BC82BF0 -:10A51000C1BBEBE0F1E0908180919D108270880FCB -:10A52000880F977F892B808381B390919D1092FB38 -:10A53000992790F98E7F892B81BB80919C1080FD9B -:10A540008F9A80FF8F98808190919C1092708D7F60 -:10A55000892B808321B390919C109470892F90E077 -:10A5600095958795922F9D7F892B81BBDF91CF9108 -:10A570000895CF93DF93C62F813009F48EC038F150 -:10A58000823009F069C10E943E408CE60E94D93FAA -:10A590000E941B408C2F0E94D93F0E941B400E94AA -:10A5A0003E408DE60E94D93F0E941B4062E070E071 -:10A5B00080E090E00E941139559A5D9A62E070E067 -:10A5C00080E090E00E941139D8E0C0E002C10E9412 -:10A5D000A5418CE60E9435410E947F418C2F0E944C -:10A5E00035410E947F410E94A5418DE60E94354180 -:10A5F0000E947F4162E070E080E090E00E941139AB -:10A60000399A419A62E070E080E090E00E9411394E -:10A61000D8E0C0E0439865E070E080E090E00E9400 -:10A620001139439ACC0F65E070E080E090E00E9421 -:10A63000113939983199C16065E070E080E090E0AF -:10A640000E941139D15031F74398399A419A62E00A -:10A6500070E080E090E00E941139439A65E070E07C -:10A6600080E090E00E941139439862E070E080E061 -:10A6700090E00E941139399A419A62E070E080E0DE -:10A6800090E00E941139439862E070E080E090E031 -:10A690000E9411390E946741E0C00E9403418CE68C -:10A6A0000E9453400E94CB408C2F0E9453400E9436 -:10A6B000CB400E9403418DE60E9453400E94CB4054 -:10A6C00062E070E080E090E00E9411398091010129 -:10A6D0008460809301018091020184608093020173 -:10A6E00062E070E080E090E00E941139D8E0C0E0C4 -:10A6F000809102018F778093020165E070E080E035 -:10A7000090E00E94113980910201806880930201DB -:10A71000CC0F65E070E080E090E00E9411398091FC -:10A7200001018B7F809301018091000182FDC16056 -:10A7300065E070E080E090E00E941139D150C1F6F0 -:10A74000809102018F7780930201809101018460E2 -:10A75000809301018091020184608093020162E094 -:10A7600070E080E090E00E941139809102018068E1 -:10A770008093020165E070E080E090E00E94113972 -:10A78000809102018F778093020162E070E080E0A7 -:10A7900090E00E9411398091010184608093010151 -:10A7A0008091020184608093020162E070E080E0A9 -:10A7B00090E00E941139809102018F77809302010D -:10A7C00062E070E080E090E00E9411390E949C40BD -:10A7D00044C05E9865E070E080E090E00E9411392E -:10A7E0005E9ACC0F65E070E080E090E00E94113945 -:10A7F00055984D99C16065E070E080E090E00E945E -:10A800001139D15031F75E98559A5D9A62E070E047 -:10A8100080E090E00E9411395E9A65E070E080E08F -:10A8200090E00E9411395E9862E070E080E090E074 -:10A830000E941139559A5D9A62E070E080E090E0E4 -:10A840000E9411395E9862E070E080E090E00E9422 -:10A8500011390E94064001C0C0E08C2FDF91CF91DA -:10A860000895EEEAF4E124813581DC010E94A073B1 -:10A87000A1E0B1E02C9128602C93A0EAB0E02C91EB -:10A8800020682C93DC01CB012AE0B695A79597951B -:10A8900087952A95D1F79093A9008093A800868187 -:10A8A00080618093A1000895CF93DF9321E5829F7B -:10A8B000C0011124EC01D55F40E550E0BE018EE5FA -:10A8C00094E10E947D5D892B59F410925E1440E55D -:10A8D00050E06EE574E1CE010E943A5D80E001C077 -:10A8E00081E0DF91CF91089590E0FC013197E23152 -:10A8F000F10508F04EC08827E654FF4F8F4F0C94A7 -:10A900009873809180008F7703C0809180008F7D45 -:10A9100080938000089580918000877FF9CF84B56F -:10A920008F7702C084B58F7D84BD08958091B0007B -:10A930008F7703C08091B0008F7D8093B000089521 -:10A94000809190008F7707C0809190008F7D03C029 -:10A9500080919000877F8093900008958091A0005F -:10A960008F7707C08091A0008F7D03C08091A000E9 -:10A97000877F8093A0000895809120018F7707C082 -:10A98000809120018F7D03C080912001877F80937B -:10A99000200108951F93CF93DF93282F30E0F90112 -:10A9A000EA57F54F8491F901E05CF54FD491F90134 -:10A9B000E650F64FC491CC23B9F0162F811194DFE5 -:10A9C000EC2FF0E0EE0FFF1FE052F64FA591B4918F -:10A9D0009FB7F894111104C08C91D095D82302C070 -:10A9E000EC91DE2BDC939FBFDF91CF911F910895F7 -:10A9F000863308F0865390917B00282F2870977F2C -:10AA0000922B90937B008770806480937C00809170 -:10AA10007A00806480937A0080917A0086FDFCCF72 -:10AA2000809178002091790090E0922B08951F92F8 -:10AA30000F920FB60F9211240BB60F922F933F93E4 -:10AA40004F935F936F937F938F939F93AF93BF9336 -:10AA5000EF93FF938091591490915A14909325018C -:10AA600080932401E0915714F0915814309709F025 -:10AA70001995FF91EF91BF91AF919F918F917F9128 -:10AA80006F915F914F913F912F910F900BBE0F905F -:10AA90000FBE0F901F9018951F920F920FB60F9236 -:10AAA00011240BB60F922F933F934F935F936F93A5 -:10AAB0007F938F939F93AF93BF93EF93FF93809177 -:10AAC000B0149091B1149093A5008093A400E091EC -:10AAD000AE14F091AF14309709F01995FF91EF91F2 -:10AAE000BF91AF919F918F917F916F915F914F91A6 -:10AAF0003F912F910F900BBE0F900FBE0F901F90A4 -:10AB00001895E2E7F0E080818E7F808308951F92A0 -:10AB10000F920FB60F9211248F939F93809108028A -:10AB20009091090290939500809394009F918F914A -:10AB30000F900FBE0F901F9018951F920F920FB697 -:10AB40000F9211240BB60F922F933F934F935F9365 -:10AB50006F937F938F939F93AF93BF93EF93FF93E5 -:10AB600080915214909153148093B200E09150144C -:10AB7000F0915114309709F01995FF91EF91BF9121 -:10AB8000AF919F918F917F916F915F914F913F9185 -:10AB90002F910F900BBE0F900FBE0F901F90189526 -:10ABA0004F925F926F927F92AF92BF92CF92DF925D -:10ABB000EF92FF920F931F93CF93DF936C01FB01F2 -:10ABC0005A01309729F08081D601A80FB11D01C02C -:10ABD000DC018C91ED018D3229F4229611968C9135 -:10ABE00001E008C08B3211F0219603C02296119625 -:10ABF0008C9100E0512C612C10E020E030E0A901A4 -:10AC00007E0160ED762E780E89E08715D8F063948A -:10AC1000A8E0A61598F051101150A5E0B0E00E94F0 -:10AC2000AF73DC01CB01880F991FAA1FBB1F9C01CA -:10AC3000AD01270D311D411D511D0BC0511009C023 -:10AC40001F5F07C0BEEF7B1208C0511006C055241D -:10AC500053942196D7018C91D3CF662009F450C02C -:10AC60007F01CA01B9010E94CC702B013C0120E098 -:10AC700030E0A9010E942C70882349F11F3F64F441 -:10AC80002AE037ED43E25CE3C301B2010E94857222 -:10AC90002B013C011E5FF2CF1F3F59F42DEC3CEC21 -:10ACA0004CEC5DE3C301B2010E9485722B013C01B3 -:10ACB0000EC0112361F020E030E040E251E4C30116 -:10ACC000B2010E9485722B013C011150F2CF00238A -:10ACD00051F077FA709477F87094F50140825182C0 -:10ACE0006282738206C0D5014D925D926D927C9214 -:10ACF0001397CC19DD09C150F701C08381E001C071 -:10AD000080E0DF91CF911F910F91FF90EF90DF9046 -:10AD1000CF90BF90AF907F906F905F904F900895CD -:10AD20008091B51484FD25C09FB7F8948091B51427 -:10AD300080618093B5149FBF0E94D02C20D7809152 -:10AD40000715982F9C7021F490910815913089F483 -:10AD50009FB7843029F4F89480910515806204C06F -:10AD6000F894809105158860809305159FBF0C9419 -:10AD70000A2A08952F923F924F925F926F927F928C -:10AD80008F929F92AF92BF92CF92DF92EF92FF92FB -:10AD90000F931F93CF93DF93CDB7DEB7C756D1097B -:10ADA0000FB6F894DEBF0FBECDBF66968FAF669725 -:10ADB0001B016B962CAF3DAF4EAF5FAF6B97A89664 -:10ADC0000FAFA8978091F41485FF51C03B0107EBAA -:10ADD00014E17B012CE0E20EF11CDD24D394D301BD -:10ADE0008D909D90AD90BD903D0120E030E0A90197 -:10ADF000C501B4010E944A72181654F0F80124A14A -:10AE000035A146A157A1C501B4010E942C7087FD50 -:10AE1000D092091580910915882319F180910715A1 -:10AE2000883061F07DDF9FB7F894809105158560CB -:10AE3000809305159FBF0E945A3919C09FB7F89497 -:10AE40008091B51488608093B5149FBF0E945A39D1 -:10AE50008091061581110BC0809107158111F6CFE5 -:10AE6000E1CF0C5F1F4FE614F70409F0B8CF8091D3 -:10AE70000715823009F47CC3F10180819181A281A0 -:10AE8000B38165968CAF9DAFAEAFBFAF6597848140 -:10AE90009581A681B78161968CAF9DAFAEAFBFAFF4 -:10AEA000619780859185A285B3852D968CAF9DAFE6 -:10AEB000AEAFBFAF2D97AE01475B5F4FBE01635B87 -:10AEC0007F4FCE018F5A9F4F0E94BD412D96ECAC13 -:10AED000FDAC0EAD1FAD2D9761962CAD3DAD4EADC9 -:10AEE0005FAD619765966CAD7DAD8EAD9FAD65979D -:10AEF000DE0191964D01FE017D965F0118976D016F -:10AF00000E941143E9A0FAA00BA11CA12D8D3E8D3A -:10AF10004F8D58A1698D7A8D8B8D9C8D0E94EB454C -:10AF2000882309F421C36091810D7091820D809175 -:10AF3000830D9091840D0E94CE702B013C01609195 -:10AF40007D0D70917E0D80917F0D9091800D0E94FE -:10AF5000CE706F966CAF7DAF8EAF9FAF6F976091E5 -:10AF6000790D70917A0D80917B0D90917C0D0E94EE -:10AF7000CE70FE01BD964F019E01275D3F4F5901E6 -:10AF8000DE0195966D01830172016F962CAD3DAD8A -:10AF90004EAD5FAD6F970E945A45A401B501C60141 -:10AFA0000E9468420E9459326696BFAD6697BB23E5 -:10AFB00019F0B13041F0DDC0E1E0F0E06796FFAF9D -:10AFC000EEAF6797DAC020E030E048EC52E46B96D1 -:10AFD0006CAD7DAD8EAD9FAD6B970E944A72181619 -:10AFE00054F480E090E0A8ECB2E46B968CAF9DAF97 -:10AFF000AEAFBFAF6B972DA13EA14FA158A5D10118 -:10B000006D917D918D919C910E94526F2B013C011D -:10B0100029A53AA54BA55CA5F101648175818681BE -:10B0200097810E94526F4B015C012DA53EA54FA553 -:10B0300058A9D10118966D917D918D919C911B9786 -:10B040000E94526F6B017C01A3019201C301B20106 -:10B050000E9485722B013C01A5019401C501B40138 -:10B060000E9485729B01AC01C301B2010E94536F23 -:10B070004B015C01A7019601C701B6010E948572D0 -:10B080009B01AC01C501B4010E94536F0E94F27292 -:10B0900020E030E040EF51E40E9485726B962CADC9 -:10B0A0003DAD4EAD5FAD6B970E9433700E94A070B6 -:10B0B00067967FAF6EAF67976A30710530F42AE00C -:10B0C00030E067963FAF2EAF679720E030E040E971 -:10B0D00050E46B966CAD7DAD8EAD9FAD6B970E94CD -:10B0E000857220E030E048EC52E40E94337020E0AA -:10B0F00030E040E05FE30E94536F20E030E040E743 -:10B1000052E40E94857220E030E040E752E40E9461 -:10B1100085726B017C016093CF147093D01480937F -:10B12000D1149093D2146093D3147093D414809359 -:10B13000D5149093D61420E030E442E955E40E94FF -:10B140004A7287FF09C0C092D714D092D814E092F7 -:10B15000D914F092DA1411C080E090E4A2E9B5E4C9 -:10B160008093D7149093D814A093D914B093DA1481 -:10B1700004C067961FAE1EAE67976796AEADBFADB3 -:10B180006797BD0180E090E00E94CC706B017C016C -:10B190002DA13EA14FA158A5F1016081718182814D -:10B1A00093810E94526FA70196010E9433706F969F -:10B1B0006CAF7DAF8EAF9FAF6F9729A53AA54BA51A -:10B1C0005CA5D10114966D917D918D919C911797FD -:10B1D0000E94526FA70196010E943370A3966CAF34 -:10B1E0007DAF8EAF9FAFA3972DA53EA54FA558A9C4 -:10B1F000F10160857185828593850E94526FA70158 -:10B2000096010E943370A7966CAF7DAF8EAF9FAF53 -:10B21000A79722242394312C67962EAD3FAD6797D4 -:10B220002215330508F49EC1B101032C000C880BD4 -:10B23000990B0E94CE706B017C019B01AC016F9653 -:10B240006CAD7DAD8EAD9FAD6F970E9485729B01F9 -:10B25000AC016DA17EA18FA198A50E94536F6D874F -:10B260007E878F87988BA7019601A3966CAD7DADE5 -:10B270008EAD9FADA3970E9485729B01AC0169A51D -:10B280007AA58BA59CA50E94536F698B7A8B8B8BBB -:10B290009C8BA7019601A7966CAD7DAD8EAD9FAD41 -:10B2A000A7970E9485729B01AC016DA57EA58FA515 -:10B2B00098A90E94536F6D8B7E8B8F8B988FAE01F8 -:10B2C0004B5E5F4FBE016F5E7F4FCE010D960E94B9 -:10B2D000BD41ED88FE880F89188D29893A894B89EF -:10B2E0005C896D857E858F859889DE01DD964D01AF -:10B2F000FE01EF5BFF4F5F0118966D010E94114345 -:10B300002196ECACFDAC0EAD1FAD219725962CAD72 -:10B310003DAD4EAD5FAD259729966CAD7DAD8EAD43 -:10B320009FAD29970E94EB45882309F417C16D85CD -:10B330007E858F8598896093850D7093860D8093A7 -:10B34000870D9093880D29893A894B895C892093D0 -:10B35000890D30938A0D40938B0D50938C0DED88A1 -:10B36000FE880F89188DE0928D0DF0928E0D00935E -:10B370008F0D1093900DFE01F1964F01DE01D596D1 -:10B380005D0138966F010E941143C9A8DAA8EBA8A5 -:10B39000FCA88DA89EA8AFA8B8AC20916D0D3091E7 -:10B3A0006E0D40916F0D5091700D69AD7AAD8BAD02 -:10B3B0009CAD0E94526F24EE38E34EE553E40E94A8 -:10B3C00085720E949B70072E000C880B990B0E94BF -:10B3D000CE7069837A838B839C832091710D309129 -:10B3E000720D4091730D5091740DC501B4010E940E -:10B3F000526F24EE38E34EE553E40E9485720E94BA -:10B400009B70072E000C880B990B0E94CE706D83E9 -:10B410007E838F8398872091750D3091760D4091B2 -:10B42000770D5091780DC701B6010E94526F20E050 -:10B4300030E044EB52E40E94536F24EE38E34EE5D3 -:10B4400053E40E9485720E949B70072E000C880BAB -:10B45000990B0E94CE7069877A878B879C870E94A0 -:10B460005A3980910615811181C09091A513809160 -:10B470006510981303C00E94A233F1CF89809A808F -:10B48000AB80BC80C501B4010E949B706093790DB4 -:10B4900070937A0D80937B0D90937C0DCD80DE8030 -:10B4A000EF80F884C701B6010E949B7060937D0D08 -:10B4B00070937E0D80937F0D9093800D49845A8404 -:10B4C0006B847C84C301B2010E949B706093810DE8 -:10B4D0007093820D8093830D9093840D2091B71407 -:10B4E0003091B8144091B9145091BA14C501B40107 -:10B4F0000E94337069837A838B839C832091BB1471 -:10B500003091BC144091BD145091BE14C701B601D6 -:10B510000E9433706D837E838F8398872091BF1440 -:10B520003091C0144091C1145091C214C301B201B2 -:10B530000E94337069877A878B879C87A8962FAD86 -:10B54000A8976B964CAD5DAD6EAD7FAD6B97CE01A0 -:10B5500001960E94D23531E03093950DFFEF2F1AFE -:10B560003F0A5ACE80E004C083E302C082E000C0FC -:10B57000C959DF4F0FB6F894DEBF0FBECDBFDF91C4 -:10B58000CF911F910F91FF90EF90DF90CF90BF90E0 -:10B59000AF909F908F907F906F905F904F903F9073 -:10B5A0002F9008951F920F920FB60F9211240BB691 -:10B5B0000F922F933F934F935F936F937F938F934C -:10B5C0009F93AF93BF93EF93FF93809107158130C3 -:10B5D00069F080910515811109C0A2DB9FB7F8942D -:10B5E000809105158360809305159FBFFF91EF91B2 -:10B5F000BF91AF919F918F917F916F915F914F918B -:10B600003F912F910F900BBE0F900FBE0F901F9088 -:10B61000189589B180719091F41496FD02C090E163 -:10B620008927882319F011F087E0089580E00895B4 -:10B630002F923F924F925F926F927F928F929F9242 -:10B64000AF92BF92CF92DF92EF92FF920F931F9330 -:10B65000CF93DF93CDB7DEB768970FB6F894DEBF10 -:10B660000FBECDBF909106159111A6C1782E27EB84 -:10B6700034E1398B288B5901CE010D964C0100E045 -:10B6800010E0C12CD12C7601A72DB0E0BD8BAC8B86 -:10B69000802F002321F0013021F094E003C091E0DD -:10B6A00001C092E0F40191934F012C893D8902C0C1 -:10B6B000359527958A95E2F720FF1BC020E030E002 -:10B6C00040EC5FEBD50194966D917D918D919C91AD -:10B6D00097970E948572362E472E582E692EA70105 -:10B6E00096010E942C7087FD04C0C32CD42CE52C3D -:10B6F000F62C0F5F1F4FB4E0AB0EB11C03301105E9 -:10B7000039F68090FA149090FB14A090FC14B0903D -:10B71000FD1484E0682E01E06AE075E1CE01019637 -:10B720000E94D4488091F514E82FF0E0FF8BEE8B57 -:10B73000FE01319626E035E13B8B2A8B1901CE01C3 -:10B740000D962C0180E090E0188E10E0B701A60164 -:10B7500070582C893D89082E02C0359527950A948A -:10B76000E2F720FF25C0A88DAF5FA88FD101149606 -:10B770001D921D921D921C9217972E893F89082EAB -:10B7800002C0359527950A94E2F720FF03C00023F5 -:10B7900019F007C0002329F0C082D182E282F3822F -:10B7A00004C04083518362837383D2012C91122B96 -:10B7B0000196BFEF4B1A5B0A349624E0220E311C2F -:10B7C0008330910531F6388D632F70E080E090E092 -:10B7D0000E94CC700E94F2729B01AC01C501B401C1 -:10B7E0000E9485726B017C01109323150E946334C3 -:10B7F00020E0B701A601CE0101960E94D2350E9439 -:10B8000061490E94A42C0023E1F003DFFE013D9674 -:10B8100020E030E090E06191462F412359F0AC01E7 -:10B82000022E02C0559547950A94E2F740FF02C0E8 -:10B83000609516232F5F3F4F2330310561F710933A -:10B8400023150E9461498091B5148473B1F08091F1 -:10B85000B514807321F064DA0E945A39ADC0011129 -:10B86000A6C0D7DE8721B9F79FB7F8948091B514A9 -:10B870008B7F8093B5149FBF04C0812F877009F020 -:10B88000C2CF0E9459520E9474348091FE1490914C -:10B89000FF140E944F3981E00827C9F020E030E012 -:10B8A00040EA50E4609100157091011580910215F5 -:10B8B000909103150E9485726B017C018090F614B3 -:10B8C0009090F714A090F814B090F91410C0C090A4 -:10B8D0000015D0900115E0900215F09003158090AE -:10B8E000FA149090FB14A090FC14B090FD146A948C -:10B8F000611012CFE090F514F12C8090001590901B -:10B900000115A0900215B09003152401350177FAB6 -:10B91000709477F8709400E010E08C899D89002E77 -:10B9200002C0959587950A94E2F780FF2CC0C70165 -:10B93000002E02C0959587950A94E2F7A889B989E7 -:10B9400080FF11C094962D913D914D915C919797F8 -:10B95000C501B4010E94536FE889F98920813181C2 -:10B960004281538106C02D913D914D915C91C3015F -:10B97000B2010E9485720E945572EA89FB89648334 -:10B980007583868397830F5F1F4F2A893B892C5FBE -:10B990003F4F3B8B2A8B888999890496998B888B9A -:10B9A0000330110509F0B9CF0E94633405C08091BE -:10B9B000B51482FF59CF4FCF68960FB6F894DEBF0B -:10B9C0000FBECDBFDF91CF911F910F91FF90EF90F0 -:10B9D000DF90CF90BF90AF909F908F907F906F90AF -:10B9E0005F904F903F902F900895EBE6F0E08081BC -:10B9F0008F7E8083E8E6F0E080818E7F80830895EB -:10BA000054985C9A8091F41483FF0BC080916B0072 -:10BA1000806180936B0080916800816080936800F2 -:10BA20000895E3CF6AE075E184E795E10C94D4488A -:10BA3000F894F999FECF92BD81BD81E08FBB80B5AE -:10BA40008627482F082E000C550B262F30E0242384 -:10BA50003523232B39F06F3F19F060BD84E006C019 -:10BA600084E104C0882321F060BD84E28FBBF99A91 -:10BA7000789408959F92AF92BF92CF92DF92EF9207 -:10BA8000FF920F931F93CF93DF935C018A017B0199 -:10BA9000E40EF51EEB01912C6C01C61AD70ACE01FB -:10BAA0008C0D9D1DCE15DF0581F0911008C0292D4C -:10BAB000990C330B232F221F2227221F01C021E0C4 -:10BAC0006991922E960EB4DFEACF692DC501800FE1 -:10BAD000911FDF91CF911F910F91FF90EF90DF9019 -:10BAE000CF90BF90AF909F90A3CFF999FECF92BD1A -:10BAF00081BD81E08FBB80B508959F92AF92BF92C8 -:10BB0000CF92DF92EF92FF920F931F93CF93DF9329 -:10BB10005B018A017C01E40EF51EEC01912C6B01A6 -:10BB2000C81AD90AC6018C0F9D1FCE15DF0581F0FA -:10BB3000DCDF911008C0292D990C330B232F221F15 -:10BB40002227221F01C021E0982E920E8993EACF6E -:10BB5000C501800F911FC9DF21E030E0981611F078 -:10BB600020E030E0C901DF91CF911F910F91FF904C -:10BB7000EF90DF90CF90BF90AF909F9008955C982A -:10BB80000895CF93DF93CDB7DEB7CC56D1090FB66A -:10BB9000F894DEBF0FBECDBF8091C000826080935D -:10BBA000C0001092C50080E18093C4009091C10054 -:10BBB00090619093C1009091C10098609093C100F2 -:10BBC0009091C10090689093C1009091C8009260DC -:10BBD0009093C8001092CD008093CC009091C90042 -:10BBE00090619093C9009091C90098609093C900AA -:10BBF0009091C90090689093C9009091D000926094 -:10BC00009093D0001092D5008093D4009091D100F1 -:10BC100090619093D1009091D10098609093D10061 -:10BC20009091D10090689093D100909130019260F2 -:10BC3000909330011092350180933401809131014D -:10BC4000806180933101809131018860809331015E -:10BC5000809131018068809331010E945932869A27 -:10BC6000879A829A80910A01886080930A01809164 -:10BC70000A01826080930A018091070181608093AC -:10BC80000701809A819A579A809107018061809379 -:10BC90000701809107018860809307018091070167 -:10BCA000846080930701809108018F7E8093080152 -:10BCB00080910801886080930801809108018B7F42 -:10BCC000809308018091F41482FF08C08A9A8091C1 -:10BCD00008018160809308015F9A07C08A9880916B -:10BCE00008018E7F809308015F98809181008F7E8C -:10BCF0008093810080918100886080938100809191 -:10BD000080008C7F80938000809180008F70809372 -:10BD1000800080916E00887F80936E0014BC15BCFB -:10BD200080916E00816080936E0054985C9A80913F -:10BD30006D00806180936D008091680084608093C5 -:10BD400068008AE090E00E944F390E948C3D399A49 -:10BD50003B9A419A439A809101018460809301014A -:10BD600080910101806880930101809102018460CB -:10BD70008093020180910201806880930201559AAC -:10BD8000569A5D9A5E9A0E94854605E91EE081E01A -:10BD900090E07C012FEFE21AF20AA7DED8018D9322 -:10BDA0008D01C7018B3C9105A1F755E1C52E5EE0E1 -:10BDB000D52E87010F5F1F4FC70197DEF6018193D4 -:10BDC0006F0178010B34F1E01F0799F74BE9E42E7E -:10BDD0004DE0F42E68012FEFC21AD20AC80185DEA9 -:10BDE000D7018D937D018601B5ECCB16B1E0DB0662 -:10BDF00089F720E030E04AE754E464E071E080E055 -:10BE000090E00E94303E84E893E06FDE80935F0D07 -:10BE100085E893E06ADE8093600D01E61DE088E925 -:10BE200093E07C01EFEFEE1AFE0A5FDED8018D93FE -:10BE30008D01C701BCE9EB16B3E0FB0691F705E6FF -:10BE40001DE08EE893E07C01EFEFEE1AFE0A4DDE76 -:10BE5000D8018D938D01C701B2E9EB16B3E0FB0663 -:10BE600091F709E61DE082E89CE07C01EFEFEE1A15 -:10BE7000FE0A3BDED8018D938D01C701B6E8EB16B3 -:10BE8000BCE0FB0691F7C090690DD0906A0DE09080 -:10BE90006B0DF0906C0D20E030E044EB53E4C701F3 -:10BEA000B6010E944A72181644F0A7019601C70114 -:10BEB000B6010E943A73882341F01092690D1092E6 -:10BEC0006A0D10926B0D10926C0D0AE11DE08AEE66 -:10BED00093E07C01EFEFEE1AFE0A07DED8018D93A6 -:10BEE0008D01C701B6EFEB16B3E0FB0691F7609149 -:10BEF000690D70916A0D80916B0D90916C0DFE0132 -:10BF000031967F018F0124E045E00E94D76CFF92BB -:10BF1000EF928BE093E09F938F930E94AF330E9448 -:10BF2000873D0E94843D0E94733D0E94943F0E9481 -:10BF3000FF3C80917A00876880937A009B98A39A4F -:10BF40008FE08093910D0E949E3E8AEB92E09F933A -:10BF50008F938DE193E09F938F930E94AF3389EC91 -:10BF600092E09F938F9380E393E09F938F930E943F -:10BF7000AF3380ED92E09F938F9380E493E09F93A3 -:10BF80008F930E94AF338091600D8F9380915F0DEE -:10BF90008F938FE493E09F938F930E94AF3380E65B -:10BFA00093E00E9458348EE1E6E0F5E1DF011D9256 -:10BFB0008A95E9F781E08093061578949091F414BE -:10BFC0000FB6F894DEBF0FBECDBF94FD809307156A -:10BFD0009E01235C3F4F6F963FAF2EAF6F971E01C0 -:10BFE00035E1230E311CCE018996A1969FAF8EAF0D -:10BFF000A197DE011196A396BFAFAEAFA397809134 -:10C00000E00F8093DF0F8FE3EDE5F5E1DF011D9297 -:10C010008A95E9F760E875E180E00E94452E81117C -:10C0200003C087E00E94FF310C9A549A549A0E94F0 -:10C03000D02C549AA4DDE4DC54985C9A0E947434A9 -:10C040000E9459520E946334EDDC10920615109242 -:10C05000B5141092051510920815109209158091CB -:10C060000715813099F480ED99E00E940A348AEA3C -:10C0700099E00E940A348DE599E00E940A34A49662 -:10C080001FAEA497A5961FAEA5973DC010920715A9 -:10C09000F6CF8091060185FD20C00E948155109247 -:10C0A000960D809102018F7D809302018091690D30 -:10C0B00090916A0DA0916B0DB0916C0DB05880936A -:10C0C000861090938710A0938810B093891060E039 -:10C0D00070E084EB92E40E94F03E80918210909197 -:10C0E0008310A0918410B0918510892B8A2B8B2B03 -:10C0F00051F41092960DE4E6F3E0FF93EF930E9463 -:10C10000AF330F900F908091960D8823E1F0C1CF4F -:10C11000E92FF0E0E15AF04F80819F5F903809F4F9 -:10C1200090E09093DF0F8F3F09F477C58A3091F04C -:10C130008D3081F0A596BFADA597BB2309F439C515 -:10C14000893209F42FC59091DF0F8091E00F981389 -:10C15000DFCF63C50EE514E1A4963FADA497E32FAE -:10C16000F0E0E25AFB4E10820E945A398091061587 -:10C17000811111C58AE0D1011D928A95E9F780915C -:10C180005E14843209F076C481E08DAF80915F1433 -:10C19000833481F034F4882351F0843209F06FC283 -:10C1A00009C0873439F0883509F069C203C088E6D0 -:10C1B00096E054C39091601491114EC4833409F4F5 -:10C1C0002DC21CF4843241F04DC4873409F46AC195 -:10C1D000883509F440C246C480910715887109F07A -:10C1E0003DC484E696E00E940A348091E7140E94E0 -:10C1F000FC338BE496E00E940A348091EA140E949A -:10C20000FC338DE296E00E940A348091E8140E948B -:10C21000FC3384E196E00E940A348091E8140E9485 -:10C2200007348DE096E00E940A348091E9140E9460 -:10C23000FC3385EF95E00E940A348091E9140E9456 -:10C2400007348EEE95E00E940A348091F41482FB4C -:10C25000882780F90E94FC338DEC95E00E940A3417 -:10C260008091F41486FB882780F90E94FC338DEAC4 -:10C2700095E00E940A348091F414881F8827881F53 -:10C280000E94FC338DE895E00E940A348091EB1403 -:10C290000E94FC3387E795E00E940A348091EB14FA -:10C2A0000E9407348FE695E00E940A346091EC14F6 -:10C2B0007091ED148091EE149091EF140E94DE3392 -:10C2C0008FE495E00E940A346091F0147091F114AB -:10C2D0008091F2149091F3140E94DE3384E395E090 -:10C2E0000E940A348091F41481700E94FC3387E12B -:10C2F00095E00E940A348091F41485FB882780F928 -:10C300000E94FC338CEF94E00E940A348091F41474 -:10C3100083FB882780F90E94FC3381EE94E00E9421 -:10C320000A348091F414829581700E94FC3385EC6C -:10C3300094E00E940A348091F5140E94FC338BEA49 -:10C3400094E00E940A348091F5140E94073483EA35 -:10C3500094E00E940A346091F6147091F714809171 -:10C36000F8149091F9140E94DE3386E894E00E945C -:10C370000A346091FA147091FB148091FC1490912E -:10C38000FD140E94DE3389E694E00E940A34809115 -:10C39000FE140E94FC338AE494E00E940A34609107 -:10C3A00000157091011580910215909103150E945E -:10C3B000DE3381E394E00E940A3410E034E6D32EA9 -:10C3C00027EBE22E24E1F22E00E08FE294E00E94BF -:10C3D0000A34802F8D0D0E94FC338DE294E00E9480 -:10C3E0000A34123091F01330E1F0113031F0F701DE -:10C3F00060817181828193811CC0D7011C966D91EF -:10C400007D918D919C911F9714C020E030E041E612 -:10C4100055E4F701608D718D828D938D0E9433708C -:10C4200008C0F70184A195A1A6A1B7A1BC01CD01C7 -:10C4300090580E94DE338AE294E00E940A34013070 -:10C4400029F0023031F088E294E005C086E294E001 -:10C4500002C084E294E00E940A34123051F013309A -:10C4600059F0113019F08AE194E008C088E094E0B6 -:10C4700005C087EF93E002C087EE93E00E940A3484 -:10C4800083EE93E00E940A340F5FF4E0EF0EF11C9C -:10C49000033009F09ACF2AE0D20E1F5F3CE8D31296 -:10C4A0008FCFE0C281EE93E00E940A3480915D1547 -:10C4B000823091F038F4882361F08130A9F48BED5B -:10C4C00093E00CC0833069F0883071F481ED93E023 -:10C4D00005C08EED93E002C088ED93E00E940A341F -:10C4E0000CC085ED93E0FACF8CEC93E00E940A3407 -:10C4F00080915D1582500E94FC3389EC93E00E948C -:10C500000A34809163158A5C0E94FC338091611526 -:10C51000813049F028F0823051F48AEB93E005C075 -:10C5200084EC93E002C08FEB93E00E940A34809188 -:10C530005F15811103C085EB93E002C080EB93E0AF -:10C540000E940A3480916015811103C08BEA93E048 -:10C5500002C086EA93E00E940A3480915E15813021 -:10C5600019F481EA93E002C08CE993E00E940A3456 -:10C5700080916415813049F028F0823051F480E9CF -:10C5800093E005C088E993E002C084E993E00E944B -:10C590000A3480916615813031F040F0823051F4D8 -:10C5A00088E893E005C08CE893E002C084E893E05B -:10C5B0000E940A3480916515882329F0823039F46D -:10C5C0008CE793E002C080E893E00E940A3489E798 -:10C5D00093E00E940A3480916F150E94FC3386E735 -:10C5E00093E00E940A3460916B1570916C158091F4 -:10C5F0006D1590916E150E94E03383E793E00E94E1 -:10C600000A34609167157091681580916915909151 -:10C610006A150E94E0338FE693E020C180910715F0 -:10C62000823049F40E94905680ED99E00E940A34CD -:10C6300087E899E00BC0811111C282E08093071551 -:10C6400080ED99E00E940A3480E999E00E940A3462 -:10C650008DE599E003C180910715813009F002C290 -:10C6600080ED99E00E940A3488E999E00E940A343A -:10C670008DE599E00E940A3410920715F3C190915C -:10C680000715923008F0EAC1893409F4C5C034F4C2 -:10C69000833259F0883409F480C064C18E3409F4BF -:10C6A00036C1823509F4F9C05DC182E08DAF809159 -:10C6B00060148111D1C110E0BE016F5F7F4F812FE7 -:10C6C0000E94452E811104C087E00E94FF31CAC13B -:10C6D0008CE693E00E940A34163029F0173041F4BA -:10C6E00086E693E002C089E693E00E940A3404C023 -:10C6F00086E3810F0E94FC3384E693E00E940A34B3 -:10C70000CE0101967C0100E0D7016D917D918D9164 -:10C710009D917D010E94EE33023019F082E693E094 -:10C7200002C08EE593E00E940A340F5F033061F788 -:10C730001F5F183009F688E593E00E940A349CE8F0 -:10C74000E92E95E1F92E10E0F70161917191819147 -:10C7500091917F010E94EE33123019F086E593E04B -:10C7600002C082E593E00E940A341F5F133061F734 -:10C770008CE493E00E940A346091981570919915A9 -:10C7800080919A1590919B150E94EE3388E493E076 -:10C790000E940A340E94183465C18091F41484FF09 -:10C7A00059C184E08093071520D984E00E94185B6A -:10C7B00083E00E94185B0E945A398091061581110E -:10C7C00002C030D91DD98091061581114BC110923C -:10C7D00007150E940A2A10E0812F0E9454548111EB -:10C7E00002C087E013C080915E14882389F08EE533 -:10C7F00094E10E9458348EE594E10E9488058111ED -:10C8000005C08BEB98E00E940A3402C00E94FF3101 -:10C810001F5F123009F726C182E08DAF809160144E -:10C8200081111FC040E550E06EEA7BE08EE594E1A7 -:10C8300064D9892B49F410925E1440E550E06EE50E -:10C8400074E18EEA9BE016D988E393E00E940A34F3 -:10C850008EE594E10E94583484E393E00E940A3408 -:10C8600001C193E09DAF8D3309F0F6C083E0282F1E -:10C8700030E0F901E25AFB4E9081D901A55ABB4E36 -:10C880009C938F5F90819111F2CF8DAF40E550E086 -:10C890006EE574E18EEA9BE0ABC082E08DAF8091E3 -:10C8A0006014833509F0D8C083E08DAF80916114A6 -:10C8B000843509F0D1C084E08DAF809162148D334E -:10C8C00009F0CAC0809164148111C6C085E08DAFA3 -:10C8D00080916314843239F08A3239F0833209F05E -:10C8E000BBC082E003C081E001C08FEF0E94652ED3 -:10C8F00080ED99E00E940A3481E699E00E940A34B2 -:10C900008DE599E00E940A340E949056ABC082E007 -:10C910008DAF80916014811121C010E0812F0E94A1 -:10C920005454811104C087E00E94FF3113C081E399 -:10C9300093E00E940A34812F0E94FC338FE293E03F -:10C940000E940A348EE594E10E9458348CE293E010 -:10C950000E940A341F5F123009F784C091117EC013 -:10C9600011E001C010E0AE01475D5F4FBE01635CA6 -:10C970007F4F8EE594E10E94D055811102C082E084 -:10C9800076C0EDAD81E08E0F8DAFF0E0E25AFB4E48 -:10C9900090819D3309F060C0112361F1482F50E070 -:10C9A000282F30E0D901A25ABB4E9C91241B350B95 -:10C9B000F901E25AFB4E90838F5F9C919111F0CF69 -:10C9C0008DAF8EE594E10E948805811149C069A56B -:10C9D0007AA58BA59CA50E9433730E94A070F1E5F7 -:10C9E0006F9FC001112440E550E06EE574E1955F52 -:10C9F00041D838C0AE014F5F5F4FBE01635C7F4FCF -:10CA00008EE594E10E94D055882309F4B8CFEDADAE -:10CA1000F0E0E25AFB4E808181111EC089A49AA4E5 -:10CA2000ABA4BCA420E030E04FE753E4C501B4015F -:10CA30000E944A72181684F0C980DA80EB80FC806C -:10CA4000C501B4010E94A070862FB701A6010E9403 -:10CA50003A2D06C085E00BC083E009C088E007C01E -:10CA6000811105C08BEB98E00E940A3494C00E94AB -:10CA7000FF3191C08332D1F43F922F928CE793E043 -:10CA80009F938F931F930F930E94F973F10101906D -:10CA90000020E9F7BF0162197309625A7B4E0F90BB -:10CAA0000F900F900F900F900F900BC0873439F0BC -:10CAB0008D3429F0803519F0833509F06CC06EE5AE -:10CAC00074E1DB018C91803511F0833509F58EEA34 -:10CAD0009CE00E94C4738D89882391F03F922F922D -:10CAE00084E893E09F938F9382EE9CE09F938F93D3 -:10CAF0000E94CB730F900F900F900F900F900F909C -:10CB000082E3EEE5F4E1DF011D928A95E9F743C087 -:10CB10008091AE04843148F088E893E09F938F932E -:10CB20000E94AF330F900F9036C00091AC04B6E670 -:10CB3000B09F80011124C8018B549B4F0E94C47385 -:10CB40008D89882391F03F922F9284E893E09F9300 -:10CB50008F9307511B4F1F930F930E94CB730F901E -:10CB60000F900F900F900F900F9082E3EEE5F4E19D -:10CB7000DF011D928A95E9F78091AC04833120F49E -:10CB80008F5F8093AC0402C01092AC048091AE041D -:10CB90008F5F8093AE04A4961FAEA497A5961FAE98 -:10CBA000A5973BC0B13009F0CECAA5961FAEA59798 -:10CBB000CACA813208F4C7CA8F3209F4C4CA88329B -:10CBC00011F18B3329F1A496EFADA497EF3438F02F -:10CBD0008BE00E94FF31A4961FAEA497B4CAA4961E -:10CBE000FFADA4972F2F30E04F2F4F5F9FE9980F95 -:10CBF000F901E25AFB4E9A3108F480528083A496E0 -:10CC00004FAFA497A0CA21E0A5962FAFA5979BCAC6 -:10CC100032E0A5963FAFA59796CA8091AE0C8823C7 -:10CC200099F08EEA9CE00E9488058093E00C62EE09 -:10CC30007CE00E94A33C81E08093E10C82E3AEEAB9 -:10CC4000BCE01D928A95E9F78091920D81113FC059 -:10CC50008091AE048823D9F18091970D8823B9F192 -:10CC60008091980D882399F10091AD04B6E6B09FAC -:10CC7000800111240B541B4FC8010E948805F80144 -:10CC800082ABF090AD04F6E6FF9D80011124B8015F -:10CC900067517B4F0B541B4FD801D2968C910E9449 -:10CCA000A33C81E0F80183AB82E3D8011D928A9511 -:10CCB000E9F7B2E1BF1520F0F394F092AD0402C0A1 -:10CCC0001092AD048091AE0481508093AE040E9416 -:10CCD000A2330E945A3980910615811190C9809122 -:10CCE000E10C882369F082EE9CE00E94583482E3D4 -:10CCF000E2EEFCE0DF011D928A95E9F71092E10C6B -:10CD000080910715882309F4E6C08091930D88234C -:10CD100009F41AC11092930D6D961CAE1DAE1EAE95 -:10CD20001FAE6D9769961CAE1DAE1EAE1FAE699705 -:10CD300065961CAE1DAE1EAE1FAE659784E16F9664 -:10CD4000EEADFFAD6F97282F11922A95E9F7A196C6 -:10CD5000AEADBFADA197E82F1D92EA95E9F7D101DD -:10CD6000E82F1D92EA95E9F7A396AEADBFADA39764 -:10CD70001D928A95E9F780E090E00E940147A9960C -:10CD80006CAF7DAF8EAF9FAFA99781E090E00E941E -:10CD90000147AD966CAF7DAF8EAF9FAFAD9782E090 -:10CDA00090E00E9401476B017C0120E030E040E010 -:10CDB0005FE3609100027091010280910202909104 -:10CDC00003020E94526F20E030E040E05FE30E94E7 -:10CDD000857220E030E044E353E40E9485729B01B9 -:10CDE000AC0160E070E084E393E40E94526F2B0199 -:10CDF0003C0120E030E044EB52E4C701B6010E9460 -:10CE0000526FFE01EF5AFF4F4F019E012B5A3F4FC9 -:10CE10005901DE01A75ABF4F6D017B018C01AD9610 -:10CE20002CAD3DAD4EAD5FADAD97A9966CAD7DAD72 -:10CE30008EAD9FADA9970E947644A401B501C601AD -:10CE40000E9468426D966CAD7DAD8EAD9FAD6D97C5 -:10CE50008E01035C1F4F24E045E0A9D569966CADB7 -:10CE60007DAD8EAD9FAD69970451110924E045E079 -:10CE70009ED565966CAD7DAD8EAD9FAD65978101FC -:10CE800024E045E094D58E010F5F1F4F24E045E07C -:10CE9000C301B2018CD51F930F933F922F92A1969D -:10CEA000FFADA197FF93A0962FADA0972F936F96FC -:10CEB0003FAD6F973F936E968FAD6E978F938AE9D4 -:10CEC00093E09F938F930E94AF330FB6F894DEBF29 -:10CED0000FBECDBF39C08091970D882309F415CFBF -:10CEE0008091980D882309F410CF04E110E082E3CB -:10CEF000B82EA090AD0CB6E6BA9DC0011124FC017D -:10CF0000EB54FB4F7F0123A9222309F4FECE9C01A1 -:10CF100027513B4F6901C9010E945834D601EB2DBE -:10CF20001D92EA95E9F7D701D3961C92B2E1BA15A2 -:10CF300028F081E08A0D8093AD0C02C01092AD0CF8 -:10CF400001501109B1F6E1CE82B301E083FB8827DD -:10CF500080F980279091B4048917D9F08AE090E095 -:10CF60000E944F3912B313FB112710F9102780913B -:10CF7000B404181771F01F921F938EEA93E09F93E9 -:10CF80008F930E94AF331093B4040F900F900F90C3 -:10CF90000F908091B0049091B104A091B204B0912F -:10CFA000B3048F3F9105A105B10509F060F4019626 -:10CFB000A11DB11D8093B0049093B104A093B2045D -:10CFC000B093B30424C01092B0041092B104109234 -:10CFD000B2041092B3048BE30E94F85411E085363A -:10CFE000910508F410E08091AF04811781F01F9241 -:10CFF0001F9389EB93E09F938F930E94AF3310931D -:10D00000AF041093990D0F900F900F900F90809197 -:10D010000715811112C08091940D882371F08091C1 -:10D02000950D882351F081EC93E09F938F930E949C -:10D03000AF331092950D0F900F9080919A0D882329 -:10D0400009F461C880910715811128C18091910D63 -:10D050008F3009F023C18091990D882309F41EC1F6 -:10D060008091140D9091150D9C012F5F3F4F3093CF -:10D07000150D2093140D45970CF445C821961CAE50 -:10D080001DAE1EAE1FAE219719A61AA61BA61CA682 -:10D090001D8A1E8A1F8A188EE0908D0DF0908E0DCD -:10D0A00000918F0D1091900D2091890D30918A0D76 -:10D0B00040918B0D50918C0D6091850D7091860D76 -:10D0C0008091870D9091880D4101FE01B9965F0115 -:10D0D000DE01DD966D010E94114380E090E00E9428 -:10D0E00001474B015C0181E090E00E9401476B0128 -:10D0F0007C0182E090E00E9401472B013C01A501E8 -:10D10000940121966CAD7DAD8EAD9FAD2197CAD6B1 -:10D110009F7720E030E040E05FE30E944A721816FB -:10D120003CF1A701960169A57AA58BA59CA5BAD665 -:10D130009F7720E030E040E05FE30E944A721816DB -:10D14000BCF0A30192016D897E898F89988DAAD642 -:10D1500020E030E044EB52E4A6D69F7720E030E0B8 -:10D1600040E05FE30E944A72181614F00C9483604A -:10D170008EE1E6E0F5E1DF011D928A95E9F70E9474 -:10D1800063340E94125D80926D0D90926E0DA0929C -:10D190006F0DB092700DC092710DD092720DE09231 -:10D1A000730DF092740D4092750D5092760D609251 -:10D1B000770D7092780D80910A1590910B15A091C2 -:10D1C0000C15B0910D158093790D90937A0DA09365 -:10D1D0007B0DB0937C0D80910E1590910F15A09151 -:10D1E0001015B091111580937D0D90937E0DA09335 -:10D1F0007F0DB093800D8091121590911315A09121 -:10D200001415B09115158093810D9093820DA09304 -:10D21000830DB093840D8CE0A396EEADFFADA39784 -:10D2200011928A95E9F78091850D9091860DA091D4 -:10D23000870DB091880D89839A83AB83BC838091DD -:10D24000890D90918A0DA0918B0DB0918C0D8D83DD -:10D250009E83AF83B88780918D0D90918E0DA091A4 -:10D260008F0DB091900D89879A87AB87BC87AE01EF -:10D27000475F5F4FBE016B5F7F4FCE0101960E94FB -:10D28000684200E020E030E048E452E4BE016F5F15 -:10D290007F4F80E00E94BA560C9483601092150D67 -:10D2A0001092140D0C948360CF930E94A233C9E2B4 -:10D2B0000E945A3980910615811111C08091A513E1 -:10D2C0009091A613981739F0C89FC00111248D536F -:10D2D0009F4E892B69F780910715883049F3CF91CC -:10D2E0000895CF93209151153091521540915315C7 -:10D2F0005091541560917415709175158091761543 -:10D3000090917715A9D6811126C02091551530919D -:10D310005615409157155091581560917815709198 -:10D32000791580917A1590917B1596D6811113C04D -:10D33000C1E02091591530915A1540915B155091DB -:10D340005C1560917C1570917D1580917E15909192 -:10D350007F1582D68111C0E08C2FCF910895CF9296 -:10D36000DF92EF92FF920F93CF93DF9330910715E7 -:10D37000323009F482C0C02FD22F042F6B017C0100 -:10D3800093DF10922215109204158091F41487FDFA -:10D3900003C080E180930415DD2331F090910415E2 -:10D3A00080E189278093041589B1807190910415DB -:10D3B000891751F09FB7F89480910515806180938B -:10D3C00005159FBF0E945A3980910615811155C0DD -:10D3D000A701960161E575E181E00E94BA5681E0FE -:10D3E0008093B6149FB7F8948091B51482608093AF -:10D3F000B5149FBF0E945A398091061581113DC016 -:10D40000809107158111F6CF8091B6148130A9F46F -:10D41000CC2351F08CE0EAE0F5E1A6E1B5E1019022 -:10D420000D928A95E1F70CC09FB7F894809105158D -:10D430008061809305159FBF03C081E08093221512 -:10D440001092B6140E945A3980910615811115C0A8 -:10D450000E9459520E9474340E9463346AE075E15C -:10D4600081E595E10E94D448DF91CF910F91FF9023 -:10D47000EF90DF90CF900C941834DF91CF910F9103 -:10D48000FF90EF90DF90CF9008952F923F924F92B0 -:10D490005F926F927F928F929F92AF92BF92CF9244 -:10D4A000DF92EF92FF920F931F93CF93DF93CDB74D -:10D4B000DEB7E1970FB6F894DEBF0FBECDBF6D8328 -:10D4C0007E838F8398872F87388B498B5A8B0D8B60 -:10D4D000AD868B8A24E0E29E80011124C8018C581D -:10D4E0009A4E9F8B8E8BD801AD5CBA4EB98FA88FA8 -:10D4F0008D909D90AD90BC90FC0120813181428146 -:10D500005381C501B401CFD46A8F7B8F8C8F9D8FDF -:10D51000F4E0CF9E1001112491012C583A4E3F8F18 -:10D520002E8FC1018D5C9A4E99A388A3DC01CD900A -:10D53000DD90ED90FC90F901208131814281538191 -:10D54000C701B601B0D46AA37BA38CA39DA3240119 -:10D55000350177FA709477F87094D701C601B05806 -:10D5600089839A83AB83BC83F801EF5AFA4E2A8DE4 -:10D570003B8D4C8D5D8D608171818281938192D4D0 -:10D580004B015C01F101EF5AFA4E2AA13BA14CA1DB -:10D590005DA1608171818281938184D46B017C0162 -:10D5A000A5019401C301B201B0D769877A878B873F -:10D5B0009C87A701960169817A818B819C81A5D77F -:10D5C0009B01AC0169857A858B859C856CD46987C4 -:10D5D0007A878B879C87A7019601C301B20195D7F3 -:10D5E0006B017C01A501940169817A818B819C8109 -:10D5F0008CD79B01AC01C701B60154D429853A856B -:10D600004B855C85C3D46B017C019B89992389F090 -:10D610002DEB37E346E055EBC701B6013BD787FD5D -:10D620001AC02BED3FE049EC50E4C701B6013AD4F3 -:10D6300010C02DEB37E346E055E3C701B6010CD52A -:10D6400018164CF02BED3FE049EC50E4C701B60151 -:10D650002AD46B017C018090F0149090F114A0907A -:10D66000F214B090F3142D813E814F815885CA0188 -:10D67000B90119D4A501940115D4A501940145D788 -:10D68000B1D74B015C0120E030E040E05FE3C7012F -:10D69000B6013BD72D813E814F81588536D79F7784 -:10D6A000A5019401E0D4B5D54BD57C8B6B8BDB0108 -:10D6B000AB2B09F459C14B01A12CB12CBD89BB2363 -:10D6C00071F0C501B40168D59B01AC016F85788903 -:10D6D00089899A891AD76F87788B898B9A8BC5012C -:10D6E000B4015AD54B015C019B01AC01C701B601E5 -:10D6F000BAD46D837E838F839887FD85E4E0FE9F97 -:10D70000C00111249C012C583A4E3E872D87FC0104 -:10D71000EF5AFA4ED9012D913D914D915C91608166 -:10D72000718182819381BED3A50194019CD46EA79F -:10D730007FA788AB99AB2D813E814F815885CA0167 -:10D74000B901E3D69B01AC0160E070E080E090E4B9 -:10D75000A9D36B017C012BEA3AEA4AE25EE36D81D0 -:10D760007E818F819885D1D64B015C0120E030E02D -:10D7700040E850E4C701B60196D39B01AC01C50156 -:10D78000B401C3D669877A878B879C8720E030E015 -:10D7900040E05FE3C701B601B8D66EA37FA388A7B8 -:10D7A00099A710E022242394312CEB89FC89E215FF -:10D7B000F30509F4D9C01C3008F03AC029813A8138 -:10D7C0004B815C816EA17FA188A599A59ED66B0136 -:10D7D0007C01A301920169857A858B859C8595D60C -:10D7E000A701960160D37B01082FD92EA3019201D6 -:10D7F0006EA17FA188A599A588D64B015C012981DE -:10D800003A814B815C8169857A858B859C857DD643 -:10D810009B01AC01C501B40145D32B013C011F5F45 -:10D82000C701A02FBD2D89839A83AB83BC835BC0C6 -:10D83000B10180E090E0B0D42D813E814F815885C8 -:10D8400064D66B017C010CD469837A838B839C83BF -:10D85000C701B601BDD64B015C01E88DF98DC080D2 -:10D86000D180E280F380F7FAF094F7F8F094A8A161 -:10D87000B9A18D919D910D90BC91A02D8AA79BA7D8 -:10D88000ACA7BDA7A701960169817A818B819C8194 -:10D890003CD62B013C012AA53BA54CA55DA5C501A5 -:10D8A000B40133D69B01AC01C301B201FCD22B0100 -:10D8B0003C01A7019601C501B40127D66B017C018B -:10D8C0002AA53BA54CA55DA569817A818B819C81A8 -:10D8D0001CD69B01AC01C701B601E4D269837A83EF -:10D8E0008B839C8310E0A30192016A8D7B8D8C8DCC -:10D8F0009D8DD9D2EE89FF89608371838283938362 -:10D9000029813A814B815C816AA17BA18CA19DA177 -:10D91000CAD2AE8DBF8D6D937D938D939C931397DB -:10D920002EA53FA548A959A9ED85FE856081718185 -:10D9300082819381B8D2AD85BE856D937D938D93A1 -:10D940009C9313970D892F85388949895A8964E7F3 -:10D9500075E181E00E94BA568091061581110EC0D2 -:10D96000BFEF2B1A3B0A21CF0D892F8538894989B2 -:10D970005A8961E575E181E00E94BA56E1960FB6D9 -:10D98000F894DEBF0FBECDBFDF91CF911F910F91F5 -:10D99000FF90EF90DF90CF90BF90AF909F908F90CF -:10D9A0007F906F905F904F903F902F900895EF92EF -:10D9B0000F931F93CF93DF93E80147FD02C034E03C -:10D9C00001C034E1042E000C550B57FF03C05195E4 -:10D9D00041955109E32E022F242FAE0107D0CE012D -:10D9E000DF91CF911F910F91EF9008958F929F92A9 -:10D9F000AF92BF92CF92DF92EF92FF920F931F935D -:10DA0000CF93DF93CDB7DEB729970FB6F894DEBF7B -:10DA10000FBECDBF6A01122FB02E2BE3201720F0CE -:10DA2000FF24F394F00E02C02CE3F22E0F2D27E01A -:10DA3000AE014F5F5F4F50D1BC014981842F897087 -:10DA4000813031F0E1FC06C0E0FE06C090E205C086 -:10DA50009DE203C09BE201C090E05E2D507143FF48 -:10DA60003CC0911102C083E001C084E0811718F42A -:10DA7000212F281B01C020E051110BC0F601822F7D -:10DA800030E2882319F031938150FBCFC20ED11CB4 -:10DA900020E0992329F0D6019C93F60131966F017D -:10DAA000C6010396E2FE0AC03EE4D6013C9341E47F -:10DAB00011964C93119712963C9306C03EE6F601E0 -:10DAC000308341E641833283FC01322F40E233232D -:10DAD00009F442C041933150FACF42FF44C0911142 -:10DAE00002C083E001C084E0811718F4212F281BB5 -:10DAF00001C020E051110BC0F601822F30E28823D3 -:10DB000019F031938150FBCFC20ED11C20E0992334 -:10DB100029F0D6019C93F60131966F01C601039658 -:10DB2000E2FE0BC039E4D6013C933EE411963C93EF -:10DB3000119736E412963C9307C039E6F60130831C -:10DB40003EE6318336E63283FC01322F40E2332356 -:10DB500019F041933150FBCFFC01E20FF11D10820F -:10DB60008EEF9FEFA6C021E030E0911102C020E0CF -:10DB700030E0161617061CF4FB01319602C0E1E0F6 -:10DB8000F0E02E0F3F1FBB2021F0EB2DF0E031968F -:10DB900002C0E0E0F0E02E0F3F1FE12FF0E02E1773 -:10DBA0003F071CF4121B212F01C020E08E2D88712D -:10DBB00059F4F601822F30E2882319F03193815015 -:10DBC000FBCFC20ED11C20E0992329F0D6019C93F3 -:10DBD000F60131966F0151110BC0F601822F90E3CF -:10DBE000882319F091938150FBCFC20ED11C20E005 -:10DBF0000F2D060F9A81342F307144FF03C09133EB -:10DC000009F40150101624F4093018F008E001C09E -:10DC100001E0AB0177FF02C040E050E0FB01E41BF4 -:10DC2000F50BA1E0B0E0AC0FBD1FEA0FFB1F8EE2C9 -:10DC3000A82E4B01801A91080B2D10E0119501952B -:10DC400011094F3FBFEF5B0721F4D601AC9211964B -:10DC50006D01641775072CF08416950614F4818104 -:10DC600001C080E3415051093196D60111967D01E2 -:10DC70004017510724F0D6018C936701E2CF641757 -:10DC8000750739F4963320F4953319F4311101C036 -:10DC900081E3F6018083F701822F90E2882319F057 -:10DCA00091938150FBCFF701E20FF11D108280E0CC -:10DCB00090E029960FB6F894DEBF0FBECDBFDF917E -:10DCC000CF911F910F91FF90EF90DF90CF90BF9079 -:10DCD000AF909F908F900895283008F027E0332769 -:10DCE000DA01990F311D87FD91600096610571057C -:10DCF00039F432602E5F3D9330E32A95E1F70895C1 -:10DD00009F3F30F080387105610509F03C5F3C5F52 -:10DD10003D93913008F08068911DDF93CF931F935E -:10DD20000F93FF92EF92192F987F9695E92F969572 -:10DD30009695E90FFF27EA59FD4F99273327EE24DF -:10DD4000FF24A701E70105900894079428F4360FF3 -:10DD5000E71EF81E491F511D660F771F881F991F68 -:10DD60000694A1F70590079428F4E70EF81E491FC2 -:10DD7000561FC11D770F881F991F661F0694A1F7B4 -:10DD80000590079428F4F80E491F561FC71FD11D90 -:10DD9000880F991F661F771F0694A1F705900794B7 -:10DDA00020F4490F561FC71FD81F990F661F771FF2 -:10DDB000881F0694A9F784911095177041F0D695A5 -:10DDC000C79557954795F794E7941A95C1F7ECE0F6 -:10DDD000F2E06894159015913591659195910590B3 -:10DDE0007FE27395E118F10A430B560BC90BD0097A -:10DDF000C0F7E10CF11E431F561FC91FD01D7EF452 -:10DE0000703311F48A95E6CFE894015030F0080F92 -:10DE10000AF40027021708F4202F2395022F7A33E3 -:10DE200028F079E37D932A95E9F710C07D932A9530 -:10DE300089F6069497956795379517951794E11885 -:10DE4000F10A430B560BC90BD00998F023957E912C -:10DE500073957A3308F070E37C932013B8F77E91C2 -:10DE600070617D9330F0839571E37D9370E32A9523 -:10DE7000E1F71124EF90FF900F911F91CF91DF9167 -:10DE8000992787FD909508959F939F77D5D10F90FF -:10DE900000203AF49058A2EA2AED3FE049E450E429 -:10DEA00013D096C25058BB27AA270ED091C25AD27F -:10DEB00030F05FD220F031F49F3F11F41EF42AC2FB -:10DEC0000EF4E095E7FBF7C1E92FA4D280F3BA176F -:10DED000620773078407950718F071F49EF5D3C2A3 -:10DEE0000EF4E0950B2EBA2FA02D0B01B901900175 -:10DEF0000C01CA01A0011124FF27591B99F0593FB9 -:10DF000050F4503E68F11A16F040A22F232F342F00 -:10DF10004427585FF3CF469537952795A795F0404E -:10DF20005395C9F77EF41F16BA0B620B730B840B63 -:10DF3000BAF09150A1F0FF0FBB1F661F771F881F1B -:10DF4000C2F70EC0BA0F621F731F841F48F4879573 -:10DF500077956795B795F7959E3F08F0B3CF939562 -:10DF6000880F08F09927EE0F979587950895FAD1B5 -:10DF700058F080E891E009F49EEFFBD128F040E8EA -:10DF800051E059F45EEF09C0C5C17DC2E92FE078C8 -:10DF900041D268F3092E052AC1F32617370748072F -:10DFA000590738F00E2E07F8E02569F0E025E06407 -:10DFB0000AC0EF6307F8009407FADB01B9019D017D -:10DFC000DC01CA01AD01EF935DD002D20AD05F91AE -:10DFD000552331F02BED3FE049E450FD49EC63CF90 -:10DFE0000895DF93DD27B92FBF7740E85FE316166A -:10DFF000170648075B0710F4D92F50D29F938F93D1 -:10E000007F936F932DD3E8E9F1E087D1E1D12F9190 -:10E010003F914F915F9185D2DD2349F09058A2EA5C -:10E020002AED3FE049EC5FE3D0785D274DDFDF91DB -:10E03000CFC112D280F09F3740F491110EF424C268 -:10E0400060E070E080E89FE3089526F01B16611DF4 -:10E05000711D811D36C150C10AD108F481E00895B7 -:10E0600090D1E395C6C10CD0B3C183D140F07AD131 -:10E0700030F021F45F3F19F01EC1511105C24AC1B1 -:10E08000C9D198F39923C9F35523B1F3951B550BC7 -:10E09000BB27AA2762177307840738F09F5F5F4F7B -:10E0A000220F331F441FAA1FA9F333D00E2E3AF0BC -:10E0B000E0E830D091505040E695001CCAF729D0D6 -:10E0C000FE2F27D0660F771F881FBB1F2617370725 -:10E0D0004807AB07B0E809F0BB0B802DBF01FF2755 -:10E0E00093585F4F2AF09E3F510568F0E4C0CCC1C1 -:10E0F0005F3FECF3983EDCF3869577956795B7958F -:10E10000F7959F5FC9F7880F911D9695879597F9A9 -:10E110000895E1E0660F771F881FBB1F6217730722 -:10E120008407BA0720F0621B730B840BBA0BEE1F37 -:10E1300088F7E095089504D06894B111A5C10895B9 -:10E1400071D188F09F5790F0B92F9927B751A0F05F -:10E15000D1F0660F771F881F991F1AF0BA95C9F77B -:10E1600012C0B13081F08FD1B1E008958CC1672F1A -:10E17000782F8827B85F39F0B93FCCF3869577952B -:10E180006795B395D9F73EF4909580957095619514 -:10E190007F4F8F4F9F4F0895E89409C097FB3EF43F -:10E1A00090958095709561957F4F8F4F9F4F9923E4 -:10E1B000A9F0F92F96E9BB279395F6958795779562 -:10E1C0006795B795F111F8CFFAF4BB0F11F460FF22 -:10E1D0001BC06F5F7F4F8F4F9F4F16C0882311F07A -:10E1E00096E911C0772321F09EE8872F762F05C08E -:10E1F000662371F096E8862F70E060E02AF09A9529 -:10E20000660F771F881FDAF7880F9695879597F91D -:10E21000089522D180F09F3740F491110EF034C15F -:10E2200060E070E080E89FEB089526F41B16611D06 -:10E23000711D811D46C060C0DF93CF931F930F9364 -:10E240008B01EC01E5ECF1E068D0C2D09801AE01A1 -:10E250008B01EC0160E070E080E89FE323DEC2D137 -:10E260009801AE010F911F91CF91DF915AC1990F83 -:10E270000008550FAA0BE0E8FEEF16161706E80790 -:10E28000F907C0F012161306E407F50798F0621BB1 -:10E29000730B840B950B39F40A2661F0232B242B86 -:10E2A000252B21F408950A2609F4A140A6958FEFA5 -:10E2B000811D811D089597F99F6780E870E060E0F7 -:10E2C0000895882371F4772321F09850872B762FB7 -:10E2D00007C0662311F499270DC09051862B70E07A -:10E2E00060E02AF09A95660F771F881FDAF7880F8B -:10E2F0009695879597F908959F3F31F0915020F4B6 -:10E30000879577956795B795880F911D9695879511 -:10E3100097F908959FEF80EC0895DF93CF931F93B3 -:10E320000F93FF92EF92DF927B018C01689405C0FE -:10E33000DA2EEF01F6D0FE01E894A59125913591F2 -:10E3400045915591AEF3EF01BFDDFE019701A801A4 -:10E35000DA9479F7DF90EF90FF900F911F91CF91B2 -:10E36000DF91089500240A94161617061806090668 -:10E37000089500240A94121613061406050608953B -:10E38000C9CF50D0E8F3E894E0E0BB279F57F0F006 -:10E390002AED3FE049EC06C0EE0FBB0F661F771F6A -:10E3A000881F28F0B23A62077307840728F0B25A30 -:10E3B000620B730B840BE3959A9572F7803830F4F7 -:10E3C0009A95BB0F661F771F881FD2F7904896CF8C -:10E3D000092E0394000C11F4882352F0BB0F40F473 -:10E3E000BF2B11F460FF04C06F5F7F4F8F4F9F4FB3 -:10E3F0000895EF93E0FF06C0A2EA2AED3FE049EC62 -:10E400005FEB62DDE5DF0F90039401FC9058EDEEC9 -:10E41000F1E03BC157FD9058440F551F59F05F3F45 -:10E4200071F04795880F97FB991F61F09F3F79F036 -:10E4300087950895121613061406551FF2CF4695B8 -:10E44000F1DF08C0161617061806991FF1CF86953A -:10E450007105610508940895E5DFA0F0BEE7B917DE -:10E4600088F4BB279F3860F41616B11D672F782FEC -:10E470008827985FF7CF869577956795B11D939517 -:10E480009639C8F30895E894BB2766277727CB0110 -:10E4900097F90895ECDE08F48FEF08959B01AC0125 -:10E4A00060E070E080E89FE3DECDBCDF58F19E576E -:10E4B00058F19851A0F0E9F0983020F5092E9927ED -:10E4C000660F771F881F991F0A94D1F712C0062E76 -:10E4D000672F782F8827985F11F4000C07C0993FA9 -:10E4E000B4F38695779567959395D9F7611D711D5E -:10E4F000811D3EF490958095709561957F4F8F4F6B -:10E500009F4F08956894C0CFBECF0BD061CF2ADF54 -:10E5100028F02FDF18F0952309F0CDCEFBCE112483 -:10E52000B3CF78DFA0F3959FD1F3950F50E0551F3F -:10E53000629FF001729FBB27F00DB11D639FAA2758 -:10E54000F00DB11DAA1F649F6627B00DA11D661FA7 -:10E55000829F2227B00DA11D621F739FB00DA11DC8 -:10E56000621F839FA00D611D221F749F3327A00D82 -:10E57000611D231F849F600D211D822F762F6A2F1E -:10E5800011249F5750408AF0E1F088234AF0EE0FA3 -:10E59000FF1FBB1F661F771F881F91505040A9F7B0 -:10E5A0009E3F510570F087CE6FCF5F3FECF3983EF2 -:10E5B000DCF3869577956795B795F795E7959F5F17 -:10E5C000C1F7FE2B880F911D9695879597F90895B1 -:10E5D0009F93D7DE0F9007FCEE5F0BCF11F40EF484 -:10E5E00099CE8ACE1FDFD0F39923D9F3CEF39F576C -:10E5F000550B87FF43D00024A0E640EA90018058E5 -:10E600005695979528F4805C660F771F881F20F039 -:10E6100026173707480730F4621B730B840B202939 -:10E6200031294A2BA69517940794202531254A278E -:10E6300058F7660F771F881F20F0261737074807FF -:10E6400030F4620B730B840B200D311D411DA0951E -:10E6500081F7B901842F9158880F96958795089571 -:10E660009B01AC0152CFF8DE20F09F3708F40CCFAD -:10E6700028CE42CEFCDD880B990B08959150504076 -:10E68000660F771F881FD2F708959F938F937F930C -:10E690006F93FF93EF939B01AC0137DFEF91FF91F5 -:10E6A0003CDE2F913F914F915F912FCF991B79E0E5 -:10E6B00004C0991F961708F0961B881F7A95C9F712 -:10E6C00080950895AA1BBB1B51E107C0AA1FBB1F61 -:10E6D000A617B70710F0A61BB70B881F991F5A95EE -:10E6E000A9F780959095BC01CD010895A1E21A2E5D -:10E6F000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FE6 -:10E70000A217B307E407F50720F0A21BB30BE40B35 -:10E71000F50B661F771F881F991F1A9469F760957C -:10E720007095809590959B01AC01BD01CF01089536 -:10E73000EE0FFF1F881F8BBF0790F691E02D1994F5 -:10E74000A29FB001B39FC001A39F700D811D112432 -:10E75000911DB29F700D811D1124911D0895F0DF50 -:10E76000A59F900DB49F900DA49F800D911D112425 -:10E770000895FB01DC010D900020E9F7119701904D -:10E780000D920020E1F70895FB01DC0101900D924C -:10E790000020E1F708950F931F93CF93DF93CDB738 -:10E7A000DEB72E970FB6F894DEBF0FBECDBF0E8931 -:10E7B0001F8986E08C831A8309838FEF9FE79E83EE -:10E7C0008D83AE01465E5F4F688D798DCE010196D7 -:10E7D00059D0EF81F885E00FF11F10822E960FB609 -:10E7E000F894DEBF0FBECDBFDF91CF911F910F9187 -:10E7F0000895CF93DF93CDB7DEB72E970FB6F89479 -:10E80000DEBF0FBECDBF85E08C838C899D899A8346 -:10E810008983AE01485E5F4F6E897F89CE01019684 -:10E82000E0D32E960FB6F894DEBF0FBECDBFDF91BA -:10E83000CF9108950F931F93CF93DF93CDB7DEB79A -:10E840002E970FB6F894DEBF0FBECDBF8C0186E0C9 -:10E850008C831A8309838FEF9FE79E838D83CE017C -:10E86000019610D0EF81F885E00FF11F10822E96EF -:10E870000FB6F894DEBF0FBECDBFDF91CF911F91D1 -:10E880000F9108952F923F924F925F926F927F92D5 -:10E890008F929F92AF92BF92CF92DF92EF92FF92B0 -:10E8A0000F931F93CF93DF93CDB7DEB72B970FB6A0 -:10E8B000F894DEBF0FBECDBF6C017B018A01FC0165 -:10E8C00017821682838181FFBFC1CE0101963C0170 -:10E8D000F6019381F70193FD859193FF81917F016B -:10E8E000882309F4ADC1853239F493FD859193FFF6 -:10E8F00081917F01853221F4B60190E0F0D4E8CF18 -:10E90000912C212C312CFFE1F315D8F08B3279F0CA -:10E9100038F4803279F08332A1F4232D20611DC0B8 -:10E920008D3261F0803369F4232D216016C0832D70 -:10E930008260382EE32DE4603E2E2AC0F32DF8606D -:10E940001DC037FC2DC020ED280F2A3040F08E323C -:10E95000B9F436FC75C1232D2064322E19C036FE61 -:10E9600006C08AE0989E200D1124922E11C0EAE084 -:10E970002E9E200D1124222EF32DF0623F2E08C072 -:10E980008C3621F4832D8068382E02C0883641F4FD -:10E99000F70193FD859193FF81917F018111B3CFA1 -:10E9A000982F9F7D9554933028F40C5F1F4F9FE361 -:10E9B00099830DC0833631F0833771F0833509F0C8 -:10E9C00055C020C0F801808189830E5F1F4F8824C5 -:10E9D0008394912C530112C02801F2E04F0E511C78 -:10E9E000F801A080B18036FE03C0692D70E002C03E -:10E9F0006FEF7FEFC5012AD44C018201F32DFF7721 -:10EA00003F2E15C0280122E0420E511CF801A080C3 -:10EA1000B18036FE03C0692D70E002C06FEF7FEF5A -:10EA2000C50109D44C01F32DF0683F2E820133FC5F -:10EA300019C0822D90E088169906A0F4B60180E2F4 -:10EA400090E04DD42A94F5CFF50137FC859137FE3F -:10EA500081915F01B60190E042D421102A9421E017 -:10EA6000821A91088114910479F7E1C0843611F07B -:10EA7000893639F5F80137FE07C0608171818281DE -:10EA800093810C5F1F4F08C060817181072E000CBD -:10EA9000880B990B0E5F1F4FF32DFF763F2E97FFCC -:10EAA00009C090958095709561957F4F8F4F9F4FCE -:10EAB000F0683F2E2AE030E0A30166D4882E861845 -:10EAC00044C0853731F4232D2F7EB22E2AE030E06A -:10EAD00025C0932D997FB92E8F36C1F018F4883553 -:10EAE00079F0AEC0803719F0883721F0A9C0E92F3E -:10EAF000E061BE2EB4FE0DC0FB2DF460BF2E09C038 -:10EB000034FE0AC0292F2660B22E06C028E030E06D -:10EB100005C020E130E002C020E132E0F801B7FE9C -:10EB200007C060817181828193810C5F1F4F06C095 -:10EB30006081718180E090E00E5F1F4FA30124D4BB -:10EB4000882E8618FB2DFF773F2E36FE0DC0232D15 -:10EB50002E7FA22E891458F434FE0BC032FC09C05B -:10EB6000832D8E7EA82E05C0B82CA32C03C0B82CF4 -:10EB700001C0B92CA4FE0FC0FE01E80DF11D80817B -:10EB8000803321F49A2D997EA92E09C0A2FE06C0D9 -:10EB9000B394B39404C08A2D867809F0B394A3FC8F -:10EBA00010C0A0FE06C0B21480F4280C922C9B1852 -:10EBB0000DC0B21458F4B60180E290E090D3B39443 -:10EBC000F8CFB21418F42B1802C0982C212CA4FEF4 -:10EBD0000FC0B60180E390E082D3A2FE16C0A1FC74 -:10EBE00003C088E790E002C088E590E0B6010CC061 -:10EBF0008A2D867851F0A1FE02C08BE201C080E22E -:10EC0000A7FC8DE2B60190E06AD3891430F4B60116 -:10EC100080E390E064D39A94F8CF8A94F301E80DEE -:10EC2000F11D8081B60190E05AD38110F6CF2220E9 -:10EC300009F44ECEB60180E290E051D32A94F7CF8A -:10EC4000F6018681978102C08FEF9FEF2B960FB65A -:10EC5000F894DEBF0FBECDBFDF91CF911F910F9112 -:10EC6000FF90EF90DF90CF90BF90AF909F908F90EC -:10EC70007F906F905F904F903F902F90089520FD70 -:10EC800009C0FC0123FD05C022FF02C0738362831B -:10EC900051834083089544FD17C046FD17C0AB0162 -:10ECA000BC01DA01FB01AA0FBB1FEE1FFF1F10946E -:10ECB000D1F74A0F5B1F6E1F7F1FCB01BA01660F92 -:10ECC000771F881F991F09C033E001C034E0660F29 -:10ECD000771F881F991F3150D1F7620F711D811D59 -:10ECE000911D08950F931F93CF93DF938C01C8015B -:10ECF000B8D2EC0197FD06C08BD2892BC1F7B801C1 -:10ED0000CE0129D3CE01DF91CF911F910F910895AC -:10ED10008F929F92AF92BF92EF92FF920F931F93A9 -:10ED2000CF93DF938C01D62F7A01B22E9AD29C0119 -:10ED300033272B32310531F02D32310559F48B2D2B -:10ED40008068B82ED15011F480E061C0C80189D22A -:10ED500097FDFACFCB2DCD7F2B2D2073F9F4803387 -:10ED6000E9F4AA24AA94AD0E09F43EC0C80179D2F0 -:10ED700097FD3AC09C012F7D33272835310541F49A -:10ED8000C264D25089F1C8016CD297FF07C02CC071 -:10ED9000B6FE02C0C26001C0C261DA2D812C912C86 -:10EDA000540120ED280F283078F0C4FF03C0B801CB -:10EDB000D2D217C02A3040F0C6FFF9CF2F7D3FEEE8 -:10EDC000320F3630A0F727504C2FC501B40163DF56 -:10EDD0004B015C01C260D15051F0C80142D297FF93 -:10EDE000E0CFC1FD04C0B0CF812C912C5401C7FFEE -:10EDF00008C0B094A09490948094811C911CA11C94 -:10EE0000B11C2C2FB501A401C70139DF81E0DF91CE -:10EE1000CF911F910F91FF90EF90BF90AF909F9077 -:10EE20008F9008955F926F927F928F929F92AF9290 -:10EE3000BF92CF92DF92EF92FF920F931F93CF93E7 -:10EE4000DF93CDB7DEB7A0970FB6F894DEBF0FBE45 -:10EE5000CDBF5C01962E7A01F9018E010F5F1F4F25 -:10EE6000680180E2D8011D928A95E9F7D5011396D1 -:10EE70008C9080E090E0612C712C30E061E070E0DB -:10EE800083FC259183FE21918F01522E211103C015 -:10EE900080E090E090C02E3511F4009751F1432F9F -:10EEA00050E0481759073CF42D3559F12D3219F42B -:10EEB000772009F103C0772009F468C0452D4695F5 -:10EEC00046954695D601A40FB11D452D47708B017F -:10EED00002C0000F111F4A95E2F7A8015C91452B73 -:10EEE0004C93651459F0561410F45394E7CF5A9488 -:10EEF000E5CF31E004C07724739401C0712C0196F2 -:10EF0000BFCF772019F08E8180628E83311103C0CC -:10EF10008824839417C0F6019E012F5D3F4F8081A6 -:10EF2000809581932E173F07D1F7F2CFE114F104BA -:10EF300029F0D7018C93F70131967F019A94812CA7 -:10EF40009920E9F0C5018DD197FD17C0FC01FF277D -:10EF500023E0F595E7952A95E1F7EC0DFD1D20815D -:10EF600030E0AC014770552702C0359527954A958A -:10EF7000E2F720FDDBCFB501EED1811089CFE1149E -:10EF8000F10411F0D7011C92C80115C0422F46951B -:10EF900046954695D601A40FB11D422F47708B01AF -:10EFA00002C0000F111F4A95E2F7A8015C91452BA2 -:10EFB0004C93622EA4CFA0960FB6F894DEBF0FBE7E -:10EFC000CDBFDF91CF911F910F91FF90EF90DF9018 -:10EFD000CF90BF90AF909F908F907F906F905F90F9 -:10EFE00008955F926F927F928F929F92AF92BF929D -:10EFF000CF92DF92EF92FF920F931F93CF93DF9305 -:10F000006C01EB015A01FC0117821682512CF601AA -:10F01000E380FE01E3FC8591E3FE8191182FEF016F -:10F02000882309F4E0C090E0F3D0892B19F0C601E1 -:10F0300059DEEDCF153241F4FE01E3FC1591E3FEFC -:10F040001191EF01153271F4C6010BD197FDC9C0C2 -:10F05000412F50E09C01332724173507C1F2B60138 -:10F060007AD1C1C01A3239F4E3FC1591E3FE119153 -:10F07000EF0101E001C000E0F12C20ED210F2A306A -:10F0800078F402606F2D70E080E090E040E203DEF3 -:10F09000F62EFE01E3FC1591E3FE1191EF01EDCF99 -:10F0A00001FF03C0F11003C09EC0FF24FA9418367C -:10F0B00019F01C3651F010C0FE01E3FC1591E3FE7F -:10F0C0001191EF01183641F408600460FE01E3FC81 -:10F0D0001591E3FE1191EF01112309F484C0612F12 -:10F0E00070E086E093E09CD0892B09F47CC000FDA1 -:10F0F00007C0F50180809180C50102965C0102C0C5 -:10F10000812C912C1E3649F4F6014681578160E02E -:10F1100070E0202FC401B3DD7ACF1336A1F401FDD6 -:10F1200002C0FF24F394C6019CD097FD5AC08114FD -:10F13000910429F0F4018083C40101964C01FA94F2 -:10F14000F110F1CF4AC01B3551F49E01A4016F2D7F -:10F15000C60168DEEC01892B09F03FC039C0C60149 -:10F16000C1DD97FD3EC01F3649F128F4143621F168 -:10F17000193639F125C0133771F01537E9F020C081 -:10F180008114910429F0F4016082C40101964C01BC -:10F19000FA94FF2059F0C60164D03C0197FD06C0E7 -:10F1A00037D0892B69F3B601C301D5D081149104FE -:10F1B000A1F0F401108211C0006203C0006101C01F -:10F1C0000064202FA4016F2DC601A2DD811105C0AE -:10F1D000F6018381807329F406C000FD18CF539493 -:10F1E00016CF552019F0852D90E002C08FEF9FEFCC -:10F1F000DF91CF911F910F91FF90EF90DF90CF9013 -:10F20000BF90AF909F908F907F906F905F90089588 -:10F21000911118C1803219F089508550D0F70895A6 -:10F22000FC010590061621F00020D9F7C0010895D1 -:10F230003197CF010895FC01059061507040011095 -:10F24000D8F7809590958E0F9F1F0895FC0161500F -:10F25000704001900110D8F7809590958E0F9F1FF8 -:10F260000895CF93DF93EC012B8120FF33C026FF5D -:10F270000AC02F7B2B838E819F8101969F838E8373 -:10F280008A8190E029C022FF0FC0E881F981808146 -:10F29000082E000C990B009719F420622B831AC0DA -:10F2A0003196F983E8830EC0EA85FB85199597FFAF -:10F2B00009C02B81019611F080E201C080E1822B10 -:10F2C0008B8308C02E813F812F5F3F4F3F832E836A -:10F2D000992702C08FEF9FEFDF91CF9108950F9391 -:10F2E0001F93CF93DF93FB01238121FD03C08FEF99 -:10F2F0009FEF2CC022FF16C04681578124813581A3 -:10F300004217530744F4A081B1819D012F5F3F4F05 -:10F31000318320838C93268137812F5F3F4F378342 -:10F32000268314C08B01EC01FB010084F185E02DE4 -:10F330001995892BE1F6D80116968D919C91179716 -:10F34000019617969C938E931697CE01DF91CF91DD -:10F350001F910F910895FB01238120FF12C026FD0C -:10F3600010C08F3F3FEF930761F082832F7D2064B1 -:10F3700023832681378121503109378326839927BA -:10F3800008958FEF9FEF0895FA01AA27283051F1D1 -:10F39000203181F1E8946F936E7F6E5F7F4F8F4FC6 -:10F3A0009F4FAF4FB1E03ED0B4E03CD0670F781F25 -:10F3B000891F9A1FA11D680F791F8A1F911DA11D0A -:10F3C0006A0F711D811D911DA11D20D009F4689443 -:10F3D0003F912AE0269F11243019305D3193DEF6EB -:10F3E000CF010895462F4770405D4193B3E00FD0A1 -:10F3F000C9F7F6CF462F4F70405D4A3318F0495D8C -:10F4000031FD4052419302D0A9F7EACFB4E0A6956E -:10F410009795879577956795BA95C9F70097610590 -:10F42000710508959B01AC010A2E069457954795E6 -:10F4300037952795BA95C9F7620F731F841F951FDB -:0EF44000A01D0895992788270895F894FFCFFE -:10F44E00AE47C13F08020000000000000073736366 -:10F45E00616E662025640D0A0053255B302D392D13 -:10F46E002B2E5D52255B302D392D2B2E5D48255BC5 -:10F47E00302D392D2B2E5D46255B302D392D2B2E23 -:10F48E005D004E256456255B302D392D2B2E5D46A5 -:10F49E00255B302D392D2B2E5D0058255B302D39F7 -:10F4AE002D2B2E5D59255B302D392D2B2E5D5A259A -:10F4BE005B302D392D2B2E5D46255B302D392D2BB6 -:10F4CE002E5D0042255B302D392D2B2E5D4C255B9C -:10F4DE00302D392D2B2E5D52255B302D392D2B2EB7 -:10F4EE005D46255B302D392D2B2E5D002042257378 -:10F4FE00204C2573205225730A007541726D3350CE -:10F50E006C7573002025730A0056342E352E30008C -:10F51E0056342E302E3400205625730A00205825DE -:10F52E007320592573205A25730A00205325732002 -:10F53E00522573204825730A004E2564002042256B -:10F54E0064204C2564205225640A00616E676C6548 -:10F55E00206F66667365743A25730D0A00646576CE -:10F56E00696365206E616D65203A2025730D0A0072 -:10F57E00736F667420766572203A2025730D0A002B -:10F58E0061706920766572203A2025730D0A007726 -:10F59E006F726B206D6F6465203A2025640D0A0032 -:10F5AE0040310A0065666665637420636865636B47 -:10F5BE002074696D656F7574210D0A0023255B300B -:10F5CE002D395D0024257300453233206275666641 -:10F5DE0065722066756C6C0D0A00403320582573D9 -:10F5EE0020592573205A2573205225730A00403660 -:10F5FE00204E30205625640A004035205625640AD8 -:10F60E000040392056300A0041255B302D392D2B14 -:10F61E002E5D00562573002056310A0056554225A0 -:10F62E005B302D392E5D0046255B302D392E5D5415 -:10F63E0025640058255B302D392D2B2E5D59255B09 -:10F64E00302D392D2B2E5D5A255B302D392D2B2E3D -:10F65E005D0042255B302D392D2B2E5D4C255B3008 -:10F66E002D392D2B2E5D52255B302D392D2B2E5DF8 -:10F67E000058255B302D392D2B2E5D59255B302DF5 -:10F68E00392D2B2E5D5A255B302D392D2B2E5D50AD -:10F69E002564004E25645625640053255B302D39B4 -:10F6AE002D2B2E5D0056255B302D392D2B2E5D001A -:10F6BE004532330A004532300A004532310A002005 -:10F6CE00006F6B004532300045323100453232005A -:10F6DE0056332E332E310056332E332E3000563302 -:0CF6EE002E332E320056302E302E30000D -:00000001FF diff --git a/hex/uArmPro_V4.7.0_release_20200710.hex b/hex/uArmPro_V4.7.0_release_20200710.hex deleted file mode 100644 index a79a325..0000000 --- a/hex/uArmPro_V4.7.0_release_20200710.hex +++ /dev/null @@ -1,4128 +0,0 @@ -:100000006CC500008BC5000089C5000087C50000D5 -:1000100085C5000083C5000081C500007FC50000C4 -:100020007DC500000C94B15F79C500000C94585553 -:1000300075C5000073C5000071C500000C94654DC6 -:100040006DC500000C941E4569C5000067C5000021 -:1000500065C5000063C5000061C500000C944B44F9 -:100060005DC500000C94FC580C94EB5957C500007A -:1000700055C5000053C5000051C500004FC5000024 -:100080004DC500004BC5000049C500000C944F4D04 -:100090000C9495580C94BD5941C500003FC5000013 -:1000A0003DC500003BC500000C94AD4737C50000BE -:1000B00035C500000C94144D31C500002FC500005B -:1000C0002DC500002BC500000C94DF4C0C942E585D -:1000D0000C948F5923C500000C94C7570C94615998 -:1000E0001DC50000CE13D113E713EA13ED13F0136F -:1000F000F313C214021F021FD014E514FA140F15D3 -:10010000021F1815021F2B15021F3A154415A415BE -:10011000021F021F021F5B1575158F15D11DE11DF2 -:10012000101EE11D141E2B1E1A1E241E4F1E561ECD -:10013000611E6C1E8B1E8D1E901E921E3D27552724 -:100140006D2785279D27BE27D627574C5A4C494CEB -:100150004D4C534C914C5E4C624C684C6C4C704C0A -:10016000764C7A4C7E4C914C844C884C8C4CFC5593 -:100170000256055608560D5615561D568A568A566D -:100180008A562556285631563A568A568A568A56DF -:100190008A568A568A5642564C5658566256655664 -:1001A0006E5677567D56084AD73B3BCE016E84BCCF -:1001B000BFFDC12F3D6C74319ABD56833DDA3D00C1 -:1001C000C77F11BED9E4BB4C3E916BAAAABE00000A -:1001D00000803F072C7AA5BA6CC590DA3B9365FC8A -:1001E0008BBC53F810FD3C5692834DBD879D3AB6AB -:1001F0003DCBC9BF5BBE73DA0FC93F05A84CCDB27A -:10020000D44EB93836A9020C50B9918688083CA65C -:10021000AAAA2ABE000000803F0000407A10F35ACC -:1002200000A0724E18090010A5D4E80000E8764836 -:10023000170000E40B54020000CA9A3B000000E1E2 -:10024000F505000080969800000040420F00000075 -:10025000A08601000000102700000000E803000055 -:1002600000006400000000000A000000000001001F -:10027000000000002C76D888DC674F0823DFC1DF40 -:10028000AE59E1B1B796E5E3E453C63AE651997643 -:1002900096E8E6C28426EB898C9B62ED407C6FFC7D -:1002A000EFBC9C9F40F2BAA56FA5F490055A2AF7BF -:1002B0005C936B6CF9676DC11BFCE0E40D47FEF5C8 -:1002C00020E6B500D0ED902E030094357705008030 -:1002D000841E080000204E0A000000C80C3333338F -:1002E000330F986E12831141EF8D2114893BE6552F -:1002F00016CFFEE6DB18D1844B381BF77C1D901D12 -:10030000A4BBE424203284725E228100C9F124EC73 -:10031000A1E53D276364696E6F70737578585B0063 -:10032000000020002300260029002C002F003200AE -:10033000000100000301060109010D0A003D00242F -:100340004E005D0D0A005B302E396A2E3230313698 -:10035000303732363A005D0D0A005B544C4F3A009C -:100360005D0D0A002C005B4739323A005D0D0A0032 -:100370002C003A003330003238005B47005D0D0A34 -:1003800000205300204600205400204D3800204D0E -:100390003900204D3500204D3400204D3300204DD4 -:1003A0003200204D3100204D3000204739340020EC -:1003B0004739330020473931002047393000204782 -:1003C0003230002047323100204731390020473198 -:1003D000380020473137002047004733382E004788 -:1003E0003830004733004732004731004730005B68 -:1003F00000290D0A00206D61782074726176656CA9 -:100400002C206D6D0020616363656C2C206D6D2F59 -:100410007365635E3200206D617820726174652CB3 -:10042000206D6D2F6D696E002C20737465702F6DBB -:100430006D007A00790078002028003D002400201B -:1004400028686F6D696E672070756C6C2D6F6666BD -:100450002C206D6D290D0A002028686F6D696E676C -:10046000206465626F756E63652C206D736563290A -:100470000D0A2432373D002028686F6D696E6720B1 -:100480007365656B2C206D6D2F6D696E290D0A24C7 -:1004900032363D002028686F6D696E67206665659D -:1004A000642C206D6D2F6D696E290D0A2432353D47 -:1004B00000290D0A2432343D002028686F6D696ED2 -:1004C000672064697220696E76657274206D61734D -:1004D0006B3A002028686F6D696E67206379636CE2 -:1004E000652C20626F6F6C290D0A2432333D002089 -:1004F0002868617264206C696D6974732C20626F66 -:100500006F6C290D0A2432323D002028736F667407 -:10051000206C696D6974732C20626F6F6C290D0AF1 -:100520002432313D0020287265706F727420696E2C -:10053000636865732C20626F6F6C290D0A2432305A -:100540003D00202861726320746F6C6572616E6378 -:10055000652C206D6D290D0A2431333D0020286A59 -:10056000756E6374696F6E20646576696174696F16 -:100570006E2C206D6D290D0A2431323D00290D0AA3 -:100580002431313D002028737461747573207265C5 -:10059000706F7274206D61736B3A00202870726FF7 -:1005A00062652070696E20696E766572742C2062B7 -:1005B0006F6F6C290D0A2431303D0020286C696D65 -:1005C00069742070696E7320696E766572742C2070 -:1005D000626F6F6C290D0A24363D00202873746504 -:1005E0007020656E61626C6520696E766572742C30 -:1005F00020626F6F6C290D0A24353D00290D0A24F5 -:10060000343D00202864697220706F727420696E16 -:1006100076657274206D61736B3A00290D0A24337C -:100620003D0020287374657020706F727420696EAD -:1006300076657274206D61736B3A0020287374655F -:10064000702069646C652064656C61792C206D7321 -:100650006563290D0A24323D0020287374657020DB -:1006600070756C73652C2075736563290D0A2431D0 -:100670003D0024303D0024242028766965772047FA -:1006800072626C2073657474696E6773290D0A2435 -:1006900023202876696577202320706172616D655B -:1006A00074657273290D0A244720287669657720BE -:1006B000706172736572207374617465290D0A2408 -:1006C00049202876696577206275696C6420696EB7 -:1006D000666F290D0A244E20287669657720737489 -:1006E000617274757020626C6F636B73290D0A24DC -:1006F000783D76616C756520287361766520477258 -:10070000626C2073657474696E67290D0A244E78D3 -:100710003D6C696E65202873617665207374617223 -:1007200074757020626C6F636B290D0A2443202856 -:10073000636865636B2067636F6465206D6F6465D4 -:10074000290D0A245820286B696C6C20616C617239 -:100750006D206C6F636B290D0A2448202872756E1A -:1007600020686F6D696E67206379636C65290D0A77 -:100770007E20286379636C65207374617274290D1F -:100780000A2120286665656420686F6C64290D0A5B -:100790003F202863757272656E742073746174757E -:1007A00073290D0A6374726C2D7820287265736545 -:1007B00074204772626C290D0A0000002100240099 -:1007C00027002A002D003000330001010000040141 -:1007D00007010A010D0A00486F6D696E67206661A6 -:1007E000696C0050726F6265206661696C004162DD -:1007F0006F727420647572696E67206379636C65CB -:1008000000536F6674206C696D697400486172648E -:10081000206C696D697400414C41524D3A20003E94 -:100820000D0A002C4C696D3A002C52583A002C42AB -:1008300075663A002C002C57506F733A002C002C30 -:100840004D506F733A003C446F6F72003C436865D3 -:10085000636B003C416C61726D003C486F6D6500DC -:100860003C486F6C64003C52756E003C49646C659A -:10087000005D0D0A00526573746F72696E672064C3 -:10088000656661756C74730050676D20456E640019 -:10089000436865636B20446F6F72004469736162E3 -:1008A0006C656400456E61626C65640043617574DB -:1008B000696F6E3A20556E6C6F636B656400272418 -:1008C00048277C2724582720746F20756E6C6F632F -:1008D0006B00526573657420746F20636F6E74696A -:1008E0006E7565005B0000002200250028002B00CB -:1008F0002E003100340002010000050108010B0147 -:1009000005050505070508080808020202020A0A8B -:1009100008080404040401010101010101010303A9 -:10092000030303030303040707070C0C0C0C0C0C54 -:100930000C0C0202020206060606060606060B0B51 -:100940000B0B0B0B0B0B0102102020080810204092 -:100950001020408002010201080402010102040883 -:100960001020408080402010080402018004020111 -:10097000804020100804020108040201010204085A -:1009800010204080010204081020408000000A0B63 -:1009900002090C0D0E08070304010000000000000E -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000121110000000000004 -:1009C0000000000000000000000000000000000027 -:1009D00000005D0D0A003A002C005B5052423A00C4 -:1009E0000D0A00496E76616C69642067636F646507 -:1009F0002049443A00556E646566696E65642066F8 -:100A00006565642072617465004D6F64616C206778 -:100A1000726F75702076696F6C6174696F6E0048D3 -:100A20006F6D696E67206E6F7420656E61626C65B4 -:100A30006400416C61726D206C6F636B004E6F746B -:100A40002069646C6500454550524F4D20726561C8 -:100A500064206661696C2E205573696E6720646539 -:100A60006661756C74730056616C7565203C20334B -:100A700020757365630053657474696E67206469DB -:100A80007361626C65640056616C7565203C203052 -:100A900000496E76616C69642073746174656D657C -:100AA0006E7400426164206E756D62657220666FBF -:100AB000726D617400457870656374656420636F5E -:100AC0006D6D616E64206C65747465720065727220 -:100AD0006F723A20006F6B0D0A0011241FBECFEF1A -:100AE000D1E2DEBFCDBF00E00CBF14E0A0E0B2E079 -:100AF000E8EEFEEF00E00BBF02C007900D92AA3DAA -:100B0000B107D9F725E1AAEDB4E001C01D92AE3ED0 -:100B1000B207E1F70E94A0620C94727F71CA2F9213 -:100B20003F924F925F926F927F928F929F92AF927D -:100B3000BF92CF92DF92EF92FF920F931F93CF93CA -:100B4000DF93CDB7DEB7CE5CD1090FB6F894DEBF28 -:100B50000FBECDBFC754DF4F99838883C95BD04098 -:100B600089E3E0E7F4E1DF011D928A95E9F78AE085 -:100B7000E9EAF4E1A1E7B4E101900D928A95E1F789 -:100B8000FE01E756FF4F1082CD54DF4F19821882C5 -:100B9000C35BD040C155DF4F19821882CF5AD04075 -:100BA000C554DF4F1882CB5BD040C655DF4F18824B -:100BB000CA5AD040C255DF4F1882CE5AD040E859A9 -:100BC000F1093F019E01235A3F4FC456DF4F39833D -:100BD0002883CC59D0402E0131E5430E511CCE0163 -:100BE00089599F4FC256DF4F99838883CE59D04091 -:100BF000DE01AF58BF4FC056DF4FB983A883C05A3C -:100C0000D040E85AFF4FCD53DF4FF983E883C35CF0 -:100C1000D040C756DF4F8881C959D040C754DF4FF5 -:100C2000E881F981C95BD040E80FF11D10811123E3 -:100C300011F40C9407169FEB910F9A3110F00C945D -:100C4000F41E8F5FC756DF4F8883C959D040AE016D -:100C50004B565F4FBE0167567F4FC754DF4F8881A9 -:100C60009981C95BD0400E94303A882311F40C94DA -:100C7000F61ECB56DF4FC880D980EA80FB80C5596D -:100C8000D040C701B6010E9455780E94C275CB546E -:100C9000DF4F688379838A839B83C55BD040CB54C5 -:100CA000DF4F28803980C55BD040B10180E090E003 -:100CB0000E94EE759B01AC01C701B6010E947474DD -:100CC00020E030E048EC52E40E94A7774B015C0141 -:100CD00020E030E0A9010E946C7720E030E040E0A5 -:100CE0005FE387FD05C0C501B4010E94757404C0AF -:100CF000C501B4010E9474740E94BD75CA55DF4FCE -:100D000079836883C65AD0401D3411F40C94070FC0 -:100D100024F4173461F00C94AF14103511F40C94D2 -:100D2000A30F133511F40C9435140C94AF14C7565B -:100D3000DF4F8881C959D040C754DF4F288139819E -:100D4000C95BD040280F311DC9013AE9231638E0AC -:100D5000330609F4F6C058F4B4ED2B16B7E03B06A1 -:100D6000C9F0E9E92E16E8E03E06E1F1A0C5FDE98B -:100D70002F16F8E03F0609F406C32EE9221628E0F4 -:100D8000320609F4E4C43CE9231638E0330609F0DE -:100D90008EC50DC21A8219827F926F922EE634E0C0 -:100DA0003F932F939F938F930E9446790F900F90BC -:100DB0000F900F900F900F90181619060CF0E9C4C1 -:100DC00089819A819093990F8093980F11E01093E5 -:100DD000C30D8091450D8111F6C40E94382E1093E9 -:100DE000450DF1C48E010B5E1F4F1F930F939E01A3 -:100DF000275D3F4F3F932F937E01ADE3EA0EF11C39 -:100E0000FF92EF925F924F922DE132E03F932F934A -:100E10009F938F930E9446790FB6F894DEBF0FBE62 -:100E2000CDBF04970CF4B5C4EF961CAE1DAE1EAE3C -:100E30001FAEEF97E5961CAE1DAE1EAE1FAEE5973A -:100E4000AB961CAE1DAE1EAE1FAEAB97A1961CAEF0 -:100E50001DAE1EAE1FAEA1978CE0D3011D928A95E8 -:100E6000E9F7AE0145585F4F60E070E0C2010E94B3 -:100E7000303A882309F4A7C4AE014F585F4F60E0B1 -:100E800070E0C7010E94303A882309F49CC4AE0187 -:100E900049595F4F60E070E0CE0189960E94303A78 -:100EA000882309F490C4AE01435A5F4F60E070E0BC -:100EB000C8010E94303A882309F485C420E030E05C -:100EC00044EB52E4E5966CAD7DAD8EAD9FADE597FC -:100ED0000E94747421EE3EE245E652E40E9455758C -:100EE0006B017C01E5966CAF7DAF8EAF9FAFE59750 -:100EF0000E945275EF968CAC9DACAEACBFACEF9738 -:100F0000A50194010E94A77769837A838B839C83D0 -:100F1000C701B6010E940A789B01AC01C501B4016A -:100F20000E94A7776D837E838F839887AB968CAD65 -:100F30009DADAEADBFADAB9789879A87AB87BC87B8 -:100F400019C2F201108211821282138221961CAE04 -:100F50001DAE1EAE1FAE21977F926F928E010B5E6B -:100F60001F4F1F930F93C356DF4FF881CD59D040C9 -:100F7000FF93C456DF4F2881CC59D0402F9326E4ED -:100F800032E03F932F939F938F930E9446790FB641 -:100F9000F894DEBF0FBECDBF03970CF4FAC3A201D5 -:100FA00060E070E0C8010E94303A882309F40BC465 -:100FB000AE01435C5F4F60E070E0C3010E94303AD5 -:100FC000882309F400C4FE01B996C656DF4FF983A1 -:100FD000E883CA59D0408CE011928A95E9F7609174 -:100FE000AA0D7091AB0D8091AC0D9091AD0D0E944A -:100FF000F07520E030E040EA52E40E9455752091FF -:101000009E0D30919F0D4091A00D5091A10D0E9419 -:101010007574CE55DF4F688379838A839B83C25A68 -:10102000D0406091AE0D7091AF0D8091B00D909158 -:10103000B10D0E94F07520E030E040EA52E40E94D9 -:1010400055752091A20D3091A30D4091A40D5091A2 -:10105000A50D0E947574C154DF4F688379838A831C -:101060009B83CF5BD0406091B20D7091B30D8091A6 -:10107000B40D9091B50D0E94F07520E030E040EA8B -:1010800052E40E9455756B017C0120E030E044EB96 -:1010900052E46091A60D7091A70D8091A80D9091DA -:1010A000A90D0E9474749B01AC01C701B6010E9496 -:1010B00075747B018C016F968EAD9FAD6F978130FB -:1010C0009105B9F144F5892B09F070C320E030E0B7 -:1010D00044EB52E4D2016D917D918D919C910E94DF -:1010E0007474F20160837183828393839E012F5C09 -:1010F0003F4F4901DE019D965D01FE01B9966F01EA -:101100007B018C01C154DF4F288139814A815B8189 -:10111000CF5BD04034C08230910519F1039709F0BC -:1011200045C3D2016D917D918D919C910E94132FA9 -:101130004AC3D2016D917D918D919C91FE01F196F2 -:101140004F019E01235D3F4F5901DE0199966D01CC -:10115000C154DF4F288139814A815B81CF5BD04008 -:1011600016C0F2012081318142815381CE01C196A6 -:101170004C01DE019D965D01FE01B9966F01CE55D1 -:10118000DF4F688179818A819B81C25AD0400E9459 -:10119000AF51A401B501C6010E94504F21962CAD5C -:1011A0003DAD4EAD5FAD219700E0B6017BC38E0132 -:1011B0000B5E1F4F1F930F937E01B9E2EB0EF11CE4 -:1011C000FF92EF926E01EDE3CE0ED11CDF92CF9233 -:1011D0005F924F922EE532E03F932F939F938F9330 -:1011E0000E9446790FB6F894DEBF0FBECDBF0497BC -:1011F0000CF4CFC2EF961CAE1DAE1EAE1FAEEF9725 -:10120000E5961CAE1DAE1EAE1FAEE597AB961CAEAE -:101210001DAE1EAE1FAEAB97A1961CAE1DAE1EAE90 -:101220001FAEA197AE0145585F4F60E070E0C2016C -:101230000E94303A882309F4C6C2AE014F585F4F6E -:1012400060E070E0C6010E94303A882309F4BBC216 -:10125000AE0149595F4F60E070E0C7010E94303A2B -:10126000882309F4B0C2AE01435A5F4F60E070E0DA -:10127000C8010E94303A882309F4A5C26091B20DDA -:101280007091B30D8091B40D9091B50D0E94F075E1 -:10129000CE55DF4F688379838A839B83C25AD040BF -:1012A0006091AE0D7091AF0D8091B00D9091B10D28 -:1012B0000E94F075C154DF4F688379838A839B83D2 -:1012C000CF5BD0406091AA0D7091AB0D8091AC0DB9 -:1012D0009091AD0D0E94F075DE0119964D01FE0151 -:1012E00035965F016301CE55DF4FE880F9800A81B2 -:1012F0001B81C25AD040C154DF4F288139814A81B5 -:101300005B81CF5BD0400E949452A401B501C30120 -:101310000E94504FEF962CAD3DAD4EAD5FADEF97B7 -:1013200069817A818B819C810E94757469837A833B -:101330008B839C83E5962CAD3DAD4EAD5FADE597BF -:101340006D817E818F8198850E9475746D837E8307 -:101350008F839887AB962CAD3DAD4EAD5FADAB970F -:1013600069857A858B859C850E94757469877A87E3 -:101370008B879C87A1962CAD3DAD4EAD5FADA197FF -:1013800000E0B301E2C1C356DF4FF881CD59D04030 -:10139000FF93C456DF4F2881CC59D0402F93C156BC -:1013A000DF4F3881CF59D0403F93C256DF4FA881DD -:1013B000CE59D040AF93CF55DF4FB881C15AD040FE -:1013C000BF93C056DF4FE881C05AD040EF938E01E3 -:1013D00005581F4F1F930F932DE132E03F932F933A -:1013E0009F938F930E9446790FB6F894DEBF0FBE8D -:1013F000CDBF04970CF4CDC1CF56DF4F18821982B0 -:101400001A821B82C159D040C357DF4F18821982FC -:101410001A821B82CD58D040C757DF4F18821982DD -:101420001A821B82C958D040CB57DF4F18821982CD -:101430001A821B82C558D0408CE0D2011D928A9539 -:10144000E9F7AE014F565F4F60E070E0C8010E94BF -:10145000303A882309F4B7C1AE0143575F4F60E0CB -:1014600070E0CE018F589F4F0E94303A882309F4D4 -:10147000AAC1AE0147575F4F60E070E0CE018959C5 -:101480009F4F0E94303A882309F49DC1AE014B570B -:101490005F4F60E070E0CE01835A9F4F0E94303A68 -:1014A000882309F490C16091B20D7091B30D8091C1 -:1014B000B40D9091B50D0E94F075C154DF4F688353 -:1014C00079838A839B83CF5BD04020E030E044EB7C -:1014D00052E46091A60D7091A70D8091A80D909196 -:1014E000A90D0E9474746B017C0120E030E040EA99 -:1014F00052E4C154DF4F688179818A819B81CF5B3F -:10150000D0400E9455759B01AC01C701B6010E94F5 -:101510007574C953DF4F688379838A839B83C75C63 -:10152000D0406091AE0D7091AF0D8091B00D909153 -:10153000B10D0E94F075C553DF4F688379838A83AC -:101540009B83CB5CD0406091AA0D7091AB0D8091D4 -:10155000AC0D9091AD0D0E94F075CD53DF4F88809A -:101560009980C35CD040F2013496CE55DF4FF983A9 -:10157000E883C25AD0405F016201C154DF4FE88066 -:10158000F9800A811B81CF5BD040C553DF4F288192 -:1015900039814A815B81CB5CD0400E949452CD530B -:1015A000DF4F48815981C35CD040CE55DF4F688101 -:1015B0007981C25AD040C2010E94504FD2016D9130 -:1015C0007D918D919C9113971496CD90DD90ED9027 -:1015D000FC9017979B01AC010E94A7774B015C011F -:1015E000A7019601C701B6010E94A7779B01AC0134 -:1015F000C501B4010E9475740E941478CF56DF4F64 -:10160000288139814A815B81C159D0400E9475741B -:101610006B017C01CF56DF4F688379838A839B837C -:10162000C159D040C357DF4F288139814A815B813E -:10163000CD58D040C953DF4F688179818A819B8121 -:10164000C75CD0400E94757421EE3EE245E652E44C -:101650000E945575CE55DF4F688379838A839B83BB -:10166000C25AD0400E9452759B01AC01C701B6011D -:101670000E94A7774B015C01F20160837183828332 -:101680009383CE55DF4F688179818A819B81C25ACD -:10169000D0400E940A789B01AC01C701B6010E94AC -:1016A000A777D20114966D937D938D939C93179792 -:1016B000C757DF4F288139814A815B81C958D040A3 -:1016C00018966D917D918D919C911B970E947574D8 -:1016D000F20160877187828793878E01035C1F4FB9 -:1016E00024E045E0C501B4010E94F971D2011496CD -:1016F0006D917D918D919C9117970451110924E072 -:1017000045E00E94F971F2016085718582859385BB -:101710000451110924E045E00E94F971CF56DF4FD2 -:10172000688179818A819B81C159D040830124E0FD -:1017300045E00E94F971CB57DF4F288139814A81FA -:101740005B81C558D04000E0B20181E0ACC07F921F -:101750006F928E010B5E1F4F1F930F937E01F9E274 -:10176000EF0EF11CFF92EF926E012DE3C20ED11C21 -:10177000DF92CF9227E832E03F932F939F938F938E -:101780000E9446790FB6F894DEBF0FBECDBF049716 -:1017900084F41F9281E08F9381E192E09F938F9375 -:1017A0000E948B320F900F900F900F9082E390E089 -:1017B00080C0AE0145585F4F60E070E0C6010E94F6 -:1017C000303A811103C080E090E073C0AE014F5801 -:1017D0005F4F60E070E0C7010E94303A882399F3C0 -:1017E000AE0149595F4F60E070E0C8010E94303A95 -:1017F000882349F3AE01435A5F4F60E070E0C301B4 -:101800000E94303A8823F9F220E030E044EB52E4C1 -:10181000EF966CAD7DAD8EAD9FADEF970E94747469 -:101820007B018C01EF966CAF7DAF8EAF9FAFEF97D2 -:101830008CE0F20111928A95E9F7AB962CAD3DADA3 -:101840004EAD5FADAB97E5966CAD7DAD8EAD9FAD0A -:10185000E597CD53DF4F88809980C35CD040D2019B -:101860001496CE55DF4FB983A883C25AD0405D018C -:1018700062010E94AF51CD53DF4F48815981C35C53 -:10188000D040CE55DF4F68817981C25AD040C20125 -:101890000E94504FA1962CAD3DAD4EAD5FADA197CE -:1018A00000E0B20180E00E949B5B90E002C081E01A -:1018B00090E09C01215031092230310510F00C9448 -:1018C000601FB8E22B16310409F445C280F5F4E13B -:1018D0002F16310498F421E12216310408F07AC160 -:1018E00034E02316310409F479C008F4F6C09AE014 -:1018F0002916310409F45EC00C94021FACE12A16CB -:10190000310409F457C038F4E6E12E16310408F426 -:10191000BFC10C94021FFEE12F16310409F44AC026 -:1019200026E22216310409F4D8C00C94021F3DE3CC -:101930002316310409F4FEC110F595E3291631048C -:1019400009F44CC060F4BBE22B16310409F4B7C1B2 -:10195000E1E32E16310409F4B2C10C94021FFCE33A -:101960002F16310410F00C94021FCB54DF4F8881E6 -:10197000C55BD040865380937714F9E0D5C12CE540 -:101980002216310460F43AE52316310408F03DC113 -:1019900080E52816310409F4AEC00C94021F9CE5C2 -:1019A0002916310439F0AFE52A16310408F463C171 -:1019B0000C94021FCA55DF4FE881F981C65AD04006 -:1019C000EF2B11F00C94161FC255DF4FF881CE5A41 -:1019D000D040FF2309F452C00C94F81E2CE12216CB -:1019E0003104D1F148F484E02816310481F09AE002 -:1019F00029163104E9F01FC0AEE12A16310409F4BA -:101A000047C0B5E32B16310409F465C014C081E06A -:101A100010C0FFE12F16310408F051C02AE0221651 -:101A2000310479F4E1E0C255DF4FE883CE5AD0406B -:101A300082E080937014CE55DF4F1882C25AD04096 -:101A400097C13CE12316310409F09CC1F1E0C25575 -:101A5000DF4FF883CE5AD040CA55DF4F28813981F5 -:101A6000C65AD0402115310539F02A30310511F020 -:101A70000C94021F84E015C083E013C0EEE12E1623 -:101A8000310439F631E0C255DF4F3883CE5AD040A9 -:101A9000CA55DF4F88819981C65AD040009749F4D2 -:101AA00085E080937014CE55DF4F1882C25AD04023 -:101AB00074C10A9711F00C94021F86E0F2CF85E3FF -:101AC0002816310411F00C942B1F91E0C255DF4F02 -:101AD0009883CE5AD04087E0ACCFC255DF4FF88113 -:101AE000CE5AD040F1110C94F81E22E0C255DF4FBF -:101AF0002883CE5AD04032E02316310421F160F41D -:101B000021143104E1F02A94232809F02BC181E04B -:101B10008093711421E073C0A6E22A163104E9F023 -:101B2000B0E52B16310409F451C0E3E02E16310460 -:101B300009F018C183E08093711481E00DC1109207 -:101B40007114F1E0F1C082E08093711431E0CE5560 -:101B5000DF4F3883C25AD0400BC1CA55DF4FA8812E -:101B6000B981C65AD040AE31B10531F170F4549705 -:101B700011F00C94021F84E080937114F1E0CE55B3 -:101B8000DF4FF883C25AD04008C1CA55DF4FE88101 -:101B9000F981C65AD040E832F10599F0F29711F078 -:101BA0000C94021F87E08093711481E0CE55DF4FC3 -:101BB0008883C25AD040F1C085E08093711421E03F -:101BC00054C086E08093711431E0BFC088E08093F8 -:101BD0007114C8C0A2E12A16310441F0B3E12B16FA -:101BE000310449F010927514E2E063C081E0809303 -:101BF0007514F2E099C082E08093751422E0CE550E -:101C0000DF4F2883C25AD040B3C0CA55DF4F888106 -:101C10009981C65AD040892BB9F49AE52916310426 -:101C200049F410927414A3E0CE55DF4FA883C25A32 -:101C3000D040B3C081E080937414B3E0CE55DF4F41 -:101C4000B883C25AD040A9C0CA55DF4FE881F98194 -:101C5000C65AD0403A9711F00C94021FFAE52F169D -:101C6000310411F40C94021F24E0CE55DF4F288379 -:101C7000C25AD04092C03DE52316310429F481E0D8 -:101C80008093721485E068C01092721495E06BC066 -:101C9000A4E12A16310451F481E080937314B6E074 -:101CA000CE55DF4FB883C25AD04062C01092731431 -:101CB000E6E0CE55DF4FE883C25AD04059C0C25546 -:101CC000DF4FF881CE5AD040F1110C94F81E21E379 -:101CD0002216310479F41092761438E0CE55DF4F95 -:101CE0003883C25AD04083E0C255DF4F8883CE5A32 -:101CF000D04053C0CA55DF4FA881B981C65AD040E1 -:101D00001A9711F00C94021F81E080937614B8E0CA -:101D1000CE55DF4FB883C25AD040E3E0C255DF4F03 -:101D2000E883CE5AD04039C0CE55DF4FF883C25A2F -:101D3000D0401EC0CA55DF4F28813981C65AD040D5 -:101D4000232B11F00C94021F3AE0CE55DF4F38835D -:101D5000C25AD04022C087E0CE55DF4F8883C25A96 -:101D6000D04006C091E0CE55DF4F9883C25AD04094 -:101D7000CA55DF4FA881B981C65AD040AB2B69F054 -:101D80000C94291FCE55DF4F1882C25AD040B1E0C3 -:101D9000C255DF4FB883CE5AD040C155DF4FE881DE -:101DA000F981CF5AD040CF01A0E0B0E0CE55DF4F4F -:101DB0000880C25AD04004C0B695A79597958795DC -:101DC0000A94D2F780FF03C085E10C94601F81E084 -:101DD00090E0A0E0B0E0CE55DF4F0880C25AD0407E -:101DE00004C0880F991FAA1FBB1F0A94D2F7C155C0 -:101DF000DF4F28813981CF5AD040282B392BC1554C -:101E0000DF4F39832883CF5AD0400C940906CA5536 -:101E1000DF4F88819981C65AD040892B11F00C94EC -:101E2000291FC756DF4F8881C959D040C754DF4F9B -:101E300068817981C95BD040680F711DAE0147563A -:101E40005F4FCB54DF4F88819981C55BD0400E94A2 -:101E50007A1F9C01215031092230310510F00C9479 -:101E6000601F96E02916310428F4A3E02A163104F5 -:101E700090F026C0B8E02B16310410F40C94021F29 -:101E8000EAE02E16310408F440C0FEE12F163104BA -:101E900011F00C94021F22E02216310461F03EE1A1 -:101EA0002316310441F0232809F046C081E08093D5 -:101EB00078148BE032C082E0809378149BE036C0C7 -:101EC000A4E02A16310471F0B5E02B163104A1F01C -:101ED00081E080937A14ECE0CE55DF4FE883C25A5C -:101EE000D04092C482E080937A14FCE0CE55DF4F5C -:101EF000F883C25AD04088C410927A142CE0CE5590 -:101F0000DF4F2883C25AD0407FC439E02316310402 -:101F100051F082E0809379148DE0CE55DF4F8883B5 -:101F2000C25AD04071C4109279149DE0CE55DF4F53 -:101F30009883C25AD04068C4ABE0CE55DF4FA88327 -:101F4000C25AD04061C4CA55DF4F28813981C65A70 -:101F5000D040232B11F00C94291FC756DF4F8881E6 -:101F6000C959D040C754DF4FE881F981C95BD040DF -:101F7000E80FF11D37EB231638E0330609F416C3DA -:101F800008F066C19CE9291698E0390609F4D2C127 -:101F900008F07CC0B9E92B16B8E03B0609F4B0C1E3 -:101FA00008F065C0F8E92F16F8E03F0609F022C4F2 -:101FB00084E16E01E9E2CE0ED11CD601E82F1D921C -:101FC000EA95E9F77E01F5E1EF0EF11CD701E82F64 -:101FD0001D92EA95E9F7D3011D928A95E9F780E011 -:101FE00090E00E943B54CA55DF4F688379838A830F -:101FF0009B83C65AD04081E090E00E943B54CB5472 -:10200000DF4F688379838A839B83C55BD04082E0FE -:1020100090E00E943B544B015C01860124E045E0C6 -:10202000CA55DF4F688179818A819B81C65AD04029 -:102030000E94F971870124E045E0CB54DF4F6881AD -:1020400079818A819B81C55BD0400E94F9718301AF -:1020500024E045E0C501B4010E94F971FF92EF92BE -:10206000DF92CF927F926F9280EB92E04CC32AE98D -:10207000221628E0320609F45AC13BE9231638E05B -:10208000330609F0B7C38CEC92E03CC18EE9281608 -:1020900088E0380609F456C108F44FC1ACEA2A16A4 -:1020A000A8E03A0609F4DDC1BDEA2B16B8E03B060C -:1020B00009F0A0C3A1961CAE1DAE1EAE1FAEA19727 -:1020C000D2011D921D921D921C92139721961CAE57 -:1020D0001DAE1EAE1FAE219784E1FE01B996C65615 -:1020E000DF4FF983E883CA59D040282F11922A95EF -:1020F000E9F71E0135E1230E311CD101E82F1D92B5 -:10210000EA95E9F7D3011D928A95E9F780E090E01E -:102110000E943B54CB54DF4F688379838A839B832F -:10212000C55BD04081E090E00E943B54C154DF4F3A -:10213000688379838A839B83CF5BD04082E090E081 -:102140000E943B5420E030E044EB52E40E9474745F -:10215000CA55DF4F688379838A839B83C65AD040F0 -:10216000FE01FD964F0152019E01235A3F4F690126 -:102170007B018C01C154DF4F288139814A815B8109 -:10218000CF5BD040CB54DF4F688179818A819B81BE -:10219000C55BD0400E94AF51A401B201C6010E94AC -:1021A000504FA1966CAD7DAD8EAD9FADA197D20184 -:1021B000CD90DD90ED90FC909B01AC010E94A77743 -:1021C0004B015C01A7019601C701B6010E94A777E8 -:1021D0009B01AC01C501B4010E9475740E94147882 -:1021E0008E01075D1F4F24E045E00E94F97120E059 -:1021F00030E044EB52E4CA55DF4F688179818A812F -:102200009B81C65AD0400E947574810124E045E04C -:102210000E94F97121966CAD7DAD8EAD9FAD219779 -:10222000830124E045E00E94F9717F926F923F9212 -:102230002F92C556DF4FB881CB59D040BF93C656B9 -:10224000DF4FE881CA59D040EF938EEE92E05BC237 -:1022500020EC221628E0320609F4D4C1D0F489EB30 -:10226000281688E0380609F4B8C108F4ABC1AAEB17 -:102270002A16A8E03A0609F4B8C1BBEB2B16B8E061 -:102280003B0609F0B7C28091020185FB882780F9DF -:10229000B7C123EC221628E0320609F41CC2F0F480 -:1022A00081EC281688E0380609F4EAC192EC291678 -:1022B00098E0390609F09EC280918F0D8F9380912E -:1022C0008E0D8F9380918D0D8F9380918C0D8F93B8 -:1022D00080918B0D8F9380918A0D12C2A4EC2A16E7 -:1022E000A8E03A0609F41DC2B0E62B16B9E03B0699 -:1022F00009F080C28091910D8F938091900D76C2EC -:102300008EEB92E09F938F9387EC92E09F938F9355 -:1023100086E59DE09F938F930E9418790F900F9010 -:102320000F900F900F900F9080E090E065C28AE9C7 -:102330009FE0E8CF83ED92E0E5CF89E49DE09F93B5 -:102340008F938CC080818E3409F0BAC18181805313 -:10235000843008F0B5C194E16E01FDE3CF0ED11CCD -:10236000D601E92F1D92EA95E9F77E01F9E2EF0E19 -:10237000F11CD701E92F1D92EA95E9F75E01F5E11D -:10238000AF0EB11CD501E92F1D92EA95E9F7D301F3 -:102390001D929A95E9F78230E1F0833031F1813076 -:1023A00061F082E090E00E943B54850124E045E02A -:1023B0000E94F971BF92AF9251C080E090E00E94FC -:1023C0003B54860124E045E00E94F971DF92CF92F0 -:1023D00045C081E090E00E943B54870124E045E045 -:1023E0000E94F971FF92EF9239C08091900D909107 -:1023F000910D0497029748F46091940F7091950F96 -:102400008091960F9091970F22C020E030E040E03D -:102410005FE360910002709101028091020290914D -:1024200003020E94747420E030E040E05FE30E9409 -:10243000A77720E030E044E353E40E94A7779B01B4 -:10244000AC0160E070E084E393E40E947474830163 -:1024500024E045E00E94F9717F926F928AED92E04C -:1024600055CFA1961CAE1DAE1EAE1FAEA197F201B8 -:10247000108211821282138221961CAE1DAE1EAEF6 -:102480001FAE219784E19E01275D3F4FC656DF4F67 -:1024900039832883CA59D040D901E82F1D92EA9583 -:1024A000E9F71E01F5E12F0E311CD101E82F1D9235 -:1024B000EA95E9F7D3011D928A95E9F780E090E06B -:1024C0000E943B54CA55DF4F688379838A839B837C -:1024D000C65AD04081E090E00E943B54CB54DF4F7D -:1024E000688379838A839B83C55BD04082E090E0D8 -:1024F0000E943B5420E030E044EB52E40E947474AC -:10250000FE01FD964F0152019E01235A3F4F690182 -:102510007B018C01CB54DF4F288139814A815B815B -:10252000C55BD040CA55DF4F688179818A819B8124 -:10253000C65AD0400E94AF51A401B201C6010E9408 -:10254000504FA1966CAD7DAD8EAD9FADA1978E0124 -:10255000075D1F4F24E045E00E94F971D2016D91A3 -:102560007D918D919C91810124E045E00E94F9715B -:1025700021966CAD7DAD8EAD9FAD2197830124E09A -:1025800045E00E94F9717F926F923F922F92C5565B -:10259000DF4FB881CB59D040BF93C656DF4FE8819B -:1025A000CA59D040EF9380EE92E0ADC0A49B11C019 -:1025B0008FE30E94C04C8A30910558F08734910512 -:1025C00050F005C0479905C00898009B04C081E001 -:1025D00017C080E015C082E013C082B3869586954F -:1025E000869591E0892781700BC08BE30E94C04CD7 -:1025F00021E08536910508F420E01F922F93F7C063 -:102600001F92F4C07F926F928CEF92E09F938F9312 -:10261000FF93EF930E9446790F900F900F900F90C9 -:102620000F900F90181619060CF03DC029813A81C1 -:102630002634310508F044C0F901E457F64F84917F -:10264000F901EA5BF64F1491F901E050F74F04915C -:10265000002391F081110E943C4CE02FF0E0EE0F3E -:10266000FF1FE05EFC4FA591B491EC911E2381E029 -:1026700090E021F480E002C080E090E09F93B6C03B -:102680007F926F928CEF92E09F938F93FF93EF93E3 -:102690000E9446790F900F900F900F900F900F901F -:1026A0001816190684F01F9281E08F9381E192E061 -:1026B0009F938F930E948B320F900F900F900F90EB -:1026C00082E390E099C089819A8180319105C0F7B9 -:1026D0000E94C04CD3CF80E090E00E94E953182FB5 -:1026E000092F81E090E00E94E953F82EE92E82E064 -:1026F00090E00E94E953EF92FF920F931F939F93F4 -:102700008F9380E093E09F938F9386E59DE09F9366 -:102710008F930E9418790FB6F894DEBF0FBECDBF1D -:1027200003CE6BE080E00E94844A182F6BE081E0CA -:102730000E94844A1871E1E0F0E0183111F0E0E005 -:10274000F0E09F01220F331F220F331F8871E1E059 -:10275000F0E0883111F0E0E0F0E0EE0FFF1F122F03 -:102760001E2B6BE082E00E94844A8871E1E0883190 -:1027700009F0E0E0E12B8E2FEE0F990BAA0BBB0BBB -:10278000FC013197E730F10530F48827EE58FF4F10 -:102790008F4F0C94E5781F921F9229C01F9281E001 -:1027A00002C01F9282E08F9386EB93E09F938F93FA -:1027B00086E59DE09F938F930E9418790F900F906C -:1027C0000F900F900F900F9084E390E015C01F9230 -:1027D00083E0E9CF1F9284E0E6CF1F9285E0E3CF4C -:1027E0001F9286E0E0CF1F9287E0DDCF8F9386EBCC -:1027F00093E08CCD81E090E09C01215031092230A2 -:10280000310510F00C94601FC155DF4FE881F9814C -:10281000CF5AD040CF01A0E0B0E0CE55DF4F0880C6 -:10282000C25AD04004C0B695A795979587950A944B -:10283000D2F780FDC9CA81E090E0A0E0B0E0CE55BB -:10284000DF4F0880C25AD04004C0880F991FAA1FCA -:10285000BB1F0A94D2F7E82BF92BC155DF4FF98340 -:10286000E883CF5AD0400C940906CA55DF4F28811F -:102870003981C65AD040232B11F00C94291F38EE11 -:10288000231633E0330641F08CE4281684E0380642 -:1028900049F50E94715B23C0C756DF4F8881C95933 -:1028A000D040C754DF4FE881F981C95BD040E80FC1 -:1028B000F11D80818635C9F4818180538230A8F46E -:1028C0009FB7813029F0F89480910114886004C08A -:1028D000F894809101148260809301149FBF80E07E -:1028E00090E005C081E090E002C082E390E09C01AE -:1028F000215031092230310510F00C94601FC15570 -:10290000DF4FE881F981CF5AD040CF01A0E0B0E09D -:10291000CE55DF4F0880C25AD04004C0B695A79567 -:10292000979587950A94D2F780FD4ECA81E090E092 -:10293000A0E0B0E0CE55DF4F0880C25AD04004C0BE -:10294000880F991FAA1FBB1F0A94D2F7E82BF92BF7 -:10295000C155DF4FF983E883CF5AD04095C0812F0E -:10296000110F990BAA0BBB0BFC01E654F109E531E1 -:10297000F10510F00C94021F8827E758FF4F8F4F86 -:102980000C94E578C0927B14D0927C14E0927D1474 -:10299000F0927E14CE55DF4F1882C25AD040DAC072 -:1029A000C0927F14D0928014E0928114F09282142D -:1029B000C554DF4FF881CB5BD040F160C554DF4F89 -:1029C000F883CB5BD04021E04FC0C0928314D092FB -:1029D0008414E0928514F0928614C554DF4F388138 -:1029E000CB5BD0403260C554DF4F3883CB5BD040E7 -:1029F00082E05BC0C0928714D0928814E092891460 -:102A0000F0928A14C554DF4F9881CB5BD04094601C -:102A1000C554DF4F9883CB5BD040A3E060C0CB545C -:102A2000DF4FB881C55BD040B0938B14E4E071C038 -:102A3000C701B6010E94BD7560938C1470938D140C -:102A400080938E1490938F14F5E0CE55DF4FF8836A -:102A5000C25AD0407FC0C0929014D0929114E0929C -:102A60009214F092931426E0CE55DF4F2883C25A79 -:102A7000D04070C0C0929414D0929514E0929614F5 -:102A8000F092971437E061C0CB56DF4F888199816F -:102A9000AA81BB81C559D040809398149093991412 -:102AA000A0939A14B0939B1488E0CE55DF4F88838F -:102AB000C25AD0404FC0C0929D14D0929E14E09252 -:102AC0009F14F092A014C655DF4F9881CA5AD04087 -:102AD0009160C655DF4F9883CA5AD040AAE0CE55C0 -:102AE000DF4FA883C25AD04035C0C092A114D09203 -:102AF000A214E092A314F092A414C655DF4FB8813B -:102B0000CA5AD040B260C655DF4FB883CA5AD040C7 -:102B1000EBE0CE55DF4FE883C25AD0401BC0C092D5 -:102B2000A514D092A614E092A714F092A814C6554A -:102B3000DF4FF881CA5AD040F460C655DF4FF883A2 -:102B4000CA5AD0402CE090CF39E0CE55DF4F3883C1 -:102B5000C25AD040CE55DF4F8881C25AD040082F8C -:102B6000CD54DF4FE881F981C35BD040CF01A0E0B5 -:102B7000B0E0CE55DF4F0880C25AD04004C0B695B1 -:102B8000A795979587950A94D2F780FF02C00C9479 -:102B9000FA1E81E693E0A0E0B0E0CE55DF4F08805A -:102BA000C25AD04004C0B695A795979587950A94C8 -:102BB000D2F780FF11C020E030E0A901CB56DF4FF3 -:102BC000688179818A819B81C559D0400E944E7568 -:102BD00087FF02C00C94FC1E81E090E0A0E0B0E012 -:102BE00004C0880F991FAA1FBB1F0A95D2F7CD54A6 -:102BF000DF4F28813981C35BD040282B392BCD543E -:102C0000DF4F39832883C35BD0400C940906C65537 -:102C1000DF4F3881CA5AD040332369F0C255DF4FA5 -:102C20008881CE5AD040811106C092E0C255DF4F54 -:102C30009883CE5AD040CD54DF4FA881C35BD0409B -:102C4000A5FF0FC080918C1490918D14A0918E14CB -:102C5000B0918F1480389649A849B10514F00C94AE -:102C6000FE1E80917214813091F4C255DF4FF881BD -:102C7000CE5AD040F23009F040C0CD54DF4F288109 -:102C8000C35BD04020FD02C00C94081F36C0809169 -:102C9000AA14811132C0CD54DF4F3881C35BD040BC -:102CA00030FF1BC080917314813039F523E333E387 -:102CB0004BEC51E460917B1470917C1480917D14F5 -:102CC00090917E140E94A77760937B1470937C147C -:102CD00080937D1490937E1410C08091B7149091CE -:102CE000B814A091B914B091BA1480937B14909346 -:102CF0007C14A0937D14B0937E14CD54DF4F888153 -:102D00009981C35BD04090FD10C08091B314909125 -:102D1000B414A091B514B091B61480939814909304 -:102D20009914A0939A14B0939B14809170148130DD -:102D3000B9F4CD54DF4F9881C35BD04096FD03C0FA -:102D40008CE10C94601FCD54DF4FA881B981C35B27 -:102D5000D040AF7BCD54DF4FB983A883C35BD04055 -:102D6000809175148823A1F0813021F1C754DF4F81 -:102D70001882C95BD040F2E0CA55DF4FF883C65ACB -:102D8000D04021E0CE55DF4F2883C25AD04023C027 -:102D9000B2E0C754DF4FB883C95BD040E1E0CA5509 -:102DA000DF4FE883C65AD040CE55DF4F1882C25A53 -:102DB000D04011C031E0C754DF4F3883C95BD040E9 -:102DC000CA55DF4F1882C65AD04082E0CE55DF4F39 -:102DD0008883C25AD04080917314813049F0C25523 -:102DE000DF4F9881CE5AD040933009F043C036C0AF -:102DF000B0E7EB2EB4E1FB2E00E010E0C655DF4F4C -:102E0000A881CA5AD0408A2E912CA12CB12CD50170 -:102E1000C401002E04C0B695A795979587950A948E -:102E2000D2F780FF12C023E333E34BEC51E4F70108 -:102E300065A576A587A590A90E94A777D7019D963D -:102E40006D937D938D939C93D0970F5F1F4FB4E04C -:102E5000EB0EF11C03301105D1F6C1CF8091761431 -:102E6000813041F4C655DF4FE881CA5AD040E43082 -:102E700009F0C6C78CE0ECECF4E1DE01119601909C -:102E80000D928A95E1F7C155DF4F28813981CF5ADC -:102E9000D04031FD08C0109170141230C1F01830CC -:102EA00009F4E9C057C180917714873018F08DE19B -:102EB0000C94601F9091AF14891769F3BE016F5F86 -:102EC0007F4F0E949F56882309F4AEC7E4CFC655B2 -:102ED000DF4F3881CA5AD040311102C08AE1F0C7B1 -:102EE000CD54DF4F88819981C35BD040807599278D -:102EF000892B09F425CF60919014709191148091E1 -:102F00009214909193140E9455780E94C275673074 -:102F100070F680918B14843151F0823009F072C7C1 -:102F2000CD54DF4F8881C35BD04087FD6BC7CD5444 -:102F3000DF4FA881B981C35BD040AF7ACD54DF4F5A -:102F4000B983A883C35BD040662321F022242A944E -:102F5000260E02C020907714BE016B5E7F4F822D3B -:102F60000E949F56882309F45FC730908B1480908D -:102F7000E4149090E514A090E614B090E714A0E754 -:102F8000CA2EA4E1DA2E8E010B5E1F4FE9EAF4E1AE -:102F9000C155DF4FF983E883CF5AD040E12CF12CA3 -:102FA000C655DF4FF881CA5AD0404F2E512C612CA4 -:102FB000712CD301C2010E2C04C0B695A79597952C -:102FC00087950A94D2F780FF3BC024E132122EC0CD -:102FD000C155DF4FA881B981CF5AD0409F962D911E -:102FE0003D914D915C91D29757966D917D918D91C8 -:102FF0009C915A970E947474F60125A536A547A5A1 -:1030000050A90E947474D8016D937D938D939C9305 -:103010001397B2E0EB1214C0A50194010E947474DE -:10302000F80160837183828393830AC0F60185A5CA -:1030300096A5A7A5B0A9F80180839183A283B38345 -:10304000FFEFEF1AFF0A24E0C20ED11C0C5F1F4FE6 -:10305000C155DF4F88819981CF5AD0400496C15520 -:10306000DF4F99838883CF5AD04093E0E916F1046B -:1030700009F09FCF22C1C655DF4FA881CA5AD04060 -:10308000AA2309F42BCF8090E4149090E514A0902B -:10309000E614B090E714F9EACF2EF4E1DF2EFE013A -:1030A00031961F0100E714E1E12CF12C4A2E512C3E -:1030B000612C712CD301C2010E2C04C0B695A795CA -:1030C000979587950A94D2F780FF29C0D1012D9159 -:1030D0003D914D915C91F6016789708D818D928D46 -:1030E0000E947474D8019D962D913D914D915C91F3 -:1030F000D0970E947474F80165A776A787A790AB54 -:10310000F2E0EF1216C0A50194010E947474D80178 -:103110009D966D937D938D939C93D0970AC0F601F5 -:1031200087A590A9A1A9B2A9F80185A796A7A7A7E5 -:10313000B0ABFFEFEF1AFF0A24E0C20ED11C34E05F -:10314000230E311C0C5F1F4F83E0E816F10409F0D9 -:10315000B1CFB2C0C255DF4F9881CE5AD040933024 -:1031600009F473C0C655DF4FA881CA5AD040AA23BC -:1031700009F49CC6009174144090E4145090E51436 -:103180006090E6147090E71479EA272E74E1372EE8 -:10319000E0E7EE2EE4E1FE2EC12CD12C8A2E912CFC -:1031A000A12CB12CD501C4010C2C04C0B695A79557 -:1031B000979587950A94D2F780FD0BC0F101878916 -:1031C000908DA18DB28DF70185A796A7A7A7B0AB6B -:1031D0002DC0173059F1011114C0F2E0CF1226C0F2 -:1031E000A3019201D7019D966D917D918D919C9146 -:1031F000D0970E947574F70165A776A787A790AB53 -:1032000015C0D10157962D913D914D915C915A97E2 -:10321000F70165A576A587A590A90E947574D701C9 -:103220009D966D937D938D939C93D097BFEFCB1A12 -:10323000DB0AE4E02E0E311CF4E0EF0EF11C23E07B -:10324000C216D10409F0AECF2DC01530A9F0173049 -:1032500071F1133089F5C655DF4F3881CA5AD04015 -:10326000311105C0C255DF4F1882CE5AD040BE0181 -:103270006B5E7F4F86E010C0C655DF4F8881CA5A0B -:10328000D040811105C0C255DF4F1882CE5AD040C0 -:10329000BE016B5E7F4F87E00E949F56882309F432 -:1032A000C3C50AC01530A1F3173009F0FBC58091E2 -:1032B0007114823008F0A8C5212C3090711498E068 -:1032C000391211C0C655DF4FA881CA5AD040AA236F -:1032D00009F40AC3C255DF4FB881CE5AD040B1308D -:1032E00009F094C516C3C255DF4FE881CE5AD040CD -:1032F000E23009F0F9C2311009C0C655DF4FF8813C -:10330000CA5AD040FF2309F4F6C203C320E030E0DC -:10331000A90160917B1470917C1480917D1490912F -:103320007E140E944E75882309F472C523E023158C -:1033300038F032E0331690F481E0381631F0E9C20B -:1033400097E0931508F0C3C2E4C2C655DF4FA881C9 -:10335000CA5AD040AA2309F4CEC2DBC2C655DF4FF9 -:10336000B881CA5AD040BB2309F4B8CDCE55DF4F3F -:10337000F881C25AD040EF2FF0E0C155DF4FF983FA -:10338000E883CF5AD040CA55DF4F3881C65AD04063 -:10339000232F30E0CB54DF4F39832883C55BD040E7 -:1033A00081E090E0A0E0B0E06C017D01CE55DF4F00 -:1033B0000880C25AD04004C0CC0CDD1CEE1CFF1C9F -:1033C0000A94D2F7CA55DF4F0880C65AD04004C0CD -:1033D000880F991FAA1FBB1F0A94D2F7C82AD92A9F -:1033E000EA2AFB2AC655DF4FE881CA5AD0408E2F01 -:1033F00090E0A0E0B0E08C219D21AE21BF21892B7F -:103400008A2B8B2B09F406C5C155DF4F8881998122 -:10341000CF5AD040880F991F880F991FFC01E0599F -:10342000FB4EDC01A755BB4E57962D913D914D911A -:103430005C915A9765A576A587A590A90E9474749A -:103440004B015C01CB54DF4F88819981C55BD04033 -:10345000880F991F880F991FFC01E059FB4EDC0172 -:10346000A755BB4E57962D913D914D915C915A9722 -:1034700065A576A587A590A90E947474C655DF4FEF -:10348000688379838A839B83CA5AD040CD54DF4FA7 -:1034900008811981C35BD04000781127CD54DF4FDC -:1034A000F881C35BD040F7FF15C1CD54DF4F2881B1 -:1034B0003981C35BD0402F77CD54DF4F39832883C8 -:1034C000C35BD0400E94936E882311F081E2F8C460 -:1034D000809173148130B1F423E333E34BEC51E476 -:1034E0006091941470919514809196149091971412 -:1034F0000E94A77760939414709395148093961408 -:103500009093971440909414509095146090961452 -:1035100070909714A5019401C501B4010E94A7778A -:10352000C554DF4F688379838A839B83CB5BD0400C -:10353000C655DF4F288139814A815B81CA5AD04004 -:10354000CA01B9010E94A777CD53DF4F6883798301 -:103550008A839B83C35CD04020E030E040E850E4A5 -:10356000C301B2010E94A777A30192010E94A7772D -:10357000C554DF4F288139814A815B81CB5BD040C4 -:103580000E947474CD53DF4F288139814A815B8159 -:10359000C35CD0400E9474746B017C0120E030E079 -:1035A000A9010E944E7587FD37C4C701B6010E946C -:1035B00014786B017C01CD53DF4F288139814A811A -:1035C0005B81C35CD040C554DF4F688179818A81BB -:1035D0009B81CB5BD0400E9475740E9414789B0144 -:1035E000AC01C701B60190580E9455756B017C0172 -:1035F00033E0331204C0F7FAF094F7F8F09420E0C7 -:1036000030E0A901C301B2010E944E7587FF0FC0CF -:10361000F7FAF094F7F8F094D301C201B058809310 -:10362000941490939514A0939614B0939714C15545 -:10363000DF4F08811981CF5AD040000F111F000FB2 -:10364000111F0C581B4EC655DF4F288139814A8106 -:103650005B81CA5AD040C701B6010E94A7779B017F -:10366000AC01C501B4010E94747420E030E040E078 -:103670005FE30E94A777D8011B966D937D938D938E -:103680009C931E97CB54DF4F08811981C55BD040B6 -:10369000000F111F000F111F0C581B4EA5019401A4 -:1036A000C701B6010E94A777C655DF4F288139812F -:1036B0004A815B81CA5AD0400E94757420E030E094 -:1036C00040E05FE30E94A777F801638774878587EE -:1036D00096871FC1C554DF4FF881CB5BD0404F2E7A -:1036E000512C612C712CC420D520E620F720CD2848 -:1036F000CE28CF2809F492C3CD54DF4F28813981D9 -:10370000C35BD040217FCD54DF4F39832883C35B17 -:10371000D04080917314813009F491C0C155DF4FBE -:10372000E881F981CF5AD040EE0FFF1FEE0FFF1F47 -:10373000EC58FB4EC384D484E584F684A70196013B -:10374000C501B4010E9474742B013C01CB54DF4FBE -:10375000E881F981C55BD040EE0FFF1FEE0FFF1F20 -:10376000EC58FB4E83859485A585B685C155DF4F02 -:1037700088839983AA83BB83CF5AD0409C01AD0133 -:10378000C655DF4F688179818A819B81CA5AD040B2 -:103790000E9474744B015C01A3019201C301B20148 -:1037A0000E94A7772B013C01A5019401C501B4013A -:1037B0000E94A7779B01AC01C301B2010E947574FE -:1037C0000E9414784B015C01A7019601C701B60164 -:1037D0000E94A7776B017C01C155DF4F2881398199 -:1037E0004A815B81CF5AD040CA01B9010E94A777B4 -:1037F0009B01AC01C701B6010E9475740E94147848 -:103800006B017C01609394147093951480939614CB -:10381000909397149B01AC01C501B4010E9474748C -:103820004B015C01E894B7F82AE037ED43EA5BE32B -:10383000C501B4010E946C77181664F16AC080E774 -:10384000E82E84E1F82ED301C201002E04C0B69503 -:10385000A795979587950A94D2F780FF12C023E326 -:1038600033E34BEC51E4D7011F966D917D918D911F -:103870009C9152970E94A777F7016787708B818B85 -:10388000928B0F5F1F4FF4E0EF0EF11C0330110518 -:10389000D1F644CF20E030E040E05FE3C501B40161 -:1038A0000E946C7718160CF411CE2FE632E143E833 -:1038B0005AE3C701B6010E94A7779B01AC01C5017D -:1038C000B4010E946C7718160CF400CE22C0C655C5 -:1038D000DF4F2881CA5AD040222309F4FFCA0E9430 -:1038E000936E8111F3CD15C0C255DF4F3881CE5A8A -:1038F000D04031110EC0CD54DF4F88819981C35B18 -:10390000D0408E7D9C7FC255DF4F1882CE5AD0406A -:1039100008C0CD54DF4F88819981C35BD0408E7D34 -:10392000907E892B09F07CC280918C1490918D142B -:10393000A0918E14B0918F148093BC149093BD14F9 -:10394000A093BE14B093BF14809172148093AA14F4 -:1039500080917B1490917C14A0917D14B0917E1481 -:103960008093B7149093B814A093B914B093BA1479 -:10397000C0909814D0909914E0909A14F0909B14F1 -:10398000A70196016091B3147091B4148091B5149D -:103990009091B6140E944E758823F9F01091B214DC -:1039A000112359F080915314823039F00E94766EC1 -:1039B000B701A601812F0E94214A8091981490910D -:1039C0009914A0919A14B0919B148093B31490937E -:1039D000B414A093B514B093B61480919C14809342 -:1039E000BB1410917A148091B2148117B9F08091B0 -:1039F0005314823079F0C090B314D090B414E09096 -:103A0000B514F090B6140E94766EB701A601812F0E -:103A10000E94214A80917A148093B21410917914F3 -:103A20008091B114811781F080915314823041F05C -:103A30000E94766E123011F45C9A02C00E949E625F -:103A4000809179148093B11480917014813089F041 -:103A5000809175148093AD14809173148093AB148E -:103A6000C255DF4F8881CE5AD040833009F074C0F0 -:103A700054C080915314823059F3809090149090E8 -:103A80009114A0909214B090931420E030E040EA9A -:103A900051E4C501B4010E94A7770E942B760E94D1 -:103AA000C2756B017C010E94766E20E030E04AE72F -:103AB00054E4C501B4010E94A7774B015C0182E385 -:103AC0008C9DB0018D9D700D112480E090E00E94CE -:103AD000EE759B01AC01C501B4010E9474740E9493 -:103AE0002B760E94C275CB010E94EC37860101152E -:103AF000110509F4ADCF0E94F737015011098091EB -:103B000052148111A5CF9FEFA0E7B2E09150A040E1 -:103B1000B040E1F700C00000EACF809176148093B6 -:103B2000AE14813089F48091A5149091A614A091CF -:103B3000A714B091A8148093E4149093E514A09373 -:103B4000E614B093E71408C01092E4141092E51440 -:103B50001092E6141092E714809177149091AF14AC -:103B6000981759F08093AF148CE0FE013196ACECBD -:103B7000B4E101900D928A95E1F7809174148093DD -:103B8000AC14E09170148E2F90E0FC013297E83075 -:103B9000F10508F060C08827E257FF4F8F4F0C9463 -:103BA000E578BE016B5E7F4F822D0E949656809114 -:103BB000AF14281250C08CE0FE017596ACECB4E155 -:103BC0003EC0C255DF4FE881CE5AD040EE2371F09F -:103BD0002091B7143091B8144091B9145091BA148F -:103BE00000E06DE974E181E00E949B5B2091B714D5 -:103BF0003091B8144091B9145091BA1400E0BE014C -:103C00006B5E7F4F81E00E949B5B182F8CE0FE0172 -:103C10007596A0ECB4E101900D928A95E1F71CC075 -:103C200060EC74E186E003C060EC74E187E00E9420 -:103C3000965611C08CE0EDE9F4E1A8EDB4E10190F5 -:103C40000D928A95E1F707C08CE0E8EDF4E1DF0121 -:103C50001D928A95E9F710E0809171148093A91460 -:103C6000883009F470C0C255DF4FB881CE5AD040B9 -:103C7000B23009F068C090E08830910508F05AC071 -:103C8000FC014090B7145090B8146090B914709033 -:103C9000BA148827EA56FF4F8F4F0C94E57800E05E -:103CA000A30192016DE974E180E007C00091AA14BC -:103CB000A30192016DE974E181E00E949B5B182FE2 -:103CC00039C06091941470919514809196149091DC -:103CD00097148824839409C060919414709195146A -:103CE0008091961490919714812CC754DF4FA8802F -:103CF000C95BD040CA55DF4FC880C65AD040CE55A8 -:103D0000DF4FE880C25AD0400091AA14A30192016B -:103D10000E94676F0FC000E001C001E020E004C016 -:103D200000E001C001E021E04091AA14C301B2010A -:103D30000E94D16E8CE0EDE9F4E1A0ECB4E10190D9 -:103D40000D928A95E1F7809178148093B0148823BE -:103D500009F468C00E94766E9091B014809153145B -:103D6000913069F48230E9F19FB7F89480910114A1 -:103D70008860809301149FBF0E94F73732C091E0A2 -:103D80009093A9141092AD141092AC141092AA142E -:103D90001092AF141092B2141092B1148230A9F0A4 -:103DA000BE016F5F7F4F80E00E949F568823E1F144 -:103DB0008CE0FE013196ACECB4E101900D928A9555 -:103DC000E1F70E941A4A0E949E6284EE98E00E94E7 -:103DD000E73288E898E00E94E73281E798E00E94A5 -:103DE000E7321092B0141EC081E06AC082E068C061 -:103DF00088E166C089E164C084E062C08BE160C094 -:103E000085E25EC084E15CC08EE15AC08FE158C09B -:103E100086E156C080E254C082E252C083E250C0C4 -:103E200084E24EC0812F4CC087E04AC0AEE12A1622 -:103E3000310411F40C94480D50F5EAE02E163104CB -:103E400011F40C94180DFCE12F16310411F40C94AC -:103E50002C0D87E135C09CE52916310411F00C9436 -:103E6000C20EA1E0C255DF4FA883CE5AD040CA553A -:103E7000DF4FE881F981C65AD040309729F03A9750 -:103E800009F689E00C94510D88E00C94510D25E35E -:103E90002216310411F40C946B0D3CE52316310409 -:103EA00031F3D7CF133009F007CAE1C9153009F44F -:103EB000EAC9173009F4FBC9133009F0FDC9D2C9AA -:103EC000C253DF4F0FB6F894DEBF0FBECDBFDF91F8 -:103ED000CF911F910F91FF90EF90DF90CF90BF9007 -:103EE000AF909F908F907F906F905F904F903F909A -:103EF0002F9008952F923F924F925F926F927F92F0 -:103F00008F929F92AF92BF92CF92DF92EF92FF92E9 -:103F10000F931F93CF93DF93CDB7DEB7C459D10969 -:103F20000FB6F894DEBF0FBECDBF853A28E09207EA -:103F300011F40C94822AFB01863A38E0930708F0CA -:103F400045C08B34A8E09A0709F451C1F0F4833ED0 -:103F500027E0920709F40BC160F48231910509F45E -:103F600006C18C3C910509F49DC0419709F07FC0C2 -:103F700082C08934A8E09A0709F41EC108F024C160 -:103F80008834984009F4CDC072C08D3938E0930769 -:103F900009F4F9C178F48A39B8E09B0709F494C1AF -:103FA0008B3928E0920709F4CAC18939984009F091 -:103FB0005EC030C1833AA8E09A0709F455C208F000 -:103FC000CDC2823A984009F412C251C08A3B38E00F -:103FD000930711F40C94822AF0F48E3AB8E09B0710 -:103FE00009F43FC560F48C3A38E0930709F41EC326 -:103FF00008F029C4873A984009F412C338C0883BB6 -:1040000028E0920709F44BC608F059C6873B984050 -:1040100009F426C62CC08136B9E09B0709F4DEC737 -:1040200070F4813C38E0930709F496C68036A9E025 -:104030009A0709F4F5C6803C9840C9F462C68B36ED -:1040400029E0920711F40C94902830F48A369940B4 -:1040500011F40C9445280BC08C36B9E09B0711F481 -:104060000C94C928843C994011F40C94122981E0E5 -:1040700090E00C94842A8091401482FF08C08A9AB0 -:10408000809108018160809308015F9A07C08A9837 -:10409000809108018E7F809308015F980E94B72F5E -:1040A0008FE00EC18E010F5F1F4F1F930F938BEC9C -:1040B00093E09F938F93FF936F930E9446790F90A5 -:1040C0000F900F900F900F900F901816190614F084 -:1040D0000C94E8281D8A1E8A1F8A188EAE014B5E3A -:1040E0005F4F60E070E0C8010E94303A8823D9F148 -:1040F0004D895E896F89788D88E70E9493554D8937 -:104100005E896F89788D89E70E9493554D895E8914 -:104110006F89788D8AE70E9493550E94B95A0C9452 -:10412000822A8E010F5F1F4F1F930F9386ED93E03E -:104130009F938F93FF936F930E9446790F900F90F8 -:104140000F900F900F900F901816190614F00C9402 -:10415000E828AE014B5E5F4F60E070E0C8010E944E -:10416000303A811108C082E390E00C94842A0E94C6 -:10417000FC2E0C94822A20E030E04AE754E46D895A -:104180007E898F89988D0E94A7770E94BD7516162B -:10419000170694F47093470D6093460D11E0109349 -:1041A000480D8091450D81110C94822A0E94382E71 -:1041B0001093450D0C94822A1092480D1092470DD1 -:1041C0001092460D0C94822A8081863561F6818199 -:1041D0008053823040F61092C60D813021F010924B -:1041E000C50D0C94822A8093C50D0C94822A80817F -:1041F000863509F0B8CF81818053823008F0B3CF83 -:10420000813021F01092CB0D0C94822A8093CB0D3B -:104210000C94822A80818E3409F0A5CF918190532D -:10422000943008F0A0CF923079F1933009F443C074 -:10423000209140148091C20D913099F022FF08C066 -:104240008A9A909108019160909308015F9A07C043 -:104250008A98909108019E7F909308015F988460EE -:104260002FC022FF08C08A9A909108019160909314 -:1042700008015F9A07C08A98909108019E7F9093E9 -:1042800008015F9881601CC08091401482FF08C0C3 -:104290008A9A809108018160809308015F9A07C023 -:1042A0008A98809108018E7F809308015F988091A1 -:1042B000C20D826005C00E94B72F8091C20D886038 -:1042C0008093C20D0C94812A80818E3409F04BCFEB -:1042D00091819053943008F046CF9230B1F09330F2 -:1042E00041F1209140148091C20D913039F022FFAC -:1042F00002C05F9801C05F9A8B7F17C022FF02C087 -:104300008A9801C08A9A8E7F10C08091401482FFE3 -:1043100004C0809108018E7F03C0809108018160F4 -:10432000809308018091C20D8D7F8093C20D0C9403 -:10433000822A0E94EE2E8091C20D877FF6CF808167 -:104340008E3409F010CF81818053843008F00BCF78 -:104350009091C20D823089F0833091F0813019F054 -:1043600090FF03C07AC491FD78C466EC73E086E5E3 -:104370009DE00E9411790C94822A92FD6EC4F5CFC3 -:1043800093FFF3CF6AC48E010F5F1F4F1F930F93EC -:104390008FED93E09F938F93FF936F930E944679E5 -:1043A0000F900F900F900F900F900F901816190606 -:1043B0000CF00EC78CE0F801A9E4BDE001900D926D -:1043C0008A95E1F709E41DE08AEE93E0D8016D914A -:1043D0008D017C01BFEFEB1AFB0A0E94F761C70158 -:1043E000E6EFEE16E3E0FE0689F70C94822A1AA6A1 -:1043F00019A61D8A1E8A1F8A188E8E010F5F1F4FF5 -:104400008AE0D8011D928A95E9F7CE0189969F939B -:104410008F931F930F938AEE93E09F938F93FF9355 -:104420006F930E9446790FB6F894DEBF0FBECDBFE2 -:1044300002970CF4CDC6AE014B5E5F4F60E070E0BA -:10444000C8010E94303A882309F48DCE2D893E8917 -:104450004F89588D69A57AA5072E000C880B990BFA -:104460000E94532E0C94822A9E012F5F3F4F3901E8 -:1044700084E1D9011D928A95E9F7CE0189969F932F -:104480008F9344979F938F9388969F938F9386EFF4 -:1044900093E09F938F93FF936F930E9446790FB69B -:1044A000F894DEBF0FBECDBF03970CF491C68DAD5F -:1044B000813009F058CE6D897E89653FFFEF7F0717 -:1044C00008F051CE89A58230C9F0843059F181308D -:1044D00009F049CE41E00E94E72C6B017C01830189 -:1044E00020E045E00E94F971C701B6010E94BD7548 -:1044F000862F062E000C990B9F9310C042E081E09E -:104500000E94E72C6B017C01830120E045E00E94C2 -:10451000F971C701B6010E94BD757F936F9386EB59 -:1045200093E00DC044E081E00E94E72C830124E089 -:1045300045E00E94F9717F926F928AED92E09F931D -:104540008F9386E59DE09F938F930E9418790F903B -:104550000F900F900F900F900F90D4C78E010F5FA8 -:104560001F4F1F930F93CE01CD969F938F93449728 -:104570009F938F933E0121E5620E711C7F926F9293 -:1045800080E094E09F938F93FF936F930E9446790E -:104590000FB6F894DEBF0FBECDBF04970CF418C65B -:1045A000F3018081813009F0DECD89A59AA5853F90 -:1045B0009F4F08F0D8CDAE014B5E5F4F60E070E0DA -:1045C000C8010E94303A882309F4CDCD8DAD8230E8 -:1045D00069F08430A9F0813009F0C5CD0D891E89BC -:1045E0002F89388D69A57AA541E011C00D891E89F2 -:1045F0002F89388D69A57AA542E0F301808109C031 -:104600000D891E892F89388D69A57AA544E0D301CB -:104610008C910E94852D83E090E00E94EC3772C758 -:104620008FEF0E94BF560E949D2C6CC72E01B5E6ED -:104630004B0E511C84E1D201282F1D922A95E9F7D7 -:104640003E0131E5630E711CD301282F1D922A957E -:10465000E9F78E01035C1F4FD8011D928A95E9F797 -:10466000C357DF4F188219821A821B82CD58D0405F -:10467000C757DF4F188219821A821B82C958D0404F -:10468000CB57DF4F188219821A821B82C558D0403F -:104690001F930F937F926F925F924F9282E194E00B -:1046A0009F938F93FF936F930E9446790FB6F89470 -:1046B000DEBF0FBECDBF03970CF48AC5AE014357D2 -:1046C0005F4F60E070E0C2010E94303A882309F435 -:1046D0004ACDAE0147575F4F60E070E0C3010E94D2 -:1046E000303A882309F43FCDAE014B575F4F60E06D -:1046F00070E0C8010E94303A882309F434CDCF57C6 -:10470000DF4F188219821A821B82C158D040C358C9 -:10471000DF4F188219821A821B82CD57D040ED9646 -:104720001CAE1DAE1EAE1FAEED9784E13E01F9E258 -:104730006F0E711CD301E82F1D92EA95E9F72E0147 -:10474000F5E14F0E511CD201E82F1D92EA95E9F7D1 -:104750009E012F5F3F4F1901D9011D928A95E9F7FC -:10476000AE014B575F4FBE0167577F4FCE01835756 -:104770009F4F0E94A54ECB57DF4FE880F9800A81FA -:104780001B81C558D040C757DF4F288139814A81E6 -:104790005B81C958D040C357DF4F688179818A81D6 -:1047A0009B81CD58D040FE01EF57FF4F4F01DE01F6 -:1047B000A758BF4F5D0134976F010E94F94F20E069 -:1047C00030E044EB52E4CF57DF4F688179818A8132 -:1047D0009B81C158D0400E947574CF57DF4F6883CA -:1047E00079838A839B83C158D040C358DF4F688147 -:1047F00079818A819B81CD57D040820124E045E0B8 -:104800000E94F971ED966CAD7DAD8EAD9FADED97CB -:10481000810124E045E00E94F971CF57DF4F6881A4 -:1048200079818A819B81C158D040830124E045E091 -:104830000E94F9713F922F925F924F927F926F92F6 -:1048400080EB92E000C12E0135E6430E511C84E15D -:10485000D201282F1D922A95E9F73E0131E5630E1A -:10486000711CD301282F1D922A95E9F78E01035C54 -:104870001F4FD8011D928A95E9F7C357DF4F188261 -:1048800019821A821B82CD58D040C757DF4F188239 -:1048900019821A821B82C958D040CB57DF4F188229 -:1048A00019821A821B82C558D0401F930F937F92A2 -:1048B0006F925F924F9281E394E09F938F93FF9367 -:1048C0006F930E9446790FB6F894DEBF0FBECDBF3E -:1048D00003970CF47DC4AE0143575F4F60E070E076 -:1048E000C2010E94303A882309F43DCCAE014757FB -:1048F0005F4F60E070E0C3010E94303A882309F402 -:1049000032CCAE014B575F4F60E070E0C8010E94AF -:10491000303A882309F427CCCF57DF4F1882198209 -:104920001A821B82C158D040C358DF4F18821982A7 -:104930001A821B82CD57D040ED961CAE1DAE1EAE26 -:104940001FAEED9784E13E01F9E26F0E711CD301B9 -:10495000E82F1D92EA95E9F72E01F5E14F0E511C63 -:10496000D201E82F1D92EA95E9F79E012F5F3F4F94 -:104970001901D9011D928A95E9F720E030E044EB56 -:1049800052E4C357DF4F688179818A819B81CD587A -:10499000D0400E9474747B018C01C357DF4F688341 -:1049A00079838A839B83CD58D040CB57DF4F2881B2 -:1049B00039814A815B81C558D040C757DF4F688134 -:1049C00079818A819B81C958D040FE01E758FF4F09 -:1049D0004F01DE01A358BF4F5D0138966F010E9461 -:1049E000AF51A401B501C6010E94504FCF57DF4F10 -:1049F000688179818A819B81C158D040830124E0FC -:104A000045E00E94F971C358DF4F688179818A813E -:104A10009B81CD57D040820124E045E00E94F9718E -:104A2000ED966CAD7DAD8EAD9FADED97810124E02F -:104A300045E00E94F9713F922F925F924F927F92D0 -:104A40006F9280EE92E09F938F9386E59DE09F9317 -:104A50008F930E9418790FB6F894DEBF0FBECDBFBA -:104A600051C5CF57DF4F188219821A821B82C15855 -:104A7000D040C358DF4F188219821A821B82CD574B -:104A8000D040ED961CAE1DAE1EAE1FAEED9784E17C -:104A90002E0139E2430E511CD201282F1D922A9576 -:104AA000E9F73E0135E1630E711CD301282F1D92F9 -:104AB0002A95E9F7DE0111967D011D928A95E9F7A5 -:104AC0008E010B571F4F8FEF90E0D8018D939C9371 -:104AD0001F930F93FF92EF927F926F925F924F928C -:104AE00080E594E09F938F93FF936F930E944679A4 -:104AF0000FB6F894DEBF0FBECDBF04970CF468C3A9 -:104B0000AE014F575F4F60E070E0C2010E94303A43 -:104B1000882309F428CBAE0143585F4F60E070E072 -:104B2000C3010E94303A882309F41DCBAE014758D7 -:104B30005F4F60E070E0C7010E94303A882309F4BB -:104B400012CBD8018D919C91009709F443C0019735 -:104B500009F009CBCF57DF4F488059806A807B80AE -:104B6000C158D04020E030E044EB52E4C358DF4F5E -:104B7000688179818A819B81CD57D0400E9474746D -:104B800021EE3EE245E652E40E9455756B017C0140 -:104B90000E9452759B01AC01C301B2010E94A7772C -:104BA000CF57DF4F688379838A839B83C158D04076 -:104BB000C701B6010E940A789B01AC01C301B20192 -:104BC0000E94A777C358DF4F688379838A839B83CA -:104BD000CD57D040AE0147585F4FBE0163587F4F5D -:104BE000CE018F579F4F0E94A54EED96ECACFDACC9 -:104BF0000EAD1FADED97C358DF4F288139814A8133 -:104C00005B81CD57D040CF57DF4F688179818A8152 -:104C10009B81C158D040FE01FD964F01DE01AF5A85 -:104C2000BF4F5D01B8966F010E94F94F2196ECAC21 -:104C3000FDAC0EAD1FAD219765962CAD3DAD4EADD3 -:104C40005FAD6597A9966CAD7DAD8EAD9FADA99713 -:104C50000E942553882309F488CB6AED73E087CB43 -:104C60008081863509F07FCA81818053823008F0C7 -:104C70007ACA813049F08091880D9091890D019711 -:104C800009F040C4C7D53EC49C9A9D9AA49AA598A1 -:104C900081E090E09093890D8093880D33C48081EA -:104CA000863509F060CA81818053823008F05BCA82 -:104CB000813011F03FD626C43F9A479823C48081A3 -:104CC000863509F050CA81818053823008F04BCA82 -:104CD000813011F01ED616C480910101806280934C -:104CE00001018091010180648093010180910201A2 -:104CF00080628093020180910201806480930201AE -:104D000001C4CE0101969F938F9344969F938F93F6 -:104D100082E794E09F938F93FF936F930E9446796D -:104D20000FB6F894DEBF0FBECDBF02970CF450C291 -:104D30008D899E898634910508F015CA29813A81AA -:104D40002230310508F00FCA232B11F061E001C0B9 -:104D500060E00E94924CD6C3CE0101969F938F9340 -:104D600044969F938F9382E794E09F938F93FF9352 -:104D70006F930E9446790FB6F894DEBF0FBECDBF89 -:104D800002970CF425C28D899E898634910508F01E -:104D9000EAC929813A812230310508F0E4C9FC01D1 -:104DA000EA5BF64F8050974F232BD1F02491FC0102 -:104DB0008491882309F4A6C390E0880F991FFC0111 -:104DC000E654F84FA591B491FC01EA51F74F859153 -:104DD00094918FB7F894EC91E22BEC938FBF92C330 -:104DE0002491FC018491882309F48CC390E0880FFE -:104DF000991FFC01E654F84F45915491FC01EA518A -:104E0000F74FA591B4919FB7F894FA01808120954E -:104E1000822380838C91E22FE823EC939FBF72C39F -:104E20008081833509F09FC98181E0EDE80FE8308A -:104E300008F099C98E2F90E0FC013197E730F10519 -:104E400030F48827E256FF4F8F4F0C94E578C6D791 -:104E50001092910D1092900D8AE999E1A5E9B2E4C2 -:104E60008093960D9093970DA093980DB093990D04 -:104E70008AE999E9A2E6B2E482C1B0D781E090E084 -:104E80009093910D8093900D86EF98E2ACE4B2E49C -:104E90008093960D9093970DA093980DB093990DD4 -:104EA0008DEC9CECA0E8B2E46AC198D782E090E077 -:104EB0009093910D8093900D89E29CEDA4E9B2E46A -:104EC0008093960D9093970DA093980DB093990DA4 -:104ED00080E090E0A2E6B2E452C180D783E090E0A7 -:104EE0009093910D8093900D80E090E0ACE2B2E45D -:104EF0008093960D9093970DA093980DB093990D74 -:104F000080E090E0ABE8B2E43AC168D784E090E09A -:104F10009093910D8093900D80E090E0ACE1B2E42D -:104F20008093960D9093970DA093980DB093990D43 -:104F300080E090E0A9E9B2E417C050D785E090E0A6 -:104F40009093910D8093900D8DEC9CECA2E9B2E4CE -:104F50008093960D9093970DA093980DB093990D13 -:104F600080E090E0A8E9B2E48093920D9093930DD5 -:104F7000A093940DB093950D04D709C12FD786E067 -:104F800090E09093910D8093900D86E696E6AAE9C5 -:104F9000B2E48093960D9093970DA093980DB093E3 -:104FA000990D80E090E0AAE5B2E4E9C017D787E068 -:104FB00090E09093910D8093900D85E89BEEABEC83 -:104FC000B1E48093960D9093970DA093980DB093B4 -:104FD000990D80E090E0A2E3B2E4D1C080E090E0DF -:104FE0000E94E95390938D0D80938C0D81E090E0A9 -:104FF0000E94E95390938F0D80938E0D82E090E094 -:105000000E94E95390938B0D80938A0D0AE81DE06E -:1050100084E393E0D8016D918D017C01BFEFEB1A21 -:10502000FB0A0E94F761C701EAE3EE16E3E0FE0621 -:1050300089F76BEB82E393E00E94F7610E94BF5314 -:1050400080E090E00E943B5460939E0D70939F0D12 -:105050008093A00D9093A10D81E090E00E943B54BD -:105060006093A20D7093A30D8093A40D9093A50D52 -:1050700082E090E00E943B546093A60D7093A70DD0 -:105080008093A80D9093A90D3DC260915E1470911C -:105090005F1480916014909161140E94F0752B014F -:1050A0003C0160915A1470915B1480915C14909152 -:1050B0005D140E94F075CF56DF4F688379838A8331 -:1050C0009B83C159D04060915614709157148091C0 -:1050D0005814909159140E94F0759E012F5F3F4F14 -:1050E0004901DE0155965D01FE01B9966F0183010C -:1050F0007201CF56DF4F288139814A815B81C159C6 -:10510000D0400E94945289819A81AB81BC81809366 -:10511000960D9093970DA093980DB093990D37C06D -:105120001D8A1E8A1F8A188E8E010F5F1F4F84E111 -:10513000D8011D928A95E9F71F930F9389E794E0B0 -:105140009F938F93FF936F930E9446790F900F90D8 -:105150000F900F900F900F9018161906CCF5AE0116 -:105160004B5E5F4F60E070E0C8010E94303A8823D8 -:1051700011F40C94B3208D899E89AF89B88D8093EA -:10518000920D9093930DA093940DB093950D37D5F8 -:10519000B9C11D8A1E8A1F8A188E8E010F5F1F4F8C -:1051A00084E1D8011D928A95E9F71F930F9384E853 -:1051B00094E09F938F93FF936F930E9446790F9093 -:1051C0000F900F900F900F900F90181619067CF00B -:1051D0001F9281E08F9381E192E09F938F930E94D1 -:1051E0008B320F900F900F900F900C94B320AE0164 -:1051F0004B5E5F4F60E070E0C8010E94303A882348 -:1052000011F40C94B3208D899E89AF89B88D809359 -:105210009A0D90939B0DA0939C0DB0939D0DEFD490 -:10522000B0D570C1899866EC662E6EE0762E83014B -:1052300082E090E00E94E953F801819391938F01FD -:1052400050E9E52EFF24F394889A6AE070E080E04C -:1052500090E00E94AE3788986CE271E080E090E0C8 -:105260000E94AE37F1E0EF1AF10871F788EE93E093 -:105270000E94EC372FE00E381207D1F682E090E062 -:105280000E94E95390938F0F80938E0F899A00E2CA -:105290001EE4889A6AE070E080E090E00E94AE37F9 -:1052A00088986CE271E080E090E00E94AE37015097 -:1052B000110979F78F984EE0E42EF12C00E911E006 -:1052C0008E9A6AE070E080E090E00E94AE378E989F -:1052D0006CE271E080E090E00E94AE37015011096D -:1052E00079F731E0E31AF10849F788EE93E00E947C -:1052F000EC378F9A36E4232E3EE0332E210100E076 -:1053000010E080E090E00E94E953D2018D939D93DC -:105310002D0120E9E22EFF24F3948E9A6AE070E0DA -:1053200080E090E00E94AE378E9864EF71E080E0FC -:1053300090E00E94AE37B1E0EB1AF10871F70E3041 -:105340001105A9F088EE93E00E94EC370F5F1F4F24 -:105350000F331105B1F680E090E00E94E95390937D -:10536000C50E8093C40E8F9800E51DE223C0809186 -:105370000B018D7F80930B01E12C92E3F92E80913C -:105380000B01886080930B016AE070E080E090E0A0 -:105390000E94AE3780910B01877F80930B016CE2F6 -:1053A00071E080E090E00E94AE37E1E0EE1AF10893 -:1053B00031F7C8CF8E9A6AE070E080E090E00E94FA -:1053C000AE378E986CE271E080E090E00E94AE37DC -:1053D0000150110979F788EE93E00E94EC37809133 -:1053E0000B01826080930B0100E913E380910B01B4 -:1053F000886080930B016AE070E080E090E00E949A -:10540000AE3780910B01877F80930B016CE271E0D6 -:1054100080E090E00E94AE370150110939F788EE24 -:1054200093E00E94EC3780910B018D7F80930B01FC -:105430000CEC1DE0280181E090E00E94E953D201CC -:105440008D939D932D0180E9E82EFF24F3948091A4 -:105450000B01886080930B016AE070E080E090E0CF -:105460000E94AE3780910B01877F80930B016CE225 -:1054700071E080E090E00E94AE37B1E0EB1AF108F5 -:1054800031F788EE93E00E94EC37E4E44E16EEE04C -:105490005E0689F681E090E00E94E9539093450E04 -:1054A0008093440E81E090E0D3016D913D012C0189 -:1054B000BFEF4B1A5B0A0E94F761C2018B3C91055A -:1054C00099F7F10161911F013201FFEF6F1A7F0A15 -:1054D000C2010E94F76123012BE4621621E07206EB -:1054E00081F7D8016D918D017301BFEFEB1AFB0AB3 -:1054F000C3010E94F7613701E5ECEE16E1E0FE061C -:1055000081F793D180E090E0CC56DF4F0FB6F8944E -:10551000DEBF0FBECDBFDF91CF911F910F91FF90E6 -:10552000EF90DF90CF90BF90AF909F908F907F9043 -:105530006F905F904F903F902F9008952091980F1B -:105540003091990F21153105B9F08091A80F9091F4 -:10555000A90F8217930734F401969093A90F8093B3 -:10556000A80F0AC01092A90F1092A80F1092990FBD -:105570001092980F1092C30D2091460D3091470D57 -:1055800021153105A1F08091A60F9091A70F8217E8 -:10559000930734F401969093A70F8093A60F07C04A -:1055A0001092A70F1092A60F81E08093C40D8091F6 -:1055B000C30D81111BC08091480D811117C08091CE -:1055C00073008E7F809373001092450D1092990F97 -:1055D0001092980F1092470D1092460D1092A90F3D -:1055E0001092A80F1092A70F1092A60F0895809105 -:1055F000A50F811107C081E08093A50F80910B0159 -:10560000806205C01092A50F80910B018F7D809361 -:105610000B018091A30F9091A40F9C012F5F3F4F2E -:105620003093A40F2093A30F209104023091050220 -:105630002817390760F41092A40F1092A30F8091DD -:1056400070008E7F8093700081E08093C90D089573 -:105650002091900D3091910D2430310529F426E6EA -:1056600036E646E65FE307C02530310539F526E624 -:1056700036E646EE5FE30E94557520E030E040E8F4 -:1056800052E40E94A7770E94BD756093900F7093BB -:10569000910F8093920F9093930F8CE69BE29093DF -:1056A000FB138093FA131092A00085E08093A10071 -:1056B0008DEF9FEF9093FD138093FC138091FC136B -:1056C0009091FD139093A5008093A40080917200A7 -:1056D00081608093720008958091900F9091910F56 -:1056E000A091920FB091930F181619061A061B0677 -:1056F000F4F42091A20F222389F01092A20F0197B7 -:10570000A109B1098093900F9093910FA093920FEC -:10571000B093930F80910201806406C081E0809372 -:10572000A20F809102018F7B8093020108950E9455 -:10573000494D1092900F1092910F1092920F10926B -:10574000930F81E08093C80D0895CF93DF93EB0111 -:10575000873140F4853108F043C08C30B0F481309B -:1057600048F03EC09881833329F1843369F1823354 -:1057700061F416C08881882329F06FE874E0CE01B7 -:105780000E94067961E974E028C08881882329F0A5 -:105790006FE874E0CE010E94067964E974E01DC0F0 -:1057A000992329F06FE874E0CE010E94067968E938 -:1057B00074E013C0992329F06FE874E0CE010E94D1 -:1057C00006796CE974E009C0992329F06FE874E068 -:1057D000CE010E94067960EA74E0CE010E9406794B -:1057E0008091560D882379F066E57DE0CE010E9418 -:1057F000067982E3E6E5FDE0DF011D928A95E9F78F -:10580000DF91CF9108956DE773E0CE01DF91CF91E5 -:105810000C9406799C9A9D9AA498A59A82E090E0AF -:105820009093890D8093880D08958F929F92AF92E7 -:10583000BF92CF92DF92EF92FF920F931F93CF937D -:10584000DF9302E514E18EE1F80111928A95E9F700 -:10585000D9D60E94F16180E090E00E943B54C0E9FB -:10586000DDE06E877F87888B998B81E090E00E94D6 -:105870003B546A8B7B8B8C8B9D8B82E090E00E94EB -:105880003B546E8B7F8B888F998FF801C480D580B5 -:10589000E680F780CA8EDB8EEC8EFD8EC084D184CC -:1058A000E284F384CE8EDF8EE8A2F9A2048515850A -:1058B000268537850AA31BA32CA33DA320E030E057 -:1058C00044EB52E40E9474747B018C012A893B8969 -:1058D0004C895D896E857F8588899989EEEB8E2E4E -:1058E000EDE09E2EFAEBAF2EFDE0BF2EA6EBCA2E0A -:1058F000ADE0DA2E0E94AF51DF91CF911F910F9151 -:10590000FF90EF90DF90CF90BF90AF909F908F90DF -:105910000895E1E0F1E0808180628083808180648D -:105920008083E2E0F1E080818F7D808380818F7BC6 -:10593000808308953F9A479A08958091040187785B -:1059400080930401809103018877803451F440E012 -:1059500050E060E87FE384E00E94935564EA74E0DD -:105960002AC080910301887791F440E050E060E81C -:105970007FE384E00E9493556BEA74E08AE99FE03C -:105980000E94117940E050E060EE70E41BC080910D -:105990000301887740E050E060E87FE3803231F433 -:1059A00084E00E94935562EB74E005C084E00E949D -:1059B000935569EB74E08AE99FE00E94117940E019 -:1059C00050E0BA0183E00E9493550C94B95A9F921B -:1059D000AF92BF92CF92DF92EF92FF920F931F93FD -:1059E000CF93DF9300D01F92CDB7DEB7813021F087 -:1059F000823019F452EA01C050EA8150823008F036 -:105A00006FC0EFEFE40FE43028F4F0E0EA5FFD4F01 -:105A1000E08001C0E12C942E8B01362F3F77F12CD2 -:105A2000632F70E081E890E08E199F09A52EB12CBC -:105A300068177907ECF080E8C82EC31AD12C9601BC -:105A4000A801B501CE0101960E94014E85E090E0CB -:105A50000E94EC3797012C193D09A8014C0D5D1DE2 -:105A6000B50181E090E08C0F9D1F8C0D9D1D05C040 -:105A70009701A801B501CE0101960E94014E82E076 -:105A80009816C9F084E0981631F181E0981228C088 -:105A90001981612F70E080E090E00E94EE756B014B -:105AA0007C01103201F580EC94E09F938F9333D505 -:105AB0000F900F9018C0698170E0762F66278A8159 -:105AC000680F711D072E000C880B990B0E94F07552 -:105AD0006B017C0108C0C980DA80EB80FC8003C0C8 -:105AE000C12CD12C7601C701B6010F900F900F90F9 -:105AF0000F90DF91CF911F910F91FF90EF90DF906A -:105B0000CF90BF90AF909F900895AF92BF92CF92E9 -:105B1000DF92EF92FF920F931F93CF93DF9300D00A -:105B20001F92CDB7DEB77B01813029F0823029F496 -:105B300052EAD52E02C090EAD92E8150823008F068 -:105B40004FC0C901B801423051F0443079F04130C2 -:105B5000A1F40E94C275698301E010E010C00E94A8 -:105B6000BD7579836A8302E010E009C009831A8356 -:105B70002B833C8304E010E002C000E010E02E2DF7 -:105B80002F77422F50E081E890E0801B910BAD2CE5 -:105B9000B12C48175907ECF080E8C82EC21AD12C56 -:105BA0009601A701B501CE0101960E94654E85E0E0 -:105BB00090E00E94EC3798012C193D09A7014C0D8B -:105BC0005D1DB50181E090E08C0F9D1F8C0D9D1D2A -:105BD00005C09801A701B501CE0101960E94654E4E -:105BE0000F900F900F900F90DF91CF911F910F9119 -:105BF000FF90EF90DF90CF90BF90AF9008950F93FC -:105C00001F93CF93DF936091900D84E893E00E94FF -:105C1000F761C2E9DDE088E993E069918C010F5FEB -:105C20001F4F0E94F761C8010C391340B1F7C6E954 -:105C3000DDE08EE893E069918C010F5F1F4F0E94B9 -:105C4000F761C80102391340B1F7CAE9DDE082E823 -:105C50009CE069918C010F5F1F4F0E94F761C801A2 -:105C600006381C40B1F7DF91CF911F910F91089535 -:105C7000E3EAF3E18EE99AE29183808310922001B6 -:105C800085E08093210181EF9FEF9383828382815E -:105C900093819093250180932401E3E7F0E08081D4 -:105CA000816080830895CF92DF92EF92FF920F93ED -:105CB0001F93CF93DF9369017A011092C90DEAE037 -:105CC000F1E0208120622083EBE0F1E020812F7D54 -:105CD0002083660F771F70930502609304020CE91E -:105CE00013E187EF9AE2F80191838083C0E7D0E067 -:105CF00088818E7F8883E0EBF0E080818C7F8083D9 -:105D0000E1EBF0E08081877F8083A6EBB0E08C91AF -:105D10008F7D8C9388818D7F888380818460808350 -:105D200080818C7F808320E034E244EF59E4C70116 -:105D3000B6010E94557520E034E244E75BE40E941E -:105D4000A77720E030E040E85CE30E94A7770E945C -:105D5000BD7520E031E0C901861B970BF8019383E4 -:105D60008283828193818093B2008881816088835D -:105D7000DF91CF911F910F91FF90EF90DF90CF9027 -:105D80000895CF93C1E0C093C80D8091900D90917C -:105D9000910D0497029700F51092C80D1092940F80 -:105DA0001092950F1092960F1092970F8091070105 -:105DB0008F7D8093070180910801806280930801A4 -:105DC0008091020180628093020160E070E084EBC8 -:105DD00093E43EDCC093C70DCF9108951092900FCD -:105DE0001092910F1092920F1092930F0E94494DB2 -:105DF0001092C70D0C94494D8091401482FF08C049 -:105E00008A98809108018E7F809308015F9807C06F -:105E10008A9A809108018160809308015F9ADEDF91 -:105E20001092C20D08958F929F92AF92BF92CF921F -:105E3000DF92EF92FF926B017C0120E030E044EBB7 -:105E400053E40E946C7718160CF488C020E030E010 -:105E5000A901C701B6010E944E7587FD7FC08091E0 -:105E6000900D9091910D04970297B8F52091940FA1 -:105E70003091950F4091960F5091970FC701B60141 -:105E80000E9474744B015C0120E030E0A9010E9483 -:105E90004E75882309F462C0C092940FD092950F7A -:105EA000E092960FF092970F20E030E0A901C50133 -:105EB000B4010E946C77181624F4809102018F7D42 -:105EC00003C080910201806280930201C501B40188 -:105ED0009F77BEDB1092C80D41C020E030E044E364 -:105EE00053E4C701B6010E946C7718161CF4C12C4C -:105EF000D12C7601A701960160E070E084E393E481 -:105F00000E94747420E030E044E353E40E9455752D -:105F10009B01AC010E94757420E030E040E05FE33B -:105F20000E947574609300027093010280930202D4 -:105F30009093030220E030E040EA51E40E9455755E -:105F400020E030EC4FE754E40E94A7770E94C2752E -:105F5000CB010E94F94B81E08093C80DFF90EF9038 -:105F6000DF90CF90BF90AF909F908F9008958091D9 -:105F7000900D9091910D0497029780F4809101010A -:105F8000806280930101809101018064809301010E -:105F900080910201806280930201089580E18093E4 -:105FA000A1001092A00082E08093001480E29EE4A1 -:105FB0009093FF138093FE139093A7008093A60005 -:105FC00082E18093A10020E030E040EA51E460915A -:105FD00000027091010280910202909103020E94DE -:105FE000557520E030EC4FE754E40E94A7770E94FB -:105FF000C275CB010C94F94BCF93DF93D82FC8E037 -:106000005E98559AD7FF02C05D9A01C05D9865E021 -:1060100070E080E090E0A2D75E9A65E070E080E0FA -:1060200090E09CD75E98DD0F65E070E080E090E046 -:1060300095D7C15029F762E070E080E090E08ED7FC -:10604000559A5D9A62E070E080E090E0DF91CF9138 -:1060500085C75E98559A5D9865E070E080E090E0B5 -:106060007DD75E9A65E070E080E090E077D7559A42 -:106070005D9A65E070E080E090E070C7CF93559A3C -:106080005D9A62E070E080E090E068D75E9A62E03E -:1060900070E080E090E062D755988BEF99B1C92FFE -:1060A000C07295FF05C08150C9F7D3DFC1E006C0BB -:1060B0005E9862E070E080E090E050D78C2FCF9146 -:1060C0000895559A5D9A5E9A65E070E080E090E0F0 -:1060D00045D7559A5D9865E070E080E090E03ED746 -:1060E0005E9862E070E080E090E038C7CF93DF9385 -:1060F000D82FC8E0809102018F77809302018091B0 -:10610000010184608093010180910201D7FF02C0E8 -:10611000846001C08B7F8093020165E070E080E0C5 -:1061200090E01CD78091020180688093020165E0B5 -:1061300070E080E090E012D7809102018F77809329 -:106140000201DD0F65E070E080E090E007D7C1500C -:1061500089F662E070E080E090E000D78091010174 -:106160008460809301018091020184608093020128 -:1061700062E070E080E090E0DF91CF91EFC60F9396 -:106180001F93CF93DF93C2E0D1E088818F7788831C -:1061900001E011E0F80180818460808388818B7F39 -:1061A000888365E070E080E090E0D8D688818068E0 -:1061B000888365E070E080E090E0D0D6F8018081CF -:1061C0008460808388818460888365E070E080E0FB -:1061D00090E0DF91CF911F910F91C0C6CF93809136 -:1061E00001018460809301018091020184608093A9 -:1061F000020162E070E080E090E0B0D680910201A0 -:1062000080688093020162E070E080E090E0A6D6B2 -:10621000809101018B7F809301018BEF90910001B0 -:10622000C92FC47092FF05C08150C1F7A8DFC1E03B -:106230000AC0809102018F778093020162E070E0D2 -:1062400080E090E08BD68C2FCF9108950F931F9311 -:10625000CF93DF9301E011E0F801808184608083B7 -:10626000C2E0D1E0888184608883888180688883E7 -:1062700065E070E080E090E071D6F8018081846094 -:10628000808388818B7F888365E070E080E090E088 -:1062900065D688818F77888362E070E080E090E047 -:1062A000DF91CF911F910F9159C6CF93DF93D82FD4 -:1062B000C8E04398399AD7FF02C0419A01C041987B -:1062C00065E070E080E090E049D6439A65E070E0D8 -:1062D00080E090E043D64398DD0F65E070E080E019 -:1062E00090E03CD6C15029F762E070E080E090E099 -:1062F00035D6399A419A62E070E080E090E0DF9113 -:10630000CF912CC6CF93399A419A62E070E080E039 -:1063100090E024D6439A62E070E080E090E01ED6E0 -:1063200039988BEF96B1C92FC27091FF06C081508A -:10633000C9F70E94D14DC1E006C0439862E070E009 -:1063400080E090E00BD68C2FCF9108958F929F9292 -:10635000AF92BF92CF92DF92EF92FF920F931F9373 -:10636000CF93DF93CDB7DEB72A970FB6F894DEBF91 -:106370000FBECDBF6B017C01042F20E030E0A901EE -:106380000E944E7587FF07C08DE20E94195AF7FAE6 -:10639000F094F7F8F094102F123060F020E030E025 -:1063A00048EC52E4C701B6010E94A7776B017C015B -:1063B0001250F2CF00FF0AC020E030E040E251E48A -:1063C000C701B6010E94A7776B017C0120E030E095 -:1063D00040E05FE3C701B6010E9475740E94BD757D -:1063E000E1E0F0E0EC0FFD1FE00FF11D2EE2208355 -:1063F00010E03AE0832E912CA12CB12C611571058F -:1064000081059105A9F0101301C01F5FEE24E394EC -:10641000F12CEC0EFD1EE10EF11CA50194010E9471 -:10642000A778605DF7016083B901CA011F5FE6CFFD -:1064300080E3101748F4E1E0F0E0EC0FFD1FE10FFE -:10644000F11D80831F5FF5CF10130BC081E0810F1A -:10645000E1E0F0E0EC0FFD1FE80FF11D1E5F80E3AF -:106460008083112341F0FE01E10FF11D80810E9424 -:10647000195A1150F6CF2A960FB6F894DEBF0FBE08 -:10648000CDBFDF91CF911F910F91FF90EF90DF90E3 -:10649000CF90BF90AF909F908F900895CF92DF9252 -:1064A000EF92FF921F93CF93DF93CDB7DEB7362FD6 -:1064B000142FCDB6DEB64DB75EB7411B51090FB6EE -:1064C000F8945EBF0FBE4DBF4F5F5F4F7A01242F20 -:1064D000FA019E2F921B911728F4632F0E94877850 -:1064E0009193F7CF112351F0F701E10FF11D31978F -:1064F0008081805D0E94195A1150F4CF0FB6F89434 -:10650000DEBE0FBECDBEDF91CF911F91FF90EF9009 -:10651000DF90CF9008951F93CF93DF93CDB7DEB771 -:10652000C058D1090FB6F894DEBF0FBECDBFAE0183 -:1065300049575F4FFA0161917191AF01CE01019608 -:106540000E94677910E0E1E0F0E0EC0FFD1FE10F41 -:10655000F11D8081882321F00E94195A1F5FF3CF1B -:10656000C058DF4F0FB6F894DEBF0FBECDBFDF912E -:10657000CF911F91089543E0E9CE2091401420FF70 -:1065800008C02BE832E441E25DE30E94A77741E0D6 -:1065900001C040E0DBCE2091401420FF08C02BE872 -:1065A00032E441E25DE30E94A77744E001C043E0AA -:1065B000CDCE8A3020F0843620F043E003C041E0A5 -:1065C00001C042E06AE06ACF48E062E067CFCF9363 -:1065D000DF93FC018491EF012196882321F00E9432 -:1065E000195AFE01F7CFDF91CF910895CF93DF9332 -:1065F000EC018991882319F00E94195AFACFDF9192 -:10660000CF910895A6E5B4E1EBEAFFE04D915D91ED -:106610006D917D9141935193619371938FE0E73B2D -:10662000F807A1F708958CE1EBEAFFE0DF011D9286 -:106630008A95E9F71092AA121092AB1281E080932A -:10664000AA0F1092C70F08952F923F924F925F9218 -:106650006F927F928F929F92AF92BF92CF92DF9272 -:10666000EF92FF920F931F93CF93DF93C091AB12E2 -:10667000C11101C0C2E1C150D091C70FDC1709F4AC -:106680001BC1EC2EF12C29E2C29F8001112408537A -:10669000104FF801A588B688C788D08C61A172A177 -:1066A00083A194A19B01AC010E947574F80125A1FE -:1066B00036A147A150A50E94A7774B018C019B01F1 -:1066C000AC01B501C6010E944E7587FD02C05401A0 -:1066D000680189E28E9DF0018F9DF00D1124E85331 -:1066E000F04FC501D601818B928BA38BB48BC11166 -:1066F00001C0C2E1C150DC1761F029E22E9DC0014A -:106700002F9D900D11249C012853304F7901D9E21F -:1067100031C08091AA12D8135EC062D75CC0AC2E83 -:10672000B12CDA9DC001DB9D900D1124FC01E853D2 -:10673000F04F6F01C11101C0C2E1C1508091AA1296 -:106740008C1301C04DD7DA9D8001DB9D100D112403 -:106750000853104FF80185889688A788B08CA5014A -:10676000940161897289838994890E944E7581118F -:1067700006C076018091C70FC813D1CF2CC0F80195 -:1067800061A172A183A194A19B01AC010E947574C7 -:10679000F80125A136A147A150A50E94A777F701CE -:1067A00021893289438954890E9475742B013C01E7 -:1067B0009B01AC01C501B4010E946C77F801181669 -:1067C0002CF4418A528A638A748AD3CF818A928A4E -:1067D000A38AB48ACECFD091C70FF9E2DF9F8001A0 -:1067E00011240853104FC1E0CD0FC23109F4C0E0AD -:1067F0002090AB1289E2382EC21509F45BC0CC2E72 -:10680000D12C3C9CC0013D9C900D11249C0128532F -:10681000304F7901F8014188528863887488F90102 -:1068200081889288A388B488A5019401C301B2012C -:106830000E944E7587FF24C0F80161A172A183A157 -:1068400094A19B01AC010E947574F80125A136A1A9 -:1068500047A150A50E94A777A30192010E947574D9 -:106860002B013C019B01AC01C501B4010E946C7776 -:10687000181634F4F701418A528A638A748ADC2F2D -:106880003C9CF0013D9CF00D1124E853F04F25890C -:1068900036894789508D61897289838994890E94DC -:1068A0004E75811101C0DC2FCF5FC23109F4C0E009 -:1068B0008701A2CFD093C70FDF91CF911F910F9186 -:1068C000FF90EF90DF90CF90BF90AF909F908F9010 -:1068D0007F906F905F904F903F902F9008952F92F0 -:1068E0003F924F925F926F927F928F929F92AF9260 -:1068F000BF92CF92DF92EF92FF920F931F93CF93AD -:10690000DF93CDB7DEB7E5970FB6F894DEBF0FBEC5 -:10691000CDBF4B8F5C8F6D8F072F2DAB2091AB12AE -:106920002EA3422F50E05BA34AA339E2239FF0013C -:106930001124E853F04F158616861786108A15A283 -:1069400016A217A210A6108249E956E766E97EE76B -:1069500041A352A363A374A31C0143E054E158A7CD -:106960004FA3CE0101969AAB89AB2BEA3FE03EA73D -:106970002DA74EA139E2439FC00111249C0127534A -:10698000304F3AA729A7AE01435F5F4F5DA34CA3E9 -:1069900059A348A38BEA9FE098AB8FA723E034E18B -:1069A0003F8F2E8F10E03F01AF01435F5F4F5CAB25 -:1069B0004BAB2F0155E2450E511CF10161917191D4 -:1069C000819191911F01EE8DFF8D81909190A19009 -:1069D000B190FF8FEE8FA50194010E94A7770E94CE -:1069E0007777E9A9FAA96193719381939193FAABAF -:1069F000E9ABEFA5F8A9C190D190E190F190F8AB87 -:106A0000EFA76C197D098E099F099B01AC0197FFC7 -:106A100007C022273327A901261B370B480B590B28 -:106A2000E9A5FAA52193319341935193FAA7E9A7D8 -:106A3000EBA9FCA9C080D180E280F380C216D30606 -:106A4000E406F50610F469017A01EBA9FCA9C082FD -:106A5000D182E282F3820E94F075A50194010E9426 -:106A600055754B015C01E8A1F9A161937193819384 -:106A70009193F9A3E8A320E030E0A9010E944E75AC -:106A800087FF0DC0112321F0113021F084E003C0F5 -:106A900081E001C082E0F3019081892B8083A50110 -:106AA0009401C501B4010E94A777F20120813181D0 -:106AB000428153810E947574F201608371838283E5 -:106AC00093831F5F133009F078CF0E9414784B0135 -:106AD0005C01F2016083718382839383CD28CE2889 -:106AE000CF2809F422C220E030E0A9016B8D7C8D13 -:106AF0008D8D902F0E944E7587FD21C0FDA9FF232B -:106B000061F0A50194016B8D7C8D8D8D902F0E947D -:106B1000A7776B8F7C8F8D8F092F20E030E040E8C6 -:106B20005FE36B8D7C8D8D8D902F0E944E7587FF5E -:106B30000DC01B8E1C8E20E82D8F0FE307C039E996 -:106B40003B8F46E74C8F56E95D8F0EE7A501940118 -:106B500060E070E080E89FE30E94557569A77AA71E -:106B60008BA79CA7CE0149969A8F898FC12CD12CD7 -:106B7000760129E2EAA1FBA12E9FC0012F9F900D73 -:106B800011249C012751304F39A328A3ECA1FDA16A -:106B900080809180A280B38020E030E0A901C5010F -:106BA000B4010E944E75882309F472C0A5019401B6 -:106BB00069A57AA58BA59CA50E94A7772B013C010E -:106BC000ECA1FDA160837183828393839B01AC015F -:106BD00060E070E080E89FE30E9455754B015C0126 -:106BE000E894B7F8EFA1F8A5248535854685578543 -:106BF000C501B4010E94A7771B018E8F192F2B8D21 -:106C00003C8D4D8D502F0E946C7718162CF02B8EDA -:106C10003C8EFE8DFD8F012FE8A1F9A1F081FE8F42 -:106C2000E8A1F9A1118122803380EFA1F8A5208D80 -:106C3000318D428D538DC501B4010E94A7775B0150 -:106C40004C019B01AC016E8D712FC1010E944E75EC -:106C500087FD03C0AE8E1B2D14018E8D912FD101A7 -:106C6000E8A1F9A180839183A283B383EDA5FEA55A -:106C70002485358546855785C301B2010E94A777D3 -:106C80009B01AC01C701B6010E9474746B017C01C9 -:106C90002CA13DA12C5F3F4F3DA32CA34DA55EA58C -:106CA0004C5F5F4F5EA74DA78FA198A5049698A74C -:106CB0008FA3E98DFA8DE217F30709F067CF809172 -:106CC000AA12FEA1F8130FC089E22AA13BA1829F5C -:106CD000F001839FF00D1124E853F04F118A128ABE -:106CE000138A148A14C02FEE3FEF4FE75FE3C7010A -:106CF000B6010E946C7718167CF489E24AA15BA168 -:106D0000849FF001859FF00D1124E853F04F118E00 -:106D1000128E138E148E6AC02FEE3FEF4FE75FEB9B -:106D2000C701B6010E946C77181644F08FEEC82E8A -:106D3000DD24DA948FE7E82E8FEBF82EA701960179 -:106D400060E070E080E89FE30E94747420E030E02F -:106D500040E05FE30E94A7770E9414786B017C01FA -:106D600089E22AA13BA1829FF001839FF00D1124AB -:106D7000E853F04F209138143091391440913A146F -:106D800050913B1461A172A183A194A10E94A777A5 -:106D9000A70196010E94A7774B015C01A70196010C -:106DA00060E070E080E89FE30E9474749B01AC0196 -:106DB000C501B4010E9455756B017C0120E030E0F3 -:106DC000A9010E944E7587FF03C0C12CD12C76010A -:106DD00089E24AA15BA1849FF001859FF00D1124F7 -:106DE000E853F04FC18ED28EE38EF48E2B8D3C8D06 -:106DF0004D8D502F6B8D7C8D8D8D902F0E94A777A0 -:106E00007B018C0189E22AA13BA1829FF001839F33 -:106E1000F00D1124E853F04FC701D801858F968FEC -:106E2000A78FB0A3A18CB28CC38CD48C6090C30FFD -:106E30007090C40F8090C50F9090C60F9301A4016D -:106E4000B701C8010E944E7587FD05C0B62DA72D5C -:106E5000F82DE92D04C0BE2DAF2DF02FE12F9501A7 -:106E6000A6016B2F7A2F8F2F9E2F0E946C771816FA -:106E70006CF09301A401B701C8010E944E7587FD13 -:106E800003C05301640102C05701680189E24AA1AD -:106E90005BA1849FF001859FF00D1124E853F04F12 -:106EA000C501D601858B968BA78BB08F8CE0FE0138 -:106EB0003D96A7EBBFE001900D928A95E1F7C701DF -:106EC000D8018093C30F9093C40FA093C50FB093C4 -:106ED000C60F8CE0FE013196ABEABFE001900D9247 -:106EE0008A95E1F78091AA0F8093AB128F5F823170 -:106EF00009F480E08093AA0FE5960FB6F894DEBF00 -:106F00000FBECDBFDF91CF911F910F91FF90EF90FA -:106F1000DF90CF90BF90AF909F908F907F906F90B9 -:106F20005F904F903F902F908FCBE5960FB6F894DF -:106F3000DEBF0FBECDBFDF91CF911F910F91FF90AC -:106F4000EF90DF90CF90BF90AF909F908F907F9009 -:106F50006F905F904F903F902F900895611571054D -:106F600081059105C1F16A3071058105910548F4EB -:106F700025E02A95F1F70000615071098109910916 -:106F8000EDCF643671058105910548F4E5E3EA9596 -:106F9000F1F700006A50710981099109DFCF683E5D -:106FA000F3E07F078105910558F4EFE8F1E03197B0 -:106FB000F1F700C000006456710981099109CECF34 -:106FC000EFE9FFE03197F1F700C00000685E734021 -:106FD00081099109C3CF0895009741F0EFE9FFE0DF -:106FE0003197F1F700C000000197F6CF0895AF92F6 -:106FF000BF92CF92DF92EF92FF920F931F93CF93A6 -:10700000DF93CDB7DEB768970FB6F894DEBF0FBE3B -:10701000CDBF10915114112309F451C081E0809328 -:10702000531411FF06C087E198E0D1DA8CE098E0B4 -:107030001FC012FF06C087E198E0C9DA81E098E03E -:1070400017C013FF06C087E198E0C1DA8EEE97E023 -:107050000FC014FF06C087E198E0B9DA83EE97E02D -:1070600007C015FF0CC087E198E0B1DA87ED97E023 -:10707000AEDA84ED97E0ABDA84EF91E0ADDF10FD9E -:1070800008C08FB7F89490915114109251148FBF8B -:1070900016C084EE98E09BDA82ED98E098DA81E7FA -:1070A00098E095DA9FB7F894809101148F7E8093D1 -:1070B00001149FBF8091011484FFFCCFE2CF109197 -:1070C0000114112309F4ABC114FF04C081E08093C3 -:1070D0005214B5C110FFDDC08CE0E6E5F4E1DE013D -:1070E0001D9601900D928A95E1F78091531484309A -:1070F000E9F040F48130E9F080F0823001F58CE471 -:1071000098E01CC0803179F018F4883049F017C03D -:10711000803291F0803421F012C08BE698E00EC0EE -:1071200086E698E00BC080E698E008C08AE598E023 -:1071300005C083E598E002C086E498E048DA8091D3 -:107140003714837039F0BE01635F7F4FCE01019623 -:107150000E941C558091371480FD05C08091371422 -:1071600081FF60C017C08FE398E031DACE0101964D -:107170007C0100E0F70161917191819191917F0112 -:107180000ADA023019F08DE398E021DA0F5F03305C -:1071900089F7E4CF86E398E01ADA8CECC82E84E114 -:1071A000D82ECE0101967C0100E05701F6016191D5 -:1071B0007191819191916F0120853185428553852F -:1071C0000E9475749B01AC01F7016081718182811D -:1071D00093810E947474F701608371838283938327 -:1071E000023079F42091E4143091E5144091E614D2 -:1071F0005091E7140E947474F70160837183828355 -:107200009383F4E0EF0EF11CF501608171818281BE -:107210009381C1D9023019F084E398E0D8D90F5F87 -:10722000033019F68091371482FF0CC08EE298E08B -:10723000CED98091AB129091AA12891708F48E5E74 -:10724000891BB7D98091371483FF0CC089E298E07D -:10725000BED99091681580916915891708F48058F6 -:10726000891BA7D98091371484FF08C083E298E076 -:10727000AED90E94E85F43E062E010D98FE198E068 -:10728000A6D99FB7F894809101148E7F8093011442 -:107290009FBF812F887609F446C0809153148823BC -:1072A00049F0982F9C77B9F1883021F499D181E089 -:1072B0008093541480915314811103C092E09093F1 -:1072C000541416FF0AC0883019F480E480935314D4 -:1072D0008091541488608093541413FF07C08091E8 -:1072E000531485FD03C080E18093531415FF13C030 -:1072F00084EE98E06CD980E998E069D981E798E05C -:1073000066D98091541481FD146084608093541474 -:1073100080E2809353149FB7F89480910114877989 -:10732000809301149FBF11FF56C0812F887609F00A -:107330004AC080915314882339F0807509F443C002 -:107340008091541481FF3FC08091541482FF1EC06D -:107350008091B214882369F04091B3145091B41411 -:107360006091B5147091B6140E94214A80EA9FE0A2 -:1073700033DE8091B114882349F0823011F45C9A95 -:1073800002C00E949E6288EE93E026DE8091AA12DF -:107390009091AB12981799F0F9E28F9FC0011124D8 -:1073A0008853904F892B59F08091541483FD07C066 -:1073B00088E08093531436D10E94814702C0109216 -:1073C0005314109254149FB7F894809101148D7F38 -:1073D000809301149FBF12FF22C0809153148073C9 -:1073E00091F08091551481110EC08091541482FF48 -:1073F00004C00E941A4A0E949E62809154148260C6 -:107400008093541404C010925414109253149FB7D4 -:10741000F894809101148B7F809301149FBF809119 -:1074200053148C7709F0FED080915314803239F4D4 -:107430008091541481FF03C080E1809353146896B7 -:107440000FB6F894DEBF0FBECDBFDF91CF911F9175 -:107450000F91FF90EF90DF90CF90BF90AF90089585 -:107460004F925F926F927F92AF92BF92CF92DF92D4 -:10747000EF92FF920F931F93CF93DF936C01FB0169 -:107480005A01309729F08081D601A80FB11D01C0A3 -:10749000DC018C91ED018D3229F4229611968C91AC -:1074A00001E008C08B3211F0219603C0229611969C -:1074B0008C9100E0512C612C10E020E030E0A9011B -:1074C0007E0160ED762E780E89E08715D8F0639402 -:1074D000A8E0A61598F051101150A5E0B0E00E9468 -:1074E000FC78DC01CB01880F991FAA1FBB1F9C01F0 -:1074F000AD01270D311D411D511D0BC0511009C09B -:107500001F5F07C0BEEF7B1208C0511006C0552494 -:1075100053942196D7018C91D3CF662009F450C0A3 -:107520007F01CA01B9010E94EE752B013C0120E0E8 -:1075300030E0A9010E944E75882349F11F3F64F491 -:107540002AE037ED43E25CE3C301B2010E94A77772 -:107550002B013C011E5FF2CF1F3F59F42DEC3CEC98 -:107560004CEC5DE3C301B2010E94A7772B013C0103 -:107570000EC0112361F020E030E040E251E4C3018D -:10758000B2010E94A7772B013C011150F2CF0023DA -:1075900051F077FA709477F87094F5014082518237 -:1075A0006282738206C0D5014D925D926D927C928B -:1075B0001397CC19DD09C150F701C08381E001C0E8 -:1075C00080E0DF91CF911F910F91FF90EF90DF90BE -:1075D000CF90BF90AF907F906F905F904F90089545 -:1075E000CF93DF93C0916F13D09170132097B9F0B0 -:1075F00081E0809372136091881370918913809158 -:107600008A1390918B139B01AC010E94A777698B21 -:107610007A8B8B8B9C8B1092701310926F13DF916F -:10762000CF9108952F923F924F925F926F927F92E7 -:107630008F929F92AF92BF92CF92DF92EF92FF9282 -:107640000F931F93CF93DF93CDB7DEB7CD54D109FE -:107650000FB6F894DEBF0FBECDBF80915314807774 -:1076600023968FAF2397882389F020E030E0A9018B -:10767000609188137091891380918A1390918B1374 -:107680000E944E75882311F40C94F04320918813C6 -:107690002F8B30918913388F40918A13498F5091E5 -:1076A0008B135A8F809198138B83909199139D839C -:1076B000A0919A13AE83B0919B13BC830091841365 -:1076C00010918513E0918613E987F0918713FD8768 -:1076D00020917713309178134091791350917A1358 -:1076E0002DA33EA34FA358A7309173133DAF4091F4 -:1076F00074134EAF509175135FAF8091761321963E -:107700008FAF219720917F13309180134091811387 -:10771000509182132DAB3EAB4FAB58AF3091191344 -:1077200022963FAF22974091F4124BA75091AB1293 -:1077300024965FAF24978091AA128B8F9091C70FE8 -:1077400025969FAF2597A0916F13B0917013BA8BB8 -:10775000A98B20917B1330917C1340917D13509124 -:107760007E1329AF3AAF4BAF5CAF309190133B8B98 -:10777000409191134C8B509192135D8B8091931398 -:107780008E8B90918C139C8FA0918D13AD8FB091A7 -:107790008E13BE8FE0918F13EF8F30909413209053 -:1077A0009513F0919613F983209197132A83809172 -:1077B000F3125BA5851709F4F4C649895A89452B4C -:1077C00009F033C224965FAD24978B8D581709F4C6 -:1077D00078C7A82EB12CA9E2AA9DC001AB9D900D3F -:1077E0001124FC01E853F04FFA8BE98B809172135E -:1077F000882319F010927213BCC0809171138F5FAF -:10780000853019F08093711302C010927113E091CA -:10781000711321E12E9FF0011124E65EFC4E89E2F6 -:107820008A9DA0018B9D500D11244853504F7A0121 -:10783000DA018C91808311964D915D916D917C91CF -:107840001497DB01CA0123E0880F991FAA1FBB1FF1 -:107850002A95D1F781839283A383B483D7011596A8 -:107860004D915D916D917C911897DB01CA0133E0D8 -:10787000880F991FAA1FBB1F3A95D1F7858396835E -:10788000A783B087D70119964D915D916D917C9139 -:107890001C97DB01CA0143E0880F991FAA1FBB1F79 -:1078A0004A95D1F781879287A387B487D7011D9620 -:1078B0006D917D918D919C9150978B019C0153E02E -:1078C000000F111F221F331F5A95D1F70587168706 -:1078D0002787308B0E94EE756DAF7EAF8FAF2196FC -:1078E0009FAF2197F70125A136A147A150A50E947E -:1078F00055756DA37EA38FA398A79B01AC0160E093 -:1079000070E080EA9FE30E94557569AF7AAF8BAF54 -:107910009CAF2396FFAD2397FF23D1F02B893C89A1 -:107920004D895E896B897C898D899E890E94A777A4 -:10793000D70151966D937D938D939C935497BB89FA -:10794000BF8BEC89E88FFD89F98F2E892A8F0DC0B6 -:10795000D70151966D917D918D919C9154970E9484 -:1079600014786F8B788F898F9A8F1DAA1EAA1FAAF1 -:1079700018AE29E22A9DF0012B9DF00D1124E85349 -:10798000F04FFE87ED87C1A0D2A0E3A0F4A0A7012D -:10799000960160E070E080E09FE30E945575698782 -:1079A0007A878B879C8723963FAD23973323F1F10A -:1079B00042E040938313AD85BE8595964D905D90D2 -:1079C0006D907C90989751968D909D90AD90BC90C5 -:1079D0005497A50194010E94A7779B01AC01C301B4 -:1079E000B2010E9474748B0189879D8720E030E08A -:1079F000A9010E944E7587FF1BC1A7019601C7010F -:107A0000B6010E947574A30192010E94A7779B01A1 -:107A1000AC01C501B4010E9474740E9414786B8B90 -:107A20007C8B8D8B9E8B3F82288615C11092831391 -:107A3000ED85FE85F5A1FF83AD85BE859696BC914B -:107A4000B887ED85FE8507A110A5EB8DEF5FE231CC -:107A500009F4E0E02496FFAD2497EF1789F029E2BE -:107A60002E9FF0011124E853F04F618972898389B8 -:107A700094890E9414786B8B7C8B8D8B9E8B04C0B9 -:107A80001B8A1C8A1D8A1E8A2B893C894D895E8926 -:107A90006B897C898D899E890E94A7772B013C0187 -:107AA00089E28A9DA0018B9D500D11244853504FAF -:107AB0005AA349A3DA0151962D913D914D915C91C4 -:107AC00054972D873E874F87588BA30192016D8570 -:107AD0007E858F8598890E94747429853A854B85A7 -:107AE0005C850E94A7772F813885A8010E94757454 -:107AF00020E030E040E05FE30E94A777362E272E9B -:107B000089839A8320E030E0A9010E946C771816DF -:107B10000CF095C0232D322D49815A816F817885D3 -:107B2000C8010E946C7718160CF071C0E9A1FAA187 -:107B3000858C968CA78CB0A0A3019201C501B401DD -:107B40000E94747429853A854B855C850E94A777CD -:107B50006B837D838E839C839B01AC01632D722D8F -:107B600089819A810E946C77181694F5C501B40139 -:107B70000E9414786C8F7D8F8E8F9F8FA50194014A -:107B80006D857E858F8598890E944E75811106C00E -:107B9000F1E0F093831309831A835DC02D853E8540 -:107BA0004F855889C501B4010E94747429853A85AE -:107BB0004B855C850E94A7779B01AC016F8178851E -:107BC000C8010E9474746F83788789839A8343C045 -:107BD000A7019601C701B6010E947574232D322DAD -:107BE00049815A810E94A777A30192010E9475746E -:107BF0000E9414786C8F7D8F8E8F9F8F3F82288696 -:107C00003B822D8229812E833A813C8324C042E02D -:107C10004093831309831A835F895C8F888D8D8FCE -:107C2000998D9E8FAA8DAF8F16C03F82288617C070 -:107C30003F8228861B8A1C8A1D8A1E8A10C0BB8927 -:107C4000BC8FEC89ED8FFD89FE8F2E892F8F1F82CF -:107C5000188619821A8200E010E019861D86229685 -:107C60005FAD2297452F50E05AA749A786E0849F31 -:107C7000F001859FF00D1124EB50FD4E80917113A2 -:107C80008283A989BA899596BC91B8ABE989FA89AA -:107C9000F6A1F9ABA989BA899796BC912696BFAF90 -:107CA0002697E989FA89F0A52796FFAF279729AD8E -:107CB0003AAD4BAD5CAD68A979A98B2F9F2F0E947F -:107CC00074746CA77DA78EA79FA720E030E0A90160 -:107CD0000E944E7587FF04C01CA61DA61EA61FA6E7 -:107CE0002091831328A32B813D814E815C816F817C -:107CF000788589819A810E944E75811105C032E094 -:107D000028963FAF289704C041E028964FAF2897A8 -:107D100028A859A92E965FAF2E9726968FAD269745 -:107D20002D968FAF2D9727963FAC27978EE3C82EC1 -:107D300083ECD82E8EE2E82E89E3F82E412C512CCC -:107D40003201C9A2DAA2EBA2FCA238A1332321F0AE -:107D5000313009F485C0C5C0A989BA8991962D91A1 -:107D60003D914D915C919497C701B6010E94A77710 -:107D70004B015C0120E030E040E05FE30E94A77728 -:107D80002F89388D498D5A8D0E947574A7019601EF -:107D90000E94A7779B01AC01622D2E967FAD2E9796 -:107DA0002D968FAD2D97932D0E947474262E2E96AE -:107DB0007FAF2E972D968FAF2D97392E2F81388537 -:107DC00049815A810E944E7587FF3DC02F813885B9 -:107DD00049815A8168A979A926968FAD2697279659 -:107DE0009FAD27970E9474749B01AC010E9475742B -:107DF0006B017C012C8D3D8D4E8D5F8D6F89788D53 -:107E0000898D9A8D0E9475749B01AC01C701B601E2 -:107E10000E9455756B017C012896BFAD2897B8A3C9 -:107E2000EC8DEF8BFD8DF88F2E8D298F3F8D3A8F46 -:107E30002F8048852E964FAF2E9759812D965FAF94 -:107E40002D973A80EBC0A50194016F89788D898DBB -:107E50009A8D0E9475746F8B788F898F9A8FDEC090 -:107E60002C8D3D8D4E8D5F8DC701B6010E94A77789 -:107E70009B01AC01622D2E967FAD2E972D968FAD76 -:107E80002D97932D0E9474744B015C012B813D81D1 -:107E90004E815C810E944E7587FFB8C02B813D8169 -:107EA0004E815C81622D2E967FAD2E972D968FADE3 -:107EB0002D97932D0E9474742C8D3D8D4E8D5F8D6A -:107EC0000E9455756B017C012B808D812E968FAFA2 -:107ED0002E979E812D969FAF2D973C80A2E0A8A360 -:107EE0009DC0E989FA8921A132A143A154A1C7010A -:107EF000B6010E94A7774B015C012F89388D498D0F -:107F00005A8D0E944E7587FF52C020E030E040E05D -:107F10005FE3C501B4010E94A7779B01AC016F89A3 -:107F2000788D898D9A8D0E947474A70196010E94A4 -:107F3000A7779B01AC01622D2E967FAD2E972D96D3 -:107F40008FAD2D97932D0E94747429966FAF29974A -:107F50002A967FAF2A972B968FAF2B972C969FAFA1 -:107F60002C97980149855D850E946C771816FCF462 -:107F7000A50194016F89788D898D9A8D0E94747402 -:107F80006F8B788F898F9A8F29962FAC29972A9695 -:107F9000FFAD2A972E96FFAF2E972B962FAD2B97DE -:107FA0002D962FAF2D972C963FAC2C9737C098016C -:107FB00049855D85622D2E967FAD2E972D968FADCE -:107FC0002D97932D0E9474749B01AC010E947574CF -:107FD0006B017C012B893C894D895E896F89788D85 -:107FE000898D9A8D0E9475749B01AC01C701B60101 -:107FF0000E9455756B017C01202E2E961FAF2E9787 -:1080000039852D963FAF2D973D8408C0282C2E969C -:108010009FAE2E972D96AFAE2D973B2CA7019601C4 -:10802000C301B2010E9475742B013C0129A13AA140 -:108030004BA15CA10E944E7587FF07C0A30192016E -:1080400069A17AA18BA19CA120C02CA53DA54EA51C -:108050005FA5622D2E967FAD2E972D968FAD2D9715 -:10806000932D0E946C77181644F52EE333EC4EE204 -:1080700059E369A17AA18BA19CA10E94757469A39F -:108080007AA38BA39CA3A30192010E9474746B0139 -:108090007C01980149855D85622D2E967FAD2E97D6 -:1080A0002D968FAD2D97932D0E946C7718160CF49A -:1080B0004CCE48A14093831303C058A1509383131F -:1080C0002DA13EA14FA158A5622D2E967FAD2E97D2 -:1080D0002D968FAD2D97932D0E94A77768A379A336 -:1080E0008CA798AB0E943B756B017C016DAD7EAD9A -:1080F0008FAD21969FAD21970E943B754B015C018E -:10810000A70196010E9474740E94C27569AB7AAB94 -:108110008BAB9CABA6E089A59AA5A89FF001A99F6F -:10812000F00D1124EB50FD4E29A93AA9318320838B -:10813000232B09F087C023965FAD2397552309F4BD -:1081400081C0C801A985BD85809384139093851350 -:10815000A0938613B09387138B899C89AD89BE89C0 -:108160008093901390939113A0939213B0939313D1 -:108170008C8D9D8DAE8DBF8D80938C1390938D13C0 -:10818000A0938E13B0938F138B819D81AE81BC81A0 -:108190008093981390939913A0939A13B0939B1381 -:1081A0008F819885A981BA818093941390939513B8 -:1081B000A0939613B093971322968FAD2297809336 -:1081C0001913A989BA89B0937013A0936F1329ADBD -:1081D0003AAD4BAD5CAD20937B1330937C13409351 -:1081E0007D1350937E133B8D3093AA128DA19EA1D7 -:1081F000AFA1B8A58093771390937813A0937913C8 -:10820000B0937A139BA59093F41210928813109256 -:10821000891310928A1310928B1310927F1310926D -:1082200080131092811310928213C0927313D09214 -:108230007413E0927513F09276132DA13EA14FA115 -:1082400058A565C12DA93EA94FA958ADC301B201DA -:108250000E9475742B013C0128A139A14CA558A995 -:10826000C501B4010E9474749B01AC01C301B20149 -:108270000E9455754B015C0128A139A14CA558A954 -:10828000C701B6010E947474A50194010E94A777EA -:108290006DAB7EAB8FAB98AF20EC31EE44E65EE485 -:1082A000C501B4010E94A7770E943B750E94C27568 -:1082B000603DE7E07E078105910560F446E029A571 -:1082C0003AA5429FF001439FF00D1124EB50FD4E63 -:1082D000158253C0603A5FE075078105910560F42F -:1082E00026E0A9A5BAA52A9FF0012B9FF00D112425 -:1082F000EB50FD4E31E011C060344FE17407810551 -:10830000910568F426E0A9A5BAA52A9FF0012B9F44 -:10831000F00D1124EB50FD4E32E035830CC0A6E089 -:1083200049A55AA5A49FF001A59FF00D1124EB507B -:10833000FD4EB3E0B58346E029A53AA5429FF00182 -:10834000439FF00D1124EB50FD4E2581022E04C0F9 -:1083500096958795779567950A94D2F7A9A9BAA9B2 -:1083600002C0AA0FBB1F2A95E2F7B183A083611553 -:108370007105B1E08B07910568F446E029A53AA59F -:10838000429FF001439FF00D1124EB50FD4E74838A -:10839000638304C08FEF9FEF94838383BBA4B39464 -:1083A00096E0B91201C0B12C980149855D85622D16 -:1083B0002E967FAD2E972D968FAD2D97932D0E94E3 -:1083C0006C771816CCF4822D2E969FAD2E972D9695 -:1083D000AFAD2D97B32DE989FA8985A396A3A7A3FD -:1083E000B0A7F8A1FDAF29A12EAF3CA53FAF48A98A -:1083F00021964FAF2197CDC020E030E0A901622D3A -:108400002E967FAD2E972D968FAD2D97932D0E9492 -:108410006C7718160CF0A6C0C801A985BD8580939D -:10842000841390938513A0938613B09387138B893D -:108430009C89AD89BE898093901390939113A093EA -:108440009213B09393138C8D9D8DAE8DBF8D8093C1 -:108450008C1390938D13A0938E13B0938F138B81F5 -:108460009D81AE81BC818093981390939913A093C2 -:108470009A13B0939B138F819885A981BA818093B9 -:10848000941390939513A0939613B09397135BA5B1 -:108490005093191389899A899093701380936F135D -:1084A00029AD3AAD4BAD5CAD20937B1330937C137B -:1084B00040937D1350937E133B8D3093AA128DA170 -:1084C0009EA1AFA1B8A58093771390937813A09342 -:1084D0007913B0937A13B092F41210928813109219 -:1084E000891310928A1310928B1310927F1310929B -:1084F00080131092811310928213C0927313D09242 -:108500007413E0927513F09276139C01AD01C701CC -:10851000B6010E945575A989BA8995966D937D9388 -:108520008D939C9398975CD8BB8DB093C70FC35B1A -:10853000DF4F0FB6F894DEBF0FBECDBFDF91CF91F6 -:108540001F910F91FF90EF90DF90CF90BF90AF9071 -:108550009F908F907F906F905F904F903F902F9063 -:108560000C9424332496EFAD2497FB8DEF1779F00C -:108570008F2F8F5F823109F480E02B8D25963FADE0 -:108580002597231303C025968FAF25978B8F1A8AC3 -:10859000198A3F8028844BA522964FAF2297BBA60D -:1085A00006C9C801A985BD8580938413909385135E -:1085B000A0938613B09387138B899C89AD89BE895C -:1085C0008093901390939113A0939213B09393136D -:1085D0008F89988DA98DBA8D809388139093891374 -:1085E000A0938A13B0938B138C8D9D8DAE8DBF8D10 -:1085F00080938C1390938D13A0938E13B0938F134D -:108600008B819D81AE81BC81809398139093991347 -:10861000A0939A13B0939B13832D922DA981BA81B5 -:108620008093941390939513A0939613B0939713FC -:1086300022968FAD229780931913A989BA89B09396 -:108640007013A0936F1329AD3AAD4BAD5CAD209381 -:108650007B1330937C1340937D1350937E133B8D9B -:108660003093AA128DAD9EADAFAD2196BFAD2197CF -:108670008093731390937413A0937513B093761330 -:108680008DA19EA1AFA1B8A5809377139093781385 -:10869000A0937913B0937A132DA93EA94FA958AD91 -:1086A00020937F1330938013409381135093821350 -:1086B0003BA53093F41225964FAD25974093C70FF5 -:1086C0008FC0C801A985BD858093841390938513BD -:1086D000A0938613B09387138B899C89AD89BE893B -:1086E0008093901390939113A0939213B09393134C -:1086F0008F89988DA98DBA8D809388139093891353 -:10870000A0938A13B0938B138C8D9D8DAE8DBF8DEE -:1087100080938C1390938D13A0938E13B0938F132B -:108720008B819D81AE81BC81809398139093991326 -:10873000A0939A13B0939B13832D922DA981BA8194 -:108740008093941390939513A0939613B0939713DB -:1087500022965FAD229750931913109270131092C6 -:108760006F1389AD9AADABADBCAD80937B13909385 -:108770007C13A0937D13B0937E1324969FAD249712 -:108780009093AA128DAD9EADAFAD2196BFAD21974E -:108790008093731390937413A0937513B09376130F -:1087A0002DA13EA14FA158A52093771330937813A4 -:1087B0004093791350937A138DA99EA9AFA9B8ADB0 -:1087C00080937F1390938013A0938113B0938213AF -:1087D0009BA59093F4122596AFAD2597A093C70F54 -:1087E000C35BDF4F0FB6F894DEBF0FBECDBFDF9186 -:1087F000CF911F910F91FF90EF90DF90CF90BF909E -:10880000AF909F908F907F906F905F904F903F9030 -:108810002F900895CF92DF92EF92FF920F931F93C4 -:1088200090913414092F10E020E030E0809135144D -:10883000482F50E060E070E091708170680179012C -:10884000F694E794D794C794C0FC92606A017B01C8 -:10885000F694E794D794C794C0FC8260E2E0369522 -:10886000279517950795EA95D1F700FD946022E0CA -:1088700076956795579547952A95D1F740FD846081 -:108880009093CE128093CD121F910F91FF90EF9095 -:10889000DF90CF9008951F920F920FB60F92112480 -:1088A0000BB60F922F933F938F939F93EF93FF936A -:1088B00021B33091CE12832F817090E036E0880F83 -:1088C000991F3A95E1F7922F9F7B892B81BBEBE0B3 -:1088D000F1E090818091CE128270880F880F977F8F -:1088E000892B808381B39091CE1292FB992790F9C6 -:1088F0008E7F892B81BB15BCFF91EF919F918F914A -:108900003F912F910F900BBE0F900FBE0F901F90B5 -:10891000189580916F008D7F80936F00809181000A -:10892000887F8160809381001092CF1280913614ED -:108930008F3F21F490915114992349F09091531451 -:10894000943029F090E00E94EC3781E001C080E093 -:108950009091401492FF02C091E08927882341F052 -:108960008A9A809108018160809308015F9A089536 -:108970008A98809108018E7F809308015F980895FE -:10898000CF93DF93C6DF8BE2E1E7F3E1DF011D92D6 -:108990008A95E9F783E2E0EDF2E1DF011D928A9525 -:1089A000E9F71092701310926F131092F312109255 -:1089B000191381E08093F4121092CF122BDF81B350 -:1089C0009091CE129170C92FB0E0DB2F96E0CC0FC2 -:1089D000DD1F9A95E1F78F7BC82BC1BBEBE0F1E07F -:1089E00090818091CE128270880F880F977F892B9B -:1089F000808381B39091CE1292FB992790F98E7F5C -:108A0000892B81BB8091CD1280FD8F9A80FF8F983A -:108A100080819091CD1292708D7F892B808321B3BC -:108A20009091CD129470892F90E095958795922F13 -:108A30009D7F892B81BBDF91CF9108951F920F926B -:108A40000FB60F9211240BB60F922F933F934F93B3 -:108A50005F936F937F938F939F93AF93BF93EF93A6 -:108A6000FF938091CF12811139C28091DF1280FD76 -:108A70008F9A80FF8F9890910B01482F42709D7FB5 -:108A8000942B90930B0141B3847090E0959587955A -:108A9000942F9D7F892B81BB91B38091DE12282F6B -:108AA000217030E066E0220F331F6A95E1F79F7B6B -:108AB000292B21BB90910B01282F2270220F220F0E -:108AC000977F922B90930B0121B382FB992790F90A -:108AD000822F8E7F892B81BB8091DD1286BD82E043 -:108AE00085BD81E08093CF1278948091F1129091AE -:108AF000F212892B09F0ACC08091F31290911913F6 -:108B0000981709F49BC0E091F3122E2F30E086E015 -:108B1000E89FF0011124EB50FD4EF093F212E09328 -:108B2000F1128381948190938900809388008081E1 -:108B300091819093ED128093EC12E2818091EE127C -:108B40008E1761F1E093EE1281E1E89FF0011124AC -:108B5000E65EFC4EF093F012E093EF128585968569 -:108B6000A785B089B695A795979587958093D812D4 -:108B70009093D912A093DA12B093DB128093D4129F -:108B80009093D512A093D612B093D7128093D0129F -:108B90009093D112A093D212B093D312E091EF121E -:108BA000F091F01290818091CD1289278093DF128D -:108BB00086E0829FD001839FB00D1124AB50BD4E43 -:108BC00015962C9181819281A381B481022E04C0DB -:108BD000B695A795979587950A94D2F78093E0125A -:108BE0009093E112A093E212B093E31285819681F3 -:108BF000A781B085022E04C0B695A7959795879555 -:108C00000A94D2F78093E4129093E512A093E612AF -:108C1000B093E71281859285A385B48504C0B6958B -:108C2000A795979587952A95D2F78093E812909308 -:108C3000E912A093EA12B093EB120AC06ADE9FB762 -:108C4000F894809101148460809301149FBF46C101 -:108C5000809102148130B1F489B1807190915014E7 -:108C6000891781F0109202148CE0E6E5F4E1A2E6A7 -:108C7000B4E101900D928A95E1F78091011480642E -:108C8000809301141092DE124091D0125091D112B3 -:108C90006091D2127091D3128091E0129091E11202 -:108CA000A091E212B091E312840F951FA61FB71F87 -:108CB0008093D0129093D112A093D212B093D3127A -:108CC000E091EF12F091F012458556856785708925 -:108CD000481759076A077B0768F521E02093DE12E1 -:108CE0004585568567857089841B950BA60BB70B48 -:108CF0008093D0129093D112A093D212B093D3123A -:108D000020818091561490915714A0915814B091DD -:108D1000591420FF04C00197A109B10903C00196AD -:108D2000A11DB11D8093561490935714A09358140D -:108D3000B09359144091D4125091D5126091D6122B -:108D40007091D7128091E4129091E512A091E612F1 -:108D5000B091E712840F951FA61FB71F8093D412FE -:108D60009093D512A093D612B093D712458556850D -:108D700067857089481759076A077B0778F520913E -:108D8000DE1222602093DE12458556856785708944 -:108D9000841B950BA60BB70B8093D4129093D5121E -:108DA000A093D612B093D712208180915A1490913B -:108DB0005B14A0915C14B0915D1421FF04C0019775 -:108DC000A109B10903C00196A11DB11D80935A14D8 -:108DD00090935B14A0935C14B0935D144091D812EF -:108DE0005091D9126091DA127091DB128091E812E1 -:108DF0009091E912A091EA12B091EB12840F951FA5 -:108E0000A61FB71F8093D8129093D912A093DA129D -:108E1000B093DB12458556856785708948175907D9 -:108E20006A077B0778F52091DE1224602093DE121A -:108E30004585568567857089841B950BA60BB70BF6 -:108E40008093D8129093D912A093DA12B093DB12C8 -:108E5000208180915E1490915F14A0916014B09174 -:108E6000611422FF04C00197A109B10903C0019652 -:108E7000A11DB11D80935E1490935F14A0936014A4 -:108E8000B093611480915314843039F49091DE12C0 -:108E900080916F1489238093DE128091EC1290915F -:108EA000ED1201979093ED128093EC12892B69F4E7 -:108EB0001092F2121092F1128091F3128F5F809350 -:108EC000F312863011F41092F3129091DE12809119 -:108ED000CE1289278093DE121092CF12FF91EF916C -:108EE000BF91AF919F918F917F916F915F914F91C2 -:108EF0003F912F910F900BBE0F900FBE0F901F90C0 -:108F000018958091401482FF08C08A9A80910801C8 -:108F10008160809308015F9A07C08A988091080158 -:108F20008E7F809308015F98809153148C70A1F01C -:108F30008091CD128093DF128091CE128093DE1249 -:108F400080913314880F845081958093DD12809135 -:108F50006F00826080936F0008951F920F920FB68A -:108F60000F9211240BB60F92CF92DF92EF92FF92E5 -:108F70000F931F932F933F934F935F936F937F9321 -:108F80008F939F93AF93BF93EF93FF938091AE1214 -:108F90009091AF12009721F0019709F435C131C2C9 -:108FA0008091B0129091B112A091B212B091B3120F -:108FB000AC01BD0141505109610971094093B012E2 -:108FC0005093B1126093B2127093B312892B8A2B13 -:108FD0008B2B59F080910201806480930201809173 -:108FE00002018F7B809302010FC0E091C912F091C2 -:108FF000CA12309709F01995809172008D7F809385 -:10900000720081E08093C8128091AC129091AD12F1 -:109010008130910509F4B4C020F0029709F4D3C05F -:10902000E4C1C090B012D090B112E090B212F090B2 -:10903000B3126091B4127091B5128091B6129091F2 -:10904000B71222E030E040E050E00E94C978C2163A -:10905000D306E406F5060CF4AFC08091C4129091DB -:10906000C512A091C612B091C7120196A11DB11DE3 -:109070008093C4129093C512A093C612B093C712E6 -:10908000C090BC12D090BD12E090BE12F090BF1202 -:109090008091BC129091BD12A091BE12B091BF12EE -:1090A0000091C4121091C5122091C6123091C712BE -:1090B000BC01CD01660F771F881F991F52E0000F7A -:1090C000111F221F331F5A95D1F7A90198012F5F55 -:1090D0003F4F4F4F5F4F0E94C978C21AD30AE40A2C -:1090E000F50AC092BC12D092BD12E092BE12F0926C -:1090F000BF124091BC125091BD126091BE1270918E -:10910000BF128091C0129091C112A091C212B09171 -:10911000C312481759076A077B070CF066C1809194 -:10912000B0129091B112A091B212B091B3124091CD -:10913000B4125091B5126091B6127091B712880FA7 -:10914000991FAA1FBB1F841B950BA60BB70B8093FF -:10915000B8129093B912A093BA12B093BB12809137 -:10916000C0129091C112A091C212B091C31280930B -:10917000BC129093BD12A093BE12B093BF12C6C092 -:109180008091B8129091B912A091BA12B091BB120D -:10919000AC01BD0141505109610971094093B812F8 -:1091A0005093B9126093BA127093BB121816190635 -:1091B0001A061B060CF419C182E090E09093AD12E0 -:1091C0008093AC1212C18091B0129091B112A09113 -:1091D000B212B091B312892B8A2B8B2B09F405C1E3 -:1091E0008091C4129091C512A091C612B091C7127D -:1091F0000197A109B1098093C4129093C512A0935D -:10920000C612B093C712A0C08091020180648093FF -:109210000201809102018F7B809302018091AC1248 -:109220009091AD12009721F0029709F472C0DDC051 -:109230004091BC125091BD126091BE127091BF124C -:109240008091C0129091C112A091C212B091C3122C -:1092500084179507A607B7070CF04DC08091C4127C -:109260009091C512A091C612B091C7120196A11D8E -:10927000B11D8093C4129093C512A093C612B093EF -:10928000C712C090BC12D090BD12E090BE12F090F8 -:10929000BF128091BC129091BD12A091BE12B091EC -:1092A000BF120091C4121091C5122091C6123091C4 -:1092B000C712BC01CD01660F771F881F991FF2E00E -:1092C000000F111F221F331FFA95D1F7A901980132 -:1092D0002F5F3F4F4F4F5F4F0E94C978C21AD30A8A -:1092E000E40AF50AC092BC12D092BD12E092BE12FE -:1092F000F092BF127AC0E091CB12F091CC1230976D -:1093000029F019951092CC121092CB1281E090E0C6 -:1093100055CF8091C4129091C512A091C612B09100 -:10932000C712AC01BD014150510961097109409357 -:10933000C4125093C5126093C6127093C712892B42 -:109340008A2B8B2B09F441C06091BC127091BD1225 -:109350008091BE129091BF120091C4121091C5125B -:109360002091C6123091C712C090C412D090C5127D -:10937000E090C612F090C71242E0000F111F221FAA -:10938000331F4A95D1F7A90198012F5F3F4F4F4FE7 -:109390005F4F0E9478789701860152E0000F111FFD -:1093A000221F331F5A95D1F7A90198012150310985 -:1093B000410951090E94C9782093BC123093BD1213 -:1093C0004093BE125093BF1210C0809172008D7FE7 -:1093D00080937200E091CB12F091CC12309729F07B -:1093E00019951092CC121092CB128091BC129091D0 -:1093F000BD12A091BE12B091BF129093A9008093AC -:10940000A800FF91EF91BF91AF919F918F917F91B4 -:109410006F915F914F913F912F911F910F91FF900D -:10942000EF90DF90CF900F900BBE0F900FBE0F907C -:109430001F901895E0EAF0E080818F7D80835C9832 -:109440000895CF92DF92EF92FF926A017B01811122 -:1094500005C0FF90EF90DF90CF90ECCF813011F4FA -:109460005C9801C05C9A83E28093A0008091A10087 -:10947000807E8A618093A1008FEF9FEF9093A90077 -:109480008093A80020E030E0A901C701B6010E9446 -:109490004E751816F4F620E030E0A901C701B601B8 -:1094A0000E944E7587FD11C020E030E04AE754E489 -:1094B000C701B6010E946C77181654F4C12CD12C48 -:1094C0008AE7E82E84E4F82E03C0C12CD12C760163 -:1094D0002CEE31E143E852E4C701B6010E94A777C0 -:1094E00020E030E040E05FE30E9475740E942B763C -:1094F0000E94C2757093AB006093AA005C9AFF90C3 -:10950000EF90DF90CF900895CF93DF93C62F8130F7 -:1095100009F48BC038F1823009F066C10E946130D5 -:109520008CE60E94FC2F0E943E308C2F0E94FC2F64 -:109530000E943E300E9461308DE60E94FC2F0E9406 -:109540003E3062E070E080E090E00E94AE37559AD5 -:109550005D9A62E070E080E090E00E94AE37D8E073 -:10956000C0E0FFC036D38CE60E9455310E948231A4 -:109570008C2F0E9455310E9482312BD38DE60E94A0 -:1095800055310E94823162E070E080E090E00E94FC -:10959000AE37399A419A62E070E080E090E00E9434 -:1095A000AE37D8E0C0E0439865E070E080E090E03E -:1095B0000E94AE37439ACC0F65E070E080E090E007 -:1095C0000E94AE3739983199C16065E070E080E063 -:1095D00090E00E94AE37D15031F74398399A419AC2 -:1095E00062E070E080E090E00E94AE37439A65E070 -:1095F00070E080E090E00E94AE37439862E070E057 -:1096000080E090E00E94AE37399A419A62E070E0C3 -:1096100080E090E00E94AE37439862E070E080E026 -:1096200090E00E94AE37BDD2E0C00E9426318CE6A9 -:109630000E9476300E94EE308C2F0E9476300E947D -:10964000EE300E9426318DE60E9476300E94EE3088 -:1096500062E070E080E090E00E94AE37809101010E -:1096600084608093010180910201846080930201F3 -:1096700062E070E080E090E00E94AE37D8E0C0E0A9 -:10968000809102018F778093020165E070E080E0B5 -:1096900090E00E94AE3780910201806880930201C1 -:1096A000CC0F65E070E080E090E00E94AE378091E2 -:1096B00001018B7F809301018091000182FDC160D7 -:1096C00065E070E080E090E00E94AE37D150C1F6D6 -:1096D000809102018F778093020180910101846063 -:1096E000809301018091020184608093020162E015 -:1096F00070E080E090E00E94AE37809102018068C7 -:109700008093020165E070E080E090E00E94AE3757 -:10971000809102018F778093020162E070E080E027 -:1097200090E00E94AE378091010184608093010136 -:109730008091020184608093020162E070E080E029 -:1097400090E00E94AE37809102018F7780930201F2 -:1097500062E070E080E090E00E94AE370E94BF308F -:1097600044C05E9865E070E080E090E00E94AE3713 -:109770005E9ACC0F65E070E080E090E00E94AE372A -:1097800055984D99C16065E070E080E090E00E94DE -:10979000AE37D15031F75E98559A5D9A62E070E02D -:1097A00080E090E00E94AE375E9A65E070E080E075 -:1097B00090E00E94AE375E9862E070E080E090E05A -:1097C0000E94AE37559A5D9A62E070E080E090E0CA -:1097D0000E94AE375E9862E070E080E090E00E9408 -:1097E000AE370E94293001C0C0E08C2FDF91CF91AD -:1097F0000895EAEFF3E124813581DC010E94ED78E0 -:10980000A1E0B1E02C9128602C93A0EAB0E02C916B -:1098100020682C93DC01CB012AE0B695A79597959B -:1098200087952A95D1F79093A9008093A800868107 -:1098300080618093A1000895CF93DF9321E5829FFB -:10984000C0011124EC01D55F40E550E0BE018AEA79 -:1098500093E10E945C62892B59F41092AA1340E5AF -:1098600050E06AEA73E1CE010E94196280E001C013 -:1098700081E0DF91CF91089590E0FC013197E231D2 -:10988000F10508F04EC08827EB55FF4F8F4F0C9421 -:10989000E578809180008F7703C0809180008F7D74 -:1098A00080938000089580918000877FF9CF84B5F0 -:1098B0008F7702C084B58F7D84BD08958091B000FC -:1098C0008F7703C08091B0008F7D8093B0000895A2 -:1098D000809190008F7707C0809190008F7D03C0AA -:1098E00080919000877F8093900008958091A000E0 -:1098F0008F7707C08091A0008F7D03C08091A0006A -:10990000877F8093A0000895809120018F7707C002 -:10991000809120018F7D03C080912001877F8093FB -:10992000200108951F93CF93DF93282F30E0F90192 -:10993000E457F64F8491F901EA5BF64FD491F901AF -:10994000E050F74FC491CC23B9F0162F811194DF6A -:10995000EC2FF0E0EE0FFF1FEA51F74FA591B49105 -:109960009FB7F894111104C08C91D095D82302C0F0 -:10997000EC91DE2BDC939FBFDF91CF911F91089577 -:10998000863308F0865390917B00282F2870977FAC -:10999000922B90937B008770806480937C008091F1 -:1099A0007A00806480937A0080917A0086FDFCCFF3 -:1099B000809178002091790090E0922B08951F9279 -:1099C0000F920FB60F9211240BB60F922F933F9365 -:1099D0004F935F936F937F938F939F93AF93BF93B7 -:1099E000EF93FF938091A5139091A6139093250177 -:1099F00080932401E091A313F091A413309709F010 -:109A00001995FF91EF91BF91AF919F918F917F91A8 -:109A10006F915F914F913F912F910F900BBE0F90DF -:109A20000FBE0F901F9018951F920F920FB60F92B6 -:109A300011240BB60F922F933F934F935F936F9325 -:109A40007F938F939F93AF93BF93EF93FF938091F7 -:109A5000FC139091FD139093A5008093A400E091D6 -:109A6000FA13F091FB13309709F01995FF91EF91DC -:109A7000BF91AF919F918F917F916F915F914F9126 -:109A80003F912F910F900BBE0F900FBE0F901F9024 -:109A90001895E2E7F0E080818E7F808308951F9221 -:109AA0000F920FB60F9211248F939F9380910C0207 -:109AB00090910D0290939500809394009F918F91C7 -:109AC0000F900FBE0F901F9018951F920F920FB618 -:109AD0000F9211240BB60F922F933F934F935F93E6 -:109AE0006F937F938F939F93AF93BF93EF93FF9366 -:109AF00080919E1390919F138093B200E0919C13EC -:109B0000F0919D13309709F01995FF91EF91BF9156 -:109B1000AF919F918F917F916F915F914F913F9105 -:109B20002F910F900BBE0F900FBE0F901F901895A6 -:109B3000000000000895CF93DF93D82FC8E0D7FF2F -:109B400002C02F9A01C02F98DD0FF2DF2E9AF0DFAE -:109B50002E98C150A1F7DF91CF9108952E98E8DF9C -:109B60002F98E6DF2E9AE4DF2F9AE2CFCF93C4B18D -:109B700027982F9ADDDF2E9ADBDF1F9B05C02E98DA -:109B8000EDDFC4B981E003C02E98C4B980E0CF9165 -:109B900008952E9ACDDF2F9ACBDF2F98C9DF2E980C -:109BA000C7CF4398399A419865E070E080E090E033 -:109BB0000E94AE37439A65E070E080E090E00E943A -:109BC000AE37399A419A65E070E080E090E00C94FD -:109BD000AE37399A419A439A65E070E080E090E0B0 -:109BE0000E94AE37399A419865E070E080E090E0DD -:109BF0000E94AE37439862E070E080E090E00C9401 -:109C0000AE379F92AF92BF92CF92DF92EF92FF92C8 -:109C10000F931F93CF93DF936C01D62F142F052F33 -:109C2000C22F269A279A2E9A2F9AB3DF8D2F83DF81 -:109C30009DDF882311F011E03BC0802F7CDF96DF91 -:109C40008111F9CF812F77DF91DF8111F4CFA1DF6F -:109C500081E08D0F70DF8ADF182F8111ECCFAC2EE1 -:109C6000B12CCC2321F17501EC1AF108EC0CFD1C90 -:109C700094B0279808E0D0E02E9A5ADFDD0F1F99A4 -:109C8000D16056DF2E9854DF0150B1F794B8F70138 -:109C9000D083C15061F0D4B1279A2F9849DF2E9A12 -:109CA00047DF2E9845DFD4B92F9A42DFDACF56DF4F -:109CB000812FDF91CF911F910F91FF90EF90DF9057 -:109CC000CF90BF90AF909F900895EF92FF920F9327 -:109CD0001F93CF93DF938C01E62ED42FF52EC22F46 -:109CE000269A279A2E9A2F9A54DF8E2D24DF3EDF54 -:109CF000811120C08F2D1FDF39DF81111BC08D2FF7 -:109D00001ADF34DFD82F811115C0EC2EF12C04C0DE -:109D100085E090E00E94EC37CC2371F0F701EC1B5A -:109D2000F109E00FF11F808106DFC1501FDF88239A -:109D300079F314DFD1E001C011DF8D2FDF91CF91D6 -:109D40001F910F91FF90EF9008954F925F926F9245 -:109D50007F92AF92BF92CF92DF92EF92FF920F93DA -:109D60001F93CF93DF935C01EB018A01FC014080DC -:109D700051806280738020E030E0A901C301B2010C -:109D80000E944E7520E030E0A901811111C0688168 -:109D900079818A819B810E946C771816E4F02AED04 -:109DA000C22E2FE0D22E29ECE22E2FEBF22E22C073 -:109DB000C301B2010E944E7587FD16C0A301920136 -:109DC000688179818A819B810E9455750E941375F3 -:109DD0006B017C010FC09AEDC92E9FE0D92E99EC42 -:109DE000E92E9FE3F92E06C0C12CD12C80ECE82E81 -:109DF0008FE7F82EC701B6010E9452752091920D8F -:109E00003091930D4091940D5091950D0E94A7773C -:109E10009B01AC01C301B2010E947474F50160831F -:109E2000718382839383C701B6010E940A782091CF -:109E3000920D3091930D4091940D5091950D0E948B -:109E4000A7779B01AC01688179818A819B810E94FF -:109E50007474688379838A839B832091960D3091F3 -:109E6000970D4091980D5091990DF8016081718185 -:109E7000828193810E947574F8016083718382836B -:109E80009383DF91CF911F910F91FF90EF90DF901F -:109E9000CF90BF90AF907F906F905F904F9008955C -:109EA0004F925F926F927F92AF92BF92CF92DF926A -:109EB000EF92FF920F931F93CF93DF935C01EB011F -:109EC0008A01FC01408051806280738020E030E094 -:109ED000A901C301B2010E944E7520E030E0A90142 -:109EE000811111C0688179818A819B810E946C7780 -:109EF0001816E4F02AEDC22E2FE0D22E29ECE22E25 -:109F00002FEBF22E22C0C301B2010E944E7587FDD5 -:109F100016C0A3019201688179818A819B810E9488 -:109F200055750E9413756B017C010FC09AEDC92E07 -:109F30009FE0D92E99ECE92E9FE3F92E06C0C12CA3 -:109F4000D12C80ECE82E8FE7F82EC701B6010E94D5 -:109F500052752091920D3091930D4091940D509136 -:109F6000950D0E94A777A30192010E947574F501D7 -:109F70006083718382839383C701B6010E940A784C -:109F80002091920D3091930D4091940D5091950D2B -:109F90000E94A7779B01AC01688179818A819B81AE -:109FA0000E947574688379838A839B832091960DC0 -:109FB0003091970D4091980D5091990DF801608165 -:109FC0007181828193810E947474F801608371832E -:109FD00082839383DF91CF911F910F91FF90EF9038 -:109FE000DF90CF90BF90AF907F906F905F904F9039 -:109FF00008952F923F924F925F926F927F928F922D -:10A000009F92AF92BF92CF92DF92EF92FF920F9307 -:10A010001F93CF93DF93CDB7DEB766970FB6F89453 -:10A02000DEBF0FBECDBF69837A838B839C832D8374 -:10A030003E834F835887270138011601BA8AA98ABF -:10A0400084019B01AC010E94A7776B017C012D81EB -:10A050003E814F815885CA01B9010E94A7779B01B3 -:10A06000AC01C701B6010E9475740E94147823E305 -:10A0700033E343E551E40E94747469877A878B87E0 -:10A080009C872DEC3CEC46ED52E4C301B2010E94EA -:10A0900074742B013C0129853A854B855C85CA0186 -:10A0A000B9010E94A7776B017C01A3019201C30152 -:10A0B000B2010E94A7779B01AC01C701B6010E94C3 -:10A0C00075746B017C0124ED35E64DE955E40E9481 -:10A0D00074744B015C0126EC3FEA4DE957E4C7017B -:10A0E000B6010E94A7776D877E878F87988BA50121 -:10A0F0009401C501B4010E94A7779B01AC016D8555 -:10A100007E858F8598890E9474740E9414786B8B69 -:10A110007C8B8D8B9E8BA7019601C701B6010E9497 -:10A1200075746D877E878F87988BA50194016985EB -:10A130007A858B859C850E94A7774B015C012B89D2 -:10A140003C894D895E89C301B2010E94A7779B01BA -:10A15000AC01C501B4010E9474744B015C012CEE8A -:10A1600031E14EE053E46D857E858F8598890E94AC -:10A17000A7779B01AC01C501B4010E9455750E94EF -:10A18000667421EE3EE245E652E40E94A777F101B3 -:10A19000608371838283938324ED35E64DE955E432 -:10A1A000C701B6010E9475744B015C012BE339E0D5 -:10A1B00045EC57E4C701B6010E94A7776B017C010B -:10A1C000A5019401C501B4010E94A7779B01AC01D0 -:10A1D000C701B6010E9474740E9414786B017C015F -:10A1E000A501940169857A858B859C850E94A77756 -:10A1F0004B015C01A7019601C301B2010E94A77740 -:10A200009B01AC01C501B4010E9475746B017C0116 -:10A210002CE53FEC4EE153E46D857E858F85988972 -:10A220000E94A7779B01AC01C701B6010E9455753A -:10A230000E94667421EE3EE245E652E40E94A77752 -:10A240006B017C01E989FA8960837183828393833E -:10A2500021EE3EE245E652E4F101608171818281A6 -:10A2600093810E9455750E940A782CEE31E14EE0F0 -:10A2700053E40E94A7779B01AC01C301B2010E9485 -:10A280006C77181654F4F7FAF094F7F8F094E9891B -:10A29000FA89C082D182E282F38220E030E0A90113 -:10A2A00069817A818B819C810E944E7520E030E02B -:10A2B000A901811112C06D817E818F8198850E94D4 -:10A2C0006C7718162CF480E090E0A4EBB2E411C097 -:10A2D00080E090E0A4EBB2EC0CC069817A818B81C4 -:10A2E0009C810E944E7587FF0AC080E090E0A0EC40 -:10A2F000BFE7F80180839183A283B38317C02981CC -:10A300003A814B815C816D817E818F8198850E942D -:10A3100055750E94137521EE3EE245E652E40E9417 -:10A32000A777F801608371838283938366960FB663 -:10A33000F894DEBF0FBECDBFDF91CF911F910F917B -:10A34000FF90EF90DF90CF90BF90AF909F908F9055 -:10A350007F906F905F904F903F902F9008952F9235 -:10A360003F924F925F926F927F928F929F92AF92A5 -:10A37000BF92CF92DF92EF92FF920F931F93CF93F2 -:10A38000DF93CDB7DEB72E970FB6F894DEBF0FBEC2 -:10A39000CDBF29833A834B835C83ED82FE820F839A -:10A3A0001887860115019E868D8621EE3EE245E6E0 -:10A3B00052E40E9455752B013C0121EE3EE245E638 -:10A3C00052E469817A818B819C810E9455754B0191 -:10A3D0005C0121EE3EE245E652E46D817E818F8193 -:10A3E00098850E9455756B017C01C301B2010E94E2 -:10A3F000527569837A838B839C83C501B4010E9463 -:10A4000052756D837E838F839887C301B2010E944A -:10A410000A782B013C01C501B4010E940A786987C2 -:10A420007A878B879C872CEE31E14EE053E469817B -:10A430007A818B819C810E94A7774B015C012CE57E -:10A440003FEC4EE153E46D817E818F8198850E94BF -:10A45000A7779B01AC01C501B4010E94757423E389 -:10A4600033E343E551E40E9475744B015C01C7017D -:10A47000B6010E9452759B01AC01C501B4010E9456 -:10A48000A777F8016083718382839383C701B60144 -:10A490000E940A789B01AC01C501B4010E94A77714 -:10A4A000F10160837183828393832CEE31E14EE06E -:10A4B00053E4C301B2010E94A7776B017C012CE534 -:10A4C0003FEC4EE153E469857A858B859C850E943B -:10A4D000A7779B01AC01C701B6010E9474742DECF3 -:10A4E0003CEC46ED52E40E947574ED85FE85608378 -:10A4F0007183828393832E960FB6F894DEBF0FBECE -:10A50000CDBFDF91CF911F910F91FF90EF90DF9022 -:10A51000CF90BF90AF909F908F907F906F905F9003 -:10A520004F903F902F9008952F923F924F925F92BD -:10A530006F927F928F929F92AF92BF92CF92DF9253 -:10A54000EF92FF920F931F93CF93DF93CDB7DEB7B8 -:10A5500028970FB6F894DEBF0FBECDBF2B013C018C -:10A5600029833A834B835C83ED82FE820F831887B5 -:10A57000860180E9282E8DE0382E20E030E044EB83 -:10A5800052E4F10166897789808D918D0E947474FF -:10A590006B017C0120E030E040EA52E46D817E8175 -:10A5A0008F8198850E9455759B01AC01C701B6014A -:10A5B0000E9475746D837E838F83988720E030E0DE -:10A5C00040EA52E469817A818B819C810E945575B1 -:10A5D000F10122893389448955890E947574698300 -:10A5E0007A838B839C8320E030E040EA52E4C3010D -:10A5F000B2010E945575F101268537854089518940 -:10A600000E9475746801ED80FE800F811885298194 -:10A610003A814B815C81A3DE28960FB6F894DEBFA9 -:10A620000FBECDBFDF91CF911F910F91FF90EF90A3 -:10A63000DF90CF90BF90AF909F908F907F906F9062 -:10A640005F904F903F902F9008954F925F926F923E -:10A650007F928F929F92AF92BF92CF92DF92EF92B2 -:10A66000FF920F931F932B013C0149015A0167018F -:10A6700078019B01AC010E945C78811170C0A5013A -:10A680009401C501B4010E945C78811168C0A701E2 -:10A690009601C701B6010E945C78811160C02AE969 -:10A6A00039E947E053E4C301B2010E946C77181600 -:10A6B0000CF455C020E030E0A901C301B2010E94B2 -:10A6C0004E7587FD4CC02DEC3CEC4FEE52E4C501BD -:10A6D000B4010E946C7718160CF441C020E030E001 -:10A6E000A901C501B4010E944E7587FD38C0A301C0 -:10A6F000920160E070E084E393E40E947474A50129 -:10A7000094010E9474744B015C0120E030E047E149 -:10A7100053E40E946C77181614F120E030E040E218 -:10A7200051E4C501B4010E944E7587FD18C020E0B8 -:10A7300030E044EB52E4C701B6010E946C77181672 -:10A7400074F020E030E044EB52ECC701B6010E9407 -:10A750004E75881F8827881F91E0892701C080E0F7 -:10A760001F910F91FF90EF90DF90CF90BF90AF902F -:10A770009F908F907F906F905F904F900895EF9291 -:10A78000FF920F931F93CF93DF9382E393E00E9496 -:10A7900054628B3B19F080E293E002C084E393E0C3 -:10A7A00020E9E22E2DE0F22ECAE8DDE08C010A5805 -:10A7B0001D40C8018C0F9D1F0E9454628993EC16A6 -:10A7C000FD06B9F7DF91CF911F910F91FF90EF90A8 -:10A7D0000895AF92BF92CF92DF92EF92FF920F93C4 -:10A7E0001F93CF93DF93A82E6EE00E94844AC82F58 -:10A7F0006FE08A2D0E94844AD0E0DC2FCC27C82B42 -:10A800007E016E0104E010E06EE08A2D0E94844A11 -:10A81000B82E6FE08A2D0E94844A2B2D30E0322F13 -:10A820002227A901482BCA01C816D90608F46C01D1 -:10A830008E159F0508F47C01C80FD91F015011091E -:10A8400019F7CE018C199D098E199F0963E070E0FC -:10A850000E949378613050E1750708F48B01C801BC -:10A86000DF91CF911F910F91FF90EF90DF90CF90EC -:10A87000BF90AF900895CF92DF92EF92FF920F9327 -:10A880001F93CF93DF93EC01A4DF9C01C130D1056E -:10A8900091F128F0C230D10509F459C084C060910B -:10A8A0008C0D70918D0DCB01A0E0B0E0890120E00E -:10A8B00030E06C017D01C01AD10AE20AF30A41E0DE -:10A8C000C41648E0D406E104F10424F09051A10933 -:10A8D000B1090AC0C11448EFD4064FEFE406F406EC -:10A8E0001CF4905FAF4FBF4FBC01CD01601B710BDB -:10A8F000820B930B65C060918E0D70918F0DCB0113 -:10A90000A0E0B0E0890120E030E06C017D01C01AD8 -:10A91000D10AE20AF30A41E0C41648E0D406E10491 -:10A92000F10424F09051A109B1090AC0C11448EF03 -:10A93000D4064FEFE406F4061CF4905FAF4FBF4F10 -:10A94000BC01CD01601B710B820B930B45C0609164 -:10A950008A0D70918B0DCB01A0E0B0E0890120E061 -:10A9600030E06C017D01C01AD10AE20AF30A41E02D -:10A97000C41648E0D406E104F10424F09051A10982 -:10A98000B1090AC0C11448EFD4064FEFE406F4063B -:10A990001CF4905FAF4FBF4FBC01CD01601B710B2A -:10A9A000820B930B22C0C130D10599F030F0229771 -:10A9B00019F560E070E0CB0118C060E070E0CB01F9 -:10A9C00045E2C42E49E0D42E43E0E42E42E4F42EC6 -:10A9D00016C060E070E0CB0139E0C32E36EFD32E15 -:10A9E00031EBE32E32E4F32E0AC0C12CD12C24EB40 -:10A9F000E22E22E4F22E03C060E070E0CB010E9460 -:10AA0000F07520E030E044EB53E40E94A77720E0AB -:10AA100030E040E859E30E94A7779B01AC01C701F1 -:10AA2000B6010E947474DF91CF911F910F91FF9036 -:10AA3000EF90DF90CF9008958F929F92AF92BF9248 -:10AA4000CF92DF92EF92FF920F931F93CF93DF93FA -:10AA5000EB0123E0E22E24E1F22E8C016B018CE06D -:10AA6000C80ED11C6991799189919991F7018190D2 -:10AA70009190A190B1907F010E94F075A501940181 -:10AA80000E945575F80161937193819391938F01A1 -:10AA9000CC15DD0539F7DF91CF911F910F91FF9014 -:10AAA000EF90DF90CF90BF90AF909F908F900895E0 -:10AAB0001F920F920FB60F9211240BB60F922F9385 -:10AAC0003F934F935F936F937F938F939F93AF9336 -:10AAD000BF93EF93FF9389B18095982F907184FF76 -:10AAE00002C09111FED5FF91EF91BF91AF919F915F -:10AAF0008F917F916F915F914F913F912F910F9027 -:10AB00000BBE0F900FBE0F901F90189569E080E06C -:10AB100090E00E94F7614DE450E063E074E181E071 -:10AB200098E00C941962CF92DF92EF92FF92CF934C -:10AB3000DF93C82F6A017B0120E030E0A901C70143 -:10AB4000B6010E944E7587FDE3C0C43608F441C0CB -:10AB50008CE98C0F20E0833098F590E0880F991FE6 -:10AB6000880F991F223079F0FC01233011F1213038 -:10AB700019F0ED5FFB4E02C0E15FFB4EC082D18257 -:10AB8000E282F382C2C0EC01C55EDB4E20E030E021 -:10AB900040E752E4C701B6010E94A77720E030E009 -:10ABA00040E752E40E94A777688379838A839B8376 -:10ABB000ACC0E95DFB4EF7FAF094F7F8F094DECF05 -:10ABC0002F5F8A3008F4A6C0243009F4A3C08A504D -:10ABD000C2CFC701B6010E9455780E94C2758C2F62 -:10ABE00090E08C31910508F095C0FC018827E9546C -:10ABF000FF4F8F4F0C94E578633008F48DC060935D -:10AC0000331483C06093361480C06093341402C040 -:10AC1000609335140E940A4478C0809140146623E2 -:10AC200011F084604CC08B7F4AC080914014662331 -:10AC300011F0806444C08F7B42C080914014662331 -:10AC400011F080683CC08F773AC0609337145DC0C4 -:10AC5000C0923814D0923914E0923A14F0923B1416 -:10AC600054C0C0923C14D0923D14E0923E14F09235 -:10AC70003F144BC080914014662311F081601FC0C7 -:10AC80008E7F1DC080914014662321F084FF46C052 -:10AC9000806215C08F7D13C080914014662311F02F -:10ACA000886001C0877F809340140E94DF612DC0BF -:10ACB00080914014662311F0806101C08F7C8093E5 -:10ACC000401423C06093411420C0C0924214D0921B -:10ACD0004314E0924414F092451417C0C0924614F5 -:10ACE000D0924714E0924814F09249140EC070E0DC -:10ACF00070934B1460934A1408C0C0924C14D092C5 -:10AD00004D14E0924E14F0924F1400DF80E007C023 -:10AD100084E005C083E003C086E001C08AE0DF91E3 -:10AD2000CF91FF90EF90DF90CF9008952DE0829F1C -:10AD3000C00111244CE050E0965F0C9419621F93FF -:10AD4000CF93DF93182FEB018DE0189FB0011124F2 -:10AD5000765F4CE050E0CE010E945C62892B51F49A -:10AD60008CE0FE0111928A95E9F7BE01812FDEDFAA -:10AD700080E001C081E0DF91CF911F910895EF92B3 -:10AD8000FF920F931F93CF93DF93CDB7DEB72C972E -:10AD90000FB6F894DEBF0FBECDBF182F80FFC6C020 -:10ADA0008AE0809333148FEF80933614109234141A -:10ADB00087E08093351483E0809337148AE097ED21 -:10ADC000A3E2BCE38093381490933914A0933A140F -:10ADD000B0933B148FE692E1A3E0BBE380933C1475 -:10ADE00090933D14A0933E14B0933F1410924114DD -:10ADF00080E090E0A8ECB1E4809342149093431477 -:10AE0000A0934414B093451480E090E0AAEFB3E41B -:10AE10008093461490934714A0934814B093491418 -:10AE20008AEF90E090934B1480934A1480E090E076 -:10AE3000A0E8BFE380934C1490934D14A0934E145C -:10AE4000B0934F1484E08093401480E090E0A8EC2D -:10AE5000B5E48093031490930414A0930514B09365 -:10AE600006148093071490930814A0930914B093C8 -:10AE70000A1480930B1490930C14A0930D14B093A8 -:10AE80000E1480E090E5A3ECB7E480930F14909348 -:10AE90001014A0931114B093121480931314909370 -:10AEA0001414A0931514B093161480931714909350 -:10AEB0001814A0931914B0931A1480E090EAACE02F -:10AEC000B7E480931B1490931C14A0931D14B093AB -:10AED0001E1480931F1490932014A0932114B093F8 -:10AEE00022148093231490932414A0932514B093D8 -:10AEF000261480E090E4ACE1B6EC809327149093A4 -:10AF00002814A0932914B0932A1480932B1490939F -:10AF10002C14A0932D14B0932E1480932F1490937F -:10AF20003014A0933114B0933214F0DD11FF0FC030 -:10AF3000CE0101967C018CE0F70111928A95E9F728 -:10AF400000E0B701802FF2DE0F5F0830D1F712FF6B -:10AF50000AC060E080E09BE00E94F76160E081E56C -:10AF60009BE00E94F76113FF05C060E08EEA9BE062 -:10AF70000E94F7612C960FB6F894DEBF0FBECDBFCE -:10AF8000DF91CF911F910F91FF90EF9008951F9245 -:10AF90000F920FB60F9211240BB60F922F933F937F -:10AFA0004F935F936F937F938F939F93AF93BF93D1 -:10AFB000EF93FF938091360123E030E03093ED155D -:10AFC0002093EC158F33A9F050F4883109F18132C8 -:10AFD00009F59FB7F89480910114886015C08034FA -:10AFE00071F08E37B9F49FB7F894809101148260A4 -:10AFF0000BC09FB7F89480910114816005C09FB782 -:10B00000F894809101148062809301149FBF13C053 -:10B0100068D311C0E091691591E09E0F903809F452 -:10B0200090E020916815921731F0F0E0E851FB4E66 -:10B03000808390936915FF91EF91BF91AF919F919C -:10B040008F917F916F915F914F913F912F910F90D1 -:10B050000BBE0F900FBE0F901F9018951F920F926E -:10B060000FB60F9211240BB60F922F933F934F936D -:10B070005F936F937F938F939F93AF93BF93EF9360 -:10B08000FF938091D60022E030E03093ED152093BD -:10B09000EC158F33A9F050F4883109F1813209F5AC -:10B0A0009FB7F89480910114886015C0803471F0C6 -:10B0B0008E37B9F49FB7F8948091011482600BC069 -:10B0C0009FB7F89480910114816005C09FB7F894F0 -:10B0D000809101148062809301149FBF13C001D33B -:10B0E00011C0E091691591E09E0F903809F490E04D -:10B0F00020916815921731F0F0E0E851FB4E808303 -:10B1000090936915FF91EF91BF91AF919F918F91AE -:10B110007F916F915F914F913F912F910F900BBE57 -:10B120000F900FBE0F901F9018951F920F920FB6A1 -:10B130000F9211240BB60F922F933F934F935F936F -:10B140006F937F938F939F93AF93BF93EF93FF93EF -:10B150008091CE0021E030E03093ED152093EC1586 -:10B160008F33A9F050F4883109F1813209F59FB786 -:10B17000F89480910114886015C0803471F08E3786 -:10B18000B9F49FB7F8948091011482600BC09FB707 -:10B19000F89480910114816005C09FB7F894809164 -:10B1A00001148062809301149FBF13C09AD211C012 -:10B1B000E091691591E09E0F903809F490E020919C -:10B1C0006815921731F0F0E0E851FB4E80839093C0 -:10B1D0006915FF91EF91BF91AF919F918F917F91F1 -:10B1E0006F915F914F913F912F910F900BBE0F90F8 -:10B1F0000FBE0F901F9018951F920F920FB60F92CF -:10B2000011240BB60F922F933F934F935F936F933D -:10B210007F938F939F93AF93BF93EF93FF9380910F -:10B22000C6001092ED151092EC158F33A9F050F472 -:10B23000883109F1813209F59FB7F89480910114A2 -:10B24000886015C0803471F08E37B9F49FB7F894D8 -:10B250008091011482600BC09FB7F8948091011413 -:10B26000816005C09FB7F89480910114806280933B -:10B2700001149FBF13C035D211C0E091691591E050 -:10B280009E0F903809F490E020916815921731F0E4 -:10B29000F0E0E851FB4E808390936915FF91EF91A8 -:10B2A000BF91AF919F918F917F916F915F914F91DE -:10B2B0003F912F910F900BBE0F900FBE0F901F90DC -:10B2C00018951F920F920FB60F9211240BB60F9282 -:10B2D0008F939F93EF93FF938091EB15E82FF0E00E -:10B2E000E559FA4E9081909336018F5F803809F4CA -:10B2F00080E08093EB1590916A15891305C08091C9 -:10B3000031018F7D80933101FF91EF919F918F915A -:10B310000F900BBE0F900FBE0F901F9018951F92AD -:10B320000F920FB60F9211240BB60F928F939F932B -:10B33000EF93FF938091EB15E82FF0E0E559FA4E7B -:10B3400090819093D6008F5F803809F480E08093DD -:10B35000EB1590916A15891305C08091D1008F7DFE -:10B360008093D100FF91EF919F918F910F900BBE31 -:10B370000F900FBE0F901F9018951F920F920FB64F -:10B380000F9211240BB60F928F939F93EF93FF931D -:10B390008091EB15E82FF0E0E559FA4E90819093FB -:10B3A000CE008F5F803809F480E08093EB15909198 -:10B3B0006A15891305C08091C9008F7D8093C900EB -:10B3C000FF91EF919F918F910F900BBE0F900FBE49 -:10B3D0000F901F9018951F920F920FB60F92112485 -:10B3E0000BB60F928F939F93EF93FF938091EB1582 -:10B3F000E82FF0E0E559FA4E90819093C6008F5FF8 -:10B40000803809F480E08093EB1590916A158913D8 -:10B4100005C08091C1008F7D8093C100FF91EF91A5 -:10B420009F918F910F900BBE0F900FBE0F901F90AA -:10B430001895E0916A1591E09E0F903831F490E0F4 -:10B4400004C02091011424FD2FC02091EB15291771 -:10B45000C1F3F0E0E559FA4E808390936A1580912C -:10B46000EC159091ED158130910569F030F0823046 -:10B47000910579F0039799F008958091C100806259 -:10B480008093C10008958091C90080628093C900B3 -:10B4900008958091D10080628093D10008958091B9 -:10B4A00031018062809331010895CF93C82F8DECD4 -:10B4B0009AE00E94E732C830C9F190F4C43069F1D3 -:10B4C00048F4C23011F130F5C13009F046C085EBC7 -:10B4D0009AE01DC0C63021F130F586E79AE017C02A -:10B4E000C43181F140F4CA3039F118F1CB30A9F5FB -:10B4F00085EC94E02FC0C63141F108F1C23341F12F -:10B50000C33359F584ED94E025C083EA9AE00E94A4 -:10B51000E7322AC081E99AE0FACF87E89AE0F7CFCC -:10B5200087E69AE0F4CF86E49AE0F1CF8DE39AE0E3 -:10B53000EECF82E39AE0EBCF8FE19AE0E8CF89E0AB -:10B540009AE0E5CF8AEC94E005C085EF99E0DFCF83 -:10B550008FEC94E00E94F63207C083EE99E00E94DF -:10B56000E7328C2F0E94D93280EE99E0CF910C9473 -:10B57000E7321F93CF93DF93CDB7DEB72C970FB68B -:10B58000F894DEBF0FBECDBF80E090E08DD789304C -:10B5900009F051C04DE450E061E078E083E094E1CF -:10B5A0008BD7892B09F447C020E030E048EC55E404 -:10B5B0006091031470910414809105149091061405 -:10B5C0000E944E75811137C020E030E048EC55E410 -:10B5D00060910714709108148091091490910A14D5 -:10B5E0000E944E75811127C020E030E048EC55E400 -:10B5F00060910B1470910C1480910D1490910E14A5 -:10B600000E944E75811117C010E0BE016F5F7F4F21 -:10B61000812F95DB811102C087E047DF1F5F183063 -:10B62000A1F72C960FB6F894DEBF0FBECDBFDF9109 -:10B63000CF911F9108958FEFA2DBE6CF8F929F925B -:10B64000AF92BF92EF92FF920F931F93CF938AED29 -:10B6500099E00E94E73282E6E82E84E1F82E03E0CA -:10B6600014E1C0E0F70161917191819191917F01A5 -:10B67000F80181909190A190B1908F010E94F07596 -:10B68000A50194010E9455750E94CB32C23021F071 -:10B6900088ED99E00E94E732CF5FC33019F786ED5D -:10B6A00099E00E94E73280916E140E94D93282EDB7 -:10B6B00099E0CF911F910F91FF90EF90BF90AF90C5 -:10B6C0009F908F900C94E73280915414811108C0A0 -:10B6D0009FB7F894809101148260809301149FBFFA -:10B6E00008958091011484FD25C09FB7F89480913E -:10B6F00001148061809301149FBF0E941A4A1ED7D3 -:10B7000080915314982F9C7021F49091541491308F -:10B7100089F49FB7843029F4F894809151148062A1 -:10B7200004C0F894809151148860809351149FBF95 -:10B730000C94894408952F923F924F925F926F929A -:10B740007F928F929F92AF92BF92CF92DF92EF92B1 -:10B75000FF920F931F93CF93DF93CDB7DEB7C756FA -:10B76000D1090FB6F894DEBF0FBECDBF66968FAF7E -:10B7700066971B016B962CAF3DAF4EAF5FAF6B97DB -:10B78000A8960FAFA8978091401485FF51C03B0148 -:10B7900003E014E17B012CE0E20EF11CDD24D394E4 -:10B7A000D3018D909D90AD90BD903D0120E030E0A3 -:10B7B000A901C501B4010E946C77181654F0F80174 -:10B7C00024A135A146A157A1C501B4010E944E751F -:10B7D00087FDD092551480915514882319F18091DA -:10B7E0005314883061F07DDF9FB7F8948091511435 -:10B7F0008560809351149FBF0E94F73719C09FB78F -:10B80000F894809101148860809301149FBF0E9476 -:10B81000F7378091521481110BC08091531481111C -:10B82000F6CFE1CF0C5F1F4FE614F70409F0B8CF55 -:10B8300080915314823009F47AC3F101808191819F -:10B84000A281B38165968CAF9DAFAEAFBFAF659758 -:10B8500084819581A681B78161968CAF9DAFAEAF93 -:10B86000BFAF619780859185A285B3852D968CAFFA -:10B870009DAFAEAFBFAF2D97AE01475B5F4FBE012F -:10B88000635B7F4FCE018F5A9F4F0E94A54E2D962E -:10B89000ECACFDAC0EAD1FAD2D9761962CAD3DAD62 -:10B8A0004EAD5FAD619765966CAD7DAD8EAD9FADD4 -:10B8B0006597DE0191964D01FE017D965F01189717 -:10B8C0006D010E94F94FE9A0FAA00BA11CA12D8DDA -:10B8D0003E8D4F8D58A1698D7A8D8B8D9C8D0E94E8 -:10B8E0002553882309F41FC36091B20D7091B30DE5 -:10B8F0008091B40D9091B50D0E94F0752B013C0123 -:10B900006091AE0D7091AF0D8091B00D9091B10D21 -:10B910000E94F0756F966CAF7DAF8EAF9FAF6F9743 -:10B920006091AA0D7091AB0D8091AC0D9091AD0D11 -:10B930000E94F075FE01BD964F019E01275D3F4FAD -:10B940005901DE0195966D01830172016F962CAD50 -:10B950003DAD4EAD5FAD6F970E949452A401B5010D -:10B96000C6010E94504F05DE6696BFAD6697BB23A9 -:10B9700019F0B13041F0DDC0E1E0F0E06796FFAFD3 -:10B98000EEAF6797DAC020E030E048EC52E46B9607 -:10B990006CAD7DAD8EAD9FAD6B970E946C77181628 -:10B9A00054F480E090E0A8ECB2E46B968CAF9DAFCD -:10B9B000AEAFBFAF6B972DA13EA14FA158A5D1014E -:10B9C0006D917D918D919C910E9474742B013C012D -:10B9D00029A53AA54BA55CA5F101648175818681F5 -:10B9E00097810E9474744B015C012DA53EA54FA563 -:10B9F00058A9D10118966D917D918D919C911B97BD -:10BA00000E9474746B017C01A3019201C301B20115 -:10BA10000E94A7772B013C01A5019401C501B40147 -:10BA20000E94A7779B01AC01C301B2010E9475740B -:10BA30004B015C01A7019601C701B6010E94A777DF -:10BA40009B01AC01C501B4010E9475740E94147879 -:10BA500020E030E040EF51E40E94A7776B962CADD8 -:10BA60003DAD4EAD5FAD6B970E9455750E94C2759E -:10BA700067967FAF6EAF67976A30710530F42AE042 -:10BA800030E067963FAF2EAF679720E030E040E9A7 -:10BA900050E46B966CAD7DAD8EAD9FAD6B970E9403 -:10BAA000A77720E030E048EC52E40E94557520E092 -:10BAB00030E040E05FE30E94757420E030E040E752 -:10BAC00052E40E94A77720E030E040E752E40E9471 -:10BAD000A7776B017C0160931B1470931C148093F7 -:10BAE0001D1490931E1460931F1470932014809360 -:10BAF00021149093221420E030E442E955E40E949E -:10BB00006C7787FF09C0C0922314D0922414E0926E -:10BB10002514F092261411C080E090E4A2E9B5E467 -:10BB20008093231490932414A0932514B093261487 -:10BB300004C067961FAE1EAE67976796AEADBFADE9 -:10BB40006797BD0180E090E00E94EE756B017C017B -:10BB50002DA13EA14FA158A5F10160817181828183 -:10BB600093810E947474A70196010E9455756F9687 -:10BB70006CAF7DAF8EAF9FAF6F9729A53AA54BA550 -:10BB80005CA5D10114966D917D918D919C91179733 -:10BB90000E947474A70196010E945575A3966CAF1C -:10BBA0007DAF8EAF9FAFA3972DA53EA54FA558A9FA -:10BBB000F10160857185828593850E947474A70167 -:10BBC00096010E945575A7966CAF7DAF8EAF9FAF63 -:10BBD000A79722242394312C67962EAD3FAD67970B -:10BBE0002215330508F49DC1B101032C000C880B0C -:10BBF000990B0E94F0756B017C019B01AC016F9663 -:10BC00006CAD7DAD8EAD9FAD6F970E94A7779B0108 -:10BC1000AC016DA17EA18FA198A50E9475746D875E -:10BC20007E878F87988BA7019601A3966CAD7DAD1B -:10BC30008EAD9FADA3970E94A7779B01AC0169A52C -:10BC40007AA58BA59CA50E947574698B7A8B8B8BCA -:10BC50009C8BA7019601A7966CAD7DAD8EAD9FAD77 -:10BC6000A7970E94A7779B01AC016DA57EA58FA524 -:10BC700098A90E9475746D8B7E8B8F8B988FAE0107 -:10BC80004B5E5F4FBE016F5E7F4FCE010D960E94EF -:10BC9000A54EED88FE880F89188D29893A894B8930 -:10BCA0005C896D857E858F859889DE01DD964D01E5 -:10BCB000FE01EF5BFF4F5F0118966D010E94F94F87 -:10BCC0002196ECACFDAC0EAD1FAD219725962CADA9 -:10BCD0003DAD4EAD5FAD259729966CAD7DAD8EAD7A -:10BCE0009FAD29970E942553882309F416C16D85BD -:10BCF0007E858F8598896093B60D7093B70D80937C -:10BD0000B80D9093B90D29893A894B895C892093A4 -:10BD1000BA0D3093BB0D4093BC0D5093BD0DED8813 -:10BD2000FE880F89188DE092BE0DF092BF0D009332 -:10BD3000C00D1093C10DFE01F1964F01DE01D596A5 -:10BD40005D0138966F010E94F94FC9A8DAA8EBA8E7 -:10BD5000FCA88DA89EA8AFA8B8AC20919E0D3091EC -:10BD60009F0D4091A00D5091A10D69AD7AAD8BADA5 -:10BD70009CAD0E94747420E030E040EA52E40E94DE -:10BD8000A7770E94BD75072E000C880B990B0E94A7 -:10BD9000F07569837A838B839C832091A20D309107 -:10BDA000A30D4091A40D5091A50DC501B4010E94B1 -:10BDB000747420E030E040EA52E40E94A7770E94C9 -:10BDC000BD75072E000C880B990B0E94F0756D83D2 -:10BDD0007E838F8398872091A60D3091A70D409187 -:10BDE000A80D5091A90DC701B6010E94747420E0FE -:10BDF00030E044EB52E40E94757420E030E040EA09 -:10BE000052E40E94A7770E94BD75072E000C880B94 -:10BE1000990B0E94F07569877A878B879C870E94AF -:10BE2000F73780915214811180C09091AA128091AD -:10BE3000AA0F981302C048DCF2CF89809A80AB80A9 -:10BE4000BC80C501B4010E94BD756093AA0D7093BA -:10BE5000AB0D8093AC0D9093AD0DCD80DE80EF8067 -:10BE6000F884C701B6010E94BD756093AE0D709352 -:10BE7000AF0D8093B00D9093B10D49845A846B84BB -:10BE80007C84C301B2010E94BD756093B20D7093B2 -:10BE9000B30D8093B40D9093B50D209103143091A0 -:10BEA00004144091051450910614C501B4010E9478 -:10BEB000557569837A838B839C8320910714309115 -:10BEC00008144091091450910A14C701B6010E9448 -:10BED00055756D837E838F83988720910B143091E5 -:10BEE0000C1440910D1450910E14C301B2010E9424 -:10BEF000557569877A878B879C87A8962FADA897F9 -:10BF00006B964CAD5DAD6EAD7FAD6B97CE0101967E -:10BF10000E946F3431E03093C60DFFEF2F1A3F0AB5 -:10BF20005BCE80E004C083E302C082E000C0C95958 -:10BF3000DF4F0FB6F894DEBF0FBECDBFDF91CF91BC -:10BF40001F910F91FF90EF90DF90CF90BF90AF9037 -:10BF50009F908F907F906F905F904F903F902F9029 -:10BF600008951F920F920FB60F9211240BB60F92E5 -:10BF70002F933F934F935F936F937F938F939F93F1 -:10BF8000AF93BF93EF93FF9380915314813069F087 -:10BF900080915114811109C0A4DB9FB7F89480915E -:10BFA00051148360809351149FBFFF91EF91BF9113 -:10BFB000AF919F918F917F916F915F914F913F9141 -:10BFC0002F910F900BBE0F900FBE0F901F901895E2 -:10BFD00089B180719091401496FD02C090E189274B -:10BFE000882319F011F087E0089580E008952F92DA -:10BFF0003F924F925F926F927F928F929F92AF92F9 -:10C00000BF92CF92DF92EF92FF920F931F93CF9345 -:10C01000DF93CDB7DEB768970FB6F894DEBF0FBEDB -:10C02000CDBF909152149111A6C1782E23E034E136 -:10C03000398B288B5901CE010D964C0100E010E0A0 -:10C04000C12CD12C7601A72DB0E0BD8BAC8B802FFD -:10C05000002321F0013021F094E003C091E001C001 -:10C0600092E0F40191934F012C893D8902C03595EE -:10C0700027958A95E2F720FF1BC020E030E040ECD6 -:10C080005FEBD50194966D917D918D919C919797E1 -:10C090000E94A777362E472E582E692EA7019601AB -:10C0A0000E944E7587FD04C0C32CD42CE52CF62CC1 -:10C0B0000F5F1F4FB4E0AB0EB11C0330110539F612 -:10C0C0008090461490904714A0904814B090491462 -:10C0D00084E0682E01E066E574E1CE0101960E94DD -:10C0E0001C5580914114E82FF0E0FF8BEE8BFE0190 -:10C0F000319622E534E13B8B2A8B1901CE010D9656 -:10C100002C0180E090E0188E10E0B701A601705875 -:10C110002C893D89082E02C0359527950A94E2F7AF -:10C1200020FF25C0A88DAF5FA88FD10114961D9266 -:10C130001D921D921C9217972E893F89082E02C0CE -:10C14000359527950A94E2F720FF03C0002319F0E4 -:10C1500007C0002329F0C082D182E282F38204C0AA -:10C160004083518362837383D2012C91122B0196F9 -:10C17000BFEF4B1A5B0A349624E0220E311C833049 -:10C18000910531F6388D632F70E080E090E00E94D9 -:10C19000EE750E9414789B01AC01C501B4010E94A8 -:10C1A000A7776B017C0110936F140E94023320E08B -:10C1B000B701A601CE0101960E946F340E94123B86 -:10C1C0000E9481470023E1F003DFFE013D9620E05D -:10C1D00030E090E06191462F412359F0AC01022EEE -:10C1E00002C0559547950A94E2F740FF02C060955A -:10C1F00016232F5F3F4F2330310561F710936F14E3 -:10C200000E94123B809101148473B1F0809101145B -:10C21000807321F066DA0E94F737ADC00111A6C025 -:10C22000D7DE8721B9F79FB7F894809101148B7FEF -:10C23000809301149FBF04C0812F877009F0C2CF83 -:10C240000E94C0440E94133380914A1490914B1471 -:10C250000E94EC3781E00827C9F020E030E040EA96 -:10C2600050E460914C1470914D1480914E14909153 -:10C270004F140E94A7776B017C018090421490902C -:10C280004314A0904414B090451410C0C0904C14B6 -:10C29000D0904D14E0904E14F0904F1480904614BE -:10C2A00090904714A0904814B09049146A9461107B -:10C2B00012CFE0904114F12C80904C1490904D14CA -:10C2C000A0904E14B0904F142401350177FA709469 -:10C2D00077F8709400E010E08C899D89002E02C0F0 -:10C2E000959587950A94E2F780FF2CC0C701002E30 -:10C2F00002C0959587950A94E2F7A889B98980FFCD -:10C3000011C094962D913D914D915C919797C501E7 -:10C31000B4010E947574E889F989208131814281D4 -:10C32000538106C02D913D914D915C91C301B201A5 -:10C330000E94A7770E947777EA89FB8964837583D7 -:10C34000868397830F5F1F4F2A893B892C5F3F4F5E -:10C350003B8B2A8B888999890496998B888B03302B -:10C36000110509F0B9CF0E94023305C08091011474 -:10C3700082FF59CF4FCF68960FB6F894DEBF0FBE3D -:10C38000CDBFDF91CF911F910F91FF90EF90DF9084 -:10C39000CF90BF90AF909F908F907F906F905F9065 -:10C3A0004F903F902F900895EBE6F0E080818F7ED4 -:10C3B0008083E8E6F0E080818E7F80830895549842 -:10C3C0005C9A8091401483FF0BC080916B00806168 -:10C3D00080936B008091680081608093680008956D -:10C3E000E3CF66E574E180EC94E10C941C55F8947D -:10C3F000F999FECF92BD81BD81E08FBB80B58627C4 -:10C40000482F082E000C550B262F30E0242335230F -:10C41000232B39F06F3F19F060BD84E006C084E142 -:10C4200004C0882321F060BD84E28FBBF99A789420 -:10C4300008959F92AF92BF92CF92DF92EF92FF92B8 -:10C440000F931F93CF93DF935C018A017B01E40E6E -:10C45000F51EEB01912C6C01C61AD70ACE018C0D8A -:10C460009D1DCE15DF0581F0911008C0292D990C76 -:10C47000330B232F221F2227221F01C021E06991A5 -:10C48000922E960EB4DFEACF692DC501800F911F61 -:10C49000DF91CF911F910F91FF90EF90DF90CF90A0 -:10C4A000BF90AF909F90A3CFF999FECF92BD81BD71 -:10C4B00081E08FBB80B508959F92AF92BF92CF92DB -:10C4C000DF92EF92FF920F931F93CF93DF935B0165 -:10C4D0008A017C01E40EF51EEC01912C6B01C81A57 -:10C4E000D90AC6018C0F9D1FCE15DF0581F0DCDF58 -:10C4F000911008C0292D990C330B232F221F2227BE -:10C50000221F01C021E0982E920E8993EACFC50127 -:10C51000800F911FC9DF21E030E0981611F020E074 -:10C5200030E0C901DF91CF911F910F91FF90EF9003 -:10C53000DF90CF90BF90AF909F9008955C98089542 -:10C54000CF93DF93CDB7DEB7CC56D1090FB6F894B1 -:10C55000DEBF0FBECDBF8091C00082608093C0005F -:10C560001092C50080E18093C4009091C100906159 -:10C570009093C1009091C10098609093C1009091F8 -:10C58000C10090689093C1009091C8009260909310 -:10C59000C8001092CD008093CC009091C9009061AA -:10C5A0009093C9009091C90098609093C9009091B0 -:10C5B000C90090689093C9009091D00092609093C8 -:10C5C000D0001092D5008093D4009091D10090615A -:10C5D0009093D1009091D10098609093D100909168 -:10C5E000D10090689093D100909130019260909327 -:10C5F00030011092350180933401809131018061C6 -:10C600008093310180913101886080933101809164 -:10C6100031018068809331010E94B95A869A879AC5 -:10C62000829A80910A01886080930A0180910A01B0 -:10C63000826080930A0180910701816080930701E5 -:10C64000809A819A579A80910701806180930701AF -:10C6500080910701886080930701809107018460C1 -:10C660008093070180910801806180930801809187 -:10C670000801877F8093080180910801846080937E -:10C6800008018091401482FF08C08A9A80910801B5 -:10C690008160809308015F9A07C08A9880910801A1 -:10C6A0008E7F809308015F98809181008F7E8093B8 -:10C6B000810080918100886080938100809180005A -:10C6C0008C7F80938000809180008F7080938000A9 -:10C6D00080916E00887F80936E0014BC15BC8091A1 -:10C6E0006E00816080936E0054985C9A80916D001A -:10C6F000806180936D008091680084608093680001 -:10C700008AE090E00E94EC370E949D2C399A3B9A77 -:10C71000419A439A80910101846080930101809144 -:10C7200001018068809301018091020184608093FF -:10C73000020180910201806880930201559A569A05 -:10C740005D9A5E9A0E94BF5306EC1EE081E090E085 -:10C750007C012FEFE21AF20AA7DED8018D938D013A -:10C76000C7018B3C9105A1F756E4C52E5EE0D52E9E -:10C7700087010F5F1F4FC70197DEF60181936F019D -:10C7800078010B34F1E01F0799F74CECE42E4DE0F3 -:10C79000F42E68012FEFC21AD20AC80185DED70134 -:10C7A0008D937D018601B5ECCB16B1E0DB0689F7F0 -:10C7B00020E030E04AE754E464E071E080E090E09B -:10C7C0000E94532E84E893E06FDE8093900D02E97F -:10C7D0001DE088E993E07C01EFEFEE1AFE0A64DECB -:10C7E000D8018D938D01C701BCE9EB16B3E0FB06C0 -:10C7F00091F706E91DE08EE893E07C01EFEFEE1A79 -:10C80000FE0A52DED8018D938D01C701B2E9EB1605 -:10C81000B3E0FB0691F70AE91DE082E89CE07C01A9 -:10C82000EFEFEE1AFE0A40DED8018D938D01C701AD -:10C83000B6E8EB16BCE0FB0691F7C0909A0DD090DD -:10C840009B0DE0909C0DF0909D0D20E030E044EBBE -:10C8500053E4C701B6010E946C77181644F0A70193 -:10C860009601C701B6010E945C78882341F01092BE -:10C870009A0D10929B0D10929C0D10929D0D09E443 -:10C880001DE08AEE93E07C01EFEFEE1AFE0A0CDE6B -:10C89000D8018D938D01C701B6EFEB16B3E0FB060F -:10C8A00091F760919A0D70919B0D80919C0D9091E4 -:10C8B0009D0DFE0131967F018F0124E045E00E942D -:10C8C000F971FF92EF928EE093E09F938F930E9415 -:10C8D0008B320F900F900F900F908091880D909158 -:10C8E000890D019711F40E940A2C0E949A2C0E9433 -:10C8F000892C0E94B72F0E94152C80917A0087689E -:10C9000080937A009B98A39A8FE08093C20D0E9437 -:10C91000C12E8EEB92E09F938F9380E293E09F93E2 -:10C920008F930E948B328CEC92E09F938F9383E3E2 -:10C9300093E09F938F930E948B3283ED92E09F93BD -:10C940008F9383E493E09F938F930E948B32809127 -:10C95000910D8F938091900D8F9382E593E09F933B -:10C960008F930E948B3283E693E00E94F6328EE131 -:10C97000E2E5F4E1DF011D928A95E9F781E0809319 -:10C9800052147894909140140FB6F894DEBF0FBE05 -:10C99000CDBF94FD809353149E01235C3F4F6F964F -:10C9A0003FAF2EAF6F971E0135E1230E311CCE0134 -:10C9B0008996A1969FAF8EAFA197DE011196A3969F -:10C9C000BFAFAEAFA39780916915809368158FE3D1 -:10C9D000E9EAF4E1DF011D928A95E9F76CEC74E174 -:10C9E00080E00E949F56811103C087E00E94555A43 -:10C9F0000C9A549A549A0E941A4A549A9FDDDFDC8A -:10CA000054985C9A0E9413330E94C0440E940233DF -:10CA1000E8DC1092521410920114109251141092EA -:10CA200054141092551480915314813099F484EE6B -:10CA300098E00E94E7328EEB98E00E94E73281E7AF -:10CA400098E00E94E732A4961FAEA497A5961FAE69 -:10CA5000A5973DC010925314F6CF8091060185FD35 -:10CA600020C00E94494D1092C70D809102018F7D18 -:10CA70008093020180919A0D90919B0DA0919C0D45 -:10CA8000B0919D0DB0588093940F9093950FA09303 -:10CA9000960FB093970F60E070E084EB92E40E94F1 -:10CAA000132F8091900F9091910FA091920FB091C0 -:10CAB000930F892B8A2B8B2B51F41092C70DE7E62D -:10CAC000F3E0FF93EF930E948B320F900F908091D1 -:10CAD000C70D8823E1F0C1CFE92FF0E0E851FB4E0C -:10CAE00080819F5F903809F490E0909368158F3FA4 -:10CAF00009F477C58A3091F08D3081F0A596BFADED -:10CB0000A597BB2309F439C5893209F42FC5909143 -:10CB10006815809169159813DFCF63C50AEA13E1A0 -:10CB2000A4963FADA497E32FF0E0E655FC4E1082AB -:10CB30000E94F73780915214811111C58AE0D1010A -:10CB40001D928A95E9F78091AA13843209F076C480 -:10CB500081E08DAF8091AB13833481F034F488236E -:10CB600051F0843209F06FC209C0873439F088353A -:10CB700009F069C203C086E796E054C39091AC13F4 -:10CB800091114EC4833409F42DC21CF4843241F057 -:10CB90004DC4873409F46AC1883509F440C246C4DB -:10CBA00080915314887109F03DC482E796E00E9499 -:10CBB000E732809133140E94D93289E596E00E94D1 -:10CBC000E732809136140E94D9328BE396E00E94BE -:10CBD000E732809134140E94D93282E296E00E94BA -:10CBE000E732809134140E94E4328BE196E00E9497 -:10CBF000E732809135140E94D93283E096E00E949A -:10CC0000E732809135140E94E4328CEF95E00E9467 -:10CC1000E7328091401482FB882780F90E94D93244 -:10CC20008BED95E00E94E7328091401486FB8827C7 -:10CC300080F90E94D9328BEB95E00E94E732809117 -:10CC40004014881F8827881F0E94D9328BE995E0FD -:10CC50000E94E732809137140E94D93285E895E02E -:10CC60000E94E732809137140E94E4328DE795E00C -:10CC70000E94E732609138147091391480913A140F -:10CC800090913B140E94BB328DE595E00E94E73203 -:10CC900060913C1470913D1480913E1490913F142A -:10CCA0000E94BB3282E495E00E94E73280914014FA -:10CCB00081700E94D93285E295E00E94E73280912E -:10CCC000401485FB882780F90E94D9328AE095E0DC -:10CCD0000E94E7328091401483FB882780F90E94EC -:10CCE000D9328FEE94E00E94E73280914014829511 -:10CCF00081700E94D93283ED94E00E94E7328091E6 -:10CD000041140E94D93289EB94E00E94E73280916D -:10CD100041140E94E43281EB94E00E94E73260917A -:10CD200042147091431480914414909145140E94D0 -:10CD3000BB3284E994E00E94E7326091461470911E -:10CD4000471480914814909149140E94BB3287E7A0 -:10CD500094E00E94E73280914A140E94D93288E51B -:10CD600094E00E94E73260914C1470914D148091D0 -:10CD70004E1490914F140E94BB328FE394E00E94B6 -:10CD8000E73210E034E6D32E23E0E22E24E1F22E47 -:10CD900000E08DE394E00E94E732802F8D0D0E9429 -:10CDA000D9328BE394E00E94E732123091F01330D5 -:10CDB000E1F0113031F0F70160817181828193815E -:10CDC0001CC0D7011C966D917D918D919C911F97F0 -:10CDD00014C020E030E041E655E4F701608D718D2C -:10CDE000828D938D0E94557508C0F70184A195A18D -:10CDF000A6A1B7A1BC01CD0190580E94BB3288E327 -:10CE000094E00E94E732013029F0023031F086E3ED -:10CE100094E005C084E394E002C082E394E00E94C1 -:10CE2000E732123051F0133059F0113019F088E226 -:10CE300094E008C086E194E005C085E094E002C07B -:10CE400085EF93E00E94E73281EF93E00E94E732A2 -:10CE50000F5FF4E0EF0EF11C033009F09ACF2AE0E7 -:10CE6000D20E1F5F3CE8D3128FCFE0C28FEE93E06B -:10CE70000E94E7328091A914823091F038F488231F -:10CE800061F08130A9F489EE93E00CC0833069F041 -:10CE9000883071F48FED93E005C08CEE93E002C012 -:10CEA00086EE93E00E94E7320CC083EE93E0FACF67 -:10CEB0008AED93E00E94E7328091A91482500E948B -:10CEC000D93287ED93E00E94E7328091AF148A5CFB -:10CED0000E94D9328091AD14813049F028F082301F -:10CEE00051F488EC93E005C082ED93E002C08DEC34 -:10CEF00093E00E94E7328091AB14811103C083EC70 -:10CF000093E002C08EEB93E00E94E7328091AC1474 -:10CF1000811103C089EB93E002C084EB93E00E948F -:10CF2000E7328091AA14813019F48FEA93E002C0AD -:10CF30008AEA93E00E94E7328091B014813049F090 -:10CF400028F0823051F48EE993E005C086EA93E040 -:10CF500002C082EA93E00E94E7328091B2148130ED -:10CF600031F040F0823051F486E993E005C08AE95F -:10CF700093E002C082E993E00E94E7328091B1140D -:10CF8000882329F0823039F48AE893E002C08EE8E1 -:10CF900093E00E94E73287E893E00E94E7328091B5 -:10CFA000BB140E94D93284E893E00E94E73260917A -:10CFB000B7147091B8148091B9149091BA140E946A -:10CFC000BD3281E893E00E94E7326091B314709122 -:10CFD000B4148091B5149091B6140E94BD328DE7BF -:10CFE00093E020C180915314823049F40E94715B18 -:10CFF00084EE98E00E94E7328BE998E00BC0811143 -:10D0000011C282E08093531484EE98E00E94E732CC -:10D0100084EA98E00E94E73281E798E003C18091BA -:10D020005314813009F002C284EE98E00E94E73286 -:10D030008CEA98E00E94E73281E798E00E94E732AC -:10D0400010925314F3C190915314923008F0EAC136 -:10D05000893409F4C5C034F4833259F0883409F4B2 -:10D0600080C064C18E3409F436C1823509F4F9C038 -:10D070005DC182E08DAF8091AC138111D1C110E010 -:10D08000BE016F5F7F4F812F0E949F56811104C0A8 -:10D0900087E00E94555ACAC18AE793E00E94E732AE -:10D0A000163029F0173041F484E793E002C087E797 -:10D0B00093E00E94E73204C086E3810F0E94D932D8 -:10D0C00082E793E00E94E732CE0101967C0100E006 -:10D0D000D7016D917D918D919D917D010E94CB3203 -:10D0E000023019F080E793E002C08CE693E00E94E2 -:10D0F000E7320F5F033061F71F5F183009F686E6ED -:10D1000093E00E94E73298EDE92E94E1F92E10E0C9 -:10D11000F70161917191819191917F010E94CB32D0 -:10D12000123019F084E693E002C080E693E00E949A -:10D13000E7321F5F133061F78AE593E00E94E73220 -:10D140006091E4147091E5148091E6149091E714D5 -:10D150000E94CB3286E593E00E94E7320E941E5B7C -:10D1600065C18091401484FF59C184E080935314B9 -:10D170001BD984E00E94F75F83E00E94F75F0E9462 -:10D18000F73780915214811102C02BD918D98091A0 -:10D19000521481114BC1109253140E94894410E023 -:10D1A000812F0E941C4C811102C087E013C0809126 -:10D1B000AA13882389F08AEA93E10E94F6328AEA68 -:10D1C00093E10E948F05811105C085ED9AE00E94D0 -:10D1D000E73202C00E94555A1F5F123009F726C17C -:10D1E00082E08DAF8091AC1381111FC040E550E00B -:10D1F0006EEA7BE08AEA93E15FD9892B49F41092C9 -:10D20000AA1340E550E06AEA73E18EEA9BE011D987 -:10D2100086E493E00E94E7328AEA93E10E94F632C4 -:10D2200082E493E00E94E73201C193E09DAF8D3329 -:10D2300009F0F6C083E0282F30E0F901E655FC4EF6 -:10D240009081D901A955BC4E9C938F5F908191111B -:10D25000F2CF8DAF40E550E06AEA73E18EEA9BE0E1 -:10D26000ABC082E08DAF8091AC13833509F0D8C09C -:10D2700083E08DAF8091AD13843509F0D1C084E097 -:10D280008DAF8091AE138D3309F0CAC08091B01379 -:10D290008111C6C085E08DAF8091AF13843239F023 -:10D2A0008A3239F0833209F0BBC082E003C081E0EA -:10D2B00001C08FEF0E94BF5684EE98E00E94E732D3 -:10D2C00085E798E00E94E73281E798E00E94E73224 -:10D2D0000E94715BABC082E08DAF8091AC13811175 -:10D2E00021C010E0812F0E941C4C811104C087E0F6 -:10D2F0000E94555A13C08FE393E00E94E732812FBA -:10D300000E94D9328DE393E00E94E7328AEA93E1EA -:10D310000E94F6328AE393E00E94E7321F5F1230E8 -:10D3200009F784C091117EC011E001C010E0AE0188 -:10D33000475D5F4FBE01635C7F4F8AEA93E10E94C5 -:10D34000303A811102C082E076C0EDAD81E08E0FEF -:10D350008DAFF0E0E655FC4E90819D3309F060C042 -:10D36000112361F1482F50E0282F30E0D901A65554 -:10D37000BC4E9C91241B350BF901E655FC4E908365 -:10D380008F5F9C919111F0CF8DAF8AEA93E10E945B -:10D390008F05811149C069A57AA58BA59CA50E941E -:10D3A00055780E94C275F1E56F9FC001112440E5D8 -:10D3B00050E06AEA73E1955F3CD838C0AE014F5F38 -:10D3C0005F4FBE01635C7F4F8AEA93E10E94303A6F -:10D3D000882309F4B8CFEDADF0E0E655FC4E80812E -:10D3E00081111EC089A49AA4ABA4BCA420E030E0A3 -:10D3F0004FE753E4C501B4010E946C77181684F01E -:10D40000C980DA80EB80FC80C501B4010E94C2753E -:10D41000862FB701A6010E94935506C085E00BC078 -:10D4200083E009C088E007C0811105C085ED9AE05E -:10D430000E94E73294C00E94555A91C08332D1F4C1 -:10D440003F922F928FE793E09F938F931F930F93B9 -:10D450000E944679F10101900020E9F7BF016219AD -:10D46000730966557C4E0F900F900F900F900F90A0 -:10D470000F900BC0873439F08D3429F0803519F0C6 -:10D48000833509F06CC06AEA73E1DB018C91803569 -:10D4900011F0833509F58DED9CE00E9411798D899D -:10D4A000882391F03F922F9287E893E09F938F9388 -:10D4B00081E19DE09F938F930E9418790F900F90C8 -:10D4C0000F900F900F900F9082E3EAEAF3E1DF01F3 -:10D4D0001D928A95E9F743C08091DC04843148F0BD -:10D4E0008BE893E09F938F930E948B320F900F9065 -:10D4F00036C00091DA04B6E6B09F80011124C8015D -:10D500008C519B4F0E9411798D89882391F03F9215 -:10D510002F9287E893E09F938F93085E1A4F1F9393 -:10D520000F930E9418790F900F900F900F900F900B -:10D530000F9082E3EAEAF3E1DF011D928A95E9F7B1 -:10D540008091DA04833120F48F5F8093DA0402C083 -:10D550001092DA048091DC048F5F8093DC04A4963F -:10D560001FAEA497A5961FAEA5973BC0B13009F09A -:10D57000CECAA5961FAEA597CACA813208F4C7CAFB -:10D580008F3209F4C4CA883211F18B3329F1A49681 -:10D59000EFADA497EF3438F08BE00E94555AA49673 -:10D5A0001FAEA497B4CAA496FFADA4972F2F30E066 -:10D5B0004F2F4F5F9FE9980FF901E655FC4E9A31C6 -:10D5C00008F480528083A4964FAFA497A0CA21E0AC -:10D5D000A5962FAFA5979BCA32E0A5963FAFA5971A -:10D5E00096CA8091DD0C882399F08DED9CE00E9415 -:10D5F0008F0580930F0D61E17DE00E94A52B81E0F6 -:10D600008093100D82E3ADEDBCE01D928A95E9F7A1 -:10D610008091C30D81113FC08091DC048823D9F132 -:10D620008091C80D8823B9F18091C90D882399F1A3 -:10D630000091DB04B6E6B09F800111240C511B4F12 -:10D64000C8010E948F05F80182ABF090DB04F6E67A -:10D65000FF9D80011124B801685E7A4F0C511B4F69 -:10D66000D801D2968C910E94A52B81E0F80183AB62 -:10D6700082E3D8011D928A95E9F7B2E1BF1520F047 -:10D68000F394F092DB0402C01092DB048091DC047E -:10D6900081508093DC048091880D9091890D8130B8 -:10D6A000910571F068F08230910569F0039789F572 -:10D6B000A59882E390E00E94EC3782E090E025C0DC -:10D6C0001092DD0426C08091DD048F5F8093DD041D -:10D6D000A59A80910301887739F01092DD049C9A15 -:10D6E0009D9AA498A59A0AC082E390E00E94EC3724 -:10D6F0008091DD048A3038F01092DD041092890D9B -:10D700001092880D06C083E090E09093890D80937D -:10D71000880D0E94645B0E94F7378091521481113A -:10D7200052C98091100D882369F081E19DE00E942B -:10D73000F63282E3E1E1FDE0DF011D928A95E9F72F -:10D740001092100D80915314882309F4E6C0809143 -:10D75000C40D882309F41AC11092C40D6D961CAE35 -:10D760001DAE1EAE1FAE6D9769961CAE1DAE1EAEF1 -:10D770001FAE699765961CAE1DAE1EAE1FAE6597B7 -:10D7800084E16F96EEADFFAD6F97282F11922A9529 -:10D79000E9F7A196AEADBFADA197E82F1D92EA952E -:10D7A000E9F7D101E82F1D92EA95E9F7A396AEAD0E -:10D7B000BFADA3971D928A95E9F780E090E00E94A3 -:10D7C0003B54A9966CAF7DAF8EAF9FAFA99781E018 -:10D7D00090E00E943B54AD966CAF7DAF8EAF9FAF93 -:10D7E000AD9782E090E00E943B546B017C0120E009 -:10D7F00030E040E05FE360910002709101028091AF -:10D800000202909103020E94747420E030E040E034 -:10D810005FE30E94A77720E030E044E353E40E94F6 -:10D82000A7779B01AC0160E070E084E393E40E9481 -:10D8300074742B013C0120E030E044EB52E4C7015A -:10D84000B6010E947474FE01EF5AFF4F4F019E0112 -:10D850002B5A3F4F5901DE01A75ABF4F6D017B0183 -:10D860008C01AD962CAD3DAD4EAD5FADAD97A9969B -:10D870006CAD7DAD8EAD9FADA9970E94AF51A40157 -:10D88000B501C6010E94504F6D966CAD7DAD8EAD59 -:10D890009FAD6D978E01035C1F4F24E045E0A9D535 -:10D8A00069966CAD7DAD8EAD9FAD69970451110940 -:10D8B00024E045E09ED565966CAD7DAD8EAD9FAD07 -:10D8C0006597810124E045E094D58E010F5F1F4FDD -:10D8D00024E045E0C301B2018CD51F930F933F9222 -:10D8E0002F92A196FFADA197FF93A0962FADA09781 -:10D8F0002F936F963FAD6F973F936E968FAD6E9758 -:10D900008F938DE993E09F938F930E948B320FB694 -:10D91000F894DEBF0FBECDBF39C08091C80D8823FB -:10D9200009F415CF8091C90D882309F410CF04E1C3 -:10D9300010E082E3B82EA090DC0CB6E6BA9DC001E0 -:10D940001124FC01EC51FB4F7F0123A9222309F490 -:10D95000FECE9C01285E3A4F6901C9010E94F63251 -:10D96000D601EB2D1D92EA95E9F7D701D3961C92CB -:10D97000B2E1BA1528F081E08A0D8093DC0C02C078 -:10D980001092DC0C01501109B1F6E1CE82B301E036 -:10D9900083FB882780F980279091E3048917D9F0C9 -:10D9A0008AE090E00E94EC3712B313FB112710F9C4 -:10D9B00010278091E304181771F01F921F9381EBD9 -:10D9C00093E09F938F930E948B321093E3040F9008 -:10D9D0000F900F900F908091DF049091E004A09140 -:10D9E000E104B091E2048F3F9105A105B10509F072 -:10D9F00060F40196A11DB11D8093DF049093E004B3 -:10DA0000A093E104B093E20424C01092DF041092CA -:10DA1000E0041092E1041092E2048BE30E94C04CF7 -:10DA200011E08536910508F410E08091DE041817A6 -:10DA300081F01F921F938CEB93E09F938F930E9432 -:10DA40008B321093DE041093CA0D0F900F900F903D -:10DA50000F9080915314811112C08091C50D8823BD -:10DA600071F08091C60D882351F084EC93E09F9370 -:10DA70008F930E948B321092C60D0F900F90809161 -:10DA8000CB0D882309F423C880915314811128C138 -:10DA90008091C20D8F3009F023C18091CA0D882377 -:10DAA00009F41EC18091430D9091440D9C012F5F9C -:10DAB0003F4F3093440D2093430D45970CF407C816 -:10DAC00021961CAE1DAE1EAE1FAE219719A61AA63A -:10DAD0001BA61CA61D8A1E8A1F8A188EE090BE0DEA -:10DAE000F090BF0D0091C00D1091C10D2091BA0DA5 -:10DAF0003091BB0D4091BC0D5091BD0D6091B60DA4 -:10DB00007091B70D8091B80D9091B90D4101FE0152 -:10DB1000B9965F01DE01DD966D010E94F94F80E04C -:10DB200090E00E943B544B015C0181E090E00E9438 -:10DB30003B546B017C0182E090E00E943B542B013E -:10DB40003C01A501940121966CAD7DAD8EAD9FADDC -:10DB50002197CAD69F7720E030E040E05FE30E9443 -:10DB60006C7718163CF1A701960169A57AA58BA5DB -:10DB70009CA5BAD69F7720E030E040E05FE30E94AA -:10DB80006C771816BCF0A30192016D897E898F898C -:10DB9000988DAAD620E030E044EB52E4A6D69F77D9 -:10DBA00020E030E040E05FE30E946C77181614F04C -:10DBB0000C9467658EE1E2E5F4E1DF011D928A9540 -:10DBC000E9F70E9402330E94F16180929E0D9092CB -:10DBD0009F0DA092A00DB092A10DC092A20DD09267 -:10DBE000A30DE092A40DF092A50D4092A60D5092C7 -:10DBF000A70D6092A80D7092A90D80915614909176 -:10DC00005714A0915814B09159148093AA0D909371 -:10DC1000AB0DA093AC0DB093AD0D80915A149091C3 -:10DC20005B14A0915C14B0915D148093AE0D909341 -:10DC3000AF0DA093B00DB093B10D80915E14909193 -:10DC40005F14A0916014B09161148093B20D909311 -:10DC5000B30DA093B40DB093B50D8CE0A396EEADCB -:10DC6000FFADA39711928A95E9F78091B60D909137 -:10DC7000B70DA091B80DB091B90D89839A83AB838C -:10DC8000BC838091BA0D9091BB0DA091BC0DB09159 -:10DC9000BD0D8D839E83AF83B8878091BE0D90911B -:10DCA000BF0DA091C00DB091C10D89879A87AB8738 -:10DCB000BC87AE01475F5F4FBE016B5F7F4FCE01F8 -:10DCC00001960E94504F00E020E030E048E452E42A -:10DCD000BE016F5F7F4F80E00E949B5B0C94676585 -:10DCE0001092440D1092430D0C946765CF930E94DF -:10DCF000645BC9E20E94F73780915214811111C010 -:10DD00008091AA129091AB12981739F0C89FC00168 -:10DD100011248853904F892B69F7809153148830D0 -:10DD200049F3CF910895CF9320919D1430919E1483 -:10DD300040919F145091A0146091C0147091C1142F -:10DD40008091C2149091C314A9D6811126C020914C -:10DD5000A1143091A2144091A3145091A414609185 -:10DD6000C4147091C5148091C6149091C71496D6AE -:10DD7000811113C0C1E02091A5143091A6144091E7 -:10DD8000A7145091A8146091C8147091C91480917F -:10DD9000CA149091CB1482D68111C0E08C2FCF9100 -:10DDA0000895CF92DF92EF92FF920F93CF93DF937C -:10DDB00030915314323009F482C0C02FD22F042F77 -:10DDC0006B017C0193DF10926E14109250148091BD -:10DDD000401487FD03C080E180935014DD2331F0AF -:10DDE0009091501480E189278093501489B18071FB -:10DDF00090915014891751F09FB7F8948091511465 -:10DE00008061809351149FBF0E94F7378091521414 -:10DE1000811155C0A70196016DE974E181E00E946E -:10DE20009B5B81E0809302149FB7F894809101146A -:10DE30008260809301149FBF0E94F7378091521433 -:10DE400081113DC0809153148111F6CF809102144D -:10DE50008130A9F4CC2351F08CE0E6E5F4E1A2E6B0 -:10DE6000B4E101900D928A95E1F70CC09FB7F89448 -:10DE7000809151148061809351149FBF03C081E051 -:10DE800080936E14109202140E94F73780915214FE -:10DE9000811115C00E94C0440E9413330E940233B6 -:10DEA00066E574E18DE994E10E941C55DF91CF9104 -:10DEB0000F91FF90EF90DF90CF900C941E5BDF915D -:10DEC000CF910F91FF90EF90DF90CF9008952F9218 -:10DED0003F924F925F926F927F928F929F92AF92FA -:10DEE000BF92CF92DF92EF92FF920F931F93CF9347 -:10DEF000DF93CDB7DEB7E1970FB6F894DEBF0FBE64 -:10DF0000CDBF6D837E838F8398872F87388B498B16 -:10DF10005A8B0D8BAD868B8A24E0E29E8001112402 -:10DF2000C80180549B4E9F8B8E8BD801A158BB4E4D -:10DF3000B98FA88F8D909D90AD90BC90FC012081F1 -:10DF4000318142815381C501B401CFD46A8F7B8F67 -:10DF50008C8F9D8FF4E0CF9E1001112491012054ED -:10DF60003B4E3F8F2E8FC10181589B4E99A388A3B2 -:10DF7000DC01CD90DD90ED90FC90F90120813181A4 -:10DF800042815381C701B601B0D46AA37BA38CA39D -:10DF90009DA32401350177FA709477F87094D70126 -:10DFA000C601B05889839A83AB83BC83F801E356DA -:10DFB000FB4E2A8D3B8D4C8D5D8D60817181828100 -:10DFC000938192D44B015C01F101E356FB4E2AA1EF -:10DFD0003BA14CA15DA1608171818281938184D438 -:10DFE0006B017C01A5019401C301B201B0D769871F -:10DFF0007A878B879C87A701960169817A818B81BB -:10E000009C81A5D79B01AC0169857A858B859C8510 -:10E010006CD469877A878B879C87A7019601C30197 -:10E02000B20195D76B017C01A501940169817A81C8 -:10E030008B819C818CD79B01AC01C701B60154D464 -:10E0400029853A854B855C85C3D46B017C019B890E -:10E05000992389F02DEB37E346E055EBC701B60174 -:10E060003BD787FD1AC02BED3FE049EC50E4C701D8 -:10E07000B6013AD410C02DEB37E346E055E3C701B3 -:10E08000B6010CD518164CF02BED3FE049EC50E4EE -:10E09000C701B6012AD46B017C0180903C1490909A -:10E0A0003D14A0903E14B0903F142D813E814F81CD -:10E0B0005885CA01B90119D4A501940115D4A50147 -:10E0C000940145D7B1D74B015C0120E030E040E03E -:10E0D0005FE3C701B6013BD72D813E814F81588553 -:10E0E00036D79F77A5019401E0D4B5D54BD57C8B6D -:10E0F0006B8BDB01AB2B09F459C14B01A12CB12C6B -:10E10000BD89BB2371F0C501B40168D59B01AC0189 -:10E110006F85788989899A891AD76F87788B898BD7 -:10E120009A8BC501B4015AD54B015C019B01AC012E -:10E13000C701B601BAD46D837E838F839887FD852E -:10E14000E4E0FE9FC00111249C0120543B4E3E8719 -:10E150002D87FC01E356FB4ED9012D913D914D9148 -:10E160005C916081718182819381BED3A50194010C -:10E170009CD46EA77FA788AB99AB2D813E814F8140 -:10E180005885CA01B901E3D69B01AC0160E070E09B -:10E1900080E090E4A9D36B017C012BEA3AEA4AE2E1 -:10E1A0005EE36D817E818F819885D1D64B015C01C4 -:10E1B00020E030E040E850E4C701B60196D39B016F -:10E1C000AC01C501B401C3D669877A878B879C8768 -:10E1D00020E030E040E05FE3C701B601B8D66EA3AF -:10E1E0007FA388A799A710E022242394312CEB89E0 -:10E1F000FC89E215F30509F4D9C01C3008F03AC0D7 -:10E2000029813A814B815C816EA17FA188A599A566 -:10E210009ED66B017C01A301920169857A858B856D -:10E220009C8595D6A701960160D37B01082FD92E36 -:10E23000A30192016EA17FA188A599A588D64B0163 -:10E240005C0129813A814B815C8169857A858B8566 -:10E250009C857DD69B01AC01C501B40145D32B0142 -:10E260003C011F5FC701A02FBD2D89839A83AB831B -:10E27000BC835BC0B10180E090E0B0D42D813E81D1 -:10E280004F81588564D66B017C010CD469837A83F5 -:10E290008B839C83C701B601BDD64B015C01E88D21 -:10E2A000F98DC080D180E280F380F7FAF094F7F81E -:10E2B000F094A8A1B9A18D919D910D90BC91A02D34 -:10E2C0008AA79BA7ACA7BDA7A701960169817A8100 -:10E2D0008B819C813CD62B013C012AA53BA54CA5FA -:10E2E0005DA5C501B40133D69B01AC01C301B201E8 -:10E2F000FCD22B013C01A7019601C501B40127D630 -:10E300006B017C012AA53BA54CA55DA569817A819D -:10E310008B819C811CD69B01AC01C701B601E4D264 -:10E3200069837A838B839C8310E0A30192016A8DB9 -:10E330007B8D8C8D9D8DD9D2EE89FF896083718311 -:10E340008283938329813A814B815C816AA17BA17D -:10E350008CA19DA1CAD2AE8DBF8D6D937D938D93FF -:10E360009C9313972EA53FA548A959A9ED85FE8535 -:10E370006081718182819381B8D2AD85BE856D93B4 -:10E380007D938D939C9313970D892F8538894989A7 -:10E390005A8960EC74E181E00E949B5B8091521489 -:10E3A00081110EC0BFEF2B1A3B0A21CF0D892F859B -:10E3B000388949895A896DE974E181E00E949B5B43 -:10E3C000E1960FB6F894DEBF0FBECDBFDF91CF91BF -:10E3D0001F910F91FF90EF90DF90CF90BF90AF9083 -:10E3E0009F908F907F906F905F904F903F902F9075 -:10E3F0000895EF920F931F93CF93DF93E80147FDAA -:10E4000002C034E001C034E1042E000C550B57FF6C -:10E4100003C0519541955109E32E022F242FAE01DF -:10E4200007D0CE01DF91CF911F910F91EF9008950A -:10E430008F929F92AF92BF92CF92DF92EF92FF9214 -:10E440000F931F93CF93DF93CDB7DEB729970FB606 -:10E45000F894DEBF0FBECDBF6A01122FB02E2BE3A2 -:10E46000201720F0FF24F394F00E02C02CE3F22ECC -:10E470000F2D27E0AE014F5F5F4F50D1BC014981A6 -:10E48000842F8970813031F0E1FC06C0E0FE06C0C7 -:10E4900090E205C09DE203C09BE201C090E05E2DCA -:10E4A000507143FF3CC0911102C083E001C084E081 -:10E4B000811718F4212F281B01C020E051110BC037 -:10E4C000F601822F30E2882319F031938150FBCF7F -:10E4D000C20ED11C20E0992329F0D6019C93F601AD -:10E4E00031966F01C6010396E2FE0AC03EE4D601F2 -:10E4F0003C9341E411964C93119712963C9306C0BD -:10E500003EE6F601308341E641833283FC01322F3F -:10E5100040E2332309F442C041933150FACF42FF25 -:10E5200044C0911102C083E001C084E0811718F457 -:10E53000212F281B01C020E051110BC0F601822FB2 -:10E5400030E2882319F031938150FBCFC20ED11CE9 -:10E5500020E0992329F0D6019C93F60131966F01B2 -:10E56000C6010396E2FE0BC039E4D6013C933EE4BB -:10E5700011963C93119736E412963C9307C039E606 -:10E58000F60130833EE6318336E63283FC01322FDA -:10E5900040E2332319F041933150FBCFFC01E20FED -:10E5A000F11D10828EEF9FEFA6C021E030E09111A7 -:10E5B00002C020E030E0161617061CF4FB0131966D -:10E5C00002C0E1E0F0E02E0F3F1FBB2021F0EB2D59 -:10E5D000F0E0319602C0E0E0F0E02E0F3F1FE12FA7 -:10E5E000F0E02E173F071CF4121B212F01C020E082 -:10E5F0008E2D887159F4F601822F30E2882319F0AC -:10E6000031938150FBCFC20ED11C20E0992329F019 -:10E61000D6019C93F60131966F0151110BC0F601A2 -:10E62000822F90E3882319F091938150FBCFC20E83 -:10E63000D11C20E00F2D060F9A81342F307144FF3A -:10E6400003C0913309F40150101624F4093018F076 -:10E6500008E001C001E0AB0177FF02C040E050E0FC -:10E66000FB01E41BF50BA1E0B0E0AC0FBD1FEA0F0E -:10E67000FB1F8EE2A82E4B01801A91080B2D10E093 -:10E680001195019511094F3FBFEF5B0721F4D601AA -:10E69000AC9211966D01641775072CF084169506DF -:10E6A00014F4818101C080E3415051093196D601B3 -:10E6B00011967D014017510724F0D6018C93670114 -:10E6C000E2CF6417750739F4963320F4953319F4C3 -:10E6D000311101C081E3F6018083F701822F90E2BE -:10E6E000882319F091938150FBCFF701E20FF11DC0 -:10E6F000108280E090E029960FB6F894DEBF0FBE3E -:10E70000CDBFDF91CF911F910F91FF90EF90DF90E0 -:10E71000CF90BF90AF909F908F900895283008F0D1 -:10E7200027E03327DA01990F311D87FD91600096AC -:10E730006105710539F432602E5F3D9330E32A950F -:10E74000E1F708959F3F30F080387105610509F0C9 -:10E750003C5F3C5F3D93913008F08068911DDF93F2 -:10E76000CF931F930F93FF92EF92192F987F969557 -:10E77000E92F96959695E90FFF27EC58FD4F9927BD -:10E780003327EE24FF24A701E7010590089407949E -:10E7900028F4360FE71EF81E491F511D660F771F1C -:10E7A000881F991F0694A1F70590079428F4E70E97 -:10E7B000F81E491F561FC11D770F881F991F661F1E -:10E7C0000694A1F70590079428F4F80E491F561FE8 -:10E7D000C71FD11D880F991F661F771F0694A1F7C9 -:10E7E0000590079420F4490F561FC71FD81F990F93 -:10E7F000661F771F881F0694A9F7849110951770DC -:10E8000041F0D695C79557954795F794E7941A9593 -:10E81000C1F7EAE1F2E068941590159135916591A0 -:10E82000959105907FE27395E118F10A430B560B21 -:10E83000C90BD009C0F7E10CF11E431F561FC91FB9 -:10E84000D01D7EF4703311F48A95E6CFE894015020 -:10E8500030F0080F0AF40027021708F4202F239540 -:10E86000022F7A3328F079E37D932A95E9F710C0D7 -:10E870007D932A9589F60694979567953795179510 -:10E880001794E118F10A430B560BC90BD00998F005 -:10E8900023957E9173957A3308F070E37C9320136F -:10E8A000B8F77E9170617D9330F0839571E37D932D -:10E8B00070E32A95E1F71124EF90FF900F911F91DB -:10E8C000CF91DF91992787FD909508959F939F772A -:10E8D000D5D10F9000203AF49058A2EA2AED3FE0FB -:10E8E00049E450E413D096C25058BB27AA270ED053 -:10E8F00091C25AD230F05FD220F031F49F3F11F430 -:10E900001EF42AC20EF4E095E7FBF7C1E92FA4D26A -:10E9100080F3BA17620773078407950718F071F43C -:10E920009EF5D3C20EF4E0950B2EBA2FA02D0B014D -:10E93000B90190010C01CA01A0011124FF27591B44 -:10E9400099F0593F50F4503E68F11A16F040A22F4A -:10E95000232F342F4427585FF3CF469537952795BB -:10E96000A795F0405395C9F77EF41F16BA0B620BBA -:10E97000730B840BBAF09150A1F0FF0FBB1F661F01 -:10E98000771F881FC2F70EC0BA0F621F731F841F44 -:10E9900048F4879577956795B795F7959E3F08F06A -:10E9A000B3CF9395880F08F09927EE0F9795879529 -:10E9B0000895FAD158F080E891E009F49EEFFBD178 -:10E9C00028F040E851E059F45EEF09C0C5C17DC2AE -:10E9D000E92FE07841D268F3092E052AC1F3261702 -:10E9E00037074807590738F00E2E07F8E02569F079 -:10E9F000E025E0640AC0EF6307F8009407FADB0142 -:10EA0000B9019D01DC01CA01AD01EF935DD002D2D5 -:10EA10000AD05F91552331F02BED3FE049E450FDE2 -:10EA200049EC63CF0895DF93DD27B92FBF7740E826 -:10EA30005FE31616170648075B0710F4D92F50D26C -:10EA40009F938F937F936F932DD3E6EAF1E087D165 -:10EA5000E1D12F913F914F915F9185D2DD2349F014 -:10EA60009058A2EA2AED3FE049EC5FE3D0785D27B9 -:10EA70004DDFDF91CFC112D280F09F3740F491116A -:10EA80000EF424C260E070E080E89FE3089526F071 -:10EA90001B16611D711D811D36C150C10AD108F4BC -:10EAA00081E0089590D1E395C6C10CD0B3C183D164 -:10EAB00040F07AD130F021F45F3F19F01EC15111BE -:10EAC00005C24AC1C9D198F39923C9F35523B1F3BB -:10EAD000951B550BBB27AA2762177307840738F0CD -:10EAE0009F5F5F4F220F331F441FAA1FA9F333D02C -:10EAF0000E2E3AF0E0E830D091505040E695001CE0 -:10EB0000CAF729D0FE2F27D0660F771F881FBB1F9B -:10EB1000261737074807AB07B0E809F0BB0B802D75 -:10EB2000BF01FF2793585F4F2AF09E3F510568F0C1 -:10EB3000E4C0CCC15F3FECF3983EDCF3869577955B -:10EB40006795B795F7959F5FC9F7880F911D9695C3 -:10EB5000879597F90895E1E0660F771F881FBB1F1F -:10EB6000621773078407BA0720F0621B730B840BCC -:10EB7000BA0BEE1F88F7E095089504D06894B111A0 -:10EB8000A5C1089571D188F09F5790F0B92F9927AA -:10EB9000B751A0F0D1F0660F771F881F991F1AF0A8 -:10EBA000BA95C9F712C0B13081F08FD1B1E00895A4 -:10EBB0008CC1672F782F8827B85F39F0B93FCCF325 -:10EBC000869577956795B395D9F73EF4909580959E -:10EBD000709561957F4F8F4F9F4F0895E89409C0BE -:10EBE00097FB3EF490958095709561957F4F8F4F80 -:10EBF0009F4F9923A9F0F92F96E9BB279395F69596 -:10EC0000879577956795B795F111F8CFFAF4BB0F13 -:10EC100011F460FF1BC06F5F7F4F8F4F9F4F16C077 -:10EC2000882311F096E911C0772321F09EE8872F01 -:10EC3000762F05C0662371F096E8862F70E060E0BD -:10EC40002AF09A95660F771F881FDAF7880F969536 -:10EC5000879597F9089522D180F09F3740F491115C -:10EC60000EF034C160E070E080E89FEB089526F478 -:10EC70001B16611D711D811D46C060C0DF93CF93BF -:10EC80001F930F938B01EC01E3EDF1E068D0C2D04C -:10EC90009801AE018B01EC0160E070E080E89FE339 -:10ECA00023DEC2D19801AE010F911F91CF91DF9168 -:10ECB0005AC1990F0008550FAA0BE0E8FEEF16168F -:10ECC0001706E807F907C0F012161306E407F50760 -:10ECD00098F0621B730B840B950B39F40A2661F0D4 -:10ECE000232B242B252B21F408950A2609F4A14077 -:10ECF000A6958FEF811D811D089597F99F6780E884 -:10ED000070E060E00895882371F4772321F0985033 -:10ED1000872B762F07C0662311F499270DC09051D9 -:10ED2000862B70E060E02AF09A95660F771F881FA7 -:10ED3000DAF7880F9695879597F908959F3F31F0F8 -:10ED4000915020F4879577956795B795880F911D19 -:10ED50009695879597F908959FEF80EC0895DF9336 -:10ED6000CF931F930F93FF92EF92DF927B018C0161 -:10ED7000689405C0DA2EEF01F6D0FE01E894A59163 -:10ED80002591359145915591AEF3EF01BFDDFE011F -:10ED90009701A801DA9479F7DF90EF90FF900F9137 -:10EDA0001F91CF91DF91089500240A94161617063B -:10EDB00018060906089500240A941216130614066C -:10EDC00005060895C9CF50D0E8F3E894E0E0BB27EA -:10EDD0009F57F0F02AED3FE049EC06C0EE0FBB0F65 -:10EDE000661F771F881F28F0B23A620773078407EF -:10EDF00028F0B25A620B730B840BE3959A9572F765 -:10EE0000803830F49A95BB0F661F771F881FD2F7A2 -:10EE1000904896CF092E0394000C11F4882352F0E9 -:10EE2000BB0F40F4BF2B11F460FF04C06F5F7F4F36 -:10EE30008F4F9F4F0895EF93E0FF06C0A2EA2AED9F -:10EE40003FE049EC5FEB62DDE5DF0F90039401FCEE -:10EE50009058EBEFF1E03BC157FD9058440F551F20 -:10EE600059F05F3F71F04795880F97FB991F61F04C -:10EE70009F3F79F087950895121613061406551FC3 -:10EE8000F2CF4695F1DF08C0161617061806991F2F -:10EE9000F1CF86957105610508940895E5DFA0F02E -:10EEA000BEE7B91788F4BB279F3860F41616B11D6A -:10EEB000672F782F8827985FF7CF86957795679586 -:10EEC000B11D93959639C8F30895E894BB2766273A -:10EED0007727CB0197F90895ECDE08F48FEF0895BA -:10EEE0009B01AC0160E070E080E89FE3DECDBCDF19 -:10EEF00058F19E5758F19851A0F0E9F0983020F55C -:10EF0000092E9927660F771F881F991F0A94D1F73A -:10EF100012C0062E672F782F8827985F11F4000CF7 -:10EF200007C0993FB4F38695779567959395D9F780 -:10EF3000611D711D811D3EF49095809570956195C0 -:10EF40007F4F8F4F9F4F08956894C0CFBECF0BD097 -:10EF500061CF2ADF28F02FDF18F0952309F0CDCEFE -:10EF6000FBCE1124B3CF78DFA0F3959FD1F3950F9B -:10EF700050E0551F629FF001729FBB27F00DB11D3D -:10EF8000639FAA27F00DB11DAA1F649F6627B00DCD -:10EF9000A11D661F829F2227B00DA11D621F739FB6 -:10EFA000B00DA11D621F839FA00D611D221F749FC4 -:10EFB0003327A00D611D231F849F600D211D822F0B -:10EFC000762F6A2F11249F5750408AF0E1F0882352 -:10EFD0004AF0EE0FFF1FBB1F661F771F881F91505F -:10EFE0005040A9F79E3F510570F087CE6FCF5F3F2D -:10EFF000ECF3983EDCF3869577956795B795F79592 -:10F00000E7959F5FC1F7FE2B880F911D9695879519 -:10F0100097F908959F93D7DE0F9007FCEE5F0BCF13 -:10F0200011F40EF499CE8ACE1FDFD0F39923D9F3D1 -:10F03000CEF39F57550B87FF43D00024A0E640EA4C -:10F04000900180585695979528F4805C660F771F3D -:10F05000881F20F026173707480730F4621B730B10 -:10F06000840B202931294A2BA69517940794202533 -:10F0700031254A2758F7660F771F881F20F026177B -:10F080003707480730F4620B730B840B200D311DDA -:10F09000411DA09581F7B901842F9158880F96954D -:10F0A000879508959B01AC0152CFF8DE20F09F3781 -:10F0B00008F40CCF28CE42CEFCDD880B990B0895C6 -:10F0C00091505040660F771F881FD2F708959F9385 -:10F0D0008F937F936F93FF93EF939B01AC0137DF87 -:10F0E000EF91FF913CDE2F913F914F915F912FCF98 -:10F0F000DB018F939F9380D0BF91AF91A29F800D32 -:10F10000911DA39F900DB29F900D11240895991BFE -:10F1100079E004C0991F961708F0961B881F7A950E -:10F12000C9F780950895AA1BBB1B51E107C0AA1F10 -:10F13000BB1FA617B70710F0A61BB70B881F991F98 -:10F140005A95A9F780959095BC01CD010895A1E24B -:10F150001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F51 -:10F16000FF1FA217B307E407F50720F0A21BB30B9C -:10F17000E40BF50B661F771F881F991F1A9469F718 -:10F1800060957095809590959B01AC01BD01CF0174 -:10F190000895052E97FB16F400940FD057FD05D067 -:10F1A000D6DF07FC02D046F408C050954095309554 -:10F1B00021953F4F4F4F5F4F0895909580957095E3 -:10F1C00061957F4F8F4F9F4F0895EE0FFF1F881F50 -:10F1D0008BBF0790F691E02D1994A29FB001B39FC9 -:10F1E000C001A39F700D811D1124911DB29F700D50 -:10F1F000811D1124911D0895F0DFA59F900DB49FEE -:10F20000900DA49F800D911D11240895FB01DC0138 -:10F210000D900020E9F7119701900D920020E1F781 -:10F220000895FB01DC0101900D920020E1F70895A3 -:10F230000F931F93CF93DF93CDB7DEB72E970FB603 -:10F24000F894DEBF0FBECDBF0E891F8986E08C8388 -:10F250001A8309838FEF9FE79E838D83AE01465EFD -:10F260005F4F688D798DCE01019659D0EF81F88579 -:10F27000E00FF11F10822E960FB6F894DEBF0FBE7E -:10F28000CDBFDF91CF911F910F910895CF93DF9361 -:10F29000CDB7DEB72E970FB6F894DEBF0FBECDBF49 -:10F2A00085E08C838C899D899A838983AE01485E31 -:10F2B0005F4F6E897F89CE010196E0D32E960FB6FF -:10F2C000F894DEBF0FBECDBFDF91CF9108950F93AD -:10F2D0001F93CF93DF93CDB7DEB72E970FB6F89479 -:10F2E000DEBF0FBECDBF8C0186E08C831A830983FD -:10F2F0008FEF9FE79E838D83CE01019610D0EF8123 -:10F30000F885E00FF11F10822E960FB6F894DEBF3D -:10F310000FBECDBFDF91CF911F910F9108952F9216 -:10F320003F924F925F926F927F928F929F92AF9295 -:10F33000BF92CF92DF92EF92FF920F931F93CF93E2 -:10F34000DF93CDB7DEB72B970FB6F894DEBF0FBEB5 -:10F35000CDBF6C017B018A01FC011782168283817B -:10F3600081FFBFC1CE0101963C01F6019381F701F7 -:10F3700093FD859193FF81917F01882309F4ADC1AD -:10F38000853239F493FD859193FF81917F01853218 -:10F3900021F4B60190E0F0D4E8CF912C212C312C4F -:10F3A000FFE1F315D8F08B3279F038F4803279F040 -:10F3B0008332A1F4232D20611DC08D3261F0803392 -:10F3C00069F4232D216016C0832D8260382EE32D31 -:10F3D000E4603E2E2AC0F32DF8601DC037FC2DC01E -:10F3E00020ED280F2A3040F08E32B9F436FC75C17A -:10F3F000232D2064322E19C036FE06C08AE0989E66 -:10F40000200D1124922E11C0EAE02E9E200D112411 -:10F41000222EF32DF0623F2E08C08C3621F4832D6E -:10F420008068382E02C0883641F4F70193FD85913B -:10F4300093FF81917F018111B3CF982F9F7D9554C8 -:10F44000933028F40C5F1F4F9FE399830DC08336E0 -:10F4500031F0833771F0833509F055C020C0F801D1 -:10F46000808189830E5F1F4F88248394912C5301E0 -:10F4700012C02801F2E04F0E511CF801A080B180AB -:10F4800036FE03C0692D70E002C06FEF7FEFC5014B -:10F490002AD44C018201F32DFF773F2E15C028019D -:10F4A00022E0420E511CF801A080B18036FE03C05C -:10F4B000692D70E002C06FEF7FEFC50109D44C01E8 -:10F4C000F32DF0683F2E820133FC19C0822D90E0AD -:10F4D00088169906A0F4B60180E290E04DD42A94F3 -:10F4E000F5CFF50137FC859137FE81915F01B601BB -:10F4F00090E042D421102A9421E0821A91088114CC -:10F50000910479F7E1C0843611F0893639F5F801B4 -:10F5100037FE07C060817181828193810C5F1F4F2C -:10F5200008C060817181072E000C880B990B0E5F5B -:10F530001F4FF32DFF763F2E97FF09C090958095C2 -:10F54000709561957F4F8F4F9F4FF0683F2E2AE057 -:10F5500030E0A30166D4882E861844C0853731F484 -:10F56000232D2F7EB22E2AE030E025C0932D997FE7 -:10F57000B92E8F36C1F018F4883579F0AEC08037D7 -:10F5800019F0883721F0A9C0E92FE061BE2EB4FE42 -:10F590000DC0FB2DF460BF2E09C034FE0AC0292F18 -:10F5A0002660B22E06C028E030E005C020E130E041 -:10F5B00002C020E132E0F801B7FE07C0608171812E -:10F5C000828193810C5F1F4F06C06081718180E052 -:10F5D00090E00E5F1F4FA30124D4882E8618FB2DC8 -:10F5E000FF773F2E36FE0DC0232D2E7FA22E8914CD -:10F5F00058F434FE0BC032FC09C0832D8E7EA82E39 -:10F6000005C0B82CA32C03C0B82C01C0B92CA4FE93 -:10F610000FC0FE01E80DF11D8081803321F49A2D89 -:10F62000997EA92E09C0A2FE06C0B394B39404C06B -:10F630008A2D867809F0B394A3FC10C0A0FE06C002 -:10F64000B21480F4280C922C9B180DC0B21458F4FC -:10F65000B60180E290E090D3B394F8CFB21418F4DE -:10F660002B1802C0982C212CA4FE0FC0B60180E3F9 -:10F6700090E082D3A2FE16C0A1FC03C088E790E010 -:10F6800002C088E590E0B6010CC08A2D867851F062 -:10F69000A1FE02C08BE201C080E2A7FC8DE2B601B0 -:10F6A00090E06AD3891430F4B60180E390E064D32B -:10F6B0009A94F8CF8A94F301E80DF11D8081B60188 -:10F6C00090E05AD38110F6CF222009F44ECEB60135 -:10F6D00080E290E051D32A94F7CFF601868197819A -:10F6E00002C08FEF9FEF2B960FB6F894DEBF0FBED0 -:10F6F000CDBFDF91CF911F910F91FF90EF90DF90E1 -:10F70000CF90BF90AF909F908F907F906F905F90C1 -:10F710004F903F902F90089520FD09C0FC0123FDDC -:10F7200005C022FF02C07383628351834083089522 -:10F7300044FD17C046FD17C0AB01BC01DA01FB0157 -:10F74000AA0FBB1FEE1FFF1F1094D1F74A0F5B1FBC -:10F750006E1F7F1FCB01BA01660F771F881F991F8D -:10F7600009C033E001C034E0660F771F881F991F7E -:10F770003150D1F7620F711D811D911D08950F93B6 -:10F780001F93CF93DF938C01C801B8D2EC0197FD92 -:10F7900006C08BD2892BC1F7B801CE0129D3CE0187 -:10F7A000DF91CF911F910F9108958F929F92AF9209 -:10F7B000BF92EF92FF920F931F93CF93DF938C0131 -:10F7C000D62F7A01B22E9AD29C0133272B323105E3 -:10F7D00031F02D32310559F48B2D8068B82ED1507F -:10F7E00011F480E061C0C80189D297FDFACFCB2D1A -:10F7F000CD7F2B2D2073F9F48033E9F4AA24AA9449 -:10F80000AD0E09F43EC0C80179D297FD3AC09C0103 -:10F810002F7D33272835310541F4C264D25089F158 -:10F82000C8016CD297FF07C02CC0B6FE02C0C260F0 -:10F8300001C0C261DA2D812C912C540120ED280FDA -:10F84000283078F0C4FF03C0B801D2D217C02A30E4 -:10F8500040F0C6FFF9CF2F7D3FEE320F3630A0F7D4 -:10F8600027504C2FC501B40163DF4B015C01C2601E -:10F87000D15051F0C80142D297FFE0CFC1FD04C082 -:10F88000B0CF812C912C5401C7FF08C0B094A09434 -:10F8900090948094811C911CA11CB11C2C2FB5014B -:10F8A000A401C70139DF81E0DF91CF911F910F9152 -:10F8B000FF90EF90BF90AF909F908F9008955F92D0 -:10F8C0006F927F928F929F92AF92BF92CF92DF9270 -:10F8D000EF92FF920F931F93CF93DF93CDB7DEB7D5 -:10F8E000A0970FB6F894DEBF0FBECDBF5C01962E79 -:10F8F0007A01F9018E010F5F1F4F680180E2D80184 -:10F900001D928A95E9F7D50113968C9080E090E0DE -:10F91000612C712C30E061E070E083FC259183FE66 -:10F9200021918F01522E211103C080E090E090C000 -:10F930002E3511F4009751F1432F50E04817590725 -:10F940003CF42D3559F12D3219F4772009F103C01B -:10F95000772009F468C0452D469546954695D60111 -:10F96000A40FB11D452D47708B0102C0000F111F60 -:10F970004A95E2F7A8015C91452B4C93651459F028 -:10F98000561410F45394E7CF5A94E5CF31E004C0F5 -:10F990007724739401C0712C0196BFCF772019F0A2 -:10F9A0008E8180628E83311103C08824839417C0B6 -:10F9B000F6019E012F5D3F4F8081809581932E1728 -:10F9C0003F07D1F7F2CFE114F10429F0D7018C936E -:10F9D000F70131967F019A94812C9920E9F0C501B5 -:10F9E0008DD197FD17C0FC01FF2723E0F595E79522 -:10F9F0002A95E1F7EC0DFD1D208130E0AC01477048 -:10FA0000552702C0359527954A95E2F720FDDBCFB3 -:10FA1000B501EED1811089CFE114F10411F0D701C5 -:10FA20001C92C80115C0422F469546954695D601B1 -:10FA3000A40FB11D422F47708B0102C0000F111F90 -:10FA40004A95E2F7A8015C91452B4C93622EA4CF16 -:10FA5000A0960FB6F894DEBF0FBECDBFDF91CF9159 -:10FA60001F910F91FF90EF90DF90CF90BF90AF90DC -:10FA70009F908F907F906F905F9008955F926F92AC -:10FA80007F928F929F92AF92BF92CF92DF92EF922E -:10FA9000FF920F931F93CF93DF936C01EB015A01F9 -:10FAA000FC0117821682512CF601E380FE01E3FC73 -:10FAB0008591E3FE8191182FEF01882309F4E0C0BE -:10FAC00090E0F3D0892B19F0C60159DEEDCF153245 -:10FAD00041F4FE01E3FC1591E3FE1191EF011532B3 -:10FAE00071F4C6010BD197FDC9C0412F50E09C01B4 -:10FAF000332724173507C1F2B6017AD1C1C01A32B3 -:10FB000039F4E3FC1591E3FE1191EF0101E001C02E -:10FB100000E0F12C20ED210F2A3078F402606F2DE7 -:10FB200070E080E090E040E203DEF62EFE01E3FCB0 -:10FB30001591E3FE1191EF01EDCF01FF03C0F1102C -:10FB400003C09EC0FF24FA94183619F01C3651F0F9 -:10FB500010C0FE01E3FC1591E3FE1191EF01183690 -:10FB600041F408600460FE01E3FC1591E3FE11918D -:10FB7000EF01112309F484C0612F70E084E193E068 -:10FB80009CD0892B09F47CC000FD07C0F501808062 -:10FB90009180C50102965C0102C0812C912C1E3619 -:10FBA00049F4F6014681578160E070E0202FC401DE -:10FBB000B3DD7ACF1336A1F401FD02C0FF24F39424 -:10FBC000C6019CD097FD5AC08114910429F0F4011C -:10FBD0008083C40101964C01FA94F110F1CF4AC020 -:10FBE0001B3551F49E01A4016F2DC60168DEEC01A6 -:10FBF000892B09F03FC039C0C601C1DD97FD3EC069 -:10FC00001F3649F128F4143621F1193639F125C08F -:10FC1000133771F01537E9F020C08114910429F0F1 -:10FC2000F4016082C40101964C01FA94FF2059F05E -:10FC3000C60164D03C0197FD06C037D0892B69F31B -:10FC4000B601C301D5D081149104A1F0F401108252 -:10FC500011C0006203C0006101C00064202FA40134 -:10FC60006F2DC601A2DD811105C0F601838180736D -:10FC700029F406C000FD18CF539416CF552019F073 -:10FC8000852D90E002C08FEF9FEFDF91CF911F9104 -:10FC90000F91FF90EF90DF90CF90BF90AF909F902B -:10FCA0008F907F906F905F900895911118C180326E -:10FCB00019F089508550D0F70895FC01059006167B -:10FCC00021F00020D9F7C00108953197CF010895A0 -:10FCD000FC010590615070400110D8F78095909517 -:10FCE0008E0F9F1F0895FC0161507040019001101C -:10FCF000D8F7809590958E0F9F1F0895CF93DF932F -:10FD0000EC012B8120FF33C026FF0AC02F7B2B8301 -:10FD10008E819F8101969F838E838A8190E029C086 -:10FD200022FF0FC0E881F9818081082E000C990B19 -:10FD3000009719F420622B831AC03196F983E88367 -:10FD40000EC0EA85FB85199597FF09C02B810196A6 -:10FD500011F080E201C080E1822B8B8308C02E81EC -:10FD60003F812F5F3F4F3F832E83992702C08FEF44 -:10FD70009FEFDF91CF9108950F931F93CF93DF9360 -:10FD8000FB01238121FD03C08FEF9FEF2CC022FFD9 -:10FD900016C046815781248135814217530744F4A8 -:10FDA000A081B1819D012F5F3F4F318320838C93D0 -:10FDB000268137812F5F3F4F3783268314C08B0105 -:10FDC000EC01FB010084F185E02D1995892BE1F60A -:10FDD000D80116968D919C911797019617969C9332 -:10FDE0008E931697CE01DF91CF911F910F910895B9 -:10FDF000FB01238120FF12C026FD10C08F3F3FEF83 -:10FE0000930761F082832F7D2064238326813781CD -:10FE10002150310937832683992708958FEF9FEF6B -:10FE20000895FA01AA27283051F1203181F1E89490 -:10FE30006F936E7F6E5F7F4F8F4F9F4FAF4FB1E0DD -:10FE40003ED0B4E03CD0670F781F891F9A1FA11DD8 -:10FE5000680F791F8A1F911DA11D6A0F711D811DD9 -:10FE6000911DA11D20D009F468943F912AE0269F9E -:10FE700011243019305D3193DEF6CF010895462FFD -:10FE80004770405D4193B3E00FD0C9F7F6CF462FDE -:10FE90004F70405D4A3318F0495D31FD4052419347 -:10FEA00002D0A9F7EACFB4E0A69597958795779504 -:10FEB0006795BA95C9F700976105710508959B018B -:10FEC000AC010A2E06945795479537952795BA9514 -:10FED000C9F7620F731F841F951FA01D08959927EE -:08FEE00088270895F894FFCF74 -:10FEE800AE47C13F08020102000400000000000004 -:10FEF80000737363616E662025640D0A0053255BE9 -:10FF0800302D392D2B2E5D52255B302D392D2B2E82 -:10FF18005D48255B302D392D2B2E5D46255B302D18 -:10FF2800392D2B2E5D004E256456255B302D392D3D -:10FF38002B2E5D46255B302D392D2B2E5D00582547 -:10FF48005B302D392D2B2E5D59255B302D392D2B0E -:10FF58002E5D5A255B302D392D2B2E5D46255B30C5 -:10FF68002D392D2B2E5D0042255B302D392D2B2E62 -:10FF78005D4C255B302D392D2B2E5D52255B302DA8 -:10FF8800392D2B2E5D46255B302D392D2B2E5D000E -:10FF980020422573204C2573205225730A0053777D -:10FFA80069667450726F002025730A0056342E3724 -:10FFB8002E300056342E302E3400205625730A0079 -:10FFC8002058257320592573205A25730A00205379 -:10FFD800257320522573204825730A004E25640096 -:10FFE80020422564204C2564205225640A00616E55 -:08FFF800676C65206F666673FB -:020000021000EC -:1000000065743A25730D0A00646576696365206E30 -:10001000616D65203A2025730D0A00736F667420A8 -:10002000766572203A2025730D0A0061706920768A -:100030006572203A2025730D0A00776F726B206D70 -:100040006F6465203A2025640D0A0040310A00657E -:10005000666665637420636865636B2074696D65AB -:100060006F7574210D0A0023255B302D395D002446 -:1000700025730045323320627566666572206675A9 -:100080006C6C0D0A004033205825732059257320CD -:100090005A2573205225730A004036204E302056D0 -:1000A00025640A004035205625640A004039205650 -:1000B000300A0041255B302D392D2B2E5D00562551 -:1000C00073002056310A00565542255B302D392EDB -:1000D0005D0046255B302D392E5D542564004E258C -:1000E00064412564542564004E25644125645425EB -:1000F0006456255B302D392E5D0058255B302D3937 -:100100002D2B2E5D59255B302D392D2B2E5D5A253B -:100110005B302D392D2B2E5D0042255B302D392D86 -:100120002B2E5D4C255B302D392D2B2E5D52255B02 -:10013000302D392D2B2E5D0058255B302D392D2B80 -:100140002E5D59255B302D392D2B2E5D5A255B30C8 -:100150002D392D2B2E5D502564004E2564562564C7 -:100160000053255B302D392D2B2E5D0056255B303D -:100170002D392D2B2E5D0020006F6B004532300095 -:1001800045323100453232004532360056332E3387 -:100190002E310056332E332E300056332E332E326E -:1001A0000056302E302E30007965730A0045323308 -:1001B0000A004532300A004532310A004532360A1B -:0201C00000003D -:00000001FF diff --git a/src/uarm_coord_convert.c b/src/uarm_coord_convert.c index 54aa1d9..ac4ebf9 100755 --- a/src/uarm_coord_convert.c +++ b/src/uarm_coord_convert.c @@ -54,9 +54,9 @@ #define micro_steps (32.0) #define steps_per_angle (micro_steps/1.8*gearbox_ratio) #define ARMA_MAX_ANGLE (135.6) - #define ARMA_MIN_ANGLE (0) + #define ARMA_MIN_ANGLE (-4.0) #define ARMB_MAX_ANGLE (119.9) - #define ARMB_MIN_ANGLE (0) + #define ARMB_MIN_ANGLE (-4.0) #define BASE_MAX_ANGLE (90) #define BASE_MIN_ANGLE (-90) #define ARMA_ARMB_MAX_ANGLE (151) @@ -124,10 +124,10 @@ void angle_to_coord(float anglea, float angleb, float anglec, float *x, float *y void coord_to_angle(float x, float y, float z, float *anglea, float *angleb, float *anglec){ -/* DB_PRINT_STR("coord xyz:"); - DB_PRINT_FLOAT(x);DB_PRINT_STR(" "); - DB_PRINT_FLOAT(y);DB_PRINT_STR(" "); - DB_PRINT_FLOAT(z);DB_PRINT_STR("\r\n"); */ +// DB_PRINT_STR("coord xyz:"); +// DB_PRINT_FLOAT(x);DB_PRINT_STR(" "); +// DB_PRINT_FLOAT(y);DB_PRINT_STR(" "); +// DB_PRINT_FLOAT(z);DB_PRINT_STR("\r\n"); @@ -140,13 +140,23 @@ void coord_to_angle(float x, float y, float z, float *anglea, float *angleb, flo *anglea = acos((_stretch * xxx - _height * sqrt(4.0 * ARM_A2 * xx - xxx * xxx)) / (xx * 2.0 * ARM_A)) * RAD_TO_DEG; - // get angle B xxx = ARM_B2 -ARM_A2 + xx; *angleb = acos((_stretch * xxx + _height * sqrt(4.0 * ARM_B2 * xx -xxx * xxx)) / (xx * 2.0 * ARM_B)) * RAD_TO_DEG; if( _height > (ARM_A *sin(*anglea/RAD_TO_DEG)) ){ *angleb = -*angleb; } + +// DB_PRINT_FLOAT(fabs(z));DB_PRINT_STR(" "); +// DB_PRINT_FLOAT(ARM_B *sin(*angleb/RAD_TO_DEG));DB_PRINT_STR(" "); +// DB_PRINT_FLOAT(z);DB_PRINT_STR("\r\n"); + + + if( fabs(_height)>(ARM_B *sin(*angleb/RAD_TO_DEG)) && _height<0.0 ){ + *anglea = -*anglea; + } + + // get the base rotation angle @@ -163,10 +173,10 @@ void coord_to_angle(float x, float y, float z, float *anglea, float *angleb, flo } -/* DB_PRINT_STR("coord abc:"); - DB_PRINT_FLOAT(*anglea);DB_PRINT_STR(" "); - DB_PRINT_FLOAT(*angleb);DB_PRINT_STR(" "); - DB_PRINT_FLOAT(*anglec);DB_PRINT_STR("\r\n");*/ +// DB_PRINT_STR("coord abc:"); +// DB_PRINT_FLOAT(*anglea);DB_PRINT_STR(" "); +// DB_PRINT_FLOAT(*angleb);DB_PRINT_STR(" "); +// DB_PRINT_FLOAT(*anglec);DB_PRINT_STR("\r\n"); } void get_current_step(float anglea, float angleb, float anglec, float *x_step, float *y_step, float *z_step){ diff --git a/src/uarm_swift.h b/src/uarm_swift.h index 0045638..82813a5 100755 --- a/src/uarm_swift.h +++ b/src/uarm_swift.h @@ -6,7 +6,7 @@ #if defined(UARM_MINI) - #define DEVICE_NAME "SwiftProMini" + #define DEVICE_NAME "uArmMini" #elif defined(UARM_2500) #define DEVICE_NAME "uArm3Plus" #else @@ -14,8 +14,8 @@ #endif #define HARDWARE_VERSION hardware_version -#define SOFTWARE_VERSION "V4.7.0" -#define API_VERSION "V4.0.4" +#define SOFTWARE_VERSION "V4.8.0" +#define API_VERSION "V4.0.5" #define BLE_UUID bt_mac_addr From 4e24acfb54370f4e1c4279bca42b1967e48843d3 Mon Sep 17 00:00:00 2001 From: HuttonGe Date: Fri, 14 Aug 2020 15:53:34 +0800 Subject: [PATCH 72/74] =?UTF-8?q?Update=20=E2=80=9C2020-08-14=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +- ... => uArm Swift Pro Protocol V4.0.5_cn.pdf} | Bin 726903 -> 736094 bytes doc/uArm Swift Pro Protocol V4.0.5_en .pdf | Bin 661672 -> 0 bytes doc/uArm Swift Pro Protocol V4.0.5_en.pdf | Bin 0 -> 934593 bytes hex/uArm3Plus_V4.5.0_release_20190924.hex | 3953 ++++++++++++++++ hex/uArmPro_V4.9.0_release_20200814.hex | 4152 +++++++++++++++++ src/uarm_common.h | 4 + src/uarm_peripheral.c | 43 + src/uarm_peripheral.h | 2 + src/uarm_protocol.c | 56 +- src/uarm_swift.h | 2 +- 11 files changed, 8213 insertions(+), 7 deletions(-) rename doc/{uArm Swift Pro Protocol V4.0.5_cn .pdf => uArm Swift Pro Protocol V4.0.5_cn.pdf} (64%) mode change 100755 => 100644 delete mode 100755 doc/uArm Swift Pro Protocol V4.0.5_en .pdf create mode 100644 doc/uArm Swift Pro Protocol V4.0.5_en.pdf create mode 100644 hex/uArm3Plus_V4.5.0_release_20190924.hex create mode 100644 hex/uArmPro_V4.9.0_release_20200814.hex diff --git a/README.md b/README.md index 0b2ba1f..994913b 100755 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ -# Swift Pro Firmware V4.8.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) +# Swift Pro Firmware V4.9.0 (Base on [Grbl v0.9j](https://github.com/grbl/grbl) ) ---------- -## Update Summary for v4.8.0 +## Update Summary for v4.9.0 -* Fix angle limit error +* Fix M2410 bug +* Add M2413 interface +* Add M2400 S7 work mode ## Caution #### The current firmware is not perfect and will be updated periodically diff --git a/doc/uArm Swift Pro Protocol V4.0.5_cn .pdf b/doc/uArm Swift Pro Protocol V4.0.5_cn.pdf old mode 100755 new mode 100644 similarity index 64% rename from doc/uArm Swift Pro Protocol V4.0.5_cn .pdf rename to doc/uArm Swift Pro Protocol V4.0.5_cn.pdf index 00ce17fcb87fc5ec8cd5a344f04f7863b5d3fa4e..a1a35d9759765b7e8abcf7267be6e80d3249e806 GIT binary patch literal 736094 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


      `qL#$_trq*EoVIUz=x%P_bcC+b! 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 literal 726903 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

      n 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 SFeSh4#eexPum0^1Fa8fX;!6eq diff --git a/doc/uArm Swift Pro Protocol V4.0.5_en.pdf b/doc/uArm Swift Pro Protocol V4.0.5_en.pdf new file mode 100644 index 0000000000000000000000000000000000000000..58ea039a7b511fa02a4cd25dde121e7504a5d83a GIT binary patch literal 934593 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

      0*vLaHto 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∓#HoAPc*cWYX1*P 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⁣z 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

      b2#1eHf5glo*9lnG5R7Du<~rW12?eR!L$oRIK( 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¨8%)m64*%#Yr>vsCH2I@Krv;kES%_C23hT_pK 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

      baD>D3PgxJ-aiTXVwk<7xPpo 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

      RZ&PXbojuiDf_fFNx+LnR}nv!6W+P*r{GE&Kdsa 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%0D^Y*|CqfQgO3ZQg=bh5+trXtXuS09Nu=j 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 Y&ly#wbiliHt2j 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 M`O6kJ`@i4$pME!(SpWb4 diff --git a/doc/uArm Swift Pro Protocol V4.0.4_cn.pdf b/doc/uArm Swift Pro Protocol V4.0.4_cn.pdf new file mode 100755 index 0000000000000000000000000000000000000000..84becf913c9db6e272ee61989c6e267367da803b GIT binary patch literal 364950 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

    2. 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